AlPro_06 [Pengulangan atau Looping [1]]

advertisement
Algoritma Pemrograman
Pertemuan Ke-6
(Pengulangan atau Looping [1])
Noor Ifada
[email protected]
S1 Teknik Informatika-Unijoyo
1
Sub Pokok Bahasan
Pendahuluan
Struktur Pengulangan
Pengulangan tanpa
kondisi dan dengan
kondisi
Struktur FOR (menaik dan
menurun)
S1 Teknik Informatika-Unijoyo
2
Pendahuluan
Pengulangan (looping) adalah pelaksanaan suatu
instruksi berulangkali
Di dalam algoritma, pengulangan dapat dilakukan
sejumlah kali, atau sampai kondisi berhenti
pengulangan tercapai
S1 Teknik Informatika-Unijoyo
3
Struktur Pengulangan
Bentuk Umum:
<inisialisasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
• <inisialisasi>: aksi yang dilakukan sebelum pengulangan
dilakukan untuk pertama kalinya.
• badan pengulangan: bagian algoritma yang diulang
• <terminasi>: aksi yang dilakukan setelah pengulangan selesai
dilaksanakan
• <inisialisasi> dan <terminasi> tidak selalu harus ada, namun
pada berbagi kasus inisialisasi umumnya diperlukan
• awal dan akhir pengulangan dinyatakan sebagai kata kunci yang
bergantung pada struktur pengulangan yang digunakan
S1 Teknik Informatika-Unijoyo
4
Macam struktur pengulangan
Struktur FOR
pengulangan tanpa kondisi (unconditional looping):
jumlah pengulangan sudah diketahui sebelum eksekusi
Struktur WHILE
Struktur REPEAT
pengulangan dengan kondisi (conditional looping):
jumlah pengulangan tidak diketahui sebelum eksekusi
program. Yang dapat ditentukan hanya kondisi berhenti
pengulangan (instruksi-instruksi di dalam badan
pengulangan diulangi sampai kondisi berhenti terpenuhi)
S1 Teknik Informatika-Unijoyo
5
Struktur FOR
Jumlah pengulangan diketahui atau dapat ditentukan
sebelum eksekusi.
Untuk mencacah sudah jumlah pengulangan diperlukan
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:
Menaik (ascending)
Menurun (descending)
S1 Teknik Informatika-Unijoyo
6
Struktur FOR: menaik
for pencacah ← nilai_awal to nilai_akhir do
aksi
endfor
pencacah menggunakan tipe data yang memiliki predecessor dan
successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan
sebagai pencacah)
aksi 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 diinisialisasikan dengan nilai_awal. Nilai
pencacah secara otomatis bertambah satu setiap kali aksi
pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan
nilai_akhir
jumlah pengulangan yang terjadi = nilai_akhir – nilai_awal + 1
S1 Teknik Informatika-Unijoyo
7
Contoh 1: Mencetak tulisan ‘Informatika’ sebanyak 5 kali
Algoritma CETAK_INFORMATIKA
{ Mencetak ‘Informatika’ sebanyak 5 kali }
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
for k←1 to 5 do {ulangi sebanyak 5 kali}
write(‘Informatika’)
endfor
Program CETAK_INFORMATIKA;
{ Mencetak ‘Informatika’ sebanyak 5 kali }
(* DEKLARASI *)
var
k : integer;
Jumlah pengulangan sudah
ditentukan sebelumnya (5 kali)
Badan pengulangan hanya berisi
satu instruksi, yaitu
write(‘Informatika’)
k adalah peubah pencacah yang
bertipe integer
pada mulanya k bernilai 1, nilai k
selalu bertambah 1 setiap kali
pengulangan dilakukan, sampai
akhirnya k mencapai 5
Jumlah pengulangan yang
dilakukan:
5 – 1 + 1 = 5 kali
Keluaran dari algoritma
CETAK_INFORMATIKA adalah
string ‘Informatika’ sebanyak 5 kali:
(* DESKRIPSI *)
begin
for k := 1 to 5 do
writeln(‘Informatika’);
(*endfor*)
end.
Informatika
Informatika
Informatika
Informatika
Informatika
S1 Teknik Informatika-Unijoyo
8
Contoh 2:
Menghitung jumlah angkaangka dari 1 sampai N
jumlah = 1 + 2 + 3 + ... + N
Nilai N dibaca terlebih
dahulu dari piranti masukan.
Misalnya, jika N = 5, maka
jumlah angka dari 1 sampai
5 adalah deret:
1 + 2 + 3 + 4 + 5 = 15
Algoritma PENJUMLAHAN_DERET
{ Menjumlahkan deret 1 + 2 + 3 + ... + N,
dengan N adalah bilangan bulat positif
yang dibaca dari piranti masukan }
DEKLARASI
k : integer { pencacah pengulangan }
N, jumlah : integer
DESKRIPSI :
read(N) { banyaknya suku deret }
jumlah ← 0
for k←1 to N do {ulangi sebanyak N kali}
jumlah ← jumlah + k
endfor
write(jumlah)
S1 Teknik Informatika-Unijoyo
9
Program PENJUMLAHAN_DERET;
{ Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah
bilangan bulat positif yang dibaca dari piranti masukan
}
(* DEKLARASI *)
var
k, N, jumlah : integer;
(* DESKRIPSI *)
begin
write(‘Masukkan banyaknya suku deret : ‘);
readln(N);
jumlah := 0;
for k := 1 to N do
jumlah := jumlah + k;
(*endfor*)
writeln(jumlah);
end.
S1 Teknik Informatika-Unijoyo
10
Contoh 3:
Menghitung nilai rata-rata dari
N buah data bilangan bulat
yang dibaca dari piranti
masukan. Nilai rata-rata adalah
jumlah seluruh nilai dibagi
dengan banyaknya nilai
Misalkan, N = 5 dan data
bilangan yang dibaca berturutturut adalah 12, 10, 6, 2,
4, maka nilai rata-ratanya
adalah:
(12 +10 + 6 + 2 + 4)/5
= 34/5
= 6.8
Algoritma HITUNG_RATA_RATA
{ Menghitung rata-rata N buah bilangan
bulat
yang
dibaca
dari
piranti
masukan. N > 0. }
DEKLARASI
k : integer { pencacah pengulangan }
N : integer { jumlah data, > 0 }
x : integer {bilangan bulat yang dibaca}
jumlah : integer
rata : real
DESKRIPSI :
read(N) { banyaknya suku deret }
jumlah ← 0
for k←1 to N do {ulangi sebanyak N kali}
read(x)
jumlah ← jumlah + x
endfor
rata ← jumlah/N
write(rata)
S1 Teknik Informatika-Unijoyo
11
Program HITUNG_RATA_RATA;
{ Menghitung rata-rata N buah bilangan bulat yang dibaca dari
piranti masukan. N > 0. }
(* DEKLARASI *)
var
k, N, x, jumlah : integer;
rata : real;
(* DESKRIPSI *)
begin
write(‘Masukkan banyaknya suku deret : ‘);
readln(N);
jumlah := 0;
for k := 1 to N do
begin
write(‘Bilangan ke-’,k,’ : ‘);readln(x);
jumlah := jumlah + x;
end;
rata := jumlah/N;
writeln(rata);
end.
S1 Teknik Informatika-Unijoyo
12
Struktur FOR: menurun
for pencacah ← nilai_akhir downto nilai_awal do
aksi
endfor
pencacah menggunakan tipe data yang memilki predecessor dan
successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan
sebagai pencacah.
aksi adalah satu atau lebih instruksi yang diulang)
nilai_akhir harus lebih besar atau sama dengan nilai_awal
(Jika nilai_akhir lebih kecil dari nilai_awal, maka badan
pengulangan tidak dimasuki)
pada awalnya pencacah diinisialisasikan dengan nilai_akhir. Nilai
pencacah secara otomatis berkurang satu setiap kali aksi diulangi,
sampai akhirnya nilai pencacah sama dengan nilai_awal.
jumlah pengulangan yang terjadi = nilai_akhir – nilai_awal + 1
S1 Teknik Informatika-Unijoyo
13
Contoh: Mencetak angka 5, 4, …, 1
Algoritma CETAK_ANGKA_TURUN
{Mencetak 5, 4, ..., 1 ke piranti keluaran}
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
for k←5 downto 1 do
write(k)
endfor
Program CETAK_ANGKA_TURUN;
{Mencetak 5, 4, ..., 1 ke piranti keluaran}
(* DEKLARASI *)
var
k : integer;
Pada algoritma
CETAK_ANGKA_TURUN,
angka-angka yang dicetak
bersesuaian dengan nilai
pencacah pengulangan.
Keluaran dari algoritma
adalah angka 5 yang turun
sampai ke angka 1:
5 4 3 2 1
(* DESKRIPSI *)
begin
for k := 5 downto 1 do
write(k,’ ‘);
(*endfor*)
end.
S1 Teknik Informatika-Unijoyo
14
Download