28
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

Bab III Pengulangan[1]

Embed Size (px)

DESCRIPTION

looping

Citation preview

Page 1: Bab III Pengulangan[1]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

Hanya untuk kalangan sendiri 50

Page 23: Bab III Pengulangan[1]

Hanya untuk kalangan sendiri 51