1 / 22

Introduction

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;

hank
Download Presentation

Introduction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction 06 to Algorithm Algoritma matematika

  2. 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

  3. Hitung luas area yang dibatasi oleh : y = — , y =0, x=0.5, dan x=2.0 1 x y 0.5 dx 2.0 CONTOH-2 Penyelesaian secara matematik Menggunakan integral Benarkah ? 2.0  1 x Luas = —— dx  1 x — dx = ln x 0.5 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 = Makin kecil dx, Makin teliti hasil perhitungan 0.1 0.01 0.001 0.0001 1.464406 1.398826 1.387040 1.386164 Tercetak : 1.386164 Mendekati perhitungan dengan menggunakan integral (matematik) Tercetak : 1.38616 Jadi terbukti bahwa :  1 x — dx = ln x

  4. CONTOH-3 Hitung luas area yang dibatasi oleh : y=ex, y =0, x=0, dan x=2 2.0  Luas = exdx 0.0 y 2.0 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  e = 2.71828 exdx = ex ? Tercetak : 6.389131  exdx = ex Jadi terbukti benar bahwa : Dianggap sama 6.386389

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

  6. 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

  7. 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.100000001490116119 0.200000002980232239 0.300000011920928955 0.400000005960464478 0.500000000000000000 0.600000023841857910 0.700000047683715820 0.800000071525573730 0.900000095367431641 0.100000 0.000000 0.100000 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. . . . .

  8. Perhatikan hasilnya bila dipaksakan menggunakan bilangan pecahan ( float) //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); } //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); } Tercetak : 50.304264 Tercetak : 50.304272 Bila dicetak dengan format: %22.18 Maka tercetak : 50.304271697998046900

  9. //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

  10. #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 : " ; for(I=0; I<=n-1; I++) { 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 : "; for(I=0; I<=n-1; I++) { cout << " " << A[I];} } Bubble Sort Menginput 12 buah bilangan bulat, dengan nilai acak (tidak urut), Kemudian mengurutkannya menaik (sort ascending) Dan mencetak hasil yang telah urut menaik

  11. 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 Hitungan Salah 2 2 5 0 Hitungan Salah 5 4 Tercetak : x y Jumlah Robot-B Jumlah Robot-A

  12. 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

  13. 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

  14. 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

  15. Soal. 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

  16. 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.

  17. 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.

  18. seleseai Tahap-6

More Related