STRUKTUR ALGORITMA
A.
Tujuan
Pada bab ini
akan dibahas mengenai struktur algoritma dan penerapannya dalam bahasa
pemrograman pascal. Struktur algoritma pada dasarnya terdiri dari tiga komponen
utama yaitu sekuensial, percabangan, dan perulangan. Pembahasan mengenai
struktur algoritma akan disertai dengan analisa kasus-kasus.
Tujuan yang
ingin dicapai setelah pambahasan pada bab ini, pembaca diharapkan:
1.
Memiliki pengetahuan dasar tentang struktur algoritma
2.
Memahami stuktur algoritma skuensial.
3.
Memahami struktut algoritma seleksi
4.
Memahami struktur algoritma perulangan.
5.
Dapat menganalisa kasus-kasus sekuensial,seleksi, dan
perulangan serta membuat algoritma dan program untuk kasus-kasus tersebut.
B.
Pendahuluan
Algoritma,
sebagaimana yang telah dijelaskan pada bab sebelumnya merupakan kumpulan
langkah-langkah logis untuk menyelesaikan suatu masalah. langkah-langkah untuk
menyelesaikan masalah ini pada dasarnya terbagi menjadi tiga komponen utama
yaitu runtutan (sekuensial), pemilihan (selection), dan perulangan (looping).
Ketiga
komponen ini sangat penting untuk dipahami karena ketiga komponen ini yang
menjadi dasar dari suatu algoritma. Dengan ketig komponen ini maka dapat
disusun sebuah agoritma yang lebih fleksibel, ringkas, dan tepat untuk
menyelesaikan permasalahan-permasalahan yang terlihat rumit.
Runtutan
merupakan perintah yang bersifat urut dan dilaksanakan sesuai dengan urutan
penulisan. Perulangan merupakan perintah untuk melakukan sesuatu dengan cara
diulang-ulang, sedangkan pemilihan merupakan perintah untuk melakukan sesuatu
berdasarkan kondisi yang terjadi (sesuai). Katiga komponen ini akan dibahas
secara detil pada bagian-bagian tesendiri.
C.
Runtutan/Sekuensial
Runtutan/sekuensial
adalah sekumpulan pernyataan-pernyataan yang dikerjakan secara berurutan. Yang
dimaksud dengan berurutan adalah sesuai dengan urutan penulisannya. Sebuah
instruksi baru akan dijalankan ketika intsruksi sebelumnya telah selesai
dilaksanakan.
Sebagai
contoh, terdapat tiga buah gelas, gelas pertama (A) berisi air. Gelas kedua (B)
berisi minyak, dan gelas ketiga (C) adalah gelas kosong. Sebuah permasalahan
yang ingin delesaikan adalah bagimana memindah air yang berada digelas A
dipindah ke gelas B yang semula berisi minyak. Demikian juga untuk gelas B yang
berisi minyak akan dipindah ke gelas A yang semula berisi air.
Permasalahan
diatas dapat diselesaikan dengan algoritma sebagai berikut:
1.
Pindahkan isi gelas A ke Gelas C yang kosong dengan
demikian delas A akan menjadi kosong.
2.
Pindahkan isi gelas B kedalam gelas A. Gelas A saat ini
sudah berisi minyak.
3.
Pindahkan air yang ada di gelas C kedalam gelas B.
Algoritma diatas berisi suatu
langkah-langkah yang runtut dan bernilai logis sehingga hasilnya dapat
menyelesaikan permasalahannya. Proses ini disebut dengan skuensial.
Pada langkah
sekuensial, hasil akan dikatakan benar apabila langkah-langkah telah
dilaksanakan dengan urut sesuai dengan algoritma yang telah dibuat. Apabila
suatu urutan tersebut diganti maka hasilnya bisa menjadi salah.
contoh:
sebuah algoritma dan program
perhitungan dengan pseudocode adalah sebagai berikut:
Algoritma runtut;
Deklarasi
A,B,C:integer
Deskripsi
Mulai
A ß
5
B ß
10
A ß
B+2
C ß
A + B
Write(C)
Selesai
Algoritma tersebut juga dapat
dituliskan dengan flowchart sebagai berikut:
Gambar 2. Flowchart
Runtut
Program 10. Program runtut
Program runtut;
Uses wincrt;
Var a,b,c:integer;
Begin
A:=5;
B:=10;
A:=B+2;
C:=A+B;
Writeln (C);
End;
Program diatas akan mengasilkan
output 22. apabila langkah-langkah
didalam program tersebut diubah, misalnya dengan menukar langkah ke-3 dan ke-4
dengan mengerjakan C:=A+B maka output yang akan dihasilkan berbeda dengan
program yang pertama. Pada program yang kedua output yang dihasilkan adalah 15.
Contoh kasus
yang lain adalah sebuah algoritma untuk melakukan konversi jarak dari meter ke
inchi. Perhitungan yang dilakukan adalah 1 meter = 100 centimeter dan 1 inchi =
2.54 cm. algorima dan program yang dapat disusun adalah seperti dibawah ini.
Algoritma Konversi_MkeInc;
Deklarasi
M:real (input)
CM:raeln(output)
INCI:real
(output)
Deskripsi
mulai
Read(M)
CM ß
M * 100
INCI ßCM
/ 2.54
Write(CM)
Write(INCI)
selesai
Algoritma diatas dapat jga
dituliskan dengan flowchart sebagai berikut:
Gamber 3. Flowchart
konversi jarak meter ke inchi
Program 11.
Program Konversi jarak meter ke inchi
Program konversi_MkeInc;
Uses wincrt;
Var
M,CM,INCI
: real;
Begin
Writeln(‘Program Konversi
Meter Ke Inci’);
Write(‘Masukan Jarak dalam
Meter =’);
Readln(M);
CM:=M*100;
INCI:=CM/2.54;
Writeln(‘Ukuran dalam CM
=’,CM:5:2);
Writeln(‘Ukuran dala Inci
=’,INCI:5:2);
End.
Hasil Output
Program
Hasil Output Program:
Program Konversi Meter Ke Inci
Masukan Jarak dalam Meter =100
Ukuran dalam CM =10000.00
Ukuran dala Inci =3937.01
D.
Seleksi
Komputer
memiliki kemampuan untuk melakukan pemilihan terhadap beberapa alternatife yang
ada. Sebuah aksi atau statemen akan dilaksanakan apabila sebuah kondisi
terpenuhi. Pemilihan ini tidak hanya berlaku untuk satu buah kondisi tetapi
juga dapat beberapa kondisi.
Didalam persoalan
sehari-hari, kasus-kasus pemilihan ini banyak sekali terjadi. Sebagai contoh
untuk dapat menonton film dibioskop seseorang harus sudah berumur lebih dari 17
tahun. Kondisi ini akan memberikan aksi yang berbeda, jika seseorang berusia
lebih dari 17 tahun maka boleh masuk tetapi apabila kondisi ini tidak terpenuhi
maka seseorang tersebut tidak boleh masuk.
Kasus yang
lain dapat dilihat pada sebuah permasalahan bagaimana membagi mahasiswa menjadi
dua kelompok. Jika nim mahasiswa ganjil maka mahasiswa tersebut masuk kelompok
A. Jika Nim mahasiswa genap maka mahasiswa tersebut masuk kelompok B.
Algoritma
untuk menylesaikan masalah diatas dapat dilakukan dengan langkah sebagai
berikut:
1.
Baca Nim dari mahasiswa
2.
Cek nim mahasiswa
apakah nim mod 2 = 1
Jika
benar maka mahasiswa tersebut masuk kelas A
Jika
salah maka mahasiswa tersebut masuk kelas B
3.
Cetak Kelas
Pada langkah-langkah diatas,
khususnya pada langkah ke 2 terdapat proses pengecekan dengan pemilihan kondisi
yang berbeda maka akan memberikan statemen yang berbeda. Proses ini disebut
dengan pemilihan (selection).
Algoritma
diatas dapat dinyatakan dalam flowchart sebagai berikut:
Gambar 4. Flowchart
Pemilihan Kelas
Untuk
menyatakan sebuah pemilihan, didalam algritma pseudocode maupun pada program
dapat nyatakan dengan perintah If ..
Then .. Else dan perintah Case .. Of.
1.
Pernyataan If .. Then .. Else
Perintah if .. Then .. Else secara umum memiliki tiga struktur yang
berbeda. Struktur ini menunjukan jumlah kondisi dan aksi yang berlaku. Pada
tabel berikut akan menunjukan perbedaan struktur tersebut.
Tabel 12.
Perintah If.. then.. else
Perintah
|
Keterangan
|
If Kondisi then
Aksi1
|
Perintah ini digunakan untuk
satu buah kondisi yang mempengaruhi suatu aksi.
|
If Kondisi then
Aksi1
Else
Aksi2
|
Perintah ini digunakan untuk
sebuah kondisi yang akan mempengaruhi dua buah aksi. Jika kondisi terpenuhi
maka aksi pertama yang akan dijalankan tetapi sebaliknya jika kondisi
tersebut tidak terpenuhi maka aksi kedua yang akan dijalankan,
|
If Kondisi1 then
Aksi1
Else if kondisi2 then
Aksi2
Else if kondisi3 then
Aksi 3
…
else if kondisiN-1 then
aksiN-1
else
aksiN
|
Perintah ini digunakan untuk
banyak kondisi yang mempengaruhi banyak aksi. Kondisi pertama dinyatakan
dengan dengan if kondisi1 then aksi1. Untuk kondisi kedua sampai kondisi
sebelum terakhir dinyatakan dengan else if kondisi then aksi. Sedangkan untuk
kondisi terakhir cukup dinyatakan dengan else.
|
Pada tabel diatas, baik aksi1, aksi2 maupun aksi n dapat berupa
pernyataan tunggal maupun pernyataan majemuk. Jika aksi hanya berupa satu
pernyataan maka pernyataan tersebut dapat langsung dituliskan tetapi apabila
aksi tersebut lebih dari satu pernyataan maka pernyataan-pernyataan tersebut
dapat dituliskan dengan begin dan end pada awal dan akhir pernyataan.
Gambaran lebih detil mengenai ketiga jenis instrusi tersebut dapat
dilihat pada kasus pengecekan sebuah bilangan apakah merupakan bilangan positif
atau bukan.
Algoritma
cek_positif;
Deklarasi
bilangan:integer (input)
Deskripsi
Read(bilangan)
If (bilangan > 0) then
Write(‘Positif’)
End if
Algoritma ini
dapat digambarkan dengan flowchart sebagai berikut:
Gambar
5. Flowchart pengecekan bilangangan positif
Program 12.
Pengecekan bilangan positif
Program Cek_positif;
Uses wincrt;
Var bilangan:integer;
Begin
Writeln(‘Program Cek Bilangan Posistif’);
Write(‘Masukan Sebuah Angka=’);
Readln(bilangan);
If
bilangan > 0 then
Writeln(‘Bilangan Positif’);
End.
Output dari
program
Program Cek Bilangan Posistif
Masukan Sebuah Angka=9
Bilangan Positif
Pada program diatas, sebuah kondisi mempengaruhi sebuah aksi sehingga
penulisannya menggunakan perintah if
kondisi then aksi. Aksi pada program tersebut hanya terdiri dari satu
pernyataan. Jika aksi tersebut terdiri dari dua buah pernyataan atau lebih
dapat ditambahkan begin dan end pada awal dan akhir
pernyataan-pernyataan tersebut. Didalam aksi tersebut dapat diberikan
pernyataan tambahan dengan menyebutkan bilangan yang dimasukan sehingga menjadi
dua buah pernyataan, maka program dapat ditulis sebagai berikut:
If bilangan > 0 then
Begin
Writeln(‘Bilangan=’,bilangan);
Writeln(‘Bilangan Positif’);
End;
Algoritma tersebut dapat dikembangkan dengan sebuah kondisi yang
mempengaruhi dua buah aksi. Algortima
dari pengembangan ini dapat lihat sebagai berikut ini.
Algoritma
cek_positif2;
Deklarasi
bilangan:integer (input)
Deskripsi
Mulai
Read(bilangan)
If (bilangan > 0) then
Write(‘Positif’)
Else
Write(‘Bukan Positif’)
End if
Selesai
Algoritma ini
dapat digambarkan denganflowchart sebagai berikut:
Gambar
6. Flowchart Cek bilangan positif 2.
Program 13.
Pengecekan bilangan positif 2.
Program Cek_positif2;
Uses wincrt;
Var bilangan:integer;
Begin
Writeln(‘Program Cek Bilangan Posistif’);
Write(‘Masukan Sebuah Angka=’);
Readln(bilangan);
If
bilangan > 0 then
Writeln(‘Bilangan Positif’)
Else
Writeln(‘Bukan Bilangan Positif’);
End.
Hasil Output
Program
Program Cek Bilangan Posistif
Masukan Sebuah Angka=-5
Bukan Bilangan Positif
Sebuah kondisi mempengaruhi dua buah aksi sehingga dalam penulisannya
dapat digunakan perintah if kondisi then
aksi1 else aksi2. Jika kondisi tersebut (bilangan > 0) terpenuhi maka
aksi pertama yang akan dijalankan yaitu menuliskan Positif. Jika kondisi tersebut tidak terpenuhi maka aksi yang kedua
yang akan dijalankan yaitu menuliskan Bukan
Positif. Pada pernyataan aksi yang pertama tidak diberikan tanda titik koma
(;) sebagai akhir perintah karena masih terdapat perintah berikutnya didalam
pernyataan if. Pada setiap aksi tersebut juga dapat ditambahkan satu pernyataan
yang menampilkan bilangan yang dimasukan sehingga setiap aksi terdiri dari dua
pernyataan.
If bilangan > 0 then
Begin
Writeln(‘Bilangan=’,bilangan);
Writeln(‘Bilangan
Positif’);
End
Else
Begin
Writeln(‘Bilangan=’,bilangan);
Writeln(‘Bukan
Bilangan Positif’);
End;
End if
Pengembangan berikutnya dapat dilakukan untuk memberikan gambaran
mengenai beberapa kondisi yang mempengaruhi beberapa aksi. Pada algoritma
berikut adalah gambaran untuk beberapa kondisi tersebut.
Algoritma
cek_positif3;
Deklarasi
bilangan:integer (input)
Deskripsi
Mulai
Read(bilangan)
If (bilangan > 0) then
Write(‘Positif’)
Else if (bilangan < 0) then
Write(‘Negatif’)
Else
Write(‘Nol’)
End if
Selesai
Algortima ini
dapat digambarkan dengan flowchart sebagai berikut:
Gambar
7. Flowchart cek bilangan positif 3.
Program 14.
Pengecekan bilangan positif 3.
Program Cek_Positif3;
Uses wincrt;
Var bilangan:integer;
Begin
Writeln(‘Program Cek Bilangan Posistif’);
Write(‘Masukan
Sebuah Angka=’);
Readln(bilangan);
If
bilangan > 0 then
Writeln(‘Bilangan Positif’)
Else
if bilangan < 0 then
Writeln(‘Bukan Bilangan Positif’)
Else
Writeln(‘Bilangan Nol’);
End.
Hasil output
program
Program Cek Bilangan Posistif
Masukan Sebuah Angka=0
Bilangan Nol
Jika kondisi pertama terpenuhi yaitu bilangan > 0 maka aksi pertama
akan dilaksanakan yaitu menuliskan positif.
Apabila kondisi pertama ini tidak terpenuhi maka akan dilakukan pengecekan pada
kondisi kedua yaitu bilangan < 0. Jika kondisi kedua ini terpenuhi maka aksi
kedua akan dilaksanakan yaitu menuliskan Negatif.
Jika kondisi pertama tidak terpenuhi dan kondisi kedua tidak terpenuhi maka
aksi ketiga yang akan dilaksanakan yaitu menuliskan nol. Pada akhir pernyataan aksi pertama dan kedua tidak diakhiri
denan titik koma (;) karena masih ada pernyataan lain didalam statemen if yaitu
pernyataan else pada bagian terakhir. Pada aksi pertama dan aksi kedua juga
dapat ditambahkan pernyataan untuk menamplkan bialangan yang dimasukkan
sehingga aksi tersebut tidak hanya terdiri dari pernyataan seperti pembahasan
sebelumnya.
Kasus yang lain dapat dilihat pada algoritma untuk melakukan konversi
nilai dari angka menjadi huruf. Ketentuan untuk melakukan konversi tersebut
adalah sebagai berikut:
Nilai 0 – 30 = ‘E’
Nilai 31 – 50 = ‘D’
Nilai 51 – 70 = ‘C’
Nilai 71 – 85 = ‘B’
Nilai 86 – 100 = ‘A’
Dari ketentuan
tersebut dapat disusun sebuah algoritma sebagai berikt:
Algoritma
Konversi_Nilai;
Deklarasi
Nilai_angka: 0 .. 100 (input)
Nilai_huruf:char (output)
Deskripsi
Mulai
Read(Nilai_anka)
If (nilai_angka > 85) then
Nilai_huruf ß
’A’
Else if (nilai_angka > 70) then
Nilai_huruf ß
’B’
Else if (nilai_angka > 50) then
Nilai_huruf ß
’C’
Else if (nilai_angka > 30) then
Nilai_huruf ß
’D’
Else
Nilai_huruf ß
’E’
End if
Write(nilai_huruf)
Selesai
Algortima ini
dapat digambarkan denganflowchart sebagai berikut:
Gambar
8. Flowchart konversi nilai ke huruf
Program 15. Konversi Nilai1
Program konversi_nilai1;
Uses wincrt;
Var
Nilai_angka:0..100;
Nilai_huruf:char;
Begin
Writeln('Program Konversi Nilai');
Write('Masukan Nilai Angka =');
Readln(nilai_angka);
if nilai_angka > 85 then
nilai_huruf:='A'
else if nilai_angka > 60 then
nilai_huruf:='B'
else if nilai_angka > 50 then
nilai_huruf:='C'
else if nilai_angka > 30 then
nilai_huruf:='D'
else
nilai_huruf:='E';
writeln('Nilai Huruf=',nilai_huruf);
end.
Hasil Output
program:
Program Konversi Nilai
Masukan Nilai Angka =70
Nilai Huruf=B
2.
Pernyataan Case .. Of
Pernyataan case .. of merupakan perluasan dari pernyataan if. Untuk
pemilihan yang terdiri dari banyak kondisi, struktur if melakukan pengecekan
terhadap setiap kondisi, bila satu kondisi tidak terpenuhi baru akan
dilanjutkan pada kondisi yang berikutnya. Berbeda dengan pernyataan if,
penyataan case melakukan pengecekan dengan pemilihan kondisi yang sesuai
parameter yang ada.
Pernyataan case dapat dituliskan dengan struktur sebagai berikut:
Case parameter of
Pilihan1 : aksi1
Pilihan2 : aksi2
…
pilihanN : aksiN
end;
Pernyataan diatas juga dapat dutuliskan dengan strukur yang lain yaitu:
Case parameter of
Pilihan1 : aksi1
Pilihan2 : aksi2
…
PilihanN-1 : aksiN-1
else
aksiN
end;
Struktur case akan memberikan nilai yang sama dengan struktur if.
Perbedaan hanya terdapat pada cara penulisannya saja. Pernyataan case ini
digunakan dalam algoritma pseudocode dan program sedangkan untuk algoritma
flowchart digunakan lambang symbol percabangan/kondisi.
Ekspresi yang digunakan pada pernyataan case hanya berupa tipe data
ordinal dengan batasan nilai antara -32768 – 32767. tipe data yang lain seperti
longint, string, atau word tidak dapat digunakan.
Kasus seleksi pada pembahasan sebelumnya yaitu pengecekan nilai dengan
pernyataan if dapat juga dilakukan dengan pernyataan case sebagai berikut:
Algoritma
Konversi_Nilai;
Deklarasi
Nilai_angka: 0
.. 100 (input)
Nilai_huruf:char
(output)
Deskripsi
Mulai
Read(Nilai_angka)
Case
nilai_angka of
86 .. 100: nilai_huruf ß
’A’;
71 .. 85 : nilai_huruf ß
’B’;
51 .. 70 : nilai_huruf ß
’C’;
31 .. 50 : nilai_huruf ß
’D’
0 .. 30 : nilai_huruf ß ’E’
end;
Write(nilai_huruf)
Selesai
Program 16.
Konversi Nilai2
Program koversi_nilai2;
Uses wincrt;
Var
Nilai_angka:0..100;
Nilai_huruf:char;
Begin
Writeln(‘Program Konversi Nilai’);
Write(‘Masukan Nilai Angka =’);
Readln(nilai_angka);
Case
nilai_angka of
86 .. 100: nilai_huruf:=’A’;
71 .. 85 : nilai_huruf:=’B’;
51 .. 70 : nilai_huruf:=’C’;
31 ..
50 : nilai_huruf:=’D’;
0 .. 30 : nilai_huruf :=’E’;
end;
writeln(‘Nilai Huruf=’,nilai_huruf);
end.
Hasil Output
program:
Program Konversi Nilai
Masukan Nilai Angka =60
Nilai Huruf=C
E.
Perulangan
Perulangan
adalah suatu proses terhadap hal yang sama yang diulang beberapa kali sampai
suatu kondisi atau batas tertentu terpenuhi. Untuk memberikan gambaran mengenai
perulangan dapat disimak pada kasus berikut ini.
Terdapat sebuah permasalahan
bagaimana mencetak bilangan bulat dari 1 sampai dengan 10. Hasil output yang
diinginkan adalah 1 2 3 4 5 6 7 8 9 10.
Langkah-langkah untuk
menyelesakan permasalahan diatas dapat dilakuakan sebagai berikut:
1.
Menentukan nilai awal yaitu 1.
2.
Cetakan nilai tersebut sebanyak 10 kali.
3.
Setiap langkah mencetak lakukan penambahan 1
(increament 1).
Algoritma
diatas mengandung langkah-langkah yang diulang. Langkah-langkah ini disebut
dengan perulangan. Istilah lain dari perulangan adalah looping atau repetition.
Didalam bahasa pemrograman pascal perulangan dapat dituliskan dengan tiga pernyataan yang berbeda.
Pernyataan tersebut adalah:
-
for to do
-
while do
-
repeat until
Penjelasan mengenai ketiga
pernyataan diatas akan dibahas pada bagian-bagian tersendiri.
1.
Struktur For
Struktur perulangan for merupakan struktur untuk meuliskan perulangkan
selama dalam kondisi tertentu. Nilai perulangan sudah ditentukan dengan sebuah
nilai awal dan nilai akhir. Nilai awal merupakan nilai yang diberikan untuk
memulai suatu instruksi yang berada didalam blok tersebut. Perulangan terhadap
pernyataan atau instrukti tersebut akan berhenti jika kondisi akhir yang telah
disebut terpenuhi.
Terdapat dua buah jenis pernyataan dengan menggunakan struktur for yaitu pernyataan naik dan
pernyataan turun. Perulangan naik dinyatakan dengan pernyataan For…To…do, sedangkan untuk perulangan
turun dapat dinyatakan dengan pernyataan For…downto
…do.
Pernyataan For…to…do dapat
dituliskan dengan sintaks For
counter=nilai_awal To nilai_akhir Do aksi/blok aksi dimana nilai_akhir lebih
besar dari nilai awal. Untuk pernyataan yang sebaliknya dapat digunakan
perintah For..Downto..Do dengan sintaks For
counter=nilai_awal downto nilai_akhir do aksi/blok aksi dimana nilai_awal lebih besar dari nilai akhir.
Algoritma berikut adalah tentang mencetak bilangan bulat dari 1 sampai
dengan 10 dengan menggunakan perulangan For…To…Do.
Algoritma
PerulanganFor1;
Deklarasi
I:integer
Deskripsi
mulai
For I ß
1 to 10 do
Write(i)
End for
Selesai
Algoritma ini
dapat digambarkan dengan flowchart sebagai berikut:
Gambar
9. Flowchart perulangan for to do
Program 17.
Perulangan dengan for 1
Program perulananFor1;
Uses wincrt;
Var
I:integer;
Begin
Writeln(‘Program
Perulangan dengan For’);
For
i:=1 to 10 do
Writeln(i);
End.
Hasil output
program
Program Perulangan dengan For
1
2
3
4
5
6
7
8
9
10
Pada kasus diatas, perintah writeln(i) diulang sebanyak sepuluh kali,
mulai dari i=1 sampai i=10. Perulangan ini secara otomatis akan menambahkan counter dengan 1. Sehinggga
i akan mengalami increament 1 sampai
dengan i =10.
Apabila kasus tersebut dibalik yaitu mengulang penulisan i tetapi i
dimulai dari 10 sampa ke 1 maka dapat dilakukan dengan perintah for…downto…do.
Algoritma
PerulanganFor2;
Deklarasi
I:integer
Deskripsi
Mulai
For I ß 10 downto 1 do
Write(i)
Selesai
Algoritma ini
dapat digambarkan dengan flowchart dengan sebabagai berikut:
Gambar
10. Flowchart for downto do
Program 18.
Perulangan denga for 2
Program perulananFor;
Uses wincrt;
Var
I:integer;
Begin
Writeln(‘Program
Perulangan dengan For’);
For
i:=10 downto 1 do
Writeln(i);
End.
Hasil output
program:
Program Perulangan dengan For
10
9
8
7
6
5
4
3
2
1
Program diatas akan mencetak nilai i mulai dari 10 sampai dengan 1. I
sebagai conter dari perulangan maka secara otomatis akan mengalami pengurangan
1 (decreament) pada setiap langkah perulangan. Pernyataan aksi yang ada pada
program diatas hanya terdiri dari satu statemen. Apabila aksi tersebut terdiri
dari beberapa statemen, maka penulisannya didalam program pascal harus ditambah
dengan penyaaan begin sebelum aksi
dan pernyataan end; setelah
pernyataan aksi.
Contoh yang lain dapat dilihat pada kasus menghitung nilai rata-rata
dari beberapa data yang dimasukan. Perulangan akan dilakukan untuk membaca data
dan menjumlahkannya dalam variabel tertentu. Hasil penjumlahan dari data yang
dimasukan tersebut akan dihitung rata-ratanya dengan pembagian.
Algoritma
rerata1;
Deklarasi
I,n,jumlah,x:integer
Rerata:real;
Deskripsi
Mulai
Read (n)
Jumlahß0
For I ß 1 to n do
Read(x)
JumlahßJumlah+x
End for
Rerata ßjumlah/n
Write(rerata)
Selesai
Algoritma ini
dapat digambarkan dengan flowchet sebagai berikut:
Program
11. Flowchart menghitung rata-rata 1
Program 19.
Menghitung rata-rata 1
Program rerata1;
Uses wincrt;
Var
i,n,x,jumlah:integer;
Rerata:real;
Begin
Writeln(‘Program Mengitung Rata-rata’);
Write(‘Masukan Jumlah Data=’);
Readln(n);
Jumlah:=0;
For i:=1 to n do
Begin
Write(‘Masukan Data ke-‘,I,’=’);
Readln(x);
Jumlah:=jumlah+x;
End;
Rerata:=jumlah/n;
Writeln(‘Rata-rata=’,rerata:5:2);
End.
Hasil Output
program
Program Mengitung Rata-rata
Masukan Jumlah Data=5
Masukan Data ke-1=6
Masukan Data ke-2=5
Masukan Data ke-3=8
Masukan Data ke-4=7
Masukan Data ke-5=7
Rata-rata= 6.60
Pada perulangan diatas, aksi tidak hanya terdiri satu satu pernyataan
tetapi lebih dari satu pernyataan. Setelah pernyataan for maka perlu
ditambahkan pernyataan begin dan
pernyataan end setelah akhir blok
aksi ditambahkan pernyataan end.
2.
While do
Struktur while do merupakan perintah untuk melakukan perulangan selama
sebuah kondisi terpenuhi atau bernilai benar. Jika kondisi yang disyaratkan
sudah tidak terpenuhi maka perulangan akan berhenti. Proses pengecekan terhadap
kondisi akan dilakukan terlbi dahulu sebelum pernyataan yang akan diulang. Oleh
karena itu perlu adanya sebuah proses yang dapat mengontrol kondisi agar
berhenti.
Perulangan dengan while do lebih fleksibel karena program tidak
ditentukan berapa kali perulangan terjadi. Dari kasus mencetak bilangan dari 1
sampai 10 pada bagian sebelumnya dapat juga diselesaikan dengan struktur while
do.
Algoritma
PerulanganWhile;
Deklarasi
i:integer
Deskripsi
Mulai
I ß1
While (I <= 10 ) do
Write(i)
I ß i+1
Endwhile
Selesai
Algoritma ini
dapat digambarkan dengan flowchart sebagai berikut:
Gambar
12. Flowchart perulangan while
Program 20.
Perulangan dengan while
Program perulanganwhile;
Uses wincrt;
Var
I:integer;
Begin
writeln('Program Perulangan dengan While');
I:=1;
While i<= 10 do
Begin
Writeln(i);
I:=i+1;
End;
End.
Hasil Output
program
Program Perulangan dengan While
1
2
3
4
5
6
7
8
9
10
Pada program tersebut, aksi setelah while do dinyatakan dalam beberapa pernyataan sehingga dituliskan
dalam pernyataan begin dan end. Pada program diatas perulangan
sudah diketahui yaitu sebanyak sepuluh kali. Dalam kasus yang lain struktur
while do dapat digunakan untuk perulangan yang belum diketahui jumlah
perulangannya. Sebagai contoh program untuk menghitung data yang dimasukan dan
rata-ratanya sampai data yang dimasukan berupa angka nol (0).
Algoritma
rerata2;
Deklarasi
i,n,jumlah,x:integer
Rerata:real;
Deskripsi
Mulai
Read (x)
n ß 0
Jumlahß0
While (x <>0) do
Nß n+1
JumlahßJumlah+x
Read(x)
Endwhile
Rerata ßjumlah/n
Write(n)
Write(jumlah)
Write(rerata)
Selesai
Algoritma ini dapat digambarkan dengan flowchart
sebagai berikut:
Gambar
13. Flowchart menghitung rata-rata dengan while
Program 21.
Menghitung rata-rata dengan while
Program rerata2.
uses wincrt;
var
i,n,x,jumlah:integer;
rerata:real;
begin
writeln('Masukan nilai-nila (0 untuk
berhenti)=');
readln(x);
n:=0;
while x<>0 do
begin
n:=n+1;
jumlah:=jumlah+x;
read(x);
end;
rerata:=jumlah/n;
writeln(‘Jumlah=’,jumlah);
writeln(‘Rerata=’,rerata);
end.
Hasil output
program:
Masukan nilai-nila (0 untuk berhenti)=
6
7
9
7
8
9
0
Jumlah=46
Rerata= 7.66666666666667E+0000
Pada program
diatas data yang diinputkan berupa angka nol (0) tidak akan dihitung karena
sebagai stoping point (tanda untuk
berhenti perulangan).
3.
Repeat Until
Struktur Repeat..until merupakan sebuah perintah untuk melakukan
perualangan terhadap suatu pernyataan atau blok pernyataan sampai suatu kondisi
terpenuhi. Jika kondisi sudah terpenuhi maka pernyataan tidak akan diulang
lagi. Pemeriksaan kondisi ada pada bagian setelah pernyataan yang diulang.
Struktur ini juga perlu adanya suatu proses yang dapat mengontrol program agar
program dapat berhenti.
Perulangan dengan repeat until juga lebih fleksibel bila dibandingkan
dengan struktur for to do. Perulangan ini juga tidak ditentukan berapa kali
suatu pernyataan harus dilakukan. Dari kasus mencetak bilangan dari 1 sampai 10
dapat dilihat pada algoritma dan program dibawah ini.
Algoritma
PerulanganRepeat;
Deklarasi
i:integer
Deskripsi
Mulai
i ß1
Repeat
Write(i)
I ß i+1
Until (I > 10 )
selesai
Algoritma ini
dapat digambaran dengan flowchart sebagai berikut:
Gambar
14. Flowchart perulangan dengan repeat
Program 22.
Perulangan dengan repeat
program perulanganRepeat;
uses wincrt;
var
i:integer;
begin
writeln('Program Perulangan dengan Repeat');
i:=1;
repeat
writeln(i);
i:=i+1;
until i>10
end.
Hasil output
program
Program Perulangan dengan Repeat
1
2
3
4
5
6
7
8
9
10
Pada program diatas, aksi dengan pernyataan-pernyataan yang ada setelah
pernyataan while akan selalu diulang sampai pada kondisi yang dinyatakan dengan
klausa until terpenuhi. Pernyataan-pernyatan yang ada pada blok aksi tidak
digunakan begin dan end walupun pada blok tersebut terdapat beberapa
pernyataan. Pada kasus yang lain yaitu pada algoritma menghitung rata-rata dari
sejumlah bilangan yang dimasukan sampai bilangan yang dimasukan berupa angka
nol.
Algoritma
rerata2;
Deklarasi
i,n,jumlah,x:integer
Rerata:real;
Deskripsi
Mulai
n ß 0
Jumlahß0
Repeat
Nß n+1
Read(x)
JumlahßJumlah+x
Until x=0
Rerata ßjumlah/(n-1)
Write(n)
Write(jumlah)
Write(rerata)
Selesai
Algoritma ini
dapat digambarkan dengan flowchart sebagai berikut:
Gambar
15. Flowchart menghitung rata-rata dengan repeat
Program 23.
Menghitung rata-rata dengan repeat
Program rerata3;
Uses wincrt;
var
i,n,jumlah,x:integer;
rerata:real;
begin
writeln('Masukan data (0 untuk berhenti)=');
n:=0;
jumlah:=0;
repeat
n:=n+1;
readln(x);
jumlah:=jumlah+x;
until x=0;
rerata:=jumlah/(n-1);
writeln('Jumlah=',jumlah);
writeln('Rerata=',rerata);
end.
Hasil output
program:
Masukan data (0 untuk berhenti)=
5
9
8
7
8
6
0
Jumlah=43
Rerata= 7.16666666666667E+0000
Latihan
1.
Buatlah program untuk mencetak bilangan ganjil dai 1
sampai dengan 100.
Pembahasan
Analisa:
Mencetak
bilangan ganjil dari 1 sampai dengan 100 dapat dilakukan dengan perualngan.
Untuk menentukan apakah sebuah bilangan tersebut bilagan ganjil atau bukan
dapat dilakukan dengan modulasi 2 pada bilangan dari 1 sampai dengan 100.
apabila hasil modulasi adalah 0 maka bilangan tersebut genap tetapi apabila
hasil modulasi 1 maka bilangan tersebut ganjil dan siap dicetak.
Algoritma
cetak bilangan ganjil
Deklarasi
i:integer
Deskripsi
Mulai
For i:=1 to 100 do
If i mod 2 = 1 then
Write(i)
End if
End for
Selesai
Program
mencetak bilangan ganjil.
Program Cetak_bil_ganjil;
Uses wincrt;
Var
i:integer;
Begin
For
i:=1 to 100 do
If i mod 2 = 1 then
Write(i,’ ‘);
End;
2.
Buatlah program untuk menghitung jumlah factorial dari
nilai n yan dimasukan. Nilai factorial didefinisikan sebagai berikut:
3! = 1 X 2 X 3
= 6
4! = 1 X 2 X 3
X 4 = 24
n! = 1 X 2 X 3
X …. X n
Pembahasan
Analisa:
Nilai
faktorial dari n adalah nilai perkalian mulai dari 1 sampai dengan n. perkalian
ini dapat dilakukan dengan perulangan. Setiap langkah dalam perulangan akan
dikalikan dengan I oleh karena itu nilai awal untuk hasilnya adalah 1.
Algoritma
factorial
Deklarasi
i,n:integer
Fak:longint;
Deskripsi
Mulai
Fakß1
Realn(n)
For iß1 to n do
Fakßfak
* i
End for
Write(fak)
Selesai
Algoritma
dengan flowchart
Program
menghitung nilai faktorial
Program factorial;
Uses wincrt;
Var
i,n:integer;
fak:longint;
Begin
writeln('Program menghitung nilai
faktorial');
write('Masukan jumlah data =');
readln(n);
fak:=1;
for i:=1 to n do
fak:=fak*i;
writeln(n,' Faktorial =',fak);
end.
gambar flowchartnya knapa gak keliatan ???
BalasHapus