Bahasa Pascal 3

 



Bahasa (language)  

yaitu  suatu sistim untuk berkomunikasi. Bahasa tertulis memakai  simbol (yaitu huruf) 

untuk membentuk kata. Dalam ilmu komputer,bahasa manusia disebut bahasa alamiah 

(natural languages), dimana komputer tidak bisa memahaminya, sehingga diperlukan suatu 

bahasa komputer.  

Bahasa pemrograman (programming language)  

Komputer mengerjakan transformasi data berdasar  kumpulan perintah - program - yang 

telah dibuat oleh pemrogram. Kumpulan perintah ini harus dimengerti oleh komputer, 

berstruktur tertentu (syntax) dan bermakna. Bahasa pemrograman merupakan notasi untuk 

memberi  secara tepat program komputer. Berbeda dengan bahasa alamiah, mis. Bahasa 

Indonesia, Inggris dsb. yang merupakan bahasa alamiah(natural language), sintaks dan 

semantik bahasa pemrograman (komputer) ditentukan secara kaku, sehingga bahasa 

pemrograman juga disebut sebagai bahasa formal (formal language).  

 

Jadi, dalam bahasa pemrograman yang dipakai  sebagai alat komunikasi untuk memberi  

perintah kepada komputer tidak berlaku kebebasan berekspresi seperti laiknya dalam bahasa 

alamiah.  

 

Pemrograman dalam pengertian luas meliputi seluruh kegiatan yang tercakup dalam 

pembuatan program, termasuk analisis kebutuhan (requirement's analysis) dan keseluruhan 

tahapan dalam perencanaan (planning) , perancangan (design) dan pewujudannya 

(implementation).  

 

 

Dalam pengertian yang lebih sempit, pemrograman merupakan pengkodean (coding atau 

program writing = penulisan program) dan pengujiannya (testing) berdasar  rancangan 

tertentu. Pemahaman yang lebih sempit ini sering dipakai  dalam pembuatan program-

program terapan komersial yang membedakan antara system analyst yang bertanggung 

jawab dalam menganalisa kebutuhan, perencanaan dan perancangan program dengan 

pemrogram (programmer) yang bertugas membuat kode program dan menguji kebenaran 

program.  

Generasi bahasa pemrograman: 

• Generasi I: machine language  

• Generasi II: assembly language : Asssembler  

• Generasi III: high-level programming language: C, PASCAL, dsb.  

• Generasi IV: 4 GL (fourth-generation language): SQL  

 

Gambar 2. Tingkatan bahasa komputer  

 

1. Bahasa Tingkat Rendah (low-level language)  

Merupakan bahasa assembly atau bahasa mesin. Lebih dekat ke mesin (hardware), dimana 

high-level programming languages dekat pada bahasa manusia.  

- Bahasa Mesin (machine language) 

Bahasa mesin merupakan representasi tertulis machine code (kode mesin), yaitu kode operasi 

suatu mesin tertentu. Bahasa ini bersifat khusus untuk mesin tertentu dan "dimengerti" 

langsung oleh mesin, sehingga pelaksanaan proses sangat cepat. Bahasa mesin kelompok 

komputer tertentu berlainan dengan bahasa mesin kelompok komputer yang lain. Abstraksi 

bahasa ini yaitu  kumpulan kombinasi kode biner "0" dan "1" yang sangat tidak alamiah bagi 

kebanyakan orang - kecuali insinyur pembuat mesin komputer. sebab  tidak alamiah bagi 

kebanyakan orang, bahasa mesin juga disebut bahasa tingkat rendah. 

- Bahasa Assembly (assembly language)  

Bahasa rakitan (assembly language) merupakan notasi untuk menyajikan bahasa mesin yang 

lebih mudah dibaca dan dipahami oleh manusia. Bahasa ini sudah memakai  simbol 

alpabet yang bermakna (mnemonic). Contoh “MOV AX 1111”, pindahkan ke register AX nilai 

1111.Proses data oleh komputer berdasar  perintah bahasa rakitan yaitu  cepat. Meski 

demikian masih merepotkan-bahkan bagi kebanyakan pemrogram, sebab  masih harus 


 

 

mengingat-ingat tempat penyimpanan data. Bahasa rakitan juga bersifat khusus untuk mesin 

tertentu. Contoh: Assembler.  

2. Bahasa Tingkat Tinggi (high-level language)  

 

yaitu  bahasa pemrograman yang dekat dengan bahasa manusia, kelebihan utama dari 

bahasa ini yaitu  mudah untuk di baca, tulis, maupun diperbaharui, sebelum bisa dijalankan 

program harus terlebih dahulu di-compile. Contoh Ada, Algol, BASIC, COBOL, C, C++, 

FORTRAN, LISP, dan Pascal, dsb.  

 

Pada generasi bahasa pemrograman terakhir sekarang ini, kedua cara interpretasi dan 

kompilasi digabungkan dalam satu lingkungan pengembangan terpadu (IDE = integrated 

development environment).  

 

Cara interpretasi memudahkan dalam pembuatan program secara interaktif dan cara 

kompilasi menjadikan eksekusi program lebih cepat. Pertama program dikembangkan 

interaktif, kemudian setelah tidak ada kesalahan keseluruhan program dikompilasi. Contoh 

bahasa program seperti ini yaitu  Visual BASIC yang berbasis BASIC dan Delphi yang 

berbasis PASCAL.  

 

Bahasa tingkat tinggi bersifat portable. Program yang dibuat memakai  bahasa tingkat 

tinggi pada suatu mesin komputer bersistem operasi tertentu, hampir 100% bisa dipakai  

pada berbagai mesin dengan aneka sistem operasi. Kalaupun ada perbaikan sifatnya kecil 

sekali.  

3. Fourth-Generation Language (4GL) 

Lebih dekat ke bahasa manusia dibandingkan dengan high-level programming languages. 

Biasanya dipakai untuk mengakses database. Contoh perintah pada bahasa SQL: FIND ALL 

RECORDS WHERE NAME IS "JOHN" 

 

Bahasa Pemrograman untuk tujuan tertentu  

Tabel 2. Bahasa Pemrograman untuk tujuan tertentu. (Mc. Connell, h 46)  

Jenis Program Bahasa Terbaik Bahasa Terburuk 

Data terstruktur ADA, C /C++, PASCAL Assembler, BASIC 

Proyek cepat BASIC PASCAL, ADA, Assembler 

Eksekusi cepat Assembler, C BASIC, Intrepreter Language 

Kalkulasi matematika FORTRAN  PASCAL 

memakai  memori dinamis PASCAL, C BASIC  

 Lingkungan bermemori terbatas  BASIC, Assembler, C FORTRAN 

Program real-time ADA, Assembler, C BASIC, FORTRAN 

Manipulasi string BASIC, PASCAL C 

Program mudah dikelola PASCAL, ADA C, FORTRAN 

 


 

 

Tabel 2. Rasio pernyataan bahasa tingkat tinggi dengan kode bahasa rakitan yang setara. (Mc. Connell, 

h 46) 

Bahasa Rasio 

Assembler 1: 1 

ADA 1 : 4.5  

Quick / Turbo / Basic 1 : 5  

C  1 : 2.5  

FORTRAN  1 : 3  

PASCAL 1 : 3.5 

 

Compiler dan Intepreter 

 Compiler yaitu  suatu program yang menterjemahkan bahasa program (source code) ke 

dalam bahasa objek (object code). Compiler menggabungkan keseluruhan bahasa program 

dikumpulkan kemudian disusun kembali. 

 

Gambar 3. proses kompilasi program komputer  

   

Tahapan Kompilasi: 

 1. Pertama source code ( program yang ditulis) dibaca ke memory komputer.  

2. source code tersebut diubah menjadi object code (bahasa assembly)  

3. object code dihubungkan dengan library yang dibutuhkan untuk membentuk file yang bisa 

di eksekusi.  

 

Compiler memerlukan waktu untuk membuat suatu program yang dapat dieksekusi oleh 

komputer. Tetapi, program yang diproduksi oleh Compiler bisa berjalan lebih cepat 

dibandingkan dengan yang diproduksi oleh Interpreter, dan bersifat independen. 

 

Interpreter  

berbeda dengan compiler, Interpreter menganalisis dan mengeksekusi setiap baris dari 

program tanpa melihat program secara keseluruhan. Keuntungan dari Interpreter yaitu  


 

 

dalam eksekusi yang bisa dilakukan dengan segera. Tanpa melalui tahap kompilasi, untuk 

alasan ini interpreter dipakai  pada saat pembuatan program berskala besar.  

Tipe Pemrograman  

1. Pemrograman terstruktur  

Pemrograman terstruktur yaitu  cara pemrosesan data yang terstuktur. Terstruktur dalam: 

analisa, cara dan penulisan program.  

 

Prinsip pemrograman terstruktur:  

a. Gunakan rancangan pendekatan dari atas ke bawah (top down design),  

b. Bagi program ke dalam modul-modul logika yang sejenis,  

c. Gunakan sub-program untuk proses-proses sejenis yang sering dipakai ,  

d. Gunakan pengkodean terstruktur: IF ... THEN, DO ... WHILE dan lain-lainnya,  

e. Hindarkan penggunaan perintah GO TO bila tidak diperlukan,  

f. Gunakan nama-nama bermakna (mnemonic names), dan  

g. Buat dokumentasi yang akurat dan berarti.  

Dalam perencanaan dan perancangan dari atas ke bawah, kategori dan penyelesaian masalah 

dimulai dari bagian yang utama kemudian dibagi menjadi bagian yang lebih kecil. Rancangan 

cara ini memudahkan penulisan, pengujian, koreksi dan dokumentasi program.  

 

Tahapan rancangan atas ke bawah dalam pemrograman:  

1. Tentukan keluaran (output) yang diminta, masukan (input) yang diperlukan danproses-

proses utama yang diperlukan untuk transformasi data. 

2. Membagi proses utama ke dalam modul-modul fungsional.  

3. Buat algoritma msing-masing modul, dari modul utama ke sub-sub modul. 

 

Setiap modul dalam proses rancangan atas ke bawah biasanya dibatasi dalam isi maupun 

batasan-batasan berikut:  

1. Setiap modul hanya memiliki  satu masukan dan keluaran  

2. Setiap modul hanya mewakili satu fungsi program.  

 

Rancangan (design) terstruktur:  

1. Membagi program menjadi sub-program  

2. Menekankan fungsionalitas.  

3. Cocok untuk sistem yang banyak memiliki  fungsi independen. Gaya penulisan program 

terstruktur:memakai  indentasi sehingga jelas struktur dan kontrol program.Memudahkan 

pembacaan, pemahaman, penelusuran kesalahan dan pembuatan koreksi.  

 

2. Bahasa pemrograman prosedural – terstruktur 

 

Bahasa pemrograman prosedural yaitu  bahasa pemrograman yang mendukung pembuatan 

program sebagai kumpulan prosedur. Prosedur-prosedur ini dapat saling memanggil dan 

dipanggil dari manapun dalam program dan dapat memakai  parameter yang berbeda-

beda untuk setiap pemanggilan. Prosedur yaitu  bagian dari program untuk melakukan 

operasi-operasi yang sudah ditentukan dengan memakai  parameter tertentu. Bahasa 

pemrograman terstruktur yaitu  pemrograman yang mendukung abstraksi data, pengkodean 

terstruktur dan kontrol program terstruktur. Kontrol program terstruktur:  

1. Runtun - urut (sequence)  


 

 

2. Pilihan (selection)  

3. Pengulangan (repetition - loop)  

 

Gambar 4. Tahap pengembangan program  

1. Batasan Masalah Merencanakan sistim dan spesifikasi program: Siapa yang akan 

memakai  program dan untuk apa? dengan cara: 

- Menentukan tujuan dan hasil yang akan dicapai 

- Menentukan hal-hal yang diperlukan oleh sistim  

- Pengumpulan data. 

 

2. Pengembangan Model Pembuatan model dari sistim yang akan kita bangun, model yaitu  

suatu gambaran sederhana dari sistim yang kita buat. Dengan pembuatan model akan terlihat 

dengan jelas hubungan antara objek-objek dalam sistim yang akan kita bangun. Untuk 

penyelesaian aritmatik, biasanya model dibuat dalam bentuk rumus matematik.  

Contoh: untuk membuat program luas_lingkaran kita membuat model matematis c = a x b  

 

3. Rancangan algoritma Pembuatan urutan instruksi yang akan ditulis pada program ( 

dijelaskan lebih lanjut)  

 

4. Pemrograman Implementasi algoritma ke dalam program (algoritma sendiri dalam 

komputer yaitu  merupakan program). 

 

5. Uji dan Validasi Pengujian terhadap program : seperti kesalahan penulisan (syntax error) , 

kesalahan saat eksekusi (runtime error) kesalahan logika program (program berjalan tapi 

menghasilkan output yang salah- fatal error).  

 

6. Dokumentasi Pembuatan catatan pada program terutama pada modul-modul yang rumit.  

Contoh: Sistim Pengembangan Software Life Cycle  

 

 

 

Gambar 5. Sistim Pengembangan Software Life Cycle 

 

 

 

 

 

ALGORITMA  

Perencanaan dan perancangan program komputer juga disebut pembuatan algoritma. Secara 

umum, algoritma: "kumpulan urutan perintah yang menentukan operasi-operasi tertentu yang 

diperlukan untuk menyelesaikan suatu masalah ataupun mengerjakansuatu tugas".  

 

Bila data yang dipakai  benar, maka algoritma akan selalu berhenti dengan memberi  

hasil yang benar pula. Pembuatan algoritma harus selalu dikaitkan dengan:  

 

a. Kebenaran algoritma, yakni bila program selesai maka hasilnya juga benar  

b. Kompleksitas - lama dan jumlah - waktu proses dan penggunaan memori.  

 

Algoritma - dan tentu program yang baik, bercirikan:  

 

a. Tepat sasaran: memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan  

b. Flexible dan portable: - Flexible untuk dikembangkan lebih lanjut - Portable untuk 

dipakai  pada berbagai sistem dan mesin  

c. Bersih dari kesalahan sistem ataupun lojik  

d. Murah:  

- Efisien dalam penggunaan piranti memori dan penyimpanan lainnya.  

- Cepat waktu pelaksanaannya.  

e. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan pengembangan.  

f. Algoritma merupakan pemberian (description) pelaksanaan suatu proses.Sebuah proses 

dikerjakan oleh pemroses mengikuti algoritma yang sudah dibuat. Algoritma merupakan 

urutan langkah instruksi yang logis. Setiap langkahinstruksi mengerjakan suatu tindakan aksi.  

 

Bila suatu aksi dilaksanakan, maka operasi atau sejumlah operasi yang bersesuaian dengan 

aksi itu dikerjakan oleh pemroses. 

 


 

 

Hasil atau pengaruh suatu aksi diamati dengan membandingkan keadaan sebelum (t0) dan  

sesudah suatu aksi dikerjakan (t1).  

t0: kumpulan data ke 1 .. N belum terurut membesar  

Algoritma PENGURUTAN DATA  

t1: kumpulan data ke 1 .. N terurut membesar  

  

Aturan Penulisan Teks Algoritma 

Tidak ada notasi yang baku dalam penulisan teks algoritma. Algoritma bukanlah program 

yang harus mengikuti aturan-aturan tertentu. Meski demikian, algoritma dituliskan mendekati 

gaya bahasa pemrograman umumnya. Misal, tulis nilai X dan Y, dituliskan dalam algoritma 

sebagai write(X,Y). Perhatikan dalam notasi write(X,Y) ini hanya memerintahkan penyajian 

nilai X ke piranti keluaran (output). Dalam notasi itu juga tidak memasalahkan format 

ataupun bentuk-bentuk tampilan lainnya, seperti dicetak dalam satu baris X dan Y, pemakaian 

pemisah antara X dan Y memakai  koma atau spasi. Hal-hal yang bersifat teknis ini baru 

dipikirkan waktu penulisan program. Algoritma yaitu  bebas bahasa pemrograman.  

 

 

 

Teks Algoritma  

 

Mengikuti alur konsep pemrograman prosedural, suatu teks algoritma disusun dalam tiga 

bagian, yaitu:  

 

a. Bagian kepala algoritma,  

b. Bagian deklarasi, dan  

c. Bagian deskripsi algoritma.  

 

Setiap bagian disertai dengan penjelasan atau dokumentasi tentang maksud pembuatan teks. 

Bagian penjelasan diawali dan diakhiri dengan simbol { dan }.  

 

Algoritma NAMA_ALGORITMA { Penjelasan tentang algoritma yang menguraikan secara 

singkat hal-hal yang dilakukan oleh algoritma }  

 

DEKLARASI { Semua nama yang dipakai , meliputi nama-nama: tipe, konstanta, variabel. 

Juga nama sub-program dinyatkan di sini }  

 

DESKRIPSI { Semua langkah atau aksi algoritma dituliskan di sini }  

   

Contoh:  

 

1). Kepala algoritma:  

Algoritma Luas_Lingkaran { Menghitung luas lingkaran dengan ukuran jejari tertentu. 

Algoritma menerima masukan jejari lingkaran, menghitung luasnya, dan menyajikan hasilnya 

ke piranti keluaran }  

 

Perhatian, dalam menulis nama-nama dalam algoritma harus memiliki  makna yang 

mencerminkan proses, sifat atau identitas lainnya yang melekat dengan suatu proses, tipe, 

konstanta, variabel, sub-program dan lain-lainnya. Nama-nama yang bermakna disebut 


 

 

mnemonic.  

 

2) Deklarasi algoritma:  

 

DEKLARASI { nama konstanta }  

const PHI = 3.14; { Nilai phi = 22/7 }  

{ nama peubah } var R : real; { input jejari lingkaran bilangan riil } 

l_Lingkaran : real; { luas lingkaran bilangan riil }  

{ nama sub program }  

procedure TUKAR(input/output A:integer, input/output B:integer)  

{ Mempertukarkan nilai A dan B.Parameter A dan B sudah terdefinisi nilainya.Setelah pertukaran, A berisi nilai B 

dan B berisi nilai A } 

 

3) Deskripsi algoritma: Bagian ini merupakan bagian inti algoritma yang berisikan uraian 

langkah-langkah penyelesaian suatu masalah. Setiap langkah algoritma dibaca dari atas ke 

bawah.  

Urutan penulisan menentukan urutan pelaksanaan perintah.  

{ Baca data jejari lingkaran R.Jika R <= 0 tulis pesan data salah, selain itu hitung luas lingkaran. Tampilkan luas 

lingkaran. }  

baca(R);  

jika R <= 0 then tulis("Data salah !")  

selain itu l_Lingkaran = PHI x R x R;  

tulis(l_Lingkaran); 

 

 

E. Diagram Alir (Flow chart) Merupakan bentuk grafis/visual dari algoritma Bentuk umum dari simbol-

simbol dalam diagram alir:  

 

 

Simbol untuk mulai (start) atau akhir (end) program  

 

Simbol untuk pembacaan (read) data atau penulisan hasil (write) 

pada layar  

 

Simbol untuk suatu proses terhadap data pada program  

 

Simbol untuk suatu pernyataan pilihan (optional) pada program.  

 

Simbol untuk penghubung antar aktifitas.  

 

Konektor, Simbol untuk memutus aktivitas sebab  keterbatasan 

media kertas.  

 

Sub program 

 

komentar 


 

 

Contoh pemakaian flowchart:  

 

 -Sequential (berurutan)  

 

perhitungan volume dan luas permukaan silinder 

 

 

 

Selection/Branching Structure (Struktur pemilihan) 


 

 

 

 

 

Repetition/Looping Structure(Struktur pengulangan) 


 

 

Kombinasi 

 

 


 

 

Pseudocode yaitu  penulisan algoritma memakai  gaya bahasa pemrograman 

pemrograman tertentu. Contoh deskripsi algoritma di atas bila ditulis menggunkan gaya 

bahasa PASCAL akan berbentuk:  

 

BEGIN { mulai }  

{ input }  

read(R);  

{ proses } jika R <= 0 

then tulis("Data salah !")  

selain itu l_Lingkaran = PHI x R x R;  

{ output } tulis(l_Lingkaran); 

 END; { selesai } 

 

  

 

 

BAHASA PASCAL 

1. Sejarah PASCAL  

 

Merupakan pengembangan dari bahasa ALGOL 60, bahasa pemrograman untuk sains 

komputasi. Tahun 1960, beberapa ahli komputer bekerja untuk mengembangkan bahasa 

ALGOL, salah satunya yaitu  Dr. Niklaus Wirth dari Swiss Federal Institute of Technology 

(ETH-Zurich), yang merupakan anggota grup yang membuat ALGOL. Tahun 1971, dia 

menerbitkan suatu spesifikasi untuk highly-structured language (bahasa tinggi yang 

terstruktur) yang menyerupai ALGOL. Dia menamainya dengan PASCAL (seorang filsuf dan 

ahli matematika dari Perancis) Pascal bersifat data oriented, yaitu programmer diberi 

keleluasaan untuk mendefinisikan data sendiri. Pascal juga merupakan teaching language 

(banyak dipakai untuk pengajaran tentang konsep pemrograman). Kelebihan yang lain yaitu  

penulisan kode Pascal yang luwes, tidak seperti misalnya FORTRAN, yang memerlukan 

programmer untuk menulis kode dengan format tertentu. Bentuk dasar program Pascal yaitu  

seperti berikut:  

 

program TITLE ;  

begin pernyataan;  

pernyataan  

end. 

 

2. PASCAL sebagai bahasa terstruktur  

 

Sebagai bahasa terstruktur, PASCAL memiliki  ciri-ciri sebagai berikut:  

 

1. Berurutan  

Susunan dari kode-kode dalam teks Pascal harus ditulis secara urut dari atas, pernyataan-

pernyataan yang ditulis lebih awal akan dieksekusi lebih dahulu. Oleh sebab  itu, suatu 

pernyataan yang menyangkut suatu variabel di dalam program, maka variable itu harus 

terdefinisi dahulu sebelumnya. Hal ini terutama menyangkut pada pemanggilan sub-program 

oleh sub-program yang lain. Bisa dibaca lebih lanjut pada bagian sub-program.  

 


 

 

2. Blok dengan batas-batas yang jelas. 

Pascal memberi  pembatas yang jelas pada tiap-tiap blok, seperti pada blok program 

utama, sub-program, struktur kontrol (pengulangan/ pemilihan), dll. Pemakaian kata kunci 

begin untuk mengawali operasi pada blok dan end untuk menutupnya memudahkan 

programmer menyusun programnya dengan mudah.  

 

Seperti contoh:  

If X>0 then  

begin Write ( ‘ bilangan positif’);  

Writeln ( ‘ program selesai’);  

end; 

 

3. Satu pintu masuk dan satu pintu keluar pada blok pemilihan dan pengulangan. Contoh di 

atas juga mengilustrasikan pintu masuk tunggal pada suatu blok pemilihan yaitu suatu test 

logika X>0, dengan pintu keluaran yang satu pula (satu disini maksudnya bukan dua baris 

perintah output tapi suatu paket perintah yang dirangkai dengan begin .. end.  

 

 

3. Bakuan PASCAL  

 

Dibakukan oleh ISO pada tahun 1983 dan dikembangkan dalam beberapa versi, diantaranya: 

USCD PASCAL, MS PASCAL, TURBO PASCAL dll. Dengan semakin berkembangnya teknologi 

dalam komputasi, Pascal dimanfaatkan untuk pengembangan DELPHI (berasal dari nama 

suatu kota di masa Yunani kuno), suatu bahasa pemrograman visual yang menonjolkan pada 

efek grafis dan orientasi pada objek-objek yang siap dipakai, sebab  memiliki Visual 

Component Library (VCL).  

 

4. Struktur Bahasa PASCAL secara umum 

 

 Pascal memiliki  struktur sebagai berikut:  

 

1. Bagian Judul Program  

 

2. Bagian Deklarasi  

a. Deklarasi tipe data (TYPE)  

b. Deklarasi variabel (VAR)  

c. Deklarasi konstanta (CONST)  

d. Deklarasi label (LABEL)  

e. Deklarasi sub-program (PROCEDURE dan FUNCTION)  

 

3. Bagian Program Utama Perintah-perintah.  

Teks Pascal setidaknya memiliki bagian Judul Program, bagian Deklarasi, dan Bagian Program 

Utama yang berupa perintah-perintah. Sedangkan untuk bagian deklarasi menyesuaikan 

dengan isi dari program itu sendiri. Contoh program PASCAL:  

 

program TAMBAH_00; { Menjumlahkan dua bilangan yang nilainya diberikan dalam perintah}  

var X, Y, Z: integer; { Deklarasi variabel X,Y dan Z sebagai bilangan bulat }  

BEGIN { Program Utama Mulai }  

X := 50; { Perintah memberi  nilai 50 pada var. X }  

Y := 25; { Perintah memberi  nilai 25 pada var. Y }  

Z := X + Y; { Perintah menjumlahkan X dan Y serta menyimpan hasilnya ke Z}  

END. { Akhir Program Utama } 


 

 

 

 

 

Pada contoh ini nilai X dan Y tidak bisa sembarang, sebab  didefiniskan tertentu. Agar nilai X 

dan Y bisa bebas ditentukan, nilai X dan Y dibaca dari default input.  

 

program TAMBAH_01; { Menjumlahlan dua buah bilangan yang dibaca dari default input }  

var X, Y, Z: integer; { Deklarasi variabel X,Y dan Z sebagai bilangan bulat }  

BEGIN { Program Utama Mulai }  

read(X); { Membaca nilai X lewat key-board }  

read(Y); { Membaca nilai Y lewat key-board }  

Z := X + Y; { Menjumlahkan X dan Y serta menyimpan hasilnya ke Z }  

write(Z); { Menyajikan Z ke layar monitor } 

END. { Akhir Program Utama } 

 

Dasar Bahasa PASCAL  

 

Unsur-unsur Pemrograman  

a. Mendapatkan data dengan membaca data dari default input (key board, file atau sumber 

data lainnya).  

b. Menyimpan data ke dalam memori dengan struktur data yang sesuai,  

c. Memproses data dengan instruksi yang tepat.  

d. Menyajikan atau mengirimkan hasil olahan data ke default output (monitor, file atau tujuan 

lainnya).  

 

 

Dalam mengolah data diperlukan pengelolaan instruksi terstruktur:  

 

a. Beberapa instruksi dikelompokkan dalam satu blok atau model yang mengerjakan tugas tertentu.  

b. Beberapa perintah dilaksanakan dengan persyaratan tertentu.  

c. Beberapa perintah dilaksanakan berulang dengan jumlah pengulangan tertentu.  

 

Identifier dipakai  untuk nama: Program, Sub-program (procedure dan function),  

nama: Variable, Constant, Type, Label.  

 

Nama-nama ini dipakai  untuk pemakaian dan pemanggilan dalam program. Ketentuan 

penulisan identifier  

 

a. Nama identifier harus dimulai dengan karakter huruf alfabet: a sampai z, A sampai Z atau karakter '_' 

(underscore - garis bawah)  

b. Karakter berikutnya boleh karakter numerik (0 .. 9) atau kombinasi alphanumerik (huruf-numerik).  

c. Panjang nama, pada berbagai versi Pascal umumnya antara 32 - 63.  

d. Tidak boleh memakai  karakter istimewa: + - * / | \ = < > [ ] . , ; : ( ) ^ @ { } $ # ~ ! % & ` " ' dan ? 

Contoh penulisan:  

Penulisan yang benar: X _PQR Beta Sudut_Alpha luasLingkaran  

Penulisan yang salah: 3D sisi-Kanan B#  

 

 

 

 

Jenis identifier  

 

a. Identifier umum 

 Merupakan identifier yang didefinisikan sendiri oleh pemrogram. Pemrogram memiliki  

kebebasan untuk menentukan nama identifiernya, dengan syarat nama tersebut tidak sama 

dengan identifier standar dan reserved word yang akan dibahas lebih lanjut. Hal ini untuk 

mencegah kesalahan yang bisa timbul akibat tumpang tindih identifier dalam program. 

 

b. Identifier Standar (Baku)  

Merupakan identifier yang didefinisikan oleh pembuat kompiler Pascal. Biasanya pembuat 

kompiler menyediakan suatu library yang sudah ada didalam kompiler. Library berisi berbagai 

procedure, fungsi atau unit yang sudah siap pakai. Misalnya Turbo Pascal Windows 1.5 

memiliki suatu unit untuk memproses output yaitu wincrt, gotoxy, yang dengan mudah bisa 

dipakai oleh programmer di dalam menuliskan kode-kode programnya. Dinamai Identifier 

Standar sebab  suatu kompiler tidak harus memilikinya, masing-masing kompiler 

dimungkinkan memiliki  identifier yang berbeda untuk suatu tugas yang hampir sama. 

Misalnya Turbo Pascal versi DOS memakai  crt untuk melakukan fungsi yang sama 

dengan wincrt (TPW 1.5).  

 

Beberapa Identifier Standar yang dimiliki oleh kompiler-kompiler Pascal antara lain: 

 

abs arctan boolean char cos dispose eof eoln exp false input integer ln maxint new odd ord output pack 

page pred read readln real reset rewrite round sin sqr sqrt succ text true trunc write writeln 

 

 

 

c. Identifier "reserved word", yaitu yang sudah didefinisikan dan dipakai  oleh bahasa  

 

PASCAL sendiri (Kita tidak bisa menamai identifier kita dengan ini).  

 

and array begin case const div do downto else end file for forward function goto if in label mod nil not of 

or packed procedure program record repeat set then to type until var while with 

 

 

Deklarasi Variable:  

 

Mendeklarasikan varibel yaitu :  

a. memberi  nama variabel sebagai identitas pengenal  

b. Menentukan tipe data variabel  

 

Contoh deklarasi variabel:  

var K : integer;  

R : real;  

C : char;  

T : boolean; 

 

 

Beberapa identifier yang sejenis bisa dideklarasikan bersamaan.  

 

var i, j, k : integer;{Variabel i, j dan k sebagai integer} 

namaMHS, alamatMHS : char; {Nama dan alamat mahasiswa } 


 

 

 

Deklarasi Konstanta:  

 

Mendeklarasikan konstanta yaitu :  

a. memberi  nama konstanta sebagai identitas pengenal  

b. Menentukan nilai konstanta  

 

Contoh deklarasi konstanta:  

 

 

const MaximumSize = 100; {integer }  

ExitCommand = 'Q'; {char } 

 

Tipe Data  

Tipe data yang disediakan oleh PASCAL meliputi:  

 

1. Tipe Data Sederhana  

merupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan 

bulat), real (bilangan pecahan), char (alphanumerik dan tanda baca), dan boolean (logika). 

Untuk data integer dan real masing-masing terbagi menjadi beberapa kategori  

 

a. Bilangan Integer  

merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat 

dalam tabel 1. tabel 1 menunjukkan jenis data, ukuran dalam memori dan rentang nilainya.  

tabel 1. Tipe Data Bilangan Integer  

Tipe Data Ukuran Tempat Rentang Nilai  

 Byte 1 byte 0 s/d +255 

Shortint   1 byte -28 s/d +127 

 integer  2 bytes  -32768 s/d 32767 

Word   2 bytes 0 s/d 65535  

Longint   4 bytes 

2147483648 s/d 

2147483647 

 

Contoh bilangan integer yaitu : 34 6458 -90 0 1112 Penggolongan tipe data integer tersebut 

dimaksudkan untuk membatasi alokasi memori yang dibutuhkan misalkan untuk suatu 

perhitungan dari suatu variabel bilangan diperkirakan nilai maksimumnya 32767 kita cukup 

mendeklarasikan variabel bilangan sebagai integer (2 byte), daripada sebagai longint(4 byte).  

 

Di dalam kompilernya, Pascal menyediakan konstanta untuk bilangan Integer yaitu: MaxInt 

and MaxLongInt, pemrogram bisa memakai nya di dalam programnya tanpa harus 

terlebih dahulu mendefinisikannya. 

-MaxInt bernilai 32.767  


 

Page : 20 

-MaxLongint bernilai 2.147.483.647.  

 

 

 

 

 

 

contoh:  

Program display_maxint;  

uses wincrt;  

begin writeln (maxint)  

end.  

 

Hasilnya: 32.767 

 

 

b. Bilangan Real  

 

Bilangan real atau nyata merupakan jenis bilangan pecahan, dapat dituliskan secara biasa 

atau model scientific . Contoh bilangan real: 34.265 -3.55 0.0 35.997E+11, dimana E 

merupakan simbol perpangkatan 10. Jadi 452.13 memiliki  nilai sama dengan 4.5213e2. 

Penggolongan tipe data bilangan real dapat dilihat pada tabel 2.  

 

tabel 2. Bilangan Real  

Tipe Data Ukuran Tempat Rentang Nilai  

real  6 bytes  2.9 x 10-39 s/d 1.7 x1038 

single   4 bytes 1.5 x 1045 s/d 3.4 x 1038    

double  8 bytes  5.0 x 10-324 s/d 1.7 x 10308 

extended   10 bytes 3.4 x 10-4932 s/d 1.1 x 104932 

comp   8 bytes -9.2x 1018 s/d 9.2x 1018 

   

c. Char  

tipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 266 macam yang 

terdapat dalam tabel ASCII (American Standard Code for Information Interchange). Contoh: 

'a' 'B' '+', dsb. Yang perlu diingat bahwa dalam menuliskannya harus dengan memakai tanda 

kutip tunggal. Jenis data ini memerlukan alokasi memori sebesar 1(satu) byte untuk masing-

masing data.  

 

d. Tipe Data Boolean 

merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE (benar) atau FALSE 

(salah). Turbo Pascal for Windows memiliki tiga macam jenis ini yaitu: Boolean, WordBool, 

dan LongBool. Tipe boolean memakai memori paling kecil, sedangkan WordBool dan LongBool 

dipakai untuk menulis program yang sesuai dengan lingkungan Windows.  

 

Tabel 2. Tipe Data Boolean  

Tipe Data Ukuran Tempat 

Boolean  1 byte 


 

WordBool  2 byte 

Longbool  3 byte 

 

Sebagai bilangan ordinal boolean true memiliki  nilai 1(satu), sedangkan false nilainya 

yaitu  0(nol).  

 

 

 

Contoh:  

 

Program display_bool;  

uses wincrt;  

begin writeln(ord(true));  

writeln(ord(false));  

end.  

 

Hasilnya: 1 0 3.2. 

 

 

 

Tipe Data Terstruktur  

tipe ini terdiri atas : array, record, set, dan file. String yaitu  tipe data jenis array, tetapi 

sebab  string memiliki kekhasan tersendiri sebagai array dari karakter maka penulis perlu 

memberi  penjelasan tersendiri. Sedangkan untuk array, record, dan file perlu dijelaskan 

dalam bab yang lain sebab  agak banyak hal-hal yang perlu dibahas.  

a. Tipe Data String String  

merupakan suatu data yang menyimpan array (larik), sebagai contoh 'ABCDEF' merupakan 

sebuah konstanta string yang berisikan 6 byte karakter. Ukuran Tempat untuk tipe data ini 

yaitu  2 s/d 256 byte, dengan jumlah elemen 1 s/d 255. String dideklarasikan dengan string 

[ konstanta ] atau string. Bila ukuran string tidak didefinisikan maka akan banyak memakan 

ruang, sebab  ukuran string menyesuaikan dengan defaultnya. Misalkan  

var kata: string [20]; atau var kata: string; sebab  string merupakan array dari karakter. 

Maka kata[1] merupakan karakter pertama dari string, kemudian kata[2], merupakan elemen 

kedua, dst.  

 

Contoh:  

Program hal_string;  

Uses wincrt;  

var s : string;  

begin s:='Hello';  

writeln(s);  

writeln('panjang dari string yaitu : ',ord(s[0]));  

end. 

Karakter nol merupakan karakter yang menyatakan panjang string. Sehingga ord(s[0]) 

menyatakan panjang dari string tersebut.  

Panjang string juga bisa dinyatakan sebagai length(s).  


 

 

 routines pada Pascal untuk manipulasi string :  

-Length : menghasilkan panjang string.  

Syntax : length(s) 

Contoh : n:=length(s);  

Misal s:='pemrograman'; n akan sama dengan 11.  

 

-Copy : mengkopi suatu ekstrak karakter dari sebuah string. 

 Syntax : copy(s,dari,banyaknya)  

Contoh : st:=copy(s,5,3); mengekstrak 3 karakter dari s, dimulai dari karakter kelima.  

Misal s:='Who are you ?'; st yaitu  'are'.  

catatan: bila indek lebih bear dari panjang string maka hasilnya akan kosong:  

Contoh : st:=copy(s,15,4); { kosong} jika banyaknya string yang akan diekstrak lebih besar 

dari s, maka hasilnya yaitu  bagian yang tersisa dari string.  

Contoh : st:=copy(s,9,10); st hasilnya yaitu  'you ?'  

 

-Pos : menghasilkan posisi dari suatu substring dari suatu string.  

Syntax : Pos(substr,s)  

Contoh : n:=pos('are','Who are you ?'); { n:=5; }  

Jika substring tidak ditemukan, maka hasilnya 0.  

 

-Val : mengkonversi string ke numerik. 

Syntax : val(strvar,numvar,errorcode)  

strvar yaitu  variabel string yang akan dikonversi, numvar variabel numerik ( bisa integer 

atau real, dan errorcode yaitu  variabel integer yang menyimpan error code (kode 

kesalahan). Jika errorcode yaitu  0, konversi berhasil. Sebaliknya, hal ini akan menunjukan 

posisi dimana pada strvar yang menyebabkan kegagalan.  

 

Contoh :  

 

program konversiangka;  

uses wincrt; 

var s : string;  

e : integer; r : real;  

begin 

write('masukkan angka : ');  

readln(s);  

val(s,r,e);  

if e<>0 then writeln('salah pada posisi : ',e)  

else writeln('itu yaitu  : ',r:4:3);  

end. 

 

-Str : mengkonversi numerik ke string.  

Syntax : str(numvar,strvar)  

Page : 22 


 

Contoh :  

 

program konversiangka_1;  

uses wincrt;  

var s : string;  

i : integer; 

 begin  

write('masukkan angka: ');  

readln(i);  

str(i,s);  

writeln('itu yaitu : ',s);  

end. 

 

-Concat : Menggabungkan dua atau lebih string.  

Syntax : concat(s1,s2,...,sn)  

Contoh : st:=concat(s1,s2); Jikas1='ABC' dan s2='DEF',  

st akan menjadi 'ABCDEF' st:=concat('Borland ','Pascal ','ver. ','7.0'); akan menjadi 'Borland 

Pascal ver. 7.0'  

 

-Insert : Menyisipkan suatu string ke dalam string yang lain.  

Syntax : insert(asal,target,indek)  

 

Contoh :  

 

program sisip ;  

uses wincrt;  

var s1, s2 : string;  

begin  

s1:='tidak ';  

s2:='saya bekerja';  

insert(s1,s2,6);  

writeln(s2); {saya tidak bekerja }  

end. 

 

Jika hasilnya lebih dari 255 maka akan terpotong menjadi 255.  

-Delete : menghapus n karakter dari string s berawal dari indek i.  

Syntax : delete(s,i,n);  

 

Contoh :  

 

program hapus;  

uses wincrt;  

var s : string;  

begin  

s:='saya seorang insinyur';  

delete(s,6,3);  


 

 

writeln(s); { 'saya sang insinyur'}  

end. 

 

 -Fillchar : mengisi string s dengan karakter c sampai s sama dengan n-1 panjang 

karakternya.  

Syntax : fillchar(s,n,c); Hati-hati : s[0] akan tertumpuki, jangan lupa menambahkan 

s[0]:=chr(n-1); untuk menormalkannnya.  

 

Contoh :  

 

program isikarakter;  

uses wincrt;  

var s : string;  

begin  

fillchar(s,51,'='); 

s[0]:=chr(50);  

end. 

 

 

b. Tipe Data Set  

Sebuah set merupakan suatu himpunan yang berisi nilai (anggota). set merupakan Tipe data 

yang khusus untuk Pascal. Set dalam pemrograman sangat mirip dengan himpunan dalam 

ilmu matematika,  

contoh: A = { 1, 2, 3, 4, 5 } 

Syntax: set of contoh:  

type Digits = set of 0..9; 

Letters = set of 'A'..'Z'; 

type Day = (Sun, Mon, Tue, Wed, Thu, Fri, Sat);  

CharSet = set of Char;  

Digits = set of 0..9;  

Days = set of Day;  

const EvenDigits: Digits = [0, 2, 4, 6, 8];  

Vowels: Letters = ['A', 'E', 'I', 'O', 'U', 'Y'];  

Kita tidak bisa menulis atau membaca isi dari set, tetapi kita bisa melakukan operasi yang lain 

dengan data yang ada pada set (mis. relasional).  

 

Contoh:  

 

Program contoh_set;  

Uses wincrt;  

type hari = (ahad, sen, sel, rab, kam,jum, Sab);  

var semua_hari : set of hari;  

hari_kerja : set of sen .. jum;  

hari_ini : hari;  

begin  


 

 

hari_ini:=sen;  

if hari_ini in hari_kerja then  

writeln('HARI INI HARI KERJA')  

else  

writeln('HARI LIBUR');  

end. 

 

Salah satu manfaat dari penggunaan tipe data set yaitu  untuk mengecek apakah suatu nilai 

muncul dalam suatu range tertentu. Misalnya, untuk mementukan apakah suatu karakter 

berupa lower case letter (huruf kecil), mis. Ch yaitu  tipe Char, kita bisa menulis,  

 

if (Ch >= 'a') and (Ch <= 'z') then Writeln( Ch,' merupakan huruf kecil.'); 

 

atau, dengan notasi set, kita bisa menulis ,  

 

if Ch in ['a'..'z'] then Writeln( Ch,' merupakan huruf kecil.'); 

 

 

-Tipe Data Pointer  

pointer merupakan variabel khusus yang berisi suatu address (alamat) di lokasi lain didalam 

memory. Suatu variabel yang points(menunjuk) ke sesuatu sehingga disebut pointer. Ada dua 

macam pointer:  

-typed(tertentu): merupakan pointer yang menunjuk pada tipe data tertentu pada variable.  

-generic(umum): merupakan pointer yang tidak menunjuk pada tipe data tertentu pada 

variable.  

Contoh deklarasi pointer:  

 

var p : ^integer; 

 

Contoh di atas merupakan deklarasi variabel p sebagai pointer dari integer. Dengan 

menambahkan tanda caret (^) di depan nama tipe data variabel yang dideklarasikan: 

contoh :  

 

program contoh_pointer1;  

uses wincrt;  

var p : ^integer;  

m, n : integer;  

begin  

m:=10;  

n:=15;  

p:=@m; { p sekarang menunjuk ke m }  

p^:=12; { hal ini sama dengan m:=12; }  

p:=@n; { p sekarang menunjuk ke n }  


 

 

p^=m; { { hal ini sama dengan n:=m; }  

writeln('m = ',m,', n = ',n); { m = 12, n = 12 }  

end. 

 

 

Ketika p menunjuk ke m ( p:=@m;), mengakses p^ sama dengan mengakses m. Dalam 

membuat program, dalam penggunaan pointer kita memerlukan alokasi memori tertentu: 

Ketika kita mendeklarasikan variabel pointer dalam "var" sehingga merupakan suatu static 

variable, yang mana Static variable ini dibatasi oleh kapasitas 64KB untuk tiap module. Yang 

berarti dalam program utama kita hanya bisa memakai  hanya 64KB dan tiap unit Pascal 

hanya bisa memakai 64KB. Sehingga kita perlu memecahkan program kebeberapa unit. Salah 

satu teknik yang dipakai untuk mengatasi persoalan ini yaitu  seperti program berikut.  

 

Program contoh_pointer2; 

uses wincrt; 

Type Pemployee = ^Temployee;  

Temployee = record Name : string[10];  

  Position : char;  

  Salary : longint;  

end;  

var p : pemployee;  

begin  

new(p);  

p^.name:='Saddam';  

p^.position:='S';  

p^.salary:=3000;  

writeln(p^.name,' ',p^.position,' ',p^.salary);  

dispose(p);  

end. 

 

Pada blok begin...end blok, kita bisa melihat meskipun p tidak menunjuk pada suatu variable 

tetapi dapat diisi dengan nilai. Pernyataan new(p); tidak memerlukan alokasi memori. Setelah 

itu kita bisa melakukan apapun pada variabel tersebut sampai kita membuangnya dari 

memori dengan memakai perintah dispose(p);. Variable dengan cara ini dinamakan dengan 

dynamic variable.  

 

Generic Pointer yaitu  pointer tanpa tipe data tertentu. Biasanya, pointer berkaitan dengan 

tipe data khusus, sedangkan generic pointer tidak.  

Deklarasi:   

 

Var P : pointer; 

 

Dipergunakan sebagai buffer sementara (tidak permanen). Sehingga kita bisa melepasnya 

untuk suatu saat tidak diperlukan. Untuk itu pointer sangat bagus sebab  sifatnya yang 

dinamis. Tetapi, generic pointer tidak sama dengan typed pointer. Typed pointer 

memakai  "new" untuk menampung memori dan "dispose" untuk melepasnya.  Generic 


 

pointer memakai  "getmem" untuk mendapatkan memori dan "freemem" untuk 

melepasnya. Pada pointer dengan tipe tertentu, program Pascal mengetahui ukuran dari 

memori yang harus dilaokasikan, sedangkan tipe umum (generic pointer) Pascal tidak bisa, 

sebab  Pascal tidak mengetahui variabel apa yang akan dipakai. Sehingga dengan getmem 

kita perlu untuk menentukan berapa besar memori yang akan kita alokasikan. Ukuran 

terbesar yaitu  65532 bytes (hampir 64K).  

 

Program contoh_pointer2; 

uses wincrt; 

Var P : pointer;  

Begin  

Getmem(p,8192); { Reserve 8192 bytes }{ We use it then }  

freemem(p,8192); { Release it, 8192 bytes }  

end. 

 

 

4. Operator  

Beberapa operator yang disediakan oleh PASCAL:  

1. Aritmatika  

2. Boolean  

3. Relasional  

4. Set  

 

Tabel 2. Operator Aritmatika PASCAL  

Operator   Operasi  Tipe Operand Tipe Hasil Operasi  

+  Penjumlahan  Integer, real   Integer, real 

-  Pengurangan  Integer, real  Integer, real 

*  Perkalian  Integer, real  Integer, real  

/  Pembagian  Integer, real  Integer, real 

div   Pembagian  integer, integer  integer 

mod  Sisa pembagian  integer, integer  integer 

   Contoh : 

9 + 2 (hasil: 11)  

9 - 2 (hasil: 7)  

9 * 2 (hasil: 18) 9 / 2 (hasil: 4.5)  

9 div 2 (hasil: 4)  

9 mod 2 (hasil: 1)  

 

Tabel 3. Operator Boolean PASCAL  

Operator   Operasi  Tipe Operand Tipe Hasil Operasi  

not  negasi  boolean  boolean 

and  logika ‘and’  boolean  boolean 

or  logika ‘or’  boolean  boolean 

xor  logika ‘xor’  boolean  boolean 


 

 

   

Contoh: A dan B suatu variabel boolean  

 

A  not (A) 

TRUE  FALSE 

FALSE  TRUE 

   

A  B  A and B  A or B  A xor B 

TRUE TRUE TRUE TRUE  FALSE 

TRUE  FALSE  FALSE  TRUE  TRUE 

FALSE  TRUE  FALSE  TRUE  TRUE 

FALSE  FALSE  FALSE  FALSE  FALSE 

   

Tabel 3. Operator Relasional  

Operator Operasi  Tipe Operand  

Tipe Hasil 

Operasi  

= Sama dengan  tipe sederhana, string, pointer dan set boolean 

<>  Tidak sama dengan  tipe sederhana, string, pointer dan set  boolean  

<  Lebih kecil dari  tipe sederhana, string  boolean 

>  Lebih besar dari  tipe sederhana, string  boolean 

<=  Lebih kecil atau = tipe sederhana, string boolean 

>=  Lebih besar atau =  tipe sederhana, string  boolean 

   

Contoh: Misal suatu variable A:=9 dan B:=2,  

maka: A = B (hasil: FALSE); 

 A <= B (hasil: FALSE) A <> B (hasil: TRUE);  

A >= B (hasil: TRUE)  

A < B (hasil: FALSE)  

A > B (hasil: TRUE)  

 

 

4. Operasi pada Set  

 

a. Operasi Relasional pada Set  

 

Ada empat perbandingan relasional yang diperkenankan pada set.  

 

Tabel 4. Operator Relasional pada set  

Operator Operasi  Tipe Operand  

Tipe Hasil 

Operasi  

=  Sama dengan  Set, set  boolean 

<>  Tidak sama dengan Set, set  boolean 

<=  Lebih kecil atau =  Set, set  boolean 

>=  Lebih besar atau = Set, set  boolean 

 

Misal A dan B yaitu  merupakan dua buah set. A = B : memiliki  hasil True jika A dan B memiliki anggota-


 

anggota yang sama.  

 

Contoh: [Sun, Tue, Fri] = [Tue, Fri, Sun].  

A <> B: memiliki  hasil True jika A dan B memiliki anggota-anggota yang tidak sama.  

A <= B : menunjukkan bahwa A yaitu  subset dari B.  

Contoh: Jika A berisi [Sun, Mon, Tue] dan B berisi [Sun, Mon, Tue, Wed, Thu], maka A yaitu  merupakan subset 

dari B dan ekspresi menghasilkan nilai True.  

A >= B : menunjukkan bahwa A yaitu  superset dari B.  

Contoh: Jika A berisi [Sun..Sat] dan B berisi [Mon..Fri], maka A yaitu  merupakan superset dari B dan ekspresi 

menghasilkan nilai True.  

 

b. Operasi Logika pada Set  

 

Ada tiga operasi logika pada set.  

 

 

Tabel 5. Operator Logika pada set  

Operator Operasi  Tipe Operand  Tipe Hasil Operasi  

+  Union  Set  Set  

-  Difference  Set  Set  

*  Intersection  Set  Set  

 

Misal: 

+ atau Union: [Sun, Mon, Tue, Wed] + [Mon, Thu, Fri] menghasilkan [Sun, Mon, Tue, Wed, Thu, Fri].  

- atau Difference: [Sun, Mon, Tue, Wed] - [Mon, Tue, Fri] menghasilkan [Sun, Tue, Wed], yang merupakan 

anggota adari set pertama yang bukan anggota set yang kedua.  

* atau Intersection: [Sun, Mon, Tue, Wed] * [Mon, Tue, Fri] menghasilkan [Mon,Tue], yang merupakan anggota 

kedua set.  

 

5. Ekspresi Merupakan kombinasi antara operator dan operand. Ekspresi matematik yang 

terjadi dalam dunia nyata diterjemahkan kedalam bahasa Pascal dengan sedikit perubahan 

tanda.  

 

Contoh:  

  

Ekspresi matematika Ekspresi PASCAL 

• a + b • a + b 

• x ( y + z )  • x * ( y + z )  

• b2 - 4ac  • b * b - 4*a*c  

 

Contoh: Bila dideklarasikan var i, j: integer; maka, i + j yaitu  ekspresi aritmatik 

(menghasilkan suatu bilangan integer) i < j yaitu  ekspresi boolean (menghasilkan logika 

TRUE atau FALSE)  

 

6. Fungsi Matematik Standar dalam PASCAL  

 

Tabel 6. Beberapa fungsi matematik standar yang disediakan oleh PASCAL  

Nama Fungsi Deskripsi Tipe Argumen Tipe Hasil Operasi  

abs  absolute value  real/integer  real/integer 


 

 

arctan  arctan (radian)   Real/integer real 

cos  cosine (radian)  real/integer  real 

sin  sin (radian)  real/integer  real  

exp  fungsi Perpangkatan e  real/integer  real 

 ln  ln  real/integer  real 

round  Pembulatan terdekat  real  integer  

sqr   kuadrat  real/integer  real/integer 

sqrt  Akar kuadrat  real/integer  real 

trunc  Pembulatan ke bawah  real/integer integer 

   

 

 

Contoh :  

 

Abs(-11) (hasil: 11) 

Round(10.6) (hasil: 11)  

Trunc(10.6) (hasil: 10)  

Sqrt(4) (hasil: 2)  

Sqr(4) (hasil: 16)  

Untuk fungsi trigonometri:  

x = sin phi menjadi x:=sin (3.1416); 

 

 

PERINTAH INPUT - OUTPUT 

1. Assignment  

 

Komputer bisa mengolah dan menampilkan sesuatu yang ada di dalam memori. Merupakan 

cara tersederhana untuk "menempatkan" (assign) data ke memori.  

 

Contoh:  

 

program luas_PersegiPanjan_00; {Program untuk menghitung luas bangun empat persegi panjang} uses wincrt; 

var panjangPSP, lebarPSP, luasPSP : integer;  

{Mendeklarasikan variable panjang, lebar dan luas persegi panjang sebagai integer}  

BEGIN {Program MULAI}  

panjangPSP := 25;  

lebarPSP := 20;  

luasPSP := panjangPSP * lebarPSP;  

END. {Program SELESAI} 

 

 

2. Perintah Input (read atau readln)  

 

Perintah dipakai  untuk membaca data dari default input - keyboard. 

 

SYNTAX read(x); atau readln(x); 

 

Contoh:  


 

 

 

program luas_PersegiPanjang_00;  

{ Program untuk menghitung luas bangun empat persegi panjang. }  

uses wincrt; 

var panjangPSP, lebarPSP, luasPSP :integer;  

{ Mendeklarasikan variable panjang, lebar dan luas persegi panjang sebagai integer. }  

BEGIN { Program MULAI }  

{Membaca dari data panjang dan lebar persegi panjang, default input unit dan default format tanpa ganti baris}  

read(panjangPSP);  

readln(lebarPSP);(pengisian variabel pertama dan kedua dipisahkan dengan spasi) 

luasPSP:=panjangPSP*lebarPSP;{Menghitung luas persegi panjang}  

END. { Program SELESAI } 

 

Perintah read atau readln dapat dipakai  untuk membaca data lebih dari satu sekaligus 

dengan berbagai format.  

 

Contoh:  

 

program bacaCampuran; { Membaca data sekaligus memakai  perintah read }  

uses wincrt; 

var nimMHS : character;  

umurMHS : integer;  

statusMHS: boolean;  

BEGIN  

readln(nimMHS,umurMHS,statusMHS);  

{setelah mengisi semua variabel , harus diikuti dengan Enter}  

END. 

 

 

3. Perintah Output (write atau writeln )  

 

Perintah dipakai  untuk menyajikan data ke default output - key-board.  

 

SYNTAX Write(x); atau writeln(x); 

 

Contoh: write('TES'); Perintah ini akan menampilkan teks string TES ke layar monitor pada 

posisi kursor sebelum perintah write dilaksanakan. Setelah menyajikan ke layar, kursor 

pindah ke ujung teks TES pada baris yang sama. writeln('TES'); Perintah ini akan 

menampilkan teks TES ke layar monitor pada posisi kursor sebelum perintah write 

dilaksanakan. Setelah menyajikan ke layar, kursor pindah ke awal baris berikutnya.  

 

program luas_PersegiPanjan_01;  

{Program untuk menghitung luas bangun empat persegi panjang. input dibaca dari keyboard dan output 

ditampilkan ke layar monitor }  

uses wincrt; 

var panjangPSP, lebarPSP, luasPSP : integer;  

{ Mendeklarasikan variable panjang, lebar dan luas persegi panjang sebagai integer. }  

BEGIN { Program MULAI }  

{ Membaca dari data panjang dan lebar persegi panjang; default input unit dan default format dengan memberi  

pentunjuk ke pemakai tanpa ganti baris. Setelah membaca data kursor pindah ke baris baru. }  

write('Panjang = '); readln(panjangPSP);  

write('Leabar = '); readln(lebarPSP); { Menghitung luas persegi panjang. }  

luasPSP := panjangPSP * lebarPSP;  

{ Menyajikan hasil hitungan luas persegi panjang ke unit default output dan default format.Setelah menyajikan 

kursor pindah ke baris baru. }  


 

 

writeln('Luas = ', luasPSP);  

END. { Program SELESAI } 

 

Catatan: Argumen perintah writeln boleh berupa ekspresi.  

Contoh perintah penyajian writeln('Luas = ', luasPSP); bisa dikerjakan dengan perintah:  

writeln('Luas = ', panjangPSP * lebarPSP);  

 

4. Format Penyajian Data 

 

a. Format Penyajian Tipe Data Integer dan String  

Perintah dipakai  untuk menyajikan data ke unit default output - monitor dengan user-

defined format. 

 

SYNTAX Write(A:n); atau writeln(B:n); 

 

A, B = ekspresi yang akan disajikan nilainya n = maksimum tempat yang disediakan, n harus 

lebih besar dari banyak karakter atau digit yang terkandung di dalam A. Sajian format ini 

mengatur tampilan rata kanan (right justified) Contoh: Bila N yaitu  bilangan bulat bernilai 5, 

maka:  

 

 

Perintah: Ditampilkan di monitor:  

 

writeln(N:5);  

_ _ _ _ 5  

writeln(N*10:5); 

_ _ _ _50  

writeln(N*100:5);  

_ _ __500 

 

 

b. Format Penyajian Tipe Data Real  

 

Perintah dipakai  untuk menyajikan data ke unit default output - monitor dengan user-

defined format.  

 

SYNTAX Write(R:n:d); atau writeln(E); 

 

R, E = ekspresi yang akan disajikan nilainya n = maksimum tempat yang disediakan untuk 

angka termasuk tanda titik sebagai tanda pemisah desimal. d = maksimum tempat yang 

disediakan untuk angka desimal. Sajian format ini mengatur tampilan rata kanan (right 

justified)  

Contoh: Bila R = 123.45 dan S = 12.355, maka:  

Perintah:                                       Ditampilkan di monitor:  

writeln(R:6:2);                               123.45  

writeln(S:6:2);                                 12.35  

Bilangan dengan tipe real bila ditampilkan memakai  default format akan disajikan 

memakai  format floating point. Untuk contoh nilai R dan S di atas, default format 


 

 

sajiannya yaitu : R 1.2345E2 S 1.2355E1  

 

c. Perintah untuk menyajikan tampilan ke printer 

 

SYNTAX Write(LST,ABC ); atau writeln(LST,OPK); 

 

d. Penempatan Kursor di Layar  

monitor komputer umumnya dibagi dalam 80 kolom dan 25 baris dengan kolom ke 1 dan 

baris ke 1 terletak di pojok kiri atas. Dalam lingkungan pemrograman yang beorientasi teks, 

pengaturan interaksi pengguna dengan komputer memakai  tampilan-tampilan teks yang 

posisinya diatur dalam komposisi baris dan kolom. 

 

SYNTAX GotoXY(X,Y); 

 

X menyatakan kolom dan Y menyatakan baris. Untuk PASCAL versi tertentu, masih dilengkapi 

dengan perintah penghapusan seluruh layar dan penghapusan dari posisi kursor hingga akhir 

baris.  

 

SYNTAX ClrScr; dan CLrEOL; 

 

 

Contoh:  

program contohGOTO_XY; { Contoh penggunaan perintah gotoXY untuk pengaturan tampilan. } uses winCRT;  

var panjangPSP, lebarPSP, luasPSP, kelilingPSP: real;  

BEGIN  

clrScr; { Membersihkan tampilan keseluruhan layar }  

{Membuat tampilan untuk meminta masukan data mulai kolom ke 25 baris ke 10 layar} gotoXY(25,10); 

write('Masukkan data persegi panjang : ');  

gotoXY(25,11); write('Panjang = '); read(panjangPSP);  

gotoXY(25,12); write('Lebar = '); read(lebarPSP); {Melakukan operasi matematika} kelilingPSP := 2 * 

(panjangPSP + lebarPSP);  

luasPSP := panjangPSP * lebarPSP;  

{ Membuat tampilan untuk output mulai kolom ke 25 baris ke 14 layar. }  

gotoXY(25,14); write('Keleling = ', kelilingPSP:8:2);  

gotoXY(25,15); write('Luas = ', luasPSP:8:2);  

END. 

 

 

STRUKTUR KONTROL PROGRAM  

1. Struktur Pengulangan  

Secara alamiah, suatu proses bisa berupa proses berurutan dari awal hingga selesai, pilihan 

berdasar  kondisi tertentu atau pengulangan bedasarkan batasan tertentu pula. PASCAL 

menyediakan beberapa konstruksi perintah untuk melakukan proses-proses itu, yaitu:  

 

1. For ... to ... do  

2. While ... do  

3. Repeat ... until  

4. goto 

 


 

 

Beberapa kemungkinan proses pengulangan yaitu  jumlah pengulangan sudah tertentu atau 

ditentukan dalam program atau jumlah pengulangan tidak tentu tergantung banyak data yang 

harus diproses atau kenginan pemakai.  

 

a. Struktur FOR < KONDISI > DO  

dipakai  bila jumlah pengulangan sudah diketahui atau sudah tertentu.  

 

for variabel:= <awal> to <akhir>


 do  

begin  

:  

:  

pernyataan  

:  

:  

end; 

 

 

Keterangan:  

Variabel : merupakan nama variabel yang dipakai  sebagai kendali pengulangan,  

<awal> : menyatakan kondisi awal nilai variabel kendali pengulangan,  

<akhir> : menyatakan kondisi akhir nilai variabel kendali pengulangan,  

<perintah>: merupakan instruksi(-instruksi) yang perlu dilakukan.  

 

Contoh: Misalkan i yaitu  suatu variabel dalam integer  

For i:=1 to 5 do  

begin  

writeln(‘mari membuat program’);  

end; 

 

Akan Menghasilkan :  

mari membuat program  

mari membuat program  

mari membuat program  

mari membuat program  

mari membuat program  

sebanyak lima baris, kemudian berhenti. Apabila kita akan melakukan pengulangan secara 

‘cacah mundur’ kita bisa memakai kata kunci ‘downto’  

 

SYNTAX for variabel:= <awal> downto <akhir> do  

begin  

:  

:  

perintah;  

:  

:  

end; 

 

Contoh: Misalkan i yaitu  suatu variabel dalam integer  

For i:=5 downto 1 do  


 

 

begin  

writeln(‘mari membuat program’);  

end; 

 

Akan Menghasilkan :  

mari membuat program  

mari membuat program  

mari membuat program  

mari membuat program  

mari membuat program  

Contoh:  

Setiap akhir minggu Melly, seorang mahasiswa yang mendapatkan kiriman biaya hidup 

bulanan dengan jumlah agak pas-pasan, selalu mencatat pengeluarannya per-minggu di luar 

sewa kamar selama satu bulan. Di akhir bulan ia menghitung total pengeluarannya selama 

sebulan dan menghitung rerata pengeluarannya per minggu selama bulan itu. Bila sebulan 

dianggap 4 minggu, buat program komputer untuk menghitung pengeluaran Tertib seperti itu.  

Minggu 

ke 

Pengeluaran (Rp.)  

1 170.000  

2 175.000  

3 175.000 

4 180.000  

 

Penyelesaian:  

1. Rumus penyelesaian:  

rerataOHM = SUM( ongkosHPM[i] )/m; i = 1 .. m, m = 4.  

 

2. Algoritma:  

 

2.1 Kosongkan variabel penjumlah (accumulator) jumlahOHB - total ongkos hidup perbulan.  

2.2 Baca data ongkosHPM - ongkos hidup minggu ke i.  

2.3 Tambahkan ongkosHPM ke jumlahOHB, jumlahOHB = jumlahOHB + ongkosHPM.  

2.4 Ulangi 2.2 dan 2.3 hingga 4 kali.  

2.5 rerataOHM = jumlahOHB / 4.  

 

program hitung_rerataOHB;  

uses winCRT;  

var ongkosHPM, jumlahOHB, rerataOHM : real;  

i, m : integer;  

begin  

jumlahOHB := 0.0; { Nilai awal penjumlah }  

m := 4; { Jumlah minggu dalam sebulan dianggap 4 }  

for i := 1 to m do  

begin  

write('Data minggu ke : ', i,' : ');  

readln(ongkosHPM);  

jumlahOHB := jumlahOHB + ongkosHPM;  

end;  

rerataOHM := jumlahOHB/m;  

writeln('Total ongkos hidup per bulan = Rp ',jumlahOHB:7:2);  

writeln('Rerata ongkos hidup per minggu =Rp ',rerataOHM:7:2);  

end. 


 

 

Latihan: kembangkan program ini hingga bisa mencatat pengeluaran maksimum dan 

minimum serta minggu pengeluarannya.  

Proses pengulangan juga boleh berada di dalam suatu kontrol proses pengulangan pula. 

Proses seperti ini disebut proses bersarang. 

  

b. Struktur WHILE <Ekspresi Boolean> DO <Statement>  

Perintah-perintah akan dilaksanakan apabila ekspresi boolean dalam keadan benar. Di dalam 

loop ada nilai yang mengontrol loop, yang nilainya harus berubah sehingga pada akhirnya 

program akan keluar dari loop.  

 

Logika dari pengulangan ini yaitu  seperti di bawah ini:  

 

sedangkan sintax-nya yaitu  sebagai berikut: 

SYNTAX  

 

While <ekspresi boolean> do  

begin  

:  

:  

perintah;  

:  

:  

end; 

Contoh a. (modifikasi untuk contoh for... do):  

program hitung_rerataOHB;  

uses winCRT;  

var ongkosHPM, jumlahOHB, rerataOHM : real;  

i, m : integer;  

begin  

jumlahOHB := 0.0;  

m := 4;  

i:=1;  

while i<= m do {ekspresi boolean yang akan 

dilaksanakan apabila i<4 sampai i=4}  

begin  

write('Data minggu ke : ', i,' : '); readln(ongkosHPM);  

jumlahOHB := jumlahOHB + ongkosHPM;  

i:=i+1; { kontrol dari loop}  

end;  

rerataOHM := jumlahOHB/m;  

writeln('Total ongkos hidup per bulan = Rp 

',jumlahOHB:7:2);  

writeln('Rerata ongkos hidup per minggu =Rp 

',rerataOHM:7:2);  

end.  

 

Contoh b.  

program WHILE_DEMO ;  

uses wincrt;  

const PI = 3.14;  

var XL, Frequency, Inductance : real;  

begin  

Inductance := 1.0;  


 

Frequency := 100.00;  

while Frequency < 1000.00 do  

begin  

XL := 2 * PI * Frequency * Inductance;  

writeln('XL at ',Frequency,' hertz = ', XL);  

Frequency := Frequency + 100.00  

end  

end. 

 

c. Struktur REPEAT... UNTIL 

Pernyataan repeat...until hampir sama dengan pernyataan while...do, tetapi dengan 

pernyataan repeat, akan terjadi paling tidak akan terjadi satu kali eksekusi statemen. Logika 

dari struktur ini yaitu  seperti berikut:  

 

sedangkan sintax-nya yaitu  sebagai berikut:  

repeat  

:  

:  

perintah;  

:  

:  

until <ekspresi boolean>; 

dalam hal ini, kita tidak perlu memakai  begin...end 

sebab  pernyataan di antara repeat...until diperlakukan oleh 

PASCAL sebagai sebuah blok.  

contoh:  

program REPEAT_UNTIL_DEMO ;  

uses wincrt;  

const PI = 3.14;  

var XL, Frequency, Inductance : real ;  

begin  

Inductance := 1.0;  

Frequency := 100.00;  

Repeat  

XL := 2 * PI * Frequency * Inductance;  

writeln('XL at ',Frequency,' hertz = ', XL );  

Frequency := Frequency + 100.00 ;  

until Frequency = 1000.00 ;  

end.  

 

4. Label dan Goto  

Pernyataan goto mentransfer program ke lokasi lain yang dinyatakan dengan label, dimana 

<label> merupakan tipe integer dengn maksimum 4 digit. Label juga harus dideklarasikan 

seperti variabel lainnya. 

 

Penulisan Goto:  

 

 

goto <label> 

 

 

 


 

 

Contoh goto:  

goto 100;  

 

Penulisan Label :  

 

label <daftar label>  

 

 

 

Contoh deklarasi Label: label 100, 200, 300; 

penulisan pemakaian Label: SYNTAX < label >:  

 

 

Contoh:  

100: 

 

Contoh.  

 

 

program bisection; {program mencari akar persamaan metode setengah interval}  

uses wincrt;  

var e,x,x0,x1 : double;  

m : integer;  

function y(x:double): double;  

begin  

y := 1+5*x+10*x*x+10*x*x*x+5*x*x*x*x+x*x*x*x*x  

end; 

procedure bisect;  

label 100, 200;  

var y0,yy:double;  

begin  

m:=0;  

100: y0:=y(x0);  

x:=(x0+x1)/2; yy:=y(x);  

m:=m+1;  

if yy*y0=0 then goto 200;  

if yy*y0<0 then x1:=x;  

if yy*y0>0 then x0:=x;  

if abs(x1-x0)>e then goto 100;  

200: end; 

begin {main program}  

writeln;  

writeln(' range awal (x0,x1):');  

writeln;  

write(' x0 = '); read(x0);  

write(' x1 = '); read(x1);  

writeln;  

write(' nilai konvergensi: '); read(e); 

bisect; {pemanggilan routine bisection } 

writeln;  

writeln(' nilai x = ',x);  

writeln;  

writeln(' nilai y = ',y(x));  

writeln;  

writeln(' jumlah iterasi: ',m);  

writeln;  

readkey; donewincrt  


 

end. 

 

 

 

 

 

 

 

 

 

 

 

 

2. Struktur Pemilihan 

 

a. IF..THEN.. ELSE 

 

Pernyataan IF biasanya diikuti dengan pernyataan ELSE, yang akan dikerjakan bila kondisi 

pernyataan IF menghasilkan kondisi FALSE.  

 

if <Ekspresi Boolean> then  

begin  

:  

:  

end; 

 

 

Atau , jika dengan ELSE:  

 

 if <Ekspresi Boolean> then  

begin  

:  

:  

end {perhatikan tanda semicolon ‘ ; ‘ dihilangkan}  

else  

begin  

:  

:  

end; 

 

 

 

Contoh  

program IF_ELSE_DEMO;  

uses wincrt;  

var angka, tebakan : integer;  

begin  

number := 2;  

writeln('Tebak angka antara 1 dan 10');  

readln(tebakan);  

if angka = tebakan then  

writeln('Tebakan anda benar, Selamat!')  

else  

writeln('Maaf, Tebakan anda salah.')  


 

 

end. 

 

 

b. Nested IF (IF tersarang) 

 

Pernyataan IF dapat dimasukkan kedalam pernyataan IF yang lain , dengan syarat kita tidak 

melupakan blok begin...end untuk membatasinya.  

 

if <Ekspresi Boolean> then  

begin  

:  

if <Ekspresi Boolean> then  

begin  

:  

:  

end  

:  

end  

else 

 

 

Contoh  

Program IF_ELSE_DEMO_2;  

uses wincrt;  

var A, B, C : integer;  

begin  

writeln('Masukkan tiga angka dengan spasi');  

readln( A, B, C );  

if A >= B then  

begin  

if A >= C then writeln( A,' yaitu  terbesar')  

else writeln( C,' yaitu  terbesar')  

end  

else  

if B >= C then writeln( B,' yaitu  terbesar')  

else writeln( C,' yaitu  terbesar')  

end. 

 

 

 

c. Kombinasi dari Ekspresi Boolean (AND, OR, dan NOT)  

 

Kata kunci AND, OR dan NOT diperlukan apabila kita ingin mengeksekusi blok program yang 

memerlukan lebih dari satu kondisi.  

 

c.1. Pernyataan AND 

 

Pernyataan AND akan dieksekusi jika kedua kondisi dalam keadaan TRUE.  

if <Ekspresi Bool_1> and <Ekspresi Bool_2> then  

begin  

:  

:  

end 

 

 


 

 

contoh:  

program if_and;  

uses wincrt;  

var i, j : integer;  

begin  

write('Masukkan nilai i = '); readln(i);  

write ('Masukkan nilai j = '); readln (j);  

if (i>3) and (j>4) then  

begin  

writeln('Hal ini terjadi jika i>3 dan j>4');  

end;  

end. 

 

 

 

 

c.2. Pernyataan OR 

 

Pernyataan OR akan dieksekusi bila salah satu kondisi dalam keadaan TRUE,  

if <Ekspresi Bool_1> or <Ekspresi Bool_2> then  

begin  

:  

:  

end 

 

 

Contoh  

program if_OR;  

uses wincrt;  

var i, j: integer;  

begin  

write('Masukkan nilai i = '); readln(i);  

write ('Masukkan nilai j = '); readln (j);  

if (i>3) or (j>4) then  

begin  

writeln('Yeah !!');  

end;  

end. 

 

 

c.3. Pernyataan NOT 

 

NOT menggantikan TRUE ke FALSE dan sebaliknya (vice versa)  

if not <Ekspresi Boolean> then  

begin  

:  

:  

end 

 

 

Contoh  

program if_NOT;  

uses wincrt;  

var i: integer;  

begin  

write('Masukkan nilai i = '); readln(i);  


 

 

if not(i>3) then  

begin  

writeln('Yeah !!');  

end;  

end. 

 

 

d. CASE ... OF 

 

Pernyataan CASE dipergunakan apabila kita menulis program yang memerlukan banyak 

pernyataan IF...THEN...ELSE, sehingga program akan tampak lebih jelas untuk dibaca.  

CASE variable OF  

:  

perintah;  

:  

end 

 

atau  

CASE variable OF  

:  

perintah;  

:  

else  

perintah;  

end 

 

 

Contoh a.  

if operator = '*' then result := number1 * number2  

else if operator = '/' then result := number1 / number2  

else if operator = '+' then result := number1 + number2  

else if operator = '-' b result := number1 - number2  

else invalid_operator = 1; 

 

 

digantikan dengan CASE :  

case operator of  

'*' : result:= number1 * number2;  

'/' : result:= number1 / number2;  

'+' : result:= number1 + number2;  

'-' : result:= number1 - number2;  

else invalid_operator := 1  

end; 

 

 

Contoh b.  

Ganti program dibawah ini dengan pernyataan IF ELSE dengan CASE  

program SARANG;  

uses wincrt;  

var invalid_operator : boolean;  

operator : char;  

number1, number2, result : real;  

begin  

invalid_operator := FALSE;  

writeln('Enter two numbers and an operator in the format');  

writeln(' number1 operator number2');  


 

 

readln(number1); readln(operator); readln(number2);  

if operator = '*' then result := number1 * number2  

else if operator = '/' then result := number1 / number2  

else if operator = '+' then result := number1 + number2  

else if operator = '-' then result := number1 - number2  

else invalid_operator := TRUE; 

if invalid_operator then  

writeln('Invalid operator')  

else  

writeln(number1:4:2,' ',operator,' ',number2:4:2,' is ' ,result:5:2)  

end. 

 

 

 

 

 

 

Jawab:  

 

program PROG_TWELVE ;  

var invalid_operator : boolean;  

operator : char;  

number1, number2, result : real;  

begin  

invalid_operator := FALSE;  

writeln('Enter two numbers and an operator in the format');  

writeln(' number1 operator number2');  

readln(number1); readln(operator); readln(number2);  

case operator of  

'*': result := number1 * number2;  

'/': result := number1 / number2;  

'+': result := number1 + number2;  

'-': result := number1 - number2;  

else invalid_operator := TRUE  

end; 

if invalid_operator then  

writeln('Invalid operator')  

else  

writeln(number1:4:2,' ',operator,' ',number2:4:2,' is ' ,result:5:2)  

end. 

 

 

 

SUB PROGRAM 

1. Pemrograman Modular  

 

Modular programming yaitu  merupakan suatu teknik untuk menulis program yang berukuran 

besar. Program dibagi menjadi beberapa bagian kecil. Tiap bagian disebut module, yang 

melakukan suatu tugas tertentu.  

Contoh :  

• Menampilkan menu pilihan  

• Menghitung nilai rata-rata  

• Mensortir data 


 

 

 

Pascal mengenal module sebagai:  

1. PROCEDURE (terbagi menjadi dua)  

a) Procedure Sederhana tidak menerima argumen (nilai atau data) ketika dieksekusi.  

b) Procedure Kompleks menerima nilai yang diproses ketika dieksekusi.  

2. FUNCTION : Function, ketika dieksekusi menghasilkan suatu nilai.  

 

Procedure mendukung desain program terstruktur, dengan membolehkan membuat module 

secara terpisah.  

 

a. Procedure Sederhana 

 

Procedure sederhana dipakai untuk menampilkan pilihan menu, dsb. procedure (module) 

tersebut terdiri atas beberapa pernyataan (statements), yang dikelompokkan dengan kata 

kunci begin dan end . Setiap procedure memiliki  nama. Seperti contoh berikut: 

 

 

SYNTAX  

PROCEDURE NAMA;  

begin  

:  

pernyataan  

:  

end; 

 

 

Contoh a.  

PROCEDURE DISPLAY_MENU;  

begin  

writeln('Pilihan Menu');  

writeln(' 1: Edit file teks');  

writeln(' 2: buka file teks ');  

writeln(' 3: Simpan file teks);  

writeln(' 4: Kopi file teks’);  

writeln(' 5: Cetak file teks’)  

end; 

 

 

contoh berikut yaitu  program untuk menampilkan menu:  

 

Contoh b.  

program PROC1 ;  

uses wincrt;  

PROCEDURE DISPLAY_MENU;  

begin  

writeln('Pilihan Menu');  

writeln(' 1: Edit file teks');  

writeln(' 2: buka file teks ');  

writeln(' 3: Simpan file teks);  

writeln(' 4: Kopi file teks’);  

writeln(' 5: Cetak file teks’)  

end;  

end; 

begin  


 

 

writeln('memanggil prosedur');  

DISPLAY_MENU;  

writeln('kembali dari prosedur')  

end. 

 

 

Contoh c.  

program SIMPLE_PROCEDURE;  

uses wincrt;  

var waktu, jarak, kecepatan : real;  

procedure tampilan_judul;  

begin  

writeln('Menghitung jarak tempuh berdasar pada');  

writeln('dua variabel yaitu: kecepatan dan waktu');  

end;  

procedure masukkan_data;  

begin  

write('Masukkan kecepatan dalam km/jam: ');  

readln(kecepatan);  

write('Masukkan waktu dalam jam : ‘);  

readln(time)  

end;  

procedure hitung_jarak;  

begin  

jarak:= kecepatan *waktu  

end;  

procedure tampilkan_hasil;  

begin  

writeln('jarak yang ditempuh yaitu  ',jarak:5:2,' km.')  

end;  

begin {program utama}  

tampilan_judul;  

masukkan_data;  

hitung_jarak;  

tampilkan_hasil  

end. 

 

 

Output program:  

 

Menghitung jarak tempuh berdasar pada  

dua variabel yaitu: kecepatan dan waktu 

Masukkan kecepatan dalam km/jam: 30  

Masukkan waktu dalam jam : 2  

jarak yang ditempuh yaitu  60 km 

 

catatan : ketiga variabel waktu, jarak,dan kecepatan yaitu  berlaku untuk semua procedure 

sehingga disebut variabel GLOBAL.  

 

Contoh d.  

program Kalkulator_sederhana;  

uses wincrt;  

var salah_tanda : boolean;  

operator : char;  

angka_1, angka_2, hasil : real; 

procedure PERKALIAN;  


 

 

begin  

hasil := angka_1 * angka_2  

end;  

procedure PEMBAGIAN;  

begin  

hasil := angka_1 / angka_2  

end;  

procedure PENJUMLAHAN;  

begin  

hasil := angka_1 + angka_2  

end;  

procedure PENGURANGAN;  

begin  

hasil := angka_1 - angka_2  

end;  

procedure MASUKAN;  

begin  

writeln(‘MASUKKAN DUA ANGKA DAN OPERATOR);  

writeln(' angka_1 operator angka_2');  

readln(angka_1);  

...readln(operator);  

...readln(angka_2)  

end;  

begin  

salah_tanda:= FALSE;  

MASUKAN;  

case operator of  

'*': PERKALIAN;  

'/': PEMBAGIAN;  

'+': PENJUMLAHAN;  

'-': PENGURANGAN;  

else salah_tanda := TRUE  

end;  

if invalid_operator then  

writeln('Invalid operator')  

else  

writeln(angka_1:4:2,' ',operator,' ',angka_2:4:2,'=',hasil:5:2)  

end. 

 

 

2. Jangkauan Variabel  

 

a. Variabel Global  

Variabel global yaitu  variabel yang didefinisikan/terletak pada program utama, dimana 

semua sub-program bisa mengakses, mempergunakan dan memodifikasinya. Dari gambar 

berikut , variabel A, B, dan C dapat diakses oleh procedure D maupun E  


 

 

 

 

b. Variabel Lokal 

 

Suatu procedure dapat mendeklarasikan variabelnya sendiri. Variabel-variabel itu hanya 

bekerja pada procedure dimana mereka dideklarasikan. Variabel-variabel tersebut dinamakan 

variabel local (local variable) .  

 

 

keterangan gambar:  

 

• Semua bisa mengakses variabel global A, F, G.  

• Pada procedure alfa definisi global variabel A diganti dengan variabel lokal.  

• beta_1 dan beta_2 dapat mengakses betamax dan betako.  

• beta_1 tidak dapat mengakses variabel boboho, dan beta_2 tidak dapat mengakses bobo.  

• Tdak ada subprogram, kecuali alfa dapat mengakses B dan C.  

• Procedure beta dapat mengakses alfa dan beta.  

 

Contoh:  

 

program LOKAL_VARIABEL;  


 

 

uses wincrt;  

var nomor1, nomor2 : integer;  

{ini bisa dipanggil dari mana-mana GLOBAL VAR} 

procedure tambah;  

var hasil:integer;{hasil merupakan milik procedure tambah LOCAL VAR}  

begin  

hasil := nomor1 + nomor2;  

writeln(‘hasil yaitu ', hasil)  

end; 

begin {program utama}  

writeln(‘Masukkan dua angka bulat dengan spasi’);  

readln(nomor1, nomor2);  

tambah  

end. 

 

 

 

c. Penggunaan Forward  

 

Dari hal di atas kita tahu bahwa suatu subprogram dapat diakses oleh subprogram apabila 

sudah didefinisikan terlebih dahulu.  

Tetapi ada pengecualian, untuk mengatasi masalah chicken-and-the-egg, bila kita memiliki 

dua/lebih subprogram masing- masing bisa memanggil yang lain dengan referensi forward.  

 

 

Hal ini berlaku juga untuk FUNCTION (fungsi).  

 

3. Procedure Yang memakai  Argumen 

Procedure juga bisa memakai variabel (data) untuk bekerja ketika dipanggil.  

 

a. Mendeklarasikan variabel di dalam procedure  

• Variabel yang diterima oleh procedure diapit dengan tanda kurung ().  

• Deklarasi dari variabel terletak diantara nama procedure dan semi-colon.  

 

Contoh.  

 

 


 

 

b. Memanggil procedure and menyampaikan variabel (atau nilai) ke procedure  

 

• Ketika procedure dipanggil, nama procedure diikuti oleh sepasang ().  

• Variabel yang dipanggil diletakkan didalam tanda kurung tersebut.  

• Variabel ditulis dalam tingkat yang sama seperti dalam prosedur terkait.  

 

Contoh.  

Perhatikan contoh program berikut,  

program JUMLAH;  

uses wincrt;  

var nomor1, nomor2 : integer; 

procedure CALC_ANSWER ( kesatu, kedua : integer );  

var hasil : integer;  

begin  

hasil := kesatu + kedua;  

writeln('hasil yaitu  ', hasil )  

end; 

begin  

writeln('masukkan dua angka dalam spasi');  

readln( nomor1, nomor2 );  

CALC_ANSWER( nomor1, nomor2)  

end. 

 

4. Procedure Yang Memakai Parameter  

program TestNilai;  

uses wincrt;  

var x, y : integer;  

 

procedure NoEffect ( x, y : integer );  

begin  

x := y; y := 0;  

writeln( x, y )  

end;  

begin  

x := 1; y := 2;  

writeln( x, y );  

NoEffect( x, y );  

writeln( x, y )  

end. 

 

Output dari Testnilai yaitu :  

1 2  

2 0  

1 2 

 

a. Parameter Nilai (pass by value) 

 

Dalam program di atas, ketika variabel disampaikan ke procedure, procedure bekerja dengan 

copy dari variabel asli. Nilai dari variabel asli yang disampaikan ke procedure tidak diubah. 

Procedure hanya menggantikan variabel asli dengan variabel yang ada di procedure , tetapi 

tidak menggantikan nilai dari variabel asli. Ketika procedure bekerja dengan copy dari 


 

variabel, maka dikenal dengan parameter nilai (pass by value).  

 

Perhatikan contoh berikut:  

program Parameter_Nilai;  

uses wincrt;  

var x : byte; 

procedure foo(a : byte);  

begin  

writeln(a); {15}  

a:=10;  

writeln(a); {10}  

end; 

begin  

x:=15;  

writeln(x); {15}  

foo(x);  

writeln(x); {tetap 10}  

end. 

 

 

Outputnya:  

15  

15  

10  

15  

b. Parameter Variabel (pass by reference)  

 

Procedure bisa juga dipakai untuk mengubah nilai dari variabel asli yang dipanggil oleh 

procedure. Untuk menggambarkannya, kita bisa lihat pada contoh program modifikasi 

program sebelumnya. Procedure ini menerima dua nilai integer dan menggantikan nilai 

aslinya. Untuk membuat procedure memakai  parameter variabel (pass by reference) 

dengan memakai  kata kunci var.  

 

program Parameter_Variabel;  

uses wincrt;  

var x : byte; 

procedure foo(var a : byte);  

begin  

writeln(a); {15}  

a:=10;  

writeln(a); {10}  

end; 

begin  

x:=15;  

writeln(x); {15}  

foo(x);  

writeln(x); {berubah 15}  

end. 

 

 

Outputnya: 

Ketika program dijalankan, akan tercetak di layar  

15  

15  

10  


 

10  

 

5. Function – Suatu Procedure Khusus Yang Menghasilkan Nilai 

 

Procedure memakai data atau variabel ketika dieksekusi. Function (fungsi) juga memakai 

data, tetapi memiliki  kemampuan untuk menghasilkan nilai pada procedure atau program 

yang memanggilnya. Function dipakai  untuk melakukan operasi matematika seperti 

perhitungan faktorial.  

 

Suatu function :  

• Dimulai dengan kata kunci function  

• Strukturnya sama dengan sebuah procedure  

• Didalam fungsi, suatu nilai dihasilkan dengan nama function  

• Suatu function dipakai pada sisi sebelah kanan pada suatu ekspresi  

• Hanya menghasilkan tipe data sederhana  

 

SYNTAX  

function Nama (deklarasi variabel):tipe_data_hasil;  

begin  

:  

pernyataan  

:  

end; 

 

contoh:  

function ADD_TWO ( nilai1, nilai2 : integer ) : integer;  

begin  

ADD_TWO := nilai1 + nilai2  

end; 

 

contoh berikut menggambarkan bagaimana memanggil function, 

 result := ADD_TWO( 10, 20 ); 

 

maka, ketika ADD_TWO dieksekusi, dia menghitung nilai yang terdapat di dalamnya (dalam 

hal ini 30), yaitu hasil akhirnya.  

 

Contoh  

program CONTOH_FUNGSI;  

uses wincrt;  

var angka, jawaban : integer;  

 

function KUBIK( x : integer ) : integer;  

begin  

KUBIK := x * x * x  

end;  

begin  

writeln('Masukkan angka.');  

readln(angka);  

jawaban := KUBIK ( number );  

writeln('Hasil pangkat tiga dari ',number,' yaitu  ', answer)  

end. 

 


 

 

 

6. Rekursi dan Iterasi  

 

Subprogram bisa memanggil dirinya (Recursive Call) dengan catatan bahwa memiliki syarat 

penghentian operasi (iterasi), sehingga perlu dilakukan kehati-hatian dalam penulisannya. 

Lihat contoh tentang faktorial suatu bilangan di bawah ini. 

 

Contoh.  

Program faktorial;  

Uses wincrt;  

Var x : integer; 

function factorial (n:integer):integer;  

begin  

if n<2 then { ini yaitu  syarat penghentian operasi }  

factorial:=1;  

else  

factorial:=n*factorial(n-1); { ini bagian rekursi}  

end; 

begin  

writeln('Masukkan nilai : '); readln(x);  

writeln(x,'! yaitu  ',factorial(x));  

end. 

 

 

Penjelasan  

Jika x= 5,maka Pemanggilan  

Ke-1, n=5. Factorial:=5*factorial(4); => Perlu Pemanggilan Ke-2  

Ke-2 , n=4. Factorial:=4*factorial(3); => Perlu Pemanggilan Ke-3  

Ke-3 , n=3. Factorial:=3*factorial(2); => Perlu Pemanggilan Ke-4  

Ke-4, n=2. Factorial:=2*factorial(1); => Perlu Pemanggilan Ke-5  

Ke-5, n=1. Factorial:=1;  

Ke-4 menjadi : Factorial:=2*1; (=2)  

Ke-3 menjadi: Factorial:=3*2; (=6)  

Ke-2 menjadi: Factorial:=4*6; (=24)  

Ke-1 menjadi: Factorial:=5*24; (=120) 

 

 

ARRAY (LARIK) 

1. Pendahuluan  

Suatu array yaitu  sebuah struktur data yang terdiri atas banyak variabel dengan tipe data 

sama, dimana masing-masing elemen variabel memiliki  nilai indeks. Setiap elemen array 

mampu untuk menyimpan satu jenis data (yaitu: variabel). Suatu array dinyatakan dengan 

type, sehingga variabel yang bekerja akan dinyatakan dengan:  

 

contoh type  

 

A = array [1..10] of integer;  

                    

1 2 3 4 5 6 7 8 9 10 

 


 

 

Secara logika pendefinisian array di atas merupakan sekumpulan kotak , dimana tiap kotak 

memiliki  nilai indeks integer 1, 2, 3, ...,9, 10 tiap elemen array ditandai dengan:  

 

A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10] 

 

2. Sifat Array 

 

Array merupakan struktur data yang statis, yaitu jumlah elemen yang ada harus ditentukan 

terlebih dahulu dan tak bisa di ubah saat program berjalan. Untuk menyatakan array dalam 

PASCAL kita harus terlebih dahulu:  

 Mendefinisikan jumlah elemen array,  

 Mendefinisikan tipe data dari elemen array  

 

Contoh. const N=10;  

 

type  

A= array [1..N] of integer; 

 

3. Array Satu Dimensi 

 

Pernyataan di atas merupakan penjelasan tentang array dengan satu dimensi. Pendefinisian 

array secara umum yaitu  sebagai berikut: jika kita ingin membuat beberapa array dengan 

tipe/jenis yang sama, kita lebih baik jika mendeklarasikan dengan type selanjutnya dengan 

deklarasi var.  

 

SYNTAX  

Type nama_array = ARRAY[bawah..atas] of tipe_data;  

var variabel_array : nama_array; 

 

 

atau dengan memakai  statemen var :  

var variabel_array : ARRAY[bawah..atas] of tipe_data; 

 

Penjelasan: Bawah dan Atas menyatakan batas untuk array. tipe_data yaitu  merupakan tipe 

variabel yang dipunyai array (mis. Integer, char, real, dsb)  

Contoh:  

type intarray = ARRAY [1..20] of integer;  

Pernyataan diatas yaitu  pernyataan untuk membentuk suatu array bernama intarray,yang 

berisi 20 tempat untuk bilangan integer. Setiap posisi disebut elemen, yang menyimpan suatu 

bilangan integer.langkah berikutnya yaitu  membuat suatu variabel kerja dengan tipe 

intarray yaitu,  

var numbers : intarray;  

kita bisa melakukan operasi pada setiap elemen dari numbers secara individual. Contoh kita 

bisa memberi nilai pada suatu elemen array seperti berikut:  

numbers[2] := 10;  

perintah ini memberi  suatu nilai integer 10 pada elemen ke-2 dari array numbers. Nomor 

dari elemen ditempatkan didalam kurung tegak. Contoh berikut yaitu  merupakan array yang 

menyimpan variabel-variabel integer. Data dengan tipe integer hanya bisa dimasukkan satu 

persatu, kemudian baru bisa ditampilkan di monitor secara bersamaan  

 


 

Contoh a.  

program INT_ARRAY;  

uses wincrt;  

const N=10;  

type int_array = ARRAY [1..N] of integer;  

var bil : int_array;  

indeks : integer;  

BEGIN  

writeln('masukkan sepuluh bilangan integer.');  

for indeks := 1 to 10 do  

begin  

readln(bil[indeks]); { loop untuk memasukkan elemen array }  

end;  

writeln('Isi dari array ini yaitu '); { tampilkan setiap elemen }  

for indeks := 1 to 10 do  

begin  

writeln('bil[', indeks:2,'] yaitu  ',bil[indeks] );  

end  

END. 

 

 

Contoh b.  

program contoh_ARRAY;  

uses wincrt;  

var  

a : array[1..10] of byte;{maksimum jumlah elemen=10}  

begin  

a[1]:=10;  

a[2]:=15;  

a[3]:=a[1]+a[2];  

writeln(a[1]);  

writeln(a[2]);  

writeln(a[3]);  

end. 

 

 

 

4. Array Multidimensi 

Dalam array multidimensi terdiri atas baris (row) dan kolom (column). Index pertama yaitu  

baris dan yang kedua yaitu  kolom .  

 

SYNTAX  

 

Type nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;  

var variabel_array : nama_array; 

 

atau dengan memakai  statemen var :  

 

SYNTAX var variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data; 

 

Pernyataan berikut membentuk suatu array integer dengan nama bilangan , 10 x 10 elemen 

(100).  

type matriks = ARRAY [1..10, 1..10] of integer;  

var AKU: matriks; 

 


 

 

untuk memasukkan tiap elemen maka, diperlukan suatu procedure dengan mempergunakan 

struktur pengulangan for ...do tersarangseperti berikut: 

 

procedure ISI_MATRIK(AKU:matriks; m,n:integer);  

var  

i,j: integer; {faktor pengulang}  

begin  

for i:=1 to m do  

begin  

for j:=1 to n do  

begin  

read(A[i,j]);  

end;  

readln ;{ini memungkinkan kita menulis tiap baris elemen}  

end; 

 

untuk menampilkan tiap elemen maka, dipakai  struktur pengulangan for ...do 

tersarangseperti berikut 

procedure TULIS_MATRIK(AKU:matriks; m,n:integer);  

var i,j: integer; {faktor pengulang}  

begin  

for i:=1 to m do  

begin  

for j:=1 to n do  

begin  

write(A[i,j]:6);  

end;  

writeln ; {ini memungkinkan kita menulis elemen dalam baris dan kolom }  

end;  

end; 

 

5. Operasi pada Array 

 

Sifat masing-masing elemen array mengikuti jenis data yang dimilikinya, untuk array dengan 

tipe bilangan integer atau real kita bisa melakukan berbagai standar operasi aritmatika seperti 

penjumlahan, perkalian, pengurangan, dsb. Yang perlu di garis bawahi, bahwa sifat dari array 

dimanfaatkan untuk operasi matrik. 

 

a. Mencari Nilai Tertentu pada Array 

 

Mencari suatu elemen data di dalam suatu data merupakan suatu kejadian yang sering kita 

alami, contoh: mencari nama mahasiswa dari daftar presensi. Pencarian beruntun (sequence), 

merupakan suatu teknik untuk mencari suatu elemen dalam suatu sistim yang lebih besar.  

 

Contoh.  

Misal array A[8], dengan elemen sbb:  

 

A  

60  12  76  23  11 42  18  42  

Untuk menari apakah bilangan x=11 ada didalam tabel maka dilakukan pemeriksaan terhadap 


 

 

60 12 76 23 11 

 

Sehingga ditemukan xpada elemen ke-5, dalam bahasa PASCAL diterjemahkan seperti 

berikut: 

type PITA = ARRAY [1..8] of integer;  

var AKU: PITA; 

procedure CARI_MATRIK(AKU: PITA);  

var  

i: integer; {faktor pengulang}  

begin  

for i:=1 to 8 do  

begin  

if AKU[i]:= 11 then  

writeln(‘ terdapat bilangan 11 dalam pita ini ‘);  

else  

writeln(‘ tidak ada bilangan 11, pencarian berhenti ‘);  

end;  

end; 

 

 

b. Mencari Harga Maksimum pada Array 

 

Misal array di atas kita cari harga yang tertinggi, maka kita perlu menentukan nilai tertinggi 

dahulu sebelum melakukan pencarian ; diawali dengan nilai maksimum=0  

procedure CARI_MAKSIMUM(AKU: PITA);  

var  

i: integer; {faktor pengulang}  

MAKS : integer;  

begin  

MAKS := AKU[1];  

for i:=1 to 8 do  

begin  

if AKU[i]> MAKS then  

MAKS:= AKU[i];  

End;  

Writeln(‘NILAI MAKSIMUM = ’,MAKS);  

end; 

 

 

c. Mencari Harga Minimum pada Array 

 

Misal array di atas kita cari harga yang terendah, maka kita perlu menentukan nilai terendah 

dahulu sebelum melakukan pencarian ; diawali dengan nilai maksimum=3200 

 

procedure CARI_MINIMUM(AKU: PITA);  

var  

i: integer; {faktor pengulang}  

MIN : integer;  

begin  

MIN := 3200;  

for i:=1 to 8 do  

begin  

if AKU[i]< MIN then  

MIN:= AKU[i];  

end;  

writeln(‘NILAI MINIMUM = ’,MIN);  


 

end; 

 

 

c. Matrik 

 

Sebagai perwujudan dari array dua dimensi, operasi aritmatika seperti penjumlahan, 

perkalian, dan pengurangan bisa dilakukan.  

Contoh. 

 

- Mendefinisikan Elemen 

Program OPERASI_MATRIK;  

uses wincrt;  

type  

matrik=array[1..100,1..100] of real;  

var  

m,n, p, q: integer; {dimensi dari matrik}  

A,B,C: matrik; {matrik A, B sebagai input, C sebagai hasil} 

 

 

- Membaca Elemen Matrik 

procedure bacamatrik(var A:matrik; m,n:integer);  

var  

i,j: integer; {faktor pengulang}  

begin {read}  

for i:=1 to m do  

begin {do}  

for j:=1 to n do  

read(A[i,j]);  

readln;  

end; {do}  

end; {read} 

 

 

 

- Menampilkan Elemen Matrik 

procedure tulismatrik(A:matrik; m,n:integer);  

var  

i,j: integer; {faktor pengulang}  

begin {write}  

for i:=1 to m do  

begin {tiap baris}  

writeln;  

for j:=1 to n do  

write(A[i,j]:6:2);  

end; {tiap baris}  

writeln;  

end; {write} 

 

 

- Penjumlahkan Matrik 

procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);  

var i,j :integer;  

begin  

if (m=p) and (n=q) then  

begin  

for i:=1 to m do  


 

 

begin  

for j:=1 to n do  

begin  

C[m,n]=A[m,n]+B[m,n])  

end;  

end;  

end  

else  

writeln('DIMENSI MATRIK TIDAK COCOK')  

end; 

 

 

- Pengurangan Matrik 

procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);  

var i,j :integer;  

begin  

if (m=p) and (n=q) then  

begin  

for i:=1 to m do  

begin  

for j:=1 to n do  

begin  

C[m,n]=A[m,n]- C[m,n])  

end;  

end;  

end  

else  

writeln('DIMENSI MATRIK TIDAK COCOK')  

end; 

 

 

-. Perkalian Matrik 

procedure perkalian_matrik(A,B,C:matrik; m,n,p,q:integer);  

var i,j, k :integer;  

C1: matrik;  

begin  

if (n=p) then  

begin  

for i:=1 to m do  

begin  

for j:=1 to p do  

begin {inner product}  

C1[i,j]:=0;  

for k:=1 to n do  

C1[i,j]:=C1[i,j]+A[i,k]*B[k,j];  

end; {inner product}  

end;  

n:=q; 

for i:=1 to m do  

for j:=1 to n do  

C[i,j]:=C1[i,j];  

end  

else  

writeln('DIMENSI MATRIK TIDAK COCOK')  

end; 

 

 

- Transpose Matrik 


 

 

procedure Transpose(A,B:matrik; m,n,p,q:integer);  

var i,j:integer;  

begin  

for i:=1 to n do  

begin  

for j:=1 to m do  

begin  

B[m,n]=A[n,m]  

end;  

end;  

end; 

 

 

-. Mencari Elemen yang Kosong pada Matrik 

procedure CHECK_ZERO_ELEMEN(A,matrik; m,n:integer);  

var i,j:integer;  

begin  

for i:=1 to m do  

begin  

for j:=1 to n do  

begin  

if B[m,n]= 0 then  

writeln (‘terdapat elemen yang kosong’)  

else  

writeln (‘tidak terdapat elemen yang kosong’)  

end;  

end;  

end; 

 

 

 

 

 

RECORD (REKAMAN)  

Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / 

bentukan tertentu. Record memiliki  kelebihan untuk menyimpan suatu sekumpulan elemen 

data yang berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat 

buah field.  

 

        

Field 1 Field 2  Field 3  Field 4  

 

Cara pendeklarasian dari record yaitu  sbb:  

 

• Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),  

• Mendefinisikan variabel untuk dilakukan operasi.  

 

SYNTAX  

type nama_record = record  

identifier_1 : tipe_data_1;  

:  

:  


 

 

identifier_n : tipe_data_n;  

end; 

var variabel : nama_record; 

 

 

Contoh.  

type Data_mahasiswa = record  

Nama : string;  

Usia : integer;  

Kota : String;  

Kodepos : integer;  

end;  

Var  

x: Data_mahasiswa; 

 

 

1. Pengaksesan Elemen Record 

 

Cara mengacu pada tiap field pada record pada contoh di atas yaitu  sbb:  

x.Nama  

x.Usia  

x.Kota  

x.Kodepos 

 

 

Contoh.  

program RECORD_INTRO;  

type tanggal = record  

bulan, hari, tahun : integer;  

end;  

var waktu : tanggal;  

begin  

waktu.hari :=25;  

waktu.bulan:=09;  

waktu.tahun:= 1983;  

writeln('hari ini yaitu  ',waktu.hari,':',waktu.bulan,':', waktu.tahun)  

end. 

 

 

2. Pengunaan With … do  

 

Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record. Misalkan  

pernyataan :  

x.Nama  

x.Usia  

x.Kota  

x.Kodepos 

 

 

menjadi  

with x do  

Begin  

Nama  

Usia  

Kota  


 

 

Kodepos  

end 

 

 

Contoh.  

program RECORD_INTRO;  

type tanggal = record  

bulan, hari, tahun : integer;  

end;  

var waktu : tanggal;  

begin {program utama}  

with waktu do {mulai with}  

begin  

hari :=25;  

bulan:=09;  

tahun:=1983;  

writeln('hari ini yaitu  ',hari,':',bulan,':', tahun)  

end {akhir with}  

end. 

 

 

3. Array dari Record  

 

Suatu array dapat juga berisi record contoh suatu deklarasi record tanggal.  

type tanggal = record  

bulan, hari, tahun : integer;  

end;  

var waktu : tanggal; 

 

 

kemudian kita membentuk suatu array dari record ini, namakan birthdays.  

var birthdays : array[1..10] of tanggal; 

 

pernyataan ini akan membentuk suatu array dengan 10 elemen. Dimana tiap elemen yaitu  

sebuah record tanggal, yaitu, terdiri atas bulan, hari, tahun dengan tipe data Integer.  

Digambarkan seperti berikut:  

 

 

Contoh Pemberian nilai awal dari masing-masing elemen birthdays:  


 

Birthdays[1].hari :=25;  

Birthdays[1].bulan:=09;  

Birthdays[1].tahun:=1983; 

 

 

 

4. Record di dalam Record  

 

Record bisa berisi record lain sebagai field. Seperti contoh record tanggal dan jam 

dikombinasikan menjadi sebuah record saat ini,  

type tanggal = record  

bulan, hari, tahun : integer;  

end;  

type waktu =record  

jam, menit, detik : integer;  

end;  

type waktu_ini =record  

tanggal_ini : tanggal;  

waktu_ini : waktu  

end; 

 

 

Kemudian kita perlu membuat variabel kerja  

var saat_ini : waktu_ini; 

 

 

pemberian nilai akan terjadi seperti di bawah ini:  

saat_ini.tanggal.bulan:= 11;  

saat_ini.tanggal.hari:= 2;  

saat_ini.tanggal.tahun:= 1985;  

saat_ini.waktu.jam:= 3;  

saat_ini.waktu.menit:= 3;  

saat_ini.waktu.detik:= 33; 

 

5. Sorting Data 

 

Gambar. data sebelum dan sesudah dilakukan proses sorting.  

 

Beberapa metode sorting mengurutkan data yang dikenal antara lain yaitu :  

1. Bubble Sort (sederhana tetapi lambat)  

2. Quick Sort (cepat tetapi rumit)  

3. Shell Sort (agak cepat dan tidak terlalu rumit)  


 

 

 

5.1. Bubble Sort  

 

Teknik ini menyusun data yang diinginkan secara berurutan dengan membandingkan elemen 

data yang ada, misalkan kita akan meyusun data secara (ascending) cacah naik. Maka 

lagoritma utamanya yaitu  seperti ini.  

 

SYNTAX  

for i:=1 to Jumlah_data-1 do  

for j:=i+1 to Jumlah_data do  

if Data[i]>Data[j] then  

begin  

t:=Data[i];  

Data[i]:=Data[j];  

Data[j]:=t;  

end; 

 

 

Contoh.  

Misal kita punya data : 5 3 8 4 1 7 6 2 , dalam program  

program mengurutkandata;  

 

uses WinCrt;  

type urutkan=array [1..8] of integer;  

var i,j,t:integer;  

anu:urutkan;  

begin  

anu[1]:=5; anu[2]:= 3;  

anu[3]:= 8; anu[4]:= 4;  

anu[5]:= 1; anu[6]:= 7 ;  

anu[7]:=6 ; anu[8]:=2 ;  

for i:=1 to 7 to  

begin  

for j:=i+1 to 8 to  

begin  

if anu[i]>anu[j] then  

begin  

t:=anu[i];  

anu[i]:=anu[j];  

anu[j]:=t;  

end;  

end;  

end;  

for i:=1 to 8 do  

write (anu[i], ' ')  

end. 

 

 

5.2. Shell sort  

 

Prinsipnya hampir sama dengan bubble sort tetapi dioptmisisasi sehingga lebih cepat. 

Ditemukan oleh Donald Shell. prinsipnya yaitu  membandingkan data dengan jarak tertentu 

dalam array.  

 

SYNTAX  


 

 

for jarak:= (Jumlah_data div 2) down to 1 do  

for i:=1 to Jumlah_data-jarak do  

if Data[i]>Data[i+jarak] then  

begin  

t:=Data[i];  

Data[i]:=Data[i+jarak];  

Data[i+jarak]:=t;  

end; 

 

 

Misalkan kita punya 8 data. Langkah pertama yaitu  membandingkan data pertama dengan 

ke lima, dsb. Jarak antara data yaitu  (8 div 2 :=4).  

 

Langkah iterasi: 

 

pertama, jarak yaitu  4.  

5 3 8 4 1 7 6 2  

ke-1 perbandingan : ^ ^ (salah urutan, tukar)  

1 3 8 4 5 7 6 2  

ke-2 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-3 perbandingan : ^ ^ (salah urutan, tukar)  

1 3 6 4 5 7 8 2  

ke-4 perbandingan : ^ ^ (salah urutan, tukar)  

1 3 6 2 5 7 8 4 ----> Jarak 3.  

ke-5 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-6 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-7 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-8 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-9 perbandingan : ^ ^ (salah urutan, tukar)  

1 3 6 2 4 7 8 5 ----> Jarak 2.  

ke-10 perbandingan :^ ^ ( urutan benar, no tukar)  

ke-11 perbandingan : ^ ^ (salah urutan, tukar)  

1 2 6 3 4 7 8 5  

ke-12 perbandingan : ^ ^ (salah urutan, tukar)  

1 2 4 3 6 7 8 5  

ke-13 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-14 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-15 perbandingan : ^ ^ (salah urutan, tukar)  

1 2 4 3 6 5 8 7 ----> Jarak 1.  

ke-16 perbandingan :^ ^ ( urutan benar, no tukar)  

ke-17 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-18 perbandingan : ^ ^ (salah urutan, tukar)  

1 2 3 4 6 5 8 7  

ke-19 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-20 perbandingan : ^ ^ (salah urutan, tukar)  

1 2 3 4 5 6 8 7  

ke-21 perbandingan : ^ ^ ( urutan benar, no tukar)  

ke-22 perbandingan : ^ ^ (salah urutan, tukar)  

1 2 3 4 5 6 7 8 

 

5.3. quick sort  

 

diketemukan oleh E. Hoare. Dengan memakai  metode rekursi samapi habis. Prinsipnya 

membagi data menjadi dua bagian yang sama (kiri dan kanan). Dimana data tengah menjadi 

pivot (pusat operasi). Kumpulkan data dengan nilai lebih kecil dari pivot disebelah kiri pivot, 

dan di kanan untuk yang lebih besar. Dimungkinkan bagian kiri dan kanan pivot tidak sama 


 

 

besarnya. Untuk itu tiap bagin di bagi menjadi dua lagi dan mempuyi pivot yang baru. Contoh 

misal kita memiliki  data array integer.  

 

procedure qsort(bawah, atas : integer)  

var kiri, kanan, pivot : integer;  

begin  

pivot:=Data[(bawah+atas) div 2];  

kiri:=bawah;  

kanan:=atas;  

while kiri<=kanan do  

begin  

while Data[kiri] < pivot do kiri:=kiri+1; { memisahkan ke kiri }  

while Data[kanan]>pivot do kanan:=kanan-1;{Memisahkan ke kanan}  

if kiri<=kanan then { chek perubahan }  

begin  

swap Data[kiri] with Data[kanan];  

kiri:=kiri+1;  

kanan:=kanan-1;  

end;  

end;  

if kanan>bawah then qsort(bawah,kanan);{ urutkan bagian KIRI }  

if atas>kiri then qsort(kiri ,atas);{ urutkan bagian KANAN}  

end; 

 

Pemangilan dalam program utama : qsort(1,NumberOfData);  

 

 

FILE  

1. Komposisi dari File Teks  

 

File Teks disusun sebagai runtunan beberapa baris .  

 

• Tiap baris terdiri dari runtunan karakter.  

• Tiap baris diakhiri oleh karakter khusus, yaitu END-OF-LINE (EOLN)  

• Karakter yang terakhir dari file teks yaitu  END-OF-FILE (EOF)  

 

 

Contoh.  

 

giving a system of n linear eq. that you need to solve for two unknowns, m and b,  EOL 

where the Ei are error terms. The linear-least-squares error algorithm employed hereEOL 

finds the best m and b such that the sum of the squared error terms is minimized.  EOL EOF 

 

 -EOF :menerima argumen nama file dan menghasilkan nilai true jika sudah tidak ada data 

yang bisa dibaca lagi.  

-EOLN :menerima argumen nama file dan menghasilkan nilai true jika sudah tidak ada lagi 

data yang bisa lagi dalam satu baris.  

 

 

 

 


 

2. Operasi pada file teks  

 

Untuk melakukan operasi pada file teks, kita perlu mendeklarasikan suatu variabel dengan 

tipe teks seperti berikut:  

 

var  

F : text; 

 

F yaitu  sembarang variabel file teks dan readme yaitu  nama file teks yang akan dibaca, 

pertama kita harus memanggilnya dengan fungsi :  

assign(F,'README');  

 

3. Membaca File dan Menampilkannya di Layar  

 

Sebelum kita bisa membaca kita harus membuka file tersebut.  

 

reset(F); 

 

kita bisa membaca file baris demi baris, misalkan dengan menyatakan suatu variabel s 

sebagai string:  

 

readln(F, s); 

 

setelah selesai membaca keseluruhan teks kita harus menutupnya dengan:  

 

close(F); 

 

 

Contoh. (misal kita punya suatu file dengan path ‘D:\file1.txt’)  

Program baca_file_teks;  

uses wincrt;  

var  

F : text;  

nama_file:string;  

s : string;  

begin  

clrscr;  

write('NAMA FILE YANG DIBACA: ');  

readln(nama_file); { menuliskan nama file ‘D:\file1.txt’}  

assign(F,nama_file); { memanggil file }  

reset(F); { membuka file}  

while not EOF(F) do { menampilkan seluruh isi file}  

begin  

readln(F,s);  

writeln(s);  

end;  

close(F); { menutup file }  

end. 

 

 

4. Menulis File Baru  

Kita membuat suatu file teks dengan mengubah kata kunci :  


 

 

reset(F); menjadi rewrite(F); 

 

Kemudian: Gunakan readln(F,s) untuk membaca file yang akan dikopi dan writeln(F,s) untuk 

menulis ke file tujuan  

Contoh 1.. (misal kita punya suatu file dengan path ‘D:\file1.txt’) dan kita akan memgkopinya 

ke file dengan path ‘D:\file1.txt’)  

Program baca_tulisfile_teks;  

uses wincrt;  

var  

F,F1 : text;  

nama_file:string;  

s : string;  

begin  

clrscr;  

write('NAMA FILE YANG DIBACA: ');  

readln(nama_file); { menuliskan nama file 'D:\file1.txt'}  

assign(F,nama_file); { memanggil file }  

reset(F); { membuka file}  

assign(F1,'d:\file2.txt');  

rewrite(F1);  

while not EOF(F) do  

begin  

readln(F,s); { membaca seluruh isi file}  

writeln(F1,s); { mengkopi isi file1.txt ke file2.txt}  

end;  

close(F); { menutup file file1.txt}  

close(f1); { menutup file file1.txt }  

end. 

 

 

Contoh 2. membuat file baru  

Program buat_file_baru;  

uses wincrt;  

var  

F : text;  

s : string;  

begin  

clrscr;  

write('Nama file yang akan dibuat : '); readln(s);  

assign(F,s); {mulai proses}  

rewrite(F); {membuat file baru}  

writeln('Mulai mengetikkan teks.');  

writeln('Untuk berhenti: tekan enter, spasi dan enter.');  

while s <>’ ‘ do  

begin  

readln(s); {tulis sampai selesai}  

writeln(F,s);  

end;  

close(F); { menutup file }  

end. 

 

 

Catatan: statemen rewrite(variabel_teks) apabila diterapkan pada file yang sudah ada akan 

menyebabkan isi file terhapus dan mulai membuat yang baru, maka untuk menambahkan 

teks pada file yang sudah ada dipakai  kata kunci append (variabel_teks).  

 


 

 

5. Error pada Pembacaan File  

 

Untuk mengatasi error pada pembacaan file teks dipakai  error-handling. yaitu :  

 

{$I-} --> membuat Pascal stabil  

: --> proses pada file  

{$I+} --> deteksi terhadap error 

 

 

error dapat di deteksi dengan memanggil fungsi IOResult. jika IOresult yaitu  0, maka tidak 

terjadi error.  

 

Contoh :  

Program coba_error;  

uses wincrt;  

var  

F : text;  

s : string;  

begin  

clrscr;  

write('Input file name to read : '); readln(s);  

assign(F,s);  

{$I-}  

reset(F);  

{$I+}  

if IOresult<>0 then  

begin  

writeln(‘terjadi kesalahan pada pembacaan file',s);  

halt;  

end;  

while not EOF(F) do  

begin  

readln(F,s);  

writeln(s);  

end;  

close(F);  

end. 

 

 

 

6. Jenis Error pada Pembacaan File  

 

IOresult dapat menghasilkan jenis kesalahan pada pembacaan file, seperti contoh.  

 

:  

{$I-}  

reset(F);  

{$I+}  

n:=IOResult;  

if n<>0 then  

begin  

writeln(terjadi kesalahan pada pembacaan file',s);  

case n of  

2: writeln ('File tidak ketemu');  

3: writeln ('lokasi tidak ketemu');  

4: writeln ('terlalu banayk file yang dibuka');  


 

5: writeln (akses file ditolak');  

100: writeln ('salah membaca disk');  

101: writeln('salah menulis disk');  

150: writeln('Disk diproteksi');  

152: writeln ('Drive tidak ada');  

154: writeln ('CRC error di data');  

156: writeln ('pencarian disk salah');  

157: writeln ('media tidak dikenal');  

162: writeln ('kerusakan Hardware');  

else writeln('pokoknya salah');  

end;  

halt;  

end; 

 

 






Lebih baru Lebih lama