pascal buku

47
MODUL PEMROGRAMAN DASAR PASCAL 1 DIGUNAKAN UNTUK MATERI KULIAH DAN PRAKTIKUM Untuk Kalangan Sendiri Tahun Ajaran 2010/2011

Upload: liisa-arma

Post on 28-Dec-2015

54 views

Category:

Documents


5 download

DESCRIPTION

kiui

TRANSCRIPT

MODUL PEMROGRAMAN DASARPASCAL

Oleh : I Ketut Adi Purnata

Pengenalan Algoritma

1

DIGUNAKAN UNTUK MATERI KULIAH DAN PRAKTIKUM

Untuk Kalangan SendiriTahun Ajaran 2010/2011

DIGUNAKAN UNTUK MATERI KULIAH DAN PRAKTIKUM

Untuk Kalangan SendiriTahun Ajaran 2010/2011

dan Struktur Dasar Bahasa Pascal

A. Sejarah Bahasa Pascal

Bahasa Pascal di desain pertama kali oleh Prof. Niklaus Wirth, Dari Polytechnic of Zurich Swiss, pada tahun 1971. pascal di ciptakan sebagai penyederhanaan dari dari bahasa slgol yang sudah ada sejak tahun 1960. Pada saat itu juga sudah ada bahasa FORTRAN, C, Assembler dan COBOL.

Perbedaan mendasar dari pascal adalah digunakanya urutan tertentu pemrograman yang berdasar atas konsep type data yang kuat, memerlukan deklarasi variabel terlebih dahulu dan kendali program yang terstruktur. Bahsa ini di desain sebagai alat bantu pengajaran bagi siswa di kelas / mata kuliah pemrograman (di Polytechnic of Zurich,Swees).

Turbo Pascal (TP) adalah sebuah program compiler Pascal dari Borland International yang dikeluarkan pada tahun 1983, yang merupakan implementasi dar”Pascal User Manual and Report” [Jensen & Wirth]. TP merupakan bahasa pemrograman yang sangat populer pada komputer-komputer ber-platform PC. TP mengenalkan konsep IDE (Integrated Development Environment), sebuah tampilan / lingkungan dimana programer dapat dengan mudah mengedit kode (dalam editor teks yang kompatible dengan wordstar), menjalankan compiler, melihat kesalahan (bila ada kesa;ahan penulisan kode program) dan dapat ’meloncat’ ke baris dimana kesalahan itu ada. Pada saat itu, untuk memperbaiki kesalahan, seorang programmer harus keluar dari editor, kembali ke DOS, menjalankan compiler, menuliskan kesalahan, membuka kembali editor dst, namun sekarang kita dapat menggunakan versi for windows dimana pengeditan lebih mudah dilakukan, misalnya TPW 1.5

B. Defenisi Algoritma

ALGORITMA adalah suatu urutan langkah-langkah (Steps) Yang disusun secara logis untuk menyelesaikan masalah dengan menggunakan komputer.Dengan kriteria sebagai berikut :

1. Setiap langkah/Step harus jelas dan pasti (Definite)2. Diperbolehkan tanpa ada input tetapi minimal harus ada 1 output.3. Jumlah langkah harus berhingga atau dengan kata lain harus ada stopping

criteria.4. Ditulis dengan format yang mudah dipahami sehingga tidak menimbulkan arti

ganda.5. Logika yang benar dan terstruktur dan semua operasi terdefensi dengan jelas.

Penyajian Suatu Algoritma :

Algoritma dapat disajikan dengan dua cara :

2

1. Secara Tulisan- Struktur Bahasa / Diskripsi- Pseudocode (kode semu)

2. Tehnk Gambar (Flowchart)Simbol-simbol dalm Flowchart (Bagan Alir)

Terminator / Proses (awal / akhir)

Input /Output

Proses

Titik keputusan

Sambungan dalam satu halaman

Sambungan ke lain halaman

Arah arus

C. Aturan Dalam Bahasa Pascal

1. Nama FileKarena Pascal dibuat untuk digunakan dilingkungan DOS atau dilingkungan Windows (TPW 1.5), maka biasakn menggunakan aturan penamaan file di DOS. Jumlah karakter nama file adalah 8 karakter (8.3). Program yang dibuat dengan pascal mempunyai ekstensi .PAS. (unit / uilitas : .TPU, .BGI, .CHR).

Tidak diperbolehkan :1. awalan angka (misalnya : 1st_prog.pas)2. mengandung karakter tidak lazim, misalnya : * , ! # ^ dst.3. Mengandung spasi misalnya : Prog ku.pas

2. Komentar Komentar di Pascal ditulis dengan tanda :(* ....Komentar....*) atau {....Komentar....}Apapun yang ditulis di dalam tanda ini tidak akan dikerjakan oleh kompiler, kecuali bila diikuti oleh tanda $, Misalnya { $ X+ } yang menunjukan simbol

3

direktif tertentu. Direktif digunakn agar compiler menggunakn kemampuan tertentu dari prosesor.

3. Huruf BesarPascal tidak membedakan huruf besar atau kecil dalm penulisan perintah, misalnya : sin(x), Sin(x), SIN(x). Kecuali penggunaan kata register, semata-mata untuk kompatibalitas dengan bahasa C. Untuk kemudahan (dan kerapian), penulisan variabel lebih baik diawali dengan huruf besar.Misalnya : JumlahAkhir, Jumlah, Jumlah_Awal

D. Struktur Program Pascal

Skema dari program Pascal adalah sebagai berikut :

ALGORITMA BAHASA PASCAL

Algoritma nama_algoritma {kepala algoritma, berisi penjelasan}

Deklarasi { Berisi variabel yang telibat }

Deskripsi { Berisi detail dari algoritma }

1. Program nama_algoritma;{program latiahan;}2. Bagian DeklarasiLabel (nama_labelnya);Var(nama_variabelnya);Const(nama = nilai konstanya);Procedure(Nama_prosedurnya); Fuction (nama_fungsinya);3. Bagian PernyataanBegin< <ernyataan – pernyataan >End.

Keterangan Struktur Program

1. Judul program (opsional)Format : {judul program} atau program_nama program;

2. Deklarasi program :Var {Variabel program}Const {Constanta program}Label {Label}Funct {Function}Procedure {Prosedur program}

Catatan :Deklarasi program bersifat opsional khusus, artinya jika di perlukan maka

harus ada dalam program dan apabila tidak diperlukan maka boleh tidak dicantumkan. Deklarasi program termasuk Identifier (pengenal), yaitu kata-kata yang diciptakan oleh pemrogram untuk mengidentifikasi sesuatu.

Syarat Identifier :

4

a) Harus diawali oleh alphabetb) Huruf besar / kecil yang digunakan dianggap samac) Penyusun dari sebuah identifier tidak boleh berupa : tanda baca, tanda relasi,

symbol arithmatik, karakter khusus atau reserved word.d) Tidak boleh dipisahkan dengan spasi, apabila hendak dipisahkan maka harus

menggunakan tanda UnderScore ( _ )e) Panjang identifier tidak dibatasi tetapi sebaiknya digunakan se-efektif mungkin.

3. Program Utama Diawali dengan Begin dan diakhiri dengan End.

Kata-kata yang Tidak Boleh digunakan sebagai nama variabel AND ASM ARRAY BEGIN Case CONST CONSTRUCTOR DESTRUCTUR DIV DO DOWNTO ELSE END EXPORTS FILE FOR FUNCTION GOTO IF IMPLEMENTATION IN INHERITED INLINE INTERFACE LABEL LIBRARY MOD NIL NOT OBJECT OF OR PACKED POCEDURE PROGRAM RECORD REPEAT SET SHL SHR STRING THEN TO TYPE UNIT UNTIL USES VAR WHILE WITH XOR PI

Perintah Dasar / Sederhana Pascal

Write(‘Text / Tulisan ‘,Variabel);Perintah untuk menampilkan atau cetak dilayar monitor tanpa pindah baris

Writeln(‘Text / Tulisan ‘,Variabel);Perintah untuk menampilkan / cetak dilayar monitor lalu pindah baris bawah

Read(Variabel);Perintah utuk menginput / mengisi data tanpa pindah baris

Readln(Variabel);Perintah untuk menginput / mengisi data lalu pindah baris

Contoh :

Listing ProgramnyaProgram tulis;Uses Crt;Begin

Clrscr;Writeln(’Saya’);Write(’Belajar’);Writeln(’Turbo’);

5

Write(‘Pascal’);Write(‘Versi 7.1’);Readln;

End.

Tekan ctrl F9 untuk eksekusi programHasilnya :Saya Belajar Turbo Pascal Versi 7.1

Identifier / Pengenal DataDigunakan untuk penamaan elemen-elemen deklarasi seperti label, Constanta, Type, Variabel, Procedure, Function.

Syarat Identifier Diawali huruf Tidak boleh ada spasi / blank Tidak boleh menggunkan reserved word Tidak boleh menggunakn symbol khusus,kecuali underscore (tanda bawah) Panjang maximal 63 charakter

Contoh : Luas_Segi_Tiga LuasSegiTiga LuasS3 LS3

Tipe Data Dalam Turbo Pascal

Tipe data berfungsi membatasi jangkauan data yang akan dilaksanakan.Macam-macam tipe data :a) Tipe data standard, terdiri atas :

- Ordinal (Tipe data yang mempunyai urutan pasti / tidak mengandung decimal)- Non-Ordinal

b) Tipe data terstrukturc) Tipe data pointer

6

Tipe Data StandardI. Type Ordinal

Tipe data yang mempunyai urutan pasti, dan masdih terbagi menjadi :

a) Type Integer (tipe data yang tidak mempunyai unsur desimal)

Type Jangkauan Ukura Sortint -128....127 8 bitInteger -32768....32767 16 bitLongint -

2147483648....214748364732 bit

Byte 0....255 8 bit

Word 0....65535 16 bit

Operator-operator yang berlaku padatipe data integer, yaitu :- Operator arithmatika : +, -, *, /, div, mod- Operator logic : <, =, >, <=, >=, <>

Catatan : semua tipe integer adalah tipe ordinal.

b) Tipe Char (Karakter) Tipe data tunggal yang berhubungan dengan tombol-tombol di keyboard.Char adalah semua tombol yang terdapat pada keyboard atau lebih lengkapnya semua karakter yang terdapat pada kode ASCII.Catatan :

Apabila Char ingin dijadikan sebagai konstanta maka karakter yang dimasukan harus diapit dengan tanda kutip satu. Dan apabila karakter itu berupa tanda kutip satu maka harus diapit dengan dua tanda kutip satu.

Misalnya : ’A’

c) Tipe Boolean Mempunyai nilai benar / salah. Operator yang penghubung untuk tipe boolean adalah : =, <>, >, <, >=, <=Boolean akan menghasilkan false jika nilai = 0 dan akan menghasilkan true jika nilai = 1.

II. Real (Tipe data yang mengandung unsur desimal)Tipe real dibagi menjadi 4 macam yaitu :

- Real ( 6 byte )- Single ( 4 byte )- Extended ( 10 byte )- Double ( 8 byte )

Type Jangkauan Ketelitian DigitReal 2.9e-39..1.7e38 11 – 12 digitSingle 1.5e-45..3.4e38 7 – 8 digitDouble 5.0e-324..1.7e308 15 – 16 digitExtended 3.4e-4932..1.1e4932 19 – 20 digit

7

III. String (adalah kumpulan type data yang berbentuk karakter)Tipe data string digunakan untuk menampung nilai dalam bentuk huruf, dimana batas maximal adalah sebanyak 255 karakter.

Contoh :Var nama : String [25] ;

Untuk pengolahan Type Variabel di atas, disediakan berbagai jenis operator diantaranya :

Berhubungan dengan Benar / Salah

Deklarasi VariabelAdalah eleman data yang belum memiliki nilai dan nilainya dapat berubah ubah, kecuali kita sengaja memberikan nilai awalnya.

Contoh :USES CRT;VAR Nama : String[25]; Nilai : Integer;Begin

Write(’Nama Siswa :’);Readln(Nama);Write(’Nilai Ujian :’);Readln(Nilai);

End.

Ctrl F9 lalu isi datanya

8

Operator Kegunaan+ Penambahan- Pengurangan* Perkalian/ Pembagian Real TypeDiv Hasil Bagi IntegerMod Sisa Bagi Integer: = Menyatakan Nilai= Sama Dengan< , <= Kurang dari sama dengan> , >= Lebih dari sama dengan<> Tidak sama dengan

Deklarasi Konstanta Adalah suatu elemen data yang sudah ada nilainya dan nilainya tetap.

Contoh :USES CRT;CONST Namasis = ’BUDI’;

IPK = 3.35;Mutu = ‘A’;

Begin Clrscr;Write(‘Nama Siswa :’,Namasis);Write(‘Nilai IPK :’,IPK);Write(‘Mutu Ujian :’,Mutu);

End.

Ctrl F9Nama Siswa : BUDINilai IPK : 3.350000E+0Mutu Ujian : A

Operasi Kondisional, String dan Struktur Kontrol

Selain operasi-operasi standard yang sudah kita bahas pada modul sebelumnya, operasi-operasi tambahan untuk menyelesaikan permasalahan dalam pascal, di antaranya :

1. Operasi Aritmatika

Adalah operasi yang digunakan untuk menyelesaikan perhitungan-perhitungan matematika, operasi yang bisa anda gunakan di dalam pascal diantaranya :

Fungsi Argumen Hasil KeteranganSqr(x) Integer/Real Integer/Real Menghitung kuadrat dari xSqrt(x) Integer/Real Integer/Real Menghitung akar kuadrat dari x

9

Trunc(x) Real Integer Memotong nilai xRound(x) Real Integer Membulatkan nilai x

Contoh :Trunc(19.8) Menghasilkan 19Trunc(19.0001) Menghasilkan 19Round(19.8) Menghasilkan 20 (pembulatan ke atas)Round(19.0001) Menghasilkan 19 (pembulatan Ke bawah)

2. Operasi Kondisional (Pembandingan)Adalah opersai yang digunakan untuk menyelesaikan masalah-masalah yang

berhubungan dengan pengambilan keputusan (benar/salah) dari satu atau lebih kondisi (pernyataan), penggunaan Operator Kondisional biasanya disertai dengan membandingkan dua atau lebih nilai.\

Semua hasil dari Operator Kondisional, akan menghasilkan nilai dengan tipedata Boolean, artinya akan menghasilkan nilai Benar / Salah ( True or False ).

Operator Pembanding yang bisa anda guinakan diantaranya :

Operator Keterangan Operator Keterangan= Sama dengan <= Kurang dari sama dengan< Kurang dari >= Lebih dari sama dengan> Lebih Dari <> Tidak sama dengan

Adapun nilai-nilai yang bisa dibandingkan bisa berupa :- Angka dengan Angka ( 14 < 10 ) bernilai False- Huruf dengan Huruf (’A’ = ’B’) bernilai False- Variabel dengan Angka (Umur < 17), Jika Umur :=10; bernilai True- Variabel dengan Huruf (Nama =’Adi’),Jika Nama :=’Eko’; bernilai True- Variabel dengan Variabel ( p <> L ), Jika P :=13; L :=10; bernilai True

Catatan : Variabel adalah tempat untuk menampung sebuah nilai (Nilai yang bisa berubah-ubah)

Apabila terdapat lebih dari satu kondisi, maka anda bisa mencari hasil kebenaran atau kesimpulan dari kondisi-kondisi yang ada dengan Operato Kondisional, diantaranya :

A. NOT ( Bukan )Operasi ini digunakn untuk mengingkari suatu pernyataan Boolean ( Kondisi )Contoh :

NOT ( 14 < 10 ), maka akan bernilai TrueB. AND ( Jika salah satu salah akan bernilai salah )

Operasi ini akan menentukan kesimpulan dari kondisi-kondisi yang ada dengan kriteria Nilai hanya akan Bernilai True apabila semua kondisi bernilai True.Contoh :

( 14 < 10 ) AND ( 20 < 100 ), maka bernilai True ( 5 < 17 ) AND ( 14 <= 14 ), maka bernilai True

C. OR ( Jika salah satu benar akan bernilai benar ) Operasi ini akan menentukan kesimpulan dari kondisi-kondisi yang ada dengan kriteria nilai yang akan bernilai True apabila ada salah satu saja kondisi yang bernilai Benar ( True ), sehingga hanya kondisi (pernyataan) yang semuanya bernilai False yang akan menghasilkan nilai/kesimpulan yang salah.Contoh :

10

( 14 < 10 ) OR ( 5 < 20 ), maka bernilai True ( 10 > 20 ) OR ( 3 > 2 ), maka bernilai True

3. Operasi String (Kumpulan Karakter)Adapun Operasi – operasi yang bisa digunakan untuk memanipulasi nilai string (Huruf), adalah sebagai berikut :

a. DELETE ( Var S : String, Index : Integer, Count : Integer );

Digunakan untuk menghapus sejumlah karakter dari sebuah nilai String.Keterangan :- Var S : String, adalah variabel tempat nilai string disimpan.- Index : Integer, adalah dimulai dari posisi ke....- Count : Integer, adalah sebanyak berapa karakter yang akan

dihapus.

Contoh :Var S : String ;S := ’DATUK’ ; Maka akan Menghasilkan : DAKDelete ( S, 3, 2 ) ;

b. INSERT ( Source : String. Var S : Integer, Index :Integer ) ;

Digunakan untuk menambahkan sejumlah karakter dari sebuah nilai String.Keterangan :- Source : String, adalah sejumlah karakter (Huruf) yang akan ditambahkan

Contoh :Var S : String ;S := ’DATUK’ Maka akan Menghasilkan : DA!!!TUKInsert ( ’!!!’ , S, 3 )

c. COPY ( S : String, Index : Integer, Count : Integer ) ;

Perintah ini digunakan untuk menyalin (Copy) sejumlah karakter dari sebuah nilai String.

Contoh :

Var S, Hasil : String ;S := ’DATUK’ ; Maka akan Menghasilkan : ATUHasil := COPY ( S, 2, 3 ) ;

d. CONCAT ( S_ke1 [, S_ke2, ... , S_ke-n] : String);

Digunakan untuk menggabungkan beberapa String yang di tunjukan oleh variabel S(n).

Contoh :

ConstNama : String = ’PASCAL’ ;

11

Dll : String = ’dan keluarga’ ;Var Hasil : String ;

BeginHasil := CONCAT (’Bahasa’,Nama,’untuk anda’,Dll);Write (Hasil);

End.

OUTPUT : Bahasa Pascal untuk anda dan keluarga

e. POS (Var Substring : String , S : String) ; Menghasilkan angka (Byte)

Digunakan untuk mencari posisi letak dari suatu string (ditunjukan oleh substring)Yang ada didalam nilai String yang lain (ditunjukan oleh s). Nilai yang dihasilkan adalah berupa nilai byte yang menuinjukan letaknya. Bila bernilai nol berarti nilai string yang di cari tidak ada.

Contoh :

ConstS : String =’ABCDEFGHIJKLMNOPQRSTUVWXYZ’ ;

Var Substring : String ;Posisi : Byte ;

Begin Substring : = ’ I ’ ;Posisi : = POS (Substring , S) ;Write (’ Huruf ’,Substring,’berada pada karakter ke –’, posisi) ;

End.

OUTPUT : Huruf I Berada pada karakter ke – 9

f. LENGTH (S : String) ; Menghasilkan angka (Integer)

Digunakan untuk menghitung panjang atau jumlah karakter yang ada di nilai String yang ditunjukan oleh S. Hasil dari fungsi ini adalah nilai numerik ineteger positif.

12

Contoh :Var

NamaAnda : String[50] ;Pangkar : Integer ;

Begin Write (’Nama Anda : ’) ; Readln(NamaAnda); Pangkar : = Length(NamaAnda); Writeln(’Panjang nama anda adalah ’, Pangkar ,’ Karakter,’) ;End.

OUTPUT : Nama Anda : TUKULPanjang nama anda adalah 5 karakter.

STRUKTUR CONTROL

Istilah control didalam pascal adalah perintah untuk mengontrol jalanya program, sehingga dimungkinkan dalam sebuah program akan melakukan proses yang tidak berurutan antara baris pertama dengan baris selanjutnya, atau program akan mengabaikan perintah pada baris-baris kode tertentu sesuai kontrol yang diberikan. Adapun macam-macam kontrol didalam pascal yakni : Kontrol Percabangan (Switching and Branching) dan Kontrol Perulangan (Looping).

Kontrol Percabangan dan PenyelesaianyaAdalah perintah yang digunakan untuk menentukan /memilih blok statement yang mana yang akan dikerjakan, dan mengabaikan blok statement tertentu. Perintah yang bisa digunakan adalah:

1 . IF Stateman

IF, artinya JIKA, Adapun Bentuk dari penggunaan IF adalah secara :

a. IF Tunggal

Adalah IF yang hanya mempunyai satu pilihan, yakni {Blockstatement}. Akan dieksekusi/dikerjakan apabila kondisi Bernilai Benar (True), sehingga apabila Kondisi salah (False), maka akan langsung mengeksekusi/mengerjakan perintah pada baris selanjutnya. Bentuk Strukturnya :

13

IF (Kondisi ) Then { Blok Statement } ;

Contoh Praktek 1 :

ConstA : Integer = 10;B : Integer = 250;

BeginIF (A < B) Then Writein [` A Lebih kecil dari B `];Write[` Belajar Struktur Percabangan`];

End.

? Outputnya (Harapdiisi sendiri) adalah : Jawab :

A Lebih kecil dari BBelajar Struktur Percabangan

? Jika A = 35, dan B = 24, maka Outputnya : Jawab :

Belajar Struktur Percabangan

b. IF Majemuk dan Bersarang ( NESTED IF )

Adalah IF yang Mempunyai {Blok Statement Benar} Yang akan dikerjakan apabila Kondisi Benar Kemudian Mengabaikan {Blok Statement Salah}, dan sebaliknya.

Apabila Terdapat Lebih dari satu Baris Blok Statemetn, maka hendaknya menggunakan pemisah BEGIN dan END; (end dengan titik koma).

Bentuk Penggambaran Flowchart nya adalah :

If ( umur < 17 ) Ya

Tidak

Fungsi Begin dan End adlah Untuk membatasi langkah program apabila terdapat lebih dari 1 perintah/statement.Adapun Struktur penulisannya :

IF ( Kondisi _ke_1 ) Then Begin

{ Blok Statement Benar Kondisi ke – 1 }; IF ( Kondisi_Ke_2 }; Then

Begin { Blok Statement Benar Kondisi Ke – 2 } ;

14

{ Blok Statement Benar Kondisi Ke – 2 } ;End Awas : TIDAK BOLEH ADA TITIK KOMA SEBELUM ELSE

ELSEBegin { Blok Statement Benar Kondisi Ke – 2 } ; { Blok Statement Benar Kondisi Ke – 2 } ;End ;

{ ini juga Blok Statement Benar Kondisi Ke – 1 };End Awas : TIDAK BOLEH ADA TITIK KOMA SEBELUM ELSE

ELSEBegin

{ Blok Statement Benar Kondisi Ke – 1 } ;{ Blok Statement Benar Kondisi Ke – 1 } ;

End;

Struktur Kontrol, Readkey dan Goto Label

Statement Case...Of...Adalah struktur kontrol yang biasanya digunakn untuk menentukan satu pilihan

dari daftar pilihan yang banyak. Kelebihan dari penggunakan kontrol adalah kita tidak perlu membuat sebuah kondisi seperti halnya yang kita lakukan pada saat menggunakan kontrol If Then Else.

Syntax :CASE < selector > OF < case – label 1 > : < perintah >

< case – label 2 > : < perintah >

ELSE Bila dibutuhkan fungsinya sama dengn ELSE pada If< case – label X > : < perintah >

END;

Ingat !!!........ : Case...Of tidak mebutuhkan BEGIN tetapi memerlukan END ;

Struktur Case – Of mempunyai ungkapan logika yang disebut dengan selector atau nilai /isi variabel yang dibacanya dan sejumlah perintah yang diawali dengan suatu case label yang mempunyai tipe yang sama dengan selector. Perintah yang mempunyai case label yang bernilai sama dengan nilai selector akan diproses sedangkan perintah lain-nya tidak. Bila nilai selector diluar nilai-nilai yang ada pada case label maka struktur Case – Of tidak dijalankan atau keperintah ELSE-nya.

15

Daftar case label dapat berupa sebuah konstanta, atau range dari konstanta yang bukan bertipe real. Tipe variabelnya dapat berupa Integer atau Character.

Contoh jangkauan dari case label yang diberikan : 1 : nilai Integer 1

1,2,3,4 : nilai Integer 1,2,3,4

1..5 : nilai Integer 1,2,3,4,5

’A’ : nilai karakter A

’A’,’B’ : nilai karakter A,B

’A’..’D’ : nilai karakter A,B,C,D

’ * ’ : nilai karakter *

Contoh penggunaan Case – Of :Var

Nilai : Char;Grade : String [12];

Begin Write (’ Nilai Huruf yang didapat ? ’) ;Readln(Nilai) ;Case Nilai Of

’A’ : Grade := ’ Sangat Baik ’ ;’B’ : Grade := ’ Baik ’ ;’C’ : Grade := ’ Cukup ’ ;’D’ : Grade := ’ Kurang ’ ;’E’ : Grade := ’ Gagal ’ ;

End;Write (’ Grade yang kamu dapat = ’,Grade) ;Readln ;

End.

Output dari program ini :Nilai huruf yang didapat ? C Input yang dimasukan Cukup

Pada contoh diatas yang dimaksud dengan SELECTOR adalah variabel NILAI dan CASE LABEL adalah index A,B,...,E.

TAMBAHAN SYNTAK :

1. GOTO LABELDugunakan untuk mengalihkan langkah eksekusi program kepad label yang dituju.Bentuk Umum : GOTO label Statement

16

Contoh :Program Lat_GOTO ;Uses Crt ;Label Berpindah,Selesai ;Begin

Clrscr ;Writeln (’ Bahasa ’) ;Goto Berpindah ;Writeln (’ Basic ’) ;

Berpindah :Writeln (’ Pascal ’) ;Goto Selesai ;Writeln (’ Cobol ’) ;

Selesai :Readln ;

End.

2. READKEYReadkey digunakan untuk memasukan satu karakter kedalam sebuah variabel tanpa menampilkan berapa nilai yang diberikan di layar.

Contoh :

Program Lat_Readkey ;Uses Crt ;Label keluar ; Var

Pilihan : Char ;Begin

Clrscr ;Write (’ masukan Pilihan : ’) ;Pilihan := Readkey ;Case (pilihan) Of ’a’ : Write (’ anda memilih menu MAKANAN pada daftar PAKET A ’) ; ’b’ : Write (’ anda memilih menu MAKANAN pada daftar PAKET B ’) ;Else

BeginWriteln (’ tidak ada daftar untuk menu tersebut ’) ;Writeln (’ terima kasih sudah mencoba program ini ’) ;Goto keluar ;

End ;End ;Write(’terima kasih telah makan di restouran kami ’) ;

Keluar ; Readln ;End.

17

Kontrol Perulangan dengan FOR . . TO . . DO

KONTROL PERULANGAN

Adalah perintah yang digunakan untuk menyelesaikan masalah-masalah yang membutuhkan perulangan (Looping) dalam setiap mengeksekusi perintah-perintah logika yang berada pada rentang yang terhingga (ada batasnya).

Penggunaan kontrol perulangan bertujuan untuk meng-efisien-kan pembuatan program, sehingga programer tidak perlu menuliskan langkah-langkah program yang sifatnya bisa diulang, cukup disederhanakan bentuk penulisanya dengan menggunakan kontrol perulangan.

Gambaran :Writeln (’ ADI ’) ; Bentuk ini bisa diulang, cukup menuliskanWriteln (’ ADI ’) ; satu perintah saja, lalu di ulang sebanyakWriteln (’ ADI ’) ; tiga kali.

Macam – Macam Bentuk Syntax Looping

Adapun perintah perulangan yang bisa kita gunakan sesuai dengan konsep dan fungsinya adalah sebagai berikut :

1. FOR

Adalah perintah perulangan yang digunakan apabila jumlah atau banyaknya perulangan yang akan dilakukan sudah diketahui, artinya perulangan menitik beratkan pada berapa kali perulangan akan dilakukan.

Strukturnya adalah :

FOR [Variabel_Kontrol] := [Index_Awal] TO/Downto [Index_Akhir] DOBegin

{Blok statement yang akan diulang}

18

End;

Keterangan :Variabel_Kontrol : Variabel bertipe ordinal sebagai penampung perulangan ke-...Index_Awal : Nilai/Variabel bertipe ordinal dimulainya perulangan Index_Akhir : Nilai/Variabel bertipe ordinal berakhirnya perulanganTO : Secara Ascending (dari nilai Kecil ke nilai Besar)Downto : Secara Descending (dari nilai Besar ke nilai Kecil)

Contoh :Program Perulangan ; Di ulang sebanyak tiga kaliUses Crt ;Var

Ulang : Integer ;Begin

For Ulang := 1 To 3 DoBegin

Writeln(’ADI’) ;End;

End.

Anda juga bisa menggunakan Opsi DOWNTO untuk mengulang secara Descending (dari besar ke kecil), dan juga bisa memanfaatkan nilai yang ada pada Variabel_Kontrol sesuai dengan kebutuhan anda.Contoh :

For Bilangan := 5 Downto 1 DoBegin

Writeln(Bilangan) ;End ;

FOR TO DO Bertingkat / Majemuk

Adalah penggunaan perintah For To Do yang lebih dari satu bagian perulangan, cara ini biasanya digunakan dalam memproses perulangan secara baris dan kolom.

Baris : dari atas ke bawahKolom : dari kiri ke kanan

Catatan : struktur perulangan For To Do yang berada di bagian lebih dalam akan diselesikan terlebih dahulu sebelum melanjutkan menyelesaikan bagian For To Do yang lebih luar.

19

Outputnya :

ADIADIADI

Outputnya :

54321

Contoh Program

1. Jika masukan baris dari keyboard = 5, maka :

** ** * ** * * ** * * * *

Cara berfikir : .................???

Program Bintang ;Uses winCrt ;Var baris, kolom : Integer ;Jmlh : Integer ;Begin

Clrscr;Write (' Masukan Jumlah Baris : ') ; Readln (Jmlh) ;For Baris := 1 to Jmlh DoBegin

For kolom := jmlh-baris to jmlh-1 do Begin

Write(' * ') ;End;

Writeln;End;Readln ;

End.

20

2. Jika masukan baris dari keyboard = 5, maka :

* * * * ** * * * * * ** **

Cara berfikir : .................???

Program Bintang ;Uses winCrt ;Var baris, kolom : Integer ;Jmlh : Integer ;Begin

Clrscr;Write (' Masukan Jumlah Baris : ') ; Readln (Jmlh) ;For Baris := 1 to Jmlh DoBegin

For kolom := baris to jmlh do Begin

Write(' * ') ;End;

Writeln;End;Readln ;

End.

21

Kontrol Perulangan While . . Do dan Repeat . .Until

Statemen While . . Do (Selama . . .lakukan)

While artinya selama , statemen ini digunakan bila satu atau lebih statemen akan dieksekusi berulang kali sampai kondisi yang dinyatakan dalam statemen WHILE tidak dipenuhi (FALSE).

Konsep :1. Perulangan dititik beratkan kepada Selama apa perulangan akan dilakukan 2. Selama kondisi bernilai Benar, maka Kerjakan / Ulangi perintah didalam blok

perulanganya.

Bentuk umumnya : While (kondisi) do Begin

Blok statement atau perintah yang diulang ; End;

Keterangan Kondisi : ungkapan boolean (kondisi) yang digunakan sebagai syarat agar statemen

dikerjakan berulang kali.Statemen : satemen tunggal atau statemen majemuk yang akan diproses ulang.

Adapun hal-hal yang digunakan dalam while :Increment : adalah penambahan satu Decrement : adalah perulangan satu

Inc (bilangan) ; Bilangan := bilangan + 1 ;Inc (jumlah,bilangan) ; Jumlah := Jumlah + Bilangan ;Dec (bilangan,2) ; Bilangan := Bilangan – 2 ;

Contoh :

Program Selama ;Uses crt ;Var Bilangan Integer ;Begin Clrscr

22

Ini adalah pemberian nilai awal karena variable bilangan akan dikondisikan dalam while, dengan kata lain, supaya ada nilainya

Di dalam while terdapat kondisi, terletak di awal, artinya selama kondisi ini bernilai benar, maka perulangan akan terus dilakukan, jadi perulangan akan berhenti apabila kondisinya sudah bernilai salah.

Bilangan := 0 ;

While (bilangan < 10 ) doBegin

Write(bilangan) ;Bilangan := Bilangan + 1 ;

End ;Readln ;

End.

Statemen Repeat . . Until (Ulangi . . . Sampai)

Cara kerja statemen ini merupakan kebalikan dari statemen while. Karena untuk statemen while, test penghentian looping (kondisi) ada di awal, tetapi untuk repeat ini ada di akhir. Dan dalam statemen repeat ini proses berulang akan dilaksanakan terus selama kondisi dipenuhi.

Konsep : Kerjakan/Ulangi perintah dalam blok perulangannya, sampai kondisi bernilai Benar.

Konsep : Perintah perulangan Mionimal sekali dikerjakan, karena kondosi terdapat di akhir.

Bentuk umumnya :

Repeat Begin

Blok Statement atau peintah yang diulangEnd ;Until (kondisi) ;

Contoh :

Program Selama ;Uses Crt ;Var

Bilangan : Integer ;Begin

Clrscr ;

Bilangan := 0 ;

RepeatBegin

Write(Bilangan) ;Bilangan := Bilangan + 1 ;

End;Until (Bilangan > 10) ;

Readln ;End.

23

Ini adalah perintah yang harus anda buat agar perulangan mempunyai batas, sengaja harus anda buat dan tentukan sehingga memungkinkan anda tidak terjebak di dalam perulangan yang tiada hentinya

Ini adalah pemberian nilai awal, karena variabel bilangan akan di kondisikan di akhir, dengan kata lain, supaya ada nilainya.

Ini adalah perintah yang harus anda buat agar perulangan mempunyai batas, sengaja harus anda buat dan tentukan sehingga memungkinkan anda tidak terjebak didalam perulangan yang tiada hentinya

Ini adalah kondisi, terletak di akhir, dan disertai titik koma

ARRAY atau Variabel ber – Index

Wacana :Misal kita ingin menampilkan 3 buah bilangan yang dimasukkan dari keyboard oleh user, selama ini menggunakan cara seperti dibawah ini :

Program tampilan_bilangan ;Uses Crt ;Var

Bil_satu : integer ;Bil_dua : integer ;Bil_tiga : integer ;

BeginClrscr ;Write(’Masukan Bilangan Ke – 1 : ’) ; readln(Bil_Satu) ; Write(’Masukan Bilangan Ke – 2 : ’) ; readln(Bil_Dua) ;Write(’Masukan Bilangan Ke – 3 : ’) ; readln(Bil_Tiga) ;Write(’----------------------------------------------------’);Write(’Bilangan Ke – 1 = ’,Bil_Satu) ;Write(’Bilangan Ke – 2 = ’,Bil_Dua) ;Write(’Bilangan Ke – 3 = ’,Bil_Tiga) ;Readln ;

End.

Meskipun outputnya benar, namun cara diatas mempunyai bebarapa kelemahan :1. Bagaimana jika bilanganya diatas 100 ? pasti capek nulisnya ☺ 2. Kita harus memakai dan mendeklarasikan banyak variabel.3. Kalaupun dipecahkan dengan perulangan FOR TO DO, pasti bilangan-bilangan

yang di-input-kan tidak bisa ditampilkan, karena kita pasti hanya akan menggunakan satu variabel saja.

Pemecahan/ Solusi dari ketidak efektifan untuk penanganan kasus diatas adalah dengan menggunakan bantuan Variabel Ber-Index (ARRAY).

ARRAY adalah sebuah Variabel (yang fungsinya untuk menampung sebuah nilai), namun mempunyai kemmpuan untuk menyimpan beberapa nilai yang ber – tipe data sama dengan sekaligus kedalam elemen-elemen variabelnya yang diwakili oleh Index of Array.

Pendeklarasian Array :1. Ditulis dalam Blok Deklarasi Variabel2. Membuat nama Variabel Array3. Menentukan Jangkauan Index (berapa kotak mau dibuat)4. Menentukan Tipe-Data dari nilai yang akan dimasukan kedalam Array

Bentuk umum Pendeklarasian Array :

Var nama : Array [Index] of Tipe-Data

Dengan Var, array, of : kata kunci yang harus ada.

24

Output :

Masukan Bilangan Ke – 1 : 25 Masukan Bilangan Ke – 2 : 700 Masukan Bilangan Ke – 3 : 1245-------------------------------------------------Bilangan Ke - 1 = 25Bilangan Ke - 2 = 700Bilangan Ke - 3 = 1245

Nama : nama array yang akan dideklarasikan.Index : batasan index yang akan ada pada array yang akan dideklarasikan misal :[1..3] dan [1..1000] Tipe : tipe data array

Misal :Var

Bilangan : Array [1 . . 3] Of Integer ;

Bilangan

1

2 3

25

25

700

1245

Nama Variabel

Nilai yang disimpan dalam Array

Index, dimulai dari Index Ke - 1

Memberikan nilai kedalam Array

Ada beberapa cara dalm memberikan nilai kedalam array, yakni secara langsung dengan menggunakan operator penugasan ( :=), atau dengan menggunakan bantuan Perintah Perulangan.

1. Dengan Menggunakan Operator PenugasanContoh :Program tambah ; Uses Crt ;Var

Bilangan : Array [1..3] of Integer ;Jumlah : Array [1..3] of Integer ;

BeginClrscr ;Bilangan [1] := 5 ;Bilangan [2] := 10 ;Bilangan [3] := 7 ;Jumlah [1] := bilangan[1] + bilangan[2] ;Jumlah [2] := bilangan[1] + bilangan[2] ;Jumlah [3] := bilangan[2] + bilangan[3] ;Writeln(’---------------------------------------------’) ;Writeln(bilangan[1],’+’, bilangan[2],’=’,jumlah[1]) ;Writeln(bilangan[1],’+’, bilangan[3],’=’,jumlah[2]) ;Writeln(bilangan[2],’+’, bilangan[3],’=’,jumlah[3]) ;Writeln(’---------------------------------------------’) ;Readln ;

End.

2. Dengan Menggunakan Perintah Perulangan Contoh :Program Tambah ;Uses Crt ;Var

Bilangan : Array [1..30] of integer ;I , j : integer ;

BeginClrscr ;Writeln(’----------------------------------------’);For i:=1 To 3 DoBegin Write(’masukan bilangan ke-’,i,’ : ’); readln(bilangan[i]) ;End;Writeln(’----------------------------------------’);For j:=1 To 3 DoBegin Writeln(’bilangan ke-’,i,’ = ’, bilangan[j]) ;End;Readln ;

End.

26

Output :

Masukan bilangan ke-1 : 5

Masukan bilangan ke-1 : 10 Masukan bilangan ke-1 : 7

Bilangan ke-1 = 5Bilangan ke-1 = 10Bilangan ke-1 = 7

Output :

5 + 10 = 155 + 7 = 1210 + 7 = 17

ARRAY DUA DIMENSI

Adalah Array yang digunakan dalam pemrosesan data/ nilai secara baris dan kolom. Artinya Index-index yang ada adalah mewakili letak koordinat baris dan kolom.Jadi anda bisa menggunkana bantuan FOR BERTINGKAT untuk bisa memasukan nilai-nilai nyaKedalam Array.

Contoh Kasus :

NAMA PESERTANILAI

RATA-RATATUGAS QUIZ UTS UAS

SAPUTRA 40 45 65 55 51.25

ASTUTI 65 90 70 95 80.00

HENDRA 75 80 60 65 70.00

Untuk memasukan nilai ke dalam Array-nya, kita harus analisa terlebih dahulu,sehingga :

1. Variabel NAMA, merupakan Array 1 Dimensi bertipe-data STRING, Sehingga :

’SAPUTRA’ Nama[1] ; cara : GOTOXY(1,3) ; Readln(NAMA[1]) ;’ASTUTI’ Nama[2] ; cara : GOTOXY(1,4) ; Readln(NAMA[2]) ;’HENDRA’ Nama[3] ; cara : GOTOXY(1,5) ; Readln(NAMA[3]) ;

2. Variabel NILAI, merupakan Array 2 Dimensi bertipe-data INTEGER, Sehingga :

40 NILAI [1,1] ; cara : GOTOXY(20,3) ; READLN(NILAI[1,1]) ;45 NILAI [1,2] ; cara : GOTOXY(30,3) ; READLN(NILAI[1,2]) ;65 NILAI [1,3] ; cara : GOTOXY(40,3) ; READLN(NILAI[1,3]) ;55 NILAI [1,4] ; cara : GOTOXY(50,3) ; READLN(NILAI[1,4]) ;65 NILAI [2,1] ; cara : GOTOXY(20,4) ; READLN(NILAI[2,1]) ;90 NILAI [2,2] ; cara : GOTOXY(30,4) ; READLN(NILAI[2,2]) ;: :: :60 NILAI [3,4] ; cara : GOTOXY(50,5) ; READLN(NILAI[3,4]) ;

3. Variabel RATA, merupkan Array 1 Dimensi bertipe-data REAL, Namun anda harus menghitung beberapa jumlah nilai-nilainya, kemudian dibagi dengan 4,sehingga:

RATA[1]:=(40+45+65+55)/4; Cara : GOTOXY(60,3) ; WRITE(RATA[1]:0:2);RATA[1]:=(65+90+70+95)/4; Cara : GOTOXY(60,4) ; WRITE(RATA[2]:0:2); RATA[1]:=(75+80+60+65)/4; Cara : GOTOXY(60,5) ; WRITE(RATA[3]:0:2);

27

20 30 40 50 60

3

1

1

4

5

Jadi Listing Perulangan yang bisa digunakan : VAR

NAMA : ARRAY [1..3] OF STRING ;RATA : ARRAY [1..3] OF REAL ;NILAI : ARRAY [1..3,1..4] OF INTEGER ;BARIS, KOLOM, JUMLAH : INTEGER ;RATA1 : REAL ;

FOR BARIS := 1 TO 3 DOBEGIN

Gotoxy(1,BARIS+2) ; Readln(NAMA[BARIS]);Jumlah := 0;FOR KOLOM := 1 TO 4 DoBegin Case KOLOM OF 1 : Begin

Gotoxy(20,BARIS+2); Readln(NILAI[BARIS,KOLOM]); End;2 : Begin Gotoxy(30,BARIS+2); Readln(NILAI[BARIS,KOLOM]); End;3 : Begin Gotoxy(40,BARIS+2); Readln(NILAI[BARIS,KOLOM]); End;5 : Begin Gotoxy(50,BARIS+2); Readln(NILAI[BARIS,KOLOM]); End;

End;Jumlah := Jumlah + NILAI[BARIS,KOLOM];

End;RATA[BARIS] := Jumlah / 4 ;Gotoxy(60,Baris+2) ; Write(RATA[BARIS],:0:2);

END;

28

PEMROGRAMAN MODULARPROCEDURE dan FUNCTION

PEMROGRAMAN MODULAR

Catatan ini akan membahas mengenai ” Pemrograman Modular” . dimana pemrograman modular ini merupakan salah satu kemudahan yang diberikan oleh Turbo Pascal terhadap programmer, karena disini programmer dapat membagi program yang sedang dibuatnya kedalam modul-modul program tertentu. Sehingga dapat menghindari penulisan teks program yang sama berkali-kali dan dapat juga memudahkan dalam melakukan pelacakan kesalahan dalam program yang sedang dibuatnya.Ada 2 jenis pemrograman modular yang dibahas yaitu :

1. PROCEDURE (Prosedur)2. FUNCTION (Fungsi)

PROCEDURE

Deklarasi :Procedure nama procedure (daftar parameter) ;

{Deklarasi}Begin

..........

..........End ;

Pemanggilan Procedure :Suatu procedure bukan merupakan program yang berdiri sendiri sehingga tidak

dapat dieksekusi secara langsung. Untuk itu suatu procedure memerlukan sebuah akses pada program utama / modul lain yang berfungsi sebagai pemanggil. Sedangkan cara pemanggilanya adalah dengan : menuliskan nama procedurenya berikut parameternya (jika ada).

Hal-hal yang berhubungan dengan Procedure :Ada beberapa hal yang berhubungan dengan penulisan sebuah procedure

program yaitu :1. Variabel Global dan Variabel

Variabel Global adalah variabel yang dapat dikenali diseluruh bagian program, biasanya variabel ini merupakan variabel yang dideklarasikan pada deklarasi program umum.Variabel Lokal adalah variabel yang dikenal pada lingkup yang lebih sempit dari pada variabel global.

2. ParameterAda 2 Parameter yang berlaku dalam sebuah Procedure yaitu :a. Parameter Formal

Yaitu Parameter yang dideklarasikan mengikuti pendeklarasian program utama.

b. Parameter AktualYaitu Parameter yang dituliskan mengikuti pemanggilan Procedure.

Aturan antara parameter formal dan parameter aktual :1) Banyaknya parameter aktual harus sama dengan banyaknya paremeter formal

29

2) Tiap-tiap parameter aktual harus bertipe sama dengan parameter formal yang bersesuaian

3) Tiap-tiap parameter aktual harus diekspresikan yang sesuai dengan parameter formal

Pengiriman Parameter :a. Pengiriman parameter secara nilai (by Value)

- Tiap-tiap parameter dalam procedure utama akan berisi nilai yang dikirim oleh parameter aktual dan bersifat lokal procedure.

- Pengirima nilai parameter secara by value merupakan pengiriman searah, artinya hanya dari parameter aktual ke parameter formal.

- Perubahan parameter formal tidak mempengaruhi terhadap nilai parameter aktual.

Contoh :

Program_by_value ;Uses Crt;

Procedure Hitung(A,B,C : Integer) ;Begin B:= A ; C:= A+B ; Writeln(’nilai A = ’,A,’ | nilai B = ’,B,’ | nilaiC = ’,C) ;End;

{---------------------------------------------------------} {Berikut Program Utamanya}

Var X,Y,Z : Integer ;Begin

Clrscr ;Write(’masukan nilai x : ’) ; Readln(x) ;Write(’masukan nilai Y : ’) ; Readln(y) ;Write(’masukan nilai Z : ’) ; Readln(z) ;Writeln ;Hitung (x,y,z) ; {Perintah memberikan nilai ke procedure}Writeln ;Writeln (’nilai x =’,X,’ | nilai y =’,Y,’ | nilai z =’,Z) ;Readln ;

End. Keterangan :

Misalkan dimasukan nilai dari x=5, y=7 dan z=15 maka nilai ini akan dikirim ke parameter formal pada procedure yaitu A,B,C sehingga nilai awal A=5, B=7 dan C=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=5, Y=7 dan Z=15. Sebab apapun yang diproses pada procedure tidak akan mempengaruhinilai dari parameter aktual X,Y,Z.

b. Pengiriman parameter secara acuan (by Reference)- Merupakan pengiriman dua arah yaitu dari parameter aktual ke parameter

formal dan dari parameter formal ke parameter aktual sebagai hasil output dari procedure.

- Perubahan nilai pada parameter formalmempengaruhi pada parameter aktual.

- Dicirikan dengan penggunaan deklarasi VAR, pada parameter procedure-nya.

Contoh :Procedure Hitung (Var :A,B,C : Integer) ;Begin

B:=A ;

30

C:=A+B ;Writeln(A,B,C) ;

End ;Var X,Y,Z : integer ;Begin

Readln(X) ; Readln(Y) ; Readln(Z) ;Hitung(X,Y,Z) ;Writeln(X,Y,Z) ;Readln;

End.

Keterangan :Misalkan dimasukan nilai X=5, Y=8 dan Z=15 maka nilai ini akan dikirim ke

parameter formal pada procedure yaitu A,B,C sehingga nilai awal A=5,B=8 dan C=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=A=5, Y=b=5 dan Z=C=10. Sebab apapun yang diproses pada procedure akan mempengaruhi nilai dari parameter aktual X,Y,Z.

FUNCTION

A. Pengenalan Function

Function dalam pascal sebenarnya tidak berbeda seperti fungsi dalam matemtika, seperti F(X) = X+1F nama Fungsi(X) parameter yang diberikanX+1 proses yang dilakukan terhadap parameterHasil dari fungsi f(X) adalah f(x) yang nilainya telah berubah sesuai dengan nilai

parameter x yang diberikan, maka dalam PASCAL, function sering disebut memiliki sifat mengembalikan nilai. Function tidak berbeda jauh dengan procedure, kunci perbedaanya adalah function mengembalikan suatu nilai sedangkan procedure tidak. Sifat pengembalian nilai suatu function disebabkan karena hasil dari pelaksanaan suatu function disimpan dalam suatu variabel dalam function itu dimana nama variabel tersebut sama dengan nama function-nya.

B. SYNTAX Sebelum function digunakan, terlebih dahulu harus dideklarasikan (diberitahukan

pada program bahwa terdapat function yang akan digunakan oleh program utama) beserta proses yang akan dijalankan oleh program tersebut.

Deklarasi Function dilakukan sebelum program utama (sebelum begin...end.)

Function nama_fungsi (parameter : tipe_data) : tipe_data ;Begin

.... ;{Penjabaran}... ;Nama_fungsi := ....

End ;

Parameter : nilai yang diberikan kepada fungsi, seperti x dalam fungsi f diatas. Suatu fungsi mungkin tidak memerlukan parameter.

Tipe_data : Character, numerik (integer,real,dll),string,dll.Contoh :

Program Fungsi_numerik ;

31

Uses crt ;Function f(x : real):real ;Begin F:= x+1 ;End ;Begin Writeln(’Fungsi f(x) untuk x = 2 bernilai ’,f(2)) ;End.

Program Fungsi_String ;Uses crt ;Var kata : string ;Function f(x:string) : String ;Var i :byte ;Begin

For i:=1 to lenght(x) do x[i] := upcase(x[i]) ;F := x ;

End ;Begin

Write(’kata yang ingin dimasukan : ’) ; readln(kata) ;Writeln(’kata setelah dikapitalisasi : ’,f(kata)) ;

End.

C. Jenis-jenis variabel yang digunakan dalam function

Ada dua jenis variabel yang digunakan oleh function, yaitu : Variabel Global dan Variabel Lokal.

Variabel Global variabel yang dideklarasikan dari awal program dan berlaku secara umum. Variabel ini (dan nilai yang dikandungnya) dapat digunakan baik oleh program utama maupun Sub-program seperti function dan procedure.

Variabel Lokal variabel yang dideklarasikan dalam sub-program seperti function dan procedure. Variabel ini hanya dapat digunakan oleh sub program itu sendiri. Jika dalam sub-program terdapat kesamaan nama antara variabel lokal dan variabel global, nilai variabel yang digunakan adalah nilai variabel lokal.

Saran : gunakan variabel global seminimal mungkin dan gunakan variabel lokal seoptimal mungkin.

Contoh :

Program Jenis_variabel ;

Uses crt ;

Var i : integer ; {deklarasi ” i ” sebagai variabel global}

32

Function hitung : integer ; {deklarasi function tanpa parameter}Var temp : integer ; {deklarasi ” temp ” sebagai variabel lokal}Begin

Temp:=2 * i ; {proses variabel global ” i ” dan variabel lokal ” temp ”}Hitung:=temp ; {funcftion mengembalikan nilai}

End;

Function hitung2(a:integer):integer; {deklarasi function berparameter} Begin

Hitung2:=2 * a ; {cara lain penulisan, tidak memerlukan variabel lokal}End;

{Program Utama}Begin

Write(’masukan nilai i : ’) ;readln(i) ;Writeln(’hasil fungsi hitung : ’,hitung) ;Writeln(’hasil fungsi hitung2 : ’,hitung2(i)) ;{hasil sama}

End;

RECORD dan Type Data Buatan

RECORD

Record memiliki kemiripan dengan Array, tetapi data-data yang disimpan dalam sebuah record tidak harus memiliki tipe variabel yang sama. Jadi dalam suatu sebuah record bisa saja ada data bertipe string, data bertipe real, dan bertipe integer secara bersamaan.

33

Data atau variabel yang berada didalam record dinamakan field dari record yang bersangkutan. Sebagai ilustrasi, sebuah mobil memiliki informasi seperti produsennya, merknya, warnanya, tipenya, hargany, jenisnya dan kapasitas mesinya. Maka, mobil tersebut dapat disebut sebagai sebuah record dan informasi pada mobil itu (produsen, merk, warna dan sebagainya) sebagai field.

Contoh Record Contoh Field

Mahasiswa NRP, Nama, Angkatan, Kelas, IPK

Karyawan Nama, golongan, jabatan, gaji

Penjualan Periode, item, harga, cara pembayaran

Phonebook Nama, alamat, no tlp rumah, hp, e-mail

Mp3 Artist, title, album, year, genre

Movie-Rental No pelanggan, item yang dipinjam, tanggal pinjam, tanggal kembali, biaya

Syntax Record

Type Recname = RecordField1 : type ;Field2 : type ; : :Fieldx : type ;

End;

Recname : nama yang digunakan untuk mengidentifikasi record. Pemanggilan record dilakukan dengan menggunakan nama ini.

Field1, field2,....fieldx : nama-nama fields yang menjadi elemen dari record ini, pemanggilan field dilakukan dengan menggunakan nama record dan nama fieldnya, seperti recname.field1

Type : tipe data untuk field yang bersangkutan, misalnya field1 bertipe data byte, field2 bertipe String.

Contoh Pendeklarasian record

TYPE mobil = RECORDProd, merk, warna : STRING[10] ;Tipe : STRING [5] ;Harga : LONGINT ;

End ;Var

Mob : ARRAY [1..25] of mobil ;Kegunaan statement with adalah mempersingkat penulisan record. Dengan

menggunakan statement with, pemanggilan record cukup dilakukan dengan menuliskan field-nya saja, tidak perlu ditulis lengkap bersama dengan nama record-nya.

OPERASI Input – Output Record & penggunaan With

PROGRAM InOuRec ;TYPE mobil = RECORD

Prod, merk, warna : STRING ;Tipe : STRING [5] ;Harga : LINGINT ;

34

End;VAR Mob : ARRAY [1..25] of Mobil ;Begin{contoh input}

Mob[1].prod:=”Toyota” ;Mob[1].merk:=”New Camry” ;Mob[1].warna:=”Coal Black” ;Mob[1].tipe:=”G M/T” ;Mob[1].harga:=42000000 ;

{penggunaan statement with}WITH mob[2] DoBegin

Prod:=”Honda” ;Merk:=”New Accord” ;Warna:=”Snow White” ;Tipe:=”C A/T” ;Harga:=450000000 ;

End ;{Sama artinya dengan

Mob[2].prod:=” Honda” ;Mob[2].Merk:=”New Accord” ;Mob[2].Warna:=”Snow White” ;Mob[2].Tipe:=”C A/T” ;Mob[2].Harga:=450000000 ; }

{Contoh Output}For a:=1 to 2 DoBegin

White mob[a] DoBegin

Writeln(prod) ;Writeln(merk) ;Writeln(warna) ;Writeln(tipe) ;Writeln(harga) ;

End ;End ;

Contoh Program Sederhana Menggunakan Record

Program Record_Mhs ;TYPE Rmhs = Record Nrp : integer ; nama : String[15] ; ipk : real ; kelas : char ;end ;

Var Amhs : Array [1..100] of Rmhs ; a,k : integer ;

35

Procedure input ;begin a:= a+1 ; Write('Nrp (3 digit terakhir) : ') ; readln(Amhs[a].nrp) ; Write('Nama : ') ; readln(Amhs[a].nama) ; Write('IPK : ') ; readln(Amhs[a].ipk) ;

end;

Procedure Output ;Var b:integer ;begin {penentuan kelas mahasiswa berdasrkan nrp !} For b:=1 to a do begin if Amhs[b].nrp < 51 then Amhs[b].kelas:='A' else if Amhs[b].nrp > 100 then Amhs[b].kelas:='C' Else Amhs[b].kelas:='B' ;

Writeln('Kelas : ',Amhs[b].kelas) ; Writeln('Nrp : ',Amhs[b].nrp) ; Writeln('Nama : ',Amhs[b].nama) ; Writeln('IPK : ',Amhs[b].ipk:5:2) ; end;end;

Begin Repeat Writeln('1. Input data mahasiswa - nrp,nama,ipk') ; Writeln('2. Output data mahasiswa - kelas,nrp,nama,ipk') ; Writeln('3. Exit') ; Readln (k) ; case k of 1 : Input ; 2 : Output ; End ; Until K > 2 ;End.

Pemrograman Database Text dalam Pascal

FILE (BERKAS)

File (Berkas) adalah kumpulan sejumlah komponen yang bertipe data sama, yang jemlahnya tidak tertentu.Pengertian file atau berkas dianalogikan dengan simpanan arsip.

Di dalam Pascal, berkas menyediakan data yang nantinya akan digunakan oleh suatu program. Berkas dapat berupa diskfile yaitu media penyimpanan yang berupa cakram magnetis, pita megnetis, kartu plong dan media-media penyimpanan lainya.

Berkas mempunyai sifat sebagai berkas berurutan (Sequential File), pembacaan datanya dari baris satu ke baris berikutnya.

36

MENDEKLARASIKAN FILE

TYPE Var1 = FILE OF var2 ; Contoh :Atau VAR Var1 = FILE OF var2 ; TYPE

Tipe_Data = RECORD Nama : String[25] ; Alamat : String[30] ; No_tlp : String[15] ; Usia : Integer ;End ;

VARFile_Data : File of Tipe_Data ;D_Data : Tipe_Data ;

OPERASI PADA FILE

1. Statemen ASSIGNStatemen ini digunakan untuk memilih/membuka berkas yang akan dioprasikan sesuai dengan tipe berkas yang kita deklarasikan.

ASSIgn (Variabel_berkas, nama_berkas) ;Contoh : Assign (File_Data,’biodata.dat’) ;

2. Statemen CLOSEClose digunakan untuk menutup berkas yang telah dibuka oleh statemen assign. Dan hanya menyebutkan variabel_berkas-nya saja tanpa nama berkas.

Contoh : Close (File_Data) ;

3. Statemen REWRITEDigunakan untuk membuat berkas baru yang telah dinyatakan dengan variabel berkas. Jika berkas tersebut sudah ada dalam media penyimpanan, maka berkas tersebut akan digantikan dengan berkas yang baru.

Contoh : Rewrite(File_Data) ;

4. Statemen RESETDigunakan untuk mengeset penunjuk komponen kembali ke nomor 0.

Contoh : Reset (File_Data) ;

5. Satatemen WRITEStatemen ini digunakan untuk menuliskan komponen berkas (data) kedalam media penyimpanan. Dan akan menempatkan komponen baru tersebut diakhir record.

WRITE(variabel_berkas, variabel_komponen_berkas) ;

Contoh : Write(File_Data,D_data) ;

6. Statemen READRead digunakan untuk membaca komponen berkas dari dalam media penyimpanan. Pembacaan disesuaikan dengan posisi penunjuk komponen, setelah selesai membaca, posisi penunjuk komponen akan ditempatkan ke komponen berkas berikutnya.

READ(Variabel_berkas, variabel_komponen_berkas) ;

37

Contoh : Read(File_Data,D_data) ;

7. Statemen SEEKDigunakan untuk menggerakan penunjuk komponen ke nomor komponen tertentu. Dengan nomor awal record adalah 0.

SEEK(Variabel_berkas,nomor_record) ;

Contoh : Seek (File_data,3) ; {diarahkan kekomponen yang ketiga}

8. Fungsi FILEPOSFungsi ini digunakan untuk mengetahui letak penunjuk komponen berbeda. Dan hasilnya berupa bilangan bulat yang menunjukan posisi penunjuk komponen pada saat itu.

FILEPOS(variabel_berkas) ;

Contoh : Filepos(File_data) ;

9. Fungsi FILESIZEDigunakan untuk mengetahui ukuran dari suatu berkas. Jika fungsi ini bernilai 0 berarti berkas tersebut masih kosong.

FILESIZE (variabel_berkas) ;

Contoh : Ukuran := Filesize(File_data) ; {ukuran dalam satuan byte}

10. Fungsi EOFFungsi ini digunakan untuk mengetahui apakah penunjuk komponen berada diakhir bekas (End Of File = EOF), Jika Ya maka bernilai TRUE dan jika TIDAK maka bernilai FALSE.

EOF(variabel_berkas) ;

Contoh : Akhir_file := EOF(file_data) ;

11. Statemen FLUSHFlush digunakan untuk mengosongkan penyangga(buffer) dari berkas, dengan demikian akan memastikan bahwa isi penyangga telah ditusikan dalam media penyimpan setelah statemen WRITE selesai dikerjakan.

FLUSH(variabel_berkas) ;

Contoh : FLUSH(file_data) ;

12. Statemen ERASEErase digunakan untuk menghapus file atau berkas yang telah tertutup atau sedang tidak digunakan.

ERASE(variabel_berkas) ;

Contoh : ERASE(file_data) ;

13. Statemen RENAME

38

Digunakan untuk memberi nama baru pada berkas yang dinyatakan oleh variabel berkas. Dan hanya dapat dilakukan pada berkas yang tertutup.

RENAME(variabel_berkas,nama_baru) ;

Contoh : RENAME(file_data,’baru.dat’) ;

39