Anda di halaman 1dari 101

MODUL Praktikum : Pemrograman Terstruktur

Hal : 1

BAB I BAHASA PEMROGRAMAN


Bahasa (language) Adalah suatu sistim untuk berkomunikasi. Bahasa tertulis menggunakan simbol (yaitu huruf) untuk membentuk kata. Dalam ilmu komputer,bahasa manusia disebut bahasa alamiah (natural languages), dimana komputer tidak bisa memahaminya, sehingga diperlukan suatu bahasa komputer. Bahasa pemrograman (programming language) Program merupakan sekumpulan instruksi yang merupakan penyelesaian masalah. Program dimasukkan kedalam komputer, komputer mengerjakan instruksi-instruksi di dalam program tersebut, lalu memberikan hasil atau keluaran yang diinginkan. Agar program dapat dilaksanakan oleh komputer, program tersebut harus ditulis dalam suatu bahasa yang dimengerti oleh komputer. Karena komputer adalah mesin maka program harus ditulis dalam bahasa yang khusus dibuat untuk berkomunikasi dengan komputer. Bahasa komputer yang digunakan dalam menulis program dinamakan bahasa pemrograman. Jadi bahasa pemrograman yaitu kumpulan perintah-perintah bermakna, berstruktur tertentu (syntax) yang dapat dimengerti komputer yang berguna didalam penyelesaian masalah. Dalam pengertian luas pemrograman meliputi seluruh kegiatan yang tercakup dalam : - Pembuatan program, termasuk analisis kebutuhan (requirement's analysis) - Keseluruhan tahapan dalam perencanaan (planning) , perancangan (design) dan pewujudannya (implementation). Dalam pengertian yang lebih sempit, pemrograman merupakan : - Pengkodean (coding atau program writing = penulisan program) - Pengujiannya (testing) berdasarkan rancangan tertentu. Pemahaman yang lebih sempit ini sering digunakan dalam pembuatan program-program terapan komersial yang membedakan antara system analyst yang bertanggung jawab dalam menganalisa kebutuhan, perencanaan dan perancangan program dengan pemrogram (programmer) yang bertugas membuat kode program dan menguji kebenaran program.

GENERASI BAHASA PEMROGRAMAN Generasi Pertama : BAHASA MESIN Bahasa mesin adalah bahasa internal komputer yang mengeksekusi secara langsung tanpa terjemahan (translation). Disebut generasi pertama karena merupakan jenis yang paling awal dikembangkan: tahun 1940-an dan awal 1950-an semua program harus dikodekan dalam bahasa mesin Pemrograman dalam bahasa mesin : - Akan menyita waktu dan kondusif untuk membuat kesalahan - Berbeda untuk setiap jenis komputer, sehingga bergantung pada komputer dan tidak standar Semua program harus ada dalam bahasa mesin agar dapat dieksekusi, sehingga bahasa lain yang ditulis programer perlu diterjemahkan oleh komputer ke bahasa mesin untuk eksekusi. Generasi Kedua : BAHASA ASSEMBLY Penggunaan komputer secara komersial dikembangkannya bahasa assembly

tahun

1950-an

mengakibatkan

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 2

Ciri-Ciri bahasa assembly : - Kode ditandai dengan nama yang mudah diingat seperti ADD, SUB, dan MULT - Alamat penyimpanan (storage addresses) nyata di mana data ditempatkan dapat didefinisikan dengan nama-nama seperti AMT1 dan AMT2 untuk memudahkan rujukan Bahasa assembly sangat menyerupai bahasa mesin, sehingga untuk menjadi programmer bahasa assembly yang cakap kita harus memahami arsitektur mesin, yakni bagaimana mesin itu secara fisik memproses data. Sama seperti bahasa mesin, bahasa assembly tergantung komputer (tidak portable). Untuk menerjemahkan kode-kode diperlukan program khusus yang disebut ASSEMBLER. Bahasa assembly masih digunakan karena begitu mirip dengan bahasa mesin dengan kode yang sangat efisien Untuk membuat system software lebih disukai menggunakan bahasa assembly karena sangat efisiean dalam penggunaan komputer (butuh memori yang kecil) Generasi Ketiga : Bahasa Tingkat Tinggi Penggunaan komputer dalam bisnis berkembang sangat dramatis pada tahun 1950-an. Bahasa mesin dan assembly terlalu sulit, sehingga muncul third-generation languages (3GLs) yang lebih mudah untuk program dan portable. Disebut tingkat tinggi karena mudah dipelajari & program tingkat-tinggi memerlukan proses penerjemahan oleh komputer yang sangat rumit yang disebut COMPILER atau INTERPRETER Seperti generasi pendahulunya 1GL dan 2GL, 3GL disebut bahasa prosedural (4GL dan 5GL disebut bahasa nonprosedural), yakni program harus menentukan kumpulan instruksi yang tepat yang dibutuhkan untuk menyelesaikan tugas yang diberikan Contoh bahasa tingkat-tinggi : - FORTRAN (FORmula TRANslator) - Cobol - Pascal - BASIC - MODULA-2 - ADA - Object-oriented programming language Bahasa C disebut bahasa tingkat-menengah karena format instruksinya dengan bahasa tingkat-tinggi sekaligus bisa berinteraksi langsung dengan hardware PENERJEMAH BAHASA PEMROGRAMAN Untuk menterjemahkan bahasa pemrograman yang kita tulis maka diperlukan Interpreter & Compiler. Interpreter Menganalisis dan mengeksekusi setiap baris dari program tanpa melihat program secara keseluruhan. Keuntungan dari Interpreter adalah dalam eksekusi yang bisa dilakukan dengan segera. Tanpa melalui tahap kompilasi, untuk alasan ini interpreter digunakan pada saat pembuatan program berskala besar. Compiler Merupakan suatu program yang menterjemahkan bahasa program (source code) ke dalam bahasa objek (object code) secara keseluruhan program STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 3

Compiler memerlukan waktu untuk membuat suatu program yang dapat dieksekusi oleh komputer. Tetapi, program yang diproduksi oleh Compiler bisa berjalan lebih cepat dibandingkan dengan yang diproduksi oleh Interpreter, dan bersifat independen. PERBEDAAN COMPILER & INTERPRETER Compiler Interpreter Menterjemahkan secara keseluruhan Menterjemahkan intruksi per intruksi Bila terjadi kesalahan kompilasi maka Bila terjadi kesalahan interpretasi dapat source program harus diperbaikai dan di langsung diperbaiki kompilasi ulang Dihasilkan object program Tidak dihasilkan object program Dihasilkan executable program Tidak dihasilkan executable program Proses pengerjaan program lebih cepat Proses pengerjaan lebih lambat Source program tidak di pergunakan Seource program terus dipergunakan hanya bila untuk perbaikan saja Keamanan dari program lebih terjamin Keamanan dari program kurang terjamin Generasi Keempat Ciri-ciri : - Mudah untuk dipelajari dan dipahami - Tepat untuk pengaksesan database - Memfokuskan pada memaksimalkan produktivitas manusia dari pada minimisasi waktu computer - Nonprosedural - Tersedia dalam software paket yang dapat digunakan untuk mengembangkan aplikasi yang diinginkan Contoh: - Query language seperti SQL (structured query language), QBE (query-by-example) dan INTELLECT - Report generator - Application generator seperti MANTIS dan ADS Generasi Kelima Sering digunakan untuk akses database atau membuat sistem pakar (expert system) atau knowledge-based system Dalam konsep, ditujukan untuk bahasa alami (natural languages) yang semirip mungkin dengan hubungan kemanusiaan Contoh : LISP dan Prolog Sekarang ini banyak sistem pakar dikodekan baik dalam LISP maupun Prolog, meski untuk hal yang sama bisa ditulis dalam C atau C++. Usaha yang sekarang dilakukan adalah memperbaiki bahasa AI (artificial intellegence) dengan mengkombinasikan kemampuan terbaik dari LISP dan Prolog.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 4

BAB II SEJARAH / PERKEMBANGAN PASCAL


Merupakan pengembangan dari bahasa ALGOL 60, bahasa pemrograman untuk sains komputasi. Tahun 1960, beberapa ahli komputer bekerja untuk mengembangkan bahasa ALGOL, salah satunya adalah Dr. Niklaus Wirth dari Swiss Federal Institute of Technology (ETHZurich), yang merupakan anggota grup yang membuat ALGOL. Tahun 1971, dia menerbitkan suatu spesifikasi untuk highly-structured language (bahasa tinggi yang terstruktur) yang menyerupai ALGOL. Dia menamainya dengan PASCAL (seorang filsuf dan ahli matematika dari Perancis) Pascal bersifat data oriented, yaitu programmer diberi keleluasaan untuk mendefinisikan data sendiri. Pascal juga merupakan teaching language (banyak dipakai untuk pengajaran tentang konsep pemrograman). Jenis jenis pascal antara lain yaitu : a. Pascal yang didefinisikan oleh K. Jensen & Niklaus Wirth b. Pascal di Eropa didefinisikan oleh ISO (International Standards Organization) c. Di Amerika oleh kerjasama antara ANSI (America National Standard Institude) Saat ini pascal yang beredar di pasaran dan diminati oleh para programmer yaitu pascal yang didefinikan oleh K. Jensen dan Prof. Niklaus Wirth. PASCAL SEBAGAI BAHASA TERSTRUKTUR Sebagai bahasa terstruktur, PASCAL mempunyai ciri-ciri sebagai berikut : Berurutan Susunan dari kode-kode dalam teks Pascal harus ditulis secara urut dari atas, pernyataan-pernyataan yang ditulis lebih awal akan dieksekusi lebih dahulu. Oleh karena itu, suatu pernyataan yang menyangkut suatu variabel di dalam program, maka variable itu harus terdefinisi dahulu sebelumnya. Hal ini terutama menyangkut pada pemanggilan sub-program oleh sub-program yang lain. Bisa dibaca lebih lanjut pada bagian subprogram. Blok dengan batas-batas yang jelas. Pascal memberikan pembatas yang jelas pada tiap-tiap blok, seperti pada blok program utama, sub-program, struktur kontrol (pengulangan/pemilihan), dll. Pemakaian kata kunci begin untuk mengawali operasi pada blok dan end untuk menutupnya memudahkan programmer menyusun programnya dengan mudah. Satu pintu masuk dan satu pintu keluar pada blok pemilihan dan pengulangan. Contoh di atas juga mengilustrasikan pintu masuk tunggal pada suatu blok pemilihan dengan pintu keluaran yang satu pula (satu disini maksudnya bukan dua baris perintah output tapi suatu paket perintah yang dirangkai dengan begin .. end. STRUKTUR PROGRAM Struktur dari program pascal dapat dilihat di bawah ini : 1. Judul Program Judul Program 2. Blok Program a. Bagian deklarasi - deklarasi label Bagian Deklarasi - definisi konstanta - definisi tipe - deklarasi variable - deklarasi prosedur Bagian Pernyataan STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur - deklarasi fungsi b. Bagian pernyataan

Hal : 5

PROGRAM PASCAL YANG PALING SEDERHANA Suatu program pascal yang paling sederhana adalah program yang hanya terdiri dari sebuah bagian pernyataan saja. Bagian pernyataan (statement part) merupakan bagian yang terakhir dari suatu blok. Bagian ini diawali dengan kata cadangan (reserved word) Begin dan diakhiri dengan kara cadangan End. Begin End. Contoh 2.1 Program pascal sederhana Begin Writeln(saya pascal) End. Contoh 2.2 Program pascal sederhana Jika program contoh 2.2 dijalankan maka akan tampak hasil di layar sebagai berikut : saya pascal PENULISAN PROGRAM PASCAL Program Pascal tidak mengenal aturan penulisan di kolom tertentu, jadi boleh ditulis mulai kolom ke berapapun. Contoh : Begin Writeln(Saya Pascal) ; Writeln(--------------) End. Bisa juga ditulis Begin Writeln(Saya Pascal) ; Writeln(--------------) End. JUDUL PROGRAM Pada Turbo Pascal, judul program sifatnya optional dan tidak signifikan di dalam program. Jika ditulis dapat digunakan untuk memberikan nama program dan daftar dari parameter tentang komunikasi program dengan lingkungannya yang sifatnya sebagai dokumentasi saja. Judul program bila harus ditulis terletak pada awal program dan diakhiri dengan titik koma. Contoh : Program Contoh1 ; Begin Writeln(Saya Pascal) ; Writeln(--------------) End. diakhiri dengan titik koma

BAGIAN DEKLARASI Bagian deklarasi digunakan bila di dalam program menggunakan pengenal (identifier) Identifier dapat berupa label, konstanta, tipe, variable, prosedur dan fungsi. DEKLARASI KONSTANTA STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 6

Bila kita ingin menggunakan identifier yang berisi nilai-nilai konstanta yang bernilai tetap (tidak berubah selama program berjalan), maka diawali dengan kata cadangan Const diikuti oleh kumpulan Identifier yang diberi suatu nilai konstanta. Program Contoh_Konstanta; Const NamaPerusahaan = STMIK Budidarma ; Alamat = Jln. Djamin No 133 ; Begin Writeln(Nama Perusahaan : , NamaPerusahaan); Writeln(Alamat : , Alamat); End. Contoh 2.3 Program pascal sederhana Bila program dijalankan, maka akan didapatkan hasil : Nama Perusahaan Alamat : STMIK BUDIDARMA : Jln. Djamin No 133

DEKLARASI VARIABEL Jika konstanta merupakan identifier berisi data konstanta yang nilai sudah ditentukan dan pasti, tidak dapat dirubah di dalam program, maka variable adalah identifier yang berisi data yang dapat berubah-ubah nilainya di dalam program. Kata cadangan Ver digunakan sebagai judul di dalam bagian deklarasi variable dan diikuti oleh satu atau lebih identifier yang dipisahkan koma, diikuti dengan titik dua dan tipe dari datanya serta diakhiri dengan titik koma. Program Contoh_Variabel ; Var Nama : String[15] ; Harga, Jumlah : Longint ; Nilai : Real ; BEGIN { Memasukkan Data } Nama := Semen ; { pengisian nilai Semen ke Nama } Harga := 25000 ; { pengisian nilai 25000 ke Harga } Jumlah := 10 ; { Memproses Data } Nilai := Harga * Jumlah ; { Menampilkan Data yang telah diproses } Writeln(Nama Barang : , Nama) ; Writeln(Harga : , Harga) ; Writeln(Jumlah : , Jumlah) ; Writeln(Nilai Barang : , Nilai) ; END. Contoh 2.4 Contoh pendeklarasian Variabel Bila program dijalankan maka akan didapat hasil seperti berikut : Nama Barang : Semen STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Harga Jumlah Nilai Barang : 25000 : 10 : 250000

Hal : 7

DEKLARASI TYPE Suatu identifier yang akan dipergunakan dalam program Pascal harus disebutkan tipenya terlebih dahulu. Pascal menyediakan beberapa macam tipe data, terdiri dari : a. Tipe data sederhana (simple-type data), terdiri dari 1. Tipe data standar (standard data type) - Integer - Real - Char - Boolean 2. Tipe data didefinisikan pemakai (user defined data type) - Enumerated atau scalar type - Subrange type b. Tipe data terstruktur (structured type), terdiri dari - Array ( termasuk didalamnya string ) - Record - File - Set c. Tipe data penunjuk (pointer type data) Program Contoh_Type_Variabel ; Type menggunakan = Pecahan= Real ; Bulat =Longint ; Huruf =String[15]; Var menggunakan : Nama : Huruf ; Harga, Jumlah : Bulat ; Nilai : Pecahan ; Begin Nama := Semen ; Harga := 25000 ; Jumlah := 10 ; Nilai := Harga * Jumlah ; Writeln(Nama Barang : , Nama) ; Writeln(Harga : , Harga) ; Writeln(Jumlah : , Jumlah) ; Writeln(Nilai Barang : , Nilai) ; End. DEKLARASI LABEL Digunakan pada saat kita menggunakan statement GoTo untuk meloncat ke suatu statemen yang tertentu. Mendeklarasikan label di awali dengan kata cadangan Label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan diakhiri dengan titik koma. Program Contoh_Label; Label Start, Selesai ; Identifier Label Begin Writeln(Bahasa) ; Goto Start ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Writeln(Basic) ; Writeln(Cobol) ; Start : Writeln(Pascal) ; Goto Selesai ; Writeln(Fortran) ; Selesai : End. Contoh 2.5 Contoh penggunaan Label Jika program ini di jalankan, akan didapatkan hasil : Bahasa Pascal

Hal : 8

Label yang dituju ;

DEKLARASI PROCEDURE Merupakan bagian yang terpisah dari program dan dapat diaktipkan dimanapun di dala program. Prosedur dapat berupa prosedur standar (sudah disediakan Pascal) maupun prosedur yang akan dibuat sendiri oleh pemakai. Kata cadangan Procedure digunakan sebagai judul dari bagian deklarasi prosedur, diikuti oleh identifier yang akan merupakan nama dari prosedurnya. Program Contoh_prosedur ; Procedure Tambah(x,y : integer ; val Hasil : integer) ; Begin Hasil := x + y ; End; Var z : Integer ; Begin Tambah(5, 6, z) ; Writeln(5 + 6 = , z ); End. Contoh 2.6 Contoh Program procedure Jika program ini di jalankan, akan didapatkan hasil : 5 + 6 = 11 DEKLARASI FUNCTION Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada beberapa perbedaannya. Fungsi dapat berupa fungsi standar (sudah disediakan oleh pascal) atau fungsi yang akan dibuat sendiri oleh pemakai. Kata cadangan Function mengawali bagian deklarasi fungsi diikuti oleh identifier yang merupakan nama dari fungsinya dan secara optional dapat diikuti dapat diikuti oleh kumpulan parameter, tipe dari fungsinya dan diakhiri dengan titik koma. Program Contoh_Function ; Function Hasil(x,y : integer ) : integer ; Begin Hasil := x + y ; End; Begin STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Writeln(5 + 6 = , Hasil(5, 6) ); End. Contoh 2.7 Contoh Program Function Jika program ini di jalankan, akan didapatkan hasil : 5 + 6 = 11

Hal : 9

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 10

BAB III ELEMENELEMEN PROGRAM PASCAL


Pascal mempunyai elemen-elemen sebagai berikut : Simbol dasar (basic words) Kata-kata cadangan (reserved words) Pengenal didefinisikan oleh pemakai (user define identifier) Tipe data Karakter kontrol (control character) Tanda operasi (operator) Komentar program (comment) Statemen (statement) Prosedur (procedure) Bab tersendiri Fungsi (function) Bab tersendiri SIMBOL-SIMBOL DASAR Program pascal dibentuk dari simbol-simbol yang terdiri dari : - Huruf : a..z , A..Z - Angka : 0..9 - Simbol Khusus : +-*/ =^()[]{}.,:;#$ Ex. Writeln(Jln. Djamin No 133 Telp. 7222702) ;

KATA-KATA CADANGAN Kata cadangan atau reserved words adalah kata-kata yang sudah didefinisikan oleh Pascal yang mempunyai maksud tertentu. Kata-kata cadangan tidak boleh didefinisikan ulang oleh pemakai, sehingga tidak dapat dipergunakan sebagai pengenal (identifier). Adapun kata-kata cadangan itu antara lain yaitu : * Absolute And Array Begin Case Const Div Do Downto Else End * External File For Forward Function Goto If * Implementation In * Inline * Interface * Interrupt Label Mod Nil Not Of Or Packed Procedure Program Record Repeat Set * Shl * Shr * String Then To Type * Unit Until * Uses Var While With * Xor

Kata cadangan yang diberi tanda * menunjukkan kata-kata cadangan yang tidak ada di standar Pascal. PENGENAL DIDEFINISIKAN PEMAKAI. Nama yang dipergunakan dalam program pascal disebut dengan pengenal (identifier). Pemakai dapat mendefinisikan sendiri suatu nama sebagai pengenal, tetapi dengan ketentuan sebagai berikut : Gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Huruf besar dan kecil dianggap sama. Tidak boleh ada spasi Tidak boleh ada simvol-simbol khusus, kecuali garis bawah. STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur -

Hal : 11

Panjang bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan.

Example : GajiKaryawan No_Mhs P3K 1X A&B A B

: Benar : Benar : Benar : Salah : Salah : Salah

Contoh Mendeklarasikan Variabel diatas : Var P3K : Integer ; GajiKaryawan : Real ; No_Mhs : String[8] ; TIPE DATA Tipe data yang disediakan oleh PASCAL meliputi: Tipe Data Sederhana Merupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan bulat), real (bilangan pecahan), char (alphanumerik dan tanda baca), dan boolean (logika). Untuk data integer dan real masing-masing terbagi menjadi beberapa kategori a. Bilangan INTEGER Merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat dalam tabel yang menunjukkan jenis data, ukuran dalam memori dan rentang nilainya. Tipe Data Ukuran Tempat Jangkauan Byte 1 byte 0 s/d +255 Shortint 1 byte -28 s/d +127 Integer 2 bytes -32768 s/d 32767 Word 2 bytes 0 s/d 65535 Longint 4 bytes 2147483648 s/d 2147483647 Contoh bilangan integer 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 - 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 berikut. STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Tipe Data real single double extended comp Ukuran Tempat 6 bytes 4 bytes 8 bytes 10 bytes 8 bytes Jangkauan 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

Hal : 12

c. Bilangan Char Tipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 255 macam yang terdapat dalam tabel ASCII (American Standard Code for Information Interchange). Contoh: 'a' 'B' '+', dsb. Yang perlu diingat bahwa dalam menuliskannya harus dengan memakai tanda kutip tunggal. Jenis data ini memerlukan alokasi memori sebesar 1(satu) byte untuk masing-masing data.

d. Bilangan 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. Tipe Variabel Boolean WordBool Longbool Ukuran Tempat 1 byte 2 byte 3 byte

Tipe Data Terstruktur Tipe ini terdiri atas : Array, Record, Set, dan File. String adalah tipe data jenis array, tetapi karena string memiliki kekhasan tersendiri sebagai array dari karakter maka penulis perlu memberikan penjelasan tersendiri. Sedangkan untuk array, record, dan file perlu dijelaskan dalam bab yang lain karena agak banyak hal-hal yang perlu dibahas. a. Type Data STRING (ARRAY) Merupakan suatu data yang menyimpan array (larik), sebagai contoh 'ABCDEF' merupakan sebuah konstanta string yang berisikan 6 byte karakter. Ukuran Tempat untuk tipe data ini adalah 2 s/d 256 byte, dengan jumlah elemen 1 s/d 255. String dideklarasikan dengan string [ konstanta ] atau string. Bila ukuran string tidak didefinisikan maka akan banyak memakan ruang, karena ukuran string menyesuaikan dengan defaultnya. Misalkan : var kata : string [20] ; atau var kata : string;

Karena string merupakan array dari karakter. Maka kata[1] merupakan karakter pertama dari string, kemudian kata[2], merupakan elemen kedua, dst. b. Type Data SET Sebuah set merupakan suatu himpunan yang berisi nilai (anggota). set merupakan Tipe data yang khusus untuk Pascal. Set dalam pemrograman sangat mirip dengan himpunan dalam ilmu matematika, Contoh: A = { 1, 2, 3, 4, 5 } STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Syntax : set of contoh: Type Digits = set of 0..9 ; Letters = set of 'A'..'Z'; Day = (Sun, Mon, Tue, Wed, Thu, Fri, Sat); CharSet = set of Char; Digits = set of 0..9; Days = set of Day; EvenDigits : Digits = [0, 2, 4, 6, 8]; Vowels : Letters = ['A', 'E', 'I', 'O', 'U', 'Y'];

Hal : 13

Type

Const

Untuk type data Record, Pointer, File akan dibahas pada bab khusus Example 1: Program Masuk1(layar) ; Var A, B : Integer ; C : Real ; D : String[10] ; E : Char ; Begin { Memasukkan data untuk masing-masing variabel } Readln(A) ; Readln(B) ; Readln(C) ; Readln(D) ; Readln(E) ; { Menampilkan data untuk masing-masing variabel } Writeln(A) ; Writeln(B) ; Writeln(C) ; Writeln(D) ; Writeln(E) ; End. Contoh 3.1 Contoh penggunaan tipe Variabel KARAKTER KONTROL Turbo Pascal memungkinkan karakter-karakter kontrol untuk dilekatkan di dalam suatu string. Karakter - Simbol # : yang diikuti nilai interger antara 0 s.d 255 untuk menunjukkan suatu karakter ASCII #7 : ASCII 7 adalah Bel #65 : ASCII 65 adalah karakter A #10 : ASCII 10 adalah Line Feed #13 : ASCII 13 adalah Carriage Return Simbol ^ ^G : diikuti oleh suatu karakter, menunjukkan hubungannya dengan karakter kontrol. : Control G berarti Bel, sama dengan ASCII 7 STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur ^M ^[ : Control M berarti Carriage Return, sama dengan ASCII 13 : Control [ berarti Escape

Hal : 14

TANDA OPERASI 1. Assignment Operator Merupakan operator pengerjaan menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=). Ex : A := B 2. Binary Operator Merupakan tanda operasi Biner karena operator ini digunakan untuk mengoperasikan dua buah operand. Dapat berbentuk konstanta atau variabel, yang digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real. Operator * Operasi Perkalian Tipe Operand Real, real Integer, integer Real, integer Integer, integer Real, real Integer, integer Real, integer Integer, integer Real, real Integer, integer Real, integer Real, real Integer, integer Real, integer Tipe Hasil Real Integer real integer Real Real Real Integer Real Integer real Real Integer Real

DIV /

Pembagian Bulat Pembagian Real

MOD +

Modulus (sisa Pembagian Pertambahan

Perngurangan

3. Unary Operator Dikatakan Unary karena hanya menggunakan sebuah operand saja. Dapat berupa unary minus dan unary plus. Berguna untuk menunjukkan variabel tersebut bernilai positip atau negatip 4. Bitwise Operator Digunakan untuk operasi bit pada nilai integer, yaitu terdiri dari : NOT AND OR XOR Shl Shr 5. Relational Operator Merupakan operator hubungan yang digunakan untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe Boolean yaitu True dan False. Operator Operasi Sama dengan = Tidak sama dengan <> Lebih besar dari > Lebih besar sama dengan dari >= Lebih kecil dari < Lebih kecil sama dengan dari <= Seleksi dari anggota himpunan IN

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 15

6. Logical Operator Terdapat 4 buah operator logika yaitu Not, And, Or, Xor. Bentuk operator ini sama dengan bitwise operator, tetapi penggunaannya lain. Logical operator bekerja dengan nilai-nilai logika, yaitu True dan False 7. Address Operator Berguna untuk pengaksesan alamat yang terdapat di memory yaitu address-of operator (@) dan indirection operator (^). Operator @ akan menghasilkan alamat dari suatu bilai variabel dan operator ^ akan memberikan nilai di alamat yang ditunjukkan. 8. Set Operator Digunakan untuk operasi himpunan. + : Union : Perbedaan Himpunan * : Perkalian Himpunan

9. String Operator Digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabung dua buah nilai string. Example 2 : Var Nama1, Nama2, Nama3 : String[15] ; Begin Nama1 := Arief ; Nama2 := Kurniawan ; Nama3 := Nama1 + Nama2 ; Writeln(Nama3) ; End. Contoh 3.2 Contoh String Operator Arief Kurniawan KOMENTAR PROGRAM Digunakan hanya sebagai dokumentasi saja, agar program mudah dibaca. Suatu komenter program ditulis dengan pembatas { dan } atau pembatas (* dan *) Example 3 : { Ini adalah komentar program untuk memberi keterangan atau penjelasan program sehingga baik untuk dokumentasi } Begin { awal program utama } writeln(Just Komentar) End. (* akhir program utama *) Contoh 3.3 Komentar Program Just Komentar

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 16

STATEMEN Merupakan perintah pengerjaan program. Kumpulan dari statement membentuk suatu program. Bila suatu program pascal tidak mengandung suatu statement maka tidak akan ada yang dikerjakan oleh program. Statement terletak dibagian deklarasi yang diawali oleh kata cadangan Begin dan ditutup dengan kata cadangan End . Masing-masing statement diakhiri dengan titik koma (;). Didalam program pascal statement terdiri dari statement sederhana (simple statement) dan statement terstruktur (Structured statement). LATIHAN 1. Perhatikan listing program di bawah ini, carilah mana dari penggunaan variable dan statemen yang salah. Uses Crt; Var Nama : String[20]; Kd : String[5]; Jm l : Intger 1Hrg, Disc, Byr : Real; Begin Clrscr; Write ( Kode Barang Write ( Nama Write (Jumlah Write (Harga Byr := Jm l * 1Hrg; Disc := 0,15 * Byr Clrscr; Writeln (Daftar Penjualan TOKO LARIS ); Writeln (SEMARANG ); Writeln (======================== ); Writeln (Nama : , Nm ); Writeln (Kode : , Kd ); Writeln (Jumlah : , Jml ); Writeln (Harga Rp : , Hrg : 8:2); Writeln (Total Harga Rp : , Byr : 8:2); Writeln (Discount Rp : , Disc : 8:2); Writeln (Total Pembayaran Rp. : , ( Byr + Disc) : 8:2); End.

: : : :

); ); ); );

Readln (Kd); Readln (Nam) Readln (Jml); Readln (1Hrg);

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 17

BAB IV
SEKILAS EDITOR PASCAL Untuk menggunakan Pascal kita harus menyediakan File-file pendukung pascal itu sendiri diantaranya : TURBO.* Turbo.Exe, Turbo.TP, Turbo.TPL, Turbo.HLP Turbo.Exe Merupakan file Editor pascal. Sehingga bila kita ingin menggunakan Pascal cukup Ketikkan : C:\Pascal5\Turbo [Enter] Turbo.TP file yang berguna untuk menyimpan seting dari Turbo Pascal kita. Turbo.TPL merupakan file yang sangat berguna untuk meLINK program atau mengcompile program sebelum di jalankan. Jika file ini tidak ada maka akan berakibat file tidak akan bisa di compile. Turbo.HLP merupakan file yang membantu kita mengenai penjelasan perintahperintah tertentu (sebagai HELP) *.CHR Merupakan file yang berekstensi .CHR yang berguna untuk pengaturan Character di dalam pemrograman yang berorientasi dengan grafik. Pascal menyediakan 10 jenis huruf dan tiap-tiap huruf tersebut terletak pada File-file CHR tersebut. *.BGI Borland Grafik Interface berguna untuk mengaktifkan mode berbentuk Grafik. Biasanya cukup satu file saja yang di butuhkan yaitu EGAVGA.BGI *.TPU yaitu Turbo Pascal Unit yang berguna untuk unit pembantu misal pada saat kita menggunakan Mode Grafik maka kita memerlukan File Graph.TPU MENGGUNAKAN PASCAL Pascal yang kita gunakan disini ada beberapa jenis bisa Pascal versi 5, atau Pascal versi 7 atau yang lainnya. Tetapi setiap versi tersebut nama file Executable tetap sama yaitu TURBO. Jadi bila kita menggunakan Pascal cukup cari File Turbo.EXE dan Double Click file tersebut (Windows). Jika kita menggunakan Dos maka ketikkan : C:\TURBO [Enter] Jika ada terdapat direktori maka anda harus masuk dahulu ke direktori tersebut. Contoh C:\Pascal5\TURBO [Enter] C:\TP\BIN\TURBO [Enter] Setelah anda ketikkan perintah tersebut atau double click file Turbo.Exe maka akan muncul suatu Editor Pascal, seperti gambar di bawah ini.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 18

Editor diatas merupakan tampilan dari Pascal Versi 7.0 untuk menghilangkan kotak About cukup tekan ESC. Untuk pascal versi 5 perintah-perintah menunya hampir sama. Tetapi akan lebih menguntungkan jika kita menggunakan versi yang lebih tinggi, dikarenakan banyak menawarkan fasilitas-fasilitas yang sangat baik. MEMBUAT PROGRAM BARU Pada memasuki pascal secara otomatis akan terbentuk file baru dengan Default Name yaitu : NONAME00.Pas. Untuk membuat program baru cukup pilih menu FILE dengan cara tekan Alt + F, pilih New.

Sehingga muncul kembali editor Noname01.Pas (jika kita tidak menutup Noname00.Pas) MENYIMPAN PROGRAM Setelah program selesai diketik, kita bisa menyimpan program kita ke Disk atau Hardisk dengan memilih menu FILE dengan cara tekan Alt + F, pilih Save F2.

Atau kita bisa langsung dengan menekan F2 tanpa memilih menu FILE. Setelah kita kita pilih Save atau tekan F2 maka akan keluar dialog Save.

Untuk menyimpan ke Hardisk cukup ketikkan saja nama filenya Seperti : Test kemudian tekan [Enter] Jika ingin menyimpan ke Disk cukup ketikkan A: sebelum nama File seperti A:Test kemudian tekan [Enter] Notes : Save As berguna untuk menyimpan dengan nama yang baru. Save All berguna untuk menyimpan seluruh program yang telah terbuka (pada versi 7.0) MEMBUKA PROGRAM Untuk membuka program yang telah kita ketikkan sebelumnya yaitu dengan cara memilih menu FILE (Alt+F) kemudian pilih OpenF3 atau cukup dengan menekan F3 dan akan keluar dialog Open

Untuk memilih file cukup tekan [Enter] pada dialog open dan kemudian kita bisa memilih dengan menekan tombol Panah. Atau kita bisa mengetikkan nama file jika kita mengetahui file yang akan kita buka. Untuk membuka file yang berada di Disk cukup ketikkan A: *.Pas [Enter] (kita tinggal menyebutkan Nama Direktori)

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur KELUAR KE LAYAR DOS Untuk keluar ke layar DOS cukup pilih DOS Shell pada menu FILE

Hal : 19

Jika kita telah berada pada layar DOS maka untuk kembali ke Pascal cukup ketikkan Exit.

KELUAR DARI PASCAL Untuk keluar dari pascal cuku tekan Alt + X. atau dengan menekan memilih Exit pada menu File. Pada Pascal 5 kita memilih Quit dari Menu(Alt + Q) . Notes : Change Dir Print Printer Setup untuk mengganti direktory Aktif. untuk mencetak program yang sedang aktif di layar Editor. untuk mengatur setting Printer.

KOMPILASI PROGRAM Setelah program di ketik, sebelum di jalankan maka kita harus melakukan Compile terhadap Program dengan cara : Menekan Alt + F9 (bisa F9 saja) atau memilih perintah Compile pada menu COMPILE

MENJALANKAN PROGRAM Jika pada saat kita mengcompile program tidak muncul pesan kesalahan, maka kita bisa menjalankan program dengan perintah Run pada menu RUN. Atau cukup menekan Ctrl + F9.

MEMBUAT EXECUTABLE Untuk bisa menggunakan program pada media DOS atau Windows, maka kita perlu untuk membuat Executable program. Dengan cara. 1. Rubah Destination Memory menjadi Destination Disk Caranya cukup pilih menu COMPILE kemudian pilih Destination sendirinya akan berubah menjadi DISK.

Memory. Dengan

2. Kemudian anda tinggal menekan F9. Perhatikan proses Compile Destination menjadi Disk.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 20

BAB V
STATEMEN INPUT- OUTPUT MEMASUKKAN DATA Cara yang paling banyak digunakan untuk memasukkan data adalah dengan cara mengetikkannya lewat keyboard. Turbo Pascal menyediakan prosedur untuk maksud tersebut, yaitu prosedur Read, Readln dan Readkey. Prosedur standar Readln bekerja dengan membaca data yang diketikkan melalui keyboard dan diakhiri dengan penekanan enter. Readln juga untuk memasukkan data perbaris, artinya setelah anda menekan tombol Enter, maka akan ganti baris, sedang prosedur standar Read tidak ganti baris, masih dalam baris yang sama. Sedangkah prosedur standar Readkey membaca data yang ditekan dari keyboard tetapi hanya satu karakter saja. Example 1 : Var C, F : Real ; Begin Write(Berapa Celcius ? ) ; Readln(C) ; F := 1.8 * C + 32 ; Writeln ; Writeln(C, Celcius adalah : , F , Fahrenheit ) ; End. Contoh 5.1 Contoh memasukkan data Berapa Celcius ? Example 2 : Var Jawab_C : Char ; Jawab_B : Boolean ; Begin Write( Benar atau Salah (B/S) ? ) ; Readln(Jawab_C) ; Jawab_B := (Jawab_C = B) ; Writeln(yang anda maksud adalah : , Jawab_B) ; End. Contoh 5.2 Contoh memasukkan data Benar atau Salah (B/S) ? MENAMPILKAN OUTPUT Untuk menampilkan hasil dengan bahasa Pascal digunakan prosedur standar Write dan Writeln . Perbedaannya adalah Write menampilkan hasil tanpa ganti baris dan tampilan berikutnya akan disambung dalam baris yang sama, sedangkan prosedure standar WriteLn digunakan untuk menampilkan tampilan perbaris, akan ganti baris untuk tampilan berikutnya. Example 3 : Var Nama : String[15] ; Begin Nama := Dewi ; Write(Nama : ) ; Write(Nama) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur End. Contoh 5.3 Contoh memasukkan data Nama : Dewi Example 4 : Var Nama : String[15] ; Begin Nama := Dewi ; Writeln(Nama : ) ; Writeln(Nama) ; End. Contoh 5.4 Contoh memasukkan data Nama : Dewi

Hal : 21

Bandingkanlah hasil dari program 5.3 dan program 5.4. Akan tampak sangat jelas sekali perbedaan antara kedua program tersebut dikarenakan penggunaan dari statement Write & Writeln.

PENGATURAN LETAK DI LAYAR PROSEDUR CLRSCR Digunakan untuk membersihkan layar dari tampilan-tampilan sebelumnya dan meletakkan cursor di posisi ujung kiri atas dari layar. Prosedur standar ini bila digunakan harus menyebutkan terlebih dahulu unit standar Crt. Example 5: Uses Crt ; Begin ClrScr ; Writeln(Bahasa Pascal) ; End. Contoh 5.5 Membersihkan layar. Coba Anda Hilangkan statemen Uses Crt ; dan jalankan program ! Jelaskan ? PROSEDUR GOTOXY Digunakanuntuk meletakkan cursor diposisi layar yang ditunjukkan oleh nilai xPos dan yPos. Nilai xPos menunjukkan posisi sumbu X (horisontal, kolom 1 sampai 80) sedangkan nilai yPos menunjukkan sumbuY (vertikal, posisi baris 1 sampai 25). Prosedur standar ini bila digunakan harus menyebutkan terlebih dahulu unit standar Crt. Example 6: Uses Crt ; Begin ClrScr ; GotoXY(10,15) ; Writeln(Bahasa Pascal) ; End. Contoh 5.6. menggunakan prosedur GotoXY Akan tampak di layar monitor pada kolom 10 dan baris 15 tulisan Bahasa Pascal STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 22

PENGATURAN WARNA Pascal menyediakan 5 buah prosedur standar yang dapat digunakan untuk mengatur warna tampilan teks di layar, yaitu : TextColor, TextBackground, LowVideo, NormVideo, Highvideo. Penggunaan prosedur diatas melibatkan unit Crt. Nilai Warna Nilai Warna 0 Black 8 DarkGray 1 Blue 9 LightBlue 2 Green 10 LightGreen 3 Cyan 11 LightCyan 4 Red 12 LightRed 5 Magenta 13 LightMagenta 6 Brown 14 Yellow 7 LightGray 15 White 128 Blink Example 7 : Uses Crt ; Begin TextColor(4) ; TextBackGround(15) ; ClrScr ; TextColor(Blue) ; GotoXY(10,6) ; Writeln(Tulisan ini berwarna Biru) ; TextColor(0) ; GotoXY(20,7) ; Writeln(Tulisan ini berwarna Hitam) ; TextColor(14) ; GotoXY(30,8) ; Writeln(Tulisan ini berwarna Kuning) ; TextColor(1+128) ; GotoXY(40,9) ; Writeln( dan ini berwarna Biru berkedip) ; End. Contoh 5.7. menggunakan prosedur TextColor & TextBackGround

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur LATIHAN 1. Simpan dengan nama: Latih51.Pas Program Penjualan; { Heading program } Uses Crt; Var {Bagian Deklarasi } Nama : String[20] ; Kode : String[5] ; Jumlah : Integer ; Harga, Bayar : Real ; Begin (* Bagian Pernyataan *) (* ========= Input ========= *) Clrscr; (* Menghapus layar *) Write (Masukkan Nama Barang Write (Masukkan Kode Barang Write (Masukkan Jumlah Barang Write (Masukkan Harga Barang (* ========= Proses ========= *) Bayar := Jumlah * Harga; (* ========= Keluaran ======== *) Clrscr; Writeln (Daftar Penjualan TOKO BUDIDARMA ); Writeln (MEDAN ); Writeln (======================== ); Writeln (Nama Barang = , Nama ); Writeln (Kode Barang = , Kode ); Writeln (Jumlah Barang = , Jumlah ); Writeln (Harga Barang = , Harga : 8:2); Writeln (Jumlah Pembayaran = , Bayar : 8:2); Readln; End. Jelaskan Kegunaan dari Readln diatas Statemen End. 2. Simpan dengan nama: Latih52.Pas Uses Crt; Var Warna : byte; Begin Warna :=3; Clrscr; Window(40,5,70,25); Textcolor(Warna); Write(Informatika oh yess..); End. Jelaskan Arti dari Statemen Window 3. Simpan dengan nama: Latih53.Pas Program LuasLingkaran ; Uses Crt; Var Jari : Real ;

Hal : 23

= ); = ); = ); = );

Readln (Nama); Readln (Kode); Readln (Jumlah); Readln (Harga);

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Luas : integer ; Begin Clrscr; Write (Masukkan Jari-jari ke Lingkaran : ); Readln (Jari); Luas := 3.14 * jari *jari ; Writeln (Luas Lingkaran adalah = , Luas : 8:2); Readln; End. 4. Simpan dengan nama: Latih54.Pas Uses Crt; Var Nm : String[20]; Kd : String[5]; Jml : integer; Hrg, Disc, Byr : Real; Begin Clrscr; Write ( Kode Barang : ); Write ( Nama : ); Write (Jumlah : ); Write (Harga : ); Byr := Jml * Hrg; Disc := 0.15 * Byr ; Clrscr; Writeln (Daftar Penjualan TOKO LARIS ); Writeln (SEMARANG ); Writeln (======================== ); Writeln (Nama : , Nm ); Writeln (Kode : , Kd ); Writeln (Jumlah : , Jml ); Writeln (Harga Rp : , Hrg : 8:2); Writeln (Total Harga Rp : , Byr : 8:2); Writeln (Discount Rp : , Disc : 8:2); Writeln (Total Pembayaran Rp. : , ( Byr Disc) : 8:2); Readln; End.

Hal : 24

Readln (Kd); Readln (Nm); Readln (Jml); Readln (Hrg);

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 25

TUGAS PRAKTIKUM Semua latihan dibawah ini anda gunakan prosedure GotoXy, Clrscr & pengaturan Warna. 1. Buatlah program untuk menghitung Luas Persegi Panjang. (Tugas51.Pas) 2. Buatlah program untuk mencari Luas trapesium ? (Tugas52.Pas) Rumus : Luas = (sisi pendek + sisi panjang ) / 2 x tinggi 3. Buatlah program untuk menghitung Volume Bola. (Tugas53.Pas) Rumus : Volume = 4/3 x 3.14 x jari3 4. Buatlah Program dengan Layout di bawah ini. DAFTAR NILAI MAHASISWA JURUSAN INFORMATIKA ======================================= Nama Mahasiswa : .. NIM Mahasiswa : .. Nilai Tugas : Nilai Mid Test : Nilai Final Test : Rata Rata : ======================================= Ketentuan Program : a. Nama, NIM, Nilai Tugas, Nilai Mid Test dan Nilai Final Test diperoleh dari input b. Sedangkan rata-rata diperoleh dari rumus: Rata-rata = 0,5 x Nilai Tugas + 0,25 x Nilai Mid Test + 0,25 x Nilai Final Test c. Text Judul Warna Merah, Background warna biru Simpan dengan nama : Tugas54.Pas 5. Buatlah program untuk menghitung jumlah harga photo Copy. (Tugas55.Pas)

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 26

BAB VI STATEMEN KENDALI


Di dalam tehnik pemrograman kita mengenal adanya structure programming. Pada dasarnya struktur programming disusun berdasarkan statement yang terstruktur pula. Terdapat 3 proses eksekusi utama di dalam structure programming, yaitu : o Proses secara Sequential (berurutan) o Proses secara Selection/Decision (menggunakan statement kendali, merupakan inti pembahasan bab ini) o Proses secara Repetition (perulangan / Bab VII)

yang

PROSES SEQUENTIAL (Berurutan) Proses secara sequential terjadi bila proses berjalan dari atas ke bawah dan dikerjakan dari baris-perbaris. Dengan kata lain proses dikerjakan urut kebawah Proses sequential dibagi dalam dua macam yaitu : STATEMEN TUNGGAL Yaitu jika dalam sebuah lokasi hanya terdapat sebuah statement. Example 1 : Uses Crt ; Var A : Longint ; Begin Writeln(Nilai A : ) ; Readln (A) ; If A > 10 then Write (baris ke I) { Statement Tunggal } Else Write(Nilai A,Kecil ) ; End. Contoh 6.1 : Program dengan Statemen Tunggal STATEMEN MAJEMUK Yaitu Statement jenis ini sering juga disebut compound statement. Pengertiannya adalah statement yang terdiri dari sejumlah statement (sekelompok statement) yang akan dieksekusi dengan urutan yang sama. Sekelompok statement ini dapat dianggap sebagai satu statement. Statement Majemuk ditandai dengan BEGIN dan di akhiri dengan END; . Example 2 : Uses Crt Var A : Longint ; Begin Writeln(Nilai A : ) ; Readln (A) ; If A > 10 then Begin Write(AKU .. ) Write(Senang Makan .); A:=A+1 End; End. Contoh 6.2 : Program dengan Statemen Majemuk

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 27

PROSES DECISION (Kendali) Statement kendali digunakan untuk proses pengambilan keputusan. Dimana proses akan dikerjakan bila kondisi yang disyaratkan sesuai (bernilai true/benar). Pada Pascal terdapat dua statement kendali yaitu : o IF o CASE STATEMEN IF Struktur dari statemen If dapat berupa If-Then, If-Then-Else, If Kondisi Jamak KONDISI TUNGGAL yaitu Struktur If-Then Syntax : If ungkapan Then Statemen Example 3 : Var NilaiUjian : Real ; Ket : String[11] ; Begin Ket := Tidak Lulus ; Write(Nilai yang didapat

?) ; Readln(NilaiUjian) ;

If NilaiUjian > 60 Then Ket := Lulus; Writeln(Ket) ; End. Contoh 6.3 : Program If Kondisi Tunggal KONDISI GANDA Yaitu Struktur If-Then-Else Syntax : If Kondisi Then Statemen1 Else Statemen2 ; Notes : diatas penulisan Else tidak menggunakan ; Example 4 : Var NilaiUjian : Real ; Begin Write(Nilai yang didapat ?) ; Readln(NilaiUjian) ; If NilaiUjian > 60 Then Writeln(Lulus ?) Else Writeln(Tidak Lulus) ; {Penulisan ; untuk mengakhiri Fungsi dari IF} End. Contoh 6.4 : Program If Kondisi Ganda KONDISI JAMAK Yaitu Struktur If-Then Else If-Then-Else If-Then-Else Syntax : If Kondisi Then Statemen1 Else If Kondisi2 Then Statemen2 Else If Kondisi3 Then Statemen3 ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 28

Digunakan untuk mengecek nilai suatu kondisi, jika kondisi bernilai benar atau salah, maka akan mengerjakan statement yang bersesuaian. ; terakhir untuk menutup if secara keseluruhan. Example 5 : Var BilA, BilB : Longint ; Koment :String[15]; Begin Write(Bilangan A : ) ; Readln(BilA); Write(Bilangan B : ) ; Readln(BilB); If BilA > BilB Then Koment := A Lebih Besar dari B Else If BilA < BilB Then Koment := A Lebih Kecil dari B Else If BilA = BilB Then Koment := A Sama dengan B ; Writeln(Koment :, Koment) ; End. Contoh 6.5 : Program If Kondisi Jamak NESTED IF (Tersarang) Contoh Variasi IF tersarang If <kondisi> then Begin If <kondisi> then <statement> else <statement> end Else Begin <statement> End; if <kondisi> Then <statement> Else if <kondisi> Then <statement> Else <statement> . STATEMEN CASE Statemen Case dapat berbentuk struktur Case-Of atau Case-OfElse. Kegunaan dari statemen Case hampir sama dengan statemen IF A. STATEMEN CASE-OF Mempunyai suatu ungkapan logika yang disebut dengan selector dan sejumlah statement yang diawali dengan suatu label permasalahan ( case label ) yang mempunyai tipe data yang sama dengan selector. STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Syntax : Case Ungkapan Of Daftar Case-label1 : Statemen1 ; Daftar Case-label2 : Statemen2 ; Daftar Case-label3 : Statemen3 ; Daftar Case-label4 : Statemen4 ; End; Example 6 : Var Nilai : Char; Begin Write(Nilai Huruf yang didapat ?) ; Readln(Nilai) ; Case Nilai Of A : Writeln(Sangat Baik); B : Writeln(Sangat Baik); C : Writeln(Sangat Baik); D : Writeln(Sangat Baik); E,F : Writeln(Sangat Baik); End; End. Contoh 6.6 : Program Case-OF

Hal : 29

B. STATEMEN CASE-OFELSE Pada struktur case-of bila tidak ada kondisi yang terpenuhi berarti tidak ada statement didalam lingkungan case of yang diproses. Dengan struktur case-ofelse, bila tidak ada kondisi yang terpenuhi, maka statement yang akan diproses didalam lingkungan case-of adalah statement yang ada di else. Syntax : Case Ungkapan Of Daftar Case-label1 : Statemen1 ; Daftar Case-label2 : Statemen2 ; Daftar Case-label3 : Statemen3 ; Daftar Case-label4 : Statemen4 ; Else Statemen5 ; End; Example 7 : Uses Crt; Var TEKAN:Char; Begin Clrscr; Write( Tekan Sembarang tombol..!); TEKAN:= Readkey; Writeln; Case TEKAN of A..Z,a..z : Writeln( Anda menekan tombol huruf); +,-,*,/ : Writeln( Anda menekan tombol operator aritmatika); Else Writeln(Anda menekan Special Char); End; Repeat Until Keypressed ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur End. Contoh 6.7 : Program Case-OFElse Bagaimana jika kita menekan Angka dari 0 sampai 9 ? LATIHAN 1. Nama Program : Latih61.Pas Uses Crt; Var UMUR : Byte; Begin Clrscr; Write(Inputkan Umur : ) ; Readln(UMUR); If UMUR in [0..5] then writeln( BALITA) ElseIf UMUR in [6..16] then writeln(REMAJA) ElseIf UMUR in [17..99] then writeln(DEWASA); End. Jelaskan Penggunaan In ? 2. Nama Program : Latih62.Pas USES Crt; VAR Beli, Bayar, Disc : Real ; BEGIN Write ('Jumlah Beli = '); Readln (Beli); Disc := 0; IF Beli >= 50000 THEN Disc := Beli * 0.1; Bayar := Beli - Disc; Writeln ('Jumlah Bayar =', Bayar:10:2); END. 3. Nama Program : Latih63.Pas USES Crt ; VAR Nm : String [20] ; Mtk : String [20] ; Ket : String [10] ; Nl : Byte ; BEGIN Writeln (' Entri Nilai Mahasiswa') ; Writeln ('-------------------------------------------------------------') ; Write (' NAMA :') ; Readln (Nm) ; Write (' MATA KULIAH :') ; Readln (Mtk) ; Write (' NILAI [0..100] :') ; Readln (Nl) ; Writeln ('-------------------------------------------------------------') ; IF Nl >=60 then Ket:='Lulus' Else Ket:='Gagal'; Writeln ('keterangan :', Ket) ; Writeln ('-------------------------------------------------------------') ; END.

Hal : 30

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 31

4. Nama Program : Latih64.Pas USES Crt ; VAR Np : String [20] ; Kd : String [3] ; Jp : String [30] ; Hb, Hkwh, Tp : Real ; P : Byte ; BEGIN Gotoxy(30, 5); Write ('Entri Data Pembayaran Rekening Listrik') ; Gotoxy(20, 6); Write ('_______________________________________________') ; Gotoxy(20, 7); Write ('Nama Pelanggan : '); Readln (np) ; Gotoxy(20, 8); Write ('Kode Rekening : '); Readln (Kd) ; Gotoxy(20,13); Write ('_______________________________________________') ; IF Kd = 'L01' then BEGIN Jp := 'Pabrik' ; Hb := 40000 ; HKwh := 1250 ; END ELSE IF Kd='L02' then BEGIN Jp := 'Swalayan & toko'; Hb := 35000 ; Hkwh:= 1000 ; END ELSE IF Kd = 'L03' then BEGIN Jp := 'Rumah' ; Hb := 10000 ; Hkwh:= 250 ; END ; Gotoxy(45,8) ; Write('Jenis Pelanggan : ', jp); Gotoxy(20,9) ; Write('Harga Beban : ', Hb:10:1); Gotoxy(20,10); Write('Harga KWH : ', Hkwh:10:1); Gotoxy(20,11); Write('Pemakaian : '); Readln(p) ; Tp := Hb + Hkwh * P ; Gotoxy(20,12);write ('Total Pembayaran Rp :', Tp:8:2 ); END. 5. Nama Program : Latih65.Pas PROGRAM IF_MAJEMUK_AND; USES Crt; VAR Nama : String[20]; Mtk : String[20]; N : Byte ; NH : Char ; BEGIN Write ('NAMA : '); Readln (Nama) ; Write ('MATA KULIAH : '); Readln (Mtk) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Write ('NILAI [0..100] : '); Readln (N) ; IF (N >= 80) AND (N <= 100) then NH :='A' ELSE IF (N >= 70) AND (N < 80) then NH := 'B' ELSE IF (N >= 60) AND (N < 70) then NH := 'C' ELSE IF (N >= 50) AND (N < 60) then NH := 'D' ELSE NH := 'E' ; Clrscr; Writeln ('Nama Writeln ('Matakuliah Writeln ('Nilai Angka Writeln ('Nilai Huruf END. 6. Nama Program : Latih66.Pas VAR Nama : String[20]; Mtk : String[20]; N : Byte ; NH : Char ; BEGIN Write ('NAMA Write ('MATA KULIAH Write ('NILAI [0..100] CASE N OF 80..100 : NH 70..79 : NH 60..69 : NH 46..59 : NH 0..45 : NH END; Clrscr; Writeln ('Nama Writeln ('Matakuliah Writeln ('Nilai Angka Writeln ('Nilai Huruf END.

Hal : 32

: ', Nama); : ', MTK); : ', N); : ', NH);

: '); Readln (Nama) ; : '); Readln (Mtk) ; : '); Readln (N) ;

:='A' ; :='B' ; :='C' ; :='D' ; :='E' ;

: ', Nama); : ', MTK); : ', N); : ', NH);

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 33

TUGAS PRAKTIKUM 1. Mencari Nilai Huruf Mahasiswa DAFTAR NILAI MAHASISWA JURUSAN INFORMATIKA ======================================= Nama Mahasiswa : .. NIM Mahasiswa : .. Nilai Tugas : Nilai Mid Test : Nilai Final Test : Total Nilai : Nilai Huruf : ======================================= Ketentuan Program : a. Nama, NIM, Nilai Tugas, Nilai Mid Test dan Nilai Final Test diperoleh dari input b. Sedangkan Total Nilai diperoleh dari rumus: Total Nilai = (20% * Nilai Tugas) + (30% * Nilai Mid) + (50% * Nilai Final) c. Range dari Nilai Huruf yaitu : Total Nilai 80 100 79 70 69 51 50 41 40 0 Nilai Huruf A B C D E

Simpan dengan nama : TUGAS61.PAS

2. Mencari Nilai Huruf Format Input yaitu Simpan dengan nama : TUGAS62.PAS DAFTAR NILAI MAHASISWA JURUSAN INFORMATIKA ======================================= Nama Mahasiswa : .. NIM Mahasiswa : .. Nilai Tugas : Nilai UTS : Nilai UAS : ======================================= Format Output yaitu NIM : . NAMA : .. Nilai Angka Nilai Huruf Tugas .. x UTS .. x UAS .. x AKHIR .. x Untuk mencari Nilai Akhir yaitu Total Nilai = (20% * Nilai Tugas) + (30% * UTS) + (50% * UAS) Range Masing-Masing tiap nilai yaitu : Nilai Huruf A B Tugas 65 - 100 80 94 UTS 90 100 80 89 UAS 85 100 75 84 Nilai Akhir 80 - 100 70 79 STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur C D E 70 79 < 69 < 69 60 79 40 59 < 39 60 74 35 59 < 34 51 69 41 50 <40

Hal : 34

3. Mencari Sisa Uang Kuliah Format Input yaitu Simpan dengan nama : TUGAS63.PAS PEMBAYARAN UANG KULIAH ======================================= Nama Mahasiswa : ... NPM : Kode : Jurusan : ... Pembayaran Awal Rp : Jumlah Cicilan : Besar Cicilan Rp. : Pembayaran Ke : Uang Kuliah Rp : Uang Kuliah Terbayar Rp : Sisa Uang Kuliah Rp : ======================================= Ketentuan Program : - Nama, NPM, Kode & Pembayaran Ke diperoleh dari input - Untuk mencari Jurusan, Pembayaran Awal, Jumlah Cicilan & Besar Cicilan dari Kode yaitu : Kode Jurusan Pembayaran Jumlah Besar Awal Rp Cicilan Cicilan Rp. Sistem Informasi 2100000 7 300000 SI Teknik Informatika 2500000 7 300000 TI Komputer Akuntansi 1750000 6 200000 KA Manajemen Informatika 1500000 6 250000 MI - Uang Kuliah = Pembayaran Awal + (Jumlah Cicilan & Besar Cicilan) - Uang Kuliah Terbayar = Pembayaran Awal + ( Pembayaran Ke * Besar Cicilan ) - Sisa Uang Kuliah = Uang Kuliah Uang Kuliah Terbayar

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 35

BAB VII STATEMEN PERULANGAN


Di dalam Pascal terdapat tiga macam perulangan yaitu dengan menggunakan statemen ForDo, WhileDo dan RepeatUntil. STRUKTUR PERULANGAN FORDO Jenis perulangan ini digunakan untuk mengulang statemen atau satu blok statemen berulang kali sejumlah yang ditentukan. Syntax ForDo adalah sebagai berikut: For VarControl := nAwal To/DownTo nAkhir Do Statemen/Blok Statemen Perulangan FOR dapat berbentuk perulangan positif, perulangan negatif dan perulangan tersarang. a. FOR DO POSITIF Merupakan perulangan dengan penghitung (counter) dari kecil ke besar atau dengan kata lain pertambahannya positip. Syntax perulangan FOR For VarControl := nAwal To nAkhir Do Statemen/Blok Statemen Syarat Perulangan ini yaitu nAwal lebih KECIL dari nAkhir Example 1 : Example 2 : Var Var I : Integer ; I : Integer ; Begin Begin For I := 1 to 5 Do Writeln(Pascal); For I := 1 to 5 Do End. Begin Write(I); Writeln( Pascal); Contoh 7.1: Penulisan kata Pascal End; (satu statement) End. Contoh 7.2: Penulisan kata Pascal (lebih dari 1 statement) Example 3 : Var x : Integer ; Celcius, Fahrenheit : Real ; Begin Writeln(----------------------------------------) ; Writeln( Celcius Fahrenheit ) ; Writeln(----------------------------------------) ; Celcius := 0 ; For x := 1 to 10 Do Begin Fahrenheit := 1.8 * Celcius + 32 ; Writeln(Celcius:8:2, Fahrenheit:14:2); Celcius := Celcius + 0.25 ; End; Writeln(----------------------------------------) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur End. Contoh 7.3 : Menghitung nilai fahrenheit

Hal : 36

b. FOR DO NEGATIF Merupakan perulangan dengan penghitung (counter) dari besar ke kecil atau dengan kata lain pertambahannya negatif. Syntax perulangan FOR For VarControl := nAwal DownTo nAkhir Do Statemen/Blok Statemen Syarat Perulangan ini yaitu nAwal lebih BESAR dari nAkhir Example 4 : Var Celcius, Fahrenheit : Real ; Begin Writeln(----------------------------------------) ; Writeln( Celcius Fahrenheit ) ; Writeln(----------------------------------------) ; Celcius := 0 ; For Celcius := 15 DownTo 0 Do Begin Fahrenheit := 1.8 * Celcius + 32 ; Writeln(Celcius:8:2, Fahrenheit:14:2); End; Writeln(----------------------------------------) ; End. Contoh 7.4 : menampilkan Fahrenheit dengan menggunakan DownTo NESTED FOR DO (tersarang) Perulangan tersarang adalah perulangan yang berada di dalam perulangan yang lainnya. Pada perulangan ini perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, lalu baru perulangan yang lebih luar. Example 5 : Var I, J : Integer; Begin For I := 1 To 5 Do Begin For J := 1 To 3 Do Begin Write (I:8, J:3) ; End; End; End. Contoh 7.5 : Terdapat dua Perulangan yaitu I & J STRUKTUR PERULANGAN WHILEDO Jenis perulangan ini digunakan untuk mengulang statemen atau satu blok statemen berulang kali yang jumlahnya belum bisa ditentukan, tergantung nilai kondisi yang terletak antara Whiledo. Perulangan akan dikerjakan bila nilai kondisinya bernilai benar dan akan berhenti jika kondisi bernilai salah. Syntax WhileDo adalah sebagai berikut:

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur While ungkapan-logika Do Statemen/Blok Stateme n Example 6 : Var I : Integer ; Begin I := 0 ; While I < 5 Do Begin Writeln(I) ; Inc(I) ; End; End. Contoh 7.6 : Penggunaan WhileDo Example 7 : Uses Crt ; Var Nilai, Total, RataRata : Real ; N, I : Integer ; Begin Clrscr ; {*****memasukkan jumlah data******} Write(Jumlah Data ? ) ; Readln(N); I := 0 ; Total := 0 ; While I < N Do Begin I := I + 1 ; Write(Nilai data Ke ,I, ? ) ; Readln(Nilai) Total :=Total + Nila ; End; {*****menghitung nilai rata-ratanya******} RataRata := Total/N ; {*****menampilkan hasil******} Writeln ; Writeln(Total Nilai = , Total :8:2) ; Writeln(Jumlah Data = , N :8:2) ; Writeln(Rata Rata = , RataRata :8:2) ; End. Contoh 7.7 : Mencari Total Nilai/Rata-rata sesuai dengan jumlah data

Hal : 37

STRUKTUR PERULANGAN REPEATUNTIL Jenis perulangan ini digunakan untuk mengulang statemen atau satu blok statemen berulang kali, yang jumlahnya belum bisa ditentukan, tergantung nilai kondisi yang terletak setelah Until. Perulangan akan dikerjakan bila nilai kondisinya bernilai salah dan akan berhenti jika kondisi bernilai benar. Syntax perulanang RepeatUntil sebagai berikut : Repeat Statemen/Blok Statemen Until ungkapan Example 8 : Var I : Integer ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Begin I := 0 ; Repeat Inc(I) ; Writeln(I) ; Until I = 5 ; End. Contoh 7.8 : bentuk penggunaan RepeatUntil

Hal : 38

LATIHAN 1. Nama Program : Latih71.Pas Var i , j : integer; Begin For i:= 1 to 5 do For j := 3 downto 1 do Writeln (Reformasi total); Writeln (Indonesia); End.

2. Nama Program : Latih72.Pas Var i : integer; Begin i:= 1; While i<=5 do Begin Writeln(Gatot); i:= i + 1; End; End.

3. Buatlah program dengan Output seperti berikut : Nama Program Latih73.Pas 1 STMIK Budidarma 2 STMIK Budidarma 3 STMIK Budidarma 5 STMIK Budidarma 7 STMIK Budidarma 4 STMIK Budidarma 6 STMIK Budidarma 8 STMIK Budidarma

4. Buatlah program di bawah ini : Nama Program Latih74.Pas PROGRAM LoopPositif ; USES Crt; VAR I : Integer; BEGIN Writeln(' I I*2 I*3 I*4 ') ; Writeln('-----------------------------------------------') ; FOR I:=1 To 10 do Writeln(I:4, I*2:5, I*3:5, I*4:5 ); Writeln('-----------------------------------------------') ; END. 5. Buatlah program dengan Output seperti berikut : Nama Program Latih75.Pas 5 10 15 20 25 45 30 50 35 55 40 60

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur 2. Buatlah program berikut ini . Nama Program : Latih76.Pas VAR i : Byte; BEGIN Writeln(' I Keterangan '); Writeln('-----------------------------------------'); FOR i:= 1 To 10 Do BEGIN Write (i); IF(i Mod 2)=0 then Writeln (' Genap') else Writeln (' Ganjil'); END; Writeln('-----------------------------------------'); END. 6. Buatlah program dengan Output seperti berikut : Nama Program Latih77.Pas USES Crt; VAR Nim :String[8]; Nama :String[30]; Mtk :String[31]; NT,NM,NS:Byte; NA :Real; NH, LG :Char; BEGIN lg:='y' ; WHILE Upcase (lg)='Y' Do BEGIN Clrscr; Writeln('INPUT DATA NILAI MAHASISWA STMIK Budidarma '); Writeln('________________________________________________'); Write ('NIM :'); Readln( NIM ); Write ('NAMA :'); Readln( NM ) ; Write ('MATA KULIAH :'); Readln( MTK ); Write ('NILAI TUGAS :'); Readln( NT ) ; Write ('NILAI MID :'); Readln( NM ) ; Write ('NILAI SEMESTER :'); Readln( NS ) ; NA := (0.20*NT) + (0.30*NM) + (0.5*NS); CASE ROUND(NA) OF 80..100 : NH :='A'; 70..79 : NH :='B'; 60..69 : NH :='C'; 45..59 : NH :='D'; 0..45 : NH :='E'; END; Writeln('NILAI AKHIR :', NA:3:1 ); writeln('NILAI HURUF :', NH ); Writeln('________________________________________________'); Writeln('Masih Ingin Menghitung [Y/T] :') ; Readln(Lg) ; END ; END.

Hal : 39

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur TUGAS PRAKTIKUM 1. Buatlah program berikut ini Apabila diketahui harga beras per kilogram sebagai berikut: Jenis IR 64 = Rp. 2000,Jenis C4 = Rp. 3000,Jenis Delanggu = Rp. 3550,Jenis Rajalele = Rp. 6000,Buatlah program menggunakan bahasa Pascal, dengan output sebagai berikut: TABEL HARGA BERAS IR 64, C4, DELANGGU DAN RAJALELE TOKO "MANTEP" SALATIGA No Jumlah (Kg) IR64 1 5 2 10 50 250 Simpan dengan nama : TUGAS71.PAS C4 Delanggu

Hal : 40

RajaLele

3. Ubahlah Program ini sehingga dapat menggunakan Perulangan bila Ingin Menghitung Lagi [Y/T] : kita isi dengan Y maka dia akan menginputkan kembali dari awal DAFTAR NILAI MAHASISWA JURUSAN INFORMATIKA ======================================= Nama Mahasiswa : .. NIM Mahasiswa : .. Nilai Tugas : Nilai Mid Test : Nilai Final Test : Total Nilai : Nilai Huruf : ======================================= Ingin Menghitung Lagi [Y/T] : . Ketentuan Program : Nama, NIM, Nilai Tugas, Nilai Mid Test dan Nilai Final Test diperoleh dari input Sedangkan Total Nilai diperoleh dari rumus: Total Nilai = (20% * Nilai Tugas) + (30% * Nilai Mid) + (50% * Nilai Final) c Range dari Nilai Huruf yaitu : Total Nilai Nilai Huruf 80 100 A 79 70 B Simpan dengan nama : TUGAS72.PAS 69 51 C 50 41 D 40 0 E 4. Dengan menggunakan perulangan Fordo dan Gotoxy, buatlah program untuk membuat kata STMIK Budidarma berjalan dari kiri ke kanan dan balik dari kanan ke kiri. a b

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 41

BAB VIII TYPE DATA TERSTRUKTUR


Type Data Terstruktur di dalam bahasa Pascal terdiri dari : o Array o Record o Set o File TIPE DATA ARRAY / LARIK Larik yaitu deretan data yang mempunyai type data sejenis. Ex : Daftar Nomor Telpon, Tabel Pajak dll. Tiap rinci data disebut komponen/Elemen Larik. Tiap larik bisa dioperasikan menggunakan pemilih elemen larik yang disebut INDEX atau Subskrib. Dan Index ini diletakkan dalam tanda [ ], sesudah nama larik. DEKLARASI ARRAY Deklarasi perubah selalu diawali dengan kata VAR Dalam deklarasi perubah biasa, kita hanya perlu menentukan type data perubah tersebut misalnya: real, integer, boolean atau char, sedangkan pada deklarasi larik (array), kita perlu mendefinisikan type larik, juga harus menentukan banyaknya index yang akan mengisi larik tersebut. Syntax : VAR nmVariabel : ARRAY [index] OF typeData Keterangan : nmVariabel index typeData

: Nama larik yang dideklarasikan : Batasan/Jumlah Index (cacah elemen) : Tipe data dari Larik

Larik dapat bertipe data sederhana byte, word, integer, real, boolean, char atau string dan tipe data skalar atau subrange. Index dari larik menunjukkan maksimum banyaknya elemen-elemen dari larik. Index larik ini dapat berupa tipe subrange atau skalar apapun (integer, byte, word, char ) kecuali tipe real. Suatu larik tidak hanya dapat berupa suatu variabel yang dideklarasikan di bagian variabel, tetapi juga dapat berupa suatu konstanta yang dideklarasikan di bagian deklarasi konstanta. Example 1 : Var Nama : Array[1..10] of String[20] ; I : Byte ; Begin Clrscr {Bagian Input Data} For I := 1 To 10 Do Begin Writeln(Inputkan Nama Ke , I , :) ; Readln( Nama[I] ) ; End; {Bagian Menampilkan Data yang telah diinputkan } For I := 1 To 10 Do Writeln(Nama Ke , I , :, Nama[I] ) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Readln; End. Contoh 8.1 : Program dengan Penggunaan Array. Example 2 : Var Nama : Array[1..30] of String[20] ; Gaji : Array[1..30] of Longint ; i,j : Byte ; Begin Clrscr {Bagian Input Data} Writeln(Inputkan Jumlah Data : ) ; Readln( J ) ; For I := 1 To J Do Begin Writeln(Inputkan Nama Ke , I , :) ; Readln( Nama[I] ) ; Writeln(Inputkan Gaji Ke , I , :) ; Readln( Gaji[I] ) ; End;

Hal : 42

Clrcsr ; {Bagian Menampilkan Data yang telah diinputkan } GotoXy(10, 4) ; Write(--------------------------------------------------------------) GotoXy(10, 4) ; Write(No. Nama Gaji); GotoXy(10, 6) ; Write(--------------------------------------------------------------) For I := 1 To J Do Begin GotoXy(10, 6+I) ; Writel( I ) ; GotoXy(14, 6+I) ; Write( Nama[I] ) ; GotoXy(34, 6+I) ; Write( Gaji[I] ) ; End GotoX(10, J+7) ; Writeln(--------------------------------------------------------------) Readln End. Contoh 8.2 : Program untuk menginputkan Nama & Gaji menggunakan Array. TIPE DATA RECORD (Rekaman) Seperti halnya array(larik), record juga punya elemen, di sini elemennya disebut "Field". Tiap elemen bisa punya type data yang berbeda. Banyaknya field dapat bervariasi atau bisa juga tetap. Record yang punya field yang bervariasi disebut Variant Record. Deklarasi type data Record dapat ditetapkan di bagian deklarasi Var atau Type. Syntax : TYPE nmPengenal = RECORD Field1 : type1; Field2 : type2; : fieldn : typen; END; VAR nmRec : nmPengenal ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Keterangan : nmPengenal Field1, Field2, Fieldn Type1, Type2, Typen nmRec

Hal : 43

: Nama Dari Record ; : Nama dari Variabel/Field yang terdapat dalam Record : Type Dari tiap-tiap Field yang dideklarasikan : Nama Dari Record yang di deklarasikan

Ex. TYPE Mahasiswa = RECORD NIM : String[8] ; Nama : String[20] ; Alamat : String[30] ; Sex : Char ; Umur : Byte ; END; VAR RecMhs : Mahasiswa ; MEMBACA & MENULIS FIELD Dapat dilaksanakan pada seluruh record atau sebagian record. Syntax : nmRec.Field1 ; Tanda titik harus ditulis Notasi ini disebut Penandaan field (field designator). Berbeda dengan statement pemberian (assigment), maka untuk membaca dan menulis record selalu dilakukan menurut Field yang ada, tidak dilakukan secara keseluruhan record. Contoh : Membaca Readln(RecMhs.NIM ); Readln(RecMhs.Nama ); Menulis Writeln(RecMhs.NIM ); Writeln(RecMhs.Nama );

Example 3 : TYPE Mahasiswa = RECORD NIM : String[8] ; Nama : String[20] ; Umur : Byte ; END; Var RecMhs : Mahasiswa ; Begin Clrscr {Bagian Input Data} Writeln(NIM Anda :); readln( RecMhs.NIM ) ; Writeln(Nama :); readln( RecMhs.Nama ) ; Writeln(Umur :); readln( RecMhs.Umur ) ; {Bagian Menampilkan Data yang telah diinputkan } STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Writeln(NIM Anda Writeln(Nama Writeln(Umur Readln; : , RecMhs.NIM ) ; : , RecMhs.Nama ) ; : , RecMhs.Umur ) ;

Hal : 44

End. Contoh 8.3 : Program dengan Penggunaan Array. STATEMEN WITH Digunakan untuk mengurangi penulisan yang berulang-ulang untuk nama recordnya. Maka dengan menggunakan statement WITH hanya cukup sekali saja menyebutkan nama recordnya. Syntax : WITH nmRecord DO {langsung dimasukkan/dicetak fieldnya} Example 4 : TYPE Mahasiswa = RECORD NIM : String[8] Nama : String[20] Umur : Byte END; Var RecMhs : Mahasiswa ; Begin Clrscr With RecMhs Do Begin {Bagian Input Data} Writeln(NIM Anda Writeln(Nama Writeln(Umur

; ; ;

:); readln(NIM ) ; :); readln(Nama ) ; :); readln(Umur ) ;

{Bagian Menampilkan Data yang telah diinputkan } Writeln(NIM Anda : , NIM ) ; Writeln(Nama : , Nama ) ; Writeln(Umur : , Umur ) ; End; Readln; End. Contoh 8.4 : Penggunaan Statemen WITH pada RECORD.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 45

LATIHAN 1. Nama Program : Latih81.Pas Program Latih81; {Program input data pada record} Uses crt; Type Barang = record Kode : String[5] ; Nama : Sring[20] ; Jumlah : Integer ; Harsat : Longint ; End; Var RecBrg : Array [1..40] of Barang ; Lagi : Char; I, J : Integer; Begin Clrscr ; I:=0 ; J := 0 ; { Untuk Menginputkan Data Barang} Repeat Inc(I) Write(Kode Barang :); readln(RecBrg[ I ].Kode); Write(Nama :); readln(RecBrg[ I ].Nama); Write(Jumlah :); readln(RecBrg[ I ].Jumlah); Write(Harga satuan :); readln(RecBrg[ I ].Harsat); Write(Ada lagi [Y/T] : ); readln(lagi); Until (lagi<>Y) or (lagi<>y) ; { bisa ditulis Until Upcase(lagi)=Y ; } { Menampilkan Data Barang } Clrscr ; GotoXy(10, 4) ; Write(---------------------------------------------------------------------------); GotoXy(10, 5) ; Write(No. Kode Nama Jumlah Harga); GotoXy(10, 6) ; Write(---------------------------------------------------------------------------); For J := 1 To I Do Begin GotoXy(10, 6+J) ; Writel( I ) ; GotoXy(13, 6+J) ; Write(RecBrg[ J ].Kode ) ; GotoXy(19, 6+J) Write(RecBrg[ J ].Nama ) ; GotoXy(39, 6+JI) ; Write(RecBrg[ J ].Jumlah ) ; GotoXy(39, 6+JI) ; Write(RecBrg[ J ].Harsat) ; End GotoX(10, J+7) ; Wrte(---------------------------------------------------------------------------); Readln; End. 2. Nama Program : Latih82.Pas USES CRT ; VAR NIP : Array[1..20] of string [8] ; NM : Array[1..20] of string [20]; GOL : Array[1..20] of string [3] ; i, j : byte ; Gaji, TGaji : Longint ; lg : Char ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur BEGIN i := 1 ; REPEAT Clrscr; Gotoxy(20,2); Write(' INPUT DATA GAJI PEGAWAI'); Gotoxy(10,3); Write(' _______________________________________'); Gotoxy(10,4); Write(' NIP :'); Gotoxy(10,5); Write(' NAMA :'); Gotoxy(10,6); Write(' GOL [I,II,III] :'); Gotoxy(10,7); Write(' _______________________________________'); Gotoxy(10,8); Write(' Isikan Data Lagi[Y/T] :'); Gotoxy(27,4); Readln( NIP[ i ] ); Gotoxy(27,5); Readln( NM[ i ] ); Gotoxy(27,6); Readln( GOL[ i ] ); Gotoxy(33,8); Readln( Lg ); inc( i ); UNTIL Upcase(lg)='T';

Hal : 46

Clrscr; Gotoxy(3,3);write('LAPORAN DATA GAJI PEGAWAI'); Gotoxy(3,4);write('____________________________________________________'); Gotoxy(3,5);write(' No NIP NAMA GOL GAJI Rp '); Gotoxy(3,6);write('____________________________________________________'); FOR j:=1 TO i -1 DO BEGIN If Gol [ j ]='I' then Gaji := 750000 Else If Gol [ j ]='II' then Gaji := 1000000 Else If Gol [ j ]='III'then Gaji := 1500000 Else Gaji :=0; Gotoxy(5 ,6+j); Write( j:2,' ',NIP[ j ]: 8, ' ', NM[ j ]); Gotoxy(44,6+j); Write( Gol [ j ] ); Gotoxy(49,6+j); Write( Gaji:8 ); TGaji := TGaji + Gaji ; END; Gotoxy(3,7+j); Write('______________________________________________________'); Gotoxy(3,8+j); Write(' TOTAL GAJI RP.', tgaji:10); END.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 47

TUGAS PRAKTIKUM 1. Buatlah Program untuk Menampilkan LayOut seperti berikut ini Laporan Data Nilai Mahasiswa STMIK Budidarma ----------------------------------------------------------------------------------------------------------------------No. NIM Nama Mata Kuliah Nilai Nilai Nilai Ket Mid Semester Huruf ----------------------------------------------------------------------------------------------------------------------1. 0303001 Aldyan Pascal I 90 90 A Lulus ----------------------------------------------------------------------------------------------------------------------Ketentuan Proses a. NIM, Nama, Nilai Mid Test dan Nilai Sem diperoleh dari input b. Sedangkan Total Nilai diperoleh dari rumus: Total Nilai = (40% * Nilai Mid) + (60% * Nilai Sem) c. Range dari Nilai Huruf yaitu : Total Nilai Nilai Huruf 80 100 A 79 70 B 69 51 C 50 41 D 40 0 E d. Ket di dapat dari Nilai E yaitu Ket = GAGAL selain itu Ket = LULUS Simpan dengan nama : TUGAS81.PAS 2. Buatlah program berikut ini CV. "INTAN GANDINI" yang bergerak dalam konsultan teknik akan membuat laporan gaji semua karyawan yang berjumlah 100 orang, dengan data-data sebagai berikut : NoPeg (Nomer pegawai) Nama (Nama pegawai) Gol (Golongan) JJL (Jumlah jam lembur) Laporan yang diinginkan dari data-data tersebut adalah LAPORAN GAJI PEGAWAI CV. "INTAN GANDINI" No Nomor Pegawai Jl. Waru Doyong No. 69 Semarang Nama Gol Gaji Tunjangan Jumlah Uang Gaji Pegawai Pokok Jam Lembur Bersih Lembur x(25) x 9(9) 9(9) 9999 9(9) 9(9) x(25) x 9(9) 9(9) 9999 9(9) 9(9)

99 x(8) 99 x(8) Ketentuan Proses 1. Mencari Gaji Pokok, Tunjangan, Uang Lembur Gol Gaji Pokok Tunjangan Uang Lembur/Jam 1 100000 50000 3500 2 200000 100000 4500 3 350000 200000 6000 4 500000 350000 Tidak Ada 2. Uang Lembur = Jumlah Jam Lembur * Uang Lembur/Jam 3. Gaji Bersih = Gaji Pokok + Tunjangan + Uang Lembur Simpan dengan nama : TUGAS82.PAS

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 48

BAB IX PROSEDUR
Prosedur adalah suatu program terpisah dalam blok tersendiri yang berfungsi sebagai subprogram(program bagian). Prosedure diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur di panggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya. Prosedur banyak digunakan pada program yang terstruktur, karena : 1. Merupakan penerapan kosenp program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedurprosedur 2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan. BENTUK UMUM DAN CARA PEMANGGILANNYA
Program Judul_Program ; Procedure nama_Procedure ; Begin End; Begin nama_Procedure ; End.

PARAMETER DALAM PROSEDUR Nilai di dalam suatu modul program sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya. Example 1 : Procedure Tanya_Hitung ; Var x,y : real ; Begin Write(Nilai X ?) ; Readln(x) ; y := x * x Writeln(Nilai Y = , Y:6:2 ) ; End; {Akhir dari prosedur Tanya_Hitung} Begin Tanya_Hitung ; End. Contoh 9.1 Variabel Lokal dalam Prosedur Pada contoh diatas, variabel x dan y sifatnya adalah lokal untuk prosedur Tanya_Hitung, yang artinya hanya dapat digunakan pada modul tersebut saja . Pada modul yang lain, variabel tersebut tidak dapat digunakan. Bila digunakan maka salah. STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Example 2 : Procedure Tanya_Hitung ; Var x,y : real ; Begin Write(Nilai X ?) ; Readln(x) ; y := x * x End; {Akhir dari prosedur Tanya_Hitung} Begin Tanya_Hitung ; Writeln(Nilai Y = , Y:6:2 ) ; End. Contoh 9.2 Contoh penggunaan variabel lokal yang salah

Hal : 49

Bila program ini akan dikompilasi, akan dideteksi kesalahan oleh koompiler, karena variabel Y yang sifatnya lokal di prosedur Tanya_Hitung digunakan pada program utama. Kesalah yang ditunjukkan oleh kompiler akan berbentuk pemberitahuan sebagai berikut : Error 31 : Unknown Identifier Example 3 : Procedure CetakNama ; Begin Writeln(NamaKu) ; End; {Main Program} Var Namaku : String[20] ; Begin Namaku := Mesran ; CetakNama ; End. Contoh 9.3 Contoh penggunaan variabel lokal yang salah kedua . Agar nilai-nilai variabel dapat digunakan di modul yang lainnya yang membutuhkannya, maka dapat dilakukan dengan beberapa cara, yaitu : PARAMETER GLOBAL Supaya suatu nilai dapat bersifat global, maka harus dideklarasikan diatas modul yang akan menggunakannya. Procedure KeSatu ;
Begin End; {Akhir dari procedure KeSatu} Var A, B : Integer ; Procedure KeDua ; Begin End; {Akhir dari procedure KeDua} Procedure KeTiga ; Begin End; {Akhir dari procedure KeTiga} Begin End. {Akhir dari Program Utama}

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 50

Pada contoh diatas, variabel A & B bersifat global untuk prosedur KeDua, KeTiga dan Modul Utama (Program Utama), tetapi tidak untuk prosedur kesatu. Sehingga prosedur kesatu tidak bisa menggunakan variabel tersebut. Kenapa ? Bandingkan dengan contoh berikut ini.
Var A, B : Integer ; Procedure KeSatu ; Begin End; {Akhir dari procedure KeSatu} Procedure KeDua ; Begin End; {Akhir dari procedure KeDua} Procedure KeTiga ; Begin End; {Akhir dari procedure KeTiga} Begin End. {Akhir dari Program Utama}

PARAMETER YANG DIKIRIMKAM Parameter yang dikirimkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Pada Pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan(bt refrence). a. PARAMETER SECARA NILAI (by value) Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter formal ke parameter nyata. Parameter-parameter yang digunakan dengan pengiriman secara nilai ini disebut dengan parameter nilai (value parameter). Example 4 : Procedure Hitung(A, B : Integer ) ; Var c : Integer ; begin c := A + B ; Writeln(#10, Nilai C = , c ) ; End; Var x, y : Integer ; Begin Write(Nilai X ?) ; Readln(x) ; Write(Nilai Y ?) ; Readln(y) ; Hitung (x, y) ; End. Contoh 9.4 pengiriman parameter secara nilai (by value)

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Example 5 : Procedure Hitung(A, B, C : Integer ) ; begin c := A + B ; Writeln Writeln(A =, A ,B =, B , C =, C ) End; Var x, y, z : Integer ; Begin X := 2 ; Y := 3 ; Z := 0 ; Hitung(X, Y, Z) ; Writeln(X =, X ,Y =, Y , Z =, X ) ; End. Contoh 9.5 Pengiriman parameter secara nilai (by value)

Hal : 51

Perhatian hasil dari program pada saat di jalankan. Akan tampak jelas bahwa variabel a, b, c tidak akan merubah nilai dari variabel x, y, z. b. PARAMETER SECARA ACUAN (by reference) Bila pengiriman parameter secara acuan (by reference), maka perubahanperubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter nyata. Parameter-parameter ini disebut dengan variabel parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, sebagai berikut : PROCEDURE Hitung(Var A, B, C : Integer)
Menunjukkan pengiriman parameter secara acuan

Example 6 : Procedure Hitung(Var A, B, C : Integer ) ; begin C := A + B ; End; Var x, y, z : Integer ; Begin X := 2 ; Y := 3 ; Hitung(X, Y, Z) ; Writeln(X =, X ,Y =, Y , Z =, X ) ; End. Contoh 9.6 Pengiriman parameter secara acuan (by reference) Program berikut digunakan untuk menghitung besarnya nilai suatu faktorial, dengan rumus : N! = 1 x 2 x 3 x 4 x.x N Penyelesaiannya adalah : Procedure Faktorial(Var Fak, Hasil : Integer) ; Var I : Integer Begin Hasil := 1 ; For I = 2 To Fak Do Hasil := Hasil * I ; End; {Akhir dari prosedur Faktorial } STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur {Main Program} Var N, F : Integer ; Begin Write (Berapa Faktorial ? ) ; Readln (N) ; Faktorial(N, F) ; Writeln; Writeln(N, Faktorial = , F); End

Hal : 52

c. PARAMETER SECARA NILAI DAN ACUAN Pengiriman parameter dapat dicampur sebagian secara nilai dan sebagaian secara acuan dalam suatu prosedur. Parameter yang hanya dibutuhkan pada prosedur saja dapat dikirimkan secara nilai dan yang ingin dikirimkan balik dapat dilakukan secara acuan. PROCEDURE Hitung(A,B: Integer ; Var C : Integer) Pengiriman secara Acuan pengiriman secara nilai Example 7 : Procedure Hitung( A, B : Integer ; Var C : Integer ) ; begin C := A + B ; End; Var x, y, z : Integer ; Begin X := 2 ; Y := 3 ; Hitung(X, Y, Z) ; Writeln(X =, X ,Y =, Y , Z =, X ) ; End. Contoh 9.7 Pengiriman parameter sebagian secara nilai dan sebagian secara acuan. Hubungan antara pengiriman parameter tersebut akan nampak sebagai berikut . PROCEDURE Hitung(A,B: Integer ; Var C : Integer)

Hitung ( x, y, z ) ; PROSEDUR MEMANGGIL PROSEDUR YANG LAIN Di dalam suatu prosedur dapat melakukan pemanggilan terhadap suatu prosedur yang lain. Tetapi prosedur yang dipanggil harus berada diatas prosedur yang memanggil. Example 8 : Procedure Pro1(x1 : Integer) ; Begin Writeln(Nilai x =, x1, ada di prosedur PRO1) ; End; Procedure Pro2(x2 : Integer) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Begin Writeln(Nilai x =, x2, ada di prosedur PRO2) ; Pro1(X2) End; Var X : Integer ; Begin X := 5 ; Pro2(x) ; End. Contoh 9.8 Prosedur memanggil prosedur yang lain. NESTED PROCEDURE (Prosedur tersarang) Adalah prosedur yang berada di dalam prosedur yang lain. Syntax
Program Procedure Procedure Begin End; Begin End; Begin End.

Hal : 53

Example 9 : Procedure Kesatu ; Procedure Kedua ; Begin Writeln(Prosedure KEDUA ini ada di dalam prosedure ke KESATU) ; End; Procedure Ketiga ; Begin Writeln(Prosedure KETIGA ini ada di dalam prosedure ke KESATU) ; End; Begin Writeln(Ini Prosedur KESATU); Writeln; Kedua ; Ketiga End; Begin Writeln(Ini di Modul Utama) Writeln; Kesatu ; End. Contoh 9.9 Program Prosedur tersarang-Nested Procedure STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 54

PROSEDUR MEMANGGIL DIRINYA SENDIRI Merupakan prosedur memangil dirinya sendrii merupakan suatu prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Tidak semua bahasa menyediakan kemampuan untuk melakukan proses recursion. Walaupun proses ini merupakan algorithm yang baik, tetapi membutuhkan banyak memori karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkannya. Example 10 : Var I : Integer ; Procedure Rekursi ; Begin Writeln(Halo Saya Pascal) ; Inc(I); If I < 10 Then Rekursi ; End. Begin I := 1 ; Rekursi ; End. Contoh 9.10 Program Prosedur memanggil dirinya sendiri (rekursif); PROSEDUR STANDAR EXIT & HALT EXIT Prosedur standar ini digunakan untuk keluar dari suatu blok. Bila diletakkan paa program bagian, prosedur standar Exit akan menyebabkan proses di program bagian berhenti dan proses kembali ke blok program yang memanggilnya. Bila berada di program utama, menyebabkan proses program berhenti. Example 11 : Program ContohFaktorial ; Procedure Faktorial(Fak : Integer ; Var Hasil : Integer ); Var I : Integer ; Begin Hasil := 1 ; If Fak = 0 Then Exit ; For I := 2 To Fak DO Hasil := Hasil * I ; End; Var N, F : Integer ; Begin Write( Berapa Faktorial ? ) ; Readln(N) ; F := 1 ; Faktorial(N, F) ; Writeln(N, Faktorial = , F) End. Contoh 9.11 Penggunakan Prosedur standar Exit.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 55

HALT Prosedur standar ini digunakan untuk menghentikan proses program baik di program bagian maupun di program utama. Example 12 : Procedure TampilkanTerus ; Var Tekan : Char ; Begin Tekan := T ; While (Tekan = T) Or (Tekan = t) DO Begin Write(Haloo saya MESRAN ) ; Writeln(Tekan <T> untuk Terus <B> untuk berhenti - - ->); Tekan := Readkey(); If (Tekan = B) Or (Tekan = b) Then Halt Else Begin Writeln(Ngawur.) TampilkanTerus ; End; End ; End; Begin TampilanTerus ; End. Contoh 9.12 Penggunaan prosedur standar Halt LATIHAN 1. Nama Program : Latih91.Pas PROGRAM Mencari_Gaji ; USES CRT ; TYPE Pegawai = Record NIP : String[8] ; Nama : String[20] ; GOL : String[3] ; END; VAR rPeg : Array[1..20] of Pegawai ; i, j : byte ; Gaji, TGaji : Longint ; lg : Char ; PROCEDURE InputPEGAWAI ; PROCEDURE FormPEGAWAI ; BEGIN Clrscr; Gotoxy(20,2); Write('INPUT DATA GAJI PEGAWAI'); STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Gotoxy(10,3); Write('_______________________________________'); Gotoxy(10,4); Write('NIP :'); Gotoxy(10,5); Write('NAMA :'); Gotoxy(10,6); Write('GOL [I,II,III] :'); Gotoxy(10,7); Write('_______________________________________'); Gotoxy(10,8); Write('Isikan Data Lagi[Y/T] :'); END;

Hal : 56

BEGIN REPEAT FORMPegawai ; WITH Rpeg[ i ] do Begin Gotoxy(27,4); Readln( NIP ); Gotoxy(27,5); Readln( NAMA ); Gotoxy(27,6); Readln( GOL ); Gotoxy(33,8); Readln( Lg ); END ; inc(i); UNTIL Upcase(lg)='T'; END; PROCEDURE TabelPegawai ; BEGIN Clrscr ; Gotoxy(3,3);write('LAPORAN DATA GAJI PEGAWAI'); Gotoxy(3,4);write('___________________________________________________'); Gotoxy(3,5);write(' No NIP NAMA GOL GAJI RP. '); Gotoxy(3,6);write('___________________________________________________'); END; PROCEDURE HITGAJI(cGol : String ; Var nGaji: Longint ); BEGIN If cGol='I' then nGaji := 750000 Else If cGol='II' then nGaji := 1000000 Else If cGol='III' then nGaji := 1500000 Else nGaji :=0; END; BEGIN i := 1 ; InputPEGAWAI ; TabelPegawai ; FOR j:=1 TO I-1 DO BEGIN With RPeg[j] Do Begin HitGaji (Gol, Gaji) ; Gotoxy(5 ,6+j); Write( j:2,' ',NIP: 8, ' Gotoxy(44,6+j); write( Gol ); Gotoxy(49,6+j); write( Gaji:8 ); ', NAMA);

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 57

TGaji := TGaji + Gaji ; End; END; Gotoxy(3,7+j); Write('__________________________________________________'); Gotoxy(3,8+j); Write(' TOTAL GAJI RP.', tgaji:10); Repeat Until Keypressed ; END. 2. Nama Program : Latih92.Pas PROGRAM Mencari_Gaji ; USES CRT ; TYPE Pegawai = Record NIP : String[8] ; Nama : String[20] ; GOL : String[3] ; END; VAR rPeg : Array[1..20] of Pegawai ; i, j : byte ; Gaji, TGaji : Longint ; Pil, lg : Char ; PROCEDURE InputPEGAWAI ; PROCEDURE FormPEGAWAI ; BEGIN Clrscr; Gotoxy(20,2); Write('INPUT DATA GAJI PEGAWAI'); Gotoxy(10,3); Write('_______________________________________'); Gotoxy(10,4); Write('NIP :'); Gotoxy(10,5); Write('NAMA :'); Gotoxy(10,6); Write('GOL [I,II,III] :'); Gotoxy(10,7); Write('_______________________________________'); Gotoxy(10,8); Write('Isikan Data Lagi[Y/T] :'); END; BEGIN REPEAT FORMPegawai ; WITH Rpeg[i] do Begin Gotoxy(27,4); Readln( NIP ); Gotoxy(27,5); Readln( NAMA ); Gotoxy(27,6); Readln( GOL ); Gotoxy(33,8); Readln( Lg ); END ; inc(i); UNTIL Upcase(lg)='T'; END; PROCEDURE OutputPegawai ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 58

PROCEDURE TabelPegawai; BEGIN Clrscr ; Gotoxy(3,3);write('LAPORAN DATA GAJI PEGAWAI'); Gotoxy(3,4);write('_________________________________________________'); Gotoxy(3,5);write(' No NIP NAMA GOL GAJI RP. '); Gotoxy(3,6);write('_________________________________________________'); END; PROCEDURE HITGAJI(cGol : String ; Var nGaji: Longint ); BEGIN If cGol='I' then nGaji := 750000 Else If cGol='II' then nGaji := 1000000 Else If cGol='III'then nGaji := 1500000 Else nGaji :=0; END; Begin TabelPegawai ; FOR j:=1 TO I-1 DO BEGIN With RPeg[j] Do Begin HitGaji (Gol, Gaji) ; Gotoxy(5 ,6+j); Write( j:2,' ',NIP: 8, ' ', NAMA); Gotoxy(44,6+j); write( Gol ); Gotoxy(49,6+j); write( Gaji:8 ); TGaji := TGaji + Gaji ; End; END; Gotoxy(3,7+j); Write('_________________________________________________'); Gotoxy(3,8+j); Write(' TOTAL GAJI RP.', tgaji:10); Repeat Until Keypressed ; End; PROCEDURE MENU ; BEGIN Clrscr; Gotoxy(20,2); Write('MENU PEGAWAI'); Gotoxy(10,3); Write('__________________________'); Gotoxy(10,4); Write('[1]. Input Data Pegawai'); Gotoxy(10,5); Write('[2]. Output Data Pegawai'); Gotoxy(10,6); Write('[3]. Keluar Program'); Gotoxy(10,7); Write('__________________________'); Gotoxy(10,8); Write('Pilihan END; BEGIN { Program Utama } i := 1 ; Pil :='1' ; While Pil<>'3' Do STMIK BUDIDARMA : ') ;

MODUL Praktikum : Pemrograman Terstruktur Begin Menu ; Pil := Readkey ; Case PIL of '1' : InputPEGAWAI ; '2' : OutputPegawai; End; End; END. Bandingkanlah kedua program tersebut diatas. Mana yang lebih fleksibel ?

Hal : 59

TUGAS PRAKTIKUM 1. Modifikasikan Program TUGAS81.PAS menjadi bentuk Latih92.Pas dengan menggunakan menu & procedure. MENU MAHASISWA ------------------------------------------------------[ 1 ]. Input Data Nilai Mahasiswa [ 2 ]. Output Data Nilai mahasiswa [ 3 ]. Keluar Program ------------------------------------------------------Pilihan :x Nama File : TUGAS91.PAS

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 60

BAB X FUNGSI
Pada prinsipnya penggunaan fungsi sama dengan prosedur, tetapi fungsi jauh lebih fleksibel dalam pemakaiannya. Hal ini disebabkan fungsi bisa menampung suatu nilai. Fungsi juga bisa mengirimkan dan mengembalikan suatu nilai layaknya suatu prosedur. Dalam penggunaan fungsi lebih banyak membantu dibandingkan dengan prosedur. Bentuk umum : Function nmFungsi( parameter ) : typefungsi ; Begin End ; Example 1 : Function Hitung(x,y : Real ) : Real ; Begin Hitung := x * y End; Var a, b, c : Real ; Begin Write(Nilai A ?) ; Readln(a) ; Write(Nilai B ?) ; Readln(b) ; c := Hitung(a, b) ; Writeln(Nilai C = , C:6:2 ) ; End. Contoh 10.1 Penggunaan fungsi dengan variable Lokal. Contoh fungsi diatas merupakan fungsi dengan pengiriman parameter secara nilai (by value). Hasil dari perkalian x & y akan dimasukkan ke dalam HITUNG. Mengapa ? Hal ini disebabkan HITUNG juga memiliki type data yaitu : REAL. Sehingga hasilnya dimasukkan ke Variabel C. Variabel a, b, c merupakan variabel Lokal karena dideklarasikan di bawah fungsi. Program di atas juga bisa dituliskan seperti berikut ini : Example 2 : Function Hitung(x,y : Real ) : Real ; Begin Hitung := x * y End; Var a, b : Real ; Begin Write(Nilai A ?) ; Readln(a) ; Write(Nilai B ?) ; Readln(b) ; Writeln(Nilai C = , Hitung(a, b) ) ; End. Contoh 10.2 Penggunaan fungsi

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Example 3 : VAR Nama Mtk N

Hal : 61

: String[20]; : String[20]; : Byte ;

Procedure INPUTData ; Begin Write ('NAMA Write ('MATA KULIAH Write ('NILAI [0..100] End;

: '); Readln (Nama) ; : '); Readln (Mtk) ; : '); Readln (N) ;

Function CariNilai(NA : Byte ) : Char ; Var NH : Char ; Begin CASE N OF 80..100 : NH :='A' ; 70..79 : NH :='B' ; 60..69 : NH :='C' ; 46..59 : NH :='D' ; 0..45 : NH :='E' ; END; CariNilai := NH ; End; BEGIN InputData Clrscr; Writeln ('Nama Writeln ('Matakuliah Writeln ('Nilai Angka Writeln ('Nilai Huruf END. Contoh 10.3 Penggunaan fungsi

: ', Nama); : ', MTK); : ', N); : ', CariNilai( N ) );

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur LATIHAN 1. Ketiklah program dibawah ini : Latih101.PAS PROGRAM MencariPEMBELIAN; USES CRT ; TYPE Pembeli = Record Kd : String[4] ; Nama : String[25] ; Jumlah : Byte ; END; VAR rPbl Jenis Harga, TH,tTot i, j Pil, Lg

Hal : 62

: Array[1..20] of Pembeli : String [25] ; : Longint : byte : Char ; ; ;

PROCEDURE InputPEMBELI ; PROCEDURE FormPEMBELI ; BEGIN Clrscr; Gotoxy(20,2); Write('INPUT DATA PEMBELIAN RUMAH'); Gotoxy(10,3); Write('_______________________________________'); Gotoxy(10,4); Write('Kode Rumah :'); Gotoxy(10,5); Write('Nama Pembeli :'); Gotoxy(10,6); Write('Jumlah Beli :'); Gotoxy(10,7); Write('_______________________________________'); Gotoxy(10,8); Write('Masih Ada Data [Y/T] : '); END; BEGIN REPEAT FORMPembeli ; WITH RPbl[ i ] do Begin Gotoxy(27,4); Readln( Kd ); Gotoxy(27,5); Readln( NAMA ); Gotoxy(27,6); Readln( Jumlah ); Gotoxy(33,8); Readln( Lg ); END ; inc( i ); UNTIL Upcase(Lg)='T'; END; PROCEDURE TabelPembeli; BEGIN Clrscr ; Gotoxy(3,1);write('Informasi Pembelian Rumah'); Gotoxy(3,2);write('CV. CITRA ANUGRAH PERMAI'); STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 63

Gotoxy(3,3);write('___________________________________________________________ ________________'); Gotoxy(3,4);write(' No Kode Jenis Rumah Nama Harga Jumlah Total '); Gotoxy(3,5);write(' Rumah Pembeli Beli Harga '); Gotoxy(3,6);write('___________________________________________________________ ________________'); END; PROCEDURE OutputPembeli; FUNCTION CariJenis(cKd: String ; VAR Hrg: Longint) : String ; VAR cJns : String ; BEGIN IF cKd = 'RS1' Then Begin cJns := 'Sederhana' ; Hrg := 40000000 ; End Else IF cKd = 'RS2' Then Begin cJns := 'Sangat Sederhana' ; Hrg := 30000000 ; End Else IF cKd = 'RS3' Then Begin cJns := 'Sangat Sederhana Sekali' ; Hrg := 20000000 ; End ; CariJenis := cJns ; END; FUNCTION CariTH(Hrg: Longint ; Jumlah : Byte ) : Longint ; BEGIN CariTH := Hrg * Jumlah ; END; Begin TabelPembeli; FOR j:=1 TO I-1 DO BEGIN With rPBL[j] Do Begin Jenis := CariJenis(Kd, Harga ) ; TH := CariTH(Harga, Jumlah) ; Gotoxy(5 ,6+j); Write( j:2,' ',Kd: 4, ' ', Jenis); Gotoxy(39,6+j); write( Nama); Gotoxy(54,6+j); write( Harga:8,' ', Jumlah:2,' ',TH:8); TTot := TTot + TH ; End; END;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 64

Gotoxy(3,7+j); write('_____________________________________________________________________ ______'); Gotoxy(3,8+j); Write(' TOTAL Harga Penjualan RP.', tTot:10); Repeat Until Keypressed ; End; PROCEDURE MENU ; BEGIN Clrscr; Gotoxy(20,2); Write('MENU PEMBELIAN RUMAH'); Gotoxy(10,3); Write('__________________________'); Gotoxy(10,4); Write('[ 1 ]. Input Data Pembelian'); Gotoxy(10,5); Write('[ 2 ]. Informasi '); Gotoxy(10,6); Write('[ 3 ]. Keluar Program'); Gotoxy(10,7); Write('__________________________'); Gotoxy(10,8); Write(' Pilihan : ') ; END; BEGIN i := 1 ; Pil :='1' ; While Pil<>'3' Do Begin Menu ; Pil := Readkey ; Case PIL of '1' : InputPembeli; '2' : OutputPembeli; End; End; Clrscr ; END. 2. Buatlah program berikut ini : Latih102.PAS PROGRAM PenjualanKomputer; USES CRT ; TYPE Pembeli = Record Kd : String[4] ; Nama : String[25] ; Jumlah : Byte ; END; VAR rPbl : Array[1..20] of Pembeli Jenis : String [25] ; Harga, HJ : Longint ; Disc, HB, tTot : Real ; i, j : byte ; Pil, lg : Char ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur PROCEDURE InputPEMBELI ; PROCEDURE FormPEMBELI ; BEGIN Clrscr; Gotoxy(20,2); Write('INPUT DATA PEMBELIAN KOMPUTER'); Gotoxy(10,3); Write('_______________________________________'); Gotoxy(10,4); Write('Kode :'); Gotoxy(10,5); Write('Nama Pembeli : '); Gotoxy(10,6); Write('Jumlah :'); Gotoxy(10,7); Write('_______________________________________'); Gotoxy(10,8); Write('Masih Ada Data [Y/T] : '); END; BEGIN REPEAT FORMPembeli ; WITH RPbl[ i ] do Begin Gotoxy(27,4); Readln( Kd); Gotoxy(27,5); Readln( NAMA ); Gotoxy(27,6); Readln( Jumlah); Gotoxy(33,8); Readln( Lg ); END ; inc( i ); UNTIL Upcase(Lg)='T'; END; PROCEDURE TabelPembeli; BEGIN Clrscr ; Gotoxy(1,1);write('"SUMATERA KOMPUTER"'); Gotoxy(1,2);write('Jln. HM. YAMIN 120 C'); Gotoxy(1,3);write(' Informasi Penjualan Komputer');

Hal : 65

Gotoxy(1,4);write('___________________________________________________________ _______________'); Gotoxy(1,5);write('No Kode Jenis Harga Jumlah Nama Harga Discount Harga '); Gotoxy(1,6);write(' Komputer Komputer Jual Pembeli Jual Bayar '); Gotoxy(1,7);write('___________________________________________________________ _______________'); END; PROCEDURE OutputPembeli; FUNCTION CariJenis(cKd: String ; VAR Hrg: Longint) : String ; VAR cJns : String ; BEGIN IF cKd = 'PI' Then Begin cJns := 'Pentium I' ; Hrg := 1500000 ; End Else IF cKd = 'PII' Then STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Begin cJns := 'Pentium II' ; Hrg := 2500000 ; End Else IF cKd = 'PIII' Then Begin cJns := 'Pentium III' ; Hrg := 3500000 ; End Else IF cKd = 'PIV' Then Begin cJns := 'Pentium IV' ; Hrg := 4500000 ; End ; CariJenis := cJns ; END; FUNCTION CariHargaJual(Hrg: Longint ; Jumlah : Byte ) : Longint ; BEGIN CariHargaJual:= Hrg * Jumlah ; END; FUNCTION CariDiscount(Hrg: Longint ) : Real; BEGIN If Hrg>=25000000 Then CariDiscount := 0.1 * Hrg Else If Hrg>=15000000 Then CariDiscount := 0.07 * Hrg Else If Hrg>=10000000 Then CariDiscount := 0.05 * Hrg Else CariDiscount := 0; END; Begin TabelPembeli; FOR j:=1 TO I-1 DO BEGIN With rPBL[j] Do Begin Jenis := CariJenis(Kd, Harga ) ; HJ := CariHargaJual(Harga, Jumlah) ; Disc := CariDiscount(HJ);

Hal : 66

HB := HJ - Disc ; Gotoxy(2 ,7+j); Write( j:2,' ',Kd:4, ' ', Jenis); Gotoxy(21,7+j); write( Harga:8,' ',Jumlah:3,' ', Nama); Gotoxy(47,7+j); write( HJ:8,' ', Disc:7:0,' ',HB:8:0); TTot := TTot + HB; End; END; Gotoxy(1,8+j); write('_____________________________________________________________________ _____'); Gotoxy(1,9+j); Write(' TOTAL Harga Penjualan RP.', tTot:9:0); Repeat Until Keypressed ; End; PROCEDURE MENU ; BEGIN STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Clrscr; Gotoxy(20,2); Write('MENU PENJUALAN KOMPUTER'); Gotoxy(10,3); Write('__________________________'); Gotoxy(10,4); Write('[ 1 ]. Input Data Penjualan'); Gotoxy(10,5); Write('[ 2 ]. Informasi '); Gotoxy(10,6); Write('[ 3 ]. Keluar Program'); Gotoxy(10,7); Write('__________________________'); Gotoxy(10,8); Write('Pilihan : ') ; END; BEGIN i := 1 ; Pil :='1' ; While Pil<>'3' Do Begin Menu ; Pil := Readkey ; Case PIL of '1' : InputPembeli; '2' : OutputPembeli; End; End; Clrscr ; END.

Hal : 67

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 68

BAB XI
TURBO PASCAL UNIT Yaitu sebuah program pembantu yang terpisah dari program pemanggil yang bertujuan untuk hal-hal tertentu mis pembuatan prosedur atau fungsi yang biasa digunakan dalam pemrograman. Bentuk Umum UNIT nmUnit ; INTERFACE Uses Var nmVar : TypeData ; . NmProcedure ; NmFunction ; IMPLEMENTATION NmProcedure ; NmFunction ; ... Begin End. SYARAT TPU 1. Nama File dan Nama Unit harus Sama 2. Pada bagian akhir program bisa dituliskan Begin End. atau cukup End. saja. 3. NmProcedure, NmFunction pada bagian Interface & Implementation harus sama. 4. TPU hanya bisa di Compile tetapi tidak bisa di jalankan. PEMBUATAN UNIT Nama FILE : MyUNIT.Pas ; Unit MyUnit ; INTERFACE Uses crt; type _Str = string[80]; _Str2 = string[80]; PROCEDURE Warna(d, b : byte); PROCEDURE WriteTO(c, b : byte ; txt: _str); PROCEDURE WriteTOL(c, b: byte ; txt : longint); PROCEDURE WriteTOR (c, b: byte ; txt : real); FUNCTION _GetSTR(c, b: byte) :_str; FUNCTION _GetL(c, b : byte) : longint; FUNCTION _GetCH(c, b: Byte):Char ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur PROCEDURE Cleararea(c, b, c1, b1 : byte); PROCEDURE Box(c, b, c1, b1 : byte); PROCEDURE AREA(c, b, n : byte); IMPLEMENTATION PROCEDURE Warna; Begin Textcolor(d); Textbackground(b); End; PROCEDURE WriteTO ; Begin Gotoxy(c, b); Write(Txt); End; PROCEDURE WriteTOL; Begin Gotoxy(c, b) ; Write(txt); End; PROCEDURE WriteTOR; begin Gotoxy(c, b); Write(Txt:9:0); end; FUNCTION _GetSTR ; Var Field :_str; Begin gotoxy(c, b) ; Readln(field); _GetSTR:=field; End; FUNCTION _GetL; Var Field : Longint; Begin Gotoxy(c, b); Readln(field); _GetL := Field; End; FUNCTION _GetCH; Var Field : Char ; Begin Gotoxy(c, b); Readln(field); _GetCH := Field; End; PROCEDURE Cleararea; Var K, L :byte; Begin For K:= b to b1 do For L:= c to c1 do WriteTO(L, K, ' '); End ;

Hal : 69

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur PROCEDURE Box; Var K, L : byte; Begin Cleararea(c, b, c1, b1); WriteTO(c, b,''); { Alt 218 } WriteTO(c1, b,''); { Alt 191 } WriteTO(c, b1, ''); { Alt 192 } WriteTO(c1, b1,''); { Alt 217 } For K := c + 1 to c1 - 1 do Begin WriteTO(k, b,''); { Alt 196 } WriteTO(k, b1,''); { Alt 196 } End; For L := b + 1 to b1 - 1 do Begin WriteTO(c, L,''); { Alt 179 } WriteTO(c1, L,''); { Alt 179 } End; End; Procedure AREA(c, b, n : byte); Var L :byte; Begin for L:= c to c+n do WriteTO(L, b, ' '); end; Begin End. { boleh dituliskan end saja tanpa begin } Contoh 11.1 Pembuatan unit pada pascal

Hal : 70

PEMANGGILAN SUATU UNIT Unit yang telah kita buat sebelumnya dapat di panggil melalui program yang terpisah dengan program Unit tadi. Pemanggilan unit tersebut melalui Statemen USES. Example 2 : Nama Program Latih112.Pas Program PanggilTPU ; Uses Crt, MyUNIT ; {Pemanggilan Unit MyUNIT di bagian Uses } Begin Warna(4,15) ; Clrscr ; WriteTO (20,10, Test menggunakan File TPU) ; Warna(13, 2 ) ; BOX(10, 5, 50, 20 ) Warna(14, 1 ) ; WriteTO (20,10, Oke Dong ) ; End. Contoh 11.2 Program untuk memanggil unit yang telah kita ciptakan. LATIHAN 1. Buatlah Program berikut ini : Uses Crt, MyUNIT; Var Nama : String[30] ;

Latih111.Pas

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Harga Jual THarga, Disc, TBayar : longint ; : Integer ;

Hal : 71

: Real

PROCEDURE Form ; BEGIN BOX(15,4,70,15) ; Warna(15,1) ; WriteTO (17,4,'Entry Data Penjualan Barang'); Warna(14,1) ; WriteTO (20, 6,'Nama Barang :[ ]'); WriteTO (20, 7,'Harga Rp. :[ ]'); WriteTO (20, 8,'Jumlah Jual :[ ]'); WriteTO (20, 9,'Total Harga Rp. :[ ]'); WriteTO (20,10,'Discount Rp. :[ ]'); WriteTO (20,11,'Total Bayar Rp. :[ ]'); WriteTO (20,13,'Ingin Menghitung Lagi [Y/T] :'); END; PROCEDURE InputData ; Begin Nama := _GetS(35,6) ; Harga:= _GetL(35,7) ; Jual := _GetL(35,8) ; End ; FUNCTION CariDISC(TH : Longint ) : Real ; Var Disc : Real ; BEGIN IF TH > 1000000 Then Disc := 0.1 * TH Else If TH > 500000 Then Disc := 0.05 * TH Else Disc := 0 ; CariDISC := Disc ; END; BEGIN Warna(2,1) ; Clrscr ; Warna(15,1) ; REPEAT Form ; InputData ; THarga := Harga * Jual ; warna(11,1) ; WriteTOR (35, 9,THarga) ;

Disc := CariDisc(THarga) WriteTOR (35,10, Disc ) ; TBayar := THarga - Disc ; WriteTOR (35,11,TBayar ) ; UNTIL UPCASE(_GetC(50,13) ) = T ; END.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur TUGAS PRAKTIKUM Buatlah Program berikut ini dengan menggunakan UNIT yang telah ada. Nama Program :Tugas111.Pas Tampilan Program Entry Data Penjualan Komputer Type Komputer Jenis Harga Rp. Jumlah Penjualan Total Harga Rp Discount Rp Total Bayar Rp :[ :[ :[ :[ :[ :[ :[ ] ] ] ] Unit ] ] ]

Hal : 72

Ingin menghitung Lagi [Y/T] : [ ]

Ketentuan Proses : Jenis & Harga diperoleh dari Jika Type = PI maka Jenis = Komputer Pentium I Harga = 1500000 Jika Type = PII maka Jenis = Komputer Pentium II Harga = 2500000 Jika Type = PIII maka Jenis = Komputer Pentium III Harga = 3500000 Jika Type = PIV maka Jenis = Komputer Pentium IV Harga = 4500000 Total Harga = Harga * Jumlah penjualan Disc diperoleh dari Jika Total Harga > 20000000 maka Disc = 0.2 * Total Harga Jika Total Harga > 15000000 maka Disc = 0.1 * Total Harga Jika Total Harga > 10000000 maka Disc = 0.05 * Total Harga Jika Total Harga < 10000000 maka Disc = 0 Total Bayar = Total Harga Disc

Untuk mencari Jenis & Harga Komputer, Discount gunakan suatu procedure/Function.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 73

BAB XII FILE


File merupakan kumpulan dari record. Filedifunakanagar datayang telah terkumpul dapat disimpan kedalam disk sehingga pemeliharan data menjadi lebih mudah dilakukan. Pascal menyediakan3 jenis file : 1. File Bertipe 2. File Teks 3. File TakBertipe PROSEDUR & FUNGSI STANDAR Pascal menyediakan beberapa perintah yang akan digunakan untuk pemeliharaan file. Perintah-perintah tersebut ada yang dalam prosedur standar dan ada juga dalam fungsi standar. Diantaranya : ASSIGN Digunakan untuk menghubungkan nama dari external file ke dalam suatu file variabel. Syntax Ex : Assign ( VarFile, namaFile) : Assign ( fMhs , Mhs.Dat)

REWRITE Digunakan untuk membuka dan menciptakan file. Seandainya dalam disk sudah ada file data yang sama dengan nama file yang berkaitan dengan varFile, maka isi file akanmenjadi kosong. Syntax Ex : ReWrite (VarFile) ; : Assign ( fMhs , Mhs.Dat ) ReWrite ( fMhs )

RESET Digunakan untuk membuka file yang telah ada di disk, dan jika file yang dibuka tidak ada didisk, maka akan terjadi runtime error. Syntax Ex : Reset ( VarFile) ; : Assign ( fMhs , Mhs.Dat ) Reset ( fMhs )

CLOSE Digunakan untuk menutup file yang sedang aktif, bila file tersebut tidak dibutuhkan lagi. Syntax Ex : Close ( VarFile) ; : Close ( fMhs )

ERASE Digunakan untuk menghapus file, Erase hanya bisa digunakan jika file dalam keadaan tertutup, jika file sedang terbuka, pemanggilan Eraseakanmenyebabkan kesalahan.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Syntax : Erase ( VarFile) ;

Hal : 74

Ex : Erase ( fMhs ) RENAME Digunakan untuk menggantikan nama file yang ada di disk dengannama lain. Rename hanya bisa dipakai terhadap file yang tertutup. Syntax Ex : Rename ( VarFile, namaBARU ) ; : Rename ( fMhs , DBMHS.Dat )

EOF (End of FILE) Digunakan untuk mengetahui status dari suatu file, apakah suatu proses telah mencapai posisi terakhir atau tidak. Syntax Ex : EOF( VarFile) : Boolean ; : IF Not EOF( fMhs ) Then ..

FILE BERTIPE File bertipe merupakan file yang diakses secara urut (sequential access) dan secara acak (random access), maka dengan demikiandata dalam file dapat dibaca dan direkam dimanapun (acak) didalam file tersebut. Pengolahan data dengan file bertipe mempunyai urutan proses sebagai berikut : 1. Menyebutkan variabel file dan nama file 2. Membuka FILE 3. Melaksanakan pengaksesan FILE 4. Menutup FILE DEKLARASI FILE BERTIPE Deklarasi file bertipe dilakukan seperti contoh berikut : Type Mahasiswa = record NPM Nama Jenjang Jurusan End ; Var fMhs rMhs : FILE of Mahasiswa ; : Mahasiswa ; : String[9] ; : String[30] ; : String[5] ; : String[25] ;

PROSEDUR DAN FUNGSI STANDAR FILE BERTIPE 1. WRITE Digunakan untuk merekam data dari variabel record ke dalam file di disk. Syntax : Write ( VarFILE, VarRec ) ;

2. READ Digunakan untuk membaca record yang tersimpan dalam file data.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Syntax : Read ( VarFILE, VarRec ) ;

Hal : 75

3. SEEK Digunakan untuk menempatkan petunjuk record (pointer) ke record yang diinginkan. Syntax : Seek ( VarFILE, nomorRecord ) ; 4. FILESIZE Digunakan untuk memperoleh jumlah Record dalam suatu File Data Syntax : FileSize ( VarFILE ) ;

PROGRAM TAMBAH PADA FILE BERTIPE Berikut adalah contoh program untuk menambahkan data pada File bertipe. Nama Program : UnitKU.Pas UNIT UNITKU; INTERFACE Uses Crt ; Procedure Procedure Procedure Procedure IMPLEMENTATION Procedure Warna; Begin Textcolor(d); End; Warna(d, b : byte); Clear(c, b, c1, b1 :byte); Garis(c, c1, b: Byte) ; Pesan(txt: String);

Textbackground(b);

Procedure Clear; var K, L :byte; begin for K:= b to b1 do for L:= c to c1 do begin GotoXY(L, K) ; Write(' '); end; end; Procedure Garis; var K : byte; Begin For K := c to c1 do begin GotoXY(k, b) ; Write('-'); end; End; Procedure Pesan; Begin STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Warna(14,4) ; Clear(1,24,80,24) ; GotoXY(10, 24) ; Write( txt ); end; Begin end. Nama Program : entUK.Pas USES Crt, UnitKU ; TYPE UangKuliah = record Kode : String[3] ; Jurusan: String[30] ; UKuliah, BayarA, BesarC : Longint ; JumlahC: Byte ; End; VAR fUK : file of uangkuliah ; rUK : uangKuliah ; Mad, Dsb : Char ; POS : Byte ; cKode : String[3] ;

Hal : 76

FUNCTION SeekUK(Kd : String ; VAR rPos : Byte ) : Boolean ; VAR i : Byte ; Ketemu : Boolean ; BEGIN Ketemu := False ; rPos := 0 ; SeekUK:= False ; Seek(fUK, 0) ; i := 1 ; WHILE not eof(fUK) And Not KETEMU Do BEGIN Seek(fUK, i-1) ; Read(fUK, rUK) ; if rUK.Kode = Kd Then Begin Ketemu := True ; SeekUK:= True ; rPos := i ; End; inc(i) ; END; END; PROCEDURE OpenDB ; BEGIN Assign(fUK,'UangK.Dat'); {$I-} Reset (fUK) ; {$I+} If IoResult <> 0 Then ReWrite(fUK) ; END ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur PROCEDURE FormUK ; BEGIN Warna(14,4) GotoXY(20, 5) Warna(14,1) GotoXY(20, 7) GotoXY(20, 8) GotoXY(20, 9) GotoXY(20,10) GotoXY(20,11) GotoXY(20,12) END;

Hal : 77

; ; ; ; ; ; ; ; ;

Clear(19,5,70,5) ; Write('ENTRI DATA UANG KULIAH'); Clear(19,6,70,13) ; Write(' Kode : '); Write(' Jurusan : '); Write(' Uang Kuliah Rp. : '); Write(' Pembayaran Awal Rp.: '); Write(' Besar Cicilan Rp. : '); Write(' Jumlah Cicilan : ');

FUNCTION Tanya(txt : String ): Boolean ; VAR x : Char ; BEGIN Tanya := False; Warna(14,4) ; Clear(19,14,70,14) ; GotoXY(21,14) ; Write(txt); repeat GotoXY(45,14) ; x := Readkey ; Until x in['Y','y','t','T'] ; if Upcase(x) = 'Y' Then Tanya := True ; END ; PROCEDURE ShowUK ; BEGIN Warna(15,2) ; With rUK Do Begin GotoXY(42, 8) GotoXY(42, 9) GotoXY(42,10) GotoXY(42,11) GotoXY(42,12) End; END;

; ; ; ; ;

Write(Jurusan) Write(UKuliah) Write(BayarA) Write(BesarC) Write(JumlahC)

; ; ; ; ;

PROCEDURE InputUK(cKode : String) ; BEGIN Warna(15,3) ; With rUK Do Begin Kode := cKode ; GotoXY(42, 8) ; Readln(Jurusan) GotoXY(42, 9) ; Readln(UKuliah) GotoXY(42,10) ; Readln(BayarA) GotoXY(42,11) ; Readln(BesarC) GotoXY(42,12) ; Readln(JumlahC) End; END; BEGIN OpenDB ;

; ; ; ; ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur REPEAT FormUK; GotoXY(42, 7) ; Readln(cKode) ; if cKode='' Then Exit ; if SeekUK(cKode, POS) Then begin ShowUK ; Pesan('DATA INI SUDAH ADA...MAS ! '); end Else Begin REPEAT InputUK(ckode) ; UNTIL Tanya('Data Sudah Benar [Y/T] : '); Seek(fUK, FileSize(fUK)) ; Write(fUK, rUK); End; UNTIL Not Tanya('Masih Ada Data [Y/T] : '); Close(fUK); END.

Hal : 78

Jika Program Entri Data Uang Kuliah telah selesai maka isikanlah data berikut ini : Uang Pembayaran Besar Jumlah Kode Jurusan Kuliah Awal Cicilan Cicilan SI4 Sistem Informasi 4000000 2000000 250000 8 TI4 Teknik Informatika 4500000 2100000 300000 8 MI3 Manajemen Informatika 3500000 1500000 250000 8 KA3 Komputer Akuntansi 3250000 1250000 250000 8 Bila data diatas diisi untuk yang kedua kalinya maka program diatas akan menampilkan data yang telah diinputkan sebelumnya. PROGRAM LIHAT(INFORMASI) DATA FILE BERTIPE Data-data yang telah tersimpan dalam disk dapat dilihat atau ditampilkan kembali pada saat diperlukan. Untuk menampilkan data-data tersebut buatlah program dibawah ini : Nama Program : entUK.Pas USES Crt, UnitKU ; TYPE UangKuliah = record Kode : String[3] Jurusan: String[30] UKuliah, BayarA, BesarC : Longint JumlahC: Byte End; VAR fUK rUK br, i : file of uangkuliah ; : uangKuliah ; : Byte ; STMIK BUDIDARMA

; ;

; ;

MODUL Praktikum : Pemrograman Terstruktur Ket : string[3] ;

Hal : 79

PROCEDURE OpenDB ; Begin Assign(fUK,'UangK.Dat'); {$I-} Reset (fUK) ; {$I+} If IoResult <> 0 Then ReWrite(fUK) ; end; PROCEDURE FormInfo ; Begin Warna(15,4) ;Clear(1,1,80,25); GotoXY(3, 2);Write('SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER'); GotoXY(3, 3);Write('Jln. Yos Sudarso'); GotoXY(3, 5);Write('Informasi Data Uang KULIAH per JURUSAN'); Warna(15,1) ;Clear(2,6,79,9); Garis(2,79,6); GotoXY(3, 7);Write( ' No. Kode Jurusan Uang Pembayaran Besar Jumlah '); GotoXY(3, 8);Write( ' Kuliah Rp Awal Rp. Cicilan Rp. Cicil '); Garis(2,79,9); Warna(15,1) ; Clear(2,10,79,23); Garis(2,79,23) ; end; BEGIN OpenDB ; FormInfo; Seek(fUK, 0) ; i := 1 ; br := 10; WHILE not Eof(fUK) do BEGIN Seek(fUK, I-1) ; Read(fUK, rUK) ; With rUK do Begin Warna(14,1) ; Gotoxy(5 ,br) ; Write(i,'

', Kode) ;

if Copy(kode,length(Kode),1)='4' Then Ket :='S1' Else if Copy(kode,length(Kode),1)='3' Then Ket :='D3' Else if Copy(kode,length(Kode),1)='1' Then Ket :='D1'; Gotoxy(14,br) Gotoxy(39,br) Gotoxy(51,br) Gotoxy(60,br) Gotoxy(73,br) ; ; ; ; ; Write(Ket, '-',Jurusan) ; Write(UKuliah:9) ; Write(BayarA:9) ; Write(BesarC:9) ; Write(JumlahC:3) ;

if br=22 Then begin Pesan('Tekan Enter.....') ; Readln; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Warna(15,1) ; Clear(2,10,79,22); br:= 9 ; end; End; inc(i); inc(br) ; END ; Pesan('Tekan Enter untuk Melanjutkan.....') ; Readln; close(fUK); END.

Hal : 80

PROGRAM KOREKSI DATA FILE BERTIPE Data yang telah diinputkan ada kalanya ingin kita perbaiki untuk menjaga updatenya data, program dibawah ini untuk mengedit data-data yang telah diinputkan. Nama Program : korUK.Pas USES Crt, UnitKU ; TYPE UangKuliah = record Kode : String[3] Jurusan: String[30] UKuliah, BayarA, BesarC : Longint JumlahC: Byte End; VAR fUK : file of uangkuliah ; rUK : uangKuliah ; Mad, Dsb : Char ; POS : Byte ; cKode : String[3] ; FUNCITON SeekUK(Kd : String ; VAR rPos : Byte ) : Boolean ; VAR i : Byte ; Ketemu : Boolean ; BEGIN Ketemu := False ; rPos := 0 ; SeekUK:= False ; Seek(fUK, 0) ; i := 1 ; While not eof(fUK) And Not KETEMU Do Begin Seek(fUK, i-1) ; Read(fUK, rUK) ; if rUK.Kode = Kd Then Begin Ketemu := True ; SeekUK:= True ; rPos := i ; End; inc(i) ; STMIK BUDIDARMA

; ;

; ;

MODUL Praktikum : Pemrograman Terstruktur End; END ; PROCEDURE OpenDB ; BEGIN Assign(fUK,'UangK.Dat'); {$I-} Reset (fUK) ; {$I+} If IoResult <> 0 Then ReWrite(fUK) ; END ; PROCEDURE FormUK ; BEGIN Warna(14,4) GotoXY(20, 5) Warna(14,1) GotoXY(20, 7) GotoXY(20, 8) GotoXY(20, 9) GotoXY(20,10) GotoXY(20,11) GotoXY(20,12) END ;

Hal : 81

; ; ; ; ; ; ; ; ;

Clear(19,5,70,5) ; Write('EDIT DATA UANG KULIAH'); Clear(19,6,70,13) ; Write(' Kode : '); Write(' Jurusan : '); Write(' Uang Kuliah Rp. : '); Write(' Pembayaran Awal Rp.: '); Write(' Besar Cicilan Rp. : '); Write(' Jumlah Cicilan : ');

FUNCTION Tanya(txt : String ): Boolean ; VAR x : Char ; BEGIN Tanya := False; Warna(14,4) ; Clear(19,14,70,14) ; GotoXY(21,14) ; Write(txt); repeat GotoXY(45,14) ; x := Readkey ; Until x in['Y','y','t','T'] ; if Upcase(x) = 'Y' Then Tanya := True ; END ; PROCEDURE ShowUK ; BEGIN Warna(15,2) ; With rUK Do Begin GotoXY(42, 8) GotoXY(42, 9) GotoXY(42,10) GotoXY(42,11) GotoXY(42,12) End; END ;

; ; ; ; ;

Write(Jurusan) Write(UKuliah) Write(BayarA) Write(BesarC) Write(JumlahC)

; ; ; ; ;

PROCEDURE InputUK(cKode : String) ; BEGIN Warna(15,3) ; With rUK Do Begin Kode := cKode ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur GotoXY(42, 8) GotoXY(42, 9) GotoXY(42,10) GotoXY(42,11) GotoXY(42,12) End; END; BEGIN ; ; ; ; ; Readln(Jurusan) Readln(UKuliah) Readln(BayarA) Readln(BesarC) Readln(JumlahC) ; ; ; ; ;

Hal : 82

OpenDB ; REPEAT warna(10,3); clrscr ; FormUK; GotoXY(42, 7) ; Readln(cKode) ; if cKode='' Then Exit ; if SeekUK(cKode, POS) Then begin ShowUK ; IF Tanya('Data ini di edit [Y/T]: ') Then begin FormUK ; GotoXY(42, 7) ; Write (cKode) ; REPEAT InputUK(ckode) ; UNTIL Tanya('Data Sudah Benar [Y/T] : '); Seek(fUK, POS - 1) ; Write(fUK, rUK); end; end Else Pesan('DATA TIDAK SUDAH ADA...MAS ! '); UNTIL Not Tanya('Masih Ada Data [Y/T] : '); Close(fUK); END. PROGRAM HAPUS DATA FILE BERTIPE Data yang tidak diperlukan lagi, sebaiknya dihapus agar tempat penyimpanan tidak penuh. Nama Program : hapUK.Pas USES Crt, UnitKU ; TYPE UangKuliah = record Kode : String[3] Jurusan: String[30] UKuliah, BayarA, BesarC : Longint JumlahC: Byte End; VAR fDummy, STMIK BUDIDARMA

; ;

; ;

MODUL Praktikum : Pemrograman Terstruktur fUK : file of uangkuliah ; rUK : uangKuliah ; Mad, Dsb : Char ; i, POS : Byte ; cKode : String[3] ;

Hal : 83

FUNCTION SeekUK(Kd : String ; VAR rPos : Byte ) : Boolean ; VAR i : Byte ; Ketemu : Boolean ; BEGIN Ketemu := False ; rPos := 0 ; SeekUK:= False ; Seek(fUK, 0) ; i := 1 ; While not eof(fUK) And Not KETEMU Do Begin Seek(fUK, i-1) ; Read(fUK, rUK) ; if rUK.Kode = Kd Then Begin Ketemu := True ; SeekUK:= True ; rPos := i ; End; inc(i) ; End; END; PROCEDURE OpenDB ; BEGIN Assign(fUK,'UangK.Dat'); {$I-} Reset (fUK) ; {$I+} If IoResult <> 0 Then ReWrite(fUK) ; END; PROCEDURE OpenDummy ; BEGIN Assign(fDummy,'Dummy.Dat'); ReWrite(fDummy) ; END; PROCEDURE FormUK ; BEGIN Warna(14,4) GotoXY(20, 5) Warna(14,1) GotoXY(20, 7) GotoXY(20, 8) GotoXY(20, 9) GotoXY(20,10) GotoXY(20,11) GotoXY(20,12)

; ; ; ; ; ; ; ; ;

Clear(19,5,70,5) ; Write('HAPUS DATA UANG KULIAH'); Clear(19,6,70,13) ; Write(' Kode : '); Write(' Jurusan : '); Write(' Uang Kuliah Rp. : '); Write(' Pembayaran Awal Rp.: '); Write(' Besar Cicilan Rp. : '); Write(' Jumlah Cicilan : '); STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur end; FUNCTION Tanya(txt : String ): Boolean ; VAR x : Char ; BEGIN Tanya := False; Warna(14,4) ; Clear(19,14,70,14) ; GotoXY(21,14) ; Write(txt); repeat GotoXY(45,14) ; x := Readkey ; Until x in['Y','y','t','T'] ; if Upcase(x) = 'Y' Then Tanya := True ; END ; PROCEDURE ShowUK ; BEGIN Warna(15,2) ; With rUK Do Begin GotoXY(42, 8) GotoXY(42, 9) GotoXY(42,10) GotoXY(42,11) GotoXY(42,12) End; END; BEGIN

Hal : 84

; ; ; ; ;

Write(Jurusan) Write(UKuliah) Write(BayarA) Write(BesarC) Write(JumlahC)

; ; ; ; ;

OpenDB ; OpenDummy ; REPEAT warna(10,3); clrscr ; FormUK; GotoXY(42, 7) ; Readln(cKode) ; if cKode='' Then Exit ; if SeekUK(cKode, POS) Then begin ShowUK ; IF Tanya('Data ini di hapus[Y/T]: ') Then begin Seek(fUK, 0) ; i := 1 ; WHILE not eof(fUK) do BEGIN Seek(fUK, i-1) ; Read(fUK, rUK) ; if rUK.Kode <> cKode Then begin seek(fDummy, fileSize(fDummy)) ; Write(fDummy, rUK ) ; End; inc(i) ; END ; Close(fUK); Close(fDummy); Erase(fUK) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Rename(fDummy, 'UangK.Dat') ; OpenDB ; OpenDummy ; Pesan('Hapus Data Berhasil...MAS ! '); end; end Else Pesan('DATA TIDAK SUDAH ADA...MAS ! '); UNTIL Not Tanya('Masih Ada Data [Y/T] : '); Close(fUK); Close(fDummy); END.

Hal : 85

PROGRAM MENU SEDERHANA Agar program-program yang telah kita buat sebelumnya dapat dijalankan secara sekaligus, maka kita membutuhkan program menu untuk memanggil program-program tersebut. Nama Program : Menu.Pas Uses CRT, UnitKU ; Var Pil : Byte ; Procedure Entri1 ; {$I entUK.Pas} Procedure Edit1; {$I korUK.Pas} Procedure Hapus1; {$I hapUK.Pas} Procedure Info1; {$I infUK.Pas} Procedure TampilMenu; Begin warna(3,3) ; Clrscr ; warna(14,4) ; Clear(4,8,39,21) ; warna(14,4) ; Clear(4,7,39,7) ; GotoXY(9, 7) ; Write('Menu Utama') ; warna(14,3) ; GotoXY(5, 8); Write('[ 1] Entri Uang Kuliah ') GotoXY(5, 9); Write('[ 2] Edit Uang Kuliah ') GotoXY(5, 10); Write('[ 3] Hapus Uang Kuliah ') GotoXY(5, 11); Write('----------------------------------') GotoXY(5, 12); Write('[ 4] Entri Mahasiswa ') GotoXY(5, 13); Write('[ 5] Edit Mahasiswa ') GotoXY(5, 14); Write('[ 6] Hapus Mahasiswa ') GotoXY(5, 15); Write('----------------------------------') GotoXY(5, 16); Write('[ 7] Entri Pembayaran Uang Kuliah ') GotoXY(5, 17); Write('----------------------------------') GotoXY(5, 18); Write('[ 8] Inf. Uang Kuliah ') GotoXY(5, 19); Write('[ 9] Inf. Mahasiswa ') GotoXY(5, 20); Write('[10] Keluar ')

; ; ; ; ; ; ; ; ; ; ; ; ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 86

GotoXY(5, 21); Write('----------------------------------') ; warna(14,4) ; Clear(4,22,39,22) ; GotoXY(5, 22) ; Write('Pilihan : '); end; Begin Pil := 1 ; While Pil <> 10 Do Begin TampilMenu ; GotoXY(17, 22) ; Readln(Pil) ; case pil of 1 : Entri1 ; 2 : Edit1 ; 3 : Hapus1 ; 8 : Info1 ; 10 : Halt ; end ; end; end.

Jika program menu diatas dijalankan maka akan menimbulkan error pada Dua Tempat yaitu : Uses Crt, UnitKU; End. Hal ini disebabkan pada struktur pascal hanya mengenal sebuah Uses & End. pada suatu program saja. Sehingga Jika program : entUK, infUK, hapUK, korUK di gabungkan dengan menu akan menjadi satu program, bukan 5 program. Jadi penyelesaiannya yaitu : Uses Crt, UnitKU; End. anda hilangkan ganti menjadi End ;

Hal diatas dilakukan pada program entUK, infUK, hapUK, korUK bukan pada MENU. Setelah anda ganti maka anda jalankan lagi dari Menu.pas .

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 87

BAB XIII GRAFIK


Untuk menggunakan grafik kita harus memasukkan unit Graph pada program kita dengan cara : USES Graph; Unit Standar Graph menyediakanfungsi standar lebih dari 50 fungsi grafik yang dapat dipergunakan untuk pembuatan grafik. Selain unit standar Graph, kita juga membutuhkan : File extension BGI (*.BGI) File extension CHR (*.CHR) File BGI (Borland Graphic Interface) berguna sebagai grafik driver yang menunjukkan graphics adapter untuk monitor anda : Graphics Adapter CGA danMCGA EGA dan VGA Hercules AT&T 400 Line 3270 PC Nama File Graphics Griver CGA.BGI EGAVGA.BGI HERC.BGI ATT.BGI PC3270.BGI

INIALISASI GRAFIK. Sebelum kita bekerja dengan grafik, kita harus menginialisasikan dahulu ke mode graph. Untuk menginialisasi ke mode grafik kita membutuhkan statemen InitGraph. Bentuk Umum : InitGraph(var GraphDriver:Integer; var GraphMode: Integer; Example : InitGraph(Gd, Gm, ) ; Variabel Gd & Gm di deklarasikan dengan type data Integer. GraphDriver merupakan merupakan driver yang dipergunakan pada komputer. Beberapa konstanta mengenai graphics driver didefinisikan pada standar Graph, yaitu : Detect CGA MCGA EGA EGA64 EGAMono RESERVED HercMono ATT400 VGA PC3270 = 0 =1 =2 =3 =4 =5 =6 =7 =8 =9 = 10 PathToDriver: string);

Pada prosedur standar InitGraph, GraphMode adalah mode grafik yang dipergunakan untuk driver bersangkutan. Biasanya GraphMode digunakan sebagai auto detection. Beberapa konstanta untuk nilai GraphMode sebagai berikut : Graphic Mode Nilai Graphic Mode Nilai STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur CGAC0 CGAC1 CGAC2 CGAC3 CGAHi MCGAC0 MCGAC1 MCGAC2 MCGAC3 MCGAMed MCGAHi EGALo EGAHi EGA64Lo EGA64Hi EGAMonoHi HercMonoHi VGALo VGAMed VGAHi PC3270Hi 0 {320 x 200} 1 {320 x 200} 2 {320 x 200} 3 {320 x 200} 4 {640 x 200} 0 {320 x 200} 1 {320 x 200} 2 {320 x 200} 3 {320 x 200} 4 {640 x 200} 5 {640 x 480} 0 {640 x 200} 1 {640 x 350} 0 {640 x 200} 1 {640 x 350} 3 {640 x 350} 0 {720 x 348} 0 {640 x 200} 1 {640 x 350} 2 {640 x 480} 0 {720 x 350} EGALo EGAHi EGA64Lo EGA64Hi EGAMonoHi HercMonoHi ATT400C0 ATT400C1 ATT400C2 ATT400C3 ATT400Med ATT400Hi VGALo MCGAMed MCGAHi ATT400C0 ATT400C1 ATT400C2 ATT400C3 ATT400Med ATT400Hi 0 {640 x 200} 1 {640 x 350} 0 {640 x 200} 1 {640 x 350} 3 {640 x 350} 0 {720 x 348} 0 {320 x 200} 1 {320 x 200} 2 {320 x 200} 3 {320 x 200} 4 {640 x 200} 5 {640 x 400} 0 {640 x 200} 4 {640 x 200} 5 {640 x 480} 0 {320 x 200} 1 {320 x 200} 2 {320 x 200} 3 {320 x 200} 4 {640 x 200} 5 {640 x 400}

Hal : 88

Example 1: Uses Graph; Var Gd : Integer; Gm : Integer; Begin Gd := Detect; InitGraph(Gd , Gm ,' ' ); SetFillStyle(1,9) ; Bar(0,0,640,480) ; OutTextXY(200, 200,'Selamat Anda memasuki Mode GRAFIK') ; Readln; CloseGraph; End. Contoh 13.1 Menginialisasi Grafik. ERROR PADA GRAFIK Pada saat kita masuk ke layar grafik bisa saja akan terjadi error. Untuk mendeteksi error yang terjadi maka kita menggunakan statemen GraphResult. Adapun bentuk penggunaannya yaitu : Example 2: Uses GRAPH ; Var Gd, Gm, ErrCode: Integer; Begin Gd := Detect; InitGraph(Gd , gM ,' ' ); STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur ErrCode := GraphResult; If ErrCode = grOk then Begin { Do graphics } SetFillStyle(1,7) ; Bar(0,0,640,480) ; Readln; CloseGraph; End Else Writeln('Graphics error : ', GraphErrorMsg(ErrCode)); end. Contoh 13.2 Mendekteksi Error pada Grafik.

Hal : 89

GraphResult digunakan untuk mendeteksi kesalahan yang terjadi pada saat menginialisasikan graph. grOK digunakan jika Grafik tidak terjadi kesalahan, jika terjadi kesalahan maka koleksi (jenis-jenis kesalahan) akan ditampilkan dengan statemen GraphErrorMsg. MENUTUP GRAFIK Jika kita ingin kembali ke layar mode TEXT maka sebelum mode Text dibangkitkan kita harus menulis perintah CloseGraph. BERPINDAH KE MODE GRAFIK KE MODE TEKS & SEBALIKNYA Untuk berpindah ke mode grafik ke mode teks ataupun dari mode teks ke mode grafik kita menggunakan statemen RestoreCrtMode SetGraphMode USES GRAPH; VAR Gd, Gm : Integer ; BEGIN Gd := Detect ; InitGraph (Gd, Gm, ) ; { Program untuk menampilkan Grafik..} { Kembali ke Mode Teks } RestoreCrtMode ; { Kembali lagi ke mode Grafik } SetGraphMode (Gm) ; END. PROSEDUR STANDAR GRAFIK Dibawah ini merupakan perintah-perintah standar dari penggunaan Grafik, yaitu : INITGRAPH Untuk menginialisasi Grafik SETFILLSTYLE untuk membuat arsiran beserta warna kotak. Perintah ini dikombinasikan dengan Statemen BAR. Bentuk Umum : SetFillStyle ( Arsir, Warna )

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 90

Arsir bisa bernilai antara 1 s/d 10, setiap nilai akan menghasilkan bentuk arsir yang berbeda. BAR untuk membuat Kotak tanpa garis pinggirnya. Bentuk Umum : BAR (col, bar, col2, bar2) Col, Bar

Col2, Bar2 Example 3: Uses Graph; Var Gd : Integer; Gm : Integer; i : Byte ; Begin Gd := Detect; InitGraph(Gd , Gm ,' ' ); For i := 1 to 10 Do Begin SetFillStyle( i, i+2) ; Bar(0,0,640,480) ; Readln; End; CloseGraph; End. Contoh 13.3 Contoh Penggunaan Arsiran pada BAR. BAR3D digunakan untuk membuat kotak berbentuk 3 Dimensi . Bentuk Umum : Bar3D ( col, bar, col1, bar1, tebal, True / False ) True / False disini berguna untuk memunculkan bagian atas Bar3D, sedangkan Tebal berguna untuk membuat Ketebalan pada Grafik tersebut . Example 4: Uses Graph; Var Gd : Integer; Gm : Integer; Begin Gd := Detect; InitGraph(Gd , Gm ,' ' ); SetFillStyle(1,4) ; Bar3D(100,100,200,380, 15, TRUE ) ; Readln; CloseGraph; End. Contoh 13.4 Menginialisasi Grafik. STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur SETCOLOR untuk pengaturan warna pada Rectangle & Line. Bentuk Umum : SetColor ( warna ) RECTANGLE untuk membuat suatu media Kotak tanpa Arsiran Bentuk Umum : Rectangle (col, bar, col1, bar1 ) LINE untuk membuat garis Bentuk Umum : Line (col, bar, col1, bar1 ) Example 5: Uses Graph; Var Gd : Integer; Gm : Integer; Begin Gd := Detect; InitGraph(Gd , Gm ,' ' ); SetFillStyle(1,4) ; Bar( 100,100,200,380 ) ; SetColor (15) ; Rectangle ( 150,100,300,280 ) ; Line ( 150,100,300,280 ) ; SetColor (14 ) ; Line ( 0,0, 640, 480 ) ; Readln; CloseGraph; End. Contoh 13.5 menggunakan perintah Line & Rectangle SETTEXTSTYLE Untuk mengatur Tulisan pada media Grafik Bentuk Umum : SetTextStyle ( bentukHuruf, Horiz / Vert , SizeHuruf ) Jumlah bentuk huruf yang dimiliki oleh pascal sejumlah 11 jenis Huruf. OUTTEXTXY untuk menampilkan tulisan / karakter pada media Grafik Bentuk Umum : OutTextXY ( col, bar, Tulisan ) ;

Hal : 91

Example 6: Uses Graph; Var Gd : Integer; Gm : Integer; Begin Gd := Detect; InitGraph(Gd , Gm ,' ' ); SetFillStyle(1,9) ; Bar(0,0,640,480) ; SetTextStyle ( 4, 0, 3 ) ; OutTextXY(200, 200,'Selamat Anda memasuki Mode GRAFIK') ; Readln; CloseGraph; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur End. Contoh 12.6 Menampilkan Tulisan pada Grafik. Example 7: Uses Graph; Var Gd : Integer; Gm : Integer; i Byte ; Begin Gd := Detect; InitGraph(Gd , Gm ,' ' ); SetFillStyle(1,9) ; Bar(0,0,640,480) ; For i := 1 to 10 Do Begin SetTextStyle ( i + 1, 0, 3 ) ; OutTextXY(25 * i, 25 * i , Mesran, S.Kom ) ; End; Readln; CloseGraph; End. Contoh 13.7 Menampilkan Tulisan pada Grafik. CIRCLE untuk membuat lingkaran Bentuk Umum : Circle ( x, y , Radius / Tebal Lingkaran ) ;

Hal : 92

Example 8 : USES Graph; VAR Gd, Gm : Integer; Radius : Integer; BEGIN Gd := Detect; InitGraph(Gd, Gm, ' ' ); If GraphResult <> grOk then Halt(1) ; For Radius := 1 to 10 do Begin SetColor(Radius) ; Circle( Round(GETMAXX / 2), Round(GETMAXY / 2), Radius * 15); End; For Radius := 1 to 5 do Circle( 100, 100, Radius * 10) ; For Radius := 1 to 5 do Circle( 550, 420, Radius * 10) ; Readln; CloseGraph; END. Contoh 13.8 Menampilkan lingkaran.

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 93

ELLIPSE untuk membuat lingkaran dan lingkaran yang terbuat bisa diatur misalnya hanya setengah, radius / tebalnya ( bulat / bulat telur ) Bentuk Umum : Ellipse ( x, y , StartAwal, StartAkhir, RadiusX, RadiusY ); Example 9 : USES Graph; VAR Gd, Gm : Integer; BEGIN Gd := Detect; InitGraph(Gd, Gm, ' '); Ellipse(100, 100, 180, 360, 30, 50); Ellipse(100, 100, 0, 180, 50, 30); Readln; CloseGraph; END. Contoh 13.9 Menampilkan lingkaran. PIESLICE untuk membuat lingkaran dengan arsiran dan derajat lingkaran bisa diatur. Bentuk Umum : PieSlice ( x, y , StartAwal, StartAkhir, Radius ); Example 10 : USES Graph; CONST Radius = 20; VAR Gd, Gm : Integer; BEGIN Gd := Detect; InitGraph(Gd, Gm, ' '); PieSlice(100, 50, 5, 355, Radius); PieSlice(150, 50, 20, 330, Radius); PieSlice(200, 50, 40, 310, Radius); PieSlice(200, 50, 60, 280, Radius); Readln; CloseGraph; END. Contoh 13.10 Menampilkan lingkaran dengan arsiran. FILLPOLY untuk menampilkan suatu bentuk segitiga yang mudah diatur . Bentuk Umum : FillPoly ( NumPoint Div SizeOf( PointType ), NumPoint ); Example 11 : USES Graph; CONST Triangle : Array[1..3] of PointType = ((X: 100; Y: 100), (X: 150; Y: 100), (X: 125; Y: 150)); Triangle2 : Array[1..3] of PointType = ((X: 150; Y: 100), (X: 175; Y: 150), (X: 125; Y: 150)); Triangle3 : Array[1..3] of PointType = ((X: 175; Y: 150), (X: 150; Y: 200), (X: 125; Y: 150)); Triangle4 : Array[1..3] of PointType = ((X: 100; Y: 200), (X: 150; Y: 200), (X: 125; Y: 150)); STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Triangle5 : Array[1..3] of PointType = ((X: 75; Y: 150), (X: 100; Y: 200), (X: 125; Y: 150)); VAR Gd, Gm: Integer; BEGIN Gd := Detect; InitGraph(Gd, Gm, ' '); Setfillstyle (1,9) ; Setcolor(1); FillPoly( SizeOf(Triangle) div SizeOf(PointType), Triangle); Setfillstyle (1,1) ; Setcolor(9); FillPoly( SizeOf(Triangle2) div SizeOf(PointType), Triangle2); Setfillstyle (1,15) ; Setcolor(1); FillPoly( SizeOf(Triangle3) div SizeOf(PointType), Triangle3); Setfillstyle (1,7) ; Setcolor(2); FillPoly( SizeOf(Triangle4) div SizeOf(PointType), Triangle4); Setfillstyle (1,2) ; Setcolor(1); FillPoly( SizeOf(Triangle5) div SizeOf(PointType), Triangle5); Readln; CloseGraph; END. Contoh 13.11 Menampilkan suatu bentuk segitiga yang dapat diatur. SECTOR sama dengan perintah PieSlice. Bentuk Umum : Sector ( x, y , StartAwal, StartAkhir, Radius ); Example 12 : USES Graph; VAR Gd , Gm : Integer; Xasp, Yasp: Word; BEGIN Gd := Detect; InitGraph(gd , gm , ' '); SetFillStyle (1,9) ; SetColor (2) ; Sector (100,100, 10,350, 50, 50 ) ; SetFillStyle (1,4) ; SetColor (1) ; Sector (200,200, 50,300, 34, 34 ) ; SetFillStyle (1,4) ; SetColor (1) ; Sector (400,200, 70,290, 40, 40 ) ; SetFillStyle (1,15) ; SetColor (3) ; Sector (500,100, 50,300, 20, 20 ) ; Readln; CloseGraph; end. Contoh 13.12 Menampilkan lingkaran.

Hal : 94

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur CLOSEGRAPH untuk menutup Grafik

Hal : 95

MENYIMPAN & MENAMPILKAN GRAFIK Grafik yang tampil dilayar adakalanya kita simpan ke memori dan akan ditampilkan kembali ke Layar untuk keperluan tertentu. Adapun perintah untuk menyimpan & menampilkannya yaitu : o o o o ImageSize mengambil ukuran / size yang akan disimpan ke pointer GetMem mengambil penempatan / alokasi ke memori GetImage mengambil gambar yang akan disimpan PutImage menampilkan kembali gambar yang telah disimpan.

Example 13 : USES Graph; VAR Gd, Gm : Integer; P : Pointer; Size : Word; BEGIN Gd := Detect; InitGraph(Gd, Gm, ' '); SetFillStyle(1,3) ; Bar(0, 0, GetMaxX, GetMaxY); SetFillStyle(1,2) ; Sector (100,100,40,300, 30,30) ; Size := ImageSize(70, 70, 130, 130); GetMem(P, Size); GetImage(70, 70, 130, 130, P^); Readln; ClearDevice; SetFillStyle(1,3) ; Bar(0, 0, GetMaxX, GetMaxY); PutImage(300, 100, P^, NormalPut); Readln; CloseGraph; END. Contoh 13.13 : Menyimpan & Menampilkan Grafik ke layar MENAMPILKAN TEXT3D Text yang ditampilkan ke layar masih kurus dan tidak terlalu bagus untuk dilihat. Agar text yang ditampilkan ke layer berkualitas baik, maka penampilan harus menggunakan sebuah procedure. Example 14 : USES GRAPH ; Var Gd, Gm : Integer ; Procedure Print3D(x1,y1:integer ;SizeT:Byte; text:string; clrD,ClrB,Style:byte); Begin SetTextStyle(Style,0,SizeT) ; SetColor(ClrD) ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur OutTextxy(x1,y1,Text) OutTextxy(x1+1,y1,Text) End; ; SetColor(ClrB) ; ; OutTextxy(x1+2,y1,Text) ;

Hal : 96

Procedure OpenGraph ; Begin gd := Detect ; Initgraph (Gd, Gm, 'c:\TP\BGI\') ; End; BEGIN OpenGraph ; SetFillStyle(1,3) ; Bar (0, 0, 640, 480) ; SetTextStyle (2,0,6) ; OutTextXY (100,20,'Tanpa Procedure') ; Print3D( 100,50, 6, 'Sekolah Tinggi Manajemen Informatika Komputer',7,1, 2 ); Print3D( 100,70, 1, 'Sekolah Tinggi Manajemen Informatika Komputer',7,0, 7 ); Readln ; CloseGraph; END. Contoh 13.14 : Menampilkan Text berbentuk 3D MEMBUAT TOMBOL BUTTON, BUTTON MASUK & BUTTON YANG TERSOROT Untuk membuat suatu Tombol yang berbentuk Visual harus menggunakan suatu procedure dan memakai beberapa statemen sekaligus. Sehingga akan lebih efisien dengan menggunakan procedure Example 15 : USES GRAPH ; Var Gd, Gm : Integer ; Procedure OpenGraph ; Begin gd := Detect ; Initgraph (Gd, Gm, 'c:\TP\BGI\') ; End; Procedure BoxOn(X1,Y1,X2,Y2 :Integer ; Text: String ; Posisi : Byte) ; Var Hor, Ver : Real ; Begin setlinestyle(0,1,0) ; setfillstyle(1,7) ; Bar(X1,Y1,X2,Y2) ; SetColor(15) ; Line(x1+1,y1+1,x1+1,y2-1) ; Line(x1+1,y1+1,x2-1,y1+1) ; SetColor(0) ; Line(x2,y1+1,x2,y2) ; Line(x1+1,y2,x2-1,y2) ; SetColor(8) ; Line(x1+2,y2-1,x2-1,y2-1) ; hor :=( (x2-x1) / 2) + x1 - ( ( length(text) * 8) / 2 ) ; ver := ( (y2-y1) / 2) + y1-6; SetTextStyle(2,0,4) ; SetColor(0) ; If length(text) < 5 Then Hor:=Hor-3 ; OutTextxy(round(hor)+8,round(ver),Text) ; If Posisi <> 0 Then OutTextxy(round(Hor)+1+(6*Posisi),round(Ver)+4,''); End; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Procedure BoxSorot(X1,Y1,X2,Y2:Integer) ; Begin SetColor(0) ; Rectangle( X1,Y1,X2,Y2) ; SetColor(8) ; Line(X2-1,Y1+2,X2-1,Y2) ; SetLineStyle(1,0,1) ; SetColor(0) ; Rectangle(x1+8,y1+3,x2-8,y2-3) ; setlinestyle(0,1,0) ; End; Procedure BoxOFF(X1,Y1,X2,Y2 :Integer;Text:String;Kon:Boolean); var hor, ver : real ; Begin dec(y1,2) ; setlinestyle(0,0,2) ; setfillstyle(1,7) ; Bar(X1+1,Y1+2,X2,Y2) ; SetColor(0) ; Rectangle(X1+1,Y1+2,X2,Y2); SetColor(8) ; Rectangle(X1,Y1+3,X2,Y2) ; SetColor(15) ; Line(X2,Y1+2,X2,Y2) ; Line(X1+2,Y2,X2,Y2) ; hor :=((x2-x1)/2)+x1-(length(text)*8)/2; ver :=((y2-y1)/2)+y1+2; SetTextStyle(2,0,4) ; OutTextxy(round(hor)+8,round(ver)-6,Text) ; If Kon = True Then Begin SetLineStyle(1,0,1) ; Rectangle(X1+6,Y1+6,X2-5,Y2-3); End; Sound(1150);Delay(200);NoSound; End; BEGIN OpenGraph ; SetFillStyle(1,3) ; Bar (0, 0, 640, 480) ; BoxON (100,300,160,320,'Simpan',1) ; BoxOFF (100,300,160,320,'Simpan',True) ; BoxON (162,300,224,320,'Edit',1) ; BoxON (226,300,286,320,'Hapus',1) ; BoxON (288,300,348,320,'Ok',1) ; BoxON (350,300,410,320,'Batal',1) ; BoxSorot (350,300,410,320) ; Readln ; CloseGraph; END. Contoh 13.15 : Button 3D, Button Tersorot & Button terClick

Hal : 97

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur

Hal : 98

MEMBUAT TEXTBOX Procedure di bawah ini berguna untuk menampilkan textbox tempat kita mengisikan data pada media grafik. Example 16 : USES GRAPH ; Var Gd, Gm : Integer ; Procedure OpenGraph ; Begin gd := Detect ; Initgraph (Gd, Gm, 'c:\TP\BGI\') ; End; Procedure TextBox(X1,Y1,X2,Y2 :Integer;style1,InClr:Byte); Begin setlinestyle(0,0,1) ; setcolor(15) ; Rectangle(X1-1,Y1-1,X2+2,Y2+2); Setfillstyle(Style1,Inclr) ; Bar(X1,Y1,X2,Y2) ; setcolor(8) ; line(X1-2,Y1-1,X1-2,Y2+1) ; line(X1-1,Y1-1,X1-1,Y2+1) ; line(X1-2,Y1-2,X2+2,Y1-2) ; line(X1-1,Y1-1,X2+1,Y1-1) ; Delay(50) ; End; BEGIN OpenGraph ; SetFillStyle(1,3) ; Bar (0, 0, 640, 480) ; Print3D(30,120,5,'Kode OBAT ',7,0,2) ; TextBox(140,121,190,136,1,15); Readln ; CloseGraph; END. Contoh 13.16 : Textbox untuk media penginputan data MEMBUAT FUNGSI INPUT DATA PADA MEDIA GRAFIK Prosedur standar Read & Readln tidak bisa digunakan pada media grafik sehingga jika kita ingin menginputkan data di media grafik kita hasu membuat prosedur khusus untuk menangani masalah input data. Pada prinsipnya adalah kita selalu mendeteksi setiap penekanan keyboard sejumlah perulangan tertentu pada saat kita melakukan penginputan. Hasil dari input ini tentunya setiap karakter yang kita tekan akan dirangkai dan dikembalikan ke program utama. Example 17 : Function _ReadData(yy, xx, Loop:Integer ; Kon : Boolean) : String ; Var Ch : Char ; Posisi : Integer ; STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Awal Panjang Huruf Looping Xhuruf Kalimat, kata : Integer ; : Integer ; : integer ; : Integer ; : Array[1..35] Of String ; : String[80] ;

Hal : 99

Procedure kursor(Colom,Baris:Integer;Status:Boolean); Begin If Status=True Then Begin Setfillstyle(1,0) ; Bar(Colom,Baris,Colom,Baris+11); Setfillstyle(1,15) ; Bar(Colom+1,Baris,Colom+textwidth('h'),Baris+11); End Else Begin Setfillstyle(1,15) ; Bar(Colom,Baris,Colom+Textwidth('H'),Baris+11); End; End; Procedure Kedip; Begin Repeat Kursor(yy, xx, True) ; Delay(250) ; Kursor(yy, xx, False); Delay(250) ; Until Keypressed; End; Begin Looping Panjang

:= 0 ; Posisi := 1 ; := 0 ; Kalimat := '' ;

For Awal := 1 To 15 Do Xhuruf[Awal] := '' ;

Repeat If Not KeyPressed Then Kedip; Ch := Readkey ; Case ch Of 'A'..'Z','a'..'z','0'..'9',' ','-','.',':','\','/',',','&','@','!','%','*','^': Begin Settextstyle(Smallfont,0,4) ; Setlinestyle(0,0,1) ; Kursor(yy, xx, False) ; SetColor(0) ; If Kon Then Ch :=Upcase(Ch) ;

STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur OutTextxy(yy, xx, ch) ; Kursor(yy+TextWidth(Ch), xx, True); inc(yy, TextWidth(Ch)) ; Inc(Posisi) ; Xhuruf[Posisi] := Ch ; Inc(Looping) ; End; Begin If Posisi > 1 Then Begin Dec(Posisi) ; Kursor(yy, xx, False) ; SetColor(0) ; OutTextxy(yy-TextWidth(Xhuruf[Posisi+1]),xx, Kata[Posisi]) ; Kursor(yy-TextWidth(Xhuruf[Posisi+1]),xx, True) ; Dec(Huruf,TextWidth(Xhuruf[Posisi+1])) ; Dec(yy, TextWidth(Xhuruf[Posisi+1])) ; Dec(Looping) ; Kata := ' ' ;

Hal : 100

For Awal := 1 To Posisi Do Kata := Kata + Xhuruf[Awal] ; End; End; End; Kata := '';

For Awal := 1 To Posisi Do Kata := Kata + XHuruf[Awal] ;

Until (Loop = Looping) Or (Ch = #13) Or (Ch = #27) ;

For Awal := 1 To Posisi Do Kalimat := Kalimat + XHuruf[Awal] ; Kursor(yy, xx, False) ; _ReadData := Kalimat ; End; Contoh 13.17 : Contoh fungsi Input data pada media grafik. MEMBUAT FORM PENGINPUTAN DATA Program terakhir ini adalah suatu media form yang diperlukan pada saat kita mau membuat form entri data. Example 18 : USES GRAPH ; Var Gd, Gm : Integer ; Kode : String[6] ; .. .. .. STMIK BUDIDARMA

MODUL Praktikum : Pemrograman Terstruktur Procedure FORM(x1, y1, x2, y2 : Integer ; Txt : String) ; Begin BoxON(x1,y1,x2,y2,'',0) ; SetFillStyle(1,1) ; Bar(x1+2,y1+3,x2-2,y1+22) ; Print3d(x1+20,y1+2,6, txt ,1,14,2) ; End; Procedure FormMHS; Begin Form(10,90,370,275,'Entri Data OBAT'); print3d(30,120,5,'Kode',7,0,2) ; Print3d(30,145,5,'Nama',7,0,2) ; Print3d(30,170,5,'Satuan',7,0,2) ; Print3d(30,195,5,'Harga Jual',7,0,2) ; Print3d(30,220,5,'Harga Beli',7,0,2) ; TextBox(130,121,170,136,1,15); TextBox(130,147,340,161,1,15); TextBox(130,172,230,186,1,15); TextBox(130,197,200,211,1,15); TextBox(130,222,200,236,1,15); BoxON (25,248,90,268,'New',1) ; BoxOFF(25,248,90,268,'New',True) ; BoxON (91,248,157,268,'Save',1) ; BoxON (158,248,223,268,'Delete',1) ; BoxON (224,248,289,268,'Cancel',1) ; BoxON (290,248,355,268,'Close',1) ; End; BEGIN OpenGraph ; SetFillStyle(1,3) ; Bar (0, 0, 640, 480) ; FormMHS ; Kode := Inda(132,122, 6, False) ; Readln ; CloseGraph; END. Contoh 13.18 : Contoh fungsi Input data pada media grafik. Hasil output jika program diatas dijalankan yaitu :

Hal : 101

STMIK BUDIDARMA

Anda mungkin juga menyukai