modul algoritma Bab 3
-
Upload
eko-widyanto-napitupulu -
Category
Data & Analytics
-
view
94 -
download
3
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 ;