Dokumen ini membahas tentang algoritma pemilihan dan kontrol program dalam bahasa pemrograman. Terdapat beberapa kasus yang dijelaskan seperti menentukan bilangan terbesar dari dua dan tiga bilangan, menghitung akar kuadrat dari persamaan kuadrat, dan mengkonversi nilai angka menjadi nilai huruf.
1. 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 C
if (kondisi) then
aksi
if (kondisi) then aksi; if (kondisi) aksi;
end if
if (kondisi) then
aksi I
if (kondisi) then
aksi I
if (kondisi)
aksi I;
else else Else
aksi 2 aksi 2 aksi 2
end if
pernyataan 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 C
case (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..)
2. 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 q
benar benar benar
benar salah benar
salah benar benar
salah 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 q
bena
r
bena
r
benar
bena
r
salah salah
salah bena
r
salah
salah salah salah
Dekripsi
Read (A,B)
If (A,B) then write (‘bilangan terbesar adalah = ‘ A)
Else write (‘bilangan terbesar adalah = ‘ B)
endif
3. Flow Chart 3.1
Tranlasi 3.1
Bahasa Pascal Bahasa C
program maksimum :
uses wincrt :
var A.B : real
begin
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.2
Tentukan 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 : integer
Mulai
A ,
B
A>
B?
Max=B
selesai
Max=A
4. Dekripsi
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
Flow Chart 3.2
Tidak
Tidak
Tranlasi 3.2
Bahasa Pascal Bahasa C
program 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)
#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:
mulai
x>y
and x>z ?
x, y, z
x>y
and
x>z ?
max = z
mak = y
max = x
selesai
5. end.
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.
Alogaritma 3.2.b
Alogaritma Nilai Maksimum
{Membaca tiga buah bilangan bulat, menentukan bilangan terbesar diantara tiga buah
Bilangan tersebut dan menampilkannya ke layar}
Deklarasi
X,y,z : integer
Max : integer
Dekripsi
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
Analisis
Persamaan 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)
6. Flow Chart 3.3
= 0 > 0
< 0
Transilasi 3.3
Bahasa Pascal Bahasa C
program Persamaan – Kua drat
uses 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
#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”,-CB)
}else{
mulai
A,B,C
Disk = B2
-4 A C
Disk
?
‘Akar
imajiner’
selesai
x1 = -B+ disk
2A
X2 = -B- disk
2A
x1 = -B
2A
x2 = x1
7. 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);
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’)
end
end
Disk = B*B - 4*A*C:
if disk > 0 {
x1 := -B+sqrt(disk)/(2*A)
x2 := -B-sqrt(disk)/(2*A)
print (“diksriminan =%Idn”,disk)
printf (x1 = %6.3fn”,x1)
printf (x2 = %6.3fn”,x2)
} else if (disk = = 0) {
x1 := -B / (2*A)
x2 := x1 ;
printf(diskriminan : 0n’)
printf (x1 = %6.3fn”,x1)
printf (x2 = %6.3fn”,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 E
21 – 40 D
41 – 60 C
61 – 80 B
81 – 100 A
Alogaritma
Alogaritma Konversi_Nilai
{Mengkonversikan nilai angka menjadi nilai huruf}
Deklarasi
Nilai : integer
Nilai_huruf : char
Koefisien pangkat 2 : 1
Koefisien pangkat 1 : -1
Koefisien pangkat 0 : -20
Diskriminan = 81
x1 = 5.5
x2 = -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)
8. Flow Chart 3.4
T
F
T
F
T
F
T
F
mulai
nilai
Nilai > 0
And nilai
<=20?
Nilai > 60
And nilai
<=80?
Nilai > 40
And nilai
<=60?
Nilai > 20
And nilai
<=40?
nilai_huruf ‘ A ‘
nilai_huruf
selesai
nilai_huruf ← ‘E’
nilai_huruf ← ‘E’
nilai_huruf ← ‘E’
nilai_huruf ← ‘E’
9. Tranlasi 3.4
Bahasa Pascal Bahasa C
Program Kon versi_Nilai
Uses wincrt
Var 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 ;
10. Tranlasi 3.4
Bahasa Pascal Bahasa C
Program Kon versi_Nilai
Uses wincrt
Var 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 ;