modul alpro 2
DESCRIPTION
modulTRANSCRIPT
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Read(myFile, arrayInt[2]);
Close(myFile);
For i := 1 to 5 do
Writeln(i,': ', arrayInt[2][i]);
Readln;
End.
~ 38 ~Akhmad Ridhani (J1F111010)
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)
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)
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)
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)
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)
'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)
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)
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)