02-Buku Ajar Pemrograman Komputer - elista:.

advertisement
BAHAN AJAR KULIAH
PEMROGRAMAN KOMPUTER
Silabus Mata Kuliah Pemrograman Komputer:
I
Komponen dasar komputer
II
Dasar-dasar dan aturan penulisan algoritma
III
Tipe, nama, dan nilai
IV
Pemrograman terstruktur dan bahasa pemrograman pascal
V
Struktur pemrograman / struktur kontrol
VI
Tipe data larik (array)
VII
Tipe data record
VIII
Tipe data file
IX
Subprogram
X
Pengurutan (sorting) dan pencarian (searching)
XI
Contoh kasus
© 2005
BAB I
KOMPONEN DASAR KOMPUTER
1.1 Pendahuluan
Komputer terdiri atas komponen-komponen yang saling bekerja sama untuk menjalankan
fungsi-fungsi yang berkaitan dengan operasi-operasi: pembacaan data, manipulasi data, dan
menghasilkan keluaran. Keluaran dapat ditampilkan, dicetak, atau disimpan dalam media
penyimpanan komputer.
Fungsi-fungsi dapat dilakukan dengan memberikan sekumpulan instruksi kepada komputer
yang disebut program. Kegiatan yang berhubungan dengan pembuatan program disebut
pemrograman. Untuk dapat dimengerti dan dapat dilaksanakan oleh komputer, program
ditulis dengan menggunakan bahasa pemrograman dan perlu diterjemahkan dengan
menggunakan penterjemah yang disebut kompiler atau interpreter.
1.2 Sistem Komputer
Sebuah sistem komputer tersusun atas 3 (tiga) elemen, yaitu:
a. Hardware (Perangkat Keras), merupakan rangkaian elektronika
Perangkat keras komputer secara garis besar terdiri atas tiga komponen utama, yaitu
1. Processor, merupakan bagian dari perangkat keras komputer yang melakukan
pemprosesan aritmatika dan logika serta pengendalian operasi komputer secara
keseluruhan. Prosesor terdiri atas dua bagian utama, yaitu ALU (Arithmetic Logic
Unit) dan Control Unit. Kecepatan kerja prosesor biasanya ditentukan oleh kecepatan
clock dari Control Unit-nya. Contoh : jika prosesor memiliki frekuensi clock 350
MHz, berarti kecepatan pemprosesan satu instruksinya = T = 1/f = 1/(350 x 106 Hz),
= 0,286 x 10-8 detik.
2. Memory, berdasarkan fungsinya dibagi menjadi 2 (dua) yaitu:
a. Primary Memory, dipergunakan untuk menyimpan data dan instruksi dari
program yang sedang dijalankan. Biasa juga disebut sebagai RAM. Karakteristik
dari memori primer adalah:
- Volatil (informasi ada selama komputer bekerja. Ketika komputer
dipadamkan, informasi yang disimpannya juga hilang)
- Kecepatan tinggi
- Akses random (acak)
b. Secondary Memory, dipergunakan untuk menyimpan data atau program biner
secara permanen. Karakteristik dari memori sekunder adalah:
- Non volatil atau persisten
- Kecepatan relatif rendah (dibandingkan memori primer)
- Akses random atau sekuensial
Contoh memori sekunder : floppy, harddisk, CD ROM, magnetic tape, optical
disk, dll. Dari seluruh contoh tersebut, yang memiliki mekanisme akses
sekuensial adalah magnetic tape.
3. Input-Output Device, merupakan bagian yang berfungsi sebagai penghubung antara
komputer dengan lingkungan di luarnya. Dapat dibagi menjadi dua kelompok, yaitu
a. Input Device (Piranti Masukan), berfungsi sebagai media komputer untuk
menerima masukan dari luar. Beberapa contoh piranti masukan :
- Keyboard
- Mouse
1
- Touch screen
- Scanner
- Camera
- Modem
- Network card, dll.
b. Output Device (Piranti Keluaran), berfungsi sebagai media komputer untuk
memberikan keluaran. Beberapa contoh piranti keluaran:
- Monitor
- Printer
- Speaker
- Plotter
- Modem
- Network card, dll.
b. Software (Perangkat Lunak), merupakan program yang dijalankan pada komputer
Perangkat lunak dapat diklasifikasikan sebagai berikut:
1. Sistem Operasi, merupakan perangkat lunak yang mengoperasikan komputer serta
menyediakan antarmuka dengan perangkat lunak lain atau dengan pengguna. Contoh
sistem operasi: MS DOS, MS Windows (dengan berbagai generasi), Macintosh,
OS/2, UNIX (dengan berbagai versi), LINUX (dengan berbagai distribusi), NetWare,
dll.
2. Program Utilities, merupakan program khusus yang berfungsi sebagai perangkat
pemeliharaan komputer, seperti anti virus, partisi hardisk, manajemen hardisk, dll.
Contoh produk program utilitas: Norton Utilities, Partition Magic, McAfee, dll.
3. Program Aplikasi, merupakan program yang dikembangkan untuk memenuhi
kebutuhan yang spesifik. Contoh: aplikasi akuntansi, aplikasi perbankan, aplikasi
manufaktur, dll.
4. Program Paket, merupakan program yang dikembangkan untuk kebutuhan umum,
seperti :
- Pengolah kata / editor naskah: Wordstar, MS Word, Word Perfect, AmiPro, dll
- Pengolah angka / lembar kerja: Lotus123, MS Excell, QuattroPro, dll
- Presentasi: MS PowerPoint, dll
- Desain grafis: CorelDraw, PhotoShop, dll
5. Penerjemah Bahasa Pemrograman, merupakan perangkat lunak untuk pembuatan
atau pengembangan perangkat lunak lain. Bahasa pemprograman dapat
diklasifikasikan menjadi tingkat rendah, tingkat sedang, dan tingkat tinggi.
Pergeseran dari tingkat rendah ke tinggi menunjukkan kedekatan dengan ‘bahasa
manusia’. Bahasa tingkat rendah (atau biasa disebut bahasa assembly) merupakan
bahasa dengan pemetaan satu persatu terhadap instruksi komputer. Contoh bahasa
tingkat tinggi: Pascal, BASIC, Prolog, Java dll. Contoh bahasa tingkat menengah :
bahasa C. Seperti perangkat lunak lain, bahasa pemprograman juga memiliki
pertumbuhan generasi.
c. Brainware (SDM)
Terdapat berbagai peran yang dapat dilakukan manusia dalam bagian sistem komputer.
Beberapa peran di antaranya adalah:
1. Analis Sistem, berperan melakukan analisis terhadap permasalahan yang dihadapi,
serta merancang solusi pemecahannya dalam bentuk program komputer
2. Programmer, berperan menerjemahkan rancangan yang dibuat analis ke dalam
bahasa pemprograman sehingga solusi dapat dijalankan oleh komputer
3. Operator, bertugas menjalankan komputer berdasarkan instruksi yang diberikan
2
4. Teknisi, bertugas merakit atau memelihara perangkat keran komputer, dll.
1.3 Komponen Komputer
Komputer merupakan suatu alat untuk membaca, memanipulasi, dan menyajikan data. Pada
masa lalu, penggunaan komputer masih sangat terbatas, yaitu pada masa instansi pemerintah
maupun perusahaan yang relatif besar. Dengan dikenalkannya komputer personal
memberikan dampak makin mudahnya orang dalam mendapatkan dan memanfaatkan
komputer, bahkan untuk keperluan di rumah.
Terdapat berbagai macam komputer dilihat dari ukuran fisik maupun kemampuan.
Kemampuan komputer umumnya bergantung pada jumlah pekerjaan yang dapat ditangani
dalam satu satuan waktu. Komputer yang berkemampuan besar – umumnya dengan harga
yang relatif mahal, mampu melakukan banyak operasi secara simultan.
Pada dasarnya, suatu komputer terdiri atas komponen-komponen sebagaimana diperlihatkan
pada Gambar 1.1 berikut:
Unit pemroses pusat
Unit kontrol
Peralatan
masukan
Internal storage
atau Memory
Peralatan
keluaran
Arithmetic Logical
Unit (ALU)
Aliran data atau program
Fungsi kontrol
Gambar 1.1 Komponen dasar komputer
Semua data dan program yang akan diproses oleh komputer, pertama kali dimasukkan ke
dalam memory komputer melalui peralatan masukan (Input Devices). Unit kontrok (Control
Unit) akan menterjemahkan program yang ada di memory dan digunakan untuk mengontrol
atau mengkoordinasikan operasi dari semua komponen komputer. Data dalam memory
dimanipulasi dengan menggunakan Arithmetic Logic Unit (ALU), dan hasilnya disimpan
kembali ke dalam media penyimpanan dengan menggunakan peralatan keluaran (Output
Devices).
1.4 Program dan Bahasa Pemrograman
Komputer merupakan alat yang mempunyai keunggulan dalam kecepatan proses dan
melakukan perhitungan yang komplek. Komputer mampu menyimpan data dalam ukuran
besar, melakukan manipulasi dan menghasilkan informasi sebagai hasil keluarannya.
Masalahnya ialah bahwa komputer tidaklah dapat melaksanakan itu semua tanpa
3
mendapatkan instruksi atau perintah mengenai apa yang harus dikerjakan, yaitu yang disebut
dengan program.
Program ditulis secara terinci, sistematis, logis, dapat dimengerti / dipahami dan dapat
dilaksanakan oleh komputer. Baris program disebut dengan pernyataan (statement), dan
masing-masing pernyataan mengerjakan tugas tertentu. Dengan program akan dapat
dilakukan kontrol langkah-langkah yang harus dikerjakan komputer.
Proses pembuatan program komputer sampai diperolehnya hasil yang dikehendaki disebut
dengan pemrograman komputer, dan dilaksanakan oleh pemrogram (programmer).
Bahasa yang digunakan sebagai komunikasi diantara orang dengan komputer (untuk
penulisan program) disebut bahasa pemrograman. Bahasa pemrograman mencakup notasi,
simbol, pernyataan, tata bahasa, dan lain-lain aspek bahasa.
Penulisan program harus memenuhi aturan sintak (syntatic rule) dari bahasa pemrograman.
Perbedaan mendasar diantara bahasa pemrograman dengan bahasa sehari-hari yang
digunakan manusia ialah bahwa bahasa pemrograman digunakan sangat tepat dan tidak ada
pengecualian atau arti ganda (ambiguities). Masalahnya ialah karena komputer tidaklah dapat
berfikir dan menimbang-nimbang sebagaimana dapat dilakukan oleh manusia. Komputer
hanya akan mengikuti perintah persis sebagaimana yang diberikan.
Komputer tidak dapat menafsirkan perintah untuk memehami apa yang diinginkan oleh
pembuat program. Sehingga kesalahan dalam penulisan akan mengubah maksud dari suatu
program dan menyebabkan komputer mengerjakan aksi yang salah.
Dilihat kedekatannya kepada “bahasa manusia”, maka bahasa pemrograman dikelompokkan
menjadi dua, yaitu:
a. Bahasa pemrograman tingkat rendah
Bahasa pemrograman tingkat rendah merupakan “bahasa ibu” dari komputer, yaitu
bahasa yang tidak memerlukan penterjemah untuk dapat dipahami dan dimengerti oleh
komputer. Atau dengan kata lain untuk berkomunikasi secara langsung dengan komputer
orang perlu menggunakan bahasa tingkat rendah. Contoh dari bahasa pemrograman
tingkat rendah ialah bahasa mesin (machine language).
Setiap perintah dalam bahasa mesin berupa kode numerik (menggunakan angka 0 dan 1).
Demikian juga data disajikan dengan menggunakan kode numerik. Bentuk pengkodean
numerik tersebut berbeda antara satu kmputer dengan komputer yang lain. Hal ini
menyebabkan penggunaan bahasa mesin kurang praktis dan susah untuk digunakan atau
diingat karena tidak sesuai dengan bahasa sehari-hari.
b. Bahasa pemrograman tingkat tinggi
Dengan kekurangan dari bahasa tingkat rendah sebagaimana telah dijelaskan, kemudian
dikembangkan bahasa pemrograman yang lain dan diantaranya ialah bahasa
pemrograman tingkat tinggi.
Bahasa pemrograman tingkat tinggi mempunyai ciri-ciri sebagai berikut:
• Penulisannya mirip dengan bahasa sehari-hari (bahasa Inggris)
• Tergantugn pada mesin komputer yang digunakan
Bahasa pemrograman tingkat tinggi disebut juga dengan bahasa generasi ketiga.
4
Program yang ditulis dengan bahasa pemrograman tingkat tinggi tidak dapat langsung
dimengerti oleh komputer, dan harus diterjemahkan dahulu oleh sebuah “penterjemah”
ke dalam bahasa mesin untuk dapat dilaksanakan atau dieksekusi oleh Unit Pemroses
Pusat.
Terdapat banyak sekali bahasa pemrograman tingkat tinggi yang telah dikembangkan.
Diantaranya bahasa pemrograman tersebut yang banyak digunakan antara lain:
1. BASIC (Beginer All-purpose Symbolic Instruction Code)
• Mudah dipelajari, khususnya untuk pemula
• Cukup popular pada awal pemakaian komputer personal
2. Cobol (Common Business Oriented Language)
• Untuk aplikasi bisnis / administrasi
• Banyak digunakan di bidang pebankan
• Dapat digunakan untuk aplikasi ilmiah tapi dengan kemampuan terbatas
3. FORTRAN (Formula Translator)
• Untuk komputasi ilmiah
• Populer dan banyak digunakan
4. Pascal
• Merupakan pemrograman terstruktur / sistematik
• Digunakan untuk aplikasi ilmiah maupun bisnis / administrasi
5. C
• Merupakan bahasa modular, sehingga efisien
• Kode dari bahasa ini padat, sehingga mengurangi waktu kompilasi
Dilihat dari terapannya, Cobol dan Fortran merupakan bahasa pemrograman bertujuan
khusus. Cobol untuk terapan di bidang bisnis dan administrasi sedangkan Fortran untuk
terapan ilmiah. Pascan dan C merupakan bahasa pemrograman bertujuan umum, karena
dapat digunakan untuk berbagai apliaksi. Dalam kenyataannya pengelompokkan tersebut
tidak terlalu ketat digunakan.
Bahasa pemrograman terus digunakan, mengikuti perkembangan perangkat keras dan
kebutuhan aplikasi. Sebagai contoh untuk bahasa generasi kelima digunakan untuk super
komputer, dan digunakan antara lain untuk bidang kecerdasan buatan dan sistem pakar.
Bahasa pemrograman yang termasuk generasi kelima menghasilkan program-program
yang bersifat bahasa alamiah (natural language) dan menggunakan pengetahuan
(knowledge) sebagai basis pengolahan.
Saat ini bahasa Basic dikembangkan menjadi Visual Basic. Dengan kata lain “Visual”
menunjukkan cara yang digunakan untuk membuat Graphical User Interface (GUI).
Dengan cara ini penulisan instruksi pemrograman tidak lagi dalam kode-kode baris, akan
tetapi cukup dengan melakukan drag dan drop objek-objek yang digunakan. Dengan
Visual Basic dapat dikembangkan program apliaksi berbasis Windows, bersifat mousedriven (digerakkan dengan mouse), dan berdaya guna tinggi. Selain Visual Basic dikenal
juga Visual Delphi, dan Visual FoxPro.
1.5 Penerjemah Bahasa Pemrograman
Sebagaimana telah dijelaskan sebelumnya, instruksi atau program yang telah ditulis dengan
bahasa pemrograman tingkat tinggi perlu diterjemahkan dahulu ke dalam bahasa mesin untuk
dapat dieksekusi oleh komputer.
5
Kompiler (compiler), merupakan program yang menterjemahkan program yang ditulis di
dalam bahasa pemrograman tingkat tinggi me suatu himpunan instruksi mesin spesifik yang
disimpan dalam bentuk file. Selain kompiler terdapat program penterjemah yang lain ialah
interpreter. Interpreter digunakan untuk menterjemahkan program yang ditulis dalam
bahasa tingkat tinggi ke dalam bahasa mesin, dan menjalankannya baris demi baris.
-
Perbedaan antara kompiler dan interpreter antara lain adalah sebagai berikut:
Kompiler
Interpreter
Menterjemahkan program sebelum
- Menterjemahkan program pada saat
dijalankan
dijalankan
Penterjemahan bersifat tetap
- Penterjemahan bersifat sementara
Kesalahan penulisan diketahui setelah
- Kesalahan penulisan langsung
proses kompilasi
diberitahukan
Perbaikan program dilakukan dengan
- Perbaikan program dapat langsung
kembali ke pengedit teks program
dilaksanakan
Gambar 1.2 Perbedaan kompiler dan interpreter.
Sehubungan dengan perbedaan di atas, maka pelaksanaan program dengan menggunakan
interpreter maupun dengan kompiler dapat digambarkan pada Gambar 1.3 berikut:
Program
sumber
Baca satu
pernyataan
Terjemahkan ke
bahasa mesin
Laksanakan
pernyataan
a) Dengan interpreter
Program
sumber
Terjemahkan
seluruhnya
Program dalam
bahasa mesin lengkap
Laksanakan
program lengkap
b) Dengan kompiler
Gambar 1.3 Tahapan pelaksanaan program.
Program sumber (source program) merupakan program yang ditulis dengan menggunakan
bahasa pemrograman tingkat tinggi sehingga masih dapat dibaca, dipahami dan dipahami
oleh pembaca karena menggunakan istilah-istilah yang lazim dikenal. Misalnya: READ,
PRINT, IF-THEN, dan lain-lain.
Bahasa pemrograman Fortran, Cobol, Pascal, dan C menggunakan kompiler sebagai
perterjemah. Contoh bahasa pemrograman yang menggunakan interpreter sebagai
penterjemah ialah bahasa Basic.
1.6 Pemrograman Terstruktur
Ide pemrograman terstruktur pertama kali disampaikan oleh Profesor Edsger Djikstra dari
Universitas Eidenhower sekitar tahun 1965. Djikstra mengusulkan tidak dipergunakannya
pernyataan GOTO yang dapat menyebabkan timbulnya “spaghetti logic”, yang akan
menjadikan sulitnya dilakukan perbaikan ataupun pengembangan program. Kemudian HD
Millis menanggapi dengan mengemukakan bahwa pemrograman terstruktur tidak hanya
6
dihubungkan dengan tidak digunakannya pernyataan GOTO, akan tetapi juga dengan
struktur dari program. Struktur program yang akan menentukan program yang terstruktur
menggunakan pernyataan GOTO atau tidak.
Prinsip utama dari pemrograman terstruktur ialah bahwa jika suatu proses telah sampai pada
suatu titik tertentu, maka proses selanjutnya tidak boleh melompat ke baris sebelumnya,
kecuali untuk proses berulang. Pemrograman terstruktur dimaksud untuk mendapatkan
program yang didefinikan dengan baik, jelas, mudah dipahami, mudah ditelusuri, dan mudah
dimodifikasi. Cirri pemrograman terstruktur akan dibicarakan pada pembahasan pada modul
berikutnya.
1.7 Tahapan Pemrograman
Untuk membuat program diperlukan tahapan-tahapan mulai dari persiapan sampai
diperolehnya program yang siap pakai. Tahapan di dalam pemrograman adalah sebagai
berikut:
a. Analisis masalah
Sebelum memulai penulisan program, terlebih dahulu pemrogram perlu memahami
tentang yang akan dikerjakan oleh program dengan kata lain mengetahui dengan jelas
permasalahan yang sedang dihadapi. Selain itu perlu diketahui tentang data masukan dan
keluaran yang terkait yang telah dirancang oleh analis sistem.
b. Merencanakan logika program / pembuatan algoritma
Dengan memahami spesifikasi program, pemrogram akan dapat menyusun kerangka
pemecahan dan menentukan metode pemecahan. Hasilnya menjadi bahan dalam
merencanakan logika program, yang dinyatakan dengan menggunakan berbagai cara
misalnya dengan menggunakan pseudocode atau dengan bagan alir. Pseudocode
menggunakan simbol-simbol yang mirip dengan yang digunakan di dalam bahasa
pemrograman, sedangkan bagan alir menggunakan simbol-simbol gambar dan garis
untuk menyatakan logika program.
c. Pembuatan pogram
Pembuatan program meliputi 2 (dua) hal, yaitu:
- Penulisan program, yaitu menyusun program dengan menggunakan salah satu bahasa
pemrograman yang dipandang paling tepat dan cocok, dimana hasil dari penulisan
program berupa program sumber.
- Pengetikan program, yaitu memindahkan program sumber yang ditulis pemrogram
ke dalam media simpan yang memungkinkan program untuk dapat diproses langsung
oleh komputer.
Komputer tidak dapat melaksanakan perintah yang ditulis dalam program sumber secara
langsung. Program harus diterjemahkan terlebih dahulu agar dapat dilaksanakan oleh
komputer.
d. Test atau uji logika
Untuk memastikan bahwa program bebas dari kesalahan, perlu dilakukan test program
dengan menggunakan data uji. Data uji dapat berupa data yang dibuat untuk keperluan
tersebut atau diambilkan dari data sesungguhnya dalam jumlah yang relatif kecil (berupa
sample). Tahapan test meliputi kegiatan mempersiapkan data uji, mengeksekusi program
dan melakukan test hasil keluaran dari program. Test terus dilakukan sampai diperoleh
hasil test yang memenuhi spesifikasi yang ditentukan.
e. Pembuatan dokumentasi
Tahapan terakhir dari rangkaian tahapan pemrograman ialah menyusun dokumentasi,
yang meliputi: spesifikasi program (dari analis sistem), bagan alir program, hasil cetak
program sumber, sampel data yang digunakan untuk test dan hasil test.
7
1.8 Kualitas Program
Dari pemrograman diharapkan diperolehnya program yang berkualitas, dan diharapkan dapat
digunakan dalam waktu yang relatif lama. Untuk itu di dalam pemrograman perlu dilakukan
upaya-upaya untuk:
a. Memenuhi kebutuhan pengguna
Sebagai pemakai program adalah pengguna, untuk itu kebutuhan pengguna perlu
dirumuskan dengan jelas agar program yang dihasilkan memberikan manfaat optimal.
b. Sesuai dengan waktu dan biaya yang disediakan
Pengguna biasanya mengharapkan hasil dari pemrograman segera terwujud. Untuk itu
perlu dilakukan perencanaan yang matang agar pemrograman tidak terhenti di tengah
jalan karena melebihi jadwal kegiatan dan kehabisan dukungan sumber daya dan biaya.
c. Bebas dari kesalahan
Program hendaknya dirancang dan dikembangkan dengan mengupayakannya agar bebas
dari kesalahan. Hal tersebut dilakukan dngan pendeteksian dan koreksi kesalahan selama
test program.
d. Menghilangkan kesalahan program
Program hendaknya dirancang sehingga kesalahan akan terdeteksi oleh program itu
sendiri selama eksekusi berlangsung.
1. Validasi masukan
Merupakan proses test masukan untuk menentukan apakah masukan memenuhi
kriteria yang ditentukan.
2. Test kebenaran selama pemrosesan
Merupakan test apakah hasil yang diberikan komputer masuk akal serta cek
hubungan logika diantara hasil yang berbeda.
e. Program yang dapat dirawat (maintenance)
Dalam perjalanannya, program memerlukan perawatan yang disebabkan karena
perkembangan kebutuhan maupun dijumpainya kesalahan. Dengan dokumentasi
memungkinkan pemrogram yang tidak terlibat dalam tahap awal pembuatan program
dapat melakukan merawat program tanpa menyebabkan timbulnya kesalahan yang lain.
f. Program yang portable
Program yang ditulis hendaknya dapat diubah dari komputer satu ke komputer yang lain
tanpa tanpa perubahan isi. Ini berarrti penggunaan semua instruksi atau perintah yang
tidak baku (standard) di dalam penulisan program hendaknya ditiadakan atau dihindari.
8
BAB II
DASAR-DASAR DAN ATURAN PENULISAN ALGORITMA
2.1 Pengertian Algoritma
Dalam modul sebelumnya telah dijelaskan bahwa salah satu tahapan di dalam pemrograman
ialah menyusun kerangka pemecahan dan metode pemecahan. Hasilnya menjadi bahan dalam
merencanakan kerangka program. Pembuatan logika program akan lebih mudah dibuat dan
dikomunikasikan dengan menggunakan algoritma (algorithm).
Aho (1987) dalam bukunya Data Structure and Algorithms memberikan pengertian
algoritma sebagai berikut:
Algorithm is a finite sequence of instruction, each of which has a clear
meaning and can be performed with a finite amount of effort in a finite length
of time.
Sedangkan menurut Microsoft:
Algoritma adalah urutan langkah berhingga untuk memecahkan masalah
logika atau matematika.
Algoritma disebut juga dengan motode, teknik, atau prosedur. Algoritma berasal dari kata
“algorism” yang dikenalkan oleh Abu Ja’far Muhammad Musa Al-Khowarizmi dalam
bukunya yang berjudul Kitab Al Jabr Waal Muqobala (The Book of Restoration and
Reduction).
2.2 Cara Penyajian
Algoritma merupakan pola piker terstruktur yang perlu digambarkan, dijelaskan, atau
disajikan dengan menggunakan notasi-notasi yang tepat dan mudah dimengerti oleh
pembacanya.
Algoritma dapat disajikan dengan menggunakan banyak cara, diantaranya:
a. Bahasa alamiah
Penyajian algoritma dengan bahasa alamiah dilakukan dengan menyusun uraian kata
yang menggunakan bahasa Inggris atau dengan bahasa lain, misalnya bahasa Indonesia.
Algoritma dengan bahasa alamiah dapat ditulis dengan menggunakan huruf besar di awal
kalimat dan selanjutnya dengan huruf kecil, atau dengan menggunakan huruf besar
seluruhnya. Untuk memperjelas dapat ditambahkan nomor urut untuk setiap langkah
yang ada. Karena menggunakan bahasa yang sehari-hari digunakan manusia, maka
penyajian algoritma dengan bahasa alamiah dapat dipahami oleh pembaca yang belum
memahami bahasa pemrograman, misalnya pemakai sistem.
b. Pseudocode (sandi semu)
Penulisan sandi semu menggunakan simbol-simbol perintah yang mirip dengan yang
menggunakan di dalam bahasa pemrograman. Pseudocode berasal dari kata pseudo yang
berarti mirip atau menyerupai, dan code yang berarti program. Pseudocode ditulis dengan
menggunakan huruf besar, sedangkan variabel atau komentar ditulis dengan
menggunakan huruf kecil. Untuk memperjelas struktur algoritma, digunakan tabulasi
yang berbeda untuk penulisan sandi semu yang berada dalam kalang (loop) atau struktur
kondisional. Dengan penulisan sandi semu mirip dengan penulisan program, maka
algoritma yang ditulis dengan sandi semu lebih tepat digunakan untuk
mengkomunikasikan algoritma kepada pemrogram.
c. Bagan atau gambar
Salah satu bagan yang digunakan untuk menyatakan algoritma ialahyang disebut dengan
bagan alir (flowchart). Bagan alir terdiri atas sekumpulan gambar yang digunakan
9
menyatakan simbol-simbol tertentu. Simbol-simbol yang sering digunakan untuk
pembuatan bagan alir diberikan pada Gambar 2.1.
Terminal / proses
(awal / akhir)
Proses
Preparation
Titik keputusan
Input / output
Penghubung
(halaman yang sama)
Arah arus / proses
Penghubung
(halaman yang berbeda)
Gambar 2.1 Contoh simbol untuk bagan alir.
Apapun cara yang dipilih untuk menyajikan algoritma, satu hal yang perlu diperhatikan ialah
bahwa algoritma tidak berhubungan dengan satu bahasa pemrograman ataupun komputer
jenis tertentu yang akan mengeksekusinya. Algoritma dapat diterjemahkan ke bahasa
pemrograman apapun sesuai pilihan dari pemrogram.
2.3 Ciri Penting Algoritma
Menurut Donal E. Knuth (1973) dalam bukunya The Art of Programming, 5 (lima) ciri
penting algoritma ialah:
a. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. Atau dengan
kata lain suatu algoritma mempunyai awal dan akhir dari proses.
b. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti dua (ambigious).
c. Algoritma memiliki nol atau lebih masukan (input). Masukan berupa besaran yang
diberikan sebelum algoritma mulai bekerja.
d. Algoritma memiliki satu atau lebih masukan (output). Keluaran merupakan hasil
pelaksanaan suatu algoritma, yang mempunyai hubungan dengan masukan.
e. Algoritma harus efektif, yaitu setiap langkah harus sederhana sehingga dapat dikerjakan
dalam sejumlah waktu yang masuk akal.
2.4 Stepwise Refinement
Algoritma disusun oleh sederetan langkah yang logis. Setiap langkah mengerjakan suatu
tindakan (aksi) tertentu. Bila suatu aksi dilaksanakan, maka sejumlah operasi yang
bersesuaian dengan aksi itu akan dikerjakan oleh pemroses. Jika sudah dalam bentuk
program, maka sebagai pemroses ialah Unit Pemroses Utama.
Efek dari pengerjaan suatu aksi dapat diamati dengan membandingkan keadaan pada saat
aksi belum dimulai (t0), dengan keadaan saat aksi selesai dikerjakan (t1).
t0 : Keadaan sebelum aksi dikerjakan
Aksi
t1 : Keadaan setelah aksi dikerjakan
10
Pendekatan yang baik dalam perancangan algoritma ialah dimulai dengan menuliskan tujuan
utama penulisan algoritma dan mengembangkannya menjadi tujuan yang lebih rinci, sampai
diperoleh suatu rincian yang dapat diubah ke penulisan program (sudah bersifat elementer).
Pendekatan tersebut dikenal dengan istilah Analisis Top-Down. Penghalusan suatu algoritma
dengan mendeskripsikan aksi-aksi yang ada sehingga lebih rinci, lebih tepat dan lebih
spesifik disebut Stepwise Refinement.
Contoh:
- Lima mahasiswa mengadakan pengukuran mengenai daya regang suatu potongan logam
tertentu. Setiap mahasiswa melakukan serangkaian pengukuran sebanyak 5 (lima) kali.
Misal akan dibuat algoritma untuk menghasilkan rata-rata dan simpangan baku dari
pengukuran potongan logam tersebut untuk setiap mahasiswa dan antar mahasiswa.
- Rencana struktur awalnya ialah sebagai berikut:
1. Baca hasil pengukuran dari 5 (lima) mahasiswa dengan masing-masing mahasiswa
terdiri atas 5 (lima) pengukuran
2. Untuk setiap mahasiswa hitung rata-arta dan simpangan baku
3. Hitung dan cetak rata-rata dan simpangan baku yang dihasilkan antar mahasiswa.
- Jika tahapan dua dan tiga lebih diperinci lagi, maka susunannya ialah sebagai berikut:
1. Baca hasil pengukuran dari 5 (lima) mahasiswa dengan masing-masing mahasiswa
terdiri atas 5 (lima) pengukuran
2. Untuk setiap mahasiswa,
2.1 Hitung rata-rata dari 5 (lima) hasil pengukuran
2.2 Hitung simpangan baku dari 5 (lima) hasil pengukuran pada tahapan 2.1
2.3 Cetak rata-rata dan simpangan baku
3. –
3.1 Hitung rata-rata dari 5 (lima) rata-rata yang dihasilkan pada tahapan 2
3.2 Hitung simpangan baku dari 5 (lima) rata-rata pada tahapan 2
3.3 Cetak rata-rata dan simpangan baku.
2.5 Struktur Dasar Algoritma
Untuk membuat algoritma digunakan tiga stuktur dasar, yaitu berurut (sequence), pemilihan
(selection), dan pengulangan (repetition). Berikut akan diberikan penjelasan dari masingmasing struktur dasar di atas.
a. Struktur Berurut
Terdiri atas satu aksi yang diikuti dengan aksi yang lain, dengan masing-masing aksi
dikerjakan sesuai dengan letak urutanmasing-masing (lihat Gambar 2.2)
Dalam bentuk pseudicode:
…
Aksi A
Aksi B
…
Atau dalam bentuk bagan:
Aksi A
Aksi B
Gambar 2.2 Struktur berurut.
11
b. Struktur Pemilihan
Struktur pemilihan terdiri test kondisi yang diikuti dengan jalur bercabang, yaitu jalur
Benar (True) dan jalur Salah (False). Kedua jalur tersebut akan bergabung kembali pada
suatu titik tertentu. Jalur atau langkah yang dipilih tergantung pada nilai (hasil) test
kondisi. Terdapat 3 (tiga) macam struktur pemilihan, yaitu:
1. Struktur pemilihan tunggal, yaitu aksi hanya akan dikerjakan apabila test kondisi
menghasilkan nilai Benar. Untuk nilai test kondisi Salah, tidak ada aksi yang
dikerjakan.
Dalam bentuk pseudocode:
IF kondisi THEN
Aksi C
2. Struktur pemilihan ganda, yaitu terdapatnya 2 (dua) aksi berbeda yang akan
dikerjakan tergantung pada nilai hasil test. Dengan demikian apapun nilai test kondisi
akan menyebabkan dilaksanakannya aksi tertentu.
Dalam bentuk pseudocode:
IF kondisi THEN
Aksi D
ELSE
Aksi E
3. Struktur pemilihan majemuk, yaitu terdapat sejumlah aksi yang berbeda yang akan
dikerjakan tergantung pada nilai test kondisi. Biasanya test kondisi berupa nilai suatu
variabel.
Dalam bentuk pseudocode:
CASE nilai OF
Nilai-1: Aksi F
Nilai-2: Aksi G
…….. : Aksi H
Nilai-n: Aksi I
END
Bagan dari masing-masing struktur pemilihan diberikan pada Gambar 2.3 berikut:
Benar
Salah
Benar
Test
Salah
Test
Aksi C
Aksi E
Aksi D
a) Pemilihan Tunggal
b) Pemilihan Ganda
Test Nilai
Nilai-1
Aksi F
Nilai-n
Nilai-2
Aksi G
Aksi H
Aksi I
c) Pemilihan Majemuk
Gambar 2.3 Struktur pemilihan.
12
c. Struktur Pengulangan
Terdiri atas suatu aksi atau sekumpulan aksi yang dikerjakan secara berulang. Terdapat 2
(dua) macam struktur pengulangan, yaitu:
1. WHILE DO
Pengulangan akan dikerjakan selama suatu kondisi dipenuhi. Kondisi ditest sebelum
pengulangan dikerjakan.
Dalam bentuk pseudocode:
WHILE kondisi DO
Aksi J
2. REPEAT UNTIL
Pengulangan dikerjakan sampai suatu kondisi tertentu dicapai. Kondisi ditest sesudah
pengulangan dikerjakan.
Dalam bentuk pseudocode:
REPEAT
Aksi K
UNTIL kondisi
3. FOR DO
Pengulangan dilakukan sesuai dengan nilai awal dan akhir yang ditentukan.
Dalam bentuk pseudocode:
FOR count Å awal TO akhir DO
Aksi L
END
Bagan dari ketiga pengulangan di atas diberikan pada Gambar 2.4 berikut:
Test
Salah
Aksi K
Benar
Aksi J
Salah
Test
Test
Aksi L
Benar
a) WHILE DO
b) REPEAT UNTIL
c) FOR DO
Gambar 2.4 Struktur pengulangan.
Untuk algoritma yang komplek, maka penyajiannya dengan menggunakan gabungan atau
perluasan dari struktur-struktur yang telah dijelaskan di atas.
Misal untuk struktur pilihan, dapat dikembangkan untuk menjadi struktur pilihan bersarang.
Dimana dengan struktur pilihan bersarang, maka suatu struktur pilihan berada di dalam suatu
struktur pilihan yang lain.
13
BAB III
TIPE, NAMA, DAN NILAI
3.1 Tipe Dasar
Tipe dasar sudah dikenal dalam kehidupan sehari-hari. Angka-angka dan karakter hampir
setiap hari dibicarakan. Dalam dunia pemrograman, yang termasuk ke dalam tipe dasar
adalah: bilangan logika, bilangan bulat, karakter, bilangan riil, dan string. Tiga tipe dasar
yang pertama disebut juga tipe ordinal karena setiap konstanta nilainya dapat ditransformasi
ke suatu nilai integer.
a. Bilangan logika
Nama tipe bilangan ini adalah Boolean. Mempunyai nilai benar atau salah. Boolean
akan menghasilkan False jika bernilai 0 dan akan menghasilkan True jika bernilai 1.
b. Bilangan bulat (integer)
Tipe data integer masih dibagi menjadi 5 (lima) tipe, yaitu:
Shortint
1 byte bertanda
-128 s.d 127
Integer
2 byte bertanda
-32.768 s.d 32.767
Longint
4 byte bertanda
-2.147.483.648 s.d 2.147.483.647
Byte
1 byte tak bertanda
0 s.d 255
Word
2 byte tak bertanda
0 s.d 65.535
c. Bilangan riil
Tipe ini berkaitan dengan bilangan real. Terdapat 5 (lima) tipe, yaitu;
Real
6 byte
± 2,9 x 10-39 s.d 1,7 x 1037
Single
4 byte
± 1,5 x 10-45 s.d 3,4 x 1038
Double
8 byte
± 5,0 x 10-324 s.d 1,7 x 10308
Extended
10 byte
± 5,0 x 10-4951 s.d 1,1 x 104932
Comp
8 byte
± 263 s.d 263 – 1 (-9,2 x 1018 s.d 9,2 x 1018)
d. Karakter
Merupakan tipe yang hanya berisi sebuah karakter, yang dapat berupa karakter apa saja.
Char adalah semua tombol yang terdapat pada keyboard atau lebih lengkapnya semua
karakter yang terdapat pada kode ASCII.
e. String
Tipe ini merupakan pengembangan dari tipe char, suatu string dapat berupa berupa
sederetan karakter. String sebenarnya bukan tipe dasar murni karena ia disusun dari tipe
karakter. Namun karena banayak dipakai dalam pemrograman, string dapat diperlakuan
sebagai tipe dasar.
3.2 Nama
Setiap obyek mempunyai nama. Di dalam algoritma, nama dipakai sebagai pengidentifikasi
sesuatu dan pemrogram mengacu sesuatu itu melalui namanya. Karena itu tiap nama haruslah
unik, tidak boleh ada dua buah nama yang sama.
Setiap bahasa pemrograman memiliki aturan yang ketat dalam mendefinisikan nama. Adapun
aturan-aturan pemberian nama diantaranya sebagai berikut:
- Nama harus dimulai dengan huruf alphabet, tidak boleh dimulai dengan angka, spasi,
atau karakter khusus lain
14
-
Huruf besar atau kecil dianggap sama
Karakter penyusun nama hanya boleh huruf alphabet, angka, dan “_” (underscore)
Tidak boleh mengandung spasi
Panjang tidak terbatas (untuk Pascal yang terbaca ialah sejumlah 63 karakter)
Contoh penamaan:
6titik
: Salah, karena dimulai dengan angka (yang benar: titik6)
nilai ujian : Salah, karena dipisahkan dengan spasi (yang benar: nilaiujian atau nilai_ujian)
PT-1
: Salah, karena mengandung operator kurang (yang benar: PT1 atau PT_1)
Hari!
: Salah, karena mengandung karakter khusus (yang benar: Hari)
3.3 Nilai
Nilai adalah besaran dari tipe data yang sudah didefinisikan. Nilai dapat berupa isi yang
disimpan oleh nama peubah atau nama konstanta, nilai dari hasil perhitungan, atau nilai yang
dikirim oleh fungsi (dijelaskan pada bab selanjutnya). Pada hakikatnya algoritma
memanipulasi nilai yang disimpan pada elemen memori. Nilai yang dikandung oleh peubah
dimanipulasi antara lain dengan cara: mengisikannya ke peubah lain yang bertipe sama,
dipakai untuk perhitungan, atau dituliskan ke piranti keluaran.
a. Pengisian nilai ke dalam nama peubah
1. Pengisian nilai secara langsung
Pengisian nilai secara langsung (assignment) adalah emasukkan sebuah nilai ke
dalam nama peubah langsung di dalam teks algoritma. Syaratnya, nilai yang diisikan
harus bertipe sama dengan peubah.
Notasi pengisian secara langsung dalam algoritma: Å
Arti notasi: nilai di sebelah kanan tanda panah dimasukkan ke dalam peubah sebelah
kiri tanda panah.
Contoh: A Å 10
(nilai A sama dengan 10)
AÅB
(nilai A sama dengan nilai B)
2. Pembacaan nilai dari piranti masukan
Nilai untuk nama peubah dapat diisi dari piranti masukan, misalnya dari keyboard.
Mengisi nilai dari piranti masukan dinamakan operasi pembacaan data. Di dalam
algoritma, instruksi pembacaan nilai untuk nama peubah dilakukan dengan notasi
read.
Notasi algoritma untuk pembacaan nilai dari piranti masukan:
read (nama1, nama2, … namaN)
dengan syarat bahwa nama1, nama2, … namaN adalah nama peubah yang sudah
didefinisikan tipenya.
b. Ekspresi
Suatu nilai dipakai untuk suatu transformasi menjadi keluaran yang diinginkan.
Transformasi nilai menjadi keluaran dilakukan melalui suatu perhitungan (komputasi).
Cara perhitungan itu dinyatakan dalam suatu ekspresi. Ekspresi terdiri atas operand dan
operator. Operand adalah nilai yang dioperasikan dengan operator tertentu. Operand
dapat berupa konstanta, nama peubah, nama konstanta, atau hasil dari suatu fungsi. Hasil
evaluasi dari sebuah ekspresi adalah nilai di dalam ranah yang sesuai dengan tipe
operand yang dipakai. Dikenal 3 (tiga) macam ekspresi: ekspresi aritmatik, ekspresi
relasional, dan ekspresi string.
- Ekspresi aritmatik
Ekspresi yang baik operand-nya bertipe numerik dan hasilnya juga bertipe numerik.
Contoh:
cÅa+b
p Å 10 + p
15
-
Ekspresi relasional
Ekspresi ini memiliki operator: <, >, ≤, ≥, =, ≠, not, and, or, dan xor. Hasil evaluasi
ekspresinya adalah nilai bertipe Boolean (true atau false).
Contoh:
2<3
(benilai true)
x=y
(bernilai true jika x dan y bernilai sama, bernilai false jika sebaliknya)
- Ekspresi string.
Merupakan ekspresi dengan operator “+” (operator penyambungan / concatenation).
Contoh:
‘A’ + ‘B’ (menghasilkan ‘AB’)
c. Memasukkan nilai ke piranti keluaran
Nilai yang disimpan oleh memori dapat ditampilkan ke pianti keluaran (misalnya layar
peraga / monitor). Instruksi penulisan nilai dilakukan dengan notasi write.
Contoh:
write (nama1, nama2, … namaN)
dengan catatan bahwa nama1, nama2, … namaN dapat berupa nama peubah atau nama
tetapan. Dengan instruksi penulisan ini, nilai yang disimpan di dalam memori dituliskan
(dicetak) ke piranti keluaran.
16
BAB IV
PEMROGRAMAN TERSTRUKTUR
DAN BAHASA PEMROGRAMAN PASCAL
4.1 Pengenalan Bahasa Pascal
Pascal adalah bahasa tingkat tinggi (high level language) yang bersifat umum dan dirancang
oleh Profesor Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama Pascal
diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan philosophi terkenal
abad ke-17, dari Perancis.
Profesor Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk
komputer CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971
dengan tujuan untuk membantu mengajar program komputer secara sistematis, khususnya
untuk memperkenalkan pemrograman yang terstruktur (structured programming).
Pemrograman terstruktur menekankan pentingnya sistematika alur program dan susunan
komponen-komponen program. Alur program yang sistematis membuat program menjadi
mudah dimengerti, mudah diperbaiki jika terjadi kesalahan (error) dan mudah dimodifikasi
atau dikembangkan. Sehingga program lebih efisien, baik dari segi waktu eksekusi maupun
dari segi pemakaian memori. Selain itu, pada pemrograman terstruktur memiliki modularitas
yang tinggi, dalam artian program dapat dengan mudah didekomposisi menjadi modul-modul
fungsional sesuai dengan keinginan pemrogram. Cara membuat program yang terstruktur
adalah dengan teknik top down, yaitu suatu cara membuat program dengan menguraikan
masalah utamanya menjadi submasalah-submasalah yang lebih kecil.
Karena bahasa Pascal memberi kemudahan dalam pembuatan program terstruktur, maka
dalam waktu yang singkat, Pascal telah menjadi bahasa yang populer di kalangan pelajar
universitas dan merupakan bahasa yang diajarkan di beberapa perguruan tinggi. Beberapa
profesional komputer juga mulai beralih ke bahasa Pascal. Kenyataannya, Pascal merupakan
bahasa yang paling cepat populer dibandingkan dengan bahasa-bahasa komputer tingkat
tinggi lainnya.
Pascal Standar adalah bahasa Pascal yang didefenisikan oleh K. Jensen dan Niklaus Wirth.
Pada kenyataannya, implementasi Pascal standar banyak yang berbeda dari apa yang telah
didefinisikan oleh K. Jensen dan Niklaus Wirth. Standar Pascal di Eropa didefenisikan oleh
ISO (International Standards Organization) dan di Amerika oleh kerjasama ANSI (American
National Standard Institute) dengan IEEE (Institute of Electrical and Electronic Engineers).
Beberapa versi Pascal telah beredar di pasaran, diantaranya UCSD Pascal (Univerisity of
California at San Diego Pascal), MS-Pascal (Microsoft-Pascal), Apple Pascal , Turbo Pascal
dan lain sebagainya. Sampai saat ini untuk komputer-komputer mikro dan personal, Turbo
Pascal merupakan versi bahasa Pascal yang paling populer dan banyak digunakan. Kompiler
Turbo Pascal banyak digemari, karena terutama bersifat interaktif, seperti interpreter saja
layaknya. Selain itu, Turbo Pascal mengikuti definisi Pascal standar K. Jansen dan Niklaus
Wirth. Copyright Turbo Pascal dipegang oleh BORLAND Inc. Turbo Pascal dan dapat
digunakan pada sistem operasi PC-DOS, MS-DOS, WINDOWS 3.11, Windows 95 (Pascal
for Windows), CPM-86 dan CP/M-80.
4.2 Elemen-elemen Bahasa Pascal
Program bahasa Pascal ditulis menggunakan elemen-elemen bahasa yang terdiri dari:
17
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Simbol-simbol dasar (basic symbols)
Pengenal yang didefinisikan oleh pamakai (user defined identifier)
Type data
Kata-kata tercadang (reserved words)
Tanda-tanda operasi (operator)
Pernyataan-pernyataan (statements)
Prosedur (procedure)
Fungsi (function)
Karakter kendali (control characters)
Komentar program (comments).
4.2.1
Simbol-simbol dasar (basic symbols)
Bahasa Pascal menggunakan simbol-simbol tertentu yang terdiri dari huruf, digit dan
karakter tanda.
ƒ Huruf-huruf
Huruf-huruf yang dapat digunakan adalah huruf A sampai dengan Z, a sampai
dengan z dan _ (garis bawah). Huruf besar dan huruf kecil dianggap sama, tidak
dibedakan.
ƒ Angka-angka
Angka-angka yang dapat digunakan adalah angka-angka 0 sampai dengan 9.
ƒ Karakter Tanda
Karakter Tanda yang dapat digunakan adalah:
+ - * / = ^ ( ) [ ] { } . , : ; ‘ # $
Beberapa karakter berpasangan juga merupakan simbol-simbol khusus, yaitu:
<= >= := .. (* *) (..)
4.2.2
Pengenal yang Didefinisikan oleh Pemakai (user defined identifier)
Pengenal (identifier) pada bahasa PASCAL digunakan untuk nama program,
prosedur, fungsi, atau type yang diinginkan oleh pembuat program. Dalam
mendefinisikan suatu pengenal dalam bahasa PASCAL haruslah mengikuti beberapa
ketentuan sebagai berikut:
ƒ Pengenal terdiri dari gabungan huruf dan angka dengan karakter pertama harus
berupa huruf, huruf besar dan huruf kecil dianggap sama
ƒ Tidak boleh mengandung spasi (blank)
ƒ Tidak boleh mengandung karakter tanda atau simbol-simbol khusus, kecuali garis
bawah
ƒ Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan.
4.2.3
Tipe Data
Untuk bisa diproses oleh komputer, data haruslah memiliki tipe tertentu sesuai
dengan tipe data yang diperbolehkan dalam bahasa pemrograman yang dipakai.
Tipe data tersebut bisa berupa tipe bawaan dari bahasa pemrograman, atau yang
didefinisikan sendiri oleh pemakai.
Jenis-jenis tipe data bawaan dalam PASCAL dan jangkauannya telah dijelaskan pada
Bab III. Sedangkan tipe data yang didefinisikan oleh pemakai :
1. Array
2. Record
3. Set
4. Enumerasi
18
Masing-masing akan dijelaskan secara lebih rinci dalam sub bab tersendiri.
4.2.4
Kata-kata Tercadang (reserved words)
Kata-kata tercadang (reserved words) adalah kata-kata yang sudah didefinisikan oleh
Pascal untuk maksud tertentu. Kata-kata tercadang tidak boleh didefinisikan ulang
oleh pamakai, sehingga tidak dapat dipergunakan sebagai pengenal. Kata-kata
tercadang tersebut antara lain:
Tabel 4.1 Daftar kata-kata tercadang dalam bahasa pemrograman Pascal.
AND
ARRAY
BEGIN
CASE
CONST
DIV
DO
DOWN TO
ELSE
4.2.5
END
FILE
FOR
FUNCTION
GOTO
IF
IN
LABEL
MOD
NIL
NOT
OF
OR
PACKED
PROCEDURE
PROGRAM
RECORD
REPEAT
SET
THEN
TO
TYPE
UNTIL
VAR
WHILE
WITH
Tanda-tanda Operasi (Operator)
Untuk mengubah nilai suatu data, diperlukan operasi tertentu. Ada banyak jenis
operator di dalam bahasa Pascal, namun tidak semuanya kita bicarakan di sini.
Beberapa jenis operasi yang penting dan operator nya ditunjukkan pada tabel berikut
Tabel 4.2 Operator dalam bahasa pemrograman Pascal.
Operasi
Operator Tipe data
Contoh
Hasil
ASSIGNMENT
:=
real,
integer
A := 5.2;
B=7;
nilai A
adalah 5.2
nilai B
adalah 7
ARITMATIK
Penambahan
+
Pengurangan
-
real,
integer
real,
integer
integer
real
integer
A+ 2.
B + 3
A – 3.7;
B – 4
C = B div 2
D = A / 5
C MOD 2
nilai
nilai
nilai
nilai
nilai
nilai
nilai
real,
integer,
char
real,
integer,
char
real,
integer,
char
real,
integer,
char
real,
integer,
‘a’ < ‘b’
benar
‘Z’ < ‘b’
salah
235 >= 235
benar
235 <= 236
benar
235 = 240
salah
Pembagian
Pembagian
Modulus
(sisa pembagian)
RELASIONAL
lebih besar
Div
/
MOD
>
lebih kecil
<
lebih besar atau
sama dengan
>=
Lebih kecil atau
sama dengan
<=
sama dengan
=
A
B
A
B
C
D
C
=
=
=
=
=
=
=
7.2
10
3.5
6
3
0.7
1
19
Tidak sama
<>
char
real,
integer
BOOLEAN
Logika AND
AND
Boolean
OR
NOT
Boolean
Boolean
-
real,
integer
real,
integer
Boolean
Logika OR
Negasi data
UNARY
Mengalikan data
dengan –1
Mengalikan data
dengan +1
Negasi data
4.2.6
+
NOT
235 <> 235
salah
False AND
True
False OR True
NOT False
False
A := -5;
-A;
A := -5; +A;
True
True
nilai A = 5
nilai A = -5
A := False,
NOT A
True
Pernyataan-pernyataan (statements)
Pernyataan-pernyataan dalam program adalah perintah-perintah dalam badan
program untuk menyelesaikan suatu masalah tertentu. Bila suatu program Pascal
tidak mengandung pernyataan atau disebut dengan pernyataan kosong, maka tidak
akan ada yang dikerjakan oleh program. Pernyataan-pernyatan dituliskan di bagian
badan program diantara kata tercadang BEGIN dan END.
Ada beberapa jenis pernyataan di dalam PASCAL, antara lain: Pernyataan
penunjukan (assignment), Pernyataan pengendalian program, dan Pernyataan
pemanggilan fungsi atau prosedur. Contoh untuk masing-masing jenis pernyataan
ditunjukkan di bawah.
Pernyataan penunjukkan
x := b*b – 4*a*c;
Pernyataan pengendalian program
for K := 1 to 10 do j := k+10;
Pernyataan pemanggilan fungsi
pangkat(a,b);
Pernyataan pemanggilan prosedur
bacadata(‘data.dat’);
4.2.7
Prosedur (procedure)
Prosedur memiliki susunan yang sama dengan sebuah program. Bedanya, prosedur
selalu diawali dengan kata tercadang PROCEDURE, bukan PROGRAM. Kompiler
Pascal akan mengkompilasi prosedur secara hierarki. Suatu prosedur bisa memanggil
prosedur atau fungsi yang lain yang berada di atasnya dalam file yang sama.
Pembahasan lebih dalam tentang prosedure akan disajikan pada bab tersendiri.
4.2.8
Fungsi (function)
Fungsi memiliki susunan yang sama dengan sebuah program. Sebuah fungsi selalu
diawali dengan kata tercadang Function, bukan PROGRAM. Suatu fungsi bisa
memanggil prosedur atau fungsi yang lain yang berada di atasnya dalam file yang
sama. Pembahasan lebih dalam tentang fungsi akan disajikan pada bab tersendiri.
4.2.9
Karakter Kendali (control characters)
Pascal memiliki karakter-karakter kendali untuk dilekatkan di dalam suatu string.
Dua buah notasi digunakan untuk karakter kendali, yaitu: Simbol # (diikuti nilai 0
sampai 255) dan Simbol ^ yang diikuti karakter. Beberapa diantara karakter kendali
20
tersebut adalah carriage return (OD16), linefeed (0A16), formfeed (0C16), tab (0916)
dan backspace (0816).
4.2.10 Komentar Program (comments)
Komentar program ini diberikan untuk keperluan dokumentasi, sehingga program
lebih mudah untuk dipahami. Komentar-komentar ini tidak mempengaruhi proses di
dalam program. Komentar program dapat diletakkan di manapun di dalam program.
Komentar program ditulis dengan pembatas { dan } atau pembatas (* dan *).
4.3 Struktur Program Pascal
Awal setiap pernyatan dalam program Pascal bisa ditulis pada kolom ke berapapun.
Penulisan pernyataan-pernyataan program yang menjorok masuk beberapa kolom tidak
mempunyai pengaruh pada proses kompilasi ataupun eksekusi. Hal ini hanya dimaksudkan
untuk mempermudah pembacaan program, sehingga akan lebih terlihat bagian-bagiannya.
Penggunaan huruf besar maupun kecil dalam penulisan program juga tidak dibedakan.
Misalnya, variabel ‘Luas’ akan sama dengan variabel ‘luas’.
Struktur dari suatu program Pascal terdiri dari sebuah judul program (program heading) dan
suatu blok program (program block). Blok program dibagi lagi manjadi dua bagian, yaitu
bagian deklarasi (declaration part) dan bagian badan program yang berisi pernyataanpernyataan (statements). Bagian deklarasi dapat tersusun atasi deklarasi label (labels
declaration), deklarasi konstanta (constants declaration), deklarasi tipe (type declaration),
deklarasi variabel (variables declaration), deklarasi prosedur (procedures declaration) dan
deklarasi fungsi (functions declaration).
Untuk mempermudah bagaimana membuat program PASCAL, struktur program PASCAL
disajikan sebagai berikut:
PROGRAM <nama program>
LABEL <deklarasi>
CONST <deklarasi>
TYPE <deklarasi>
VAR <deklarasi>
PROCEDURE dan FUNCTION <deklarasi>
BEGIN
<pernyataan
<pernyataan
<pernyataan
.
.
.
<pernyataan
END.
4.3.1
>;
>;
>;
>;
Bagian Nama Program
Pembuatan program dalam bahasa PASCAL ada baiknya dimulai dengan memberi
nama program, meskipun sifatnya adalah optional dan tidak signifikan. Hal ini
dilakukan untuk memberi tahu pada compiler bahwa program dimulai dari sini.
Nama yang dipakai untuk suatu program harus memenuhi aturan nama pengenal dan
harus diakhiri dengan titik koma. Nama program tidak harus sama dengan nama file
21
yang dipakai untuk menyimpan program. Contoh penamaan program adalah sebagai
berikut:
PROGRAM Hitung_Luas;
4.3.2
Bagian Deklarasi Label
Bagian yang muncul setelah nama program adalah bagian deklarasi label. Bagian ini
terdiri dari reserved word LABEL diikuti dengan nama label anada. Label adalah
tanda yang ada pada suatu program dimana pernyataan GOTO akan menuju. Label
bisa berupa angka non-negatif, atau kata-kata. Masing-masing harus unik, tidak
boleh ada yang sama. Contoh deklarasi label adalah sebagai berikut:
LABEL 50, 80, 100, 200.
Meskipun label bisa digunakan dalam bahasa PASCAL, sangat disarankan untuk
menghindari penggunaan LABEL. Bilamana program anda tidak menggunakan label,
maka bagian ini ditiadakan.
4.3.3
Bagian Deklarasi Konstanta
Bilamana anda ingin menggunakan suatu konstanta dalam program, maka diperlukan
deklarasi konstanta. Konstanta adalah suatu nilai yang diciptakan pada saat kompilasi
dan tidak pernah berubah selama program dijalankan.
Dekalarasi konstanta terdiri dari pengenal konstan (constant’s identifier) dan
nilainya, yang dipisahkan oleh simbol =. Berikut ini adalah contoh dari bagian
deklarasi konstanta:
CONST
MAX = 99999;
Prog_Studi = ‘Ilmu Komputer’;
Benar = True;
4.3.4
Bagian Deklarasi Tipe
Bagian yang berada setelah deklarasi konstanta adalah bagian deklarasi type. Bagian
ini terdiri dari reserved word TYPE diikuti dengan deklarasi type yang anda
inginkan. Deklarasi type berupa pengenal type dan deklarasinya yang dipisahkan
dengan tanda “=”. Pascal memiliki beberapa tipe seperti Integer, Boolean,
Char, Byte dan Real.
Disamping itu anda bisa membuat type sendiri yang tersusun dari type-type di atas,
atau subrange dari tipe-tipe tersebut. Lebih dari itu anda bisa membuat type baru
yang tersusun dari type-type yang telah anda definisikan.
Compiler akan
mengetahuinya, karena type-type penyusunnya telah dideklarasikan sebelumnya, dan
telah terkompilasi pada saat pernyataan type ditemukan.
TYPE
Bil_Pecahan = Real;
Nilai_Akhir = ‘A’..’E’;
Karakter = Char;
Kalimat = String[10];
22
4.3.5
Bagian Deklarasi Variabel
Deklarasi variabel tersusun atas reserved word VAR, diikuti dengan nama variabel.
Variabel yang akan dipakai harus memiliki tipe yang valid, baik berupa tipe-tipe
yang telah didefinisikan oleh bahasa Pascal sendiri (Integer, Real, Char, Boolean,
dsb) atau type baru yang kita definisikan. Tidak seperti deklarasi tipe, deklarasi
variabel menggunakan tanda “:” untuk memisahkan nama variabel dan typenya.
Contoh dari deklarasi variabel adalah
VAR
Gaji : Real;
K : Integer;
Yes : Boolean;
4.3.6
Bagian Definisi Prosedur dan Fungsi
Setelah semua variabel anda deklarasikan, anda perlu mendefinisikan prosedur
(procedure) atau fungsi (functions) yang akan dipakai dalam program. Jika program
anda tidak memerlukan prosedur atau fungsi, bagian ini tidak diperlukan. Dalam
bentuk miniatur program, prosedure dan fungsi memiliki susunan yang sama dengan
program itu sendiri, kecuali bahwa prosedur dan fungsi selalu diawali dengan kata
PROCEDURE atau FUNCTION, bukan PROGRAM.
Kompiler Pascal akan mengkompilasi prosedur dan fungsi secara hierarki. Suatu
prosedur atau fungsi bisa memanggil suatu prosedure atau fungsi yang lain yang
berada di atasnya dalam file yang sama. Pembahasan lebih dalam tentang prosedure
dan fungsi akan disajikan pada bab tersendiri. Berikut ini adalah contoh dari
pendefinisian prosedur Tambah
PROCEDURE Tambah;
Var
A,B,C: Real;
BEGIN
Writeln (‘ Masukkan harga A: ‘,A);
Writeln (‘ Masukkan harga B: ‘,B);
C := A + B;
Writeln (‘ Hasil penambahan: ‘,C);
END;
4.3.7
Bagian Program Utama
Program utama selalu berada pada bagian terbawah dari file program. Setelah semua
bagain deklarasi didefinisikan, menyusul berikutnya adalah badan program. Badan
program selalu diawali dengan kata tercadang BEGIN dan diakhiri dengan kata END
dan titik.
Ketika komputer menjalankan program yang telah terkompilasi, ia akan memulai
tidak dari atas file program, tetapi dari kata BEGIN yang mengawali program utama,
dan akan mengakhiri pada saat mencapai END di akhir program. Pada saat
menjalankan program, komputer akan menjalankan semua tugas-tugas yang harus
dikerjakan, termasuk memanggil prosedur-prosedur atau fungsi-fungsi yang ada pada
23
program sesuai dengan aliran program. Berikut ini adalah contoh dari program
utama
PROGRAM Luas_Lingkaran;
Const
Phi = 3.14;
Var
Luas : Real;
jejari : Real;
BEGIN
Writeln(‘Masukkan jejari lingkaran : ‘,jejari);
Luas = Phi * R * R;
Write(‘Luas lingkaran dengan jari-jari ‘,jejari);
Writeln(‘ adalah ‘,Luas);
END.
4.4 Statemen Masukan dan Keluaran (Input/Output)
Untuk memasukkan data dari keyboard komputer, digunakan perintah READ ataupun
READLN. Perintah READ memiliki bentuk
READ(<nama variabel>,<nama variabel>…<nama variabel>);
Deretan nama-nama variabel di atas biasanya disebut daftar variabel masukan (input variable
list). Setiap variabel yang digunakan pada pernyataan READ harus sudah dideklarasikan.
Nama-nama yang telah dideklarasikan pada pernyataan CONST tidak dapat dimasukkan
dalam pernyataan READ tersebut. Berikut ini adalah contoh dari pernyataan READ
READ(umur, no_ktp)
Pernyataan ini memberitahu komputer untuk mencari daftar data masukan, yang dalam
contoh ini berupa umur dan no_ktp hingga nilai data untuk setiap variabel dalam daftar
variabel masukan ditemukan.
Perintah READLN merupakan bentuk khusus dari pernyataan READ. Setiap kali pernyataan
ini dijalankan, dia akan membaca nilai data mulai dari baris baru. Pengaruh apa yang akan
terjadi pada nilai-nlai data, dapat kita lihat pada contoh berikut ini. Bila data masukan
berupa
46 23
17
64 92 27
16 25 48 90
dan diberikan pernyataan-pernyataan sebagai berikut:
READLN(nomor, umur);
READLN(nomor,umur);
READLN(nomor,umur);
24
Pernyataan READLN yang pertama akan menghasilkan nilai 46 untuk variabel nomor dan
23 untuk variabel umur. READLN yang kedua akan menghasilkan nilai 17 untuk variabel
nomor, dan 64 untuk umur. READLN yang ketiga akan memberikan nilai 16 kepada
variabel nomor, dan 25 kepada variabel umur.
Pernyataan READLN biasa juga digunakan tanpa menyebutkan daftar variabel masukan.
Hal ini biasanya dipakai untuk menghentikan suatu tampilan dilayar, agar tampilan bisa
dilihat sepuas-puasnya. Bila telah puas mengamati hasil di tampilan, pemrogram bisa
mengetikkan sembarang karakter untuk kembali ke program.
Keluaran dalam bahasa Pascal dilakukan dengan menggunakan pernyataan WRITE dan
WRITELN. Pernyataan WRITE digunakan untuk menampilkan hasil-hasil program, dan
dituliskan dalam bentuk
WRITE(<pengenal:format>, …, <pengenal:format>);
dimana pengenal dapat dapat berupa string, nama variabel, hasil perhitungan atau konstanta.
Format menyatakan bentuk penulisan keluaran. Bentuk format yang sering dipakai untuk
bilangan real adalah bentuk ruang:presisi dimana ruang menyatakan banyaknya spasi yang
dipakai untuk mencetak bilangan sedangkan presisi menyatakan banyaknya digit di belakang
titik desimal.
String adalah sekumpulan karakter yang berada diantara tanda petik, misalnya string
‘Tinggi:’ dalam contoh dibawah. Keluaran konstanta dapat berupa nilai yang telah
dideklarasikan pada bagian CONST atau suatu nilai yang ditulis secara eksplisit dalam
pernyataan WRITE. Bagian program berikut ini
CONST
Tinggi = 150.0;
BEGIN
WRITE(‘Tinggi: ‘, Tinggi:7:2, 150);
END.
akan menghasilkan
Tinggi:
150.00
150
Pernyataan WRITE menghasilkan apa yang dikenal dengan ‘deretan keluaran’ (stream
output), dalam arti bahwa pernyataan WRITE yang kemudian akan menghasilkan keluaran
pada baris yang sama dengan yang dihasilkan oleh pernyataan WRITE sebelumnya.
Pernyataan
WRITE(‘Tinggi : ‘, Tinggi, 150);
akan mempunyai efek yang sama dengan pernyataan-pernyataan:
WRITE(‘Tinggi : ‘);
WRITE(Tinggi);
WRITE(150);
Berbeda dengan pernyataan WRITE, pernyataan WRITELN akan menghasilkan keluaran
yang selalu dituliskan pada baris baru. Sebagai contoh, pernyataan-pernyataan
25
WRITELN(‘Tinggi : ‘);
WRITELN(150);
akan menghasilkan keluaran berupa:
Tinggi :
150
Pernyataan WRITELN sering dituliskan tanpa menggunakan variabel. Hal ini ditujukan
untuk membuat baris kosong. Misalnya pernyataan-pernyatan:
WRITELN(‘Tinggi : ‘);
WRITELN;
WRITELN(150);
akan menghasilkan keluaran:
Tinggi :
150
26
BAB V
STRUKTUR PEMROGRAMAN / STRUKTUR KONTROL
Seperti telah disebutkan sekilas pada Bab II, ada 3 (tiga) macam struktur dasar pemrograman
yaitu :
1. Berurut / Runtutan / Sequential
2. Pemilihan / Seleksi / Conditional
3. Pengulangan / Repetition / Looping
Berikut penjelasan dari masing-masing struktur dasar di atas:
5.1 Berurut / Runtutan / Sequential
Berfungsi mengontrol program sehingga berjalan secara berurutan. Program dibaca dari
mulai perintah yang pertama dituliskan kemudian turun ke perintah selanjutnya demikian
seterusnya sampai pada akhir perintah. Secara umum program akan dibaca oleh compailer
secara terurut.
Contoh :
Program_Selisih_Jam;
Uses crt;
var j1,j2,m1,m2,d1,d2,B1,B2,J,M,S,Delta,sisa: integer;
begin
clrscr;
write('Baca jam mulai =');readln(j1,m1,d1);
writeln;
write('Baca jam selesai =');readln(j2,m2,d2);
B1 := 3600 * j1 + 60 * m1 + d1;
B2 := 3600 * j2 + 60 * m2 + d2;
Delta := B2 - B1;
J
:= Delta div 3600;
Sisa := Delta mod 3600;
M
:= sisa div 60;
S
:= sisa mod 60;
write('Selisih jam =',J);
writeln;
write('Selisih menit =',M);
writeln;
write('Selisih detik =',S);readln;
end.
Hasil Run program:
Baca jam mulai = 3 23 29
Baca jam selesai = 4 30 27
Selisih jam = 1
Selisih menit = 6
Selisih detik =58
Catatan : Tanda (:= ) disebut sebagai Operator Penugasan.
27
5.2 Pemilihan / Seleksi / Conditional
Sistem kontrol ini memungkinkan programmer untuk membuat program yang dapat memilih
satu langkah di antara sejumlah langkah untuk dikerjakan.
Dalam Turbo Pascal disediakan 2 buah struktur kontrol seleksi, yaitu:
a. Struktur IF … THEN …
Merupakan struktur kontrol di mana suatu aksi dilaksanakan berdasarkan kondisi
logikanya (benar atau salah). Bentuk umum :
if (kondisi) then aksi;
{Jika kondisi benar maka aksi akan dilaksanakan dan sebaliknya }
if (kondisi) then aksi1 else aksi2 ;
{Jika kodisi benar maka aksi1 diaksanakan, jika kondisi salah maka aksi2 akan
dilaksanakan}
if (kondisi1) then aksi1 else
if (kondisi2) then aksi2 else
......
if (kondisi-n) then aksi-n ;
{Jika kondisi1 benar maka aksi1 dilaksanakan tanpa membaca kondisi2 dan
seterusnya. Jika kondisi1 salah maka aksi2 dilaksanakan tanpa membaca
aksi3 dan selanjutnya, demikian seterusnya}
if (kondisi1) then aksi1 ;
if (kondisi2) then aksi2 ;
......
if (kondisi-n) then aksi-n ;
{Masing-masing kondisi akan dibaca dan aksi akan tetap dilaksanakan. Jadi
masing-masing struktur terpisah satu dengan yang lain}
Contoh program :
program_menghitung_akar_kwadrat:
uses crt;
var A,B,C:integer;
x1,x2,D:real;
begin
clrscr;
write('Baca koofisien:');readln(A,B,C);writeln;
writeln(A,'x*x + (',B,') x +',C);
if A=0 then writeln('Bukan persamaan kwadrat') else
begin
D:=(B*B) - (4*A*C);
writeln('Determinannya :',D:2:2);readln;
if D>0 then
begin
writeln('Persamaan kwadrat mempunyai 2 akar yang berbeda');
x1:= (-B + sqrt(D))/(2*A);
x2:= (-B - sqrt(D))/(2*A);
writeln('Akar-akarnya adalah:',x1:2:2,'dan',x2:2:2);
end
else
if D=0 then
begin
writeln('Persamaan kwadrat mempunyai akar yang sama');
x1:= -B/(2*A);
x2:= -B/(2*A);
28
writeln('Akar-akanya adalah:',x1:2:2);
end
else
writeln('Tidak memiliki akar riil');
end;
readln;
end.
Hasil Run Program :
Baca koofisien: 1 -4 4
1x*x + (-4) x +4
Determinannya :0.00
Persamaan kwadrat mempunyai akar yang sama
Akar-akanya adalah:2.00
Baca koofisien: 1 -5 6
1x*x + (-5) x +6
Determinannya :1.00
Persamaan kwadrat mempunyai 2 akar yang berbeda
Akar-akarnya adalah:3.00dan2.00
Baca koofisien: 1 3 4
1x*x + (3) x +4
Determinannya :-7.00
Tidak memiliki akar riil
Program_Konversi_nilai:
Uses Crt;
var Nilai : Byte;
begin
clrscr;
write('Baca nilai :');readln(Nilai);
if nilai>=80 then write('Nilai = A') else
if nilai>=65 then write('Nilai = B') else
if nilai>=41 then write('Nilai = C') else
if nilai>=26 then write('Nilai = D') else
write('Nilai = E');
readln;
end.
Hasil Run Program :
Baca nilai
Nilai = A
Baca nilai
Nilai = B
Baca nilai
Nilai = C
Baca nilai
Nilai = E
: 90
:75
:55
:25
29
b. Struktur CASE … OF …
Merupakan peluasan dari struktur IF. Karena kalau dalam struktur IF hanya disediakan
dua pilihan (berdasarkan kondisi logikanya) maka dalam struktur Case ..of dimungkinkan
untuk memilih satu pilihan di antara banyak pilihan yang ada. Bentuk umumnya :
Case
var.pilih of
Pilih1 : aksi1 ;
Pilih2 : aksi2 ;
... ;
pilih-n : aksi-n ;
atau
end;
Case
var.pilih
of
pilih1 : aksi1 ;
pilih2 : aksi2 ;
... ;
pilih-n : aksi n;
else aksi-n+1
end;
Catatan: Ekspresi yang digunakan dalam statemen Case adalah yang mempunyai tipe
ordinal yaitu dengan batas antara (-32768 s/d 32767). Sehingga tipe lain seperti
integer yang bertipe longint, tipe string atau word tidak boleh digunakan.
Contoh program :
Program_Konversi_nilai2;
Uses Crt;
Var Nilai : integer;
begin
Clrscr;
write('Baca nilai =');readln(Nilai);
Case Nilai of
0..25 : writeln('Nilainya = E');
26..39 : writeln('Nilainya = D');
40..64 : writeln('Nilainya = C');
65..79 : writeln('Nilainya = B');
80..100: writeln('Nilainya = A');
else
writeln('Tidak ada nilai yang dimaksud');
end;readln;
end.
Catatan: Program ini akan memberikan nilai yang sama persis dengan yang
menggunakan struktur IF.
5.3 Pengulangan / Repetition / Looping
Dalam membuat suatu program kadang-kadang diinginkan agar program tersebut mampu
memproses hal yang sama secara berulang-ulang sampai ditemukan suatu nilai tertentu yang
diinginkan atau mencapai batas yang telah ditentukan. Untuk itu maka Turbo Pascal telah
menyediakan suatu struktur perulangan yang memudahkan untuk melakukan proses tersebut,
sehingga kode-kode dalam program menjadi lebih sederhana.
Ada beberapa struktur perulangan, yaitu :
a. Struktur FOR … DO …
Ada 2 jenis struktur FOR, yaitu :
1. Ascendant (Naik)
Format : For count := awal to akhir do aksi/ blok aksi ;
Catatan : - awal ≤ akhir
- variabel count akan naik satu setelah menyelesaikan aksi
2. Descendant (Turun)
30
Format : For count := awal downto akhir do aksi1/ blok aksi ;
Catatan : - awal ≥ akhir
- variabel count akan turun satu setelah menyelesaikan aksi
Struktur FOR hanya dpat digunakan pada cacah perulangan yang diketahui
(berapa kali perulangan tersebut akan dilakukan).
Contoh program :
Program Latihan:
uses Crt;
var N,i,j :integer;
Program Latihan2:
uses Crt;
var N, I, j, data : integer;
begin
clrscr;
write('Baca nilai : ');readln(N);
for i:= 1 to N do
begin
for j:=1 to i do
write(i:3);
writeln;
end;
readln;
end.
begin
clrscr;
write(‘Baca nilai:’);
readln(N);Data:=N;
for i:=1 to N do
begin
for j:=1 to N do
write(data:3);
writeln;
data := data-1;
end;
end.
Hasil Run Program :
Hasi Run Program :
Baca nilai : 7
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7
Baca nilai : 7
7
6 6
5 5 5
4 4 4 4
3 3 3 3 3
2 2 2 2 2 2
1 1 1 1 1 1
7
1
b. Struktur WHILE … DO ...
Format : While (kondisi) do Aksi / blok aksi
Kondisi : Ekspresi Boolean
Pengecekan untuk melakukan perulangan dilakukan pada awal proses dan perulangan
akan dikerjakan selama kondisi benar. Oleh karena itu, perlu adanya suatu proses yang
dapat mengontrol kondisi agar dapat menghentikan proses.
Contoh program :
uses crt;
var i:integer;
begin
clrscr;
write('Masukkan angka :');readln(i);
while i<5 do
begin
write('Matematika Undip');
i:=i+1;
end;
readln;
end.
31
Hasil Run program :
Masukkan angka :1
Matematika Undip Matematika Undip Matematika Undip Matematika Undip
Matematika Undip
Keterangan:
Program di atas akan dilaksanakan jika angka yang kita masukkan kurang dari
atau sama dengan lima, dan dalam program di atas yang bertugas menghentikan
perulangan adalah proses i:= i+1; sebab jika tidak ada statement itu, apabila angka
yang kita masukkan benar <= 5 maka program akan berulang sampai tak hingga banyak.
Catatan :
Struktur perulangan WHILE … DO dapat digunakan untuk melakukan
perulangan baik yang diketahui maupun yang tidak diketahui jumlah perulangannya.
c. Struktur REPEAT … UNTIL ...
Format : Repeat aksi/ blok aksi until (kondisi) ;
(kondisi) di sini berupa Boolean.
Perulangan dilakukan terus-menerus hingga diperoleh kondisi bernilai benar. Dalam hal
ini pun diperlukan adanya kondisi yang dapat mengontrol program agar program dapat
berhenti namun berbeda dengan while do yang kontrolnya ditempatkan pada awal proses,
maka repeat until kontrolnya diletakkan pada akhir proses.
Contoh program :
PROGRAM CONTOH_REPEAT;
Uses crt;
var
n,tot,x: integer;
Mean: real;
begin
clrscr;
tot:=0;
n:=0;
write ('Baca data :');readln(x);
repeat
tot:= tot + x;
n:= n + 1;
write('Data lagi :');readln(x);
until x=0;
end.
Hasil Run Program :
Baca
Data
Data
Data
Data
data
lagi
lagi
lagi
lagi
:12
:3
:4
:5
:0
{setelah dimasukkan nol maka pembacaan akan berhenti dan akan kembali ke menu
awal}
32
BAB VI
TIPE DATA LARIK (ARRAY)
Array atau larik terdiri atas bagian-bagian komponen yang memiliki tipe data sama. Dalam
penyimpanannya array selalu mempunyai jumlah komponen yang tetap yang ditunjukkan oleh
indeksnya. Dimana indeks ini harus merupakan data dengan tipe ordinal artinya mempunyai
urutan tertentu.
Dari penjelasan di atas, sebuah larik (array) dapat diilustrasikan sebagai berikut :
1
2
3
4
…..
i
…..
n
X
X adalah data bertipe larik dengan komponen sebanyak n
Ada 2 (dua) cara untuk mendeklarasikan larik yaitu :
1. Sebagai tipe data baru
Type Larik = Array [1..n] of
Var x : larik ;
datatype ;
2. Langsung sebagai variabel
Var x : Array [1..n] of datatype ;
6.1 Mengakses Data Larik
Cara mengakses data larik adalah dengan menunjukkan:
Nama_Larik[no.indeks];
Misal:
x[1] → berarti kita mengakses data larik x pada no.indeks ke-1.
6.2 Kelebihan dan kekurangan
Kelebihan dari menggunakan tipe data larik adalah bahwa kita tidak akan kehilangan nilai
dari suatu data.
Sedangkan kelemahan dari menggunakan tipe data ini diantaranya saat ditentukan suatu
variabel bertipe data array maka ia akan langsung mengambil tempat pada memory
penyimpanannya sesuai dengan tipe data yang digunakan pada array, baik nantinya semua
komponen pada array itu digunakan ataupun tidak. Dengan kata lain, hal ini akan
menyebabkan pemborosan memory.
6.3 Larik Berdimensi n x n
Dalam pemrograman kadang kita menghadapi masalah saat kita akan mendeklarasikan suatu
matriks dengan adanya tipe data array maka masalah itu dapat diselesaikan, yaitu dengan
menggunakan array dengan dimensi dua atau lebih yang kemudian dikenal dengan array
dimensi banyak.
Pendeklarasian:
33
Type Nama_Array = Array[tipe-indeks1,tipe-indeks2] of tipe data ;
Contoh:
Type Matriks = Array[1..10, 1..10] of
integer ;
Berarti matriks itu akan mempunyai dimensi (10x10), namun itu hanya batas atas dari indeks
yang dipesan dalam memori penyimpanan (di atas itu tidak akan disimpan), sedangkan
apabila nantinya kita hanya memasukkan jumlah baris missal 2 dan jumlah kolom 2 itu boleh
saja selama tidak lebih dari 10.
Entry-entry dari matriks tersebut dapat kita panggil dengan mengetikkan:
Nama_Array[indeks];
dari contoh di atas berarti Matriks[2,3] yaitu entry dari matriks pada baris ke-dua kolom
ke-tiga.
Contoh program:
Program Rata_rata;
Uses crt;
type
larik = array[1..10] of integer;
var
x : larik;
Tot, i, n : integer;
mean : real;
Begin
clrscr;
write('Masukkan jumlah data : '); readln(n);
writeln;
Tot := 0;
for i:= 1 to n do
begin
write('Masukkan Data ke-',i,' ', 'Anda : ');
readln(x[i]);
Tot:= Tot + x[i];
end;
writeln;
mean:= Tot/n;
write('Dan hasil perhitungan meannya : ');
writeln(mean:8:2);
readln;
end.
Hasil Run Program:
Masukkan jumlah data : 5
Masukkan Data ke-1 Anda : 1
Masukkan Data ke-2 Anda : 2
Masukkan Data ke-3 Anda : 3
Masukkan Data ke-4 Anda : 4
Masukkan Data ke-5 Anda : 5
Dan hasil perhitungan meannya :
3.00
34
Program Matriks:
Program Baca_tulis_matriks ;
uses crt;
Var m,n,i,j : integer;
x: Array[1..100,1..100] of integer;
begin
clrscr;
write('Baca ukuran baris Matriks :',' ');readln(m);
write('Baca ukuran kolom matriks :',' ');readln(n);
writeln('Matriks anda berukuran',' ',m,'x',n,' ');
for i:=1 to m do
for j:=1 to n do
begin
write('Baca nilai :',' ');readln(x[i,j]);
end;
writeln;
writeln('Matriksnya :',' ');
for i:=1 to m do
begin
for j:=1 to n do
write(x[i,j]:3); writeln;
end;
writeln;writeln('Matriks tranposenya :',' ');
for j:= 1 to n do
begin
for i:=1 to m do
write(x[i,j]:3);writeln;
end;
writeln;
writeln('Matriks anda berukuran',' ',n,'x',m,' ');
readln;
end.
Hasil Run Program:
Baca ukuran baris Matriks : 2
Baca ukuran kolom matriks : 2
Matriks anda berukuran 2x2
Baca nilai : 1
Baca nilai : 2
Baca nilai : 3
Baca nilai : 4
Matriksnya :
1 2
3 4
Matriks tranposenya :
1 3
2 4
Matriks anda berukuran 2x2
35
BAB VII
TIPE DATA RECORD
Tipe data ini merupakan perluasan dari tipe data Array, yaitu karena pada array masing-masing
komponennya harus menggunakan tipe data yang sama, maka pada record hal itu tidak berlaku
lagi. Artinya diperbolehkan untuk menggunakan tipedata yang berbeda pada masing-masing
komponen (field) dari record tersebut.
7.1 Pendeklarasian record:
Type
Nama_record = record
Field1: tipe_data1;
Field2: tipe_data2;
...
...
Fieldn: tipe_datan;
End;
Contoh:
Type
Barang = record
Nama
: string[20] ;
Jenis : string [20]
Jumlah : integer ;
End;
7.2 Memasukkan data ke dalam record :
Untuk memberikan nilai dari masing-masing field maka kita harus menuliskan:
Nama_record.field := (nilainya);
Misalkan dari contoh di atas kita akan mengisikan nama barang dengan Piring, jenis barang
yaitu barang pecah belah dan jumlah barang 3 lusin maka kita harus menuliskan pada
program utama:
Barang.Nama
:= ‘Piring’;
Barang.Jenis := ‘Pecah belah’;
Barang.Jumlah := 36;
Nilai-nilai dari field ini akan disimpan dalam record. Untuk melihat apakah benar data yang
dimasukkan telah tersimpan dalah record maka pada var kita deklarasikan suatu variable
misal:
X : array[1..n] of
Nama_record;
dari soal di atas yaitu:
X : array[1..n] of Barang;
Maka apabila nanti kita lakukan pemanggilan dengan mengetikkan
Write(Barang[i].nama);
data dari field yang tersimpan dalam record tersebut akan ditampilkan.
36
Contoh program:
PROGRAM DATABASE;
Uses crt;
TYPE mahasiswa=record
Nama
: array[1..20]
nim
: array[1..20]
alamat : array[1..20]
ipk
: array[1..20]
end;
of
of
of
of
string;
string;
string;
real;
VAR data1: mahasiswa;
PROCEDURE data(var mhs:mahasiswa; mhs1:mahasiswi);
Var
i,n,no:integer;
pilih,tekan:char;
Begin
write('Masukan jumlah mahasiswa : ');readln(n);
writeln;
for i:= 1 to n do
begin
writeln('Masukan data mahasiswa ke - ',i);
writeln;
write('Nama Mahasiswa
: ');readln(mhs.nama[i]);
write('No. Mahasiswa
: ');readln(mhs.nim[i]);
write('Alamat Mahasiswa : ');readln(mhs.alamat[i]);
write('IPK
: ');readln(mhs.ipk[i]);
writeln;
end;
writeln;
writeln('DATA MAHASISWA');
writeln;
writeln('==========================================================');
writeln('|','No':5,'Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('==========================================================');
for i:=1 to n do
writeln('|',i:5,mhs.nama[i]:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs.ipk[i]:1
0:2, '|':2);
writeln('==========================================================');
writeln;
write('Ingin mencari data tertentu (y/n) ? ');readln(pilih);
writeln;
case pilih of
'y': begin
tekan:='Y';
while upcase(tekan)='Y' do
begin
clrscr;
writeln;
writeln('MENU PILIHAN');
writeln;
writeln('[1] NAMA');
writeln('[2] NIM');
writeln('[3] ALAMAT');
writeln('[4] IPK');
writeln;
write('Pilihan anda : ');readln(no);
case no of
1: begin
write('Masukan Nama Mahasiswa : ');readln(mhs1.nama);
writeln;
37
writeln('=========================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=========================================================');
for i:=1 to n do
if (mhs1.nama) = (mhs.nama[i]) then
begin
writeln('|',mhs1.nama:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs.ipk[i]:10:2
, '|':2);
end;
writeln('=========================================================');
writeln;
end;
2: begin
write('Masukan No. Mahasiswa : ');readln(mhs1.nim);
writeln;
writeln('=========================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=========================================================');
for i:=1 to n do
if (mhs1.nim) = (mhs.nim[i]) then
begin
writeln('|',mhs.nama[i]:20,mhs1.nim:10,mhs.alamat[i]:20,mhs.ipk[i]:10:2
,'|':2);
end;
writeln('==========================================================');
writeln;
end;
3: begin
write('Masukan Alamat Mahasiswa : ');readln(mhs1.alamat);
writeln;
writeln('=========================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=========================================================');
for i:=1 to n do
if (mhs1.alamat) = (mhs.alamat[i]) then
begin
writeln('|',mhs.nama[i]:20,mhs.nim[i]:10,mhs1.alamat:20,
mhs.ipk[i]:10 :2,'|':2);
end;
writeln('=========================================================');
writeln;
end;
4: begin
write('Masukan IPK : ');readln(mhs1.ipk);
writeln;
writeln('=======================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=======================================================');
for i:=1 to n do
if (mhs1.ipk) = (mhs.ipk[i]) then
begin
writeln('|',mhs.nama[i]:20,mhs.nim[i]:10,mhs.alamat[i]:20,
mhs1.ipk: 10:2,'|':2);
end;
writeln('=======================================================');
writeln;
end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);
writeln;
end;end;end;end;
38
{====================PROGRAM UTAMA========================}
BEGIN
clrscr;
data(data1,data2);
readln;
end.
Hasil Run Program :
Masukan jumlah mahasiswa : 4
Masukan data mahasiswa ke - 1
Nama Mahasiswa
: Tumpal PS
No. Mahasiswa
: 8051
Alamat Mahasiswa : KalBar
IPK
: 3.5
Masukan data mahasiswa ke - 2
Nama Mahasiswa
: Sri Sunarwati
No. Mahasiswa
: 8244
Alamat Mahasiswa : Klaten
IPK
: 3.4
Masukan data mahasiswa ke - 3
Nama Mahasiswa
: Putu Eka A
No. Mahasiswa
: 8239
Alamat Mahasiswa : Bali
IPK
: 3.3
Masukan data mahasiswa ke - 4
Nama Mahasiswa
: Timotius N
No. Mahasiswa
: 8299
Alamat Mahasiswa : Tegal
IPK
: 3.5
DATA MAHASISWA
======================================================================
|
No
Nama
NIM
Alamat
IPK
|
======================================================================
| 1
Tumpal PS
8051
KalBar
3.50
|
| 2
Sri Sunarwati
8244
Klaten
3.40
|
| 3
Putu Eka A
8239
Bali
3.30
|
| 4
Timotius N
8299
Tegal
3.50
|
======================================================================
Ingin mencari data tertentu (y/n) ? y
MENU PILIHAN
[1]
[2]
[3]
[4]
NAMA
NIM
ALAMAT
IPK
Pilihan anda : 1
Masukan Nama Mahasiswa : Tumpal PS
======================================================================
|
Nama
NIM
Alamat
IPK
|
======================================================================
|
Tumpal PS
8051
KalBar
3.50
|
======================================================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
39
[4] IPK
Pilihan anda : 2
Masukan No. Mahasiswa : 8299
======================================================================
|
Nama
NIM
Alamat
IPK
|
======================================================================
|
Timotius N
8299
Tegal
3.50
|
======================================================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 3
Masukan Alamat Mahasiswa : Bali
======================================================================
|
Nama
NIM
Alamat
IPK
|
======================================================================
|
Putu Eka A
8239
Bali
3.30
|
======================================================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 4
Masukan IPK : 3.4
======================================================================
|
Nama
NIM
Alamat
IPK
|
======================================================================
|
Sri Sunarwati
8244
Klaten
3.40
|
======================================================================
40
BAB VIII
TIPE DATA FILE
8.1 Pengertian
Seringkali pada program-program aplikasi untuk sistem informasi, data perlu disimpan untuk
keperluan penegelolaan lebih lanjut. Bila data yang perlu disimpan mempunyai volume yang
cukup besar, maka penggunaan variabel maupun larik sudah tidak tepat lagi, karena variabel
dan larik menggunakan memori internal komputer, sehingga tidak cukup untuk
menampungnya. Variabel dan larik hanya tepat digunakan untuk menyimpan data yang
sedang digunakan untuk proses saja.
Untuk menyimpan data dengan volume yang besar harus digunakan cara yang lain, yaitu
dapat dengan menyimpannya di external memory yang relatif mempunyai kapasitas
penyimpanan lebih besar daripada internal memory serta involatile (tidak hilang bila aliran
listrik terputus, sehingga dapat menyimpan data lebih permanen).
Data yang ada di external memory disimpan dalam bentuk file. File ini dapat diibaratkan
dengan map-map yang berisi dengan data di filling cabinet dan filling cabinet itu sendiri
dapat diibaratkan sebagai simpanan luarnya. Seperti halnya filling cabinet yang dapat
menyimpan beberapa map, demikian juga dengan disk dapat menyimpan beberapa file.
Suatu file terdiri dari urutan komponen yang mempunyai tipe yang sama. Berbeda dengan
larik yang jumlah komponennya sudah pasti, jumlah komponen dalam file sifatnya luwes,
yaitu dapat ditambah dan dikurangi sewaktu-waktu.
File terdiri atas sekumpulan record yang sejenis. Data di dalam file disimpan secara
permanen atau tetap, yaitu di dalam media penyimpanan eksternal misalnya disket atau
hardisk. Keuntungan penggunaan file ialah tersedianya data yang dapat digunakan untuk
berbagai proses, dan berulangkali dibaca tanpa harus mengetikkan data setiap kali
digunakan.
Di dalam Pascal terdapat 3 (tiga) macam file, yaitu:
a. File bertipe
Merupakan jenis file yang mengharuskan menyebut tipe komponen file sebelum
dilakukan akses.
b. File teks
Merupakan file yang elemennya berupa baris. File teks dibuat dengan menggunakan
editor teks.
c. File tak-bertipe
Merupakan file yang diakses tanpa menyebutkan tipe file. File bertipe maupun file teks
dapat diakses melalui file tak-bertipe.
Untuk selanjutnya akan dibicarakan file bertipe.
41
Assign (f:file;name:string)
: digunakan untuk menghubungkan nama dari external
file
ke suatu variabel file.
Rewrite (f[:file; recsize:word]): digunakan untuk membuka file yang baru atau yang belum
pernah ada di disk.
Reset (f[:file; recsize:word]) : digunakan untuk membuka file yang sudah ada.
Close (f:file)
: digunakan untuk menutup file yang telah dibuka dengan
procedure standard Rewrite, Reset, atau Append (procedure
khusus untuk membuka file teks).
Erase (f:file)
: digunakan untuk menghapus suatu external file. Dalam
penggunaanya harus didahului dengan procedure standard
Close.
Rename (f:file;newname:string): digunakan untuk mengganti nama suatu external file.
GetDir (d:byte; var s:string) : digunakan untuk mengetahui direktori yang aktif pada suatu
drive.
ChDir (s:string)
: digunakan untuk mengubah posisi dari direktori.
MkDir (s:string)
: digunakan untuk membuat suatu direktori.
RmDir (s:string)
: digunakan untuk menghapus suatu direktori.
Eof (f:file):boolean
: fungsi ini akan menghasilkan status apakah file sudah
berada di posisi akhir dari file atau tidak.
File Teks
File tekas merupakan file yang berisi karakter yang dibentuk dalam baris-baris dan
masing-masing baris dengan end-of-line marker berupa karakter carriage return dan karakter
line feed (CR/LF). Sedangkan akhir dari file ditunjukkan dengan karakter Ctrl-Z.
Panjang dari tiap-tiap baris dari file teks dapat berbeda-beda, sehingga posisi dari suatu
baris tertentu dari file teks tidak dapat dihutung dan akibatnya file tekas hanya dapat diakses
secara urut.
File teks sebenarnya merupakan file dengan tipe Char, tetapi mempunyai perbedaan,
yaitu nilai yang bukan tipe Char dapat direkam dan dibaca oleh file teks. Nilai yang bukan tipe
Char ini akan secara otomatis dirubah ke atau dari tipe Char.
Deklarasi
var
variabelFile : Text;
begin
…
end.
42
Prosedur dan Fungsi Standard File Teks
Append(var f:text);
: digunakan untuk membuka file yang telah ada untuk
keperluan menambah data ke dalam file.
Write([var f:text;] v1 [v2,…,vn])
: digunakan untuk merekam data ke dalam file.
Writeln([var f:text;] v1 [v2,…,vn]) : digunakan untuk merekam data ke dalam file dan
memberikan end-of-line marker.
Flush(var f:text)
: digunakan untuk segera merekam data yang ada di
dalam buffer ke dalam file teks.
Read([var f:text;] v1 [v2,…,vn])
: digunakan untuk membaca satu atau lebih nilai dari
file ke dalam satu variabel atau lebih.
Readln([var f:text;] v1 [v2,…,vn]) : kegunaannya sana dengan procedure Read, tetapi
procedure ini akan menggeser pembacaan ke awal baris
beikutnya dalam file.
Eoln[(var f:text)]:boolean
: digunakan untuk mengetahui apakah posisi dari file
berada di end-of-line marker atau tidak.
SeekEof[(var f:text)]:boolean
: kegunaannya sama dengan Eof, yaitu menghasilkan
status akhir dari file.
SeekEoln[(var f:text)]:boolean
: kegunaannya sama dengan Eoln, yaitu menghasilkan
status akhir dari baris.
Contoh program:
Membuat file teks baru
uses Crt;
var
berkasText
kodeBrg
namaBrg
unitBrg
hargaBrg
lagi
:
:
:
:
:
:
Text;
String[5];
String[20];
Integer;
Real;
Char;
begin
{hubungkan dengan external file}
Assign(berkasText,'Barang.txt');
{buka file}
Rewrite(berkasText);
Lagi:='Y';
while upCase(Lagi)='Y' do
begin
clrScr;
gotoxy(5,6) ;Write('Kode Barang
gotoxy(5,8) ;Write('Nama Barang
gotoxy(5,10);Write('Unit Barang
: ');
: ');
: ');
43
gotoxy(5,12);Write('Harga Satuan Barang : ');
gotoxy(27,6) ;readln(kodeBrg);
gotoxy(27,8) ;readln(namaBrg);
gotoxy(27,10);readln(unitBrg);
gotoxy(27,12);readln(hargaBrg);
{rekam di file}
Writeln(berkasText,kodeBrg:5,namaBrg:20,unitBrg,hargaBrg:10:2);
gotoxy(5,15);write('Ada data lagi (Y/T)? ');readln(lagi);
end;
{tutup file}
close(berkasText);
end.
Menampilkan semua isi file
uses Crt;
var
berkasText
kodeBrg
namaBrg
unitBrg
hargaBrg
:
:
:
:
:
Text;
String[5];
String[20];
Integer;
Real;
begin
{hubungkan dengan external file}
Assign(berkasText,'Barang.txt');
{buka file}
Reset(berkasText);
clrScr;
While not(Eof(berkasText)) do
begin
Readln(berkasText,kodeBrg,namaBrg,unitBrg,hargaBrg);
Writeln(kodeBrg,namaBrg:22,unitBrg:7,hargaBrg:10:2);
end;
{tutup file}
close(berkasFile);
end.
File Bertipe
Berbeda dengan file teks yang hanya dapat diakses secara urut, file bertipe (typed file)
disamping dapat juga diakses secara urut (sequential access), dapat juga dikases secara acak
(random access). Ini berarti komponen-komponen di dalam file bertipe dapat dibaca atau
direkam dari manapun di dalam file.
44
Dalam file bertipe, kita dapat menambahkan variabel terdefinisi dalam unit standard
System untuk menentukan kode akses file bertipe. Adapun kode aksesnya adalah:
0 – read only
1 – write only
2 – read/write (default)
Deklarasi
var
fileData : File of tipeData;
begin
…
end.
tipeData dapat berupa integer, real, char, string, array, record, dan sebagainya.
Prosedur dan Fungsi Standard File Bertipe
Write (f,v1[v2,…,vn])
: digunakan untuk merekam satu atau lebih nilai ke
dalam file.
Read (f,v1[v2,…,v3])
: digunakan untuk membaca satu atau lebih nilai dari
file.
Seek (f; n : longint)
: digunakan untuk mengarhkan penunjuk file ke suatu
komponen tertentu, sehingga memungkinkan kita untuk
membaca komponen atau menuliskan komponen secara
acak.
Truncate(f)
: digunakan untuk menghapus sejumlah komponen atau
record mulai dari posisi record tertentu.
FilePos(f):longint
: digunakan untuk menghasilkan letak posisi sekarang
dari penunjuk file.
FileSize(f):longint
: digunakan untuk menghasilkan jumlah dari komponen
atau record yang sudah ada di file. Fungsi ini harus
digunakan setelah file dibuka.
Contoh Program:
Membuat file bertipe (typed file) baru
uses crt;
type
mahasiswa
nomor :
nama :
nilai :
= record
integer;
string[25];
real;
45
end;
var
fileMhs : File of mahasiswa;
recordMhs : mahasiswa;
lagi : char;
begin
assign(fileMhs,'MHS.dat');
rewrite(fileMhs);
lagi:='Y';
while upcase(lagi)='Y' do
begin
clrscr;
with recordMhs do
gotoxy(5,6) ;write('Nomor Mahasiswa
gotoxy(5,8) ;write('Nama Mahasiswa
gotoxy(5,10);write('Nilai Mahasiswa
: ');
: ');
: ');
gotoxy(27,6) ;read(nomor);
gotoxy(27,8) ;read(nama);
gotoxy(27,10);read(nilai);
end;
write(fileMhs,recordMhs);
gotoxy(5,15);write('Memasukkan data lagi (Y/T)? ');
readln(lagi);
end;
close(fileMhs);
end.
Menampilkan semua data di file bertipe
uses crt;
type
mahasiswa
nomor :
nama :
nilai :
end;
= record
integer;
string[25];
real;
var
fileMhs : File of mahasiswa;
recordMhs : mahasiswa;
begin
assign(fileMhs,'MHS.dat');
rewrite(fileMhs);
while not(Eof(fileMhs)) do
begin
read(fileMhs,recordMhs);
with recordMhs do
write(nomor:5,nama:17,nilai:10:2);
end;
46
close(fileMhs);
end.
File Tak Bertipe
File tak bertipe (untyped file) adalah channel I/O (Input/Output) level rendah (low
level I/O channel) yang digunakan untuk mengakses langsung suatu file di disk tidak peduli
bagaimana tipe dan strukturnya.
Deklarasi
FileData : File;
Karena file tak bertipe tidak memandang tipe dan struktur filenya, maka file tak
bertipe ini sifatnya kompatibel dengan file apapun dan tepat digunakan untuk operasioperasi mengecek keberadaan suatu file di dalam disk, menghapus suatu file, mengganti
nama dari suatu file, menyalin suatu file, dan operasi-operasi lainnya yang tidak langsung
melibatkan operasi I/O.
Prosedur dan fungsi standard yang dapat digunakan di file bertipe dapat juga
digunakan di file tak bertipe, kecuali prosedur standard Read dan Write yang diganti dengan
prosedur standard BlockRead dan BlockWrite. Kedua prosedur ini digunakan untuk transfer
data dengan kecepatan tinggi.
BlockRead(var f:file;var buf;countword[;result:word]);
BlockWrite(var f:file;var buf;countword[;result:word]);
Contoh Program
Mengganti nama file di disk
var
fileGantiNama : file;
fileLama, fileBaru : string[139];
begin
write('Nama file yang akan diganti? ');readln(fileLama);
write('Nama file baru
? ');readln(fileBaru);
if (fileLama = '') or (fileBaru = '') then halt;
Assign(fileGantiNama,fileLama);
{$I-} Rename(fileGantiNama,fileBaru);
{$I+};
if IOResult <> 0 then
writeln('Salah, file TIDAK DITEMUKAN atau nama baru TELAH ADA')
else
writeln('file telah diganti namanya');
end.
47
Sebagai contoh misal data dari sejumlah mahasiswa disimpan dalam file sebagai berikut:
APRILIA WULANDARI
ALI MUNTORO
IMAN SANTOSO
…
FARIDA ARYANI
W
P
P
…
W
3.76
3.50
2.98
…
3.25
110
106
99
…
102
Field
Field
Field
Field
Å Record
Å Record
Å Record
File
Å Record
8.2 Deklarasi File
Untuk mendeklarasikan file digunakan cara yang hampir sama dengan cara mendeklarasikan
array record. Contoh deklarasi untuk file di atas ialah sebagai berikut:
Type
RecMahasiswa = Record
Nama
: string[20];
Jenis_kel
: char;
Ipk
: real;
Jml_skl
: integer;
End;
Var
DataMahasiswa
OneRecord
: File of RecMahasiswa;
: RecMahasiswa;
Nama variabel filenya adalah DataMahasiswa, dan nama variabel recordnya ialah
OneRecord. RecMahasiswa menjelaskan field-field dari OneRecord dan tipe data masingmasing field tersebut.
Deklarasi di atas dapat juga ditulis dengan:
Type
RecMahasiswa = Record
Nama
: string[20];
Jenis_kel
: char;
Ipk
: real;
Jml_skl
: integer;
End;
File_Mhs = File of RecMahasiswa;
Var
DataMahasiswa
: File_Mhs;
OneRecord
: RecMahasiswa;
Untuk deklarasi yang diberikan terakhir, tipe dari variabel dikumpulkan di satu tempat, yaitu
di bagian deklarasi type.
8.3 Langkah Operasi File Bertipe
Secara umum, langkah-langkah yang diperlukan untuk mengoperasikan file bertipe ialah
sebagai berikut:
a. Mengaitkan variabel file dengan nama file (secara fisik) pada media penyimpanan
b. Membuka file
c. Memproses file, yang dapat berupa:
ƒ Pembacaan file (secara random atau sequential)
48
ƒ Merekam data
ƒ Mengganti data
d. Menutup file
Untuk lebih, berikut akan diberikan uraian lebih rinci mengenai implementasi dari langkahlangkah tersebut.
8.3.1
Mengaitkan variabel file dengan nama file
Di dalam pemrosesan file, cara mengacu file ialah dengan melalui variabel file.
Untuk ini digunakan prosedur Assign sebagai berikut:
Procedure assign(var f; NamaFile: string);
f
: Nama variabel file
NamaFile : Merupakan nama file pada media penyimpanannya
Misal file yang berisi data mahasiswa di atas disimpan dalam disket dengan nama
mhs.dat. Untuk memberitahukan kepada Pascal mengenai file yang akan digunakan
untuk proses (nama file yang dikenalkan kepada program dan nama file dalam
disket), maka digunakan pemanggilan prosedur sebagai berikut:
Assign(data_mhs,’mhs.dat’);
Artinya dengan menyebut data_mhs di dalam program, maka yang dimaksud ialah
file dengan nama mhs.dat.
8.3.2
Membuka file
Sebelum memulai menggunakan file, perlu diberikan perintah untuk membuka file
tersebut terlebih dahulu. Terdapat 2 (dua) kondisi yang berkaitan dengan proses
membuka file, yaitu:
a. File belum ada, sehingga perlu dibuat terlebih dahulu dan kemudian baru dibuka.
Prosedur yang digunakan untuk kondisi ini ialah:
Procedure rewrite(var f);
Jika file yang disebutkan namanya sudah ada, maka dengan prosedur rewrite
akan menyebabkan isi file akan hilang.
b. File sudah ada, dan cukup hanya membukanya saja.
Deklarasi yang digunakan untuk keperluan membuka file yang sudah ada ialah
dengan menuliskan reset berikut:
Reset(var f);
Dengan deklarasi reset isi file yang dibuka tidak akan dihapus.
8.3.3
Memproses file
Terdapat beberapa kegiatan pemrosesan file, diantaranya adalah:
49
a. Membaca data
Untuk membaca data digunakan prosedur Read, dengan bentuk deklarasi sebagai
berikut:
Procedure Read(f, v1, v2, …, vn)
f
: variabel file
v1, v2, …, vn : variabel yang sesuai dengan tipe komponen file
b. Merekam data
Untuk merekam data digunakan prosedur Write, dengan bentuk sebagai berikut:
Procedure Write(f, v1, v2, …, vn)
Penjelasan masing-masing komponen sama dengan untuk Read.
c. Memeriksa akhir file
Pembacaan file pada umumnya dilakukan dari record ke record yang berikutnya.
Untuk memeriksa apakah ada record yang diproses, digunakan funrsi End Of File
(EOF), dengan bentuk fungsi sebagai berikut:
Function Eof(var f): Boolean;
dengan f adalah vaiabel file.
Hasil evaluasi dari fungsi ini adalah:
True : kalau posisi file berada pada akhir file
False : kalalu posisi file tidak berada pada akhir file
8.3.4
Menutup file
Untuk keperluan ini, digunakan posedur Close, dengan deklarasi sebagai berikut:
Close(var f);
Berikut adalah contoh perintah yang digunakan untuk menunjuk file yang akan
diproses, membuka, dan menutup file dengan nama File_Mahasiswa.
Assign(data_mhs,’mhs.dat’);
Rewrite(data_mhs);
...
...
...
Close(data_mhs);
{penunjukkan file ke disk}
{membuat dan membuka file}
{Proses file}
{Menutup file}
8.4 Contoh Penggunaan File
Berikut akan diberikan contoh program sederhana yang digunakan untuk membaca file yang
berisi data sejumlah mahasiswa.
Data mahasiswa terdiri ats nomor induk (5 karakter), dan nama (20 karakter). Data dari
sejumlah mahasiswa telah direkam ke dalam file, kemudian isi file tersebut akan dibaca dan
dicetak dengan format sebagai berikut:
50
DAFTAR MAHASISWA
----------------------------------NO INDUK
NAMA
----------------------------------XXXXX
XXXXXXXXXXXXXXXXXXXX
.....
....................
.....
....................
-----------------------------------
Misal file tersebut disimpan dengan nama mhs.dat. Nama variabel file adalah data_mhs, dan
nama variabel recordnya ialah OneRecord.
File yang berisi sejumlah mahasiswa tersebut perlu dibuat terlebih dahulu dengan
menggunakan program atau diketik dengan editor biasa. Jika digunakan program, isi
program untuk membuat file mhs.dat (dengan isi 5 record) ialah sebagai berikut;
Program Contoh1(input, output);
Uses crt;
Const jml_rec = 5;
Type
RecMahasiswa = Record
Noinduk
: string[5];
Nama
: string[20];
End;
File_Mhs = File of RecMahasiswa;
Var
DataMahasiswa
: File_Mhs;
OneRecord
: RecMahasiswa;
i
: Integer;
Begin
Clrscr;
Assign(Data_mhs,’mhs.dat’);
Rewrite(Data_Mhs);
{berikut proses mengisikan 5 data mahasiswa ke dalam file}
for i:= 1 to Jml_rec do
Begin
With OneRecord do
Begin
Writeln;
Writeln(‘Record ke- ‘,i:2);
Writeln(‘No Induk : ‘); Readln(noinduk);
Writeln(‘Nama
: ’); Readln(Nama);
End;
Write(Data_Mhs,OneRecord);
End;
Close(Data_Mhs);
Readln;
End;
Untuk menyimpan data 5 mahasiswa, program di atas dijalankan. Kemudian untuk
menampilkan isi file mhs.dat ialah:
Program Contoh2(input, output);
Uses crt;
Type
RecMahasiswa = Record
Noinduk
: string[5];
Nama
: string[20];
End;
File_Mhs = File of RecMahasiswa;
Var
51
DataMahasiswa
: File_Mhs;
OneRecord
: RecMahasiswa;
Begin
Clrscr;
Assign(Data_mhs,’mhs.dat’);
Reset(Data_Mhs);
Writeln(‘
DAFTAR MAHASISWA
’);
Writeln(‘-----------------------------------‘);
Writeln(‘ NO INDUK
NAMA
‘);
Writeln(‘-----------------------------------‘);
{
berikut ini adalah proses pembacaan file per record, mulai dari record
pertama, kemudian dicetak isiny. Proses diteruskan ke record-record
berikutnya sampai isi file habis
}
While not Eof(Data_Mhs) do
Begin
Read(Data_Mhs,OneRecord);
With OneRecord do Writeln(‘ ‘,Noinduk,’
‘,nama);
End;
Writeln(‘-----------------------------------‘);
Close(Data_Mhs);
Readln;
End;
Program di atas dapat dijalankan jika file dengan nama mhs.dat telah disiapkan terlebih
dahulu. Pada saat dilakukan pembacaan seluruh isi file, tidak perlu disebutkan jumlah record
dalam file yang dibaca, akan tetapi cukup dengan menggunakan fungsi End Of File atau
Eof().
52
BAB IX
SUBPROGRAM
Catatan ini akan membahas mengenai “Pemrograman Modular“. Di mana pemrograman modular
ini merupakan salah satu kemudahan yang diberikan oleh Turbo Pascal terhadap programmer,
karena di sini programmer dapat membagi program yang sedang dibuatnya ke dalam modulmodul program tertentu. Sehingga dapat menghindari penulisan teks program yang sama berkalikali dan dapat juga memudahkan dalam melakukan pelacakan kesalahan dalam program yang
sedang dibuatnya.
Semakin besar / kompleks permasalahan yang diselesaikan dengan komputer, semakin panjang
program komputernya. Untuk itu diperlukan subprogram yang bisa berupa procedure atau
function. Procedure adalah merupakan program bagian (subprogram). Sedangkan subprogram
adalah seperti “program” akan tetapi berada di dalam program.
Procedure / function ada 2 (dua) macam, yaitu:
ƒ Procedure Pustaka, yaitu procedure yang sudah disediakan oleh kompilernya sehingga
programmer tidak perlu membuatnya sendiri, contoh procedure pustaka adalah antara lain
CLRSCR, GOTOXY(..,..), dll.
ƒ Procedure user defined, yaitu procedure yang dibuat oleh user / programmer dalam rangka
agar programnya menjadi terstruktur.
Ciri-ciri program yang terstruktur adalah:
a. Program mudah dipahami.
b. Program mudah diperbaiki jika terjadi kesalahan (error)
c. Program mudah dimodifikasi atau dikembangkan.
Cara membuat program yang terstruktur adalah dengan teknik top down, yaitu suatu cara
membuat program dengan menguraikan masalah utamanya menjadi submasalah-submasalah
yang lebih kecil. Sebagai contoh masalah menentukan modus dari n data dapat diuraikan
menjadi submasalah-submasalah sebagai berikut:
MASALAH UTAMA (TOP)
BACA n DATA
URUTKAN DATA
TENTUKAN MODUS
TENTUKAN FREKUENSI
CETAK MODUS
TENTUKAN MAKSIMUM
FREKUENSI
Dari uraian masalah menjadi submasalah-submasalah di atas, akan dibuat beberapa contoh
prosedur yaitu antara lain:
a.
b.
c.
d.
e.
Procedure BacaData
Procedure UrutkanData
Procedure TentukanFrekuensi
Procedure MaximumFrekuensi
Procedure CetakModus
53
Masing-masing procedure di atas mempunyai algoritma sendiri yang diharapkan lebih mudah
dicari atau ditentukan karena permasalahannya menjadi lebih sempit. Dengan demikian
diharapkan program menjadi terstruktur, hal ini dapat dilihat / ditinjau dari ciri-ciri program
terstruktur.
Adapun ciri-ciri program terstruktur adalah sebagai berikut :
1. Program mudah dipahami.
Dengan membuat procedure-procedure di atas, maka bentuk program utamanya kurang lebih
sebagai berikut:
Begin
BacaData(X,n);
UrutkanData(X,n);
TentukanFrekuensi(X,n,Y,F,m);
MaximumFrekuensi(F,m,Max);
CetakModus(Y,F,m,max);
End.
Terlihat lebih mudah untuk di pahami maksud dari program utama di atas.
2. Program mudah diperbaiki jika terjadi kesalahan (error)
Jika terdapat error, baik sintax error, running error ataupun output error, maka akan mudah
ditelusuri dimana letak errornya apakah pada proses BacaData, UrutkanData atau pada waktu
menentukan frekuensi.
3. Program mudah dimodifikasi atau dikembangkan.
Seandainya akan dilakukan modifikasi atau pengembangan program, akan lebih mudah,
misalkan akan dimodifikasi bagian tampilan input atau output, atau akan diganti algoritma
untuk mengurutkan datanya dengan algoritma yang lebih cepat, semua dapat dilakukan
dengan lebih mudah.
Cara Membuat Procedure
A. Letak Procedure
Procedure dibuat di dalam program menempati bagian kepala program, kepala program
berisi deklarasi atau pengenalan baik pengenalan variabel, tipe, unit, konstanta, procedure
dan function. Sedangkan badan program berisi program utama atau pokok program. Untuk
lebih jelasnya dapat dilihat pada struktur lengkap program pascal sebagai berikut:
Program Nama_program;
Uses ...... {CRT/WinCrt, Dos, WinDos, dll.);
Const
Nama_konstanta = ....;
Type
Nama_Tipe = .......;
Var
Nama_Variabel : .....;
Kepala program
Procedure Nama_Procedure;
Var nama_var : .....;
begin
------end;
54
BEGIN
---------------END.
Badan program
B. Input Output Procedure
Procedure mirip seperti program sehingga juga mempunyai input dan / atau output. Input
procedure bisa langsung dimasukkan pada waktu procedure dipanggil, atau bisa melalui
parameter / variabel. Output procedure bisa berupa action yang dilakukan oleh procedure
atau bisa melalui parameter / variabel.
Sebagai contoh:
1. Procedure BacaData
Input
: data yang langsung dimasukkan pada waktu procedure tersebut dipanggil.
Output : ariabel array X dan variabel banyaknya data n.
Sehingga kepala procedurenya adalah:
Procedure BacaData(Var X : larik;Var n : integer);
2. Procedure TentukanFrekuensi
Input
: variabel array X (data ada yang sama) dan jumlah data n.
Output : variabel array Y (data berbeda semua) dan F (frekuensi) serta variabel
banyaknya data yang berbeda semua m.
Sehingga kepala procedurenya adalah :
Procedure TentukanFrekuensi(X:larik;n:integer;Var Y,F:larik;
Var m : integer);
Dari contoh di atas terlihat bahwa parameter pada procedure ada yang menggunakan kata
Var, ada yang tidak menggunakannya. Jika variabelnya merupakan input saja maka tidak
menggunakan Var, akan tetapi jika variabelnya merupakan ouput maka menggunakan
Var.
C. Badan Procedure
Badan procedure berisi perintah utama dari procedure tersebut, sehingga harus tahu
algoritma dari procedure tersebut. Sebagai contoh:
Type larik = array[1..1000] of integer;
Var X : Laik; n : integer;
Procedure BacaData(Var X : larik; Var n : integer);
Var i : integer;
Begin
Write(‘ Masukkan banyak data : ‘); Readln(n);
For i:= 1 to n do
Begin
Write(‘ masukkan data ke : ‘, i ,’ = ‘);Readln(X[i]);
End;
End;
55
Procedure UrutkanData(Var X : larik; n : integer);
Var i,j,C : integer;
Begin
For i:= 1 to n-1 do
For j:=i+1 to n do
If X[i] > X[j] then
Begin
C
:= X[i];
X[i] := X[j];
X[j] := C;
End;
End;
Procedure TentukanFrekuensi(X:larik;n:integer;Var Y,F:larik;
Var m : integer);
Var i,j : integer;
Begin
For i:= 1 to n do F[i]:=1;
X[n+1] :=X[n]+1; j:=1;
For i:=1 to n do
If X[i] = X[i+1] then F[j] := F[j] + 1
else
begin
Y[j] := X[i]; j := j + 1;
End;
m := j -1;
end;
Procedure MaximumFrekuensi(F: Larik;m: integer;Var Max: integer);
Var i : integer;
Begin
Max := X[1];
For i:= 2 to n do
If F[i] > Max then Max := F[i];
End;
Procedure CetakModus(Y,F : Larik;m,max:integer);
Var i : integer;
Begin
If Max = 1 then writeln(‘Tidak ada modusnya’)
Else
begin
Writeln(‘Modusnya adalah : ‘);
For i:= 1 to m do
If F[i] = Max then writeln(Y[i]);
End;
End;
Secara lengkap program untuk menentukan modus dari n data adalah sebagai berikut:
Program Modus;
Uses Crt;
Type larik = array[1..1000] of integer;
Var X,Y,F : Laik; m,n,max : integer;
Procedure BacaData(Var X : larik;Var n : integer);
Var i : integer;
Begin
Write(‘ Masukkan banyak data : ‘); Readln(n);
For i:= 1 to n do
begin
Write(‘ masukkan data ke : ‘, i ,’ = ‘);Readln(X[i]);
56
End;
End;
Procedure UrutkanData(Var X : larik; n : integer);
Var i,j,C : integer;
Begin
For i:= 1 to n-1 do
For j:=i+1 to n do
If X[i] > X[j] then
Begin
C := X[i]; X[i] := X[j]; X[j] := C;
End;
End;
Procedure TentukanFrekuensi(X:larik;n:integer;Var Y,F:larik;
Var m : integer);
Var i,j : integer;
Begin
For i:= 1 to n do F[i]:=1;
X[n+1] :=X[n]+1; j:=1;
For i:=1 to n do
If X[i] = X[i+1] then F[j] := F[j] + 1
else
begin
Y[j] := X[i]; j := j + 1;
End;
m := j -1;
end;
Procedure MaximumFrekuensi(F: Larik;m: integer;Var Max: integer);
Var i : integer;
Begin
Max := X[1];
For i:= 2 to n do
If F[i] > Max then Max := F[i];
End;
Procedure CetakModus(Y,F : Larik;m,max:integer);
Var i : integer;
Begin
If Max = 1 then writeln(‘Tidak ada modusnya’)
Else
Begin
Writeln(‘Modusnya adalah : ‘);
For i:= 1 to m do
If F[i] = Max then writeln(Y[i]);
End;
End;
Begin
BacaData(X,n) ;
UrutkanData(X,n);
TentukanFrekuensi(X,n,Y,F,m);
MaximumFrekuensi(F,m,Max);
CetakModus(Y,F,m,max);
End.
Ada 2 jenis pemograman modular yang dibahas dalam praktikum ini, yaitu :
1. Procedure (Prosedur)
2. Function (Fungsi)
57
9.1 Procedure
Deklarasi:
Procedure NamaProcedure(DaftarParameter) ;
{Deklarasi}
Begin
.............
.............
.............
End;
Pemanggilan Procedure:
Suatu procedure bukan merupakan program yang berdiri sendiri, sehingga tidak dapat
dieksekusi secara langsung. Untuk itu suatu procedure memerlukan sebuah akses pada
program utama / modul lain yang befungsi sebagai pemanggil. Sedangkan cara
pemanggilannya adalah dengan menuliskan nama procedurenya berikut parameternya (jika
ada).
Hal-hal yang berhubungan dengan procedure:
Ada beberapa hal yang berhubungan dengan penulisan sebuah procedure program yaitu:
1. Variabel global dan variabel lokal
Variabel global adalah variabel yang dapat dikenali diseluruh bagian program biasanya
variabel ini merupakan variabel yang dideklarasikan pada deklarasi
program umum.
Variabel lokal adalah variabel yang dikenal pada lingkup yang lebih sempit dari pada
variabel global.
2. Parameter
Ada 2 (dua) parameter yang berlaku dalam sebuah procedure, yaitu:
a. Parameter Formal
Yaitu parameter yang dideklarasikan mengikuti pendeklarasian program utama.
b. Paramete Aktual
Yaitu parameter yang dituliskan mengikuti pemanggilan procedure.
Aturan antara parameter formal dan parameter aktual:
1) Banyaknya parameter aktual harus sama dengan banyaknya parameter formal
2) Tiap-tiap parameter aktual harus bertipe sama dengan parameter formal yang
bersesuaian
3) Tiap-tiap parameter aktual harus diekspresikan yang sesuai dengan parameter formal.
Pengiriman parameter:
a. Pengiriman parameter secara nilai (by Value)
- Tiap-tiap parameter dalam procedure utama akan berisi nilai yang dikirim oleh
parameter aktual dan bersifat lokal di procedure
- Pengiriman nilai parameter secara by value merupakan pengiriman searah,
artinya hanya dari parameter aktual ke parameter formal
- Perubahan parameter formal tidak mempengaruhi terhadap nilai parameter aktual
58
Contoh :
Procedure Hitung(A,B,C : integer) ;
Begin
B: = A;
C: = A + B ;
Writeln(A,B,C);
End;
Var X, Y, Z : integer ;
Begin
Readln(X); Readln(Y); Readln(Z);
Hitung(X,Y,Z); Writeln(X,Y,Z) ;
Readln;
End.
Keterangan:
Misalkan dimasukkan nilai dari X=5, Y=7 dan Z=15 maka nilai ini akan dikirim ke
parameter formal pada procedure yaitu A, B, C sehingga nilai awal A=5, B=7 dan
Z=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=5, Y=7 dan
Z=15. Sebab apapun yang diproses pada procedure tidak akan mempengaruhi nilai
dari parameter aktual X, Y, Z.
b. Pengiriman parameter secara acuan (by Reference)
- Merupakan pengiriman dua arah yaitu dari parameter aktual ke parameter formal
dan dari parameter formal ke parameter aktual sebagai hasil output dari
procedure
- Perubahan nilai pada parameter formal mempengaruhi pada parameter aktual
- Dicirikan dengan pengunaan deklarasi VAR , pada parameter procedurenya.
Contoh:
Procedure Hitung(Var A,B,C : integer);
Begin
B: = A;
C: = A + B ;
Writeln(A,B,C) ;
End;
Var X,Y,Z : integer;
Begin
Readln(X) ; Readln(X) ; Readln(X) ;
Hitung(X,Y,Z) ; Writeln(X,Y,Z) ;
Readln ;
End.
Keterangan :
Misalkan dimasukkan nilai dari X=5, Y=8 dan Z=15 maka nilai ini akan dikirim ke
parameter formal pada procedure yaitu A, B, C sehingga nilai awal A=5, B=8 dan
C=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=A=5,
Y=B=A=5 dan Z=C=10. Sebab apapun yang diproses pada procedure akan
mempengaruhi nilai dari parameter aktual X, Y, Z.
59
Contoh program yang menggunakan procedure:
Program KOMBINASI;
uses crt;
var f1,f2,f3:longint;
n,r,delta:integer;
c: real;
Procedure facto(n:integer; var f:longint);
var i:integer;
begin
f:=1;
for i:=1 to n do
f:= f * i;
end;
{===============================PROGRAM UTAMA============================}
Begin
clrscr;
gotoxy(12,3);
write('Kita akan menghitung nilai kombinasi dari suatu angka');
gotoxy(19,4);
writeln('Yang mempunyai rumus : rCn = n!/(r!(n-r)!)'); gotoxy(20,5);
writeln('Nilai r harus lebih kecil/sama dengan n');
writeln;gotoxy(28,6);
write('Masukkan nilai n :',' ');readln(n);
writeln;gotoxy(28,8);
write('Masukkan nilai r :',' ');readln(r);
facto(n,f1);
facto(r,f2);
delta:=(n-r);
facto(delta,f3);
c:= f1/(f2*f3);gotoxy(30,10);
write('Hasilnya :',' ',c:2:0);
readln;
end.
Hasil Run Program:
Kita akan menghitung nilai kombinasi dari suatu angka
Yang mempunyai rumus : rCn = n!/(r!(n-r)!)
Nilai r harus lebih kecil/sama dengan n
Masukkan nilai n : 6
Masukkan nilai r : 2
Hasilnya : 15
9.2 Function
Deklarasi:
Function NamaFungsi(NamaParameter) : TipeData ;
{Deklarasi}
Begin
...........
...........
...........
End;
60
Struktur dari fungsi ini hampir sama dengan procedur hanya saja function harus
dideklarasikan beserta tipe datanya dan fungsi ini adalah mengembalikan nilai sehingga tipe
data dalam sebuah function menunjukkan tipe dari data akhir dari deklarasi sebuah fungsi.
Suatu fungsi dapat dipanggil dengan menggunakan beberapa cara, misalkan nama fungsinya
adalah Rata, maka ia akan dapat dipanggil dengan menggunakan:
Rata2 : = Rata(vector,Ukuran) ;
X := Y + Rata(vector,Ukuran) ;
Write(‘Nilai rata-ratanya = ‘, rata(vector,ukuran));
Perbedaan prinsip antara procedure dengan function:
1. Pada function nilai yang dikirim balik terdapat nama fungsinya (karena nama fungsi
digunakan untuk menampung nama fungsi yang terakhir)
2. Function dapat langsung ditampikan hasilnya. Misal : writeln(Hitung(X,Y));
Catatan:
Untuk keterangan yang lain yang meliputi macam variabel, parameter, aturan antar
parameter dan cara pengiriman parameter sama dengan yang ada pada procedure, sehingga
tidak perlu dituliskan lagi.
Contoh Program yang menggunakan fungsi:
PROGRAM FAKTORIAL;
Uses crt;
Var i, N, Hsl : integer;
Function Fakto(N:integer):integer;
Var Fak: integer;
Begin
Fak := 1;
for i:=1 to N do
Fak := Fak * i;
Fakto := Fak;
end;
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ');
readln(N);
writeln('Hasil perhitungan : ',Fakto(N));
readln;
end.
Hasil Run Program :
Faktorial berapa yang anda ingin
Hasil perhitungan : 120
hitung : 5
Dalam turbo Pascal telah dikenal ada beberapa tipe data yang kemudian dapat digolongkan
menjadi 2 (dua) kelompok besar tipe data yaitu tipe data standard dan tipe data terstruktur.
Pada laporan ini akan dibahas mengenai tipe-tipe data terstruktur yang meliputi tipe data
array, tipe data record, dan tipe data set.
61
REKURSI
Salah satu keistimewaan yang dimiliki oleh Turbo Pascal adalah bahwa pascal dapat
melakukan suatu proses yang dinamakan sebagai proses Rekursi, yaitu proses untuk
memanggil dirinya sendiri. Dalam procedure dan function proses ini bisa berarti proses
berulang yang tidak diketahui kapan akan berakhirnya.
Contoh paling sederhana dari proses rekursi adalah Proses mencari faktorial dari suatu.
Faktorial N = N! = N (N–1) (N–2)……………..3.2.1
N! = N (N–1)!
, untuk N>0
N! = N (N–1) (N–2)!
Jika ditulis dalam program menjadi :
Faktorial(0) = 1;
Faktorial(N) = N (N–1)!
Ini merupakan sebuah hubungan rekurens yang berarti nilai suatu fungsi dengan argument
tertentu dapat dihitung dengan menggunakan fungsi yang sama hanya saja dengan argument
yang lebih kecil.
Contoh program:
PROGRAM FAKTORIAL;
Uses crt ;
Var i , N , Hsl : integer
Function Fakto(N:integer):integer ;
Var Fak: integer ;
Begin
if (N=0) or (N=1) then
Fakto:= 1
else
Fakto:= N*Fakto(N-1) ;
end;
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ') ;
readln(N) ;
writeln('Hasil perhitungan : ',Fakto(N)) ;
readln ;
end .
Hasil Run Program:
Faktorial berapa yang anda ingin
Hasil perhitungan : 120
hitung : 5
Dari program diatas maka notasi Fakto(N-1) yang digunakan untuk memanggil program
sebelumnya dinamakan sebagai Pemanggil atau rekursi.
62
BAB X
PENGURUTAN (SORTING) DAN PENCARIAN (SEARCHING)
10.1 Pengurutan (Sorting)
Pengurutan atau shorting merupakan proses untuk menyusun kembali kumpulan entri-entri
yang telah dimasukkan dengan suatu aturan tertentu. Secara umum ada 2 (dua) macam
pengurutan yaitu pengurutan secara menaik (ascenden) dan pengurutan secara menurun
(descenden).
Berikut beberapa metode pengurutan data:
a. Metode Seleksi (Selection Sort)
Masukkan dinyatakan sebagai vector misal vector A (belum terurut), dan N (misal
banyak elemen yang akan diurutkan). Keluaran adalah vector A yang telah terurut.
Algoritma metode seleksi:
- Langkah 0 : Baca vector yang akan diurutkan (dalam program utama)
- Langkah 1 : Kerjakan langkah 2 sampai 4 untuk i = 1 sampai N – 1
- Langkah 2 : Tentukan awal = i , kerjakan langkah 3 untuk j = i +1 sampai N
- Langkah 3 : (Mencari data terkecil)
Tes : apakah A[awal] > A[j], jika ya maka ubah awal = j
- Langkah 4 : Tukarkan nilai A[awal] dengan A[i]
- Langkah 5 : selesai
Contoh program:
PROGRAM contoh;
USES CRT;
TYPE ArrInt = array [1..100] of real ;
PROCEDURE Tukar(var a,b : real);
var Bantu : real;
begin
Bantu := a;
a := b;
b := Bantu;
end;
PROCEDURE SelectionSort(var X : ArrInt; N : integer);
var i,j : integer;
begin
for i:=1 to N-1 do
for j := i+1 to N do
if x[i] > x[j] then
Tukar(x[i],x[j]);
end;
VAR
Data
i,j,n
: ArrInt;
: integer;
BEGIN
clrscr;
Writeln('Masukkan data anda !');writeln;
63
Write('Berapakah frekuensi data anda ? ');readln(n);
writeln('Silakan masukkan data yang Anda punya !');
for i:=1 to n do
begin
Write('Data ke-',i,' = ');readln(data[i]);
end;
SelectionSort(data,n);
for i:=1 to n do
write('(',data[i]:4:2,'),');
readln;
end.
Hasil Run Progam:
Masukkan data anda !
Berapakah frekuensi data anda ? 5
Silakan masukkan data yang Anda punya !
Data ke-1 = -2
Data ke-2 = -2.9
Data ke-3 = 31
Data ke-4 = 0
Data ke-5 = 1
(-2.90),(-2.00),(0.00),(1.00),(31.00)
b. Metode Gelembung (Buble Sort)
Disebut juga dengan metode Penukaran (Exchange Sort), yaitu metoda yang
mendasarkan pada penukaran elemen untuk mencapai keadaan urut yang diinginkan.
Algoritma Metode gelembung:
- Langkah 0 : Baca vector yang akan diurutkan (dalam program utama)
- Langkah 1 : Kerjakan langkah 2 untuk i = 1 sampai N – 1
- Langkah 2 : Kerjakan langkah 3 untuk j = 1 sampai N – i
- Langkah 3 : Tes apakah A[j] > A[j +1] ? Jika ya, tukarkan nilai kedua elemen ini
- Langkah 4 : Selesai
Contoh program:
PROGRAM STATISTIK;
Uses Crt;
TYPE ArrInt = array [1..100] of integer;
PROCEDURE Tukar(var a,b : integer);
var Bantu : integer;
begin
Bantu := a;
a := b;
b := Bantu;
end;
PROCEDURE BubleSort(var X : ArrInt; N : word);
var i, j : word;
begin
for i:=1 to N-1 do
for j := 1 to N-i do
if x[j] > x[j+1] then
Tukar(x[j], x[j+1]) ;
end;
64
Var
Data: ArrInt ;
i, j, n: integer ;
Begin
clrscr;
writeln('Masukkan data anda !');writeln;
write('Berapakah frekuensi data anda ? ');readln(n);
writeln('Silakan masukkan data Anda !');
for i:=1 to n do
begin
Write('Data ke-',i,' = ');readln(data[i]);
end;
BubleSort(data,n);
write('Hasil Pengurutan data dengan BubleSort : ');
for i:=1 to n do
write(data[i]:3);
readln;
end.
Hasil Run Program:
Masukkan data anda !
Berapakah frekuensi data anda ? 5
Silakan masukkan data Anda !
Data ke-1 = 0
Data ke-2 = -1
Data ke-3 = 2
Data ke-4 = -10
Data ke-5 = 30
Hasil Pengurutan data dengan Gelembung : -10 -1
0
2 30
c. Metode Sisip Langsung (Straight Insertion)
Pada metode ini elemen terbagi menjadi 2 bagian yaitu kelompok sumber yang
merupakan susunan asli dari kelompok tersebut (belum terurut) yaitu dari A1…..AN dan
kelompok yang kedua adalah kelompok tujuan yaitu susunan elemen yang telah terurut
dengan urutan dari A1….Ai -1. Langkah penyisipan dimulai dari i = 2 dengan
pertambahan 1. Elemen ke i diambil dari kelompok sumber dan akan dipindahkan ke
kelompok tujuan dengan cara menyisipkannya pada tempatnya yang sesuai.
Algoritma metode sisip langsung:
- Langkah 0 : Baca vector yang akan diurutkan (dalam program utama)
- Langkah 1 : Kerjakan langkah 2 sampai 5 untuk i = 2 sampai dengan N
- Langkah 2 : Tentukan : T = A[i] (elemen yang akan disisipkan), A[0] = T (data
sentinel) dan j = i – 1.
- Langkah 3 : (lakukan pergeseran). Kerjakan langkah 4 selama T < A[j]
- Langkah 4 : Tentukan : A[j + 1] = A[j] dan j = j – 1.
- Langkah 5 : Tentukan : A[j + 1] = T
- Langkah 6 : Selesai
Pada metode ini mahasiswa diharapkan mampu membuat programnya sendiri.
65
10.2 Pencarian (Searching)
Proses Pencarian atau searching merupakan proses menemukan nilai tertentu di dalam
sekumpulan nilai yang bertipe sama (tipe dasar atau tipe bentukan). Kumpulan data yang
bertipe sama tersebut dapat disimpan di dalam memori utama atau mungkin di dalam
memori sekunder.
Pada bagian ini akan diberikan meode yang paling sederhana, yaitu pencarian beruntun
(sequential search). Pada dasarnya pencarian beruntun adalah proses membandingkan
setiap elemen lariksatu per satu secara beruntun, mulai dari elemen pertama sampai elemen
yang dicari ditemukan, atau sampai seluruh elemen diperiksa.
Adapun langkah-langkah / algoritma pencarian beruntun sebagai berikut:
- Langkah 0 : Baca vector yang akan dicari datanya, yaitu a[k] untuk k Å 1 sampai N
- Langkah 1 : Baca X (data yang akan dicari)
- Langkah 2 : Tentukan : K Å 1
- Langkah 3 : While (K < N) dan (a[k] ≠ X) do k Å k + 1
- Langkah 4 : If a[k] = X then IDX Å k else IDH Å 0
- Langkah 5 : If IDX = 0 maka data tidak ditemukan, else data ditemukan
- Langkah 6 : Selesai.
Diharapkan Contoh program pencarian mahasiswa dapat membuatnya sendiri.
66
BAB XI
CONTOH KASUS
11.1 Algoritma
1. Buatlah algoritma untuk mengubah nilai angka ke nilai huruf dengan ketentuan sebagai
berikut:
A : 10, 9
B : 8, 7
C : 6, 5
D : 4, 3
E : 2, 1, 0
Jawaban:
- Read nilai
- Case nilai
10, 5
: Hasil Å ‘A’
8, 7
: Hasil Å ‘B’
6, 5
: Hasil Å ‘C’
4, 3
: Hasil Å ‘D’
2, 1, 0 : Hasil Å ‘E’
- Write Hasil
- Selesai
2. Buatlah algoritma untuk menghitung volume prisma segi-n beraturan!
Jawaban:
- Read n (jumlah sisi), T (tinggi), dan S (jari-jari sisi siku)
- Alas Å n * 0.5 * S * S * tg (360 / (2*n))
- Volume Å Luas alas * T
- Write Volume
- End
3. Buatlah algoritma untuk menentukan apakah bilangan n yang dimasukkan adalah
bilangan prima!
Jawaban:
- Read n
- Status Å Prima
- S Å n div 2
- If n ≠ 2 then
For i Å 2 to s do
If (n mod i) = 0 then Status Å Bukan prima
- Write Status
- End
67
11.2 Matematika dan Logika
1. Buatlah program untuk menghitung jumlah, nilai rata-rata, dan nilai terbesar dari 3
bilangan bulat yang diinputkan dari keyboard dan tampilkan hasilnya ke layar!
Jawaban:
Program Angka;
Uses Crt;
var a, b, c, Jumlah, Max, Rata : Real;
Begin
Clrscr;
Write('Masukkan bilangan pertama : ');Readln(a);
Write('Masukkan bilangan kedua
: ');Readln(b);
Write('Masukkan bilangan ketiga : ');Readln(c);
Jumlah := a + b + c;
Max := a;
If a < b then Max := b;
If Max < c then Max := c;
Rata := Jumlah / 3;
Writeln('Jumlah
: ',Jumlah:8:2);
Writeln('Tertinggi : ',Max:8:2);
Writeln('Rata-rata : ',Rata:8:2);
Readln;
End.
2. Buatlah program untuk menghitung akar-akar persamaan kuadrat f(x)=ax2+bx+c!
Jawaban:
Program PersamaanKuadrat;
Uses Crt;
var a, b, c, det, x1, x2 : Real;
Begin
Clrscr;
Write('Masukkan koefesien a : ');Readln(a);
Write('Masukkan koefesien b : ');Readln(b);
Write('Masukkan koefesien c : ');Readln(c);
Det := b*b - 4*a*c;
Writeln('-----------------------');
If Det > 0 then
Begin
Writeln('Akar-akarnya berlainan.');
x1 := (-b + Det) / 2*a;
x2 := (-b - Det) / 2*a;
Writeln('X1 : ',x1:8:2);
Writeln('X1 : ',x2:8:2);
End
Else If Det = 0 then
Begin
x1 := (-b + Det) / 2*a;
Writeln('Akar-akarnya sama.');
Writeln('Yaitu : ',x1:8:2);
End
Else Writeln('Akar imajiner.');
Readln;
End.
68
3. Buatlah program untuk menampilkan tabel perkalian seperti berikut:
*
1
2
3
4
5
1
1
2
3
4
5
2
2
4
6
8
10
3
3
6
9
12
15
4
4
8
12
16
20
5
5
10
15
2
25
Jawaban:
Program TabelPerkalian;
Uses Crt;
Type Larik = Array [1..5,1..5] of Integer;
Var Matrik : Larik;
i, j : Integer;
Begin
Clrscr;
Writeln(' * |
1
2
3
4
5');
Writeln('---+---------------------');
For i := 1 to 5 do
begin
Write(i:2,' |');
For j := 1 to 5 do
Begin
Matrik[i,j] := i*j;
Write(Matrik[i,j]:4);
End;
Writeln;
End;
Readln;
End.
11.3 Permainan
1. Buatlah program tebak angka, komputer membuat sebuah angka yang berkisar antara 0
sampai 999 (gunakan fungsi random) kemudian pemain menebak angka tersebut. Jika
tebakan lebih kecil dari nilai angka maka tampilkan “Nilai tebakan anda terlalu kecil!”,
jika lebih besar tampilkan “Nilai tebakan anda terlalu besar!”, jika sama dengan maka
pemain memenangkan permainan, tampilkan “Anda memang beruntung!”. Pemain
diberi 3 kali kesempatan menebak, lebih dari itu pemain dinyatakan kalah, jika
demikian, tampilkan “Kegagalan adalah sukses yang tertunda… Jangan pikirkan hari
esok jika anda belum makan hari ini.”.
Jawaban:
Program Tebak;
Uses crt;
Var Awal, AKhir, I, Tebak, Kunci : Integer;
Lagi : Char;
Begin
Repeat
Clrscr;
Randomize;
Writeln(‘PERMAINAN TEBAK ANGKA’);
Writeln(‘---------------------‘);
Writeln(‘Anda berhak menebak 3 kali saja!’);
Writeln;
Writeln;
Repeat
Repeat
69
Awal := Random(1000);
Akhir := Random(1000);
Until (Awal > 0) And (Akhir <= Awal + 20));
Repeat
Kunci := Random(10);
Until (Kunci > 0) And (Kunci <= 10);
Kunci := Awal + Kunci;
Until Kunci <= Akhir;
Writeln(‘Tebaklah angka di antara: ’,Awal,’ dan’,Akhir);
Writln;
I := 1;
Repeat
Write(‘Tebakan anda: ‘);
Readln(Tebak);
Inc(I, 1);
If Kunci = Tebak Then
Begin
Writeln(‘Anda memang beruntung!’);
Exit;
End;
Else If Kunci < Tebak Then
Begin
Writeln(‘Nilai tebakan anda terlalu kecil!’);
End;
Else If Kunci > Tebak Then
Begin
Writeln(‘Nilai tebakan anda terlalu besar!’);
End;
If I = 4 Then
Begin
Writeln(‘Kegagalan adalah sukses yang tertunda… Jangan
pikirkan hari esok jika anda belum makan hari ini.’);
Writeln(‘Jawaban yang benar: ,Kunci);
End;
Until I = 4;
Write(‘Ingin menebak lagi?’ );
Readln(Lagi);
Until Upcase(Lagi)=’T’;
Writeln(“Selesai’);
Readln;
End.
2. Buatlah program untuk memecahkan masalah berikut:
Suatu sore, seekor katak terjatuh ke dalam sumur sedalam 3.12 m, pada 5 hari pertama
dia dapat melompat sejauh 5 m tiap pagi tetapi merosot 1 m setiap malam. 10 hari
berikutnya dia dapat melompat sejauh 2.5 m setiap pagi tetapi merosot 1.25 m setiap
malam, hari-hari selanjutnya dia hanya dapat melompat sejauh 2 m setiap pagi karena
letih tetapi merosot 1.5 m setiap malam. Berapa hari yang dibutuhkan sang katak untuk
sampai ke atas tanah?
Jawaban:
Program KatakJatuh;
Uses crt;
Var h : integer;t:real;
Begin clrscr;
h:=1;t:=0;
while t<=29.2 do begin
if h<=5 then t:=t+2
else if h<=15 then t:=t+1.25 else t:=t+0.5;
writeln('hari ke ',h,' tinggi = ',t:10:2);
if h mod 10=0 then readln;
h:=h+1;
70
end;
writeln(h);
readln;
End.
3. Buatlah sebuah program untuk menampilkan pertanyaan dan jawaban pilihan ganda.
Jika jawaban benar maka program akan menampilkan “Jawaban anda benar.”, jika
salah menampilkan “Jawaban anda salah.”. Pertanyaan dan kunci jawaban dibaca dari
sebuah file yang bernama soal.txt.
Jawaban:
Program Soal;
Uses crt;
var nilai : integer;
procedure BacaSoal(var nilai:integer);
var x:array[1..6,1..5] of string[80];
r,k,i,j : integer;
f : text;
jawab:char;
begin
assign(f,'c:\soal.txt');reset(f);
i:=0;
while not(eof(f)) do
begin
j:=0;inc(i);
repeat
inc(j);
readln(f,x[i,j]);
until x[i,j,1]='*';
end;
close(f);
nilai:=0;
randomize;
for i:=1 to 3 do
begin
r := random(6)+1;
clrscr;
write(i,'.');
for j:=1 to 4 do writeln(x[r,j]);
write('masukkan jawaban anda : ');readln(jawab);
if upcase(jawab)=x[r,5,2] then
begin
writeln('Jawaban anda Benar');
nilai:=nilai+1;
end;
writeln('Jawaban anda Salah');
readln;
end;
end;
begin
clrscr;
BacaSoal(nilai);
writeln('Nilai anda adalah = ',round(nilai*10/3));
readln;
end.
71
Soal.txt
Presiden RI adalah :
a. Mega
b. Amin
*C
Ibu kota RI di
c. SBY
d. Wiranto
a. Jogja
c. Surabaya
b. Jakarta
d. Medan
*B
Indonesia merdeka pada tahun:
a. 1495
c. 1945
b. 1594
d. 1954
*C
Jumlah propinsi di Indonesia saat ini:
a. 33
c. 29
b. 27
d. 31
*A
Daerah Tingkat II dipimpin oleh :
a. Lurah
c. Camat
b. Gubernur
d. Bupati
*D
Yang membaca teks proklamasi adalah
a. Bung Hatta
b. Bung Karno
*B
c. Bung Tomo
d. Bung Sayuti Melik
72
Download