MODUL PEMROGRAMAN DASAR PASCAL dan DELPHI 7
Guru Mata Palajaran
HERUL HERDIANA
SMK HANDAYANI BANJARAN TEKNIK KOMPUTER JARINGAN – ADMINISTRASI PERKANTORAN BANDUNG 2010 1
KATA PENGANTAR
Bissmillahir’rahmanirrahim Puji dan syukur kita panjatkan ke hadirat Allah SWT, Shalawat serta salam senantiasa tercurah limpah kepada nabi besar kita Muhammad SAW, kepada sahabatnya dan sampai kepada kita selaku umatnya, Amin. Alhamdullilah, setelah melakukan pembelajarann dan praktik, akhirnya selesai juga modul Pemrograman Dasar Pascal dan Delphi, yang akan Kami gunakan di lingkungan SMK HANDAYANI Banjaran. Kedua mata pelajaran ini sengaja diperingkas agar siswa dapat memahami dasar dari pada kedua Pemrograman tersebut. Pada modul ini, Siswa ditekankan untuk lebih memperdalam tanpa menunggu Guru Mata Pelajaran yang memberikan materi pada Mata Pelajaran Pemrograman ini. Penulis menyadari bahwa isi modul ini jauh dari sempurna, oleh karena itu Penulis sangat menerima saran dan kritik untuk memperbaiki isi dari pada modul ini. Mudah-mudahan dengan mempelajari isi modul ini, dapat meningkatkan wawasan akan Pemrograman
bagi Siswa
yang baru memulai mempelajari
Pemrograman, terutama yang dibahas pada modul ini yang seyogyanya hanya didapatkan di Perguruan Tinggi saja. Akhir kata Penulis mengucapkan sekian dan terima kasih.
Arjasari,
Juni 2010
Penyusun,
Dadang Hermawan, S.Pd
Herul Herdiana
Kepala SMK HANDAYANI Banjaran
Mobile : 0857.2006.6481 2
MODUL 1 PENDAHULUAN Pascal merupakan suatu bahasa komputer tingkat tinggi yang dibuat sekitar tahun 1970 oleh Niklaus Wirth dan digunakan untuk pendidikan komputer. Nama Pascal diambil dari seorang ahli matematika yang bernama Blaise Pascal yang menemukan mesin hitung pertama. Bahasa Pascal dirancang untuk menyelesaikan masalah dari berbagai kalangan pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan. Salah satu kompiler pascal yang terkenal dan tercepat adalah Turbo PASCAL yang dibuat oleh perusahaan Borland. Adakah versi Turbo Pascal untuk pemrograman Visual ? Pada trend pemrograman Visual, perusahaan Borland mengeluarkan Borland Delphi yang menggunakan dasar dialek Pascal pada lingkungan pemrograman Visual. Apa artinya Pascal adalah bahasa pemrogram terstruktur ? Pascal adalah suatu bahasa pemrograman terstruktur. Hal tersebut berarti semua program yang anda buat harus terstruktur dan teratur, dalam hal ini ada pemakaian goto dan jump. Bagaimana Struktur program pascal yang paling sederhana ? Perintah Input : Perintah Pascal yang digunakan untuk memasukkan/menginputkan data. Bentuk perintah: Read dan Readln Struktur penulisan: Read(nama variabel); Readln(nama Variabel) Perintah Output: Perintah Pascal yang digunakan untuk menampilkan/mengoutputkan data. Bentuk perintah: Write : setelah menampilkan data atau teks, kursor berada tepat disamping kanan data yang ditampilkan. Write : setelah menampilkan data atau teks, kursor berada pada baris berikutnya. Struktur penulisan: 3
write(nama variabel); write(‘teks’); writeln(nama Variabel); writeln(‘teks’); Contoh: Buat program sederhana untuk Menghitung Luas Persegi Panjang: Program LuasPersegiPanjang; Var Luas, Panjang, Lebar : integer; Begin Readln(panjang); Readln(Lebar);Luas:= Panjang*Lebar; Writeln(‘Luas Persegi Panjang adalah:’,Luas); Readln; End. Tampilan pada lembar kerja Pascal, Menjalankan program dengan perintah: Ctrl+F9(tekan tombol Ctrl dan F9 bersama-sama). Struktur program pascal yang paling sederhana adalah : uses ...; var ...; begin .... {Your program is here} end. Adapun struktur dasar suatu program pascal adalah sebagai berikut : program ... ; { Program heading } uses
... ; { Uses clause }
label
... ; { Labels }
const
... ; { Constants }
type
... ; { Types }
var
... ; { Variables }
procedure ... ; { Procedures } function ... ; { Functions } 4
begin statement;
{ Statements }
... end. Program heading Judul program dalam Turbo Pascal bersifat optional dan tidak ada pengaruhnya dalam program. Jika ditulis akan memberikan nama program dan suatu daftar parameter optional
dimana program
itu berkomunikasi. Daftar itu terdiri
dari sederetan
indentifier yang diakhiri dengan tanda kurung dan dipisahkan dengan tanda koma. Contoh : Program Perhitungan (Input,Output); Uses Clause Bagian uses clause digunakan untuk menentukan library yang dibutuhkan saat proses program. LIBRARY merupakan file penyimpan subroutine yang secara berulang digunakan saat proses program. Library ini diistilahkan sebagai unit dalam Turbo PASCAL yang terdiri dari SYSTEM, OVERLAY, GRAPH, DOS, CRT yang ditempatkan dalam file TURBO.TPL. Contoh : Uses Crt; (*menggunakan Unit Crt *) Perhatian : Unit system merupakan unit yang secara otomatis akan disertakan dalam setiap program, unit inilah mengatur semua perintah dasar input dan output pada Pascal. Sedangkan unit-unit lain hanya akan disertakan bila kita pilih pada bagian uses. Declaration Bagian ini meliputi deklarasi untuk label, const, type, var, procedure dan function.Syarat terpenting dalam pembentukan suatu program adalah, bahwa setiap variabel, type non-standard, label, procedure non-standard, serta function non-standard yang dipakai didalamnya harus nyatakan (deklarasi) terlebih dahulu pada bagian deklarasi. Setiap deklarasi tersebut harus bersifat unik (tidak boleh serupa satu sama yang lain). Penulisan nama dalam deklarasi tersebut harus memenuhi syarat-syarat sebagai berikut : panjang nama maximum 63 character, diawali dengan alphabet tidak ada special character kecuali tanda garis bawah ("_") 5
tidak boleh serupa dengan reserved word (kata tercadang) tidak boleh serupa dengan indentifier lainnya. Variabel Declaration Setiap variabel yang digunakan dalam program harus didefinisikan terlebih dahulu sebelum digunakan. Cara penulisan ini adalah : Var : ; Statement Bagian ini merupakan inti dari program. Seluruh perintah dan urutannya serta proses Input/Output dalam program perlu disusun secara teratur oleh penyusun program. Segala yang ada pada bagian uses maupun deklarasi merupakan pendukung terhadap isi program. Bagaimana membuat keterangan ? Untuk membuat program anda menjadi mudah dibaca dan dimengerti, maka perlu diberi keterangan yang akan diabaikan oleh kompiler. Untuk membuat keterangan gunakan tanda kurawal { ini adalah keterangan }, atau (* ini adalah keterangan *). Type data apa saja yang disediakan Turbo Pascal ? Adapun type variable yang disediakan pada TURBO PASCAL : 1. Ordinal types Type data yang mempunyai urutan pasti, dan masih terbagi menjadi -
Integer
Type variable yang beguna untuk pengolahan data yang bulat, type ini masih terbagi atas berberapa menurut jangkauan data dan ukurannya : Type Jangkuan Ukuran Shortint -128..127 8 bit Integer -32768..32767 16 bit Longint -2147483648..2147483647 32 bit Byte 0..255 8 bit Word 0..65535 16 bit -
Char
Type variabel yang berguna untuk pengolahan character ASCII, type character ini penulisannya ditandai dengan dua buah petik tunggal seperti : 'A', '3','*',#7 untuk menyatakan ' harus ditulis '''' -
Boolean 6
Type varibale yang berguna untuk pengolahan hal yang hanya mempunyai dua ketentuan yaitu benar(TRUE) dan salah(FALSE) saja. 2. Real types Type variable yang beguna untuk pengolahan data yang tidak bulat, untuk type real ini juga terbagi atas beberapa : Type Jangkauan Ketelitian Ukuran Real 2.9e-39..1.7e38
11-12 digit 6 bit
Single 1.5e-45..3.4e38 ³ 7-8
7-8 digit 4 bit
Double 5.0e-324..1.7e308 15-16 digit 8 bit Extended 3.4e-4932..1.1e4932 19-20 digit 10 bit Comp -9.2e18..9.2e18
19-20 digit 8 bit
Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator antara lain : Operator Integer Type Real Type + Penjumlahan Penjumlahan - Pengurangan Pengurangan * Perkalian Perkalian / Pembagian Pembagian DIV Hasil bagi MOD Sisa Bagi Operator Integer Type Boolean Type NOT Bitwise Negation Logical Negation AND Bitwise AND Logical AND OR Bitwise inclusive OR Logical inclusive OR XOR Bitwise exclusive OR Logical exclusive OR SHL Bitwise shift-left SHR Bitwise shift-right Operator relasi yang mengembalikan hasil Boolean Operator Fungsi := Menyatakan nilai = Sama dengan <> Tidak sama dengan < Lebih kecil > Lebih besar <= Lebih kecil atau sama dengan 7
>= Lebih besar atau sama dengan
Bagaimana menampilkan tulisan ke layar ? Pascal menyediakan perintah Write dan Writeln yang dapat anda gunakan untuk menampilkan tulisan ke layar. Perintah Readln dapat digunakan untuk membaca masukan dari pemakai dan menyimpannya ke suatu variabel. Kunci
Fungsi
Ekivalen menu
F1
Mengaktifkan jendela pertolongan.
File / Save
F2
Menyimpan berkas yang ada pada editor.
File / Load
F3
Memanggil program kedalam editor.
Run / Go to cursor
F4
Mengeksekusi program sampai posisi kursor.
Run / Trace into
F5
Memperbesar atau memperkecil jendela yang aktif.
Compile / Make
F6
Mengganti jendela yang aktif.
File / Pick
F7
Melacak kedalam subrutin.
File / user screen
F8
Melompati pemanggil subrutin.
Compile
F9
Mengaktifkan perintah ‘Make’
Run / Program reset
F10
Berpindah dari menu-menu ke jendela yang aktif.
Alt + F1
Memanggil jendela pertolongan yang terakhir dibaca.
Alt + F3
Memilih berkas untuk dimuat.
Alt + F5
Memperlihatkan hasil eksekusi.
Alt + F6
Mengganti isi jendela yang aktif.
Alt + F9
Mengkompilasi program.
Alt + B
Mengaktifkan menu Break / Watch.
Alt + C
Mengaktifkan menu compile.
Alt + D
Mengaktifkan menu debug.
Alt + E
Mengaktifkan editor.
Alt + F
Mengakaktifkan menu file.
Alt + O
Mengaktifkan menu option.
Alt + R
Mengaktifkan menu run. 8
Alt + X
Keluar dari Turbo Pascal dan kembali ke DOS.
Ctrl + F1
Menampilkan menu pertolongan bahasa.
Ctrl + F2
Menghentikan pembetulan.
Ctrl + F3
Menampilkan isi tumpukan.
Ctrl + F4
Melakukan penghitungan atau mengubah nilai peubah.. Debug / Evaluate
Ctrl + F7
Menambahkan ungkapan pada jendela watch. .
Ctrl + F8
Toggles Breakpoint..
Ctrl + F9
Menjalankan program..
Debug / Call Stack
B / Add Watch B
/
Toggle
breakpoint Run / Run
Ctrl + F10 Menampilkan versi layar monitor. Nah, itu tadi adalah beberapa hotkey yang ada pada Turbo Pascal, Fungsi MenuBar Program Pascal 1. Menu File : Didalam menu File banyak submenu yang bisa dipilih misalkan saja perintah Load / F3 yang berfungsi untuk memanggil berkas yang sudah tersimpan, dan banyak lainnya. 2. Submenu Load : Pilihan ini digunakan untuk memanggil program dari suatu folder atau directory ke dalam editor. Didalam submenu ini anda juga bisa memilih submenu yang lain dengan hanya menekan tombol huruf depan dari submenu yang dituju, contohnya anda mau ke submenu New, maka anda tinggal menekan huruf N. 3. Submenu Pick : Pilihan yang satu ini digunakan untuk mengambil salah satu dari beberapa buah program yang sebelumnya telah dimuat ke dalam jendela Edit. Hal ini ditujukan agar kita tidak perlu repot-repot lagi mencarinya di submenu load. 4. Submenu New :Program yang ada di editor akan dihapus dan program yang akan anda tulis dianggap sebagai program yang baru dengan nama NONAME.PAS, nama ini bisa anda rubah ketika anda mau menyimpannya. 5. Submenu Save [F2] : Pilihan ini digunakan untuk menyimpan suatu program yang sudah di edit ke dalam cakram atau folder, jika nama program itu masih NONAME.PAS maka Turbo Pascal akan menanyakan pada anda, nama apa yang akan anda berikan pada program yang akan disimpan tersebut. Atau anda juga bisa menekan tombol F2. 6. Submenu Write to : pilihan ini digunakan untuk menggantikan program lama dengan program yang baru (istilah kerennya Overwrite…☺). Jika nama program anda sudah
9
ada pada cakram atau folder maka ada verifikasi dari Turbo Pascal untuk penggantian nama. 7. Submenu Directory : pilihan ini digunakan untuk menampilkan direktori dan namanama file yang anda inginkan. Anda juga bisa menggunakan pilihan Load. 8. Submenu Change Dir : Pilihan yang satu ini digunakan untuk menampilkan direktori yang sedang digunakan dan juga bisa digunakan untuk mengganti nama direktori yang baru. 9. Submenu OS shell : Perintah ini digunakan bagi anda yang ingin ke tampilan DOS tetapi tanpa mematikan Turbo Pascalnya, untuk kembali lagi ke Turbo Pascal, anda tinggal mengetikan “exit”, tetapi biasanya ketika anda sedang membuat suatu program atau mengedit suatu program perintah ini tidak dapat dijalankan karena kurangnya kapasitas memory. 10. Submenu Quit [Alt + x] : Dari namanya sudah jelas, perintah ini digunakan untuk keluar dari Turbo Pascal dan kembali ke prompt DOS. 11. Menu Edit : Perintah edit ini digunakan untuk mengaktifkan editor Turbo Pascal. 12. Menu Run [Ctrl + F9] : Perintah ini digunakan untuk mengeksekusi program yang sudah anda buat. Anda juga bisa menekan Ctrl + F9 untuk mengeksekusi program anda. 13. Submenu Program Reset [Ctrl + F2] : Pilihan ini digunakan untuk memberitahukan Turbo Pascal bahwa anda selesai dengan pembetulan-pembetulan dan menginisialisasi debugger untuk operasi yang lain. Pilihan ini sekaligus membebaskan pengingat yang telah dialokasikan dan menutup semua berkas, tetapi tidak merubah nilai-nilai perubah. Pilihan ini sangat berguna jika anda ingin menjalankan pilihan File / OS shell. 14. Submenu Go to Cursor [F4] : Pilihan ini digunakan untuk memulai / melanjutkan eksekusi program dimulai dari posisi saat eksekusi dimulai sampai tempat kursor berada. Jika kursor berada pada statement yang bersifat executable, seperti spasi atau baris komentar, maka eksekusi akan dilanjutkan sampai statement yang bersifat executable. 15. Submenu Trace Into [F7] :Perintah ini digunakan untuk mengeksekusi baris berikutnya, jika ada pemanggilan ke suatu subrutin, maka pelacakan akan dimulai dari statement pertama dari subrutin tersebut. Sekaligus juga akan memuat berkas-berkas atau unit Include jika dimungkinkan. 16. Submenu Step Over : Step over ini memiliki cara kerja yang hampir sama dengan Trace Into, hanya saja jika statement adalah sebuah prosedur atau fungsi, maka
10
keseluruhan subrutin akan dikerjakan sekaligus dan debugger akan berhenti pada statement sesudah pemanggilan ke subrutin. 17. Submenu User screen [Alt + F5] : Pada umumnya perintah ini digunakan untuk melihat hasil dari program yang telah compile dan kita run. Pada tampilan ini IDE [Integrated Debugger Environment] berpindah-pindah pada saat anda menjalankan dan mendebug program. Perintah ini juga digunakan oleh File / OS shell Tampilan User Screen. 18. Menu Compile [Alt + F9] : Perintah ini digunakan untuk mengkompile program atau bisa juga kita bilang kalau program yang telah kita buat tadi dengan bahasa pascal di terjemahkan kedalam bahasa komputer agar si komputer ini mengerti apa-apa saja perintah kita. 19. Submenu Make : Pilihan ini digunakan untuk mengaktifkan perintah make, jika file yang primer telah diberi nama, maka file ini akan dikompilasi, jika tidak maka file yang terakhir yang sedang dimuat di editor akan dikompilasi.. Pilihan ini sangat berguna jika terdapat beberapa program yang secara fisik terpisah tetapi secara logikanya merupakan suatu kesatuan. 20. Submenu Build : Perintah ini mirip dengan perintah make, hanya saja perintah build ini sifatnya bebas, sedangkan perintah make hanya akan mengkompilasi file-file selain file yang digunakan. 21. Submenu Destination [Memory] : Perintah ini secara umumnya hanya berfungsi untuk memilih apakah hasil kompilasi akan disimpan dalam cakram atau folder sebagai file yang bertipe .EXE atau hanya di pengingat utama yang akan hilang pada saat anda keluar dari Turbo Pascal. 22. Submenu Find Error : Dari namanya anda pasti sudah tahu, yah perintah ini digunakan untuk menentukan lokasi kesalahan pada saat program dijalankan [run time error]. Lokasi kesalahan dinyatakan dengan format seg:off, misalnya 2BE0:FFD4. jika anda kembali ke IDE, turbo pascal akan menempatkan kursor pada baris dimana terjadi kesalahan. Jika anda terlanjur memindahkan kursor sembarangan maka anda bisa memindahkan kembali kursor ke tempat kesalahan dengan menekan Ctrl + Q + W. 23. Submenu Primary File : Perintah ini digunakan untuk menyatakan bahwa file .PAS akan dikompilasi pada saat make [F9] atau build [Alt + C + B] diaktifkan. 24. Submenu Get info : Tidak salah lagi, perintah ini digunakan untuk menampilkan jendela informasi dari program .PAS yang sedang anda gunakan, termasuk ukuran kode sumber [dalam sumber dan baris], ukuran file .EXE atau .TPU dalam byte dan data. 11
25. Menu Options : Pilihan pada menu yang satu ini berfungsi mengkonfigurasi untuk mengoptimalkan penggunaan fasilitas-fasilitas pada turbo pascal. 26. Submenu Compiler : Pilihan ini didalamnya pun masih banyak perintah yang lainnya seperti pengecekan batas, pengecekan tumpukan dll, seperti yang anda lihat pada gambar di atas. contohnya pengecekan batas [Range checking] adalah sama dengan {$R}. sekarang saya akan coba jelaskan satu persatu agar lebih jelas dari masing-masing penggunaan ini. 27. Range checking [Off]: Perintah ini digunakan untuk menghidupkan atau mematikan pengecekan batas. Jika dihidupkan, kompiler akan membangkitkan kode yang akan mencek batas index pada array dan string dan juga nilai yang dihasilkan dalam suatu statement pemberian. Pilihan ini sama dengan petunjuk kompiler {$R}. 28. Stack checking [On]: Digunakan untuk menghidupkan atau mematikan pengecekan kesalahan operasi I/O. Jika dihidupkan pada saat terjadi kesalahan operasi I/O proses akan langsung dihentikan. Jika dimatikan, kode kesalahan akan tersimpan dalam fungsi IO Result. Pilihan ini sama dengan penunjuk kompiler {$I}. 29. Force far calls [Off]: Digunakan untuk memilih model pemanggilan terhadap prosedur atau fungsi yang telah dikompilasi. Model pemanggilan bisa secara far atau near. Pilihan ini sama dengan penunjuk kompiler {$F}. 30. Allign Data [Word] : Digunakan untuk mengatur cara penyimpanan perubah dan konstanta bertipe dari byte ke word atau sebaliknya. Pilihan ini sama dengan penunjuk kompiler {$A}. 31. Overlay Allowed [Off] : Mengaktifkan atau menonaktifkan pembakitan kode Overlay. Pilihan ini sama dengan penunjuk kompiler {$O}. 32. Var string checking [Strict] : Digunakan untuk mengendalikan cara pengecekan data string yang digunakan sebagai parameter berubah. Pilihan sama dengan penunjuk kompiler {$V}. 33. Boolean Evaluation [Short Circuit] : Digunakan untuk memilih pembangkitan kode pada saat operasi logika [operasi Boolean] dijalankan. Pilihan ini sama dengan penunjuk kompiler {$B}. 34. Numeric Processing [Software] : Digunakan untuk memilih pembangkitn kode operasi titik mengambang [floating point] yang didukung oleh Turbo Pascal. Pilihan ini juga sama dengan penunjuk kompiler {$N} 35. Emulation [On] : Mengaktifkan atau menonaktifkan linking dengan run – time yang mengemulasikan ke prosessor numeric 8087. pilihan ini sama dengan penunjuk kompiler {$E} 12
36. Debug
Information
[On]
:
Digunakan
untuk
membangkitkan
atau
tidak
membangkitkan informasi pada saat didalam program terjadi kesalahan. Pilihan ini sama dengan penunjuk kompiler {$D}. 37. Local Symbol [On] : Digunakan untuk mengaktifkan atau menonaktifkan symbol informasi local. 38. Conditional defines: Digunakan untuk menyatakan penunjuk kompiler berkondisi. 39. Memory sizes: Digunakan untuk mengkonfigurasi peta pengingat. Dengan penunjuk kompiler{$M}. 40. Stack Size: ukuran segmen tumpukan maksimum 64 K dengan standart 16 K. 41. Low Heap limit: ukuran heap minimum standart adalah 0 K. 42. High Heap limit: ukuran heap maksimum adalah 655360 byte. 43. Submenu Linker Pilihan ini digunakan untuk mengatur konfigurasi built in linker. 44. Map File [Off] : Menentukan berapa banyak informasi dalam berkas peta map yang akan dihasilkan. Berkas peta akan ditempatkan dalam direktori .EXE dengan akhiran .MAP 45. Segment : Informasi segment [Nama, Ukuran, Awal dan Akhir segment dan kelasnya]. 46. Public : Informasi segment, semua nama-nama symbol dan alamatnya dan titik masukkan program. 47. Detailed : segement, informasi symbol dan titik masukkan program dan nomor barisnya dan tabel-tabel modul. 48. Submenu Environment Pilihan ini digunakan untuk memberitahukan Turbo Pascal dimana bisa ditemukan berkas yang akan dikompilasi, di link dengan dilengkapi dengan menu-menu pertolongan. 49. Config Auto Save [Off] : Digunakan untuk mencegah kehilangan setting komfigurasi yang telah anda lakukan. 50. Edit Auto Save [Off] : Digunakan untuk mencegah kehilangan berkas yang disebabkan oleh penyimpanan otomatis pada saat anda menggunakan Run / Step Over atau Run / Run 51. Backup Files [On] : Secara standard, turbo pascal akan membangkitkan berkas backup pada saat anda menyimpan berkas. Yang biasa kita lihat dengan .BAK 52. Tab Size [2] : Digunakan untuk mengatur ukuran Tab pada editor. Ukuran yang diperbolehkan adalah 2 sampai 16 dengan defaultnya 8. 53. Zoom Windows [Off] : Jika di On kan maka, Jendela Edit, Watch, dan Output akan diperluas sampai satu layar penuh.
13
54. Screen Size [25 line] : Digunakan untuk memilih ukuran layar. Dengan standard 25 baris, 43 baris [EGA] atau 50 baris [VGA]. Pilihan ini hanya bisa diaktifkan jika perangkat kerasnya mendukung. 55. Submenu Directories : Pilihan menu ini digunakan untuk menunjukkan kepada Turbo Pascal lokasi setiap direktori yang diperlukan. 56. Turbo directory : Digunakan untuk menemukan berkas konfigurasi [.TP] dan berkas pertolongan [Turbo.HLP]. 57. EXE & TPU directory : Digunakan untuk menyimpan berkas .EXE dan .TPU. 58. Include Directories : Digunakan untuk menentukan direktori yang berisi Include File. 59. Unit Directories : Digunakan untuk memberitahu TP dimana berkas-berkas unit berada. 60. Object Directories : Digunakan untuk menentukan direktori yang berisi berkas [.OBJ]. 61. Pick file name : Digunakan untuk menentukan nama dan lokasi pick file. 62. Current pick file : Digunakan untuk menunjukkan nama dan lokasi pick file, jika ada. 63. Submenu Parameters : Digunakan untuk memberikan parameter baris perintah [Command Line parameters] pada program-program yang akan dijalankan. 64. Submenu Save Option : Digunakan untuk menyimpan semua pengaturan dalam menu Compiler, Environment, dan Directories dalam berkas konfigurasi [standardnya adalah TURBO.TP] 65. Submenu Retrieve Options :Digunakan untuk memuat berkas konfigurasi yang sebelumnya disimpan dengan pilihan save. 66. Menu Debug : Pilihan-pilihan yang ada dalam menu ini terutama digunakan untuk melacak nilai-nilai perubah, mencari letak suatu fungsi atau prosedur dan lain-lain. 67. Submenu Evaluate [Ctrl + F4] : Dengan pilihan ini anda akan dibawa ke suatu jendela dengan 3 kotak yang memungkinkan anda untuk menuliskan sembarang nama perubah / ungkapan, menunjukan nilai perubah / ungkapan saat itu an memungkinkan anda untuk memberikan nilai yang baru untuk sembarang perubah. 68. Submenu Call Stack [Ctrl + F3] : Pada saat anda melakukan debugging, suatu jendela yang menunjukan daftar pemanggil prosedur dan fungsi akan terlihat. 69. Submenu Find Procedure : Memungkinkan anda untuk menuliskan nama prosedur dan fungsi dan kemudian mencari dalam program yang sedang anda aktifkan. 70. Submenu Integrated Debugging [On] Jika dipilih On, debugging dilakukan menggunakan IDE.
14
71. Submenu Stand Alone Debugging [Off] Jika diset Off, dan compile / destination dipilih ke Disk debug information akan ditambahkan ke dalam berkas .EXE untuk digunakan oleh Turbo Debugger. 72. Submenu Display Swapping [Smart] Penampilan pada layar bisa dipilih salah satu dari 3 pilihan, Smart, Always atau Never. •
Smart : debugger akan melihat kode yang sedang dieksekusi untuk melihat apakah perlu menampilkan hasilnya ke layar.
•
Always : pilihan ini akan menyebabkan layar dipindah setiap kali suatu statement dieksekusi.
•
Never : pilihan ini akan memberitahukan debugger untuk tidak melakukan pemindahan layar.
73. Submenu Refresh Display : Pilihan ini digunakan untuk memanggil kembali layar IDE. Hal ini perlu, terutama jika program anda merusak tampilan yang sudah ada dalam layar.
Menu Break / Watch 74. Submenu Add Watch [Ctrl + F7] : Digunakan untuk menambahkan rinci data, perubah atau ungkapan kedalam jendela watch 75. Submenu Delete Watch : Untuk menghapus ungkapan dalam jendela Watch pada saat jendela ini terlihat. 76. Submenu Edit Watch : Pilihan ini akan membawa posisi watch ke kotak input sehingga anda bisa mengubahnya. 77. Submenu Remove All Watches : Menghapus semua rinci dalam jendela watch sekaligus memperkecil ukurannya sampai minimum. 78. Submenu Toggle Breakpoints [Ctrl + F8]: mengatur suatu baris sebagai breakpoint. Dalam editor breakpoint ditunjukkan dengan highlight text. 79. Submenu Clear All Breakpoints: Menghapus semua breakpoint yang telah diset. 80. Submenu View Next Breakpoint : Digunakan untuk menggerakkan kursor ke posisi breakpoint berikutnya.
15
MODUL 2 UNSUR-UNSUR PEMROGRAMAN Turbo Pascal menyediakan suatu unit CRT, yang berisi perintah-perintah pengaturan layar
seperti
membersihkan
layar,
mengatur
warna
tulisan,
warna
background. Baiklah, berikut ini adalah nomor warna yang mewakili masing-masing warna: 0 (black), 1 (blue), 2 (green), 3 (cyan), 4 (red), 5 (magenta), 6 (brown), 7 (lightgray), 8 (darkgray),
(9)
lightblue,
10
(lightgreen),
11
(lightcyan),
12
(lightred),
13
(lightmagenta), 14 (yellow), 15 (White). Contoh : TextColor(4 + 128); Writeln('Merah dan berkedip-kedip'); Unsur Program a. Mendapatkan data dengan membaca data dari default input (key board, file atau sumber data lainnya). b. Menyimpan data ke dalam memori dengan struktur data yang sesuai, 16
c.
Memproses data dengan instruksi yang tepat.
d. Menyajikan atau mengirimkan hasil olahan data ke default output (monitor, file atau tujuan lainnya). Nama yang dipergunakan dalam program Pascal disebut dengan pengenal atau Identifier. Identifier digunakan untuk nama: Program, Sub-program (procedure dan function), nama: Variable, Constant, Type, Label. Nama-nama ini digunakan untuk pemakaian dan pemanggilan dalam program. Ketentuan penulisan identifier Nama identifier harus dimulai dengan karakter huruf alfabet: a sampai z, A sampai Z atau karakter ‘_’ (underscore – garis bawah) Karakter berikutnya boleh karakter numerik (0 .. 9) atau kombinasi alphanumerik (huruf-numerik). Panjang nama, pada berbagai versi Pascal umumnya antara 32 – 63. Tidak boleh menggunakan karakter istimewa: + – * / | \ = < > [ ] . , ; : ( ) ^ @ { } $ # ~ ! % & ` ” ‘ dan ? Contoh penulisan: Penulisan yang benar: NamaMahasiswa, Gaji_Karyawan, PX4, dll. Penulisan yang salah: 3X, A & B, C Z dll. Variable adalah identifier yang berisi data yang dapat berubah-ubah nilainya di dalam program. Deklarasi Variable adalah : Memberikan nama variabel sebagai identitas pengenal Menentukan tipe data variable Contoh deklarasi variabel: var X : integer; R : real; C : char; T : boolean; Konstanta adalah identifier yang berisi data yang nilainya tidak berubah di dalam program. Deklarasi Konstanta adalah: a. Memberikan nama konstanta sebagai identitas pengenal b.
Menentukan nilai konstanta Contoh deklarasi konstanta: conts MaxSize = 100; {integer} ExitC = ‘Q’; {char} Reserved Words atau kata-kata cadangan pada Pascal adalah kata-kata yang sudah
didefinisikan oleh Pascal yang mempunyai maksdu tertentu Suatu. Unit adalah kumpulan 17
dari konstanta, tipe-tipe data, variabel, prosedur dan fungsi-fungsi. Unit standar pada Pascal yang bisa langsung digunakan adalah System, Crt, Printer Dos dan Graph. Untuk menggunakan suatu unit, maka kita harus meletakkan clausa atau anak kalimat Uses di awal blok program, diikuti oleh daftar nama unit yang digunakan. Pada materi ini yang akan dibahas adalah unit Crt. Unit ini digunakan untuk memanipulasi layar teks (windowing, peletakan cursor di layar, Color pada teks, kode extended keyboard dan lain sebagainya. Beberapa Statemen Turbo Pascal Statemen adalah perintah untuk pengerjaan program pascal. Statemen terletak di bagian deklarasi statemen dengan diawali oleh kata cadangan BEGIN dan diakhiri dengan kata cadangan END. Akhir dari setiap statemen diakhiri dengan titik koma [ ; ]. Statemen statemen dalam bahasa Pascal terdiri dari pernyataan yang berupa fungsi dan prosedur yang telah disediakan sebagai perintah standar Turbo Pascal. 1. Statemen-statemen yang digunakan untuk input/output. # Read/Readln [prosedur]. Perintah ini digunakan untuk memasukkan [input] data lewat keyboard ke dalam suatu variabel. Sintaks : Read/Readln(x); (ingat, selalu diakhiri dengan titik koma [;]) Keterangan : x = variabel. Read = pada statemen ini posisi kursor tidak pindah ke baris selanjutnya. Readln = pada statemen ini posisi kursor akan pindah ke baris selanjutnya setelah di input. # Write/Writeln [prosedur]. Digunakan untuk menampilkan isi dari suatu nilai variable di layar. Sintaks: Write/Writeln(x); Keterangan : x = variabel. Write/Writeln= statement ini digunakan untuk mencetak variable ke dalam monitor 2. Statemen-statemen yang digunakan untuk pengaturan letak layar. # ClrScr [prosedur]. Perintah ini digunakan untuk membersihkan layar. sintaks: ClrScr; [Clear screen]
18
MODUL 3 STATEMENT IF CONDITIONAL Bagaimana penulisan perintah pengambilan keputusan pada Pascal ? Salah satu perintah struktur pengambilan keputusan adalah : If condition Then statement; Struktur kendali aliran adalah suatu bentuk/struktur yang memiliki peranan khusus untuk mengatur aliran urutan pengerjaan operasi atau beberapa operasi tertentu. Salah satu contoh pernyataan kendali yaitu pernyataan if. Pernyataan if (if statement) akan memeriksa suatu persyaratan dan menentukan apakah syarat tersebut benar atau salah, kemudian melakukan pekerjaan sesuai dengan nilai pernyataan tersebut. Dimana condition adalah sesuatu yang bernilai True atau False, dan statement adalah perintah yang akan dijalankan. Untuk
keputusan seperti ini,
pascal
menyediakan
struktur pengambilan keputusan berikut. 19
Statement If condition Then Statement1 Else Statement2; Atau lebih baik ditulis sebagai If conditon Then Statement1 Else Statement2; Contoh : Uses Crt; Var Bilangan : Integer; Begin Clrscr; Write(‘Masukan Bilangan ? ‘); Readln(Bilangan); If (Bilangan Mod 2) = 0 Then Writeln (‘Genap’) Else (pengecualisn) Writeln (‘Ganjil’); Readln; End. Dalam Statement ini, akan di pilih jika statement pertama dipilih maka program tidak akan berlanjut ke pengecualian yang kedua, akan tetapi apabila pengecualian pertama tidak memenuhi syarat, maka pengecualian kedua akan dipilih. Berikut IF Statement lebih dari 2 pengecualian Statement : If condition1 Then Statement1 Else If condition2 Then Statement2 Else If condition3 Then Statement3 20
Else Statement4; Sama seperti pengecualian IF 2 Statement, hanya saja bertambah pengecualiannya. Contoh : if mark>=80 then grade:='A' else { 79 or below goes here } if mark>=70 then grade:='B' else { 69 or below goes here } if mark>=60 then grade:='C' else { 59 or below goes here } if mark>=50 then grade:='D' else { 49 or below goes here } grade:='E'; Selain struktur kendali If, pascal juga menyediakan suatu struktur Case, yang akan menjalankan statement berdasarkan range tertentu, adapun syntaxnya adalah sebagai berikut :
Case variabel Of Range1 : Statement1; Range2 : Statement2; Range3 : Statement3; … Else StatementN; End;
21
MODUL 4 PENGULANGAN (LOOPING) Secara sederhana looping diartikan sebagai proses berulang terhadap statement maupun serangkaian statement lebih dari satu kali.Salah
satu
struktur
perintah
perulangan pada pascal adalah yang menggunakan counter. For variabel := nilai awal To nilai akhir Do Statement; Atau For variabel := nilai awal DownTo nilai akhir Do Statement; Dimana variabel harus ordinal type
22
Contoh : Var I : Integer; Begin For I := 1 To 10 Do Writeln('PentaCOM'); End. Program yang menggunakan pengulangan atau Looping : Program Pengulangan; uses crt; var x : integer; begin clrscr; For x:= 1 to 10 do writeln ('I LOVE U GIRL'); readln; end. Pengulangan pada program diatas adalah kata I LOVE U GIRL akan dicetak sebanyak 10 kali. Logikanya, jika kata belum memenuhi akhir daripada variable yang telah ditentukan, maka pengulangan itu akan terus berlanjut sampai variable terpenuhi.
MODUL 5 PROCEDURE DAN FUNCTION Sebuah program yang baik adalah program yang membagi permasalahan utama menjadi bagian-bagian kecil dimana setiap bagian kecil ditangani oleh sebuah subprogram,
cara
ini
disebut
dengan
modular
programming
(pemrograman
terbagi/terpecah). Cara ini termasuk pemrograman terstruktur dan sangat didukung oleh bahasa Pascal. Untuk itu, Pascal telah menyediakan dua jenis subprogram, yaitu procedure dan function (prosedur dan fungsi). 23
Dengan modular programming, program lebih mudah dibaca dan dimengerti. Selain itu, pembenahan program dan penelusuran jalannya program (debugging) menjadi lebih mudah sebab dapat langsung diketahui subprogram mana yang berjalan tidak sesuai dengan yang diharapkan. Procedure dan function merupakan sub-program yang memiliki bagian deklarasi dan beginend; tersendiri layaknya suatu program pascal. Tujuan pemakaian procedure maupun function adalah untuk memecah program kita menjadi kesatuan logika yang lebih kecil (sub-sub program) untuk menghindari perulangan pengetikan dan memudahkan pembacaan. a. Prosedur Prosedur adalah subprogram yang menerima masukan tetapi tidak mempunyai keluaran secara langsung. b. Fungsi Fungsi adalah subprogram yang menerima masukan dan mempunyai keluaran secara langsung procedure Nama_Prosedur;
Function Nama_Fungsi;
begin
begin
...
...
end;
end; { Program utama } begin ... end.
Contoh pemakaian procedure : uses crt; begin clrscr; writeln('ABC'); writeln('Press any key when ready ...'); readkey; writeln('Hey, let''s pause !'); writeln('Press any key when ready ...'); 24
readkey; writeln('Pause again !'); writeln('Press any key when ready ...'); readkey; end. Dengan memecah program kita menjadi kesatuan yang lebih kecil : uses crt; procedure pause; begin writeln('Press any key when ready ...'); readkey; end; begin clrscr; writeln('ABC'); pause; writeln('Hey, let''s pause !'); pause; writeln('Pause again !'); pause; end.
Contoh pemakaian function : Var I : Byte; Akar,Bagi : Word; Begin Writeln(Upper('Bilangan Prima dari 1 s/d 100'); Writeln(Replicate('-',30); For I := 1 To 100 do If (Bil > 1 And Bil < 4) Then Write(I : 4) 25
Else Begin Akar := Round(Sqrt(Bil)); Bagi := 3; While (Bagi <= Akar) And (Bil Mod Bagi <> 0) Do Bagi := Bagi + 1; If Bagi > Akar Then Write(I : 4); End; End. Dan contoh berikut yang menggunakan function : Function IsPrime (Num : Longint) : Boolean; Var Sq ,Dv : Word;
(*local variable )
Begin If Num < 2 Then IsPrime := False Else If Num < 4 Then IsPrime := Bil > 1 Else Begin Sq := Round(Sqrt(Num)); Dv := 3; While (Dv <= Sq) And (Num Mod Dv <> 0) Do Dv := Dv + 1; IsPrime := Dv > Sq; End; End; Pada prinsipnya function mengembalikan nilai. Pada deklarasi bagian deklarasi parameter kita menentukan parameter dan type data dari masing-masing parameter yang akan dikirim kedalam procedure maupun function.
26
MODUL 6 ARRAY Array adalah variabel yang dapat menampung sejumlah data yang ditandai dengan suatu index pada masing-masing elemennya. Contoh : Var 27
Nilai : Array [1..10] of Integer; Penjelasan dari contoh diatas adalah menyisakan ruang pada penyimpanan sebanyak array itu sendiri, seperti contoh akan terpenuhi setelah jumlah ke 10. Dalam hal ini variabel Nilai adalah suatu array yang memiliki 10 element, yaitu Nilai[1], Nilai[2], Nilai[3], …, Nilai[10]. Pada masing-masing elemennya dapat menampung satu nilai Integer. Adakah bentuk array yang lain, selain yang anda sebutkan ? Ada, array yang telah kita sebutkan tersebut adalah array 1 dimensi, kita dapat juga membuat multi dimensi sesuai dengan kebutuhan, contoh : Var Matrix : Array [1..3,1..3] Of Integer; Adalah contoh array 2 dimensi, yang terdiri dari elemen Matrix[1,1], Matrix [1,2], Matrix[1,3],
Matrix[2,1],
Matrix[2,2],
Matrix[2,3],
Matrix[3,1],
Matrix[3,2],
dan
Matrix[3,3]. Jadi jumlah elemennya adalah 3 x 3 = 9 elemen. Dapatkah kita buat 3 Dimensi, 4 Dimensi, dst ? Oh, bisa, hal ini tergantung bagaimana kita mendeklarasikan variabel array tersebut. Adakah hal-hal yang khusus dalam mendeklarasikan array pada Pascal ? Ada, anda bisa mendeklarasikan array seperti : x : Array[3..10] of Integer;
{elemennya x[3], x[4], x[5], …, x[10]}
idx : Array['A'..'Z'] of Integer; a : Array['a'..'z'] of Byte; n : Array[byte] of Integer; { The same as array[0..255] of integer; } Cara pemakaiannya seperti array bisanya, Cuma indexnya ditulis sebgai character, contoh: Idx['A'] = 100; Dan kalau pakai looping : For c:='A' to 'Z' do idx[c]:= 0; Contoh Program Array : Program Nama_Bulan; uses crt; 28
const Bulan :array[1..13] of string = ('Januari','Februari','Maret','April','Mei','Juni','Juli', 'Agustus','September','Oktober','Nopember','Desember','KIAMAT'); var NoBulan : integer; begin clrscr; write ('Masukan nomor bulan : '); readln (NoBulan); write ('Nama bulan ke ' ,NoBulan,' adalah ', bulan [NoBulan]); readln; end.
MODUL 7 RECORD Record adalah tipe data kompleks yang elemen-elemennya boleh mempunyai tipe data yang berbeda. Record lebih kompleks daripada array karena record merupakan kumpulan 29
beberapa variabel dengan tipe data yang berbeda. Berbeda dengan array yang tiap elemennya ditandai dengan nomer indeks maka record ditandai dengan nama variabel anggotanya. Cara mengakses elemen dari record dilakukan dengan menyebutkan nama variabel anggota setelah menyebutkan nama record yang akan diakses. Di antara nama record dan nama variabel anggota dipisahkan tanda titik (.). Cara pendeklarasian record adalah sebagai berikut : var B : record X : integer; Y : real; end; Pada pendeklarasian di atas, maksudnya adalah sebagai berikut : variabel B berupa record dengan dua elemen yaitu X bertipe integer dan Y bertipe real. Untuk mengakses
elemen
dari
variabel
B
seperti
berikut
:
B.nama_variabel
contoh : B.X := 10; Untuk lebih memahami penggunaan record dalam program, perhatikan contoh berikut ini : program Jumlah_Kompleks; uses CRT; Type Kompleks
=
record
bil_real
:
integer;
bil_imaj
:
integer;
end; var K1,
K2,
H
:
kompleks;
procedure
Awal;
begin Writeln('
Latihan
Pascal
3
:
Array
dan
Record');
Writeln('------------------------------------'); Writeln; Writeln('Nama Writeln('NIM
:
____________________'); :
__________');
Writeln; end; 30
procedure
JumlahKompleks(var
Komp1,
Komp2,
KompHasil
:
kompleks);
begin KompHasil.bil_real
:=
Komp1.bil_real
+
Komp2.bil_real;
KompHasil.bil_imaj
:=
Komp1.bil_imaj
+
Komp2.bil_imaj;
end; procedure
BacaData(var
Komp
:
kompleks);
begin Write('Bilangan
real
:
');
Readln(Komp.bil_real); Write('Bilangan
imajiner
:
');
Readln(Komp.bil_imaj); end; procedure
TulisKompleks(var
Komp
:
kompleks);
begin Write('(',Komp.bil_real:3,'
+
',Komp.bil_imaj:3,'i)');
end; begin ClrScr; Awal; Writeln('Isi
bilangan
kompleks
pertama
:');
kedua
:');
BacaData(K1); Writeln; Writeln('Isi
bilangan
kompleks
BacaData(K2); Writeln; JumlahKompleks(K1, Writeln('Penjumlahan
K2, bilangan
kompleks
pertama
H); dan
kedua
:');
TulisKompleks(K1); Write('
+
');
=
');
TulisKompleks(K2); Write(' TulisKompleks(H); Writeln; Writeln; Write('Tekan
Enter...'); 31
Readln; end. Perhatikan program di atas. Untuk lebih jelasnya, jalankan program dengan F7 sehingga akan terlihat urutan jalannya program. Perhatikan pula bagaimana cara mengakses elemen record seperti pada prosedur Jumlah Kompleks.
32
MODUL 8 DELPHI INTERFACE Tampilan Interface Delphi 7 Speed Bar
MenuBar
Component Palete
Code Editor
Form Design
Object Inspector
1. Perintah penting pada Delphi F9
Berfungsi untuk melakukan proses RUN (menjalankan program)
File | Close All
Berfungsi untuk menutup File project sekaligus
Run | Program Reset
Berfungsi untuk menghentikan program yang berjalan
F12
Berfungsi untuk berpindah dari Form editor dan sebaliknya
Ctrl+F11
Berfungsi untuk membuka File project(*.dpr)
Alt+F+V
Berfungsi untuk menyimpan File project sekaligus
Ctrl+S
Berfungsi menyimpan File dan yang belum didimpan
Alt+F+A
Berfungsi untuk menyimpan nama file unit yang baru (sama dengan Ctrl+S) untuk menyimpan file unit yang berbeda nama 33
Alt+F+E
Berfungsi untuk menyimpan nama file project (*.dpr) dengan nama yang berbeda
2. Menu Menu pada Delphi memiliki kegunaan seperti menu pada aplikasi Windows lainnya. Dari menu ini, kita bias memanggil atau menyimpan program, menjalankan dan melacak bug program. Singkatnya, segala sesuatu yang berhubungan dengan IDE Delphi.
3. Speed Bar Speed bar atau toolbar yang berisi kumpulan tombol yang tidak lain adalah pengganti beberapa item menu yang sering digunakan.
4. Componnent Pallete Pada komponen Pallete berisi kumpulan ikon yang melambangkan komponen-komponen pada VCL (Visual Component Library).
5. Code Editor Code Editor merupakan tempat untuk menuliskan listing program yang dinyatakan dengan bahasa Pascal, karena sangat serupa bahasa Pemrograman Delphi dengan bahasa Pemrograman Pascal. Yang perlu diperhatikan pada code editor adalah, kita tidak perlu menuliskan seluruh kode sumber. Delphi telah menuliskan semacam kerangka untuk kita. 6. Object Inspector Pada object Inspector terdiri dari 2 menu : -
Propertis
-
Event
Pada tab Propertis Kita bias mengubah property dari komponen Kita, property dapat dijelaskan sebagai data yang menentukan karakteristik komponen. Pada Tab event Kita dapat menyisipkan kode untuk menangani kejadian tertentu. 34
35
PROGRAM AJAR PEMROGRAMAN PASCAL Program Input_Nama; Uses crt; var Nama, NIS : String; begin clrscr; writeln ('Masukan Nama dan NIS'); writeln ('____________________'); write ('Nama Anda :'); readln (Nama); write ('NIS Anda :'); readln (NIS); end. Program Cetak_Data; uses crt; begin clrscr; TextColor(4 + 128); Writeln('Hai Nama Saya Udin'); readln; end. Program Aritmatika; uses crt; var A,B,Plus,Minus : Integer; Kali,Bagi : Real; begin clrscr; writeln('Hitungan Sederhana Pascal'); writeln('*************************'); writeln; write('Nilai A : '); Readln (A); write('Nilai B : '); Readln (B); writeln; Plus:=A+B; Minus:=A-B; Kali:=A*B; Bagi:=A/B; writeln; writeln('Hasilnya Adalah ???'); writeln; writeln('A+B=',Plus); writeln('A-B=',Minus); writeln('A*B=',Kali:0:2); writeln('A/B=',Bagi:0:2); writeln; writeln('Press ENTER to Continue....'); Readln; end. 36
Program BBM; uses crt; var Liter,Solar,Premium,Pertamax : Real; begin clrscr; write('Silahkan Masukan Jumlah Yang Anda Kehendaki:'); Readln (Liter); Solar:=Liter*4000; Premium:=Liter*4500; Pertamax:=Liter*5000; writeln('Harga Solar =Rp ', Solar:0:0); writeln('Harga Premium =Rp ', Premium:0:0); writeln('Harga Pertamax =Rp ', Pertamax:0:0); Readln; end. Program Bintang; Uses crt; var bar,kol,jml : integer; begin clrscr; write('Jumlah Baris : '); readln (jml); bar:=1; while bar <= jml do begin write ('*' : jml + 1 - bar); kol:=1; while kol <= (1 * bar - 1) do begin write ('*'); kol :=kol + 1; end; writeln; bar:=bar + 1; end; readln; end. Program Bilangan; uses crt; var x : Integer; begin clrscr; x := 1; while x <= 1000 do begin write(x,' '); x:=x+1; end; readln; end. 37
Program Bonus; uses crt; var a : real; b : Integer; begin clrscr; write('Total Pembelian: '); readln(a); writeln; write('Jumlah Barang: '); Readln(b); writeln; if (a >= 500000) and (b>5) then begin write('Bonus Setrika'); end else if (a >=400000) and (b>5) then begin write('Bonus Celana Jeans'); end else if (a >=300000) and (b>5) then begin write('Bonus T-Shirt'); end else if (a >=200000) and (b>5) then begin write('Bonus Kemeja Batik'); end else if (a >=100000) and (b>5)then begin write('Bonus Jam Dingding'); end else if (a >=50000) and (b>5) then begin write('Bonus Payung'); end else begin write('Maaf Anda Tidak Mendapat Bonus'); end; readln; end. Program Luas_Balok; uses crt; var p,l,t,luas : Integer; begin clrscr; writeln('Penghitungan Luas Balok'); writeln; write('panjang : ') ; readln(p); write('lebar : ') ; readln(l); 38
write('tinggi : ') ; readln(t); luas:=2*p*t + 2*p*l + 2*l*t; writeln; writeln('luasnya adalah : ', luas); readln; end. Program Diskon_pembelian; uses crt; var a,diskon : Real; begin clrscr; write('Harga Pembelian :Rp.'); readln(a); writeln; if a > 100000 then begin diskon:=a*(15/100); write('Diskon :Rp.',Diskon:0:2); end else begin write('Maaf Anda Tidak Mendapat Diskon'); end; readln; end. Program Cetak_Angka; uses crt; var x : integer; begin clrscr; x := 0; write('Nilai Kelipatan 2 = '); while x <= 1000 do begin write(x, ' '); x:=x+2; end; readln; end. Program Konfersi_Waktu; Uses crt; type Jam = Record hh : longint; mm : longint; ss : longint; end; var J : Jam; 39
TotalDetik : longint; begin write('Jam : '); readln(J.hh); write('Menit : '); readln(J.mm); write('Detik : '); readln(J.ss); TotalDetik:= (J.hh*3600) + (J.mm*60) + J.ss; writeln('Total Detik = ', TotalDetik); end. Program LIST_SISWA; uses crt; type Siswa = Record Nama : String; Kelamin : String; Kelas : String; Sekolah : String; Alamat : String; end; Var Sis : Siswa; begin clrscr; writeln('Masukan Data Diri Anda:'); Writeln; write('Nama : '); Readln (Sis.Nama); write('Kelamin : '); Readln (Sis.Kelamin); write('Kelas : '); Readln (Sis.Kelas); write('Sekolah : '); Readln (Sis.Sekolah); write('Alamat : '); Readln (Sis.Alamat); Writeln; Writeln('Berikut Data Informasi Diri Anda :'); writeln; writeln(Sis.Nama); writeln(Sis.Kelamin); writeln(Sis.Kelas); writeln(Sis.Sekolah); writeln(Sis.Alamat); readln; end. Program Pengulangan; uses crt; var x : integer; begin clrscr; For x:= 1 to 10 do writeln ('I LOVE U GIRL'); readln; end.
40
Program Nama_Bulan; uses crt; var month : integer; begin clrscr; write('Input Bulan Ke : '); readln(month); writeln; case month of 1 : Write('Bulan Januari'); 2 : Write('Bulan Februari'); 3 : Write('Bulan Maret'); 4 : Write('Bulan April'); 5 : Write('Bulan Mei'); 6 : Write('Bulan Juni'); 7 : Write('Bulan Julii'); 8 : Write('Bulan Agustus'); 9 : Write('Bulan Setpember'); 10 : Write('Bulan November'); 11 : Write('Bulan Oktober'); 12 : Write('Bulan Desember'); else write('Yang Anda Masukan Salah'); end; readln; end. Program Nama_Bulan; uses crt; const Bulan :array[1..13] of string = ('Januari','Februari','Maret','April','Mei','Juni','Juli', 'Agustus','September','Oktober','Nopember','Desember','KIAMAT'); var NoBulan : integer; begin clrscr; write ('Masukan nomor bulan : '); readln (NoBulan); write ('Nama bulan ke ' ,NoBulan,' adalah ', bulan [NoBulan]); readln; end. Program Status_Nilai; uses crt; var Nilai : integer; begin clrscr; write('Masukan Nilai Anda : '); readln (Nilai); case nilai of 80..100 : writeln ('Nilai Sangat Baik'); 70..79 : writeln ('Nilai Baik'); 60..69 : writeln ('Nilai Kurang'); 41
50..59 : writeln ('Nilai Sangat Kurang'); else writeln ('Nilai Buruk !!! '); end; readln; end. Program Jenis_SegiTiga; uses crt; var a,b,c : Integer; begin clrscr; write('Input sisi a : '); readln(a); write('Input sisi b : '); readln(b); write('Input sisi c : '); readln(c); writeln; if (a=b) and (b=c) and (c=a) then writeln('Segitiga Sama Sisi') else if (a=b) and (a<>c) or (b=c) and (b<>a) or (c=a) and (c<>b) then writeln('Segitiga Sama Kaki') else if (a<>b) and (b<>c) and (c<>a) then writeln('Segitiga Sembarang'); Readln; end. Program Perkalian_Matrix; Uses crt; var i,j,n : integer; begin clrscr; write('Masukan Jumlah Perkalian : '); readln (n); write('A' : 5); for i:= 1 to n do write(i:5); writeln; for i:= 1 to n do begin write (i:5); for j:= 1 to n do write(i*j:5); writeln; end; end. Program Nilai_SISWA; uses crt; var Nama : array [1..20] of string; Tugas, UTS, UAS, Persentasi : array [1..20] of Integer; 42
rata : array [1..20] of real; a,jd :byte; begin clrscr; writeln('Masukan Jumlah Data Nilai'); write('Masukan Nama : '); readln (Nama[a]); write('Masukan Nilai Tugas : '); readln (Tugas[a]); write('Masukan Nilai UTS : '); readln (UTS[a]); write('Masukan Nilai UAS : '); readln (UAS[a]); write('Masukan Nilai Persentasi: '); readln (Persentasi[a]); rata[a]:=(0.1*Tugas[a]) + (0.2*UTS[a]) + (0.3*UAS[a]) + (0.4*Persentasi[a]); end. clrscr; for a := 1 to jd do begin writeln('PENILAIAN UJIAN SISWA'); writeln('Nama : ',Nama[a]); writeln('Nilai Tugas : ',Tugas[a]); writeln('Nilai UTS : ',UTS[a]); writeln('Nilai UAS : ',UAS[a]); writeln('Persentasi : ',Persentasi[a]); writeln('Rata-rata :', rata[a]:1:2); Readln; end. Program Perubahan_Zat; uses crt; var Suhu : Integer; begin clrscr; write ('Input Suhu : '); Readln (Suhu); WRITELN; if Suhu <=0 Then writeln('padat'); if (Suhu>0) and (Suhu<100) Then write('Cair'); if Suhu >100 Then writeln('Gas'); Readln; end. Program Pembuatan_Tabel; uses crt; var a,b,c : integer; begin clrscr; writeln ('--------------------------------'); writeln (' a a*a a*b*c '); writeln ('--------------------------------'); For a:= 1 to 10 Do 43
begin b:=a*a; c:=a*a*a; writeln (a:4, b:10, c:10); end; writeln ('--------------------------------'); readln; end. Program Persegi; uses crt; var p,l,luas : integer; begin clrscr; writeln('Penghitungan Luas Persegi Panjang'); writeln; write('panjang : '); Readln (p); write('lebar : '); Readln (l); luas:=p*l; writeln; writeln('Luasnya Adalah : ', Luas); readln; end. Program Tukat_Uang; Uses crt; Var a,b,c,d,e,f : word; begin clrscr; write('Masukan Jumlah Uang Yang Akan Ditukarkan: '); readln (a); b:= a div 1000; a:= a-(b*1000); c:= a div 500; a:= a-(c*500); d:= a div 200; a:= a-(d*200); e:= a div 100; a:= a-(e*100); f:= a div 50; a:= a-(f*50); writeln('Rp.1000 = ',b,'buah'); writeln('Rp.500 = ',c,'buah'); writeln('Rp.200 = ',d,'buah'); writeln('Rp.100 = ',e,'buah'); writeln('Rp.50 = ',f,'buah'); readln; end.
44
Program Contoh_Bulan; uses wincrt; const Bulan :array[1..12] of string = ('Januari','Februari','Maret','April','Mei','Juni','Juli', 'Agustus','September','Oktober','November','Desember'); var NoBulan:integer; begin clrScr; write ('Masukkan nomor bulan: ' ); readln (NoBulan); write ('Nama bulan ke- ' ,NoBulan , ' adalah ', Bulan [NoBulan]); readln; end. Program data_mhs; uses wincrt; type mahasiswa = record nim : string[8]; nama : string[25]; umur : integer; end; var data:mahasiswa; begin clrScr; writeln ('Masukkan data diri Anda : ' ); write ('Nim : ' );readln(data.Nim); write ('Nama : ' );readln(data.Nama); write ('Umur : ' );readln(data.Umur); writeln; {Memasukkan baris kosong}
{Menampilkan data yang telah dimasukan} writeln ('Beikut ini informasi data diri yang telah anda masukkan : '); writeln ('Nim : ' , data.Nim); writeln ('Nama : ' , data.Nama); writeln ('Umur : ' , data.Umur); readln ; end. program penilaian_MHS uses wincrt; var nama : array[1..20] of string; tugas, uts, uas, presensi : array[1..20] of integer; rata : array[1..20] of real; a,jd : byte; begin clrscr; write('Masukkan Jumlah Data Nilai: '); readln(jd); for a := 1 to jd do; begin 45
writeln('PENILAIAN UJIAN MAHASISWA'); write('Masukkan Nama : '); readln(nama[a]); write('Masukkan Nilai Tugas : '); readln(tugas[a]); write('Masukkan Nilai UTS : '); readln(uts[a]); write('Masukkan Nilai UAS : '); readln(uas[a]); write('Masukkan Presensi : '); readln(presensi[a]); Rata[a]:=(0.1*tugas[a])+(0.2*uts[a])+(0.3*uas[a])+(0.4*presensi[a]); end; clrscr; for a := 1 to jd do; begin writeln('PENILAIAN UJIAN MAHASISWA'); writeln('Nama : ',nama[a]); writeln('Nilai Tugas : ',tugas[a]); writeln('Nilai UTS : ',uts[a]); writeln('Nilai UAS : ',uas[a]); writeln('Presensi : ',presensi[a]); {untuk menampilkan semua data yang sudah dimasukkan di awal} writeln('Rata-rata : ',rata[a]:1:2);{untuk menampilkan rata-rata} end; end. Program_penjualan ; uses crt ; var pembelian,potongan : integer ; begin write (‘ total pembelian ‘ ); readln (pembelian); case pemotongan of =10000 : potongan := 1000; =100000 : potongan := 10000; end; writeln (‘ jumlah pembelian : ‘ ,pembelian) ; writeln (‘ potongan : ‘ ,potongan) ; write ( ‘ jumlah bayar : ‘ ,pembelian – potongan) ; readln ; end. Program Gaji ; uses wincrt; var Nama,Nip : char ; gaji_pokok,gaji_kotor,tunjangan,pajak,gaji_bersih :real; begin writeln (‘ Gaji Pegawai ‘) ; write ( ‘ Nama : ‘ ) ; readln ( Nama ) ; write ( ‘ Nip : ‘) ; readln (Nip) ; write ( ‘ Gaji Pokok : ‘ ) ; readln ( gaji_pokok ) ; write ( ‘ Tunjangan : ‘ ) ; readln ( tunjangan ) ; writeln; pajak := 0.1 * gaji_pokok ; writeln ( ‘ Pajak : ‘ , pajak : 2 : 0 ) ; gaji_kotor := gaji_pokok + tunjangan ; writeln ( ‘ Gaji Kotor : ‘ , gaji_kotor: 2 : 0 ) ; 46
gaji_bersih := gaji_kotor + pajak ; writeln ( ‘ Gaji Bersih: ‘ , gaji_bersih : 2 : 0 ) ; readln ; end. Program Berat_badan ; uses crt ; var berat : integer ; begin write ( ‘ masukkan berat badan : ‘ ); readln (berat) ; if berat > 37 then writeln (‘berat’); else writeln ( ‘ kurus ‘ ) ; readln ; end. Program Kalkulator_Sederhana; uses crt; var x,y,hasil:real; jawab:char; begin write ('masukan angka ke-1:');readln (x); write ('pilih operator: (+)/(-)/(*)/(/)');readln (jawab); write ('masukan angka ke-2:');readln (y); if ( jawab= '+') then begin hasil:= x+y end; if ( jawab = '-') then begin hasil:= x-y end; if ( jawab = '*') then begin hasil:= x*y end; if (jawab='/') then begin hasil:= x/y end; write ('hasilnya: ',(hasil):5:2); end. Program Counter_Pulsa; uses crt; label awal; const days : array [0..6] of string[9] = ('minggu','senin','selasa','rabu','kamis','jumat','sabtu'); var operator,i,j,u,y,m,d,dow : integer; 47
uang,harga, pulsa,pilihan,c hp : string;
: longint;
{pernghitungan uang-harga} function hitung(a,b : longint):longint; begin hitung:= b-a end; procedure simpati(var pulsa:longint); label simpati1; var nominal : longint; begin clrscr ; simpati1: writeln('daftar harga SIMPATI'); writeln('v 5 ===== 6.000'); writeln('v 10 ===== 12.000'); writeln('v 20 ===== 21.000'); writeln('v 50 ===== 50.000'); writeln('v 100 ===== 98.000'); writeln; writeln('masukkan nominal pulsa'); readln (nominal); case nominal of 5 : pulsa := 6000; 10 : pulsa := 12000; 20 : pulsa := 21000; 50 : pulsa := 50000; 100: pulsa := 98000; else begin pulsa := 0; writeln ('salah, tulis nominal'); goto simpati1; end; end; end; procedure as(var pulsa:longint); label as1; var nominal : longint; begin as1: writeln('daftar harga Kartu As'); writeln('v 5 ===== 6.000'); writeln('v 15 ===== 18.000'); writeln('v 25 ===== 29.000'); writeln('v 50 ===== 54.000'); writeln('v 100 ===== 108.000'); writeln; writeln('masukkan nominal pulsa'); readln (nominal); 48
case nominal of 5 : pulsa := 6000; 15 : pulsa := 18000; 25 : pulsa := 29000; 50 : pulsa := 54000; 100: pulsa := 108000; else begin pulsa := 0; writeln ('salah, tulis nominal'); goto as1; end; end; end; procedure MENTARI(var pulsa:longint); label im31; var nominal : longint; begin im31: writeln('daftar harga MENTARI'); writeln('v 5 ===== 6.000'); writeln('v 10 ===== 11.000'); writeln('v 20 ===== 21.000'); writeln('v 50 ===== 50.000'); writeln('v 100 ===== 98.000'); writeln; writeln('masukkan nominal pulsa'); readln (nominal); case nominal of 5 : pulsa := 6000; 10 : pulsa := 11000; 20 : pulsa := 21000; 50 : pulsa := 50000; 100: pulsa := 98000; else begin pulsa := 0; writeln ('salah, tulis nominal'); goto im31; end; end; end; procedure im3(var pulsa:longint); label im32; var nominal : longint; begin im32: writeln('daftar harga im3'); writeln('v 5 ===== 6.000'); writeln('v 10 ===== 11.000'); writeln('v 20 ===== 20.000'); writeln('v 50 ===== 48.000'); 49
writeln('v 100 ===== 95.000'); writeln; writeln('masukkan nominal pulsa'); readln (nominal); case nominal of 5 : pulsa := 6000; 10 : pulsa := 11000; 20 : pulsa := 20000; 50 : pulsa := 48000; 100: pulsa := 95000; else begin pulsa := 0; writeln ('salah, tulis nominal'); goto im32; end; end; end; procedure XL(var pulsa:longint); label xl1; var nominal : longint; begin xl1: writeln('daftar harga XL'); writeln('v 5 ===== 6.000'); writeln('v 10 ===== 11.000'); writeln('v 20 ===== 21.000'); writeln('v 50 ===== 47.000'); writeln('v 100 ===== 95.000'); writeln; writeln('masukkan nominal pulsa'); readln (nominal); case nominal of 5 : pulsa := 6000; 10 : pulsa := 11000; 20 : pulsa := 21000; 50 : pulsa := 47000; 100: pulsa := 95000; else begin pulsa := 0; writeln ('salah, tulis nominal'); goto xl1; end; end; end;
{program utama} begin {GetDate(y,m,d,dow : word); } {program untuk menampilkan date belum bisa keluar... bantuin dounk masss....} 50
awal: for j:=7 to 11 do begin for i:=1 to j do write('='); writeln; end; writeln('================================'); writeln('********************************'); writeln(' '); writeln('selamat datang di counter digital'); writeln(' '); writeln; writeln('********************************'); writeln('================================ '); for j:=11 downto 7 do begin for i:=1 to j do write('='); writeln; end; writeln(' zen design'); readln; clrscr; writeln('================================'); writeln('********************************'); writeln(' '); writeln(' kami ada untuk anda '); writeln('tekan enter untuk memulai '); writeln('transaksi anda'); writeln('********************************'); writeln('================================ '); readln; clrscr; writeln('1. Telkomsel'); writeln('2. Indosat'); writeln('3. XL'); writeln; writeln('silahkan pilih operator anda'); readln (operator); clrscr; case operator of 1: begin writeln('1. Simpati'); writeln('2. Kartu As'); readln (pilihan); clrscr; case pilihan of 1 : simpati(pilihan); {memanggil procedure simpati} 51
2 : as(pilihan); {mamanggil procedure as} end; end; 2: begin writeln('1. MENTARI'); writeln('2. im3'); readln (pilihan); clrscr; case pilihan of 1 : MENTARI(pilihan); 2 : im3(pilihan); end; end; 3: begin readln (pilihan); XL(pilihan); clrscr; end else begin writeln ('maaf anda salah pilih'); goto awal; {mengembalikan program ke label awal} end; end; clrscr; writeln ('masukan nomer hepe'); readln(hp); {input nomer hape} clrscr; writeln ('masukkan uang anda'); readln (uang); {input uang} clrscr; if uang > pilihan then begin harga:=hitung(pilihan,uang); { memanggil fungsi hitung} writeln('============================='); writeln(' BERHASIL '); writeln; writeln('transaksi ke nomor ',hp); writeln(''); writeln('sisa uang anda Rp.',harga); writeln('============================'); {6000 adalah harga minimal voucher} while harga > 6000 do begin {supaya pelanggan dapat melakukan trakdaksi lagi} writeln('saldo anda masih bisa untuk melanjutkan transaksi'); readln(u); goto awal; end; writeln(days[dow],',',m:0,'/',d:0,'/',y:0); {yang ini belum bisa ditampilkan.. bantuin dounk mass} end else begin writeln('========================='); writeln(' TRANSAKSI GAGAL'); writeln('saldo anda tidak mencukupi'); 52
writeln('=========================='); writeln; writeln(' TERIMA KASIH'); end; end.
PROGRAM AJAR PEMROGRAMAN DELPHI Kalkulator Sederhana Delphi procedure TForm1.Button1Click(Sender: TObject); var x,y,z:real; begin x:=strTOfloat(edit1.Text); y:=strTOfloat(edit2.Text);
z:=x+y; edit3.Text:=floatTOstr(z); z:=x*y; edit4.Text:=floatTOstr(z); z:=x/y; edit5.Text:=floatTOstr(z); z:=x-y; edit6.Text:=floatTOstr(z); end; procedure TForm1.Button2Click(Sender: TObject); begin Close; end; end.
53
Input Data
procedure TForm1.Button1Click(Sender: TObject); begin laporan.clear; laporan.Items.add('Laporan Data Pegawai'); laporan.Items.add(''); laporan.Items.add('NIP : '+nip.Text); laporan.Items.add('NAMA : '+nama.Text); laporan.Items.add('GOL : '+gol.Text); laporan.Items.add('STATUS : '+status.Text); laporan.Items.add('LAHIR : '+dateTOstr(lahir.date)); if K1.checked then Laporan.Items.add('KELAMIN : '+K1.Caption) else Laporan.Items.add('KELAMIN : '+K2.Caption); Laporan.Items.add('ALAMAT : '+alamat.Text); Laporan.Items.add(''); Laporan.Items.add ('ADMINISTRASI : '); if A1.checked then Laporan.Items.add('-'+A1.Caption); if A2.checked then Laporan.Items.add('-'+A2.Caption); if A3.checked then Laporan.Items.add('-'+A3.Caption); end; 54
procedure TForm1.Button2Click(Sender: TObject); begin Laporan.Clear; nip.Text:=''; nama.Text:=''; gol.Text:=''; status.Text:=''; lahir.date:=Now; K1.Checked:=True; alamat.Text:=''; A1.Checked:=false; A2.Checked:=false; A3.Checked:=false; nip.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); begin Close; end; end.
Data Base Buku (DB Access)
55
procedure TForm1.Button1Click(Sender: TObject); begin ADOTable1.Append; ADOTable1['Kode Buku']:=edit1.Text; ADOTable1['Nama Buku']:=edit2.Text; ADOTable1['Pengarang']:=edit3.Text; ADOTable1['Penerbit']:=edit4.Text; ADOTable1['Tahun Terbit']:=edit5.Text; ADOTable1.Post; edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit1.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); begin ADOTable1.Delete; end; procedure TForm1.Button4Click(Sender: TObject); begin ADOTable1.Locate('Nama Buku',edit6.Text,[loPartialKey]); begin if not ADOTable1.locate('Nama Buku',edit6.text,[loPartialKey])then ShowMessage('Maaf Buku Tidak ditemukan'); edit6.Text:=''; end; end; end. procedure TForm1.Button5Click(Sender: TObject); begin Close; end; 56