bab iii · web viewdiagram alur untuk mencetak 10 suku yang pertama baris giometri dengan suku...
TRANSCRIPT
BAB IIIPEMUTARAN (LOOP)
Struktur PengulanganTerdiri 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
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
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
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
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
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
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.
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.
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
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.
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.
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.
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
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.
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
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
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
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.
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.
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.
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.
Hanya untuk kalangan sendiri 50
Hanya untuk kalangan sendiri 51