Professional Documents
Culture Documents
PEMROGRAMAN I
( Turbo Pascal ver 7.0 )
Edisi 2
Oleh :
Andi Widiyanto, M.Kom
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
TYPEWRITER or PROGRAMMER
70
4. kemudian compile Alt-C lalu tekan ENTER atau Alt-F9
DAFTAR ISI
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
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
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 DirectoriesEXE & 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 DestinationENTER
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.
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.
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.
Contoh :
read (file_id, tampung);
Writeln (tampung);
P
62 7
BAB II Beberapa perintah untuk memanipulasi file didalam bahasa
DASAR PEMROGRAMAN DAN TIPE DATA PASCAL PASCAL diantaranya sebagai berikut :
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.
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.
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.
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:
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
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
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 ( .. )
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
50 19
BAB IV Berikut ini adalah beberapa perintah untuk mempercantik tampilan
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);
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);
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 !!! *)
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);
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 ');
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.
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>;
dideklarasikan variable array nilai untuk 5 buah data bertipe data integer
34 35