MATERI
1. Introduksi
2. Dasar-dasa Algoritma dan Pemrograman
3. Simbol Flowchart
4. Struktur dan Deklarasi
5. Input dan Output Statemen
6. Struktur Kontrol
7. Sub Program
Fungsi
Procedure
8. Array
9. Recursive
10. Sorting
11. Search
Kepustakaan
1. Suryadi H.S. & Agus Sumin “Pengantar Algoritma dan Pemrograman”
Penerbit Gunadarma.
2. Ir. Yuniar Supardi “Pascal and Flowchart lewat praktek” Penerbit
Dinastindo.
3. B.J Possen ”Programming Flowcharting for Business data Processing”
John willy & sons New York 1978.
4. Yay singelman “Business Programming Logic, Prentice Hall
Englewood Cliffs, New Yersey. 1982.
Algoritma ini yang akan kita terjemahkan ke dalam bahasa pemrograman tertentu yang
kita pilih berdasarkan kesesuaian dengan permasalahan (bisnis, teknik, ilmiah dll).
Contoh Mod(Modulus)
A=5
B=2
C = 5 MOD 2
=1
A = 10
B=2
C = 10 MOD 2
=0
A=5
B=2
C = Int (A/B)
=2
3. Operator Logika : OR, NOT, …, AND (Spt : <, >, + , <=, >= )
AND
A B A AND B
1 1 1
1 0 0
OR
0 1 0
0
A 0
B 0 B
A OR
1 1 1
1 0 1
0 1 1
0 0 0 2 Logika dan Algoritma
NOT
A NOT A
1 0
0 1
FLOWCHART
Flowchart digunakan untuk memecahkan masalah yang mengalir sesuai dengan logika
sehingga bisa dibuat solusi dari suatu masalah.
Karakterisitik Flowchart
1. Flowchart bersifat grafis atau menggunakan gambar-gambar sebagai simbol atau
lambang untuk suatu jenis pekerjaan, tugas atau fungsi tertentu.
2. Perintah bersifat esensial, yaitu hanya perintah yang penting-penting saja yang
digambarkan dalam flowchart.
3. Flowchart efektik untuk merancang program terstruktur.
Symbol
Baca A, B
Read
C=A+B
Tampilkan C
STOP
Simbol Dasar
Start / Stop
Input / Output
Proses data
Aliran proses
Setiap gambar berisi informasi lebih lanjut tentang tugas yang harus dikerjakan
komputer.
Informasi lanjut ini dapat berupa:
a) Konstanta;
b) Variabel;
c) Ekspresi (expression); atau
d) Pernyataan (statement).
Pernyataan
Pernyataan (statement) adalah sebuah kalimat sederhana yang kita tuliskan (didalam
gambar/simbol) sebagai panduan kerja komputer.
Pernyataan ini bisa berupa:
1. Pernyataan sederhana, yang hanya berisi:
a) Konstanta; atau
b) Variable;
2. Pernyataan aritmetika;
3. Pernyataan kondisional; atau
4. Pernyataan logika.
Contoh pernyataan:
a. 101 (pernyataan sederhana: konstanta)
b. NIM (pernyataan sederhana: variabel)
c. Nilai = UTS + UAS (pernyataan aritmetika)
Konstanta
Konstanta (berasal dari kata contant yang berarti tetap) adalah bilangan atau kharakter
atau string yang nilainya tetap/tidak berubah. Konstanta dikelompokkan kedalam:
1. Konstanta numerik, adalah angka-angka 0 s/d 9 serta kombinasinya, contoh 2004;
Konstanta numerik sendiri dikelompokkan lagi kedalam:
a) Konstanta bilangan bulat (integer); dan
b) Konstanta bilangan pecahan (real);
2. Kontanta alphamerik, adalah salah satu huruf dalam alfabed dan kharakter
penghubung seperti spasi, garis bawah, dll., yang diapit tanda petik, contoh “A” ;
dan
3. String, kombinasi untaian konstanta alphamerik dengan konstanta numerik yang
diapit tanda petik, contoh “Abad 21”;
4. Bolean, adalah konstanta dengan nilai TRUE atau FALSE.
Contoh Konstanta
Variabel
Variabel adalah label atau nama yang ditetapkan terhadap data. Harap dibedakan variabel
dari data. Sebagai contoh, “Cirebon” adalah data dalam bentuk string. Data lainnya
(misalnya) adalah “Sumedang”. Jadi “Cirebon” dan “Sumedang” adalah data.
Flowcharting Series
Contoh variabel dalam gambar flowchart dan arti:
Kegunaan Variabel
Variabel (penugasan)
Variabel dikaitkan kepada data (diberi nilai) dengan cara penugasan (assignment).
Contoh:
NIM = 200103021 variabel NIM ‘berisi’ data 200103021
Nama = “Ali Topan” variable Nama ‘berisi’ data “Ali Topan”
Mhs-Aktif? = True variable Mhs-Aktif? ‘berisi’ data True
Operator Logika
Pernyataan Logika
Operator Aritmatika
Operator Kondisional
DEFINISI ALGORITMA:
1. Secara tulisan
- Struktur bahasa /diskripsi
- Pseducode
2. Teknik gambar(Flowchart)
Input/output
Proses
Titik keputusan
Arah arus
Contoh:
PEMROGRAMAN PASCAL
STRUKTUR PROGRAM
1. Judul program (opsional)
Format : { judul program } atau program_nama program;
2. Deklarasi program:
Var {Variabel program}
Const {Constanta program}
Label {Label}
Funct {Function}
Procedure {Prosedur program}
Catatan :
Deklarasi program bersifat opsional khusus, artinya jika diperlukan maka
harus ada dalam program dan apabila tidak diperlukan maka boleh tidak
dicantumkan. Deklarasi program termasuk identifier (pengenal), yaitu kata-kata
yang diciptakan oleh pemrogram untuk mengidentifikasi sesuatu.
Syarat identifier:
a) Harus diawali oleh alphabet
b) Huruf besar/ kecil yang digunakan dianggap sama
c) Penyusun dari sebuah identifier tidak boleh berupa: tanda baca, tanda
relasi, symbol arithmatik, karakter khusus atau reserved word
d) Tidak boleh dipisahkan dengan spasi, apabila hendak dipisahkan maka
menggunakan tanda ( _ )
e) Panjang identifier tidak dibatasi tetapi sebaiknya gunakan se-efektif
mungkin.
3. Program Utama
Diawali dengan Begin dan diakhiri dengan End.
a) Tipe Integer
Operator-operator yang berlaku pada tipe data integer, yaitu :
- Operator arithmatik : +, - , *, /, div, mod
- Operator logic : <, = , > , <= , >= , <>
Tipe data integer masih dibagi menjadi 5 tipe:
Shortint (1 byte bertanda) Byte (1 byte tak bertanda)
Integer (2 byte bertanda) Word (2 byte tak bertanda)
Longint (4 bytebertanda)
Catatan : Semua tipe integer adalah tipe Ordinal.
b) Tipe Real
Dibagi menjadi 5 macam, yaitu :
Real (6 byte) Extended (10 byte)
Single (4 byte) Comp (8 byte)
Double (8 byte)
d) Tipe Boolean
Mempunyai nilai benar /salah. Operator yang penghubung untuk tipe Boolean
adalah : = , <> , > , < , >= , <= , IN
f) Tipe Subrange
Bentuk umum :
Constanta1..Constanta2
Contoh :
0..99 ;
-128..127 ;
II. Real
Ada beberapa macam tipe real
1. Single
2. Real
3. Double
4. Extended
Program_Selisih_Jam;
Uses crt;
var j1,j2,m1,m2,d1,d2,B1,B2,J,M,S,Delta,sisa: integer;
2. SELECTION/ CONDITION
-Baca koofisien: 1 -5 6
1x*x + (-5) x +6
Determinannya :1.00
-Baca koofisien: 1 3 4
1x*x + (3) x +4
Determinannya :-7.00
Program_Konversi_nilai:
Uses Crt;
var Nilai : Byte;
begin
clrscr;
write('Baca nilai :');readln(Nilai);
if nilai>=80 then write('Nilai = A') else
if nilai>=65 then write('Nilai = B') else
if nilai>=41 then write('Nilai = C') else
if nilai>=26 then write('Nilai = D') else
write('Nilai = E');
readln;
end.
Catatan : Program ini akan memberikan nilai yang sama persis dengan yang
menggunakan struktur IF.
Contoh program :
begin begin
clrscr; clrscr;
write('Baca nilai : ');readln(N); write(‘Baca nilai:’);
for i:= 1 to N do readln(N);Data:=N;
begin for i:=1 to N do
for j:=1 to i do begin
write(i:3); for j:=1 to N do
writeln; write(data:3);
end; writeln;
readln; data := data -1;
end. end;
End.
Hasil Run Program : Hasi Run Program :
Baca nilai : 7 Baca nilai : 7
1 7
2 2 6 6
3 3 3 5 5 5
4 4 4 4 4 4 4 4
Contoh program :
uses crt;
var i:integer;
begin
clrscr;
write('Masukkan angka :');readln(i);
while i<5 do
begin
write('Matematika UGM');
i:=i+1;
end;
readln;
end.
Keterangan :
Program di atas akan dilaksanakan jika angka yang kita masukkan kurang
dari atau sama dengan lima. Dan dalam program di atas yang bertugas
menghentikan perulangan adalah proses i:= i+1; sebab jika tidak ada statement
itu, apabila angka yang kita masukkan benar <= 5 maka program akan berulang
sampai tak hingga banyak.
Catatan :
Struktur perulangan while..do dapat digunakan untuk melakukan
perulangan baik yang diketahui maupun yang tidak diketahui jumlah
perulangannya.
Contoh program :
PROGRAM CONTOH_REPEAT;
Uses crt;
var
n,tot,x: integer;
Mean: real;
begin
clrscr;
tot:=0;
n:=0;
write ('Baca data :');readln(x);
repeat
tot:= tot + x;
n:= n + 1;
write('Data lagi :');readln(x);
until x=0;
end.
Array atau larik terdiri atas bagian-bagian komponen yang memiliki tipe data
sama. Dalam penyimpanannya array selalu mempunyai jumlah komponen yang tetap
yang ditunjukkan oleh indeksnya. Dimana indeks ini harus merupada data dengan tipe
ordinal artinya mempunyai urutan tertentu.
Keuntungan :
Menggunakan data larik adalah bahwa kita tidak akan kehilangan nilai dari suatu
data.
Kelemahan :
Saat ditentukan suatu variable bertipe data array maka ia akan langsung
mengambil tempat pada memory penyimpanannya sesuai dengan tipe data yang
digunakan pada array, baik nantinya semua komponen pada array itu digunakan ataupun
tidak.
Type
Nama_Array = Array[tipe-indeks1,tipe-indeks2] of tipe data ;
Contoh :
Type
Matriks = Array[1..10, 1..10] of integer ;
Berarti matriks itu akan mempunyai dimensi (10x10), namun itu hanya batas atas
dari indeks yang dipesan dalam memori penyimpanan (di atas itu tidak akan disimpan),
sedangkan apabila nantinya kita hanya memasukkan jumlah baris missal 2 dan jumlah
kolom 2 itu boleh saja selama tidak lebih dari 10.
Entry-entry dari matriks tersebut dapat kita panggil dengan mengetikkan
Nama_Array[indeks] ; dari contoh diatas berarti Matriks[2,3] yaitu entry dari
matriks pada baris kedua kolom ketiga.
Contoh program :
Begin
clrscr;
write('Masukkan jumlah data : '); readln(n);
writeln;
Tot := 0;
for i:= 1 to n do
begin
write('Masukkan Data ke-',i,' ', 'Anda : '); readln(x[i]);
Tot:= Tot + x[i];
end;
writeln;
mean:= Tot/n;
write('Dan hasil perhitungan meannya : ');
writeln(mean:8:2);
readln;
end.
Hasil Run Program :
Masukkan jumlah data : 5
Masukkan Data ke-1 Anda : 1
Masukkan Data ke-2 Anda : 2
Masukkan Data ke-3 Anda : 3
Masukkan Data ke-4 Anda : 4
Masukkan Data ke-5 Anda : 5
Dan hasil perhitungan meannya : 3.00
Program Matriks :
Program Baca_tulis_matriks ;
uses crt;
Var m,n,i,j : integer;
x: Array[1..100,1..100] of integer;
begin
clrscr;
write('Baca ukuran baris Matriks :',' ');readln(m);
write('Baca ukuran kolom matriks :',' ');readln(n);
writeln('Matriks anda berukuran',' ',m,'x',n,' ');
for i:=1 to m do
for j:=1 to n do
PEMROGRAMAN MODULAR
PROCEDURE
Deklarasi :
Procedure NamaProcedure(DaftarParameter) ;
{Deklarasi}
Begin
.............
.............
End ;
Pemanggilan Procedure :
Suatu procedure bukan merupakan program yang berdiri sendiri sehingga
tidak dapat dielsekusi secara langsung. Untuk itu suatu procedure memerlukan sebuah
akses pada program utama / modul lain yang befungsi sebagai pemanggil. Sedangkan
cara pemanggilannya adalah dengan : menuliskan nama procedurenya berikut
parameternya (jika ada).
2. Parameter
Ada 2 paramete yang berlaku dalam sebuah procedure, yaitu :
a. Parameter Formal
Yaitu parameter yang dideklarsikan mengikuti pendeklarasian program utama
b. Paramete Aktual
Yaitu parameter yang dituliskan mengikuti pemanggilan procedure
Pengiriman parameter :
a. Pengiriman parameter secara nilai (by Value)
- Tiap-tiap parameter dalam prosecure utama akan beisi nilai yang dikirim
oleh parameter aktual dan bersifat lokal diprocedure
- Pengiriman nilai parameter secara by value merupakan pengiriman searah,
artinya hanya dari parameter aktual ke parameter formal
- Perubahan parameter formal tifak mempengaruhi terhadap nilai parameter
aktual
Contoh :
Procedure Hitung(A,B,C : integer) ;
Begin
B: = A;
C: = A + B ;
Writeln(A,B,C) ;
Var X,Y,Z : integer ;
Begin
Readln(X) ; Readln(X) ; Readln(X) ;
Hitung(X,Y) ; Writeln(X,Y,Z) ;
Readln ;
End.
Ket :
Misalkan dimasukkan nilai dari X=5, Y=7 dan Z=15 maka nilai
ini akan dikirim ke parameter formal pada procedure yaitu A,B,C sehingga
nilai awal A=5, B=7 dan Z=15. Setelah melalui proses maka hasil outputnya
adalah bahwa nilai X=5 , Y=7 dan Z=15. Sebab apapun yang diproses pada
procedure tidak akan mempengaruhi nilai dari parameter aktual X,Y,Z.
Contoh :
Procedure Hitung(Var A,B,C : integer) ;
Begin
Ket :
Misalkan dimasukkan nilai dari X=5, Y=8 dan Z=15 maka nilai
ini akan dikirim ke parameter formal pada procedure yaitu A,B,C sehingga
nilai awal A=5, B=8 dan C=15. Setelah melalui proses maka hasil outputnya
adalah bahwa nilai X=A=5 , Y=B=A=5 dan Z=C=10. Sebab apapun yang
diproses pada procedure akan mempengaruhi nilai dari parameter aktual
X,Y,Z.
{======================PROGRAM UTAMA=======================}
Begin
clrscr;
gotoxy(12,3);
write('Kita akan menghitung nilai kombinasi dari suatu angka');
gotoxy(19,4);
writeln('Yang mempunyai rumus : rCn = n!/(r!(n-r)!)'); gotoxy(20,5);
writeln('Nilai r harus lebih kecil/sama dengan n');
writeln;gotoxy(28,6);
write('Masukkan nilai n :',' ');readln(n);
Hasilnya : 15
FUNCTION
Deklarasi :
Function NamaFungsi(NamaParameter) : TipeData ;
{Deklarasi}
Begin
...........
...........
End ;
Struktur dari fungsi ini hampir sama dengan procedur hanya saja function harus
dideklarasikan beserta tipe datanya dan fungsi ini adalah mengembalikan nilai sehingga
Tipe data dalam sebuah function menunjukkan tipe dari data akhir dari deklarasi sebuah
fungsi.
Suatu fungsi dapat dipanggil dengan menggunakan beberapa cara, misalkan :
Nama Fungsinya adalah Rata, maka ia akan dapat dipanggil dengan menggunakan
Rata2 : = Rata(vector,Ukuran) ;
X : = Y + Rata(vector,Ukuran) ;
Write(‘Nilai rata-ratanya = ‘, rata(vector,ukuran));
Function Fakto(N:integer):integer;
Var Fak: integer;
Begin
Fak:= 1;
for i:=1 to N do
Fak := Fak * i;
Fakto:= Fak;
end;
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ');
readln(N);
writeln('Hasil perhitungan : ',Fakto(N));
readln;
end.
Dalam turbo Pascal telah dikenal ada beberapa tipe data yang kemudian dapat
digolongkan menjadi 2 kelompok besar tipe data yaitu tipe data standard dan tipe data
terstruktur. Pada laporan ini akan dibahas mengenai tipe-tipe data terstruktur yang
meliputi tipe data array, tipe data record dan tipe data set.
REKURSI
Salah satu keistimewaan yang dimiliki oleh Turbo Pascal adalah bahwa pascal
dapat melakukan suatu proses yang dinamakan sebagai proses Rekursi, yaitu proses untuk
memanggil dirinya sendiri. Dalam procedure dan function proses ini bisa berarti proses
berulang yang tidak diketahui kapan akan berakhirnya. Contoh paling sederhana dari
proses rekursi adalah Proses mencari faktorial dari suatu.
Contoh program :
PROGRAM FAKTORIAL;
Uses crt ;
Var i , N , Hsl : integer
Function Fakto(N:integer):integer ;
Var Fak: integer ;
Begin
if (N=0) or (N=1) then
Fakto:= 1
else
Fakto:= N*Fakto(N-1) ;
end;
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ') ;
readln(N) ;
writeln('Hasil perhitungan : ',Fakto(N)) ;
readln ;
end .
Dari program diatas maka notasi Fakto(N-1) yang digunakan untuk memanggil program
sebelumnya dinamakan sebagai Pemanggil atau rekursi.
Tipe data ini merupakan perluasan dari tipe data Array, yaitu karena pada array
masing-masing komponennya harus menggunakan tipe data yang sama, maka pada
record hal itu tidak berlaku lagi. Artinya diperbolehkan untuk menggunakan tipedata
yang berbeda pada masing-masing komponen (field) dari record tersebut.
Pendeklarasian record :
Type
Nama_record = record
Contoh :
Type Barang = record
Nama : string[20] ;
Jenis : string [20]
Jumlah : integer ;
End ;
Contoh program :
PROGRAM DATABASE;
Uses crt;
TYPE mahasiswa=record
nama: array[1..20] of string;
nim: array[1..20] of string;
alamat: array[1..20] of string;
ipk: array[1..20] of real;
end;
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 1
Masukan Nama Mahasiswa : Tumpal PS
==========================================
| Nama NIM Alamat IPK |
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 3
Masukan Alamat Mahasiswa : Bali
=========================================
| Nama NIM Alamat IPK |
=========================================
| Putu Eka A 8239 Bali 3.30 |
=========================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 4
Masukan IPK : 3.4
=========================================
| Nama NIM Alamat IPK |
=========================================
| Sri Sunarwati 8244 Klaten 3.40 |
=========================================
PENGURUTAN (SORTING)
Contoh Program :
PROGRAM contoh;
USES CRT;
TYPE ArrInt = array [1..100] of real ;
VAR
Data : ArrInt;
i,j,n : integer;
BEGIN
clrscr;
Contoh Program :
PROGRAM STATISTIK;
Uses Crt;
TYPE ArrInt = array [1..100] of integer;
PROCEDURE Tukar(var a,b : integer);
var Bantu : integer;
begin
Bantu := a;
a := b;
b := Bantu;
end;
Var
Data: ArrInt ;
i, j, n: integer ;
Begin
clrscr;
writeln('Masukkan data anda !');writeln;
write('Berapakah frekuensi data anda ? ');readln(n);
writeln('Silakan masukkan data Anda !');
for i:=1 to n do
begin
Write('Data ke-',i,' = ');readln(data[i]);
end;
BubleSort(data,n);
write('Hasil Pengurutan data dengan BubleSort : ');
for i:=1 to n do
write(data[i]:3);
readln;
end.
Hasil Run Program :
Masukkan data anda !
dapat mengubah deklarasi program diatas dengan memperbesar ukurannya. Tetapi jika
setiap kali kita harus mengubah deklarasi dari tipe daa tersebut sementara, banyaknya
data tidak dapat ditentukan lebih dahulu, maka hal ini tentu merupakan pekerjaan yang
membosankan.
Tanda ^ di depan simpul harus ditulis apa adanya karena itu menunjukkan
bahwa pengenal bertipe pointer. Tipe data dari simpul dapat berupa tipe data sebarang,
misalnya char, integer, atau real.
Contoh :
Type Str30 = string[30] ;
Point = ^Data ;
Data = record
Nama_Peg : Str30 ;
Alamat : Str30 ;
Pekerjaan : Str30 ;
End ;
Var
P1, P2 : Point ;
A, B, C : Str30 ;
Secara umum ada 2 operasi yang dapat dilakukan dengan tipe data pointer, yaitu :
1. Mengkopy pointer, sehingga sebuah simpul akan ditunjuk oleh lebih dari sebuah
pointer
2. Mengkopy isi dari simpul, sehingga dua atau lebih simpul yang ditunjuk oleh
pointer yang berbeda mempunyai isi yang sama
Catatan :
Syarat yang harus dipenuhi oleh kedua operasi tersebut adalah bahwa pointer-pointer
yang akan dioperasikan harus mempunyai deklarasi yang sama.
Jika dalam statemen pemberian tanda ^ tidak diberikan maka operasinya
dinamakan sebagai mengkopi pointer, dengan konsekuensi simpul yang ditunjuk
oleh suatu pointer akan bisa terlepas dan tidak dapat dimasup lagi.
Contoh : P1 := P2 ;
Jika tanda ^ diberikan maka operasinya dinamakan sebagai operasi mengkopi isi
simpul pointer, dengan konsekuensi bahwa isi dua buah simpul atau lebih akan
menjadi sama.
Contoh : P1^ := P2^ ;
Cara lain untuk menyimpan sekumpulan data selain dengan menggunakan record
adalah dengan menggunakan bantuan tipe data pointer. Dalam hal ini, masing-masing
data dengan sebuah medan yang bertipe pointer perlu digunakan.
Salah satu struktur data dinamis yang paling sederhana adalah Senarai Berantai
(Linked List). Yaitu kumpulan komponen (node) yang disusun secara berurutan dengan
menggunakan bantuan pointer. Node ini terbagi menjadi dua bagian yaitu bagian medan
informasi, yang berisi informasi yang akan disimpan atau diolah dan bagian penyambung
(link field), yang berisi alamat simpul selanjutnya.
Untuk menyambung simpul yang ditunjuk oleh Akhir dan Baru maka pointer pada
simpul yang ditunjuk oleh Akhir dibuat sama dengan Baru , kemudian diubah pointer
Akhir sama dengan Baru.
Procedure Tambah_Belakang(Awal,Akhir,Elemen:
Data);
Var Baru : point;
Begin
New(Baru); Baru^.Info := elemen;
If Awal = NIL then
Awal:= Baru
Else Akhir^.Berikut := Baru;
Akhir:= Baru; Akhir^.Berikut:= NIL;
End;
Pertama kita letakkan pointer Bantu pada simpul di sebelah kiri simpul yang akan
dihapus. Simpul yang akan dihapus kita tunjuk dengan pointer lain, misalnya Hapus.
Kemudian pointer pada simpul yang ditunjuk oleh Bantu kita tunjukkan pada simpul
yang ditunjuk oleh pointer pada simpul yang akan dihapus. Selanjutnya simpul yang
ditunjuk oleh pointer Hapus kita Dispose.
Pertama kali kita atur supaya pointer Bantu menunjuk ke simpul yang ditunjuk
oleh pointer Awal. Setelah isi simpul itu dibaca, maka pointer Bantu kita gerakkan ke
kanan untuk membaca simpul berikutnya. Proses ini kita ulang sampai pointer Bantu
sama dengan pointer Akhir.
Ada 2 cara membaca mundur isi dari Senarai Berantai, yaitu dengan cara biasa
seperti diatas atau dengan memanfaatkan proses rekursi. Cara pertama yaitu kita atur
pointer Bantu sama dengan pointer Awal. Berikutnya, pointer awal kita arahkan ke
simpul Akhir dan kita pakai pointer lain misalkan Bantu1 untuk bergerak dari simpul
pertama sampai simpul sebelum simpul terakhir. Langkah selanjutnya adalah
mengarahkan medan pointer dari simpul terakhir ke simpul Bantu1. Langkah ini diulang
sampai pointer Akhir Berimpit dengan pointer Bantu. Cara kedua dengan rekursi.
Caranya hampir sama dengan cara membaca senarai berantai secara maju hanya saja
pencetakan isi simpul ditunda sampai pointer Bantu sama dengan pointer akhir.
Misalkan data yang dicari disimpan dalam peubah Elemen. Pertama kali, pointer
Bantu dibuat sama dengan pointer Awal. Kemudan isi simpul yang ditunjuk oleh pointer
Bantu dibandingkan dengan Elemen. Jika belum sama, maka pointer Bantu dipindah ke
simpul disebelah kanannya dan proses perbandingan diulang lagi sampai bisa ditentukan
apakah Elemen ada dalam senarai berantai yang dimaksud atau tidak.
NILAI