Untuk Print

download Untuk Print

of 53

Transcript of Untuk Print

BAB I PERKENALANTujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal Program Pascal, Paradigma Pemograman b. Mengenal Pemograman Dalam Fisika c. Mengenal Pemogram Prosedural d. Mengetahui tampilan menu Editor (lembar kerja)pada pascal Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: Sejarah Program Pascal Pascal dalam Fisika Paradigma Pemograman Pemograman Prosedural Tampilan dan Menu Editor

FISIKA DALAM PROGRAM PASCAL Bahasa pemrograman Pascal yang sangat berorientasi pada data dapat digunakan untuk membantu pembelajaran Fisika terutama dalam pemecahan masalah (problem solving). Pada mata kuliah Dasar-Dasar Pemograman Komputer (DDPK) bahasa Pascal dimanfaatkan serupa dengan menyelesaikan soal-soal Fisika Dasar I dan II. Satu hal yang membedakan adalah bila dalam kelas penyelesaian masalah dilakukan di atas kertas, sementara pembelajaran dengan bahasa Pascal dilakukan pada layar komputer. Bekal pemrograman bahasa Pascal adalah kemampuan numerik problem solving berbasis Microsoft Excel yang sudah diberikan di semester pertama pada mata kuliah Pengantar Aplikasi Komputer (Aplikom). Terlihat disini diperlukan kemampuan dari mahasiswa untuk menerjemahkan konsep Fisika Dasar yang akan dibuat pemrogramannya menjadi konsep yang sistematis, runtun dan logis. Kemampuan ini ditransfer sebagai bentuk algoritma sederhana (diagram alir atau flow chart). PARADIGMA PEMOGRAMAN Paradigma pemrograman adalah bagaimana cara pandang kita terhadap penyelesaian masalah pemrograman (atau sudut serang kita dalam enyelesaikan suatu masalah pemrograman). Ada banyak cara untuk menyelesaikan suatu masalah, sehingga ada banyak paradigma yang ada. Beberapa contoh paradigma pemrograman yang ada saat ini adalah: prosedural, fungsional, deklaratif, dan objek. Secara singkat dapat dikatakan bahwa: paradigma prosedural memandang penyelesaian masalah sebagai hasil dari serangkaian langkah yang menyelesaikan sub masalah paradigma fungsional memandang penyelesaian masalah sebagai komposisi fungsi yang memetakan masalah ke jawaban paradigma deklaratif memandang penyelesaian masalah adalah pekerjaan komputer yang dilakukan melalui inferensi terhadap fakta paradigma objek memandang penyelesaian masalah sebagai hasil interaksi dari objek (objek dalam konsep ini merupakan representasi objek di dunia nyata).

SEJARAH PROGRAM PASCAL Program Pascal dirancang oleh Prof. Nicklaus Wirth dari Technical University di Zurich, Switzerland tahun 1971. Nama Pascal berasal dari Blaise Pascal, nama ahli matematika dan philosopi dari Perancis (abad 17). Bahasa pada Pascal merupakan pengembangan dari bahasa Algol 60 dan Algol W (turunan Algol 60). Memiliki beberapa versi, seperti : Turbo Pascal, Ms Pascal (Microsoft), Apple Pascal,UCSD (University of California at San Diego Pascal), dll. Turbo Pascal yang dibuat oleh Borland Inc. adalah versi yang paling banyak digunakan karena menggunakan Compiler untuk menterjemahkannya dan juga mengikuti standard bahasa Pascal yang dibuat oleh Nicklaus Wirth dan K. Jensen. Turbo Pascal merupakan bahasa yang case insensitive yang berarti penulisan dalam huruf kapital maupun huruf kecil tidak dipermasalahkan Pascal merupakan bahasa pemrograman tingkat tinggi (high level language) dan terstruktur (Structured Programming language).

1

2

c. PEMOGRAMAN PROSEDURAL Pemrograman dalam paradigma prosedural dilakukan dengan memberikan serangkaian perintah yang berurutan. Adapun yang menjadi dasar dalam pemograman prosedural adalah sebagai berikut: a. Algoritma Algoritma adalah serangkaian langkah-langkah yang tepat, terperinci, dan terbatas untuk menyelesaikan suatu masalah. Langkah yang tepat artinya serangkaian langkah tersebut selalu benar untuk menyelesaikan masalah yang diberikan. Langkah yang tidak memberikan hasil yang benar untuk domain masalah yang diberikan bukanlah sebuah algoritma. Langkah yang terperinci artinya setiap langkah diberikan secara detail dan dapat dieksekusi oleh komputer, instruksi seperti angkat sedikit ke kiri merupakan contoh instruksi yang tidak tepat, karena sedikit tidak menyatakan sesuatu yang tepat. Langkah yang diberikan harus terbatas, artinya suatu saat langkah harus berhenti, jika langkah tidak pernah berhenti (misalnya: ambil air, masukkan ke bak mandi, ulangi ambil air, dan seterusnya) maka serangkaian langkah itu tidak disebut sebagai algoritma (jika: ambil air, masukkan ke bak mandi, ulangi ambil air sampai bak mandi penuh, maka bisa disebut algoritma, namun langkah ambil air, masukkan ke bak mandi, harus diperinci). b. Konstruktor (elemen) Pemrograman Prosedural Elemen bahasa pemrograman prosedural yang penting adalah: Program utama Tipe Konstanta Variabel Ekspresi, operator, dan operand Struktur Data Instruksi dasar Program Moduler File eksternal Rekurens Konstruktor ini tidak untuk dipelajari secara berurutan, namun semua perlu dipelajari dan dimengerti untuk dapat membuat program dengan baik. 3

Input, Proses, dan Output Sekumpulan aksi dalam pemrograman prosedural bisa dibagi menjadi tiga bagian penting yaitu: input, proses, dan output. Bagian input, proses, dan output dikerjakan secara sekuensial, dan dalam setiap bagian mungkin akan ada input, proses, dan output.

TAMPILAN DAN MENU EDITOR Sebelum mempelajari lebih jauh tentang Pascal, terlebih dahulu perhatikan tampilan pascal yaitu sebagai berikut (gambar 1.1)

Didalam pascal juga terdapat menu menu editor yang memiliki fungsinya masing-masing. Adapun menu-menu editor yang terdapat didalam program Turbo Pascal 7.0 adalah sebagai berikut: MENU EDITOR TURBO PASCAL 7.0 1. File a. New, membuat program baru b. Open, Memanggil program yang disimpan pada disk c. Save, Menyimpan program dengan nama yang sama d. Save As, Menyimpan program dengan nama yang lain e. Save All, menyimpan semua program yang ada dilayar 4

f. Change Dir, mengubah drive aktif untuk penyimpanan dan pemanggilan file. g. Print, untuk mencetak h. Printer Setup, pengaturan printer i. DOS Shell, Masuk ke DOS untuk sementara, untuk kembali lagi ke Turbo Pascal Ketik EXIT kemudian Enter j. Exit, Keluar dari Turbo Pascal

2. Edita. b. c. d. e. f. Undo, mengembalikan yang terhapus terakhir Redo, menghapus kembali yang di Undo Cut, menghapus blok untuk dipindah ke tempat lain Copy, mengcopy blok Paste, menampilkan isi dari cut atau copy blog Show Clipboard, menampilkan isi clipboard

5.

3. Searcha. b. c. d. e. f. g. h. i. j. Find, untuk mencari atau perintah yang tertulis pada program yang sedang dikerjakan Replace, untuk mengganti kata atau perintah yang tertulis pada program yang sedang dikerjakan Search Again, mencari lagi kata atau perintah yang tertulis pada program yang sedang dikerjakan Go to line number, menuju ke baris yang dimaksud Show last compiler error, menunjukkan kesalahan kompilasi yang terakhir Find error, mencari kesalahan Find procedure, mencari procedure yang dimaksud Previous Browserdan Globals, menunjukkan berbagai fingsi dan procedur yang ada di pascal Objects dan Unit, untuk mencari nama objek dan unit Symbol, mencari simbol

pelacakan akan dimulai dari statement pertama dari subrutin tersebut. d. Go to cursor, Pilihan ini digunakan untuk memulai / melanjutkan eksekusi program dimulai dari posisi saat eksekusi dimulai sampai tempat kursor berada. e. Program reset, Pilihan ini digunakan untuk memberitahukan Turbo Pascal bahwa anda selesai dengan pembetulan-pembetulan dan menginisialisasi debugger untuk operasi yang lain. f. Parameter, menjalankan program parameter Compile a. Compile, Perintah ini digunakan untuk mengkompile program (mencari kesalahan) atau bisa juga kita bilang kalau program yang telah dibuat tadi dengan bahasa pascal di terjemahkan kedalam bahasa komputer agar dapat dimengerti komputer tentang perintah yang dibuat. b. Make, Pilihan ini digunakan untuk mengaktifkan perintah make, jika file yang primer telah diberi nama, maka file ini akan dikompilasi, jika tidak maka file yang terakhir yang sedang dimuat di editor akan dikompilasi.. Pilihan ini sangat berguna jika terdapat beberapa program yang secara fisik terpisah tetapi secara logikanya merupakan suatu kesatuan.\ c. Build, Perintah ini mirip dengan perintah make, hanya saja perintah build ini sifatnya bebas,sedangkan perintah make hanya akan mengkompilasi file-file selain file yang digunakan. d. Primary File, Perintah ini digunakan untuk menyatakan bahwa file .PAS akan dikompilasi pada saat make [F9] atau build [Alt + C + B] diaktifkan e. Clear primary file, menghapus file primer f. Information, perintah ini digunakan untuk menampilkan jendela informasi dari program .PAS yang sedang anda gunakan, termasuk ukuran kode sumber [dalam sumber dan baris], ukuran file .EXE atau .TPU dalam byte dan data.

4. Runa. b. Run, untuk menjalankan atau mengekskusi program Step Over, Step over ini memiliki cara kerja yang hampir sama dengan Trace Into, hanya saja jika statement adalah sebuah prosedur atau fungsi, maka keseluruhan subrutin akan dikerjakan sekaligus dan debugger akan berhenti pada statement sesudah pemanggilan ke subrutin c. Trace into, Perintah ini digunakan untuk mengeksekusi baris berikutnya, jika ada pemanggilan ke suatu subrutin, maka 5

6. Debuga. Breakpoints, mengatur suatu baris sebagai breakpoint. Dalam editor breakpoint ditunjukkan dengan highlight text. b. Call stack, pada saat anda melakukan debugging, suatu jendela yang menunjukan daftar pemanggil prosedur dan fungsi akan terlihat. c. Register, menampilkan Informasi CPU. d. Watch, menampilkan jendela watch. e. Output, menmpilkan output program. 6

f. User Screen, Pada umumnya perintah ini digunakan untuk melihat hasil dari program yang telah compile dan kita run. g. Evaluate/ modify, Dengan pilihan ini anda akan dibawa ke suatu jendela dengan 3 kotak yang memungkinkan anda untuk menuliskan sembarang nama perubah / ungkapan, menunjukan nilai perubah / ungkapan saat itu an memungkinkan anda untuk memberikan nilai yang baru untuk sembarang perubah h. Add watch, digunakan untuk menambahkan rinci data, perubah atau ungkapan kedalam jendela watch. i. Add breakpoint, menambah breakpoint.

BAB II ISTILAH DAN STRUKTURAL

Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal Identifier b. Menulis Program Pada Pascal c. Mengenal Unit,Tipe, Flowchart, dan Variabel pada pascal d. Deklarasi pada Program e. Program Utama pada pascal

7. Tools a. Messages, menampilkan jendela pesan kesalahan b. Go to Next, ke baris selanjutnya c. Go to previous, ke bari sebelumnya d. Grep, digunakan untuk menyaring masukan atau menampilkanbaris-baris yang mengandung kriteria tertentu e. Option, untuk mengatur berbagai pilihan compiler, memori size, linker, debugger dan lain-lain f. Window, untuk mengatur tampilan windows g. Help, berisi berbagai bantuan yang disediakan Turbo Pascal

Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: Identifier Penulisan Program Pada Pascal Unit Deklarasi Pengenalan Program Utama Pascal Tipe dan Variabel

8. Option, untuk mengatur berbagai pilihan compiler, memori size,linker, debugger dan lainlain

IDENTIFIER Identifier adalah nama yang diberikan untuk fungsi, prosedur, tipe, variabel , dan untuk program. Semua nama yang disebutkan memiliki batasan tergantung pada kompilator yang digunakan, namun umumnya: Nama tidak boleh diawali dengan angka, 2you adalah identifier yang tidak valid Nama boleh berupa huruf yang digabung dengan angka, tapi tidak boleh diawali angka: its4you adalah nama yang valid Nama yang hanya terdiri dari huruf saja pasti valid (sampai panjang tertentu, tergantung kompilator) Nama biasanya boleh mengandung tanda underscore (garis bawah seperti ini: nama_orang) PENULISAN PROGRAM PADA PASCAL Dalam penulisan program dalam pascal juga memiliki syarat dan ketentuan tertentu agar program yang dituliskan dapat dikenal dan dapat berjalan sesuai yang diharapkan. Adapat syarat penulisan struktur dalam pascal adalah sebagai berikut:

9. Window, untuk mengatur tampilan windows 10. Help, berisi berbagai bantuan yang disediakan Turbo Pascal

7

8

Program harus diawali oleh Begin dan diakhiri End. (End titik) Untuk Program yang bukan inti atau yang akan dipanggil diawali oleh Begin dan diakhiri End; (End titik koma} Variabel harus dideklarasikan terlebih dahulu. Aturan Penulisan Pascal Penulisan bahasa pemrograman Pascal huruf kecil dan besar tidak terpengaruh pada nilai maupun variabel. Contoh Nama akan sama dengan NAMA Setiap akhir perintah harus diakhiri dengan tanda ; (titik koma) kecuali untuk perintah else begin (tidak digunakan titik koma antara else dan begin) Tanda ; (titik koma) tidak ditulis apabila : dalam sub terdapat sub lagi dan tidak melakukan aktivitas blok lagi dibawahnya. Selalu memesan terlebih dahulu variabel yang akan digunakan. Untuk penulisan Variabel dapat dengan huruf atau angka namun tidak diawali oleh angka. Contoh : Nama1 : String; {betul} Nama : String; {salah tidak diizinkan/error} Nama1MHS: String; {betul} Pemisahan nama variabel harus menggunakan tanda hubung _ {strip bawah} Contoh : Nama1_Mahasiswa : String; {betul} Nama1 Mahasiswa : String {Salah tidak diizinkan/error} Nama1Mahasiswa : String; {Betul} Tanda kurung buka { dan kurung tutup } merupakan keterangan atau komentar. Tidak diizinkan menggunakan nama variabel yang sudah ada/ duplikasi variabel. Nama Variabel tidak boleh sama dengan yang sudah ada. Contoh : Nama : String; Duplikasi nama maka Error Nama : Integer; (Salah) Tidak diizinkan menggunakan` nama variabel pada Reserved Word. Contoh : Var Begin : Integer; {Salah karena Reserved Word}

UNIT Suatu unit adalah kumpulan dari konstanta, tipe-tipe data, variable, prosedur dan fungsi-fungsi. Tiap-tiap unit tampak seperti suatu program Pascal yang terpisah. Unit standar sudah merupakan kode mesin (sudah dikompilasi), bukan kode sumber Pascal lagi dan sudah diletakkan di memori pada waktu menggunakan pascal. Untuk menggunakan suatu unit, harus diletakkan suatu anak kalimat Uses diawal blok program, diikuti oleh daftar nama unit yang digunakan. a. Unit System Sebenarnya adalah pustaka dari runtime Turbo Pascal yang mendukung semua proses yang dibutuhkan pada waktu runtime. Unit system berisi semua prosedur dan fungsi standar turbo pascal. Unit system ini akan secara otomatis digunakan didalam program, sehingga boleh tidak disebutkan didalam anak kalimat Uses. b. Unit Crt Digunakan untuk memanipulasi layer teks ( windowing, peletakkan cursor dilayar, color untuk teks, kode extanded keyboard dan lainnya). Unit standar crt hanya dapat digunakan oleh program yang digunakan dikomputer IBM PC, IBM AT, IBM PS/2 atau yang kompatibel dengannya. Untuk lebih jelasnya perhatikan contoh berikut: Contoh: Uses crt ; Begin Clrscr ; Writeln ( WELCOME TO LAB KOMPUTER UNSYIAH ) ; Writeln ( ------- ) ; End . Prosedur standar yang menggunakan unit crt adalah : AssignCrt HighVideo Sound ClrEol InsLine TextBackground ClrScr LowVideo TextColor Delay NormVideo TextMode DelLine NoSound Window GotoXY

FKIP

9

10

Fungsi standar yang menggunakan unit Crt adalah : KeyPressed ReadKey Readln WhereX WhereY c. Unit Printer Merupakan unit yang sangat kecil dirancang untuk penggunaan printer didalam program. Contoh : Uses printer ; Begin Writeln ( Lst, WELCOME TO LAB KOMPUTER FKIP UNSYIAH ); Writeln ( Lst, ------- ) ; End . d. Unit DOS Digunakan bila akan menggunakan prosedur-prosedur dan fungsi-fungsi standar yang berhubungan dengan DOS call, semacam DetTime, SetTime, DiskSize, DiskFree dan lainnya. Contoh : Uses Dos ; Begin Writeln ( DiskFree(0), byte sisa isi disk ) ; End . e. Unit Graph Menyediakan suatu kumpulan rutin grafik yang canggih, sehingga dapat memanfaatkannya untuk keperluan-keperluan pembuatan grafik. contoh : Uses graph ; Var DriveGrafik, ModeGrafik : integer ; I, x, y : integer ; Begin DriveGrafik : = detect ; . . End . 11

DEKLARASI Deklarasi merupakan tempat untuk mendefinisikan objek (deklarasi) yang digunakan dalam membuat suatu program pada pascal. Adapun jenis deklarasi adalah sebagai berikut: a. Uses Perintah uses digunakan untuk mendefinisikan unit yang digunakan dalam membuat program b. Label Label merupakan jenis deklarasi dalam program yang digunakan untuk melompat dari satu statement ke statement yang lain c. Const Const merupakan singkatan dari konstanta yang berarti suatu nilai ketetapan yang tidak berubah PENGENALAN PROGRAM UTAMA DALAM PASCAL Mengenal program utama dalam suatu bahasa akan memberikan gambaran global bagaimana menulis program dalam bahasa tersebut. Program dalam bahasa Pascal memiliki format dasar seperti berikut: Program namaprogram; Begin (bagian program utama); End. Kata-kata yang ditebalkan merupakan kata kunci (keyword) dalam bahasa Pascal. Kata kunci adalah kata-kata baku dalam bahasa Pascal yang memiliki arti khusus, kata-kata tersebut harus kita pakai sesuai dengan makna yang sudah berikan oleh Pascal, dan tidak bisa kita ubah. Bagian pertama berisi nama program. Bagian ini tidak wajib ada di kompilator Pascal yang baru, namun sebaiknya tetap ditulis, kita bisa memberi nama program dengan kata kunci program, misalnya: program dasar; Bagian berikutnya adalah blok program utama yang ditandai dengan begin dan end. Perhatikan contoh program dasar berikut: Program dasar; Begin writeln(Selamat Datang Di LabKomputer FKIP Unsyiah); End. 12

VARIABEL dan TIPE Konsep variabel dalam pemrograman mirip dengan konsep variabel dalam matematika. Variabel adalah suatu nama yang dapat diasosiasikan dengan sebuah nilai yang dapat kita manipulasi. Seperti dalam matematika, kita mengenal tipe untuk suatu variabel , misalnya 1 = x < 5 | x ? R yang artinya x adalah suatu variabel bertipe real (domain x adalah bilangan real), dengan range (jangkauan) 1 sampai 5. Perhatikan contoh struktur program berikut! Program namaprogram; var nama_variabel : tipevariabel; nama_variabel2 : tipevariabel2; begin (*bagian program utama*) end. a. Assignment Assignment adalah pemberian nilai kepada variabel. Assignment memberikan nilai pada ruas kiri sesuai dengan hasil nilai di ruas kanan. Misalnya jika a adalah sebuah variabel yang tipenya bilangan bulat: var a: integer; begin a:= 2; end. Maka hasil akhir akan memberikan nilai 2 pada variabel a. Untuk melihat nilai a, kita bisa mengoutputkan nilai tersebut dengan instruksi writeln, seperti ini: writeln(a); b. Representasi Tipe Komputer hanya bisa memproses angka, sehingga semua tipe data dalam komputer akan diproses dalam bentuk bilangan integer. Bahkan kata-kata yang muncul dalam komputer juga diproses sebagai bilangan. Untuk masing-masing tipe yang dibahas di sini, akan diberikan juga representasi di dalam komputer untuk masing-masing tipe untuk mengetahui batasan dari setiap tipe. Pemahaman representasi tipe ini penting untuk mengetahui mengapa suatu tipe terbatas, mengapa hasil suatu operasi seperti yang 13

dijelaskan. Sebenarnya representasi tipe ini menjadi bahasan dalam kuliah atau pelajaran arsitektur komputer, namun karena tidak ada buku lain yang digunakan yang memuat hal tersebut, pembahasan representasi akan digabung dalam penjelasan tipe. Perlu ditekankan bahwa pengetahuan mengenai representasi tipe tidak terlalu penting dalam pemrograman, yang penting adalah hanya mengetahui batasan dari setiap tipe yang ada, sehingga dapat memilih tipe yang tepat ketika membuat program. c. Konstanta Konstanta adalah suatu nilai yang tidak berubah. Contohnya pi (p), adalah konstanta yang digunakan sebagai perbandingan keliling lingkaran terhadap diameternya, dan e adalah konstanta bilangan euler. Dalam Pascal dan dalam semua bahasa prosedural lain sebuah nama boleh diberi nilai yang tidak akan diubah di dalam program, nama ini disebut sebagai konstanta. Kata kunci yang dipakai dalam Pascal adalah const. Const PI=3.14

TIPE DATA Dalam pascal terdapat dua macam tipe data, yaitu tipe data sederhana dan tipe daa struktur. 1. Tipe Data Sederhana Merupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan bulat), real (bilangan pecahan), char (alphanumerik dan tanda baca), dan boolean (logika). Untuk data integer dan real masingmasing terbagi menjadi beberapa kategori a. Bilangan Integer Merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat dalam tabel 1. tabel 1 menunjukkan jenis data, ukuran dalam memori dan rentang nilainya.

14

tabel 1. Tipe Data Bilangan Integer Tipe Data Byte Shortint integer Word Longint Ukuran Tempat 1 byte 1 byte 2 bytes 2 bytes 4 bytes Rentang Nilai 0 s/d +255 -28 s/d +127 -32768 s/d 32767 0 s/d 65535 2147483648 s/d 2147483647

diingat bahwa dalam menuliskannya harus dengan memakai tanda kutip tunggal. Jenis data ini memerlukan alokasi memori sebesar 1(satu) byte untuk masing-masing data. d. Tipe Data Boolean Merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE (benar) atau FALSE (salah). Turbo Pascal for Windows memiliki tiga macam jenis ini yaitu: Boolean, WordBool, dan LongBool. Tipe boolean memakai memori paling kecil, sedangkan WordBool dan LongBool dipakai untuk menulis program yang sesuai dengan lingkungan Windows.

Contoh bilangan integer adalah: 34 6458 -90 0 1112 Penggolongan tipe data integer tersebut dimaksudkan untuk membatasi alokasi memori yang dibutuhkan misalkan untuk suatu perhitungan dari suatu variabel bilangan diperkirakan nilai maksimumnya 32767 kita cukup mendeklarasikan variabel bilangan sebagai integer (2 byte), daripada sebagai longint(4 byte). Di dalam kompilernya, Pascal menyediakan konstanta untuk bilangan Integer yaitu: MaxInt and MaxLongInt, pemrogram bisa menggunakannya di dalam programnya tanpa harus terlebih dahulu mendefinisikannya. MaxInt bernilai 32.767 sedangkan -MaxLongint bernilai 2.147.483.647. b. Bilangan Real Bilangan real atau nyata merupakan jenis bilangan pecahan, dapat dituliskan secara biasa atau model scientific . Contoh bilangan real: 34.265 -3.55 0.0 35.997E+11, dimana E merupakan simbol perpangkatan 10. Jadi 452.13 mempunyai nilai sama dengan 4.5213e2. Penggolongan tipe data bilangan real dapat dilihat pada tabel 2. tabel 2. Bilangan Real Ukuran Tempat 6 bytes 4 bytes 8 bytes 10 bytes 8 bytes Rentang Nilai 2.9 x 10-39 s/d 1.7 x1038 1.5 x 1045 s/d 3.4 x 1038 5.0 x 10-324 s/d 1.7 x 10308 3.4 x 10-4932 s/d 1.1 x 104932 -9.2x 1018 s/d 9.2x 1018

2.

Tipe Data Terstruktur Dalam tipe data terstruktur, terbagi atas beberapa kategori yaitu sebagai berikut: a. Array b. Record c. File d. Set

Dimana penjelasan setiap kategorinya akan dibahas dalam bab berikutnya

FLOW CHARTFlowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung. Dengan menggunakan flowchart akan memudahkan kita untuk melakukan pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Di samping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek. Flow chart atau disebut juga sebagai diagram alir, dimana diagram ini berfungsi menggambarkan skema dari sebuah program yang akan dibuat, dengan kata lain flowchart berfungsi untuk mempermudah dalam pembuatan suatu program dan membaca program secara sepintas. Adapun gambar yang digunakan dalam flowchart adalah sebagai berikut:

Tipe Data real single double extended comp c.

Char Tipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 266 macam yang terdapat dalam tabel ASCII (American Standard Code for Information Interchange). Contoh: 'a' 'B' '+', dsb. Yang perlu 15

16

Ada dua macam flowchart yang menggambarkan proses dengan komputer, yaitu: a. Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan prosedur dan proses suatu file dalam suatu media menjadi file di dalam media lain, dalam suatu sistem pengolahan data. Beberapa contoh Flowchart sistem:

Input Proses Output

Input (Bahan Mentah)

Proses

OutPut (Bahan Jadi)

Dokumen Untuk pengolahan data dengan komputer, urutan dasar pemecahan suatu masalah: START, berisi pernyataan untuk persiapan peralatan yang diperlukan sebelum menangani pemecahan persoalan. READ, berisi pernyataan kegiatan untuk membaca data dari suatu peralatan input. PROSES, berisi kegiatan yang berkaitan dengan pemecahan persoalan sesuai dengan data yang dibaca. WRITE, berisi pernyataan untuk merekam hasil kegiatan ke peralatan output. END, mengakhiri kegiatan pengolahan. Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart, namun ada beberapa anjuran: Hindari pengulangan proses yang tidak perlu dan logika yang berbelit sehingga jalannya proses menjadi singkat. Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk memperjelas. Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END. Berikut merupakan beberapa contoh simbol flowchart b. Flowchart program yaitu bagan dengan simbol-simbol tertentuyang menggambarkan urutan proses dan hubungan antar proses secara mendetail di dalam suatu program. Stored Data

Pengurutan Offline

Kegiatan Manual

Hard Disk

Kaidah-Kaidah Umum Pembuatan Flowchart Program Dalam pembuatan flowchart Program tidak ada rumus atau patokan yang bersifat mutlak. Karena flowchart merupakan gambaran hasil pemikiran dalam menganalisis suatu masalah dengan komputer. Sehingga flowchart yang dihasilkan dapat bervariasi antara satu pemrogram dengan yang lainnya. Namun secara garis besar setiap pengolahan selalu terdiri atas 3 bagian utama, yaitu: 17 18 Proses

Document

Preparation

BAB III PROGRAM TAMPILAN

Loop Conector

Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Membuat Program untuk Menampilkan data b. Mendefinisikan variabel kedalam program dan menggunakan variabel yang tepat dalam pendefinisiannya

Line Conector Adapun materi dalam bab ini adalah sebagai berikut: Menampilkan Data Penggunaan Variabel

Off-page Reference

Predefined process

MENAMPILKAN TULISAN Ketika suatu tulisan yang dibuat dalam program pascal hendak ditampilkan pada saat program dijalankan yang merupakan output dari program yang telah dibuat maka dapat dilakukan dengan memenuhi sintaks berikut: Uses crt; Begin Clrscr; --------------------------; --------------------------; Readln; End. Sebagai contoh: Program Contoh1; Uses crt; Begin Clrscr; Write(Nama Saya Rachmad Almi Putra); Readln; End.

Control transfer

Terminator

19

20

PENGGUNAAN VARIABEL Dalam membuat program tampilan dengan menggunakan variabel dapat digunakan sintaks berikut: Program namaprogram; Uses crt; Var ------- ; -----------{jenis variabel}; Begin Clrscr; --------------------------------; --------------------------------; Readln; End. Sebagai contoh; Program contoh2; Uses crt; Var a,b : string; Begin Clrscr; Write(Nama Saya:); readln(a); Write(Jenis Kelamin); readln(b); Writeln(a); Writeln(b); Readln; End. Dari dua contoh diatas (contoh 1 dan contoh 2) apakah perbedaan keduanya? Untuk lebih paham mengenai bab ini kerjakan latihan berikut: Latihan 1. Buatlah Data yang menampilkan informasi beriku: Nama : Nama Anda JK : JK anda Alamat : Alamat Anda Hobi : Hobi Anda Makes : Makes Anda Mikes : Mikes Anda Kebiasaan : Kebiasaan Anda 21 22 2. Buatlah Program dengan tampilan sebagai berikut: ===================================== JADWAL KULIAH ===================================== SENIN SELASA RABU ===================================== KAMIS JUM`AT SABTU ===================================== ****************************************** =====================================

3. berikut:

Buatlah program dengan tampilan sebagai

__________ __ /____|______\____ |===@=======@==|

brumm....brum.....brumm....brum...

4.

Buatlah program dengan menghasilkan tampilan berikut dan berkedip: ===================== ***FORM REGISTRASI*** ===================== 1. Nama : Nama Anda 2. NIM : NIM Anda 3. TTGL : TTGL Anda 4. Alamat:Alamat Anda ====================

BAB IV MENGHITUNG DENGAN PASCAL

Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal dan Menggunakan Konstanta dan Variabel pada Pascal b. Mengenal dan Membuat Program Input dan Output c. Menyelesaikan Kasus Aritmatika d. Menerapkan dalam menyelesaikan soal fisika

Contoh; Program Contoh3; {Kepala Program} Uses crt; {Unit } Const pi=3.14; {Konstanta} Var L,R : Real; {Deklarasi Variabel dan jenis variabel yang dgunakan} Begin Clrscr; {Bagian Program Yang diproses} R:=7; L:=pi*R*R; {Nilai Yang diproses} Writeln (L:2:2); {Hasil yang ditampilkan Readln; End. {Penutup Program} INPUT dan OUTPUT Dalam membuat program yang dapat diinputkan nilai dari suatu variabel ketika program sedang dijalankan dimana nilai yang dinputkan tersebut diproses seperti yang diintruksikan sehingga program menampilkan output yang diharapkan. Sebagai contoh nilai a diInput angka 10 nilai b diInput angka 5 yang diproses nilai c = a+b Maka nilai c sebagai output yang ditampilkan adalah 15 Untuk lebih jelasnya kerjakan contoh program sebagai berikut: Contoh 4: Program contoh4; Uses crt; Var a,b,c : integer; Begin Clrscr; Write(a:); readln (a); {dimana nilai a dan b merupakan nilai yg diinput} Write(b:); readln (b); C:=a+b; {nilai C merupakan nilai yang diproses} Write(c); Readln; End. Contoh 5: Program contoh5; Uses crt; Var a,b : Integer; C :real; 24

Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: Penggunaan Konstanta Penggunaan Variabel Input dan Output Penerapan dalam penyelesaikan kasus aritmatika Penerapan dalam penyelesaian soal fisika PENGGUNAAN KONSTANTA dan VARIABEL Seperti pada pembahasan pada bab sebelumnya bahwa Konstanta adalah suatu nilai yang tidak berubah. Contohnya pi (p), adalah konstanta yang digunakan sebagai perbandingan keliling lingkaran terhadap diameternya. Penggunaan konstanta dalam pascal ditulis dalam kata kunci const, sedangkan Variabel merupakan suatu nama yang dapat diasosiasikan dengan sebuah nilai yang dapat kita manipulasi, adapun kata kuncinya dalam pascal adalah Var. untuk lebih jelasnya perhatikan sintaks dan contoh berikut: Sintaks Program _______; Uses crt; Const Var ______ : jenis Var; Begin ____________________; _____________________; End.

23

Begin Clrscr; Write(nilai a:); readln(a); Write(nilai b:); readln(b); C:=a/b; Write(c:2:0); Readln; End. PENYELESAIAN ARITMATIKA DAN HITUNGAN DALAM FISIKA Setelah mempelajari pembahasan sebelumnya dan juga pemahan dari contoh yang telah diberikan kerjakanlah latihan latihan yang dapat memproses nilai berikut: Latihan 1 1. Y= 2 x +5 2. 3. 4. 5. 6. 7. 8. 9. 10. K=2r2 Z= r cos X Y= 2 a (x-2) Note: Penulisan Pangkat 2 SQR(variabel); Penulisan Akar Pangkat 2 SQRT(variabel)

Latihan 2 Buatlah Program yang dapat menyelesaikan soal berikut:

1. Benda bermassa 5 Kg yang mula mula diam dipercepat oleh suatu 2.gaya tetap 10 newton. Setelah menempuh jarak 9 m. kelajuan benda tersebut adalah.... Massa 2 kg digantung pada pegas yang memiliki ketetapan gaya 1000 N/m. hingga mencapai keadaan diam seimbang. Usaha yang diperlukan untuk mengubah simpangan benda (dari posisi seimbangnya) dari 2 cm menjadi 8 cm adalah...... Sebatang lilin setinggi 5 cm ditempatkan didepan cermin cekung sejauh 20 cm. jika jarak fokus adalah 15 cm, maka ukuran bayangan lilin itu dalam cm adalah.... Sebuah pengungkit dengan panjang 3 m digunakan untuk mengangkat batu yang beratnya 2000 N. Jika lengan kuasa 2,5 N. Berapakah Gaya yang diperlukan untuk mengangkat batu... Frekuensi sebuah gelombang adalah 400 Hz dan panjang gelombangnya 25 cm, maka cepat rambat gelombang tersebut adalah....

3. 4. 5.

25

26

BAB V INTERASI Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal dan menggunakan program perulangan FOR,WHILE,REPEAT b. Membuat program perulangan

Pada bentuk FOR diatas: a. Variabel, nilai awal dan nilai akhir haruslah bertipe sama b. Tipe yang digunakan pada ketiga komponen tersebut haruslah berupa ordinal c. Nilai awal haruslah lebih kecil atau sama dengan nilai akhir. Adapun bentuk FOR adalah sebagai berikut: a. FOR TO DO FOR TO DO biasanya digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui sebelumnya, dimana FOR TO DO berfungsi sebagai menaikkan satu nilai ordinalnya. Adapun sintaks untuk for to do adalah sebagai berikut: Sintaks FOR : = n1 To n2 Do Begin ------End; End. Contoh 1: Program Interasi1; Uses crt; Var I,S: Integer; Begin Clrscr; FOR I : = 1 To 10 Do Begin S : = I * I; Write (I, s p a s i , S); End; Readln; End. Hasil yang akan keluar adalah 1 1 2 4 3 9 ... ... 10 100 Setelah i bernilai 10 program akan melewati end; dan berhenti 28

Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: FOR TO DO dan FOR DOWN TO REPEAT UNTIL WHILE DO Interasi adalah proses pengulangan hingga kondisi syarat yang ditentukan tercapai. Dalam bab ini akan dibahas tiga jenis interasi yaitu: a. For b. Repeat Until c. While Do

FORFOR biasanya digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui sebelumnya. Adapun diagram alir untuk FOR adalah sebagai berikut:Variabel=n.awal

Variabel akhir

Ya Akhir dari FOR

Tida k

Pernyataan

Variabel:=Variabel+1

27

b. FOR DOWNTO DO Pada FOR DOWN TO merupakan kebalikan dari FOR TO DO dalam proses pembacaan nilai. Atau FOR DOWN TO sering disebut program mundur dari FOR TO DO. Sintaks program ini sama dengan FOR TO DO hanya sedikit perbedaan dalam peletakan nilai. Untuk lebih jelasnya perhatikan sintaks berikut:

Sintaks FOR : = n2 To n1 Begin ------End; End. Contoh 2: Program Interasi2; Uses crt; Var I,S: Integer; Begin Clrscr; FOR I : = 10 DownTo 1 Do Begin S : = I * I; Write (I, s p a s i , S); End; Readln; End. Hasil yang akan keluar adalah 10 100 9 81 8 64 ... ... 1 1 Setelah i bernilai 1 program akan melewati end; dan berhenti. Do

Contoh 3: program interasi3; uses crt; var a,b:integer; begin clrscr; writeln('========================='); writeln(' X X^2 '); WRITELN('========================='); FOR A:=1 TO 10 DO BEGIN B:=A*A; WRITELN(A:6,B:13); END; WRITELN('========================='); READLN; END. Contoh 4: program interasi4; uses crt; var a,b:integer; begin clrscr; writeln('ANGKA GANJIL DARI 20 SAMPAI 1'); FOR A:=10 DOWNTO 1 DO BEGIN B:=2*A-1; WRITELN(B:6); END; READLN; END. Contoh 5: program interasi5; uses crt; var xc, x, mt, m, mx : real; i, n : integer; begin write('jumlah partikel = '); read(n); mt:=0; mx:=0; for i:= 1 to n do

29

30

begin writeln; write('massa partikel ke-',i, ' = '); read(m); write('jarak thd titik origin = '); read(x); mt:= mt + m; mx:= mx + (m*x); end; xc:=mx/mt; writeln; write('pusat massa = ',xc:4:2); readln; end. c. FOR Bersarang (majemuk) Pada kasus tertentu suatu program dapat berulang didalam program yang lain, atau terdapat FOR dalam FOR yang lain, seperti halnya menggambar pola sebagai berikut: * ** *** **** ***** ****** ******* ******** Script program untuk membuat pola diatas adalah sebagai berikut: Contoh 6: Program bintang; Uses crt; Const Akhir=8; Var baris,kolom:integer; Begin Clrscr; FOR Baris := 1 TO Akhir DO Begin FOR kolom:= 1 TO Baris DO Write(*); Writeln; Readln; End. 31

Perhatikan contoh lain dari FOR bersarang sebagai berikut: Contoh 7: Program Menyusun_Kali_Matrik; Uses crt; Var i,j,n:integer; Begin clrscr; Write('Masukkan Jumlah Perkalian: ');Readln(n); Write('*':5); For i:= 1 to n do Write(i:5); Writeln; For i:= 1 to n do Begin Write(i:5); For j:= 1 to n do write(i*j:5); Writeln; End; readln; End. d. FOR Tanpa diikuti Pernyataan Kondisi for dapat juga dijalankan tanpa diikuti dengan pernyataan, sebagai contoh: FOR I:= 1 TO 10 DO; WRITELN(Rachmad Almi Putra); Pada contoh diatas setelah DO terdapat titik koma, hal ini menandakan bahwa kondisi FOR tidak diikuti dengan pernyataan, dimana perintah WRITELN hanya dikerjakan sekali dibagian akhir dari proses.

REPEAT UNTILRepeat Until sering digunakan untuk menangani pengulangan yang jumlahnya belum pasti salah satu program pengulangan dimana sintaknya tidak jauh berbeda dengan For To Do dan For Down To, untuk lebih jelasnya perhatikan sintaks dan diagram alirnya beserta contoh sebagai berikut: 32

Sintaks Uses crt; Var Begin ___________________________ ___________________________ Repeat ___________________________ ___________________________ Until ___________________________ End. Diagram Alir

PERNYATAAN

Contoh 9: PROGRAM contoh7; USES CRT; VAR f,r,k: REAL; c: INTEGER; BEGIN CLRSCR; WRITELN('tabel konversi suhu'); WRITELN('======================================='); WRITELN(' C F R K '); WRITELN('======================================='); c:=10; repeat F:=(9/5*C+32); R:=(4/5*c); K:=273+C; C:=C+10; writeln(C:10, F:10:0, R:10:0,K:10:0); until C=100; writeln('======================================='); readln; end. WHILE DO

FALSE

KONDISI

TRUE AKHIR REPEAT UNTIL

Contoh 8: Program interasi6; USES CRT; Var I : Integer ; Begin CLRSCR; I := 0 ; Repeat I := I + 1 ; Writeln (I) ; Until I = 20; READLN; End. 33

Pernyataan WHILE biasa dipakai untuk melakukan pengulangan yang jumlahnya tidak diketahui didepan atau selang pencacahan tidak sebesar 1 atau -1. Sintaks dan diagram alir untuk While Do sebagai berikut: Sintaks Program__; Uses crt; Var; Begin _____________________; _____________________; While do Begin ______________________; ______________________; End; End. 34

Diagram Alir

WHILE

FALSEKondisi

TRUE

Pernyataan

AKHIR WHILE

Untuk lebih jelasnya perhatikan dan kerjakan contoh berikut: Contoh 10: Program contoh8; USES CRT; Var I : Integer ; Begin CLRSCR; I := 0 ; While I < 21 Do Begin Writeln (I) ; I := I + 1 ; End ; READLN; End.

Contoh 11: PROGRAM contoh9; USES CRT; VAR A,B,C,D: INTEGER; BEGIN CLRSCR; WRITELN('=================='); {pernyataan} WRITELN(' A B C D '); {pernyataan} WRITELN('=================='); {pernyataan} c:=1; while C 60 Then Ket := 'Lulus' ; Writeln ('Keterangannya :' , Ket ) ; READLN; End. IF THEN ELSE IF THEN ELSE merupakan suatu pernyataan kondisi yang lebih dari satu atau kondisi logika bercabang (majemuk), untuk lebih jelasnya perhatikan sintaks Dan Diagram alir (flowchart) dan contohnya sebagai berikut:

Note: Ekspresi Boolean adalah suatu ekspresi yang nilainya TRUE (Benar) atau FALSE (Salah).

37

38

Sintaks: IF THEN Begin ---------END ELSE BEGIN ---------END; Flow ChartkondisiFALSE

Contoh 3: Program contoh3; uses crt; var Fu, Fs: real; begin Clrscr; Textcolor(15+blink); write('gaya ke arah utara = '); readln(Fu); write('gaya ke arah selatan = '); readln(Fs); if Fu > Fs thenwrite('resultan gaya ke arah U = ',abs(Fu-Fs):4:2,' N')

elsewrite('resultan gaya ke arah S= ',abs(Fu-Fs):4:2,' N');

readln; end.TRUE Pernyataan 1 Pernyataan 2

Contoh 4: Program contoh4; Uses crt; Var i,n,x:integer; Begin CLRSCR; Writeln('Program Faktorial'); Writeln('================='); Writeln; Write('Masukkan Nilai Faktorial: ');Readln(n); Writeln; if (n 60 Then Ket := 'Lulus' Else Ket := 'Gagal' ; Writeln ('Keterangannya : ', Ket ) ; READLN; End.

39

40

IF BERSARANG (NESTED IF) Nested IF (IF bersarang) merupakan suatu kondisi IF yang terdapat dalam IF yang lain dalam satu Blok, untuk lebih jelasnya perhatikan contoh berikut: Contoh 5: Program Contoh5; Uses crt; Var total pembelian: LongInt; Begin Clrscr; Write(Total Pembelian=); readln(totalpembelian); IF totalpembelian>100000 then Writeln(diskon sebesar 10%) Else IF totalpembelian>50000 then Writeln(Bonus 1 piring) Else IF totalpembelian>10000 then Writeln(Bonus 1 gelas) Else Writeln(Tidak ada Bonus); Readln; End. i. Pemakaian AND dan OR Sebuah operator relasi terkadang tidak cukup untuk memeriksa suatu kondisi-kondisi yang ada, dalam kasus ini operator AND dan OR sangatlah berguna, untuk lebih jelasnya perhatikan contoh penggunaan AND dan OR sebagai berikut: Contoh 6:Program contoh6; Uses crt; Var pil:integer; Begin Clrscr;Writeln(Ketik Pilihan dan akhiri dengan tanda enter);

Writeln( pilihan salah); End.

CASE OF Case Of merupakan salah satu pernyataan kondisi dimana pernyataan lebih sering digunakan untuk menjalankan beberapa program yang telah digabung/ dipadukan menjadi satu program. Untuk lebih jelasnya perhatikan sintaksnya dan flowchartnya dan kerjakan contoh beserta latihannya sebagai berikut: Sintaks CASE OF n1 : Begin ------End; n2 : Begin ------End; n3 : Begin ------End; End; Flowchartya Nilai_1 Pernyataan 1

ya Nilai_2 Pernyataan 2

ya Nilai_m Pernyataan m

Write(pilihan(1..4) :); readln(pil); If (pil >=1) and (pil 200 then Insentif:=(Data.Jamkerja-200)*10000 else Insentif:=0; Gaber:=Gapok+Insentif; Clrscr; Writeln('Laporan Gaji Pegawai'); Writeln('PEGAWAI LABKOM UPT.FKIP UNSYIAH '); Writeln (created by Rachmad Almi); Writeln; Writeln('========================================================='); Writeln('|NIP | Nama| Golongan | Jam Kerja | Gaji |'); Writeln('======================================================='); Writeln('|',Data.NIP:10,'|',Data.Nama:25,'|',Data.Golongan:10,'|',Data.Jamkerja:11:0,'|',Gaber:14: 2,'|'); Writeln('==================================================='); Writeln; Write('Mau Ulang Lagi? [Y/T]: ');Readln(Ul); Until Upcase(Ul)'Y'; End.

Latihan Untuk lebih paham mengenai bab ini kerjakan latihan berikut: 1. Dengan menggunakan fungsi IF atau IF ELSE buatlah suatu program yang menjelaskan kondisi sebagai berikut: Nilai A >=87 Nilai C+>=70 Nilai B+>=80 Nilai C >=65 Nilai B >=76 Nilai E 60 2. Dengan menggunakan Fungsi Case OF buatlah program sebagai berikut: A :TVRI B:RCTI C:SCTV D:INDOSIAR 3. Buatlah suatu program yang dapat digunakan untuk menghitung kasus sebagai berikut: a. Menghitung Gaya d. Energi b. Kecepatan e. Kalor c. Usaha 4. Buatlah suatu program yang meminta anda memasukkan bilangan genap atau ganjil pada keyboard kemudian program tersebut mengomentari bilangan tersebut genap atau ganjil

43

44

BAB VII SUB PROGRAM (PROCEDURE,FUNGSI,REKURSI)

Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal dan memahami Fungsi,Prosedure, dan Rekursi b. Membuat Suatu program dengan yang menggunakan Fungsi,Prosedure, dan Rekursi

Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: Fungsi Prosedur Rekursi Fungsi dan prosedur keduanya adalah bagian dari sub program, apabila dalam suatu program terdapat beberapa kali pemanggilan maka fungsi dan prosedur dapat digunakan gunakan sebagai penghematan kode program yang dipanggil berulang. Perbedaan Prosedur dengan fungsi adalah Prosedur hanya bisa menjalankan perintah dan tidak mengembalikan nilai, sedangkan fungsi bisa mengembalikan nilai untuk di tampilkan dilayar atau diolah lagi. Bila kita punya fungsi yang bernama CekSaldo, maka CekSaldo bisa berfungsi seperti variabel.

Contoh 1: Program Fungsi1; Uses crt; Function Tambah (a,b : real) : real; Begin Clrscr; Tambah:= a+b; End; Begin Clrscr; Writeln(tambah(10,30)); Readln; End. Contoh 2: Program _Fungsi; var hasil: integer; Function Itung(a, b : integer) : integer; begin itung:=a+b; end; Begin hasil:=itung(7, 9); writeln('Hasil 7 + 9 sama dengan ', hasil); End. Contoh 3:program Fungsi_3; uses crt; function luassegitiga(alas: integer; tinggi:integer) : real; var luas:real; begin luas:= alas*tinggi/2; luassegitiga:= luas; end; var a,t:integer; luas : real; beginwriteln('-======Program Fungsi Luas segitiga======-'); writeln; write('masukkan nilai alas : '); readln(a); write('masukkan nilai tinggi : '); readln(t);

FUNGSISuatu fungsi pada umumnya mempunyai argumen atau paramater. Yang ditulis dalam tanda kurung, namun ada juga fungsi yang tidak memiliki parameter yang sudah menjadi suatu ketetapan seperti halnya nilai pi. Sintaks untuk fungsi adalah sebagai berikut: Begin ______________________; Function nama_fungsi(daftar_parameter_tipe): tipe; _______________________; {bagian deklarasi} _______________________; {bagian _pernyataan} Readln; End.

write('luas segitiga adalah : ', luassegitiga(a,t):0:2); readln; end.

45

46

Contoh 4: Program Function4; Uses crt; Function angka : integer; Begin Angka:=10; End; Var a : Integer; begin clrscr; a:=angka; write(a); readln; end. PROCEDURE Procedure merupakan sub-program yang memiliki bagian deklarasi dan begin-end; tersendiri seperti suatu program pada pascal. Tujuan dari fungsi "procedure" adalah untuk memecah program menjadi suatu kesatuan logika yang lebih kecil (sub-sub program) untuk menghindari perulangan pengetikan dan memudahkan pembacaan. Prosedur memiliki struktur yang sama dengan struktur program, yaitu terdiri dari nama prosedur, deklarasi-deklarasi dan bagian deskripsi (statement atau aksi di dalam prosedur). Semua deklarasi di dalam prosedur bersifat lokal sehingga hanya bias digunakan oleh prosedur itu saja, sedangkan deklarasi di dalam program utama bersifat global sehingga dapat dikenali di seluruh bagian program. Didalam pascal dikenal dua macam prosedure yaitu non parameter dan parameter. Struktur umum prosedur adalah sebagai berikut : Procedure Nama_Prosedur (param1:tipe_param1,param2:tipe_param2,...); var {bagian deklarasi variabel prosedur, sifatnya lokal} begin statement-1; statement-2; ... Statement-n; end; 47

Struktur blok program utama beserta prosedur, adalah sebagai berikut : Program Judul_Program; Uses Crt; Var {bagian deklarasi variabel program utama, sifatnya global} Procedure Nama_Prosedur (param_:tipe_param1,param_:tipe_param2,...); Var {bagian deklarasi variabel prosedur, sifatnya lokal} begin statement-1; statement-2; ... Statement-n; end; {*** Program Utama ***} Begin Nama_Prosedur; End. Untuk lebih jelasnya perhatikan contoh berikut: Contoh 5: Program Procedure5; Uses Crt; Procedure Tampil; Begin Writeln(Hallo Pascal); End; Begin Clrscr; Tampil; badan program Readkey; End.

Bagian Procedure

48

a.

Procedure non Parameter Prosedure non parameter maksudnya adalah tidak ada pengiriman parameter atau variabel tertentu ke program utama. Cara mendefinisikan procedure non parameter adalah sebagai berikut: Procedure NamaProcedure; Begin {statement}; {statement}; End. Perhatikan contoh berikut: Contoh 6Program Contoh6; Uses crt; Procedure tampil_menu; {nama procedure} Begin Textcolor(12); Gotoxy(15,10); writeln (1. Rachmad Almi Putra); Gotoxy(15,11); writeln (2. Syamsul Rizal, S.Pd); Gotoxy(15.12); writeln (3. Ratna Yuliani); Gotoxy(15,12); writeln (4. Fajriani); End; Begin Clrscr; Textcolor(14);Gotoxy(15,6); writeln (WELCOME di LabKom FKIP);

Write(panjang = );readln(p); Write (lebar=); readln(l); Hitung_Luas; Writeln(Luas Persegi Panjang: , Readln; End. b.

,luas);

Procedure Parameter Parameter adalah data masukan untuk sub program yang nantinya akan diproses lebih lanjut pada sub program tersebut. Dalam pascal dikenal dua parameter yaitu: 1. Parameter nilai 2. Parameter Referensi

Gotoxy(15,8); writeln (tekan enter .......); Readln; Tampil_menu; Gotoxy(15,16); writeln(selamat mencoba); Readln; End.

Cara mendeklarasikan procedure dengan parameter adalah; Procedure B( x : integer; Var Y : Integer ); Begin (Statement); (Statement); Readln; End; Pada deklarasi prosedure diatas, parameter X adalah parameter nilai sedangkan parameter Y adalah parameter referensi, Jadi, pendeklarasian parameter referensi didahului oleh reserved word var, Parameter referensi nantinya dapat dijadikan sebagai variabel keluaran dari prosedure. Untuk lebih jelasnya perhatikan dan kerjakan contoh berikut: Contoh 8 Program Contoh8; Uses crt; Procedure tambah (A,B: byte; var c: integer); Begin C:=a+b; End; Var hasil: integer; Begin Tambah (4,5,hasil); Write(4, ,+, ,5,=, ,hasil); Readln; End. 49 50

Contoh 7 Program Contoh7; Uses crt; Var p,l, Luas: integer; Procedure Hitung_luas; Begin Luas:=p*l; End; Begin Clrscr;

Penjelasan: Nilai A dan B merupakan parameter nilai sedangkan C merupakan parameter referensi. Variabel C akan menampung hasil dari penjumlahan dari A ke B dapat dilihat terjadinya pengiriman parameter A,B,C ke 4,5 dan hasil. Setelah anda memahami kedua bentuk prosedur yaitu prosedur menggunakan parameter dan yang tidak menggunakan parameter. Maka selanjutnya kita akan menggabungkan keduanya (parameter dan non parameter) yaitu seperti contoh berikut: Contoh 9 Program contoh9; Uses crt; Procedure tampil_menu; Begin Gotoxy(25,4);write(PROGRAM GABUNGAN); Gotoxy(25,6); write(===================); Gotoxy(25,8); write(1. Konversi suhu); Gotoxy(25,10); write (2. Konversi waktu); Gotoxy(25,12); write(3. Konversi berat); Gotoxy(25,14); write(4. Keluar); End; Procedure suhu (c:integer; var r,f,k:real); Begin R:=(4/5)*C; F:=((9/5)*C)+32; K:=c+273; End; Procedure waktu (a1:integer; var j,m, d:integer); Begin J:=a1 div 3600; M:=(a1 mod 3600) div 60; D:=(a1 mod 3600) mod 60; End; Procedure berat(a2:integer; var k,o,g:integer); Begin K:=a2 div 1000; O:=(a2 mod 1000) div 100; G:=(a2 mod 1000) div 100; End; Var 51

Jawab:char; Celcius,angka1,angka2:integer; Jam,menit,detik,kg,ons,gram:integer; Reamur,fahrenheit,kelvin:real; Begin clrscr; Repeat Tampil_menu; Gotoxy(25,16); Write(pilihan anda;); readln(jawab); If jawab=1 then Begin clrscr; Write (masukkan suhu (dalam celcius):); Readln(celcius); Suhu (celcius,reamur,fahrenheit,kelvin); Writeln(celcius:,celcius); Writeln(reamur:,reamur:4:2); Writeln(fahreinheit:,fahrenheit:4:2); Writeln(kelvin:,kelvin:4:2); End; If jawab=2 then Begin Clrscr; Write(masukkan angka [dalam detik]:); Readln(angka1); Waktu(angka:,angka1); Writeln(hasil:,jam,menit,menit,detik,detik); End; If jawab = 3 then Begin Clrscr; Write(masukkan angka [dalam gram]); Readln(angka2); Berat(angka2,kg,ons,gram); Writeln(hasil:,kg,kg,ons,ons,gram,gram); End; Until jawab=4; End.

52

REKURSIDalam Pascal memiliki suatu kelebihan dalam memanggil sub program. Pascal mengijinkan pemanggilan suatu sub program dari dalam sub program itu sendiri. Tidak semua bahasa pemograman mengijinkan cara pemanggilan subprogram seperti itu karena banyak memakan memori. Untuk lebiih paham perhatikan potongan program dibawah ini: Procedure A; Begin {statement} A; End; Pada baris terakhir prosedure A diatas, terdapat pemanggilan kembali terhadap prosedure A, sehingga prosedure diatas tidak akan pernah selesai dijalankan sebab begitu sampai pada baris terakhir dari prosedure maka program akan kembali ke awal prosedure. Yang terjadi adalah semacam pengulangan tanpa perintah perulangan pascal, dan perulangan dengan cara ini disebut dengan Rekursi. Rekursi berlaku terhadap semua subprogram dalam pascal, yaitu prosedure dan fungsi. Dengan adanya rekursi ini,banyak algoritma komputer menjadi leboh mudah dalam pembuatan programnya. Berikut ini adalah program menghitung suku banyak Legendre , salah satu contoh perhitungan yang dapat diselesaikan dengan menggunakan rekursi: Contoh 10 Program contoh10; Uses crt; Var Jum_Suku, I : integer; Bil_x: real; Function Legendre (X:real; N:integer): real; Var Suku_1,Suku_2: real; Begin If N=0 then Legendre :=1 Else if N=1 then Legendre:= X Else Begin Suku_1:=((2*N-1)*(X*Legendre(X,N-1)))/N; Suku_2:=((N-1)*legendre(X,N-2))/N; Legendre:=suku_1+Suku_2; End; End; 53

Procedure Awal; Begin Writeln('Prosedure dan Fungsi'); Writeln('----------------------------'); Writeln('NAMA :'); Writeln('NIM :'); Writeln; End; Procedure BacaData; Begin Writeln('menghitung suku banyak'); Writeln; Write('sampai suku ke:'); Readln(Jum_suku); Write('masukkan nilai x:'); Readln(bil_x); Writeln; End; Begin Clrscr; Awal; BacaData; For I:=0 to jum_suku do BeginWriteln('siku ke-',I:2,'nilainya=',legendre(bil_X,I):8:3);

End; Writeln; Write('tekan enter......'); Readln; End. Untuk lebih paham tentang bab ini kerjakan latihan berikut: Latihan 1. Carilah letah kesalahan pada pendeklarasian subprogran berikut: a. Function kali(a,b:integer); Begin kali:=a*b; End;

54

b.

Procedure kali (a,b:integer); Var Hasil: integer; Begin Hasil:=a*b; Writeln(hasil); End.

BAB VIII ARRAY (LARIK) Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal, memahami, dan membuat suatu program dengan Array

2.

Buatlah suatu program yang terdiri dari dua buah prosedure a. Prosedure pertama digunakan untuk memasukkan dua buah bilangan pada keyboard b. Procedure kedua menampilkan bilangan tersebut diantara dua bilangan yang dimasukkan dari procedure pertama. Buatlah sebuah program dari procedure yang dapat melakukan perhitungan fisika sebagai berikut a. Kecepatan b. Percepatan c. Gaya d. Berat Benda Buatlah suatu program yang menampilkan menu suatu restoran yang dapat dipilih yaitu sebagai berikut: a. Ayam Penyet b. Ayam Lepas c. Ayam Tangkap d. Juice Jeruk e. Juice Apel f. Juice Melon

Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: Array

ARRAYArray didefinisikan sebagai suatu kumpulan dimana elemenelemennya berjenis data sama (homogen). Suatu array dapat dibedakan atas 2 (dua) bagian, yaitu : a. Array berdimensi satu. Array berdimensi satu dapat dikatakan sebagai suatu daftar yang linier atau sebuah kolom.Bentuk deklarasi dari array jenis ini dalam bahasa Pascal adalah: VAR nama_array : ARRAY [index] OF jenis_elemen; Contoh : VAR x : ARRAY [1..10] OF integer;

3.

4.

X [1] X [2] X ....... ....... x[10] b. Array Multi Dimensi Contoh untuk array jenis ini adalah array dimensi dua. Array dimensi dua ini dapat dianggap sebagai sebuah matriks yang jumlah kolomnya lebih dari satu.

55

56

Bentuk deklarasi :VAR nama_array : ARRAY [indeks_baris,indeks_kolom] OF jenis;

Contoh : VAR A : ARRAY [1..3,1..4] OF integer; Array A di atas terdiri atas 12 elemen, yaitu : A[1,1] A[1,2] A[1,3] A[2,1] A[2,2] A[2,3] A[3,1] A[3,2] A[3,3] Masing-masing A[i,j] adalah diatas adalah integer (i = 1,2,3 ; j = 1,2,3,4) Selanjutnya untuk array berdimensi tiga, empat pendeklarasiannya hanya berbeda pada indeksnya saja. dst, cara

1.2 Deklarasi Tipe Index Subrange Integer Tipe index subrange integer sebagai berikut : Var NilaiHuruf : array [1..5] of char ; A[1,4] A[2,4] A[3,4] Nilai [1..5] inilah yang dimaksud dengan index subrange integer. Index dari larik diatas dapat dideklarasikan terlebih dahulu di bagian deklarasi tipe : Type Jangkauan = 1..5 ; {tipe subrange integer} Var NilaiHuruf : array [Jangkauan] of char ; Begin end. 1.3 Deklarasi Tipe Index Subrange Byte Kalau index dari larik tidak sampai dengan 255, maka index dari larik ini dapat dideklarasikan dengan tipe byte. Var X : array [0..255] of real ; Karen anilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini dapat ditulis : Var X : array [byte] of real ; 1.4 Deklarasi Tipe Index Subrange Word Jika jangkauan index dari 0 sampai 65525, maka index dari larik dapat dideklarasikan dengan tipe word. Var X : array [byte] of word ;

1.1 Deklarasi Array Array yang akan dipergunakan harus di deklarasikan terlebih dahulu. Deklarasi dari Array diawali dengan kata cadangan Array diikuti oleh tipe index yang diletakkan diantara tanda [ ] diikuti lagi oleh kata cadangan of dan tipe arraynya. Array dapat bertipe sederhana byte, word, integer, real, boolean, char, string dan tipe scalar atau subrange. Contoh: Var X : array [ 1..100 ] of integer ; Larik X dideklarasikan sebagai larik tipe integer dengan jumlah elemen maksimum 100 elemen, dimana nilai elemen larik ini harus berisi nilai integer. Misalkan : X [1] : = 18 ; X [2] : = 5 ; Bila nilai elemen ke-1 dari larik X akan ditampilkan, dapat dipergunakan perintah : Writeln ( x[1] ) ; 57

58

1.5 Deklarasi Tipe Index Subrange Boolean Index larik yang bertipe Boolean, hanya mempunyai maksimum 2 buah elemen saja. Type Keterangan = string [11] ; Var X : array [Boolean] of keterangan ; 1.6 Deklarasi Tipe Index Subrange Char Tipe char adalah tipe subrange yang mempunyai nilai sebanyak 256 buah (0 255 )sesuai dengan urutan kode ASCII. Var X : array [char] of integer ; 1.7 Deklarasi Tipe Index Skalar Index dari larik dapat berupa tipe scalar atau enumerated. Contoh program: Var Jumlah : array [(Jan, Peb, Mar)] of integer ; Begin Jumlah[Jan] : = 125 ; Jumlah{Peb] : = 75 ; Jumlah[Mar] : = 18 ; Writeln ( Jumlah untuk bulan maret = , Jumlah{Mar}); End. Output program : Jumlah untuk bulan Maret = 18 Contoh diatas dapat ditulis : Type Bulan = (Jan, Peb, Mar) ; Var Jumlah : array [Bulan] of integer ; 1.8 Deklarasi konstanta Larik

Larik tidak hanya dapat berupa suatu variable yang dideklarasikan di bagian deklarasi variable, tetapi juga dapat berupa suatu konstanta yang ideklarasikan dibagian deklarasi konstanta. Contoh program : Const X : array [1..5] of integer = (6, 25, 375, 5, 2) ; Var I : word ; Begin For I : = 1 to 5 doWriteln ( Nilai konstanta larik ke , I, =, X[I]);

End. Output program : Nilai Konstanta larik ke 1 = 6 Nilai Konstanta larik ke 2 = 25 Nilai Konstanta larik ke 3 = 375 Nilai Konstanta larik ke 4 = 5 Nilai Konstanta larik ke 5 = 2 1.9 String Sebagai Larik Tipe Char String dapat dianggap sebagai suatu larik tipe char dengan index dari 0 sampai dengan panjang dari string yang di definisikan. Contoh program : Var I : word ; Nama : string [255] ; Begin Write ( Nama Anda ? ) ; readln ( Nama ) ; Writeln ;Writeln ( Nama Anda kalau dibaca terbalik adalah : ) ;

For I : = ord (Nama [0] ) down to 1 do Write (Nama [I] ) ; End.

59

60

Output program : Nama Anda ? Rachmad Nama Anda kalau dibaca terbalik adalah : damhcaR 1.10 Larik Dimensi Banyak Larik dapat juga berdimensi lebih dari satu yang disebut dengan larik dimensi banyak, yang dapat berdimensi dua, dimensi tiga dan seterusnya. Larik dimensi 2 mewakili suatu bentuk table atau matrik, yaitu index yang pertama dapat menunjukkan baris dan index kedua dapat menunjukkan kolom dari table atau metric. Bentuk Umum :Nama_larik = array [tipe index1] of array [tipe index2] of tipe larik

AtauNama_larik = array [tipe index1, tipe index2] of tipe larik

menggunakan parameter berupa larik harus dideklarasikan didalam judul prosedur yang menyebutkan parameternya bertipe larik. Contoh program : Type Larik = array [1..50, 1..50] of real ; Var I, J, K : byte ; Procedure inverse (Var X : Larik ; N : byte ) ; . . Begin . end. MEMPROSES ARRAY Misal diberikan deklarasi suatu array sebagai berikut : VAR X : ARRAY [1..10] OF integer; Untuk keperluan membaca variabel X (input) tidak bisa melakukan seperti sebuah data bernilai tunggal, yaitu READ (X). Sebab jika dibaca/diinput suatu variabel berjenis array berarti kita membaca elemen-elemen array tersebut. Untuk itu diperlukan suatu bentuk perulangan seperti berikut : FOR I := 1 TO 10 DO READ ( X[1] ); Demikian pula halnya untuk keperluan memproses elemen-elemennya, harus ditunjukkan elemen yang akan diproses. Contoh 1: Misal terdapat 10 bilangan integer positif yang berbeda disimpan di dalam suatu array B. Tentukan integer yang terbesar diantara 10 integer tersebut dengan suatu program Pascal. Penyelesaiannya : PROGRAM MAKS ; VAR B : ARRAY [1..10] OF integer; I,J,MAX : integer; Begin FOR I := 1 TO 10 DO READ(B[I}); MAX := B[1]; FOR J := 2 TO 10 DO IF MAX = 90 then predikat[a] := 'A' else if nilai[a] >= 75 then predikat[a] := 'B' else if nilai[a] >= 50 then predikat[a] := 'C' else if nilai[a] >= 40 then predikat[a] := 'D' else predikat[a] := 'E' ; if nilai[a] >= 90 then ket[a] := 'lulus' else if nilai[a] >= 75 then ket[a] := 'lulus' else if nilai[a] >= 50 then ket[a] := 'lulus' else if nilai[a] >= 40 then ket[a] := 'perbaikan' else ket[a] := 'tidak lulus' ; writeln (") ; end ; clrscr ; writeln (") ; writeln ( ' DAFTAR NILAI SEMESTER 1 writeln ( '---------------------------------------' ) ; writeln ( ' nama nilai predikat ket ' ) ; writeln ( '---------------------------------------' ) ; for b := 1 to 5 dowriteln ( ' '+nama[b]+' ',nilai[b],' '+predikat[b]+' '+ket[b]) ;

') ;

writeln ( '-----------------' ) ; readln end.

Contoh 5:program Jumlah_Matrik; uses CRT; const Orde = 3; type Matrik = array[1..orde,1..orde] of integer;

Readln; End.

63

64

var M1, M2, H : matrik; I, J : integer; procedure Awal; begin Writeln('Latihan Pascal 3 : Array dan Record'); Writeln('------------------------------------'); Writeln; Writeln('Nama : ____________________'); Writeln('NIM : __________'); Writeln; end; procedure JumlahMatrik(var Mat1, Mat2, MatHasil : matrik); begin for I := 1 to orde do for J := 1 to orde do MatHasil[I,J] := Mat1[I,J] + Mat2[I,J]; end; procedure BacaData(var Mat : matrik); begin for I := 1 to orde do for J := 1 to orde do begin Write('Nilai[',I,',',J,'] = '); Readln(Mat[I,J]); end; end; procedure TulisMatrik(var Mat : matrik); begin for I := 1 to orde do begin for J := 1 to orde do begin Write(Mat[I,J]:5); end; Writeln; end; end; begin ClrScr; Awal; Writeln('Isi matrik pertama :'); BacaData(M1); Writeln; Writeln('Isi matrik kedua :'); BacaData(M2); Writeln;

JumlahMatrik(M1, M2, H); Writeln('Penjumlahan matrik pertama dan kedua :'); TulisMatrik(H); Writeln; Write('Tekan Enter...'); Readln; end.

Latihan 1. Buatlah sebuah program array yang menghasilkan tampilan berikut:================================================================ Nama Nilai Predikat Lulus ================================================================ Rachmad Almi 90 A Lulus Almi Putra 80 B Lulus Alfi Zarisa 85 B Lulus

2.

3.

Buatlah program untuk menghitung nilai akhir siswa, dengan ketentuan penilaian yaitu : Nilai Murni Fisika Kwantum = Fisika Kwantum * 40% Nilai Murni Fisika Zat Padat = Fisika Zat Padat * 60% Rancangan Masukan Rancangan Masukan yang diinginkan seperti dibawah ini : Input Data Nilai ______________ Masukan Banyak Data : ____ Data Ke : < no counter > Nama Siswa : ___________________ Nilai Fisika Kwantum : ____ Nilai Fisika Zat Padat : Buatlah sebuah program yang menghasilkan tampilan sebagai berikut

4.

Buatlah sebuah program yang didalamnya terdapat program program pada soal no 1,2, dan 3

65

66

5.

BAB IX RECORD

Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Memahami dan Membuat Program dengan menggunakan Record RECORD Adapun materi dapat dibahas dalam bab suatu kumpulan data item yang Record yang dikatakan sebagai ini adalah sebagai berikut: Record masing-masing mempunyai jenis data berbeda. Data item yang merupakan elemen record biasanya disebut dengan FIELD. CARA MENDEKLARASIKAN RECORD Bentuk umum deklarasi suatu variabel berjenis record adalah sbb : VAR nama_record : RECORD Nama_field_1 : jenis ; Nama_field_2 : jenis ; nama_field_n : jenis; END; Atau TYPE identifier = RECORD Nama_field_1 : jenis; Nama_field_2 : jenis; .. .. nama_field_n : jenis; END; Contoh : 1. VAR nilai : RECORD Nilai_1 : integer; Nilai_2 : integer; END; 2. TYPE date = RECORD Tanggal : 1..31; Bulan : 112; Tahun : 1900..2000; END; VAR event1,event2 : ARRAY [1..10] OF date; 67

3. TYPE account = RECORD cust_no : integer; cust_type : char; cust_balance : real; END; VAR customer : account; MEMPROSES VARIABEL BERJENIS RECORD Perhatikan deklarasi variabel berikut : TYPE nilai : RECORD Nilai1 : real; Nilai2 : real; END; VAR x,y : nilai; Untuk memproses variabel x dan / atau y dilakukan dengan cara menyebutkan field designatornya, yg terdiri dari atas : Nama_record.nama_field Pada deklarasi diatas yang dimaksud dengan field designator-nya adalah : x.nilai1 x.nilai2 y.nilai1 y.nilai2 Jadi jika ingin membaca variabel x atau y atau keduanya, maka bentuk statement-nya adalah : READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2); Selanjutnya, misal ingin dibuat program sederhana untuk menjumlahkan dua bilangan kompleks a dan b yang hasilnya disimpan di c. Secara aljabar penjumlahan dua bilangan kompleks adalah sebagai berikut : a = x1 + iy1 b = x2 + iy2 + c = (x1 + x2 ) + I(y1 + y2) Maka bentuk garis besar programnya adalah sebagai berikut : Program contoh ; Type bk = record Bag_nyata : integer; Bag_imajiner : integer; End; 68

Var a,b,c : bk; BeginRead (a.bag_nyata, a.bag_imajiner, b.bag_nyata, b.bag_imajiner ); c.bag_nyata := a.bag_nyata + b.bag_imajiner; c.bag_imajiner := a.bag_imajiner + b.bag_imajiner;

writeln(c.bag_nyata,+,i,c.bag_imajiner); readln; End. STATEMENT WITH Selain cara yang telah disebutkan diatas, untuk memproses suatu record dapat digunakan statement WITH. Dengan statement ini penulisannya akan lebih sederhana. Bentuk Umum penulisan statement WITH ini adalah : WITH nama_record DO statement Perhatikan deklarasi dibawah ini : TYPE x = RECORD No Kode Juml Harga END; VAR p,q : x; Untuk membaca variabel p dan q WITH bentuknya menjadi :

: integer; : char; : integer; : real;

di atas dengan memanfaatkan statement

umur : integer; ts : integer; tl : integer; begin clrscr; writeln ('Masukkan tahun sekarang: '); readln (ts); writeln ('Isikan data anda dalam Form ini'); write ('NIM : '); readln (s.nim); write ('NAMA : '); readln (s.nama); write ('TAHUN LAHIR : '); readln (tl); umur := (ts-tl); write ('AGAMA : '); readln (s.agama); write ('NO.KTP : '); readln (s.ktp); writeln; writeln ('Berikut ini informasi yang anda berikan: '); writeln ('NIM : ', s.nim); writeln ('NAMA : ', s.nama); writeln ('Umur : ', umur); writeln ('AGAMA : ', s.agama); writeln ('NO.KTP : ', s.ktp); READLN; end.

WITH p,q DO read (no, kode, juml, harga); Bandingkan jika digunakan cara sebelumnya :Read(p.no,p.kode,p.juml,p.harga,q.no,q.kode,q.juml,q.harga);

Contoh 1:program rekor; uses crt; type TSiswa = record nim : string[8]; nama : string[25]; agama : string[10]; ktp : string[25]; end; var s : TSiswa;

Contoh 2: program Jumlah_Kompleks; uses CRT; Type Kompleks = record bil_real : integer; bil_imaj : integer; end; var K1, K2, H : kompleks; procedure Awal; begin Writeln(' Latihan Pascal 3 : Array dan Record'); Writeln('------------------------------------'); Writeln; Writeln('Nama : ____________________'); Writeln('NIM : __________'); 69 70

Writeln; end;procedure JumlahKompleks(var Komp1, Komp2, KompHasil : kompleks);

beginKompHasil.bil_real := Komp1.bil_real + Komp2.bil_real; KompHasil.bil_imaj := Komp1.bil_imaj + Komp2.bil_imaj;

end; procedure BacaData(var Komp : kompleks); begin Write('Bilangan real : '); Readln(Komp.bil_real); Write('Bilangan imajiner : '); Readln(Komp.bil_imaj); end; procedure TulisKompleks(var Komp : kompleks); beginWrite('(',Komp.bil_real:3,' + ',Komp.bil_imaj:3,'i)');

Contoh 3: Program InfoPenduduk; TYPE InfoPend = record Nama : string[20]; Umur : integer; Alamat : string[40]; KodePos : integer; end; var Pend: InfoPend; begin Write (Nama :);readln(Pend.Nama); Write (Umur :);readln(Pend.Umur); Write (Alamat :);readln(Pend.Alamat); Write (KodePos :);readln(Pend.KodePos); End. Contoh 4: Uses Crt; Const JumlahSiswa = 1; Type Nilai = Record Nim : String; Nama: String; Tugas : Real; UTS : Real; UAS : Real; End; Var Mhs : Array[1..JumlahSiswa] of Nilai; I : Integer; Begin Clrscr; For I := 1 To JumlahSiswa Do Begin Writeln('Mahasiswa ke : ',i:2); Write('Nim : ');Readln(Mhs[i].Nim); Write('Nama : ');Readln(Mhs[i].Nama); Write('Tugas : ');Readln(Mhs[i].Tugas); Write('UTS : ');Readln(Mhs[i].Uts); Write('UAS : ');Readln(Mhs[i].Uas); End; Writeln('--------------------------------------); 71 72

end; begin ClrScr; Awal; Writeln('Isi bilangan kompleks pertama :'); BacaData(K1); Writeln; Writeln('Isi bilangan kompleks kedua :'); BacaData(K2); Writeln; JumlahKompleks(K1, K2, H);Writeln('Penjumlahan bilangan kompleks pertama dan kedua :');

TulisKompleks(K1); Write(' + '); TulisKompleks(K2); Write(' = '); TulisKompleks(H); Writeln; Writeln; Write('Tekan Enter...'); Readln; end.

Writeln(' NO NIM NAMA TUGAS UTS UAS NA GRADE '); Writeln('------------------------------------); For I := 1 To JumlahSiswa Do Begin writeln(i:3,Mhs[i].Nim:10,Mhs[i].Nama:10,Mhs[i].Tugas:7:2,Mhs[i].Uts:7:2Mhs[i].Uas:7:2); End; Readln; End. Latihan 1. Buatlah program untuk mengurutkan sekumpulan data ! 2. Buatlah program menghitung perkalian matriks ! 3. Buatlah program menghitung perkalian bilangan kompleks ! 4. Jelaskan guna reserved word with dalam Pascal ! 5. Jelaskan perbedaan dan persamaan antara array dan record !

BAB X OPERASI FILE Tujuan dari Bab ini adalah agar mahasiswa dapat: a. Mengenal, memahami prosedure dalam file b. Mengoperasikan File c. Membuat Program dari File Text,File Bertipe, Dan File Tak Bertipe Adapun materi yang dibahas dalam bab ini adalah sebagai berikut: Prosedure dan Fungsi dalam File File Text (textfile) File Bertipe (typedfile) Sering sekali pada program-program aplikasi untuk sistem informasi, data perlu disimpan untuk keperluan pengolahan lebih lanjut. Bila data yang perlu disimpan mempunyai volume yang cukup besar, maka penggunaan variabel atau larik sudah tidak tepat lagi, karena variabel dan larik menggunakan memori internal komputer, sehingga tidak dapat untuk menampungnya. Variabel dan larik hanya dapat digunakan untuk menyimpan data yang sedang diproses. Untuk menyimpan data yang berukuran lebih besar harus digunakan cara yang lain, yaitu dengan menyimpannya di external memory (memori luar) yang relatif memiliki kapasitas penyimpanan lebih besar dari internal memory serta bersifat nonvolatile(tidak hilang bila aliran listrik terputus, sehingga dapat menyimpan data secara permanen). Data yang tersimpan diluar memori misalnya pada disk disimpan dalam bentuk file. Suatu file terdiri dari urutan komponen yang mempunyai tipe yang sama. Jumlah dan komponennya bersifat luwes (dapat ditambah dan dikurangi) sewaktu-waktu. Dalam Pascal dikenal 3 macam tipe dari file, yaitu: file teks (textfile),file bertipe(typed file) dan file tak bertipe (untyped file). PROSEDURE DAN FUNGSI DALAM FILE Prosedure standart yang dapat digunakan untuk ke tiga tipe file adalah prosedure standart assign, rewrite, Reset, Close, Erase, Rename, GetDir,ChDir,MkDir,RmDir, sedang fungsi standart yang dapat digunakan untuk tiga tipe file adalah fungsi standart EoF dan IO result.

73

74

a.

Prosedure Standart Assign Sebelum suatu file digunakan, maka nama file tersebut harus dihubungkan dengan suatu variabel yang disebut dengan variabel file (file variable). Prosedur standart Assign digunakan untuk menghubungkan nama dari eksternal file kedalam suatu file variabel dengan sintaks: Assign (f; name: string); Pada sintaks ini f adalah file variable dan name adalah nama dari suatu eksernal file yang akan digunakan. Peralatan luar eksternal file disebut sebagai perlatan logik dan dapat diakses dengan menyebutkan nama logikanya. Sebagai contoh perhatikan sintaks berikut: Assign (rekam,A:GAJI.DAT); Rekam adalah file variable dan A:GAJI.DAT merupakan external file pada disk.

Contoh Assign(rekam,A:GAJI.DAT); Reset(rekam); Pada contoh diatas, file yang bernama GAJI.DAT dibuka, apabila file tersebut tidak ada maka akan terjadi kesalahan. d. Prosedure Standart Close Prosedure ini digunakan untuk menutup file yang telah dibuka oleh prosedure standar rewrite, reset, atau append. Sebagai contoh perhatikan sintaks berikut: Close (f) e. Prosedure Standart Erase Prosedure ini digunakan untuk menghapus file dalam eksternal file, dimana file yang akan dihapus harus dalam keadaan tertutup dan sintaks untuk prosedur ini adalah sebagai berikut: Erase (f) f. Prosedure Standart Rename Prosedure ini digunakan untuk mengganti nama suatu file eksternal, dan file yang akan diganti namanya harus dalam keadaan tertutup dengan sintaks sebagai berikut: Rename(f;newname;string); Perhatikan contoh penggunaannya sebagai berikut: Assign(rekam,A:GAJI.DAT); Rename(rekam,A:GAJIMEI.DAT); g. Prosedure Standart Getdir Prosedure ini digunakan untuk melihat directori yang aktif pada suatu disk dengan sintaks sebagai berikut: GetDir (d:byte;var s:string); Perhatikan contoh program sebagai berikut: Var Drive :Byte; Directory :String(50); Begin Drive :=0; GetDir(drive,Directory); Writeln(Directory yang aktif adalah,directory); Readln; End. 76

b. Prosedure Standart Rewrite Prosedure Standart Rewrite dapat digunakan untuk membuka file yang baru atau belum pernah ada didalam disk dengan sintaks sebagai berikut: Rewrite(f[:file;recsize:word]); F adalah file variable yang telah dihubungkan dengan eksternal file standart assign. RecSize adalah ukuran dari record yang digunakan khusus untuk type untyped file yang menunjukkan ukuran dari record yang akan digunakan untuk mentransfer data. Jika RecSize tidak digunakan, default dari ukuran record adalah 128 byte yang akan digunakan. Perhatikan contoh sintaks berikut: Assign(rekam,A:GAJI.DAT); Rewrite(rekam); c. Prosedure Standart Reset Prosedure ini digunakan untuk membuka file yang telah tersedia dengan sintaks sebagai berikut: Rekam(f[:file; recsize:word]); Prosedure ini digunakan pada untyped file, dimana prosedure standart assign dan recsize merupakan ukuran dari record. Jika suatu file belum ada dibuka dengan prosedur standart ini, maka akan terjadi kesalahan. Adapun penggunaannya dalam program adalah sebagai berikut:

75

h. Prosedure Standart ChDir Prosedure standart ini digunakan untuk merubah posisi fdari directory dengan sintaks : ChDir(s:string); Directory sekarang yang aktif dirubah kesuatu path directory yang disebutkan oleh variabel string s. Bila drive disebutkan dalam variabekl string s, maka drive yang aktif juga akan turut dirubah. Contoh:Var Drive : byte; Directory : string [50] Begin Drive : = 0; GetDir(Drive, Directory); Writeln(Directory sekarang adalah:Directory); Write(akan dirubah menjadi?); readln(Directory); ChDir(directory); GetDir(Drive,Directory); Writeln; Writeln(Directory sekarang menjadi,Directory); Readln; End.

j.

Prosedure Standart RMDIR Prosedur ini digunakan untuk menghapus suatu directory dengan sintaks: RmDir(s:String); Directory yang dihapus berupa directory kosong; Contoh Var Directory : String[50]; Begin Directory:string[50] Begin Directory:=B:\Mei; RmDir(Directory); End. Pada contoh diatas directory B:\Mei akan dihapus, apabila directory ini berisi file maka akan terjadi kesalahan.

k. Fungsi Standart EOF Fungsi standart ini akan menghasilkan status apakah file sudah berada diposisi akhir dari file atau tidak. Dengan sintaks sebagai berikut: EoF(f): boolean;

i.

Prosedure Standart MKDIR Prosedure standart ini digunakan untuk membuat suatu directory yang baru dengan sintaks: MkDir(s:string); Contoh: Var Directory:string[50]; Begin Directory:=B:\Mei; MkDir(Directory); ChDir(directory); Assign(rekam,GAJI.DAT); Rewrite(rekam); ____________; ____________; Dari contoh diatas directory baru dibuat di drive B: dengan nama \Mei dan posisi directory dirubah dalam directory baru, sehingga file GAJI.DAT yang dibuat berada dalam directory yang baru. 77

FILE TEXTFile text merupakan file yang berisi kumpulan dari karakter yang dibentuk dalam baris dan masing-masing baris diakhiri dengan tanda karakter line feed (CR/LF). Sedangkan akhir dari file ditunjukkan oleh tanda akhir dari file (end of file marker)berupa karakter Ctrl-Z. File Text merupakan file dengan tipe char, tetapi memiliki perbedaan, yaitu nilai bukan tipe char dapat direkam dan dibaca oleh file teks. Nilai yang bukan tipe char ini akan secara otomatis dirubah kedalam bentuk tipe char. File variabel dalam tipe teks ditunjukkan dengan suatu variabel yang dideklarasikan dengan tipe text. Sintaks : Var tipeFile : text Begin 78

Assign(tipeFile,File_Exsternal); -------------; -------------; End. 1. Prosedur dan Fungsi dalam File Text a. Prosedur Standart Append Prosedure ini digunakan untuk membuka file yang telah ada untuk keperluan menambah data kedalam file dengan sintaks:

g.

Fungsi Standart SeekEof Fungsi ini sama dengan Fungsi standart EoF, yaitu menghasilkan status akhir dari file dengan sintaks: SeekEoF [(var f:text)]:boolean; Perbedaan utama dengan fungsi standart EoF adalah fungsi SeekEof akan melewati semua tabulasi dan tanda akhir dan baris sebelum menghasilkan status akhir dari file.

h. Append(var f:text); b. Prosedur Standart Write dan Writeln Prosedur ini digunakan untuk merekam data ke file dengan sintaks: Write([var f:text;]v1[,v2,...,vn]); Writeln([var f:text;]v1[,v2,...,vn]); c. Prosedure Standart Flush Prosedure ini digunakan untuk segera merekam data-data yang ada dibuffer ke file dengan sintaks: Flush (var f:text); d. Prosedure standart Read dan Readln Prosedur ini digunakan untuk membaca satu atau lebih nilai dari suatu file kedalam satu variabel atau lebih. Sintaksnya Read ([var f:text;]v1[,v2,...,vn]); Readln([var f:text;]v1[,v2,...,vn]); e. Prosedure standart SetTextBuf Prosedur SetTextBuf digunakan untuk membuat buffer yang baru sebagai pengganti dari internal buffe untuk file variabel. Dengan sintaks SetTextBuf(var f:text; var buf [;size:word]); f. Fungsi Standart EoLn Fungsi ini digunakan untuk mengetahui apakah posisi dari file berada di end-of-line marker atau tidak. Dengan sintaks: EoLn[(var f:text)]:boolean;

Fungsi Standart SeekEoln Fungsi standar ini sama dengan Fungsi Eoln, yaitu akan menghasilkan status akhir dari baris hanya saja perbedaan utama dengan fungsi Eoln adalah fungsi Standart SeekEoln akan melewati semua blank dan tabulasi sebelum menghasilkan status akhir dari baris. Adapun sintaks untuk fungsi ini adalah sebagai berikut: SeekEoln[(var f:text)]:boolean;

2. Membuat File Text Baru Langkah langkah untuk membuat file teks yang baru dapat berupa sebagai berikut: a. Deklarasi sebuah file untuk membuat file variabel dengan tipe file text. b. Hubungkan file variabel dengan eksternal file yang akan digunakan dengan prosedur standart assign. c. File text yang baru selanjutnya dapat dibuka dengan prosedure standart Rewrite. d. Masukkan data yang akan direkamkan ke file pada vaiabel-variabel. e. Rekamkan data yang ada divariabel-variabel ke file text dengan menggunakan prosedure standart write atau writeln. Posedure standart flush dapat digunakan atau tidak digunakan setelah write atau writeln dilakukan. f. Ulangi langkah 4 dan 5 bila masih merekamkan data lainnya g. Tutup file tekt bila operasi telah selesai menggunakan prosedure close.

79

80

Sebagai contoh perhatikan program berikut: Contoh 1: Program FileTeks1; Uses crt; Var BerkasTeks : Text; KodeBrg : String[5]; NamaBrg : String[20]; UnitBrg : Integer; HargaBrg : Real; Lagi : Char; Begin Assign(BerkasTeks,Barang.txt); Rewrite(BerkasTeks); Lagi :=Y; While UpCase(lagi)=Y do Begin Clrscr; GotoXY(5,6); write(kode barang :); GotoXY(5,8); write(nama barang :); GotoXY(5,10);write(unit barang :); GotoXY(5,12);write(Harga satuan barang :); GotoXY(27,6);readln(kodeBrg); GotoXY(27,8);readln(NamaBrg); GotoXY(27,10);readln(UnitBrg); GotoXY(27,12);readln(HargaBrg);Writeln(BerkasTeks,KodeBrg:5,NamaBrg:20,UnitBrg,HargaBrg:10:2);

GotoXY(5,15); write(ada data lagi(Y/T):);readln(lagi);

Begin Assign(BerkasTeks,Barang.txt); {$I-}Reset(berkasTeks); {$I+}; SudahAda := (IOResult=0); If SudahAda Then Begin Write(chr(7)); Write(file sudah pernah ada, Tumpangi??(Y/T)?); Readln(jawab); Jawab:=UpCase(Jawab); End; If jawab=T halt; End; Rewrite(BerkasTeks); Lagi:=Y; While UpCase(Lagi)=Y do Begin Clrscr; GotoXY(5,6); write(kode barang :); GotoXY(5,8); write(nama barang :); GotoXY(5,10); write(unit barang :); GotoXY(5,12); write(Harga satuan barang :); GotoXY(27,6);readln(kodeBrg); GotoXY(27,8);readln(NamaBrg); GotoXY(27,10);readln(UnitBrg); GotoXY(27,12);readln(HargaBrg);Writeln(BerkasTeks,KodeBrg:5,NamaBrg:20,UnitBrg,HargaBrg:10:2);

End; Close(berkasTeks); End. Contoh 2: Program MemeriksaFile; Uses crt; Var BerkasTeks : Text; KodeBrg : String[5]; NamaBrg : String[20]; UnitBrg : Integer; HargaBrg : Real; Lagi : Char; Jawab : Char; SudahAda : Boolean; 81

GotoXY(5,15); write(ada data lagi(Y/T):);readln(lagi);

End; Close(berkasTeks); End. 3. Menampilkan Semua Data Langkah untuk menampilkan semua data yang ada difile teks adalah sebagai berikut: a. Deklarasikan sebuah variabel sebagai file variabel tipe Text b. Hubungkan file variabel dengan eksternal file menggunakan prosedur standart assign. c. Buka file teks yang telah ada dengan prosedur standart reset. d. Baca data tiap baris didalam file dengan prosedur Readln. e. Tampilkan data yang dibaca pada layar

82

f.

Bila pembacaan belum mencapai akhir dari file, ulangi kembali langkah nomor 4 dan 5. Akhir dari file dideteksi dengan fungsi EoF g. Tutup File teks bila operasi telah selesai dengan prosedur Close. Sebagai contoh perhatikan program berikut: Contoh 3: Program menampilkandata; Uses crt; Var BerkasTeks : Text; KodeBrg : String[5]; NamaBrg : String[20]; UnitBrg : Integer; HargaBrg,NilaiBrg,Total : Real; Begin Assign(BerkasTeks,Barang.txt); Reset(berkasTeks); Clrscr; Writeln(-------------------------------------); Writeln(Kode Nama Unit Harga ); Writeln(Barang Barang Akhir Total ); Writeln(-------------------------------------); Total :=0; While Not Eof(BerkasTeks) do Begin Readln(BerkasTeks,KodeBrg,NamaBrg,UnitBrg,HargaBrg); NilaiBrg:=UnitBrg*HargaBrg; TotalBrg:=Total+NilaiBrg;Write(kodeBrg,NamaBrg:22,UnitBrg:7,HargaBrg:10:2,NilaiBrg:12:2);

e.

f. g.

Lakukan pencarian data dengan tahapan: 1. Baca data tiap baris didalam file dengan prosedur Readln. 2. Bandingkan data yang dibaca dengan data yang dicari 3. Tampilkan bila data yang dibaca sama dengan data yang dicari. Tampikkan pemberitahuan jika data yang dicari tidak ada Tutup File teks bila operasi telah selesai dengan prosedur standart Close.

End; Writeln(------------------------------------); Writeln(Total Rp,Total:14:2); Close(berkasTeks); End. 4. Menampilkan Data Tertentu Langkah untuk menampilkan data tertentu yang ada difile teks adalah sebagai berikut: a. Deklarasikan sebuah variabel sebagai file variabel tipe Text b. Hubungkan file variabel dengan eksternal file menggunakan prosedur standart assign. c. Buka file teks yang telah ada dengan prosedur standart reset. d. Tanyakan data yang akan ditampilkan 83

Contoh 4: Program datadicari; Uses crt; Var BerkasTeks : Text; KodeBrg : String[5]; NamaBrg : String[20]; UnitBrg : Integer; HargaBrg : Real; Kodecari : char; Spasi : string[5]; Lagi : char; Begin Assign(BerkasTeks,Barang.txt); Lagi:=Y; While UpCase(lagi)=Y do Begin Spasi:= ; Reset(berkasTeks); Clrscr; Write(kode barang yang dicari:);readln(kodecari); Writeln; Kodecari:=copy(spasi,1,5-length(kodecari))+kodecari; While(not EoF(berkasTeks)) and (kodebrgkodecari) do Readln(berkasteks,kodebrg,namabrg,unitbrg,hargabrg; If kodebrg=kodecari then Begin Writeln(nama barang:, namaBrg); Writeln(Unit barang:, UnitBrg); Writeln(harga barang:,hargabrg:10:2); End; Else Writeln(tidak ada barang ini); Close(berkasteks); Writeln; 84

Write(ada lagi yang dicari (Y/T)?);readln(lagi); End; End. 5. Menambahkan Data Untuk menambahkan suatu data dalam file yang sama, langkahnya sama seperti membuat fileteks yang baru, perbedaannya hanya pada penggunaan prosedure standart Append. Contoh 5: Program TambahData; Uses crt; Var BerkasTeks : Text; KodeBrg : String[5]; NamaBrg : String[20]; UnitBrg : Integer; HargaBrg : Real; Lagi : Char; Begin Assign(BerkasTeks,Barang.txt); Append(BerkasTeks); Lagi :=Y; While UpCase(lagi)=Y do Begin Clrscr; GotoXY(5,6); write(kode barang :); GotoXY(5,8); write(nama barang :); GotoXY(5,10); write(unit barang :); GotoXY(5,12); write(Harga satuan barang :); GotoXY(27,6);readln(kodeBrg); GotoXY(27,8);readln(NamaBrg); GotoXY(27,10);readln(UnitBrg); GotoXY(27,12);readln(HargaBrg);Writeln(BerkasTeks,KodeBrg:5,NamaBrg:20,UnitBrg,HargaBrg:10:2);

FILE BERTYPEFile bertype suatu file yang dapat diakses secara berurutan dan acak yang artinya bahwa komponen komponen didalam file bertype dapat dibaca atau direkamkan dimanapun didalam file. Untuk file bertipe setiap file yang dibuka dengan prosedur standar rewrite atau pun dengan prosedure standart reset memiliki sifat read/write, yaitu dapat membaca dan merekamkan data kedalam file sekaligus. 1. Prosedur dan Fungsi dalam File Type a. Write dan Read Write digunakan untuk merekamkan satu atau lebih data kedalam file sedangnkan read digunakan untuk membaca data satu atau lebih data yang ada didalam file. Perbedaan dengan file teks adalah pada prosedure standart ini terdapat variabel file yang digunakan, yaitu pada file bertype dapat memiliki tipe apapun kecuali tipe tekx. Sintaksnya adalah sebagai berikut: Write(f,v1[,v2,..,vn]); Read(f,v1[,v2,..,vn]); b. Seek Prosedure ini digunakan untuk menunjukkan file kesuatu komponen tertentu didalam file. Sintaknya : Seek(f;n:longint); c. Truncate Prosedure ini digunakan untuk menghapus sejumlah komponen atau record dari posisi tertentu. Sintaknya : Truncate (f); FilePos Prosedure ini digunakan untuk menghasilkan letak posisi sekarang dari penunjuk file. Sintaknya: FilePos(f): longint;

d.

GotoXY(5,15); write(ada data lagi(Y/T):);readln(lagi);

e.

End; Close(berkasTeks); End.

FileSize Fungsi ini digunakan untuk menghasilkan jumlah dari suatu komponen atau record yang sudah ada didalam file. Dan fungsi ini berfungsi jika keadaan file terbuka. dengan sintaks: FileSize(f): Longint;

85

86

2. Membuat File Baru Pada File Bertype Dalam membuat file baru dengan menggunakan file bertipe memiliki langkah yang sama dengan membuat file baru pada filek teks. Perhatikan contoh berikut: Contoh 6 : Program FileBertype; Uses crt; Type Mahasiswa = Record; Nomor :integer; Nama : String[20]; Nilai : real; End; Var FileMahasiswa : File of Mahasiswa; RecordMahasiswa : Mahasiswa; Lagi : char; Begin Assign(FileMahasiswa,MHS.DAT); Rewrite(FileMahasiswa); Lagi:=Y; While Upcase(lagi)=Y; Begin Clrscr; With recordmahasiswa Do Begin GotoXY(5,6); write(Nomor Mahasiswa :); GotoXY(5,8); write(Nama Mahasiswa :); GotoXY(5,10); write(Nilai Mahasiswa :); GotoXY(27,6);readln(nomor); GotoXY(27,8);readln(Nama); GotoXY(27,10);readln(nilai); End; Write(FileMahasiswa,RecordMahasiswa); GotoXY(5,15);write(Masukkan Data Lagi (Y/T)?); readln(lagi); End; Readln; Close; End.

3. Menambah Data Pada File Bertype Dalam menambah data pada file bertype tidak dapat digunakan prosedur standart Append karena prosedure ini hanya berlaku pada file teks saja. Namun pada file bertype digunakan prosedur standar File size dan Seek. Karena suatu file dapat ditambah dengan data dari posisi terakhir saja. Contoh 7 Program TambahData; Uses crt; Type Mahasiswa = Record; Nomor :integer; Nama : String[20]; Nilai : real; End; Var FileMahasiswa : File of Mahasiswa; RecordMahasiswa : Mahasiswa; Lagi : char; Begin Assign(FileMahasiswa,MHS.DAT); Reset(FileMahasiswa); If Ioresult 0 then rewrite(fileMahasiswa); Seek(filemahasiswa,filesize(filemahasiswa)); Lagi:=Y; While Upcase(lagi)=Y; Begin Clrscr; With recordmahasiswa Do Begin GotoXY(5,6); write(Nomor Mahasiswa :); GotoXY(5,8); write(Nama Mahasiswa :); GotoXY(5,10); write(Nilai Mahasiswa :); GotoXY(27,6);readln(nomor); GotoXY(27,8);readln(Nama); GotoXY(27,10);readln(nilai); End; Write(FileMahasiswa,RecordMahasiswa); GotoXY(5,15);write(Masukkan Data Lagi (Y/T)?); readln(lagi); End; Readln; Close; End.

87

88

4. Menampilkan Semua Data Untuk menampilkan semu data berarti menampilkan data mulai dari komponen atau record pertama (bernomor 0) sampai dengan recor terakhir. Ada dua cara untuk mengetahui posisi rekord yang terakhir, yaitu dengan menggunakan fungsi standar EoF atau dengan menggunakan prosedure standart FileSize. Contoh 8 Program Tampilan; Uses crt; Type Mahasiswa = Record; Nomor :integer; Nama : String[20]; Nilai : real; End; Var FileMahasiswa : File of Mahasiswa; RecordMahasiswa : Mahasiswa; Begin Assign (filemahasiswa,MHS.DAT); Reset (FileMahasiswa); Clrscr; Writeln(----------------------------); Writeln(nomor nama nilai ); Writeln(----------------------------); While Not EoF(filemahasiswa) do Begin Read(filemahasiswa,RecordMahasiswa); With RecordMahasiswa Do Writeln(Nomor:5,Nama:17,Nilai:10:2); End; Writeln(---------------------------); Close (filemahasiswa); End.

Nama : String[20]; Nilai : real; End; Var FileMahasiswa : File of Mahasiswa; RecordMahasiswa : Mahasiswa; I,jumlahRecord : integer Ketemu : boolean; Nomorcari : integer; Lagi : char; Begin Assign(FileMahasiswa,MHS.DAT); Reset(FileMahasiswa); jumlahRecord:=FileSize(filemahasiswa); Lagi:=Y; While Upcase(lagi)=Y; Begin Clrscr; Ketemu:=False; Clrscr; Write(nomor mahasiswa dicari:); readln(NomorCari); Writeln; For I:=1 to JumlahRecord Do Begin Seek(filemahasiswa,i-1) Read(filemahasiswa,RecordMahasiswa); If RecordMahasiswa.Nomor=NomorCari then Begin Ketemu:=True; Writeln(Nama Mahasiswa:,RecordMahasiswa.Nama); Writeln(Nilai Mahasiswa:,RecordMahasiswa.Nilai:6:2); End; End; If Not Ketemu Then Writeln(Tidak Ada Nomor Mahasiswa ini); Writeln; Write(ada yang dicari(Y/T)); readln(lagi); End; Close(filemahasiswa); Readln; End.

Contoh 9Program DataTertentu; Uses crt; Type Mahasiswa = Record; Nomor :integer;

89

90

Contoh 10Uses Crt; Type Mahasiswa = Record NoMhs : Word; Nama : String[20]; IPK : Real; Usia : Byte; End; Var Filemhs : File of Mahasiswa; Data : Mahasiswa; Pil,Ul : Char; Procedure Menu; Begin Clrscr; Gotoxy(34,1);Write('MENU PILIHAN'); Gotoxy(34,2);Write('============'); Gotoxy(27,4);Write('1. Tambah Data Mahasiswa'); Gotoxy(27,5);Write('2. Edit Data Mahasiswa'); Gotoxy(27,6);Write('3. Hapus Data Mahasiswa'); Gotoxy(27,7);Write('4. Tampilkan Data Mahasiswa'); Gotoxy(27,8);Write('5. View Mahasiswa Berdasarkan Umur'); Gotoxy(27,9);Write('6. Hapus NoMhs Ganjil'); Gotoxy(27,10);Write('9. Keluar (Exit)'