Introduction 06 to Algorithm Algoritma matematika.

Slides:



Advertisements
Presentasi serupa
Introduction to Algorithm evaluation Soal Matrikulasi Buka Buku
Advertisements

DASAR-DASAR PEMROGRAMAN C
DASAR-DASAR PEMROGRAMAN
02.1 Hari-2.
3 Variabel, Konstanta Tipe Data dan dalam Bahasa C/C++ Java dan Bab
Pembahasan soal-soal pemrograman terstruktur
menginput waktu dalam detik di konversi ke Jam, Menit dan Detik
Sekolah Menengah Pertama ( SMP )
Sorting (Pengurutan).
Modul 2 Pengenalan Bahasa C++
Universitas Budi Luhur
Pertemuan 11 Function Erna Sri Hartatik
Elemen Dasar C++ Norma Amalia, ST.,M.Eng.
Pembentuk Grafik Grafik dapat terbentuk dengan berbagai pola : Titik
03.1 Hari-3.
ANALISA DAN DESAIN ALGORITMA
{Pertemuan 6 Struktur Perulangan}
DASAR PEMROGRAMAN C Oleh : sgo.
Pengantar C++.
Tipe, Nama, dan Nilai Anifuddin azis.
Pendahuluan & identifier pada bahasa c dan c++
Bab & 7.3 NESTED LOOP Array 1 Dimensi 273.
Teknik Pemrograman oleh: Yohanes Sugiarto.
Pemograman Terstruktur
Bahasa C – Intro Yenni Astuti, S.T., M.Eng..
PERTEMUAN 7 STATEMENT PEMILIHAN
Apa itu Fungsi? Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu,
POINTER 6.3 & 7.3 NESTED LOOP.
06.3 Hari-6.
03.8 Soal-Soal Pekerjaan Rumah.
04.2 Hari-4.
04.1 Hari-4.
Introduction using 03b to Algorithm C / C++ teknik dasar Algoritma.
Introduction 03 using to Algorithm C / C++ teknik dasar Algoritma.
Pertemuan 1 DATA & STRUKTUR DATA.
Pertemuan ke -12 Khoiriya Latifa, M.Kom.
Array 1.
07.3 Hari-7.
Contoh Aplikasi Sederhana
Algoritma Bentuk Primitif
Introduction 02 using to Algorithm C / C++ Algoritma dan
TIPE DATA DASAR C++.
Input/output Pemrograman 1 (C++) STMIK AsiA Malang.
Operator dan Operasi Input Output pada C++ Pertemuan 11
02.1 Hari-2.
Struktur Data Khoiriya Latifa, M.Kom.
10.5 Nested loop 6.3 & 7.3 NESTED LOOP 255.
291.
Teori Pendukung Introduction to Algorithm 01.
STATEMENT PENGENDALIAN (PEMILIHAN)
04.2 Hari-4.
~ PERTEMUAN 4 KONSEP TIPE DATA ~
Perpangkatan dan Bentuk Akar
Soal-soal Pengulangan
09.3 Hari-9.
Pertemuan Hari ke - 1 Sesi-2.
mencetak Total kedua bilangan tersebut
Algoritma dan struktur data
Arithmetic Expression
MATEMATIKA I (KALKULUS)
Bab 08 Menghitung Total Data yang Diinput Dari Keyboard
SISTEM BILANGAN REAL.
Introduction 04 to Algorithm LOOP sebagai pembentuk kerangka dasar
Data dan Struktur Data.
Bab 05 Tipe Data dan Mengisi Variabel
Nested if 164.
Mencetak Nilai Konstanta
Soal-soal.
Operator, Variabel, Konstanta, Tipe Data
contoh aplikasi array 2 dimensi
Transcript presentasi:

Introduction 06 to Algorithm Algoritma matematika

CONTOH -1 Menghitung luas bidang yang dibatasi oleh garis Diberikan sebuah trapesium ABCD dengan gambar sebagai berikut. #include<iostream.h> void main() { float Awal, Akhir, dx, TotalLuas; float X, Y, Luasdx; Awal = 20; Akhir = 70; dx = (Akhir - Awal) / 50; TotalLuas = 0; while(Awal < Akhir) { X = Awal + (0.5 * dx); Y = X; Luasdx = Y * dx; TotalLuas = TotalLuas + Luasdx; Awal = Awal + dx; } cout << TotalLuas; Y C Y = x Secara matematik, Luas trafesium ABCD, Dapat dihitung = (70 + 20 ) * 50 / 2 = 2250 70 D 20 X A B 20 70 Trapesium ini dibentuk oleh empat buah garis : y = 0, y = x, x = 20, dan x = 70 D’ Pandanglah satu bagian kecil disamping : Luas A A’ D’ D = luas A A’ E’ E bila garis tingginya diambil tepat diantara 20 dan 21 yaitu di 20.5 karena persamaan garis y = x, maka tingginya = 20.5 sehingga luas A A’ E’ E = dx kali y = 1 x 20.5 = 20.5 E E’ D y Bila program ini di-RUN Maka tercetak : 2250 20 21 A A’ dx=1

   CONTOH-2 Penyelesaian secara matematik Menggunakan integral Hitung luas area yang dibatasi oleh : y = — , y =0, x=0.5, dan x=2.0 1 x 2.0 Benarkah ?  1 x Luas = —— dx  1 x 0.5 — dx = ln x dx y 0.5 2.0 2.0 = ln x 0.5 = ln 2.0 - ln 0.5 = 0.693147181 - -0.69314718 = 1.386294361 //seperxy.cpp #include<iostream.h> #include<iomanip.h> #include<math.h> void main() { float x,y,dx,Luas,dluas; dx = 0.0001; Luas = 0.0; for(x=0.5; x<2.0; x=x+dx) { y=1/x; dluas = y * dx; Luas = Luas + dluas; } setiosflags(ios::fixed); cout << setprecision(7) << Luas; Penyelesaian menggunakan program komputer //seperx.cpp #include<iostream.h> #include<math.h> void main() { float x,y,dx,Luas,dluas; dx = 0.0001; Luas = 0.0; for(x=0.5; x<2.0; x=x+dx) { y=1/x; dluas = y * dx; Luas = Luas + dluas; } cout << Luas; Dengan program didapat Luas area dari x = 0.5 sampai x=2.0 sebagai berikut : Bila dx Maka Luas = 0.1 0.01 0.001 0.0001 1.464406 1.398826 1.387040 1.386164 Makin kecil dx, Makin teliti hasil perhitungan Tercetak : 1.386164 Mendekati perhitungan dengan menggunakan integral (matematik) Tercetak : 1.38616 Jadi terbukti bahwa :  1 x — dx = ln x

?    1 CONTOH-3 y=ex, y =0, x=0, dan x=2 Luas = ex dx y 2.0 Hitung luas area yang dibatasi oleh : y=ex, y =0, x=0, dan x=2  Luas = ex dx 0.0 2.0 y Dihitung dengan Excel dengan dx = 0.1 = ex = e2 - e0 0.0 = 2.718282 - 1 = 7.389046 – 1 = 6.389046 1 Bandingkan dengan Total (ex * dx) mulai x = 0.0 sampai dengan x=2.0 dengan dx = 0.001 yang dihitung menggunakan program komputer (Bahasa C) berikut ini : x 2 y = ex //epngktx.cpp #include<stdio.h> #include<math.h> void main() { float x,y,e, dx, dLuas, Luas; e = 2.718282; dx = 0.001; Luas = 0.0; for(x=0.0005; x < 2.0; x=x+dx ) { y = pow(e,x); dLuas = y*dx; Luas=Luas+dLuas; } printf("\n %f ", Luas); Benarkah  ex dx = ex e = 2.71828 ? Tercetak : 6.389131  6.386389 Dianggap sama Jadi terbukti benar bahwa : ex dx = ex

      CONTOH-11 Soal y = r2 – x2 dLuas = y dx x 8 r = 8 Hitung Luas Lingkaran Bila jari-jari = 8 cm dLuas = y dx x dx 8 Yang dihitung cukup seperempat lingkaran, misal bagian yang berada di kudran ke- I r = 8 Rumus yang digunakan :  1 2 1 2 Jadi luas lingkaran dengan jari-jari = 8, adalah 4 * 50.2656 = 201.0624 a2–u2 du = —— u a2-u2 + —— a2 arc sin —— + C u a 1 4  Luas —— lingkaran = y dx  = r2 – x2 dx 8 1 2 1 2 x r sama dengan hasil hitungan degan rumus biasa yaitu :  r2 = — x r2-x2 + — r2 arc sin —— 1 2 1 2 8 = — 8 82-82 + — 82 arc sin —— = 3.1416 * 64 = 201.0624 1 2 — 8 82-82 + — 82 arc sin —— 1 2 8 =  = 0 = 32 arc sin 1  2 = 32 arc sin 1  2 = —— = 32 —— sin 90o = 1 arc sin 1 = 90o 90o dalam radian adalah = ——  2 = 16  = 16 * 3.1416 = 50.2656 (ini luas seperempat lingkaran)

Bila luas 1 / 4 lingkaran dihitung dengan program komputer //LuasL03a.cpp #include<stdio.h> #include<math.h> void main() { float x,y, r, xx, dx, midx, Luas,dluas; r = 80000.0; dx=2.0; midx = 1.0; Luas = 0.0; for(xx=0.0; xx<r; xx=xx+dx) { x = xx+midx; y = sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); //LuasL02b.cpp #include<stdio.h> #include<math.h> void main() { unsigned long int x,r, xx, midx, dx; float y, dLuas, Luas; dx=2; midx= 1; r = 8000; Luas = 0; for(xx=0; xx<r; xx=xx+dx) { x = xx + midx; y=sqrt(r*r - x*x); dLuas = y * dx; Luas = Luas + dLuas; } printf("\n\n %f", Luas); Tercetak : 5026550784.000000 Tercetak : 50265476.000000 Bila r = 8.0 Tentunya Luas = 50.2655 0784 Bandingkan dengan perhitungan menggunakan integral yang hasilnya = 50.2656 Bila r = 8 Tentunya Luas = 50.265 476 Bandingkan dengan perhitungan menggunakan integral yang hasilnya = 50.2656

Pada program pertama, jari-jari yang sebenarnya hanya 8 cm, dibuat menjadi 80000 cm, jadi program ini membuat skala yang diperbesar 10 000 kali. Dengan dx = 2.0 berarti dx = 0.0002 (cukup kecil walaupun belum mendekati nol ). //pecahan.cpp Pada program kedua, skala diperbesar 1000 kali Hal ini dibuat untuk menghindari penyimpanan nilai dalam bentuk pecahan dalam tipe float atau double, karena penyimpanan bilangan pecahan ketelitiannya terbatas. Dicetak dengan format #include<stdio.h> void main() { float x,y; y = 0.1; printf(“\n%20.18f\n”, y); for(x=0.0; x < 1; x = x + y) { printf("\n%20.18f", x); } “ %20.18f” “ %f ” 0.100000001490116119 0.000000000000000000 0.200000002980232239 0.300000011920928955 0.400000005960464478 0.500000000000000000 0.600000023841857910 0.700000047683715820 0.800000071525573730 0.900000095367431641 0.100000 0.000000 0.200000 0.300000 0.400000 0.500000 0.600000 0.700000 0.800000 0.900000 Komputer tidak dapat menyimpan 0.1 dengan ketelitian 100 persen, walaupun bila dicetak dengan format : “%f”, akan tercetak 0.100000, Tetapi penyimpanan dalam komputer sebenarnya = 0.100000001490116119. . . . .

Perhatikan hasilnya bila dipaksakan menggunakan bilangan pecahan ( float) //LuasL01.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; dx = 0.01; Luas = 0.0; for(x=0.0; x<r; x=x+dx) { y = sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); //LuasL01a.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; Luas = 0.0; for(x=0.0; x<r; x=x+0.01) { y = sqrt(r*r - x*x); dluas = y * 0.01; Luas = Luas + dluas; } printf("%f", Luas); Tercetak : 50.304264 Tercetak : 50.304272 Bila dicetak dengan format: %22.18 Maka tercetak : 50.304271697998046900

//LuasL01.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; dx = 0.02; Luas = 0.0; for(x=0.0; x<r; x=x+dx) { y=sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); //LuasL01.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; dx = 0.002; Luas = 0.0; for(x=0.0; x<r; x=x+dx) { y=sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); Tercetak : 50.343361 Tercetak : 50.274395

Bubble Sort #include<iostream.h> #define n 10 void main() { int I, K, X; int A[n]; for(I=0; I<=n-1; I++) { cin >> A[I]; } cout << "Sebelum disort : " ; { cout << " " << A[I];} cout << "\n"; for(K=0; K <= n-2; K++) {for(I=0; I <= n-2 - K; I++) { if (A[I] > A[I+1]) { X = A[I]; A[I] = A[I+1]; A[I+1] = X; } cout << "Sesudah disort : "; Bubble Sort Menginput 12 buah bilangan bulat, dengan nilai acak (tidak urut), Kemudian mengurutkannya menaik (sort ascending) Dan mencetak hasil yang telah urut menaik

Soal-6. Sebuah toko mainan hanya menjual dua macam robot, Robot-A dan Robot-B. Robot-A berkepala 2 dan berkaki 3. Robot B berkepala 3 dan berkaki 4. Dalam toko tersebut mungkin hanya ada Robot-A, (karena Robot-B sudah habis terjual), atau hanya ada Robot-B, atau kedua macam robot ada tersedia. Seorang anak menghitung dari semua robot yang ada ternyata terdapat 22 kepala dan 31 kaki. Ternyata terdapat 5 Robot A dan 4 Robot B. Susun program untuk menginput dua buah nilai yang menyatakan jumlah kepala dan jumlah kaki hasil hitungan anak tersebut. Kemudian hitung dan cetak ada berapa buah Robot-A dan berapa buah Robot-B. Tetapi apabila anak tersebut salah menghitung , maka cetak perkataan “Hitungan Salah”. Contoh: Bila diinput untuk jumlah seharusnya Kepala Kaki Tercetak 5 7 6 8 6 9 7 9 7 10 8 12 9 12 9 13 9 14 10 14 10 15 10 16 22 31 1 1 0 2 3 0 Hitungan Salah 2 1 4 0 0 3 3 1 2 2 5 0 5 4 Tercetak : x y Jumlah Robot-B Jumlah Robot-A

Misal jumlah robot A = X , dan jumlah robot B = Y Bila diinput : Jumlah kepala = 22 Dan jumlah kaki = 31, //Robot09 #include<iostream.h> void main() { int a,b,Head,Foot,X,Y; cin >> Head >> Foot; X=3*Head; Y = 2*Foot; b = X-Y; a = (Head-3*b)/2; if( a< 0 || b < 0) cout << "Data Salah"; else cout << a << " " << b; } Maka secara aljabar dapat dibuat persamaan : 2X + 3Y = 22 3X + 4Y = 31 6X + 9Y = 66 6X + 8Y = 62 Y = 4 X = 5 Robot A = X Robot B = Y

Misal jumlah robot A = X , dan jumlah robot B = Y //Robot1 #include<stdio.h> void main() { int A, B, Ha,Fa,Hb,Fb, Head, Foot; int Flag=0; A=0; scanf("%i %i", &Head, &Foot); while(Flag==0 && A < Head/2) { A++; Ha=A*2; Fa=A*3; Hb=Head-Ha; B=Hb/3; if((A*2+B*3)==Head && (A*3+B*4) == Foot) Flag=1; } if(Flag==1) printf("%i %i", A,B); else printf("Tidak ada Solusi"); Bila diinput : Jumlah kepala = 22 Dan jumlah kaki = 31, Maka secara aljabar dapat dibuat persamaan : 2X + 3Y = 22 3X + 4Y = 31 6X + 9Y = 66 6X + 8Y = 62 Y = 4 X = 5 Robot A = X Robot B = Y

Misal jumlah robot A = X , dan jumlah robot B = Y //Robot1 #include<iostream.h> void main() { int A, B, Ha,Fa,Hb,Fb, Head, Foot; int Flag=0; A=0; cin >> Head >> Foot; while(Flag==0 && A < Head/2) { A++; Ha=A*2; Fa=A*3; Hb=Head-Ha; B=Hb/3; if((A*2+B*3)==Head && (A*3+B*4) == Foot) { Flag=1; } } if(Flag==1) cout << A << " " << B; else cout << "Tidak ada Solusi"; Bila diinput : Jumlah kepala = 22 Dan jumlah kaki = 31, Maka secara aljabar dapat dibuat persamaan : 2X + 3Y = 22 3X + 4Y = 31 6X + 9Y = 66 6X + 8Y = 62 Y = 4 X = 5 Robot A = X Robot B = Y

Soal. Soal. Bila diinput : 3.1, maka X = 31 dan Y = 10 3.2 16 5 Susun program untuk menginput sebuah bilangan integer lebih besar dari nol. Kemudian cetak perkataan “Bujur Sangkar ” , bila bilangan yang diinput tadi merupakan kwadrat suatu bilangan inteteger lain. Selainnya cetak perkataan “Bukan Bujur Sangkar”. Contoh : Bila diinput : 49, maka cetak perkataan “Bujur Sangkar” karena 49 = 7 kwadrat atau 7 x 7 Bila diinput : 50, maka cetak perkataan “Bukan Bujur Sangkar”. Soal. Sebuah nilai integer, bila dibagi dengan nilai integer lain yang nilainya berbeda, kemungkinan akan menghasilkan bilangan real. Contoh : 15 / 2 = 7.5 yang dalam programming dapat ditulis dengan Z = A/B, dimana Z bertipe real (Bahasa C; float) , sedangkan X dan Y bertipe integer ( Bahasa C : int ). Susun program untuk menentukan nilai X dan Y bila diberikan (diinput) nilai real Z. Contoh: Bila diinput : 3.1, maka X = 31 dan Y = 10 3.2 16 5 2.5 5 2

Soal. Susun program (penggalan program) untuk menginputkan sebuah bilangan integer lebih besar dari nol. Kemudian periksa apakah bilangan tersebut adalah bilangan Perfect Number atau tidak. Bila ya, maka cetak “Perfect”, bila tidak cetak perkataan “Not Perfect”. Contoh bilangan perfect : 6 adalah bilangan perfect, karena 6 habis dibagi oleh : 1, 2, atau 3 , dan 1+2+3 = 6 28 adalah bilangan perfect, karena 28 habis dibagi oleh : 1, 2, 4, 7, atau 14 dan 1+2+4+7+14 = 28 Soal. Sebuah bilangan bila dibagi dengan 2, 3, 4, 5, 6 maka sisanya = 1. Tapi bila dibagi dengan 7 maka sisanya = 0. Bilangan tersebut mungkin lebih dari satu buah. Susun program untuk mencari dan mencetak satu yang terkecil dari bilangan-bilangan tersebut.

Sebuah kebun besar ditanami pohon bibit sebanyak n baris Sebuah kebun besar ditanami pohon bibit sebanyak n baris. Setiap baris terdiri dari n pohon. Pohon-pohon tersebut kemudian dicabut dan ditanam ulang menjadi 13 buah kebun dengan ukuran lebih kecil yaitu setiap kebun kecil terdiri dari m baris dan setiap baris terdiri dari m pohon. Setelah terbentuk 13 kebun kecil ukuran m x m, ternyata pada kebun besar masih tersisa 1 pohon. Susun program untuk mencetak berapa jumlah pohon semula yang ada di kebun besar.

seleseai Tahap-6