Introduction

22

description

Introduction. 06. to. Algorithm. Algoritma. matematika. CONTOH -1 Menghitung luas bidang yang dibatasi oleh garis. Diberikan sebuah trapesium ABCD dengan gambar sebagai berikut. #include void main() { float Awal, Akhir, dx, TotalLuas; float X, Y, Luasdx; Awal = 20; - PowerPoint PPT Presentation

Transcript of Introduction

Page 1: Introduction
Page 2: Introduction

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;

}

dx=1

20 21

A

D

y

A’

D’

E’E

X

Y

Y = x

A B

C

D

20 70

Trapesium ini dibentuk oleh empat buah garis : y = 0, y = x, x = 20, dan x = 70

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.5karena persamaan garis y = x, maka tingginya = 20.5sehingga luas A A’ E’ E

= dx kali y

= 1 x 20.5 = 20.5

CONTOH -1 Menghitung luas bidang yang dibatasi oleh garis

20

70

Secara matematik,Luas trafesium ABCD,Dapat dihitung = (70 + 20 ) * 50 / 2 = 2250

Bila program ini di-RUN

Maka tercetak : 2250

Page 3: Introduction

2.0

Luas = —— dx1x

0.5

= ln x

0.5

2.0

= ln 2.0 - ln 0.5

= 0.693147181 - -0.69314718

= 1.386294361

dx

y

0.5 2.0

//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;}

Tercetak : 1.38616

Dengan program didapat Luas area dari x = 0.5 sampai x=2.0sebagai berikut :

Bila dx

Maka Luas =

0.10.010.0010.0001

1.4644061.3988261.3870401.386164

Mendekati perhitungan dengan menggunakan integral (matematik)

Benarkah ?

— dx = ln x1x

Hitung luas area yang dibatasi oleh :

y = — , y =0, x=0.5, dan x=2.01

x

CONTOH-2Penyelesaian secara matematikMenggunakan integral

Penyelesaian menggunakan program komputer

Makin kecil dx,Makin teliti hasil perhitungan

Jadi terbukti bahwa :

//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;}

Tercetak : 1.386164

Page 4: Introduction

2.0

Luas = ex dx0.0

= ex = e2 - e0

0.0

2.0

= 2.718282 - 1 = 7.389046 – 1

= 6.389046

x ex

ex*dx Total

0

0.05 1.051271 0.105127 0.105127

0.15 1.161834 0.116183 0.221311

0.25 1.284025 0.128403 0.349713

0.35 1.419067 0.141907 0.491620

0.45 1.568312 0.156831 0.648451

0.55 1.733252 0.173325 0.821776

0.65 1.915540 0.191554 1.013330

0.75 2.116999 0.211700 1.225030

0.85 2.339646 0.233965 1.458995

0.95 2.585708 0.258571 1.717565

1.05 2.857649 0.285765 2.003330

1.15 3.158190 0.315819 2.319149

1.25 3.490340 0.349034 2.668183

1.35 3.857422 0.385742 3.053926

1.45 4.263110 0.426311 3.480237

1.55 4.711465 0.471147 3.951383

1.65 5.206974 0.520697 4.472081

1.75 5.754596 0.575460 5.047540

1.85 6.359812 0.635981 5.683521

1.95 7.028678 0.702868 6.386389

Dihitung dengan Excel dengan dx = 0.1

//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);

}

Tercetak : 6.389131

Benarkah

ex dx = ex

6.386389

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 :

Dianggap sama ex dx = exJadi terbukti benar bahwa :

e = 2.71828

y = ex

y

x

1

2

Hitung luas area yang dibatasi oleh :

y=ex, y =0, x=0, dan x=2

CONTOH-3

Page 5: Introduction

Luas —— lingkaran = 14 y dx

= r2 – x2 dx

=

a2–u2 du = —— u a2-u2 + —— a2 arc sin —— + C1

2

1

2ua

— x r2-x2 + — r2 arc sin —— 12

12

xr

0

8

= — 8 82-82 + — 82 arc sin —— 12

12

88

= — 8 82-82 + — 82 arc sin —— 12

12

88

= 0 = 32 arc sin 1

= 32 arc sin 1= ——

2

= 32 ——2

= 16 = 16 * 3.1416

= 50.2656 (ini luas seperempat lingkaran)

sin 90o = 1arc sin 1 = 90o

90o dalam radian adalah = ——2

Jadi luas lingkaran denganjari-jari = 8,adalah 4 * 50.2656 = 201.0624

x

r2 – x2y =

dx

dLuas = y dx

0 8

r = 8

Soal

Hitung Luas LingkaranBila jari-jari = 8 cm

Yang dihitung cukup seperempat lingkaran, misal bagian yang berada di kudran ke- IRumus yang digunakan :

sama dengan hasil hitungan degan rumus biasa yaitu :

r2= 3.1416 * 64 = 201.0624

CONTOH-11

Page 6: Introduction

//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);

}

Tercetak : 5026550784.000000

Bila r = 8.0Tentunya Luas = 50.2655 0784

Bandingkan dengan perhitungan menggunakan integral yang hasilnya = 50.2656

Tercetak : 50265476.000000

//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);

}

Bila r = 8Tentunya Luas = 50.265 476

Bandingkan dengan perhitungan menggunakan integral yang hasilnya = 50.2656

Bila luas 1 / 4 lingkaran dihitung dengan program komputer

Page 7: Introduction

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.cppPada program kedua, skala diperbesar 1000 kaliHal ini dibuat untuk menghindari penyimpanan nilai dalam bentuk pecahan dalam tipe float atau double, karena penyimpanan bilangan pecahan ketelitiannya terbatas.

#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);

}

}

0.100000001490116119

0.0000000000000000000.1000000014901161190.2000000029802322390.3000000119209289550.4000000059604644780.5000000000000000000.6000000238418579100.7000000476837158200.8000000715255737300.900000095367431641

0.100000

0.0000000.1000000.2000000.3000000.4000000.5000000.6000000.7000000.8000000.900000

Dicetak dengan format

“ %20.18f” “ %f ”

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

Page 8: Introduction

Tercetak : 50.304272

Bila dicetak dengan format: %22.18Maka 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.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

//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);

}

Perhatikan hasilnya bila dipaksakan menggunakan bilangan pecahan ( float)

Page 9: Introduction

//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);

}

Tercetak : 50.343361

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

Page 10: Introduction

#include<iostream.h>#define n 10void 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

Page 11: Introduction

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

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

JumlahRobot-B

Jumlah Robot-A

seharusnya

Page 12: Introduction

Misal jumlah robot A = X ,dan jumlah robot B = Y

Bila diinput :

Jumlah kepala = 22 Dan jumlah kaki = 31,

Maka secara aljabar dapat dibuat persamaan :

2X + 3Y = 223X + 4Y = 31

6X + 9Y = 666X + 8Y = 62

Y = 4X = 5

Robot A = X Robot B = Y

//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;}

Page 13: Introduction

Misal jumlah robot A = X ,dan jumlah robot B = Y

Bila diinput :

Jumlah kepala = 22 Dan jumlah kaki = 31,

Maka secara aljabar dapat dibuat persamaan :

2X + 3Y = 223X + 4Y = 31

6X + 9Y = 666X + 8Y = 62

Y = 4X = 5

Robot A = X 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");}

Page 14: Introduction

Misal jumlah robot A = X ,dan jumlah robot B = Y

Bila diinput :

Jumlah kepala = 22 Dan jumlah kaki = 31,

Maka secara aljabar dapat dibuat persamaan :

2X + 3Y = 223X + 4Y = 31

6X + 9Y = 666X + 8Y = 62

Y = 4X = 5

Robot A = X 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;elsecout << "Tidak ada Solusi";

}

Page 15: Introduction

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

Page 16: Introduction

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

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.

Soal.

Soal.

Page 17: Introduction
Page 18: Introduction

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.

Page 19: Introduction
Page 20: Introduction
Page 21: Introduction
Page 22: Introduction