SlideShare a Scribd company logo
Algoritma Pemrograman 1A
(FLOWCHART)
KULIAH
MINGGU 5. Teknik Pengulangan dan
Percabangan (Lanjutan)
Percabangan IF-THEN
Analisa Kondisi Aksi (Lanjutan) :
(1) Kasus Lebih dari 1 Aksi (IF-THEN-ELSE) & CASE
(2) Kasus Lebih dari 1 Kondisi
Percabangan / Pemilihan
• Struktur runtunan hanya terdapat pada program
sederhana.
• Pada umumnya, masalah yang akan diselesaikan
memiliki beberapa alternative pelaksanaan aksi.
• Suatu aksi (pernyataan) hanya dilakukan bila
persyaratan atau kondisi tertentu dipenuhi. Kita
katakan bahwa masalah dalam Percabangan memiliki
beberapa kasus.
• Jadi, dalam memecahkan masalah, kita harus
menganalisis kasus-kasus apa saja yang mungkin ada,
lalu aksi apa yang dilakukan bila suatu kasus
dimasuki.
Kondisi = Ekspresi Boolean
(true/false)
• Menganalisis kasus dari suatu masalah adalah
menentukan kondisi boolean (bernilai true atau false)
untuk setiap kasus dan menentukan aksi yang
dilakukan jika kondisi tersebut bernilai true (terpenuhi)
dan aksi yang dilakukan jika bernilai false (tidak
terpenuhi).
• Kondisi boolean adalah ekspresi boolean yang bernilai
true atau false bergantung pada nilai masing-masing
operand yang terlibat di dalamnya.
• Ekspresi boolean dibentuk dengan mengkombinasikan
operand yang bertipe sama dengan salah satu dari
operator relasional  =, ≠, <, >, ≤, ≥, dan operator uner
not.
Contoh Ekspresi Boolean :
• x > y
• a ≠ 10
• m = n
• p ≤ q
• a + b > 1
• str = ‘itb’
• k mod 4 = 0
• ketemu = true
• not berhenti
• (x > 0) and (y < 0)
Aksi = Pernyataan
• Aksi dikerjakan bila kondisi boolean bernilai true
(terpenuhi)
• Dapat berupa pernyataan, pengisian nilai
(assignment), kalkulasi, baca, tulis, dan
sebagainya, bergantung pada masalahnya.
• Penentuan kondisi boolean dan aksi yang
dilakukan bergantung pada jumlah kasus yang
terdapat pada masalah tersebut : satu kasus (IF-
THEN), dua kasus (IF-THEN-ELSE), atau lebih dari
dua kasus (IF Bersarang).
Percabangan 1 Kasus (IF-THEN)
• Notasi algoritmik untuk analisis dengan satu
kasus adalah dengan menggunakan struktur
IF-THEN (jika-maka) :
Aksi sesudah kata then (dapat berupa satu atau
lebih aksi) hanya akan dilaksanakan bila kondisi
bernilai benar (true). Bila kondisi bernilai salah
(false), tidak ada aksi apapun yang dikerjakan.
Contoh Percabangan 1 Kasus IF-THEN
Program IF-THEN
Var
nilai : Integer ;
Begin
Write(‘ Masukkan Nilai Ujian : ');
Readln(nilai);
If nilai > 60 then
write (‘Anda Lulus’); {Kasus 1}
Readln;
End.
IF
nilai>60
END
Read (nilai)
Write
(‘LULUS’)
Latihan
• Buat Program Pascal
yang menghitung total
pembayaran dimana
jika dia pelanggan akan
mendapat diskon 10%
dari jumlah
belanjanya….
IF
Pelanggan
TotBayar=
JumBelanja – Diskon
Diskon :=
10%*
JumBelanja
Read
(JumBelanja)
Diskon := 0;
Program Toko_IFTHEN;
uses crt;
Var
p : char;
jml : longint;
diskon, total : real;
Begin
clrscr;
write ('Apakah Pelanggan (y/t) : '); readln(p);
write ('Berapa jumlah pembelian : Rp. '); readln(jml);
diskon := 0;
if (p='y') then
diskon := Jml*0.1;
total := jml - diskon;
writeln ('==============IndoApril==============');
writeln ('Jumlah Pembelanjaan : Rp. ',jml);
writeln ('Diskon : ',diskon:0:0);
writeln ('-------------------------------------');
writeln ('Total Bayar = Rp. ',total:0:0);
readln;
end.
Percabangan 2 Kasus (IF-THEN-ELSE)
• Notasi algoritma untuk analisis dengan dua buah
kasus adalah dengan menggunakan struktur IF-
THEN-ELSE (jika-maka-kalau tidak) :
Aksi1 akan dilaksanakan jika kondisi bernilai benar,
tetapi jika kondisi bernilai salah, maka aksi2 yang akan
dilaksanakan. Perhatikanlah bahwa “else” menyatakan
ingkaran (negation) dari kondisi.
Contoh Percabangan 2 Kasus
(IF-THEN-ELSE)
Program IF-THEN-ELSE
Var
nilai : Integer ;
Begin
Write(‘ Masukkan Nilai Ujian : ');
Readln(nilai);
If nilai > 60 then
write (‘Anda Lulus’); {Kasus 1}
Else
write (‘Anda Tidak Lulus’); {Kasus 2}
Readln;
End.
IF
nilai>60
END
Read (nilai)
Write
(‘LULUS’)
Write
(‘TIDAK LULUS’)
Program Toko_IFTHENELSE;
uses crt;
Var
p : char;
jml : longint;
diskon, total : real;
Begin
clrscr;
write ('Apakah Pelanggan (y/t) : ');
readln(p);
write ('Berapa jumlah pembelian : Rp. ');
readln(jml);
if (p='y') then
diskon := Jml*0.5
else diskon:=Jml*0.1;
total := jml - diskon;
writeln ('=========IndoApril=========');
writeln ('Jumlah Pembelanjaan : Rp. ',jml);
writeln ('Diskon : ',diskon:0:0);
writeln ('-------------------------------------');
writeln ('Total Bayar = Rp. ',total:0:0);
readln;
end.
IF
Pelanggan
Diskon:=
10% *JumBelanja
Diskon :=
10%*
JumBelanja
TotBayar:=
JumBelanja – Diskon
Read
(JumBelanja)
Write
(TotBayar)
Latihan
• Buatlah algoritma dan program yang membaca angka tahun
masehi,lalu menentukan apakah tahun tersebut merupakan tahun
kabisat. Secara sederhana, tahun kabisat adalah tahun yang habis
dibagi dengan 4.
Penyelesaian :
Misalkan tahun masehi tersebut adalah Tahun.
Analisis kasus :
– Kasus 1 : Tahun mod 4 = 0, maka tulis Tahun adalah tahun
kabisat
– Kasus 2 : Tahun mod 4 ≠ 0, maka tulis Tahun bukan tahun
kabisat
Program TAHUN_KABISAT;
{* menentukan apakah suatu tahun
merupan tahun kabisat atau bukan kabisat *}
Var {* DEKLARASI *}
Tahun : integer;
Begin {* DESKRIPSI *}
write('TAHUN '); readln (Tahun);
if (Tahun mod 4 = 0) then
write(' adalah tahun kabisat')
{Kasus 1}
else
write(' bukan tahun kabisat') ;
{Kasus 2}
end.
IF
Tahun
Mod 4 =0
END
Read (Tahun)
Write
(‘Tahun
Kabisat’)
Write (‘Bukan
Tahun Kabisat’)
Kondisi – Aksi
Lebih 2 Kasus (IF-THEN-ELSE Majemuk)
• Masalah yang mempunyai lebih dari 2 kasus tetap
dapat dianalisis dengan struktur IF-THEN-ELSE
sebagaimana halnya pada masalah dua kasus.
Tiga Kasus : Empat Kasus :
Contoh Percabangan 3 Kasus
IF-THEN-ELSE
Program Maks1
{menentukan bilangan terbesar dari 3 buah bilangan bulat positif}
Var
a, b, c , maks : Integer ;
Begin
Write(' Entry bil 1 : ');Readln(a);
Write(' Entry bil 2 : ');Readln(b);
Write(' Entry bil 3 : ');Readln(c);
{Menentukan bilangan terbesar }
If (a>b) then
maks :=a { Kasus 1}
else maks:=b; { Kasus 2}
If (c>maks) then
maks:=c; { Kasus 3}
{ Cetak bilangan terbesar }
Writeln(' Bil terbesar = ',maks);
Readln;
End.
Contoh Percabangan 4 Kasus
IF-THEN-ELSE
Program Maks2;
{menentukan bilangan terbesar dari 3 buah bilangan bulat positif}
Var
a, b, c , maks : Integer ;
Begin
Write(' Entry bil 1 : ');Readln(a);
Write(' Entry bil 2 : ');Readln(b);
Write(' Entry bil 3 : ');Readln(c);
{Menentukan bilang[9an terbesar }
If (a>b) {Kondisi1} then
if (a>c) {KOndisi2} then
maks  a { Kasus 1}
else maks  c { Kasus 2}
else
if (b>c) {kondisi3}then
maks  b { Kasus 3}
else maks  c; { Kasus 4}
{ Cetak bilangan terbesar }
Writeln(' Bil terbesar = ', maks);
Readln;
End.
Analisis Kasus
Kondisi 1 Kondisi2 Kondisi3
(a>b) (a>c) (b>c)
• Kasus1 y (a>b) and y (a>c)
– Maks:=a;
• Kasus2 y (a>b) and t (c>a)  c>a>b
– Maks:=c;
• Kasus3 t (b>a) and y (b>c)
– Maks:=b;
• Kasus4 t (b>a) and t (c>b)
– Maks:=c;
Contoh Percabangan Lebih dari 1 Kondisi
Menggunakan Relational Operator OR dan AND
Program Maks3
{menentukan bilangan terbesar
dari 3 buah bilangan bulat positif}
Var
a, b, c , maks : Integer ;
Begin
Write(' Entry bil 1 : ');Readln(a);
Write(' Entry bil 2 : ');Readln(b);
Write(' Entry bil 3 : ');Readln(c);
If (a>b) And (a>c) Then
max:=a; {Kasus 1}
If (b>a) And (b>c) Then
max:=b; {Kasus 2}
If (c>a) And (c>b) Then
max:=c; {Kasus 3}
{ Cetak bilangan terbesar }
Writeln(' Bil terbesar = ',maks);
Readln;
End.
Program Maks2
{menentukan bilangan terbesar }
Var
a, b, c , maks : Integer ;
Begin
Write(' Entry bil 1 : ');Readln(a);
Write(' Entry bil 2 : ');Readln(b);
Write(' Entry bil 3 : ');Readln(c);
If (a>b) then
if (a>c) then
maks  a { Kasus 1}
else maks  c { Kasus 2}
else
if (b>c) then
maks  b { Kasus 3}
else maks  c; { Kasus 4}
{ Cetak bilangan terbesar }
Writeln(' Bil terbesar = ', maks);
Readln;
End.
Program HurufVokal;
Var
c : char;
Begin
write (‘Masukkan sebuah huruf :’);
readln (c);
if (c=‘a’) or (c=‘i’) or (c=‘u’) or (c=‘e’) or (c=‘o’) then
write (‘Huruf itu adalah huruf hidup’);
End.
Latihan
• Buatlah algoritma dan program pascal yang
membaca temperatur air, T, (dalam suatu derajat
celcius) pada tekanan normal, lalu menentukan
apakah wujud air tersebut dalam keadaan padat
(T ≤ 0°C), cair (0 < T< 100), atau gas (T > 100).
Penyelesaian :
Misalkan suhu air adalah T.
Analisis kasus :
– Kasus 1 : T ≤ 0, maka tulis “padat”
– Kasus 2 : 0 < T < 100, maka tulis “cair”
– Kasus 3 : T ≥ 100, maka tulis “uap”
Program WUJUD_AIR;
{ menentukan wujud air : padat, cair, atau gas, bergantung pada suhunya }
Var {* DEKLARASI *}
T : real; { suhu air, dalam derajat celcius }
Begin (*DESKRIPSI*}
write('suhu ');read(T);
write('adalah ');
If T <= 0 then
write('padat') { kasus 1 }
else
if ( T > 0) and ( T < 100 ) then
write('cair') { kasus 2 }
else
if T >= 100 then
write('gas atau uap'); { kasus 3 }
end.
end.
end.
End.
Kondisi – Aksi Kasus CASE
• Instruksi case digunakan sebagai instruksi pemilihan di
mana aksi yang akan dilakukan hanya bergantung pada nilai
dari satu macam variabel. Dengan kata lain, variabel
memiliki banyak macam nilai dan setiap nilainya berkaitan
dengan satu macam aksi
• Dimungkinkan ada n buah aksi
Notasi Penulisan Case :
Case ( variabel)
nilai-1 : Aksi_1;
nilai-2 : Aksi_2;
nilai-3 : Aksi_3;
……….
default : aksi_n;
Endcase
• Buat program yang membaca angka bulan lalu
menuliskan/menampilkan nama bulan
tersebut.
Contoh Percabangan
Kondisi - Lebih dari 1 Aksi (Kasus CASE)
Program JUMLAH_HARI;
{ menentukan nama bulan berdasarkan nomor bulan yang di inputkan }
Var {* DEKLARASI *}
AngkaBulan : integer; { 1 . . 12 }
NamaBulan : string;
Begin {* DESKRIPSI *}
write('Bulan (1-12) = '); readln(AngkaBulan);
case AngkaBulan of
1 : NamaBulan:=‘Januari’;
2 : NamaBulan:=‘Febuari’;
3 : NamaBulan:=‘Maret’;
4 : NamaBulan:=‘April’;
5 : NamaBulan:=‘Mei’;
6 : NamaBulan:=‘Juni’;
7 : NamaBulan:=‘Juli’;
8 : NamaBulan:=‘Agustus’;
9 : NamaBulan:=‘September’;
10 : NamaBulan:=‘Oktober’;
11 : NamaBulan:=‘November’;
12 : NamaBulan:=‘Desember’;
end;
writeln(‘Nama Bulan ke- ',AngkaBulan,' adalah ‘,Namabulan);
end.
Latihan 1 Kasus Percabangan
• Taxi “Azmar-Azmir” mempunyai tarif:
– Km pertama : Rp. 2500
– Km selanjutnya : Rp. 1800
Jarak minimal adalah 1 km.
• Jika seseorang menempuh jarak perjalanan kurang
dari 1 km, ia tetap harus membayar Rp.2500
• Untuk menghitung berapa tarif yang harus dibayar
dengan inputan Jarak yang ditempuh buatlah:
– Analisa Kasus Penyelesaiannya / Psedocodenya
– Flowchartnya
– Programnya Algoritma/Dalam Bahasa Pascal
Analisa Kasus
Input (JarakTempuh);
Jmin:=1;
Js:=JarakTempuh-Jmin;
Analisis kasus :
– Kasus 1 : If JarakTempuh <= Jmin then
• Tarif : = 2500;
– Kasus 2 : else
• Tarif := 2500 + (Js*1800;
Output(Tarif);
Flowchartnya
IF
(JarakTem
puh <=
Jmin
Tarif:=2500 + (Js*1800)
Tarif:= 2500
Read
(Jarak Tempuh)
Write (Tarif)
Jmin:=1
Js:= JarakTempuh - Jmin
Program TotTarif;
uses crt;
Var
JarakTempuh, J1, J2 : real;
Tarif : real;
Begin
clrscr;
write('Jarak Tempuh anda = '); readln(JarakTempuh);
clrscr;
writeln('Jarak Tempuh anda = ',JarakTempuh:2:2,' KM');
Jmin := 1;
Js := JarakTempuh - Jmin;
if (JarakTempuh <= Jmin) then {Kasus 1}
Tarif := 2500
else
Tarif := 2500 + (Js*1800); {Kasus 2}
writeln('Tarif yang harus dibayar adalah =',Tarif:2:2);
readln;
end.
Programnya
Latihan 2 Kasus Percabangan
• Untukmenghitung gaji total karyawan dimana gaji karyawan
pada sebuah perusahaan didasarkan pada jam kerja dalam
satu bulan serta posisi atau golongannya dalam perusahaan
tersebut. Upah per jam berdasarkan golongan adalah
sebagai berikut:
• Bila karyawan sudah bekerja lebih dari 150 jam per minggu
maka kelebihan jam kerja tersebut dihitung sebagai lembur
dengan upah/jam 25% di atas upah reguler. Buatlah :
– Analisa Kasus Penyelesaiannya / Psedocodenya
– Flowchartnya
– Programnya Algoritma/Dalam Bahasa Pascal
Golongan Upah/jam (Rp)
A 5000
B 6000
C 7500
D 9000
Input (JamKerja, Golongan);
Analisis kasus :
– Kasus 1 : JamKerja > 150, maka
• JK – 150  JamLembur
• UpahLembur = JamLembur * (100%+25%) * Upah
• Gaji = 150 * Upah
– Kasus 2 : JamKerja ≤ 150, maka
• JamLembur = 0 sehingga UpahLembur = 0
• Gaji = JamKerja * Upah
GajiTotal := Gaji + UpahLembur;
Output(GajiTotal);
Analisa Kasus
Flowchartnya
Read
(JamKerja,
Golongan)
IF
(JamKerja
>150)
JamLembur:=150-Jamkerja
UpahLembur:=JamLembur*1,25*Upah
Gaji:=150*Upah
Write
(TotGaji)
Case (Golongan):
‘A’ : Upah:= 5000;
‘B’ : Upah:= 6000;
‘C’ : Upah:= 7500;
‘D’ : Upah := 9000;
JamLembur:=0
UpahLembur:=0
Gaji:=JamKerja*Upah
TotGaji:=Gaji +
UpahLembur
Program HitungLembur;
{ Algoritma yg menerima nama, golongan serta jam kerja kemudian menghitung Upah Lembur dan menampilkan
total gaji yang diterima karyawan}
Var {* DEKLARASI *}
Nama : String;
Golongan : char;
JK, JamLembur, UpahLembur, Gaji, Upah, TotGaji : real;
Begin {* DESKRIPSI *}
write('Masukkan Nama Anda : '); readln(Nama);
write('Golongan (A/B/C/D) : '); readln(Golongan);
case Golongan of
'A' : Upah := 5000;
'B' : Upah := 6000;
'C' : Upah := 7500;
'D' : Upah := 9000;
end;
writeln('Upah anda = ',Upah:0:0);
write('Masukkan Jam Kerja Per Minggu Anda : '); readln(JK);
if (JK > 150) then
JamLembur := JK - 150;
UpahLembur := JamLembur * Upah * 1.25;
Gaji := 150 * Upah;
If (JK <= 150) then
UpahLembur := 0;
Gaji := JK * Upah;
TotGaji := Gaji + UpahLembur;
writeln('Total Gaji yang anda peroleh adalah : ',TotGaji:0:0);
end.
Perulangan (LOOPING)
Menyelesaikan :
(1) Kasus menggunakan perulangan (Lanjutan)
(2) Kasus menggunakan pembatasan Perulangan
dalam flowchart
Perulangan (LOOPING)
• Dalam bahasa pascal ada 3 macam cara untuk
perulangan atau yang lebih dikenal dengan
Looping.
• Konsep perulangan adalah agar para pengguna
(User) yang menggunakan program yang kita buat
bisa menggunakan beberapa baris atau beberapa
kalimat secara berulang.
Contohnya, jika kita akan memasukan nilai 10 siswa
maka kita harus menggulang proses tampilan untuk
mengisi nilai sebanyak 10 kali.
Struktur Perulangan
Struktur pengulangan secara umum terdiri 2 bagian :
1. Kondisi pengulangan, yaitu ekspresi Boolean
yang harus dipenuhi untuk melaksanakan
pengulangan. Kondisi ini ada yang dinyatakan
secara eksplisit oleh pemrogram atau dikelola
sendiri oleh komputer (implisit);
2. Badan (body) pengulangan, yaitu bagian
algoritma yang diulang.
Disamping itu, struktur pengulangan biasanya disertai bagian:
• Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan
dilakukan pertama kali. Inisialisasi dan terminasi tidak
selalu harus ada, namun pada berbagai kasus inisialisasi
umumnya diperlukan.
• Terminasi, yaitu aksi yang dilakukan setelah pengulangan
selesai dilaksanakan
• Struktur pengulangan
secara umum :
Dalam hal ini awal dan akhir pengulangan dinyatakan
sebagai kata kunci yang bergantung pada struktur
pengulangan yang digunakan. Selain itu, <inisialisasi> dan
<terminasi> adalah bagian yang opsional.
Notasi Struktur Pengulangan
• Struktur FOR
• Struktur WHILE
• Struktur REPEAT
Note:
• Pemilihan struktur pengulangan untuk masalah
tertentu dapat mempengaruhi kebenaran
algoritma.
• Pemilihan struktur pengulangan yang tepat
bergantung pada masalah yang akan deprogram.
Struktur FOR
• Struktur pengulangan FOR digunakan untuk
menghasilkan pengulangan sejumlah kali yang
dispesifikasikan.
• Jumlah pengulangan diketahui atau dapat ditentukan
sebelum eksekusi.
• Untuk mencacah sudah berapa kali pengulangan
dilakukan, kita memerlukan sebuah peubah (variable)
pencacah (counter).
– Peubah ini nilainya selalu bertambah satu setiap kali
pengulangan dilakukan.
• Jika cacah pengulangan sudah mencapai jumlah yang
dispesifikasikan, maka proses pengulangan berhenti
Bentuk umum struktur FOR
• Keterangan :
• Pencacah haruslah dari tipe data yang memiliki predecessor dan
successor, yaitu integer atau karakter. Tipe riil tidak dapat
digunakan sebagai pencacah.
• Aksi adalah satu atau lebih instruksi yang diulang.
• Nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika
nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan
tidak dimasuki.
• Pada awalnya,pencacah diinisialisasi dengan nilai_awal. Nilai
pencacah secara otomatis bertambah satu setiap kali pengulangan
dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir.
• Jumlah pengulangan yang tejadi adalah nilai_akhir - nilai_awal + 1.
Contoh For…to...do
Buat program mencetak angka 1, 2, .., N, yang
dalam hal ini nilai N dibaca terlebih dahulu dari
piranti masukan.
Analisa Kasus :
Misal N = Berapa jumlah angka yang ingin kita cetak
Input(N)
Misal i = Bilangan yg akan dicetakkan
for i:=1 to N do
Write(i)
Algoritma Programnya
Program CETAK_N_ANGKA;
{ mencetak 1, 2, …, N ke piranti
keluaran }
Var { * DEKLARASI *}
N : integer;
k : integer;
Begin {* DESKRIPSI *}
write(‘Jumlah Angka yang
akan dicetak = ');
read(N);
for k:=1 to N do { ulangi
sebanyak N kali }
writeln(k);
end.
k = N ?
Read (N)
write (k)
END
k=1
Contoh For…downto…do
Buat Program peluncuran roket dengan
hitung mundur, mulai dari 10, 9, 8,7,6 …,0
Analisa Kasus :
Misalkan k itu adalah bilangan
for (k:=10) downto 0 do
Write (k)
Algoritma Programnya
Program Peluncuran_Roket;
{ hitung mundur peluncuran roket }
Var { * DEKLARASI *}
k : integer;
Begin {* DESKRIPSI *}
for k:=10 downto 0 do
writeln(k) ;
write (GO!!!!!!!!); {Roket Meluncur}
end.
Struktur WHILE
• Bentuk Umum :
• Aksi (atau runtunan aksi) akan dilaksanakanberulangkali
selama kondisi benilai true. Jika kondisi bernilai false, badan
pengulangan tidak akan dilaksanakan, yang berarti
pengulangan selesai.
• Yang harus diperhatikan adalah pengulangan harus berhenti.
• Pengulangan yang tidak pernah berhenti menandakan bahwa
logika algoritma tersebut salah. Pengulangan berhenti apabila
kondisi bernilai false.
• Agar kondisi suatu saat bernilai false, maka di dalam badan
pengulangan harus ada instruksi yang mengubah nilai peubah
kondisi.
Contoh While…Do
• Buat program untuk memasukkan sejumlah bilangan bulat positif.
Banyaknya bilangan yang dimasukkan tidak diketahui sebelumnya
(bebas/sembarang), tetapi program akan berhenti bila bilangan
yang dimasukkan bernilai -99. Maka bilangan -99 akan
diinterpretasikan sebagai tanda berhenti proses pengisian data. Kita
diminta menghitung jumlah seluruh nilai yang dimauskkan (-99
tidak termasuk data yang dijumlahkan).
Analisa Kasus:
• Misalkan dibaca berturut-turut data: 10, 4, 5, 8, -99, maka jumlah
seluruh nilai adalah 10 + 4 + 5 + 8 = 27
• While (k <> -99)
Input(k);
jum := Jum + k;
Write (jum);
Program JUMLAH_DATA;
{ menghitung jumlah seluruh nilai bilangan bulat positif yang dibaca dari
piranti masukan. akhir pembacaan data: -99 }
Var {* DEKLARASI *}
x, jumlah : integer;
Begin {* DESKRIPSI *}
jumlah:=0;
write('Ketikkan sembarang bilangan bulat ( -99 mengakhiri )');
readln(x);
while (x <> -99) do
begin
jumlah:=jumlah + x;
write('Ketikkan sembarang bilangan bulat ( -99 mengakhiri )');
readln(x);
end;
writeln('Jumlah seluruh nilai = ',jumlah);
end.
Algoritma Programnya
Struktur REPEAT
• Bentuk Umum :
• Notasi ini mendasarkan pengulangan pada kondisi boolean.
• Aksi di dalam badan kalang diulang sampai kondisi boolean
bernilai true. Dengan kata lain, jika kondisi boolean masih
false, pengulangan masih terus dilakukan. Karena proses
pengulangan suatu saat harus berhenti, maka di dalam
badan pengulangan harus ada aksi yang mengubah nilai
peubah kondisi.
• Struktur REPEAT memiliki makna yang sama dengan WHILE,
dan dalam beberapa masalah kedua struktur tersebut
komplemen satu sama lain.
Contoh Repeat…Until
• Algoritma dan program untuk menghitung jumlah angka
dari 1 sampai N. Nilai N dibaca dari papan kunci. Misalnya N
= 5, maka 1 +2 + 3 + 4 + 5 = 15.
Analisa Kasus :
Misalkan : N = {banyaknya suku deretnya}
jumlah = { inisialisasi jumlah deret }
k = {suku deretnya}
Input(N)
jumlah :=0;
k :=1;
repeat
jumlah:=jumlah + k;
k:=k+1;
until (Bil>N)
• Output Hasilnya :
Algoritma Programnya
Program PENJUMLAHAN_DERET;
{ menjumlahkan deret 1 + 2 + 3 + ... + N dengan N adalah bilangan bulat positif yang
dibaca dari piranti
masukan. jumlah deret dicetek ke piranti keluaran. }
Var {* DEKLARASI *}
N, k, jumlah : integer;
Begin {* DESKRIPSI *}
write('N = ');readln(N); {banyaknya suku deret}
jumlah:=0; { inisialisasi jumlah deret }
k:=1; { suku deret }
repeat
jumlah:=jumlah + k; {jumlah deret sekarang} {Badan Perulangan}
k:=k+1; {suku deret berikutnya}
until k > N; {Kondisi Berhenti}
writeln('jumlah deret = ', jumlah);
end.
Latihan 1 Kasus Perulangan
• Buatlah program untuk menampilkan deretan
angka dengan menerima masukkan angka
awal, kelipatan berapa dan berapa banyak
angka yang akan ditampilkan.
• Hasil Output :
Analisa Kasus
• Buatlah program untuk
menampilkan deretan angka
dengan menerima masukkan angka
awal, kelipatan berapa dan berapa
banyak angka yang akan
ditampilkan.
Analisa kasus :
• Input(nilai awal,kelipatan,banyak
angka)
• m=nilai awal, k=kelipatan,
n=banyak angka
• For i=1 to n do
write(m)
m=m+k
Input(nilai
awal -> m),
kelipatan -> k),
banyaknya
angka -> n)
i = n ?
m=m+k
Write (m)
END
Program Deret_Angka;
uses crt;
Var
k, m, n, i : byte;
Begin
clrscr;
writeln('Input Nilai Awal : '); readln(k);
writeln('Input Kelipatan : '); readln(m);
writeln('Input Banyak Angka : '); readln(n);
clrscr;
for i:=1 to n do
Begin
write(k:4);
k:=k+m;
end;
readln;
end.
Algoritma Programnya
Latihan 2 Kasus Perulangan
• Buatlah program untuk menampilkan jumlah
bilangan bulat 0 - 15
Analisa Kasus
Conts Batas awal=0
Batas akhir=15
i=batas awal
n=batas akhir
jum=0
while (i<=n)
write(i)
i=i+1;
jum=jum+1
write(jum);
Batas awal=5
Batas akhir =15
i=Batas awal
n = Batas akhir
Jum=0
i=i+1
Jum=jum+1
write (m)
write (jum)
While
(i<=n)
Program Jumlah_Bilangan;
Uses crt;
Const
Batas_Awal = 0;
Batas_Akhir = 15;
Var
I, Jml : integer;
Begin
clrscr;
writeln('---------------------------------------------------');
writeln(' Jumlah Bilangan Bulat 0 - 15 ');
writeln('---------------------------------------------------');
I := Batas_Awal;
Jml := 0;
While I <= Batas_Akhir do
Begin
writeln(I);
Jml:=Jml + 1;
I:=I+1;
end;
writeln('Jumlah bilangan Bulat dari ',Batas_Awal,' Sampai ',Batas_Akhir,' adalah = ',Jml);
readln;
end.
Algoritma Programnya
Jawab Repeat…Until
Conts Batas awal=0
Batas akhir=15
i=batas awal
n=batas akhir
jum=0
repeat
write(i)
i=i+1;
jum=jum+1
until (i > n)
write(jum);
Batas awal=5
Batas akhir =15
i=Batas awal
n = Batas akhir
Jum=0
i=i+1
Jum=jum+1
write (m)
write (jum)
i > n

More Related Content

PPTX
PPT Sinkronus Unit Modul Pendidikan yang Memerdekakan-2.pptx
PPTX
Materi : Struktur Data (1 Pengantar)
PPTX
proposisi majemuk & Tautologi
PPTX
Algoritma & Pemrograman
DOCX
LAPORAN PRAKTIKUM FISIKA : Tetapan Pegas
PPT
Gerbang logika
PPTX
Struktur Data Informatika Kelas 9 OK.pptx
DOCX
Makalah lingkungan bisnis ( pengantar bisnis)
PPT Sinkronus Unit Modul Pendidikan yang Memerdekakan-2.pptx
Materi : Struktur Data (1 Pengantar)
proposisi majemuk & Tautologi
Algoritma & Pemrograman
LAPORAN PRAKTIKUM FISIKA : Tetapan Pegas
Gerbang logika
Struktur Data Informatika Kelas 9 OK.pptx
Makalah lingkungan bisnis ( pengantar bisnis)

What's hot (20)

DOCX
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
PPTX
PDF
Matematika Diskrit - 08 kombinatorial - 03
PPTX
Perbedaan sistem linier dan non linier
PPTX
Pertemuan 6 & 7 ars. gerbang logika
PPTX
Metode numerik pada persamaan diferensial (new)
DOCX
Distribusi Seragam, Bernoulli, dan Binomial
PPTX
Contoh soal dan penyelesaian metode biseksi
POT
Metode Numerik Trapesium
PPT
Integral Garis
PPT
Metode numerik persamaan non linier
PPTX
Algoritma pencarian lintasan jalur terpendek
PDF
Relasi rekursi (2) : Menentukan solusi relasi Rekursi Linier Homogen Berkoefi...
PPS
Barisan dan Deret ( Kalkulus 2 )
DOC
Distribusi peluang
ODP
Mata Kuliah Basis Data
PDF
Laporan Praktikum Algoritma
PPT
Bab 2 perhitungan galat
PPTX
Graf ( Matematika Diskrit)
PPTX
Bab 5 penyederhanaan fungsi boolean
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
Matematika Diskrit - 08 kombinatorial - 03
Perbedaan sistem linier dan non linier
Pertemuan 6 & 7 ars. gerbang logika
Metode numerik pada persamaan diferensial (new)
Distribusi Seragam, Bernoulli, dan Binomial
Contoh soal dan penyelesaian metode biseksi
Metode Numerik Trapesium
Integral Garis
Metode numerik persamaan non linier
Algoritma pencarian lintasan jalur terpendek
Relasi rekursi (2) : Menentukan solusi relasi Rekursi Linier Homogen Berkoefi...
Barisan dan Deret ( Kalkulus 2 )
Distribusi peluang
Mata Kuliah Basis Data
Laporan Praktikum Algoritma
Bab 2 perhitungan galat
Graf ( Matematika Diskrit)
Bab 5 penyederhanaan fungsi boolean
Ad

Viewers also liked (20)

PDF
Algoritma dan Pemrograman C++ (Pseudocode & Flowchart)
PDF
Pertemuan 1 algoritma pemrograman dan flowchart
PDF
Tugas algoritma ( flowchart )
PDF
Looping Algoritma
DOCX
Pencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
PDF
Algoritma dan flowchart
PDF
Project Studi Kasus Toko Langganan Sistem Informasi Akuntansi
PDF
Shortest Path Problem: Algoritma Dijkstra
PDF
Jurnal - Muhamad Imam - Aplikasi Pencarian Rute Terpendek Dengan Menggunakan ...
PDF
Algorithm and Programming (Branching Structure)
DOC
Silabus c1 pemrograman-dasar-klas_x_semester_2-final
PPTX
Pertemuan iv
PDF
Algoritma perulangan
PDF
Modul 6 Perulangan
PPT
Pengenalan c++ bagian 3
PPTX
MATERI PEMOGRAMAN DASAR
DOCX
Jawaban soal uts dasar program komputer
PPTX
Kelompok viii
DOCX
Soal UAS Pemrograman Dasar kelas 10 semester genap tahun ajaran 2014-2015
PPTX
Materi 6. perulangan
Algoritma dan Pemrograman C++ (Pseudocode & Flowchart)
Pertemuan 1 algoritma pemrograman dan flowchart
Tugas algoritma ( flowchart )
Looping Algoritma
Pencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
Algoritma dan flowchart
Project Studi Kasus Toko Langganan Sistem Informasi Akuntansi
Shortest Path Problem: Algoritma Dijkstra
Jurnal - Muhamad Imam - Aplikasi Pencarian Rute Terpendek Dengan Menggunakan ...
Algorithm and Programming (Branching Structure)
Silabus c1 pemrograman-dasar-klas_x_semester_2-final
Pertemuan iv
Algoritma perulangan
Modul 6 Perulangan
Pengenalan c++ bagian 3
MATERI PEMOGRAMAN DASAR
Jawaban soal uts dasar program komputer
Kelompok viii
Soal UAS Pemrograman Dasar kelas 10 semester genap tahun ajaran 2014-2015
Materi 6. perulangan
Ad

Similar to Algoritma Pemrograman (Flowchart) - Logika dan Algoritma (20)

DOC
Dasar Pemrograman materi kuliah
PPTX
Algo temu 5 statement pemilihan
PPTX
Percabangan.pptx
PDF
4 fungsi if
DOC
Percabangan - Logika dan Algoritma
PPT
Bab Iii Kondisi
PDF
Materi Pelajaran Program Pascal
PPTX
ALGORITMA DAN PEMROGRAMAN UNTUK PEMBELAJARAN
PPTX
Pertemuan 5C.pptx
PDF
Algoritma1 Temu 9.pdf
PPT
Algoritma 1 pertemuan 5
DOCX
Java (Netbeans) - Looping - Object Oriented Programming
PDF
C04 struktur percabangan_22
PDF
Pascal - Kontrol.txt - Notepad.pdf
PDF
Part 36 if then
PDF
Materi Percabangan Pemorgraman dengan Bahasa C
PDF
2. teknik pemilihan dalam_pemrograman
PPT
Pascal
PPTX
Modul 3 Visual Basic (Kondisional)
PPT
Pemrograman dasar menggunakan pascal untuk pemula
Dasar Pemrograman materi kuliah
Algo temu 5 statement pemilihan
Percabangan.pptx
4 fungsi if
Percabangan - Logika dan Algoritma
Bab Iii Kondisi
Materi Pelajaran Program Pascal
ALGORITMA DAN PEMROGRAMAN UNTUK PEMBELAJARAN
Pertemuan 5C.pptx
Algoritma1 Temu 9.pdf
Algoritma 1 pertemuan 5
Java (Netbeans) - Looping - Object Oriented Programming
C04 struktur percabangan_22
Pascal - Kontrol.txt - Notepad.pdf
Part 36 if then
Materi Percabangan Pemorgraman dengan Bahasa C
2. teknik pemilihan dalam_pemrograman
Pascal
Modul 3 Visual Basic (Kondisional)
Pemrograman dasar menggunakan pascal untuk pemula

More from Ari Septiawan (6)

DOCX
AMIK MITRA GAMA - ABSTRAK
DOCX
AMIK MITRA GAMA
PDF
Makalah Perangkat Keras Komputer
DOCX
Makalah tentang Hardisk - Akademi Manajemen Informatika dan Komputer Amik Mit...
PDF
Menyimpan Pesan Rahasia - Steganography tutorial lengkap openpuff
DOCX
Makalah Bahasa Indonesia. Penerapan teknologi pendidikan - MAN IPUH
AMIK MITRA GAMA - ABSTRAK
AMIK MITRA GAMA
Makalah Perangkat Keras Komputer
Makalah tentang Hardisk - Akademi Manajemen Informatika dan Komputer Amik Mit...
Menyimpan Pesan Rahasia - Steganography tutorial lengkap openpuff
Makalah Bahasa Indonesia. Penerapan teknologi pendidikan - MAN IPUH

Recently uploaded (20)

PPT
PCM pekerjaan pembangunan Jembatan payahe
PDF
chapter 1 Smith and Van ness thermodynamics
PPTX
SISTEM_INFORMASI_GEOGRAFIS_unlocked.pptx
PPT
552523975-Mekanika-Benda-Langit-TPOA-2013.ppt
PPTX
4. Penyusunan Rancangan Kontrak _edit 2024-Parwanta1.pptx
PPTX
Praktik_Pengembangan_Perangkat_Lunak_yang_Aman.pptx
PPTX
Penjelasan Tentang Building Information Modelling
PPTX
2013materistudiumgeneralkabsndiunsri-130318044328-phpapp01.pptx
PPTX
presentasi pekerjaan pembangunan jaringan irigasi
PPTX
Faktor Kimia K3 pada tempat kerja asdasasda
PPTX
Berpikir_Komputasional_PPT ASD KELAS 8pptx
PPTX
02 SEL ELEKTROKIMIA 1.pptx kimia fisika 1
PPTX
Materi_Konstruksi_Edukatif_Emosional_Damage.pptx
PDF
Industrial Higiene Pada tempat kerja sada
PPTX
585590334-INTAKE-AND-EXHAUST-SYSTEM-Ahmad-Aditya-S-W.pptx
PDF
Jual Echosounder Hi-Target HD Lite Brochure EN.pdf
PPTX
Seminar Proposal Dual Fuel DANY IMAN SANTOSO.pptx
PPT
08_Sistem-Penilaian-Kesesuaian_BW_1708071.ppt
PPTX
Seminar Progres Internal 1 dual fuel.pptx
PPTX
MAINTENACE KNOWLEDGE_SHARING_ALL NEW.pptx
PCM pekerjaan pembangunan Jembatan payahe
chapter 1 Smith and Van ness thermodynamics
SISTEM_INFORMASI_GEOGRAFIS_unlocked.pptx
552523975-Mekanika-Benda-Langit-TPOA-2013.ppt
4. Penyusunan Rancangan Kontrak _edit 2024-Parwanta1.pptx
Praktik_Pengembangan_Perangkat_Lunak_yang_Aman.pptx
Penjelasan Tentang Building Information Modelling
2013materistudiumgeneralkabsndiunsri-130318044328-phpapp01.pptx
presentasi pekerjaan pembangunan jaringan irigasi
Faktor Kimia K3 pada tempat kerja asdasasda
Berpikir_Komputasional_PPT ASD KELAS 8pptx
02 SEL ELEKTROKIMIA 1.pptx kimia fisika 1
Materi_Konstruksi_Edukatif_Emosional_Damage.pptx
Industrial Higiene Pada tempat kerja sada
585590334-INTAKE-AND-EXHAUST-SYSTEM-Ahmad-Aditya-S-W.pptx
Jual Echosounder Hi-Target HD Lite Brochure EN.pdf
Seminar Proposal Dual Fuel DANY IMAN SANTOSO.pptx
08_Sistem-Penilaian-Kesesuaian_BW_1708071.ppt
Seminar Progres Internal 1 dual fuel.pptx
MAINTENACE KNOWLEDGE_SHARING_ALL NEW.pptx

Algoritma Pemrograman (Flowchart) - Logika dan Algoritma

  • 1. Algoritma Pemrograman 1A (FLOWCHART) KULIAH MINGGU 5. Teknik Pengulangan dan Percabangan (Lanjutan)
  • 2. Percabangan IF-THEN Analisa Kondisi Aksi (Lanjutan) : (1) Kasus Lebih dari 1 Aksi (IF-THEN-ELSE) & CASE (2) Kasus Lebih dari 1 Kondisi
  • 3. Percabangan / Pemilihan • Struktur runtunan hanya terdapat pada program sederhana. • Pada umumnya, masalah yang akan diselesaikan memiliki beberapa alternative pelaksanaan aksi. • Suatu aksi (pernyataan) hanya dilakukan bila persyaratan atau kondisi tertentu dipenuhi. Kita katakan bahwa masalah dalam Percabangan memiliki beberapa kasus. • Jadi, dalam memecahkan masalah, kita harus menganalisis kasus-kasus apa saja yang mungkin ada, lalu aksi apa yang dilakukan bila suatu kasus dimasuki.
  • 4. Kondisi = Ekspresi Boolean (true/false) • Menganalisis kasus dari suatu masalah adalah menentukan kondisi boolean (bernilai true atau false) untuk setiap kasus dan menentukan aksi yang dilakukan jika kondisi tersebut bernilai true (terpenuhi) dan aksi yang dilakukan jika bernilai false (tidak terpenuhi). • Kondisi boolean adalah ekspresi boolean yang bernilai true atau false bergantung pada nilai masing-masing operand yang terlibat di dalamnya. • Ekspresi boolean dibentuk dengan mengkombinasikan operand yang bertipe sama dengan salah satu dari operator relasional  =, ≠, <, >, ≤, ≥, dan operator uner not.
  • 5. Contoh Ekspresi Boolean : • x > y • a ≠ 10 • m = n • p ≤ q • a + b > 1 • str = ‘itb’ • k mod 4 = 0 • ketemu = true • not berhenti • (x > 0) and (y < 0)
  • 6. Aksi = Pernyataan • Aksi dikerjakan bila kondisi boolean bernilai true (terpenuhi) • Dapat berupa pernyataan, pengisian nilai (assignment), kalkulasi, baca, tulis, dan sebagainya, bergantung pada masalahnya. • Penentuan kondisi boolean dan aksi yang dilakukan bergantung pada jumlah kasus yang terdapat pada masalah tersebut : satu kasus (IF- THEN), dua kasus (IF-THEN-ELSE), atau lebih dari dua kasus (IF Bersarang).
  • 7. Percabangan 1 Kasus (IF-THEN) • Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan struktur IF-THEN (jika-maka) : Aksi sesudah kata then (dapat berupa satu atau lebih aksi) hanya akan dilaksanakan bila kondisi bernilai benar (true). Bila kondisi bernilai salah (false), tidak ada aksi apapun yang dikerjakan.
  • 8. Contoh Percabangan 1 Kasus IF-THEN Program IF-THEN Var nilai : Integer ; Begin Write(‘ Masukkan Nilai Ujian : '); Readln(nilai); If nilai > 60 then write (‘Anda Lulus’); {Kasus 1} Readln; End. IF nilai>60 END Read (nilai) Write (‘LULUS’)
  • 9. Latihan • Buat Program Pascal yang menghitung total pembayaran dimana jika dia pelanggan akan mendapat diskon 10% dari jumlah belanjanya…. IF Pelanggan TotBayar= JumBelanja – Diskon Diskon := 10%* JumBelanja Read (JumBelanja) Diskon := 0;
  • 10. Program Toko_IFTHEN; uses crt; Var p : char; jml : longint; diskon, total : real; Begin clrscr; write ('Apakah Pelanggan (y/t) : '); readln(p); write ('Berapa jumlah pembelian : Rp. '); readln(jml); diskon := 0; if (p='y') then diskon := Jml*0.1; total := jml - diskon; writeln ('==============IndoApril=============='); writeln ('Jumlah Pembelanjaan : Rp. ',jml); writeln ('Diskon : ',diskon:0:0); writeln ('-------------------------------------'); writeln ('Total Bayar = Rp. ',total:0:0); readln; end.
  • 11. Percabangan 2 Kasus (IF-THEN-ELSE) • Notasi algoritma untuk analisis dengan dua buah kasus adalah dengan menggunakan struktur IF- THEN-ELSE (jika-maka-kalau tidak) : Aksi1 akan dilaksanakan jika kondisi bernilai benar, tetapi jika kondisi bernilai salah, maka aksi2 yang akan dilaksanakan. Perhatikanlah bahwa “else” menyatakan ingkaran (negation) dari kondisi.
  • 12. Contoh Percabangan 2 Kasus (IF-THEN-ELSE) Program IF-THEN-ELSE Var nilai : Integer ; Begin Write(‘ Masukkan Nilai Ujian : '); Readln(nilai); If nilai > 60 then write (‘Anda Lulus’); {Kasus 1} Else write (‘Anda Tidak Lulus’); {Kasus 2} Readln; End. IF nilai>60 END Read (nilai) Write (‘LULUS’) Write (‘TIDAK LULUS’)
  • 13. Program Toko_IFTHENELSE; uses crt; Var p : char; jml : longint; diskon, total : real; Begin clrscr; write ('Apakah Pelanggan (y/t) : '); readln(p); write ('Berapa jumlah pembelian : Rp. '); readln(jml); if (p='y') then diskon := Jml*0.5 else diskon:=Jml*0.1; total := jml - diskon; writeln ('=========IndoApril========='); writeln ('Jumlah Pembelanjaan : Rp. ',jml); writeln ('Diskon : ',diskon:0:0); writeln ('-------------------------------------'); writeln ('Total Bayar = Rp. ',total:0:0); readln; end. IF Pelanggan Diskon:= 10% *JumBelanja Diskon := 10%* JumBelanja TotBayar:= JumBelanja – Diskon Read (JumBelanja) Write (TotBayar)
  • 14. Latihan • Buatlah algoritma dan program yang membaca angka tahun masehi,lalu menentukan apakah tahun tersebut merupakan tahun kabisat. Secara sederhana, tahun kabisat adalah tahun yang habis dibagi dengan 4. Penyelesaian : Misalkan tahun masehi tersebut adalah Tahun. Analisis kasus : – Kasus 1 : Tahun mod 4 = 0, maka tulis Tahun adalah tahun kabisat – Kasus 2 : Tahun mod 4 ≠ 0, maka tulis Tahun bukan tahun kabisat
  • 15. Program TAHUN_KABISAT; {* menentukan apakah suatu tahun merupan tahun kabisat atau bukan kabisat *} Var {* DEKLARASI *} Tahun : integer; Begin {* DESKRIPSI *} write('TAHUN '); readln (Tahun); if (Tahun mod 4 = 0) then write(' adalah tahun kabisat') {Kasus 1} else write(' bukan tahun kabisat') ; {Kasus 2} end. IF Tahun Mod 4 =0 END Read (Tahun) Write (‘Tahun Kabisat’) Write (‘Bukan Tahun Kabisat’)
  • 16. Kondisi – Aksi Lebih 2 Kasus (IF-THEN-ELSE Majemuk) • Masalah yang mempunyai lebih dari 2 kasus tetap dapat dianalisis dengan struktur IF-THEN-ELSE sebagaimana halnya pada masalah dua kasus. Tiga Kasus : Empat Kasus :
  • 17. Contoh Percabangan 3 Kasus IF-THEN-ELSE Program Maks1 {menentukan bilangan terbesar dari 3 buah bilangan bulat positif} Var a, b, c , maks : Integer ; Begin Write(' Entry bil 1 : ');Readln(a); Write(' Entry bil 2 : ');Readln(b); Write(' Entry bil 3 : ');Readln(c); {Menentukan bilangan terbesar } If (a>b) then maks :=a { Kasus 1} else maks:=b; { Kasus 2} If (c>maks) then maks:=c; { Kasus 3} { Cetak bilangan terbesar } Writeln(' Bil terbesar = ',maks); Readln; End.
  • 18. Contoh Percabangan 4 Kasus IF-THEN-ELSE Program Maks2; {menentukan bilangan terbesar dari 3 buah bilangan bulat positif} Var a, b, c , maks : Integer ; Begin Write(' Entry bil 1 : ');Readln(a); Write(' Entry bil 2 : ');Readln(b); Write(' Entry bil 3 : ');Readln(c); {Menentukan bilang[9an terbesar } If (a>b) {Kondisi1} then if (a>c) {KOndisi2} then maks  a { Kasus 1} else maks  c { Kasus 2} else if (b>c) {kondisi3}then maks  b { Kasus 3} else maks  c; { Kasus 4} { Cetak bilangan terbesar } Writeln(' Bil terbesar = ', maks); Readln; End.
  • 19. Analisis Kasus Kondisi 1 Kondisi2 Kondisi3 (a>b) (a>c) (b>c) • Kasus1 y (a>b) and y (a>c) – Maks:=a; • Kasus2 y (a>b) and t (c>a)  c>a>b – Maks:=c; • Kasus3 t (b>a) and y (b>c) – Maks:=b; • Kasus4 t (b>a) and t (c>b) – Maks:=c;
  • 20. Contoh Percabangan Lebih dari 1 Kondisi Menggunakan Relational Operator OR dan AND Program Maks3 {menentukan bilangan terbesar dari 3 buah bilangan bulat positif} Var a, b, c , maks : Integer ; Begin Write(' Entry bil 1 : ');Readln(a); Write(' Entry bil 2 : ');Readln(b); Write(' Entry bil 3 : ');Readln(c); If (a>b) And (a>c) Then max:=a; {Kasus 1} If (b>a) And (b>c) Then max:=b; {Kasus 2} If (c>a) And (c>b) Then max:=c; {Kasus 3} { Cetak bilangan terbesar } Writeln(' Bil terbesar = ',maks); Readln; End. Program Maks2 {menentukan bilangan terbesar } Var a, b, c , maks : Integer ; Begin Write(' Entry bil 1 : ');Readln(a); Write(' Entry bil 2 : ');Readln(b); Write(' Entry bil 3 : ');Readln(c); If (a>b) then if (a>c) then maks  a { Kasus 1} else maks  c { Kasus 2} else if (b>c) then maks  b { Kasus 3} else maks  c; { Kasus 4} { Cetak bilangan terbesar } Writeln(' Bil terbesar = ', maks); Readln; End.
  • 21. Program HurufVokal; Var c : char; Begin write (‘Masukkan sebuah huruf :’); readln (c); if (c=‘a’) or (c=‘i’) or (c=‘u’) or (c=‘e’) or (c=‘o’) then write (‘Huruf itu adalah huruf hidup’); End.
  • 22. Latihan • Buatlah algoritma dan program pascal yang membaca temperatur air, T, (dalam suatu derajat celcius) pada tekanan normal, lalu menentukan apakah wujud air tersebut dalam keadaan padat (T ≤ 0°C), cair (0 < T< 100), atau gas (T > 100). Penyelesaian : Misalkan suhu air adalah T. Analisis kasus : – Kasus 1 : T ≤ 0, maka tulis “padat” – Kasus 2 : 0 < T < 100, maka tulis “cair” – Kasus 3 : T ≥ 100, maka tulis “uap”
  • 23. Program WUJUD_AIR; { menentukan wujud air : padat, cair, atau gas, bergantung pada suhunya } Var {* DEKLARASI *} T : real; { suhu air, dalam derajat celcius } Begin (*DESKRIPSI*} write('suhu ');read(T); write('adalah '); If T <= 0 then write('padat') { kasus 1 } else if ( T > 0) and ( T < 100 ) then write('cair') { kasus 2 } else if T >= 100 then write('gas atau uap'); { kasus 3 } end. end. end. End.
  • 24. Kondisi – Aksi Kasus CASE • Instruksi case digunakan sebagai instruksi pemilihan di mana aksi yang akan dilakukan hanya bergantung pada nilai dari satu macam variabel. Dengan kata lain, variabel memiliki banyak macam nilai dan setiap nilainya berkaitan dengan satu macam aksi • Dimungkinkan ada n buah aksi Notasi Penulisan Case : Case ( variabel) nilai-1 : Aksi_1; nilai-2 : Aksi_2; nilai-3 : Aksi_3; ………. default : aksi_n; Endcase
  • 25. • Buat program yang membaca angka bulan lalu menuliskan/menampilkan nama bulan tersebut. Contoh Percabangan Kondisi - Lebih dari 1 Aksi (Kasus CASE)
  • 26. Program JUMLAH_HARI; { menentukan nama bulan berdasarkan nomor bulan yang di inputkan } Var {* DEKLARASI *} AngkaBulan : integer; { 1 . . 12 } NamaBulan : string; Begin {* DESKRIPSI *} write('Bulan (1-12) = '); readln(AngkaBulan); case AngkaBulan of 1 : NamaBulan:=‘Januari’; 2 : NamaBulan:=‘Febuari’; 3 : NamaBulan:=‘Maret’; 4 : NamaBulan:=‘April’; 5 : NamaBulan:=‘Mei’; 6 : NamaBulan:=‘Juni’; 7 : NamaBulan:=‘Juli’; 8 : NamaBulan:=‘Agustus’; 9 : NamaBulan:=‘September’; 10 : NamaBulan:=‘Oktober’; 11 : NamaBulan:=‘November’; 12 : NamaBulan:=‘Desember’; end; writeln(‘Nama Bulan ke- ',AngkaBulan,' adalah ‘,Namabulan); end.
  • 27. Latihan 1 Kasus Percabangan • Taxi “Azmar-Azmir” mempunyai tarif: – Km pertama : Rp. 2500 – Km selanjutnya : Rp. 1800 Jarak minimal adalah 1 km. • Jika seseorang menempuh jarak perjalanan kurang dari 1 km, ia tetap harus membayar Rp.2500 • Untuk menghitung berapa tarif yang harus dibayar dengan inputan Jarak yang ditempuh buatlah: – Analisa Kasus Penyelesaiannya / Psedocodenya – Flowchartnya – Programnya Algoritma/Dalam Bahasa Pascal
  • 28. Analisa Kasus Input (JarakTempuh); Jmin:=1; Js:=JarakTempuh-Jmin; Analisis kasus : – Kasus 1 : If JarakTempuh <= Jmin then • Tarif : = 2500; – Kasus 2 : else • Tarif := 2500 + (Js*1800; Output(Tarif);
  • 29. Flowchartnya IF (JarakTem puh <= Jmin Tarif:=2500 + (Js*1800) Tarif:= 2500 Read (Jarak Tempuh) Write (Tarif) Jmin:=1 Js:= JarakTempuh - Jmin
  • 30. Program TotTarif; uses crt; Var JarakTempuh, J1, J2 : real; Tarif : real; Begin clrscr; write('Jarak Tempuh anda = '); readln(JarakTempuh); clrscr; writeln('Jarak Tempuh anda = ',JarakTempuh:2:2,' KM'); Jmin := 1; Js := JarakTempuh - Jmin; if (JarakTempuh <= Jmin) then {Kasus 1} Tarif := 2500 else Tarif := 2500 + (Js*1800); {Kasus 2} writeln('Tarif yang harus dibayar adalah =',Tarif:2:2); readln; end. Programnya
  • 31. Latihan 2 Kasus Percabangan • Untukmenghitung gaji total karyawan dimana gaji karyawan pada sebuah perusahaan didasarkan pada jam kerja dalam satu bulan serta posisi atau golongannya dalam perusahaan tersebut. Upah per jam berdasarkan golongan adalah sebagai berikut: • Bila karyawan sudah bekerja lebih dari 150 jam per minggu maka kelebihan jam kerja tersebut dihitung sebagai lembur dengan upah/jam 25% di atas upah reguler. Buatlah : – Analisa Kasus Penyelesaiannya / Psedocodenya – Flowchartnya – Programnya Algoritma/Dalam Bahasa Pascal Golongan Upah/jam (Rp) A 5000 B 6000 C 7500 D 9000
  • 32. Input (JamKerja, Golongan); Analisis kasus : – Kasus 1 : JamKerja > 150, maka • JK – 150  JamLembur • UpahLembur = JamLembur * (100%+25%) * Upah • Gaji = 150 * Upah – Kasus 2 : JamKerja ≤ 150, maka • JamLembur = 0 sehingga UpahLembur = 0 • Gaji = JamKerja * Upah GajiTotal := Gaji + UpahLembur; Output(GajiTotal); Analisa Kasus
  • 33. Flowchartnya Read (JamKerja, Golongan) IF (JamKerja >150) JamLembur:=150-Jamkerja UpahLembur:=JamLembur*1,25*Upah Gaji:=150*Upah Write (TotGaji) Case (Golongan): ‘A’ : Upah:= 5000; ‘B’ : Upah:= 6000; ‘C’ : Upah:= 7500; ‘D’ : Upah := 9000; JamLembur:=0 UpahLembur:=0 Gaji:=JamKerja*Upah TotGaji:=Gaji + UpahLembur
  • 34. Program HitungLembur; { Algoritma yg menerima nama, golongan serta jam kerja kemudian menghitung Upah Lembur dan menampilkan total gaji yang diterima karyawan} Var {* DEKLARASI *} Nama : String; Golongan : char; JK, JamLembur, UpahLembur, Gaji, Upah, TotGaji : real; Begin {* DESKRIPSI *} write('Masukkan Nama Anda : '); readln(Nama); write('Golongan (A/B/C/D) : '); readln(Golongan); case Golongan of 'A' : Upah := 5000; 'B' : Upah := 6000; 'C' : Upah := 7500; 'D' : Upah := 9000; end; writeln('Upah anda = ',Upah:0:0); write('Masukkan Jam Kerja Per Minggu Anda : '); readln(JK); if (JK > 150) then JamLembur := JK - 150; UpahLembur := JamLembur * Upah * 1.25; Gaji := 150 * Upah; If (JK <= 150) then UpahLembur := 0; Gaji := JK * Upah; TotGaji := Gaji + UpahLembur; writeln('Total Gaji yang anda peroleh adalah : ',TotGaji:0:0); end.
  • 35. Perulangan (LOOPING) Menyelesaikan : (1) Kasus menggunakan perulangan (Lanjutan) (2) Kasus menggunakan pembatasan Perulangan dalam flowchart
  • 36. Perulangan (LOOPING) • Dalam bahasa pascal ada 3 macam cara untuk perulangan atau yang lebih dikenal dengan Looping. • Konsep perulangan adalah agar para pengguna (User) yang menggunakan program yang kita buat bisa menggunakan beberapa baris atau beberapa kalimat secara berulang. Contohnya, jika kita akan memasukan nilai 10 siswa maka kita harus menggulang proses tampilan untuk mengisi nilai sebanyak 10 kali.
  • 37. Struktur Perulangan Struktur pengulangan secara umum terdiri 2 bagian : 1. Kondisi pengulangan, yaitu ekspresi Boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini ada yang dinyatakan secara eksplisit oleh pemrogram atau dikelola sendiri oleh komputer (implisit); 2. Badan (body) pengulangan, yaitu bagian algoritma yang diulang.
  • 38. Disamping itu, struktur pengulangan biasanya disertai bagian: • Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali. Inisialisasi dan terminasi tidak selalu harus ada, namun pada berbagai kasus inisialisasi umumnya diperlukan. • Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan • Struktur pengulangan secara umum : Dalam hal ini awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang digunakan. Selain itu, <inisialisasi> dan <terminasi> adalah bagian yang opsional.
  • 39. Notasi Struktur Pengulangan • Struktur FOR • Struktur WHILE • Struktur REPEAT Note: • Pemilihan struktur pengulangan untuk masalah tertentu dapat mempengaruhi kebenaran algoritma. • Pemilihan struktur pengulangan yang tepat bergantung pada masalah yang akan deprogram.
  • 40. Struktur FOR • Struktur pengulangan FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang dispesifikasikan. • Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi. • Untuk mencacah sudah berapa kali pengulangan dilakukan, kita memerlukan sebuah peubah (variable) pencacah (counter). – Peubah ini nilainya selalu bertambah satu setiap kali pengulangan dilakukan. • Jika cacah pengulangan sudah mencapai jumlah yang dispesifikasikan, maka proses pengulangan berhenti
  • 41. Bentuk umum struktur FOR • Keterangan : • Pencacah haruslah dari tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter. Tipe riil tidak dapat digunakan sebagai pencacah. • Aksi adalah satu atau lebih instruksi yang diulang. • Nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki. • Pada awalnya,pencacah diinisialisasi dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir. • Jumlah pengulangan yang tejadi adalah nilai_akhir - nilai_awal + 1.
  • 42. Contoh For…to...do Buat program mencetak angka 1, 2, .., N, yang dalam hal ini nilai N dibaca terlebih dahulu dari piranti masukan. Analisa Kasus : Misal N = Berapa jumlah angka yang ingin kita cetak Input(N) Misal i = Bilangan yg akan dicetakkan for i:=1 to N do Write(i)
  • 43. Algoritma Programnya Program CETAK_N_ANGKA; { mencetak 1, 2, …, N ke piranti keluaran } Var { * DEKLARASI *} N : integer; k : integer; Begin {* DESKRIPSI *} write(‘Jumlah Angka yang akan dicetak = '); read(N); for k:=1 to N do { ulangi sebanyak N kali } writeln(k); end. k = N ? Read (N) write (k) END k=1
  • 44. Contoh For…downto…do Buat Program peluncuran roket dengan hitung mundur, mulai dari 10, 9, 8,7,6 …,0 Analisa Kasus : Misalkan k itu adalah bilangan for (k:=10) downto 0 do Write (k)
  • 45. Algoritma Programnya Program Peluncuran_Roket; { hitung mundur peluncuran roket } Var { * DEKLARASI *} k : integer; Begin {* DESKRIPSI *} for k:=10 downto 0 do writeln(k) ; write (GO!!!!!!!!); {Roket Meluncur} end.
  • 46. Struktur WHILE • Bentuk Umum : • Aksi (atau runtunan aksi) akan dilaksanakanberulangkali selama kondisi benilai true. Jika kondisi bernilai false, badan pengulangan tidak akan dilaksanakan, yang berarti pengulangan selesai. • Yang harus diperhatikan adalah pengulangan harus berhenti. • Pengulangan yang tidak pernah berhenti menandakan bahwa logika algoritma tersebut salah. Pengulangan berhenti apabila kondisi bernilai false. • Agar kondisi suatu saat bernilai false, maka di dalam badan pengulangan harus ada instruksi yang mengubah nilai peubah kondisi.
  • 47. Contoh While…Do • Buat program untuk memasukkan sejumlah bilangan bulat positif. Banyaknya bilangan yang dimasukkan tidak diketahui sebelumnya (bebas/sembarang), tetapi program akan berhenti bila bilangan yang dimasukkan bernilai -99. Maka bilangan -99 akan diinterpretasikan sebagai tanda berhenti proses pengisian data. Kita diminta menghitung jumlah seluruh nilai yang dimauskkan (-99 tidak termasuk data yang dijumlahkan). Analisa Kasus: • Misalkan dibaca berturut-turut data: 10, 4, 5, 8, -99, maka jumlah seluruh nilai adalah 10 + 4 + 5 + 8 = 27 • While (k <> -99) Input(k); jum := Jum + k; Write (jum);
  • 48. Program JUMLAH_DATA; { menghitung jumlah seluruh nilai bilangan bulat positif yang dibaca dari piranti masukan. akhir pembacaan data: -99 } Var {* DEKLARASI *} x, jumlah : integer; Begin {* DESKRIPSI *} jumlah:=0; write('Ketikkan sembarang bilangan bulat ( -99 mengakhiri )'); readln(x); while (x <> -99) do begin jumlah:=jumlah + x; write('Ketikkan sembarang bilangan bulat ( -99 mengakhiri )'); readln(x); end; writeln('Jumlah seluruh nilai = ',jumlah); end. Algoritma Programnya
  • 49. Struktur REPEAT • Bentuk Umum : • Notasi ini mendasarkan pengulangan pada kondisi boolean. • Aksi di dalam badan kalang diulang sampai kondisi boolean bernilai true. Dengan kata lain, jika kondisi boolean masih false, pengulangan masih terus dilakukan. Karena proses pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus ada aksi yang mengubah nilai peubah kondisi. • Struktur REPEAT memiliki makna yang sama dengan WHILE, dan dalam beberapa masalah kedua struktur tersebut komplemen satu sama lain.
  • 50. Contoh Repeat…Until • Algoritma dan program untuk menghitung jumlah angka dari 1 sampai N. Nilai N dibaca dari papan kunci. Misalnya N = 5, maka 1 +2 + 3 + 4 + 5 = 15. Analisa Kasus : Misalkan : N = {banyaknya suku deretnya} jumlah = { inisialisasi jumlah deret } k = {suku deretnya} Input(N) jumlah :=0; k :=1; repeat jumlah:=jumlah + k; k:=k+1; until (Bil>N) • Output Hasilnya :
  • 51. Algoritma Programnya Program PENJUMLAHAN_DERET; { menjumlahkan deret 1 + 2 + 3 + ... + N dengan N adalah bilangan bulat positif yang dibaca dari piranti masukan. jumlah deret dicetek ke piranti keluaran. } Var {* DEKLARASI *} N, k, jumlah : integer; Begin {* DESKRIPSI *} write('N = ');readln(N); {banyaknya suku deret} jumlah:=0; { inisialisasi jumlah deret } k:=1; { suku deret } repeat jumlah:=jumlah + k; {jumlah deret sekarang} {Badan Perulangan} k:=k+1; {suku deret berikutnya} until k > N; {Kondisi Berhenti} writeln('jumlah deret = ', jumlah); end.
  • 52. Latihan 1 Kasus Perulangan • Buatlah program untuk menampilkan deretan angka dengan menerima masukkan angka awal, kelipatan berapa dan berapa banyak angka yang akan ditampilkan. • Hasil Output :
  • 53. Analisa Kasus • Buatlah program untuk menampilkan deretan angka dengan menerima masukkan angka awal, kelipatan berapa dan berapa banyak angka yang akan ditampilkan. Analisa kasus : • Input(nilai awal,kelipatan,banyak angka) • m=nilai awal, k=kelipatan, n=banyak angka • For i=1 to n do write(m) m=m+k Input(nilai awal -> m), kelipatan -> k), banyaknya angka -> n) i = n ? m=m+k Write (m) END
  • 54. Program Deret_Angka; uses crt; Var k, m, n, i : byte; Begin clrscr; writeln('Input Nilai Awal : '); readln(k); writeln('Input Kelipatan : '); readln(m); writeln('Input Banyak Angka : '); readln(n); clrscr; for i:=1 to n do Begin write(k:4); k:=k+m; end; readln; end. Algoritma Programnya
  • 55. Latihan 2 Kasus Perulangan • Buatlah program untuk menampilkan jumlah bilangan bulat 0 - 15
  • 56. Analisa Kasus Conts Batas awal=0 Batas akhir=15 i=batas awal n=batas akhir jum=0 while (i<=n) write(i) i=i+1; jum=jum+1 write(jum); Batas awal=5 Batas akhir =15 i=Batas awal n = Batas akhir Jum=0 i=i+1 Jum=jum+1 write (m) write (jum) While (i<=n)
  • 57. Program Jumlah_Bilangan; Uses crt; Const Batas_Awal = 0; Batas_Akhir = 15; Var I, Jml : integer; Begin clrscr; writeln('---------------------------------------------------'); writeln(' Jumlah Bilangan Bulat 0 - 15 '); writeln('---------------------------------------------------'); I := Batas_Awal; Jml := 0; While I <= Batas_Akhir do Begin writeln(I); Jml:=Jml + 1; I:=I+1; end; writeln('Jumlah bilangan Bulat dari ',Batas_Awal,' Sampai ',Batas_Akhir,' adalah = ',Jml); readln; end. Algoritma Programnya
  • 58. Jawab Repeat…Until Conts Batas awal=0 Batas akhir=15 i=batas awal n=batas akhir jum=0 repeat write(i) i=i+1; jum=jum+1 until (i > n) write(jum); Batas awal=5 Batas akhir =15 i=Batas awal n = Batas akhir Jum=0 i=i+1 Jum=jum+1 write (m) write (jum) i > n