Modul Algoritma Dan Pemrograman
Modul Algoritma Dan Pemrograman
x := 1;
x := x +1;
1.3. ALGORITMA
ALGORITMA ialah suatu metode khusus yang tepat dan terdiri dari
serangkaian langkah terstruktur dan dituliskan secara sistematis, yang akan
dikerjakan untuk menyelesaikan suatu masalah, atau “Algoritma adalah urutan
langkah-langkah logis penyelesaian masalah, yang disusun secara sistematis
dan logis”. Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah
dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau
benar.
CIRI-CIRI ALGORITHMA YANG BAIK
Algorithma harus tidak Ambigu (Unambiguous) atau harus pasti, artinya
Deskripsi langkah-langkah dalam algorithma harus dan hanya mempunyai
tafsiran tunggal.
Algorithma harus tepat (precise), artinya Algorithma harus menyatakan
urutan langkah-langkahnya, kapan sebuah langkah dijalankan.
Algorithma harus pasti (definite), artinya jika serangkaian langkah yang
sama dilakukan dua kali maka hasilnya harus selalu sama.
Algorithma harus berhingga (finite), artinya, serangkaian langkah dalam
algorithma harus dapat dilakukan pada rentang waktu tertentu.
Murah, yaitu efisien dalam penggunaan piranti memori dan penyimpanan
lainnya serta cepat waktu pelaksanaannya.
c) Bakuan PASCAL
Dibakukan oleh ISO pada tahun 1983 dan dikembangkan dalam
beberapa versi, diantaranya: USCD PASCAL, MS PASCAL, TURBO
PASCAL dll. Dengan semakin berkembangnya teknologi dalam
komputasi, Pascal dimanfaatkan untuk pengembangan DELPHI (berasal
dari nama suatu kota di masa Yunani kuno), suatu bahasa pemrograman
visual yang menonjolkan pada efek grafis dan orientasi pada objek-objek
yang siap dipakai, karena memiliki Visual Component Library (VCL).
var
X, Y, Z: integer;{Deklarasi variabel X,Y dan Z sebagai bilangan bulat}
BEGIN {Program Utama Mulai}
X := 50; {Perintah memberikan nilai 50 pada var. X}
Y := 25; {Perintah memberikan nilai 25 pada var. Y}
Z := X + Y;{Perintah menjumlahkan X dan Y serta menyimpan hasilnya ke Z}
END. {Akhir Program Utama}
10 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
PEMBAHASAN II
MENGENAL PROSEDUR CETAK (WRITE), MASUKAN (READ),
VARIABEL, DAN TIPE DATA
(1 x Pertemuan)
Kedua kata tersebut tercetak dalam satu baris. Berbeda halnya dengan
menggunkan prosedure Writeln sebagai berikut:
Program tampil;
uses wincrt;
begin
writeln('Belajar');
write('Pascal');
end.
END
12 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Latihan I:
1. Buat program untuk mencetak seperti pada gambar berikut, dengan
menggunakan 5 (lima) prosedure cetak (write atau writeln)!
13 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
2.2. Prosedure Baca/Input/Masukkan (read/readln)
a. Prosedure masukan tanpa variabel
Untuk membaca atau memasukkan nilai dari keyboard dalam program
pascal menggunakan prosedure Read atau Readln. Jika ada prosedure ini,
pengguna harus menginputkan nilai atau menekan tombol ENTER sehingga
dapat meneruskan programnya. Untuk lebih jelasnya dapat dilihat pada listing
program berikut:
uses wincrt;
begin
write('Press ENTER to Continued...');
readln;
write('TERIMA KASIH');
end.
14 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
b. Prosedure Masukkan dengan Menggunakan Variabel
Untuk melakukan operasi penjumlahan, pengurangan, penambahan,
perkalian dan operasi-operasi lainnya dibutuhkan suatu nilai yang akan di
proses. Nilai tersebut dapat berupa huruf maupun angka. Namun untuk
menyimpan nilainya perlu diberikan variabel sebagai tempat menampung nilai
yang dimasukkan, seperti contoh berikut:
A = 10
B=5
C=A+B
Dari contoh diatas, angka 10 disimpan di Huruf A dimana A tersebut
dikatakan sebagai variabel. Sehingga Variabel A memiliki nilai 10. Begitu juga
untuk Variabel B memiliki nilai 5. Untuk melakukan operasi penambahan, A +
B, dibutuhkan 1 (satu) variabel lagi untuk menyimpan hasil penjumlahan
tersebut. Sehingga dibutuhkan Variabel C sebagai penampung hasil
penjumlahan antara Variabel A dan Variabel B. Dari proses tersebut Variabel
C memiliki nilai 15.
Oleh karena itu, suatu program yang ada operasi aritmatika atau operasi
lainnya membutuhkan variabel sebagai penampung data. Untuk lebih jelasnya
dapat dilihat pada program menghitung nilai C seperti pada contoh ulasan
sebelumnya:
program menghitung_nilai_C; START
uses wincrt;
var
A : integer;
A = 10,
B : integer; B=5
C : integer;
begin
A := 10;
B := 5; C=A+B
C := A + B;
write(C);
end.
Cetak C
END
END
Integer
Tipe Tipe Ordinal
Sederhana Boolean
Char
Tipe Real
Subjangkauan
Tipe String
Tipe Data (subrange)
Terbilang
Larik (Array)
(enumerated)
Tipe Rekaman
Terstruktur (Record)
Himpunan
(set)
Tipe Pointer
Berkas (file)
16 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Berikut ini adalah operator aritmatika yang digunakan di dalam pascal
serta tipe data dan hasil operasi yang digunakan!
Operator Operasi Tipe Operand Tipe Hasil Operasi
+ Penjumlahan Integer, real Integer, real
- Pengurangan Integer, real Integer, real
* Perkalian Integer, real Integer, real
/ Pembagian Integer, real real
Div Pembagian Integer, integer Integer
Mod Sisa pembagian Integer, integer integer
LATIHAN II:
1. Buatlah masing-masing program untuk menghitung Luas Segitiga, Luas
Lingkaran, dan Luas Persegi Panjang!
2. Buatlah program untuk menghitung total biaya dengan ketentuan sebagai
berikut:
Diskon = 10 % merupakan konstanta
Harga = 100.000 Harga diinputkan oleh user/pengguna
3. Buatlah program untuk menginputkan biodata berikut, tentukan tipe data
dari setiap variabel yang digunakan, dengan tampilan program sebagai
berikut:
BIODATA MAHASISWA
Nama : Kusuma Wijaya
TTL : Mataram, 31 Desember 1995
Jenis Kelamin : Laki-laki
Umur : 17 tahun
Penghasilan : 2000000
No HP : 081234567890
Jabatan : Tenaga Ahli
17 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
PEMBAHASAN III
STRUKTUR KONDISI/PERCABANGAN/PILIHAN
(3 x Pertemuan)
3. 1. Struktur Kondisi IF
Struktur pernyataan IF adalah sebagai berikut:
IF {kondisi} then
{pernyataan};
If {kondisi} then
Begin
{pernyataan 1};
{pernyataan 2};
...
{pernyataan n};
End;
end.
END
18 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Jika pernyataanya lebih dari satu, akan menjadi:
IF {kondisi} THEN
begin
{pernyataan 1};
{pernyataan 2};
...
{pernyataan n};
End
ELSE
begin
{pernyataan A};
{pernyataan B};
...
{pernyataan N};
End;
4. Selesai
Kondisi dari kasus di atas adalah “nilai >= 80”, yang berarti jika nilai >=
80, (TRUE/BENAR) maka cetak keterangan LULUS, dan sebaliknya jika BUKAN
Nilai >= 80 atau bisa ditulis nilai <80, (FALSE/SALAH) maka cetak keterangan
GAGAL.
19 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
3. 3. Struktur IF… then… else if… then… else….
Seperti pada pembahasan sebelumnya, terdapat IF… Then… Else…
yang merupakan struktur kondisi untuk satu kondisi. Jika terdapat kondisi lebih
dari 1, maka menggunakan struktur sebagai berikut:
IF {Kondisi 1} then
{Pernyataan 1}
ELSE IF {kondisi 2} then
{Pernyataan 2}
ELSE
{Pernyataan 3}
START
Algoritma dari dari flowchart:
1. Mulai
2. Masukkan nama, alamat Input Nama, Alamat,
Jenis_Kamar,
Jenis_kamar, Lama_menginap
lama_menginap
3. Jika jenis_kamar = ‘anggrek’
Ya, tarif = 100.000 IF YA
Jenis_Kamar = Tarif = 100.000
Jika jenis_kamar = ‘Mawar’ “Anggrek”
5. Cetak biaya_menginap
Tarif = 200.000
6. Selesai
Cetak
Biaya_menginap
END
20 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Listing program dari flowchart di atas adalah sebagai berikut:
program penginapan;
uses wincrt;
var
nama, alamat : string [40];
jenis_kamar : string [20];
lama_menginap : byte;
tarif, biaya_menginap : longint;
begin
writeln(' Program Penginapan');
write('Nama : '); readln(nama);
write('Alamat : '); readln(alamat);
write('Jenis Kamar : '); readln(jenis_kamar);
write('Lama Menginap : '); readln(lama_menginap);
If {kondisi 1} then
Begin
If {kondisi 1.1} then
{pernyataan}
Else
{pernyataan}
End
Else
Begin
If {kondisi 2.1} then
{pernyataan}
Else
{pernyataan}
End;
Input nama,
status, Gaji_Pokok
YA
IF
Tunj_istri =
Status = Input Jumlah_anak
10%*Gaji_Pokok
‘menikah’
TIDAK
Tidak IF
Tunj_istri = 0 Tunj_anak = Ya Tunj_anak =
Jumlah_anak >
Tunj_anak = 0 jumlah_anak*3%*Gaji_pokok 6%*Gaji_Pokok
2
Total_gaji = Gaji_Pokok +
Tunj_istri + Tunj_anak
Cetak Total_gaji
END
Bentuk Programnya:
program hitung_gaji;
uses wincrt;
var
nama, status : string;
jumlah_anak : byte;
gaji_pokok, tunj_istri, tunj_anak : real;
total_gaji : real;
begin
write('Nama = '); readln(nama);
write('Status = '); readln(status);
write('Gaji Pokok = '); readln(gaji_pokok);
if status = 'menikah' then
begin
write('Jumlah Anak = '); readln(jumlah_anak);
tunj_istri := 0.1 * gaji_pokok;
3. 5. Struktur CASE
Struktur CASE pada dasarnya sama dengan struktur IF yaitu merupakan
proses pemilihan/kondisi. Untuk lebih jelasnya dapat dilihat pada kasus berikut
ini:
Pada sebuah perlombaan terdapat pemilihan hadiah dengan ketentuan sebagai
berikut:
Jika memilih nomor 1, akan mendapat “Televisi LCD 64 Inch”
Jika memilih nomor 2, akan mendapat “Motor 150 Cc”
Jika memilih nomor 3, akan mendapat “Rumah Mewah berserta Isinya”
begin
writeln('Pilih HADIAH antara no 1-10 !!!!');
write('Pilih Nomor : '); readln(pilih);
case pilih of
1: write('Televisi LCD 64 Inch');
5: write('Motor 150 cc');
6: write('Rumah Mewah Berserta Isinya');
else
write('Maaf Anda Belum Beruntung');
end;
end.
23 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
3. 6. Kondisi AND dan Kondisi OR
Kondisi AND
Kondisi AND merupakan kondisi pilihan dimana semua kondisi tersebut
harus bernilai benar maka aksi yang akan dipilih adalah benar. Untuk
lebih jelasnya dapat dilihat dalam tabel kebenaran berikut:
A B A and B Dengan ketentuan :
1 1 1
0 : bernilai SALAH
1 0 0
0 1 0 1 : bernilai BENER
0 0 0
24 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Kondisi OR
Kondisi OR merupakan kondisi dimana aksinya akan SALAH jika semua
kondisi yang diajukan bernilai SALAH. Adapun tabel kebenaran untuk
kondisi OR adalah sebagai berikut:
A B A OR B
1 1 1
1 0 1
0 1 1
0 0 0
Contoh dalam kasus!
Bonus akan diperoleh jika jam kerja > 160 atau hasil produksi > 1000
unit. Adapun bentuk listing programnya adalah sebagai berikut:
program bonus;
uses wincrt;
var
jam_kerja, hsl_produksi : integer;
begin
writeln('##### BONUS #####');
write('Jumlah Jam Kerja : '); readln(jam_kerja);
write('Hasil Produksi : '); readln(hsl_produksi);
Input jam_kerja,
jml_produksi
Tidak
END
25 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Latihan III:
1. Buatlah program untuk menentukan kelulusan. Syarat dinyatakan lulus jika
nilai >= 80!
Dengan ketentuan!
Jenis kamar dan tarif diperoleh dari table berikut:
No Jenis Kamar Tarif/Malam
1 Mawar 100.000
2 Anggrek 200.000
3 Melati 400.000
26 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Untuk diskon diperoleh jika biaya menginap >= 1.000.000 sebesar 10% dari
biaya menginap.
6. Buatlah program untuk menghitung Luas Persegi panjang, Luas Segitiga,
dan Luas Lingkaran dengan menggunakan menu pilihan. Adapun contoh
programnya adalah sebagai berikut:
27 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
9. Buatlah program seperti flowchart di bawah ini!
START
Input A, B, C
Ya IF Tidak
(A and B) >10
IF Ya
Ya IF
A>C (A or B) > 10
Tidak
Tidak
Z=A-B
Z=B-C Z=B-A
Output
Z
END
10. Buatlah program untuk kasus berikut jika diketahui data sebagai berikut:
No Kelas Daya Tarif/kwh
1 Ekonomi 900 watt 500/kwh
2 Menengah 1200 watt 1000/kwh
3 Bisnis 2200 watt 2000/kwh
Tentukan total bayar untuk biaya listrik, dengan ketentuan sebagai beriku:
Biaya pemakaian = tarif * jumlah pemakaian
Denda diperoleh jika jumlah pemakaian >= 200 atau
tanggal pembayaran > 20, dengan denda sebesar 10 % dari biaya
pemakaian.
Bonus diperoleh jika jumlah pemakaian < 200 atau
tanggal pembayaran <= 20, dengan bonus sebesar 10 % dari biaya
pemakaian.
28 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
PEMBAHASAN IV
STRUKTUR PENGULANGAN
(For, While…do, dan Repeat…Until)
(3 x Pertemuan)
4.1. Strukur For
For…to…do
Struktur for…to..do merupakan pengulangan yang sudah pasti jumlah
pengulangannya, dimana jumlah pengulangannya ditentukan oleh nilai
awal dan nilai akhir. Struktur ini perhitungan nilainya secara ascending
atau menaik dari nilai awal ke nilai akhir. Adapun bentuk prosedure dalam
penggunaan for…to…do adalah sebagai berikut:
For nama_variabel := nilai_awal to nilai_akhir do
{statement/pernyataan}
Jika lebih dari 1 (satu) pernyataan yang mengalami perulangan, harus
ditambah dengan begin dan diakhiri dengan end;, untuk lebih jelasnya
sebagai berikut:
For nama_variabel := nilai_awal to nilai_akhir do
Begin
{statement/pernyataan}
{statement/pernyataan}
…
End;
Adapun contoh program dengan menggukan For…do adalah sebagai
berikut:
program pengulangan;
uses wincrt;
var
i : byte;
begin
for i := 1 to 5 do
writeln('Belajar Pascal');
end.
29 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
For…downto…do
Sama halnya dengan For…to…do.. hanya berbeda perhitungan nilainya
secara descending atau dari besar ke kecil atau nilai akhir ke nilai awal.
Adapun bentuk perintah dari For…downto…do adalah sebagai berikut:
For nama_variabel := nilai_akhir downto nilai_awal do
{statement/pernyataan}
Next I
END
30 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
4.2. Struktur While…do…
Struktur While…do merupakan pengulangan dengan menggunakan
kondisi, dimana pengulangan akan terjadi jika kondisi bernilai benar. Adapun
bentuk perintah pengulangan dengan menggunakan while..do dalam pascal
adalah sebagai berikut:
While {kondisi} do
Begin
{pernyataan}
…
…
End;
Dengan kasus yang sama pada struktur for…do, dapat diliat listing
program dengan menggunakan perintah while…do sebagai berikut:
program pengulangan;
uses wincrt;
var
i : byte;
begin
i:= 1;
while(i <= 5) do
begin
writeln('Belajar Pascal');
writeln('Gampang woi...');
i:= i+1;
end;
end.
Start Start
I=1 I=1
I=I+1
Ya
YA
While I <= 5
I=I+1
TIDAK
END
31 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
4.3. Struktur Repeat…Until
Struktur Repeat…Until merupakan pengulangan dengan menggunakan
kondisi, dimana pengulangan akan terjadi jika kondisi bernilai salah. Adapun
bentuk printah menggunakan repeat…until dalam pascal adalah sebagai berikut:
Repeat
{pernyataan}
…
…
Until
Dengan kasus yang sama pada struktur for…do, dapat diliat listing
program dengan menggunakan perintah Repeat…Until sebagai berikut:
program pengulangan;
uses wincrt;
var
i : byte;
begin
i:= 1;
repeat
writeln('Belajar Pascal');
writeln('Gampang woi...');
i:= i+1;
until (i>5);
end.
I=1 I=1
Tidak I=I+1
Repeat > 5
Tidak
Until I > 5
Ya
END Ya
END
32 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Counter dan Logika Penjumlahan
Counter
Counter merupakan logika untuk menentukan jumlah dari suatu perulangan.
Bentuk logika counter ini adalah sebagai berikut:
I = I + 1
Logika Penjumlahan
Logika penjumlahan merupakan cara untuk menjumlahkan niilai dari suatu
perulangan. Berikut bentuk atau rumus dari logika penjumlahan tersebut:
Berikut ini adalah contoh kasus untuk counter dan logika penjumlahan
tersebut:
No : 0001
Tanggal : 14 Agustus 2012
Nama : Kusuma
---------------------------------------------------------
No Nama Barang Harga Jumlah Total Harga
---------------------------------------------------------
1 Pepsodent 2000 2 4000
2 Lifeboy 2500 1 2500
3 Sampoo Clear 500 4 2000
---------------------------------------------------------
Total Bayar 8500
1. Mulai
2. Masukkan no, tanggal, nama, nama_barang, harga, jumlah
3. I = I + 1
4. Total_harga = harga * jumlah
5. Jumlah = jumlah + total harga
6. Input Barang Lagi?
Ya, Kembali ke-2
Tidak, ke-7
7. Cetak Total Bayar
8. Selesai
33 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
write('No Transaksi : '); readln(no_trans);
write('Tanggal : '); readln(tanggal);
write('Nama : '); readln(nama);
jawab:= 'y';
writeln('-------------------------------------------------');
while (upcase(jawab) = 'Y') do
begin
i:=i+1;
write('No : ');writeln(i);
write('Nama Barang : ');readln(nm_brg);
write('Harga : ');readln(harga);
write('Jumlah : ');readln(jumlah);
total_harga:=harga*jumlah;
total_jumlah:=total_jumlah+total_harga;
write('Total Harga : ');writeln(total_harga);
writeln;writeln;
write('Input Lagi [y/t] ? '); readln(jawab);
end;
writeln('---------------------------------------------------');
write('Total Harga --> ',total_jumlah);
end.
counter
Logika Penjumlahan
34 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
LATIHAN IV:
1. Buatlah program untuk mencetak deret berikut dengan menggunakan
struktur pengulangan:
a. 0 3 8 15 24 35…N
b. 1 1 2 3 5 8 13…N
c. 4 7 10 13 … N
d. 2 5 10 17…N
e. Input deret = 5
1 2 3 4 5 = 15
2. Buat program untuk menghitung nilai faktorial!
Contoh:
1! =1
2! 1 * 2 =2
4! 1 * 2 * 3 * 4 = 24
Dst..
3. Buat program untuk menghitung pangkat!
Contoh:
- 4 pangkat 3 = 64
- 2 pangkat 3 = 8
- 3 pangkat 3 = 9
Dst…
4. Buatlah program untuk kasus berikut:
No Nama Pasien Biaya Berobat Diskon Total Bayar
35 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Jenis langganan = Rumah Tangga, tarif = Rp.3.000/m3, biaya beban = 40.000
Jenis langganan = Bisnis, tarif = Rp.7.000/m3, biaya beban = 75.000
Biaya_pakai = jml_pemakaian * tarif
Total Bayar = Biaya_beban + biaya pakai
Buat program dengan input sebagai berikut: nama, jenis langganan,
jumlah pemakaian. Cetak total bayar dan total pendapatan untuk PDAM
tersebut!
6. Buatlah program untuk menentukan pemenang dalam pemilihan ketua
bem dimana terdapat 3 (tiga) calon kandidat dengan simbol. Kandidat
pertama dengan simbol “apel”, kandidat kedua dengan simbol “anggur”,
dan kandidiat ketiga dengan simbol “melon”. Tentukan pemenang dari
pertama, kedua, dan ketiga serta tentukan jumlah pemilih!
36 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
PEMBAHASAN V
ARRAY/LARIK/VARIABEL BERINDEX
(2 x Pertemuan)
5.1. Array 1 Dimensi
Array merupakan suatu variabel yang mempunyai nama yang sama, tipe
data yang sama, tetapi memiliki nilai yang berbeda yang dibedakan oleh index.
Dapat juga diartikan sebagai struktur data yang menyimpan sekumpulan elemen
yang bertipe sama. Tipe data index yang digunakan harus merupakan tipe data
Ordinal/keterurutan seperti Integer atau char. Adapun bentuk Array dapat
digambarkan dengan gambar berikut:
Data[5] = {sepatu, kaos, celana, sandal, kemeja}
1 2 3 4 5
Data[5] Sepatu Kaos Celana Sandal kemeja
Data pada index pertama (data[1]) mempunyai nilai Sepatu, data pada
index kedua (data[2]) mempunyai nilai Kaos, dan seterusnya.
Contoh program dalam penginputan grade mahasiswa adalah sebagai
Start
berikut:
I=I+1
Input lagi?
For j = 1 to i
Next J
37 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n END
program array1D;
uses wincrt;
var
jawab : char;
i,j : byte;
nama : Array [1..100] of string[30];
grade : Array [1..100] of string[2];
begin
jawab := 'y';
i:=0;
writeln('###################################');
writeln('## ##');
writeln('## PROGRAM GRADE MAHASISWA ##');
writeln('## ##');
writeln('###################################');
writeln;
while(upcase(jawab) = 'Y') do
begin
i:= i + 1;
write('No : '); writeln(i);
write('Nama : '); readln(nama[i]);
write('Grade : '); readln(grade[i]);
writeln;writeln;
38 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
5.2. Pencarian (Searching)
Pencarian (searching) merupakan suatu proses mencari data pada
sekumpulan data. Pencarian ini dapat dilakukan dengan dua cara yaitu Linear
Searching dan Binery Searching.
Adapun algoritma dengan menggunakan Linear Searching adalah
sebagai berikut:
1. Mulai
2. Masukkan Nilai variabel yang dicari
3. I = I + 1
4. If cari = Data[i]
Ya, k = k + 1
Hasil[k] = i
5. Apakah data sudah ditelusuri semua?
Ya, lanjutkan ke proses 6
Tidak, kembali ke proses 3
6. If k = 0?
Ya, Data tidak ditemukan
Tidak, cetak semua data yang ditemukan.
7. Selesai
39 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
5.3. Pengurutan (Sorting)
Pengurutan (sortiing) merupakan proses mengurutkan nilai, baik dari nilai
terkecil ke nilai terbesar (ascending) atau sebaliknya dari terbesar ke nilai terkecil
(descending).
Algoritma untuk melakukan pengurutan secara Ascending
Deklarasi
L : array [1..100] of integer;
I, k, temp : integer;
Algorithma :
For I 1 to n-1 do
For k n downto i+1 do
If L[k] < L [k-1] then
Temp L[k]
L[k] L [k-1]
L[k-1] temp
Endif
Endfor
Endfor
40 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
LATIHAN V:
1. Buatlah program dengan menu berikut:
PROGRAM PENJUALAN
<< Pilih Menu >>
1. Input Data
2. Lihat Hasil
3. Cari Data
4. Urutkan Data
5. Exit
Dalam program tersebut gunakan Array 1 dimensi dan bagi setiap
menu dengan melakukan pemilihan!
Pembeli Kedua
Nomor : 002
Tgl : 23 April 2012
Nama Pembeli : Alfian
----------------------------------------------------------
No Nama barang Harga jumlah Total Harga
----------------------------------------------------------
1. Silverqueen 13000 2 26000
----------------------------------------------------------
Total pembayaran 26000
{prosedure garis}
procedure garis;
begin
writeln('-----------------------'); Prosedur Garis
end;
{program utama}
begin
garis; Pemanggilan prosedur
writeln('PROGRAM PENJUALAN');
garis;
end.
{program utama}
begin
writeln('Program Hitung Luas Lingkaran');
write('Input Jari-jari : '); readln(r);
lingkaran(r); pemanggilan Prosedur
write('Luas Lingkaran : ',luas:0:2);
end.
42 | P r a k t i k u m A l g o r i t m a dan Pemrograman
Prosedur dengan PARAMETER
Perhatikan bentuk program berikut:
A B
program prosedur; program prosedur;
uses wincrt; uses wincrt;
var var
x : integer; x : integer;
Pada Point A nilai x setelah prosedure tidak berubah, hal ini yang dikatakan
sebagai Parameter Nilai (Pass by Value), sedangkan untuk Point B, nilai x
setelah prosedur mengalami perubahan sesuai dengan perubahan dari nilai
parameter dari prosedure nilai tersebut, hal ini yang dikatakan sebagai
Parameter Variabel (Pass by Variabel).
43 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
6.2. Fungsi (Function)
Sama seperti prosedure hanya fungsi memiliki nilai. Untuk lebih jelasnya
perhatikan contoh listing program berikut:
program fungsi;
uses wincrt;
var
nilai : integer;
{fungsi kubik}
function kubik(x:integer) : longint;
begin
kubik:=x*x*x;
end;
{program utama}
begin
write('Input Nilai : '); readln(nilai);
write(nilai, ' pangkat 3 = ', kubik(nilai));
end.
Adapun bentuk flowchart dari kasus di atas untuk prosedur dan fungsi
adalah sebagai berikut:
44 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Latihan VI!
1. Buatlah program untuk menghitung Grade dengan tampilan menu utama
terdiri dari:
- Input Data {buat dalam 1 (satu) prosedure}
- Cetak hasil {buat dalam 1 (satu) prosedure}
- Pencarian {buat dalam 1 (satu) prosedure}
- Pengurutan {buat dalam 1 (satu) prosedure}
Diinputkan nama, nim, semester, jurusan, nilai harian, nilai mid, nilai uas
dengan menggunakan prosedur input.
Untuk menentukan grade yang diperoleh, gunakan Fungsi (Function).
Ketentuan proses nilai akhir dan penentuan grade dapat dilihat pada
Latihan III soal nomor 2!.
45 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
PEMBAHASAN VII
REKURSI DAN RECORD (REKAMAN)
(2 x Pertemuan)
7.1. Rekursi
Rekursi merupakan suatu prosedur atau fungsi yang mana dapat
memanggil dirinya sendiri. Dalam pembuatan rekursi tersebut harus ada
penghentian operasi (iterasi). Untuk lebih jelasnya, dapat diliat pada contoh
program dibawah ini!
Program faktorial;
Uses wincrt;
Var
x : integer;
{fungsi Faktorial}
function factorial (n:integer):integer;
begin
if n<2 then {ini adalah syarat penghentian operasi}
factorial:=1
else
factorial:=n*factorial(n-1); {ini bagian rekursi}
end;
{Program Utama}
begin
writeln('PROGRAM HITUNG NILAI FAKTORIAL');
writeln('------------------------------');
write('Masukkan nilai : '); readln(x);
writeln(x,'! adalah ',factorial(x));
end.
46 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
7.2. Record (Rekaman)
Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data
dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk
menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya (di
banding array). Contoh , sebuah record dengan empat buah field.
begin
biodata.nama := 'Kusuma Wijaya';
biodata.alamat := 'Mataram';
biodata.golongan := 'IV D';
biodata.gaji_pokok := 5000000;
writeln('Nama : ',biodata.nama);
writeln('Alamat : ',biodata.alamat);
writeln('Golongan : ',biodata.golongan);
writeln('Gaji Pokok : ',biodata.gaji_pokok);
end.
47 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
program contoh_record;
uses wincrt;
var
biodata : identitas;
begin
with biodata do
begin
nama := 'Kusuma Wijaya';
alamat := 'Mataram';
golongan := 'IV D';
gaji_pokok := 5000000;
writeln('Nama : ',nama);
writeln('Alamat : ',alamat);
writeln('Golongan : ',golongan);
writeln('Gaji Pokok : ',gaji_pokok);
end;
end.
var
biodata : Array [1..10] of identitas;
begin
with biodata[1] do
begin
nama := 'Kusuma Wijaya';
alamat := 'Mataram';
golongan := 'IV D';
gaji_pokok := 5000000;
writeln('Nama : ',nama);
writeln('Alamat : ',alamat);
writeln('Golongan : ',golongan);
writeln('Gaji Pokok : ',gaji_pokok);
end;
end.
48 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n
Latihan VII!
1. Buat program lain yang menggunakan cara rekursi!
2. Kembangkan program pada Latihan VI soal nomor 3 (tiga) dengan
penambahan Record!
49 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n