You are on page 1of 27

Modul Praktikum Algoritma dan Pemrograman I

MODUL I
STRUKTUR PROGRAM PASCAL
(1 x pertemuan)

I. TUJUAN
Mahasiswa mengenal struktur program PASCAL, editor TURBO PASCAL. program
sederhana dengan bahasa PASCAL, Statemen masukkan dan keluaran, Variabel, Konstanta
dan Operator.

II. TEORI SINGKAT


Editor TURBO PASCAL merupakan pelayanan terpadu antara editor dengan compiler.
Untuk mengaktifkan editor TURBO PASCAL dapat dilakukan dengan :
 Aktifkan komputer dalam keadaan prompt C:\> (DOS)
 Masuk ke direktori TURBO PASCAL
 Masuk ke direktori BIN
 Ketikkan TURBO
C:\> CD TP
C:\TP\CD BIN
C:\TP\BIN\ TURBO
Sehingga akan muncul jendela editor TURBO PASCAL deengna menu antara lain : File,
Edit, Search, Run, compile, Debug, Tools. Options, Window, Help.

Operasi-operasi pada editor PASCAL :


1. Untuk menciptakan lembar kerja baru  File, New
2. Untuk menyimpan hasil pekerjaan  File, Save/Save as, ketikkan nama filenya
(Tekan tombol F2)
3. Untuk membuka file data  File, Open, pilih file data, Tekan tombol Open (Tekan
tombol F3)
4. Untuk berpidah ke direktori kerja  File, Change dir…, Tentukan direktori kerja,
Tekan tombol OK
5. Untuk keluar ke prompt DOS sementara  File, DOS shell
6. Untuk kembali ke editor PASCAL  ketikkan Exit
7. Untuk menjalankan program PASCAL  Run, Run (Ctrl+F9)
8. Untuk melihat hasil RUN  Alt+F

Struktur Program PASCAL :

PROGRAM NamaKepalaProgram;  Optional


LABEL
<Deklarasi Label>  Optional
CONST
<Deklarasi Konstantal>  Optional
TYPE
<Deklarasi Tipe>  Optional
VAR
<Deklarasi Variabell>  Optional
<Deklarasi Procedure dan Fuction>  Optional
Begin
<Pernyataan>
End.

Halaman : 1
Modul Praktikum Algoritma dan Pemrograman I

NamaKepalaProgram
Dipakai untuk keperluan dokumentasi. Menunjukkan dari identifikasi program yang akan
dibuat. Nama kepala program harus dimulai dengan huruf, dapat terdiri dari angka dan
karakter _ (garis bawah)dan tidak boleh ada spasi. NamaKepalaProgram mempunyai
aturan sama dengan Namavariabel. Namakonstanta, NamaTypeData, NamaProcedure,
NamaFuction.

Program Sederhana
Program paling sederhana dari PASCAL hanyalah terdiri
Begin
End.
Program diatas tidak mengandung statement sama sekali, sehingga program diatas kalau
dijalankan (Ctrl+F9) tidak menghasilkan Output.
Procedure Write dan Writeln
Write : Mencectak dan kursor disebelahnya
Writeln : Mencetak dan kursor satu baris ke baris awal

Contoh Program :

Program coba;
Begin
write('Selamat datang ');
write('di TURBO PASCAL');
writeln;
writeln('Laboratorium
komputer');
writeln('STMIK EL RAHMA');
end.

Program diatas dapat anda jalankan dengan menekan tombol Ctrl+F9. Anda bisa melihat
hasil dari ekselusi program dengan menekan tombol Alt+F5. Perhatikan hasil eksekusi
progrgam dengan cermat, apa efek dari write dan writeln.

Deklarasi Variabel (identifier) dan Format Keluaran


Sebelum suatu variabel digunakan maka terlebih dahulu harus dipesan dalam blok
deklarasi variabel dengan bentuk :

Var NamaVar : Typevariabelnya;


NamaVar, NamaVar, … : Typevariabelnya;

Jika menggunakan variabel yang belum di deklarasikan maka saat program di RUN
(dikompilasi) akan menyebabkan kesalahan dengan muncul pesan “Unknown identifier”.
Selanjutnya variabel bisa diisi data dengan statemen assingment.

NamaVariabel := data;

:= adalah operator untuk pengisian variabel dengan nilai data.

Contoh program :
Program coba2;
var
a,b,c : integer;
p,q : real;

Halaman : 2
Modul Praktikum Algoritma dan Pemrograman I

z : string;
Begin
a := 5; b := 6; c:= a *
b;
p := 12.5; q := p-4;
z := 'EL RAHMA';
writeln(a,b,c);
writeln(p,q);
writeln(z)
end.

Output program diatas :

5630
1.2500000000E+01 8.5000000000E+00
EL RAHMA

Perhatikan output diatas 5630 adalah isi dari variabel a, b, dan c yang dicetak berdempetan.
sedangkan 1.2500000000E+01 dan 8.5000000000E+00 adalah isi dari variabel p dan q
yang dicetak tanpa format. Kita dapat memberikan format cetakkan dengan aturan :

NamaVariabel : w untuk variabel/data type integer atau string


Namavariabel : w : d untuk variabel/data tipe real

w adalah lebar medan cetak dan d adalah jumlah digit desimal dibelakang titik desimal.
Jika program diatas diubah menjadi :

Program coba3;
var
a,b,c : integer;
p,q : real;
z : string;
Begin
a := 5; b := 6; c:= a *
b;
p := 12.5; q := p-4;
z := 'EL RAHMA';
writeln(a,' ',b,' ',c);
writeln(p:5:2,'
',q:5:2);
writeln(z:10)
end.

Perhatikan perbedaan outputnya !

Deklarasi Type Variabel


Dalam PASCAL dikenal banyak type yang bisa digunakan untuk mendeklarasikan type suatu data.
Type Kisaran nilai
Type sederhana :
Byte 0 .. 255
Word 0 .. 65535
ShortInt -128 .. 127
Integer -32768 .. 32767
Longint -2147483648 .. 2147483648

Halaman : 3
Modul Praktikum Algoritma dan Pemrograman I

Real 1 E-38 .. 1 E+28


Single 1.5 E-45 .. 3.4 E+38
Double 5.0 E-324 .. 1.7E+308
Extended 1.9 E-4951 .. 1.1 E+4932
Boolean Kondisi True atau False
Char ‘a’, ‘b’, .., ‘z’, ‘0’ .. ‘9’  semua karakter
String ‘rangkaian karakter’
Type terstruktur :
Array larik karakter, numerik
Record numerik, string, char
File numerik, string, larik, record
Set data ordinal
Pointer alamat memori

Type diatas adalah type standard bawaan PASCAL (sudah didefinisikan oleh PASCAL).
Kita dapat membuat/mendefinisikan sendiri type sesuai dengan keinginan kita dengan cara
mendeklarasikan pada bagian type.

Bentuk :
Type
NamaTypeData = typedata;

selanjutnya NamaTypeData yang sudah kita definisikan bisa kita pakai sebagai type data
pada variabel yang kita gunakan.

Contoh :
Type
Bulat = Integer;
Pecah = Real;
Karakter = String;
Var
a,b,c : Bulat;
p,q : Pecah;
z : Karakter;

Operator
Dalam PASCAL dikenal beberapa operator antara lain : Operator aritmetika, Operator
string, Operator logika.

Operator aritmetika
/ pembagian
* perkalian
div pembagian integer
mod sisa hasil pembagian integer
+- tambah dan kurang
di dalam PASCAL tidak dikenal operator pangkat. apabila dibutuhkan dapat dibuat untuk
operasi pangkat.

operator string
Hanya ada satu operator string yaitu + yang artinya rangkai. Misalnya ‘Sistem’ +
‘Informasi’  ‘Sistem Informasi’.

operator logika
operator logika yang terpenting adalah NOT, AND dan OR
Deklarasi Konstanta

Halaman : 4
Modul Praktikum Algoritma dan Pemrograman I

Konstanta adalah suatu nilai yang tidak dapat diubah dalam tubuh program dan harus
dideklarasikan di bagian deklarasi konstanta sebagai berikut :

Const
NamaKonstanta1 = NilaiKonstanta;

Contoh program :
Untuk menghitung luas dan keliling lingkaran :

Program lingkaran;
const
phi = 3.14;
var
jari, luas, kel : real;

Begin
Jari := 10.0;
luas := phi * jari * jari;
kel := 2 * phi * jari;
writeln('H A S I L');
writeln('---------');
writeln('Jari-jari lingkaran :
',jari:6:2);
writeln('Luas lingkaran :
',luas:6:2);
writeln('Keliling lingkaran :
',kel:6:2);
end.

Komentar Program
Komentar adalah sesuatu yang tidak akan diproses pada saat program dijalankan.
Pemberian komentar ditandai dengan :

{komentar … komentar}

Dekalrasi Unit
Unit adalah suatu kumpulan prosedur dan fungsi yang disediakan oleh PASCAL yang
disesuaikan dengan tujuannya. Dalam PASCAL dikenal beberapa Unit standard antara lain
Crt, Dos, Graph, Printer, Dos.
Contoh Unit yang tersedia dalam Unit Crt :
Clrscr : Untuk membersihkan layar
GotoXY : Untuk memposisikan kursor pada kom X dan baris Yang di layar
Cara mendeklarasikan Unit adalah :

Uses NamaUnit, NamaUnit, …;

Halaman : 5
Modul Praktikum Algoritma dan Pemrograman I

Contoh program :

{ Contoh program menggunakan


Unit untuk mengambil prosedure
Clrscr dan GotoXY}
Program DenganUnit;
Uses Crt;
Begin
Clrscr;
GotoXY(34,13);write('TEKNIK
INFORMATIKA');
GotoXY(36,14);write('STMIK EL
RAHMA');
End.

Prosedure Read dan Readln


Procedure ini digunakan untuk membaca data dari keyboard dengan memakai variabel
yang sudah dideklarasikan dalam deklarasi variabel. Sintaxnya :

Read(NamaVariabel, NamaVariabel, …);


Readln(NamaVariabel, Namavariabel, …);
Read : Tidak akan menurunkan kursor setelah proses pembacaan
Readln : menurunkan kursor setelah proses pembacaan

Contoh program :
{
Contoh program menginputkan data
dengan perintah read atau readln
kemudian menampilkannya dengan
perintah write atau writeln
}
Program InputData;
uses Crt;
Var
no_mhs : integer;
nama, alamat : string;
Begin
clrscr;
write('Nomor mahasiswa : ');readln(no_mhs);
write('Nama Mahasiswa : ');readln(nama);
write('Alamat : ');readln(alamat);
clrscr;
write('Dia adalah ',nama);
writeln(' yang mempunyai nomor mahasiswa ',no_mhs);
writeln('beralamat di ',alamat,' Yogyakarta');
readln;
end.

Latihan Soal :
Buatlah algoritma, flow chart dan program untuk membaca cacah durian dan cacah orang.
Jika mangga dibagi, tiap orang mendapat berapa mangga dan berapa sisnya . Apakah
mangga tersebut habis dibagi atau tidak.

Halaman : 6
Modul Praktikum Algoritma dan Pemrograman I

Contoh Output :

Jumlah durian :8
Jumlah orang :3

Hasil Pembagian Durian


-------------------------------
Tiap orang mendapat : 3 mangga
Sisa mangga :2

Halaman : 7
Modul Praktikum Algoritma dan Pemrograman I

MODUL II
PENYELEKSIAN KONDISI
(1x pertemuan)

I. TUJUAN
Mempelajari struktur kondisi dalam PASCAL yaitu Struktur If … Then …, If … Then …
Else … dan Case … Of …

II. TEORI SINGKAT

If … Then … :

Statemen If … Then … mempunyai syntax :

If <syarat_logika> Then Statemen

Atau

If <syarat_logika> Then
Begin
Statemen1;
Statemen2; disebut blok statemen
…… ;
End;

<syarat_logika> adalah operasi relasi (seleksi kondisi) yang apabila bernilai TRUE
(benar) maka statemen atau blok statemen setelah Then akan dilaksanakan. Apabila
statemen yang berkaitan dengan nnilai TRUE lebih dari satu statemen maka blok statemen
dipergunakan, jika hanya terdiri dari satu statemen maka blok statemen tidak perlu
dipergunakan. Blok statemen ditandai dengan Begin …End;

Contoh : Akan dibaca dari keyboard nama siswa dan nilai angka. Akan ditentukan apakah siswa
tersebut lulus atau tidak, siswa lulus jika nilai angka lebih besar atau sama dengan 60.

Program TentukanLulus;
Uses Crt;
Var
NamaSis : String[35];
Nilai : Real;
Ket : String[25];
Begin
ClrScr;
Write('Nama Siswa :
');Readln(NamaSis);
Write('Nilai Angka :
');Readln(Nilai);
Ket := 'Anda Tidak Lulus';
If (Nilai >= 60) Then
Ket := 'Anda Lulus, SELAMAT !';
Writeln;
Writeln('Hasil : ',Ket);
Readln
End.
If … Then …Else … :

Halaman : 8
Modul Praktikum Algoritma dan Pemrograman I

Mirip dengan syntax If … Then, tata aturan if then else adalah :

If <syarat_logika> Then Statemen1 Else Statemen2;

Atau
If <syarat_logika> Then
Begin
Statemen1;
Statemen2; blok jika syarat True
… ;
End
Else
Begin
Statemen1;
Statemen2; blok jika syarat False
… ;
End;

Jika <syarat_logika> bernilai TRUE maka statemen atau blok statemen seteleh Then akan
dikerjakan, jika <syarat_logika> bernilai FALSE maka statemen atau blok statemen
seeleh Else akan dkerjakan.

Contoh : Pada conoth progrgam sebelumnya dapat kita tulis kembali dengan If … then …
Else … dan kita kerjakan dengan blok statemen dan program dapat kita buat
berputar dengan memakai deklarasi label.

Program TentukanLulus;
Uses Crt;
Label
Mulai;
Var
NamaSis : String[35];
Nilai : Real;
Ket,Pesan : String[35];
Jawab : Char;
Begin
Mulai :
ClrScr;
Write('Nama Siswa : ');Readln(NamaSis);
Write('Nilai Angka : ');Readln(Nilai);
If (Nilai >= 60) Then
Begin
Ket := 'Anda Lulus';
Pesan := ' SELAMAT, PERTAHANKAN TERUS !';
End
Else
Begin
Ket := 'Anda Tidak Lulus';
Pesan := ' TINGKATKAN BELAJARNYA, AWAS !!!!';
End;
Writeln;
Writeln('Hasil : ');
Writeln(Ket,Pesan);

Halaman : 9
Modul Praktikum Algoritma dan Pemrograman I

Writeln;
Write('Mau mencoba lagi [Y/T] ? ');Readln(jawab);
If (Jawab = 'Y') or (Jawab = 'y') Then
Goto mulai
End.

Statemen Case NamaVar Of :

Statemen Case NamaVar Of dipakai untuk penyeleksian berganda. NamaVar adalah nama
variabel yang harus bertype ordinal seperti Char, byte atau integer.
Padanan dengan If … Then , misalnya kita memiliki varibel Pil yang bertipe Char, dan
dihadapi seleksi pilihan :
If Pil = ‘a’ Then Statemen2;
If Pil = ‘b’ Then Statemen2;
Dst
Dapat ditulis dengan statemen Case … Of dengan syntax sbb :
Case Pil Of
‘a’ : Statemen1;
‘b’ : Statemen2;
.… : …;
End;

Program TekanTombol;
Uses Crt;
Label
Mulai;
Var
Tombol,
Jawab : Char;
Begin
Mulai:
ClrScr;
Writeln('PROGRAM TENTUKAN TOMBOL');
Writeln('-----------------------');
Write('Tekan Sembarang TOMBOL : ');
Readln(Tombol);
Case Tombol Of
'a'..'z','A'..'Z' : Begin
Writeln('Anda menekan tombol ',Tombol);
Writeln('Tombol ',Tombol,' Termasuk HURUF');
End;
'0'..'9' : Begin
Writeln('Anda menekan tombol ',Tombol);
Writeln('Tombol ',Tombol,' Termasuk ANGKA');
End;
Else
Begin
Writeln('Anda menekan tombol ',Tombol);
Writeln('Tombol ',Tombol,' Bukan
HURUF/ANGKA');
End;
End;
Write('Mau mencoba lagi [Y/T] ? ');Readln(jawab);
If (Jawab = 'Y') or (Jawab = 'y') Then

Halaman : 10
Modul Praktikum Algoritma dan Pemrograman I

Goto mulai
End.

Contoh Soal :
Buatlah algoritma dan program untuk menentukan jumlah hari dalam suatu bulan tertentu
jika dimasukkan dari keyboard angka bulan dan angka tahun.

PEMECAHAN
Pembahasan :
Jika dimasukkan angka bulan dari keyboard maka angka yang sah masuk adalah 1 .. 12 dan
bertipe integer. Tahun yang boleh masuk dapat terdiri dari dua angka atau empat angka.
Jika tahun dua angka berarti tahun < 100 dan jika tahun 4 angka berarti tahun > 1000.
Tahun tidak mungkin dimasukkan 3 angka. Selanjutnya dicek apakah tahun habis dibagi 4,
jika habis berarti tahun kabisat dan jumlah hari untuk bulan februari adalah 29. Selanjutnya
cetak hari sesuai bulan.
Algoritma :
 Baca angka tahun, cek apakah angka tahun < 100 atau > 1000 jika tidak ulangi baca
tahun.
 Baca angka bulan, cek apakah angka bulan 1 .. 12, jika tidak ulangi baca angka bulan.
 * Jika angka bulan 1,3,5,7,8,10,12 jumlah hari 31
* Jika angka bulan 4,6,9,11 jumlah hari 30
* Jika angka bulan 2 jumlah hari 28 (jika bukan kabisat), 29 (jika tahun kabisat)
 Cetak jumlah hari

Program
Program TentukanHari;
Uses Crt;
Label
Awal, Baca1, Baca2;
Var
TH, BL, JH : Integer;
Lagi : Char;

Begin
Awal:
ClrScr;
GotoXY(20,5);Write('PROGRAM TENTUKAN JUMLAH HARI');
GotoXY(20,6);Write('----------------------------');
Baca1:
GotoXY(20,8);Write('Masukkan Angka Tahun : ');Readln(TH);
If Not( (TH<100) Or (TH>=1000) ) Then
Begin
GotoXY(20,8);Clreol;
Write(#7);Goto Baca1;
End;
Baca2:
GotoXY(20,9);Write('Masukkan Angka Bulan : ');Readln(BL);
If ( (BL<1) Or (BL>12) ) Then
Begin
GotoXY(20,9);Clreol;
Write(#7);Goto Baca2;
End;
Case BL Of
1,3,5,7,8,10,12 : JH := 31;
4,6,9,11 : JH := 30;

Halaman : 11
Modul Praktikum Algoritma dan Pemrograman I

2 : Begin
If (Th mod 2 = 0) Then
JH := 29
Else
Jh := 28;
End;
End;
GotoXY(20,12);Write('Jumlah Hari = ',JH);
GotoXY(20,15);Write('Main Lagi [Y/T] ? ');Readln(Lagi);
If (Lagi = 'Y') Or (Lagi = 'y') Then
Goto Awal;
End.

Latihan Soal :
Buatlah algoritma,flow chart dan program untuk menghitung luas berbagai bangun yang
dikontrol prosesnya dengan Case NamaVar Of
Output dari Program :

PILIHAN PROSES
-----------------------
1. Luas Segi Empat
2. Luas Segi Tiga
3. Luas Lingkaran
4. Selesai

PILIHAN ANDA [1-4] :

Halaman : 12
Modul Praktikum Algoritma dan Pemrograman I

MODUL III
LOOPING (PERULANGAN)
(1 x pertemuan)

I. TUJUAN
Mempelajari struktur dari statemen kontrol PASCAL untuk menangani proses berulang
yaitu : For .. Do, While.. Do, dan Repeat .. Until.

III.TEORI SINGKAT
For .. Do ..

Syntax for .. Do

For NamaVarKendali := Awal to Akhit Do


Pernyataan;
Atau
For NamaVarKendali := Awal to Akhit Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan

End;
Atau
For NamaVarKendali := Awal Downto Akhit Do
Pernyataan;
Atau
For NamaVarKendali := Awal Downto Akhit Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan

End;
Statemen/pernyataan atau blok pernyataan akan dikerjakan selama nilai dari
NamaVarKendali dari Awal ke Akhir dengan kenaikan/penurunan satu langkah. Jika Awal
lebih kecil Akhir kita pakai to, sedangkan jika Awal lebih besar Akhir kita pakai downto.
NamaVarKendali adalah idetifier yang bertype ordinal seperti byte, integer atau char dan
tidak dapat bertype string atau real. Berikut adalah program untuk mencetak karakter mulai
dari awal sampa akhir dan dari akhir sampai awal, diman awal dan akhir dinputkan dari
keyboard. Awal, akhir bertype char.

Program CetakKarakter;
Uses Crt;
Var
Awal, Akhir, Karak : Char;
Begin
Clrscr;
Write('Karakter awal :
');Readln(Awal);
Write('Karakter akhir :
');Readln(Akhir);
writeln;
Write('N A I K : ');
For Karak := Awal to Akhir Do

Halaman : 13
Modul Praktikum Algoritma dan Pemrograman I

Write(karak);
Writeln;
Write('T U R U N : ');
For Karak := Akhir downto Awal Do
Write(karak);
Readln
End.

contoh diatas adalah jika statemen yang diulang tunggal, yaitu hanya Write(karak).
Cobalah jika awal diisi dengan ‘1’ san akhir diisi dengan ‘z’, apa ourputnya. Cobalah jika
write(karak) diganti writeln(karak), apakah ada perubahan, bagaiman penjelasannya.
Sering kita temukan bahwa pernyataan yang akan dulang bukan tunggal, tetapi banyak
sehingga kita harus memakai blok pernyataan.

While .. Do ..

Kontrol For .. Do .. kita pakai untuk memproses dengan jumlah ulangan diketahui
sebelumnya. Apabila proses yang diulang tidak kita ketahui berapa putaran harus
dilakukan, yaitu diputar selam kondisi tertentu dipenuhi, maka statemen yang kita pakai
adalah While .. Do ..
Syntaxnya :
While <syarat_logika> Do
<pernyataan>;
atau
While <syarat_logika> Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan

End;
<syarat_logika> adalah suatu relasi yang selama relasi tersebut bernilai benar (TRUE)
maka pernyataan/blok pernyataan akan terus menerus dikerjakan. Pernyataan/blok
pernyataan akan berhenti dikerjakan jika <syarat_logika> tidak lagi bernilai benar.
Contoh berikut akan mencetak karakter ‘*’ terus menerus pada posisi baris kolom yang
acak, setiap kita menekan suatu sembarang tombol. Proses berulang selam yang dibaca <>
#27 (Esc).
Untuk meletakkan pada baris klo yang acak, setiap dipakai fungsi Random(x). Fuction
standar Random(x) adalah fungsi untuk membangkitkan bilangan acak antara nol sampai x.
Selanjutnya satu karakter dibaca dengan Procedure standar ReadKey, dengan syntak :
NamaVarKar := ReadKey;
Pembacaan data dari keyboard dengan ReadKey adalah untuk variabel bertype Char dan
bersifat tidak meng-echo-kan (menampilkan ke layar).

Program Acak_dg_While_Do;
Uses Crt;
Const
Escape = #27;
Var
Baca : Char;
Baris, Kolom : Byte;

Begin
Clrscr;

Halaman : 14
Modul Praktikum Algoritma dan Pemrograman I

Baca :=' ';


While Baca <> Escape Do
Begin
GotoXY(34,12);Write('Tekan Escape Selesai ...');
Baris := Random(23);
Kolom := Random(80);
GotoXY(Kolom,Baris);Write('*',' Kolom ',Kolom,' Baris
',Baris);
Baca := ReadKey;Clrscr;
End;
End.

#27 adalah konstanta karakter. Dalam PASCAL ada 2 macam cara untuk memperoleh
konstanta karakter, yaitu dengan #n atau Chr(n) dimana n = kode ASCII karakter yang
bersangkutan. Misalnya karakter CR (ENTER) mempunyai kode ASCII 13 dapat ditulis
dengan #13 atau Chr(13).

Repeat .. Until ..

Statemen Repeat .. Until .. kita pakai apabila kita akan mengulang-ulang suatu proses terus
menerus sampai kondisi tertentu dipenuhi.
Syntax :
Repeat
Pernyataan1;
Pernyataan2;

Until <kondisi>;
Pada contoh program diatas dapat kita modifikasi dengan memakai Repeat .. Until.
Konstanta boolean keyPressed adalah konstanta yang bernilai FALSE selama kita tidak
menekan sesuatu dan jika kita menekan sesuatu maka KeyPressed akan bernilai TRUE.

Program Acak_dg_Repeat_Until;
Uses Crt;
Var
Baris, Kolom : Byte;

Begin
Clrscr;
Repeat
GotoXY(34,12);Write('Tekan Escape Selesai ...');
Baris := Random(23);
Kolom := Random(80);
GotoXY(Kolom,Baris);Write('*',' Kolom ',Kolom,' Baris
',Baris);
Delay(10);
Until KeyPressed;
End.

Latihan Soal :
Buatlah algoritma, flow chart dan program pascal untuk membaca data numerik dari
keyboard. Data dibaca terus menerus sampai dimasukkan angka –999. Akhir program
ditampilkan jumlah dan rata-rata dari data yang dimasukkan.

Halaman : 15
Modul Praktikum Algoritma dan Pemrograman I

MODUL IV
TIPE ARRAY BERDIMENSI SATU
(1 x pertemuan)

I. TUJUAN
Mempelajari tipe terstruktur Array dimensi satu dan dimensi dua.

IV. TEORI SINGKAT


Array merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yang
bertipe sama, dimana masing-masing elemen array dapat diakses melalui indek array.

Arrray Dimensi Satur


Adalah array yang hanya memiliki satu tipe indek.
Deklarasi variabel bertipe array dimensi :
Var
NamaArray : Array{tipeIndek] of TypeArray;

NamaArray adalah nama variabel bertipe array dan TypeArray adalah tipenya. TypeArray
dapat berupa Integer, real, char, string atau record. Sedangkan tipeIndek dari array
merupakan tipe ordinal seperti char, byte, integer, atau enumerasi.
Contoh deklarasi tipe array :

Type
NanaArray = (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
Var
Hari : DafHari;
Incom : Array [DafHari] of integer;
Masuk : Array [senin .. kamis] of integer;

DafHari adalah NamaType enumerasi yang kita jadikan indeks dari array Incom dan
Masuk. Incom dan Masuk adalah array integer dengan indek enumerasi. Selanjutnya kita
dapat mengisi elemen array dengan Incom[senin] atau Masuk[rabu] dan seterusnya.
Data bertipe string sesungguhnya adalah suatu larik data bertipe char.
Misalnya :
Var
Pesan : string[20];
Variabel Pesan merupakan string. Kita juga bisa memandangnya sebagai larik char.
Pesan[1] adalah karakter pertama, Pesan[2] adalah karakter kedua, dst. Sedangkan
Pesan[0] adalah karakter yang kode ASCIInya adalah cacah karakter dari isi pesan.
Dengan demikian kita dapat mengetahui ada berapa cacah karakter isi dari Pesan dengan
Ord(Pesan[0]), disamping dapat juga dipakai fungsi Length(Pesan).
Contoh berikut adalah membaca variabel pesan yang bertipe string yang secara otomatis
dapat dipandang sebagai latik karakter dengan Ord(Pesan[0]) dapat diperoleh cacah
karakter yang disimpan dalam CcHuruf.

Contoh Program 1 :

Uses Crt;
Const
Vokal =
['A','I','U','E','O','a','i','u','e','o'];
Var
Huruf : char;
Pesan : string;

Halaman : 16
Modul Praktikum Algoritma dan Pemrograman I

i,CcHuruf,CcVokal : integer;
Begin
clrscr;
Write('Ketikkan Kalimat : ');
Readln(Pesan);
CcHuruf := Ord(Pesan[0]);
CcVokal := 0;
For i := 1 to CcHuruf Do
Begin
Huruf := Pesan[i];
If Huruf in Vokal then
CcVokal := CcVokal + 1;
End;
Writeln('DIBALIK');
For i := CcHuruf downto 1 do
write(Pesan[i]);
Writeln;
Write('VOKAL : ',CcVokal,' BUAH');
Readln
End.

Contoh Program 2 :

program Array_max_min;
var
nilai:array[1..5] of INTEGER;
maks,mins,total,i,data : integer;
rata : real;
begin
write('Jumlah Data = ');readln(data);
write('Data ke-1 = ');readln(nilai[1]);
maks :=nilai[1];
mins :=nilai[1];
total :=nilai[1];
for i := 2 to data do
begin
write('Data ke-',i,' = ');readln(nilai[i]);
if nilai[i]>maks then
maks:=nilai[i];
if nilai[i]<mins then
mins:=nilai[i];
total:=total+nilai[i];
end;
rata:=total/data;
writeln('Nilai terbesar adalah = ',maks);
writeln('Nilai terkecil adalah = ',mins);
writeln('Nilai total adalah = ',total);
writeln('Nilai rata-rata adalah = ',rata:0:2);
readln;
end.

Latihan Soal
Buatlah algoritma, flowchart dan program untuk mengurutkan suatu data angka yang
dimasukkan dari keyboard, secara urut menaik dan menurun. Gunakan variabel bertipe
array

Halaman : 17
Modul Praktikum Algoritma dan Pemrograman I

MODUL V
TIPE ARRAY BERDIMENSI DUA
(1 x pertemuan)

I. TUJUAN
Mempelajari tipe terstruktur Array dimensi satu dan dimensi dua.

V. TEORI SINGKAT
Array merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yang
bertipe sama, dimana masing-masing elemen array dapat diakses melalui indek array.

Arrray Dimensi Dua


Adalah array yang memiliki dua tipe indek.
Deklarasi variabel bertipe array dimensi dua :
Var
NamaArray : Array{tipeIndek1,tipeIndek2] of TypeArray;
Contoh deklarasi :

Contoh Prog02_1 :
Program berikut contoh penggunaan array dimensi dua untuk menampung 4 jumlah mahasiswa
pada 3 angkatan, betulkan jika masih terdapat kesalahan :
Prog Tabel_Mahasiswa;
Use Crt;
Conts
Jum_Tahun= 3;
Jum_Mhs = 4;
Tipe
TabelMhs = Arrai[1..Jum_Mhs,1..Jum_Tahun] Of
Integer;
Var
DafMhs : TabelMhs;
Mhs,Tahun : Integer;
Begin
ClsRcr;
{--Memasukkan data--}
For Mhs = 1 To Jum_Mhs Do
Begin
Writeln('Mahasiswa ',Mhs);
For tahun = 1 To Jum_Tahun Do
Begin
Write(' Tahun ',Tahun,' = ');
Readln(DafMhs[Mhs,Tahun]);
End
End;
{--Menampilkan Data--}
Writeln('Daftar Jumlah Mahasiswa El Rahma”);
Writeln('Mahasiswa Tahun 1 Tahun 2
Tahun 3');
For Mhs = 1 To Jum_Mhs Do
Begin
Write(Mhs:6);
For Tahun := 1 To Jum_Tahun Do
Write(DafMhs[Mhs,Tahun]:14)
Write;
End;

Halaman : 18
Modul Praktikum Algoritma dan Pemrograman I

Readln
End.

Penggunaan secara umum untuk matrik dua dimensi adalah untuk memasukkan data matrik.
Berikut penggalan program untuk memasukkan data matrik dengan ordo 2 x 2
Prog Matrik2Dimensi;
Use Crt;
var
Matrik : Array[1..10,1..10] Of integer;
Baris,Kolom : Integer;
Begin
ClsRcr;
{-Memasukkan data matrik-}
For Baris := 1 to 2 Do
Begin
For kolom := 1 to 2 Do
Begin
Write('Baris ',Baris,' Kolom ',Kolom,' : ');
Readln(Matrik(Baris,Kolom));
End;
End
{--Menampilkan Hasil--}
For Baris := 1 to 2 Do
Begin
For kolom := 1 to 2 Do
Begin
Write(Matrik(Baris,Kolom):5);
End;
End;
Readln
End.

Latihan Soal :
Buatlah algoritma, flowchart dan progam untuk menghitung penjumlahan dua buah matrik.
Syarat penjumlahan dua buah matrik adalah kedua matrik tersebut mempunyai jumlah
baris dan kolom yang sama.
Misalnya :

1 2 2 2 3 4
+ =
2 3 3 2 5 5

Halaman : 19
Modul Praktikum Algoritma dan Pemrograman I

MODUL VI
PROCEDURE DAN FUNGSI
(2x pertemuan)

I. Tujuan
Mempelajari pemecahan program ke dalam modul-modul program dalam bentuk prosedur
dan fungsi

II. Teori Singkat

a. PROCEDURE
Procedure merupakan sub program yang berdiri sendiri yang dapat dipanggil dari
program utama.

Deklarasi prosedur :
PROCEDURE <Nama_prosedur> (<Daftar_parameter_formal>);
<Bagian_deklarasi>
Begin
<Bagian _pernyataan>
End;
Dalam prosedur atau fungsi dikenal adanya parameter. Parameter adalah suatu nilai
atau variabel yang akan dilewatkan dalam prosedur atau fungsi. Pengiriman paramter
dalam prosedur atau fungsi dibedakan menjadi 2 yaitu parameter nilai dan parameter
referensi. Pelewatan parameter secara nilai dimaksudkan jika parameter yang dileatkan
dimasudkan tidak untuk diubah oleh prosedur atau fungsi sekalipun perubahan telah
terjadi di dalam prosedur atau fungsi tersebut. Sedangkan parameter referensi
dimasudkan unutk mengubah nilai atau variabel sekeluarnya dari prosedur atau fungsi.
Perbedaan cara pengiriman parameter didalam prosedur atau fungsi terletak pada
deklarasi prosedur atau fungsinya. Contoh deklarasi prosedur dengan pengiriman
parameter secara refensi :

Procedure Tukar(var x,y : real);

Untuk mengubah sifat pengiriman parameter secara nilai, tinggal diubah deklarasi
prosedur dengan menghilangkan var dalam kepala prosedur sehingga menjadi :

Procedure Tukar(x,y : real);

Berikut contoh program pemakaian untuk menukarkan dua nilai memakai prosedure :
Contoh :
PROG3_01.PAS contoh program menukarkan data dengan prosedur
program tukar_data;
var
a, b : real; {deklarasi variabel global}

procedure info;
begin
writeln('****************************');
writeln('** Program Tukar Data **');
writeln('** Dengan Procedure **');
writeln('** Oleh : **');
writeln('** Ki Joko Bodho **');
writeln('****************************');
end;
{Prosedur penukaran data}

Halaman : 20
Modul Praktikum Algoritma dan Pemrograman I

procedure tukar(var x,y : real);


var
tamp : real;
begin
tamp := x;
x := y;
y := tamp;
end;
{Program utama}
Begin
info;
a := 12.33;
b := 67.98;
writeln('Sebelum memanggil prosedur Tukar');
writeln('a = ',a:7:2,' b = ',b:7:2);
tukar(a,b);
writeln('Setelah memanggil prosedur Tukar');
writeln('a = ',a:7:2,' b = ',b:7:2);
readln;
End.
Contoh diatas pengiriman parameter dilakukan secara referensi, cobalah program diatas
diubah pengiriman parameter dalam prosedur secara nilai!

b. FUNCTION
Fungsi memiliki struktur yang hampir sama dengan procedure, bedanya fungsi
memiliki tipe hasil sedangkan procedure tidak.

Deklarasi fungsi :
FUNCTION <Nama_fungsi> (<Daftar_parameter>): tipe;
<Bagian_deklarasi>
Begin
<Bagian _pernyataan>
End;

Contoh :
PROG2_02.PAS contoh program perkalian dengan fungsi
program kali_data;
var
a, b : integer; {deklarasi variabel global}

procedure info;
begin
writeln('****************************');
writeln('** Program Tukar Data **');
writeln('** Dengan Procedure **');
writeln('** Oleh : **');
writeln('** Ki Joko Bodho **');
writeln('****************************');
end;
{Prosedur peerkalian data}
function kali(x,y : integer):integer;
begin
kali := x * y;
end;
{Program utama}

Halaman : 21
Modul Praktikum Algoritma dan Pemrograman I

Begin
info;
a := 12;
b := 67;
writeln(a,' x ',b,' = ',kali(a,b));
writeln('12 x 13 = ',kali(12,13));
readln;
End.

c. LATIHAN SOAL :
(Program yang anda buat harus dipecah dalam prosedur dan fungsi!!!!!!)
1. Buatlah program dengan menggunakan prosedur untuk
membalik suatu angka
Misalnya :
Masukkan angka : 12309
Hasil pembalikan : 90321

2 Buatlah program dengan menggunakan fungsi untuk mencari jumlah dan rata-rata
dari sejumlah data yang dimasukkan.

Halaman : 22
Modul Praktikum Algoritma dan Pemrograman I

MODUL VII
REKURSI
(1 x pertemuan)

I. Tujuan
Mempelajari proses rekursi dalampenggunaan prosedur dan fungsi

II. Teori Singkat


Rekursi adalah suatu prosedur atau fungsi yang dapat memanggil dirinya sendiri. Contoh
dari rekursi adalah proses menghitung faktorial dan proses menghitung bilangan fibonacci.
Program berikut menunjukkan contoh penggunaan rekursi yang identik dengan suatu
perulangan.
Prog4_01.pas
Program rekursi;
var
i : integer;

procedure ulang;
begin
writeln(i,'. Tulisan ini akan tercetak 10 kali');
if i < 10 then
begin
i := i + 1;
ulang;
end;

end;

begin
i := 1;
ulang;
readln
end.
Perhatikan hasil dari eksekusi program diatas. Terlihat bahwa di dalam prosedur ulang
terdapat baris perintah yang berfungsi untuk memanggil dirinya sendiri sebelum i = 10.
Contoh program berikut merupakan contoh rekursi untuk perhitungan suatu nilai faktorial.
Prog4_02.prg
Var
i : byte;
function Faktorial(m:byte):longint;
begin
if m = 0 then
faktorial := 1
else
faktorial := m * Faktorial(m - 1)
end;

begin
for i := 1 to 8 do
writeln(i:2,'! = ',Faktorial(i));
readln
end.
Perhatikan hasil tampilan dari program diatas, modifikasi program dengan bilangan yang
akan difaktorialkan diinputkan dari keyboard, sehingga menghasilkan tampilan seperti
berikut :

Halaman : 23
Modul Praktikum Algoritma dan Pemrograman I

Masukkan anngka :5
Hasi faktorial :
3 x 4 x 3 x 2 x 1 = 120
Contoh program berikut merupakan contoh rekursi untuk menghitungan bilangan fibonnaci
Prog4_03.prg
Var
suku, nilai : integer;
function fibo(n:integer):longint;
begin
if (n=1) or (n=2) then
fibo:=1
else
fibo := fibo(n-1)+fibo(n-2);
end;

begin
for suku := 1 to 10 do
writeln(suku:3,fibo(suku):8);
readln
end.
Soal latihan :
Ubahlah ketiga contoh program diatas tanpa menggunakan rekursi, tetapi menghasilkan
output yang sama.

Halaman : 24
Modul Praktikum Algoritma dan Pemrograman I

MODUL VIII
RECORD
(2 x pertemuan)

I. Tujuan
Mempelajari penggunaan tipe data terstruktur record pada pascal

II. Teori Singkat


Record merupakan tipe berstruktur yang memiliki beberapa komponen atau elemen dengan
masing-masing elemen boleh memiliki tipe data yang berlainan.
Bentuk deklarasi variabel record :
RECORD
Daftar_field_1 : tipe_1;
Daftar_field_2 : tipe_2;

Daftar_field_n : tipe_n;
END;
Masing-masing elemen dari record disebut dengan field. Masing-masign field dapat berupa
tipe apa saja termasuk array.
Contoh deklarasi :
Type
RecBarang = RECORD
Nama :
string;
Banayk :
integer;
Harga :
LongInt;
End;
Var
Barang : RecBarang;

Cara Mengakses field


Bentuk :

Variabel.field

Contoh :
Barang.Nama;
Berarti field nama dari variabel record benama barang.
Contoh lain :
Barang.Nama := ‘Sabun Mandi’;
Field Nama pada record Barang diisi string ‘Sabun Mandi’
Contoh program :
Program contoh_record;
Type
Recbarang = RECORD
Nama_B : string[8];
Jumlah : Integer;
Harga_b : LongInt;
End;
Var
Barang : Recbarang;
Begin
{Memasukan data ke dalam record

Halaman : 25
Modul Praktikum Algoritma dan Pemrograman I

barang}
Barang.Nama_b := 'Baju koko';
Barang.Jumlah := 10;
Barang.Harga_b := 200000;
{Menampilkan isi field record}
Writeln('Nama Barang :
',Barang.Nama_b);
Writeln('Jumlah Barang :
',Barang.Jumlah);
Writeln('Harga Barang :
',Barang.Harga_b);
End.

Record di dalam record.


Mungkin saja sebuah record berisikan record saja. Sebagai contoh :
Type
RecTgl = RECORD
Tgl,
Bln,
Thn : Integer;
End;
RecPegawai = RECORD
Nmr : Integer;
Nama : String[35];
TgLahir : RecTgl;
Gaji : LongInt;
End;
Var
DataPeg : RecPegawai;
Begin
{Mengisikan nilai terhadap field-field}
DataPeg.Nmr := 123;
DataPeg.Nama := 'Joko Bodho';
DataPeg.TgLahir.Tgl := 13;
DataPeg.TgLahir.Bln := 10;
DataPeg.TgLahir.Thn := 1975;

{menampilkan isi field}


Writeln('Nomor : ',DataPeg.Nmr);
Writeln('Nama : ',DataPeg.Nama);
Writeln('Tanggal Lahir : ',DataPeg.TgLahir.Tgl,
'/',DataPeg.TgLahir.Bln,'/',DataPeg.TgLahir.Thn);
readln;
End.

Pernyataan WITH
Untuk menyederhanakan pernyataan seperti
DataPeg.TgLahir.Tgl
Pascal menyediakan pernyataan WITH, dengan bentuk :
WITH nama_record Do
<pernyataan>
Pada bentuk ini field-field yang terletak pada pernyataan dapat disebutkan tanpa menyertakan lagi
nama recordnyadan tanda titik. Untuk jelasnya pada contoh program pertama akan dimodifikasi
dengan pernyataan WITH :
Program contoh_record;

Halaman : 26
Modul Praktikum Algoritma dan Pemrograman I

Type
Recbarang = RECORD
Nama_B : string[10];
Jumlah : Integer;
Harga_b : LongInt;
End;
Var
Barang : Recbarang;
Begin
{Memasukan data ke dalam record barang}
Barang.Nama_b := 'Baju koko';
Barang.Jumlah := 10;
Barang.Harga_b := 200000;
{Menampilkan isi field record}
WITH Barang Do
begin
Writeln('Nama Barang : ',Nama_b);
Writeln('Jumlah Barang : ',Jumlah);
Writeln('Harga Barang : ',Harga_b);
End;
readln;
End.

Latihan Soal :
Buatlah algoritma, flowchart dan progam untuk memasukkan sejumlah data nilai
mahasiswa dalam bentuk record. Data yang dimasukkan adalah Nim, Nama, Nilai UTS,
Nilai UAS, Nilai Tugas. Setelah semua data dimasukkan, semua data ditampilkan dalam
bentuk tabel yang diurutkan secara descending berdasarkan nilai rata-rata tiap mahasiswa,
kemudian konversi nilai rata-rata ke dalam nilai angka dengan aturan.
Rata-rata >= 80 nilai huruf A keterangan Lulus
Rata-rata >= 70 nilai huruf B keterangan Lulus
Rata-rata >= 60 nilai huruf C keterangan Lulus
Rata-rata >= 50 nilai huruf D keterangan Tidak Lulus
Rata-rata < 50 nilai huruf E keterangan Tidak Lulus
Contoh output program :
Jumlah Data : 2
Data ke-1
N I M : 11010001
N a m a : Jono
Nilai UTS : 50
Nilai UAS : 50
Nilai TUGAS : 50
Data ke-1
N I M : 11010002
N a m a : Hari
Nilai UTS : 90
Nilai UAS : 90
Nilai TUGAS : 90
H A S I L P R O S E S

No NIM Nama Rata Huruf Keterangan


1 11010002 Hari 90 A Lulus
2 11010001 Jono 50 D Tidak Lulus

Halaman : 27

You might also like