Академический Документы
Профессиональный Документы
Культура Документы
PENGANTAR
Modul praktikum ini disusun dengan memperhatikan kebutuhan dasar pengetahuan pem-
rograman yang perlu dipahami oleh setiap mahasiswa yang mempelajari mata kuliah Struktur
data.
Bahasa pemrograman yang digunakan pada modul ini adalah bahasa pascal dengan compiler
yang digunakan adalah free pascal bukan turbo pascal yang sebelumnya digunakan. Penggunaan
free pascal dikarenakan ia memiliki dialeg bahasa yang sama dengan turbo pascal dengan
kelebihan yang telah disesuaikan dengan perkembangan tehnologi kompiler saat ini. Sehingga
diharapkan mahasiswa memiliki pengatahuan yang up to date terhadap perkembangan tehnologi
compiler.
i
2. Daftar Isi
PENGANTAR .......................................................................................................................................... i
Daftar Isi................................................................................................................................................... ii
Daftar Program: ..................................................................................................................................... iii
1. ARRAY ....................................................................................................................................... 4:1
1.1 Deklarasi dan Definisi Array ......................................................................................... 4:1
Pendeklarasian array pada variable .............................................................................. 4:1
Pendeklarisian array pada tipe data ............................................................................. 4:1
Pendefinisian array secara langsung ............................................................................. 4:1
Pendefinisian tidak langsung........................................................................................... 4:1
Contoh ............................................................................................................................... 4:1
1.2 Array Multi Dimensi........................................................................................................ 4:3
Pendeklarasian Multidimensi Array.............................................................................. 4:3
Contoh .............................................................................................................................. 4:3
1.3 Array Dinamis .................................................................................................................. 4:5
Pendeklarasian Array Dinamis ...................................................................................... 4:5
1.4 Tugas dan Latihan ............................................................................................................ 4:6
1) Buatlah program matriks dan lakukan operasi perkalian matriks ......................... 4:6
2. RECORD ................................................................................................................................... 2:7
2.1 Deklarasi dan Definisi ..................................................................................................... 2:7
Deklarisi Tipe Record..................................................................................................... 2:7
Deklarasi dan definisi variable record ......................................................................... 2:7
Contoh ............................................................................................................................... 2:7
3. POINTER ................................................................................................................................... 3:9
3.1 Deklarasi dan Definisi Pointer ...................................................................................... 3:9
Deklarasi tipe pointer ..................................................................................................... 3:9
Definisi Pada Program .................................................................................................... 3:9
3.2 Jenis Tipe Pointer ............................................................................................................ 3:9
Pointer Bertipe ................................................................................................................. 3:9
ii
Pointer Serba Guna ....................................................................................................... 3:10
3.3 Contoh Penggunaan Pointer ....................................................................................... 3:10
Contoh 1: contoh program typed Pointer............................................................... 3:10
Contoh 2: contoh program untyped pointer .......................................................... 3:10
contoh 3: Program mengalokasikan sejumlah byte pada memori yang
direferensikan kepointer .................................................................................................................. 3:11
4. TIPE BERKAS .......................................................................................................................... 3:12
4.1 Bekerja dengan tipe data text ..................................................................................... 3:12
Deklasi tipe data text .................................................................................................... 3:12
Deklarasi tipe data sederhana................................................................... 3:12
Contoh ............................................................................................................................. 3:12
3. Daftar Program:
4. Daftar Gambar
iii
ARRAY
Deklarasi dan Definisi Array 1
1. ARRAY
Array/Senarai adalah tipe data tersetruktur yang memiliki komponen dalam jumlah yang
tetap yang setiapkomponennya memiliki tipe data yang sama. (Ir. Santoso, hal. 18)
keterangan
namavariable : nama pengenal
jangkauan : Jangkauan yang digunakan dimulai dari 0
tipedata : Tipe data yang digunakan dalam array
keterangan
TnamaTipedata : Nama dari struktur tipe data
jangkauan : Jangkauan yang digunakan dimulai dari 0
tipedata : Tipe data yang digunakan dalam array
e. Contoh
berikut ini merupakan contoh dari cara penggunaan Array didalam program
ARRAY
Deklarasi dan Definisi Array 2
Keterangan:
Fungsi High digunakan untuk mendapatkan nilai indeks array tertinggi, sedang fungsi low
untuk mendapatkan nilai indeks array terendah.
Array dapat disajikan dalam banyak dimensi yang dapat diartikan sebagai sebuah aray yang
memiliki komponen berupa komponen array juga.
Contoh
Array dinamis adalah jenis array yang elemennya dapat ditambah atau dikurangi secara
dinamis atau pada saat program berjalan. Kemampuan ini hanya dimiliki oleh generasi compiler
pascal terbaru seperti borland delphi dan free pascal. Keuntungan yang didapat dari pemanfaatan
array dinamis adalah tidak perlunya dilakukan deklarasi ruang elemen yang digunakan sehingga
dapat mengurangi ruang memori.
1
Hanya tersedia pada Free Pascal dan Delphi
ARRAY
Tugas dan Latihan 6
12. end;
13. end;
14. for i:= 0 to high(arOpr1) do begin
15. for j := 0 to high(arOpr1[i]) do
16. write(arOpr1[i,j]:3);
17. writeln;
18. end;
19. readln;
20. end.
Program 1-6 Penggunaan array Dinamis dalam array
MultiDimensi
Keterangan:
2. RECORD
Record2 menyajikan nilai elemen data yang beragam dari jenis tipe data berbeda, setiap
elemen disebut dengan field atau kolom.
namaVariableRecord.namaField := nilaiField;
nilaiField := namaVariable.namaField;
with namaVariableRecord do
namaField:=nilaiField;
keterangan:
namaVariableRecord : nama variable record
namaField : nama field pada record
nilaiField : nilai yang dimasukan kedalam field
Contoh
2
Pada bahasa pemprograman C disebut juga dengan tipe structure
RECORD
Deklarasi dan Definisi 8
8. end;
9. var
10. siswa : TSiswa;
11. begin
12. clrscr;
13. write('NPM = '); readln(siswa.npm);
14. with siswa do begin
15. write('Nama ='); readln(nama);
16. write('Fakultas ='); readln(fakultas);
17. write('Jurusan ='); readln(jurusan);
18. end;
19. writeln('NPM : ',siswa.npm);
20. writeln('Nama : ',siswa.nama);
21. writeln('Fakultas : ',siswa.fakultas);
22. writeln('Jurusan :',siswa.jurusan);
23. readln;
24. end.
Program 2-1 Penggunan Record
POINTER
Deklarasi dan Definisi Pointer 9
3. POINTER
Pointer adalah variable yang mesimpan alamat data memori, jika pointer menganani alamat
memori dari variable lain artinya, pointer ini mengacu pada sebuah variable yang berisikan data
yang dimaksud. Pada array pointer hanya mengacu ke array pada elemen pertama.
variablePointer := @variableMemori;
keterangan:
memberi alamat dari varible @variableMemori disimpan dalam
variablePointer
contoh:
Pnama := @varNama;
variableMemori := ^variablePointer;
keterangan:
memberikan nilai pada memori dengan nilai variable lain yang
direferensikan melalui variable referensi.
contoh:
varnama := ^Pnama;
1. Pointer Bertipe
Pointer beripe berfungsi sebagai penanda jenis tipe data apakah yang beradap pada
memori yang ditangani.
POINTER
Jenis Tipe Pointer 10
var i: Pointer;
contoh 4: Membuat pointer baru yang dapat mengutip nilai dari variable
lain tanpa merubah isi dari variable lainnya.
1. type
2. {* Deklarasi tipe pointer bertipe *}
3. PInteger=^integer;
4. var
5. {* Deklarasi variable pointer *}
6. pengacu :PInteger;
7. a: integer;
8. begin
9. a:=10;
10. new(pengacu);
11. {* memberikan nilai data a kevariable pointer *}
12. pengacu^:= a;
13. a:=20;
14. writeln('Isi variable pointer =', pengacu^);
15. writeln('Isi variable a yang telah dirubah =',a);
16. pengacu := nil;
17. readln;
18. end.
Program 3-4 alokasi alamat pointer dari suatu variable
TIPE BERKAS
Bekerja dengan tipe data text 12
3. TIPE BERKAS
Terdapat dua jenis berkas yaitu jenis berkas bertipe dan jenis berkas tidak bertipe. jenis
berkas bertipe memiliki tipe data seperti halnya yang lain, yang membedakannya adalah pada tipe
data jenis ini, isi data tidak ditempatkan pada memori melainkan pada media penyimpanan
eksternal.
18. end;
19. end.
Program 3-1 membaca dan menulis berkas text
1. uses crt;
2. var textFile: text;line : string; i: integer;
3. begin
4. assign(textFile,'c:\datatext.txt');
5. rewrite(textFile);
6. for i:= 0 to 9 do
7. writeln(textFile,'Hello World !');
8. close(textFile);
9. assign(textFile,'c:\datatext.txt');
10. {$i-}
11. reset(textFile);
12. {$i+}
13. clrscr;
14. if IOresult = 0 then begin
15. while not eof(textFile) do begin
16. readln(textFile,line);
17. writeln(line);
18. end;
19. close(textFile);
20. readln;
21. end;
22. end.
Program 3-2 Penulisan dan pembacaan berkas beruntun
1. uses crt;
2. type
3. TSiswa = record
4. NPM: string[10];
5. Nama: string[30];
6. jurusan: String[10];
7. end;
8. TfileSiswa = file of TSiswa;
9. var
10. fileSiswa: TfileSiswa;
11. siswa : TSiswa;
12.
13. procedure inputSiswa;
14. begin
15. clrscr;
16. write('Masukan Nip Siswa :'); readln(siswa.npm);
TIPE BERKAS
Bekerja dengan tipe data text 14
1. uses crt;
2. type
3. TSiswa = record
4. NPM: string[10];
5. Nama: string[30];
6. jurusan: String[10];
7. end;
8. TfileSiswa = file of TSiswa;
9. var
TIPE BERKAS
Bekerja dengan tipe data text 15
52. end
53. else
54. writeln('File bermasalah');
55. end;
56. begin
57. clrscr;
58. inputsiswa;
59. bacaberkas;
60. readln;
61. end.
62.
Program 3-4 Proses penulisan dan pembacaan data beruntun
Linked List
Contoh Penerapan Linked list Dasar 17
4. Linked List
Linked List juga disebut sebagai one-way list, adalah koleksi linier dari elemen data yang
disebut simpul atau node. cara untuk melinierkannya adalah dengan menggunakan penunjuk atau
pointer. Setiap node terdiri dari dua bagian, yaitu 1. bagian yang menyimpan data(Info) dan 2.
bagian yang berisi alamat pointer penghubung(Link). link inilah yang menghubungkan satu elemen
data dengan elemen data lainnya.
1. uses crt;
2. type
3. PSimpul= ^TSimpul;
4. TSimpul = record
5. indeks:integer;
6. berikut: PSimpul;
7. end;
8. var
9. akar,simpul: PSimpul;
10.
11. function sisipSimpul(mSimpul: PSimpul;mElement: integer
):PSimpul;
12. var tmpSimpul: PSimpul;
13. begin
14. new(tmpSimpul);
15. tmpSimpul^.indeks := mElement;
16. tmpsimpul^.berikut:= nil;
17. if msimpul <> nil then begin
18. if msimpul^.berikut <> nil then begin
19. tmpsimpul^.berikut :=
msimpul^.berikut;
20. msimpul^.berikut := tmpsimpul;
21. end
22. else
23. msimpul^.berikut := tmpsimpul;
24. end;
25. sisipSimpul:= tmpSimpul;
26. end;
27.
28. procedure hapusSimpul(msimpul:Psimpul; indeks:integer);
29. var p,next,prev:PSimpul;i:integer=0;
30. begin
31. p := msimpul;
Linked List
Contoh Penerapan Linked list Dasar 18
3. PSimpul= ^TSimpul;
4. TSimpul = record
5. indeks:integer;
6. berikut: PSimpul;
7. end;
8. var
9. akar,simpul: PSimpul;
Keterangan:
Mendefinisikan pointer dan struktur dari simpul
indeks menyimpan nilai dari larik dan berikut menyimpan pointer
tautan berikutnya.
baris 9 pendeklarasian variable akar dan simpul. variable akar
menyimpan pointer awal(start), simpul menyimpan posisi terakhir
atau berikut(link) sama dengan nil
24. end;
25. sisipSimpul:= tmpSimpul;
26. end;
keterangan:
Fungsi sisipSimpul memiliki dua parameter, mSimpul bertipe
pointer Psimpul dan mElemen bertipe integer.
mSimpul adalah parameter yang berisi simpul yang akan disisipkan,
bisa berupa posisi simpul akhir maupun simpul pertengahan,
element berisi nilai yang akan diberikan pada simpul tersebut.
variable tmpSimpul pada baris 12 merupakan variable bantu,
menyimpan alamat pointer sementara sebelum dilakukan relokasi
didalam simpul utama nilai dari tmpSimpul^.berikut diberi nilai
nil.
baris 17 melakukan pengecekan apakah isi dari parameter mSimpul
tidak sama dengan nil(bukan simpul baru), jika benar lakukan
pengecekan(baris 18) apakah variable mSimpul^.berikut tidak sama
dengan nil(bukan merupakan simpul terakhir, biasanya digunakan
untuk menyisipkan simpul pada posisi tengah) jika benar beri
nilia tmpSimpul^.berikut := mSimpul^.berikut dan mSimpul^.berikut
:= tmpSimpul(simpul baru diletakan pada posisi setelahnya).
jika nilai pembanding dari baris 18 adalah false(variable
mSimpul^.berikut = nil) maka berikan nilai mSimpul^.berikut :=
tmpSimpul(baris 25).
2. Tugas latihan
Buatlah program linked list yang akan mendaftar informasi mahasiswa disertai
dengan fasilitas penambahan/penyisipan data dan penghapusan data.
STACK ATAU TUMPUKAN
Contoh Program stack sederhana 25
Stack atau tumpukan adalah bentuk khusus dari list linier. Pada penghapusan dan
pemasukan elemennya hanya dapat dilakukan pada satu sisi yaitu sisi terakhir pada list yang
disebut top.
1. uses crt;
2. type
3. TStack = record
4. Stacks: array[0..10] of integer;
5. top: integer;
6. end;
7. var
8. tumpukan : TStack;
9.
10. // menginisialisasikan stack
11. function initStack(var stack:TStack): boolean;
12. begin
13. stack.top:= -1; // kondisi stack kosong
14. initStack:= true;
15. end;
16.
17. function push(var stack:TStack; data: integer): boolean;
18. begin
19. if high(stack.stacks) = stack.top then begin
20. writeln('Ups..! tumpukan penuh');
21. push:= false;
22. exit;
23. end
24. else begin
25. inc(stack.top);
26. stack.stacks[stack.top]:= data;
27. push := true;
28. end;
29. end;
30.
31. function pop(var stack: TStack): integer;
32. begin
33. if stack.top = -1 then begin
34. writeln('Ups..! tumpukan telah kosong');
35. pop := -1
36. end else begin
STACK ATAU TUMPUKAN
Contoh Program stack sederhana 26
Algoritma program
3. TStack = record
4. Stacks: array[0..10] of integer;
5. top: integer;
6. end;
Penjelasan:
Data yang disimpan dimasukan didalam variable stacks, variable
top digunakan untuk menandakan posisi teratas tumpukan
Queue atau antrian adalah suatu bentuk khusus dari list linier dengan operasi penyisipan
hanya diperbolehkan pada satu sisi saja yang disebut sisi belakang (REAR), sedangkan operasi
penghapusan hanya boleh pada sisi lainnya yang disebut sisi depan (FRONT).
Deklarasi antrian
const max_elemen=100;
type
TQueue = array[1..max_elemen] of integer;
var antrian:Tqueue; depan, belakang:integer;
6.2. Contoh Program sederhana Queue atau antrian
1. uses crt;
2. const Max_Elemen=10;
3. type
4. TAntri = array[1..max_elemen] of char;
5. var head,tail,pilih: byte; antri:TAntri;
6. masukan:char;
7. procedure init;
8. var i: byte;
9. begin
10. head:=0; tail:=0;
11. for i:=1 to max_elemen do
12. antri[i]:='-';
13. end;
14.
15. function Kosong: boolean;
16. begin
17. kosong:=(tail=0);
18. end;
19.
20. function penuh: boolean;
21. begin
22. penuh:=(tail=max_elemen);
23. end;
24.
25. procedure tambahElemen(elemen:char);
26. begin
27. if not penuh then begin
28. if kosong then begin
QUEUE ATAU ANTRIAN
Contoh Program sederhana Queue atau antrian 30