Algoritma Dan Struktur Data 1 2
Algoritma Dan Struktur Data 1 2
BAHAN AJAR
MATA KULIAH PEMROGRAMAN
Tinjauan Mata Kuliah
1.1. Deskripsi Mata Kuliah
Algoritma dan struktur data merupakan matakuliah yang
mempelajari
bagaimana
Matakuliah
praktikum
membuat
dengan
program
terstruktur.
menggunakan
bahasa
untuk
pemrograman
dapat
terstruktur.
memahami
Dengan
lebih
lanjut
tentang
menggunakan
bahasa
menyelesaikan
mampu
mata
membuat
kompleks.
1.4. Susunan Bahan Ajar
Bab I
Array
Bab II
Record
Bab III
Prosedur
Bab IV
Fungsi
Bab V
Sorting
Bab VI
Searching
kuliah
program
ini,
mahasiswa
terstruktur
yang
acuan
lainnya
yang
relevan
pada
setiap
pertemuan.
b. Untuk memperkaya wawasan dan pengetahuan sangat
dianjurkan
penelusuran
literatur
khususnya
materi
maupun
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 harus diperhatikan, baik itu dalam hal kecepatan
jalannya program, memori yang digunakan, banyak baris kode
yang dituliskan dan juga ketepatan algoritma yang digunakan.
Salah satu komponen yang harus dikuasai untuk memperoleh
program yang baik adalah pengetahuan tentang array.
1)
Definisi Array
elemen
nilai
yang
bertipe
integer,
maka
dapat
A[2]
2
20
A[3]
3
30
A[4]
4
40
A[5]
5
50
A[6]
6
60
A[7]
7
70
A[8]
8
80
A[9]
9
90
A[10]
10
100
Deklarasi Array
Sama seperti variabel lain, array juga dideklarasikan di dalam
(di
bawah
kata
kunci
type).
Dalam
bahasa
Pascal,
array [0 . . 9] of integer;
array [5 . . 15] of integer;
array [a . . j] of integer;
arrat [A . . J] of integer;
3)
4)
5)
sebagai
array.
Berikut
ini
contoh
kode
yang
6)
Array Konstan
Nilai yang terkandung di dalam sebuah array dapat bernilai
Const
NamaArray : array [indexAwal . . indeksAkhir] of tipe_data =
Nila1, nilai2, ...);
Gambar 1.4 Bentuk Umum Pendeklarasian Array Konstan
(sumber:Rahardjo)
didefinisikan.
Sebagai
contoh,
apabila
kita
ingin
[1]
[2]
[1]
[1]
[1]
:=
:=
:=
:=
:=
10
7)
parameter
bertipe
array.
11
Prosedur
tersebut
akan
penggunaan
array
yang
tidak
diperbolehkan
oleh
kompiler.
Procedure InputArray [A:array[1..100] of integer; N);
Berikut
ini
kode
yang
merupakan
{salah}
perbaikan
dari
kode
sebelumnya.
Procedure InputArray [A:array of integer; N);
{benar}
12
8)
Array Multidimensi
Sejauh ini kita baru membahas mengenai array berdimensi
baris
Kolom
Gambar 1.5. Array dua dimensi (sumber:Rahardjo)
13
14
writeln;
{mengisikan matriks B}
writeln(Matriks B);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
write(B[, j, , , k, ] = ); readln(B[j, k]);
end;
writeln;
end;
writeln;
{melakukan penjumlahan matriks A dan B sekaligus menampilkan hasilnya ke
layar}
writeln(Hail Penjumlahan);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
C[j, k] : = A[j, k] + B[j, k];
write(C[, j, , , k, ] = ); readln(C[j, k]);
end;
writeln;
end;
readln;
end.
15
10)
x
z
Berikut
ini
bentuk
umum
yang
digunakan
untuk
16
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
17
Pertanyaan
Buat
program
dengan
menggunakan
array
untuk
2)
pertanyaan
di
atas
dengan
langsung
membuat
18
3)
Kunci Jawaban
Jawaban a
program nilai_terbesar;
const besar=10;
var
n:array [1.. besar] of real;
i:integer;
max:real;
begin
for i:= 1 to besar do
begin
write('masukkan data ke-',i,':');readln(n[i]);
if (n[i])>max then max:=(n[i]);
end;
write('nilai tebesar :',max:2:0);
readln
end.
Jawaban b
program nama_bulan;
const
bulan:array[1..12] of string=('Januari','Februari','Maret','April','Mei','Juni',
'Juli','Agustus','September','Oktober','Nopember','Desember');
var
nobulan:integer;
begin
write('Masukkan nomor bulan :');readln(nobulan);
write('Nama bulan ke-', nobulan,' adalah ', bulan[nobulan]);
readln;
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
19
BAB II
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
Mendeklarasikan Record
Record
Daftar_field_1 : tipe_1;
Daftar_field_2 : tipe_2;
20
(sumber:Kadir)
...
daftar_field_n : tipe_n;
END
Masing-masing daftar_field dapat berupa satu atau beberapa
nama
pengenal
dan
masing-masing
dinamakan
field.
Bila
Dengan
mendeklarasikan
seperti
di
atas,
Barang
akan
Nama,
Kualitas,
Harga.
3)
Sebagai contoh :
Barang.Nama
Dengan cara seperti di atas, field Nama dari record Barang berisi
string Ubin TISKA 20x20.
21
Hasil program :
Nama Barang
Kualitas
Harga
4)
22
5)
23
Tanggal,
Bulan,
Tahun
End;
RecPegawai = Record
Nomor
Nama
TglLahir
Gaji
End;
:Integer
:
:
:
:
LongInt;
String [35];
RecTanggal;
LongInt
yang
menarik
yang
perlu
diperhatikan
adalah
cara
24
DataPeg.TglLahir.Tahun := 1972;
DataPeg.Gaji := 750000;
{menampilkan isi field}
Writeln (Nama Pegawai : , DataPeg.Nama);
Writeln (Tanggal Lahir : , DataPeg.TglLahir.Tanggal,
/, DataPeg.TglLahir.Bulan,
/, DataPeg.TglLahir.Tahun);
Readln
End.
: Badu
Tanggal Lahir
: 24 / 12 / 1972
6)
Pernyataan With
Program Rec4;
Uses crt;
Type
RecBarang = Record
Nama
Kualitas
Harga
End;
Var
: String [25];
: Char;
: LongInt
25
Barang : RecBarang;
{variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
With Barang do
Begin
Nama := Ubin TISKA 20x20;
Writeln (Nama Barang
: , Nama);
Writeln (Kualitas
:, Kualitas);
Writeln (Harga
:, Harga);
End;
Readln
End.
26
End;
Readln
End.
/, DataPeg.TglLahir.Tahun)
Pernyataan seperti :
With DataPeg do
With TglLahir do
27
7)
Array Record
: String [25];
: Char;
: LongInt
Jum_Maks] of RecBarang;
{array record}
Type
RecBarang = Record
Nama
: string [25];
Kualitas
: char;
Harga
: longInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang;
{array record}
JumBarang : Integer;
{memasukkan data barang je array DafBarang}
Procedure EntriBarang (Var DafBarang : TabelBarang;
Var JumBarang : Integer);
Var
Indeks : Integer;
Begin
Clrscr;
Write (Jumlah Barang (Maksimum = 20) :); Readln (JumBarang);
For Indeks := 1 to JumBarang do
With Dafbarang [indeks] do
Begin
Clrscr;
28
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
atau manipulasi
terhadap
record
hanya
dapat
Pertanyaan
29
(a)
(b)
2)
pertanyaan
di
atas
dengan
langsung
membuat
Kunci Jawaban
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;
30
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
: 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, TglLahir do
Begin
Nomor
:= 56789;
Nama
:= Badu;
Tanggal
:= 24;
Bulan
:= 12;
Tahun
:= 1972;
Gaji
:= 750000;
End;
{menampilkan isi field}
With DataPeg, TglLahir do
Begin
Writeln (Nama Pegawai
:, DataPeg.Nama);
Writeln (Tanggal lahir
:, DataPeg.TglLahir.Tanggal,
/, DataPeg.TglLahir.Bulan
/, DataPeg.TglLahir.Tahun)
End;
Readln
End.
31
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
BAB III
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
32
sangat
berkaitan
dengan
materi
lainnya
dalam
sebuah
oleh
pemrogram
selain
dari
orang
yang
seperti
Beberapa
ini
dinamakan
bahasa
teknik
pemrograman
pemrograman
termasuk
Pascal
dan
menulis
akan
menemukan
sangat
kesalahan
berguna
33
pada
program.
masalah
Kemudahan
besar
yang
dikerjakan
oleh
satu tim
pemrogram
yang
beranggotakan
oleh
diintegrasikan
Program
menjadi
modular
dimengerti.
orang
yang
satu
menjai
Program
buah
lebih
yang
berbeda.
program
mudah
tidak
Seluruh
yang
untuk
modular
modul
lengkap.
dibaca
sulit
dan
dipahami,
terdapat
kesalahan
di
dalam
program,
kesalahan
Definisi Prosedur
Prosedur
adalah
modul
program
yang
mengerjakan
34
Pendefinisian Prosedur
Pada dasarnya, struktur prosedur sama dengan struktur
Algoritma
yang
digunakan
untuk
mendefinisikan
Contoh 3.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
35
Contoh 3.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, instruksiinstruksi di dalam prosedur baru dapat dilaksanakan hanya
bila prosedur tersebut diakses/dipanggil. Prosedur diakses
dengan cara m,emanggil namanya dan program pemanggil
(program utama atau modul program lain) :
NamaProsedur
Gambar 2.2 Pemanggilan Prosedur(sumber:Rahardjo)
Ketika
NamaProsedur
dipanggil,
kendali
program
36
prosedur
hanya
berisi
bagian
judul
prosedur.
Tujuan
Contoh 3.4
Tuliskan contoh program utama untuk memanggil prosedur
HitungLuasSegitiga.
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 seharihari. Seorang mahasiswa pada setiap awal semester selalu
37
melakukan
penaftaran
ulang
(registrasi).
Langkah-langkah
mengerjakan
tugas/aktivitas
yang
spesifik
dan
Pertanyaan
Buat
program
perhitungan
luas
segitiga
menggunakan
prosedur.
2) Umpan Balik dan Tindak Lanjut
Untuk menguasai materi ini, sebaiknya anda membuat
ringkasan
materi
tentang
prosedur
dan
membuat
sendiri
pertanyaan
di
atas
dengan
langsung
membuat
Kunci Jawaban
program luas_segitiga;
procedure hitungluas;
var
38
alas,tinggi,luas : real;
begin
write('alas :');readln(alas);
write('tinggi:');readln(tinggi);
luas:=(alas*tinggi)/2;
write('luas segitiga :',luas:2:0);
end;
begin
writeln('menghitung luas segitiga');
hitungluas;
readln
end.
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
BAB IV
FUNGSI
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang definisi fungsi,
cara
mendefinisikan
fungsi,
cara
parameter.
Relevansi
39
pemanggilan
fungsi
dan
berkaitan
dengan
materi
lainnya
dalam
sebuah
Penyajian
1)
Definisi Fungsi
Definisi fungsi sebenarnya sama dengan sebuah prosedur.
Perbedaannya,
sehingga
pada
pada
saat
fungsi
terdapat
pemanggilan,
pengembalian
fungsi
dapat
nilai,
langsung
Pendefinisian Fungsi
Berbeda dengan prosedur yang didefinisikan dengan kata
40
Kita
juga
dapat
mendeklarasikan
variabel
lokal
untuk
3)
Pemanggilan fungsi
Fungsi
diakses
dengan
cara
memanggil
namanya
dari
4)
Parameter
Parameter
merupakan
suatu
nilai
atau
referensi
yang
41
Bila x=2, maka f akan mengembalikan nilai 15, yang berasal dari
f (2) = 2(2)2 + 5(2) 3 = 8 + 10 3 = 15
Pertanyaan
Buat program perhitungan nilai faktorial menggunakan fungsi.
42
pertanyaan
di
atas
dengan
langsung
membuat
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
43
BAB V
SORTING
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi pengurutan, pengurutan
gelembung,
pengurutan
maksimum/minimum,
seleksi.
Relevansi
44
pengurutan
permasalahan
umum
yang
juga
sering
dijumpai
dalam
dua
di
atas
yang
menuntut
kita
untuk
melakukan
45
kiri).
Proses
ini
tentu
akan
dilakukan
dengan
Tahap 2
Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1
sehingga array akan menjadi seperti berikut.
15
18
25
46
22
20
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.3 Hasil Pengurutan Array A tahap 2
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]
Gambar 5.4 Hasil Pengurutan Array A tahap 3
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]
Gambar 5.5 Hasil Pengurutan Array A tahap 4
47
48
3)
Pengurutan Maksimum/Minimum
Dengan
metode
ini,
elemen
array
dengan
nilai
22
18
20
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.7 Hasil Pengurutan Array A tahap 1
49
15
A[1]
20
18
2
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.8 Hasil Pengurutan Array A tahap 2
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
A[1]
18
20
22
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.9 Hasil Pengurutan Array A tahap 3
Sampai di sini, elemen ke-3 (A[3]) juga tidak akan diikutkan lagi
ke dalam proses selanjutnya.
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;
{mula-mula semua belum terurut}
for j:= 1 to n-1 do begin
maks := A[1];
imaks := 1;
for k:= 2 to x do begin
if(A[k] > maks) then begin
maks := A[k];
50
imaks := k;
end;
end;
{tukarkan maks dengan A[x]}
Temp := A[x];
A[x] := A[imaks];
A[imaks] := temp;
{ikat elemen terakshir dengan menurunkan nilai x}
x := x 1;
end;
end;
4)
Pengurutan Seleksi
kedua
buah
nilai
tersebut.
Untuk
memperjels
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
A[1]
22
18
20
15
A[2]
A[3]
A[4]
A[5]
Gambar 5.11 Hasil Pengurutan Array A tahap 1
Tahap 2
51
18
22
20
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.12 Hasil Pengurutan Array A tahap 2
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
18
20
22
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.13 Hasil Pengurutan Array A tahap 3
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
18
A[2]
20
A[3]
52
22
A[4]
25
A[5]
C. Penutup
1)
Pertanyaan
Buat program untuk mengurutkan data mahasiswa dengan
metode seleksi.
pertanyaan
di
atas
dengan
langsung
membuat
Kunci Jawaban
Procedure selectionsort;
Var
i, j, temp, imax : integer;
begin
for i:= 1 to n-1 do
begin
imax := i;
for j := i+1 to n do
if TabInt[j] < TabInt[max] then
imax := j;
temp := TabInt[imax];
TabInt[imax] := TabInt[i];
TabInt[i] := temp;
End;
End.
Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
53
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
54
B. Penyajian
(1)
dua/pencarian
biner
(binary
search).
Berikut
ini
2)
telah
ditemukan.Agar
lebih
55
memperjelas,
perhatikan
1
2
3
4
5
Hentikan pencarian
Array A
75
73
78
81
80
satu
cara
yang
dapat
digunakan
adalah
dengan
ini
contoh
program
yang
akan
menunjukkan
56
end;
writeln (x, ditemukan pada indeks ke-, indeks);
readln;
end.
3)
57
< 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.
Nilai yang dicari
Keadaan pertama
1
12 14
0
1
5
16
18
19
20
22
24
25
2
6
28
29
k1 = 7
Keadaan kedua
20 22
24
25
2
6
28
29
K2 = 11
Keadaan ketiga
20
22
Hentikan pencarian
24
K3 = 11
Gambar 6.2. Pencarian Data dengan Metode Pencarian Bagi
Dua(sumber:Rahardjo)
58
lebih
memperjelas
pembahasan
serta
menunjukkan
C. Penutup
Pencarian (searching) dilakukan untuk menemukan nilai
tertentu pada sejumlah nilai yang tersedia. Terdapat bermacam-
59
beruntun
dilakukan
dengan
melakukan
dari
indeks
terkecil
sampai
indeks
terbesar
yang
Pertanyaan
Buat program untuk mencari nilai tertentu dengan metode
pencarian beruntun.
pertanyaan
di
atas
dengan
langsung
membuat
60
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);
indeks := cari1 (x);
if indeks <> 0 then
write (x, ditemukan pada indeks ke- , indeks)
else
write (x, tidak ditemukan);
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
61
BAB VI
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
62
Definisi File
Dalam
disudutkan
kasus-kasus
untuk
pemrograman
menggunakan
file
tertentu
sebagai
kita
media
sering
yang
(b)
Membuka file
(c)
(d)
Menutup file
2)
Variabel File
Sebelum file dapat dibuka atau dibuat oleh program, kita
63
adalah
dengan
menggunakan
prosedur
Assign,
yang
NamaVariabelFile
merupakan
nama
variabel
yang
apabila
kita
ingin
membuka
file
dengan
nama
64
Membuka File
Seteleh file tersebut dihubungkan dengan variabel file, maka
Prosedur Rewrite
Prosedur ini digunakan untuk membuka file yang sama sekali
Bila file yang dibuka berupa file teks, maka file tersebut akan
bersifat writeonly atau tidak dapat dibaca, artinya operasi yang
diizinkan
untuk
file
tersebut
hanyalah
operasi
tulis.
dalam
transfer
data.
Apabila
dihilangkan,
maka
65
Var
F : TextFile;
Begin
Assign (F, D:\CONTOH.TXT);
Rewrite (F);
End.
Jalankan
program
tersebut
dan
lihatlah
drive
pada
komputer anda, maka di situ pasti akan tercipta file baru dengan
nama
CONTOH.TXT
bereksperimen
dimana
untuk
isinya
membuka
kosong.
filee
yang
Apabila
sudah
anda
ada
Rewrite,
fungsi
EOF
(end-of-file)
akan
selalu
Prosedur Reset
Prosedur ini digunakan untuk membuka file yang sebelumnya
sudah ada di dalam disk. Hal ini bertujuan untuk membaca isi
dari file tersebut untuk kemudian dimanipilasi sesuai dengan
kebutuhan. Perlu sekali untuk diperhatikan bahwa apabila file
yang dibuka merupakan file teks, maka variabel file akan bersifat
read only (hanya dapat dibaca). Berikut ini prototype dari
prosedur Reset.
Procedure Reset (NamaVariabelFile [: file; UkuranRecord: word]);
: Budi Raharjo
66
Tahun
: 2005
Penerbit
: INFORMATIKA
Selanjutnya
kita
ingin
membaca
isi
file
tersebut
dan
Prosedur Append
Prosedur ini digunakan untuk menambahkan isi file yang
secara
otomatis
akan
membuka
file
yang
telah
67
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.
Sebagai
contoh,
file
tersebut
disimpan
dengan
nama
adalah
adalah
adalah
adalah
data
data
data
data
4)
Anda
mengerti
cara
untuk
mengkaitkan
atau
68
Untuk
informasi
lebih
detil
mengenai
(1)
menyimpan
data
yang
akan
dituliskan.
Walaupun
Berdasarkan
kode
di
atas,
maka
teks
tersebut
akan
69
Assign (F,D:\COBA\DATA.TXT);
Reset (F);
Write (F, Teknik Pemrograman );
Write (F, Pascal);
Close (F);
End.
(2)
(b)
membaca
data
dari
dalam
file,
70
kita
dapat
(1)
(2)
Menutup File
Setelah
selesai
mengakses
file
maka
sebaiknya
kita
Jenis File
71
File Teks
File teks adalah file yang menyimpan data-data dalam bentuk
Text
atau
TextFile.
Berikut
ini
contoh
kode
untuk
Untuk
dapat
lebih
mengetahui
penggunaannya
di
dalam
(b)
File Bertipe
72
Begitu juga apabila file berisi data real, maka kodenya adalah
seperti berikut.
var
F : file of real;
(c)
dengan
tipe
FILO.
File
jenis
ini
dapat
digunakan
untuk
menyimpan jenis data apa saja, baik teks maupun tipe lainnya,
namun biasanya digunakan untuk menyimpan data-data biner
(termasuk file EXE maupun COM). Berikut bentuk umumnya.
Var
NamaVariabelFile : FILE
73
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
hilang.
Untuk
mengatasi
kasus
tersebut,
dalam
pemrograman disediakan alat bantu untuk penyimpanan datadata 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 data barang dengan
menggunakan media file teks.
74
Jawab
pertanyaan
di
atas
dengan
langsung
membuat
75
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;
if not ketemu then
writeln('tidak ada data barang ini !!!');
close(berkasteks);
close(berkasdummy);
erase(berkasteks);
rename(berkasdummy,'barang.txt');
writeln;
write('ada lagi data yang akan dicari [Y/T] ?');readln(lagi);
end;
end.
76
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.
77