PENGULANGAN(LOOPING)
Perulangan (Looping) dengan "FOR" dalam
Pascal.
Ada 3 cara
di dalam Bahasa Pemprograman Pascal untuk menyatakan perulangan. Yaitu
1. FOR - DO
2. WHILE - DO
3. REPEAT - UNTIL
ke tiganya mempunyai cara penulisan dan fungsinya masing-masing(meskipun pada dasarnya semua nya digunakan untuk perulangan)
Menurut saya, bagian dari belajar dasar pemprograman yang "membutuhkan waktu lebih" untuk di kuasai adalah bagaian ini.
yah, perulangan. karena akan banyak khasus yang membutuhkan analisa logika teman-teman untuk menyelesaikanya(tentunya berhubungan dengan perulangan)
Kali ini kita akan membahas perlulangan dalam Bahasa Pemprograman Pascal menggunakan FOR - DO. Yuk mari...
A. Increasement (bertambah)
1. FOR - DO
2. WHILE - DO
3. REPEAT - UNTIL
ke tiganya mempunyai cara penulisan dan fungsinya masing-masing(meskipun pada dasarnya semua nya digunakan untuk perulangan)
Menurut saya, bagian dari belajar dasar pemprograman yang "membutuhkan waktu lebih" untuk di kuasai adalah bagaian ini.
yah, perulangan. karena akan banyak khasus yang membutuhkan analisa logika teman-teman untuk menyelesaikanya(tentunya berhubungan dengan perulangan)
Kali ini kita akan membahas perlulangan dalam Bahasa Pemprograman Pascal menggunakan FOR - DO. Yuk mari...
A. Increasement (bertambah)
FOR <variable> : = <nilai_awal> TO
<nilai_akhir> DO
Syntax FOR
di atas digunakan untuk perulangan yang nilai awalnya terus bertambah hingga
nilai akhir.
atau dalam pengertian dapat di rumuskan :
Printah (statement) di dalam FOR akan selalu di jalankan selama nilai_awal masih <= nilai_akhir.
Kemudian nilai_awal akan selalu di tambahkan 1 di setiap kali perulangan.
Perintah (statement) di dalam FOR akan berkahir/selesai di eksekusi pada saat nilai_awal > nilai_akhir.
Sebagai contoh :
Contoh1
Tampilkan urutan bilangan mulai dari 1 hingga 10
Berikut script penyeselsaianya :
atau dalam pengertian dapat di rumuskan :
Printah (statement) di dalam FOR akan selalu di jalankan selama nilai_awal masih <= nilai_akhir.
Kemudian nilai_awal akan selalu di tambahkan 1 di setiap kali perulangan.
Perintah (statement) di dalam FOR akan berkahir/selesai di eksekusi pada saat nilai_awal > nilai_akhir.
Sebagai contoh :
Contoh1
Tampilkan urutan bilangan mulai dari 1 hingga 10
Berikut script penyeselsaianya :
program Contoh1;
var
x: integer;
begin
for x :=
1 to 10 do
begin
write(x ,
' ');
end;
readln;
end.
Hasil dari
program di atas adalah :
1 2 3 4 5 6 7 8 9 10
nilai dari
variable x mula-mula adalah 1, kemudian perintah yang dijalankan adalah
write/mencetak variable x .
Kemudian karena x masih kurang dari 10 maka x ditambahkan 1, sehingga sekarang nilai x menjadi 2 .
Dan begitu seterusnya hingga x = 10 maka program perhenti di proses.
B. Decreasement (berkurang)
Kemudian karena x masih kurang dari 10 maka x ditambahkan 1, sehingga sekarang nilai x menjadi 2 .
Dan begitu seterusnya hingga x = 10 maka program perhenti di proses.
B. Decreasement (berkurang)
FOR <variable> : = <nilai_awal> DOWNTO
<nilai_akhir> DO
Berkebalikan
dengan FOR untuk Increasement, Syntax FOR untuk Decreasement di atas digunakan
untuk perulangan dengan penurunan nilai.
Jadi :
Printah (statement) di dalam FOR akan selalu di jalankan selama nilai_awal masih >= nilai_akhir.
Kemudian nilai_awal akan selalu di dikurangi 1 di setiap kali perulangan,
Perintah (statement) di dalam FOR akan berkahir/selesai di eksekusi pada saat nilai_awal < nilai_akhir.
Sebagai contoh :
Contoh2
Tampilkan urutan bilangan mulai dari 15 hingga 5
Berikut script penyelesaianya :
Jadi :
Printah (statement) di dalam FOR akan selalu di jalankan selama nilai_awal masih >= nilai_akhir.
Kemudian nilai_awal akan selalu di dikurangi 1 di setiap kali perulangan,
Perintah (statement) di dalam FOR akan berkahir/selesai di eksekusi pada saat nilai_awal < nilai_akhir.
Sebagai contoh :
Contoh2
Tampilkan urutan bilangan mulai dari 15 hingga 5
Berikut script penyelesaianya :
program Contoh2;
var
y: integer;
begin
for y :=
15 downto 5 do
begin
write(y ,
' ');
end;
readln;
end.
Hasil dari
program di atas adalah :
15 14 13 12 11 10 9 8 7 6 5
nilai dari variable
y mula-mula adalah 15, kemudian perintah yang dijalankan adalah write/mencetak
variable y .
Kemudian karena y masih lebih dari 5 maka y dikurangi 1, sehingga sekarang nilai y menjadi 14 .
Dan begitu seterusnya hingga y = 5 maka program perhenti di proses.
OK,, kita sudah mengenal 2 jenis FOR dalam pascal, sekarang saat nya implementasi :D
Saya mempunyai 2 khasus yaitu :
1. Saya ingin menampilkan bilangan perima mulai dari 1 hingga 50
2. Saya inggin membuat Pyramit dari character 'x' menjadi seperti :
Kemudian karena y masih lebih dari 5 maka y dikurangi 1, sehingga sekarang nilai y menjadi 14 .
Dan begitu seterusnya hingga y = 5 maka program perhenti di proses.
OK,, kita sudah mengenal 2 jenis FOR dalam pascal, sekarang saat nya implementasi :D
Saya mempunyai 2 khasus yaitu :
1. Saya ingin menampilkan bilangan perima mulai dari 1 hingga 50
2. Saya inggin membuat Pyramit dari character 'x' menjadi seperti :
x
xxx
xxxxx
xxxxxxx
Bagaimana
caranya?
yuk kita kerjakan bersama - sama :D
1. Khasus 1
untuk mengerjakan khasus ini kita memerlukan operator artimatik "MOD" (modulus) yaitu operator aritmatik yang berfungsi untuk mendapatkan nilai sisa hasil bagi.
seperti yang kita ketahui, ciri-ciri dari bilangan prima adalah hanya dapat dibagi oleh angka 1 dan bilangan itu sendiri.
jadi jumlah bilangan pembagi bilangan prima hanyalah ada 2.
Brikut script nya :
yuk kita kerjakan bersama - sama :D
1. Khasus 1
untuk mengerjakan khasus ini kita memerlukan operator artimatik "MOD" (modulus) yaitu operator aritmatik yang berfungsi untuk mendapatkan nilai sisa hasil bagi.
seperti yang kita ketahui, ciri-ciri dari bilangan prima adalah hanya dapat dibagi oleh angka 1 dan bilangan itu sendiri.
jadi jumlah bilangan pembagi bilangan prima hanyalah ada 2.
Brikut script nya :
Program khasus1;
var
a,b,c,x : integer;
BEGIN
x := 50; //
batas nilai prima
for a:= 1 to
x do // for pertama
Begin
c := 0; //
jumlah pembagi bilangan prima
for b: = 1
to a do // for ke 3
Begin
if a
mod b=0 then // pengecekan sisa hasil
pembagian
c:=c+1; // jika sisanya 0 jumlah pembagi ditambah 1
end; //
akhir for ke 2
if c = 2
then // pengecekan jumlah pembagi, jika jumlah pembagi = 2 maka cetak bilangan
tersebut (berarti bilangan prima)
begin
write(a,' '); // cetak nilai bilangan prima
end;
end; //
akhir for pertama
readln;
END.
Penjelasan :
a. for pertama berfungsi untuk perulangan bilangan variable a dari 1 hingga x (50)
b. for ke 2 berfungsi untuk mencari berapa jumlah bilangan yang hasil bagi dengan variable a nya adalah 0
Hasilnya :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
2. Khasus 2
Dilihat dari hasilnya, sepertinnya mudah? yakin? hehehe
Menurut saya, bagi yang baru belajar Pemprograman, khasus ini adalah khasus yang cukup meguras otak kita hehe.
Tapi tenang jangan panik. disini kita kan bahas bersama-sama :D
sebelumnya akan saya berikan script lengkapnya terlebih dahulu baru akan saya bahas bagian-perbagian :D
berikut ini script lengkapnya :
program khasus2;
var
baris,sepasi,piramit1,piramit2,jumbaris :integer;
begin
jumbaris :=
4;
for baris
:=1 to jumbaris do // for pertama
begin
for
sepasi := jumbaris downto baris do // for ke 2
begin
write(' '); // mencetak segitiga spasi
end; //
akhir for 2
for
piramit1 := 1 to baris do // for 3
begin
write('x'); // mencetak segitiga x 1
end; //
akhir for 3
for
piramit2 := 2 to baris do // for 4
begin
write('x'); // mencetak segitiga x 2
end; //
akhir for 4
writeln; // mencetak baris baru
end; //
akhir for pertama
readln;
end.
a. For pertama
a. For pertama
for baris :=1 to jumbaris do // for pertama
begin
. . . .
end;
for pertama adalah FOR pembungkus dari semua FOR pembentuk objek segitiga.
fungsi dari for pertama adalah untuk membuat baris. yaitu mulai baris pertama (1) hingga baris ke jumbaris (4)
varibale "baris" disini berfungsi sebagai acuan pembentukan kolom di setiap objek segitiganya
b. For ke 2
for sepasi := jumbaris downto baris do // for ke 2
begin
write(' ');
// mencetak segitiga spasi
end; // akhir for 2
for ke 2 ini
berfungsi sebagai pemebentuk kolom yang nantinya menjadi segitiga spasi.
bingung? sekarang coba temen-temen ganti isi dari write(' '); menjadi write('0');
apa yang terjadi?
yups ada segitiga yang terbentuk dari angka 0.
Seperti yang saya sebutkan, fungsi dari for ini adalah untuk membuat kolom, jumlah kolom (dalam hal ini spasi/angka 0) adalah hasil dari perulangan for tersebut, sebagai contoh di baris yang pertama jumlah spasi/0 adalah 4 buah. itu dukarenakan perulangan Decreasement perintah mencetak spasi/0 di baris pertama yaitu dari nilai variable sepasi (4) hingga nilai variable baris (1). dan begitu seterusnya hingga for pembentuk beris(for pertama) berakhir.
c. For ke 3
bingung? sekarang coba temen-temen ganti isi dari write(' '); menjadi write('0');
apa yang terjadi?
yups ada segitiga yang terbentuk dari angka 0.
Seperti yang saya sebutkan, fungsi dari for ini adalah untuk membuat kolom, jumlah kolom (dalam hal ini spasi/angka 0) adalah hasil dari perulangan for tersebut, sebagai contoh di baris yang pertama jumlah spasi/0 adalah 4 buah. itu dukarenakan perulangan Decreasement perintah mencetak spasi/0 di baris pertama yaitu dari nilai variable sepasi (4) hingga nilai variable baris (1). dan begitu seterusnya hingga for pembentuk beris(for pertama) berakhir.
c. For ke 3
for piramit1 := 1 to baris do // for 3
begin
write('x');
// mencetak segitiga x 1
end; // akhir for 3
fungsi dari
for ke 3 ini adalah untuk membentuk segitiga x yang ke 1. sama seperti fungsi
dari for yang kedua, cuma bedanya yang di cetak adalah character x dan
perulangan untuk pembentukan barisnya adalah Increasement.
sebagai contoh di baris yang pertama jumlah x adalah 1 buah. itu di karenakan perulangan perintah pencetakan x dari nilai mulla-mula varibale piramit1 (1) bertambah terus hingga nilainya sama dengan variable baris (1) dan begitu seterusnya hingga for pembentuk beris(for pertama) berakhir.
d. For ke 4
sebagai contoh di baris yang pertama jumlah x adalah 1 buah. itu di karenakan perulangan perintah pencetakan x dari nilai mulla-mula varibale piramit1 (1) bertambah terus hingga nilainya sama dengan variable baris (1) dan begitu seterusnya hingga for pembentuk beris(for pertama) berakhir.
d. For ke 4
for piramit2 := 2 to baris do // for 4
begin
write('x');
// mencetak segitiga x 2
end; // akhir for 4
Fungsinya
adalah pembentuk segitiga x yang ke 2. algoritmanya sama persis dengan for yang
ke 3, hanya bedanya piramit2 dimulai dari 2, bukan 1.
kenapa? karena segitiga yang akan dicetak lebih kecil 1 baris dari yang pertama. coba temen-temen ganti isi piramit2 menjadi 1. apa yang akan terjadi? :D
Hasilnya adalah :
kenapa? karena segitiga yang akan dicetak lebih kecil 1 baris dari yang pertama. coba temen-temen ganti isi piramit2 menjadi 1. apa yang akan terjadi? :D
Hasilnya adalah :
x
xxx
xxxxx
xxxxxxx
terus terang
For adalah bagian dasar dari pemprograman yang perlu perhatian lebih dalam
memahaminya, jadi tenang aja bagi yang belum paham bisa di pelajari pelan-pelan
koq hehe
ok,,
ok,,
while (condition) do (statement);
Algoritma
dalam pengeksekusian scriptnya adalah sebagai berikut:
- Kondisi di cek terlebih dahulu (WHILE)
- Jika kondisi terpenuhi maka kerjakan statement (DO)
Contoh kasus:
Contoh1 : Saya ingin menampilkan bilangan genap mulai dari 10 hingga 20
Script lengkapnya :
- Kondisi di cek terlebih dahulu (WHILE)
- Jika kondisi terpenuhi maka kerjakan statement (DO)
Contoh kasus:
Contoh1 : Saya ingin menampilkan bilangan genap mulai dari 10 hingga 20
Script lengkapnya :
program contoh1;
var
x: integer;
begin
x := 10; //
nilai awal x
while x <= 20
do // pengecekan while apakah x <= 20, jika iya kerjakan statment di
bawah :
begin
if (x mod
2) = 0 then // pengecekan sisa hasil bagi 2, jika 0 maka genap
write(x,' ');
x := x +
1; // counter pertamnbahan x
end;
readln;
end
Hasilnya :
10 12 14 16 18 20
B. REPEAT UNTIL
repeat
(steatement1);
(steatement2);
...
...
(steatementN);
until (condition);
Algoritma dalam pengeksekusian scriptnya adalah berkebalikan dengan WHILE-DO, yaitu sebagai berikut:
- Kerjakan statement (REPEAT)
- Kemudian cek kondisi. Jika kondisi belum terpenuhi maka kerjakan statement di atas hingga kondisi terpenuhi (UNTIL)
Jadi statement akan terus di REPEAT (diulang-dikerjakan) UNTIL (hingga) kondisi terpenuhi, dan perulangan berakhir.
Contoh kasus:
Contoh2 : Saya ingin menampilkan bilangan ganjil mulai dari 1 hingga 19
program contoh2;
var
a: integer;
begin
a := 1;
repeat //
ulang-kerjakan
if (a mod
2) = 1 then // pengecekan sisa hasil pembagian 2, jika 1 bilangan genap
write(a,' ');
a := a + 1
until a = 20;
// pembatasan repeat
end.
Hasilnya :
1 3 5 7 9 11 13 15 17 19
DONE!! gimana mudah kan? , yups, menggunakan WHILE-DO dan REPEAT-UNTIL memang lebih mudah.
TAPI ada yang perlu di ingat, yaitu pembatasan looping, pastikan algoritma pembatasan loopingnya benar, agar tidak terjadi infinite loop (atau disebut juga endless loop atau unproductive loop) yaitu perulangan yang tidak terbatas karena kondisi tidak mungkin terpenuhi.
contoh :
program infinitieloop;
var
a: integer;
begin
a := 2;
repeat
write(a,'
');
a := 2
until a = 3;
end.
Program tersebut akan terus berulang
dan tidak selesi karena nilai variable a tidak mungkin akan sama dengan 3.
Mungkin d cukupkan sekian Dari saya semoga bermanfaat ..... :D
Tidak ada komentar:
Posting Komentar