PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen...

30

Click here to load reader

Transcript of PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen...

Page 1: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

1

PEMROGRAMAN PASCAL

Daftar Isi BAHASA KOMPUTER ..................................................................................................................................... 2

BAHASA PEMROGRAMAN PASCAL. .................................................................................................. 3 DEKLARASI VARIABEL DAN PENGENAL............................................................................................... 7

BARIS KOMENTAR ................................................................................................................................. 8 DEKLARASI VARIABEL .......................................................................................................................... 8 DEKLARASI KONSTANTA ..................................................................................................................... 9 NAMA PENGENAL (VARIABEL) ............................................................................................................ 9 STATEMEN MAJEMUK........................................................................................................................... 9 MEMILIH PIRANTI/LIBRARY ................................................................................................................ 10

ARITMATIKA .............................................................................................................................................. 11 A. OPERASI ARITMATIKA ................................................................................................................... 11 B. PENULISAN UNGKAPAN ARITMATIKA ........................................................................................ 12 C. URUTAN OPERASI .......................................................................................................................... 12 D. FUNGSI-FUNGSI STANDAR OPERASI ARITMATIKA ................................................................ 12

TIPE DATA BOOLEAN .............................................................................................................................. 13 STATEMEN MASUKAN DAN KELUARAN ............................................................................................. 14

STATEMEN KELUARAN WRITE DAN WRITELN .............................................................................. 14 UNGKAPAN LITERAL ........................................................................................................................... 14 STATEMEN MASUKAN READ DAN READLN ................................................................................... 15

PEMILIHAN PROSES ............................................................................................................................... 18 IF... THEN ............................................................................................................................................... 18 STATEMEN CASE ................................................................................................................................. 21 GOTO (Percabangan Non Kondisi) ...................................................................................................... 22

PROSES BERULANG (LOOPING) .......................................................................................................... 23 STATEMEN WHILE ... DO .................................................................................................................... 23 STATEMEN REPEAT ... UNTIL............................................................................................................ 24 STATEMEN FOR ... DO ........................................................................................................................ 25 LARIK (ARRAY) DIMENSI SATU ......................................................................................................... 27 LARIK DIMENSI BANYAK..................................................................................................................... 30

OPERASI STRING..................................................................................................................................... 32 PENYELEKSIAN STRING..................................................................................................................... 32 PROSEDUR STANDAR OPERASI STRING ...................................................................................... 32 FUNGSI STANDAR OPERASI STRING .............................................................................................. 34

PROSEDUR ............................................................................................................................................... 36 FUNGSI (FUNCTION) ............................................................................................................................... 38 RECORD..................................................................................................................................................... 38

DEKLARASI RECORD .......................................................................................................................... 39 MENGGUNAKAN TIPE DATA RECORD ............................................................................................ 39

FILE ............................................................................................................................................................. 43 MENDEKLARASIKAN FILE .................................................................................................................. 43 OPERASI PADA FILE............................................................................................................................ 44 FILE (BERKAS) TEXT ........................................................................................................................... 48 FILE TIDAK BERTIPE ........................................................................................................................... 51

POINTER DAN STRUKTUR DATA DINAMIK......................................................................................... 52 VARIABEL POINTER ............................................................................................................................ 52 VARIABEL DINAMIK ............................................................................................................................. 53 STRUKTUR DATA DINAMIK (LINK LIST) ........................................................................................... 53

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

2

BAHASA KOMPUTER Agar manusia dapat berkomunikasi dengan komputer maka dibutuhkan suatu bahasa komunikasi yaitu bahasa komputer. Dengan bahasa ini komputer dapat memahami dan mengerti perintah-perintah yang kita berikan kepadanya. Sebenarnya, komputer tidak mengerti perintah-perintah yang kita tulis menggunakan bahasa tertentu. Namun di dalam komputer tersebut terdapat penterjemah bahasa yang kita gunakan menjadi bahasa yang dimengerti oleh komputer yaitu compiler atau interpreter, keduanya merupakan suatu program. Perbedaannya antara keduanya adalah sebagai berikut: • Compiler menerjemahkan kode sumber menjadi objek bahasa mesin dalam bentuk file objek,

kemudian di-link dengan pustaka-pustaka lain yang berhubungan dengan kode sumber agar dapat dijalankan pada setiap sistem operasi

• Interpreter menerjemahkan kode sumber per baris demi baris dan langsung di eksekusi tanpa menjadikannya dalam bentuk file objek

Jenis bahasa pemrograman komputer dibagi menjadi dua bagian yaitu bahasa tingkat rendah (yang agak sulit dimengerti bagi orang awam) dan bahasa tingkat tinggi (yang dapat di mengerti oleh manusia). Bahasa Pemrograman Tingkat Rendah Bahasa ini dibagi menjadi dua macam, yaitu Bahasa Mesin dan Bahasa Rakitan. Dalam Bahasa Mesin semua perintah disandikan dengan deretan-deretan bit (binary digit) yang hanya mempunyai nilai digit 1 atau 0. Sedangkan dalam Bahasa Rakitan, perintah-perintah tersebut bisa digantikan dengan kode sandi yang bisa dipahami oleh manusia yaitu mnemonic code, Setiap mikroprosesor, mempunyai mnemonic code yang berlainan. Bahasa Pemrograman Tingkat Tinggi Bahasa pemrograman ini merupakan bahasa komputer yang mudah dipahami karena menggunakan bahasa percakapaan manusia sehari-hari. Diantaranya adalah. Ada Diambil dari nama Augusta Ada Bryton, bangsawan dari Loveland, puteri Lord

Byron; bahasa ini dikembangkan sekitar tahun 1974 dan 1980 untuk Departemen Pertahanan Amerika Serikat.

ALGOL ALGOrithmic Language (Bahasa Algoritma) APL A Programming Language BASIC Beginner’s All Purpose Symbolic Intsruction Code. Bahasa ini dikembangkan oleh

John Kemeny dan Thomas Kutrz, digunakan untuk memberi kuliah mahasiswa di Dartmouth College tentang bagaimana menggunakan komputer.

C Dikembangkan oleh Bell Laboratories pada tahun 1970, bahasa ini sangat powerfull dan sering digunakan untuk membuat program Sistem Operasi contohnya MS-DOS, LINUX, UNIX serta program aplikasi DBASE, AUTOCAD dan game-game yang banyak kita jumpai. Ada yang mengatakan bahasa ini merupakan bahasa tingkat menengah karena sintaks bahasanya mirip bahasa tingkat tinggi dan kemampuanya bahasa tingkat rendah.

COBOL Common Business-Oriented Language. Bahasa ini dikembangkan di Departemen Pertahanan Amerika Serikat pada tahun 1960

FORTRAN Formula Translation, dikembangkan sekitar tahun 1956. LISP List Processor Pascal Diambil dari nama seorang sarjana Perancis Blaise Pascal. Pertama kali

dikembangkan oleh Niklauss Wirth, seorang ahli ilmu komputer dari Swiss, pada tahun 1970.

PL/I Programing Langugae I, dikembangkan oleh IBM pada tahun 1964 PROLOG Programming Logig, bahasa yang digunakan untuk menyusun Expert System RPG Report Program Generator SNOBOL String Oriented Symbolic Language

Page 2: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

3

BAHASA PEMROGRAMAN PASCAL. Program adalah kumpulan instruksi atau perintah yang disusun sehingga mempunyai urutan logika yang benar untuk menyelesaikan suatu persoalan. Program penerjemah atau compiler untuk Bahasa Pascal banyak contohnya, diantaranya Turbo Pascal (Borland), Microsoft Pascal dan lain sebagainya. Yang akan kita gunakan untuk mempelajari Bahasa Pascal adalah Turbo Pascal. Ada beberapa aturan dalam penulisan program Pascal, berbeda sekali dengan aturan pada BASIC. Pascal merupakan bahasa pemrograman yang terstruktur, maksudnya jika suatu proses telah sampai pada suatu titik tertentu, maka proses selanjutnya tidak boleh melompati lagi ke baris sebelumnya, kecuali untuk proses berulang. Sehingga hindari pemakaian GOTO sebanyak mungkin. Struktur bahasa Pascal dapat anda lihat dibawah ini: PROGRAM nama_program; { nama program, boleh ada atau boleh tidak ada } USES ….. ( deklarasi library/pustaka fungsi } LABEL …. { deklarasi label } CONST …. { deklarasi konstanta } TYPE…. { deklarasi tipe data } VAR … { deklarasi variabel } PROCEDURE satu; PROCEDURE dua; FUNCTION tambah; BEGIN { awal program utama } . . < Statemen-statemen dari program nama_program> . . END. { akhir program utama } Contoh: PROGRAM contoh; USES crt; VAR nama: STRING; BEGIN

clrscr; write('Ketik nama Anda : '); readln(nama); writeln('Selamat '+nama+', anda kini akan belajar PASCAL...!');

END. Ketik nama Anda : Pengki Selamat Pengki, anda kini akan belajar PASCAL…!

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

4

TIPE DATA Dalam Pascal, semua variabel yang akan digunakan harus ditentukan tipe datanya. Tipe data tersebut ada yang sudah ditentukan oleh Pascal dan ada yang ditentukan oleh kita sendiri. Untuk menentukan tipe yang kita buat sendiri digunakan sintaks (type): BU: TYPE variabelnya = tipe; Dengan Variabelnya : nama variabel yang menyatakan tipe data. Tipe : tipe data yang berlaku dalam Pascal. Tipe data dalam Turbo Pascal bisa digambarkan sebagai berikut: Tipe Sederhana (tipe data skalar) Tipe sederhana terbagi menjadi dua, yaitu tipe ordinal dan tipe real. 1. Tipe Ordinal

Semua tipe sederhana dalam Pascal disebut tipe ordinal kecuali tipe Real. Tujuh tipe ordinal standar yaitu integer, shortint, longint, byte, word, boolean dan char. Dan ada dua tipe ordinal yang bisa didefinisikan sendiri oleh kita, yaitu tipe sub range dan enumerated.

Tipe Sederhana

Tipe Data

Tipe String

Tipe Terstruktur

Tipe Pointer

Tipe Ordinal

Tipe Real

Integer

Boolean

Char

Subrange

Enumerated

Larik (Array)

Rekaman (Record)

Himpunan (Set)

Berkas (File)

Page 3: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

5

a. Tipe Integer

Adalah tipe data yang nilainya tidak mempunyai titik desimal. Ada 5 tipe data yang termasuk kelompok ini, yaitu shortint, integer, longint, byte dan word. Batas nilai tipe integer

Tipe Batas Nilai Format SHORTINT -128 .. 127 Signed 8-bit ( 1 byte) INTEGER -32768 .. 32767 Signed 16-bit (2 byte) LONGINT -2147483648 .. 2147483647 Signed 32 bit (4 byte) BYTE 0 .. 255 Unsigned 8-bit (1 byte) WORD 0 .. 65535 Unsigned 16-bit (2 byte)

Operator-operator pada data tipe integer:

Operator Arti + Penjumlahan - Pengurangan * Perkalian

DIV Pembagian MOD Modulus (sisa pembagian)

b. Tipe Boolean

Tipe ini hanya mempunyai dua nilai yaitu TRUE atau FALSE, tipe ini biasanya digunakan untuk operasi logika dengan ungkapan AND, OR atau NOT.

c. Tipe Char Char digunakan untuk mendefinisikan tipe data yang nilainya merupakan sebuah karakter yang telah tersaji dalam tabel ASCII. Dalam program nilai konstanta karakter diapit oleh tanda petik (‘ ‘) , misal: ‘A’, ‘2’.

d. Tipe Enumerated Disebut tipe enumerated (terbilang) karena semua nilai disebut satu persatu, contoh: TYPE hari = {MINGGU, SENIN, SELASA, RABU, KAMIS, JUMAT, SABTU, MINGGU};

e. Tipe Sub Range Merupakan pemberian batas nilai yang mungkin untuk suatu variabel dari tipe data yang telah didefinisikan. Sebagai contoh, jangkauan yang mungkin dari nilai ujian adalah dari 0 sampai 100, TYPE nilai = 0..100;

2. Tipe Real

Konstanta tipe real adalah bilangan yang mempunyai titik desimal. Bilangan real bisa dinyatakan dalam bentuk eksponensial. Dalam pemakaiannya pangkat dari bilangan dasar 10 (yang digunakan untuk menunjukkan eksponensial) dinyatakan dengan notasi E. contoh: 0.00017543 (1.7543x10-4) adalah 1.7543E-4 ada 5 macam tipe real, yaitu real, single, double, extended dan comp.

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

6

Batasan nilai tipe real.

Tipe Batas Nilai Digit signifikan Ukuran REAL 2.9 x 10-39 .. 1.7 x 1038 11 – 12 6 byte SINGLE 1.5 x 10-45 .. 3.4 x 1038 7 – 8 4 byte DOUBLE 5.0 x 10-324 .. 1.7 x 10308 15 – 16 8 byte EXTENDED 3.4 x 10-4932 .. 1.1 x 104932 19 – 20 10 byte COMP -263 + 1 .. 263 - 1 19 - 20 8 byte

Operator pada tipe Real

Operator Arti + Penjumlahan - Pengurangan * Perkalian / Pembagian

Contoh: 29.5 /5.0 = 5.8 29 div 5 = 5 (* terjadi pemotongan nilai desimal *)

3. Tipe String Data yang bertipe string adalah data yang berisisi sederetan karakter yang banyaknya karakter bisa berubah-ubah sesuai kebutuhan, yaitu dari 1 sampai 255 karakter. Contoh: Nama : STRING[60]; {variabel nama menampung karakter max. 60 karakter } Nama : STRING; {variabel nama menampung karakter max. 255 karakter}

4. Tipe Terstruktur

Terdapat 4 tipe data terstruktur, yaitu larik (array), rekaman (record), himpunan dan file (berkas). a. Tipe Array (Larik)

Array atau larik adalah tipe terstruktur yang mempunyai komonen dalam jumlah yang tetap dan setiap komponen mempunyai tipe data yang sama. Posisi masing-masing komponen dalam array dinyatakan sebagi nomor index. Contoh: • satu dimensi TYPE tipe_saya : ARRAY [1..200] OF INTEGER;

{ menampung bil. Integer max. 200 }. VAR Var_baru : tipe_saya; Atau VAR Var_baru : ARRAY [1..200] OF INTEGER; • dua dimensi atau lebih

VAR Var_baru : ARRAY[1..200,1..200] OF REAL;

Page 4: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

7

b. Tipe Rekaman (Record)

Definisi Record hampir sama dengan Array, tetapi yang membedakan antara keduanya adalah kalau Array semua komponennya bertipe data yang sama sedangkan Record setiap komponennya bisa bertipe data yang beda-beda. Contoh: TYPE my_rec = RECORD Nama : STRING[90]; Npm : STRING[8]; Nilai : REAL; END; VAR Data_nya : my_rec;

c. Tipe Himpunan

Himpunan (set) adalah kumpulan obyek yang mempunyai tipe data yang sama dan urutan penulisannya tidak diperhatikan. Setiap obyek dalam suatu himpunan disebut dengan anggota atau elemen himpunan. Contoh: TYPE irama = (JAZZ, POP, ROCK ,DANGDUT, SKA); Musik = SET OF irama; VAR Jenis_musik : Musik;

d. Tipe File (Berkas)

File (Berkas) adalah kumpulan sejumlah komponen yang bertipe data sama, yang jumlahnya tidak tertentu, dan biasanya tersimpan dalam suatu media penyimpan luar.

e. Pointer Tipe data pointer merupakan tipe data yang berbeda dengan yang lainnya. Semua tipe data yang lainnya bersifat STATIS sedangkan tipe Pointer bersifat DINAMIS. Tipe ini merupakan tipe data untuk suatu variabel, dimana isi variabel ini berupa alamat variabel lain, dalam artian variabel pointer adalah variabel yang menunjuk nilai atau alamat variabel lainnya.

DEKLARASI VARIABEL DAN PENGENAL Struktur program dalam Pascal dikelompokkan menajadi Judul Program, bagian deklarasi dan bagian terproses. Contoh: PROGRAM FIBONACCI; (* Bagian Deklarasi Pustaka/Library *) USES crt; { Bagian Deklarasi Variabel } VAR awal, akhir, simpan : INTEGER; { Bagian Terproses } BEGIN clrscr; writeln('Deret Fibonacci'); writeln('---------------');writeln; awal:=0; akhir:=1; write(awal,' ');

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

8

WHILE akhir<=100 DO BEGIN write(akhir,' '); simpan:=akhir; akhir:=simpan+awal; awal:=simpan; END END. Deret Fibonacci --------------- 0 1 1 2 3 5 8 13 21 34 55 89 Judul program digunakan untuk identifikasi program. Bagian deklarasi berisi informasi tentang piranti atau library yang akan digunakan, variabel yang akan digunakan dalam program tersebut, dan juga mungkin berisi definisi konstanta. Bagian terproses berupa sekelompok statemen yang diawali dengan BEGIN dan diakhiri dengan END, diikuti tanda baca titik. Beberapa aturan dalam menulis sebuah program adalah: 1. Akhir sebuag program Pascal ditandai dengan tanda baca titik (.) setelah END yang paling akhir.

END.

2. Beberapa statemen boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma (;).

Simpan := akhir; akhir := akhir + awal; 3. Spasi, baris komentar atau akhir sebuag baris dianggap pemisah. Sejumlah pemisah dapat

muncul diantara simbol-simbol Pascal, tetapi tidak boleh digunakan dalam sebuah nama atau bilangan.

BARIS KOMENTAR Baris komentar merupakan suatu penjelasan dalam program, dan bukan bagian yang akan diproses. Baris komentar diletakan di antara tanda { dan } atau tanda (* dan *).

DEKLARASI VARIABEL Bagian deklarasi variabel diawali dengan katak baku VAR. aturan penulisan bagian VAR antara lain adalah:

1. VAR harus muncul dalam bagian deklarasi. 2. VAR harus dituliskan setelah definisi TYPE (jika ada) dan sebelum deklarasi PROCEDURE

atau FUNCTION (jika ada). 3. Variabel-variabel yang mempunyai tipe berbeda dapat dijadikan satu dalam deklarasi VAR.

VAR a,b,c,d : REAL; X,Y,Z : INTEGER;

4. Dalam deklarasi VAR susunan data bisa sembarang. VAR Z,X,Y : REAL; c,d,a,b : INTEGER;

Page 5: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

9

5. Suatu tipe data dapat digunakan berulang kali dalam deklarasi VAR.

VAR a,b,c : REAL; atau VAR a : REAL; b : REAL; c : REAL;

DEKLARASI KONSTANTA Dalam Pascal konstanta dibagi menjadi dua macam, yaitu konstanta tak bertipe dan konstanta bertipe.

1. Konstanta Tidak Bertipe

Konstanta tak bertipe adalah suatu konstanta yang nilainya tertentu dan tipenya tidak secara jelas disebutkan. Contoh: CONST faktor = 1.1;

2. Konstanta Bertipe Konstanta bertipe adalah suatu konstanta yang selain ditunjukkan nilainya juga dinyatakan tipe datanya. Konstanta bertipe sesungguhnya adalah variabel dengan nilai yang tetap, maka tidak bisa saling dipertukarkan dengan konstanta biasa (konstanta tak bertipe). Contoh: CONST awal : INTEGER = 1;

akhir : INTEGER = 100; TYPE vektor = ARRAY [awal..akhir] OF REAL ( Salah }

CONST awal = 1; akhir = 100;

TYPE vektor = ARRAY [awal..akhir] OF REAL ( Benar }

NAMA PENGENAL (VARIABEL) 1. Nama Pengenal harus diawali dengan huruf. 2. Karakter kedua dan selanjutnya bisa berupa kombinasi angka dengan huruf, tidak boleh ada

tanda baca lain dan spasi. Beberapa kompiler bisa menerima tanda garis bawah ( _ ). Huruf bisa ditulis menggunakan huruf besar atau huruf kecil.

3. Cacah karakter dalam pengenal bisa sembarang, tetapi dalam beberapa versi semua karakter setelah karakter ke-8 diabaikan.

4. Beberapa kata yang disebut keyword sudah ditentukan artinya dan tidak bisa digunakan sebagai nama variabel. Contoh AND, ARRAY, WHILE, THEN dll.

STATEMEN MAJEMUK Beberapa statemen yang harus dikerjakan berturutan dalam sebuah lokasi hanya boleh ditempati oleh satu statemen. Statemen yang demikian biasa disebut sebagai statemen tunggal. Jika ada beberapa statemen yang berturutan yang juga harus diletakkan dalam lokasi tunggal diletakkannya di antara pengenal BEGIN dan END yang disebut dengan statemen MAJEMUK. Contoh:

Writeln(awal); { satu statement } WHILE akhir <=100 DO BEGIN

Writeln(akhir); Simpan := akhir; Akhir:= simpan + awal; Awal:=simpan;

END

Beberapa statemen di jadikan statemen tunggal ( statemen Majemuk )

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

10

MEMILIH PIRANTI/LIBRARY Deklarasi Piranti diawali dengan kata USES diikuti nama piranti yang akan digunakan, misalnya:

Crt Memanfaatkan semua fasilitas yang dimiliki oleh monitor dan keyboard, termasuk

screen mode control, extented keyboard codes, color, window dan sound. Dos Untuk memanfaatkan fungsi-fungsi DOS, ternasuk pengendalian tanggal dan jam

sistem, pencarian direktori dan eksekusi program Graph Paket grafik yang powerful dengan dukungan CGA, EGA, VGA, HERC,IBM3270PC,

MCGA dan AT&T 6300. Overlay Mengimpelmentasikan Overlay manager Printer Menggunakan fungsi-fungsi yang berhubungan dengan printer System Pemanfaatan pustaka-pustaka pada saat program dijalankan. Unit ini secara

otomatis digunakan oleh unit-unit lain atau program. LATIHAN A. Tuliskan OUTPUT pada program dibawah ini: USES crt; CONST kata=' Belajar PASCAL sangat Menyenangkan....##!'; VAR nama : STRING[100]; BEGIN clrscr; write('Tuliskan Nama anda di samping : '); readln(nama); write('Kata si ',nama);writeln; write(kata); writeln; write('Kata si ',nama); write(kata); writeln('Kata si',nama); write(kata); writeln; writeln('Kata si',nama,kata); readln; END. Jelaskan perbedaan penggunana WRITE dan WRITELN ! B. Perbaiki kesalahan pada program di bawah ini: USES crt; VAR angka1,angka2,hasil:REAL; BEGIN clrscr; write('Masukan Angka A : ); readln(angka1); write('Masukan Angka B : '); readln(angka3); hasil=angka1 + angka2; writeln('A + B = ',hasil:4:2);

Page 6: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

11

hasil:=angka1 - angka2 writeln('A - B = ',hasil:5:3); hasil:=angka1 x angka2; writeln('A x B = ',hasil:3:6); hasil:=angka1 / angka2; writeln('A / B = ',hasil:2:3); END;

ARITMATIKA

A. OPERASI ARITMATIKA Dalam ungkapan operasi Aritmatika terdapat dua komponen yang terlibat langsung, yaitu Operator dan Operand. Operator adalah suatu simbol yang digunakan untuk menyatakan suatu operasi; Operand adalah besaran yang terlibat dalam suatu operasi, yang bisa berupa konstanta, variabel, pengenal dan lain-lain. Tabel Operator

Operasi Operand Integer

Operand Real

Penjumlahan + + Pengurangan - - Perkalian * * Pembagian Div atau / / Modulus (sisa pembagian) mod

Untuk operand bertipe Integer hasil pembagian menggunakan operator / akan memberikan hasil bertipe Real. Dalam pembentukan ungkapan aritmatika perlu memperhatikan beberapa hal: 1. Semua operasi harus dinyatakan secara eksplisit.

Contoh yang Benar: A + B A / B A * B A * (B / C) K div L 5.0 * A K mod L (2.0 * X – 4.0 * B) / (A + 3.0 * Y * Y) Contoh yang Salah: 5.0 A kurang operator diantara 5.0 dan A (A)(B) diperlukan operator antara (A) dan (B)

2. Dua operator atau lebih tidak boleh saling berdampingan. Contoh: A *-B seharusnya A*(-B) --A seharusnya –(-A)

3. Nilai integer dapat diberikan ke variabel Real, tetapi tidak untuk sebaliknya.

Var A : Real; L : Integer;

A := L; benar L := A; salah

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

12

4. Operand-operand yang mempunyai tipe berbeda dapat menggunakan operator +, -, * dan /; hasil dari operasi aritmatika menggunakan operand yang berbeda adalah nilai yang bertipe Real. Contoh: Var A : Integer; X : Real; X := X + 1 benar, tetapi sebaiknya dihindari. A := A + 1.0 salah, hasil perhitungan memberikan hasil bertipe

Real yang tidak bisa diberikan ke variabel bertipe integer.

A := A + A / 3 * 3 Salah, pembagian menggunaka operator / selalu memberikan hasil bertipe Real. Hasilnya tidak bisa diberikan pada variabel bertipe integer

B. PENULISAN UNGKAPAN ARITMATIKA

Dalam menulis program terutama ungkapan Aritmatika harus ditulis menjadi 1 baris, jika terlihat ruwet, bisa dipecah menjadi beberapa baris. Contoh: Dalam pemrograman ditulis: X := (-B+sqrt(B*B-4.0*A*C))/(2.0*A); (* sqrt = akar kwadrat dari suatu variabel *) Bisa dipecah menjadi: P := B *B – 4.0 *A * C; Q := 2.0 * A; X := (-B+ sqrt(P)) / Q;

C. URUTAN OPERASI Operator Prioritas * / div mod Lebih tinggi (dikerjakan dulu)

+ - Lebih rendah (dikerjakan kemudian) Contoh: Ungkapan A – B / C, berarti

D. FUNGSI-FUNGSI STANDAR OPERASI ARITMATIKA

Fungsi Argumen Hasil Keterangan Abs (x) Integer Integer Mengambil harga mutlak dari X

Real Real Arctan (x) Integer/real Real Menghitung arctangent X Cos ( x) Integer/real Real Menghitung cosinus x Exp (x) Integer/real Real Menghitung pangkat dengan bilangan pokok bil.

Natural (e) dengan pangkat x Ln (x) Integer/real Real Menghitung logaritma dengan bilangan pokok

bil. Natural (e) dari x Sin (x) Integer/real Real Menghitung sinus x

aacbbx

242 −±−

=

CBA −

Page 7: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

13

Sqrt (x) Integer/real Real Menghitung akat kuadrat dari x Trunc (x) Real Integer Memotong nilai x Round (x) Real Integer Membulatkan nilai x Sqr (x) Integer Integer Menghitung kuadrat (pangkat dua) dari x

Real Real Contoh: Trunc(19.8) menghasilkan 19 Trunc(19.0001) menghasilkan 19 Round(19.8) menghasilkan 20 (pembulatan ke atas) Round(19.0001) menghasilkan 19 (pembulatan ke bawah)

TIPE DATA BOOLEAN Ungkapan boolean adalah sembarang ungkapan yang selalu bernilai True atau False. Ungkapan-ungkapan yang dibentuk menggunakan operator pembanding, ( < , <=, >=, > ,<>) merupakan salah satu ungkapan boolean.

1. Operator Not

Operator Not digunakan untuk mengingkari nilai suatu statemen boolean.

2. Operator And Operator and digunakan untuk mentest kondisi yang memerlukan lebih dari 1 syarat dimana semua syarat harus dipenuhi.

3. Operator Or Jika pada operator And suatu kondisi akan bernilai True jika dan hanya jika semua syarat yang diberikan dipenuhi, maka operator Or jika salah satu dari syarat yang diberikan dipenuhi, maka kondisi yang ditest akan bernilai True.

Tabel Kebenaran

A B A AND B A OR B NOT A NOT B False False False False True True False True False True True False True False False True False True True True True True False False

Contoh Program:

Uses crt; Var Nama_siswa : string[30]; Npm : string[8]; Nilai_mid, nilai_final : integer; Nilai : integer; Hasil : Char; Begin Clrscr;

Write(‘Input Nama Mahasiswa : ‘);readln(Nama_siswa); Write(‘Input Npm : ‘);readln(npm); Write(‘Nilai Mid Test : ‘);readln(Nilai_mid); Write(‘Nilai Final Test : ‘);readln(Nilai_final); Nilai := (Nilai_mid + Nilai_final) div 2; { DIV : pembagian data integer } If Nilai > 80 Then Hasil := ‘A’ Else If (Nilai <= 80) And (Nilai > 60) Then

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

14

Hasil := ‘B’ Else If (Nilai <= 60) And (Nilai > 40) Then Hasil := ‘C’ Else If (Nilai <= 40) And (Nilai > 20) Then Hasil := ‘D’ Else Hasil := ‘E’; Writeln; writeln(‘Hasil akhir ‘,Nama_siswa,’ adalah ‘,hasil);

End.

Input Nama Mahasiswa : Pengki Input Npm : 66709878 Nilai Mid Test : 40 Nilai Final Test : 30 Hasil akhir Pengki adalah D

STATEMEN MASUKAN DAN KELUARAN

STATEMEN KELUARAN WRITE DAN WRITELN Statemen Write dan Writeln dapat berisi sembarang argumen. Penggunaan kedua statemen ini adalah:

• Write digunakan untuk mencetak beberapa argumen pada baris yang sama. • Writeln yang tidak diikuti argumen hanya akan mencetak satu baris kosong. • Writeln yang diikuti argumen akan mencetak nilai argumen tersebut dan berpindah ke

baris berikutnya. BU: Write/Writeln (berkas,ungkapan1,ungkapan2,…) Dengan Berkas : nama berkas keluaran. Parameter ini bersifat optional, jika tidak diisi maka keluarannya adalah standar yaitu layar monitor. Ungkapan1, ungkapan2 … : bisa berupa variabel, string, literal atau sembarang ungkapan. Contoh: Write ( ‘ Cetak kalimat ’ );

{ string harus diapit di antara tanda petik } Writeln ( ‘Hasil keluaran : ‘,Hasil , ‘ ‘,A,B); Writeln (A,B+C,4+5); Writeln; { cetak satu baris kosong }

UNGKAPAN LITERAL

Ungkapan ini digunakan jika mencetak dengan cacah kolom yang telah ditentukan dan akan dicetak Rata Kanan. Contoh:

Writeln(‘NILAI’:10); {menyediakan 10 kolom, dan ‘ nilai ‘ dicetak rata kanan }

N I L A I

B:=56; { B adalah variabel bertipe integer }

Page 8: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

15

Writeln (B:5); 5 6

X:=78.95842 { X adalah variabel bertipe Real } Writeln(X:10:2) { Menyediakan 10 kolom diantaranya 3 kolom untuk desimal dan titik }

7 8 . 9 6

Untuk Mencetak ke printer, cukup dengan menambahkan lst, pada argumen berkas dan tambahkan unit printer pada USES.

USES printer; Begin Writeln(lst,’Kalimat ini akan dicetak ke printer…!’); End.

STATEMEN MASUKAN READ DAN READLN

Statemen Read tidak memperhatikan batas baris, rinci data (yang tersedia) akan selalu dibaca tidak tergantung apakah mereka ada di baris yang sama atau tidak. Statemen Readln memulai pembacaan data pada posisi baris saat itu dan meneruskan ke awal baris baru setelah pembacaan selesai. Kedua statemen ini beranggapan bahwa data masukan terdiri dari aliran rinci data yang kontinyu (continue).

BU: Read/Readln(var1,[var2, ... ]); Di mana variabel-variabel yang akan dibaca harus bertipe ordinal (integer, Real, char atau string). Contoh:

Read (X ,Y ,Z); { X,Y,Z bertipe Real)

Data yang diinput : 67.8 88.9 55.7 67.9 45.8

maka nilai yang diterima ketiga variabel tersebut adalah: X=67.8 Y=88.9 Z=55.7

Data untuk variabel-variabel tersebut dapat diketikan pada satu baris dimulai dari nomor kolom sembarang dengan setiap nilai dipisahkan oleh paling sedikit satu spasi. Jika menggunakan statemen Read ada beberapa hal yang perlu diingat bahwa: • Nilai-nilai variabel harus disusun dengan urutan yang sesuai dengan susunan variabel dalam

statemen Read. • Jika variabel yang dibaca bertipe integer atau real data yang ada di baris berikutnya akan terus

dibaca selama masih ada variabel variabel yang akan menerima nilai, • Nilai-nilai yang dibacakan harus berada dalam satu baris; tidak boleh disambung ke baris lain. • Variabel dari tipe yang berbeda (integer, real, char atau string, kecuali boolean) dapat dibaca

dengan urutan sembarang. • Variabel dalam read dan nilai yang bersesuaian harus mempunyai tipe data yang sama. Penggunaan statemen Readln sangat mirip dengan statemen Read dengan perbedaanya adalah bahwa setelah semua nilai pada satu baris dibaca, cursor akan diset pada posisi baris berikutnya. Maka statemen: Readln (X,Y,Z); ekivalen dengan Read(X,Y,Z);Writeln;

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

16

Contoh: Readln(A,B,C); Read(D);

Nilai yang diberikan: 12.43 145.65 65.986 432.14 322.34 56.3 maka nilai-nilai variabel diperoleh adalah: A = 12.43 B = 145.65 C = 65.986 D = 78.43

Kasus 1: Seorang nasabah meminjam uang di bank sebanyak Rp 5 juta untuk jangka waktu 3 tahun, dengan tingkat bunga 2% per tahun. Berapa jumlah pelunasan yang harus dibayarkan jika pembayaran dilakukan sebanyak 2 kali ? Formulasi: Fn : jumlah yang dibayarkan P : jumlah sekarang i : tingkat bunga per tahun n : jumlah tahun m : frekuensi pembayaran bunga dalam setahun Contoh Program: { ************************************** * Contoh program Model Bunga Majemuk * **************************************} USES crt; FUNCTION Pangkat(base : Real; p:integer):Real; VAR i:INTEGER; n:REAL; BEGIN n := base; FOR i:=1 TO p-1 DO n := n * base; Pangkat:=n; END; VAR P,F,i : Real; n,m : Integer; BEGIN clrscr; writeln('PENGEMBALIAN UANG PINJAMAN BANK'); writeln('-------------------------------'); write('Jumlah uang pinjaman sekarang : ');readln(P); write('Jangka pembayaran (x tahun) : ');readln(n); write('Tingkat bunga per tahun (%) : ');readln(i); write('Pembayaran dilakukan berapa kali ? : ');readln(m); { proses penghitungan bunga majemuk } i:= i / 100.0; F:= P * Pangkat(1+i/m,n*m); writeln; writeln('Pelunasan setelah ',n,' tahun sejumlah Rp ',trunc(F):10); END.

mn

n miPF

+= 1

Page 9: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

17

PENGEMBALIAN UANG PINJAMAN BANK ------------------------------- Jumlah uang pinjaman sekarang : 5000000 Jangka pembayaran (x tahun) : 3 Tingkat bunga per tahun (%) : 2 Pembayaran dilakukan berapa kali ? : 2 Pelunasan setelah 3 tahun sejumlah Rp 5307600

Kasus 2: Penduduk suatu kota berjumlah 1200000 jiwa pada tahun 2003, tingkat pertumbuhannya 6% per tahun. Hitunglah jumlah penduduk kota tersebut pada tahun 2010 ! Formulasi: P1 : Jumlah pada tahun pertama Pt : Jumlah Pada tahun ke-t Di mana : R = 1 + r r : Persentase pertumbuhan per tahun t : Indeks waktu (tahun) Contoh Program: { ********************************************* * Contoh program Model pertumbuhan penduduk * *********************************************} USES crt; FUNCTION Pangkat(base : Real; p:integer):Real; VAR i:INTEGER; n:REAL; BEGIN n := base; FOR i:=1 TO p-1 DO n := n * base; Pangkat:=N; END; VAR p1,rr,R,Pt : Real; th1,th2,t : Integer; BEGIN clrscr; writeln('JUMLAH PERTUMBUHAN PENDUDUK'); writeln('----------------------------'); write('Tahun Pertama : ');readln(th1); write('Jumlah Penduduk Th. Pertama : ');readln(p1); write('Tahun Terakhir Pertumbuhan : ');readln(th2); write('Presentase Pertumbuhan/thn : ');readln(rr); {proses penghitungan} rr:=rr / 100.0; R :=1 + rr; t :=(th2-th1)+1; Pt:=p1*Pangkat(R,t-1); writeln; writeln('Jumlah Penduduk pada tahun ',th2,' sebanyak ',trunc(Pt),' jiwa.'); END.

11

−= tt RPP

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

18

JUMLAH PERTUMBUHAN PENDUDUK ---------------------------- Tahun Pertama : 2003 Jumlah Penduduk Th. Pertama : 1200000 Tahun Terakhir Pertumbuhan : 2010 Presentase Pertumbuhan/thn : 6 Jumlah Penduduk pada tahun 2010 sebanyak 1804356 jiwa.

PEMILIHAN PROSES Dalam pemrograman terstruktur ada 3 macam proses ekekusi statemen, yaitu: 1. Proses eksekusi secara berurutan (sequential), 2. Proses pemilihan (selection) dan 3. Proses berulang Proses eksekusi secara berurutan dimulai dari statemen paling awal sampai kepada statemen paling akhir secara berurutan. Terkadang ada kalanya proses eksekusi harus dilompatkan ke suatu statemen yang berada jauh di bawah, atau diperlukan adanya proses berulang. Karenanya digunakan statemen kendali. Statemen kendali adalah statemen yang digunakan untuk mengubah urutan eksekusi program dari pola eksekusi normal (secara berurutan) ke pola yang lain ( secara tidak berurut), yaitu statemen pemilihan proses dan proses berulang. Statemen pemilihan proses dalam Pascal ada dua buah statemen, yaitu if... then... dan case. Variasi bentuk if...then diantaranya adalah pilihan tunggal, pilihan ganda dan pilihan jamak. Operator Pembanding. Simbol Arti

= Sama dengan <> Tidak sama dengan > Lebih besar dari

>= Lebih besar atau sama dengan < Lebih kecil dari

<= Lebih kecil atau sama dengan

IF... THEN • Pilihan Tunggal

Bentuk paling sederhana dari statemen if...then adalah pilihan tunggal, yakni jika hanya ada satu pilihan yang disediakan. Contoh: USES crt; VAR Angka, asal : Real; Begin Clrscr; Write (‘Masukkan sembarang angka = ‘); Readln(Angka); { If kondisi Then } Writeln; { statemen } Asal := Angka; If Angka < 0 then

Angka := -1 * angka; Writeln (‘Nilai Mutlak dari ‘, Asal:1:3,’ = ‘,Angka:1:3); End.

JUMLAH PERTUMBUHAN PENDUDUK ----------------------------

Page 10: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

19

Masukkan sembarang angka = -78 Nilai Mutlak dari –78 = 78

• Pilihan Ganda Yakni memilih salah satu dari 2 pilihan yang disediakan. Bentuk umum: If kondisi Then Statemen1 Else Statemen2; Contoh: USES crt; VAR Pertama, kedua, hasil : Real; Begin Clrscr; Write(‘Input angka pertama : ‘); Readln(Pertama); Write(‘Input angka kedua : ‘); Readln(Kedua); Writeln;

If kedua <= 0 then Hasil := -1 * kedua Else Hasil := kedua – (2 * Pertama – kedua) / (1 – kedua); Writeln(‘Hasil = ‘,hasil:2:3); End.

Input angka pertama : 10.0 Input angka kedua : 5.0 Hasil = 1.250

• Pilihan Jamak Pilihan jamak merupakan variasi statemen IF yang lebih lengkap. Dalam pemilihan proses disediakn lebih dari 2 pilihan yang harus dipilih salah satu. Bentuk umumnya: If kondisi1 then Statemen1 Else if kondisi2 then Statemen2 Else if kondisi3 then Statemen3 Else ... ... Contoh program untuk menghitung akar persamaan kuadrat. Akan dihitung akar persaman kuadrat Dengan koefisien A,B dan C. Dan formulasi untuk menghitung x1 dan x2 adalah : Dan Dengan ketentuan-ketentuan sbb:

02 =++ CBxAx

ADBxx

2, 21 ±−= ACBD 42 −=

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

20

• Jika A = 0, maka menjadi

Dan persamaan ini bukan persamaan kuadrat.

• Jika D (diskriminan) := B * B – 4 * A * C mempunyai nilai positif, maka akarnya adalah: X1 := (-B + sqrt(D)) / (2.0 * A) dan X2 := (-B – sqrt(D))/(2.0 * A)

• Jika D := B * B – 4 * A * C mempunyai nilai negatif, maka akarnya adalah: X1 := -B/ (2.0 * A) + sqrt(abs(D))/(2.0 * A))i (imajiner) X2 := -B/ (2.0 * A) - sqrt(abs(D))/(2.0 * A))i (imajiner)

Contoh Program: Uses Crt; Var A,B,C,D :Real; x1,x2,x1i :Real; Begin clrscr; writeln('MENGHITUNG AKAR PERSAMAAN KUADRAT'); writeln('---------------------------------'); writeln('Ax^2 + Bx + Cx = 0'); writeln; write('Koefisien A = ');readln(A); write('Koefisien B = ');readln(B); write('Koefisien C = ');readln(C); writeln; If A = 0 Then Begin writeln('Koefisien A = 0, bukan persamaan kuadrat !'); x1:=-C / B; writeln('Harga X = ',x1:1:3); End Else Begin D:=B*B-4*A*C; If D > 0 Then Begin x1:=(-B + sqrt(D)) / (2.0*A); x2:=(-B - sqrt(D)) / (2.0*A); writeln('Nilai Diskriminan = ',D:1:3); writeln('Akar x1 = ',x1:1:3); writeln('Akar x2 = ',x2:1:3); End Else If D = 0 Then Begin x1:=-B/(2.0*A); writeln('Nilai Diskriminan = 0'); writeln('Dua akar yang sama = ',x1:1:3); End Else Begin x1:=-B/(2.0*A); x1i:= - sqrt(abs(D))/(2.0*A); writeln('Nilai Diskriminan = ',D:1:3); writeln('Dua Akar Imajiner :'); writeln('Akar x1 = ',x1:1:3,' + ',abs(x1i):1:3,'i'); writeln('Akar x2 = ',x1:1:3,' - ',abs(x1i):1:3,'i'); End End End.

02 =++ CBxAx 0=+ CBx

Page 11: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

21

MENGHITUNG AKAR PERSAMAAN KUADRAT --------------------------------- Ax^2 + Bx + Cx = 0 Koefisien A = 1 Koefisien B = 2 Koefisien C = -8 Nilai Diskriminan = 36.000 Akar x1 = 2.000 Akar x2 = -4.000

STATEMEN CASE Sejumlah statemen if dalam pilihan jamak terlihat agak membingungkan terutama bagi pemula, beberapa pemilihan proses untuk sejumlah pilihan jawaban bisa dilakukan dengan statemen Case. Bentuk umum: Case ungkapan of

Label 1 : statemen 1; Label 2 : statemen 2;

...

... Label n : statemen n;

End Dengan:

1. Ungkapan yang mengikuti kata case dapat berupa sembarang ungkapan yang memberikan hasil integer, char, boolean atau tipe terbilang.

2. Label, yang masing-masing disebut label kasus, adalah konstanta yang mempunyai tipe yang sama dengan ungkapan. Setiap label kasus dapat terdiri dari sejumlah konstanta dipisahkan dengan koma. Konstanta tertentu hanya bisa muncul dalam satu label kasus.

3. Antara label kasus dengan statemen yang mengikutinya dipisahkan dengan tanda baca titik dua (:)

4. Statemen yang mengikuti tanda titik dua dapat berupa statemen tunggal atau majemuk. 5. Dalam setiap statemen case bisa terdiri dari sejumlah label kasus diikuti dengan statemen

yang berhubungan. 6. Kata end digunakan untuk mengakhiri setiap statemen case dan merupakan bagian dari

statemen case. Pada saat statemen case dikerjakan, beberapa proses akan terjadi, yaitu:

1. Ungkapan yang mengikuti case akan dihitung. 2. Satu dari sejumlah statemen yang ada dalam struktur case akan dipilih berdasarkan nilai

konstanta dalam label kasus yang nilainya sama dengan nilai ungkapan yang telah dihitung. 3. Statemen yang dimaksud akan dikerjakan. 4. Statemen yang mengikuti end akan dikerjakan.

Contoh Program

Uses crt; Var Nama_siswa : string[30]; Npm : string[8]; Nilai_mid, nilai_final : integer; Nilai : integer; Hasil : string[20]; Begin Clrscr;

Write(‘Input Nama Mahasiswa : ‘);readln(Nama_siswa); Write(‘Input Npm : ‘);readln(npm); Write(‘Nilai Mid Test : ‘);readln(Nilai_mid);

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

22

Write(‘Nilai Final Test : ‘);readln(Nilai_final); Nilai := (Nilai_mid + Nilai_final) div 2; { DIV : pembagian data integer } Case Nilai Of

1..20 : hasil := ‘Jelek’; 21..40 : hasil := ‘Kurang’; 41..60 : hasil := ‘Cukup’; 61..80 : hasil := ‘Baik’; else hasil := ‘Istimewa’; (* 81 <= I <= 100 *) End; Writeln; writeln(‘Hasil akhir ‘,Nama_siswa,’ adalah ‘,hasil);

End.

Input Nama Mahasiswa : Pengki Input Npm : 66709878 Nilai Mid Test : 40 Nilai Final Test : 30 Hasil akhir Pengki adalah Kurang

GOTO (Percabangan Non Kondisi) Statemen GOTo digunakan untuk melompat dari satu posisi ke posisi lain tanpa harus menggunakan ekspresi kondisi. Sintaks GOTO adalah GOTO label; Label dapat berupa angka atau identifikasi lain dengan terlebih dahulu dideklarasikan dengan statemen label. Contoh:

Uses Crt; var Karakter: Char; label INPUT_LAGI,BERAKHIR; Begin INPUT_LAGI: Clrscr; Write('Ketikan sebuah karakter '); Readln(Karakter); if (Ord(Karakter)>64) and (ord(karakter)<91) then begin writeln('Anda menginput Huruf Besar!'); Goto BERAKHIR; end else if (Ord(Karakter)>96) and (ord(karakter)<123) then begin writeln('Anda menginput Huruf Kecil!'); goto BERAKHIR; end else if (Ord(Karakter)>47) and (ord(karakter)<58) then begin writeln('Anda menginput Angka!'); goto BERAKHIR; end else begin

Page 12: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

23

writeln('Input anda bukanlah karakter alphabet!'); readln; Goto INPUT_LAGI; end; BERAKHIR:

End. Ketikan sebuah karakter : t Anda menginput Huruf Kecil!

PROSES BERULANG (LOOPING)

STATEMEN WHILE ... DO Statemen ini digunakan bila satu atau lebih statemen akan dieksekusi berulang kali sampai kondisi yang dinyatakan dalam statemen WHILE tidak dipenuhi. Bentuk umumnya:

While kondisi do Statemen

Dengan Kondisi : ungkapan boolean yang digunakan sebagai syarat agar statemen dikerjakan berulang kali. Statemen : statemen tunggal atau statemen majemuk yang akan diproses ulang.

Contoh:

uses crt; var i,jumlah,nilai:integer; rerata:real; begin clrscr; writeln('MENGHITUNG HARGA RATA-RATA SEJUMLAH DATA NILAI'); writeln('----------------------------------------------'); writeln; writeln('Isi Nilai dengan bilangan Positif dan negatif untuk Selesai..'); I:=0; Jumlah:=0; write('Masukan data ke-',I+1,' = ');readln(nilai); while nilai>=0 do begin inc(i); { bisa diganti dgn i := i + 1; } inc(jumlah,nilai); { bisa juga dgn jumlah := jumlah + nilai; } write('Masukan data ke-',I+1,' = ');readln(nilai); end; rerata := jumlah / i; writeln; writeln('Cacah Data = ',I:5); writeln('Jumlah Data = ',jumlah:5); writeln('Nilai Rata-rata = ',rerata:8:2); end.

MENGHITUNG HARGA RATA-RATA SEJUMLAH DATA NILAI ---------------------------------------------- Isi Nilai dengan bilangan Positif dan negatif untuk Selesai.. Masukan data ke-1 = 3

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

24

Masukan data ke-2 = 3 Masukan data ke-3 = 4 Masukan data ke-4 = 5 Masukan data ke-5 = -1 Cacah Data = 4 Jumlah Data = 15 Nilai Rata-rata = 3.75

STATEMEN REPEAT ... UNTIL Cara kerja statemen ini merupakan kebalikan dari statemen while. Karena untuk statemen while, test penghentian looping ada di awal kalang, tetapi untuk repeat ini ada di akhir kalang. Dan dalam statemen repeat ini proses berulang akan dilaksanakan terus selama kondisi dipenuhi. Bentuk umumnya:

Repeat

Statemen Until kondisi

Contoh: uses crt;

var i,jumlah,nilai:integer; maksimum,minimum:integer; rerata:real; begin clrscr; writeln('MENGHITUNG HARGA RATA-RATA,MIN,MAX SEJUMLAH DATA NILAI'); writeln('----------------------------------------------'); writeln; writeln('Isi Nilai dengan bilangan Positif dan negatif untuk Selesai..'); I:=0; Jumlah:=0; write('Masukan data ke-',I+1,' = ');readln(nilai); if nilai < 0 then writeln('Tidak ada nilai yang dimasukkan...!') else begin minimum:=nilai; maksimum:=nilai; repeat if nilai<minimum then minimum:=nilai; if nilai>maksimum then maksimum:=nilai; i := i + 1; jumlah := jumlah + nilai; write('Masukan data ke-',I+1,' = ');readln(nilai); until nilai < 0; rerata := jumlah / i; writeln; writeln; writeln('Cacah Data = ',I:5); writeln('Jumlah Data = ',jumlah:5); writeln('Nilai Rata-rata = ',rerata:8:2); writeln('Nilai Maksimum = ',maksimum:5); writeln('Nilai Minimum = ',minimum:5);

Page 13: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

25

end end.

MENGHITUNG HARGA RATA-RATA,MIN,MAX SEJUMLAH DATA NILAI ---------------------------------------------- Isi Nilai dengan bilangan Positif dan negatif untuk Selesai.. Masukan data ke-1 = 6 Masukan data ke-2 = 4 Masukan data ke-3 = 5 Masukan data ke-4 = 3 Masukan data ke-5 = 7 Masukan data ke-6 = 2 Masukan data ke-7 = -1 Cacah Data = 6 Jumlah Data = 27 Nilai Rata-rata = 4.50 Nilai Maksimum = 7 Nilai Minimum = 2

STATEMEN FOR ... DO Dalam statemen for pengawalan nilai variabel kendali kalang, penambahan nilai dan test batas nilai akan dilaksanakan secara otomatis oleh komputer. Contoh:

Jumlah := 0; For bulat := 1 to 25 do Jumlah := Jumlah + bulat; Writeln(‘JUMLAH = ‘, jumlah:1);

Dalam program di atas, statemen:

For Bulat := 1 to 25 do

Bisa diartikan sebagai: dimulai dengan nilai variabel bulat = 1, kerjakan statemen yang ditulis setelah kata do. Tambahkan 1 pada nilai variabel Bulat pada setiap pengerjaan statemen, dan keluar dari looping jika nilai variabel bulat telah melebihi 25.

BU:

For variabel := ungkapan1 to ungkapan2 do Statemen;

Aturan-aturan penggunaan for: 1. variabel, ungkapan1 dan ungkapan2 harus mempunyai tipe sama, dan harus bertipe ordinal. 2. Kata to menunjukkan nilai variabel berubah menjadi nilai penerus setiap kali operasi looping

dikerjakan. 3. Kata to akan dikerjakan jikai nilai variabel masih lebih kecil atau sama dengan nilai akhir (nilai

ungkapan2). 4. Kata downto menunjukkan nilai variabel berubah menjadi nilai pendahulunya setiap kali operasi

looping dikerjakan. Dengan kata lain kata downto harus digunakan jikai nilai awal lebih besar dari nilai akhir.

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

26

5. Kata downto akan dikerjakan jika nilai variabel masih lebih besar atau sama dengan nilai ungkapan2.

Interprestasi statemen-statemen for...do adalah sebagai berikut:

var I : integer; for I:= 1 to 100 do statemen; statemen akan dikerjakan 100 kali. var I,L,N : integer; for I:= L to N do statemen; statemen akan dikerjakan sbanyak (N-L+1) kali. var KK : integer; for KK := 25 downto 1 do statemen statemen akan dikerjakan sebanyak 25 kali dimulai dari KK = 25, 24, 23..., 1. var Berikut : integer; for berikut := 2.0 to 100 do statemen; salah, karena nilai awalnya adalah Real. var Kata : char; for Kata := ‘A’ to ‘F’ do statemen statemen akan dikerjakan 6 kali dimulai K = ‘A’, ’B’,...,’F’. type Namahari = (SENIN,SELASA,RABU,KAMIS,JUMAT,SABTU,MINGGU); var Hari : Namahari; for Hari:= SELASA to SABTU do statemen;

statemen akan dikerjakan 5 kali. Contoh Program Menghitung Nilai Faktorial USES crt; VAR Faktor : Real; Cacah,Bil_Awal,

Bil_Akhir,Counter,Baris : Integer; BEGIN clrscr; writeln('TABEL FAKTORIAL'); write('Bilangan Awal = ');readln(Bil_Awal); write('Bilangan Akhir = ');readln(Bil_Akhir); writeln; writeln(' TABEL FAKTORIAL'); writeln('-----------------------------------------'); writeln(' Bilangan Harga Faktorial'); writeln('-----------------------------------------'); Baris:=9; For Cacah:=Bil_Awal to Bil_Akhir do Begin Faktor:=1; For Counter:= 1 to Cacah do

Page 14: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

27

Faktor:=Faktor*Counter; gotoxy(2,Baris);Write(Cacah:8); gotoxy(20,Baris);Writeln(Faktor:1:1); Baris:=Baris+1; End; writeln('-----------------------------------------'); END. TABEL FAKTORIAL Bilangan Awal = 1 Bilangan Akhir = 12 TABEL FAKTORIAL ----------------------------------------- Bilangan Harga Faktorial ----------------------------------------- 1 1.0 2 2.0 3 6.0 4 24.0 5 120.0 6 720.0 7 5040.0 8 40320.0 9 362880.0 10 3628800.0 11 39916800.0 12 479001600.0 -----------------------------------------

LARIK (ARRAY) DIMENSI SATU Salah satu tipe data terstruktur yang telah kita pelajari dari modul materi terdahulu adalah array atau dengan istilah lainnya adalah larik. Terminologi dari larik itu sendiri, yaitu: 1. Larik adalah deretan rinci data yang mempunyai tipe data sejenis. Untai karakter (string)

merupakan contoh array. 2. Setiap rinci data disebut dengan komponen atau elemen array. 3. Setiap larik (array) bisa dioperasikan menggunakan pemilih elemen array yang disebut index atau

subskrip. Dalam program, index atau subskrip tersebut diletakkan dalam tanda kurung kotak, [ ], setelah nama array yang akan dioperasikan.

Untuk mendeklarasikan variabel array ditentukan dengan: Var nama : array [index] of tipe; Dengan Var,array, of : kata kunci yang harus ada. Nama : nama array yang akan dideklarasikan Index : batasan index yang akan ada pada array yang akan dideklarasikan Tipe : tipe array; Contoh deklarasi: Var Gaji : array[1..10] of real; Upah : array[-4..8] of real; Atau

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

28

Const batas=100; Var Angka : array[1..batas] of integer; Const batas=1..200; Var kalimat : array [batas] of char; Contoh Pengoperasian variabel array: Var Kalimat : array[1..100] of char; Vektor : array[1..25] of real; Jawaban : array[1..10] of real;

Nilai : array[1..80] of integer; Frekuensi : array[1..100] of integer; Jumlah, Hasil_kali,selisih : real; Kata,huruf : char; I,j,k,total,hasil : integer;

. . kata := kalimat[1]; selisih := Vektor[1]-Vektor[2]; jumlah := jumlah + Vektor[K]; hasil_kali := jawaban[J] * jawaban[K] * Vektor[I]; kalimat[25] :=’P’; Frekuensi[5]:=2 * Vektor[5]; Contoh Program 1. Mencetak deret bilangan PASCAL: uses crt; var i,angka,a,b : integer; bil : array[1..100] of integer; next : array[1..100] of integer; deret,kolom,kol: integer; Begin clrscr; kolom:=40; write('Masukan Jumlah Deret = ');readln(deret); next[1]:=0; next[2]:=1; next[3]:=0; kol:=kolom; gotoxy(kol,wherey); writeln(1); For a:=2 to deret do Begin kolom:=kolom-2; kol:=kolom;

For b:=1 to 100 do

Page 15: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

29

bil[b]:=next[b]; For b:=1 to a do Begin angka:=bil[b]+bil[b+1]; gotoxy(kol,wherey); {WHEREY: fungsi untuk mendapatkan koordinat baris kursor yg aktif } write(angka); next[b+1]:=angka; next[b+2]:=0; kol:=kol+4; End; writeln; End; End. Masukan Jumlah Deret = 6 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 2. Mencetak bilangan PRIMA Uses crt; const Batas=500; var prima : array[1..batas] of boolean; { bilangan prima } batas_geser, { batas penggeseran } i,j : integer; { counter / cacah } Begin Clrscr; For i:=1 to Batas do prima[i]:=true; batas_geser:=trunc(sqrt(batas)); i:=2; { proses penggeseran } While i<=batas_geser do Begin If prima[i] then Begin j:=i+i; While j<=batas do Begin prima[j]:=false; j:=j+i; End; End; i:=i+1; End; { Cetak hasil proses.... } Writeln('Bilangan Prima antara 1 s/d ',Batas);

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

30

Writeln('------------------------------------'); Writeln; j:=1; For i:=2 to Batas do Begin If prima[i] then Begin If J > 8 Then Begin j:=1; Writeln; End Else Begin write(' ',i:3); j:=j+1; End; End; End; writeln;writeln('Selesai...'); end. Bilangan Prima antara 1 s/d 500 ------------------------------------ 2 3 5 7 11 13 17 19 29 31 37 41 43 47 53 59 67 71 73 79 83 89 97 101 107 109 113 127 131 137 139 149 157 163 167 173 179 181 191 193 199 211 223 227 229 233 239 241 257 263 269 271 277 281 283 293 311 313 317 331 337 347 349 353 367 373 379 383 389 397 401 409 421 431 433 439 443 449 457 461 467 479 487 491 499 Selesai... LARIK DIMENSI BANYAK Contoh yang paling mudah untuk array dimensi banyak adalah tabel. Kalau anda perhatikan sebuah tabel, maka posisi setiap elemen dalam tabel ditentukan 2 posisi, yaitu posisi baris dan posisi kolom. Untuk mendeklarasikan variabel array tersebut yaitu: Var nama : array [index1,index2,...] of tipe; Tipe data index1 atau index2 bisa berupa sembarang tipe subjangkauan (subrange) skalar kecuali real. Contoh program: Menghitung Penjumlahan MATRIK Uses Crt; Var Mat_A,Mat_B,Mat_C : Array[1..10,1..10] Of Integer; ordo_x,ordo_y : Integer; x,y,koor_brs : Integer;

Page 16: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

31

Begin Clrscr; Writeln('PENJUMLAHAN MATRIK'); Writeln('------------------'); Write('Tentukan ordo Matriks <x,y> : ');readln(ordo_x,ordo_y); Writeln('Input Matrik <A>:'); For y:=1 to ordo_y do Begin koor_brs:=wherey; For x:=1 to ordo_x do Begin gotoxy(x*5,koor_brs); Read(Mat_A[x,y]); End; End; Writeln; Writeln('Input Matrik <B>:'); For y:=1 to ordo_y do Begin koor_brs:=wherey; For x:=1 to ordo_x do Begin gotoxy(x*5,koor_brs); Read(Mat_B[x,y]); End; End; Writeln; Writeln('Hasil Penjumlahan Matrik A + B = '); For y:=1 to ordo_y do Begin For x:=1 to ordo_x do Begin Mat_C[x,y]:=Mat_A[x,y]+Mat_B[x,y]; Write(Mat_C[x,y]:5); End; Writeln; End; End. PENJUMLAHAN MATRIK ------------------ Tentukan ordo Matriks <x,y> : 3 2 Input Matrik <A>: 6 -2 -1 3 4 9 Input Matrik <B>: 5 2 1 -4 2 7 Hasil Penjumlahan Matrik A + B = 11 0 0 -1 6 16

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

32

OPERASI STRING

PENYELEKSIAN STRING Dua buah string dikatakan sama bila nilai string yang pertama isi dan panjangnya sama dengan nilai kedua. Blank dianggap nilai yang signifikan. Bila dua buah string dibandingkan, maka urutan nilainya akan digunakan urutan karakter yang sesuai dengan kode ASCII. Jadi karakter ‘A’ lebih kecil dari karakter ‘B’. Contoh: uses crt; var NamaAnda, NamaTeman : string[30]; Begin clrscr; write('Nama Anda : ');Readln(NamaAnda); write('Nama Teman : ');Readln(NamaTeman); if NamaAnda = NamaTeman Then writeln('Nama Anda sama dengan Nama Teman Anda !'); if NamaAnda < NamaTeman Then writeln('Nama Anda urutannya lebih kecil dari nama teman anda !'); if NamaAnda > NamaTeman Then writeln('Nama Anda urutannya lebih besar dari nama teman anda !'); End. Nama Anda : Tukul Nama Teman : Tessi Nama Anda urutannya lebih besar dari nama teman anda !

PROSEDUR STANDAR OPERASI STRING 1. Delete

Bentuk umum: Delete(var s:string;index: integer;count:integer); Prosedur standar ini digunakan untuk membuang (delete) sejumlah karakter (jumlah karakter yang dibuang ditunjukkan oleh nilai count) mulai dari posisi tertentu (ditunjukkan oleh nilai index) dari suatu nilai string (ditunjukkan oleh variabel s). jika posisi index lebih besar dari panjang string s, maka tidak ada karakter yang akan dihapus. Contoh: uses crt; Var kalimat : string[50]; urutan,posisi : integer; panjang_kalimat : integer; Begin clrscr; kalimat:='Percobaan'; panjang_kalimat:=length(kalimat); {fungsi length: panjang sebuah karakter} for urutan:=1 to panjang_kalimat do Begin posisi:=(panjang_kalimat+2)-urutan; delete(kalimat,posisi,1); writeln(kalimat); end; end. Percobaan Percobaa

Page 17: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

33

Percoba Percob Perco Perc Per Pe P

2. Insert

Bentuk Umum : Insert(source:string; var s:string; index:integer); Digunakan untuk menyisipi (insert) suatu string (ditunjukkan oleh nilai string source), ke nilai string lainnya (ditunjukkan oleh nilai string s) mulai dari posisi yang ditunjukkan oleh nilai integer index. Bila hasil dari penyisipan menjadi string yang panjangnya lebih dari 255 karakter, maka hanya sampai dengan 255 karakter saja. Contoh: uses crt; var kalimat : string[100]; Begin kalimat:='GUMA'; clrscr; writeln(kalimat); Insert('NADAR',kalimat,3); writeln(kalimat); End. GUMA GUNADARMA

3. Str Bentuk Umum : Str(x[:width[:decimals]; var s:string); Digunakan untuk mengubah nilai numerik (ditunjukan oleh nilai x) menjadi nilai string (ditunjukkan oleh variabel string s). nilai x dapat berupa nilai integer atau real. Hasil dari ubahan dapat terformat atau tidak terformat. Bila width atau decimals disebutkan, maka akan dihasilkan nilai string dengan format panjang tertentu. Contoh: uses crt; var n1,n2 : integer; s1,s2 : string[10]; begin clrscr; n1:=40; n2:=35; writeln('n1 + n2 = ',n1+n2); str(n1,s1); str(n2,s2); writeln('s1 + s2 = ',s1+s2); str(n1:4,s1); str(n2:4,s2); writeln('s1 + s2 = ',s1+s2); end.

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

34

n1 + n2 = 75 s1 + s2 = 4035 s1 + s2 = 40 35

4. Val Bentuk Umum : Val(s:string;v ;var code); Digunakan untuk mengkonversikan suatu nilai string(ditunjukkan oleh nilai s) menjadi nilai numerik (ditunjukkan oleh nilai variabel numerik v). Walaupun s merupakan nilai string, tetapi harus berisi angka atau tanda (+) atau (-), bila tidak berarti salah dan letak kesalahannya ditunjukkan oleh nilai variabel code. Nilai variabel code akan bernilai nol bila tidak mengandung kesalahan. Contoh: uses crt; var NilaiString : string[10]; NilaiReal : Real; PosisiSalah : integer; Begin clrscr; NilaiString:='123.45'; val(NilaiString,NilaiReal,PosisiSalah); writeln('Nilai String : ',NilaiString); writeln('Nilai Real : ',NilaiReal); writeln('Posisi Salah : ',PosisiSalah); End. Nilai String : 123.45 Nilai Real : 1.2345000000E+02 Posisi Salah : 0 Jika NilaiString=’123.A5’ Nilai String : 123.A5 Nilai Real : 0.0000000000E+00 Posisi Salah : 5

FUNGSI STANDAR OPERASI STRING 1. Copy

Bentuk Umum : Copy(s:string; index:integer;count:integer):string; Fungsi ini digunakan untuk menyalin(copy) sejumlah karakter yang disalin ditunjukkan oleh nilai count mulai dari posisi yang ditunjukkan oleh index dari nilai string yang ditunjukkan oleh s. Contoh: var kalimat : string[100]; hasil : string[100]; Begin kalimat:='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; writeln(kalimat); hasil:=Copy(kalimat,4,6);

Page 18: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

35

writeln(hasil); writeln(Copy(kalimat,9,1)); End. ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHI I

2. Concat

Bentuk Umum : Concat(s1[,s2,...,sn]:string):string; Digunakan untuk menggabungkan beberapa string yang ditunjukkan oleh variabel s(n). Contoh: Const Nama = ‘Pascal’; Dll = ‘dan keluarga’; Begin Writeln(concat(‘Bahasa ‘,Nama,’ untuk Anda ‘,Dll); End. Bahasa Pascal untuk Anda dan keluarga

3. Pos Bentuk Umum : Pos(substr:string; s:string):byte; Digunakan untuk mencari posisi letak dari suatu string (ditunjukkan oleh substr) yang ada di dalam nilai string yang lain (ditunjukkan oleh s). nilai yang dihasilkan adalah berupa nilai byte yang menunjukkan letaknya. Bila bernilai nol berarti nilai string yang dicari tidak ada. Contoh: const Alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; kar1 = 'FGHI'; kar2 = 'F'; kar3 = 'JUGA'; kar4 = 'PQRST'; Begin writeln(Alfabet); writeln; writeln(kar1,' ada di posisi ke ',Pos(kar1,Alfabet)); writeln(kar2,' ada di posisi ke ',Pos(kar2,Alfabet)); writeln(kar3,' ada di posisi ke ',Pos(kar3,Alfabet)); writeln(kar4,' ada di posisi ke ',Pos(kar4,Alfabet)); End. ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHI ada di posisi ke 6 F ada di posisi ke 6 JUGA ada di posisi ke 0 PQRST ada di posisi ke 16

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

36

4. Length

Bentuk Umum : Length(s:string):integer; Digunakan untuk menghitung panjang atau jumlah karakter yang ada di nilai string yang ditunjukkan oleh s. hasil dari fungsi ini adalah nilai numerik integer positif. Contoh: Var NamaAnda : String[50]; Begin Write(‘Nama Anda : ‘);Readln(NamaAnda); Writeln(‘Panjang nama anda adalah ‘,Length(NamaAnda),’ karakter.’); End. Nama Anda : Tukul Panjang nama anda adalah 5 karakter.

PROSEDUR Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali dengan kata reserved (cadangan) procedure di dalam bagian deklarasi. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.

Prosedur banyak digunakan pada program terstruktur, karena:

• Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit

menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur. • Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam

prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan. Contoh:

Procedure Garis; Begin Writeln(‘------------‘); End; Begin Garis; Writeln(‘Turbo Pascal’); Garis; End. ------------ Turbo Pascal ------------ Nilai di dalam suatu modul program Pascal sifatnya lokal, artinya hanya dapat digunakan pada modul yang bersangkutan saja, tidak dapat digunakan pada modul lainnya. Sebaliknya, agar dapat digunakan oleh seluruh modul maka variabel harus dideklarasikan secara global, yaitu dideklarasikan diluar modul program.

Page 19: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

37

Contoh program yang salah: Procedure Proses; Var X,Y : real; { x dan y adalah variabel lokal untuk modul proses } Begin Write(‘Nilai x : ‘);readln(X); Y:=x*x; End; Begin Proses; Writeln(‘Nilai y : ‘,Y:2:1);

{ salah, karena variabel Y belum dideklarasikan untuk modul utama} End.

Contoh program yang benar tetapi bernilai salah Var Y : real; Procedure Proses; Var X,Y : real; { x dan y adalah variabel lokal untuk modul proses } Begin Write(‘Nilai x : ‘);readln(X); Y:=x*x; End; Begin Proses; Writeln(‘Nilai y : ‘,Y); End.

Nilai x : 5 Nilai y : 0.0 { Y bernilai 0, karena Y yang dicetak adalah variabel Y milik modul

utama}

Prosedur dapat dibuat dengan menggunakan parameter-parameter variabel, baik dalam bentuk nilai atau referensi (acuan). Procedure Hitung(A,B:integer; Var C:integer); {A dan B adalah parameter nilai dan C adalah parameter acuan} Begin C:=A + B; Writeln(‘Hasil A + B = ‘,C); End; Var Y: Integer; Begin Hitung(5,7,Y); Writeln(‘Hasil Y + 10 ‘,Y); End.

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

38

Hasil A + B = 12 Hasil Y + 10 = 22 Prosedur dapat memanggil prosedur lainnya dan dapat pula memanggil dirinya sendiri atau istilah lainnya adalah proses rekursi. Contoh: Procedure Rekursi(I:integer); Begin Writeln(‘proses yang ke-‘,I); Dec(I); If I>0 Then Rekursi(I); End; Begin Rekursi(5); End.

proses yang ke-5 proses yang ke-4 proses yang ke-3 proses yang ke-2 proses yang ke-1 OUTPUT:

FUNGSI (FUNCTION) Blok fungsi hampir sama dengan blok prosedur, hanya saja fungsi dapat mengembalikan nilai dari tipe yang dideklarasikannya. Contoh:

Function Hitung(Var A,B : integer):Integer; Begin Hitung:=A + B; End; Var X,Y : Integer; Begin Write(‘Nilai X = ‘); Readln(X); Write(‘Nilai Y = ‘); Readln(Y); Writeln; Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y); End.

Nilai X = 2 Nilai Y = 9 2 + 9 = 11

RECORD Record merupakan tipe data terstruktur, yang terdiri dari item data dan masing-masing dapat mempunyai tipe data yang berbeda-beda. Item data itu dinamakan FIELD.

Page 20: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

39

DEKLARASI RECORD Tipe data Record diawali dengan keyword RECORD yang diikuti oleh suatu daftar field dan diakhiri dengan keyword END. Contoh:

TYPE Rec_Langganan = RECORD KODE : STRING[10]; NAMA : STRING[30]; ALAMAT : STRING[50]; PIUTANG : REAL; END; VAR PELANGGAN : Rec_Langganan;

Atau mendeklarasikan langsung di bagian deklarasi variabel VAR PELANGGAN : RECORD KODE : STRING[10]; NAMA : STRING[30]; ALAMAT : STRING[50]; PIUTANG : REAL; END;

MENGGUNAKAN TIPE DATA RECORD Tipe data recordnya adalah “Rec_Langganan” dan variabel yang menggunakan tipe tersebut adalah “PELANGGAN”, jika ingin memberikan nilai ke salah satu field, contohnya field “NAMA” maka cara penulisannya adalah:

PELANGGAN.NAMA := ‘Bla-bla bin bla’;

Contoh: Uses crt; type myRec = Record nama : string[30]; npm : string[8]; kelas : string[6]; nilai_mid : real; nilai_fin : real; nilai_rata : real; end; Var mhs : myRec; Procedure Input; Begin writeln('Input Data Mahasiswa:');writeln; write('Nama Mahasiswa : ');readln(mhs.nama); write('NPM : ');readln(mhs.npm); write('Kelas : ');readln(mhs.kelas); write('Nilai Mid Test : ');readln(mhs.nilai_mid); write('Nilai Final Test : ');readln(mhs.nilai_fin);

Variabel Record

Variabel Field Titik

Penghubung

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

40

End; Function Hitung_Nilai_Rata(mid,final:real):real; Var rasio1,rasio2:real; Begin rasio1:=mid*(70/100); { 70% dari nilai mid} rasio2:=final*(30/100); { 30% dari nilai final} Hitung_Nilai_Rata:=rasio1+rasio2; End; Procedure Proses; Begin

mhs.nilai_rata :=Hitung_Nilai_Rata(mhs.nilai_mid,mhs.nilai_fin); End; Procedure Cetak; Begin writeln('Cetak Data Mahasiswa:');writeln; writeln('Nama Mahasiswa : ',mhs.nama); writeln('NPM : ',mhs.npm); writeln('Kelas : ',mhs.kelas); writeln('Nilai Mid Test : ',mhs.nilai_mid:2:2); writeln('Nilai Final Test : ',mhs.nilai_fin:2:2); writeln('Nilai Rata-rata : ',mhs.nilai_rata:2:2); End; Begin clrscr; Input; Proses; writeln; Cetak; End. Input Data Mahasiswa: Nama Mahasiswa : Jhon Keboy NPM : 77704567 Kelas : 3KX-20 Nilai Mid Test : 56 Nilai Final Test : 78 Cetak Data Mahasiswa: Nama Mahasiswa : Jhon Keboy NPM : 77704567 Kelas : 3KX-20 Nilai Mid Test : 56.00 Nilai Final Test : 78.00 Nilai Rata-rata : 62.60 Penulisan variabel record dapat dipersingkat dengan menggunakan statemen WITH.

Contoh: Type Hasil = RECORD Jari_jari : REAL;

Page 21: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

41

Keliling : REAL’ Luas : REAL; END; Var Lingkaran : Hasil; Begin With Lingkaran Do Begin Write(‘Jari-jari lingkaran : ‘);Readln(Jari_jari); Keliling := 2*PI*Jari_jari; Luas := PI*SQR(Jari_Jari); Writeln; Writeln(‘Keliling Lingkaran = ‘,Keliling:7:2); Writeln(‘Luas Lingkaran =’,Luas:7:2); End; End; Jari-jari Lingkaran : 10 Keliling Lingkaran = 62.83 Luas Lingkaran = 314.16 OUTPUT: Contoh Program Record menggunakan Array Uses crt; Type myRec = Record nama : string[30]; npm : string[8]; kelas : string[6]; nilai_mid : real; nilai_fin : real; nilai_rata : real; end; Var mhs : array[1..100] of myRec; tombol : char; nomor : integer; Procedure BikinGaris(x,y,max:integer;k:char); var a : Integer; Begin for a:=0 to max-1 do begin gotoxy(x+a,y); write(k); end; writeln; End; Procedure Input; Begin Repeat clrscr; inc(nomor);

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

42

writeln('Input Data Mahasiswa yang ke:',nomor);writeln; With mhs[nomor] do begin write('Nama Mahasiswa : ');readln(nama); write('NPM : ');readln(npm); write('Kelas : ');readln(kelas); write('Nilai Mid Test : ');readln(nilai_mid); write('Nilai Final Test : ');readln(nilai_fin); end; writeln; write('Anda Mo Nginput Lagi[Y/T] : ');

tombol:=readkey; { readkey-> fungsi untuk membaca 1 karakter dari keyboard }

Until tombol in ['T','t']; End; Function Hitung_Nilai_Rata(mid,final:real):real; Var rasio1,rasio2:real; Begin rasio1:=mid*(70/100); { 70% dari nilai mid} rasio2:=final*(30/100); { 30% dari nilai final} Hitung_Nilai_Rata:=rasio1+rasio2; End; Procedure Proses; Var i :integer; Begin for i:=1 to nomor do mhs[i].nilai_rata :=Hitung_Nilai_Rata(mhs[i].nilai_mid,mhs[i].nilai_fin); End; Procedure Cetak; var i : integer; Begin clrscr; writeln('Cetak Data Mahasiswa:');writeln; BikinGaris(1,wherey,72,'='); gotoxy(1,wherey);write('NO'); gotoxy(6,wherey);write('NPM'); gotoxy(16,wherey);write('NAMA'); gotoxy(46,wherey);write('KELAS'); gotoxy(54,wherey);write('MID'); gotoxy(60,wherey);write('FINAL'); gotoxy(66,wherey);write('RATA'); writeln; BikinGaris(1,wherey,72,'-'); for i:=1 to nomor do Begin with mhs[i] do begin gotoxy(1,wherey);write(i:3); gotoxy(6,wherey);write(npm); gotoxy(16,wherey);write(nama); gotoxy(46,wherey);write(kelas); gotoxy(54,wherey);write(nilai_mid:2:2); gotoxy(60,wherey);write(nilai_fin:2:2); gotoxy(66,wherey);write(nilai_rata:2:2);writeln; end;

Page 22: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

43

End; BikinGaris(1,wherey,72,'='); End; Begin clrscr; Input; Proses; Cetak; End. Input Data Mahasiswa yang ke:6 Nama Mahasiswa : Jo'eng NPM : 64502453 Kelas : 3KY-03 Nilai Mid Test : 57 Nilai Final Test : 89 Anda Mo Nginput Lagi[Y/T] : Cetak Data Mahasiswa: ======================================================================== NO NPM NAMA KELAS MID FINAL RATA ------------------------------------------------------------------------ 1 45301767 Cecep Sarecep 2KT-13 45.00 89.00 58.20 2 23401897 Didin Ba Didin 2KT-13 56.00 75.00 61.70 3 44203787 Karlina de Jenggel 3YH-04 56.00 34.00 49.40 4 33802565 Maman Sukarman 3TK-02 80.00 76.00 78.80 5 45302456 Urip Rahman 2KT-10 77.00 65.00 73.40 6 64502453 Jo'eng 3KY-03 57.00 89.00 66.60 ========================================================================

FILE File (Berkas) adalah kumpulan sejumlah komponen yang bertipe data sama, yang jumlah tidak tertentu. Pengertian file atau berkas di analogikan dengan simpanan arsip. Di dalam Pascal, berkas menyediakan data yang nantinya akan digunakan oleh suatu program. Berkas dapat berupa disk file yaitu media penyimpanan yang berupa cakram magnetis, pita magnetis, kartu plong dan media-media penyimpanan lainnya. Berkas mempunyai sifat sebagai berkas berurutan (Sequential File), dimana untuk membaca record ke-10 misalnya, maka pembacaan harus dilakukan dari record 1, 2, 3 dan seterusnya. Atau dapat pula sebagai berkas acak (Random File).

MENDEKLARASIKAN FILE TYPE Var1 = FILE OF var2;

Atau VAR var1 = FILE OF var2;

Contoh

TYPE

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

44

TIPE_DATA = RECORD NAMA : string[25]; ALAMAT : string[50]; NO_TELP : string[15]; USIA : INTEGER; END; VAR File_Data : FILE OF TIPE_DATA; D_Data : Tipe_Data;

OPERASI PADA FILE 1. Statemen ASSIGN

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

ASSIGN(variabel_berkas, nama_berkas);

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

2. Statemen CLOSE

Close 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 REWRITE

Digunakan untuk membuat berkas baru yang telah dinyatakan dengan variabel berkas. Jika berkas tersebut sudah ada dalam media penyimpan, maka berkas tersebut akan digantikan dengan berkas yang baru.

Contoh: REWRITE(File_Data);

4. Statemen RESET

Digunakan untuk mengeset penunjuk komponen kembali ke nomor 0. Contoh: RESET(File_Data);

5. Statemen WRITE Statemen ini digunakan untuk menuliskan komponen berkas (data) ke dalam media penyimpan. Dan akan menempatkan komponen baru tersebut di akhir record.

WRITE(variabel_berkas,variabel_komponen_berkas);

Contoh: WRITE(File_Data,D_Data);

6. Statemen READ

Read digunakan untuk membaca komponen berkas dari dalam media penyimpan. Pembacaan disesuaikan dengan posisi penunjuk komponen, setelah selesai membaca, posisi penunjuk komponen akan ditempatkan ke komponen berkas berikutnya.

READ(variabel_berkas,variabel_komponen_berkas);

Page 23: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

45

Contoh: READ(File_Data,D_Data);

7. Statemen SEEK

Digunakan untuk menggerakkan penunjuk komponen ke nomor komponen tertentu. Dengan nomor awal record adalah 0.

SEEK(variabel_berkas,nomor_record);

Contoh: SEEK(File_Data,3); { diarahkan ke komponen yang ketiga);

8. Fungsi FILEPOS

Fungsi ini digunakan untuk mengetahui letak penunjuk komponen berada. Dan hasilnya berupa bilangan bulat yang menunjukkan posisi penunjuk komponen pada saat itu.

FILEPOS(variabel_berkas);

Contoh: Posisi := FILEPOS(File_Data);

9. Fungsi FILESIZE

Digunakan 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 data dalam satuan byte }

10. Fungsi EOF

Fungsi ini digunakan untuk mengetahui apakah penunjuk komponen berada di akhir berkas (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 FLUSH

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

FLUSH(variabel_berkas);

Contoh: FLUSH(File_Data);

12. Statemen ERASE

Erase digunakan untuk menghapus file atau berkas yang telah tertutup atau sedang tidak digunakan.

ERASE(variabel_berkas);

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

46

Contoh: ERASE(File_Data);

13. Statemen RENAME

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’);

Contoh: { ****************************************** ** PROGRAM MEMASUKKAN DATA KE DALAM FILE * ** NAMA FILENYA ADALAH mhs.dat * ****************************************** } Uses Crt; Type

Nilai = Record Nama : string[25]; Npm : string[8]; Nilai_Mid : Real; Nilai_Fin : Real; Nilai_Rata : Real; End; Var File_Nilai : File Of Nilai; Nilai_Mhs : Nilai; i,j : Integer; Lagi : Char; Function Hitung_Nilai_Rata(mid,final:real):real; Var rasio1,rasio2 :real; Begin rasio1:=mid*(70/100); { 70% dari nilai mid} rasio2:=final*(30/100); { 30% dari nilai final} Hitung_Nilai_Rata:=rasio1+rasio2; End; Begin Assign(File_Nilai,'Mhs.Dat'); Rewrite(File_Nilai); i:=0; Repeat Inc(i); Clrscr; Writeln('Mengisi data pada File "Mhs.Dat"....'); Writeln('------------------------------------'); Writeln('Mengisi Data ke-',i:2); Writeln; With Nilai_Mhs Do Begin Nilai_Rata:=0.0; Write('Nama Mahasiswa : ');Readln(Nama);

Page 24: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

47

Write('NPM Mahasiswa : ');Readln(Npm); Write('Nilai Mid Test : ');Readln(Nilai_Mid); Write('Nilai Final Test : ');Readln(Nilai_Fin); Nilai_Rata:=Hitung_Nilai_Rata(Nilai_Mid,Nilai_Fin); End; Write(File_Nilai,Nilai_Mhs); Writeln; Write('Akan Mengisi Lagi [<Y>a/<T>Idak] : ');Readln(Lagi); Until Not (Lagi In ['Y','y']); Close(File_Nilai); End. Mengisi data pada File "Mhs.Dat".... ------------------------------------ Mengisi Data ke- 1 Nama Mahasiswa : Yudhi Sumanto Akbar NPM Mahasiswa : 45689778 Nilai Mid Test : 56 Nilai Final Test : 78 Akan Mengisi Lagi [<Y>a/<T>Idak] : Y

Contoh: { ****************************************** ** PROGRAM MEMBACA DATA DARI FILE * ** NAMA FILENYA ADALAH mhs.dat * ****************************************** } Uses Crt; Const Garis='---------------------------------------------------------------------'; Type Nilai = Record Nama : string[25]; Npm : string[8]; Nilai_Mid : Real; Nilai_Fin : Real; Nilai_Rata : Real; End; Var File_Nilai : File Of Nilai; Nilai_Mhs : Nilai; i,j,jumlah_data : Integer; Lagi : Char; Function Hitung_Nilai_Rata(mid,final:real):real; Var rasio1,rasio2 :real; Begin rasio1:=mid*(70/100); { 70% dari nilai mid} rasio2:=final*(30/100); { 30% dari nilai final} Hitung_Nilai_Rata:=rasio1+rasio2; End; Begin Assign(File_Nilai,'Mhs.Dat'); Reset(File_Nilai);

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

48

Jumlah_Data:=FileSize(File_Nilai); Clrscr; Writeln(' ':20,'DAFTAR NILAI UJIAN MAHASISWA'); Writeln(' ':20,'----------------------------'); Writeln;Writeln(Garis); Write('| No | Nama Mahasiswa | NPM |'); Writeln(' MID | FIN | RATA |'); Writeln(Garis); For i:=1 To Jumlah_Data Do Begin Read(File_Nilai,Nilai_Mhs); Gotoxy(1,wherey);Write('| ',i:2,' |'); With Nilai_Mhs Do Begin Gotoxy(8,wherey);Write(Nama); Gotoxy(35,wherey);Write('| ',Npm); Gotoxy(46,wherey);Write('| ',Nilai_Mid:2:1); Gotoxy(54,wherey);Write('| ',Nilai_Fin:2:1); Gotoxy(62,wherey);Write('| ',Nilai_Rata:2:1,' |'); End; Writeln; End; Writeln(Garis); Close(File_Nilai); End.

DAFTAR NILAI UJIAN MAHASISWA

---------------------------- --------------------------------------------------------------------- | No | Nama Mahasiswa | NPM | MID | FIN | RATA | --------------------------------------------------------------------- | 1 | Yudhi Sumanto Akbar | 45689778 | 56.0 | 78.0 | 62.6 | | 2 | Rani Sianturi | 55198543 | 78.0 | 67.0 | 74.7 | | 3 | Verry Van Vasten | 33297888 | 65.0 | 34.0 | 55.7 | | 4 | Wisnu | 88895342 | 77.0 | 48.0 | 68.3 | | 5 | Eliesah | 22196332 | 76.0 | 89.0 | 79.9 | | 6 | Hattahat | 64399542 | 45.0 | 55.0 | 48.0 | | 7 | Aim | 66594656 | 63.0 | 72.0 | 65.7 | | 8 | Yahya Kopet | 44597556 | 76.0 | 54.0 | 69.4 | | 9 | Enik Mugiharto | 22190778 | 56.0 | 33.0 | 49.1 | | 10 | Koen-Koen | 33296456 | 86.0 | 32.0 | 69.8 | | 11 | A-One | 33196432 | 87.0 | 81.0 | 85.2 | | 12 | Djoko | 22187899 | 54.0 | 22.0 | 44.4 | | 13 | Yuliar | 21095342 | 55.0 | 56.0 | 55.3 | | 14 | Sulis | 21395651 | 88.0 | 52.0 | 77.2 | ---------------------------------------------------------------------

FILE (BERKAS) TEXT Selain yang telah dijelaskan di atas, Pascal menyediakan tipe berkas yang lain, yaitu berkas TEXT, berkas ini berisi deretan karakter. Komponen-komponen pada berkas teks membentuk suatu baris dan setiap baris diakhiri tanda akhir baris (end-of-line, carriage return, atau line feed). Setiap akhir file (berkas) diakhir dengan tanda akhir berkas (end-of-file, CTRL-Z). Cara pendeklarasiannya adalah:

TYPE var1 = TEXT;

Page 25: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

49

Atau VAR Var1 : TEXT;

Operasi-operasi yang digunakan dalam file teks sama dengan operasi-operasi sebelumnya, yaitu assign, rewrite, reset, read, eof dan write. Dengan tambahan statemen-statemen di bawah ini:

1. Statemen WRITELN

Digunakan untuk menuliskan satu baris data, setelah selesai, penunjuk akan turun ke baris berikutnya.

WRITELN(variabel_berkas,teks);

Contoh: WRITELN(File_text,’Setelah kalimat ini di tulis, pointer akan menunjuk ke bawah’);

2. Statemen READLN

Digunakan untuk membaca satu baris data, dan penunjuk akan turun ke baris berikutnya.

READLN(variabel_berkas,teks);

Contoh: READLN(File_Text,text_nya); WRITELN(text_nya);

3. Fungsi EOLN

Fungsi ini digunakan untuk mengetes apakah penunjuk ada di akhir suatu baris atau tidak, jika ya maka akan mengembalikan nilai TRUE dan jika tidak akan mengembalikan nilai FALSE.

EOLN(variabel_berkas);

Contoh: Akhir_baris := EOLN(File_Text);

4. Fungsi SEEKEOF

Kegunaannya sama dengan fungsi EOF, tetapi akan melompati blank dan tab sebelum mengetes tanda akhir berkas. Tipe fungsi ini adalah boolean.

Contoh: SEEKEOF(File_Text);

5. Fungsi SEEKEOLN Hampir sama dengan fungsi EOLN, tetapi akan melompati blank dan tab sebelum mengetes tanda akhir baris. Tipe fungsi ini adalah boolean.

Contoh: SEEKEOLN(File_Text);

Contoh: { ************************************** ** PROGRAM MENYIMPAN TEXT KE FILE ** ** DENGAN NAMA FILENYA "MyText.TXT" ** **************************************}

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

50

Uses Crt; Var File_Text : Text; d_text : String; Begin Assign(File_Text,'MyText.txt'); Rewrite(File_Text); Clrscr; Writeln('Ketikan beberapa kalimat bebas, dan Ketik "$"+<ENTER> untuk selesai !'); Writeln('====================================================================='); Repeat Readln(d_text); If d_text[1]<>'$' Then Writeln(File_Text,d_text); Until d_text[1]='$'; Close(File_Text); End. Ketikan beberapa kalimat bebas, dan Ketik "$"+<ENTER> untuk selesai ! ===================================================================== Ini Hanyalah sebuah Kata-kata.......... dan mungkin tak ada maknanya.. Namun tiada salahnya untuk diuraikan.... karena ini hanyalah ungkapan..... $

Contoh: { ************************************** ** PROGRAM MEMBACA TEXT DARI FILE ** ** DENGAN NAMA FILENYA "MyText.TXT" ** **************************************} Uses Crt; Var File_Text : Text; d_text : String; Begin Assign(File_Text,'MyText.txt'); Reset(File_Text); Clrscr; Writeln('Hasil Pembacaan dari File MyText.txt !'); Writeln('======================================='); While Not Eof(File_Text) Do Begin Readln(File_Text,d_Text); Writeln(d_text); End; Close(File_Text); End. Hasil Pembacaan dari File MyText.txt !

Page 26: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

51

======================================= Ini Hanyalah sebuah Kata-kata.......... dan mungkin tak ada maknanya.. Namun tiada salahnya untuk diuraikan.... karena ini hanyalah ungkapan.....

FILE TIDAK BERTIPE Ada satu jenis berkas atau file, yaitu berkas yang tidak bertipe, artinya tipe data pada berkas ini adalah sembarang. Biasanya tipe berkas ini digunakan untuk menyimpan data-data yang tidak terdefinisikan dalam Pascal atau file-file binary, contohnya file suara (WAV, MP3, MOD, MID, WMA, dll), file gambar (BMP, JPEG, JPG, TIFF, RAW, PCX, dll), file enkripsi, file executable, file video (MPEG, MOV, DAT, dll). Cara pendeklarasian berkas tersebut adalah: TYPE var1 = FILE; Atau VAR Var1 : FILE; Operasi-operasi yang digunakan untuk membuka dan menutup file sama dengan tipe berkas yang lainnya. Namun untuk penulisan dan pembacaan harus mengunakan statemen di bawah ini: BLOCKREAD( <variabel berkas>, <buffer panampung>, <jumlah dibaca> , <jumlah yang telah dibaca>); BLOCKWRITE( <variabel berkas>, <buffer panampung>, <jumlah ditulis> , <jumlah yang telah ditulis>); Contoh program (MyCopy.pas) berfungsi untuk mengcopy sebuah file: Program MyCopy; Uses Crt; Var File_Input, File_Output : FILE; Jumlah_Dibaca, Jumlah_DiRekam : Word; Buf : array[1..2048] of Char; Begin Clrscr; Writeln('Program Untuk Mengcopy File....'); Writeln('-------------------------------'); If ParamCount<=1 Then { Jika parameter tidak disebutkan } Begin Writeln('Use: MyCopy <File Input> <File Output>'); Writeln('Program dibatalkan.....!'); Halt(0); { Halt berfungsi untuk menghentikan program dan kembali ke DOS } End; Assign(File_Input, ParamStr(1)); { Membuka File input dan nama file di tentukan dari Parameter Pertama } Reset(File_Input, 1); { Record size = 1 Byte } Assign(File_Output, ParamStr(2)); { Membuka File Output dan nama file di tentukan dari Parameter Kedua } Rewrite(File_Output, 1); { Record size = 1 } Writeln('Mengcopy File ',ParamStr(1),' ke ',ParamStr(2),' => Ukuran File: ', FileSize(File_Input), ' bytes...');

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

52

Repeat BlockRead(File_Input, Buf, SizeOf(Buf), Jumlah_DIbaca); BlockWrite(File_Output, Buf, Jumlah_Dibaca, Jumlah_DiRekam); Until (Jumlah_Dibaca = 0) or (Jumlah_DiRekam <> Jumlah_Dibaca); Close(File_Input); Close(File_Output); End. Setelah program MyCopy.pas di compile, akan menghasilkan MyCopy.exe (Perintah External DOS). Cara penggunaanya adalah menyebutkan nama file yang akan dicopy dan nama file yang akan menjadi duplikatnya. jika tidak menggunakan parameter. A:\>MyCopy Program Untuk Mengcopy File.... ------------------------------- Use: MyCopy <File Input> <File Output> Program dibatalkan.....! Jika menggunakan parameter. A:\>MyCopy writef.exe coba.dat Program Untuk Mengcopy File.... ------------------------------- Mengcopy File writef.exe ke coba.dat => Ukuran File: 7728 bytes...

POINTER DAN STRUKTUR DATA DINAMIK Tipe data sederhana dan tipe data terstruktur yang telah kita ketahui mempunyai beberapa keterbatasan, yaitu bersifat statis. Akibatnya, ukuran dan urutannya sudah pasti. Contohnya pada struktur Array misalnya, elemen satu selalu mendahului elemen berikutnya, serta mempunyai urutan sudah tertentu dan pasti. Sehingga ukuran tersebut tidak dapat melebihi ukuran maksimum seperti yang sudah dideklarasikan. Kelemahan yang lain dari variabel yang sudah dideklarasikan denga tipe data ini adalah ruang memori yang sudah digunakannya tidak dapat dihapus bila variabel tersebut sudah tidak digunakan lagi. Dan Turbo Pascal mempunyai keterbatasan, yaitu ukuran maksimum dari data segment (memori untuk menampung nilai-nilai variabel) adalah sebesar 64 Kb (Kilo bytes). Apabila suatu program membutuhkan ukuran memori yang sangat besar untuk datanya yang melebihi batas 64 Kb, maka kita harus menggunakan variabel dinamik artinya variabel ini dapat dibebaskan kembali dari memori jika sudah tidak digunakan lagi dan hal ini dapat menghemat memori.

VARIABEL POINTER Variabel dinamik tidak dapat dideklarasikan secara eksplisit seperti halnya variabel statik dan tidak dapat secara langsung ditunjukkan oleh suatu pengenal (identifier). Variabel dinamik hanya dapat ditunjukkan oleh variabel khusus yang berisi alamat memori yang digunakan oleh variabel dinamik tersebut. Variabel khusus ini disebut dengan variabel pointer. Variabel pointer dapat dideklarasikan dengan tipe data pointer. Tipe data pointer dideklarasikan dengan menggunakan simbol pointer ( ^ ) simbol ini disebut carat atau circumflex. Contoh: Type TipeString = string[15]; Ptr_String = ^ TipeString; Var Nama : Ptr_String;

Page 27: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

53

Begin Nama^ := ‘Turbo Pacal’; Writeln(Nama^); End. Variabel Nama adalah variabel pointer. Variabel ini tidak berisi dengan data, tetapi berisi alamat letak dari data yang ditunjuk. Variabel Nama adalah variabel pointer dengan tipe Ptr_String sedang Ptr_String adalah suatu tipe data pointer yang menunjukkan letak dari suatu nilai string[15]. Dengan demikian, variabel pointer Nama juga akan menunjukkan alamat dari letak string[15]. Sedang Nama^ menunjukkan isi dari memori yang alamatnya ditunjukkan oleh variabel pointer Nama atau dengan kata lain menunjukkan nilai string[15] tersebut.

VARIABEL DINAMIK Variabel dinamik dapat dibuat dan dialokasikan dengan prosedur standar NEW dan menghapusnya dengan DISPOSE. Contoh:

Uses Crt; Type MyRec = Record Nama : String[30]; Alamat : String[50]; Telp : String[15]; End; Var Data : ^MyRec; Begin Clrscr; New(Data); Write('Nama : ');readln(Data^.Nama); Write('Alamat : ');readln(Data^.Alamat); Write('Telepon : ');readln(Data^.Telp); Writeln; WITH Data^ DO Begin Writeln('Namanya ',Nama); Writeln('Beralamat di ',Alamat); Writeln('Dengan nomor telepon ',Telp); End; Dispose(Data); End.

STRUKTUR DATA DINAMIK (LINK LIST) Link List merupakan suatu urutan item-item data ynag disebut “node”. Masing-masing node mempunyai karakteristik data yang sama walaupun isinya berbeda. Suatu list mengandung “awal” dan “akhir” node, sebagai pangkal dan ujung sebuah list. Pada masing-masing node terdapat petunjuk (pointer) node di depannya atau di belakangnya. Dalam pelaksanaannya petunjuk ini berupa alamat dari node tersebut. Prinsip link list dapat disamakan dengan tali yang mempunyai simpul-simpul pada jarak tertentu. Simpul inilah yang kita asosiasikan dengan node. Pada masing-masing node terdapat dua bagian utama. Bagian pertama merupakan data yang akan diisi ketika program bekerja. Data tersebut berupa variabel, struktur, array atau lainnya sesuai dengan aplikasi yang akan digunakan. Bagian yang lainnya adalah pointer alamat dari node berikutnya atau sebelumnya.

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

54

Berdasarkan elemen-elemen yang dapat di-handle oleh sebuah node, dibagi menjadi 2, yaitu single linked list dan double linked list. Pada single linked list hanya terdapat sebuah pointer alamat yang menunjuk alamat di depannya. Double linked list mempunyai dua pointer (petunjuk alamat), yaitu alamat node di depannya dan node di belakangnya. Dan yang akan kita pelajari nanti adalah single linked list. 1. Menentukan struktur data

PROGRAM SINGLE_LIST; USES CRT; Type Ptr_SList = ^SList; SList = Record Nama : String[30]; Npm : String[8];

Ipk : Real; Next : Ptr_SList; End; Var Head,Tail,Base : Ptr_SList;

Struktur record yang kita tentukan terdiri dari Nama, Npm dan Ipk, sedangkang Next berguna sebagi petunjuk alamat Node Berikutnya. Pembacaan data ini dilakukan secara sequential (berurutan), untuk itu dibutuhkan informasi head (awal) dari list dan tail (akhir) dari list. Karena Head dan tail digunakan untuk semua bagian program, maka kedua variabel tersebut dideklarasikan secara global. Base digunakan untuk menunjukkan node yang aktif.

Procedure UpperCase(Var s:string); { Berguna untuk mengubah karakter } Var ( dalam string menjadi huruf kapital } i:integer; Begin for i:=1 to Length(s) do s[i]:=Upcase(s[i]); End; Procedure InitList; Begin Head:=NIL; { Untuk proses pertama kalinya node dalam memori } Tail:=NIL; { yaitu Head, Tail dan Base kita berikan nilai } Base:=NIL; ( NIL (Kosong, belum ada data) } End;

2. Membuat List Baru

Sebuah list baru dibuat jika belum ada data pada komputer. Hal ini terjadi jika Head masih bernilai NIL (Kosong). Procedure Append(Nama,Npm:String; ipk:Real); Var Baru: Ptr_SList; Begin New(Baru); { Mengalokasikan memori untuk node yang baru } If Baru=NIL Then { jika memori tidak tersedia } Begin Writeln('Error : Memori ndak Cukup...Program dibatalkan..'); halt(1); End;

Node

Nama,Npm,Ipk Next

Page 28: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

55

Baru^.Nama:=Nama; { Mengisi data pada node yang baru } Baru^.Npm:=Npm; Baru^.Ipk:=ipk;

Baru^.Next:=NIL; If Head=Nil Then Begin Head:=Baru; Tail:=Baru; End

Else Begin Tail^.Next:=Baru; Tail:=Baru; End; End; Jika Head sudah ada data, maka untuk menambahkan data baru, kita hanya menggantikan informasi variabel next pada Tail untuk menunjuk ke node baru. Sebelum:

HEAD Node baruTAIL

Sesudah: HEAD TAIL

1. Fungsi-fungsi untuk memindahkan petunjuk data dalam pembacaan node Function GoHead: Ptr_Slist;

Begin Base:=Head; { Fungsi untuk mendapatkan data awal } GoHead:=Head; End; Function GoTail: Ptr_SList; Var Temp:Ptr_SList; Begin Temp:=Head; While(Temp<>NIL) Do { Fungsi untuk mendapatkan data akhir } Temp:=Base^.Next; GoTail:=Temp; End; Function GoNext: Ptr_SList; Begin

Node baruHEAD = TAIL

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

56

Base:=Base^.Next; { Fungsi untuk mendapatkan data berikutnya } GoNext:=Base; End;

2. Menghapus Node dalam list

Untuk menghapus data, “data (node) sebelum node yang akan dihapus” harus ditemukan terlebih dahulu secara sekuensial dari awal list. Jika node berhasil ditemukan, maka node diputus dengan menunjuk ke node setelah node yang akan dihapus. Kita akan bertanya kenapa tidak mencari node yang dihapus saja. Inilah kelemahan single linked list, tidak dapat menunjuk ke belakang dari posisi dia berada, untuk dapat melakukan hal itu maka kita ganti dengan struktur data double linked list namun tidak kita bahas untuk kali ini. Contoh kita mempunyai sebuah list dengan data “a”, “b”, “c”, “d”. kemudian kita ingin menghapus data “c”. dalam pelaksanaanya, program harus menuju “b”, dan memutus hubungan “b” dengan “c”. hubungan yang terputus ini diganti dengan hubungan “b” dengan “d”. Function Delete(npm:string): Boolean;

Var Temp,Prev:Ptr_Slist; Begin Temp:=GoHead; { Pindahkan petunjuk ke awal list } Prev:=Temp; While( Temp <> NIL) do Begin If Temp^.Npm = npm Then { jika sesuai dengan data yang akan dihapus } Begin If Temp=Head Then { Jika data tersebut ada di awal list} Begin Head:=Temp^.Next; { Pindahakn Head ke data berikutnya } Dispose(Temp); End Else Begin Prev^.Next:=Temp^.Next; Dispose(Temp); End; Delete:=True; Exit; End; Prev:=Temp; Temp:=GoNext; End; Delete:=False; End;

Jika kita mempunyai list “a”,”b”,”c”,”d”,”e” dan kita akan menghapus node “c” maka gambaran proses penghapusannya adalah sebagai berikut: Arahkan variabel Temp ke Node C, dan Prev ke node B:

E

HEAD

A B C D

TAILPREV TEMP

Ganti informasi next pada Prev (Node B) ke node yang ditunjuk oleh informasi next pada node C yang berisi alamat node D

Page 29: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

57

E

HEAD

A B C D

TAILPREV TEMP

Prev^.Next:=Temp^.Next;

Kini Node C telah terputus dengan list, kemudian node tersebut kita hapus dari memori komputer. Untuk menghapus data (node) pada awal dan akhir dari list tidak terlalu rumit. Jika data yang di hapus terdapat pada awal list, kita cukup memindahkan pointer Head ke Node berikunya. Dan untuk menghapus akhir list maka node sebelum akhir node, informasi next-nya diberikan nilai NIL, sehingga node tersebut tidak menunjuk ke akhir list lagi, dan node tersebut kita jadikan Tail.

3. Program lengkapnya Procedure RemoveList; { menghapus seluruh data pada list }

Var Temp:Ptr_SList; Begin Temp:=GoHead; While (Temp <> NIL) Do Begin Dispose(Temp); Temp:=GoNext; End; End; procedure Input; var nama,npm:string; ipk:real; pilihan:char; Begin pilihan:='Y'; Repeat Clrscr; Writeln('Input Data :'); Writeln('----------------'); Write('Nama : ');readln(nama); write('Npm : ');readln(npm); write('Ipk : ');readln(ipk); UpperCase(Nama); Append(nama,npm,ipk); writeln; write('Input Data lagi <Y>a / <T>idak : '); readln(Pilihan); Until Pilihan in ['T','t']; End; procedure Cetak; var Temp:Ptr_SList; No:integer;

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

58

Begin Clrscr; No:=1; Writeln(' Cetak Data : '); writeln('---------------------------------'); Temp:=GoHead; While(Temp<>NIL) Do Begin Write(No:3); gotoxy(6,wherey);Write(Temp^.Nama); gotoxy(36,wherey);Write(Temp^.Npm); gotoxy(46,wherey);Write(Temp^.Ipk:4:2);writeln; Temp:=GoNext; inc(No); End; Readln; End; procedure Hapus; var npm:string; Begin clrscr; writeln(' Hapus Data : '); writeln('------------------------------'); write('Ketik Nomor NPM : ');readln(npm); If Delete(npm) Then Writeln('Data sudah di hapus........') else Writeln('Data tidak ditemukan.......'); readln; end; procedure Cari; Var npm:string; pilihan:char; Temp:Ptr_SLIst; Begin Pilihan:='Y'; Repeat clrscr; writeln(' Cari Data'); writeln('----------------------'); write('Ketik Nomor Npm : ');readln(npm); Temp:=GoHead; while (Temp<> NIL) DO Begin If Temp^.Npm = npm Then break; Temp:=GoNext; End; If Temp<> NIL Then Begin Writeln('Nama : ',Temp^.Nama); Writeln('Npm : ',Temp^.Npm); Writeln('Ipk : ',Temp^.ipk:4:2); End else writeln('Data tidak ditemukan.........'); writeln;

Page 30: PEMROGRAMAN PASCAL BAHASA KOMPUTER filed. fungsi-fungsi standar operasi aritmatika ... statemen keluaran write dan writeln ... statemen masukan read dan readln ...

DhrMuiz. 2007. Pemrograman Pascal Created 07 Mei 2007 Updated 14 Desember 2008 E-mail: [email protected], [email protected], [email protected]

59

writeln('Cari data lagi <Y>a / <T>idak : '); readln(Pilihan); Until Pilihan in ['T','t']; End; Var Pilihan:char; Begin InitList; Repeat Repeat Clrscr; Writeln(' MENU PILIHAN'); Writeln('==============================='); Writeln('[1]. Input Data'); writeln('[2]. Cetak Data'); writeln('[3]. Cari Data'); writeln('[4]. Hapus Data'); Writeln('[5]. Exit'); Writeln; Write('Pilihan Anda : ');Readln(pilihan); case Pilihan Of '1' : Input; '2' : Cetak; '3' : Cari; '4' : Hapus; '5' : Begin RemoveList; exit; end; end; if (Pilihan< '1') OR (Pilihan > '5') Then Begin writeln('Pilihan anda tidak sesuai dengan menu di atas....<ENTER>'); readln; End; Until (Pilihan>='1') AND(Pilihan<='5'); Until (Pilihan='5'); End.

Referensi : Ananta Sjartuni, Lebih Lanjut dengan C ,Elex Media Komputindo,1995 Insap Santosa, Ir. M.SE, Dasar-dasar Pemrograman Pascal, Andi Yogyakarta, 1997 Jogiyanto H.M., Turbo Pascal , Andi Offset Yogyakarta, 1994 Sam A. Abolrous, Learn Pascal, Wordware Publishing, Inc, 2000