4 0 490 KB
Pengulangan/Looping (dalam Bahasa Pascal + Flowchart) Tim Penyusun Materi PTI-B
KU1072/Pengenalan Teknologi Informasi B Tahap Tahun Pertama Bersama Institut Teknologi Bandung
Tujuan • Mahasiswa memahami jenis-jenis pengulangan dan penggunaannya serta memahami elemen-elemen dalam pengulangan. • Mahasiswa dapat menggunakan notasi pengulangan yang sesuai dengan benar • Mahasiswa dapat memanfaatkan jenisjenis pengulangan dengan tepat dalam menyelesaikan persoalan sederhana yang diberikan.
9/16/15
WD/PTI-B
2
Mengupas Kentang Revisited • Asumsi: jumlah kentang tersedia tidak terbatas • Pada suatu hari Ibu hanya mengupas kentang hanya 4 buah karena hanya anggota keluarga saja yang makan malam • Pada hari yang lain, Ibu mengundang mahasiswa PTI-B sejumlah 400 orang untuk makan malam di rumahnya sehingga ibu mengupas 400 kentang untuk semua orang • Hari yang lain, ibu tidak tahu berapa jumlah orang yang akan makan malam – Setiap selesai mengupas 1 kentang, dicek apakah jumlah cukup atau tidak 9/16/15
KU1072/Pengenalan Teknologi Informasi B
3
Kupas 1 kentang
Jumlah kentang cukup? Jumlah kentang = 4? Jumlah kentang = 400? Jumlah kentang = jumlah orang yang hadir? Jumlah kentang terkupas cukup
9/16/15
KU1072/Pengenalan Teknologi Informasi B
4
Menulis 1 dan 2 • Tuliskan program yang menuliskan angka 1 dan 2 dan selanjutnya 1+2 ke layar • Contoh keluaran: 1 2 3
... { ALGORITMA } begin writeln (1); writeln (2); writeln (1+2);
end.
9/16/15
KU1072/Pengenalan Teknologi Informasi B
5
Menulis 1 s.d. 3 • Tuliskan program yang menuliskan angka 1 s.d. 3 dan selanjutnya 1+2+3 ke layar • Contoh keluaran: 1 2 3 6
... { ALGORITMA } begin writeln (1); writeln (2); writeln (3); writeln (1+2+3);
end.
9/16/15
KU1072/Pengenalan Teknologi Informasi B
6
Menulis 1 s.d. 10 • Tuliskan program yang menuliskan angka 1 s.d. 10 dan selanjutnya 1+2+3+…+10 ke layar ... { ALGORITMA } • Contoh keluaran: 1 begin 2 3 4 5 6 7 8 9 10 55 9/16/15
writeln (1); writeln (2); writeln (3); writeln (4); … { lanjutkan sendiri!! } writeln (10); writeln (1+2+3+4+5+6+7+8+9+10);
end. KU1072/Pengenalan Teknologi Informasi B
7
Menulis 1 s.d. 100 • Tuliskan program yang menuliskan angka 1 s.d. 100 dan selanjutnya 1+2+3+… +100 ke layar ... { ALGORITMA } • Contoh keluaran: 1 begin 2 3 4 5 6 7 8 9 10
9/16/15
writeln (1); writeln (2); writeln (3); writeln (4); … { lanjutkan sendiri!! } writeln (100); writeln (1+2+3+4+5+ … +100); { lanjutkan sendiri!! }
end. KU1072/Pengenalan Teknologi Informasi B
8
Bagaimana kalau… Anda diminta menulis dan menjumlahkan… 1 s.d. 1000 ??? 1 s.d. 10000 ??? 1 s.d. 1000000 ??? ….
9/16/15
KU1072/Pengenalan Teknologi Informasi B
9
Pengulangan: Latar Belakang • Melakukan suatu instruksi, bahkan aksi, secara berulang-ulang – Komputer: memiliki performansi yang sama – Manusia: punya kecenderungan untuk melakukan kesalahan (karena letih atau bosan) 9/16/15
WD/PTI-B
10
Pengulangan / Looping • Elemen: – Kondisi pengulangan: ekspresi lojik – Badan pengulangan: aksi yang diulang
• Jenis-jenis notasi pengulangan: 1. Berdasarkan kondisi mengulang di awal: while 2. Berdasarkan kondisi berhenti di akhir : repeat-until 3. Berdasarkan pencacah : for
9/16/15
WD/PTI-B
11
Studi Kasus • Tuliskan program yang menerima masukan sebuah integer misalnya N dan menuliskan angka 1, 2, 3, … N dan N = 10 menuliskan 1+2+3+…+N ke layar. Tampilan di layar: • Asumsikan N > 0. 1 N=5 N=1 • Contoh: Tampilan di layar:Tampilan di layar: 2 3 1 1
9/16/15
1 2 3 4 5 15
KU1072/Pengenalan Teknologi Informasi B
4 5 6 7 8 9 10 55
12
1. Pengulangan Berdasarkan Kondisi Berhenti (repeat-until)
Pascal
Inisialisasi-Aksi
Inisialisasi-Aksi First-Element
First-Element repeat-until
repeat Aksi Next-Element
false
Next-Element
kondisiberhenti
until (kondisiberhenti);
true
Terminasi 9/16/15
Aksi
Terminasi WD/PTI-B
13
repeat-until • Aksi minimal akan dilakukan satu kali karena pada waktu eksekusi pengulangan yang pertama tidak dilakukan test terhadap kondisi-berhenti • Aksi akan dihentikan jika kondisi-berhenti tercapai (berharga true), akan diulang jika kondisi-berhenti tidak dipenuhi • Pengulangan berpotensi mengalami “kebocoran”, jika ada kemungkinan bahwa seharusnya Aksi tidak pernah boleh dilakukan untuk kasus tertentu 9/16/15
KU1072/Pengenalan Teknologi Informasi B
14
Mulai input(N); sum := 0
Studi Kasus: Repeat-Until (Flowchart)
i := 1
Program JumlahAngka { Menghitung 1+2+3+...+N; Asumsi: N > 0 } KAMUS N : integer i, sum : integer ALGORITMA { Lihat flowchart di samping }
9/16/15
repeatoutput(i) until sum := sum + i
Inisialisas i First-Elmt
Aksi Next-elmt
i := i + 1 false
i>N true
KondisiBerhenti Terminasi
output(sum) KU1072/Pengenalan Teknologi Informasi B
Seles ai
15
Studi Kasus: repeat-until (Pascal) Program JumlahAngka; { Menghitung 1+2+3+...+N; Asumsi N > 0 } { KAMUS } var N : integer; i, sum : integer; { ALGORITMA } begin readln (N); { Inisialisasi-aksi } sum := 0; { Inisialisasi-aksi } i := 1; { First-element } repeat writeln (i); { Aksi } sum := sum + i; { Aksi } i := i + 1; { Next-Element } until (i > N); { Kondisi Berhenti } writeln (sum); { Terminasi } KU1072/Pengenalan Teknologi 9/16/15 end. Informasi B
16
2. Pengulangan Berdasarkan Kondisi Pengulangan (while-do) Pascal
Inisialisasi-aksi
Inisialisasi-aksi First-Element
First-Element while-do
while (kondisi-mengulang) do begin
kondisimengulang false
Aksi Next-Element
Aksi
end; { Kondisi-pengulangan=false } 9/16/15 Terminasi
true
WD/PTI-B
Next-Element Terminasi 17
while-do • Aksi akan dilakukan selama kondisimengulang masih dipenuhi (berharga true) • Pengulangan ini berpotensi untuk menimbulkan Aksi “kosong” (tidak pernah melakukan apa-apa) karena pada test yang pertama, kondisi-mengulang tidak dipenuhi (berharga false) sehingga langsung ke luar loop
9/16/15
KU1072/Pengenalan Teknologi Informasi B
18
Mulai
Studi Kasus: While-Do (Flowchart) Program JumlahAngka { Menghitung 1+2+3+... +N; Asumsi: N > 0 } KAMUS N : integer i, sum : integer ALGORITMA { Lihat flowchart di samping }
9/16/15
input(N); sum := 0 i := 1
Inisialisas i First-Elmt Kondisimengulang
while-do false
i 0 } { KAMUS } var N : integer; i, sum : integer; { ALGORITMA } begin readln (N); { Inisialisasi-aksi } sum := 0; { Inisialisasi-aksi } i := 1; { First-element } while (i N } { Kondisi Berhenti } writeln (sum); { Terminasi } end. 9/16/15
KU1072/Pengenalan Teknologi Informasi B
20
3. Pengulangan Berdasarkan Pencacah (for)
Pascal
Inisialisasi-aksi
Inisialisasi-aksi for pencacah := hmin to hmaks do begin Aksi { pencacah:=pencacah+1, otomatis oleh compiler } end;
for
pencacah:=hmi n pencacah = hmin true Aksi
end; pencacah := pencacah - 1
Terminasi
Terminasi 9/16/15
WD/PTI-B
23
Mulai input(N) sum := 0
Studi Kasus: For (Flowchart)for Program JumlahAngka { Menghitung 1+2+3+...+N; Asumsi: N > 0 } KAMUS N : integer i, sum : integer
i := 1 false
i >= N true output(i) sum := sum + i
ALGORITMA { Lihat flowchart di samping }
Aksi
i := i + 1 output(sum)
9/16/15
Inisalis asi
KU1072/Pengenalan Teknologi Informasi B
Seles ai
Termina si
24
Studi Kasus: for (Pascal) Program JumlahAngka; pencacah: i { Menghitung 1+2+3+...+N; N > 0 } Inisialisasi -pencacah: i { KAMUS } =1 var kondisi pengulangan: i N, i, sum : integer; =5 } while (false) do begin writeln (‘Hello’); end; { false } while (true) do begin writeln (‘Hello’); end; { false } 9/16/15
KU1072/Pengenalan Teknologi Informasi B
4 kali
0 – tidak ada Hello yang tertulis Tidak terhingga 28
Soal-2 • Buatlah program yang menerima masukan 10 buah bilangan integer (dari keyboard) dan menuliskan ke layar jumlah total ke-10 integer tersebut. Masukan Tampilan di Layar • Contoh: 2 18
9/16/15
1 0 -9 7 13 2 2 1 -1
KU1072/Pengenalan Teknologi Informasi B
29
Mulai
Alt. Solusi Soal-2: Menggunakan for (Flowchart) Program Jumlah10Angka { Menerima masukan 10 buah integer dan menjumlahkan totalnya }
sum := 0 For false
KAMUS X : integer i, sum : integer ALGORITMA { Lihat flowchart di samping }
i := 1 i >= 10 true input(X) sum := sum + X i := i + 1 output(sum)
9/16/15
KU1072/Pengenalan Teknologi Informasi B
Seles ai
30
Alt. Solusi Soal-2: Menggunakan For (Pascal) Program Jumlah10Angka; { Menerima masukan 10 buah integer dan menjumlahkan totalnya } { KAMUS } var X : integer; i, sum : integer; { ALGORITMA } begin sum := 0; { Inisialisasi-aksi } for i := 1 to 10 do begin readln(X); { Aksi } sum := sum + X; { Aksi } end; writeln (sum); end. 9/16/15
{ Terminasi } KU1072/Pengenalan Teknologi Informasi B
31
Mulai
Alt. Solusi Soal-2: Menggunakan repeatuntil (Flowchart)
sum := 0 i := 1 repeatuntil
Program Jumlah10Angka { Menerima masukan 10 buah integer dan menjumlahkan totalnya } KAMUS X : integer i, sum : integer
input(X) sum := sum + X i := i + 1
false
ALGORITMA { Lihat flowchart di samping }
i> 10 true output(sum)
9/16/15
KU1072/Pengenalan Teknologi Informasi B
Seles ai
32
Alt. Solusi Soal 2: Menggunakan repeat-until (Pascal) Program Jumlah10Angka; { Menerima masukan 10 buah integer dan menjumlahkan totalnya } { KAMUS } var X : integer; i, sum : integer; { ALGORITMA } begin sum := 0; { Inisialisasi-aksi } i := 1; repeat readln(N); sum := sum + i := i + 1; until (i > 10); writeln (sum); end. 9/16/15
{ First-Element } { Aksi } X; { Aksi } { Next-Element } { Kondisi-Berhenti } { KU1072/Pengenalan Terminasi } Teknologi Informasi B
33
Soal-3 (1) • Buatlah program yang membaca ada berapa banyak mahasiswa di kelas, misalnya N (Asumsi: N > 0, tidak perlu diperiksa) • Selanjutnya, bacalah N buah bilangan integer yang merepresentasikan nilai tugas KU1072 (Asumsi: nilai tugas adalah 0-100, tidak perlu diperiksa) • Tuliskan ke layar berapa nilai rata-rata kelas. 9/16/15
KU1072/Pengenalan Teknologi Informasi B
34
Soal-3 (2) • Contoh input/output
9/16/15
No Input
Output
1
Jumlah mhs = 5 Rata-rata = Nilai tugas = 48.00 100 20 10 35 75
2
Jumlah mhs = 4 Rata-rata = Nilai tugas = 42.25 90 45 34 0
KU1072/Pengenalan Teknologi Informasi B
35
Mulai
Alt. Solusi Soal-3: Menggunakan for (Flowchart)
input(N) sum := 0 For false
Program RataRataNilaiTugas { Menerima N nilai tugas KU1072 dan menghitung rataratanya } KAMUS N, X : integer i, sum : integer rata : real
i >= N true input(X) sum := sum + X i := i + 1
ALGORITMA { Lihat flowchart di samping }
9/16/15
i := 1
KU1072/Pengenalan Teknologi Informasi B
rata := sum/N output(rata) Seles ai
36
Alt. Solusi Soal-3: Menggunakan For (Pascal) Program RataRataNilaiTugas; { Menerima N nilai tugas KU1072 dan menghitung rataratanya } { KAMUS } var N, X : integer; i, sum : integer; rata : real; { ALGORITMA } begin writeln(‘Jumlah mhs = ’); readln(N); { Inisialisasi } sum := 0; { Inisialisasi } Menuliskan 2 writenln (‘Nilai tugas =’); angka di for i := 1 to N do belakang begin readln(X); { Aksi } sum := sum + X; { Aksi } end; rata := sum/N; { KU1072/Pengenalan Terminasi } Teknologi 9/16/15 writeln (‘Rata-rata = ’,Informasi rata:0:2); { Terminasi } B end.
37
Soal-4 (1) • Buatlah program yang membaca sejumlah bilangan integer dari keyboard sampai pengguna memasukkan angka -999 (angka -999 tidak termasuk bilangan yang diolah). • Tuliskan berapa banyak bilangan yang dimasukkan, nilai total, dan rata-rata semua bilangan • Jika dari masukan pertama sudah menuliskan -999, maka tuliskan pesan “Tidak ada data yang diolah” • Petunjuk: Gunakan pengulangan while-do 9/16/15
KU1072/Pengenalan Teknologi Informasi B
38
Soal-4 (2) • Contoh input/output No Input 1 -1 12 -6 10 2 -999 2 -999
9/16/15
Output Banyak bilangan = 5 Jumlah total = 17 Rata-rata = 3.40
Tidak ada data yang diolah KU1072/Pengenalan Teknologi Informasi B
39
Mulai
Alt. Solusi Soal-4 Sketsa Flowchart Program RataBilangan { Menerima masukan sejumlah bilangan integer sampai pengguna memasukkan -999 dan menampilkan banyak bilangan, total, dan rata-ratanya }
sum := 0; count := 0 input(X)
inisi alisa si FirstElmt
while-do
KAMUS X, count, sum : integer rata : real ALGORITMA { Lihat flowchart di samping }
Terminasi
Seles ai 9/16/15
KU1072/Pengenalan Teknologi Informasi B
40
Mulai sum := 0; count := 0
Alt. Solusi SoalFlowchart Detil
input(X) false
X -999 true sum := sum + X count := count + 1 count > 0 false
Terminasi 9/16/15
while-do Aksi
true
rata := sum/count output(count, sum, rata) output(‘Tidak ada data yang diolah’)
KU1072/Pengenalan Teknologi Informasi B
Seles ai
41
Program RataBilangan; { Menerima masukan sejumlah bilangan integer sampai pengguna memasukkan -999 dan menampilkan banyak bilangan, total, dan rata-ratanya } { KAMUS } var X, count, sum : integer; rata : real; { ALGORITMA } begin sum := 0; count := 0; { Inisialisasi } readln (X); { First-Element } while (X -999) do { Kondisi-mengulang } begin sum := sum + X; count := count + 1; readln (X); { Next-Element } end; { X = -999 } Formatting { Terminasi } penulisan real: if (count > 0) then 4 digit di depan begin writeln ('Banyak bilangan = ', count); koma, 2 digit di writeln ('Jumlah total = ', sum); belakang koma rata := sum/count; writeln ('Rata-rata = ', rata:4:2); end else begin { count = 0, artinya tidak ada bilangan yang dientri } writeln ('Tidak ada data yang diolah'); end; KU1072/Pengenalan Teknologi 9/16/15 42 Informasi B end.
Alt. Solusi Soal-4 (Pascal)
Soal-5 (1) • Buatlah program untuk membaca sekumpulan bilangan bulat (integer) yang diakhiri -999 (-999 tidak termasuk), dan mencetak banyaknya bilangan genap, ganjil, positif, dan negatif. • Bilangan 0 adalah bilangan genap, tetapi tidak positif atau pun negatif. • Petunjuk: Gunakan while-do
9/16/15
KU1072/Pengenalan Teknologi Informasi B
43
Soal-5 (2) No Input • Contoh input/outpu 1 -1 7 t 12 -6 10 2 0 -999 2
9/16/15
-999
Output Bilangan Bilangan Bilangan Bilangan
genap ada 5 ganjil ada 2 positif ada 4 negatif ada 2
Bilangan Bilangan Bilangan Bilangan
genap ada 0 ganjil ada 0 positif ada 0 negatif ada 0
KU1072/Pengenalan Teknologi Informasi B
44
Mulai
countgenap := 0; countganjil := 0 countpos := 0; countneg := 0
Alt. Solusi Soal-5 Sketsa Flowchart Program CountBilangan { Menerima masukan sejumlah bilangan integer sampai pengguna memasukkan -999 dan dan menampilkan banyak bilangan genap, ganjil, positif, negatif }
input(X) while-do false
KAMUS X : integer countgenap, countganjil, countpos, countneg : integer
FirstElmt
X -999
true Count genap/ganjil
Aksi
Count pos/neg
ALGORITMA { Lihat flowchart di samping } 9/16/15
inisialisa si
KU1072/Pengenalan Teknologi Informasi B
Terminasi Seles ai
45
Mulai
Alt. Solusi Soal-5 Flowchart Detil (Part-1)
countgenap := 0; countganjil := 0 countpos := 0; countneg := 0 input(X) false
while-do
X -999 true
Count genap/ganjil
true
X mod 2 =0
countgenap := countgenap + 1 A
false countganjil := countganjil + 1
B 9/16/15
Connector: jika gambar flowchart harus berpindah halaman
KU1072/Pengenalan Teknologi Informasi B
C 46
while-do B
A
C Count pos/neg
X
X>0
X 0) then begin countpos := countpos + 1; end else if (X < 0) then begin countneg := countneg + 1; end; { X = 0, tidak melakukan apa-apa } readln (X); { Next-Element } end; { X = -999 } writeln ('Bilangan genap ada ', countgenap); writeln ('Bilangan ganjil ada ', countganjil); Teknologi writeln ('Bilangan positif KU1072/Pengenalan ada ', countpos); 9/16/15 48 Informasi B writeln ('Bilangan negatif ada ', countneg);
Alt. Solusi Soal5 (Pascal)
Soal-6: Lagu Anak Ayam • Masih ingatkah dengan lagu Anak Ayam?? Anak ayam turunlah 5 Mati satu tinggallah 4 generalis Mati satu tinggallah 3 asi Mati satu tinggallah 2 Mati satu tinggallah 1 Mati satu tinggal induknya
Anak ayam turunlah N Mati satu tinggallah N-1 Mati satu tinggallah N-2 …. Mati satu tinggallah 1 Mati satu tinggal induknya
• Buatlah 3 versi program yang menerima masukan sebuah integer positif > 0, misalnya N, dan menuliskan lirik lagu Anak Ayam dengan memanfaatkan pengulangan: – Repeat-until – While-do – For 9/16/15
KU1072/Pengenalan Teknologi Informasi B
49