Download - Bab III Pengulangan[1]
![Page 1: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/1.jpg)
BAB III
PEMUTARAN (LOOP)
Struktur Pengulangan
Terdiri atas 2 bagian
1. Kondisi pengulangan
Yaitu ekpresi Boolean yang harus dipenuhi untuk melaksanaan pengulangan
2. Badan (body) pengulangan
Yaitu satu atau lebih aksi yang akan diulang
Disamping itu, struktur pengulangan biasanya disertai dengan bagian
1. Inisialisasi
Yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali
2. Terminasi
Yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan
Didalam algoritma terdapat beberapa macam struktur pengulangan yang berbeda yaitu:
1. Struktur For
2. Struktur While..Do
3. Struktur Repeat..Until
Pemutaran kembali, terjadi ketika mengalihkan arus diagram alur kembali keatas,
sehingga beberapa alur berulang kembali beberapa kali
Contoh:
Hanya untuk kalangan sendiri 29
![Page 2: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/2.jpg)
Pemutaran tak hingga, sehingga pengulangan perlu dibatasi dengan cara:
Memanfaatkan kotak keputusanContoh:
1. Diagram alur untuk mencetak kuadarat bilangan-bilangan 1 – 10
Output
Putaran A B1 1 12 2 43 3 94 4 165 5 256 6 367 7 498 8 649 9 8110 10 10011 Berhenti
2. Diagram Alur untuk mencetak 10 suku yang pertama baris giometri dengan suku pertama 3 dan rasio 6
Hanya untuk kalangan sendiri 30
![Page 3: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/3.jpg)
Putaran Ke N R S1 1 6 32 2 6 93 3 6 154 4 6 215 5 6 276 6 6 337 7 6 398 8 6 459 9 6 5110 10 6 5711 11 Berhenti
Hanya untuk kalangan sendiri 31
![Page 4: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/4.jpg)
3. Diagram alur mencetak suku barisan aritmatik dengan suku pertama 3 dan beda 4 sampai suku yang harganya tidak melebihi 20
Putaran Ke B S1 4 32 4 73 4 114 4 155 4 196 4 237 4 End
Pengulangan Bersarang
Hanya untuk kalangan sendiri 32
![Page 5: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/5.jpg)
Pengulangan tersarang (Nested Loop) adalah pengulangan yang berada di dalam
pengulangan yang lainnya. Pengulangan yang lebih dalam akan diproses terlebih
dahulu sampai selesai, kemudian perulangan yang lebih luar baru akan bertambah,
mengerjakan perulangan yang lebih dalam lagi mulai dari awal sampai selesai
Contoh 1:
Putaran Luar Ke Putaran Dalam Ke I K M1 1 2 6 81 2 2 7 91 3 2 8 102 1 3 6 92 2 3 7 102 3 3 8 113 1 4 6 103 2 4 7 113 3 4 8 12
Contoh 2
Hanya untuk kalangan sendiri 33
![Page 6: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/6.jpg)
Putaran Luar Ke Putaran Dalam Ke N K N,K1 1 1 1 1,11 2 1 2 1,21 3 1 3 1,31 4 1 4 1,42 1 2 1 2,12 2 2 2 2,22 3 2 3 2,32 4 2 4 2,43 1 3 1 3,13 2 3 2 3,23 3 3 3 3,33 4 3 4 3,44 1 4 1 4,14 2 4 2 4,24 3 4 3 4,44 4 4 4 4,4
Struktur Pengulangan FOR
Hanya untuk kalangan sendiri 34
![Page 7: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/7.jpg)
Pengulangan dengan statement FOR digunakan untuk mengulang statement atau satu
blok statement berulang kali sejumlah yang ditentukan. Perulangan dengan FOR dapat
berbentuk positif, negative serta perulangan bersarang
BU
Perulangan Positif
- Variabel control harus bertipe sederhana (kecuali real)- 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 variable control diinisialisasi dengan nilai awal, nilai variable
control secara otomatis bertamabah satu setiap aksi pengulangan dimasuki, sampai akhirnya nilai peubah sama dengan nilai akhir
- Jumlah pengulangan yang terjadi adalah nilai akhir dikurangi nilai awal ditambah
Contoh:
Hanya untuk kalangan sendiri 35
Contoh 1
uses wincrt;
var
I : integer;
begin
for I:= 1 to 5 do writeln('Algoritma pemrograman');end.
Contoh 2
uses wincrt;
var I : integer;
begin
for I := 1 to 5 do write (I); writeln ('Algoritma Pemrograman'); end.
![Page 8: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/8.jpg)
Perulangan Negatif
Hanya untuk kalangan sendiri 36
Contoh 3
uses wincrt;
var I : integer;
begin
for I := 1 to 5 do
begin write (I); writeln ('. Algoritma Pemrograman'); end;
end.
![Page 9: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/9.jpg)
Perulangan negative adalah pengulangan dengan penghitungan (counter) dari besar ke
kecil atau dengan kata lain pertambahannya negative
Ketentuan:
- Variabel control harus bertipe sederhana kecuali real
- Nilai akhir harus lebih besar atau sama dengan nilai awal, jika nilai akhir lebih
kecil dari nilai awal maka badan pengulangan tidak akan dimasuki
- Pada awalnya variable control diinisialisasi dengan nilai aakhir, nilai perubahan
secara otomatis berkurang satu setiap kali aksi diulang sampai akhirnya nilai
variable control sama dengan nilai awal
- Jumlah pengulangan yang terjadi nilai awal dikurangi nilai akhir ditambah 1
Contohuses wincrt;
var celcius : integer; Fah : real;
begin
writeln('---------------------------------------'); writeln(' Celcius Fahrenheit'); writeln('---------------------------------------'); celcius:=0; for celcius:= 15 downto 0 do begin Fah:=1.8 * celcius + 32; writeln(celcius:8, Fah:14:2); end;
writeln('--------------------------------------');
end.
Hanya untuk kalangan sendiri 37
![Page 10: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/10.jpg)
For Bersarang
Contoh1
Hanya untuk kalangan sendiri 38
var I, K, M : Integer;
Begin
writeln('--------------------------------'); writeln('Nilai I Nilai K Nilai M'); writeln('--------------------------------');
for I:=2 to 4 do
for K:= 6 to 8 do
begin M:=I+K; writeln(' ',I,' ', K,' ',M); end;end.
![Page 11: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/11.jpg)
Contoh2
Tugas1. Buatlah algoritma dan program untuk mencetak kata “Aku akan
menaklukkanmu” sebanyak 10 kali2. Buat tampilan seperti berikut ini dalam bahasa pascal dan buat algoritmanya
1 2 3 4 5 6 7 8 9 103. Buatlah algoritma dan program bila diharapkan output seperti berikut ini
1. Algoritmaku2. Algoritmaku3. Algoritmaku4. Algoritmaku5. Algoritmaku
4. Buat algoritma dan program untuk menjumlah deret berikut ini 1+2+3+4+5+…+N, dan N adalah bilangan bulat positif yang dibaca dari piranti masukkan, dan jumlah deret dicetak ke piranti keluaran
5. Buat algoritma dan program untuk menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukkan
Hanya untuk kalangan sendiri 39
uses wincrt;
var N,K:integer;
Begin
Writeln('-----------------------------'); Writeln('N K N,K'); Writeln('-----------------------------');
for N:=1 to 4 do
for K:= 1 to 4 do
writeln('',N,' ',K,' ',N,',',K);
End.
![Page 12: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/12.jpg)
Pengulangan dengan WHILE..DO
While..Do digunakan untuk melakukan proses perulangan suatu statement atau blok
statement terus-menerus selama kondisi ungkapan logika pada WHILE masih bernilai
logika benar
Bentuk Umum
Contoh:
Catatan:
- Bila nilai awal tidak terdefinisi, maka pengulangan while..do tidak akan pernah
dilaksanakan
- Pada bahasa pascal bila peubah tidak diinisialisasi maka nilai yang diberikan
acak
Hanya untuk kalangan sendiri 40
uses wincrt;
var I : integer;
begin
I:=0; while I < 5 do begin writeln (I); I:=I+1; end; end.
![Page 13: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/13.jpg)
Tugas:
1. Buat flowchart dan program untuk menampilkan kata “Hallo While” sebanyak 10
kali
2. Buat flowchart dan program untuk menampilkan angka dari 1 – 20 dengan satu
angka pada setiap baris
3. Buat algoritma untuk menampilkan angka sebanyak N
4. Buat algoritma dan program untuk menjumlah deret berikut ini 1+2+3+4+5+…+N,
dan N adalah bilangan bulat positif yang dibaca dari piranti masukkan, dan
jumlah deret dicetak ke piranti keluaran
5. Buat algoritma dan program untuk menghitung rata-rata N buah bilangan bulat
yang dibaca dari piranti masukkan
6. Buat algoritma dan program untuk menampilkan semua bilangan genap yang
kurang dari 100
7. Buat algoritma dan program untuk menampilkan semua bilangan ganjil yang
kurang dari 100
Hanya untuk kalangan sendiri 41
![Page 14: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/14.jpg)
Pengulangan dengan REPEAT..UNTIL
Pengulangan REPEAT..UNTIL digunakan untuk mengulang (repeat) statement-
statement atau blok statement sampai (until) kondisi yang diseleksi di until tidak
terpenuhi
Bentuk Umum
Contoh:
Hanya untuk kalangan sendiri 42
uses wincrt;
var I : integer;
begin
I:= 0;
Repeat
I :=I+1; write (i);
until I = 5 ;
end.
![Page 15: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/15.jpg)
Perbedaan antara Repeat..Until dengan While..Do adalah:
1. Pada Repeat..Until dilakukan minimal 1 kali perulangan walaupun kondisi salah
2. Pada While..Do dilakuakn o kali pengulangan, karena bila kondisi salah maka
badan pengulangan tidak akan dieksekusi atau dilakasanakan
3. pada repeat..until tidak menggunakan blok statement (begin..end;) untuk
menunjukkan batas pengulangannya, karena batas pengulangannya sudah
ditunjukkan oleh repeat..until
Tugas:
1. Buat flowchart dan program untuk menampilkan kata “Hallo Until” sebanyak 10
kali
2. Buat flowchart dan program untuk menampilkan angka dari 1 – 20 dengan satu
angka pada setiap baris
3. Buat algoritma untuk menampilkan angka sebanyak N
4. Buat algoritma dan program untuk menjumlah deret berikut ini 1+2+3+4+5+…+N,
dan N adalah bilangan bulat positif yang dibaca dari piranti masukkan, dan
jumlah deret dicetak ke piranti keluaran
5. Buat algoritma dan program untuk menghitung rata-rata N buah bilangan bulat
yang dibaca dari piranti masukkan
6. Buat algoritma dan program untuk menampilkan semua bilangan genap yang
kurang dari 100
7. Buat algoritma dan program untuk menampilkan semua bilangan ganjil yang
kurang dari 100
Hanya untuk kalangan sendiri 43
![Page 16: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/16.jpg)
Tugas-tugas:
1. Buat algoritma dan program untuk menentukan nilai Huruf Mutu dari N orang
mahasiswa yang mengikuti matakuliah algoritma berdasarkan Angka Mutu yang
diraihnya, dengan ketentuan pemberian nilai Huruf Mutu adalah sebagai berikut:
a. Jika Angka Mutu >= 80, maka Huruf Mutu = A
b. Jika Angka Mutu >= 70, maka Huruf Mutu = B
c. Jika Angka Mutu >= 60, maka Huruf Mutu = C
d. Jika Angka Mutu >= 50, maka Huruf Mutu = D
e. Jika Angka Mutu <= 49, maka Huruf Mutu = E
Yang menjadi input adalah :
N menyatakan banyak mahasiswa
Nama nama mahasiswa
AM angka mutu
2. Soal berikut adalah pengembangan dari soal no 1 diatas, jika untuk menentukan
nilai Angka Mutu yang diperoleh oleh N mahasiswa dikontribusi oleh komponen-
komponen nilai berikut
30% dari Nilai Kehadiran + 5 % dari Nilai Quis + 15 % dari Nilai Tugas + 20%
dari Nilai UTS + 30% dari Nilai UAS
Untuk ketentuan Huruf Mutu yang diperoleh adalah sebagai berikut:
a. Jika Angka Mutu >= 80, maka Angka Mutu = A
b. Jika Angka Mutu >= 70, maka Angka Mutu = B
c. Jika Angka Mutu >= 60, maka Angka Mutu = C
d. Jika Angka Mutu >= 50, maka Angka Mutu = D
e. Jika Angka Mutu <= 49, maka Angka Mutu = E
3. Karyawan honorer di PT. ABC, digaji berdasarkan jumlah jam kerjanya selama
satu minggu, upah perjam adalah 2000, bila jumlah jam kerja lebih besar dari 48
jam, maka sisanya dianggab sebagai jam lembur, upah lembur per jam adalah
3000, yang dibaca adalah jumlah jam kerja seorang karyawan, tentukan upah
mingguan dari N orang karyawan
Jumlah Jam Kerja Karyawan = JKK
Bila JJK <= 48 maka upah = JKK * 2000
Bila JJK >48 maka upah = 48 * 2000 + (JJK – 48) * 3000
Hanya untuk kalangan sendiri 44
![Page 17: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/17.jpg)
4. Tentukan upah perminggu seorang karyawan, jumlah jam kerja yang normal
selama seminggu adalah 48 jam, kelebihan jam kerja dianggab lembur, dengan
upah lembur adalah 3000/jam, bila dimisalkan gaji karyawan PT. ABC
dikelompokan berdasarkan golongannya upah perjam tiap karyawan bergantung
pada golongannya, dengan ketentuan sebagai berikut
Jika Gol = A maka upah perjam = 4000
Jika Gol = B maka upah perjam = 5000
Jika Gol = C maka upah perjam = 6000
Jika Gol = D maka upah perjam = 7000
Gunakan metoda looping for, case dan if
Hanya untuk kalangan sendiri 45
![Page 18: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/18.jpg)
Jawaban No.1
Jawaban Soal No.2
Hanya untuk kalangan sendiri 46
uses wincrt;
var N,I : Integer; NA: real; AM,nama:string[30];begin
write('Isi Jumlah Mahasiswa:'); readln(n); For I := 1 to N do begin write('Nama Mahasiswa ',i,' :'); readln(nama); write('Nilai Angka yang diperoleh:'); readln(NA);
if NA >=80 then AM:='A' else if NA >=70 then AM:='B' else if NA >=60 then AM:='C' else if NA >= 50 then Am:='D' else AM:='E'; writeln('Angka Mutu yang diperoleh :',AM);
end;
end.
![Page 19: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/19.jpg)
Jawaban Soal No.2
Jawaban No.3
Hanya untuk kalangan sendiri 47
uses wincrt;
var N,I:integer; AM, NI_KE, NI_Q, NI_TU, NI_UTS, NI_UAS: real; NK, NQ, NT, UTS, UAS: real; HM,NAMA:string[30];
begin
write('Isi Jumlah Mahasiswa :'); readln(N);
for I:=1 to N do begin Write('Nama Mahasiswa Ke ',I,' :'); readln(NAMA); Write('Nilai Kehadiran :'); readln(NI_KE); Write('Nilai Quis :'); readln(NI_Q); write('Nilai Tugas :'); readln(NI_TU); Write('Nilai UTS :'); readln(NI_UTS); Write('Nilai UAS :'); readln(NI_UAS);
NK:=NI_KE * 0.3; NQ:=NI_Q * 0.05; NT:=NI_TU * 0.15; UTS:=NI_UTS * 0.2; UAS:=NI_UTS * 0.3; AM:=NK+NQ+NT+UTS+UAS;
if AM >= 80 then HM:='A' else if AM >=70 then HM :='B' else if AM>60 then HM:='C' else if AM>50 then HM:='D' else HM:='E';
writeln('Angka Mutu yang diperoleh :',AM:9:2); Writeln('Huruf Mutu yang diperoleh :',HM); end;end.
![Page 20: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/20.jpg)
Jawaban No.3
Hanya untuk kalangan sendiri 48
useswincrt;
varJJK : longint;Upah : longint;N,I:integer;nama:string[30];begin
write('Masukkkan Banyak Karyawan: ');readln(N); for I:= 1 to N do Begin write('Nama Karyawan ',i,':');readln(nama); write('Masukkan Jumlah Jam Kerja :');readln(JJK); if JJK < 48 then Upah := JJK * 2000; if JJK>=48 then Upah:=((JJK - 48)*3000)+(48 * 2000);
writeln('Upah yang diterima :',Upah); end;end.
![Page 21: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/21.jpg)
Jawaban No.4
Hanya untuk kalangan sendiri 49
uses wincrt;
var pilih, n,i:integer; gol:char; JJK,upah:longint; nama:string[30];
begin
write('Isi Jumlah Karyawan :'); readln(N); for i:=1 to N do
begin write('Isi Nama Karyawan ',i,':');readln(nama); write('Isi Golongan Karyawan:',i,':'); readln(gol); case gol of 'A','a':begin write('Isi Jumlah jam kerja :'); readln(JJK); if JJK < 48 then Upah:=JJK * 4000; if JJK >= 48 then Upah:=(48 * 4000) + ((JJK- 48)*4000);
writeln('Upah Perminggu:',Upah);
end;
'B','b':begin write('Isi Jumlah jam kerja :'); readln(JJK); if JJK < 48 then Upah:=JJK * 5000; if JJK >= 48 then Upah:=(48 * 5000) + ((JJK- 48)*5000);
writeln('Upah Perminggu:',Upah);
end;
'C','c':begin write('Isi Jumlah jam kerja :'); readln(JJK); if JJK < 48 then Upah:=JJK * 6000; if JJK >= 48 then Upah:=(48 * 6000) + ((JJK- 48)*6000);
writeln('Upah Perminggu:',Upah);
end;
'D','d':begin write('Isi Jumlah jam kerja :'); readln(JJK); if JJK < 48 then Upah:=JJK * 6000; if JJK >= 48 then Upah:=(48 * 6000) + ((JJK- 48)*6000);
writeln('Upah Perminggu:',Upah);
end; end;
end;end.
![Page 22: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/22.jpg)
Hanya untuk kalangan sendiri 50
![Page 23: Bab III Pengulangan[1]](https://reader031.vdocuments.pub/reader031/viewer/2022020919/55cf9151550346f57b8c8036/html5/thumbnails/23.jpg)
Hanya untuk kalangan sendiri 51