modul algoritma Bab 3

Post on 08-Aug-2015

94 views 3 download

Transcript of modul algoritma Bab 3

BAB 3

PEMILIHAN / KONTROL PROGRAM

A. Pendahuluan

Salah satu kemampuan komputer adalah dapat melakukan proses pemilihan dari beberapa alternatif sesuai dengan kondisi yang diberikan. Dalam persoalan sehari-haripun, hampir selalu ada kondisi dimana kita harus memilih, diantara alternatif – alternatif yang ada. Sebagai contoh, seorang mahasiswa memperoleh nilai 75. apakah dengan nilai tersebut mahasiswa tersebut itu lulus ? Jika batas kelulusan minimal 60 maka mahasiswa tersebut lulus ujian. Jika kurang dari 60 maka mahasiswa tersebut tidak lulus ujian.

B. Pemograman

Bahasa pemograman seperti Pascal maupun C juga mendukung pernyataan bersyarat . Tata cara penulisannya tersaji berikut ini :

Algoritmik Pascal Cif (kondisi) then aksi

if (kondisi) then aksi; if (kondisi) aksi;

end ifif (kondisi) then aksi I

if (kondisi) then aksi I

if (kondisi) aksi I;

else else Else aksi 2 aksi 2 aksi 2 end ifpernyataan majemuk begin ….. end { …….. }

Baik aksi, aksi I, maupun aksi2 bisa merupakan pernyataan tunggal maupun pernyataan majemuk. Selain itu, bila kondisi bertipe ordinal, seperti integer, byte atau yang lain (kecuali real atau string), bisa digunakan pernyataan di bawah ini :

Algeritmik Pascal Ccase (nama) case (nama) of switch (nama) { <label1> : aksi I label 1 : aksi I; case label I : aksi1 ; break <label2> : aksi 2 label 2 : aksi 2; case label 2 : aksi2 ; break <label3> : aksi 3 label 3 : aksi 3; case label 3 : aksi3 ; break …. …. …. <labelN> : aksiN label N : aksiN; case labelN : aksiN ; break else : aksiX else aksiX ; default : aksiX endcase end : }

dimana konstantaI sampai dengan konstantaN dapat pula berupa range suatu nilai, misalnya untuk menyatakan 60 < nilai ≤ 80 dapat ditulis sebagai 61..80 (dengan menggunakan operator range..)

C. Operator Relasional

Biasanya suati kondisi dinyatakan dengan membandingkan suatu keadaan dengan suatu nilai. Untuk itu diperlukan suatu operator perbandingan yaitu :

Algoritmik Arti Pascal C< Lebih kecil < <> Lebih besar > >

<= Lebih kecil sama dengan <= <=>= Lebih besar sama dengan >= >=≠ Tidak sama dengan <> !== Sama dengan = = =or atau or ║

and dan and & &

D. Tabel Kebenaran Operator Or dan And

Operator or dan and termasuk termasuk operator binari, yaitu operator yang memerlukan dua operan, dimana setiap operan bisa bernilai benar atau salah. Untuk itu masing – masing mempunyai 4 kemungkin an nilai, yaitu :

p q p or qbenar benar benarbenar salah benarsalah benar benarsalah salah salah

Kasus 3.1

Tentukan bilangan tersebesar antara dua bilangan bulat.

Algoritma 3.1.

Alogaritma Maksimum{ Menentukan nilai terbesar antara dua bilangan bulat }Deklarasi A , B : intiger

p q p or qbenar benar benarbenar salah salahsalah benar salahsalah salah salah

DekripsiRead (A,B)If (A,B) then write (‘bilangan terbesar adalah = ‘ A)Else write (‘bilangan terbesar adalah = ‘ B)endif

Flow Chart 3.1

Tranlasi 3.1

Bahasa Pascal Bahasa Cprogram maksimum :uses wincrt :var A.B : realbegin write (‘bilangan pertama = ‘) readln (A) write (‘bilangan kedua = ‘) readln (B) if (A > B) then writeln (‘Bilangan Terbesar A :’,A:4:0) else writeln (‘Bilangan Terbesar B’,B:4:0)end.

#include <stdio.h>main () { int A, B printf (bilangan pertama = “) scanf (“%d”,&A): printf (“bilangan kedua = “) scanf (“%d”,&B): if (a>b) printf (“bilangan terbesar : %d”,A): else printf (“bilangan terbesar : %d”,B): retrun 0:

Kasus 3.2Tentukan bilangan terbesar antara bilangan bulat.

Alogaritma 3.2.a

Alogaritma Nilai _Maksimum

{Membaca tiga buah bilangan bulat, menentukan bilangan terbesar diantara tiga buah bilangan tersebut dan menampilkannya ke layar}Deklarasi

X,y,z : integerDekripsi

Read (x,y,z) read (x>y)and (x<z) then write (‘bilangan terbesar adalah = ,x) else if (x>y)and (x<z) then write (‘bilangan terbesar adalah = ,y) else write (‘bilangan terbesar adalah = ,z) end if

Mulai

A , B

A>B?

Max=B

selesai

Max=A

Flow Chart 3.2

Tidak

Tidak

Tranlasi 3.2

Bahasa Pascal Bahasa Cprogram maksimum :uses wincrt :var x, y, z : integer

begin write (‘bilangan pertama = ‘) readln (x) write (‘bilangan kedua = ‘) readln (y) write (‘bilangan ketiga = ‘) readln (z) if (x>y)and (x<z) then write (‘bilangan terbesar adalah =’,x) else if (y>x)and (y<z) then writeln (bilangan terbesar : y) else write (bilangan terbesar : z)end.

#include <stdio.h>

main () { int x, y, z printf (bilangan pertama = “) scanf (“%d”,&x): printf (“bilangan kedua = “) scanf (“%d”,&y): printf (“bilangan ketiga = “) scanf (“%d”,&z): if (x>y) &&(x>z) printf (“bilangan terbesar : %d”,x): else if (y>x) &&(y>z) printf (“bilangan terbesar : %d”,y): else printf (“bilangan terbesar : %d”,z): retrun 0:

Pembandingan ini tentu saja menjadi sangat kompleks bila bilangan yang di bandingkan

lebih dari 3. sebagai alternatif, alogaritma di bawah ini memberikan penyelesaian lebih baik. Idenya : bila kita punya satu bilangan maka bilangan tersebut pastilah terbesar (atau terkecil ), karena memang hanya sebuah bilangan saja. Bilangan berikutnya tinggal di bandingkan dengan nilai terbesar yang saat ini diperoleh.

mulai

x>yand x>z ?

x, y, z

x>yand

x>z ?

max = z

mak = y

max = x

selesai

Alogaritma 3.2.bAlogaritma Nilai Maksimum{Membaca tiga buah bilangan bulat, menentukan bilangan terbesar diantara tiga buahBilangan tersebut dan menampilkannya ke layar}Deklarasi X,y,z : integer Max : integerDekripsi Read (x,y,z) Max ← x If (y> maks) then maks ← y end if If (z> maks) then maks ← z end if Write (‘Bilangan terbesar adalah = ‘ maks)

Kasus Carilah akar – akar kuadrat

AnalisisPersamaan kuadrat adalah persamaan dengan bentuk umum Ax2 + Bx + c = 0 , dan

tentu saja dengan A # 0. akar persamaan kuadrat di peroleh dari rumus :

Bila b2 – 4ac < 0 akan di peroleh akar imajiner

Algoritma

Algoritma Persamaan Kuadrat{Menghitung akar – akar persamaan kuadrat Ax^2+Bx+C = 0 }Deklarasi A,B,C : integer {koefisien – koefisien persamaan} disk : longint {nilai diskriminan} x1, x2 : real {nilai – nilai akar untuk disk > = 0}Deskripsi

Read (A,B,C) Disk ← B*B-4*C If ( A = 0 ) then write (bukan persamaan kuadrat) Else if disk >0then x1← -B+sqrt(disk)/2*A x2← -B-sqrt(disk)/2*A else if disk = 0 then x1← -B/2*A x2← x1

else write (Akar imajiner) end if write (x1, x2)

Flow Chart 3.3

= 0 > 0

< 0

Transilasi 3.3

Bahasa Pascal Bahasa Cprogram Persamaan – Kua dratuses wincrt ;var A, B, C ; integer; disk ; longint; xI, x2 ; real;begin write(‘Koefisien pangkat 2 ; ‘); readln (A); write(‘Koefisien pangkat I ; ‘); realdn (B); write(‘Koefisien pangkat 0 ; ‘); realdn (C) if A = 0 then begin writeln (‘Bukan pers, kuadrat.’) writeln(‘Harga akar = ‘,-C/B:I:I); end else begin disk :=B*B – 4*A*C: if disk > 0 then begin x1 := -B+sqrt(disk)/(2*A) x2 := -B-sqrt(disk)/(2*A) writlen(diskriminan : disk) writlen(x1 = ‘,x1:1:1); writlen(x2 = ‘,x1:1:1);

#include <stadio.h>#include <math.h>main ( ) { int A, B, C; long disk; float x I, x2 ; printf(“Koefisien pangkat 2 :”); scanf(“%d”,&A); printf(“Koefisien pangkat 1 :”); scanf(“%d”,&B); printf(“Koefisien pangkat 0 :”); scanf(“%d”,&C); if (A = = 0) { printf (“bukan pers. Kuadrat.\n”) printf (“harga akar = %6.3f”,-C\B) }else{ Disk = B*B - 4*A*C: if disk > 0 { x1 := -B+sqrt(disk)/(2*A) x2 := -B-sqrt(disk)/(2*A) print (“diksriminan =%Id\n”,disk) printf (x1 = %6.3f\n”,x1) printf (x2 = %6.3f\n”,x2)

mulai

A,B,C

Disk = B2-4 A C

Disk ?

‘Akar imajiner’

selesai

x1 = -B+ disk2A

X2 = -B- disk2A

x1 = -B 2A

x2 = x1

end else if disk – 0 then begin x1 := -B / (2*A) x2 := x1 ; writlen(diskriminan : 0’) writlen(x1 = ‘,x1:1:1); writlen(x2 = ‘,x2:1:1); end else writeln(‘akar imajiner’) endend

} else if (disk = = 0) { x1 := -B / (2*A) x2 := x1 ; printf(diskriminan : 0\n’) printf (x1 = %6.3f\n”,x1) printf (x2 = %6.3f\n”,x2) } else writeln(‘akar imajiner’) { Retrun 0 :{

Output :

Kasus 3.4

Konversikan nilai angka menjadi nilai huruf dengan ketentuan sebagai berikut :

Nilai Angka Nilai huruf 0 – 20 E21 – 40 D41 – 60 C61 – 80 B81 – 100 A

AlogaritmaAlogaritma Konversi_Nilai{Mengkonversikan nilai angka menjadi nilai huruf}Deklarasi Nilai : integer Nilai_huruf : char

Koefisien pangkat 2 : 1Koefisien pangkat 1 : -1Koefisien pangkat 0 : -20Diskriminan = 81x1 = 5.5x2 = -3.5

Deksripsi Read (nilai) If (nilai > 0) and ( nilai <=20) then nilai_huruf ← ‘E’ else (nilai > 20) and ( nilai <=40) then nilai_huruf ← ‘D’ else (nilai > 40) and ( nilai <=60) then nilai_huruf ← ‘C’ else (nilai > 60) and ( nilai <=80) then nilai_huruf ← ‘B’ else nilai_huruf ← ‘ A ‘ write (nilai_huruf)

Flow Chart 3.4

T

F

T

F

T

F

T

F

mulai

nilai

Nilai > 0And nilai

<=20?

Nilai > 60And nilai

<=80?

Nilai > 40And nilai

<=60?

Nilai > 20And nilai

<=40?

nilai_huruf ‘ A ‘

nilai_huruf

selesai

nilai_huruf ← ‘E’

nilai_huruf ← ‘E’

nilai_huruf ← ‘E’

nilai_huruf ← ‘E’

Tranlasi 3.4

Bahasa Pascal Bahasa CProgram Kon versi_NilaiUses wincrtVar nilai : interger nilai_ huruf : char ;begin

write (‘masukkan nilai angka + ‘):readln (nilai)if (niali > 0) and (nilai < + 20) then nilai_huruf :=’E’else if ( nilai >20) and (nilai < + 40) then nilai_huruf :=’D”else if (niali>40) and ( niali < + 60) then nilai_huruf := ‘C’else if ( nilai>60) and ( nilai < = 80 ) then nilai_huruf := ‘B’else nilai_huruf :=’A’;writeln (‘Nilai huruf =’,nilai_huruf;end.

#include <stdio.h>Main( ) { Int nilai: Char nilai_huruf; Printf (“Masukkan nilai angka = “); Scanf (“%d”,&nilai); If (( nilai > 0) && (nilai < = 20)) Nilai_huruf = ‘E’; Else if (( nilai > 20 ) && ( nilai < = 40)) Nilai_huruf = ‘D’; Else if (( nilai > 40 ) && ( nilai < = 60)) Nilai_huruf = ‘C’; Else if (( nilai > 60 ) && (nilai < = 80)) Nilai_huruf = ‘B’; Else nilai_huruf = ‘A’; Print(“Nilai huruf = %c”,nilai_huruf); Return o ;