You are on page 1of 38

MODUL PRAKTIKUM

PEMROGRAMAN I
( Turbo Pascal ver 7.0 )
Edisi 2

Oleh :
Andi Widiyanto, M.Kom

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MAGELANG
2013
WINNER or LOOSER DAFTAR PUSTAKA

Winner is always a part of Abdul Kadir, Dasar-dasar Pemrograman Pascal, Andi Yogyakarta
solutions Agus Muhardi – Alga Musa, Modul Pemrograman Pascal/D3, didownload
Looser is always a part of pada 17 Oktober 2013 http://beringinbook.mdl2.com
problems
DhrMuiz, Pemrograman Pascal, didownload pada 17 Oktober 2013
http://imam_muiz.staff.gunadarma.ac.id
Winner sees answer in every
problem Inggriani Liem, Contoh Program Kecil Dalam Bahasa Pascal, Dept. TI, FTI
ITB, 1999
Looser sees problem in every
answer Pascal 2006 Team, Modul Praktikum Pemrograman Pascal, STIKI, 2006

Tutorial Turbo Pascal 7.0, http://salimkita.blogspot.com


Winner always says, “It’s
difficult, but it’s possible” Berbagai sumber dari internet
Looser always says, “It’s possible,
but it’s difficult”

TYPEWRITER or PROGRAMMER

Typewriter says “ Just type exactly same as the modul


So, You’ll never get problem “
Programmer says “ Type N modify the modul
So, You’ll get satisfaction journey “

Typewriter sees ‘error’ is the finish


Programmer sees ‘error’ is the start
data “ tugas.txt
tugas ” kemudian pack file source dan file data
(siswa.pas/guru.pas
pas/guru.pas, tugas.txt) menjadi ppascal-<npm>.zip
ppascal dan KATA PENGANTAR
kirim ke indypink77.kuliah@gmail.com misalnya NPM 10.0502.0001
maka file yang dikirim ppascal-10.0502.0001.zip
Alhamdulillah segala puji bagi allah swt. yang telah melimpahkan kekuatan
dan hidayahnya sehingga penyusunan modul praktikum Pemrograman I
(Turbo Pascal ver 7.0) edisi 2 bisa diselesaikan sesuai dengan jadwal yang
telah direncanakan, untuk memperbaiki edisi sebelumnya.
Pada prinsipnya komputer digunakan untuk membantu manusia melalui
rangkaian baris perintah. Penulisan baris perintah ini diatur dalam sebuah
bahasa pemrograman. Bahasa pemrograman digunakan untuk membuat
rangkaian perintah yang nantinya bisa dijalankan di komputer atau dikenal
dengan nama program. Turbo Pascal adalah salah satu bahasa
pemrograman yang banyak digunakan. Jenis bahasanya menggunakan
bahasa tingkat tinggi yang mudah dipahami. Sehingga bisa menjadi salah
satu pilihan bagi yang masih tahap awal belajar pemrograman.
Namun penyusun menyadari masih banyak kelemahan dan kekurangan dari
modul ini. Kritik dan saran yang sifatnya membangun sangat diharapkan oleh
penyusun demi lebih baiknya modul praktikum pada masa yang akan datang.

Magelang, Oktober 2013


Penyusun

70
4. kemudian compile Alt-C lalu tekan ENTER atau Alt-F9
DAFTAR ISI

Pertemuan I Pengenalan Bahasa Pascal 1


Pertemuan II Dasar Pemrograman dan Tipe Data Pascal 8
Pertemuan III Struktur Kendali Seleksi/Percabangan 13
Pertemuan IV Operasi Looping/Perulangan 20
Pertemuan V Fungsi dan Prosedur 27
Pertemuan VI Array 35
Pertemuan VII Pointer 39
Pertemuan VIII Record 43
Pertemuan IX Graphic 48 5. jika tidak ada kesalahan jalankan, Alt-R lalu tekan ENTER atau Ctrl-

Pertemuan X Membuat Unit Sendiri 55 F9

Pertemuan XI Operasi File Biner 60


Pertemuan XII Operasi File Teks 66

E. Tugas Praktikum (dikumpulkan akhir sesi)


Program diatas untuk isi data melalui sebuah looping for gantilah
dengan perintah masukan ‘isi data lagi ? [Y/T]’ silahkan dibuat dan
buatlah tampilan dengan kreasi anda sendiri

F. Tugas Rumah (dikumpulkan SEBELUM TES AKHIR SEMESTER)


Buat program tentang pengelolaan data
 Data Siswa (mahasiswa Nomor terakhir NPM ganjil)
 Data Guru (mahasiswa Nomor terakhir NPM genap)
Menu pilihan meliputi Add, Show, Quit. Menu dibuat dengan
pemanggilan fungsi/procedure atau perintah goto. File untuk menyimpan

69
BAB I
{ =============== ini lnjutannya ==================== }
PENGENALAN BAHASA PASCAL
begin
for i:= 1 to N do
begin
{input data dulu } A. Kompetensi Dasar :
with datamhs[i] do Mahasiswa mengenal dasar pemrograman Pascal
begin
clrscr;
Write('Masukkan NPM : ');
Readln(npm); B. Tujuan :
Write('Masukkan Nama : '); 1. Mahasiswa mengenali dan mengoperasikan Pascal
Readln(nama);
Write('Masukkan Alamat : '); 2. Mahasiswa mampu membuat program sederhana dengan Turbo
Readln(alamat);
end; Pascal
end;
3. Mahasiswa bisa meng-compile source code menjadi sebuah program
{simpan ke file} executable
Assign(F,'c:\test.txt');
Rewrite(F);
Write(F,datamhs);
Close(F);
C. Teori Singkat
Pascal merupakan suatu bahasa komputer tingkat tinggi yang
{buka dari file}
Assign(F,'c:\test.txt'); dibuat sekitar tahun 1970 oleh Dr. Niklaus Wirth dari Swiss Federal
Reset(F);
Read(F,datamhs); Institute of Technology (EidgenOssische Technishe Hochshule, Zurich,
Close(F); Swiss). Nama Pascal diambil dari seorang Matematikawan Perancis,
{tampilkan} Blaise Pascal. Sekitar usia 18 tahun, pada tahun 1641, menyusun sebuah
clrscr;
for i := 1 to N do mesin aritmatika pertama yang diyakini sebagai generasi komputer
begin
pertama.
Write(datamhs[i].npm);
Write(' ',datamhs[i].nama); Pascal adalah bahasa pemrograman terstruktur yang membagi
Writeln(' ',datamhs[i].alamat);
end; program dalam bentuk sejumlah blok. Tujuannya adalah untuk

Readln;
memudahkan dalam pembuatan dan pengembangan program. Bahasa
end. Pascal juga “sangat mirip bahasa sehari-hari” membuatnya sangat mudah
untuk memahami kode-kode yang tertulis. Sehingga Pascal termasuk
Bahasa tingkat tinggi (high-level language)

68 1
Secara langsung, microprocessor hanya dapat menjalankan Listing program diatas pada waktu di-compile akan sukses akan
bahasa mesin. Komputer tidak bisa mengerti rangkaian perintah kita tetapi jika dijalankan dan file test.txt tidak ditemukan di c:\ maka akan
dengan bahasa kita sehingga untuk memberikan perintah dibutuhkan muncul pesan error. Contoh program diatas digunakan untuk
sebuah interpreter/compiler yang bertugas untuk menterjemahkan menampilkan isi dari sebuah file text yang sudah ada sebelumnya
perintah kita sehingga dimengerti oleh komputer sehingga terbentuklah (reset(var_teks)). Variable var_teks merupakan identifier koneksi ke
sebuah program. file c:\test.txt. Sehingga semua perintah yang menyertakan var_teks
Standarisasi perintah-perintah tersebut dalam bentuk program- berarti akan berhubungan dengan file test.txt.
program bahasa rakitan/programming language yang nantinya akan
dirakit atau diterjemahkan ke dalam bahasa mesin. Perintah-perintah
tersebut ditulis dalam bahasa tingkat tinggi yang lebih bisa dimengerti
oleh manusia, kemudian diterjemahkan ke dalam bahasa mesin sebelum
dapat dijalankan. Proses penerjemahan ini dikatakan sebagai meng-
compile sebuah program. Program yang menjalankan proses
penerjemahan disebut sebagai compiler. D. Langkah Kerja
Tiga istilah mendasar pada bahasa pemrograman yang perlu 1. klik kanan start  explore kemudian cari TPX.EXE atau TURBO.EXE
diingat adalah: pada folder install Turbo Pascal (misalnya di folder C:\TP\BIN\)
Source code – adalah kode yang ditulis. Secara khusus, kode ini 2. double klik pada TPX.EXE atau TURBO.EXE (atau klik file-nya lalu
memiliki extension yang menunjukkan bahasa yang digunakan. tekan ENTER)
Sebagai contoh, source code Pascal diakhiri dengan ".pas" dan 3. tekan Alt-F-N ketikkan source code berikut ini kemudian simpan (F2)
bahasa C++ diakhiri degan ".cpp" dengan nama cfiletx.pas
Object code – adalah hasil dari proses meng-compile. Object code program data_mhs;
uses crt;
biasanya hanya meliputi satu modul dari sebuah program dan tidak const
N = 5;
dapat dijalankan karena belum lengkap. Pada sistem operasi type
DOS/Windows, kode ini biasanya memiliki ektensi ".obj". tmhs = record
npm : string[8];
Executable code – adalah hasil akhir dari program tertulis yang dapat nama : string[20];
alamat : string;
dijalankan. Seluruh modul object code yang diperlukan bagi end;
dtmhs = array[1..N] of tmhs;
berfungsinya sebuah program dihubungkan secara bersama. Pada
var
sistem operasi DOS/Windows, kode ini biasanya memiliki ektensi F : File of dtmhs;
datamhs : dtmhs;
".exe" atau “.com” . i : integer;
(* Masih ada lanjutan dibawah loh !!! *)

2 67
BAB XII Pascal sebagai bahasa pemrograman terstruktur memiliki

OPERASI FILE TEKS beberapa bagian sebagai berikut:


Program Heading yang Judul program dalam Turbo Pascal bersifat
optional dan tidak ada pengaruhnya dalam program. Jika ditulis akan
A. Kompetensi Dasar :
memberikan nama program dan suatu daftar parameter optional
Mahasiswa memahami penyimpanan data ke sebuah file teks
dimana program itu berkomunikasi. Daftar itu terdiri dari sederetan
B. Tujuan :
indentifier yang diakhiri dengan tanda kurung dan dipisahkan dengan
1. Mahasiswa memahami dan membuat sebuah struktur/tipe data baru
tanda koma.
yang akan digunakan untuk table
Uses Clause digunakan untuk menentukan library yang dibutuhkan saat
2. Mahasiswa memahami dan menggunakan record
proses program. LIBRARY merupakan file penyimpan subroutine
3. Mampu membuat program yang dihubungkan dengan sebuah file teks
yang secara berulang digunakan saat proses program. Library ini
diistilahkan sebagai unit dalam Turbo PASCAL yang terdiri dari
C. Teori Singkat
SYSTEM, OVERLAY, GRAPH, DOS, CRT yang ditempatkan dalam
File teks adalah file yang pola penyimpanan datanya dalam
file TURBO.TPL. Unit SYSTEM merupakan unit yang secara
bentuk karakter, sehingga bisa dibuka dengan notepad atau dengan
otomatis akan disertakan dalam setiap program, unit inilah mengatur
perintah type pada command prompt. Berbeda dengan tipe file biner
semua perintah dasar input dan output pada Pascal . Sedangkan
yang tidak bisa dibaca langsung seperti teks.
unit-unit lain hanya akan disertakan bila kita pilih pada bagian uses.
Perintah operasi file teks sama dengan perintah operasi file
Declaration, bagian ini meliputi deklarasi untuk label, const, type, var,
biner. Hanya saja file teks yang dihasilkan dapat dibuka dan di edit
procedure dan function. Setiap deklarasi tersebut harus bersifat
dengan program lain misalnya notepad
unik (tidak boleh serupa satu sama yang lain). Penulisannya panjang
Contohnya sebagai berikut:
nama maximum 63 character, diawali dengan alphabet tidak ada
Program membaca_file_text;
Uses crt; special character kecuali tanda garis bawah ("_"), tidak boleh serupa
Var var_teks:TEXT; { deklarasi variable file }
Pesan:string; dengan reserved word (kata tercadang), tidak boleh serupa dengan
Begin indentifier lainnya.
Clrscr;
Assign(var_teks,’c:\test.txt’); { mengarahkan ke file test.txt difolder c:\ } Variable Declaration, setiap variabel yang digunakan dalam program
Reset(var_teks); { membuka koneksi file mode membaca }
While not eof (var_teks) do { selama posisi tidak diakhir file }
harus didefinisikan terlebih dahulu sebelum digunakan.
Begin Statement, Bagian ini merupakan inti dari program. Seluruh perintah dan
Readln ( var_teks, pesan ); { membaca isi file disimpan ke var pesan }
Writeln (pesan); { tampilkan isi var pesan/ file } urutannya serta proses Input/Output dalam program perlu disusun
End; secara teratur oleh penyusun program. Segala yang ada pada bagian
Close(var_teks); {menutup koneksi ke file }
readln; { tahan layar } uses maupun deklarasi merupakan pendukung terhadap isi program.
End.

66 3
Struktur dasar dari bahasa pascal secara lengkap adalah sebagai berikut 4. kemudian compile Alt-C lalu tekan ENTER atau Alt-F9

Struktur
ruktur paling sederhana sebagai berikut
5. jika tidak ada kesalahan jalankan, Alt-R lalu tekan ENTER atau
Ctrl-F9

Untuk membuat keterangan gunakan tanda kurawal { ini adalah


keterangan },, atau (* ini adalah keterangan *). E. Tugas Praktikum (dikumpulkan akhir sesi)
Buatlah program untuk membaca file Dataku.dat dengan format minimal
D. Langkah Kerja sebagai berikut ini
Untuk menjalankan turbo pascal pada sistem operasi Windows
maka langkah yang ada ambil sebagai berikut :
1. Klik kanan tombol Start  klik Explore kemudian cari folder yang
didalamnya terdapat file TPX.EXE atau TURBO.EXE di folder tempat
install Turbo Pascal. Posisi defaultnya pada C:\TP
TP\BIN, kemudian
F. Tugas Rumah (dikumpulkan pertemuan berikutnya)
double klik TPX.EXE
T atau TURBO.EXE.
Gabunglah program diatas dengan tugas praktikum menjadi sebuah file
2. Tekan Alt-F
F pilih New akan terbuka editor pascal, Anda tinggal
dengan pilihan menu :
ketikkan source code program/listing program. Setelah selasai tekan
[1] Tambah Data [A]
F2 atau Alt-F
F pilih Save.. Tulis nama file dengan ketentuan maksimal 8
[2] Laporan [S]
huruf tanpa spasi kemudian tekan tombol Enter atau klik tombol OK.
[3] Keluar [Q]

4 65
D. Langkah Kerja
1. klik kanan start  explore kemudian cari TPX.EXE atau
TURBO.EXE pada folder install Turbo Pascal (misalnya di folder
C:\TP\BIN\)
2. double klik pada TPX.EXE atau TURBO.EXE (atau klik file-nya lalu
tekan ENTER)
3. tekan Alt-F-N ketikkan source code berikut ini kemudian simpan
(F2) dengan nama cfiledat.pas
Program create_file;
Uses crt;
Type mhs = Record
NPM : string[8];
Nama: string[25];
Alamat : string[20];
End;
Var vfilemhs : FILE of mhs;
Recmhs : mhs; 3. Kemudian Compile dengan cara Alt-C kemudian pilih Compile atau
I : integer; langsung Alt-F9. Jika masih ada kesalahan, perbaiki bagian yang
Oke : char;
Begin salah compile ulang sehingga muncul keterangan bahwa compile
Clrscr;
Assign (vfilemhs,’Dataku.dat’); {$I-}reset(vfilemhs);{$I+} berhasil/sukses.
if IOResult <>0 then rewrite(vfilemhs);
4. Untuk menjalankan program, pilih menu Run dengan Ctrl-F9 atau Alt-
I:=filesize(vfilemhs);
With recmhs do R tekan enter (hasil tidak disimpan/hanay dimemory saja)
Begin
Write(‘NPM :’);readln(NPM); 5. Untuk menghasilkan file .exe pada pengaturan menu Option (Alt-
While NPM <>’ ‘ do
begin O),pilihan DirectoriesEXE & TPU entri nama direktori penyimpan
Write(‘Nama :’);readln(Nama); file .exe. kemudian cek menu Compile (Alt-C) Destination Disk
Write(‘Alamat :’);readln(Alamat);
repeat (jika masih Destination Memory arahkan ke DestinationENTER
Write(‘Simpan [Y/N]?’);readln(oke);
Until oke in [‘Y’,’y’,’n’,’N’]; atau tekan D)
If oke in [‘Y’,’y’] then
Begin
Seek(vfilemhs,I);
Write(vfilemhs,recmhs);
I:=I+1;
End;
Writeln;
Write(‘NPM:’);readln(NPM);
End;
End;
Close(vfilemhs);
End.

64 5
E. Tugas Praktikum (dikumpulkan akhir sesi) membacanya perbaris kemudian isi datanya akan disimpan kedalam
Coba buat program berikut ini kemudian compile dan jalankan jika sebuah variabel (contoh diatas adalah variabel tampung). Sehingga
sudah berhasil gunakan daya imaginasi dan kreatifitas anda sehingga untuk menoperasikan datanya menggunakan variabel tampung.
tampilan lebih menarik serta mengurangi kesalahan pengguna (human
error).  Tutup koneksi file
CLOSE( <var_file>); Contoh : close(file_id);
{ Program menghitung tegangan listrik}
Program hitung_voltase; Setelah selesai menggunakan sebuah file, maka perlu perintah
Uses crt;
Var arus : integer; ini untuk menutup koneksi dengan file yang dideklarasikan
hambatan : integer; sebelumnya.
tegangan : real;

begin
 Fungsi-fungsi
clrscr(); {bersihkan layar} eof(file_id);
EOF( <var_file>); Contoh :
writeln(‘Program hitung voltase’); {cetak dilayar}
writeln(‘==============’); {cetak dilayar} Fungsi diatas untuk melakukan cek apakah data sudah berada
write(‘Masukkan kuat arus :’); (*cetak dilayar*)
readln(arus); {masukan dari keyboard}
di akhir file. Jika benar (true) berarti sudah berada di akhir file, selain
write(‘Masukkan kuat arus :’);read(arus); {cetak dan masukan dari keyboard} itu (false) berarti belum berada di akhir file.
(* hitung *) {keterangan tidak diproses}
Tegangan := arus * hambatan;
EOLN( <var_file>); Contoh : Eoln(file_id);
writeln(‘==============’); { cetak dilayar}
write(‘voltase =’); write(tegangan); Fungsinya sama seperti EOF hanya saja untuk mengecek
end. apakah sudah diposisi akhir baris.

FLUSH( <var_file>); Contoh : flush(file_id);

F. Tugas Rumah (dikumpulkan pertemuan berikutnya)


Secara normal data akan ditulis kedalam file yang ditunjuk
Buatlah sebuah program untuk menghitung luas, keliling dari (file_id) jika buffer/penyangganya sudah penuh. Fungsi ini digunakan
sebuah bangun ruang 3D dengan 1 proses masukkan menghasilkan luas untuk mengosongkan buffer, sehingga data di buffer akan ‘dipaksa’
dan keliling. Gunakan imajinasi dan kreatifitas anda !!!. disimpan kedalam file.

6 63
Bila file sudah ada, Mode diatas digunakan untuk membuka file
yang ditunjuk oleh file_id. Jika belum ada file maka akan menampilkan
pesan kesalahan.

APPEND( <var_file>); Contoh : append(file_id);

Mode diatas digunakan untuk membuka file teks dengan mode


menambah data pada yang ditunjuk oleh file_id.

 Merekam data ke file


WRITE(<var_file>, <var_data>);
WRITELN(<var_file>, <var_data>);

Contoh :
Write(file_id, ‘ A ’);
A B
Write(file_id, ‘ B ’);

Writeln(file_id, ‘Bedjo’); A
Writeln(file_id, ‘Paidjo’); B
TUKANG TUKANG BUAT
Perintah Write dan Writeln digunakan untuk merekam data ke
KETIK PROGRAM
sebuah file yang ditentukan oleh file_id. Data bisa berupa variabel
maupun data biasa seperti contoh. Jika perintah write maka data akan
disimpan berjajar kesamping sedangkan writeln otomatis akan
ditambahan ganti baris setelahnya.

 Membaca data dari file


READ(<var_file>, <var_data>);
READLN(<var_file>, <var_data>);

Contoh :
read (file_id, tampung);
Writeln (tampung);
P

READLN (file_id, tampung);


Writeln (tampung);
PAIDJO

Perintah Read digunakan untuk membaca data dari sebuah file


yang ditentukan oleh file_id secara per karakter. Readln

62 7
BAB II Beberapa perintah untuk memanipulasi file didalam bahasa

DASAR PEMROGRAMAN DAN TIPE DATA PASCAL PASCAL diantaranya sebagai berikut :

 Deklarasi variabel & koneksi file


A. Kompetensi Dasar : VAR
<var_file > : FILE of <tipe data> ; { file bertipe tertentu }
Mahasiswa mengenal tentang variabel, tipe data dan perintah dasar <var_file > : Text ; { file bertipe text }
<var_file > : FILE ; { file bertipe tak tertentu }

B. Tujuan : contoh:
VAR
1. Mahasiswa mengenali dan memahami perintah dasar Pascal
file_id : FILE of integer ; { jika file bertipe integer }
2. Mahasiswa mampu menggunakan dengan perintah dasar Pascal file_id : Teks ; { jika file penyimpan berupa Teks}
file_id : FILE ; { jika file penyimpan berupa Teks}
3. Mengenal dan mengerti beberapa operator, tipe data dalam Pascal
4. Dapat menggunakan beberapa operator dan tipe data dalam program file_id adalah variabel sebagai pengenal yang nantinya
digunkan untuk koneksi ke sebuah file tersimpan baik file sudah
C. Teori Singkat tercipta maupun yang akan dibuat.
1. Operator Aritmatika ASSIGN(<var_file>; ‘<nm_file>’);
Operator Arti
contoh
* Untuk perkalian
ASSIGN(file_id, ’DataQ’); {membuka file dataq }
/ Untuk pembagian (hasil : real)
ASSIGN(file_id, ’D:\DataQ.txt’); {membuka file dataq.txt di folder D:\pascalku}
+ Untuk pertambahan ASSIGN(file_id, ’DataQ.DAT’); {membuka file dataq.dat }
- Untuk pengurangan perintah ini untuk mengarahkan variabel file_id dengan sebuah file
DIV Hasil bagi (hasil : integer)
MOD Sisa Bagi tertentu.

2. Operator Perbandingan  Mode koneksi file


REWRITE( <var_file>); Contoh : Rewrite(file_id);
Operator Arti
< Kurang dari Mode diatas digunakan untuk menciptakan sebuah file baru
> Lebih dari
<= Kurang dari sama dengan yang ditunjuk oleh file_id. Jika ada nama file yang sama sebelumnya
>= Lebih dari sama dengan maka akan dihapus diganti dengan file yang dibuat ini.
:= Menyatakan nilai
= Sama dengan RESET( <var_file>); Contoh : reset(file_id);
!= Tidak sama dengan

8 61
BAB XI
3. Operator Logika
OPERASI FILE BINER Operator Arti
AND Logika AND (DAN)
OR Logika OR (ATAU)
A. Kompetensi Dasar : NOT Logika NOT (INGKARAN)
Mahasiswa memahami penyimpanan data ke sebuah file biner
5. Tipe Data
5.1 Ordinal Type
B. Tujuan :
a. Integer
1. Mahasiswa memahami dan membuat sebuah struktur/tipe data baru Tipe Data Jangkauan Nilai Memori
yang akan digunakan untuk table Shortint -128..127 8 bit
2. Mahasiswa memahami dan menggunakan record Integer -32768..32767 16 bit
3. Mampu membuat program yang dihubungkan dengan sebuah file Longint -2147483648..2147483647 32 bit
biner Byte 0..255 8 bit
Word 0..65535 16 bit
b. Char
C. Teori Singkat Type variabel yang berguna untuk pengolahan character ASCII,
Program-program yang selama ini kita buat semuanya terekam type character ini penulisannya ditandai dengan dua buah petik
tunggal seperti : 'A', '3','*',#7 untuk menyatakan ' harus ditulis '''‘
didalam memori komputer saja. Manakala program berakhir maka data c. Boolean
yang kita proses juga akan ikut hilang. Sehingga untuk merekam Type varibale yang berguna untuk pengolahan logika yang
hanya mempunyai dua ketentuan yaitu benar(TRUE) dan
semua data yang kita proses dibutuhkan file untuk merekamnya. salah(FALSE) saja.
File yang bisa digunakan didalam bahasa pascal dapat berupa
file tak bertipe, file bertipe dan file teks. File teks adalah file yang pola 5.2 Real Type
penyimpanan datanya dalam bentuk karakter, sehingga bisa dibuka Tipe Data Jangkauan Nilai Ketelitian Memori

dengan notepad atau dengan perintah type pada command prompt. Real 2,9 x 10-39 s/d 1,7 x 1038 11-12 digit 6 bit
Single 1,5 x 10-45 s/d 3,4 x 1038 7-8 digit 4 bit
Sedangkan file bertipe jika file yang diakses mempunyai tipe data
Double 5,0 x 10-324 s/d 1,7 x 10308 15-16 digit 8 bit
tertentu seperti integer, string atau bahkan record. File tak bertipe
Extended 5,0 x 10-4951 s/d 1,1 x 104932 19-20 digit 10 bit
kabalikan dari file bertipe, akan tetapi kedua tipe file ini ditulis dalam Comp -9,2 x 1018 s/d 9,2 x 1018 19-20 digit 8 bit
kode binary sehingga tidak bisa dibaca langsung seperti teks.
Contoh tampilan angka real di pascal
1.7E+02  menyatakan 1,7 x 102 170
2.9E-02  menyatakan 2,9 x 10-2 0,029

60 9
6. Perintah dasar Input dan Output 5. Untuk menguji unit yang telah dibuat, ketiklah source code dibawah ini,
 Write( ) dan Writeln( ) kemudian compile (Alt-F9) dan jalankan (Ctrl-F9)
Write(‘expresi’,var:a:b) WriteLn(‘expresi’,var:a:b) program test_unit;
uses
 Expresi : komentar yang akan ditampilkan harus diapit Crt, cekpswd; {panggil unit}
var
tanda petik ‘ ‘ Kata_sandi : string;
 Var : variable yang akan dicetak nilainya begin
Clrscr;
 a : panjang var ditampilkan repeat
Write('Masukkan Password Anda !! : ');
 b : panjang angka dibelakang koma (pecahan) Readln(Kata_sandi);
until CekSandi (Kata_sandi, 'abc123'); {panggil fungsi dari unit}
Perintah ini untuk mencetak dilayar. Writeln digunakan untuk Writeln;
Write('Password Anda Benar !!');
menampilkan hasil per baris, akan ganti baris untuk tampilan berikutnya.
Readln;
Write digunakan untuk menampilkan hasil tanpa ganti baris pada tampilan end.

berikutnya. Program akan berulang terus sampai passwordnya benar (‘abc123’)

 Read( ) dan ReadLn( )


Read(var1,var2,...) ReadLn(var1,var2,...)
 var1,var2,... : variabel untuk menyimpan data

Perintah ini untuk menerima masukan dari keyboard. Readln akan


E. Tugas Praktikum (dikumpulkan akhir sesi)
membuang kelebihan data ke perintah read atau readln berikutnya. Read
Buka dan editlah source code salah satu program praktikum sebelumnya
tidak akan membuang kelebihan data ke perintah read atau readln
coba anda gunakan unit cekpswd.tpu
berikutnya. Spasi atau tab dianggap pemisah data
1. buatlah pengecekan password pada tampilan awal
2. pada akhir program beri pilihan untuk mengulang lagi tanpa
 Cetak ke printer harus memasukkan password lagi

Write(Lst,‘expresi’,var) WriteLn(Lst,‘expresi’,var)
F. Tugas Rumah (dikumpulkan pertemuan berikutnya)
Perintah ini sama dengan perintah cetak dilayar hanya saja ada tambahan Buat sebuah unit yang berisi fungsi dan prosedur menggambar garis,
perintah Lst dan prosesnya tidak dilayar, akan tetapi langsung ke printer. kotak, lingkaran sendiri.
Unit printer HARUS disertakan pada deklarasi uses, dan printer juga
harus sudah terpasang

10 59
D. Langkah Kerja D. Langkah Kerja
1. Jalankan turbo pascal kemudian jalankan. 1. Jalankan turbo pascal kemudian jalankan.
2. Buka editor pascal untuk membuat program baru, Anda tinggal 2. Buka editor pascal untuk membuat program baru, Anda tinggal
ketikkan source code program/listing program, kemudian simpan ketikkan source code program/listing program.
dengan nama cekpswd.pas.
program cetak_layar;
unit cekpswd; uses crt;
var x,y : integer;
interface
c : real;
function CekSandi(Kata, Password: string): Boolean;
begin
implementation (* Cetak biasa *)
function CekSandi(Kata, Password: string): Boolean; write('nYoba nYetak dilayar');
begin write('kursor di samping ato di bawah ??');
if Kata=Password then Writeln ( ' setelah ini kursor turun dibawah ' );WRITELN('ternyata bener !!');
CekSandi := True
Else { Pake variabel}
CekSandi := False; x := 10 ;
end; y := 3 ;
end. c:=x/y; { Proses hitung}
WriteLn(x,' dibagi ',y); { cetak dilayar}
writeln('hasilnya :',c); { cetak dilayar hasil perhitungan}
3. Cek settingan Compiler , tekan Alt-C, lalu tekan D sehingga writeln('dengan format');
Destination Disk write('hasilnya :');
writeln(c:2:2); { cetak dilayar dengan format}
end.

3. Setelah selesai simpan dan compile dengan tekan Alt-F9. Jika ada
kesalahan cek lagi penulisan.
4. Jalankan program tekan Ctrl-F9.

*) Jika ingin mencoba mencetak ke printer silahkan menghubungi asisten


dulu untuk menyiapkan alat seperti printer dot matrix (Epson LX-800) dan
kertas. Tidak perlu semua peserta.

4. Setelah itu tekan Alt-F9, jika tidak muncul kesalahan maka pada folder
file cekpswd.pas terdapat file unit baru cekpswd.tpu

58 11
5. Tugas Praktikum (dikumpulkan akhir sesi) Untuk menggunakan unit tersebut, pada bagian uses harus
Rubahlah supaya nilai variabel source code diatas berasal dari dituliskan nama unitnya. Pada bagian program diketik prosedur atau
masukan keyboard.
keyboard. Gunakan daya imaginasi dan kreatifitas anda fungsi-fungsi yang ada pada unit tersebut, contohnya sebagai berikut:
sehingga tampilan lebih menarik dan pengguna mudah menggunakannya Program coba_unit;
Uses
Crt, myunit;
6. Tugas Praktikum (dikumpulkan pertemuan berikutnya) begin
Clrscr;
Buat sebuah program dengan menggunakan Pascal/C++ dengan atas;
writeln('tengah-tengah');
pseudocode berikut ini : akhir;
ALGORITMA Menghitung Gaji readln
{ Membaca masukan nama pegawai, jam lembur. menghitung gaji lembur, end.
jml gaji, pajak dan total terima. Kemudian menampilkannya }

DEKLARASI
Sebaiknya nama file unit yang dibuat, sama dengan nama unit
jamlembur : int
gpokok,glembur,gkotor,pajak,gbersih : real pada Unit header tersebut supaya kita cukup memanggil unit tersebut
nama : string
dengan menggunakan format uses <Nama unit> pada program
DESKRIPSI
gpokok  600000 pemanggil tanpa harus menambahkan compiler directive {$U} pada
input(nama,
(nama, jamlembur)
glembur  15000 * jamlembur program pemanggil agar dapat memakai unit tersebut.
gkotor  gpokok + glembur Untuk menambahkan unit yang telah dibuat ke dalam file
pajak  0.1 * gkotor
gbersih  gkotor - pajak TURBO.TPL (agar unit yang dibuat dapat langsung dipakai oleh program
output(nama,
(nama, gpokok, jamlembur, glembur, gkotor)
output(pajak,
(pajak, gbersih) pemanggil meskipun nama file unit berbeda dengan nama unit pada Unit
header, tanpa perlu menuliskan compiler directive {$U}), gunakan fasilitas
command line TPUMOVER.EXE yang disediakan oleh Turbo Pascal 7.0,
contohnya dengan cara sebagai berikut:

C:\TurboPascal\BIN>TPUMOVER TURBO.TPL + myunit

Untuk menghapus unit Laporan dari file TURBO.TPL dapat dilakukan


dengan menggunakan command line sebagai berikut:

C:\TurboPascal\BIN>TPUMOVER TURBO.TPL – myunit

12 57
Prosedur dan fungsi yang ada pada bagian ini adalah hanya BAB III
pendeklarasiannya saja. STRUKTUR KENDALI SELEKSI/PERCABANGAN
 Bagian Implementasi.(Implementation Part)
Bagian Implementasi mendefinisikan isi dari semua prosedur dan fungsi
A. Kompetensi Dasar :
yang publik. Dengan tambahan selain prosedur dan fungsi dapat juga
Mahasiswa memahami alur logika sebuah percabangan
mendeklarasikan konstanta, tipe, variable,prosedur dan fungsi yang akan
dipergunakan secara khusus.
B. Tujuan :
 Bagian Inisialisasi(Initialization Part)
1. Mahasiswa memahami dan menggunakan struktur kontrol pada
Bagian Inisialisasi adalah bagain terakhir dari unit yang mempunyai
bahasa PASCAL
fungsi sebagai penginisialisi (pemberian nilai awal) pada sebuah unit.
2. Mahasiswa dapat menentukan alur penanganan sebuah kondisi
unit myunit; sederhana dan majemuk pada suatu kasus program

interface 3. Mahasiswa dapat menentukan alur penanganan sebuah kondisi


procedure awal; bertingkat/ bersarang.
procedure akhir;

implementation
C. Teori Singkat
procedure awal;
Jika hari ini hujan maka Paidjo pergi ke kantor naik mobil, jika tidak
begin
writeln('Belajar Turbo Pascal'); hujan maka Paidjo pergi ke kantor naik motor. Sebuah kondisi (hari ini =
end;
procedure awal; hujan) akan menyebabkan 2 kemungkinan, jika bernilai benar (true)
begin
writeln('with Mr. Paidjo Nakal');
maka akan menjalankan statement 1 (naik mobil) jika bernilai salah
end; (false) maka akan menjalankan statement 2 (naik motor). Setiap proses
end. logika akan selalu menghasilkan 2 nilai yaitu true/benar atau false/salah,
tidak ada istilah separuh benar separuh salah.
Hasil kompilasi suatu unit akan dihasilkan file dengan ekstension
Apabila ada pilihan majemuk (lebih dari 2) maka proses logikanya
.TPU (Turbo Pascal Unit). Nama judul unit sebaiknya sama dengan file
menjadi bertingkat/bersarang/nested. Misalnya jika hari ini hujan (kondisi
unitnya, misalnya judul dari unitnya adalah myunit dan tersimpan di file
1) maka Paidjo pergi ke kantor naik mobil, jika hari ini mendung (kondisi
dengan nama myunit.pas. Hasil dari kompilasi unit ini akan didapatkan
2) maka ayah pergi ke kantor naik bis, selain itu (kondisi 3) maka ayah
suatu file dengan nama myunit.tpu (setting Compile Destination
pergi ke kantor naik motor.
Disk).

56 13
Untuk menuliskan struktur kendali percabangan didalam bahasa BAB X
PASCAL bisa menggunakan beberapa cara yaitu : MEMBUAT UNIT SENDIRI
1. IF .. THEN
a. Bentuk sederhana 1 kondisi
A. Kompetensi Dasar :
if <kondisi> THEN Mahasiswa dapat merancang dan membuat unit sendiri
statement

b. Bentuk sederhana 2 kondisi


B. Tujuan :
if <kondisi> THEn Mahasiswa mampu membuat beberapa prosedur, fungsi dan
statement1
else menuliskan kedalam unit, mengkompilasi unit dan menggunakannya
statement2

c. Bentuk majemuk/lebih dari 2 kondisi C. Teori Singkat


if <kondisi1> then Unit adalah adalah sebuah penerapan pemrograman modularitas
statement1 pada Turbo Pascal. Setiap unit mirip seperti program Pascal yang
else
if <kondisi2> then terpisah, dan merupakan kumpulan tetapan, tipe data, peubah, prosedur
statement2 dan fungsi. dengan kata lain unit merupakan suatu kepustakaan
else
if <kondisi3> then pengumuman (declaration library) yang dapat digunakan oleh program
statement3 (atau unit yang lain) yang menggunakannya. Pascal memiliki beberapa
...
else library unit standar yang sudah tersedia yang antara lain : System, CRT,
statement-lain DOS, String, Graph & Printer. Semua file tersebut tersimpan dalam file
c. Bentuk bertingkat/bersarang TURBO.TPL. Library unit dapat dibuat sendiri dan dapat digunakan
if <kondisi1> then dengan menggunakan keyword uses.
begin Suatu unit memiliki struktur yang terdiri dari beberapa bagian yang
if <kondisi-1a> then
statement-1a membentuk sebuah unit (.tpu), yaitu :
else  Judul Unit (Unit Header)
statement-1b
end Judul Unit menyatakan nama unit, yang mana nantinya dipergunakan
else oleh modul atau program lain dengan pernyataan uses.
if<kondisi2> then
.......  Bagian Penghubung (Interface Part)
else
Bagian penghubung mendeklarasikan konstanta, tipe, variable, prosedur
begin
statement-lain1; dan fungsi yang akan dipergunakan oleh orang lain secara publik.
statement-lain2;
statement-lain
end
14 55
4. Akan muncul gambar animasi lingkaran, setiap ditekan sebuah tombol Maksud rumus diatas adalah jika sebuah kondisi terpenuhi
akan berubah bentuk. (bernilai true/benar) maka 1 statement/perintah yang mengikuti if
yang akan dikerjakan, jika bernilai false/salah maka 1 perintah
E. Tugas Praktikum (dikumpulkan akhir sesi) dibawah if akan di abaikan. Jika statement/perintah yang diinginkan
Modifikasi program diatas dengan membuat pilihan menu animasi 1, lebih dari satu maka perintah-perintah tersebut harus diawali dengan
animasi 2, animasi 3 dan keluar. begin dan diakhiri dengan end
Pada kondisi yang bersifat majemuk jika kondisi-1 bernilai true
F. Tugas Rumah (dikumpulkan pertemuan berikutnya) maka statement-1 yang dikerjakan. Jika tidak akan dibandingkan
Buat sebuah program dengan menampilkan sebuah gambar dengan kondisi-2 jika bernilai benar maka statement-2 yang akan
kendaraan 2D misalnya mobil, bus, kapal dan kendaraan lainnya. dieksekusi begitu seterusnya sampai kondisi yang terakhir maka akan
dijalankan perintah yang terakhir.
Perintah else bersifat optional saja, disertakan jika kondisi yang
menyertai if tidak terpenuhi memang diperlukan sebuah
perintah/statement. Sehingga apabila jika kondisi salah/false akan
dikerjakan perintah yang disertakan didalam else. Contoh kasus
discount hanya diberikan kepada pembeli yang harga belanjaanya
diatas 1 juta rupiah, maka else tidak diperlukan. Lain halnya jika
kasusnya discount 5% jika harga belanja dibawah 1 juta dan 10% jika
harga belanjaan diatas 1 juta maka else bisa disertakan.
Di beberapa kasus diperlukan seleksi bertingkat misalnya syarat
pendaftaran jika pria tingginya harus lebih dari 160 cm, sedangkan
wanita tingginya harus lebih dari 155 cm, logikanya sebagai berikut:
Jika jenis kelamin = Pria
maka akan dicek lagi apakah tinggi > 160 cm
jika BENAR maka status=LOLOS
SELAIN itu maka status=TDK LOLOS
SELAIN jenis kelamin = Pria
maka akan dicek lagi apakah tinggi > 155 cm
jika BENAR maka status=LOLOS
SELAIN itu maka status=TDK LOLOS

54 15
{ =============== ini lnjutannya ==================== }
2. CASE .. OF repeat
setcolor(random(14)+1);
CASE <nilai> OF setfillstyle(random(12), random(14)+1);
case nilai1 : PieSlice(000,000,random(90)+270,random(90)+270,random(239));
statement1; setfillstyle(random(12), random(14)+1);
case nilai2 : PieSlice(639,000,random(90)+180,random(90)+180,random(239));
statement2; setfillstyle(random(12), random(14)+1);
PieSlice(000,479,random(90)+000,random(90)+000,random(239));
case nilai3 :
setfillstyle(random(12), random(14)+1);
statement3; PieSlice(639,479,random(90)+090,random(90)+090,random(239));
.... setfillstyle(random(12), random(14)+1);
ELSE PieSlice(319,239,random(360),random(360),random(139));
statement-lain delay(20);
END; until keypressed; readkey;
setcolor(1);
setlinestyle(0,0,3);
Perintah CASE ... OF adalah pernyataan yang digunakan untuk line(0,0,639,0);
menjalankan salah satu statement dari beberapa kemungkinan line(0,479,639,479);
for i := 1 to 239 do
statement, berdasarkan nilai dibandingkan dengan nilai penyeleksi. begin
setcolor(0);
Secara singkatnya, pernyataan ini merupakan pernyataan pilihan line(0,i-1,639,i-1);
berganda atau kondisi majemuk. line(0,479-i,639,479-i);
setcolor(1);
Contoh untuk menentukan nama hari, misal kodehari 1=Senin, line(0,i,639,i);
line(0,479-i-1,639,479-i-1);
2=Selasa dan seterusnya deklarasinya sebagai berikut : delay(15);
end;
CASE kodehari OF setcolor(0);
1: line(0,239,639,239);
Writeln(‘ Senin ’); delay(600);
2: closegraph;
Writeln(‘ Selasa ’); end.
3:
Writeln(‘ Rabu ’); 3. Tekan F2, ketik cbgraph.pas, Tekan Alt-F9, lalu tekan Ctrl-F9
4:
Writeln(‘ Kamis ’);
5:
Writeln(‘ Jum’at ’);
6:
Writeln(‘ Sabtu ’);
7:
Writeln(‘ Ahad ’);
ELSE
Writeln(‘ Kode Hari Salah ’)
END;

16 53
D. Langkah Kerja Nilai variabel kodehari akan dibandingkan dengan nilai 1 s/d 7,
1. Jalankan turbo pascal kemudian jalankan. misalnya bernilai sama dengan nilai penyeleksi (true) maka akan
2. Buka editor pascal untuk membuat program baru, Anda tinggal dijalankan perintah setelahnya, kemudian akan keluar dari struktur
ketikkan source code program/listing program. perintah CASE ... OF. Jika tidak ada yang sesuai maka akan
Pada bagian initgraph(gd,gm,'c:/Progra~1/tp/bgi'); disesuaikan dijalankan nilai else-nya yaitu dijalankan perintah setelah ELSE ,
misalnya C:/TP/BGI kemudian akan keluar dari struktur CASE ... OF.
uses crt, graph; Jika perintah sama untuk beberapa nilai penyeleksi maka
var
i,gd,gm:integer; dipisahkan dengan tanda koma ( , ) sebagai contoh misal untuk
begin
randomize; menentukan jumlah hari dalam bulan Pebruari(2) adalah 28 hari
gd := detect;
sedangkan April(4), Juni(6), September(9), Nopember(11) berisi 30
initgraph(gd,gm,'c:/Progra~1/tp/bgi');
hari dan bulan lainnya ada 31 hari
for i := 1 to 500 do putpixel(random(640),random(480),random(14)+1);
repeat CASE kodebulan OF
setcolor(random(14)+1); 2:
setfillstyle(random(12), random(14)+1); Writeln(‘ Jumlah hari bulan ke-’,kodebulan,’ = 28’);
PieSlice(319,239,random(360),random(360),random(239)); 4, 6, 9, 11 :
delay(20); Writeln(‘ Jumlah hari bulan ke-’,kodebulan,’ = 30’);
until keypressed; readkey; cleardevice; 1, 3, 5, 7, 8, 10, 12 :
Writeln(‘ Jumlah hari bulan ke-’,kodebulan,’ = 31’);
for i := 1 to 500 do putpixel(random(640),random(480),random(14)+1); ELSE
repeat Writeln(‘ Kode yang dimasukkan SALAH !!! ’)
setcolor(random(14)+1); END;
setfillstyle(random(12), random(14)+1);
PieSlice(319,479,random(180),random(180),random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(319,000,random(180)+180,random(180)+180,random(239)); sedangkan jika nilai penyeleksi adalah salah satu dari sebuah range
delay(20);
until keypressed; readkey; cleardevice; tertentu maka dipisahkan dengan tanda ( .. )

for i := 1 to 500 do putpixel(random(640),random(480),random(14)+1); CASE tombol OF


repeat ‘A’..’Z’ :
setcolor(random(14)+1); Writeln(‘ Anda menekan ’,tombol,’ adalah Huruf Kapital’);
setfillstyle(random(12), random(14)+1); ‘a’..’z’ :
PieSlice(000,000,random(90)+270,random(90)+270,random(239)); Writeln(‘ Anda menekan ’,tombol,’ adalah Huruf Kecil’);
setfillstyle(random(12), random(14)+1); ‘0’..’9’ :
PieSlice(639,000,random(90)+180,random(90)+180,random(239)); Writeln(‘ Anda menekan ’,tombol,’ adalah Angka’);
setfillstyle(random(12), random(14)+1); ELSE
PieSlice(000,479,random(90)+000,random(90)+000,random(239)); Writeln(tombol,’ tombol BUKAN Huruf ataupun Angka !!’);
setfillstyle(random(12), random(14)+1); END;
PieSlice(639,479,random(90)+090,random(90)+090,random(239));
delay(20);
until keypressed; readkey;

(* Masih ada lanjutan dibawah loh !!! *)

52 17
Jika yang ditekan salah satu huruf antara A sampai dengan Z akan  Untuk mendapatkan nilai maxsimum dari koordinat X dan
muncul informasi sebagai huruf kapital, jika yang ditekan antara huruf koordinat Y adalah titk paling bawah layar
a sampai dengan z maka tercetak huruf kecil dan jika berupa angka GetMaxX dan GetMaxY
akan muncul keterangan bahwa tombol yang ditekan adalah angka.  Untuk mencetak titik pada suatu koordinat tertentu
PutPixel(X,Y,Warna);
D. Langkah Kerja  Perintah untuk menggambar garis pada layar
1. Jalankan turbo pascal kemudian jalankan. Line( X1, Y1, X2, Y2 );
2. Buka editor pascal untuk membuat program baru, Anda tinggal X1 dan Y1 adalah koordinat awal garis dan X2 dan Y2 adalah
koordinat akhir garis
ketikkan source code program/listing program.
 Untuk menggambar garis dari posisi aktif ke koordinat tertentu
program kalkulator_sederhana;
uses crt; LineTo( X, Y );
var
operator,hold : char; X dan Y adalah koordinat ujung garis.
angka1,angka2 : integer;
hasil : real ;  Perintah untuk memindahkan posis aktif ke posisi tertentu
begin MoveTo ( X, Y);
clrscr; {fungsi bersihkan layar}
writeln('====================================='); X dan Y adalah posisi aktif baru.
writeln('Program kalkulator sederhana.....');
writeln('=====================================');
 Perintah untuk menggambar sebuah kotak pada layar
writeln('operator yang dapat digunakan adalah : '); Rectangle( X1, X2, Y1, Y2);
writeln(' x => perkalian');
writeln(' / => pembagian'); X1 dan Y1 adalah koordinat kanan atas dan X2 dan Y2 adalah
writeln(' + => penjumlahan'); koordinat kiri bawah
writeln(' - => pengurangan');
writeln('=====================================');  Perintah untuk mengambar lingkaran pada layar
writeln('Silahkan Masukkan Angka lalu ENTER '); Circle ( X, Y, Radius );
write(' angka 1 : ');readln(angka1); {input angka 1 } Radius adalah jari – jari lingkaran.
write(' operator: ');readln(operator); {input perintah perhitungan}
 Perintah untuk mengambar Ellips pada layar
write(' angka 2 : ');readln(angka2); {input angka 2 }
writeln('====================================='); Ellipse( X, Y, Sudut awal, Sudut Akhir, RadiusX, RadiusY );
CASE operator OF
'x','X' : Hasil := angka1 * angka2;
':','/' : Hasil := angka1 / angka2;
'+' : Hasil := angka1 + angka2;
'-' : Hasil := angka1 - angka2;
else
writeln('Perintah Anda Salah Silahkan Ulangi')
END;
writeln(' Hasilnya : ',hasil:7:2); {cetak hasil}
writeln('====================================');
readln(hold); {tahan layar}
end.

18 51
Untuk dapat menggunakan fasilitas layar grafik terlebih dahulu E. Tugas Praktikum (dikumpulkan akhir sesi)
harus melakukan inialisasi yaitu memberikan kode pada komputer untuk Coba listing program diatas kemudian ganti perintah CASE .. OF
memperlakukan layar monitor sebagai layar grafik. Setelah dilakukan dengan IF .. THEN. Buatlah tampilan mendekati seperti sebuah kalkulator.
inisialisasi ini cara penulisan ke layar berbeda
berbeda dengan cara penulisan
yang dilakukan pada bab – bab sebelumnya. Dalam Pemograman grafik F. Tugas Rumah (dikumpulkan pertemuan berikutnya)
dipergunakan InitGraph. Syntax penulisannya : Buat sebuah program dengan menggunakan bahasa PASCAL

InitGraph(GraphDriver,
InitGraph(Gr GraphMode,
Mode, DrivePath); untuk menampilkan nama bulan dan jumlah hari dengan masukan nomor

- GraphDriver urut bulan misalnya masukkan 1 akan menghasilkan Bulan : Januari


Parameter ini berupa parameter variabel bertipe integer yang menyatakan Jml hari : 31
driver layar yang akan dipergunakan, yang tidak lain menyatakan jenis layar
monitor apa yang dipergunakan. Dengan menugaskan DETECT pada variabel
ini maka complier akan mendeteksi monitor apa yang terpasang pada
komputer yang kita pergunakan.
pergunaka
- GraphMode
Parameter ini berupa variabel bertipe integer yang menyatakan modes grafik
yang akan kita pergunakan. Bila variabel ini dipergunakan tidak
diinialisasikan (=), maka complier akan mencari resolusi tertinggi yang
mampu ditampilkan oleh driver layar.
- Drive Path
Parameter string yang menyatakan letak direktorin dari file driver ( program
tersebut di simpan dimana drive c atau d (c:/tp/bgi
( ).

Setelah selesai menggunakan. Modus layar harus dikembalikan lagi ke


modus text, Hal ini dilakukan dengan
dengan menggunakan perintah :
CloseGraph;

Gambar diatas menjelaskan posisi titik di layar, Sedangkan


perintah-perintah
perintah dalam mode grafis (graph.tpu)) antara lain:

50 19
BAB IV Berikut ini adalah beberapa perintah untuk mempercantik tampilan

OPERASI LOOPING/PERULANGAN dan pengaturan layar dengan mode teks (crt.tpu)


 Untuk menempatkan posisi kursor pada layar.
Sintaks: GOTOXY(X, Y: Byte);
A. Kompetensi Dasar :
Keterangan :
Mahasiswa memahami operasi dan alur perulangan
X = sumbu X (posisi horisontal), Y = sumbu Y (posisi vertikal)
 Untuk mengatur warna dari karakter-karakter di layar.
B. Tujuan :
Sintaks: TEXTCOLOR(color : Byte);
Mahasiswa menggunakan operasi perulangan dengan membuat
Catatan : untuk pilihan warna lihat pada buku Turbo Pascal.
program perulangan menggunakan bahasa PASCAL
 Untuk mengatur warna latar belakang dari karakter dilayar.
Sintaks: TEXTBACKGROUND(Color : Byte);
C. Teori Singkat
 Untuk membuat suatu jendela (window) yang terletak pada layar.
Perintah looping/perulangan digunakan untuk mengerjakan suatu
Sintaks: WINDOW(x1,x2,y1,y2 : Byte);
pernyataan, perintah yang dilakukan berulang-ulang sesuai jumlah
x1,x2 = kordinat kiri atas dengan nilai maksimal sesuai mode layar.
pengulangan yang diinginkan atau sesuai dengan kondisi atau syarat
 Untuk mengaktifkan suara(beep) pada internal speaker.
yang diberikan. Program-program yang selama ini kita buat, hanya bisa
Sintaks: SOUND(Hz : word);
dijalankan sekali. Jika akan menjalankan lagi kita harus memanggil ulang
Untuk mengnonaktifkannya, gunakan statemen NOSOUND.
program itu. Sehingga diperlukan sebuah perulangan sampai kita tidak
Layar monitor dapat menampilkan objek hanya berupa titik – titik
menginginkan lagi. Misalnya setelah eksekusi program selesai selalu ada
yang dapat menampung pada suatu layar penuh bervariasi sesuai dengan
pertanyaan “ mau mengisi lagi [Y/T] ? “ selama kita tidak menjawab
mode grafik yang kita pergunakan. Dalam pemograman grafik
dengan menekan tombol T maka program akan selalu dijalankan. Jenis-
menggunakan bahasa pascal kita akan memerlukan file – file sebagai
jenis perintah looping sebagai berikut :
berikut :
1. FOR ..TO..DO
 File driver grafik, yaitu file – file yang berakhiran BGI (
FOR <nilai counter awal> TO <batas akhir> DO Boolean Grafik Interface) Untuk dipergunakan sesuai dengan
begin
statement; statement2; statement3; monitor yang dipergunakan
end;  File Graph. TPU adalah fil eyang berisi definisi dari fungsi –
contoh : fungsi grafik yang dipergunakan
for a:=1 to a<6 do  File Huruf adalah file – file yang memiliki akhiran CHR yang
write(‘ ‘,a);
bersifat optimal jika tidak terdapat file – file ini setiap karakter
dicetak menggunakan Jenis huruf default .

20 49
BAB IX Dari contoh diatas perintah yang diulang eksekusinya adalah

GRAPHIC write(‘ ‘,a), yang berfungsi untuk mencetak ke layar nilai dari a. Di
awali dengan nilai a=1, kemudian akan dicetak dilayar angka 1,
kemudian akan berulang dan nilai a berubah menjadi a+1 (increment)
A. Kompetensi Dasar :
sehingga nilai a sekarang menjadi 2, kemudian dicetak menjadi 2
Mahasiswa memahami dan membuat gambar, warna dan suara
begitu seterusnya sampai dengan nilai a<6 sehingga yang akan
dengan menggunakan PASCAL
dicetak dilayar angka 1 2 3 4 5
2. FOR .. DOWNTO .. DO
B. Tujuan :
1. Mahasiswa memahami dan menggunakan perintah untuk FOR <nilai counter awal> DOWNTO <batas akhir> DO
begin
memanipulasi tampilan layar dalam mode teks. statement; statement2; statement3;
2. Mahasiswa memahami dan menggunakan perintah untuk end;
memanipulasi tampilan layar dalam mode graphic.
contoh :
3. Mahasiswa dapat membuat sebuah bentuk gambar grafis dengan
FOR a:=5 DOWNTO a<1 DO
menggunakan PASCAL. write(‘ ‘,a);

Contoh diatas di awali dengan nilai a=5, kemudian akan dicetak


C. Teori Singkat
dilayar angka 5 sesuai perintah write(‘ ‘,a), kemudian akan berulang
Layar monitor komputer memiliki dua mode pemakaiannya, mode
dan nilai a berubah menjadi a-1 (decrement) sehingga nilai a sekarang
text dan mode grafik. Pada mode text yang dapat ditampilkan layar
menjadi 4, kemudian dicetak menjadi 4 begitu seterusnya sampai nilai
monitor adalah berupa karakter – karakter. Banyaknya karakter yang
a<1 sehingga yang akan dicetak dilayar angka 5 4 3 2 1
ditampung dalam satu layar penuh adalah 4000 karakter ( untuk mode
layar yang biasa dipakai ) yaitu 80 karakter mengisi lebar layar dan 25
3. REPEAT .. UNTIL
karakter mengisi tinggi layar. REPEAT
{
Program dalam mode grafik dalam Turbo Pascal sudah tersedia statement; statement2; statement3;
unit dasar untuk pemrograman grafik yaitu GRAPH.TPU, dengan } UNTIL <kondisi> ;

deklarasi uses graph. Untuk membuat program berbasis grafik kita contoh :
memerlukan interface grafik, untuk monitor VGA kita memerlukan file passwd := ‘abc123’; { set password }
REPEAT { ulang }
EGAVGA.BGI (untuk VGA atau CGA.BGI untuk CGA).
write(“Masukkan password anda:”); { cetak string }
readln(inputpasswd); {minta inputan keyboard }
UNTIL (passwd = inputpasswd); { sampai inputpasswd = abc123 }

48 21
Perulangan diatas minimal akan dikerjakan satu kali (1X), yaitu
minta masukan password dari keyboard yang disimpan ke variable
inputpasswd. Jika nilai variable inputpasswd = passwd maka akan
keluar dari perulangan, walaupun hanya sekali input. Jika tidak maka
akan selalu diminta input-an password sampai sama dengan
password yang dideklarasikan.
4. WHILE .. DO
while <kondisi> DO
begin
statement; statement2; statement3;
end;

contoh :
{minta inputan keyboard }
write(“Masukkan password anda:”); readln(inputpasswd);

passwd := ‘abc123’; { set password }


WHILE (passwd = inputpasswd); {jika inputpasswd = abc123 }
begin
writeln (‘ Password ‘,inputpasswd);{ cetak komentar }
writeln (‘ ACCEPTED !!! ‘);{ cetak komentar }
end;

Looping ini hanya akan dijalankan jika sebuah kondisi


terpenuhi. Berbeda dengan repeat ... until terjadi pengecekan kondisi
terlebih dahulu baru dijalankan jika bernilai benar/true saja. Sehingga
program diatas hanya akan dijalankan selama data yang dimasukkan
(inputpasswd) adalah abc123 (passwd). Jika selain itu maka akan
keluar program.

22 47
4. kemudian compile Alt-C lalu tekan ENTER atau Alt-F9 D. Langkah Kerja
Tulis listing/source code program berikut ini kemudian compile dan
jalankan dengan text editor Turbo Pascal yang ada di laboratorium.

Program Tiket_bus;
Uses crt;
var
tujuan,jml_tiket : integer;
harga,total_bayar : real;
lagi,kelas : char;
nama : string;

begin
repeat
clrscr; {bersihkan layar}
writeln; writeln;
writeln('==================================');
5. jika tidak ada kesalahan jalankan, Alt-R lalu tekan ENTER atau Ctrl- writeln(' Program Pemesanan Tiket ');
writeln(' P.O RAMAHYANYAK ');
F9 writeln('==================================');
writeln(' EKSEKUTIF [A]');
writeln(' PATAS [B]');
writeln(' EKONOMI [C]');
write ('Pilih Kode Kelas [A-B] : '); readln(kelas); {input kode kelas}
writeln;
writeln(' SEMARANG [1]');
writeln(' MAGELANG [2]');
writeln(' YOGYAKARTA [3]');
write ('Pilih Kode Tujuan [1-3] : '); readln(tujuan); {input kode tujuan}
E. Tugas Praktikum (dikumpulkan akhir sesi) writeln;
writeln('==================================');
Program diatas untuk isi data melalui sebuah looping for gantilah write('Nama Pemesan : '); readln(nama); {input nama}
write('Jumlah Tiket : '); readln(jml_tiket); {input jml tiket}
dengan perintah masukan ‘isi data lagi ? [Y/T]’ silahkan dibuat dan
buatlah tampilan dengan kreasi anda sendiri (* Masih ada sambungan dibawah loh !!! *)

F. Tugas Rumah (dikumpulkan pertemuan berikutnya)


Buatlah sebuah program nota penjualan menggunakan record, isi
data (isikan nama barang, jml, harga) melalui sebuah looping for 5x,
kemudian tampil cetakan nota barang yang dibeli silahkan dibuat dan
buatlah tampilan dengan kreasi anda sendiri

46 23
D. Langkah Kerja
1. klik kanan start  explore kemudian cari TPX.EXE atau TURBO.EXE

{ =============== ini sambungan pertama ==================== } pada folder install Turbo Pascal (misalnya di folder C:\TP\BIN\)
2. double klik pada TPX.EXE atau TURBO.EXE (atau klik file-nya lalu
if (kelas='A') OR (kelas='a') THEN
begin tekan ENTER)
writeln(' Kelas : EKSEKUTIF ');
if(tujuan=1) then 3. tekan Alt-F-N ketikkan source code berikut ini kemudian simpan (F2)
begin
dengan nama cobarec.pas
writeln(' Tujuan : SEMARANG '); harga:= 70000;
end program data_mhs;
else if(tujuan=2) then uses crt;
begin const
writeln(' Tujuan : MAGELANG '); harga:= 80000; N = 5;
end type
tmhs = record
npm : string[8]; nama : string[20]; alamat : string;
else if(tujuan=3) then end;
begin dtmhs = array[1..N] of tmhs;
writeln(' Tujuan : YOGYAKARTA '); harga:= 90000; var
end datamhs : dtmhs;
else i : integer;
writeln('Kode Tujuan SALAH !!');
end begin
else if (kelas='B') OR (kelas='b') then for i:= 1 to N do
begin begin
writeln(' Kelas : PATAS '); {input data dulu }
if(tujuan=1) then with datamhs[i] do
begin begin
writeln(' Tujuan : SEMARANG '); harga:= 40000; clrscr;
end Write('Masukkan NPM : ');
else if(tujuan=2) then Readln(npm);
begin Write('Masukkan Nama : ');
writeln(' Tujuan : MAGELANG '); harga:= 50000; Readln(nama);
end Write('Masukkan Alamat : ');
else if(tujuan=3) then Readln(alamat);
begin end;
writeln(' Tujuan : YOGYAKARTA '); harga:= 60000; end;
end {tampilkan}
else clrscr;
writeln('Kode Tujuan SALAH !!'); for i := 1 to N do
end begin
Write(datamhs[i].npm);
(* --------- masih ada lagi sambungannya -------- *) Write(' ',datamhs[i].nama);
Writeln(' ',datamhs[i].alamat);
end;
Readln;
end.

24 45
Perintah diatas membuat sebuah struktur tabel mahasiswa dan
{ ============= tenang ini sambungan terakhir ========= }
disimpan kedalam tipe data baru berupa record yaitu Data_mhs.
Struktur Data_mhs berisi NIM, Nama, tipe data string NilaiTTS, else if(kelas='C') OR (kelas='c') then
begin
NilaiTAS, NilaiQuiz bertipe data Integer, nilaiAkhir dan ip bertipe real. writeln(' Kelas : EKONOMI ');
if(tujuan=1) then
Variabel tabel_mhs menggunakan struktur record Data_mhs. Untuk begin
writeln(' Tujuan : SEMARANG '); harga:= 10000;
menggunakan salah satu data di dalam struktur data baik mengisi
end
ataupun membaca <nama_variabel>.<nama_field> misalnya else if(tujuan=2) then
begin
tabel_mhs.NilaiUTS writeln(' Tujuan : MAGELANG '); harga:= 20000;
end
Jika didalam sebuah perulangan/looping bisa juga dengan else if(tujuan=3) then
menggunakan perintah : begin
writeln(' Tujuan : YOGYAKARTA '); harga:= 30000;
WITH <variabel_record>[index] DO end
Begin else
Statement1<field3>; writeln('Kode Tujuan SALAH !!');
statement2<field1>; end
else
... writeln('Kode Jenis Kelas SALAH !!');
End;
total_bayar:=harga*jml_tiket; {hitung total bayar}
Jadi cukup menuliskan nama fieldnya saja untuk membaca atau
writeln('==================================');
menulis kedalam sebuah field variabel record. contohnya writeln('Harga Tiket :',harga:7:2);
writeln('TOTAL BAYAR :',total_bayar:7:2);
FOR i:=1 TO jml_mhs DO
writeln('==================================');
begin
write('Pesan Tiket Lagi [Y/T] ?');
writeln;writeln('Data mahasiswa ke- ',i:2);
readln(lagi); {input lagi}
WITH mhs[i] DO
Begin
Write(‘NIM :’; readln(nim); Write(‘Nama :’; readln(nama); until (lagi='T') OR (lagi='t'); { ulang selama lagi TIDAK T atau t}
Write(‘Nilai TTS :’; readln(nilaiTTS); end.
End;
End;
E. Tugas Praktikum (dikumpulkan akhir sesi)
Buka dan editlah source code salah satu program praktikum
sebelumnya coba anda gunakan looping dengan ketentuan sebagai
berikut
1. buatlah pengecekan password pada tampilan awal
2. pada akhir program beri pilihan untuk mengulang lagi tanpa
harus memasukkan password lagi

44 25
F. Tugas Rumah (dikumpulkan pertemuan berikutnya) BAB VIII
Buat sebuah program cek tahun kabisat dengan menggunakan RECORD
bahasa PASCAL dengan alur logika sebagai berikut ini :
start
A. Kompetensi Dasar :
Mahasiswa memahami struktur data variabel, tipe data, record, field
cek password dan tabel
T

Y B. Tujuan :
input(tahun)
1. Mahasiswa memahami dan membuat sebuah struktur/tipe data baru
yang akan digunakan untuk table
T 2. Mahasiswa memahami dan menggunakan record
tahun % 4 = 0 set=”bukan kabisat”

Y C. Teori Singkat
Untuk membuat program pengolah data mahasiswa dimana
tahun % 100=0 T data mahasiswa terdiri dari NIM, Nama, NilaiTTS, NilaiTAS, NilaiQuiz,
&&
tahun % 400≠0 NilaiAkhir dan Index Prestasinya. Masing-masing data yang sejenis
set=”kabisat” tadi didalam basis data disebut field, sedangkan satu data pada
Y
masing-masing field akan memberikan sebuah informasi disebut
set=”bukan kabisat”
dengan record. Kumpulan record bergabung membentuk sebuah
tabel, yaitu tabel mahasiswa. Oleh karena itu maka kita harus
cetak set membuat suatu tipe data baru yang cocok dengan keperluan kita.
Caranya adalah dengan menggunakan perintah record.

type
input(lagi) Data_mhs = record
nim : string; nama : string; ip : real;
nilaiTTS : integer; nilaiTAS : integer;
nilaiQuiz : integer; nilaiAkhir : real;
T end;
lagi = “T “ Var
tabel_mhs : Data_mhs; { membaca variabel untuk menyimpan tabel mahasiswa }
Y

end

26 43
{ =============== ini lanjutannnya ==================== }
BAB V
FUNGSI & PROSEDUR
{menuliskan hasil inputan datamhs[i]^}
writeln; writeln;
writeln(‘Data Berdasarkan Abjad Mahasiswa’);
writeln(‘nim nama ipk ‘);
A. Kompetensi Dasar :
{proses mengurutkan} Mahasiswa memahami tentang fungsi dan perlunya sebuah fungsi dan
begin
for i := 1 to 4 do {untuk i diulang dari 1 hingga 4} prosedur
for j := 1 to 3 do {untuk j diulang dari 1 hingga 3}
with datamhs[i]^ do
if datamhs[i]^.nama < datamhs[j]^.nama then B. Tujuan :
{jika pointer datamhs[i] yang menunjuk nama lebih kecil dari pointer datamhs[j] yang menunjuk nama}
Begin 1. Mahasiswa memahami dan menggunakan fungsi non parametrik
{prosen penukaran}
temp := datamhs[i]^; 2. Mahasiswa memahami dan menggunakan fungsi parametrik
{temp ditugasi menyimpan pointer datamhs[i]}
3. Mahasiswa memahami dan menggunakan prosedur
datamhs[i]^ := datamhs[j]^;
{pointer datamhs[i] ditugasi menyimpan pointer datamhs[j]} 4. Bisa membedakan konsep fungsi dan prosedur
datamhs[j]^ := temp;
{pointer datamhs[j] ditugasi menyimpan temp} 5. Mampu mengaplikasikan ke dalam sebuah program
end;
for i := 1 to 4 do
with datamhs[i]^ do C. Teori Singkat
writeln(nim:5, nama:10, ipk:10:2);
end; Dalam pembuatan sebuah program seringkali ada baris perintah
readln;
end. yang sama dan diulang-ulang. Contoh sederhana perhitungan matematis
seperti perkalian, pembagian, tambah, kurang yang sering diulang hanya
angka/variabel yang berbeda-beda. Blok program ini bisa dibuat dalam
E. Tugas Praktikum (dikumpulkan akhir sesi)
sebuah subprogram, sehingga untuk menggunakannya tidak perlu
Program diatas untuk isi data melalui sebuah looping for gantilah
mengetik ulang cukup dengan memanggilnya dengan nilai yang berbeda.
dengan perintah masukan ‘isi data lagi ? [Y/T]’ silahkan dibuat dan
Subprogram di dalam bahasa Pascal terbagi menjadi fungsi (function)
buatlah tampilan dengan kreasi anda sendiri
dan prosedur (procedure).
F. Tugas Rumah (dikumpulkan pertemuan berikutnya) Fungsi adalah kumpulan baris perintah/blok program yang di buat
Berdasarkan tugas praktikum yang anda buat, pada proses untuk melaksanakan tugas tertentu dan biasanya membawa nilai tertentu.
pengurutan menggunakan bubble sort, rubahlah menggunakan teknik Fungsi ini bisa dipanggil tanpa menulis blok program kembali, sehingga
sorting yang lain program lebih terstruktur mudah untuk dipahami, mencari kesalahan kode
dan dikembangkan lebih lanjut.

42 27
Fungsi pada umumnya memerlukan masukan nilai/variabel disebut D. Langkah Kerja
parameter pada waktu pemanggilannya, yang akan diolah oleh blok Tulis listing/source code program berikut ini kemudian compile dan
program di dalam fungsi. Hasil akhir dari sebuah fungsi adalah sebuah jalankan dengan text editor Turbo Pascal yang ada di laboratorium.
nilai berupa nilai keluaran fungsi, fungsi ini disebut fungsi parametrik. program pointermahasiswa;
uses crt;
Fungsi untuk menghitung pangkat kuadrat misalnya membutuhkan type
parameter yang akan dihitung sehingga nilai hasil fungsi akan muncul. penunjukmhs = ^catatanmhs; {pendeklarasian pointer}
catatanmhs = record {dibuat dalam bentuk record}
Untuk melakukan blok perintah tanpa melibatkan parameter yang nim :string[7];
nama : string[25];
akan diproses oleh blok program disebut dengan fungsi non parametrik.
ipk :real;
Untuk memanggil fungsi cukup dengan mengetik nama fungsinya, end;
var
misalnya fungsi clrscr; yang berfungsi untuk membersihkan layar, datamhs : array [1..4] of penunjukmhs; {var. datamhs pointer dalam bentuk array}
i, j : byte;
randomize; untuk mengacak/random beberapa nilai. Atau sebuah fungsi
temp : catatanmhs;
untuk merubah warna biru, sehingga jika dipanggil maka tampilan akan begin
writeln(‘masukkan 4 buah data mahasiswa:’);
berubah warna biru. Fungsi ini tidak memerlukan parameter untuk for i := 1 to 4 do {perulanagan dari 1 hingga 4}
begin
diproses.
writeln;
Jika subprogram yang akan dibuat memberikan nilai maka fungsi writeln(‘mahasiswa ke ‘, i:2, ‘ :’);
new(datamhs[i]); {membuat memori baru pada pointer datamhs[i], sebanyak perulangan i}
yang digunakan, akan tetapi jika tidak memberikan nilai maka prosedur with datamhs[i]^ do {pada datamhs[i]^ dilakukan}
begin
yang tepat digunakan. Prosedur juga bisa membawa parameter sebagai
write(‘nim mahasiswa ?’); readln(nim);
contoh prosedur untuk membuat garis dengan format tertentu seperti *, -, {pengisian elemen nim pada pointer}
write(‘nama mahasiswa ?’); readln(nama);
=, +, 0 atau karakter apapun yang ingin dijadikan model garis, ketika {pengisian elemen nama pada pointer}
write(‘ipk mahasiswa ?’); readln(ipk);
memanggil prosedur garis disertakan parameter bentuk garisnya. {pengisian elemen ipk pada pointer}
Prosedur maupun fungsi mempunyai struktur seperti struktur end;
end;
pemrograman pascal. Perbedaannya hanya pada bagian akhir. Program writeln(‘data mahasiswa :’);
writeln(‘—————-’);
pascal diakhiri dengan END. sedangkan prosedur dan fungsi END; writeln;
karena sebenarnya prosedur dan fungsi merupakan program didalam writeln(‘nim nama ipk ‘);
writeln;
program yang disebut dengan subprogram. for i := 1 to 4 do {perulangan dari 1 hingga 4}
with datamhs[i]^ do {pada datamhs[i]^ sebanyak perulangan i}
Sebuah subprogram bisa memanggil subprogram yang lain. writeln(nim:5, nama:10, ipk:10:2);
Sebuah fungsi bisa memanggil prosedur atau fungsi yang lain dan begitu
(* Masih ada sambungan dibawah loh !!! *)
sebaliknya. Jika didalam sebuah prosedur/fungsi (induk) juga
dideklarasikan fungsi/prosedur (anak) lain maka prosedur/fungsi yang

28 41
 isi data variabel pointer : didalam/anak tidak bisa dipanggil oleh program utama. Yang bisa
<var_pointer>^ := <data>; dipanggil hanya prosedur/fungsi induk saja.
 Mengambil alamat variabel: Variabel yang dideklarasikan didalam subprogram bisa dibuat lokal
<nama_var> := @ <nama_var_diambil; maupun global maksudnya walaupun ada nama variabel fungsi yang
 prosedur membuat variabel dinamik : sama dengan nama variabel program utama tidak akan mempengaruhi
New(<nama_var>); nilai variabel di program utama selama nama variabel itu tidak diset global
 prosedur menghapus variabel dinamik : oleh fungsi/prosedur itu.
Dispose(<nama_var>);  Bentuk deklarasi fungsi :
Berikut ini contohnya: FUNCTION nama_fungsi(daftar_parameter:tipedata) : tipedata_fungsi ;
Program pointer; < deklarasi >
uses crt; begin
Type statement; statement2; statement3;
Tipestring = string[15]; end;
Penunjukstring = ^Tipestring;
Var
X:string[15]; < deklarasi> : untuk mendeklarasikan var, label, type, const atau
pX,pY : Penunjukstring;
Begin bahkan fungsi/prosedur lain
clrscr;
{isi data var. X dan pointer } contoh fungsi :
X:='var X'; FUNCTION bagi(a,b : integer) : real ; { deklarasi fungsi dan parameter }
pX^ := 'Turbo Pascal'; Begin
writeln('nilai awal'); Bagi := a/b ; { isi fungsi }
writeln('=========='); End;
Writeln('Var. X=',x); Begin { program utama}
Writeln('Pointer =',pX^);
Writeln(bagi(20,5)); { cetak dan panggil fungsi}
pY:=@X; {baca alamat var. X }
Readln; { tahan layar}
pY^:=pX^; {manipulasi data var. X dengan pointer }
End.
writeln('nilai sekarang');
writeln('==============');
Writeln('Var. X=',x);
Writeln('Pointer =',pX^);  Bentuk deklarasi prosedur :
readln;
End.
PROCEDURE nama_prosedur(daftar_parameter:tipedata);
< deklarasi >
Contoh diatas melibatkan variabel X dan variabel pointer pX dan begin
statement; statement2; statement3;
pY. Variabel X berisi ‘var X’ dan variabel pointer pX berisi ‘Turbo
end;
Pascal’. Variabel pY membaca alamat variable X, kemudian diisi sama
dengan variabel pX. Walaupun tidak ada perintah untuk mengubah nilai < deklarasi> : untuk mendeklarasikan var, label, type, const atau
variabel X, karena alamat memori variabel X telah berubah maka nilai bahkan fungsi/prosedur lain
dari variabel X juga ikut berubah.

40 29
contoh penggunaan prosedur : BAB VII
PROCEDURE garis(jenis : char, jml : byte); { deklarasi prosedur dan parameter }
POINTER
Var
X : byte;
Begin
FOR x:=1 TO x=jml DO { isi fungsi } A. Kompetensi Dasar :
Write(jenis) ; { isi fungsi }
Mahasiswa megenali dan memahami tentang pointer
Writeln;
End;
Begin { program utama} B. Tujuan :
garis(‘-‘,20); { panggil prosedur – buat garis single}
1. Mahasiswa memahami dan menggunakan tipe data pointer dengan
garis(‘*‘,20); { panggil prosedur – buat garis bintang}
garis(‘=‘,20); { panggil prosedur – buat garis dobel } bahasa Pascal
Readln; { tahan layar}
2. Mahasiswa dapat memanipulasi memori dengan pointer dengan
End.
bahasa Pascal
contoh prosedur dengan variabel lokal dan global :
3. Mahasiswa mampu mengaplikasikan pointer ke dalam sebuah kasus
Program tuker_tukeran;
uses crt; dengan menggunakan bahasa PASCAL
var
ini, itu : integer ; { variabel program utama -- global }
PROCEDURE tuker(ini:integer;itu:integer); {deklarasi prosedur dan parameter -- lokal } C. Teori Singkat
Var
z : integer ; { variabel prosedur -- lokal } Variabel dinamis tidak dapat dideklarasikan secara eksplisit seperti
Begin variable static dan tidak dapat ditunjukkan secara langsung oleh identifier.
Z := ini; Ini := itu; Itu := z;
Writeln(‘== ditukar ==’); Variabel dinamis hanya dapat ditunjukkan oleh variabel pointer yang
Writeln(‘ini =’,ini);
Writeln(‘itu =’,itu); writeln berisi alamat memori yang digunaan oleh variable dinamis tersebut.
End; Pointer merupakan suatu tipe data dalam Pascal yang berfungsi
Begin { program utama}
Clrscr; { sapu layar} untuk menunjuk dan menyimpan alamat memori. Variabel pointer
Ini := 99; Itu := 11;
Writeln(‘Sebelum ditukar’);
menunjukkan alamat letak dari suatu variabel, dan variable dinamis
Writeln(‘ini : ’,ini); menunjukkan isi nilai variabelnya di alamat yang ditujukkan oleh variable
Writeln(‘itu : ’,itu); Writeln;
pointer.Variabel pointer dapat dideklarasikan dengan tipe data pointer
Tuker(ini,itu); { cetak dan panggil fungsi}
dengan simbol ^.
Writeln(‘Setelah ditukar’);  Pointer bertipe:
Writeln(‘ini : ’,ini);
Writeln(‘itu : ’,itu); Writeln; <nama_var> : ^<tipe_data>;
Readln; { tahan layar}
End.  Pointer tidak bertipe:
<nama_var> : pointer;

30 39
Source code program diatas mempunyai variabel ini dan itu,
prosedur yang dibuat juga menggunakan nama variabel yang sama yaitu
ini dan itu juga. Walaupun nama variabel sama ternyata penukaran nilai
pada prosedur tidak mengubah nilai variabel program utama. Hal ini
dikarenakan variabel yang dideklarasikan pada prosedur dan fungsi
bersifat variabel lokal, dan variabel pada program utama bersifat
variabel global.
Untuk membuat variabel pada prosedur dan fungsi bersifat global,
tambahkan VAR didepan deklarasi parameter. Sebagai percobaan coba
ubahlah source code program diatas deklarasi prosedur pada bagian
PROCEDURE tuker(ini:integer;itu:integer);

Menjadi :
PROCEDURE tuker(var ini:integer; var itu:integer);

Sehingga jika program dijalankan akan ada perbedaan seperti gambar


dibawah ini :

Variabel prosedur Variabel prosedur


bersifat lokal bersifat global

38 31
D. Langkah Kerja D. Langkah Kerja
1. klik kanan start  explore kemudian cari TPX.EXE pada folder install
Turbo Pascal (misalnya di folder C:\TP\BIN\) Tulis listing/source code program berikut ini kemudian compile dan
jalankan dengan text editor program yang ada di laboratorium
PROGRAM array;
USES CRT;
CONST
bulan:array[1..12]of string=('JAN','FEB','MAR','APR','MEI','JUN','JUL','AUG','SEP','OKT','NOV','DES');
awl = 1;
akr = 12;
VAR
hari : array[awl..akr] of integer; { deklarasi array batas pakai CONST }
a,b : integer;
BEGIN
Clrscr; { bersihkan layar }
writeln (' Masukkan jumlah hari ');
writeln(' Bulan ke ');

FOR a:=awl TO akr DO { ulang isi hari }


begin
write(a,'. ',bulan[a]); { baca isi array bulan }
write(' : ');readln(hari[a]); { input array hari }
end;
2. double klik pada TPX.EXE (atau klik file-nya lalu tekan ENTER)
{ cetak isi array }
FOR b:=1 TO 12 DO
writeln('bulan : ',bulan[b],' terdiri dari : ',hari[b],' hari');
readln; { tahan layar }
END.

E. Tugas Praktikum (dikumpulkan akhir sesi)


Modifikasi program diatas untuk cetak isi array ganti menggunakan
PROCEDURE kemudian compile dan jalankan.

F. Tugas Rumah (dikumpulkan pertemuan berikutnya)


Buatlah sebuah program untuk membuat matrik akan tetapi isi
matrik melalui proses input keyboard !!!.

32 37
Bila kita akan memanggil atau menggunakan nilai 80 misalnya, maka kita 3. tekan Alt-F-N ketikkan source code berikut ini kemudian simpan (F2)
memanggilnya dengan nilai[2] maksudnya kita akan menggunakan isi dengan nama faktorial.pas
variabel Nilai nomor index ke-2, sehingga akan menghasilkan nilai 80. Program menghitung_factorial;
Uses crt;
Contoh lain isi variabel array nilai[4] adalah 82. Var { variabel global }
B : integer;
Fak : longint;
 Array Dimensi Dua
function faktorial(N : integer):longint; { deklarasi fungsi }
<nama_var> = ARRAY[m_awal..m_akhir,n_awal..n_akhir2] OF <tipe_data>; var { variabel lokal }
i : integer;
atau
f : longint;
<nama_var> = ARRAY[m_awal..m_akhir] of ARRAY[n_awal..n_akhir2] OF <tipe_data>; begin
f:=1;
for I:=2 to n do { ulang perhitungan }
Array dua dimensi merupakan array yang terdiri dari m buah baris dan n f:= f * i;
buah kolom. Jumlah data ditentukan oleh nomer index awal dan index faktorial := f; { nilai hasil fungsi }
akhir. m_awal, m_akhir untuk array yang pertama (array m) dan n_awal, End;

n_akhir untuk array yang ke-2 (array n). Begin { program utama }
write('Hitung factorial dari : ');
Untuk memanggil data array-nya nama_var[nomor baris,nomor kolom]
readln(b); { input angka yg akan di hitung }
Contoh var fak := faktorial(B); { panggil fungsi }
A = array[1..2,1..3] of integer; writeln(' factorial ', B,' = ', fak); { cetak }
readln; { tahan layar }
array A mempunyai 2 baris dan berisi 3 kolom end.

1 2 3 4. kemudian compile Alt-C lalu tekan ENTER atau Alt-F9


1 1 7 4
2 2 3 9
Definisi variabel untuk setiap elemen tersebut adalah sebagai berikut :
1 2 3
1 A[1,1] A[1,2] A[1,3]
2 A[2,1] A[2,2] A[2,3]

A[1,1] berisi nilai 1


A[2,2] berisi nilai 3
A[1,3] berisi nilai 4

36 33
5. jika tidak ada kesalahan jalankan, Alt-R lalu tekan ENTER atau Ctrl- BAB VI
F9 ARRAY

A. Kompetensi Dasar :
Mahasiswa megenali dan memahami tentang array/ larik

B. Tujuan :
1. Mahasiswa memahami dan menggunakan array dengan bahasa
Pascal
E. Tugas Praktikum (dikumpulkan akhir sesi)
2. Mahasiswa mampu mengaplikasikan array ke dalam sebuah kasus
Buat program tentang perubahan/konversi suhu dari Celsius ke
dengan menggunakan bahasa PASCAL
Fahrenheit atau ke Reamur dengan pemanggilan fungsi konversinya.
Gunakan daya imaginasi dan kreatifitas anda sehingga tampilan lebih
C. Teori Singkat
menarik serta mengurangi kesalahan pengguna (human error).
Array merupakan kumpulan dari nilai-nilai data yang bertipe sama
dalam urutan tertentu yang menggunakan nama yang sama. Letak atau
F. Tugas Rumah (dikumpulkan pertemuan berikutnya) posisi dari elemen array ditunjukkan oleh suatu index. Setiap elemen
Buat program kalkulator, atau program sebelumnya dan proses diakses dengan nomor indeks arraynya.
perhitungan dengan pemanggilan fungsi dan prosedur untuk mengatur  Array Dimensi Satu
tampilannya.
<nama_var> = ARRAY[awal..akhir] OF <tipe_data>;

<tipe_data> menyatakan jenis data/tipe data elemen array (integer, char,


string, dan lain-lain), <nama_var> adalah nama variable array-nya dan
awal menyatakan index awal array dan akhir menyatakan jumlah
maksimal elemen array
Contoh: var
nilai = array[1..5] of integer;

dideklarasikan variable array nilai untuk 5 buah data bertipe data integer

nilai[1] nilai[2] nilai[3] nilai[4] nilai[5]


75 80 69 82 76

34 35

You might also like