Modul Pascal
Modul Pascal
10PENDAHULUAN
Ada sebuah anekdot tentang pandangan yang salah kaprah mengenai komputer. Sebagai sebuah mesin pintar, komputer terlanjur dipercaya orang mampu mengerjakan perintah apa saja yang diberikan oleh manusia. Komputer adalah benda ajaib yang mampu menyelesaikan masalah apa saja yang diinginkan orang. Anggapan tersebut tidak seluruhnya salah. Komputer memang alat bantu dalam menyelesaikan masalah. Persoalannya, komputer tidak begitu saja langsung dapat menyelesaikan masalah yang disodorkan. Orang harus merumuskan langkah langkah penyelesaian masalah itu dalam suatu runtunan instruksi. Komputerlah yang nanti mengerjakan runtunan instruksi tersebut, karena komputer dapat mengerjakannya dengan cepat, akurat, bahkan berulang ulang tanpa kenal lelah dan bosan. Sekumpulan instruksi yang merupakan penyelesaian masalah itu dinamakan program. Program dimasukkan ke dalam 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. Sebagaimana dalam kehidupan, kita hanya dapat memberikan perintah kepada orang lain dalam bahasa yang ia mengerti. Misalnya kepada orang Inggris, kita hanya dapat memberikan tugas kepadanya dalam bahasa Inggris. 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. Sampai saat ini terdapat ratusan bahasa pemrograman. Bahasa bahasa ini akan terus berkembang dan bertambah jumlahnya. Yang membuat dan mendefinisikan bahasa itu adalah manusia juga. Ada bahasa yang cukup sulit dipahami oleh penggunanya dikarenakan tata bahasanya yang primitif atau karena orientasi bahasanya lebih dekat ke bahasa mesin (bahasa tingkat rendah low level language) daripada bahasa manusia (bahasa tingkat tinggi high level language). Kebanyakan bahasa tingkat tinggi mengambil kata kata dari bahasa Inggris sehingga ia mudah dipelajari oleh pemakainya. Pada mulanya orang mempelajari suatu bahasa komputer melalui aturan tata bahasanya. Ketika bahasa baru muncul, yang umumnya lebih maju dibandingkan dengan bahasa generasi lama, orang pun mempelajarinya lalu menuliskan program dalam bahasa baru tersebut. Sebuah bahasa dapat mempunyai beberapa versi, setiap versi dirancang untuk komputer atau lingkungan sistem operasi tertentu. Antara satu versi bahasa dengan versi lainnya terdapat perbedaan. Jadi agar program dapat dijalankan pada komputer yang lain, orang harus menulis program dalam versi bahasa yang sesuai dengan komputer tersebut. Jadi, orang yang menulis program sangat terikat dengan aturan bahasa dan spesifikasi mesin yang akan menjalankannya. Saat ini, dengan berkembangnya teknik pemrograman terstruktur, orang tidak lagi memecahkan masalah dengan langsung menulis programnya dalam bahasa pemrograman. Orang mulai memikirkan suatu cara penyelesaian masalah yang akan diprogram dengan menekankan pada desain atau rancangan yang mewakili pemecahan masalah tersebut. Desain berisi urutan langkah langkah pencapaian solusi yang ditulis dalam notasi notasi deskripsi. Urutan langkah langkah yang sistematis untuk menyelesaikan sebuah masalah dinamakan algoritma. Notasi untuk menuliskan algoritma disebut notasi algoritmik. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu program dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, program dalam notasi algoritmik harus ditranslasikan (diterjemahkan) ke dalam notasi bahasa pemrograman yang dipilih. Menulis program bukan hanya merupakan suatu kreatifitas tetapi juga merupakan sebuah penerapan disiplin ilmu secara teliti, karena program merupakan implementasi dari suatu urutan langkah guna menyelesaikan suatu masalah. Pemrogram adalah orang yang bekerja menyusun suatu program. Pemrogram ( programmer) yang baik akan menghasilkan program yang mampu memberikan solusi yang tepat dan benar. Pemrogram dapat digolongkan dalam dua jenjang, yaitu amatir dan profesional. Pemrogram
2 amatir biasanya hanya menghasilkan program yang relatif hanya untuk memecahkan masalah masalah kecil, sedangkan pemrogram profesional memiliki kemampuan untuk menyusun program untuk memecahkan masalah masalah yang besar dan rumit. Banyak orang yang memiliki hobi bermain dengan komputer yang kemudian menjadi pemrogram amatir. Namun untuk menyelesaikan masalah masalah yang cukup rumit dibutuhkan pemrogram yang profesional dalam bidangnya. Banyak pemrogram profesional memulainya dengan sebuah sertifikat dari sebuah kursus, dari akademi atau perguruan tinggi di bidang ilmu komputer atau dari ilmu lain yang berkaitan dan kemudian mereka mencari pengalaman dan terus berlatih. Untuk menghasilkan program yang baik dibutuhkan pemrogram yang baik dan berkualitas pula. Adapun kriteria pemrogram yang baik adalah : Mampu menyusun pemecahan masalah yang baik Menguasai bahasa pemrograman dengan baik Mampu menulis program dengan teknik yang baik Mampu menyusun program yang baik Dapat bekerja sama dalam suatu tim kerja Dapat bekerja secara efisien dan tepat waktu
Perancangan Algoritma
Test
Test
Dokumentasi
Dipakai
Suatu 1. 2. 3. 4. 5. 6. 7.
program dikatakan baik jika : Bekerja sesuai dengan tujuan dan memenuhi spesifikasi yang telah ditentukan Tidak mengandung kesalahan Cepat dalam waktu pelaksanaannya (eksekusi program) Efisien dalam penggunaan memori komputer User friendly Portability Kemudahan merawat & mengembangkan program
3 Program dibagi dalam 3 bentuk : 1. Konvensional Semua langkah langkah yang dibutuhkan untuk menghasilkan suatu informasi tanpa ada aturan tertentu. 2. Terstruktur - mengandung teknik pemecahan masalah yang tepat dan benar - memiliki algoritma pemecahan masalah yang sederhana, standar, dan efektif - penulisan program memiliki struktur logika yang benar dan mudah dipahami - terdiri dari 3 struktur dasar, yaitu struktur sekuensial, penyeleksian kondisi dan perulangan - menghindari penggunaan GOTO 3. Event driven, OOP, Multi threading Dapat melakukan beberapa proses dalam satu waktu. Bahasa pemrograman dibedakan menjadi 4 : 1. Low Level Language (bahasa tingkat rendah) Merupakan bahasa mesin, berekstensi exe, com, dsb. Bahasa jenis ini dirancang agar setiap instruksi langsung dikerjakan oleh komputer, tanpa harus diterjemahkan terlebih dahulu. Sulit dipahami manusia. 2. Middle Level Language (bahasa tingkat menengah) Tidak begitu mudah dipahami karena selain harus tahu perintah-perintahnya juga harus tahu cara kerja mesin. Contoh : bahasa Assembler. 3. High Level Oriented Programming Berorientasi ke bahasa manusia (bahasa Inggris), mudah dipahami. Program dalam bahasa ini tidak dapat langsung dilaksanakan oleh komputer. Perlu diterjemahkan dulu ke bahasa mesin (bahasa tingkat rendah) sebelum dieksekusi oleh CPU. Contoh : bahasa Pascal, Cobol, Basic, Dbase, C,dll 4. Object Oriented Programming (bahasa berorientasi objek) : berbasis visual, contoh : Delphi, Visual Basic, dll Proses mengubah (menterjemahkan) dari bentuk bahasa tingkat tinggi ke tingkat rendah dalam bahasa pemrograman ada 2 tipe : 1. Interpreter Membaca dan diterjemahkan tiap baris. Contoh bahasa pemrograman dengan tipe interpreter: bahasa Perl, Phyton, PHP,dll 2. Compiler Membaca program & menerjemahkan secara keseluruhan, contoh : Pascal, C,dll Program tingkat tinggi = kode sumber (source code) Hasil dari terjemahan = object code atau executable Ada juga bahasa pemrograman yang menggabungkan 2 tipe diatas, contoh : Java. ALGORITMA Algoritma adalah urutan langkah langkah logis yang disusun secara sistematis dari sebuah prosedur yang harus ditempuh untuk menyelesaikan suatu masalah yang masih ditulis dalam bahasa manusia. Algoritma bisa direpresentasikan dengan 2 macam cara, yaitu : 1. Flowchart Representasi algoritma dengan menggunakan bagan alir dan lambang lambang tertentu. Flowchart memudahkan dalam melakukan pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Flowchart juga berguna sebagai fasilitas untuk berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek. Simbol : Input / Output Proses Testing
4 Terminal = menunjukkan awal & akhir program Connector = penghubung pada satu halaman Off Page Connector = penghubung pada halaman yang berbeda Preparasi = memberikan nilai awal pada suatu variabel/konstanta
Predefined Proses = proses yg ditulis sebagai subprogram, yaitu prosedur/fungsi Arah Aliran Proses Manual Input
Display
Magnetic Disk
File 2. Pseudocode Merupakan bentuk prosedur format pengujian algoritma pemrograman namun masih menggunakan bahasa manusia.
Proses A
Proses B Contoh : Flowchart menghitung luas lingkaran Mulai Pi 3.14 Masukkan R L Pi * R* R Tulis L
Selesai 2. Pemilihan (selection) Suatu instruksi dikerjakan jika kondisi tertentu dipenuhi. Nilai suatu kondisi dapat ditest dan menghasilkan kondisi benar atau salah. Untuk melakukan test kondisi biasanya digunakan operasi relasi sebagai berikut : NOTASI = > < ARTI dengan sama dengan besar kecil besar atau sama dengan kecil atau sama dengan
Test kondi si
Proses A
Proses B
x mod 2 = 0
Y
Cetak Bilangan Genap
T
Cetak Bilangan Ganjil
Selesai 3. Pengulangan Disebut juga iterasi / loop, instruksi atau serangkaian instruksi dikerjakan secara berulang sepanjang kondisi tertentu masih menghendaki.
Proses A
Test kondi si
Proses B
x=0
x<5 Y x=x+1
Cetak x
Selesai
Notasi Algoritma 1. Judul atau kepala Bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut. 2. Bagian deklarasi Bagian untuk mendefinisikan semua nama yang dipakai di dalam algoritma. Nama tersebut bisa berupa nama variabel, tipe, prosedur, fungsi, dsb. 3. Bagian deskripsi
7 Berisi uraian langkah langkah penyelesaian masalah. Contoh : Algoritma Hitung_Lingkaran DEKLARASI const phi = 3.14 r,luas,keliling : real DESKRIPSI read(r) luas phi * r * r keliling 2 * phi * r write(luas,keliling) Algoritma Menentukan_Bilangan_Ganjil_Genap DEKLARASI x : integer DESKRIPSI read(x) if x mod 2 = 0 then write(Bilangan genap)
else
write(Bilangan ganjil) endif Algoritma Mencetak_Angka_5 DEKLARASI x : integer DESKRIPSI x 0 while x < 5 do x x+1 endwhile write(x)
8 1. Untuk menulis program baru caranya tekan tombol ALT+ F pilih NEW terlebih dahulu sebelum Anda mengetik program Anda. 2. Ketikkan program Anda. 3. Simpan program Anda. Sebelum menyimpan tentukan letak (misal direktori atau folder) dimana program akan disimpan dengan cara ALT + F pilih Change Dir . Setelah memilih direktori/folder, tekan tombol F2 atau ALT + F pilih Save atau Save As . Kemudian ketikkan nama program Anda, misalnya Contoh1.pas <enter> 4. Jalankan program dengan menekan tombol ALT + R pilih RUN atau CTRL + F9 5. Bila ada kesalahan perbaiki kesalahan tersebut kemudian Anda ulangi langkah 3 dan 4 6. Untuk membuat program baru ulangi langkah 1. 7. Bila Anda ingin mengecek apakah program Anda sudah tersimpan atau ingin menampilkan program Anda kembali ke layar, maka tekan tombol ALT + F OPEN kemudian enter. Selanjutnya Anda kerjakan contoh-contoh program dibawah ini beserta tugasnya. 1. BARIS KOMENTAR Baris komentar adalah baris-baris yang menjelaskan maksud dari perubah (variabel) yang digunakan atau maksud dari program itu sendiri. Hal ini dimaksudkan untuk memudahkan pelacakan atas perubah (variabel) yang digunakan apabila program yang digunakan cukup besar atau memudahkan orang lain memahami program yang kita buat. Dalam program, baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan } . Baris ini tidak dikerjakan oleh komputer, hanya dianggap sebagai baris kosong. Contoh :
clrscr; var {bersih layar} a : integer (* variabel untuk alas segitiga *)
2. BENTUK / STRUKTUR PROGRAM PASCAL Bentuk program Pascal mirip dengan kebanyakan program bahasa tingkat tinggi lainnya. Bentuk umumnya adalah : 1. Judul Program 2. Blok program a. Bagian deklarasi Deklarasi label Deklarasi konstanta Definisi tipe Deklarasi variabel Deklarasi prosedur Deklarasi fungsi b. Bagian pernyataan / statemen 2.1. Judul Program Judul program sifatnya sebagai dokumentasi saja, tidak signifikan terhadap proses program. Bentuk umumnya sebagai berikut : Program (nama program); Contoh : Program Hitung_Luas; Keterangan : Program adalah kata tercadang Hitung_Luas adalah nama program 2.2 Blok Program a. Deklarasi Deklarasi adalah bagian untuk mendefinisikan semua nama yang dipakai dalam program. Nama tersebut dapat berupa nama label, tetapan (konstanta), nama variabel, nama tipe, nama prosedur, nama fungsi.
9 b. Pernyataan / statemen Adalah bagian yang berisi perintah pengerjaan program. Kumpulan statemen membentuk program. Statemen berada di bagian deklarasi statemen dengan diawali kata cadangan begin dan end. Sintaks : Begin Daftar_statemen; End; Ketentuan penulisan statemen 1. Diakhiri dengan titik koma 2. Huruf besar atau huruf kecil tidak dibedakan 3. Dalam satu baris boleh lebih dari satu statemen 4. Satu statemen boleh terdiri dari beberapa baris 5. Konstanta tidak boleh dipecah dalam beberapa baris Statemen terdiri dari : 1. Statemen pengerjaan Digunakan untuk memasukkan suatu nilai tertentu ke dalam suatu variabel. Sintaks : pengenal_variabel := ungkapan; Contoh : x = a+1 2. Statemen prosedur Digunakan untuk mengaktifkan suatu prosedur yang telah didefinisikan pemakai atau oleh Pascal Contoh : tambah(x,y); 3. Statemen GOTO Kata cadangan GOTO diikuti dengan pengenal label untuk melompat ke baris tertentu. 4. Statemen kosong Statemen yang tidak berisi simbol apapun. Contoh : Begin End; 5. Statemen Input Untuk memasukkan atau membaca data yang akan diolah. Pascal mempunyai 2 statemen untuk membaca data yaitu statemen READ dan READLN. Statemen READ tidak memperhatikan batas baris, rinci data akan selalu dibaca tidak tergantung apakah ada di baris yang sama atau tidak. Statemen READLN memulai pembacaan data pada posisi baris saat itu dan pergi ke awal baris baru setelah pembacaan selesai. Sintaks : read(var1, var2, ) Atau readln(var1, var2, )
6. Statemen Output Untuk mencetak hasil pengolahan data (keluaran). Pascal mempunyai 2 statemen yaitu WRITE dan WRITELN. Sintaks : write(var1, var2, ) atau
10 writeln(var1, var2, ) 3. VARIABEL Variabel dalam program digunakan untuk menyimpan suatu nilai tertentu dimana nilai tersebut dapat berubah-ubah. Setiap variabel mempunyai tipe dan hanya data yang bertipe sama dengan tipe variabel yang dapat disimpan di dalam variabel tersebut. Setiap variabel mempunyai nama. Pemisahan antar variabel dilakukan dengan memberikan tanda koma. Contoh : Var Jumlah : integer; harga_per_unit, total_biaya : real; Dari contoh diatas,variabel jumlah hanya boleh menerima data yang bertipe integer (bulat), tidak boleh menerima data bertipe lainnya. Variabel harga_per_unit dan total_biaya hanya bisa diisi dengan bilangan real (pecahan). 4. KONSTANTA Berbeda dengan variabel yang isinya bisa berubah selama eksekusi program berlangsung, nilai suatu konstanta tidak bisa berubah. Sintaks : Const var1 = nilai1; Contoh : const phi : real = 3.14; pajak = 0,1; 5. LABEL Untuk menyatakan lokasi tempat pernyataan yang dituju oleh sebuah pernyataan GOTO dalam program. Sintaks : Label daftar_label; Contoh : label ulang; 6. KLAUSA USES Uses digunakan apabila ada unit (baik yang dibuat sendiri atau yang telah disediakan Pascal) yang akan dilibatkan. CONTOH PERMASALAHAN 1 : Menghitung pajak dari suatu harga barang program satu; uses crt; const pajak = 0.1; var namabarang : string; hargabarang : real; begin namabarang := sabun harmony; hargabarang:=800; writeln(harga, namabarang, =, hargabarang:5:2); writeln(pajak :,pajak*hargabarang:5:2); readln; end. CONTOH PERMASALAHAN 2 : Menghitung luas dan keliling lingkaran dengan besar jari-jari lingkaran sudah ditentukan. program dua; {Menghitung Luas,Keliling Lingkaran,jari diketahui} uses crt; {menggunakan layar monitor}
11 const phi : real = 3.14; var jari,luas,keliling : real; begin clrscr; jari := 10; luas:=phi*jari*jari; keliling:=2*phi*jari; writeln(Jari-jari lingkaran = , jari); writeln(Luas lingkaran = ,luas); writeln(Keliling lingkaran = ,keliling); readln; end. CONTOH PERMASALAHAN 3 : Menghitung luas dan keliling lingkaran dengan besar jari-jari lingkaran dimasukkan melalui keyboard. program tiga; {Menghitung Luas dan Keliling Lingkaran} uses crt; const phi = 3.14; var jari,luas,keliling : real; begin clrscr; write(Masukan jari-jari lingkaran = ); readln(jari); luas=phi*jari*jari; keliling=2*phi*jari; writeln(Luas lingkaran = ,luas); writeln(Keliling lingkaran = ,keliling); readln; end. CONTOH PERMASALAHAN 4 : Menukarkan dua buah nilai dari dua buah variabel. Misalnya, sebelum pertukaran nilai a=5, nilai b=3, maka setelah pertukaran nilai a=3, nilai b=5. Program Empat; {Menukarkan nilai a dengan b} Uses crt; Var a,b,c : integer; Begin clrscr; writeln(Program Menukar 2 Buah Nilai); writeln(Sebelum ditukar ); writeln(--------------- ); writeln(Bilangan pertama ); readln(a); writeln(Bilangan kedua = ); readln(b); c:=a; a:=b; b:=c; writeln(Setelah ditukar); writeln(---------------); writeln(Bilangan pertama = ,a); writeln(Bilangan kedua = ,b); readln;
12 end. CONTOH PERMASALAHAN 5 : Mengkonversikan total detik menjadi jam menit detik. Petunjuk : 1 menit = 60 detik 1 jam = 3600 detik Program Lima; {Mengkonversi total detik menjadi jam menit detik} Uses crt; Var totdet,jam,sisa,menit,detik : integer; Begin clrscr; writeln(Program Konversi Detik Menjadi Jam Menit Detik); writeln(----------------------------------------------); writeln(Masukkan total detik = ); readln(totdet); jam:=totdet div 3600; sisa:=totdet mod 3600; menit:=sisa div 60; detik:=sisa mod 60; writeln(Jumlah jam = ,jam); writeln(Jumlah menit ,menit); writeln(Jumlah detik ,detik); readln; end.
TUGAS
1. Buat program untuk menghitung luas segitiga dan persegi panjang dengan besar alas,tinggi, panjang, lebar dimasukkan melalui keyboard 2. Seorang user di warnet mulai menggunakan internet pada pukul J1 dan selesai pada pukul J2. Bila tarip penggunaan di warnet tersebut 1 jam Rp. 5000,- maka buat program untuk menghitung lama pemakaian (dalam jam menit detik) dan biaya yang harus dibayar user. Keterangan : tampilan program seperti berikut : PROGRAM BILLING WARNET Jam mulai Menit mulai Detik mulai : : :
Jam selesai : Menit selesai : Detik selesai : ======================================= Lama pemakaian : jam menit detik 1 jam : Rp. Total bayar : Rp.
13 1. TIPE DATA Tipe data menentukan nilai yang dapat disimpan variabel tersebut dan operator-operator apa yang dapat dikenakan padanya. Contoh : tipe real hanya dapat menyimpan bilangan real, dan operator yang dapat dikenakan padanya antara lain operator penjumlahan, perkalian, dsb. Macam tipe data : Bilangan bulat Boolean Tipe ordinal Karakter Subjangkauan / subrange Terbilang /enumerated Tipe sederhana Tipe string Tipe data Tipe terstruktur Tipe pointer Tipe prosedural Tipe objek Tipe Bilangan Bulat Tipe bilangan bulat digunakan untuk menyimpan data numerik berupa bilangan bulat. Tipe Shortint Integer Longint Byte Word Contoh :
Var Jumlah : byte ; Begin Jumlah := 250; Writeln (Nilai jumlah = , jumlah); End.
Tipe real Larik (array) Rekaman (record) Himpunan (set) Berkas (file)
Karena jumlah bernilai 250 maka cukup menggunakan tipe data byte, bila menggunakan shortint tidak mencukupi, menggunakan integer terlalu besar. Tipe Boolean Tipe Boolean adalah tipe yang mempunyai nilai benar (True) atau salah (False), berukuran 1 byte. Contoh :
Var lagi : boolean ; Begin lagi := True; Writeln (Nilai lagi = , lagi); End.
Tipe Karakter Tipe karakter digunakan untuk menyimpan data alfanumerik, seperti : - huruf A sampai dengan Z, misal :A, z - angka 0 sampai dengan 9, misal 1, 9 - simbol khusus, misal @, $, %, - spasi
14 karakter kontrol (karakter dengan nilai ASCII dibawah 32),misal Tab , Backspace karakter ASCII tidak standar pada PC (karakter dengan nilai ASCII antara 128 hingga 255). Dideklarasikan dengan char, berukuran 1 byte. Untuk memberi nilai pada variabel bertipe karakter, dapat menggunakan beberapa cara : 1. Menuliskan karakter di dalam tanda petik tunggal. Contoh : ch := A; 2. Menuliskan tanda # diikuti dengan nomor ASCII dari karakter yang ditulis. Contoh : ch := #65; {sama artinya dengan ch:=A} 3. Mengkonversikan nomor ASCII ke karakter menggunakan fungsi chr. Contoh : ch := chr(65) {sama artinya dengan ch:=A} Kebalikan dari fungsi chr adalah ord, yang digunakan untuk mengembalikan nomor ASCII dari suatu karakter. Contoh : x := ord (A); {x akan bernilai 65} Tipe Subjangkauan Tipe subjangkauan menyatakan suatu jangkauan nilai dari suatu tipe yang sudah ada. Jangkauan nilai ditentukan oleh nilai terkecil dan nilai terbesar. Antara nilai terkecil dan nilai terbesar dipisahkan oleh tanda subjangkauan ( .. ). Contoh : Type nilaibulan : 1..12; Mendeklarasikan tipe bulan yang memiliki jangkauan dari 1 sampai 12. Tipe Terbilang/enumerasi Enumerasi merupakan salah satu tipe yang dapat dibuat sendiri oleh pemrogram. Tipe ini biasa digunakan pada variabel yang nilai kemungkinannya terbatas (tidak banyak). Contoh :
Type Jeniskelamin = (pria,wanita);
Contoh : Type namabulan : (Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, Nopember, Desember);
Tipe Bilangan Real Digunakan untuk menyimpan bilangan real (pecahan). Tipe Real Single Double Extended Comp Jangkauan 2.9 * 10 1.7 * 10 38 1.5 * 10 45 3.4 * 10 38 5.0 * 10 324 1.7 * 10 308 3.4 * 10 4932 1.1 * 10 4932 2 63 + 1 2 63 - 1
39
Digit 11 12 78 15 16 19 20 19 20
Pemberian nilai pada tipe real dapat dilakukan dengan 2 cara : 1. Menuliskan dengan tanda titik tanpa eksponen Contoh : x:= 123.45 2. Menuliskan dengan eksponen Contoh : x:= 1,2345E+2;
15 Tipe String Digunakan untuk menyimpan data yang berupa untaian karakter, terletak diantara tanda petik tunggal. Bila karakter petik merupakan bagian dari konstanta string,maka dapat ditulis dengan menggunakan 2 buah petik tunggal berurutan. Bila string yang tidak memiliki sebuah karakter (string kosong) maka ditulis dengan cara . Nilai data string membutuhkan memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya 255 karakter. Contoh : Var Tanggal : string[10]; Hari : string[6]; Pasaran : string[4]; Jarak : char; Begin Tanggal := 18-09-2008; Hari := Jumat; Pasaran := kliwon; Jarak := ; Writeln(tanggal,jarak,hari, ,pasaran); End. 2. OPERATOR Operator mengatur operasi pada tipe data dengan menggunakan simbol-simbol yang sudah ditentukan. Contoh Expresi (X + Y) dibangun dari variabel X dan Y yang disebut operand, dengan operator '+'. Operator menurut jenis operand-nya dibagi dua yaitu unary operator dan binary operator. Unary operator adalah operator yang operand-nya hanya satu seperti contoh +6, -B. Tanda bilangan negatif (-) dan positif (+) pada angka 6 dan variabel B menunjukkan operator unary. Operator Binary merupakan operator yang mempunyai dua operand. Hampir semua operator bersifat binary. Contoh operator ini pada operasi penjumlahan A + B, tanda positif (+) menunjukkan operator penjumlahan Macam operator : Operator pemberian nilai Bentuk operatornya adalah := Contoh : A := 12; B := Hallo; Operator aritmetik
Operator * / Div Mod + Operasi Perkalian Pembagian real Pembagian integer sisa bagi Penjumlahan Pengurangan Prioritas 1 1 1 1 2 2 Tipe Operand Bil bulat,real Bil bulat, real Bil bulat Bil bulat Bil bulat , real Bil bulat, real Tipe Hasil Bil bulat , real real Bil bulat Bil bulat Bil bulat, real Bil bulat, real 2 7 7 7 2 2 Contoh * 3 := 6 / 2 : = 3.5 div 2 := 3 mod 2 := 1 + 3 := 5 -3 := -1
Operator pemanipulasian bit Berlaku untuk bilangan bulat. Operator Not And Operasi Negasi Logika and
16 Or Xor Shl Shr A 0 0 1 1 B 0 1 0 1 Not A 1 1 0 0 Logika or Logika xor Penggeseran bit ke kiri Penggeseran bit ke kanan Not B 1 0 1 0 A and B 0 0 0 1 A or B 0 1 1 1 A xor B 0 1 1 0
Contoh : Program bitor; Uses crt; Var Bilx,bily,bilz : byte; Begin Clrscr; Bilx := 25; Bily := 4; Bilz := bilx or bily; Writeln(bilz); Readln; End. Contoh : Program opshl; Uses crt; Begin Writeln(5 shl 6); End.
Output adalah 320 Penjelasan : Nilai integer 5 digeser sebanyak 6 bit ke kiri 0000000000000101 5 0000000101000000 320
Contoh : Program opshr; Uses crt; Begin Writeln(160 shr 6); End.
Output adalah 2 Penjelasan : Nilai integer 160 digeser sebanyak 6 bit ke kanan 0000000010100000 160 0000000000000010 2
Operator Boolean Sama dengan operator pemanipulasian bit tanpa operator shr dan shl A B Not A Not B false false true true false true true false true false false true true true false false Operator himpunan Digunakan pada tipe himpunan. Operator + * Operasi Union Selisih Interseksi A and B false false false true A or B false true true true A xor B false true true false
17 in Contoh : A := B + C; Menggabungkan semua anggota himpunan B dan C ke dalam A. Jika nilai B adalah [A,B] dan C bernilai [C] maka A bernilai [A, B, C]. Operator pembanding Operator = <> < > <= >= <= >= Operasi Sama dengan Tidak sama dengan Kurang dari Lebih dari Kurang dari atau sama dengan Lebih dari atau sama dengan Subset dari Superset dari Tipe Tipe Tipe Tipe Tipe Tipe Tipe Tipe Tipe operan sederhana, pointer, himpunan, string sederhana, pointer, himpunan, string sederhana, string sederhana, string sederhana, string sederhana, string himpunan himpunan Anggota dari
Operator string Pascal hanya mengenal 1 macam operator string, yaitu penggabungan. Digunakan untuk menggabungkan 2 atau lebih operan string menjadi sebuah string yang lebih panjang. Simbolnya adalah +. Contoh : A := Turbo + Pascal; {sama artinya dengan A := Turbo Pascal;}
1. Tentukan benar atau salah penulisan variabel dibawah ini : a. nama mhs b. 5kali c. Angsuran_1 d. Angsuran-1 e. X25
18 f. program g. Pajak_bulanan h. %diskon i. Diskon% 2. Jika A bertipe char, nilai1 bertipe real, nilai2 bertipe integer, manakah penulisan ekspresi yang salah a. A := 0; b. A := A; c. Nilai 1 := 57; d. Nilai2 := nilai1 + 3; e. Nilai1 := nilai1 + 1; f. Nilai2 := 20 div 3 + 5; g. Nilai2 := 20 / 3 + 5; 3. Tentukan tipe data untuk data dibawah ini : a. 0 b. c. 2.500,50 d. 5 e. 3.000.000 f. 3.34.08.1.11 g. L h. False i. True j. 1.5E+03 k. #66 l. -5E-5 4. Ubahlah ekspresi matematika ini ke dalam bahasa pascal
x= b + b 2 4.a.c 2.a
5. Berapa nilai x,y,z pada cuplikan program berikut : Begin Kelompok operator A := 4; not B := 7; * / div mod and shl shr C := 10; + - or xor X := A + B shl 2 * C; = <> < > <= >= in Y := C * B mod A; Z := B shl A div C; End. 6. Berapa nilai x,y,z pada cuplikan program berikut : Begin Bilx := 25; Bily := 4; Bilz := bilx xor bily; End. 7. Berapa nilai x,y,z pada cuplikan program berikut : Begin A := 3; B := 4; C := 5; X := A and B or C; Y := A shl (B and C) shr (B or C); Z := A or (B shr 2) or (C shl 1); End. 8. Berapa nilai x,y,z pada program berikut :
19 Var A,b,c,d,x,y,z : boolean; Begin A := B := C := D := X := Y := Z := End. true; false; true; false; A and B or C xor D; A and not B or not C; A xor B xor C xor D;
20 Bentuk paling sederhana pilihan tunggal adalah jika hanya ada satu pilihan kondisi yang disediakan. if kondisi then true statement CONTOH PERMASALAHAN 6 : Menentukan luas keliling lingkaran dengan masukan data dari keyboard dan mengulang penghitungan.
program ulanglagi; uses crt; const phi = 3.14; var jari,luas,keliling : real; lagi : char; label ulang; begin ulang: clrscr; write(Masukan jari-jari lingkaran = ); readln(jari); luas=phi*jari*jari; keliling=2*phi*jari; writeln(Luas lingkaran = ,luas); writeln(Keliling lingkaran = ,keliling); writeln; write(Mau memasukkan bilangan lagi [Y/T] ? );readln(lagi); if (lagi=Y) or (lagi=y) then goto ulang; end.
2. PILIHAN GANDA Digunakan untuk menentukan tindakan yang akan digunakan bila kondisi bernilai benar dan salah. if kondisi then statement1 else statement2 CONTOH PERMASALAHAN 7 : Menentukan bilangan genap ganjil dari suatu bilangan.
program ganjilgenap; uses crt; var bil : integer; lagi : char; begin clrscr; writeln('Program Menentukan Bilangan Ganjil / Genap'); writeln('=========================================='); write('Masukkan sembarang bilangan : ');readln(bil); writeln; if (bil mod 2 = 0) then writeln(Bilangan ,bil,' termasuk bilangan genap') else writeln(Bilangan ,bil,' termasuk bilangan ganjil'); readln; end.
2. PILIHAN MAJEMUK Untuk menentukan tindakan yang akan digunakan disediakan lebih dari 2 alternatif. Merupakan bentuk statement if dengan statement if lain di dalam if sebelumnya. if kondisi1 then statemen1
21 else if kondisi2 then statemen2 else statemenberikutnya CONTOH PERMASALAHAN 8 : Mengelompokan nilai dengan ketentuan : Jika nilai angka >= 90, maka nilai huruf = A Jika nilai angka >= 80, maka nilai huruf = B Jika nilai angka >= 70, maka nilai huruf = C Jika nilai angka >= 60, maka nilai huruf = D Jika nilai angka < 60, maka nilai huruf = E program KelompokNilai; uses crt; var nilai : integer; ket : string; huruf : char; begin writeln('PROGRAM PENGELOMPOKAN NILAI'); writeln('---------------------------'); write('Masukkan nilai (0-100) : ');readln(nilai); if(nilai>=81) then begin huruf := 'A'; ket := 'Lulus'; end else if(nilai>=70) then begin huruf := 'B'; ket := 'Lulus'; end else if(nilai>=60) then begin huruf := 'C'; ket := 'Lulus'; end else if(nilai>=40)then begin huruf := 'D'; ket := 'Gagal/Tidak Lulus'; end else begin huruf := 'E'; ket := 'Gagal/Tidak Lulus'; end; writeln; writeln('Nilai huruf = ',huruf); writeln('Keterangan = ',ket);readln; end. 3. STRUKTUR CASE Untuk masalah dengan dua pilihan atau lebih, struktur CASE dapat menyederhanakan penulisan IF yang bertingkat-tingkat. case ungkapan of
CONTOH PERMASALAHAN 9 : Pemilihan kode jurusan dengan struktur case program jurusan; uses crt; var jur,nama : string; kode : char; begin write('Masukkan nama : ');readln(nama); write('Pilih kode jurusan [A/B/C/D] : ');readln(kode); case kode of 'A' : jur := 'Teknik Informatika'; 'B' : jur := 'Manajemen Informatika'; 'C' : jur := 'Sistem Informasi'; 'D' : jur := 'Teknik Komputer'; end; writeln; writeln('Nama : ',nama); writeln('Kode jurusan : ',kode); writeln('Nama jurusan : ',jur); readln; end.
TUGAS
1. Menentukan huruf yang dimasukkan melalui keyboard huruf vokal atau konsonan 2. Menentukan bilangan terbesar dari 2 bilangan yang dimasukkan melalui keyboard 3. Menentukan bilangan terbesar dan terkecil dari 3 bilangan yang dimasukkan melalui keyboard
23 4. Misalkan karyawan PT. Makmur dikelompokkan berdasarkan golongannya. Upah per jam tiap karyawan bergantung pada golongannya, dengan ketentuan : Golongan Upah per jam A Rp. 10000,B Rp. 12000,C Rp. 15000,D Rp. 20000,Jumlah jam kerja normal selama 1 minggu adalah 48 jam. Kelebihan jam kerja dianggap lembur dengan upah lembur adalah Rp.4000,- per jam untuk semua golongan karyawan. Buat program menghitung gaji karyawan mingguan. Data yang dimasukan dari keyboard adalah nama karyawan, golongan, jumlah jam kerja dalam 1 minggu. Berikut tampilannya : PENGHITUNGAN GAJI PEGAWAI PT.MAKMUR ====================================== Nama karyawan : Golongan : Jam kerja : ====================================== Gaji : Rp. Lembur : Rp. Total Gaji : Rp. 5. Buat program seperti berikut : Bila anda mengetikkan kata REG GOKIL maka muncul tampilan seperti dibawah ini : MENU GOKIL GRATIS 1. 2. 3. 4. Ringtone gokil Nada sapa gokil Cerita gokil Keluar program
Masukkan pilihan Anda [1-4] : Bila anda mengetikkan kata selain REG GOKIL maka muncul pesan Maaf keyword yang Anda masukkan salah dan program selesai. Untuk menu gokil, bila Anda pilih angka 1 maka muncul pesan Terima kasih telah menggunakan layanan ringtone gokil Untuk menu gokil, bila Anda pilih angka 2 maka muncul pesan Terima kasih telah menggunakan layanan nada sapa gokil Untuk menu gokil, bila Anda pilih angka 3 maka muncul pesan Terima kasih telah menggunakan layanan cerita gokil Untuk menu gokil, bila Anda pilih angka 4 maka program selesai. 6. Perbaiki program biling warnet sehingga dapat menghitung lama pemakaian dan total bayar misal pemakaian dari jam 23.00 sampai jam 01.00. 7. Perbaiki program nomor 6 dengan menambah fasilitas login user. Bila login user sebagai personal maka tarip per jam Rp. 5000,- Bila login user sebagai member maka tarip per jam Rp. 3000,-
24 DASAR TEORI Di dalam Pascal terdapat tiga macam perulangan yaitu dengan menggunakan statemen For...Do, While...Do, dan Repeat...Until. 1. STATEMEN PERULANGAN FOR... TO.... DO Perulangan dengan statemen FOR digunakan untuk mengulang statemen atau satu blok statemen berulang kali sejumlah yang ditentukan. Perulangan dapat dalam bentuk positif, perulangan negatif, dan perulangan bersarang. Bentuk umum : for pencacah := nilai_awal to nilai_akhir do begin {pernyataan-pernyataan yang akan diulang} end; CONTOH PERMASALAHAN 10 : Program Mencetak Angka Urut (Penaikan) program angka_urutnaik; uses crt; var i : integer; begin for i:=1 to 10 do begin writeln(i,'. Hallo,Selamat belajar,Aku yakin Aku pasti bisa...'); end; readln; end. CONTOH PERMASALAHAN 11 : Program Mencetak Angka Urut (Penurunan) program angka_urutturun; uses crt; var i : integer; begin for i:=10 downto 1 do begin writeln(i,'. Hallo,Selamat belajar,Aku yakin Aku pasti bisa...'); end; readln; end. CONTOH PERMASALAHAN 12 : Program mencetak angka terbesar terkecil program maxmin; uses crt; var n,i,max,min,bil : integer; begin writeln('Program Mencari Data Terbesar dan Terkecil'); write('Masukkan banyaknya data = '); readln(n); write('Masukkan bilangan ke-1 : '); readln(bil); max:=bil; min:=bil;
25 for i:=2 to n do begin write('Masukkan bilangan ke-',i,' : '); readln(bil); if(bil>max) then max:=bil; if(bil<min) then min:=bil; end; writeln; writeln('Data terbesar = ',max); writeln('Data terkecil = ',min); readln; end. CONTOH PERMASALAHAN 13 : Program Mencetak Jumlah Bilangan program jumlah; uses crt; var i,awal,akhir,jumlah : integer; begin writeln('Masukkan bilangan awal : '); read(awal); writeln('Masukkan bilangan akhir : '); read(akhir); jumlah:=0; for i:=awal to akhir do begin jumlah:=jumlah+i; end; writeln('Jumlah bilangan dari ',awal,' sampai ',akhir,' adalah ',jumlah); readln; end. CONTOH PERMASALAHAN 14 : Program Membuat Tabel Akar & Kuadrat Bilangan program tabelakar; uses crt; var i,kuadrat,jumbil,jumkuadrat : integer; akar,jumakar : real; begin writeln('TABEL KUADRAT DAN AKAR BILANGAN '); writeln('---------------------------------- '); writeln('Bilangan Kuadrat Akar Bilangan '); writeln('---------------------------------- '); jumbil:=0; jumkuadrat:=0; jumakar:=0; for i:=1 to 10 do begin kuadrat := i*i; akar := sqrt(i); jumbil := jumbil+i; jumkuadrat := jumkuadrat+kuadrat; jumakar := jumakar+akar; writeln(' ',i:3,' ',kuadrat:3,' ',akar:7:4); end;
',
CONTOH PERMASALAHAN 15 : Membuat tampilan seperti berikut : ***** ***** ***** program bintang1;
uses crt;
var i,j:integer; begin writeln('Contoh loop bersarang --> bintang persegipanjang'); for i:=1 to 3 do begin for j:=1 to 5 do begin write('*'); end; writeln; end; readln; end. CONTOH PERMASALAHAN 16 : Membuat tampilan seperti berikut : Masukkan tinggi segitiga : 5 * ** *** **** ***** program bintang2;
uses crt;
var n,i,j:integer; begin writeln('Contoh loop bersarang --> bintang segitiga siku'); write('Masukkan tinggi segitiga :'); readln(n); for i:=1 to n do begin for j:=1 to i do begin write('*'); end; writeln; end; readln; end. CONTOH PERMASALAHAN 17 : Membuat tampilan seperti berikut : Masukkan tinggi segitiga : 5
27
* ** *** **** ***** **** *** ** * program bintang3;
uses crt;
var n,i,j:integer; begin writeln('Contoh loop bersarang --> bintang segitiga'); write('Masukkan tinggi segitiga :'); readln(n); for i:=1 to n do begin for j:=1 to i do begin write('*'); end; writeln; end; for i:=n-1 downto 1 do begin for j:=1 to i do begin write('*'); end; writeln; end; readln; end. 3. STRUKTUR WHILE ... DO Struktur ini digunakan bila kita belum mengetahui secara pasti berapakali banyaknya pengulangan yang akan dilakukan. Berakhirnya proses pengulangan ditentukan oleh suatu kondisi. Selama kondisi terpenuhi, maka pengulangan terus dilakukan, dan sebaliknya, bila kondisinya tidak terpenuhi maka pengulangan dihentikan. Bentuk WHILE : WHILE kondisi DO begin pernyataan-pernyataan yang akan diulang; end; CONTOH PERMASALAHAN 18 : Program menghitung rata-rata bilangan program ratabilangan; uses crt; var n : integer; jumlah,bil,rata : real; lagi : char; begin n:=0; jumlah:=0; lagi:='Y'; while (lagi = 'Y') or (lagi = 'y') do begin write('Masukkan bilangan : ');
28
readln(bil); jumlah:=jumlah+bil; n:=n+1; write('Apakah Anda akan memasukkan bilangan lagi [Y/T]? '); readln(lagi); writeln; end; rata:=jumlah/n; writeln; writeln; writeln('Banyaknya bilangan : ',n); writeln('Rata-rata bilangan : ',rata:3:2); readln;
end.
3. STRUKTUR REPEAT UNTIL Digunakan untuk mengulang (REPEAT) blok pernyataan sampai (UNTIL) kondisi yang diseleksi di UNTIL dipenuhi. Bentuk REPEAT-UNTIL : REPEAT begin pernyataan-pernyataan yang akan diulang; end UNTIL kondisi CONTOH PERMASALAHAN 19 : Program menghitung rata-rata bilangan program repeatlagi; uses crt; var n : integer; jumlah,bil,rata : real; lagi : char; begin n:=0; jumlah:=0; repeat begin write('Masukkan bilangan : '); readln(bil); jumlah:=jumlah+bil; n:=n+1; write('Apakah Anda akan memasukkan bilangan lagi [Y/T]? '); readln(lagi); writeln; end; until (lagi = 't') or (lagi = 'T'); rata:=jumlah/n; writeln; writeln; writeln('Banyaknya bilangan : ',n); writeln('Rata-rata bilangan : ',rata:3:2); readln; end. CONTOH PERMASALAHAN 20 : Program membuat menu pengulangan program repeatmenu; uses crt; var pilih : integer; begin repeat
29
writeln(' MENU GOKIL GRATIS'); writeln('-------------------'); writeln('1. Ringtone'); writeln('2. Nada Sapa'); writeln('3. Gambar Lucu'); writeln('4. Ramalan'); writeln; write('Masukkan pilihan Anda ! (0=selesai) read(pilih); writeln; writeln; case pilih of 1 : writeln('Terima kasih menggunakan 2 : writeln('Terima kasih menggunakan 3 : writeln('Terima kasih menggunakan 4 : writeln('Terima kasih menggunakan 0 : writeln('Selesai'); end; writeln; writeln; until pilih=0; end.
');
TUGAS
3. Buat tampilan seperti berikut : Masukkan 1 12 123 1234 12345 1234 123 12 1 segitiga angka : 5
4. Buat program untuk menampilkan deret bilangan fibonacci dengan nilai kurang dari 100. Contoh seperti berikut : 1 1 2 3 5 8 13 21 . 5. Buat program untuk menampilkan deretan seperti berikut : 1/2 1/4 + 1/8 1/16 + 1/32 Dengan batasan untuk penyebut maksimal 50.
6. Buat program proses Loading dengan tampilan seperti berikut : Loading Petunjuk : untuk karakter bisa menggunakan karakter ASCII 177 atau 254 untuk mengatur waktu tampilan proses loading selain menggunakan perintah for do juga menggunakan perintah delay(lama waktu delay).
7. Buat program dengan tampilan seperti berikut : WARGA BARU BULAN OKTOBER 2008
30 NO 1 2 3 4 5 6 7 8 9 10 NAMA Susilo Joko Wati Ambar Mulyono Nurdin Asmuni Asih Mary Seno UMUR 21 11 35 20 45 17 7 29 55 22 JENIS KELAMIN P P W W P P P W W P PEKERJAAN PNS Pelajar Swasta Swasta PNS Pelajar Pelajar PNS PNS PNS
REKAPITULASI WARGA BARU BULAN OKTOBER 2008 ========================================== Umur 0-17 tahun = orang Umur 18-40 tahun = orang Umur > 40 tahun = orang Jenis kelamin Pria = orang Jenis kelamin Wanita = orang Pegawai Negeri Sipil = orang Pegawai Swasta = orang Pelajar/Mahasiswa = orang Mengurus Rumah Tangga = orang ----------------------------------Jumlah warga baru = orang Ketentuan : a. Kode pekerjaan : 1 = PNS 2 = Pegawai Swasta 3 = Pelajar/Mahasiswa 4 = Mengurus Rumah Tangga 5 = Tentara/Polri 6 = Tidak bekerja Pada saat dimasukkan misal kode 1 pada kolom pekerjaan, maka setelah ditekan Enter otomatis angka 1 yang dimasukkan berubah menjadi PNS. b. Setiap selesai memasukkan data, muncul pertanyaan Tambah Data Lagi (Y/T) ? Bila Y maka otomatis No bertambah 1 dan menambah data lagi. Bila T maka tidak ada penambahan data dan langsung tampil garis penutup dan rekapitulasi secara otomatis. Untuk mempermudah mengatur tampilan, bisa menggunakan perintah : gotoxy(kolom,baris)dan untuk membuat garis kolom bisa menggunakan karakter ASCII. Untuk membersihkan baris tertentu menggunakan clreol dan gotoxy(kolom,baris)
c.
8. Buat program dengan menggabungkan dan memodifikasi program nomor 6 dan 7 dengan urutan tampilan : - login user name dan password,user nama dan password terserah Anda. - bila user name dan password sesuai maka tampil proses loading, bila tidak sesuai muncul pesan username password tidak sesuai, muncul tampilan login lagi - setelah proses loading tampil menu pilihan : MENU SISTEM INFORMASI KEPENDUDUKAN ====================================================== 1. Tambah data warga baru 2. Informasi program
31 3. Selesai Pada saat memilih 1 maka tampil proses tambah data dan rekapitulasinya seperti program nomor 7 Pada saat memilih 2 maka tampil informasi tujuan program dibuat dan nama programmernya (nama Anda). Pada saat memilih 3 maka tampil ucapan terimakasih telah menggunakan program ini kemudian program selesai / keluar dari program.
32 PROSEDUR Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali dengan kata PROCEDURE. Di dalam bagian deklarasi prosedur, prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.
CONTOH PERMASALAHAN 21 : Program membuat garis yang dipesankan dalam prosedur.
Program prosedur1; Uses crt; Procedure Garis; Begin Writeln(===============================); End; Begin Clrscr; Garis; Writeln; Writeln(POLITEKNIK NEGERI SEMARANG); Writeln(PRODI TEKNIK INFOKOM); Garis; Readln; End.
Parameter dalam prosedur ada 2 macam yaitu : Parameter lokal Hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program lain. Parameter global Artinya dapat digunakan pada modul atau unit program lainnya.
CONTOH PERMASALAHAN 22 : Penggunaan parameter lokal dan global.
Program prosedur2; Uses crt; Var luas : integer; Procedure hitung1; Var panjang,lebar : Begin Write(Masukkan Write(Masukkan Luas := panjang Writeln(Luas = End; integer;
Procedure hitung2; Var sisi : integer; {parameter lokal} Begin Write(Masukkan sisi : );readln(sisi); Luas := sisi * sisi Writeln(Luas = , luas); End; {Program utama} Begin Clrscr; Hitung1; Hitung2; Readln; End.
33 Pengiriman parameter ada 2 macam : Pengiriman secara nilai (by value) Parameter formal di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur. Bila nilai parameter formal di prosedur tersebut berubah, tidak akan mempengaruhi nilai parameter nyata. Contoh :
Procedure hitung(a,b : integer);
Pengiriman secara acuan(by reference) Bila pengiriman parameter secara acuan, maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter nyata. Contoh :
Procedure hitung(var a,b : integer);
{parameter global}
Procedure jml(x,y,jumlah:integer); {parameter nilai} Begin Jumlah := x + y; Writeln(Jumlah pada procedure : ,jumlah); Jumlah := jumlah + 10; Writeln(Jumlah baru pada prosedur : ,jumlah); End; {program utama} Begin Clrscr; A:=5;b:=1; Jumlah := a+b; Writeln(Jumlah pada program utama : ,jumlah); Jml(a,b,jumlah); Writeln(Jumlah baru pada program utama : , jumlah); readln; end.
FUNGSI Blok fungsi hampir sama dengan blok prosedur, hanya harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Tipe tersebut dituliskan pada akhir deklarasi fungsi yang didahului dengan titik koma. Sama dengan prosedur, parameter dalam fungsi dapat dikirimkan secara nilai atau acuan. Contoh :
34 Function hitung(a,b : integer) : integer; {by value} Function hitung(var a, b : integer) : integer; {by reference}
CONTOH PERMASALAHAN 25 : Penggunaan pengiriman function parameter by value.
Program fungsi1; Uses crt; Var A : integer; {parameter global} Function hasil(a : integer): integer; Begin Hasil := a*60; End; {program utama} Begin Clrscr; Write(Masukkan jam : );readln(a); Writeln(a, jam ada : , hasil(a), menit);readln; End.
35 ARRAY Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks arraynya. Bentuk variabel : Var Namalarik : array [indeks] of tipe data; Contoh : mahasiswa : array [1..20] of string[20]; Artinya array mahasiswa adalah koleksi dari 20 variabel string yang masing-masing diberi nama mahasiswa[1], mahasiswa[2], mahasiswa[3], ... mahasiswa[20] Bisa juga digunakan declared scalar type seperti :
Type Hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu); Var Gaji : array[senin..sabtu] of longint; Upah : array[hari] of integer; Masuk : array[senin..sabtu] of boolean;
ARRAY SATU DIMENSI CONTOH PERMASALAHAN 27 : Program menginput data dengan array
Program inputdata1 Uses crt; Var Nama : array[1..10] of string[25]; Nim : array[1..10] of string[10]; Nilai : array[1..10] of integer; i,n : integer; Begin {------- menentukan banyaknya data yg akan diinputkan ---- } clrscr; write(Banyak data : );readln(n); writeln; {--- input data sesuai dengan banyaknya data yg ditentukan --- } For i=1 to n do begin writeln(Data ke-,i); write(Nama : );readln(nama[i]); write(Nim : );readln(nim[i]); write(Nilai : );readln(nilai[i]); writeln; end; { --- menampilkan data sesuai dengan yg diinputkan --- } clrscr; gotoxy(10,1);writeln(NO NIM NAMA NILAI ); gotoxy(10,2);writeln(--------------------------); for i=1 to n do begin gotoxy(10,3+i);write(i); gotoxy(15,3+i);write(nim[i]); gotoxy(20,3+i);write(nama[i]); gotoxy(30,3+i);write(nilai[i]); writeln; end; gotoxy(10,4+i)writeln(--------------------------); readln; end;
36 TUGAS 1. Dari contoh permasalahan 27 tampilkan nilai rata-ratanya setelah garis penutup. 2. Buat program untuk Biro Jasa Paket TIKI EXPRESS dengan tampilan seperti berikut :
MENU 1. Input Data 2. Laporan Data 3. Selesai Pilihan [1/2/3] : Bila memilih 1 maka muncul tampilan input data : Data keKode Paket Nama Pengirim Alamat Pengirim Nama Tujuan Alamat Tujuan Kode Area Area Tujuan Isi paket Berat paket Biaya Pokok Biaya Tambahan Jumlah Biaya : : : : : : : : : : : : Tambah data lagi?
Bila ya maka otomatis menginput data lagi,bila tidak maka kembali ke menu. Untuk daerah tujuan, biaya pokok, biaya tambahan dilakukan berdasarkan kode area yaitu : Kode Area Tujuan Biaya pokok/5kg Biaya tambahan/kg A Jakarta 10000 1500 B Bandung 6000 1000 C Jogjakarta 4000 750 Biaya pokok dikenakan untuk : Bila berat paket <= 5 kg maka biaya pokok sesuai daftar Bila berat paket > 5 kg maka biaya pokok yang dikenakan sebesar (berat paket div 5) * biaya pokok per 5 kg berdasarkan kode area yang akan dikirim Biaya tambahan dikenakan untuk : Bila <=5 kg tidak dikenakan biaya tambahan Bila berat paket > 5 kg maka biaya tambahan yang dikenakan sebesar (berat paket 5)*biaya tambahan per kg berdasarkan kode area yang akan dikirim Jumlah biaya = biaya pokok + biaya tambahan Bila memilih 2 maka muncul tampilan rekap laporan data :
REKAP LAPORAN PENDAPATAN BIRO JASA PAKET TIKI EXPRESS No Nama Pengirim Area Tujuan Total Berat Paket ..... Biaya Pokok ..... Biaya Tambahan ..... Jumlah Biaya .....
ARRAY DUA DIMENSI Array berdimensi dua mewakili bentuk tabel atau matrik. Pada indeks pertama dapat menunjukkan baris dan indeks kedua dapat menunjukkan kolom dari tabel atau matriks. Deklarasi array dua dimensi : Var Nama array : array[indeks_baris, indeks_kolom] of tipe data;
38 TUGAS Buatlah program untuk menyelesaikan permasalahan berikut : Telah dilakukan penghitungan suara dari pemilihan presiden di 5 TPS. Calon yang ditampilkan 4 orang. Hasil penghitungan suara sebagai berikut : TPS 1 2 3 4 5 CALON PRESIDEN 1 2 3 4 209 51 395 28 127 96 401 42 194 98 177 41 119 18 303 26 245 21 204 25
Dengan menggunakan array 2 dimensi,tulis program untuk melakukan pekerjaan-pekerjaan berikut : 1. Menginput dan mencetak hasil pemilihan diatas dalam bentuk tabel yang sesuai 2. Menghitung dan mencetak keseluruhan suara yang diperoleh masing-masing calon dan prosentasenya terhadap keseluruhan suara 3. Calon yang menang adalah calon yang memperoleh suara terbanyak RECORD Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe. Contoh Deklarasi record :
Type Recbarang = record Nama : string; Jumlah : integer; Harga : longint; End; Var Barang : recbarang;
CONTOH PERMASALAHAN 29 : Program contoh record, membaca masukan dari keyboard dan menampilkan kembali dalam bentuk daftar.
Program record1; uses crt; type kry = record nama : string[20]; alamat : string[30]; gol : char; gaji : longint; tunj : longint; end; var pegawai : array[1..100] of kry; pegawaismt : kry; i,j : byte; begin writeln(Bila ingin mengakhiri input, masukkan titik (.) pada nama); j := 0; write(Nama : );readln(nm); while nm <> . do begin j:=j+1; pegawai[j].nama := nm; write(Alamat : );readln(pegawai[j].alamat); write(Golongan : );readln(pegawai[j].gol);
39
case pegawai[j].gol of A, a : begin Pegawai[j].gaji := 2000000; Pegawai[j].tunj := 500000; B, b : begin Pegawai[j].gaji := 1000000; Pegawai[j].tunj := 250000; Else Begin Pegawai[j].gaji := 500000; Pegawai[j].tunj := 200000; End;
Clrscr; Writeln(=================================================); Writeln( NO NAMA ALAMAT GOL GAJI TUNJANGAN; Writeln(=================================================); For i:=1 to j do Writeln(i, pegawai[i].nama, pegawai[i].alamat, pegawai[i].gol, pegawai[i].gaji, pegawai[i].tunjangan); Writeln(=================================================); End.