Euclidean
mencari
pembagi
bersama
terbesar,
gcd,
dari
dua
II.
Mulai
Baca m dan n
n=0
tidak
r=m MOD n
m=n
n=r
Ya
Tulis
m
Selesai
III.
Menggunakan pseudo-code.
Contoh
Program Euclidean
{Diberikan dua bilangan tak-negatif m dan n (m n).
Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari dua
bilangan, yaitu bilangan terbesar yang habis membagi m dan n}
DEKLARASI
m, n : integer {bilangan bulat yang dicari pbt nya}
r : integer { sisa hasil bagi }
ALGORITMA:
Read(m,n)
While m 0 do
r
m MOD n
endwhile
write(m)
Algoritma dan Pemrograman
NO.
1
PERNYATAAN
Penugasan
ALGORITMIK
BAHASA PASCAL
:=
Pembacaan
read
read
readln
Penulisan
write
write
writeln
Contoh
Algoritmik:
DEKLARASI
Type Titik : record <x:real, y:real>
p: Titik
a,b : integer
NamaArsip, h : string
nilai : real
c : char
ALGORITMA
nilai
1200.0
read(P.x, P.y)
read(NamaArsip)
h
Nama Arsip
read(a, b)
read(C)
write(Nama arsip: ,NamaArsip)
write(Koordinat titik adalah: ,P.x, ,, P.y)
write(b, nilai)
write(Karakter yang dibaca adalah: , C)
Pascal:
(* DEKLARASI *)
Type
Titik = record
x:real;
y:real;
end;
var
p
:
a,b
:
NamaArsip, h :
nilai
:
c
:
Titik
integer;
string[12];
real;
char;
(* ALGORITMA *)
Nilai:=1200.0;
readln(P.x, P.y);
readln(NamaArsip);
h := Nama Arsip;
readln(a, b);
readln(C);
writeln(Nama arsip: ,NamaArsip);
writeln(Koordinat titik adalah: ,P.x, ,, P.y);
writeln(b, nilai);
write(Karakter yang dibaca adalah: , C);
SOAL-SOAL
1. Tuliskan beberapa contoh algoritma dalam kehidupan sehari-hari. Dan tuliskan juga beberapa
contoh langkah dalam algoritma.
2. Tiga pasang suami isteri yang sedang menempuh perjalanan sampai ke sebuah sungai. Di situ
mereka menemukan sebuah perahu kecil yang hanya bisa menampung tidak lebih dari dua
orang setiap kali menyeberang. Penyeberangan sungai dirumitkan oleh keadaan bahwa para
suami sangat pencemburu dan tidak amu meninggalkan isteri-isteri mereka jika ada lelaki
lain. Tulis algoritma untuk menunjukkan bagaimana penyebrangan itu bisa dilakukan.
3. Misalkan terdapat dua buah ember, masing-masing mempunyai volum 5 liter dan 3 liter.
Tuliskan algoritma untuk memperoleh air sebanyak 1 liter dengan hanya menggunakan kedua
ember tersebut.
4. Di manakah letak kesalahan algoritma menjalankan sepeda motor berikut:
ALGORITMA menjalankan sepeda motor:
1. Hidupkan starter
2. Masukkan kunci kontak
3. Tekan gigi 1
4. Perbesar gas
5. jalan
5. Definisikan sebuah struktur untuk menyatakan data nasabah di sebuah bank. Data nasabah
terdiri atas field: nomor account, nama nasabah, alamat nasabah, kota nasabah, nomor telpon
nasabah, untuk setiap field, didefinisiakn tipe data yang cocok
6. Definisikan sebuah tipe struktur untuk menyatakan penerbangan di sebuah bandara. Data
penerbangan terdiri atas: nomor penerbangan (missal (GA306), bandara (kota) asal, bandara
tujuan, tanggal keberangkaran, jam keberangkatan (departure time), jam datang (arrival time).
Untuk setiap field, definisikan tipe data yang cocok.
7. Tuliskan rumus berikut dalam notasi algoritmik:
(a) V =
4
3
r3
(b) X1 =
(c) X12 =
(d) M =
b2 4ac
2a
b2 4ac
2a
d
ad bc b
c
a
8. Apa perbedaan n
matematika
9. Sebuah mobil melaju dengan kecepatan tetap v km/jam. Jika mobil tersebut berjalan selama t
jam, tuliskan algoritma untuk menghitung jarak yang ditempuh mobil (dalam km). Algoritma
tersebut membaca masukkan berupa v dan t, menghitung jarak dengan rumus s = vt, lalu
mencetak jarak tersebut
10. Translasikan algoritma pada nomor 5 ke dalam program dalam bahasa Pascal, lalu tes
program tersebut dengan bermacam-macam nilai v dan t.
NOTASI ALGORITMA
Pseudo-code
Notasi pseudo-code mempunyai korespondensi dengan notasi bahasa pemrograman sehingga
proses penerjemahan dari pseudo-code ke program menjadi lebih mudah. Tidak ada aturan baku
pada pseudo-code, sembarang versi pseudo-code dapat diterima asalkan bisa dipahami, tidak
seperti pada bahasa pemrograman.
Pernyataan 1
Tulis nilai X dan Y
write(X,Y)
write(X,Y)
write(X,Y);
Printf(%d %d, X,Y);
Write X,Y
Write(*,*) X,Y
Pernyataan 2
Pernyataan
Pseudo-code-nya
Algoritmik
Bahasa Pascal
Bahasa C
Bahasa Basic
Bahasa Fortran
Algoritma Kedua program untuk mencetak tabel konversi suhu dalam derajat Fahrenheit (F) dan
suhu ekuivalennya dalam derajat Celcius (C) dengan menggunakan rumus: C = 5/9 (F32)
PROGRAM Fahrenheit_Celcius
{Program untuk mencetak tabel Fahrenheit-Celcius dari x sampai y dengan
kenaikan sebesar step
Masukkan: suhu awal, suhu akhir, step
Keluaran: tabel konversi suhu dalam C dan F }
Algoritma dan Pemrograman
DEKLARASI
F, C : real
X, y, step : integer
ALGORITMA
read(x, y, step)
F
while F y do
C = 5/9 * (F 32)
write(F, C)
F
F + step
endwhile
Dengan memperhatikan dua algoritma di atas, terlihat bahwa teks algoritma terdiri dari tiga
bagian (blok) yaitu:
1. Bagian judul (header)
2. Bagian deklarasi (declaration)
3. Bagian algoritma
Bahasa Pascal
Program Nama_Program
{ penjelasan tentang program, uraian singkat masalah, masukkan dan
keluaran}
(* Deklarasi *)
[const]
{semua nama tetapan dan harga tetapan didefinisikan di sini}
[tipe]
{semua nama tipe bentukan didefinisikan di sini}
[var]
{semua nama variabel global bentukan didefinisikan di sini}
(* Algoritma *)
begin
{semua instruksi program dituliskan di sini}
end.
Translasi notasi algoritma ke dalam bahasa Pascal untuk program mencetak kata salam
dan konversi suhu dari Fahrenheit dan Celcius.
1. Program Mencetak Salam
PROGRAM Salam;
{Program untuk mencetak Salam, Masukkan program ini tidak ada.
Keluarannya adalah tulisan Salam di layar }
(* DEKLARASI *)
{tidak ada}
begin
(* ALGORITMA *)
Write(Salam);
end.
x, y, step : integer;
Begin
(* ALGORITMA *)
read(x);
read(y);
read(step);
F := x;
while F <= y do
begin
C := 5/9 * (F 32);
writeln(F,
, c);
F := F + step;
end;
end.
RUNTUNAN
Runtunan adalah struktur algoritma yang paling dasar yang berisi rangkaian instruksi yang
diproses secara skuensial, satu persatu, mulai dari instruksi yang pertama sampai instruksi
yang terakhir.
Algoritma runtunan (squence) satu atau lebih instruksi, yang berarti bahwa
1. tiap instruksi dierjakan satu persatu
2. tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang
3. urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagaimana yang tertulis dalam teks algoritmanya
4. akhir dari instruksi terakhir merupakan akhir algoritma
Contoh
1. Mencetak pesan salam
a. Algoritma untuk mencetak tulisan Salam
PROGRAM Salam
{Program untuk mencetak Salam}
DEKLARASI
{tidak ada}
ALGORITMA
Write(Salam)
b. String Salam disimpan dalam suatu variabel tipe string kemudian baru dicetak
PROGRAM Salam
{Program untuk mencetak Salam}
DEKLARASI
Pesan : string
ALGORITMA:
Pesan
Salam
Write(pesan)
10
2. Algoritma membaca nama seseorang dari papan ketik, lalu menampilkan ucapan
salam diikuti nama orang tersebut.
PROGRAM Salam
{ mencetak Salam diikuti nama orang. Nama orang dibaca dahulu }
DEKLARASI
nama : string
ALGORITMA
Read(nama)
Write(Salam, nama)
3. Algoritma membaca dua buah nilai untuk variabel A dan B, lalu mempertukarkan
nilai kedua variabel tersebut.
PROGRAM Pertukaran
{mempertukarkan nilai A dan B. Nilai A dan B dibaca dahulu}
DEKLARASI
A, B, C : integer
ALGORITMA
{A dan B sudah terdefinisi dengan nilai}
{perkukarkan nilai A dan B}
C
11
Pascal:
PROGRAM Pertukaran;
{mempertukarkan nilai A dan B. Nilai A dan B dibaca terlebih
dahulu}
(* DEKLARASI *)
A, B, C : integer;
(* ALGORITMA *)
begin
{baca nilai A dan B}
Write(A = ?); readln(A);
Write(B = ?); readln(B);
{perkukarkan nilai A dan B}
C := A {simpan nilai A dipenampung sementara C}
A := B {sekarang A dapat diisi nilai B}
B := C {isi B dengan nilai A semula yang tadi disimpan di C}
{tulis nilai A dan B setelah pertukaran}
Writeln(A = ?,A);
Writeln(B = ?,B);
end.
4. Algoritma membaca panjang dan lebar kemudian menghitung luas persegi panjang =
panjang kali lebar.
PROGRAM Luas_persegi_panjang
DEKLARASI
Panjang
: real
Lebar
: real
Luas
: real
ALGORITMA
read(panjang, lebar)
luas
panjang * lebar
write(luas)
12
Pascal:
PROGRAM Luas_persegi_panjang;
(* DEKLARASI *)
Panjang
: real;
Lebar
: real;
Luas
: real;
(* ALGORITMA *)
begin
write(berapa panjang persegi ? = ); readln(panjang);
write(berapa lebar persegi ?
= ); readln(lebar);
5. Algoritma membaca waktu tempuh seorang pelari maraton dalam jam, menit, detik
ke dalam detik.
PROGRAM Konversi_ke_detik
{ membaca waktu tempuh pelari maraton dalam jam, menit, detik
konversi ke detik dan hasilnya ditampilkan sebagai keluaran }
DEKLARASI
Type Jam = record
<
hh : integer {jam}
mm : integer {menit}
dd : integer {detik}
>
J : Jam
TotalDetik : integer
ALGORITMA:
read(jam, menit, detik)
totaldetik
write(totaldetik)
Algoritma dan Pemrograman
13
Pascal:
PROGRAM Konversi_ke_detik;
{ membaca waktu tempuh pelari maraton dalam jam, menit, detik
konversi ke detik dan hasilnya ditampilkan sebagai keluaran }
(* DEKLARASI *)
Type Jam = record
hh : longint; {jam}
mm : longint; {menit}
dd : longint; {detik}
end;
var
J : Jam;
Totaldetik : longint;
(* ALGORITMA: *)
begin
write(Jam
: ); readln(J.hh);
write(Menit: ); readln(J.mm);
write(Detik: ); readln(J.dd);
totaldetik := (J.hh*3600) + (J.mm*60) + J*ss;
writeln(Total Detik = ,totaldetik);
end.
{instruksi selanjutnya}
14
{instruksi selanjutnya}
c. Menutup arsip
Misalkan arsip data.txt telah selesai dibaca, cara menutup arsip tersebut adalah
Close(Fin);
Contoh
Misalkan arsip data.txt sudah berisi panjang dan lebar persegi panjang seperti berikut
(antara data dipisahkan dengan spasi)
15 20
Lebar
Luas
Fin, Fout
15
(* ALGORITMA *)
begin
{buka arsip masukkan}
assign(Fin, data.txt);
riset(Fin);
{buka arsip keluaran}
assign(Fout, hasil.txt);
rewrite(Fout);
{baca panjang dan lebar dari arsip Fin}
read(Fin, panjang, lebar);
luas := panjang * lebar;
{tulis luas persegi panjang ke arsip Fout}
Writeln(Fout, Luas persegi panjang = ,luas);
{tutup arsip}
close(Fin);
close(Fout);
SOAL-SOAL
1. Buatlah sebuah algoritma dengan spesifikasi sebagai berikut
Menampilkan tulisan Halo, siapa namamu?, lalu
Meminta pengguna memasukkan namanya, dan akhirnya
Menulis pesan senang berteman denganmu, <nama>, yang dalam hal ini <nama>
adalah string yang dibaca berdasarkan nama masukkan
2. Tulislah algoritma untuk menghitung luas bangun geometri lain (lingkaran, persegi,
segitiga, trapesium). Data masukkan dibaca dari piranti masukkan dan luas bangun
ditampilkan sebagai keluaran
3. Dibaca durasi waktu dalam detik. Tulislah algoritma untuk konversi waktu tersebut ke
dalam jam, menit, detik.
Algoritma dan Pemrograman
16
4. Tulislah algoritma untuk membaca panjang sebuah benda dalam satua meter, lalu
mengkonversinya ke dalam satuan inch, kaki dan yard (1 inch = 2,54 mm, 1 kaki =
30,48 cm, dan 1 yard = 0,9144 m)
5. Berat badan ideal ada hubungannya dengan tinggi badan seseorang. Untuk menentukan
berat badan ideal, tinggi badan dikurangi 100, lalu dikurangi lagi dengan 10% dari hasil
pengukuran pertama. Tulislah algoritma yang membaca tinggi badan lalu menentukan
berat badan yang ideal untuk tinggi tersebut.
17
salah
kondisi
benar
aksi
end
Aksi-1
Algoritma dan Pemrograman
end
18
Notasi algoritmik untuk masalah dua kasus adalah dengan menggunakan konstruksi IF-THENELSE (jika-maka-kalau tidak) dalam bentuk pernyataan
If kondisi then
Aksi-1
Else
Aksi-2
endif
Pernyataan di atas berarti bahwa aksi-1 akan dilaksanakan bila kondisi bernilai benar (true)
sebaliknya jika kondisi bernilai salah, maka aksi-2 yang akan dilaksanakan.
19
benar
Aksi-1
Kondisi1
benar
salah
Kondisi2
Aksi-3
Aksi-2
Masalah
kasus atau
dengan
THENif
end
end
else
if
salah
else
if
end
aksi-3
endif
endif
endif
Algoritma membaca sebuah bilangan bulat, kemudian menentukan apakah bilangan bulat
tersebut positif, negatif atau nol.
Baca bilangan bulat tersebut misalkan x,
Analisis kasus
Kasus 1: bila x > 0 maka x adalah bilangan positif,
Kasus 2: bila x < 0 maka x adalah bilangan negatif,
Kasus 3: bila x = 0 maka x adalah bilangan nol.
PROGRAM JenisBilanganBulat
{menentukan apakah bilangan bulat positif, negatif atau nol}
DEKLARASI
x : integer
ALGORITMA
read(x)
Algoritma dan Pemrograman
20
If x > 0 then
Write(positif)
else
If x < 0 then
Write(negatif)
else
If x = 0 then
Write(Nol)
endif
endif
endif
Pascal:
PROGRAM JenisBilanganBulat;
{menentukan apakah bilangan bulat positif, negatif atau nol}
uses wincrt;
(* DEKLARASI *)
var
x : integer;
(* ALGORITMA *)
begin
read(x);
if x > 0 then
write('positif')
else
if x < 0 then
write('negatif')
else
if x = 0 then
write('Nol')
end.
Tuliskan algoritma membacakan temparatur air (T dalam satuan derajat Celcius) pada tekanan
normal lalu menentukan apakah wujud air tersebut dalam padat (T 0 oC), cair (0 < T < 100),
atau gas (T > 100).
Misalkan suhu air adalah T
Analisis Kasus
Kasus 1: jika T 0 oC, maka air berwujud padat,
Kasus 2: jika 0 < T < 100, maka air berwujud cair,
Kasus 3: jika T > 100, maka air berwujud uap.
PROGRAM WujudAir
DEKLARASI
Var
T : real
Algoritma dan Pemrograman
21
ALGORITMA
read(T)
if T 0 then
write(padat)
else
if (T > 0) and (T < 100) then
write(Cair)
else
if T > 100 then
write(gas atau uap)
endif
endif
endif
Pascal:
PROGRAM WujudAir;
uses wincrt;
(* DEKLARASI *)
Var
T : real;
(* ALGORITMA *)
Begin
clrscr;
read(T);
if T <= 0 then
write('padat')
else
if (T > 0) and (T < 100) then
write('Cair')
else
if T > 100 then
write('gas atau uap')
end.
Tuliskan algoritma konversi nilai mahasiswa, berdasarkan rata skala 100 menjadi skala 4.
bila nilai NA 80 maka nilai A
bila nilai 75 NA < 80 maka nilai B+
bila nilai 70 NA < 75 maka nilai B
bila nilai 65 NA < 70 maka nilai C+
bila nilai 60 NA < 65 maka nilai C
bila nilai 55 NA < 60 maka nilai D+
bila nilai 50 NA < 55 maka nilai D
bila nilai 0 NA < 50 maka nilai E
PROGRAM KonversiNilai
{menghitung nilai konversi dari skala 100 menjadi skala 4}
Algoritma dan Pemrograman
22
DEKLARASI
NA : real
ALGORITMA
if NA 80 then
write(A)
else
if (NA >= 75) or (NA < 80) then
write(B+)
else
if (NA >= 70) or (NA < 75) then
write(B)
else
if (NA >= 65) or (NA < 70) then
write(C+)
else
if (NA >= 60) or (NA < 65) then
write(C+)
else
if (NA >= 55) or (NA < 60) then
write(D+)
else
if (NA>= 50) or (NA < 55) then
write(D)
else
if (NA < 50) then
write(E)
endif
endif
endif
endif
endif
endif
endif
Pascal:
PROGRAM KonversiNilai;
{menghitung nilai konversi dari skala 100 menjadi skala 4}
uses wincrt;
(*DEKLARASI *)
var
NA : real;
(* ALGORITMA *)
Begin
read(NA);
if NA >= 80 then
Algoritma dan Pemrograman
23
write('A')
else
if (NA >= 75) and (NA < 80) then
write('B+')
else
if (NA >= 70) and (NA < 75) then
write('B')
else
if (NA >= 65) and (NA < 70) then
write('C+')
else
if (NA >= 60) and (NA < 65) then
write('C')
else
if (NA >= 55) and (NA < 60) then
write('D+')
else
if (NA>= 50) and (NA < 55) then
write('D')
else
if (NA < 50) then
write('E')
end.
Struktur Case
Menentukan nama bulan berdasarkan nomor bulan
PROGRAM NamaBulan;
DEKLARASI
uses wincrt;
var
Nomor_bulan : integer;
ALGORITMA
begin
clrscr;
write('Ketik Nomor bulan (1 - 12): '); readln(Nomor_bulan);
case Nomor_bulan of
1 : writeln('Januari');
2 : writeln('Pebruari');
3 : writeln('Maret');
4 : writeln('April');
5 : writeln('Mei');
6 : writeln('Juni');
Algoritma dan Pemrograman
24
7 : writeln('Juli');
8 : writeln('Agustus');
9 : writeln('September');
10 : writeln('Oktober');
11 : writeln('Nopember');
12 : writeln('Desember');
else writeln('Bukan Bulan yang benar');
end;
end.
PROGRAM NamaBulan;
(* DEKLARASI *)
uses wincrt;
var
Nomor_bulan : integer;
(* ALGORITMA *)
begin
clrscr;
write('Ketik Nomor bulan (1 - 12): '); readln(Nomor_bulan);
case Nomor_bulan of
1 : writeln('Januari');
2 : writeln('Pebruari');
3 : writeln('Maret');
4 : writeln('April');
5 : writeln('Mei');
6 : writeln('Juni');
7 : writeln('Juli');
8 : writeln('Agustus');
9 : writeln('September');
10 : writeln('Oktober');
11 : writeln('Nopember');
12 : writeln('Desember');
Tugas Individu
else writeln('Bukan Bulan yang benar');
Kerjakan Semua Soal
end;
Kumpulkan pada pertemuan 2
end.
Atau ansoriunlam@yahoo.co.id
Soal Latihan
1. Buatlah algoritma yang membaca sebuah bilangan bulat positif lalu menentukan bilangan tersebut
merupakan kelipatan 4 atau bukan.
2. Pasar swalayan A memberikan diskon harga bagi pembeli yang nila total belanja lebih dari Rp
100.000,00. Tulis algoritma untuk menentukan harga belanja setelah dikurangi diskon. Data
masukkan adala nilai total belanja pembeli, sedangkan keluaran adalah diskon harga dan nilai
belanja setelah dikurangi diskon.
Algoritma dan Pemrograman
25
3. Tulis algoritma membaca 3 buah bilangan bulat, lalu mengurutkan 3 buah bilangan tersebut dari
nilai yang kecil ke nilai yang besar.
4. Tulislah algoritma yang membaca panjang (integer) tiga buah sisi segitiga a, b, dan c dalam hal ini a
b c. Tentukan apakah ketiga bilangan tersebut membetuk segitiga siku-siku, segitiga lancip, atau
segitiga tumpul (gunakan teorema Phytagoras)
5. Tulislah algoritma membaca bilangan bulat positif dalam rentang 1 10, dan konversikan ke angka
Romawi.
26
PENGULANGAN
Pengulangan yang akan dipelajari hanya 3 macam notasi konstruksi, yaitu:
1. Pernyataan FOR,
2. Pernyataan WHILE,
3. Pernyataan REPEAT.
a. Pernyataan FOR
Bentuk umum pernyataan FOR ada dua macam: menaik (ascending) atau menurun (descending).
FOR menaik
Program Pascal:
PROGRAM Cetak_banyak_Helloword;
{mencetak kata "Hello word" sebanyak 10 kali}
uses wincrt;
(* DEKLARASI *)
var
i : integer; {pencacah pengulangan }
(* ALGORITMA *)
Begin
Algoritma dan Pemrograman
27
clrscr;
for i := 1 to 10 do { ulangi sebanyak 10 kali }
writeln('Hello word');
end.
Contoh lain
PROGRAM PenjumlahanDeret
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
DEKLARASI
N: integer
i: integer
jumlah : integer
ALGORITMA
read(N)
jumlah 0 { inisialisasi jumlah deret = 0 }
for i to N { ulangi penjumlahan deret sebanyak N }
jumlah jumlah + 1
endfor
write(jumlah)
PASCAL:
PROGRAM PenjumlahanDeret;
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
uses wincrt;
(* DEKLARASI *)
var
N: integer;
i: integer;
jumlah : integer;
(* ALGORITMA *)
Begin
clrscr;
readln(N);
jumlah := 0; { inisialisasi jumlah deret = 0 }
for i := 0
to N do { ulangi penjumlahan deret sebanyak N }
begin
jumlah := jumlah + i;
end;
(* endfor *)
writeln(jumlah)
end.
FOR menurun
28
endfor
Contoh:
PROGRAM HitungMundur
{Hitung mundur dari 100}
DEKLARASI
i : integer
ALGORITMA
for i 100 downto 0 do
write(i)
endfor
write(Go)
Pascal:
PROGRAM HitungMundur;
{Hitung mundur dari 20}
uses wincrt;
(* DEKLARASI *)
var
i : integer;
(* ALGORITMA *)
Begin
for i:= 20 downto 0 do
writeln(i);
(* endfor *)
write('Go');
end.
Contoh lain:
PROGRAM Bilangan_segitiga
DEKLARASI
i, j : integer
ALGORITMA
for i 5 downto 1 do
for j 1 to i do
writeln(i);
endif
endif
endif
Pascal:
Algoritma dan Pemrograman
29
PROGRAM Bilangan_segitiga;
uses wincrt;
(* DEKLARASI *)
var
i, j : integer;
(* ALGORITMA *)
begin
clrscr;
for i:=5 downto 1 do
begin
for j:=1 to i do
begin
write(i);
end;
writeln;
end;
end.
b. Pernyataan WHILE
Bentuk umum pernyataan WHILE adalah:
while kondisi do
aksi
andwhile
Contoh:
PROGRAM Cetak_banyak_Helloword
{mencetak kata Hello word sebanyak 10 kali}
DEKLARASI
i : integer {pencacah pengulangan }
ALGORITMA
i 1
while i 10 do
write(Hello word)
i i+1
endwhile
Pascal:
PROGRAM Cetak_banyak_Helloword;
{mencetak kata "Hello word" sebanyak 10 kali}
uses wincrt;
(* DEKLARASI *)
var
i : integer; {pencacah pengulangan }
Algoritma dan Pemrograman
30
(* ALGORITMA *)
begin
i := 1;
while i < 10 do
begin
writeln('Hello word');
i := i + 1
end;
end.
contoh lain
PROGRAM PenjumlahanDeret
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
DEKLARASI
N: integer
i: integer
jumlah : integer
ALGORITMA
read(N)
jumlah 0 { inisialisasi jumlah deret = 0 }
i 1
while i N do
jumlah jumlah + 1
i i+1
endwhile { i > N }
write(jumlah)
Pascal:
PROGRAM PenjumlahanDeret;
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat
positif }
uses wincrt;
(* DEKLARASI *)
var
N: integer;
i: integer;
jumlah : integer;
(* ALGORITMA *)
Begin
Algoritma dan Pemrograman
31
clrscr;
read(N);
jumlah := 0; { inisialisasi jumlah deret = 0 }
i := 1;
while i < N do
begin
jumlah := jumlah + i;
i := i + 1
end;
(*endwhile*) { i > N }
write(jumlah);
end.
c. Pernyataan REPEAT
Bentuk umum pernyataan REPEAT adalah:
repeat
aksi
until kondisi
Contoh:
Menuliskan kata Hello word sebanyak 10 baris, menggunakan REPEAT UNTIL.
PROGRAM Cetak_banyak_Helloword
{mencetak kata Hello word sebanyak 10 kali}
DEKLARASI
i : integer {pencacah pengulangan }
ALGORITMA
i 1
repeat
writeln(Hello word)
i i+1
until i > 10
Pascal:
PROGRAM Cetak_banyak_Helloword;
{mencetak kata "Hello word" sebanyak 10 kali}
uses wincrt;
(* DEKLARASI *)
var
i : integer; {pencacah pengulangan }
32
(* ALGORITMA *)
begin
clrscr;
i := 1;
repeat
writeln('Hello word');
i := i + 1;
until i > 10;
end.
Contoh lain:
PROGRAM PenjumlahanDeret
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
DEKLARASI
N: integer
i: integer
jumlah : integer
ALGORITMA
read(N)
jumlah 0 { inisialisasi jumlah deret = 0 }
i 1
repeat
jumlah jumlah + 1
i i+1
until i > N
write(jumlah)
Pascal:
PROGRAM PenjumlahanDeret;
{ mejumlahkan deret
}
uses wincrt;
(* DEKLARASI *)
var
Algoritma dan Pemrograman
33
N: integer;
i: integer;
jumlah : integer;
(* ALGORITMA *)
begin
read(N);
jumlah := 0; { inisialisasi jumlah deret = 0 }
i :=
1;
repeat
jumlah := jumlah + i;
i :=
i + 1;
until i > N;
write(jumlah);
end.
34
PEMECAHAN MASALAH
Pada bagian ini akan disajikan beberapa contoh pemecahan masalah, pemecahan masalah
disajikan dari bentuk sederhana sampai pada bentuk yang lebih sulit (kompleks). Pemecahan
masalah diharapkan dapat menjadi pola-pola yang dapat digunakan untuk memecahkan masalah
yang sejenis.
(3)
x=
= (pd-bq)/(ad-bc) (4)
y=
= (aq-cp)/(ad-bc) (5)
dengan syarat ad bc 0
(6)
berdasarkan penyelesaian pada persamaan (4) dan (5), disusun algoritmik untuk penyelesaian
persamaan dua variabel.
PROGRAM PersamaanLinear
{ Penyelesaian persamaan linear dua variabel ax + by = p dan cx + dy = q menggunakan
penyelesaian materik, nilai a, b, c, d, p, q dibaca sebagai masukkan dan nilai x dan y dicetak
seagai keluaran }
DEKLARASI
a, b, c, d : real
p, q, det : real
ALGORITMA
readln(a)
readln(b)
readln(c)
readln(d)
det ad bc
if det <> 0 then
x (pd-bq)/(ad-bc)
y
(aq-cp)/(ad-bc)
write(x)
write(y)
else
write(Tidak dapat diselesaikan)
Algoritma dan Pemrograman
35
endif
Program Pascal:
e. PROGRAM PersamaanLinear;
f. { Penyelesaian persamaan linear dua variabel ax + by = p dan cx + dy = q menggunakan
penyelesaian matrik }
g. uses wincrt;
h.
i. (* DEKLARASI *)
j. var
k.
a, b, c, d : real;
l.
p, q, det : real;
m. x, y : real;
n.
o. (* ALGORITMA *)
p. Begin
q. write('a = '); readln(a);
r.
write('b = '); readln(b);
s.
write('c = '); readln(c);
t.
write('d = '); readln(d);
u. write('p = '); readln(p);
v.
write('q = '); readln(q);
w. det := a*d - b*c;
x.
if det <> 0 then
y.
begin
z.
x := (p*d-b*q)/det;
aa.
y := (a*q-c*p)/det;
bb.
writeln('x = ',x:5:0);
cc.
writeln('y = ',y:5:0);
dd.
end
ee. else
ff. write('Tidak dapat diselesaikan');
gg. (* endif *)
hh. end.
36
(* ALGORITMA *)
begin
read (a,b,c);
D := b*b - 4*a*c;
if D < 0 then
write('akar-akar imaginer')
else
if D > 0 then
begin
Algoritma dan Pemrograman
37
x1 := (-b + SQRT(D))/(2*a);
x2 := (-b - SQRT(D))/(2*a);
end
else { D = 0 }
begin
x1 := (-b + SQRT(D)/(2*a));
x2 := x1;
end;
(* endif *)
writeln('X1 = ',x1:3:0);
writeln('X2 = ',x2:3:0)
(* endif *)
end.
ALGORITMA
read(a,n)
p 1
for i 1 to n do
p p*a
endfor
write(p)
Pascal:
PROGRAM perpangkatan;
{ menghitung perpangkatan an , dengan masukkan a dan n bilangan
bulat dan keluaran hasil dari perpangkatan }
uses wincrt;
Algoritma dan Pemrograman
38
(* DEKLARASI *)
var
a
: real; { nilai yang dipangkatkan }
n
: integer;
{ pangkat }
p : real;
{ hasil perpangkatan }
i
: integer;
{ pencacah pengulangan }
(* ALGORITMA *)
begin
read(a,n);
p := 1;
for i := 1 to n do
p := p * a;
(* endfor *)
write(p);
end.
: real;
: integer;
: real;
: integer;
ALGORITMA
begin
read(a,n)
p := 1
for i := 1 to ABS(n) do
p := p * a
Algoritma dan Pemrograman
39
40