Modul Alpro 2

58
PROSEDUR DAN FUNCTION Dalam bahasa pemrograman pascal kita pasti akan mengenal tentang Procedure dan Function. Apa sih pengertian dan kegunaan Prosedure dan Function dalam bahasa pemrograman pascal ? Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya. Prosedur banyak digunakan pada program yang terstruktur, karena : 1. Merupakan penerapan konsep program modular, yaitu memecah- mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur. 2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan. Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja. Deklarasi dari prosedur yaitu: ~ 1 ~ Akhmad Ridhani (J1F111010)

description

modul

Transcript of Modul Alpro 2

Page 1: Modul Alpro 2

PROSEDUR DAN FUNCTION

Dalam bahasa pemrograman pascal kita pasti akan mengenal tentang Procedure dan

Function. Apa sih pengertian dan kegunaan Prosedure dan Function dalam bahasa

pemrograman pascal ?

Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur.

Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan

judul prosedurnya.

Prosedur banyak digunakan pada program yang terstruktur, karena :

1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang

rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-

prosedur.

2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam

prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block.

Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.

Deklarasi dari prosedur yaitu:

Procedure NamaProcedure(DaftarParameter) ;

{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.

~ 1 ~Akhmad Ridhani (J1F111010)

Page 2: Modul Alpro 2

Deklarasi dari function yaitu:

Function NamaFungsi(NamaParameter) : TipeData ;

{Deklarasi}

Begin

...........

...........

End ;

Perbedaan prinsip antara procedure dengan function :

Pada function nilai yang dikirim balik terdapat nama fungsinya (Karena nama fungsi

digunakan untuk menampung nama fungsi yang terakhir).

Function dapat langsung ditampikan hasilnya.

Dengan melihat beberapa contoh program di bawah akan lebih memperjelas tentang

prosedure dan function. Contoh program prosedur dan functin yaitu:

Contoh Program 1:

Uses Crt;

Procedure DrawLine;

Var Counter : Integer;

Begin

textcolor(green);

For Counter := 1 to 10 do

Begin

write(chr(196));

End;

End;

Begin

~ 2 ~Akhmad Ridhani (J1F111010)

Page 3: Modul Alpro 2

GotoXy(10,5);

DrawLine;

GotoXy(10,6);

DrawLine;

GotoXy(10,7);

DrawLine;

GotoXy(10,10);

DrawLine;

Readkey;

End.

Contoh Program 2:

Uses Crt;

Var SizeA, sizeB : Real;

YN : Char;

unitS : String[2];

Function PythagorasFunc(A:Real; B:Real) : Real;

Begin

PythagorasFunc := SQRT(A*A + B*B);

End;

Begin

Repeat

Writeln;

Write('Enter the size of side A : ');

Readln(sizeA);

~ 3 ~Akhmad Ridhani (J1F111010)

Page 4: Modul Alpro 2

Write('Enter the size of side B : ');

Readln(sizeB);

Repeat

Write('metres or centimetres? Enter : [m or cm] ');

Readln(unitS);

Until (unitS = 'm') or (unitS = 'cm');

Writeln(PythagorasFunc(sizeA,sizeB),' ',unitS);

Writeln;

Write('Repeat? ');

YN := Readkey;

Until (YN in ['N','n']);

End.

Contoh Program 3:

var

nama,alamat : string;

umur,tahunlahir,tahun : integer;

procedure input;

begin

write('Masukkan Nama : ');readln(nama);

write('Masukkan Alamat : ');readln(alamat);

write('Masukkan tahun Lahir : ');readln(tahunlahir);

end;

~ 4 ~Akhmad Ridhani (J1F111010)

Page 5: Modul Alpro 2

function hitung:integer;

begin

tahun := 2012;

umur := tahun - tahunlahir;

end;

begin

input;

hitung;

writeln('Nama : ',nama);

writeln('Alamat : ',alamat);

writeln('Umur : ',umur);

end.

~ 5 ~Akhmad Ridhani (J1F111010)

Page 6: Modul Alpro 2

STRING, SET, SUBRANGE DAN ENUMERASI

Anda pasti sudah tau dengan tipe data, contohnya seperti integer, char, longint dll.

Nah kita akan membahasa tipe data yang lain yaitu string, set, subrange dan enumerasi.

String adalah data yang berisi sederet karakter yang terletak di antara tanda kutip satu.

Jika karakter kutip merupakan bagian dari konstanta string, maka ditulis dengan

menggunakan dua buah tanda kutip satu berurutan

Set adalah kumpulan dari nilai-nilai yang memiliki kesamaan sifat, yaitu tipe data yang

sama dan urutan penulisannya tidak diperhatikan. Setiap obyek dalam himpunan disebut

dengan anggota atau elemen himpunan. Contoh :

1. Huruf vokal dalam alphabet,

2. kendaraan bermotor,

3. binatang menyusui,

4. bilangan genap 1 sampai 100 ,dan sebagainya

Tipe subrange adalah tipe yang merupakan subset dari tipe ordinal lainnya yang tersusun

secara terurut. Untuk mendefinisikan tipe ini,digunakan tanda titik sebanyak dua kali (..)

adapun bentuk umumnya yaitu

NamaTipeSubrange = nilai_minimum..nilai_maksimum;

Tipe Enumerasi adalah tipe yang nilai-nilainya terbatas sesuai dengan nilai-nilai yang

didefinisikan pada saat deklarasi tipe tersebut. Bentuk umumnya yaitu:

NamaTipeEnumerasi = (Nilai1,....,nilaiN);

Dengan penjelasan di atas anda mungkin sudah mulai mengerti dengan tipe data

tersebut. Untuk lebih membuat anda mengerti maka dapat kita lihat pda contoh program

berikut:

Contoh Program 1:

program string;

~ 6 ~Akhmad Ridhani (J1F111010)

Page 7: Modul Alpro 2

var

nama,nim: string;

begin

write('Masukkan Nama : ');readln(nama);

write('Masukkan NIM : ');readln(nim);

writeln;

writeln('Nama : ',nama);

writeln('NIM : ',nim);

end.

~ 7 ~Akhmad Ridhani (J1F111010)

Page 8: Modul Alpro 2

ARRAY

Bagaimana kita dapat menampung data dalam satu tipe data? Kita dapat menggunakan

Array dalam hal ini. Array sendiri adalah baris atau deret. Contoh nyata dalam kehidupan

seperti baris atau deretan kamar pada suatu hotel.

Pengertian Array dalam bahasa pemrograman sendiri adalah suatu tipe variabel yang

menyimpan data dalam beberapa tempat, seakan-akan merupakan gabungan dari beberapa

variabel sejenis sekaligus. Untuk memakai variabel array harus ditunjukan variabel keberapa

yang akan dioperasikan.

Bentuk umum penulisan tipe variabel array adalah :

variabel : Array [n1..m1] Of tipe variabel;

variabel : Array [n1..m1,n2..m2] Of tipe variabel;

dimana cara yang pertama digunakan untuk Array berindeks (dimensi) satu, sedangkan cara

kedua adalah untuk array berindeks (dimensi) dua. Variabel adalah nama variabel yang akan

didefenisikan, n1,n2 dan seterusnya adalah nomor awal array yang akan didefenisikan,

m1,m2 dan seterusnya adalah nomor akhir array yang didefenisikan dan tipe variable adalah

tipe variabel isi.

Untuk lebih jelasnya kita akan lihat pada contoh-contoh program berikut:

Contoh Program 1:

var

X : array[1..100] of integer;

a,b,n,r : integer;

beda : boolean;

begin

write('Banyaknya data : ');readln(n);

if n > 100 then begin

~ 8 ~Akhmad Ridhani (J1F111010)

Page 9: Modul Alpro 2

writeln('Melebihi batas, (tidak boleh lebih dari 100)');

exit;

end;

for a:=1 to n do begin

repeat

r:=random(100)+1;

b:=1;beda:=true;

repeat

if r=x[b] then beda:=false else inc(b);

until (b>a-1) or (beda=false);

until (beda);

x[a]:=r;

end;

writeln;

for a:=1 to n do write(X[a],' ');

end.

Contoh Program 2:

Var

Nama : array [1..30 ] of string ;

Tugas, uts, uas, absen : array [1..30] of integer ;

Rata : array [1..30] of real ;

x , jd : byte;

begin

~ 9 ~Akhmad Ridhani (J1F111010)

Page 10: Modul Alpro 2

Write (‘Masukan Jumlah data : ‘) ; readln ( jd ) ;

For x : = 1 to jd do

begin

Writeln (‘***************************** ‘) ;

Writeln (‘PENILAIAN UJIAN MAHASISWA BSI‘) ;

Writeln (‘***************************** ‘) ;

Write (‘Input Nama : ‘) ; readln (nama[x] ) ;

Write (‘Input Nilai Tugas : ‘) ; readln (tugas[x] ) ;

Write (‘Input Nilai Absen : ‘) ; readln (absen[x] ) ;

Write (‘Input Nilai UTS : ‘) ; readln (uts[x] ) ;

Write (‘Input Nilai UAS : ‘) ; readln (uas[x]) ;

Rata[x]:=(0.1*tugas[x])+(0.2*absen[x])+(0.3*uts[x])+(0.4*uas[x]);

End ;

CLRSCR ;

For i : = 1 to j do

Begin

Writeln (‘***************************** ‘) ;

Writeln (‘PENILAIAN UJIAN MAHASISWA BSI ‘) ;

Writeln (‘***************************** ‘) ;

Writeln (‘Nama : ‘,nama[i] ) ;

Writeln (‘Nilai Tugas : ‘,tugas[i] ) ;

Writeln (‘Nilai Absen : ‘,absen[i] ) ;

Writeln (‘Nilai UTS : ‘,uts[i] ) ;

Writeln (‘Nilai UAS : ‘,uas[i]) ;

Writeln (‘****************************‘) ;

~ 10 ~Akhmad Ridhani (J1F111010)

Page 11: Modul Alpro 2

Writeln (‘Rata-rata : ‘,rata : 1: 0 ) ;

Readln ;

End;

end.

Contoh Program 3:

uses crt;

var Nilai : array[1..50] of real;

jumlah, rata : real;

i,a, JumDat : byte;

nama : string;

begin

clrscr;

{jumlah:=0;}

writeln(‘ Nilai Rata – Rata Praktikum Kelas

TK2A’);

Writeln(‘—————————————’);

write(‘Nama Mahasiswa =’ );readln(nama);

Write(‘Berapa Jumlah data = ‘);readln(JumDat);

for i := 1 to Jumdat do

begin

Write(‘Nilai Praktiklum ke

‘,i,’=');Readln(Nilai[i]);

end;

~ 11 ~Akhmad Ridhani (J1F111010)

Page 12: Modul Alpro 2

jumlah:=0;

for i:= 1 to JumDat do

begin

Jumlah := jumlah + Nilai[i];

rata := Jumlah/JumDat;

end;

writeln;

clrscr;

writeln(‘Nama Mahasiswa =’,nama);

for i := 1 to jumdat do

begin

writeln(‘Nilai Praktekm ke-’,i,’

=’,nilai[i]:3:0);

end;

writeln(‘Total Nilai = ‘, jumlah:8:0);

writeln(‘Nilai Rata – rata = ‘, Rata:8:1);

readln;

end.

~ 12 ~Akhmad Ridhani (J1F111010)

Page 13: Modul Alpro 2

RECORD

Record adalah salah satu tipe data terstruktur (structured data type) bentukan yang

setiapnya terdiri dari beberapa elemen yang disebut field. Setipa field menggambarkan

informasi tertentu, dan tipe setiap field sudah dikenal, baik itu tipe dasar atau tipe bentukan

lainnya.

Bentuk umum deklarasi suatu variabel berjenis record adalah sbb :

TYPE identifier = RECORD

Nama_field_1 : jenis;

Nama_field_2 : jenis;

……………………..

……………………..

nama_field_n : jenis;

END;

Untuk dapat lebih memahami tentang record lihat contoh program berikut.

Contoh Program 1:

Type

Str25 = String[25];

TBookRec = Record

Title, Author,

ISBN : Str25;

Price : Real;

End;

Var

myBookRec : TBookRec;

~ 13 ~Akhmad Ridhani (J1F111010)

Page 14: Modul Alpro 2

Begin

myBookRec.Title := 'Some Book';

myBookRec.Author := 'Victor John Saliba';

myBookRec.ISBN := '0-12-345678-9';

myBookRec.Price := 25.5;

Writeln('Here are the book details:');

Writeln;

Writeln('Title: ', myBookRec.Title);

Writeln('Author: ', myBookRec.Author);

Writeln('ISBN: ', myBookRec.ISBN);

Writeln('Price: ', myBookRec.Price);

Readln;

End.

Contoh Program 2:

Type

Str25 = String[25];

TBookRec = Record

Title, Author,

ISBN : Str25;

Price : Real;

End;

Procedure EnterNewBook(var newBook : TBookRec);

Begin

Writeln('Please enter the book details: ');

~ 14 ~Akhmad Ridhani (J1F111010)

Page 15: Modul Alpro 2

Write('Book Name: ');

Readln(newBook.Title);

Write('Author: ');

Readln(newBook.Author);

Write('ISBN: ');

Readln(newBook.ISBN);

Write('Price: ');

Readln(newBook.Price);

End;

Procedure DisplayBookDetails(myBookRec : TBookRec);

Begin

Writeln('Here are the book details:');

Writeln;

Writeln('Title: ', myBookRec.Title);

Writeln('Author: ', myBookRec.Author);

Writeln('ISBN: ', myBookRec.ISBN);

Writeln('Price: ', myBookRec.Price);

End;

Var

bookRec : TBookRec;

Begin

EnterNewBook(bookRec);

~ 15 ~Akhmad Ridhani (J1F111010)

Page 16: Modul Alpro 2

Writeln('Thanks for entering the book details');

DisplayBookDetails(bookRec);

Readln;

End.

Contoh Program 3:

Type

Str25 = String[25];

TBookRec = Record

Title, Author,

ISBN : Str25;

Price : Real;

End;

Procedure EnterNewBook(var newBook : TBookRec);

Begin

Writeln('Please enter the book details: ');

Write('Book Name: ');

Readln(newBook.Title);

Write('Author: ');

Readln(newBook.Author);

Write('ISBN: ');

Readln(newBook.ISBN);

Write('Price: ');

Readln(newBook.Price);

~ 16 ~Akhmad Ridhani (J1F111010)

Page 17: Modul Alpro 2

End;

Var

bookRecArray : Array[1..10] of TBookRec;

i : 1..10;

Begin

For i := 1 to 10 do

EnterNewBook(bookRecArray[i]);

Writeln('Thanks for entering the book details');

Write('Now choose a record to display from 1 to 10: ');

Readln(i);

Writeln('Here are the book details of record #',i,':');

Writeln;

Writeln('Title: ', bookRecArray[i].Title);

Writeln('Author: ', bookRecArray[i].Author);

Writeln('ISBN: ', bookRecArray[i].ISBN);

Writeln('Price: ', bookRecArray[i].Price);

Readln;

End.

~ 17 ~Akhmad Ridhani (J1F111010)

Page 18: Modul Alpro 2

REKURSIF

Definisi rekursif menurut Niclaus Wirth:

"An Object is said be recursive if it partially consist or is defines in term of itself"

Apabila anda pernah menonto film kartun naruto, nah itu bisa dijadikan salah satu

contoh ketika Naruto berkelahi dan mengeluarkan jurus seribu bayangan, maka naruto

melakukan rekursif yaitu suatu kegiatan memanggil dirinya untuk menjadi banyak sampai

jumlah maksimal terpenuhi.

Jadi Rekursif dapat kita artikan sebagai proses yang memanggil dirinya sendiri. Sebuah

objek disebut berulang (rekursif, recursive) jika setiap objek mengandung dirinya sendiri atau

didefinisikan dengan dirinya sendiri. Hubungan ini dapat ditemukan tidak hanya dalam

matematika, tetapi juga pada kehidupan sehari-hari.

Sebuah contoh rekursif, yaitu untuk mendapatkan nilai faktorial. Seperti diketahui suatu

faktorial m! didefinisikan sebagai berikut:

1 jika m = 0

1 x 2 x … x m jika m > 0

Secara rekursif persoalan di atas dijabarkan sebagai berikut:

1) 0! = m

2) Bila m > 0, m! = m x (m-1)!

beberpa contoh untuk program rekursif sebagai berikut.

Contoh Program 1:

Program anagram;

uses crt;

Procedure anagram(st1,st2:string);

var i :integer; st :string;

~ 18 ~Akhmad Ridhani (J1F111010)

Page 19: Modul Alpro 2

begin

if st1='' then writeln(st2)

else for i:= 1 to length(st1) do begin

st:=st1;

delete(st,i,1);

anagram(st,st2+st1[i]);

end;

end;

Begin

anagram('abc','');

readln;

End.

Contoh Program 2:

Program menarahanoi;

uses crt;

var baris,x : integer;

ulangi :char;

Procedure hanoi(n :integer;A,B,C :Char);

Begin

if (n>0) then begin

hanoi(n-1,A,C,B);

write(baris,'. pindah piringan ke-',n, 'dari ',A,' ke ',B);readln;

inc(baris);

~ 19 ~Akhmad Ridhani (J1F111010)

Page 20: Modul Alpro 2

hanoi(n-1,C,B,A);

end;

End;

Begin

ulangi:='y';

repeat

baris:=1;

write('input jumlah piringan :');readln(x);

hanoi(x,'A','B','C');

readln;

write('apakah diulangi(Y/N):');readln(ulangi);

until (ulangi='N') or (ulangi='n');

End.

Contoh Program 3:

program DesimalkeBiner;

uses crt;

procedure px(x:integer);

begin

if x>0 then begin

px(x-1);

write(x:5);

px(x-1);

~ 20 ~Akhmad Ridhani (J1F111010)

Page 21: Modul Alpro 2

end;

end;

function desbin(n:integer):string;

Begin

if n=0 then

begin

desbin:='0';

end

else

if n=1 then desbin:='1'

else desbin:=desbin(n div 2) + desbin(n mod 2);

End;

var n:integer;

begin

while true do begin

write('desimal='); readln(n);

writeln('biner=',desbin(n));

end;

end.

~ 21 ~Akhmad Ridhani (J1F111010)

Page 22: Modul Alpro 2

SORTING

Bagaimana kita dapat menyusun data secara urut dan rapi? Nah kita dapat gunakan

Sorting yang terdapat dalam bahasa pemrograman pascal.

Pegertian Pengurutan (sorting) secara umum didefinisikan sebagai proses pengurutan-

kembali serangkaian objek dalam urutan tertentu. Tujuan proses pengurutan adalah untuk

memudahkan proses pencarian. Pengurutan objek dalam dunia nyata dapat ditemukan dalam

banyak tempat: buku telepon, kamus, daftar isi buku atau majalah, dan tempat-tempat lain di

mana objek yang disimpan di dalamnya harus dicari.

Banyak metode yang dapat digunakan untuk melakukan proses sort terhadap himpunan

bilangan ataupun himpunan string. Metode tersebut adalah:

1) Metode selection sort

2) Metode bubble sort

3) Metode merge sort

4) Metode quick sort

5) Metode insertion

Agar anda dapat lebih mengerti tentang sorting, anda dapat melihat contoh program

berikut ini.

Contoh Program 1:

program arh_bsort_menaik;

uses crt;

var i,n,j : integer;

a: array [1..100] of integer;

procedure buble;

var z: integer;

~ 22 ~Akhmad Ridhani (J1F111010)

Page 23: Modul Alpro 2

begin

for i:= 1 to n-1 do

begin

for j:= n downto i+1 do

begin

if a[j] < a[j-1] then

begin

z:= a[j];

a[j]:= a[j-1];

a[j-1]:=z;

end;

end;

end;

end;

begin

write('masukkan banyak larik (maks 100) : '); readln(n);

for i:= 1 to n do

begin write('A[',i,'] : '); readln(a[i]);

end;

buble;

write('data setelah diurutkan : ');

for j:=1 to n do

write (a[j],' ');

end.

~ 23 ~Akhmad Ridhani (J1F111010)

Page 24: Modul Alpro 2

Contoh Program 2:

program insertion(input,output);

const

MAX = 10;

var

a : array[1..MAX] of integer;

i, n : integer;

procedure insertion_sort;

var

i, pos : integer;

value : integer;

done : boolean;

begin

for i := 2 to n do

begin

value := a[i];

pos := i;

done := false;

while not done do

begin

if pos <= 1 then

done := true

~ 24 ~Akhmad Ridhani (J1F111010)

Page 25: Modul Alpro 2

else if value >= a[pos-1] then

done := true

else

begin

a[pos] := a[pos-1];

pos := pos-1

end

end; {while}

a[pos] := value;

end {for}

end;

begin

writeln(Berapa Banyak Data Yang Akan Diurut (max=',MAX:2,') ?');

readln(n);

writeln('Enter in ',n:1,' numbers:');

for i := 1 to n do

read(a[i]);

insertion_sort;

for i := 1 to n do

write(a[i]:1,' ');

writeln

end.

~ 25 ~Akhmad Ridhani (J1F111010)

Page 26: Modul Alpro 2

Contoh Program 3:

program SelectionSort;

uses WinCrt;

type Array100 = array [1..100] of integer;

var

Data: Array100;

DataCount: Integer;

procedure InputData(var d: Array100; var c: Integer);

var

Code, k: Integer;

i: String;

begin

k := 1;

Writeln('Selection Sort');

Writeln('--------------');

Writeln;

repeat

Write('Masukkan angka ke-',k,' : ');readln(i);

if(i <> '') then

begin

Val(i,d[k],Code);

~ 26 ~Akhmad Ridhani (J1F111010)

Page 27: Modul Alpro 2

if(Code <> 0) then

d[k] := 0;

end;

Inc(k);

until (k > 100) or (i = '');

c := k - 2;

end;

procedure Swap(var a,b: Integer);

var

t: Integer;

begin

t := a;

a := b;

b := t;

end;

procedure Sorting(var d: Array100; c: Integer);

var

lok, i, j: Integer;

begin

for i:= 1 to c-1 do

begin

lok := i;

~ 27 ~Akhmad Ridhani (J1F111010)

Page 28: Modul Alpro 2

for j:=i+1 to c do

if(d[j] < d[lok]) then

lok := j;

Swap(d[i],d[lok]);

end;

end;

procedure Tampil(d: Array100; c: Integer);

var i: Integer;

begin for i:=1 to c do

Write(d[i]:5);

Writeln;

end;

begin

InputData(Data, DataCount);

Writeln;

Writeln('Sebelum diurutkan');

Tampil(Data,DataCount);

Sorting(Data,DataCount);

Writeln;

Writeln('Sesudah diurutkan');

Tampil(Data,DataCount);

end.

~ 28 ~Akhmad Ridhani (J1F111010)

Page 29: Modul Alpro 2

SEARCHING

Pencarian (searching) adalah salah satu hal penting dalam banyak kasus pemrograman.

Terdapat bermacam-macam algoritma pencarian yang telah dikembangkan dengan ide dasar

yang berbeda. Misalnya, jika diberikan sebuah nilai integer x, maka akan diperiksa apakah x

ditemukan pada sebuah array integer yang telah terisi, TabInt [1..n]. indeks dimana x

ditemukan dalam TabInt[1..n] dikirimkan, dan dikirimkan 0 jika x tidak ditemukan dalam

TabInt[1..n].

Teknik pencarian data pada komputer yang merupakan hal biasa dan sering dilakukan

pada sistem komputer terbagi atas tiga teknik, yaitu:

1) Teknik Sequential Search

2) Teknik Binary Search

3) Teknik Extreme Search

Agar anda dapat lebih mengerti tentang searching, anda dapat melihat contoh program

berikut ini.

Contoh Program 1:

program ekstrim_search;

uses crt;

type

  arrint = array [1..100] of integer;

var

  maks   : integer;

  tabint : arrint;

  nn, i  : integer;

  function maksimum(tabint : arrint; n : integer) : integer;

~ 29 ~Akhmad Ridhani (J1F111010)

Page 30: Modul Alpro 2

  var

    i   : integer;

    max : integer;

  begin

    for i:=1

     to n do

      if max< tabint[i] then

        max:= tabint[i];

    maksimum:=max;

  end;

begin

  clrscr;

  write('jumlah elemen = '); readln(nn);

  writeln;

  for i:= 1 to nn do

    begin

      write('elemen ke-',i,' = '); readln(tabint[i]);

    end;

  maks:= maksimum(tabint, nn);

  writeln('nilai Maksimum = ',maks);

writeln;

writeln('Selamat Berkarya ya');

readln;

end.

~ 30 ~Akhmad Ridhani (J1F111010)

Page 31: Modul Alpro 2

Contoh Program 2:

program searchingbinary;

TYPE

tree =^node;

node = record

info : char;

left, right : tree

end;

VAR root: tree;

Number: integer;

procedure search( t : tree; var found : boolean; x : char);

begin

if (t <> nil) and not found then

if x = t^.info then begin

found := true;

writeln( x, ' was found')

end

else if x < t^.info then

search( t^.left, found, x)

else

search( t^.right, found, x)

end;

~ 31 ~Akhmad Ridhani (J1F111010)

Page 32: Modul Alpro 2

var found: boolean;

x : char;

BEGIN{main}

Binary_Tree(root);

Infix(root);

writeln;

found := false;

writeln('What value of x do you want?');

readln( x );

search( root, found, x);

writeln(x, ' was found is ', found)

END.

Contoh Program 3:

program sequential_searh2_boolean;

uses crt;

const nmax=100;

type tabinteger=array[1..nmax] of integer;

var

   tabint:tabinteger;

   jml_data,data,indeks:integer;

   found:boolean;

   cari:char;

   procedure inputdata(n:integer; var t:tabinteger);

   var

~ 32 ~Akhmad Ridhani (J1F111010)

Page 33: Modul Alpro 2

   i:integer;

   begin

     for i:=1 to n do

     begin

       write ('nilai ke - ',i,' : ');

       readln(t[i]);

     end;

   end;

   procedure seqsearch(t :tabinteger; n,x :integer;var idx:integer);

   var i:integer;

   begin

     i:=1;

     found :=false;

     while (i<=n) and (not found) do

     begin

       if t[i]=x then

         found:=true

       else

         i:=i+1;

   end;

       if found then

       idx:=i

       else

       idx:=0;

       end;

~ 33 ~Akhmad Ridhani (J1F111010)

Page 34: Modul Alpro 2

begin

  clrscr;

  write("banyaknya integer : ");readln(jml_data);

  inputdata(jml_data,tabint);

  repeat

    write("data yang akan dicari : ");readln(data);

    seqsearch(tabint, jml_data,data,indeks);

    if indeks=0 then

      writeln("data tidak ditemukan")

    else

      writeln("data ditenukan pada posisi ke-",indeks);

   write("cari data lagi (y/t) ? ");readln(cari);

   until(cari='t')or (cari='T');

   readln;

end.

~ 34 ~Akhmad Ridhani (J1F111010)

Page 35: Modul Alpro 2

FILE

Saat kita membuat sebuah program dalam bahasa pemrograman pascal,. Program

tersebut tidak dapat menyimpan data yang telah kita masukkan dalam program. Dengan

Menggunakan File kita dapat menyimpan data tersebut dalam sebuah bent .txt atau yang lain.

Pengertian File teks (text file) itu sendiri adalah file yang terdiri dari karakter-karakter.

Karakter-karakter tersebut dapat dianggap sebagai data yang bertipe karakter, integer, real,

atau string tergantung kepada tipe data yang digunakan untuk menyimpan hasil pembacaan

dari file.

File pada Pascal dikenal dalam 3 jenis, yaitu :

1. File Text

2. File bertipe

3. File tidak bertipe

Dalam File kita dapat menulis, mengeditnya, mengahapus maupan membuat sebuah

program secara keselurahan mengenai hal tadi.

Ada beberapa contoh program file agar anda lebih mengerti tentang file itu sendiri.

Contoh Program 1:

Program Lesson9_Program1;

Var UserFile : Text;

FileName, TFile : String;

Begin

Writeln(Masukkan Nama File '+

+'(Dengan letak lengkapnya) dari text file:');

readln(FileName);

Assign(UserFile, FileName + '.txt');

Reset(UserFile);

~ 35 ~Akhmad Ridhani (J1F111010)

Page 36: Modul Alpro 2

Repeat

Readln(UserFile,TFile);

Writeln(TFile);

Until Eof(UserFile);

Close(UserFile);

Readln;

End.

Contoh Program 2:

Program Lesson9_Program2;

Var FName, Txt : String[10];

UserFile : Text;

Begin

FName := 'Textfile';

Assign(UserFile,'C:\'+FName+'.txt'); {assign a text file}

Rewrite(UserFile);

Writeln(UserFile,'PASCAL PROGRAMMING');

Writeln(UserFile,'Jika Kamu Tidak Mengerti Sesuatu,');

Writeln(UserFile,'Tolong kirim email ke :');

Writeln(UserFile,'[email protected]');

Writeln('Tulis Beberapa kata di dalam file:');

Readln(Txt);

Writeln(UserFile,'');

Writeln(UserFile,'User menuliskan ini:');

Writeln(UserFile,Txt);

~ 36 ~Akhmad Ridhani (J1F111010)

Page 37: Modul Alpro 2

Close(UserFile);

End.

Contoh Program 3:

Type

myRange = 1..5;

arrayIntType = Array[myRange] of Integer;

myFileType = File of arrayIntType;

Var

i : myRange;

myFile : myFileType;

arrayInt : Array[1..2] of arrayIntType;

Begin

Clrscr;

Randomize;

For i := 1 to 5 do

Begin

arrayInt[1][i] := Random(1000);

Writeln('rand num: ',arrayInt[1][i]);

End;

Assign(myFile, 'test.dat');

ReWrite(myFile);

Write(myFile, arrayInt[1]);

Close(myFile);

ReSet(myFile);

~ 37 ~Akhmad Ridhani (J1F111010)

Page 38: Modul Alpro 2

Read(myFile, arrayInt[2]);

Close(myFile);

For i := 1 to 5 do

Writeln(i,': ', arrayInt[2][i]);

Readln;

End.

~ 38 ~Akhmad Ridhani (J1F111010)

Page 39: Modul Alpro 2

POINTER

Pointer adalah variable yang digunakan untuk menyimpan lokasi data pada memori.

Karena setiap tipe data membutuhkan ukuran memori yang berbeda untuk menyimpannya,

maka pointer dan tipe data yang diacunya harus ditentukan dahulu. Hal ini dilakukan dengan

mendefinisikan sebuah pointer yang menunjuk kepada sebuah tipe data tertentu. Aturan

pendeklarasian tipe pointer adalah

Type

Namatipepointer=^tipedata;

Contoh Program 1:

program Pointers;

var

number : integer;

numbers_pointer : ^integer;

begin

number := 5;

writeln('Number is ', number);

numbers_pointer := @number;

numbers_pointer^ := 8;

writeln('Pointed Content is: ', numbers_pointer^); { 8 }

writeln('Number is: ', number); { Should be 8 }

end.

Contoh Program 2:

~ 39 ~Akhmad Ridhani (J1F111010)

Page 40: Modul Alpro 2

Uses crt;                             

Type ptr = ^string;          

Var        

ptrnama, ptrkls, ptrnpm : ptr;

nama,kls,npm : string; 

x,n : integer;                     

begin                                                    

clrscr;                                                   

writeln(‘data mahasiswa : ‘);      

writeln(‘ ‘);                        

writeln(‘masukan angka : ‘);       

readln (n);                                          

for x := 1 to n do                              

begin                                                    

writeln(‘data ke ‘,x);                                      

write(‘nama = ‘);                                             

readln(nama);                  

write(‘kelas = ‘);                              

readln(kls);                                        

write(‘npm = ‘);                               

readln(npm);                                    

ptrnama := @nama;                                       

ptrkls := @kls;                   

ptrnpm := @npm;           

writeln(‘nama = ‘,ptrnama^);    

~ 40 ~Akhmad Ridhani (J1F111010)

Page 41: Modul Alpro 2

writeln(‘kelas = ‘,ptrkls^);                           

writeln(‘npm = ‘,ptrnpm^);        

end;                                                                                      

readln;                                                                                                 

end.

Contoh Program 3:

Program Hit_IPK;

Uses crt;

const MaxMK = 150;

Type

   TblMK = ^IDMK;

   IDMK  = record

             NamaMK    : string[30];

             SKS       : integer;

             Nilai     : char;

             BT        : byte;

             NextIDMK,

             PrevIDMK  : integer;  { Posisi Record }

           end;

Var

    NIM        : string[15];

    NamaMhs    : string[30];

    DosenWali  : string[30];

~ 41 ~Akhmad Ridhani (J1F111010)

Page 42: Modul Alpro 2

    Jurusan    : string[30];

    i, n       : byte;

    DataMK     : array [1..MaxMK] of TblMK;

    JMK,NL,IP,JBT,JSKS   :Integer;

procedure InputID;

var ch : char;

begin

   writeln('[1] Identitas Mahasiswa');

   writeln('-----------------------');

   write('NIM        : ');readln(NIM);

   write('Nama       : ');readln(NamaMhs);

   write('Jurusan    : ');readln(Jurusan);

   write('Dosen Wali : ');readln(DosenWali);

   writeln;

   write('Tekan sembarang tombol untuk melanjutkan...!');

   ch := readkey;

end;

procedure InputMK;

var ch : char;

begin

   clrscr;

   writeln('[2] Nilai Mahasiswa');

   writeln('-----------------------');

~ 42 ~Akhmad Ridhani (J1F111010)

Page 43: Modul Alpro 2

   write('Jumlah MK : ');readln(n);

   if (n > MaxMK) then

   begin

      write('Jumlah MK > ',MaxMK);

      halt;

   end

   else

   begin

      for i:=1 to n do

      begin

         new(DataMK[i]);

         writeln;

         writeln('Mata Kuliah (MK) ke-',i);

         writeln('-----------------------');

         write('Nama MK   : ');readln(DataMK[i]^.NamaMK);

         write('Jml SKS   : ');readln(DataMK[i]^.SKS);

         write('Nilai (A/B/C/D/E) : ');readln(DataMK[i]^.Nilai);

         with DataMK[i]^ do

         begin

            Nilai := upcase (Nilai);

            case Nilai of

              'A' :NL:=4;

              'B' :NL:=3;

~ 43 ~Akhmad Ridhani (J1F111010)

Page 44: Modul Alpro 2

              'C' :NL:=2;

              'D' :NL:=1;

            else NL:=0

            end;

            BT:=NL*SKS;

            JSKS:=JSKS+SKS;

            JBT:=JBT+BT;

         end;

      end;

   end;

   writeln;

   write('Tekan sembarang tombol untuk melanjutkan...!');

   ch := readkey;

end;

procedure ViewNilai;

var ch : char;

begin

   clrscr;

   writeln('[3] Tampilan Nilai');

   writeln('-----------------------');

   writeln('Hasil Perhitungan Indeks Prestasi (IP)');

   writeln;

   writeln('NIM        : ',NIM);

   writeln('Nama       : ',NamaMhs);

~ 44 ~Akhmad Ridhani (J1F111010)

Page 45: Modul Alpro 2

   writeln('Jurusan    : ',Jurusan);

   writeln('Dosen Wali : ',DosenWali);

   writeln;

   writeln('===================================================');

   writeln(' No   Mata Kuliah            Jml SKS       Nilai   ');

   writeln('===================================================');

   for I:=1 to n do

   begin

     with DataMK[i]^ do

     begin

        Gotoxy (2,I+12);write(I:2);

        Gotoxy (7,I+12);write(NamaMK);

        Gotoxy (33,I+12);write(SKS);

        Gotoxy (46,I+12);write(Nilai);

        writeln;

     end;

  end;

  writeln('---------------------------------------------------');

  writeln('Jumlah Mata Kuliah = ',N);

  writeln('Total SKS          = ',JSKS);

  writeln('Total Nilai        = ',JBT);

  writeln;

  write('IP yang diperoleh  = ',JBT/JSKS:0:3);

  writeln;

  writeln;

~ 45 ~Akhmad Ridhani (J1F111010)

Page 46: Modul Alpro 2

  write('<< SELESAI >> Tekan sembarang tombol untuk melanjutkan...!');

  ch := readkey;

end;

Begin  { Program UTAMA }

  clrscr;

  writeln('------------------------------------');

  writeln(' PROGRAM HITUNG IPK                 ');

  writeln(' MENGGUNAKAN METODE POINTER & ARRAY ');

  writeln('------------------------------------');

  writeln(' Dibuat Oleh : karkoonzaid          ');

  writeln('               [email protected]');

  writeln('------------------------------------');

  writeln;writeln;

  InputID;

  InputMK;

  ViewNilai;

End.

~ 46 ~Akhmad Ridhani (J1F111010)