pemrograman pascal bahasa...

Download PEMROGRAMAN PASCAL BAHASA KOMPUTERimam_muiz.staff.gunadarma.ac.id/Downloads/files/11419/modul+pasca… · OPERASI STRING ... Bahasa pemrograman ini merupakan bahasa komputer yang

If you can't read please download the document

Upload: lykhue

Post on 06-Feb-2018

222 views

Category:

Documents


1 download

TRANSCRIPT

  • 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 Beginners 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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)

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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;

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

  • 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

  • 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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 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 40) Then Hasil := C Else If (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 }

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

  • 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 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

  • 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 nilaimaksimum 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);

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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

  • 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 : ');readln(ordo_x,ordo_y); Writeln('Input Matrik :'); 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 :'); 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 : 3 2 Input Matrik : 6 -2 -1 3 4 9 Input Matrik : 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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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;

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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;

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

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

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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 [a/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 [a/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;

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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 "$"+ 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 "$"+ 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 !

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • 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( , , , ); BLOCKWRITE( , , , ); 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 ParamCountMyCopy Program Untuk Mengcopy File.... ------------------------------- Use: MyCopy Program dibatalkan.....! Jika menggunakan parameter. A:\>MyCopy writef