Modul Praktikum Algol Dan Pemrograman 2
Modul Praktikum Algol Dan Pemrograman 2
TEKNIK INFORMATIKA
FAKULTAS TEKNIK
PROGRAM STUDI TEKNIK INFORMATIKA
UNIVERSITAS MUHAMMADIYAH SORONG (UMS)
2015
BAHAN AJAR
MATA KULIAH PEMROGRAMAN
Tinjauan Mata Kuliah
1.1. Deskripsi Mata Kuliah
Algoritma dan Pemrograman II data merupakan matakuliah yang
mempelajari
bagaimana
membuat
program
modular.
Matakuliah
Array
(Halaman. 5)
Bab II
Prosedur
(Halaman. 21)
Bab III
Fungsi
(Halaman. 28)
Bab IV
Record
(Halaman. 34)
Bab V
Sorting
(Halaman. 47)
Bab VI
Searching
(Halaman. 58)
(Halaman. 66)
(Halaman. 69)
maupun dalam
diskusi kelas
d. Kerjakan setiap tugas terstruktur yang diberikan pada setiap akhir
kegiatan/pertemuan dengan baik.
e. Perbanyaklah latihan mengerjakan soal, baik secara teori maupun
langsung dipraktekan dalam komputer dengan menggunakan
bahasa pemrograman Pascal.
1.6. Alur Bagi Peserta Praktikum :
1. Peserta praktikum menerima dan kemudian mempelajari modul
praktikum.
2. Peserta
praktikum
mengerjakan
tugas
prepraktikum
yang
diberikan.
3. Peserta praktikum melakukan asistensi tugas prepraktikum.
Asistensi ini digunakan sebagai bahan bagi asisten untuk menilai
kesiapan peserta juga berfungsi sebagai ajang diskusi peserta
praktikum atas kesulitan yang dialaminya.
4. Peserta praktikum mendemokan implementasi tugas praktikum
kepada asisten.
1.7.Peraturan Praktikum :
1. Praktikan harus menghadiri setiap sesi praktikum , tidak hadir
tanpa keterangan akan menyebabkan hak menjadi praktikan gugur
(nilai E).
2. Praktikan tidak mengikuti UTS atau UAS akan menyebabkan hak
menjadi praktikan gugur (nilai E).
3. Tugas prepraktikum diserahkan sebelum praktikum dimulai.
4. Laporan
praktikum
dianggap
sah
apabila
praktikan
telah
Penilaian
Tugas
Prepraktikum
Kehadiran
Laporan
praktikum
UTS
UAS
2
3
Pengumpulan
Softcopy dalam
CD
Softcopy dalam
CD
Softcopy dalam
CD
Softcopy dalam
CD
Total
Nilai
10 %
10 %
25 %
25 %
30 %
100%
BAB I
ARRAY
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang definisi array, deklarasi
array, mengakses elemen array, array sebagai tipe data bentukan, array
konstan, array sebagai parameter, array multidimensi.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena materi
array ini memberikan manfaat yaitu efisiensi program. Materi array
sangat berkaitan dengan materi lainnya dalam sebuah pemrograman
terstruktur, karena array dapat digunakan dan dikombinasikan dengan
bahasan lain dalam sebuah program.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program dengan menggunakan array.
B.
Penyajian
Bagi para pemrogram, efisiensi program merupakan hal utama yang
A[2]
A[3]
A[4]
A[5]
A[6]
A[7]
A[8]
A[9]
A[10]
10
10
20
30
40
50
60
70
80
90
100
Setiap elemen array di atas menyimpan nilai bertipe integer dan akan
menempati alamat memori yang berbeda, hal ini akan menyebabkan array
tersebut memiliki ukuran 40 byte, yang berasal dari 10 x 4. Nilai 10
menunjukkan banyaknya elemen array sedangkan nilai 4 merupakan
ukuran dari tipe data integer (dalam 32 bit).
2) Deklarasi Array
Sama seperti variabel lain, array juga dideklarasikan di dalam bagian
deklarasi variabel. Bila akan didefinisikan sebagai tipe bentukan, maka
array juga akan dideklarasikan di bagian definisi tipe (di bawah kata
kunci type). Dalam bahasa Pascal, pendeklarasian array dilakukan dengan
menggunakan kata kunci array dan tipe data yang akan disimpan di
dalamnya, selai itu juga harus disertai dengan batas-batas indeksnya yang
diapit oleh tanda bracket ([ ]). Berikut ini bentuk umum pendeklarasian
array.
NamaArray : array [Indeks Awal . . IndeksAkhir] of tipe data;
Gambar 1.2 Bentuk Umum Pendeklarasian array(sumber:Rahardjo)
Pada kode tersebut, indeks array diulai dari satu. Perlu diperhatikan
bahwa bahasa Pascal berbeda dengan bahasa C yang indeks array-nya
selalu dimulai dari nol. Pada bahasa Pascal, indeks array dapat dimulai
dari bilangan berapapun. Selain itu, indeks array juga dapat bertipe
karakter maupun tipe enumerasi. Berikut ini contoh-contoh kode yang
dapat digunakan untuk mendeklarasikan 10 buah elemen array bertipe
integer sebagai pengganti kode di atas.
Var
A1 : array [0 . . 9] of integer;
A2 : array [5 . . 15] of integer;
A3 : array [a . . j] of integer;
A4 : arrat [A . . J] of integer;
Dalam bahasa Pascal, tersedia dua buah fungsi yang dapat digunakan
untuk mengambil indeks terendah dan tertinggi dari sebuah array, yaitu
fungsi Low dan High. Adapun parameter dari kedua fungsi tersebut
adalah nama array yang akan dicari indeksnya. Perhatikan contoh kode
berikut.
Var
A: array [1 . . 100] of integer;
terendah, tertinggi : integer;
Begin
terendah := Low (A);
{akan menghasilkan nilai 1}
tertinggi := High (A)
{akan menghasilkan nilai 100}
..
end.
Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program di
atas memang masih pendek karena datanya hanya 10, bagaimana bila
ratusan ata bahkan ribuan?
Untuk mengatasi masalah ini, seharusnya kita menggunakan array
untuk menyimpan data-data tersebut sehingga program akan jauh lebih
sederhana dan mudah dalam pengerjaannya. Berikut ini perbaikan
program di atas apabila kita menampung data-datanya ke dalam sebuah
array.
Const max = 10;
Var
n : array [1 . . max] of real;
i : integer;
begin
for i:= 1 to max do
writeln(Masukkan data ke-, i, : ); readln(n[i]);
end.
Apabila ternyata data berjumlah 100 atau 1000, maka kita hanya perlu
mengganti nilai dari konstanta max di atas dengan nilai yang sesuai.
6) Array Konstan
Nilai yang terkandung di dalam sebuah array dapat bernilai konstan,
artinya nilai-nilai tersebut tidak dapat diubah. Untuk melakukan hal
10
Const
NamaArray : array [indexAwal . . indeksAkhir] of tipe_data =
Nila1, nilai2, ...);
Gambar 1.4 Bentuk Umum Pendeklarasian Array Konstan (sumber:Rahardjo)
Oleh karena array A di atas bersifat konstan, maka kita tidak dapat
menggantikan nilainya dengan nilai lain, seperti yang ditunjukkan oleh
kode di bawah ini.
A [1]
A [2]
A [1]
A [1]
A [1]
11
Contoh hasil yang akan diberikan oleh program di atas adalah sebagai
berikut.
Masukkan nomor bulan : 3
Nama bulan ke-3 adalah Maret
pengurutan
dari
sekumpulan
data.
Berikut
ini
contoh
12
{salah}
{benar}
Contoh hasil yang akan diberikan dari program di atas adalah sebagai
berikut.
Masukkan banyaknya elemen array : 3
Memasukkan data :
Masukkan nilai A[1] : 10
13
8) Array Multidimensi
Sejauh ini kita baru membahas mengenai array berdimensi satu. Pada
baris
Kolom
Gambar 1.5. Array dua dimensi (sumber:Rahardjo)
Pada gambar di atas, array memiliki 3 buah baris dan 4 buah kolom,
sehingga jumlah elemennya adalah 3x4 = 12. Perlu diketahui bahwa
keadaan tersebut sebenarnya hanya merupakan keadaan logik yang
bertujuan untuk mempermudah pemahaman array dua dimensi. Pada
kenyataannya, pengalamatan memori di komputer dari array dua dimensi
tetap akan dipresentasikan dengan sebuah deretan larik yang memanjang
14
15
Contoh hasil yang akan diberikan oleh program di atas adalah sebagai
berikut.
Matriks A
A[1, 1] = 1
A[1, 2] = 2
A[1, 3] = 3
A[2, 1] = 4
A[2, 2] = 5
A[2, 3] = 6
Matriks B
B[1, 1] = 3
B[1, 2] = 2
B[1, 3] = 1
B[2, 1] = 6
B[2, 2] = 5
B[2, 3] = 4
Hasil Penjumlahan
C[1, 1] = 4
C[1, 2] = 4
C[1, 3] = 4
C[2, 1] = 10
C[2, 2] = 10
C[2, 3] = 10
16
x
z
Berikut ini bentuk umum yang digunakan untuk mendeklarasikan
array tiga dimensi di dalam bahasa Pascal.
NamaArray : array [1 . . xMaks, 1 . . yMaks, 1 . . zMaks] of tipe_data;
Gambar 1.7 Bentuk Umum Pendeklarasian Array Tiga Dimensi(sumber:Rahardjo)
17
Program AksesArray3D;
Uses crt;
Const
xMaks = 2;
yMaks = 2;
zMaks = 2;
Type
Array3D = array [1 . . xMaks, 1 . . yMaks,1 . . zMaks] of integer;
Var
A: Array3D;
i, j, k : integer;
begin
clrscr;
{mengisikan nilai ke dalam array A}
x := 1;
for i := 1 to xMaks do begin
for j := 1 to jMaks do begin
for k := 1 to zMaks do begin
A[i, j, k] := x;
inc(x);
end;
end;
end;
{menampilkan isi yang terdapat dalam array A}
for i := 1 to xMaks do begin
for j := 1 to jMaks do begin
for k := 1 to zMaks do begin
write(A[ , i, , , j, , , z, ] = , A[ i, j, k] , );
end;
end;
writeln;
end;
readln;
end.
A[1, 1, 2] = 2
A[2, 1, 2] = 6
A[1, 2, 1] = 3
A[2, 2, 1] = 7
A[1, 2, 2] = 4
A[2, 2, 2] = 8
C. Penutup
Array merupakan sebuah variabel yang dapat menyimpan lebih dari
satu nilai yang memiliki tipe data sama. Hal ini berbeda dengan variabel
biasa yang hanya mampu menampung satu buah nilai. Setiap nilai yang
18
program
dengan
menggunakan
array
konstan
untuk
tentang
array
dan
membuat
beberapa
program
dengan
menggunakan array.
Jawab pertanyaan di atas dengan langsung membuat program di
komputer. Jalankan program tersebut sampai benar. Hapus kembali
listing program yang sudah benar dan buat kembali program tersebut,
dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudah
kecil, anda dapat melanjutkan materi berikutnya. Kalau program belum
jalan, perbaiki terus sampai program tersebut benar dan jalan.
19
Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal
dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
20
BAB II
PROSEDUR
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang pemrograman moduler,
definisi prosedur, pendefinisian prosedur, pemanggilan prosedur.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena materi
prosedur ini memberikan manfaat bagi pemrogram untuk membuat
program yang menggunakan prosedur. Materi prosedur sangat berkaitan
dengan materi lainnya dalam sebuah pemrograman terstruktur, terutama
pemrograman moduler.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program aplikasi dengan menggunakan
prosedur
B. Penyajian
1) Konsep Pemrograman Moduler
Dalam membuat program besar dan kompleks, si pemrogram perlu
memecah program menjadi beberapa sub program yang lebih kecil. Tiap
sub program kadangkala cukup independen dari program utama
sehingga programnya dapat dirancang tanpa mempertimbangkan konteks
tempat di mana sub program tersebut digunakan. Tiap sub program, yang
disebut modul dapat dirancang oleh pemrogram selain dari orang yang
mengembangkan program utama. Modul yang sudah ditulis dapat
dipasang ke program lain yang membutuhkannya. Teknik pemrograman
seperti ini dinamakan teknik pemrograman modular. Beberapa bahasa
21
22
yang berisi nama modul, bagian deklarasi, dan bagian badan (body)
program yang berisi instruksi yang akan dilaksanakan.
2) Definisi Prosedur
Prosedur adalah modul program yang mengerjakan tugas/aktivitas
yang spesifik dan menghasilkan suatu efek netto . Suatu efek netto
diketahui dengan membandingkan keadaan awal dan keadaan akhir pada
pelaksanaan prosedur. Oleh karena itu, pada prosedur kita harus
mendefinisikan keadaan awal sebelum rangkaian instruksi di dalam
prosedur dilaksanakan dan keadaan akhir yang diharapkan setelah
rangkaian instruksi dilaksanakan.
3) Pendefinisian Prosedur
Pada dasarnya, struktur prosedur sama dengan struktur algoritma
yang sudah dikenal, yaitu : bagian judul yang terdiri atas nama prosedur
dan komentar yang menjelaskan yang menjelaskan spesifikasi prosedur
tersebut, bagian deklarasi dan badan prosedur. Setiap prosedur memiliki
nama yang unik. Nama prosedur sebaiknya diawali dengan kata kerja
karena prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar,
CariMaks, Inisialisasi, AktifkanMenu dan lain sebagainya.
Notasi Algoritma yang digunakan untuk mendefinisikan struktur
prosedur adalah :
Procedure NamaProsedur
{Spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukan
prosedur ini}
{K. Awal : keadaan sebelum prosedur dilaksanakan}
{K. Akhir : keadaan setelah prosedur dilaksanakan}
Deklarasi
{semua nama yang dipakai dalam prosedur dan hanya berlaku
lokal di dalam prosedur yang didefinisikan di sini}
Deskripsi
{badan prosedur, berisi kumpulan instruksi}
Gambar 3.1 Bentuk Umum Pendefinisian Prosedur(sumber:Rahardjo)
23
Contoh 2.1
Tuliskan prosedur mencetak string Hello World!.
Penyelesaian
Procedure CetakHalo
{mencetak string Hello World! ke piranti keluaran}
{K. Awal : sembarang}
{K. Akhir : string Hello World! tercetak}
Deklarasi
{tidak ada}
Deskripsi
Write ([Hello World!)
Contoh 2.2
Tuliskan prosedur untuk menghitung luas segitiga dengan rumus L=(alas
x tinggi)/2. Panjang alas dan tinggi segitiga dibaca dari dalam prosedur.
Luas segitiga dicetak ke piranti keluaran.
Penyelesaian
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2
{K. Awal : sembarang}
{K. Akhir : L berisi luas segitiga. Nilai L dicetak ke piranti keluaran}
Deklarasi
Alas, tinggi, luas : real
Deskripsi
Read (alas, tinggi)
Luas (alas*tinggi)/2
Write (L)
4) Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi tidak dapat
dieksekusi secara langsung. Ini berarti, instruksi-instruksi di dalam
prosedur baru dapat dilaksanakan hanya bila prosedur tersebut
diakses/dipanggil.
Prosedur
diakses
24
dengan
cara
m,emanggil
Contoh 2.4
Tuliskan
contoh
program
utama
HitungLuasSegitiga.
25
untuk
memanggil
prosedur
Penyelesaian
Algoritma Luas_Segitiga
{program uatama untuk menghitung luas segitiga}
Deklarasi
Prcedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2}
Deskripsi
Write(Menghitung Luas Segitiga)
HitungLuasSegitiga
Write (Selesai)
C. Penutup
Kata prosedur sering kita dengar dalam kehidupan sehari-hari.
Seorang mahasiswa pada setiap awal semester selalu melakukan
penaftaran ulang (registrasi). Langkah-langkah pendaftaran ulang lazim
dinyatakan dalam sebuah prosedur yang dinamakan prosedur daftar
ulang. Ketika sebuah prosedur dilakukan, maka instruksi-instruksi di
dalamnya dikerjakan satu per satu.
Dalam dunia pemrograman, prosedur adalah modul program yang
mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek
netto. Suatu efek netto diketahui dengan membandingkan keadaan awal
dan keadaan akhir pada pelaksanaan sebuah prosedur. Oleh sebab itu,
pada setiap prosedur kita perlu mendefinisikan keadaan awal sebelum
rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir
yang diharapkan setelah rangkaian instruksi di dalam prosedur
dilaksanakan.
1) Pertanyaan
Buat program perhitungan luas segitiga menggunakan prosedur.
2) Umpan Balik dan Tindak Lanjut
26
Daftar Pustaka
Jogiyanto, 1989. Turbo Pascal. Yogyakarta : Andi Ofset.
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal
dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
27
BAB III
FUNGSI
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang definisi fungsi, cara
mendefinisikan fungsi, cara pemanggilan fungsi dan parameter.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena materi
fungsi ini memberikan manfaat bagi pemrogram untuk membuat
program yang menggunakan fungsi. Materi fungsi sangat berkaitan
dengan materi lainnya dalam sebuah pemrograman terstruktur, terutama
pemrograman moduler.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program dengan menggunakan fungsi.
B.
Penyajian
1) Definisi Fungsi
Definisi
fungsi
sebenarnya
sama
dengan
sebuah
prosedur.
28
3) Pemanggilan fungsi
Fungsi diakses dengan cara memanggil namanya dari program
pemanggil, diikuti dengan daftar parameter aktual (bila ada). Oleh karena
fungsi menghasilkan sebuah nilai maka pada saat pemanggilannya juga
dapat
ditampung
ke dalam
29
ini
contoh
Var
A : longint;
Begin
{memanggil fungsi Kali dan menyimpan nilainya ke dalam variabel A)
A := Kali (10, 5);
...
End.
4) Parameter
Parameter merupakan suatu nilai atau referensi yang dilewatkan ke
dalam rutin tertentu dan kehadirannya akan mempengaruhi proses
maupun nilai yang terdapat di dalam rutin itu sendiri. Parameter
ditempatkan di dalam tanda kurung setelah nama rutin bersangkutan.
Suatu fungsi umumnya mempunyai parameter. Namun bisa saja suatu
fungsi tidak memiliki paramater.
Setiap parameter yang dilewatkan harus memiliki tipe data tersendiri
yang dapat berupa dari tipe dasar maupun bentukan seperti array, record
atau pointer. Untuk mengetahui arti parameter, perhatikan fungsi
matematika di bawah ini.
f (x) = 2x2 + 5x 3
Bila x=2, maka f akan mengembalikan nilai 15, yang berasal dari
f (2) = 2(2)2 + 5(2) 3 = 8 + 10 3 = 15
Dari ilustrasi tersebut terlihat jelas bahwa hasil nilai dari fungsi f
ditentukan oleh besarnya nilai x, sehingga x disebut sebagai parameter
dari fungsi f.
Contoh 3.1
Program Menghitung _Berbagai_Luas;
Uses Crt;
Var
S,SE,PP,LL,LJ
P,Alas,Tinggi,Panjang,Lebar,Jari,Sudut,Pil
Pilihan
30
: Real;
: Integer;
: Char;
Procedure Matematika;
Begin
Writeln;
Writeln(Ketikan angka pilihan dibawah ini dan tekan < Enter > );
Writeln(1. Luas Segitiga);
Writeln(2. Luas SegiEmpat);
Writeln(3. Luas Persegi Panjang);
Writeln(4. Luas Lingkaran);
Writeln(5. Luas Juring);
Writeln(6. Selesai);
End;
Procedure Luas_Segitiga;
Begin
Writeln;
Write(Alas
: );Readln(Alas);
Write(Tinggi
: );Readln(Tinggi);
S:=alas * (Tinggi / 2);
Writeln(Luas Segitiga
: ,S);
End;
Procedure Luas_SegiEmpat;
Begin
Writeln;
Write(Panjang
: );Readln(Panjang);
Write(Lebar
: );Readln(Lebar);
SE:=Panjang * Lebar
Writeln(Luas SegiEmpat
: ,SE);
End;
Procedure Luas_Persegi_Panjang;
Begin
Writeln;
Write(Panjang
: );Readln(Panjang);
Write(Lebar
: );Readln(Lebar);
PP:=Panjang * Lebar
Writeln(Luas Persegi Panjang
: ,PP);
End;
Procedure Luas_Lingkaran;
Begin
Writeln;
Write(Jari - Jari
: );Readln(Jari);
LL:=Pi * Sqr(Jari);
Writeln(Luas Lingkaran
: ,LL);
End;
Procedure Luas_Juring;
Begin
Writeln;
Write(Sudut Juring
: );Readln(Juring);
Write(Jari - Jari
: );Readln(JAri);
LJ:=Sudut / 360 * Pi * Sqr(Jari);
Writeln(Luas Juring
: ,LJ);
End;
Procedure Laksanakan_Matematika;
Begin
P:= Ord(Pilihan) 48
Case P Of
1 : Luas_Segitiga;
2 : Luas_SegiEmpat;
3 : Luas_Persegi_Panjang;
4 : Luas_Lingkaran;
31
End;
Begin
End.
End;
5 : Luas_Juring;
6 : Begin
Writeln;
Writeln( &&&& Selesai &&&&);
End;
Write(Pilihan
: );Readln(Pil);
Write p <> 6 Do
Begin
Repeat
Matematika;
Write(Pilihan angka yang dipilih : );read(Pilihan);
Writeln(Pilihan);
Laksanakan_Matematika;
Until (pilihan = 6);
End;
Contoh 3.2
Program Perpustakaan;
Uses Crt;
Var
Kode_Buku
Harga_Sewa, Denda_Hari, Sewa_Hari, Bayar
: Char;
: Real;
32
Begin
End;
End.
C. Penutup
Seperti halnya prosedur, fungsi juga merupakan sub program yang
mempunyai
tujuan
spesifik.
Pertanyaan
sering
muncul
dalam
33
3) Kunci Jawaban
Program faktorial;
Var
n : integer;
function f(n:integer);integer;
var
i, f : integer;
begin
f:=1;
for i:=1 to n do
f:=f +1;
end;
begin
write (jumlah faktorial :);readln(n);
writeln(f);
end.
Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal
dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
34
BAB IV
RECORD
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang definisi record,
deklarasi record, mengakses field, penugasan antar record, record dalam
record, pernyataan with, array record.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena materi
record ini memberikan manfaat bagi pemrogram untuk membuat
program yang menggunakan data yang terdiri dari beberapa data den
berlainan tipe. Materi record sangat berkaitan dengan materi lainnya
dalam sebuah pemrograman terstruktur, terutama dengan materi array.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program aplikasi dengan menggunakan
record.
B. Penyajian
1) Definisi Record
Record adalah jenis tipe data terstruktur yang berisi beberapa data,
yang masing-masing dapat berlainan tipe.
2) Mendeklarasikan Record
Suatu tipe record dideklarasikan dengan bentuk sebagai berikut :
RECORD
Daftar_field_1 : tipe_1;
Daftar_field_2 : tipe_2;
...
daftar_field_n : tipe_n;
END
35
Barang : RecBarang;
Sebagai contoh :
Barang.Nama
Dengan cara seperti di atas, field Nama dari record Barang berisi string
Ubin TISKA 20x20.
Isi dari suatu field ditampilkan dengan menggunakan Write atau Writeln.
36
Contoh :
Writeln (Barang.Nama);
Merupakan perintah untuk menampilkan isi field Nama dari record
Barang.
Contoh program yang memberikan gambaran pendeklarasian record,
pengisian terhadap field-field serta menampilkan isi masing-masing field
dapat dilihat di bawah ini.
Contoh 4.1
Program Rec1;
Uses crt;
Type
RecBarang = Record
Nama
: String[25];
Kualitas : Char;
Harga
: LongInt
End;
Var
Barang : RecBarang;
{variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
Barang.Nama := Ubin TISKA 20x20;
Barang.Kualitas := A;
Barang.Harga := 14000;
{menampilkan isi field}
writeln (Nama Barang
: , Barang.Nama);
writeln (Kualitas
: , Barang.Kualitas);
writeln (Harga
: , Barang.Harga);
Readln
End.
Hasil program :
Nama Barang
Kualitas
Harga
37
lebih
jelasnya,
tulislah
program
berikut
dan
cobalah
menjalankannya.
Contoh 4.2
Program Rec2;
Uses crt;
Type
RecBarang = Record
Nama
: string[25];
Kualitas
: car;
Harga
: longInt
End;
Var
Barang1, Barang2 : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
Barang1.Nama := Ubin TISKA 20x20;
Barang1.Kualitas := A;
Barang1.Harga := 14000;
{menyalin record}
Barang2 := Barang1;
Menampilkan isi field}
Writeln (Nama Barang
: , Barang2.Nama);
Writeln (Kualitas : , Barang.Kualitas);
Writeln (Harga
: , Barang.Harga);
Readln
End.
38
RecPegawai = Record
Tanggal,
Bulan,
Tahun
End;
Nomor
Nama
TglLahir
Gaji
End;
:Integer
: LongInt;
: String [35];
: RecTanggal;
: LongInt
Tampak bahwa tipe record bernama RecPegawai berisi record yang lain
(RecTanggal).
Hal yang menarik yang perlu diperhatikan adalah cara mengakses field
seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai
berikut.
Nama_variabel.TglLahir.Tanggal
Nama_variabel.TglLahir.Bulan
Nama_variabel.TglLahir.Tahun
: Integer
: LongInt;
: string [35];
: RecTanggal;
: longInt
39
End;
Var
DataPeg : RecPegawai;
Begin
Clrscr;
Penugasan nilai terhadap field-fiedl}
DataPeg.Nomor := 56789;
DataPeg.Nama := Badu;
DataPeg.TglLahir.Tanggal := 24;
DataPeg.TglLahir.Bulan := 12;
DataPeg.TglLahir.Tahun := 1972;
DataPeg.Gaji := 750000;
: Badu
Tanggal Lahir
: 24 / 12 / 1972
6) Pernyataan With
Untuk menyederhanakan notasi seperti :
DataPeg.TglLahir.Tanggal
Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapat
disebutkan tanpa perlu menyertakan lagi nama record dan tanda titik.
Untuk lebih jelasnya, perhatikan program berikut yang merupakan
alternatif lain dari program di atas.
40
Contoh 4.4
Program Rec4;
Uses crt;
Type
RecBarang = Record
Nama
Kualitas
Harga
End;
Var
Barang : RecBarang;
Begin
Clrscr;
{penugasan nilai terhadap field-field}
With Barang do
Begin
Nama := Ubin TISKA 20x20;
Writeln (Nama Barang
Writeln (Kualitas :, Kualitas);
Writeln (Harga
:, Harga);
End;
Readln
End.
: String [25];
: Char;
: LongInt
{variabel bertipe record}
: , Nama);
Bila suatu record memiliki record lain, pernyataan With dapat diikuti
dengan with yang lain. Sebagai contoh, program di atas ditulis menjadi :
Contoh 4.5
Program Rec5;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun
: Integer
End;
RecPegawai = Record
Nomor
: LongInt;
Nama
: string [35];
TglLahir
: RecTanggal;
Gaji
: LongInt
End;
Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg do
41
With TglLahir do
Begin
Nomor
:= 56789;
Nama
:= Badu;
Tanggal
:= 24;
Bulan
:= 12;
Tahun
:= 1972;
Gaji
:= 750000;
End;
{menampilkan isi field}
With DataPeg do
With TglLahir do
Begin
Writeln (Nama Pegawai
:, DataPeg.Nama);
Writeln (Tanggal lahir
:, DataPeg.TglLahir.Tanggal,
/, DataPeg.TglLahir.Bulan
/, DataPeg.TglLahir.Tahun)
End;
Readln
End.
Pernyataan seperti :
With DataPeg do
With TglLahir do
42
7) Array Record
Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat
di bawah ini.
Const
Jum_Maks = 20;
Type
RecBarang = Record
Nama
: String [25];
Kualitas
: Char;
Harga
: LongInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang;
{array record}
43
Jum_Maks = 20;
Type
RecBarang = Record
Var
Nama
Kualitas
Harga
: string [25];
: char;
: longInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
DafBarang : TabelBarang;
JumBarang : Integer;
{array record}
44
C. Penutup
Record adalah salah satu tipe data terstuktur bentukan yang
digunakan untuk mempresntasikan sebuah objek yang tidak dapat
dipresentasikan menggunakan tipe data dasar, seperti integer, real,
boolean, character. Setiap record terdiri dari beberapa elemen yang disebut
field. Setiap field menggambarkan informasi tertentu, dan tipe setiap field
sudah dikenal, baik itu tipe dasar atau tipe bentukan lainnya.
Operasi atau manipulasi terhadap record hanya dapat dilakukan
terhadap field-field pembentuknya. Pengacuan pada setiap field dilakukan
dengan record selector. Operasi yang dapat dilakukan terhadap field-field
tersebut sama dengan operasi yang dapat dikenakan terhadap tipe
pembentuknya.
1) Pertanyaan
(a) Buat program untuk menginput dan menampilkan data nilai
mahasiswa dengan menggunakan array record
(b) Buat program mengakses record di dalam record
2) Umpan Balik dan Tindak Lanjut
Untuk menguasai materi ini, sebaiknya anda membuat ringkasan
materi tentang record dan membuat sendiri beberapa program dengan
menggunakan record.
Jawab pertanyaan di atas dengan langsung membuat program di
komputer. Jalankan program tersebut sampai benar. Hapus kembali
listing program yang sudah benar dan buat kembali program tersebut,
dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudah
kecil, anda dapat melanjutkan materi berikutnya. Kalau program belum
jalan, perbaiki terus sampai program tersebut benar dan jalan.
4) Kunci Jawaban
45
Jawaban b
program arrayrecord;
const max=100;
type
tsiswa=record
NIM :STRING[9];
Nama : string[25];
Nilai : real;
end;
tkumpulansiswa = array[1..max] of tsiswa;
var
a:tkumpulansiswa;
i,n:integer;
begin
write('masukkan jumlah siswa yang akan diisikan :');readln(n);
writeln;
writeln('memasukkan data');
writeln('-------------------------------');
for i:= 1 to n do
begin
writeln('Data siswa ke-',i);
write('NIM : ');readln(a[i].NIM);
write('Nama : ');readln(a[i].Nama);
write(Nilai : );readln(a[i].Nilai);
writeln;
end;
writeln;
writeln('DAFTAR SISWA');
writeln('---------------------------------------------');
writeln('NIM ',' '
, 'NAMA'),NILAI;
writeln('---------------------------------------------');
for i:=1 to n do
begin
with a[i] do
begin
writeln(NIM:9,' ' ,Nama, Nilai);
end;
end;
readln
end.
Jawaban b
Program Record_dalam_record;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun
End;
: Integer
46
Var
RecPegawai = Record
Nomor
Nama
TglLahir
Gaji
End;
: LongInt;
: string [35];
: RecTanggal;
: LongInt
Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Munir, Rinaldi. 2002. Algoritma dan Pemrograman dalam bahasa Pascal
dan C Edisi 2. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
47
BAB V
SORTING
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi pengurutan, pengurutan gelembung,
pengurutan maksimum/minimum, pengurutan seleksi.
Relevansi
Pengurutan akan memudahkan kita dalam mencari data dalam
sebuah program. Pengurutan sangat erat kaitannya dengan pencarian.
Tujuan Instruksional Khusus
Mahasiswa
mampu
membuat
program
dengan
menggunakan
perintah sorting.
B. Penyajian
1) Definisi Pengurutan (Sorting)
Selain
pencarian,
pengurutan
data
merupakan
salah
satu
48
7. Merge Sort
8. Shell Sort
Pada pembahasan ini, hanya 3 (tiga) metode yang akan dibahas yaitu
metode
pengurutan
gelembung
sort),
(bubble
pengurutan
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
49
15
25
22
18
20
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 2
Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1
sehingga array akan menjadi seperti berikut.
15
18
25
22
20
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 3
Mulai dari A[5] sampai A[4], lakukan proses seperti pada tahap 1 dan 2
sehingga array akan menjadi seperti berikut.
15
18
20
25
22
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 4
Tahap ini merupakan tahap terakhir dimana kita akan melakukan
perbandingan terhadap nilai dari elemen terakhir (A5]) dengan elemen
terakhir-1 (A[4]). Apabila nilai A[5] lebih kecil maka tukarkan nilainya
dengan A[4] sehingga array A di atas akan terurut secara menaik seperti
yang tampak di baeah ini.
15
18
20
22
25
A[1]
A[2]
A[3]
A[4]
A[5]
Pada proses yang terjadi di atas tampak jelas bahwa untuk melakukan
pengurutan data dengan lima buah elemen, kita harus melakukan empat
tahapan. Sekarang, apabila proses di atas kita translasikan ke dalam
bahasa pascal, maka hasilnya adalah sebagai berikut.
50
Var
n,
{banyaknya elemen array}
j, k
{variabel bantu untuk indeks pengulangan}
temp : integer;
{variabel bantu untuk melakukan pertukarannilai}
begin
for j:= 1 to N-1 do begin
for k:= N downto j+1 do begin
if A[k] < A[k-1] then begin
temp := A[k];
A[k] := A[k-1];
A[k-1] := temp;
End;
End;
End;
End;
51
Readln;
End.
Hasil yang akan diberikan oleh program di atas adalah sebagaii beriku.
Data sebelum diurutkan
25
22
18
20
15
Data setelah diurutkan
15
18
20
22
25
3) Pengurutan Maksimum/Minimum
Dengan metode ini, elemen array dengan nilai maksimum/minimum
akan disimpan ke bagian ujung array (elemen pertama maupun terakshir).
Selanjutnya nilai tersebut akan diisolasi atau diikat dan tidak diikutkan
lagi dalam proses selanjutnya. Di sini, kita hanya akan menggunakan
metode maksimum saja dan tidak akan membahas mengenai metode
minimum. Hal ini disebabkan karena konsep yang terdapat pada metode
minimum sama persis dengan metode maksimum. Untuk mempermudah
pembahasan, coba perhatikan kembali array A yang terdapat pada
bahasan sebelumnya.
25
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
Pada bagian ini kita akan melakukan pengurutan data di dalam array
tersebut dengan menggunakan metode maksimum, di mana kita akan
melempar nilai maksimum ke bagian paling kanan array. Adapun
tahapan-tahapan yang perlu dilalui untuk melakukan hal tersebut adalah
sebagai berikut.
52
Tahap 1
Mulai dari A[1] sampai A[5], cari nilai maksimum dan tukarkan nilainya
dengan elemen terakhir (A[5]) sehingga array akan akan berubah menjadi
seperti di bawah ini.
15
22
18
20
25
A[1]
A[2]
A[3]
A[4]
A[5]
Sampai di sini, elemen terakhir (A[5]) tidak akan diikutkan lagi ke dalam
proses atau tahap selanjutnya.
Tahap 2
Mulai dari A[1] sampai A[4], cari nilai maksimum dan tukarkan nilainya
dengan elemen terakhir saat ini (A[4]) sehingga array akan akan berubah
menjadi seperti di bawah ini.
15
20
18
25
A[1]
A[2]
A[3]
A[4]
A[5]
Sampai di sini, elemen ke-4 (A[4]) juga tidak akan diikutkan lagi ke dalam
proses atau tahap selanjutnya.
Tahap 3
Mulai dari A[1] sampai A[3], cari nilai maksimum dan tukarkan nilainya
dengan elemen terakhir saat ini (A[3]) sehingga array akan tampak seperti
di bawah ini.
15
18
20
22
25
A[1]
A[2]
A[3]
A[4]
A[5]
Sampai di sini, elemen ke-3 (A[3]) juga tidak akan diikutkan lagi ke dalam
proses selanjutnya.
53
Tahap 4
Tahap terakhir, cari nilai maksimum antara A[1] sampai A[2] dan
tukarkan nilainya dengan elemen A[2]. Untuk kasus ini nilai maksimum
terdapat pada A[2] sehingga di sini benarnya terjadi proses yang
seharusnya tidak perlu dilakukan, yaitu menukarkan nilai A[2] dengan
A[2]. Berikut ini bentuk translasi metode di atas ke dalam bahasa Pascal.
Var
n,
x,
j, k,
maks,
imaks,
temp : integer;
begin
x:= n;
for j:= 1 to n-1 do begin
maks := A[1];
imaks := 1;
4) Pengurutan Seleksi
Pengurutan dengan metode seleksi ini bekerja dengan cara memilih salah
satu elemen serta menganggapnya sebagai nilai terkecil. Kemudian nilai
tersebut aan dibandingkan dengan elemen-elemen pada posisi berikutnya.
Apabila nilai yang dipilih pertama kali lebih besar dari nilai elemen
pembanding maka tukarkan kedua buah nilai tersebut. Untuk memperjels
pembahasan ini, marilah kita perhatikan kembali array A seperti
pembahasan sebelumnya. Berikut gambarannya.
54
25
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 1
Mula-mula, A[1] akan dianggap sebagai nilai terkecil, yaitu dengan cara
memasukkan nilai 1 ke dalam variabel, misalnya dengan nama min. Mulai
dari j = min + 1 sampai n (jumlah elemen array), lakukan perbandingan
antara A[j] dengan nilai A[min]. Apabila nilai dari A[min] > A[j], isikan
min = j. Setelah pengulangan selesai, tukarkan nilai A[min] dan A[1].
Untuk kasus ini, nilai min adalah 5 karena nilai terkecil tersimpan pada
indeks ke-5. hal tersebut akan menyebabkan array A tampak menjadi
seperti berikut.
15
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 2
Mula-mula, A[2] akan dianggap sebagai nilai terkecil, yaitu dengan cara
memasukkan nilai 2 ke dalam variabel, misalnya dengan nama min.
Kemudian sama seperti di atas, lakukan pengulangan mulai dari j = min +
1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan nilai min,
maka tukarkan A[min] dengan A[2]. Untuk kasus ini, nilai minimum
ditemukan pada indeks ke-3 sehingga min = 3. Tukarkan A[min] dengan
A[2] sehingga array A akan tampak seperti berikut.
15
18
22
20
25
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 3
Mula-mula, A[3] akan dianggap sebagai nilai terkecil, yaitu dengan cara
memasukkan nilai 3 ke dalam variabel min. Kemudian sama seperti di
atas, lakukan pengulangan mulai dari j = min + 1 sampai n dan
bandingkan setiap nilainya. Setelah didapatkan nilai min, maka tukarkan
55
A[min] dengan A[3]. Untuk kasus ini, nilai minimum ditemukan pada
indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehingga
array A akan tampak seperti berikut.
15
18
20
22
25
A[1]
A[2]
A[3]
A[4]
A[5]
Tahap 4
Mula-mula, A[4] akan dianggap sebagai nilai terkecil, yaitu dengan cara
memasukkan nilai 4 ke dalam variabel min. Kemudian sama seperti di
atas, lakukan pengulangan mulai dari j = min + 1 sampai n dan
bandingkan setiap nilainya. Setelah didapatkan nilai min, maka tukarkan
A[min] dengan A[4]. Untuk kasus ini, nilai minimum ditemukan pada
indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehingga
array A akan tampak seperti berikut.
15
18
20
22
25
A[1]
A[2]
A[3]
A[4]
A[5]
C. Penutup
1) Pertanyaan
Buat program untuk mengurutkan data mahasiswa dengan metode
seleksi.
2) Umpan Balik dan Tindak Lanjut
Untuk menguasai materi ini, sebaiknya anda membuat ringkasan
materi tentang sorting (pengurutan) dan membuat sendiri beberapa
program dengan sorting.
Jawab pertanyaan di atas dengan langsung membuat program di
komputer. Jalankan program tersebut sampai benar. Hapus kembali
listing program yang sudah benar dan buat kembali program tersebut,
56
Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal
dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
57
BAB VI
SEARCHING
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi pencarian (searching), metode
pencarian beruntun, metode pencarian bagi dua.
Relevansi
Pencarian dalam sebuah program akan sangat menguntungkan bagi
pemrogram apabila akan membuat sebuah program yang mengharuskan
adanya pencarian data tertentu. Dengan pencarian, akan membat program
lebih efektif.
Tujuan Instruksional Khusus
Mahasiswa
mampu
membuat
program
dengan
menggunakan
perintah searching.
B. Penyajian
(1) Definisi Pencarian (Searching)
Pencarian (searching) data tertentu yang terkandung di dalam array
merupakan
hal
yang
banyak
ditemukan
dalam
kasus-kasus
pemrograman. Maka dari itu, pada bagian ini kita akan membahas
mengenai cara yang seharusnya digunakan untuk melakukan hal tersebut
serte pengimplementasiannya di dalam bahasa Pascal. Dalam ilmu
algoritma, metode pencarian data di dalam array diklasifikasikan menjadi
dua, yaitu metode pencarian beruntun (sequential search) dan metode
pencarian
bagi
dua/pencarian
biner
58
(binary
search).
Berikut
ini
Hentikan pencarian
75
73
78
81
80
indeks array
59
begitu seterusnya. Pada saat elemen ketiga, nilai A[3] sama dengan nilai
yang dicari pencarian akan dihentikan.
Berikut ini contoh program yang akan menunjukkan implementasi
dari pencarian array dengan menggunakan metode di atas. Apabila data
yang dicari ditemukan dalam array, maka program akan menampilkan
indeks dimana data tersebut berada. Sebaliknya, apabila data tidak
ditemukan maka program akan mengembalikan indeks nol.
Program CariBeruntun;
Uses crt;
Const
A : array [1 . . 5] of integer = (75, 73, 78, 81, 80);
Var
i, x, indeks : integer;
begin
clrscr;
write (Masukkan nilai yang akan dicari : ); readln(x);
indeks := 0;
for i := 1 to 5 do begin
if A[i] = x then begin
indeks := I;
break;
end;
end;
writeln (x, ditemukan pada indeks ke-, indeks);
readln;
end.
Sekarang tinjaulah kasus apabila ternyat data yang dicari dalam array
tidak ditemukan. Sebagai contoh apabila kita memiliki array dengan n
buah elemen, maka dengan metode runtunan ini, program akan
melakukan pembandingan nilai sebanyak n kali, yaitu dari indeks
pertama sampai indeks ke-n. Hal ini tentu dapat dikatakan sebagai sebuah
kelemahan dari metode tersebut.
60
3)
untuk data belum terurut, metode pencarian bagi dua ini hanya dapat
digunakan untuk data-data yang telah terurut, baik secara menaik
maupun menurun.
Dalam metode ini elemen array akan dibagi menjadi dua, sehingga
banyaknya proses pembandingan nilai dapat dikurangi. Sebagai contoh,
apabila terdapat array A yang memiliki n buah elemen dengan indeks 1
sampai n dan datanya telah terurut secara menaik, maka array tersebut
akan dipenggal pada indeks ke-k, dimana k = n + 1 div 2. hal tersebut
mengakibatkan array A terbagi menjadi dua bagian, yaitu dari A[1] . .
A[k-1] dan A[k+1] . . A[n], sedangkan a[k] menjadi pemenggal atau
pembatas antara dua bagian tersebut. Apabila x (nilai yang dicari) sama
dengan nilai A[k] maka hentikan pencarian, sedangkan bila tidak, periksa
apakah nilai A[k] > x ataukah A[k] < x. Bila A[k] lebih besar dari x, maka
ulangi metode pencarian tersebut untuk A[1] sampai A[k-1]. Sebaliknya,
apabila A[k] lebih kecil dari x, maka ulangi metode pencarian tersebut
untuk A[k+1] sampai A[n]. Perhatikan gambar berikut.
Keadaan pertama
10 12
Keadaan kedua
20
16
18
19
20
22
24
25
26
28
29
k1 = 7
22
24
25
26
28
29
K2 = 11
Keadaan ketiga
20
15
22
24
Hentikan pencarian
K3 = 11
Gambar 6.2. Pencarian Data dengan Metode Pencarian Bagi Dua(sumber:Rahardjo)
Pada gambar di atas, array terdiri dari 14 buah elemen yang sudah
terurut secara menaik dengan indeks 1 sampai 14. Mula-mula (keadaan
61
pembatasnya adalah indeks ke-11, yang berasal dari (8+4) div 2. Karena
nilai pada indeks ke-11 (nilai 25) lebih besar dari nilai yang dicari (niali
22), maka proses pencarian akan dilakukan lagi untuk indeks ke-8 sampai
ke-10. Pada keadaan ini (keadaan ketiga), array akan dibagi menjadi dua
pada indeks ke-9, yang berasal dari (8+10) div 2. Karena nilai pada indeks
ke-9 sama dengan nilai yang dicari, maka proses pencarian pun
dihentikan. Untuk lebih memperjelas pembahasan serta menunjukkan
implementasinya, perhatikan contoh program di bawah ini.
Program CariBagiDua;
Uses crt;
Const
A : array [1 . . 14] of integer = (10,12,14,15,16,18,19,20,22,24,25,26,28,29);
Var
idxAwal,
{indeks array awal}
idxAkhir,
{indeks array akhir}
k,
{indeks pemenggal/pembatas}
x : integer;
{nilai yang dicari}
ketemu : boolean;
{variabel status, ditemukan atau tdak ?}
begin
clrscr;
write (masukkan nilai yang akan dicari : ); readln(x);
{melakukan pencarian}
idxAwal := 1;
idxAkhir := 14;
{14 adalah jumlah elemen array A}
ketemu := false;
while (not ketemu) and (idxAwal<= idxAkhir) do begin
k:= (idxAwal + idxAkhir) div 2;
if A[k] = x then begin
ketemu := true;
end else begin
if A[k] < x then begin
idxAwal := k + 1;
{mencari di bagian kanan}
end else begin
idxAkhir := k 1;
{mencari di bagian kiri}
end;
end;
62
end;
{memeriksa, ketemu atau tidak}
if ketemu then begin
writeln (x, ditemukan pada indeks ke-, k);
end else begin
writeln(x, tidak ditemukan);
end;
readln;
end.
C. Penutup
Pencarian (searching) dilakukan untuk menemukan nilai tertentu pada
sejumlah nilai yang tersedia. Terdapat bermacam-macam program
pencarian yang telah dikembangkan dengan ide dasar yang berbeda. Dua
diantaranya adlah pencarian beruntun dan pencarian bagi dua.
Pencarian beruntun dilakukan dengan melakukan perbandingan nilai
yang dicari dengan setiap elemen array, mulai dari indeks terkecil sampai
indeks terbesar yang terdefinisi. Pencarian dihentikan jika nilai yang
dicari telah ditemukan atau semua elemen sudah diperiksa. Mencari nilai
terbesar atau terkecil adalah contoh lain dari proses beurtan terhadap
array.
Metode pencarian bagi dua ini hanya dapat digunakan untuk datadata yang telah terurut, baik secara menaik maupun menurun. Dalam
metode ini elemen array akan dibagi menjadi dua, sehingga banyaknya
proses pembandingan nilai dapat dikurangi.
63
1) Pertanyaan
Buat program untuk mencari nilai tertentu dengan metode pencarian
beruntun.
2) Umpan Balik dan Tindak Lanjut
Untuk menguasai materi ini, sebaiknya anda membuat ringkasan
materi tentang searching (pencarian) dan membuat sendiri beberapa
program dengan searching.
Jawab pertanyaan di atas dengan langsung membuat program di
komputer. Jalankan program tersebut sampai benar. Hapus kembali
listing program yang sudah benar dan buat kembali program tersebut,
dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudah
kecil, anda dapat melanjutkan materi berikutnya. Kalau program belum
jalan, perbaiki terus sampai benar.
3) Kunci Jawaban
Program pencarian_beruntun;
Const
nmin = 1;
nmax = 100;
type
arrint = array [nmin..nmax] of integer;
var
x
: integer;
TabInt
: arrint;
n
: integer;
indeks : integer;
function cari1 (xx: integer) : integer;
var
i
: integer;
begin
i := 1;
while ((i<n) and (TabInt[i] <> xx)) do
i := i + 1;
if TabInt[i] = xx then
cari1 := i
else
cari1 := 0;
end;
begin
write (Nilai yang dicari = );
readln (x);
64
Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal
dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
65
BAB VII
RECORD
I. Teori
Record adalah elemen larik yang bertipe terstruktur. Dengan menggunakan
tipe data record, beberapa item data yang masing-masing dapat mempunyai
tipe data berbeda-beda dapat dikumpulkan. Masing-masing item data disebut
dengan field. Jadi record terdiri dari kumpulan field yang dapat berbeda tipe.
Biasanya suatu record berisi beberapa field untuk sebuah subyek tertentu.
Misalnya record TabelMhs dalam Gambar 6.1. adalah sebuah larik (sejumlah
100 elemen) yang elemennya menyatakan nilai ujian mata kuliah (MK) yang
diambil seorang mahasiswa. Data (field) setiap mahasiswa adalah NIM
(Nomor Induk Mahasiswa), nama mahasiswa, mata kuliah yang diambil, dan
nilai mata kuliah tersebut.
Tabel Mhs
NIM
NamaMhs
KodeMK
Nilai
1 0604100001
M. Khairuddin
FTC155
2 0604100002
Agastya
FTC165
3 0604100003
Budi Kusuma
FTC177
4 0604100004
Marina
FTC178
5 0604100005
Eliawati
FTC180
Prasetyo
FTC185
.
.
100 0604100100
II. Prepraktikum
Kerjakan tugas-tugas di bawah ini sebelum praktikum dimulai.
1.
Sebutkan
dan
jelaskan
record!
66
keuntungan-keuntungan
penggunaan
2.
3.
: jumlah mahasiswa.
Selanjutnya memasukkan record data mahasiswa. Data (field)
setiap mahasiswa adalah NPM (Nomor Pokok Mahasiswa),
nama mahasiswa, mata kuliah yang diambil, dan nilai mata
kuliah tersebut
Keluaran
NPM
III.
Nama
Kode
Nilai
Kegiatan Praktikum
Pada saat praktikum, kerjakan tugas-tugas berikut ini:
1. Buat program untuk tugas prepraktikum 3!
2. Tugas tambahan (ditentukan oleh asisten praktikum)!
IV.Tugas Akhir
Buatlah algoritma dan terjemahkan dalam bahasa pascal untuk
memasukkan data belanja dan menampilkannya dalam bentuk nota Belanja. Total
Harga dan Total belanja didapat dengan melakukan proses perhitungan kemudian
hasil nya ditampilkan dalam bentuk seperti contoh dibawah ini.
67
Kode Barang
AB123
: 04-11-2009
: Yoremi Sido
: Jl. Suka-suka No. 321 Sorong
Nama Barang
Harga Satuan
(Rp)
Jumlah
Barang A
15000
30000
BC234
Barang B
20000
20000
CD345
Barang C
25000
50000
DE456
Barang D
30000
90000
EF567
Barang E
35000
140000
T O T A L B E L A N J A (Rp)
68
Harga x Jumlah
(Rp)
330000
BAB VIII
FILE
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi file, variabel file, membuka file,
memanipulasi data dalam file, menutup file.
Relevansi
Data dalam sebuah program yang telah dibuat dengan berbagai
materi pada bab sebelumnya dapat disimpan untuk digunakan kembali
dengan perintah file. Dengan demikian, apabila komputer dimatikan
maka datanya tidak akan hilang.
Tujuan Instruksional Khusus
Mahasiswa
mampu
membuat
program
dengan
menggunakan
perintah file.
B. Penyajian
1) Definisi File
Dalam kasus-kasus pemrograman tertentu kita sering disudutkan
untuk menggunakan file sebagai media yang digunakan untuk
menyimpan data-data, baik berupa data input (untuk masukan) maupun
sebagai data output (untuk keluaran). Sebagai contoh, apabila kita
menggunakan sistem operasi Microsoft Windows maka kita akan
menemukan file sistem seperti autoexec.bat, config.sys, system.ini dan
lainnya. File tersebut sebenarnya digunakan untuk menyimpan data-data
secara terpisah sehingga nilainya dapat diubah dengan mudah sesuai
dengan kebutuhan. Sebagai seorang programmer, kita tentu dituntut
untuk dapat menggunakan (mengakses) file dari dalam prograam yang
kita buat. Berdasarkan prosedur yang ada, proses pengaksesan file di
dalam bahasa Pascal terdiri dari emapt tahap, yaitu :
69
(a) Menghubungkan file fisik yang akan dibuka atau dibuat dengan
variabel file
(b) Membuka file
(c) Melakukan operasi file (membaca atau menulis)
(d) Menutup file
2) Variabel File
Sebelum file dapat dibuka atau dibuat oleh program, kita harus
menghubungkannya dengan variabel file terlebih dahulu. Variabel file
merupakan peralatan logik yang digunakan sebagai perantara dalm
mentransfer atau membaca data dari atau ke sebuah file fisik yang
tersimpan di dalam disk. Dengan kata lain, sebenarnya kita tidak secara
langsung memanipulasi file fisik tersebut, melainkan melalui variabel file.
Dalam bahasa Pascal, variabel seperti ini dianggap sebagai variabel biasa
yang dideklarasikan dengan tipe file tertentu. Cara yang harus dilakukan
untuk dapat menghubungkan file fisik dengan variabel file adalah dengan
menggunakan prosedur Assign, yang memeiliki bentuk umum sebagai
berikut.
Procedure Assign (NamaVariabelFile, NamaFileFisik);
70
Sedangkan apabila file yang akan kita akses berada dalam satu
direktori dengan program (file eksekusi) yang kita buat, maka kita tidak
perlu menuliskan lokasi atau path-nya. Artinya kita hanya perlu untuk
menuliskan nama file-nya saja seperti berikut.
Assign (F, CONTOH.TXT);
Bila file yang dibuka berupa file teks, maka file tersebut akan bersifat
writeonly atau tidak dapat dibaca, artinya operasi yang diizinkan untuk
71
72
: Budi Raharjo
Tahun
: 2005
Penerbit
: INFORMATIKA
73
file yang telah dihubungkan dengan variabel file. Namun sebagai catatan
bagi Anda bahwa prosedur Append hanya dapat digunakan apabila file
yang dibuka merupakan file teks. Berikut ini bentuk umum dari prosedur
Append.
Procedure Append (NamaVariabelFile: Text ) ;
Apabila anda membuka file teks yang belum ada didalam diks
dengan menggunakan prosedur Append, maka akan terjadi kesalahan
pada saat program sedang berjalan (run-time). Setiap pemanggila prosedur
Append, file bersifat write-only (hanya dapat ditulis) dan posisi file akan
diset pada bagian akhir baris file. Untuk dapat lebih memahaminya,
buatlah file teks (*.TXT) dengan program teks editor yang tersedia,
misalnya Notepad, kemudian isikan teks berikut ke dalamnya.
Ini adalah data yang dituliskan pada baris pertama.
Ini adalah data yang dituliskan pada baris pertama.
74
75
Program ContohWrite;
Uses crt;
Var
F : TextFile;
Begin
Assign (F,D:\COBA\DATA.TXT);
Reset (F);
Write (F, Teknik Pemrograman );
Write (F, Pascal);
Close (F);
End.
Jalankan program tersebut dan buka kembali isi dari file DATA.TXT,
maka kita akan melihat bahwa file tersebut sekarang telah berisi teks
berikut.
Teknik Pemrograman Pascal
76
77
78
Oleh
Tahun
Penerbit
: Budi Raharjo
: 2005
: INFORMATIKA Bandung
Begitu juga apabila file berisi data real, maka kodenya adalah seperti
berikut.
var
F : file of real;
Contoh penggunaan file bertipe untuk tipe record adalah sebagai berikut.
Type
Tsiswa = Record
NIM : string [8];
Nama : string [25];
Umur : integer;
Alamat : string [30];
Kota : string [15];
End;
Var
F : file of Tsiswa;
79
C.
Penutup
Sejauh ini program yang kita buat masih menggunakan data yang
bersifat sementara. Artinya, umur atau daur hidup dari data tersebut
masih tergantung pada lamanya program bersangkutan dijalankan. Hal
ini disebabkan karena data tersebut hanya disimpan di dalam memori
komputer sehingga apabila program dihentikan maka alamat memori
tempat data-data tersebut disimpan juga akan didealokasikan oleh
kompiler secara otomatis, dan ini mengakibatkan data-data yang
tersimpan pun akan hilang. Untuk mengatasi kasus tersebut, dalam
pemrograman disediakan alat bantu untuk penyimpanan data-data hasil
program yang disebut dengan file. Secara fisik, file disimpan di dalam
suatu disk seperti harddisk atau disket, yang selanjutnya dapat
dimanipulasi isinya.
1) Pertanyaan
(a) Buat program untuk pengolahan data barang dengan menggunakan
media file teks.
(b) Buat
program
untuk
mengkoreksi
80
data
barang
dengan
81
end
else
write('tidak ada data barang ini !!!');
close(berkasteks);
writeln;
write('ada data yang akan dicari [y/t] ?');readln(lagi);
end;
end.
Jawaban b
program koreksidata;
uses crt;
var
berkasteks, berkasdummy :text;
kodebrg:string[5];
namabrg:string[20];
unitbrg:integer;
hargabrg:real;
kodecari:string[5];
spasi:string[5];
lagi:char;
ketemu:boolean;
begin
lagi:='Y';
while upcase(lagi) ='Y' do
begin
assign(berkasteks,'barang.txt');
reset(berkasteks);
assign(berkasdummy,'barang.$$$');
rewrite(berkasdummy);
spasi :=' ';
clrscr;
write('kode barang dikoreksi ?'); readln(kodecari);
writeln;
kodecari:=copy(spasi,1,5-length(kodecari))+kodecari;
ketemu:=false;
while not eof(berkasteks) do
begin
readln(berkasteks,kodebrg,namabrg,unitbrg,hargabrg);
if kodebrg = kodecari then
begin
ketemu:=true;
writeln('kode barang :',kodebrg);
write ('koreksinya :');readln(kodebrg);
writeln('nama barang :',namabrg);
write ('koreksinya :');readln(namabrg);
writeln('unit barang :',unitbrg:7);
write ('koreksinya :');readln(unitbrg);
writeln('harga barang :Rp.',hargabrg:10:2);
write ('koreksinya :');readln(hargabrg);
end;
writeln(berkasdummy,kodebrg:5,namabrg:20,unitbrg,hargabrg:10:2);
end;
82
Daftar Pustaka
Jogiyanto, 1989. Turbo Pascal. Yogyakarta : Andi Ofset.
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran
PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi
Offset.
Kadir, Abdul. 2002. Pemrograman Pascal Buku 2. Yogyakarta: Andi
Offset.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
Wahid, Fathul. 2004. Dasar-Dasar Algoritma dan Pemrograman.
Yogyakarta : Andi.
83