Diktat Kuliah Algoritma Dan Pemrograman 2015. Part 1
Diktat Kuliah Algoritma Dan Pemrograman 2015. Part 1
Pengarang
Drs. Akmam, M.Si
Reviewer
Dr. Hamdi, M.Si
JURUSAN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI PADANG
2015
KATA PENGANTAR
Puji dan syukur penulis panjatkan ke hadirat Allah SWT yang telah
memberikan kekuatan dan kesempatan pada penulis dalam menyelesaikan buku ini
sehingga dapat hadir kehadapan pembaca yang budiman. Buku dengan judul
Algoritma dan Pemrograman Komputer untuk Sains, Teknik dan Ilmu Komputer
menyajikan tentang konsep algoritma dan teknik pemrograman yang diaplikasikan
secara lebih spesifik ke dalam bahasa Pascal. Buku ini terdiri atas; penjelasan tentang
algoritma, teknik pemrograman, bagaimana cara menjalankan Program Pascal, contoh
program dan soal latihan membuat algoritma dan program serta program latihan.
Buku ini cocok dipakai oleh kalangan siswa atau mahasiswa yang baru maupun
sedang mempelajari dasar-dasar pemrograman berdasarkan algoritma, namun tidak
menutup kemungkinan bagi yang lain untuk menggunakannya. Materi buku ini
dikemas dalam tahap demi tahap yang saling berhubungan yang disertai dengan
latihan untuk mempercepat pemahaman. Bahasa pemograman Turbo Pascal untuk
bahasa pemograman adalah atas pertimbangan bahasa Pascal cukup ampuh sebagai
bahasa pengantar untuk pemrograman terstruktur yang popular digunakan diberbagai
perguruan tinggi Sain, Teknik Sains serta Teknik Komputer untuk pembelajaran
algoritma dan pemrograman.
Pemahaman terhadap algoritma akan sangat membantu untuk menghasilkan
program yang sistematis dan memiliki kinerja yang tinggi, karena pemograman
komputer harus mengikuti langkah-langkah sistematis yang dituangkan dalam bentuk
instruksi tertulis. Dengan demikian pembelajaran pemrograman komputer tidak dapat
dilakukan hanya dengan membaca, tetapi juga membutuhkan praktek langsung untuk
membantu calon programer memahami langkah demi langkah sehingga dapat
memahami bagian demi bagian program yang sedang dibuat dan perencanaan
program selanjutnya.
Buku ini disusun berdasarkan pengalaman penulis memberi perkuliahan
Dasar-Dasar Pemograman Komputer semenjak tahun 1990. Buku ini disusun dengan
i
tujuan membantu siswa atau mahasiswa mempelajari algoritma dan pemrograman
yang dimulai dengan pemahaman istilah-istilah dasar pemrograman komputer,
pembahasan dasar pemrograman seperti input/output, test pilihan, perulangan, array,
struktur data pencarian, pengurutan data, pengolahan rocord, set, file, dan algoritma
seperti penjumlah bilangan, dan pengurutan data serta pembuatan grafik, animasi.
Penulis mengucapkan terima kasih kepada Drs. R. Soegeng, M.Si (alm) dosen
Jurusan Fisika ITB Bandung yang memberi inspirasi pada saat mengikuti pelatihan
Basic Science Tipe-B Fisika Komputasi di Jurusan Fisika ITB Bandung dan beberapa
kegiatan Sort Course Fisika Komputasi yang sponsori oleh Forum Head. Buku ini
ditulis berdasarkan pengalaman dalam pengikuti pelatihan pemograman dengan
bahasa Turbo Pascal, dimana dalam pelatihan sering berinteraksi antar peserta yang
mengikuti kursus, akibatnya ada kemungkinan isi dan contoh program dalam buku ini
mempunyai kemiripan dan kesamaan dengan penulis lainnya. Terima kasih juga
penulis disampaikan kepada Dr. Hamdi, M.Si yang telah bersedia menjadi
pendamping dan reviuwer penulisan buku. Terima juga disampaikan kepada Tim
Mata Kuliah Fisika Komputasi dan Dasar-Dasar Pemrograman Komputer dan Dosen
Jurusan Fisika FMIPA Universitas Padang serta asisten mata kuliah Dasar-Dasar
Pemrograman Komputer yang memberi masukan. Terima kasih juga diucapkan
kepada Rektor Universitas Negeri Padang dan jajarannya yang telah memfasilitasi
penulis dalam menulis buku ini melalui dana BOPTN Universitas Negeri Padang.
Akhir kata penulis mengucapkan selamat belajar dan semoga buku ini dapat
memberi manfaat yang besar dalam belajar Algoritma dan Programan Komputer.
Penulis berharap semoga buku ini dapat bermanfaat bagi semua kalangan pembaca
semua. Penulis mengharapkan saran dan kritik untuk perbaikan buku ini agar
menjadi menjadi lebih sempurna. Penulis mengucapkan terima kasih untuk semua
pihak yang telah memberi dukungan dalam penulisan buku ini, semoga Allah
memberkahi kita semua.
Padang, November 2013
Akmam
ii
DAFTAR ISI
Hal.
KATA PENGANTAR …………………………………………………… i
DAFTAR ISI …………………………………………………………… iii
DAFTAR GAMBAR …………………………………………………… vi
DAFTAR TABEL ………………………………………………. ……… viii
BAB I PENDAHULUAN ………………………………………… 1
A. Sistem Komputer ......................................................... 1
B. Hardware ......................................................................... 4
C. Perangkat Lunak ........................................................... 18
D. Brainware ........................................................................ 30
E. Dampak Penggunaan Komputer ...................................... 33
F. Soal Latihan 1 ............................................................... 35
BAB II PENGANTAR ALGORITMA DAN PROGRAM 36
A. Pengertian Algoritma ........................................................ 36
B. Peranan Algoritma dalam Pemograman .......................... 39
C. Menilai Suatu Algoritma ............................................ 41
D. Tipe-Tipe Algoritma Berdasarkan Format Penilaian ...... 43
E. Beda Algoritma dan Program ........................................... 51
F. Pemograman Prosedural ..................................................... 54
G. Contoh Beberapa Kasus Pemograman dan Penyelesainnya 58
H. Soal Latihan 2 ..................................................................... 60
BAB III STRUKTUR PROGRAM PASCAL ………………………. 62
A. Sejarah Pascal ..................................................................... 62
B. Pascal sebagai Bahasa Terstruktur ................................... 66
C. Struktur Program Pascal .................................................. 67
D. Perintah Input – Output ....................................................... 77
E. Tipe Data Terstruktur ........................................................ 85
F. Operator ........................................................................... 92
iii
M
S
P
G. Fungsi
........................ 95
H. Soal Latihan 3 .................................................................. 96
iv
BAB VII
TIPE DATA TERSTRUKTUR 199
RECORD DAN FILE
A. Record ………................................................................. 199
B. File ................................................................................. 213
C. Soal Latihan 7 ................................................................ 229
BAB VIII PEMOGRAMAN GRAFIK DAN ANIMASI 230
A. Pengertian Mode Grafik .................................................. 230
B. Mengaktifkan Mode Grafik ............................................ 231
C. Perintah – Perintah Grafik ............................................ 236
D. Aplikasi Grafik ................................................................. 237
E. Soal Latihan 8 ................................................................... 249
v
DAFTAR GAMBAR
Hal.
Gambar 1. Diagram Tansformasi Data dalam Skema I/O Komputer ...... 1
Gambar 2: Hubungan Komponen Utama Sistem Komputer ....................... 4
Gambar 3: Sketsa Hubungan Hardware Komputer ...................................... 5
Gambar 4 : Keyboard Komputer .................................................................. 6
Gambar 5 : Mouse Komputer ....................................................................... 6
Gambar 6 : Scanner ..................................................................................... 6
Gambar 7 : Monitor RCT ………………………………………………… 11
Gambar 8 : Monitor LCD ………………………………………………… 12
Gambar 9 : Monitor Plasma ……………………………………………… 12
Gambar 10 : Monitor OLED …………………………………………… 13
Gambar 11 : Motherboad Komputer ........................................................... 16
Gambar 12 : Proses Kompilasi Program Komputer ……………………… 25
Gambar 13 : Tahap Pengembangan Program .......................................... 29
Gambar 14: Sistim pengembangan Software Life Cycle ........................... 30
Gambar 15: Konsep Hubugan Hardware – Software – Brainware .............. 31
Gambar 16 : Diagram Alir Menentukan Bilangan Terbesar dari 3 Bilangan 49
Gambar 17 : Diagram Alir Menghitung Luas Persegi …………………… 51
Gambar 18: Paradigma Bahasa Pemograman Komputer ............................ 55
Gambar 19 : Diagram Alir Mencetak Bilangan Bulat dengan For .. To.. Do 100
Gambar 20 : Diagram Alir Menjumlah Bilangan dengan For .. To .. Do .. 100
Gambar 21: Diagram Alir Mencetak Bilangan Bulat dengan While .. Do .. 106
Gambar 22: Model Diagram Alir While .. Do ............................................ 106
Gambar 23 : Diagram Alir Repeat .. Until ................................................. 108
Gambar 24: Diagram Alir If .. Then ....................................................... 110
Gambar 25: Diagram Alir If .. Then .. Else ............................................... 111
Gambar 26 : Diagram Alir If .. Then Tersarang ......................................... 114
vi
Hal.
Gambar 27: Diagram Alir Seleksi Ikut Pemilahan Umum di Indonesia ..... 114
Gambar 28: Sintaks Pemakaian Prosedur ................................................ 117
Gambar 29: Sintaks Deklarasi Fungsi .......................................................... 128
Gambar 30 : Sintaks Pemakaian Prosedur …………………………… 130
Gambar 31 : Diagram Jangkauan Variabel ……………………………… 132
Gambar 32 : Distribusi Variabel Lokal dan Global ……………………… 132
Gambar 33 : Skema Pemakaian Forward ………………………………… 134
Gambar 34 : Sintaks Deklarasi Fungsi ………………………………… 141
Gambar 35 : Komponen Arry Satu Dimensi …………………………… 163
Gambar 36 : Diagram Alir Membaca dan Menulis Elemen Matriks …… 180
Gambar 37 : Diagram Alir Penjumlahan Dua Elemen Matriks ………… 182
Gambar 38 : Diagram Alir Perkalian Matrik …………………………… 185
Gambar 39 : Skema Record dan Field …………………………………… 199
Gambar 40 : Sketsa Deklarasi Array dari Record ……………………… 203
Gambar 41 : Koordinat pada mode grafik 235
vii
DAFTAR TABEL
Hal
Tabel 1. Perbandingan Kemampuan Bekerja Komputer dan Manusia ......... 3
Tabel 2. Perbandingan Antara Memori Utama dan Memori Sekunder ....... 10
Tabel 3. Bahasa Pemrograman untuk Tujuan Tertentu ............................. 23
Tabel 4. Rasio Pernyataan Bahasa Tingkat Tinggi dengan Kode 23
Bahasa Rakitan yang Setara ..................................................
Tabel 5. Perbedaan Compiler dan Interpreter ............................................. 26
Tabel 6. Simbol dan Keterangan Diagram Alir .......................................... 46
Tabel 7. Perbedaan Tampilan luaran variabel dan String ………………… 81
Tabel 8 . Format Tampilan Tipe Data Bilangan Integer dan String .............. 82
Tabel 9 . Format Tampilan Tipe Data Bilangan Real …………………… 83
Tabel 10 . Tipe Data Ordinal ...................................................................... 85
Tabel 11 : Tipe Data Real ......................................................................... 86
Tabel 12. Operator Aritmatika Pascal ............................................................ 92
Tabel 13. Operator Boolean Pascal ............................................................. 92
Tabel 14. Operator Relasional ................................................................... 93
Tabel 15. Operator Relasional pada Set .................................................... 94
Tabel 16. Operator Logika pada Set ............................................................. 94
Tabel 17. Beberapa Fungsi Matematik Standar yang Disediakan 95
oleh Pascal ……………………………………………………....
Tabel 18. Contoh Belanja Bulanan Mahasiswa ……………………….. 102
Tabel 19. Jenis Driver Grafik 232
Tabel 20. Jenis Driver Grafik dalam Nilai ....................................................
232
Tabel 21. Jenis Mode Grafik dan Resolusinya ..............................................
233
viii
BAB I
PENDAHULUAN
A. Sistem Komputer
1
Ada dua macam tindakan jika ada operasi I/O . Kedua macam tindakan itu
adalah setelah proses I/O dimulai dan kendali akan kembali ke user program saat
proses I/O selesai (Synchronous). Perangkat I/O merupakan perangkat nyata yang
dikendalikan chip controller di board sistem atau card. Perangkat ini dihubungkan
dengan pemroses dan komponen-komponen lain lewat bus. Perangkat I/O setiap
komputer secara umum beda, tapi umumnya biasanya mempunyai register-register
untuk mengendalikannya. Saat ini berperangkat dijalankan umumnya ada waktu
tunggu (instruksi wait).
Instruksi wait (menunggu) menyebabkan CPU tak berfungsi (idle
condition) sampai interrupt berikutnya, terjadi Wait loop (untuk menunggu akses
berikutnya). Paling banyak satu proses I/O yang berjalan dalam satu waktu.
Setelah proses I/O dimulai, kendali akan kembali ke user program tanpa
menunggu proses I/O selesai (Asynchronous). Sistem permintaan pada sistem
operasi meminta user (operator atau pengguna) menunggu sampai I/O selesai aktif
berfungsi secara menyeluruh. Pemeriksaan sistem operasi I/O device berfungsi
untuk mengetahui keadaan device (perangkat system komputer) dan mengubah
daftar urutan kerja dengan memasukkan interrupt. Jika I/O device
mengirim/mengambil data ke/dari memory hal ini dikenal dengan nama DMA
(Direct Memory Access).
Secara umum sistem komputer terdiri atas CPU (central processing unit)
dan sejumlah device controller yang terhubung melalui sebuah bus yang
menyediakan akses ke memori. Device atau yang sering disebut dengan
hardware/peripheral berfungsi sebagai penyedia sumber daya untuk komputasi
dasar. Umumnya, setiap device controller bertanggung jawab atas sebuah
hardware spesisfik. Setiap device dan CPU dapat beroperasi secara konkuren
untuk mendapatkan akses ke memory. Adanya beberapa hardware ini dapat
menyebabkan masalah sinkronisasi. Karena itu untuk mencegahnya sebuah
memory controller ditambahkan untuk sinkronisasi akses memori. Tanggung
jawab sinkronisasi bus yang secara tak langsung juga mempengaruhi sinkronisasi
memori dilakukan oleh sebuah bus controller atau dikenal sebagai bus master .
2
Bus master akan mengendalikan aliran data hingga pada satu waktu, bus hanya
berisi data dari satu buah device . Pada prakteknya bridge dan bus master ini
disatukan dalam sebuah chipset.
Manusia dan komputer sama-sama bisa menyimpan memori (ingatan).
Bedanya, otak manusia bisa menyimpan memori jauh lebih banyak dibandingkan
komputer. Bedanya lagi, manusia punya lupa sedangkan komputer tidak.
Komputer, sekalipun nantinya ada yang bisa menyimpan memori lebih banyak
dari manusia, komputer tidak akan bisa sama dengan manusia karena komputer
tidak bisa menarik atau memunculkan kembali apa yg diingatnya tanpa perintah
pihak luar karena komputer tidak punya kehendak serta tidak punya hak pilih.
Perbandingan kecakapan antara manusia dan komputer seperti Tabel 1
Tabel 1: Perbandingan Kemampuan Bekerja Komputer dan Manusia
Penggunaan komputer
Munusia Komputer
A. Kemampuan A. Kemampuan
1. Estimasi 1. Kalkulasi yang akurat
2. Kreatifitas 2. Konsistensi tinggi
3. Adaptasi 3. Aktifitas perulangan
4. Kesadaran bekerja sama 4. Multitasking
5. Memori asosiatif 5. Pengolahan rutin
6. Pengambilan keputusan non- 6. Penyimanan dan pemanggilan
deterministik kembali data
7. Pengenalan terhadap pola, 7. Pengambilan keputusan
8. Pengetahuan dunia deterministic
B. Keunggulan 8. Pengolahan data bebas kesalahan
1. Menciptakan computer B. Keunggulan
2. Memberi instruksi pada 1. Obyektif
computer 2. Menyimpan informasi besar pada
3. Mempunyai inisiatif secondary storage
4. Tidak tergantung energi 3. Waktu pengambilan informasi
listrik sangat singkat
4. Bekerja cepat, tepat dan teliti
5. Cocok untuk pekerjaan: banyak,
rutin dan berulang
3
peralatan pengolah data terdiri dari 3 (tiga) komponen utama yang harus ada yaitu
hardware, software dan brainware. Hubungan ketiga komponen tersebut adalah seperti
Gambar 2:
Agar komputer dapat berfungsi dengan baik, ketiga komponen tersebut harus saling
menunjang. Dengan demikian arti yang luas komputer apabila salah satu dari ketiga
komponen di atas tidak bekerja dengan baik, maka output dari komputer tidak akan
sesuai dengan harapan.
4
Gambar 3: Sketsa hubungan hardware komputer
5
a. Keyboard
b. Mouse
c. Scanner
Gambar 6 : Scanner
6
memiliki frekuensi clock 350 MHz, berarti kecepatan pemprosesan satu
instruksinya = T = 1/f = 1/(350 x 106 Hz), = 0,286 x 10-8 detik.
Perangkat pengolah atau pemroses data dalam komputer adalah prosesor atau
nama elektronik lengkapnya adalah mikroprosesor, namun umumnya pengguna
komputer menyebutnya sebagai CPU (Central Processor Unit). CPU merupakan
otak bagi sebuah sistem komputer. CPU memiliki 3 komponen utama yang
merupakan bagian tugas utamanya yaitu unit kendali (Control Unit – CU), unit
aritmatika dan logika (Aritmetic and Logic Unit – ALU) serta komponen register
yang berfungsi membantu melakukan hubungan (interface) dari dan ke memori.
Tugas CPU adalah melaksanakan dan mengawal keseluruhan operasi computer.
Jadi dapat dikatakan bahwa hampir keseluruhan pekerjaan dilaksanakan di-CU,
sehingga CPU sering dinamakan dengan otak komputer. CPU terletak pada papan
induk (motherboard), dimana pada bagian juga terletak segala pusat perangkat
komputer seperti memori, port input –output (I/O) dan sebagainya.
Prosesor berupa sebuah chip dalam sistem komputer yang menjalankan
instruksi-instruksi program komputer. Prosesor dalam setiap detik dapat
menjalankan jutaan instruksi. Proses yang dilakukan oleh prosesor hanyalah sebatas
melakukan perhitungan aritmatik dan logika. Beda otak computer dengan
otak manusia adalah otak manusia adalah suatu organ tubuh yang dapat
mengkoordinasi seluruh komponen tubuh, memproses input yang masuk,
menerjemahkan input dan menyimpan informasi yang diperolehnya atau
meneruskan ke organ yang lain. Otak manusia dibagi menjadi 3 yaitu otak
depan/besar (cerebrum), otak tengah (mesensefalon) dan otak kecil (cerebellum).
Otak depan berfungsi sebagai pusat penglihatan, pendengaran, pengaturan kulit dan
otot, pusat perkembangan,kecerdasan dan ingatan. Otak tengah untuk mengatur
pusat refleks mata, pengaturan suhu, keseimbangan cairan tubuh, metabolisme
lemak, tekanan darah, tidur dan selera makan. Otak kecil untuk koordinasi gerakan
otot sadar dan keseimbangan. Otak memproses input yang berasal dari mata,
telinga, kulit, hidung maupun lidah. Input tersebut kemudian diproses dan
diterjemahkan untuk kemudian bisa disimpan atau diteruskan ke organ tubuh yang
7
lain. Mempelajari manusia dapat dengan cara mempelajari atau membandingkan
komputer dengan aktivitas manusia. Walaupun pada hakekatnya keduanya tidak
dapat dibandingkan karena manusia jauh lebih kompleks dari komputer.
CPU berfungsi mengendalikan operasi komputer dan melakukan fungsi
pemrosesan data dengan langkah-langkah mengambil instruksi yang dikodekan
secara biner dari memori utama, mengkode instruksi menjadi aksi-aksi sederhana
dan melaksanakan aksi – aksi. Operasi-operasi di komputer dapat dikategorikan
menjadi 3 tipe yaitu operasi aritmatika (+,-,* /), operasi logika ( OR, AND, XOR,
inverse) dan operasi pengendalian (percabangan, lompat, dan sebagainya).
8
Contoh mekanisme pembacaan, untuk membaca data pada suatu lokasi
memori, CPU mengirim alamat memori yang dikehendaki melalui bus alamat
kemudian mengirim sinyal memory read pada bus kendali. Sinyal memory read
memerintahkan ke perangkat memori untuk mengeluarkan data pada lokasi
tersebut ke bus data agar dibaca CPU.
4. Perangkat Penyimpan
Perangkat penyimpan sebut juga dengan memori. Memori merupakan bagian
dari komputer yang berfungsi sebagai tempat penyimpanan informasi yang harus
diatur dan dijaga sebaik-baiknya. Memori biasanya disebut juga dengan istilah
computer storage, computer memory atau memori. Memori merupakan piranti
komputer yang digunakan sebagai media penyimpan data dan informasi saat
menggunakan komputer. Memori bagian yang penting dalam komputer modern
dan terletak di dalam CPU (Central Processing Unit). Memori dapat dibedakan
menjadi dua yaitu primary memory dan secodary memory.
a. Primary memory
Primary memory (memori utama) terdiri dua jenis yaitu short term
memory (STM) dan long term memory (LTM). STM adalah ingatan jangka
pendek karena data yang tersimpan pada memori jenis ini hanya dapat diingat
dalam waktu yang sangat singkat. Sesuai dengan namanya STM mempunyai
karakteristik sebagai berikut:
Berkecepatan tinggi
9
termasuk ke dalam memori jenis random access memory (RAM). Data di RAM
emakan hilang begitu saja bila aliran listrik diputus (komputer dimatikan). Oleh
sebab itu RAM menggunakan bahan dasar yang bersifat volatile atau yang hanya
dapat menyimpan data sesaat (sebelum komputer dimatikan).
Long term memory (LTM) adalah ingatan jangka panjang. Komponen ini
dikatakan memori jangka panjang adalah karena ingatan tersebut disimpan di
bagian otak yang menyimpan data secara permanen. Bagi manusia, kejadian-
kejadian yang akan masuk ke dalam memori jenis ini adalah kejadian-kejadian
yang sangat berkesan, menjadi pelajaran, dan perlu untuk diingatnya. Misalkan,
ketika masih kecil, seseorang sangat terkesan ketika melihat seorang tentara
berpakaian rapi dan gagah, maka ingatan tersebut akan terus terbawa hingga ia
tumbuh menjadi remaja yang memiliki cita-cita ingin menjadi tentara. LTM di
dalam komputer termasuk ke dalam memori jenis read only memory (ROM). Data
di ROM tidak akan hilang meskipun aliran listrik diputus (komputer dimatikan).
ROM menggunakan bahan dasar yang bersifat non volatile.
b. Secondary Memory
Secondary memory diguna untuk menyimpan data atau program biner
secara permanen. Karakteristik dari memori sekunder adalah non volatil atau
persistem, kecepatan relatif rendah (dibandingkan memori primer) dan akses
random atau sekuensial. Secondary memory umumnya bersifat external memory.
memori eksternal adalah memori tambahan yang digunakan untuk membantu
ingatan (menampung ingatan) di internal memori. eksternal memori bisa berupa
disket, hard disk, flash disk, dan sebagainya.
Tabel 2: Perbandingan antara memori utama dan memori sekunder
10
5. Perangkat Keluaran
Perangkat keluaran atau output adalah alat yang berfungsi menampilkan hasil
pemrosesan data oleh komputer. Output atau keluaran dapat berupa tampilan di
layar monitor, suara atau cetakan melalui print out. Contoh perangkat output antara
lain: sound, monitor, proyektor, dan lain sebagainya.
a. Monitor
Monitor adalah perangkat output atau keluaran yang berfungsi
menampilkan hasil proses komputasi. Instruksi-instruksi yang kita masukkan ke
komputer, akan ditampilkan pada layar monitor. Tampilan pada monitor diukur
oleh satuan pixel, semakin tinggi pixelnya maka resolusi monitor juga tinggi,
maka gambar yang ditampilkan semakin tajam dan jelas. Begitu pula sebaliknya
semakin rendah pixelnya maka resolusinya akan rendah, dan gambar akan terlihat
kurang jelas. Monitor komputer ada beberapa jenis yaitu monitor CRT, LCD,
plasma, OLED .
Monitor CRT (catoda ray tube) merupakan
monitor yang mempunyai tabung yang memproduksi
elektron untuk menembak layar, sehingga tercipta
gambar di layar seperti cara kerja di televisi. Monitor
11
Monitor LCD (Liquid crystal display) yaitu monitor
kristal air yang banyak digunakan pada komputer
laptop/notebook. Namun sekarang monitor personal
komputer sudah banyak yang menggunakan
teknologi LCD.
Gambar 8. Monitor LCD
Monitor LCD tidak lagi menggunakan tabung elektron seperti yang digunakan
oleh monitor jenis CRT, melainkan menggunakan teknologi sejenis kristal liquid
yang dapat berpencar. Teknologi dihasilkan berupa monitor flat panel. Layar
berbentuk layar pipih dengan kemampuan resolusi yang lebih tinggi dibandingkan
dengan CRT. Monitor LCD merupakan teknologi hemat energy sehingga banyak
digunakan pada komputer portable. Selain itu, pada monitor LCD rasio tingkat
keterangan (brigness ratio) dapat mencapai 350 : 1. Brighness ratio merupakan
perbandingan antara tampilan yang paling gelap dengan tampilan yang paling terang.
Monitor LCD mempunyai kelebihan antara huruf tampilan terang nyaman di mata
serta tidak berdistorsi, tidak bergantung pada refreshrate, user friendly, hemat listrik,
dimensi (ukuran) relatif kecil, ringan. Sedangkan kekurang monitor LCD adalah
sudut pandang terbatas, kedalaman warna terbatas dan gradasi warna kurang,
tampilan gambar baik hanya di resolusi dasarnya, waktu responnya dan ghosting
kurang akurat dan harganya relative lebih mahal serta perlu perawatan ekstra hati-hati
dan dead pixel
Plasma gas merupakan teknologi monitor dengan
display datar. Dengan teknologi plasma gas, ketipisan
layar dapat dibuat sebanding dengan LCD, namun
memiliki karakteristik citra yang lebih baik dan ukuran
layar yang lebih besar. Plasma gas menggunakan fosfor
Gambar 9. Monitor untuk menghasilkan cahaya seperti halnya CRT.
Plasma
Perbedaannya adalah bagaimana energi diberikan kepada fosfor agar fosfor
berpendar. Pada plasma gas, tiap sel warna memiliki gas yang bertekanan rendah
yang terletak di belakangnya. Tegangan tinggi pada elektroda sel tersebut akan
12
membuat gas bergerak mengarah ke plasma. Radiasi ultraviolet yang
dihasilkannya akan mengeksitasi fosfor pada layar dan akan memendarkannya
sehingga tertangkap oleh mata kita. Hal ini membuat layar plasma gas berpendar
tanpa perlu adanya bantuan cahaya dari belakang layar. Kontras pada plasma gas
akan lebih baik dibandingkan LCD. Tampilan pada monitor plasma gas dapat
dibuat lebih besar dibandingkan LCD. Ukuran terbesar yang sedang
dikembangkan pada plasma gas sudah mencapai 40 inci, sementara LCD baru
mencapai 20 inci. Selain itu, sudut pandang pada plasma gas dapat selebar CRT.
Kalau Anda suka menonton pertandingan olah raga atau musik, layar monitor
raksasa yang dipasang di sudut-sudut arena tertentu menggunakan teknologi ini.
Monitor plasma mempunyai Kelebihannya hampir menyerupai kemampuan
monitor CRT, reproduksi warna sangat baik, hampir tidak ada response time dan
sudut pandang (viewing angle ) sangat baik, plasma juga tidak menunjukkan
gambar kabur, umumnya seperti di banyak LCD. Sedangkan kekurangannya
adalah memiliki ukuran pixel pitch yang besar, yang artinya memiliki resolusi
rendah atau meski resolusi tinggi, ukuran monitor haruslah besar dan bobot yang
sangat berat, konsumsi daya dan operasional suhu yang tinggi, cell plasma untuk
perwakilan tiap pixel gambar hanya memiliki fungsi on/off sehingga reproduksi
warna jauh lebih terbatasi lagi dibandingkan tipe CRT ataupun LCD
Monitor OLED (Organic Light Emitting Diode)
Monitor jenis ini merupakan jenis monitor yang ramah
lingkungan bila disbanding dengan monitor tipe LCD.
Sebab, ketika layar LCD dinyalakan dengan
menggunakan tabung-tabung fluorescent, terbentuklah
13
tahun 2005. OLED diciptakan sebagai teknologi alternative yang mampu
mengungguli generasi tampilan layar sebelumnya. Monitor OLED mempunyai
kelebihan antara lain kemampuan OLED untuk beroperasi sebagai sumber cahaya
menghasilkan cahaya putih terang saat dihubungkan dengan sumber listrik,
tampilan OLED baru dan menarik, layar terbuat dari gabungan warna dalam kaca
transparan sangat tipis sehingga ringan dan fleksibel, memiliki jangkauan wilayah
warna, tingkat terang, dan tampilan sudut pandang yang sangat luas, memiliki
waktu reaksi yang lebih cepat. Sebagai contoh monitor LCD memiliki waktu
reaksi 8-12 milisekon, sedangkan OLED hanya kurang dari 0.01 milisekon.
Sedangkan kelemahannya antara lain kelembaban dapat memperpendek umur
OLED, bahkan kandungan organic di dalam OLED dapat rusak jika terkena air,
dalam piranti OLED multi-warna yang ada sekarang, intensitas cahaya yang
dihasilkan untuk warna tertentu belum cukup terang, harga produk yang cukup
mahal sehingga masih belum terjangkau oleh kalangan umum.
b. Printer
Printer adalah perangkat pencetak dari proses input yang dilakukan oleh
penggunanya. Sebagai contoh pada saat kamu mengetik, hasilnya tidak cukup
diperlihatkan pada layar monitor, tetapi perlu dicetak. Adapun hasil cetakan atau
printout dapat ditempatkan pada kertas atau plastik transparansi, misal untuk
digunakan sebagai slide. Printer terdapat tiga jenis dilihat dari cetakannya, yaitu
printer dot-matrik, printer tinta (ink jet), dan printer laser (laser jet).
c. Plotter
Plotter pada prinsipnya sama dengan printer. Hanya saja secara ukuran
plotter memiliki lebar yang jauh lebih panjang daripada printer. Plotter biasanya
digunakan untuk mencetak gambar, grafik, atau disain teknik yang berukuran
besar. Plotter kini dapat dengan mudah kamu jumpai pada percetakan atau toko-
toko yang menyelenggarakan usaha digital printing dan biasa dipakai untuk
membuat banner, poster, pamflet dan lain sebagainya.
14
d. Proyektor
Proyektor adalah perangkat yang befungsi memproyeksikan atau
memancarkan data atau slide yang bersumber dari komputer, DVD player, televisi
atau media lain yang sudah dicetak. Media lain contohnya kertas atau plastik
transparansi. Dengan menggunakan proyektor informasi yang bersumber dari
komputer, televisi, atau DVD player dapat dipancarkan dengan tampilkan yang
besar ke layar, sehingga cocok digunakan untuk proses belajar mengajar,
presentasi, bahkan membuat home theater. Screen projector adalah layar yang
digunakan sebagai tempat dipancarkannya sinar LCD Projector. Ada kalanya
penggunaan screen diganti dengan tembok putih. Namun ada kelebihan
penggunaan screen projector yakni sumber cahaya LCD dapat dipancarkan dari
belakang screen, sehingga dalam presentasi atau acara yang menggunakan
proyektor dapat terlihat lebih rapi.
e. Speaker
Speaker adalah alat output suara. Komputer tanpa dilengkapi fasilitas
audio saat ini sudah dikategorikan ketinggalan jaman. Berarti bahwa computer
multimedia sudah menjadi kebutuhan umum. Untuk itu, speaker aktif komputer
telah menjadi standar ketika membeli sebuah personal komputer maupun laptop.
Speaker aktif muncul dengan aneka variasi, seiring dengan munculnya konsep
home theater. Produsen (industri komputer) berlomba-lomba membuat speaker
tidak sekedar output audio biasa, namun dapat menciptakan suasana bioskop atau
teater di rumah dengan tata suara yang menakjubkan.
6. Motherboard
Jika anda memiliki sebuah PC alias sering dikenal dengan istilah komputer,
anda pasti pernah mendengar istilah motherboard. Pengertian/definisi
motherboard adalah sebagai sebuah “induk” dari seluruh komponen yang ada di
dalam suatu device komputer. Motherboard atau yang dalam istilah bahasa
Indonesia dikenal dengan istilah papan utama ini merupakan PCB yang ada di
dalam sebuah PC atau komputer. Motherboard di dalamnya sendiri merupakan
15
tempat untuk sebuah CPU (Central Processing Unit), memori komputer, slot
ekspansi, drive yang digunakan di PC atau komputer dan perangkat pheripheral
lainnya yang saling terhubung.
Motherboard berupa sebuah papan yang berupa PCB (Printed Circuit
Board) utama yang di dalamnya terdapat chip bios, channels dan connector yang
menjadi penghubung akses untuk setiap perangkat. Motherboard dapat ditemukan
di pasaran saat ini merupakan motherboard yang mengikuti perkembangan
spesifikasi yang ditentukan oleh IBM. Motherboard dalam istilah bahasa
Indonesia ini merupakan komponen komputer yang paling penting karena dalam
motherboard semua komponen dari PC saling terhubung dan disatukan. Bentuk
dari motherboard sendiri menyerupai papan sirkuit (PCB) besar yang biasa
terdapat pada beberapa barang elektronik. Motherboard merupakan tempat data
lalu-lalang dan tempat terhubungnya semua perangkat komputer. Tugas
motherboard adalah membuat peralatan tersebut dapat saling terhubung sehingga
PC atau komputer dapat bekerja dengan baik.
16
motherboard. Adapun pengelompokkan motherboard dapat adalah sebagai
berikut:
ATX biasanya berukuran (12 x 9,6) inch atau sekitar (305 x 244) mm
Micro ATX biasanya berukuran (9,6 x 9,6) atau sekitar (244 x 244)
FlexATX biasanya berukuran (9,0 x 7,5) atau sekitar (229 mm x 191)
Mini ITX biasanya berukuran (6,7 x 6,7) inch atau sekitar (170 x 170) mm
Socket yang dikenal secara teknik dengan slot prosesor. Ada beberapa jenis
slot untuk meletakkan prosesor. Model awal yang paling pertama muncul
adalah ZIF (Zero Insertion Force) yang dikenal dengan nama socket 7 yang
memiliki 7 pin. Ada juga tersedia socket 370 yang mirip dengan socket 7
hanya saja seperti tersirat pada namanya, socket 370 memiliki 370 pin.
Memori socket, terdapat 2 macam socket memori yang ada di pasaran yaitu
DIMM dan SIMM. Setelah tahun 2005 muncul jenis terbaru yaitu DRAM dan
DDRAM.
17
Port Parallel dan Serial merupakan port yang dapat dipergunakan untuk
berbagai macam fungsi. Pada motherboard bertipe AT, port serial dan
parallel tidak menyatu melainkan dihubungkan dengan kabel. Sedangkan
pada motherboard dengan tipe ATX, baik port parallel maupun port serial
semuanya telah terintegrasi dalam satu motherboard (on board).
Port RJ-45 merupakan port yang memiliki 25 buah pin dan berfungsi untuk
menghubungkan Network melalui sebuah pusat jaringan.
Port VGA (port Video Graphic Adaptor) merupakan port yang memiliki 15
buah pin untuk monitor VGA ataupun perangkat VGA lainnya.
C. Perangkat Lunak
Perangkat lunak secara umum dapat di bagi 2 yaitu perangkat lunak sistem dan
perangkat lunak aplikasi. Perangkat lunak sistem dapat di bagi lagi menjadi 3 macam
yaitu :
1. Sistem Operasi
Sistem operasi sangat berkaitan dengan prosesor yang di gunakan. Jenis
prosesor pada PC yang umum adalah yang kompatibel dengan produk awal IBM
18
dan Macintosh. PC Macintosh, perangkat lunaknya di kembangkan oleh
perusahaan yang sama sehingga perkembangannya tidak sepesat cloning IBM PC.
Sistem operasi dari cloning IBM saat ini secara umum terbagi menjadi 2 aliran
yaitu komersil yang di buat oleh Microsoft dan yang bersifat freeware yang di
kembangkan oleh peneliti dari seluruh dunia karena bersifat open source, yaitu
bahan baku pembuatan yang dapat di baca yang mana hasilnya dapat di tambah
atau di modifikasi oleh setiap pengguna.
Sistem operasi pada saat komputer pertama kali di hidupkan, sistem operasi
yang pertama kali jalan. Sistem operasi mengatur seluruh proses, menterjemahkan
masukan, mengatur proses internal, mengatur dan pengelola penggunaan memori
dan memberikan keluaran ke peralatan yang bersesuaian, contoh sistem operasi :
DOS, Unix, Windows 95, IMB OS/2, Apple’s System 7
2. Bahasa (language)
Komputer mengerjakan transformasi data menjadi informasi berdasarkan
kumpulan perintah, biasanya disebut program, yang telah dibuat oleh programer.
Kumpulan perintah tersebut harus dimengerti oleh komputer, berstruktur tertentu
(syntax) dan bermakna. Bahasa pemrograman merupakan lambang untuk
memberikan secara tepat instruksi atau pernyataan kepada sistem komputer.
Berbeda dengan bahasa alamiah, misalnya, Bahasa Indonesia, Bahasa Inggris dan
sebagainya, yang merupakan bahasa alamiah (natural language), sintaks dan
semantic yang agak longgar, sedangkan bahasa pemrograman komputer ditetapkan
secara rigid, sehingga bahasa pemrograman akan terlihat sebagai bahasa formal
(formal language).
Komputer yang pertama diprogram langsung menggunakan bahasa mesin ke
komputer, seiring berlalunya waktu, hal itu dirasakan tidak efisien sehingga
diciptakanlah bahasa assembly, berupa kata-kata singkat yang lebih mudah diingat
dibanding dengan kode yang harus dimasukkan langsung. Pada tahun 60-an, para
ahli mulai banyak membuat bahasa yang lebih mudah dimengerti oleh manusia,
bahasa tersebut disebut sebagai bahasa tingkat tinggi. Banyak bahasa pemograman
yang diciptakan, namun sedikit yang bertahan hingga saat ini. Umumnya bahasa
19
pemograman memiliki banyak kesamaan yaitu tidak bisa langsung dimengerti oleh
komputer sehingga perlu diterjemahkan ke dalam bahasa mesin.
Bahasa pemrograman merupakan perangkat lunak yang bertugas
mengkonversikan arsitektur dan algoritma yang di rancang manusia ke dalam
format yang dapat dijalankan komputer, contoh bahasa pemrograman di antaranya:
BASIC, COBOL, Pascal, C++, FORTRAN.
BASIC ( Beginners’ All-purpose Symbolic Instruction Code) adalah sebuah
kelompok bahasa pemrograman tingkat tinggi. Secara harfiah, BASIC memiliki
arti "kode instruksi simbolis semua tujuan yang dapat digunakan oleh para pemula.
COBOL (Common Business Oriented Language) adalah sebuah bahasa
pemrograman generasi ketiga. Sesuai dengan namanya, maka bahasa COOL
mempunyai fungsi menyelesaikan masalah-masalah yang berhubungan dengan
perdagangan, seperti sistem pengelolaan keuangan, laporan pengeluaran sebuah
perusahaan dan lain-lain. Pascal adalah bahasa pemrograman yang pertama kali
di buat oleh Profesor Niklaus Wirth, seorang anggota International Federation of
Information Processing (IFIP) pada tahun 1971. Dengan mengambil nama
dari matematikawan Perancis, Blaise Pascal, yang pertama kali menciptakan mesin
penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini sebagai alat bantu
untuk mengajarkan konsep pemrograman komputer kepada mahasiswa.
Fortran (Formula Translator/Translation) adalah sebuah bahasa pemrograman.
Pertama kali dikembangkan pada tahun 1950 dan digunakan dalam bidang sains
selama 50 tahun kemudian. Fortran pertama kali dikembangkan merupakan
bahasa pemrograman prosedural, akan tetapi versi-versi terbaru dari Fortran
kemudian dikembangkan dengan memasukkan kemampuan object-oriented
programming.
Bahasa merupakan alat atau sistim untuk berkomunikasi. Bahasa dapat
berupa bahasa tulis dan bahasa simbol. Bahasa tertulis menggunakan symbol
(yaitu huruf) untuk membentuk kata. Bahasa simbol menggunakan simbol (bentuk
atau kode, tetapi bukan huruf ) untuk membentuk suatu pola. Bahasa manusia
dalam ilmu komputer disebut bahasa alamiah (natural languages), yang mana
20
komputer tidak bisa mengerti. Untuk diperlukan compiler atau interpreter bahasa
alamiah dimengerti oleh komputer.
Jadi, dalam bahasa pemrograman yang digunakan sebagai alat komunikasi
untuk memberikan perintah kepada komputer tidak berlaku kebebasan berekspresi
seperti laiknya dalam bahasa alamiah. Pemrograman dalam pengertian luas
meliputi seluruh kegiatan yang tercakup dalam pembuatan program, termasuk
analisis kebutuhan (requirement's analysis) dan keseluruhan tahapan dalam
perencanaan (planning), perancangan (design) dan pewujudannya
(implementation). Dalam pengertian yang lebih sempit, pemrograman merupakan
pengkodean (coding atau program writing = penulisan program) dan pengujiannya
(testing) berdasarkan rancangan tertentu.
Pemahaman yang lebih sempit ini sering digunakan dalam pembuatan
program-program terapan komersial yang membedakan antara system analyst
yang bertanggung jawab dalam menganalisa kebutuhan, perencanaan dan
perancangan program dengan pemrogram (programmer) yang bertugas membuat
kode program dan menguji kebenaran program. Generasi bahasa pemrograman:
· Generasi I: machine language
· Generasi II: assembly language : Asssembler
· Generasi III: high-level programming language: C, PASCAL, dan sebagainya.
· Generasi IV: 4 GL (fourth-generation language): SQL
21
Bahasa assembly lebih dekat ke mesin (hardware), dimana high-level
programming languages dekat pada bahasa manusia. Dengan demikian bahasa
assembly digolongkan kepada bahasa komputer tingkat rendah. Contoh “MOV
AX 1111”, pindahkan ke register AX nilai 1111.
22
Tabel 3. Bahasa Pemrograman untuk tujuan tertentu.
Jenis Program Bahasa Terbaik Bahasa Terburuk
ADA, C /C++,
Data terstruktur Assembler, BASIC
PASCAL
Tabel 4. Rasio pernyataan bahasa tingkat tinggi dengan kode bahasa rakitan yang
setara.
Bahasa Rasio
Assembler 1: 1
ADA 1 : 4.5
Quick / Turbo / Basic 1:5
C 1 : 2.5
FORTRAN 1:3
PASCAL 1 : 3.5
3. Program Aplikasi
Perangkat lunak aplikasi merupakan bagian perangkat lunak yang sangat
banyak di jumpai dan terus berkembang. Sebelum tahun 1990-an aplikasi yang di
kenal yaitu pemroses kata (Word Star, Chi Write), pemroses tabel (Lotus 123,
Quatro Pro), database (DBASE), dan hiburan (game). Pada perkembangan
pemrosesan kata, tabel dan database saat ini telah di bundel (dikemas) menjadi satu
paket program aplikasi office dengan tambahan baberapa program aplikasi untuk
23
pembuatan presentasi yang nanti akan di berikan pada pelatihan ini. Contoh
program aplikasi office adalah Microsoft Office yang terdiri dari Word (pemroses
kata), Excel (pemroses tabel), Access (database), dan PowerPoint (presentasi).
Program aplikasi yang sangat pesat perkembangannya saat ini adalah aplikasi
multimedia dan internet. Contoh aplikasi multimedia adalah Winamp untuk memutar
musik berformat MP3 atau CD Audio. RealPlayer yang dapat digunakan untuk
memutar film atau VCD. Aplikasi internet yang umum digunakan untuk browsing,
e-mail, chatting dan messenger.
Aplikasi yang bersifat khusus di antaranya untuk membantu pekerjaan
Engineer seperti AutoCAD (untuk menggambar struktur), Protel (menggambar
rangkaian elektronik), dan Matlab (pemroses dan visualisasi persamaan matematis).
4. Utility merupakan sistem operasi merupakan perangkat lunak sistem dengan fungsi
tertentu, misalnya pemeriksaan perangkat keras (hardware troubleshooting),
memeriksa disket yang rusak (bukan rusak fisik), mengatur ulang isi harddisk
(partisi, defrag), contoh Utilty adalah Norton Utility
24
penerjemah tersebut akan memeriksa sintaks (format penulisan) apakah benar atau
tidak, lalu menerjemahkan program tersebut ke dalam bahasa mesin.
Program dalam format kode yang dapat dibaca oleh manusia disebut dengan
kode sumber (source code) yang memungkinkan programmer dapat menganalisis
serta melakukan penelaahan terhadap algoritma yang digunakan pada program
tersebut. Kode sumber tersebut pada akhirnya dikompilasi oleh utilities (perangkat
pembantu) bahasa pemrograman tertentu sehingga membentuk sebuah program yang
dapat dieksekusi. Salah satu model pengeksekusian sebuah program adalah
menggunakan bantuan interpreter. Kode sumber dapat langsung dijalankan oleh
utilitas interpreter menjadi suatu bahasa pemrograman yang digunakan. Proses
penterjemahan kode sumber menjadi program yang dapat dieksekusi (dijalankan)
disebut dengan proses kompilasi.
Compiler adalah suatu program yang menterjemahkan bahasa program
(source code) ke dalam bahasa objek (object code). Compiler menggabungkan
keseluruhan source code yang kemudian disusun kembali menjadi urutan perintah
yang terstruktur. Compiler memerlukan waktu untuk menyusun source code menjadi
suatu program yang dapat dieksekusi oleh komputer. Tetapi, program yang
diproduksi oleh Compiler bisa berjalan lebih cepat dibandingkan dengan yang
diproduksi oleh Interpreter. Proses kompilasi program komputer (source code)
menjadi menjadi program yang dapat dieksekusi adalah seperti Gambar 12.
25
Tahapan kompilasi yang dimaksud adalah sebagai berikut:
a. Pertama source code ( program yang ditulis) dibaca ke memory komputer.
b. Source code tersebut diubah menjadi object code (bahasa assembly)
c. Object code dihubungkan dengan library yang dibutuhkan untuk membentuk
file yang bisa di eksekusi.
Interpreter berbeda dengan Compiler, Interpreter menganalisis dan
mengeksekusi setiap baris dari program tanpa melihat program secara keseluruhan.
Keuntungan penggunaan interpreter adalah eksekusi dapat dilakukan dengan cepat,
tanpa melalui tahap kompilasi. Biasanya interpreter digunakan untuk pembuatan
program berskala. Perbedaan antara kompiler dengan interpreter adalah seperti pada
Tabel 5:
26
kompilator untuk bahasa Pascal. Interpreter dan kompilator masing-masing memiliki
keuntungan dan kerugian.
Interpreter dan kompilator mempunyai keunggulan dan kelemahan masing-
masing. Kelebihan menggunakan interpreter adalah pengembangan program lebih
cepat, tidak perlu melakukan kompilasi yang mungkin butuh waktu lama, namun
kerugiannya setiap kali program dijalankan (running), interpreter harus bekerja lagi,
sehingga kecepatan eksekusi program menjadi kurang jika dibanding dengan
kompilator. Sebaliknya penggunaan kompilator memungkinkan kita membentuk
program yang dapat langsung dijalankan dengan cepat (karena sudah dalam bahasa
mesin), namun dibutuhkan waktu yang relatif lama dalam pengembangan
programnya.
Meskipun tidak terlalu penting dalam pembahasan buku ini, namun perlu
diketahui bahwa ada bahasa yang bisa dikompilasi ke dalam bahasa mesin (ke bahasa
antara), lalu diinterpretasi oleh suatu interpreter untuk menjalankannya. Sebagian
pekerjaan interpreter (memvalidasi program) sudah dilakukan oleh kompilator,
sehingga interpreter hanya perlu mengeksekusi program saja. Contoh bahasa yang
menggunakan pendekatan ini adalah: Java, C#, dan VB.NET.
6. Tipe Pemrograman
a. Pemrograman terstruktur
Pemrograman terstruktur merupakan suatu proses untuk
mengimplementasikan urutan langkah menyelesaikan suatu masalah dalam bentuk
program. Pemrograman terstruktur disebut juga dengan suatu aktifitas
pemrograman yang memperhatikan urutan langkah-langkah perintah secara
sistematis, logis, dan tersusun berdasarkan algoritma yang sederhana dan mudah
dipahami. Bekerja dengan pemograman terstruktur berarti bekerja melalui proses
sains. Prinsip pemrograman terstruktur adalah jika suatu proses telah sampai pada
suatu titik atau langkah tertentu, proses selanjutnya tidak boleh mengeksekusi
langkah sebelumnya atau kembali lagi ke baris sebelumnya, kecuali pada langkah –
langkah untuk proses berulang (looping). Pemrograman terstruktur merupakan
27
suatu tindakan untuk membuat program yang berisi instruksi-instruksi dalam bahasa
komputer yang disusun secara logis dan sistematis supaya mudah dimengerti, mudah
dites, dan mudah dimodifikasi.
Pemrograman terstruktur merupakan bahasa pemrograman yang mendukung
pembuatan program sebagai kumpulan prosedur. Prosedur-prosedur dapat dibuat
saling memanggil dan dipanggil dari manapun dalam program dan dapat
mengunakan parameter yang berbeda-beda untuk setiap pemanggilan. Bahasa
pemrograman terstruktur merupakan pemrograman yang mendukung abstraksi data,
pengkodean terstruktur dan kontrol program terstruktur. Sedangkan prosedur
adalah bagian dari program untuk melakukan operasi-operasi yang sudah ditentukan
dengan menggunakan parameter tertentu.
b. Bahasa pemrograman prosedural – terstruktur
Bahasa pemrograman prosedural adalah bahasa pemrograman yang
mendukung pembuatan program sebagai kumpulan prosedur. Prosedur-prosedur ini
dapat saling memanggil dan dipanggil dari manapun dalam program dan dapat
menggunakan parameter yang berbeda-beda untuk setiap pemanggilan. Prosedur
adalah bagian dari program untuk melakukan operasi-operasi yang sudah ditentukan
dengan menggunakan parameter tertentu. Bahasa pemrograman terstruktur adalah
pemrograman yang mendukung abstraksi data, pengkodean terstruktur dan kontrol
program terstruktur. Kontrol program terstruktur berbentuk runtun - urut
(sequence), pilihan (selection), pengulangan (repetition - loop). Pengembangan
pemograman procedural skema kerjanya adalah seperti Gambar 13
28
Gambar 13. Tahap Pengembangan Program
Gambar 13 dapat dijelaskan sebagai uraian berikut:
a. Batasan masalah yaitu merencanakan sistim dan spesifikasi program dengan
menetapkan siapa yang akan menggunakan program dan untuk apa program
digunakan dengan cara:
Menentukan tujuan dan hasil yang akan dicapai
Menentukan hal-hal yang diperlukan oleh sistim
Pengumpulan data
b. Pengembangan pembuatan model sistim yang dibangun merupakan suatu
gambaran sederhana dari sistim yang kita buat. Model dibuat untuk menjelaskan
hubungan antara objek-objek dalam sistim yang akan kita bangun. Untuk
penyelesaian aritmatik, biasanya model dibuat dalam bentuk rumus matematik.
Contoh: untuk membuat program luas_lingkaran kita membuat model matematis
c=axb
c. Rancangan algoritma Pembuatan urutan instruksi yang akan ditulis pada program
(dijelaskan lebih lanjut)
d. Pemrograman Implementasi algoritma ke dalam program (algoritma sendiri
dalam komputer adalah merupakan program).
29
e. Uji dan Validasi Pengujian terhadap program : seperti kesalahan penulisan
(syntax error) , kesalahan saat eksekusi (runtime error) kesalahan logika program
(program berjalan tapi menghasilkan output yang salah- fatal error).
f. f. Dokumentasi Pembuatan catatan pada program terutama pada modul-modul
yang rumit.
Bagaimana pengembangan pembuatan model sistim yang dibangun dapat
digambarkan seperti model pada Gambar 14.
D. Brainware
Pengertian brainware atau perangkat manusia adalah orang yang menggunakan
atau mengoperasikan komputer. Istilah yang digunakan untuk manusia yang
berhubungan dengan sistem komputer. Manusia merupakan suatu elemen dari sistem
komputer atau semua personil atau tenaga kerja di bidang komputer, yakni yang
terlibat dalam kegiatan pembentukan sistem komputerisasi maupun yang menangani
dan mengawasi langsung bagian pengolahan data berbantuan komputer. Manusia
berfungsi merancang bagaimana suatu mesin dapat bekerja sesuai dengan hasil yang
diinginkannya. Dengan kata lain brainware adalah setiap orang yang terlibat dalam
kegiatan pemanfaatan komputer/sistem pengolahan data. Brainware merupakan
sumber inspirasi utama bagi terbentuknya suatu.
30
Jadi brainware adalah manusia yang terlibat dalam mengoperasikan serta
mengatur sistem di dalam komputer. Brainware diartikan juga sebagai perangkat
intelektual yang mengoperasikan dan mengeksplorasi kemampuan dari hardware
maupun software. Brainware termasuk bagian penting dari sebuah sistem komputer.
Hardware tidak dapat bekerja tanpa adanya software, sedangkan software dan
hardware tidak dapat bekerja tanpa adanya brainware. Jadi tiga komponen ini saling
terkait dan saling membutuhkan.
Konsep Hardware – Software – Brainware seperti Gambar 15.
31
Tahap-tahap pengoperasian komputer secara utuh diawali dengan manusia
memasukkan program terlebih dahulu ke dalam komputer. Setelah program tersimpan
di dalam komputer, komputer baru bisa bekerja untuk membantu manusia di dalam
menyelesaikan persoalan ataupun pekerjaannya. Brainware sebagai profesi di bidang
komputer antara lain adalah sistem analysts and designer, computer programmer,
computer operator, data controller, data entry, operator, librarian, scheduler,
network manager, Netter (sebutan bagi orang yang sedang melakukan surfing di
internet), dan orang-orang yang sedang menggunakan computer lainnya.
1. System Analyst and Designer
System analyst and designer bertanggung jawab sepenuhnya dalam persiapan dan
pelaksanaan sistem komputerisasi yang diminta oleh user.
a. Membantu user dengan mempelajari informasi apa yang dibutuhkan dari hasil
pengolahan data dengan melakukan studi sistem dan analisa sistem.
b. Menyusun spesifikasi program-program yang akan dijadikan sebgai pedoman
oleh programmer untuk membuat program
c. Membuat dokumentasi sistem
d. Melakukan pemeliharaan sistem dan modifikasi sistem bila diperlukan.
2. Computer Programmer
Computer programmer bertugas membuat dan mempersiapkan program
berdasarkan spesifikasi program yang dibutuhkan.
3. Computer Operator
Computer operator bertanggung jawab atas semua peralatan yang ada dalam
sistem komputerisasi, memeriksa dan mencoba komputer dan peralatan lain.
Apakah dapat dipergunakan sebagaimana mestinya dan menonfungsikan peralatan
bila tidak dipergunakan, membuat catatan tentang pelaksanaan jadwal kegiatan
penggunaan komputer, membuat backup dari sejumlah file yang ada dan
pengawasan dari file backup tersebut serta bertanggung jawab atas kebersihan dan
kerapihan ruang komputer.
4. Data Controler
32
Data controller bertugas menerima data dari sumber data dan melakukan
administrasi data ini, mengawasi keaslian data dan mencegah adanya
kemungkinan kesalahan dari sumber data sebelum data ini diakses di komputer
oleh data entry operator.
5. Data Entry Operator
Data entry operator bertugas melaksanakan input data dari sumber data untuk
diakses kedalam media komputer. Ia tidak boleh merangkap profesi sebagai data
controller.
6. Librarian
Librarian bertugas mendokumentasikan program-program yang digunakan dan
backup-nya, semua data file yang ada dan membuat backup-nya, semua arsip
dari sumber data yang perlu disimpan, semua output dari hasil pengolahan data.
7. Scheduler
Scheduler bertugas menyusun jadwal yang akan dipakai sebagai pedoman
operasional bagi semua bagian pada pengoperasian komputer, selain itu ia juga
membuat kalender proses bulanan, jadwal harian dan jadwal perekaman data
8. Network Manager
Network manager menangani dan mengawasi jaringan komputer dalam suatu
organisasi.
33
Digunakan dalam public service, sehingga mempercepat jasa pelayananan
dirumah tangga, dalam pembuatan surat, membantu penyelesaian pekerjaan
rumah anak sekolah dan berbagai perhitungan yang kompleks, internet ,
games dan multimedia
b. Dampak Negatif
Timbul ancaman penganguran akibat efisiensi dalam penanganan pekerjaan,
sehingga ada pekerjaan tertentu yang mengalami pengurangan jumlah tenaga
kerja
Penggunaan input data dan pengolahan yang tidak benar atau dilaksanakan
oleh orang yang tidak kompeten atau menggunakan program yang salah yang
akan menghasilkan output yang salah sehingga ada pihak yang dirugikan
Menimbulkan the system security issue, karena kurangnya pengawasan
penggunaan data di file yang ada, akan menyebabkan penyalahgunaan data
oleh orang lain.
Menimbulkan privacy issue, kurang terjaminnya data pribadi yang terekam
sehingga dapat disalah gunakan oleh pihak lain
2. Dampak Bagi Organisasi
a. Dampak Positif
Perencanaan dan pengambilan keputusan dapat dilakukan dengan cepat,
cermat dan tepat
Mempermudahkan pengawasan dan pengendalian dari kegiatan yang
dilaksanakan dalam organisasi
Dengan menggunakan komputer akan meningkatkan efisiensi.
Dalam penanganan masalah, sehingga akan meningkatkan produktifitas kerja
dan dayasaing terhadap kompetitor perusahaan.
Dalam menangani masalah yang kompleks, dapat ditangani secara bersama
dalam suatu team work atau grup kerja online
g. Dampak Negatif :
Akan timbul masalah dalam pembentukan system informasi baru akibat
perubahan cara pengolahan dengan menggunakan komputer
34
Tantangan dalam pengamanan
F. Soal Latihan 1
1. Jelaskan sistem komputer agar berfungsi dengan baik ?
2. Jelaskan jenis fungsi hardware dan software beserta fungsinya ?
3. Jelaskan mengenai pengertian dari brainware?
4. Sebutkan profesi-profesi dari brainware menurut tingkatannya?
5. Apa yang anda ketahui mengenai profesi seorang programer komputer?
6. Jelaskan dampak positif dan negatif penggunaan komputer bagi individu maupun
organisasi?
7. Jelaskan mengenai, Brainware komputer juga merupakan pelaksana dari apa yang
disebut sebagai Life Cycle of a Business Information System?
35
BAB II
PENGANTAR ALGORITMA DAN PROGRAM
A. Pengertian Algoritma
Algoritma ditinjau dari asal-usulnya berasal kata algorism yang berarti proses
menghitung dengan angka arab. Seseorang dikatakan sebagai algorist jika orang
tersebut berhitung menggunakan angka arab. Para ahli bahasa berusaha menemukan
asal kata ini namun hasilnya kurang memuaskan. Rashid tahun 2007 mengemukakan
bahwa para ahli sejarah Matematika menemukan asal kata tersebut nama penulis arab
terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi
dibaca menjadi Algorism. Al-Khuwarizmi menulis buku berjudul Kitab Al Jabar
WalMuqabala yang artinya “Buku pemugaran dan pengurangan” (The book of
restoration and reduction). Perubahan kata dari algorism menjadi algorithm muncul
karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran –sm
berubah menjadi –thm, k, karena perhitungan dengan angka Arab sudah menjadi hal
yang biasa, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode
perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam
bahasa Indonesia, kata algorithm diserap menjadi algoritma.
Algoritma merupakan gambaran (description) pelaksanaan suatu proses. Sebuah
proses dikerjakan oleh pemroses mengikuti algoritma yang sudah dibuat. An algorithm
is a set of steps that accomplishes a task, such as synthesizing caffeine. Although
programs require algorithms to be written n programming languages like Python, it is
easier to discuss and plan an algorithm using a mixture of a human language like
English and aittle mathematics (Campbell: 2009). Algoritma dalam perkembangan
berikutnya diartikan sebagai urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis dan logis”. Kata logis merupakan kata kunci dalam algoritma.
Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah
atau benar. Algoritma dalam beberapa konteks merupakan spesifikasi urutan langkah
untuk melakukan pekerjaan tertentu.
Algoritma dapat juga diartikan sebagai urutan langkah dalam menyelesaikan
masalah secara sistematis dan logis. Jadi pada sebuah algoritma harus tergambar urutan
36
langkah untuk menyelesaikan masalah yang sistematis dan logis.
Knuth (1973)
mengatakan bahwa algoritma dalam pengertian modern mempunyai kemiripan dengan
istilah resep, proses, teknik, prosedur kerja. Algoritma dapat berupa sekumpulan aturan-
aturan berhingga yang memberikan sederetan operasi untuk menyelesaikan suatu
masalah yang khusus. Hal ini sesuai dengan pendapat Rinaldi Munir yang
mendefenisikan algoritma sebagai urutan langkah-langkah logis penyelesaian masalah
yang disusun secara sistematis. Berdasarkan dua pengertian algoritma di atas, dapat
disimpulkan bahwa algoritma merupakan suatu istilah yang luas dan tidak hanya
berkaitan dengan dunia komputer.
Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan
bernilai salah atau benar. Algoritma jantung dalam mengembangkan ilmu komputer
atau informatika. Kita dalam kehidupan sehari-haripun banyak proses yang dinyatakan
dalam suatu algoritma. Sebagai contoh, cara-cara membuat kue atau masakan yang
dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma. Pada setiap resep
selalu ada urutan langkah-lankah membuat masakan. Bila langkah-langkahnya tidak
logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba suatu
resep masakan akan membaca satu per satu langkah-langkah pembuatan masakan, lalu
mengerjakan proses sesuai urutan yang dibaca.
Benda atau alat yang dapat mengeksekusi proses disebut pemroses (processor).
Prosesor tersebut dapat berupa manusia, komputer, robot atau alat alat elektronik
lainnya. Pemroses melakukan suatu proses dengan melaksanakan atau “mengeksekusi”
algoritma yang menjabarkan proses tersebut. Melaksanakan algoritma berarti
mengerjakan langkah-langkah di dalam algoritma tersebut. Pemroses mengerjakan
proses sesuai dengan algoritma yang diberikan kepadanya. Juru masak membuat kue
berdasarkan resep yang diberikan kepadanya, pianis memainkan lagu berdasarkan
papan not balok. Jadi, suatu algoritma harus dinyatakan dalam bentuk yang dapat
dimengerti oleh pemroses. Algoritma harus dapat dimengerti setiap langkahnya oleh
setiap orang, sehingga orang tersebut dapat mengerjakan operasi sesuai dengan langkah
yang direncanakan tersebut. Contoh 1. Langkah-langkah yang disusun untuk
menjumlahkan bilangan :
37
1. mulai
2. masukkan dua buah bilangan bulat, misalkan A,B
3. jumlahkah A dan B
4. simpan jumlah A dan B dalam C
5. tuliskan hasil C
6. selesai
Perlu juga dipahami disini bahwa algoritma yang berbeda dapat digunakan
untuk menyelesaikan suatu masalah dengan syarat yang sama. Tingkat kerumitan suatu
algoritma tergantung kepada seberapa banyak proses logika dan persyaratan yang
dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Umumnya, algoritma
yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki
tingkat kerumitan yang rendah, sementara algoritma yang membutuhkan waktu lama
untuk menyelesaikan suatu masalah membutuhkan tingkat kerumitan yang tinggi.
Untuk meningkatkan pemahaman perhatikan algoritma berikut:
Contoh 2, algoritma menghitung luas segitiga
1. Mulai
2. Baca data alas dan tinggi.
3. Hitung luas segitiga dengan rumus alas kali tinggi kali 0.5
4. Tampilkan hasil perhitungan luas
5. Selesai
Contoh 2 di atas merupakan algoritma yang sangat sederhana, hanya
mempunyai lima langkah. Algoritma Contoh 2 di atas tidak dijumpai perulangan
ataupun pemilihan kondisi. Semua langkah dilakukan hanya satu kali, sehingga sekilas
algoritma Contoh 2 di atas benar, namun jika dicermati dengan seksama maka
algoritma tersebut mengandung kesalahan yang mendasar, yaitu tidak adanya
pembatasan pada nilai data untuk alas dan tinggi. Bagaimana jika nilai data alas atau
tinggi adalah 0 (nol) atau bilangan negatif ? Tentunya hasil yang keluar menjadi tidak
sesuai dengan yang diharapkan. Dalam kasus seperti ini kita perlu menambahkan
langkah untuk memastikan nilai alas dan tinggi memenuhi syarat, misalnya dengan
melakukan pengecekan pada input yang masuk. Apabila input nilai alas dan tinggi
38
kurang dari 0 atau sama dengan maka program tidak akan dijalankan, sehingga
algoritma di atas dapat dimodifikasi menjadi seperti contoh 3.
Contoh 3 Hasil perbaikan algoritma perhitungan luas segitiga.
1. Mulai
2. Baca data alas dan tinggi.
3. Periksa nilai data alas dan tinggi, jika nilai data alas dan tinggi lebih besar dari
nol maka lanjutkan ke langkah ke 4 jika tidak maka selesai
4. Hitung luas segitiga dengan rumus alas kali tinggi kali 0.5
5. Tampilkan hasil perhitungan luas
6. Selesai
B. Peranan Algoritma dalam Pemograman
Algoritma merupakan tiang atau penopang utama dalam pemograman.
Umumnya cabang ilmu pemograman komputer mengarah ke dalam terminologi
algoritma. Banyak proses dalam kehidupan sehari-hari dinyatakan dalam suatu
algoritma. Cara-cara membuat kue atau masakan yang dinyatakan dalam suatu resep
juga dapat disebut sebagai algoritma. Pada setiap resep selalu ada urutan langkah-
langkah membuat masakan. Bila langkah-langkahnya tidak logis, tidak dapat
dihasilkan masakan yang diinginkan. Cookie yang mencoba suatu resep masakan akan
membaca satu per satu langkah-langkah pembuatannya lalu ia mengerjakan proses
sesuai yang ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut
pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer, robot atau
alat-alat elektronik lainnya. Pemroses melakukan suatu proses dengan melaksanakan
atau “mengeksekusi” algoritma yang menjabarkan proses tersebut.
Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara
primitif yaitu aksi-aksi yang didefenisikan sebelumnya dan diberi nama, dan
diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat kerjakan sehingga dapat
menyebabkan kejadian. Melaksanakan algoritma berarti mengerjakan langkah-langkah
di dalam algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma
yang diberikan kepadanya. Juru masak membuat kue berdasarkan resep yang diberikan
kepadanya, pianis memainkan lagu berdasarkan papan not balok. Jadi suatu algoritma
39
harus dinyatakan dalam bentuk yang dapat dimengerti oleh pemroses dan pemroses
harus mengerti setiap langkah dalam algoritma dan mengerjakan operasi yang
bersesuaian dengan langkah tersebut. Ciri-ciri algoritma yang baik adalah sebagai
berikut:
1. Tepat sasaran berarti memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan
2. Flexible dan portable maksudnya adalah flexible untuk dikembangkan lebih
lanjut dan portable untuk digunakan pada berbagai sistem dan mesin
3. Bersih dari kesalahan sistem ataupun logic
4. Murah dalam artian efisien dalam penggunaan piranti memori dan penyimpanan
lainnya serta cepat waktu pelaksanaannya.
5. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan
pengembangan.
6. Algoritma merupakan pemberian (description) pelaksanaan suatu proses. Sebuah
proses dikerjakan oleh pemroses mengikuti algoritma yang sudah dibuat.
Algoritma merupakan urutan langkah instruksi yang logis. Setiap langkah
instruksi mengerjakan suatu tindakan aksi.
7. Logis, terstruktur dan sistematis
8. Semua operasi terdefinisi dengan baik
9. Semua proses harus berakhir setelah sejumlah langkah dilakukan
10. Ditulis dengan bahasa yang standar dengan format pemrograman agar mudah
untuk diimplementasikan dan tidak menimbulkan arti ganda
Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah
benar. Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah
masukan yang diberikan, tidak peduli sebagus apapun algoritma, kalau memberikan
keluaran yang salah, pastilah algoritma tersebut bukanlah algoritma yang baik.
Pertimbangan kedua yang harus diperhatikan dalam membuat algoritma adalah
kita harus mengetahui seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini
penting terutama pada algoritma untuk menyelesaikan masalah yang memerlukan
aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik harus
mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya.
40
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari dua hal
yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan keluaran yang benar
(paling mendekati), tetapi jika kita harus menunggu berjam-jam untuk mendapatkan
keluarannya, algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan
keluaran yang cepat. Begitu juga dengan memori, semakin besar memori yang terpakai
maka semakin buruklah algoritma tersebut. Setiap orang dalam kenyataannya bisa
membuat algoritma yang berbeda untuk menyelesaikan suatu permasalahan yang sama,
walaupun terjadi perbedaan dalam menyusun algoritma, tentunya mengharapnya
keluaran mempunyai hasil sama. Jika terjadi demikian, carilah algoritma yang paling
efisien dan cepat.
Algoritma berisi langkah-langkah penyelesaian suatu masalah yang berupa
runtunan aksi (sequence), pemilihan aksi (selection), pengulangan aksi (iteration) atau
kombinasi dari ketiganya. Jadistruktur dasar pembangunan algoritma ada tiga, yaitu:
1. Struktur runtunan digunakan untuk program yang pernyataannya sequential atau
urutan.
2. Struktur pemilihan digunakan untuk program yang menggunakan pemilihan atau
penyeleksian kondisi.
3. Struktur Perulangan digunakan untuk program yang pernyataannya akan
dieksekusi berulang-ulang.
41
2. Pemrosesan yang efisien (cost rendah), dimana proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkin.
3. Sifatnya general, bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja,
tapi juga untuk kasus lain yang lebih general atau lebih bersifat umum.
4. Bisa dikembangkan (expandable) lebih jauh berdasarkan perubahan requirement
yang ada.
5. Mudah dimengerti oleh siapapun yang melihat, dia akan bisa memahami
algoritma yang dibuat. Apabila algoritma sulit dimengerti akibatnya program
akan dibuat menjadi susah dikelola (maintenance).
6. Portabilitas yang tinggi (portability), sehingga dengan mudah
diimplementasikan di berbagai platform komputer.
7. Precise (tepat, betul, teliti), dimana setiap instruksi harus ditulis dengan seksama
dan tidak ada keragu-raguan, dengan demikian setiap instruksi harus dinyatakan
secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap
sudah mengerti. Setiap langkah harus jelas dan pasti. Contoh: Tambahkan 1 atau
2 pada x, merupakan contoh instruksi mempanyai terdapat keraguan.
8. Jumlah langkah atau instruksi berhingga dan tertentu dalam artian untuk kasus
yang sama banyaknya, langkah harus tetap dan tertentu meskipun datanya
berbeda.
9. Efektif atau tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh
pemroses yang akan menjalankannya. Contoh: Hitung akar 2 dengan presisi
sempurna, ini merupakan instruksi di atas tidak efektif, agar efektif instruksi
tersebut diubah menjadi misalnya: Hitung akar 2 sampai lima digit di belakang
koma.
10. Harus terminate. Jalannya algoritma harus ada kriteria berhenti. Pertanyaannya
adalah apakah bila jumlah instruksinya berhingga maka pasti terminate?
11. Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan
diikuti dengan seksama maka dihasilkan output yang diinginkan.
42
D. Tipe-tipe Algoritma Berdasarkan Format Penulisan
Algoritma adalah independen terhadap bahasa pemograman tertentu,
artinya algoritma yang telah dibuat tidak boleh hanya dapat diterapkan pada
bahasa pemrograman tertentu. Penulisan algoritma tidak terikat pada suatu aturan
tertentu, tetapi harus jelas maksudnya untuk tiap langkah algoritmanya
Penyajian algoritma secara garis besar bisa dalam 2 bentuk penyajian yaitu
tulisan (deskriptif dan pseudocode) dan gambar. Algoritma yang disajikan dengan
tulisan yaitu dengan struktur bahasa tertentu (misalnya bahasa Indonesia atau bahasa
Inggris) dan pseudocode. Pseudocode adalah kode yang mirip dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat digunakan
untuk menggambarkan algoritma yang akan dikomunikasikan kepada pemrogram.
Sedangkan algoritma disajikan dengan gambar, misalnya dengan flowchart. Secara
umum, pseudocode mengekspresikan ide-ide secara informal dalam proses penyusunan
algoritma. Salah satu cara untuk menghasilkan pseudocode adalah dengan
meregangkan aturan-aturan bahasa formal. Pendekatan ini umumnya digunakan
ketika bahasa pemrograman yang akan digunakan telah diketahui sejak awal. Namun
pada dasarnya algoritma dibagi menjadi beberapa macam berdasarkan format
penulisannya.
1. Deskriptif
Algoritma bertipe deskriptif merupakan algoritma yang ditulis dalam bahasa
manusia sehari-hari dari perancangnya (misalnya bahasa Indonesia atau bahasa
Inggris) dan dalam bentuk kalimat. Setiap langkah algoritma diterangkan dalam
satu atau beberapa kalimat. Sebagai contoh misalnya algoritma menentukan
bilangan terbesar dari 3 bilangan berikut ini:
Algoritma Menentukan_bilangan_terbesar_dari_3_bilangan
Mulai
Meminta memasukan (input) 3 bilangan dari pengguna (user), misalkan
bilangan a, b, dan c.
Apabila bilangan a lebih besar dari b maupun c, maka bilangan a
merupakan bilangan terbesar.
43
Jika tidak (bilangan a tidak lebih besar dari b atau c) berarti bilangan a
sudah pasti bukan bilangan terbesar. Kemungkinannya tinggal bilangan b
atau c.
Jika bilangan b lebih besar dari c, maka b merupakan bilangan terbesar.
Sebaliknya jika bilangan b tidak lebih besar dari c, maka bilangan c
merupakan yang terbesar.
Selesai.
2. Pseudocode
Pseudocode berasal dari kata pseudo dan code. Pseudo berarti imitasi dan
code berarti kode atau lambang yang dihubungkan dengan instruksi ditulis dalam
bahasa komputer (kode bahasa pemrograman). Jadi apabila diterjemahkan secara
bebas, pseudocode berarti tiruan atau imitasi dari kode bahasa pemrograman. Pada
dasarnya, pseudocode merupakan suatu bahasa yang memungkinkan programmer
untuk berpikir terhadap permasalahan yang harus dipecahkan tanpa harus
memikirkan sintaks dari bahasa pemrograman yang tertentu. Tidak ada aturan yang
jelas dalam penulisan sintaks di dalam pseudocode. Jadi pseudocode digunakan
untuk menggambarkan logika urut-urutan dari program tanpa memandang
bagaimana bahasa pemrogramannya.
Walaupun pseudocode tidak ada aturan penulisan sintaksnya, di dalam buku ini
akan diberikan suatu aturan-aturan penulisan sintaks yang cukup sederhana agar
pembaca dapat lebih mudah dalam mempelajari algoritma yang ada di dalam
buku ini. Pseudocode yang ditulis di dalam buku ini akan menyerupai sintaks dalam
bahasa Pascal, namun dibuat sesederhana mungkin sehingga tidak akan ada
kesulitan bagi pembaca untuk memahami algoritma dalam buku ini walaupun
pembaca belum pernah mempelajari bahasa Pascal. Pseudocode didasarkan pada
bahasa pemrograman yang sesungguhnya seperti Basic, Fortran atau Pascal.
Pseudocode yang berbasis bahasa Pascal merupakan pseudocode yang sering
digunakan. Kadang-kadang orang menyebut pseudocode sebagai Pascal-Like
algorithm. Apabila Contoh 2, ditulis dalam pseudocode berbasis bahasa Pascal akan
tampak seperti pada contoh 4 berikut ini.
44
Contoh 4. Pseudocode.
1. Mulai
2. Read alas, tinggi
3. Luas := 0.5 * alas * tinggi
4. Write Luas
5. Selesai
Contoh 4 diperlihatkan sebuah algoritma yang sudah sangat mirip dengan bahasa
Pascal. Pernyataan seperti Read dan Write merupakan kata simpan (fungsi bawaan
Pascal) yang sudah ada dalam bahasa Pascal yang masing-masing menggantikan
kata “baca data” dan “tampilkan”. Dengan menggunakan pseudocode seperti di atas
maka proses penterjemahan dari algoritma ke kode program menjadi lebih mudah.
Contoh 5. pseudocode
input (c,d) {menerima masukan 2 bilangan c dan d}
if c < d then {operasi kondisional}
e ← a+b {e di assignment oleh nilai a dan b}
else
e ← a–b
output (e) {hasil keluaran berupa bilangan e}
{Nama fungsi, menyebutkan domain dan range}
function RealToInt (x : real) → integer {mengubah harga x yang bertype real
menjadi harga ekivalen yang bertype integer}
procedure tukar (input/output x,y : real) {Nama prosedur, menyebutkan “IS”
initial state, “FS” final state dan proses}
3. Diagram Alir
Selain dalam bentuk tulisan, algoritma juga dapat ditulis dalam bentuk
diagram-diagram dengan anak panah sebagai penunjuk urutan langkah
algoritmanya. Algoritma yang ditulis dengan simbol-simbol atau lambang dikenal
dengan flowchart. Diagram alir merupakan bentuk grafis/visual dari algoritma yang
berisikan langkah-langkah yang harus diikuti dalam menyelesaikan suatu
permasalahan. Simbol yang digunakan merepresentasikan kegiatan tertentu.
Flowchart diawali dengan penerimaan (input) dan diakhiri dengan penampilan
(output). Sebuah flowchart pada umumnya tidak menampilkan instruksi bahasa
45
pemrograman, namun menetapkan konsep solusi dalam bahasa manusia ataupun
notasi matematis. Berikut ini akan dibahas simbol – simbol yang sering digunakan
dalam menyusun flowchart.
Tabel 6: Simbol dan Keterangan Diagram Alir
46
Simbol Nama Pengertian
Simbol Merepresentasikan informasi deskriptif
Anotasi tambahan, komentar atau catatan penjelasan.
Dalam simbol ini, kita dapat menuliskan
komentar apapun dan sebanyak apapun, hal ini
berguna untuk memperjelas langkah-langkah
dalam flowchart. Garis vertical dan garis
terputus – putus dapat ditempatkan pada sisi
kanan maupun kiri.
47
Simbol Nama Pengertian
page atau off page. On page connector
digunakan untuk menghubungkan suatu langkah
dengan langkah lain dari flowchart dalam satu
halaman, sedangkan off page connector
digunakan untuk menghubungkan suatu langkah
dengan langkah lain dari flowchart dalam
halaman yang berbeda. Connector ini biasanya
dipakai saat media yang kita gunakan untuk
menggambar flowchart tidak cukup luas untuk
memuat gambar secara utuh, jadi perlu dipisah
pisahkan. Dalam sepasang connector biasanya
diberi label tertentu yang sama agar lebih
mudah diketahui pasangannya.
48
Gambar 16: Diagram Alir menentukan bilangan terbesar dari 3 bilangan
49
Untuk pengolahan data dengan komputer, umumnya urutan dasar pemecahan suatu
masalah adalah
a. START, berisi pernyataan untuk persiapan peralatan yang diperlukan sebelum
menangani pemecahan persoalan.
b. READ, berisi pernyataan kegiatan untuk membaca data dari suatu peralatan
input.
c. Proses, berisi kegiatan yang berkaitan dengan pemecahan persoalan sesuai
dengan data yang dibaca.
d. WRITE, berisi pernyataan untuk merekam hasil kegiatan ke peralatan output.
e. END, mengakhiri kegiatan pengolahan.
Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart,
namun ada beberapa anjuran:
a. Hindari pengulangan proses yang tidak perlu dan logika yang berbelit
sehingga jalannya proses menjadi singkat.
b. Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah
untuk memperjelas.
c. Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END
50
Keterangan Gambar:
a. Simbol pertama menunjukkan dimulainya sebuah
program.
b. Simbol kedua menunjukkan bahwa input data dari
panjang dan lebar.
c. Data dari panjang dan lebar akan diproses pada simbol
ketiga dengan menggunakan perumusan Luas = panjang
x lebar l
d. Simbol keempat menunjukkan hasil output dari proses
dari symbol ketiga yaitu luas
b. Simbol kelima atau terakhir menunjukkan berakhirnya
Gambar 17. Diagram
program dengan tanda End.
alir menghitung luas
persegi
51
If A[A] < A[j-1] then
Exchange A[j] ↔ A[j-1]
Dalam bentuk pseudocode dalam bahasa Pascal dapat ditulis prosedur berikut ini:
Beberapa hal yang perlu diperhatikan dalam membuat algoritma antara lain
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi
tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa
pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi
algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini
dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi
algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka
sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa
pemrograman secara umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam
notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh
52
k
e
ik
53
hasilnya dinamakan program. Jadi program adalah perwujudan atau implementasi teknis
dari algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga dapat
dilaksanakan oleh komputer. Kata “algoritma” dan “program” seringkali dipertukarkan
dalam penggunaannya. Misalnya ada orang yang berkata seperti ini: “program
pengurutan data menggunakan algoritma selection sort”. Atau pertanyaan seperti ini:
“bagaimana algoritma dan program menggambarkan grafik tersebut?”.
Jika kita sudah memahami pengertian algoritma yang sudah disebutkan sebelum
ini, kita akan dapat membedakan arti kata algoritma dan program. Algoritma adalah
langkah-langkah penyelesaikan masalah, sedangkan program adalah realisasi algoritma
dalam bahasa pemrograman. Program ditulis dalam salah satu bahasa pemrograman dan
kegiatan membuat program disebut pemrograman (programming). Orang yang menulis
program disebut pemrogram (programmer). Tiap-tiap langkah di dalam program disebut
pernyataan atau instruksi atau statement. Jadi, program tersusun atas sederetan instruksi.
Bila suatu instruksi dilaksanakan, maka operasi yang bersesuaian dengan instruksi
tersebut dikerjakan komputer.
F. Pemrograman Prosedural
Pemrograman berasal dari kata program yang diberiawalan pe– dan akhiran –an.
Dalam buku ini, program berarti program komputer. Pengertian program komputer
menurut Zelle (2002) dalam bukunya “Python Programming: An Introduction to
Computer Science” adalah sekumpulan instruksi langkah per langkah yang
memberitahukan mengenai apa yang harus dilakukan computer secara tepat dan cepat.
Pemrograman adalah segala kegiatan pembuatan program komputer.
Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti
Algoritma adalah proses yang prosedural. Pada pemrograman prosedural, program
dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi terdiri atas
runtutan (sequence) instruksi (perintah) yang dilaksanakan satu per satu secara berurutan
oleh pemroses (komputer). Alur pelaksanaan instruksi dapat berubah apabila ditemukan
pencabangan kondisional. Data yang disimpan di dalam memori akan dimanipulasi oleh
instrusi secara beruntun atau prosedural. Paradigma pemrograman seperti ini dinamakan
pemrograman prosedural.
54
Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran dan C
mendukung kegiatan pemrograman prosedural, karena itu mereka dinamakan juga
bahasa prosedural. Selain paradigma pemrograman prosedural, ada lagi paradigma
yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming).
Paradigma pemrograman ini merupakan trend baru dan sangat populer akhir-akhir ini.
Paradigma pemrograman yang lain adalah pemograman fungsional, pemogram
deklaratif dan pemograman konkuren. Pada kesempatan ini penulis hanya menyajikan
paradigma pemograman prosedural saja.
55
Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.
Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa aturan-
aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan
memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya
dalam bahasa itu saja. Umumnya bahasa pemograman dibedakan berdasarkan tujuan
dan fungsi dari bahasa tersebut.
1. Kiat Belajar Pemograman
Secara sistematis berikut diberikan kiat-kiat untuk belajar memprogram dan
belajar bahasa pemrograman serta produk yang dapat dihasilkan:
a. Belajar Memprogram
1) Belajar memprogram berarti belajar bahasa pemrograman.
2) Belajar memprogram berarti belajar tentang strategi pemecahan masalah,
metodologi dan sistematika pemecahan masalah kemudian menuliskannya
dalam notasi yang disepakati bersama.
3) Belajar memprogram bersifat pemahaman terhadap persoalan,analisis dan
sintesis.
4) Belajar memprogram bertitik berat kemampuan untuk membuat design
program.
b. Belajar Bahasa Pemrograman
1) Belajar bahasa pemrograman berarti belajar memakai suatu bahasa
pemrograman, aturan sintaks, tatacara untuk memanfaatkan pernyataan yang
spesifik untuk setiap bahasa.
2) Belajar bahasa pemrograman titik beratnya adalah pada pengkodean (coder)
permasalahan ke dalam urutan yang logis .
c. Produk yang Dihasilkan Pemrogram
1) Program dengan rancangan yang baik (metodologis, sistematis).
2) Dapat dieksekusi oleh mesin.
3) Berfungsi dengan benar.
56
4) Sanggup melayani segala kemungkinan masukan.
5) Disertai dokumentasi.
2. Menulis Program
Algoritma yang telah dibuat, diterjemahkan dalam bahasa komputer menjadi
sebuah program. Perlu diperhatikan bahwa pemilihan algoritma yang salah akan
menyebabkan program memiliki untuk kerja yang kurang baik. Program yang baik
memiliki standar penilaian.
a. Standar teknik pemecahan masalah
1) Teknik Top-Down
Teknik pemecahan masalah yang paling umum digunakan. Prinsipnya adalah
suatu masalah yang kompleks dibagi-bagi ke dalam beberapa kelompok
masalah yang lebih kecil. Dari masalah yang kecil tersebut dilakukan analisis.
Jika dimungkinkan maka masalah tersebut akan dipilah lagi menjadi sub
bagian dan setelah itu mulai disusun langkah-langkah penyelesaian yang lebih
detail.
2) Teknik Bottom-Up
Prinsip teknik bottom up adalah pemecahan masalah yang kompleks
dilakukan dengan menggabungkan prosedur-prosedur yang ada menjadi satu
kesatuan program sebagai penyelesaian masalah tersebut.
3. Standar penyusunan program
a. Kebenaran logika dan penulisan.
b. Waktu minimum untuk penulisan program.
c. Kecepatan maksimum eksekusi program.
d. Ekspresi penggunaan memori.
e. Kemudahan merawat dan mengembangkan program.
f. User Friendly.
g. Portability.
h. Pemrograman modular.
4. Mencari Kesalahan
a. Kesalahan sintaks (penulisan program).
57
b. Kesalahan pelaksanaan mencakup sistimatika, logika, dan ketelitian.
6. Dokumentasi Program
Dokumentasi program ada dua macam yaitu dokumentasi internal dan
dokumentasi eksternal. Dokumentasi internal adalah dokumentasi yang dibuat di
dalam program yaitu setiap kita menuliskan baris program sebaiknya diberi komentar
atau keterangan supaya mempermudah kita untuk mengingat logika yang terdapat di
dalam instruksi tersebut, hal ini sangat bermanfaat ketika suatu saat program tersebut
akan dikembangkan. Dokumentasi eksternal adalah dokumentasi yang dilakukan dari
luar program yaitu membuat user guide atau buku petunjuk aturan atau cara
menjalankan program tersebut.
7. Pemeliharaan Program
a. Memperbaiki kekurangan yang ditemukan kemudian.
b. Memodifikasi, karena perubahan spesifikasi.
58
2. Buat Algoritma dan Struktur Cara Penyelesaianya
Jika masalahnya kompleks, maka algoritma dibagi ke dalam modul-modul
yang sederhana, kemudian modul-modul tersebut disusun untuk menyelesaikan
permasalahan yang kompleks tadi. Tahap penyusunan algoritma seringkali dimulai
dari langkah yang global terlebih dahulu. Langkah global ini diperhalus sampai
menjadi langkah yang lebih rinci atau detail. Cara pendekatan ini sangat bermanfaat
dalam pembuatan algoritma untuk masalah yang kompleks. Penghalusan langkah
dengan cara memecah langkah menjadi beberapa langkah. Setiap langkah diuraikan
lagi menjadi beberapa langkah yang lebih sederhana. Penghalusan langkah ini akan
terus berlanjut sampai setiap langkah sudah cukup rinci dan tepat untuk dilaksanakan
oleh pemroses.
3. Menghitung luas dan keliling lingkaran Proses kerjanya sebagai berikut:
a. Baca jari-jari lingkaran
b. Tentukan konstanta phi = 3.14
c. Hitung luas dan keliling
L = phi*r*r
K = 2*phi*r
d. Cetak luas dan keliling
4. Menghitung rata-rata tiga buah data
Algoritma dengan struktur bahasa Indonesia
- Baca bilangan a, b, dan c
- Jumlahkan ketiga bilangan tersebut
- Bagi jumlah tersebut dengan 3 kemudian tulis hasilnya
Algoritma dengan pseudocode
- input (a, b, c)
- Jml = a+b+c
- Rerata = Jml/3
- Output (Rerata)
59
5. Algoritma konversi suhu dalam derajat Celcius ke derajat Kalvin
Penyelesaian menggunakan pseudocode:
Input (Celcius)
Kalvin = Celcius + 273
Output (Kalvin)
H. Soal Latihan 2
Dari permasalahan – permasalahan di bawah ini, susunlah sebuah algoritma
untuk menyelesaikannya. Anda dapat menyusunnya dengan menggunakan
pseudocode ataupun flowchart
1. Menghitung luas lingkaran!
2. Memasak Roti
3. Menggunakan Komputer di Laboratorium
4. Menghitung rata – rata dari 3 buah bilangan
5. Menentukan apakah suatu bilangan merupakan bilangan prima (atau bukan).
6. Menghitung perkalian hanya dengan operator penjumlahan.
7. Mencetak N buah bilangan prima yang pertama.
8. Menghitung jumlah N suku dari deret aritmatika : Sn = 3 + 7 + 11 + …… + (4n-1)
9. Menghitung faktorial dari suatu bilangan.
10. Pada sebuah laboratorium penelitian terdapat petunjuk penggunaan peralatan
atau bahan dalam berbagai satuan skala suhu yaitu Fahrenheat, Reamor dan
Celsius. Agar memudahkan pelaksanaan penelitian instruktur laboratorium
meminta saudara untuk membuat algoritma konversi suhu skala suhu tersebut
dari Fahrenheat ke Celsius, Fahrenheat ke Reamor, Celsius ke Fahrenheat,
Celsius ke Reamor, Reamor ke Celsius Reamor ke Fahrenheat.
11. Buat Algoritma untuk menghitung, sebuah kabel jalur kereta gantung sepanjang
500 m direntang diantara 2 menara dengan 1 menara penunjang ditengah-
tengahnya. Kecepatan kereta tergantung kepada jarak kereta dari menara
terdekat. Ketika kereta berada pada jarak kecil dari 25 m dari menara terdekat
2
kecepatan kereta adalah : vel 0 , 2 d m / dt dimana d adalah jarak kereta ke
60
menara terdekat dan ketika kerata berada pada jarak >= 25 m dari menara
2
kecepatannya adalah vel d 0.01d m / dt .
Saudara diminta untuk menghitung potensial pada titik (r) solenoida tak
terhingga dengan jumlah lilitan N persatuan panjang dengan program komputer.
Bila penampang solenoida berbentuk lingkaran berjari-jari R dan arus mengalir
arus sebesar I. Buatlah algoritma menyelesainya berdasarkan persamaan
berikut:
o NI
V r, (r < R atau titik berada di dalam selenoida)
2
o NI R 2
V , (r > R atau titik berada di luar selenoida)
2 r
12. Belajar memprogram dan belajar bahasa pemrograman adalah dua hal yang
berbeda. Jelaskan!
13. Tentukan letak kesalahan algoritma memutar kaset tape recorder di bawah ini:
Algoritma Memutar Kaset
a. Pastikan tape recorder dalam keadaan POWER ON.
b. Tekan tombol PLAY.
c. Masukkan kaset ke dalam tape recorder.
61
BAB III
STRUKTUR PROGRAM PASCAL
A. Sejarah Pascal
Pada tahun 1960, beberapa ilmuan bekerja untuk mengembangkan bahasa ALGOL
(Algorithmic Logic). Salah satu dari mereka adalah Niklaus Wirth anggota dari Swiss
Federal Institute of Technology (ETH-Zurich). Pada tahun 1971 Niklaus Wirth
mempublikasikan suatu spesifikasi untuk bahasa terstruktur yang dalam beberapa hal
menyerupai ALGOL (Lecarme and Nebut: 1984). Dia menamainya Pascal, sebagai
penghormatan kepada Blaise Pascal, Filosuf dan Matematikawan Francis abad 17, yang
menciptakan komputer digital pertama. Bahasa Pascal berorientasi data dimana
programer diberi kebebasan untuk mendefenisikan tipe data sendiri. Kebebasan
programer mendifisikan tipe data juga menuntut programer harus melakukan
pengecekan tipe data secara ketat yang menjamin agar tipe data yang didefenisikan tidak
membingungkan. Pascal ditujukan sebagai bahasa pembelajaran, dan telah diterima
secara luas. Pascal menggunakan bahasa Inggris sebagai penulisan kodenya, sehingga
penulisannya dan pengembangannya mudah dipahami. Ken Bowles tahun 1975
mengembangkan sistem UCSD Pascal (University of California at San Diego) yang
diterapkan pada komputer personal Apple II, komputer mikro yang sangat terkenal pada
saat itu. USCD Pascal menjadi standard dan telah digunakan di perguruan tinggi secara
luas, ditambah murahnya harga komputer Apple II dibandingkan dengan komputer
mainframe.
Turbo Pascal for Windows (TPW) adalah sebuah program yang dipakai dalam
penggunaan bahasa pemrograman pascal pada komputer yang menggunakan sistem
operasi windows. Berdasarkan sejarahnya Turbo pascal pada awalnya adalah Compiler
Blue Label Pascal yang dibuat untuk sistem operasi komputer mikro berbasis kaset,
NasSys, milik Nascom tahun 1981 oleh Anders Hejlsberg. Kompiler tersebut ditulis
ulang untuk CP/M dan dinamai Compas Pascal, dan kemudian dinamai dengan Turbo
Pascal untuk sistem operasi MS-DOS dan CP/M.
62
Versi Turbo Pascal untuk komputer Apple Macintosh sebenarnya pernah
ditembangkan tahun 1986, namun pengembangannya dihentikan sekitar tahun 1992.
Versi-versi lain pernah tersedia pula untuk mesin-mesin CP/M seperti DEC Rainbow
dalam beberapa penembangan. Turbo Pascal adalah sebuah sistem pengembangan
perangkat lunak yang terdiri atas kompiler dan lingkungan pengembangan terintegrasi
(Integrated Development Environment - IDE) atas bahasa pemrograman pascal untuk
sistem operasi CP/M, CP/M-86, dan MS-DOS, yang dikembangkan oleh Borland pada
masa kepemimpinan Philippe Kahn.
Nama Borland Pascal umumnya digunakan untuk paket perangkat lunak tingkat
lanjut (dengan kepustakaan yang lebih banyak dan pustaka kode sumber standar)
sementara versi yang lebih murah dan paling luas digunakan dinamakan sebagai Turbo
Pascal. Nama Borland Pascal juga digunakan sebagai dialek spesifik Pascal buatan
Borland. Borland telah mengembangkan tiga versi lama dari Turbo Pascal secara gratis
disebabkan karena sejarahnya yang panjang khusus untuk versi 1.0, 3.02, dan 5.5 yang
berjalan pada sistem operasi MS-DOS.
Nama Turbo diambil karena berhubungan dengan kecepatan kompilasi dari
produksi program eksekusinya (execute). Siklus edit/compile/run lebih cepat
dibandingkan implementasi dari Pascal yang lain karena semuanya berhubungan dengan
membangun program yang disimpan di RAM, dan karena ini merupakan kompiler sekali
yang ditulis pada bahasa Assembly.
Kompilasi terjadi dengan sangat cepat dibandingkan dengan bahasa yang lain
(bahkan kompiler Borland untuk bahasa C), dan waktu programmer juga menjadi hemat
sejak program dapat dikompile dan dijalankan dari IDE. Kecepatan file execute COM
adalah terobosan untuk pengembangan pemograman yang hanya memiliki satu
pengalaman dalam mikrokomputer program seperti BASIC.
Borland membeli lisensi atas kompiler PolyPascal yang ditulis oleh Anders
Hejlsberg (Poly Data adalah nama perusahaan yang didirikannya di Denmark), dan
menambahkan antar muka pengguna serta editor. Anders kemudian bergabung sebagai
63
karyawan dan menjadi arsitek atas semua versi kompiler Turbo Pascal dan tiga versi
pertama Borland Delphi.
Versi pertama dari Turbo Pascal, yang kemudian disebut sebagai versi 1, memiliki
unjuk kerja yang sangat cepat dibandingkan kompiler Pascal untuk komputer mikro
lainnya. Kompiler tersebut tersedia untuk sistem operasi CP/M, CP/M-86, dan MS-DOS,
dan penggunaannya sangat luas pada masa itu. Versi Turbo Pascal untuk CP/M saat itu
bisa digunakan pada komputer Apple II yang sangat populer jika digunakan dengan
sebuah Z-80 SoftCard, produk perangkat keras pertama yang ditembangkan microsoft di
tahun 1980.
Ketika pertama kali versi Turbo Pascal muncul pada tanggal 20 November 1983,
jenis IDE yang digunakannya masih terbilang baru. Pada debutnya terhadap pasar
perangkat lunak di Amerika, perangkat lunak tersebut dibandrol dengan harga mencapai
USD$49.99. Kualitas kompiler pascal terintegrasi terdapat dalam Turbo Pascal sangat
baik dibandingkan kompetitor lain dan atas fitur-fitur tersebut ditawarkan dengan harga
yang terjangkau. Versi 2 dan 3 merupakan pengembangan lebih lanjut dari versi
sebelumnya, mampu berkerja dalam memori, dan menghasilkan berkas biner berekstensi
.COM/.CMD. Dukungan atas sistem operasi CP/M dan CP/M-86 dihentikan setelah versi
3. Beberapa produk lain yang kompatibel dengan Turbo Pascal juga bermunculan seperti
Free Pascal dan Virtual Pascal.
Penggunaan komputer personal juga meningkat karena dukungan tiga sistem
operasi personal CP/M-86, Softech UCSD dan MicroSoft PC-Dos. Awal tahun 1980
Pascal telah diterima secara luas di kalangan akademisi. Terdapat dua hal yang
membuatnya semakin terkenal Pascal yaitu :
1. Education Testing Service, perusahaan yang mengelola ujian masuk perguruan tinggi
di Amerika Serikat, memutuskan menambahkan ujian Ilmu Komputer untuk tingkat
SMA. Untuk melakukan ujian ini dipilih bahasa Pascal, karena hal tersebut, pelajar
SMA dan juga mahasiswa mulai belajar Pascal hingga tahun 1999, hingga akhirnya
diganti dengan bahasa C++ dan selanjutnya diganti dengan Java
64
2. Kedua, perusahaan Borland Internasional hadir dengan compiler Turbo Pascal untuk
komputer personal IBM. Compiler ini sangat revolusioner. Turbo Pascal dibuat
dengan modifikasi pada Pascal Standard dan hal ini membawa manfaat yang besar
pada kecepatannya. Dari versi 1.0 hingga 7.1, Borland secara berkesinambungan
terus mengembangkan Turbo Pascal. Salah satu kritik atas versi Pascal awal adalah
kelemahannya akan pemisahan kompilasi pada modul-modul. Wirth menyadari akan
hal tersebut, sehingga di menciptakan suatu bahwa pemrograman Modula-2. Borland
menutupi kekurangan ini dengan unitnya. Dengan versi 7.0 banyak fitur-fitur yang
telah ditambahkan. Salah satu adalah DPMI (Dos Protected Sistem Interface) salah
satu cara untuk menjalankan program-program dos dalam sistem terproteksi,
memperoleh kecepatan lebih dan memecahkan rintangan 640K pengaksesan memori
pada DOS. Ketika Windows 3.0 hadir, Borland menciptakan Turbo Pascal untuk
Windows, hadir dengan kecepatan dan kemudahan untuk antar muka grafis (grapical
user interface)
Mengapa mesti belajar bahasa Pascal? Pertanyaan ini seringkali muncul bagi para
programmer baru. Mereka sering bilang bahwa banyak bahasa programmer yang ada di
pasaran yang jauh lebih canggih daripada pascal, seperti : C++, Java, C, Visual Basic,
dll. Tetapi benarkah demikian ? Atau hanya trand yang berkembang sehingga mereka
mengukutinya begitu saja. Berikut ini akan diberikan gambaran mengapa mesti belajar
bahasa pascal.
1. Kecepatan (speed), kecepatan bahasa Pascal untuk mengkompilasi baris program
dapat dikatakan sangat cepat. Anda bisa banyangkan kode baris program yang ribuan
jumlahnya diterjemahkan dalam beberapa detik saja. Anda buktikannya dengan
membandingkannya dengan bahasa pemrograman lainnya (C, C++, Java, dll)
2. Tipe data yang kuat Pascal artinya mengizinkan pemakai untuk membuat tipe data
sendiri, walaupun demikain harus dengan beberapa batasan. Pascal tidak mengenal
pengubahan tipe data (type casting) dan hal ini tentu saja memberi manfaat karena
kemungkinan timbulnya kesalahan (error) cukup kecil.
65
3. Ukuran hasil maksudnya adalah ukuran hasil kompilasi dari program Pascal hanya
beberapa kilo byte saja. Sungguhpun kecil, bila kita bandingkan dengan kapasitas
ruang harddisk yang 40 mega byte, dapat dibanyangkan seberapa besar program
Pascal yang dapat kita buat.
4. Portabilitas maksudnya adalah program Pascal dapat berjalan pada jenis komputer
yang berbeda, seperti : IBM, Apple, dan lain lain.
5. Produktivitas, untuk belajar suatu bahasa pemrograman pada dasarnya sama, yaitu
harus mengenal aturan dan struktur data dari bahasa tersebut. Anda dapat bayangkan
kalau tukang bangun tidak memiliki arsitektur yang jelas tentang bangunan rumah
tersebut, tentu saja rumah yang akan dibangun tidak akan baik. Pascal menyediakan
struktur data yang jelas, dengan demikian produktivitas hasil kerja kita tentu saja
akan bertambah. Satu hal yang jelas adalah bahasa Pascal for Windows atau visual
delphi adalah turunan dari Turbo Pascal. Jika struktur dari program Pascal sudah kita
pahami, maka untuk memahami Pascal for Windows ataupun visual Delphi tidaklah
sulit lagi. Sebagai mana orang bijak berkata “belajar dari dasar merupakan modal
utama membangun sesuatu yang paling besar”, untuk itulah Turbo Pascal hadir bagi
memogram komputer dasar.
66
Pascal memberikan pembatas yang jelas pada tiap-tiap blok, seperti pada blok
program utama, sub-program, struktur kontrol (pengulangan/ pemilihan), dll.
Pemakaian kata kunci begin untuk mengawali operasi pada blok dan end untuk
menutupnya memudahkan programmer menyusun programnya dengan mudah.
Seperti contoh:
If X>0 then
begin Write ( ‘ bilangan positif’);
Writeln ( ‘ program selesai’);
End;
c. Satu pintu masuk dan satu pintu keluar pada blok pemilihan dan pengulangan.
Contoh di atas juga mengilustrasikan pintu masuk tunggal pada suatu blok
pemilihan yaitu suatu test logika X>0, dengan pintu keluaran yang satu pula (satu
disini maksudnya bukan dua baris perintah output tapi suatu paket perintah yang
dirangkai dengan Begin .. End.
Dibakukan oleh ISO pada tahun 1983 dan dikembangkan dalam beberapa versi,
diantaranya: USCD PASCAL, MS PASCAL, TURBO PASCAL dan lain-lain. Dengan
semakin berkembangnya teknologi dalam komputasi, Pascal dimanfaatkan untuk
pengembangan DELPHI (berasal dari nama suatu kota di masa Yunani kuno), suatu
bahasa pemrograman visual yang menonjolkan pada efek grafis dan orientasi pada
objek-objek yang siap dipakai, karena memiliki Visual Component Library (VCL).
67
2) Deklarasi tipe data (TYPE)
3) Deklarasi konstanta (CONST)
4) Deklarasi label (LABEL)
5) Deklarasi variabel (VAR)
6) Deklarasi sub-program (PROCEDURE dan FUNCTION)
3. Bagian Badan Program
BEGIN (awal akan membuat pernyataan
Perintah-perintah atau pernyataan
END. (Bagian penutup)
Bagaimana implementasi masing-masing bagian di atas dapat dijelaskan
seperti uraian berikut. Bentuk program pascal yang paling sederhana adalah
program yang hanya terdiri dari sebuah bagian pernyataan saja.
Begin
End.
Bentuk umum dari bagian pernyataan adalah :
Begin
Statement;
End .
Contoh :
Begin
Writeln ( ‘Saya Akmam’ ); Writeln ( ‘--------------‘ )
End .
Outputnya :
Saya Akmam
---------------
68
1. Judul Program
Judul program digunakan untuk memberi nama program. Judul progam bersifat
optional. Jika judul program ditulis, judul diawali dengan kata simpan Program di
awal dari program dan diakhiri dengan titik koma (;), agar mudah memahami
maksudnya perhatikan contoh-contoh berikut:.
Contoh penulisan judul program :
PROGRAM coba;
PROGRAM gaji(input,output);
PROGRAM latihan_1;
Contoh program lengkap sederhana:
Program contoh ;
Begin
Writeln ( ‘Jurusan Fisika FMIPA UNP Padang’ );
Writeln ( ‘ Menyapa, Apa Kabar ? );
Writeln( ‘---------------‘ );
End .
2. Bagian Deklarasi
a. Identifier umum
Identifier merupakan bagian yang didefinisikan sendiri oleh pemrogram.
Pada bagian ini pemogram mendeklarasikan jenis variabel-variabel yang akan
digunakan dalam pernyataan progam. Pemrogram mempunyai kebebasan untuk
menentukan nama identifiernya, dengan syarat nama tersebut tidak sama dengan
identifier standar dan reserved word yang akan dibahas lebih lanjut. Hal ini untuk
mencegah kesalahan yang bisa timbul akibat tumpang tindih identifier dalam
program.
b. Identifier Standar (Baku)
Identifier standar merupakan identifier yang didefinisikan oleh pembuat
kompiler Pascal. Biasanya pembuat kompiler menyediakan suatu library yang
sudah ada didalam kompiler. Library berisi berbagai procedure, function atau unit
69
yang sudah siap pakai. Misalnya Turbo Pascal Windows 1.5 memiliki suatu unit
untuk memproses output yaitu wincrt, gotoxy, yang dengan mudah bisa dipakai
oleh programmer di dalam menuliskan kode-kode programnya. Dinamai Identifier
standar karena suatu kompiler tidak harus memilikinya, masing-masing kompiler
dimungkinkan mempunyai identifier yang berbeda untuk suatu tugas yang hampir
sama. Misalnya Turbo Pascal versi DOS menggunakan Crt untuk melakukan
fungsi yang sama dengan wincrt (TPW 1.5). Beberapa identifier standar yang
dimiliki oleh kompiler-kompiler Pascal antara lain: abs, arctan, boolean ,char,
cos, dispose, eof, eoln, exp, false, input, integer, ln, maxint, new, odd, ord, output,
pack, page, pred, read, readln, real, reset, rewrite, round, sin, sqr, sqrt, succ, text,
true, trunc, write, writeln.
c. Identifier "reserved word".
Identifier "reserved word " merupakan indentifier yang sudah didefinisikan
dan digunakan oleh bahasa Pascal sendiri. Bagian berikut ini akan dijelaskan
secara rinci semua data yang akan digunakan pada suatu program. Dalam
penulisannya tidak boleh sama dengan kata-kata cadangan (reserved words) dan
selalu diakhiri dengan titik koma (;).
d. Deklarasi Konstanta
Definisi konstanta diawali dengan kata cadangan Const diikuti oleh
kumpulan identifier yang diberi suatu nilai konstanta. Data konstanta nilainya
sudah ditentukan dan pasti, tidak dapat dirubah didalam program. Constanta
adalah nilai yang bersifat tetap. Contoh sederhana adalah Gravitasi (G) (9,87).
Dengan konstanta kita dapat menghemat penulisan program dan
mempermudahnya karena kita akan lebih mudah menuliskan G dari pada 9,87
pada program dan jika nilai G ingin diubah, kita hanya mengubah G-nya bukan
angkanya.
Bentuk umum:
CONST <namakonstanta>:<tipedata>=<nilai>;.
Contoh: CONST gravitasi : real= 9.8;
70
Kecepatan Cahaya (c) : real = 299792458 ms-2
Deklarasi ini digunakan untuk mengidentifikasikan data yang nilainya sudah
ditentukan dan pasti, tidak dapat dirubah dalam program.
Contoh lengkapnya adalah sebagai berikut:
Contoh :
Program contoh_konstanta;
Const
Grafitasi = 9,8 ;
KecCahaya = 299792458;
Jurusan = ‘Fisika’ ;
Begin
Writeln ( ‘Grafitasi =’, Grafitasi ) ;
Writeln ( ‘Kecepatan Cahaya pada ruang hampa =’, KecCahaya ) ;
Writeln ( ‘Jurusan Anda =’, Jurusan) ;
End .
e. Deklarasi Label
Jika program menggunakan statement Goto untuk meloncat ke suatu
statement yang tertentu, maka dibutuhkan suatu label pada statement yang dituju
dan label tersebut harus di deklarasikan terlebih dahulu pada bagian deklarasi.
Menggunakan kata cadangan Label diikuti oleh kumpulan identifier label dengan
dipisahkan oleh koma dan diakhiri dengan titik koma. Contoh lengkap adalah
sebagai berikut:
Program Contoh_Label;
Uses Crt;
Label 100, selesai ;
Var
I : Integer
Begin
Writeln ( ‘Bahasa’ ) ;
Goto 100 ;
Writeln ( ‘Cobol’ ) ;
71
100 :
Writeln ( ‘Pascal’ ) ;
Goto selesai ;
Writeln ( ‘Fortran’ ) ;
Selesai :
End .
f. Deklarasi Tipe
Deklarasi tipe digunakan untuk menyebutkan tipe setiap data yang akan digunakan
pada program Pascal. Tipe data sangat menentukan jangkauan nilai yang mungkin
dari data yang digunakan. Pascal menyediakan beberapa macam tipe data, yaitu :
1). Tipe data sederhana, terdiri dari :
a). Tipe data standar : integer, real, char, string, boolean.
b). Tipe data didefinisikan pemakai : enumerated atau scalar, subrange
2). Tipe data terstruktur : array, record, file, set.
3). Tipe data penunjuk
g. Deklarasi variabel (Var)
Bagian deklarasi variabel merupakan bagian yang mendaftar semua variabel
yang dipakai dalam pernyataan pemograman baik variabel input maupun variabel
output. Variabel adalah identifier yang berisi data yang dapat diubah-ubah
nilainya didalam program. Menggunakan kata cadangan Var sebagai judul
didalam bagian deklarasi variable dan diikuti oleh satu atau lebih identifier yang
dipisahkan koma, diikuti dengan titik dua dan tipe dari datanya diakhiri dengan
titik koma. Pendeklarasian variabel dimulai dengan menggunakan kata simpan
Var. Variabel digunakan untuk membuat variabel (nilai suatu parameter dapat
berubah-ubah). Bentuk umum dari pendeklarasian variabel adalah:
VAR <namavariabel>:<tipedata>;.
Contoh: VAR
nilai:byte;
72
Deklarasi ini berisi data-data yang dapat berubah-ubah nilainya di dalam program.
Deklarasi variabel harus diletakkan setelah deklarasi tipe (jika ada).
Contoh lengkap:
Program Contoh_Variabel;
Uses Crt;
Var
Total, Gaji, Tunjangan : real ;
Jumlahanak : integer ;
Keterangan : string [25] ;
Begin
Gaji : = 500000 ;
Jumlahanak : = 3 ;
Tunjangan : = 0.25 * Gaji + Jumlahanak * 30000 ;
Total : = Gaji + Tunjangan ;
Keterangan : = ‘Karyawan Teladan’ ;
Writeln ( ‘ Gaji bulanan = Rp. ‘ , Gaji ) ;
Writeln ( ‘ Tunjangan = Rp. ‘ , Tunjangan ) ;
Writeln ( ‘ Total gaji = Rp. ‘ , Total ) ;
Writeln ( ‘ Keterangan = Rp. ‘ , Keterangan ) ;
End .
h. Deklarasi Prosedur
Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan
dimanapun didalam program. Prosedur dibuat sendiri bilamana program akan
dibagi-bagi menjadi beberapa blok-blok modul. Prosedur dibuat didalam program
dengan cara mendeklarasikannya dibagian deklarasi prosedur. Menggunakan kata
cadangan Procedure
Contoh :
Procedure tambah ( x, y : integer ; var hasil : integer ) ;
Begin
Hasil : = x + y ;
End ;
var
73
z : integer ;
Begin {program utama}
Tambah ( 2, 3, z ) ;
Writeln ( ‘ 2 + 3 = ‘, z );
End .
i. Deklarasi Fungsi
Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur,
tetapi ada beberapa perbedaannya. Kata cadangan yang digunakan Function.
Contoh :
j. Unit
Unit Pascal merupakan kumpulan subprogram yang dihimpun pada Folder
Units. Suatu unit adalah kumpulan dari konstanta, tipe-tipe data, variable, prosedur
dan fungsi- fungsi. Tiap-tiap unit tampak seperti suatu program Pascal yang
terpisah. Unit standar sudah merupakan kode mesin (sudah dikompilasi), bukan
kode sumber Pascal lagi dan sudah diletakkan di memori pada waktu menggunakan
pascal. Untuk menggunakan suatu unit, harus diletakkan suatu anak kalimat Uses
diawal blok program, diikuti oleh daftar nama unit yang digunakan. Cara
mengaktifkan unit adalah dengan membuat pernyataan/layanan merupakan USES.
74
Deklarasi ini wajib dideklarasikan yang berguna untuk mendeklarasikan piranti
yang akan digunakan oleh Pascal. Unit-unit piranti yang dikenal oleh Pascal antara
lain: CRT, String, DOS, Graph, Printer, dan System. Bentuk umum:
Uses <nama unit>;
Contoh: uses crt, dos;
Umumnya unit system tidak perlu dideklarasikan lagi karena Turbo Pascal
sudah langsung mengaktif unit pada saat Turbo.Exe diaktifkan. Unit CRT yang
berguna untuk memanipulasi tampilan monitor/screen, unit DOS untuk fungsi-
fungsi DOS seperti DiskFree, SetTime, dan lain lain harus diaktifkan bila ingin
menggunakannya. Demikian juga halnya dengan Unit String untuk memanipulasi
tipe data string dan unit Graph untuk memanipulasi grafik dengan pascal.
Suatu unit adalah kumpulan dari konstanta, tipe-tipe data, variable, prosedur
dan fungsi-fungsi. Tiap-tiap unit tampak seperti suatu program Pascal yang
terpisah. Unit standar sudah merupakan kode mesin (sudah dikompilasi), bukan
kode sumber Pascal lagi dan sudah diletakkan di memori pada waktu menggunakan
pascal. Untuk menggunakan suatu unit, harus diletakkan suatu anak kalimat Uses
diawal blok program, diikuti oleh daftar nama unit yang digunakan. Unit CRT
digunakan untuk memanipulasi layar teks (windowing, peletakkan cursor dilayar,
color untuk teks, kode extanded keyboard dan lainnya). Unit standar crt hanya dapat
digunakan oleh program yang digunakan dikomputer IBM PC, IBM AT, IBM PS/2
atau yang kompatibel dengannya.
3. Bagian Pernyataan
Bagian pernyatan merupakan bagian pemograman utama, karena pada bagian
inilah pernyataan atau statement logika, operator aritmatika, pengulangan proses
pencabangan aliran program dinyatakan. Semua pernyataan atau statemen
diletakkan dalam suatu suatu blok yang tandai dengan pemakaian kata BEGIN pada
awal blok pernyataa atau perintah dan kata END pada bagian perintah. Perlu
diingat bahwa setiap pernyatan atau statamen yang merupakan instruksi program
diakhiri dengan tanda titik koma (;).
75
Jadi bentuk umumnya dari pernyataan tersebut adalah sebagai berikut :
BEGIN
..............
statemen;
..................
END.
Contoh program sederhana
Program Coba1;
uses wincrt;
Label satu;
CONST a = 15; { selalu menggunakan tanda = }
TYPE nyata = real; { selalu menggunakan = }
VAR b : integer;
c :nyata; { selalu menggunakan : }
Begin
b:=1;
c:=a+b;
Writeln (' Akmam Luaranya adalah ');
writeln ('Hasil a + b = ',c:3:2);
writeln(c);
WRITELN('Jurusan Fisika Fakultas FMIPA ');
GOTO SATU;
WRITELN('Mau aku hasilnya ');
satu:
WRITELN('Padang');
End.
Apabila program di running (tekan CTRL + F9), maka hasil (Output Program)
76
Jurusan Fisika Fakultas FMIPA
Padang
Hasil memperlihatkkan bahwa kata “'Mau aku hasilnya” tidak terdapat pada output
program, hasil disebabkan perintah Goto Satu, yang eksekusi perintah program
melompok ke Label satu.
77
b. Karakter berikutnya boleh karakter numerik (0 .. 9) atau kombinasi alphanumerik
(huruf-numerik).
c. Panjang nama, pada berbagai versi Pascal umumnya antara 32 - 63.
d. Tidak boleh menggunakan karakter istimewa: + - * / | \ = < > [ ] . , ; : ( ) ^ @ { } $
# ~ ! % & ` " ' dan ?
Contoh penulisan:
Penulisan yang benar: X _PQR Beta Sudut_Alpha luasLingkaran. Penulisan yang
salah: 3D sisi-Kanan B#
3. Assignment
Komputer bisa mengolah dan menampilkan sesuatu yang ada di dalam memori.
merupakan cara tersederhana untuk "menempatkan" (assign) data ke memori.
Contoh:
Program Luas_PersegiPanjang; {Program menghitung luas empat persegi panjang}
Uses wincrt;
Var
panjang, lebar, luas : integer;
{Mendeklarasikan variable panjang, lebar dan luas persegi panjang sebagai integer}
BEGIN {Program Mulai}
panjang := 25;
lebar := 20;
luas := panjang * lebar;
END. {Program Selesai}
4. Perintah Input
Statement Read/Readln digunakan apabila pemogram meminta pengguna
memasukkan (input) data lewat keyboard ke dalam suatu variabel setelah program
dirunning. Perbedaan perintah read dan readln sama dengan perbedaan perintah
write dan writeln. Perintah read akan membaca masukan dari keyboard tanpa
memindahkan posisi kursor setelah pembacaan dilakukan, sedangkan perintah readln
berfungsi untuk membaca masukan keyboard sekaligus memindahkan posisi kursor
78
ke baris berikutnya. Perintah digunakan untuk membaca data dari default input -
keyboard.
SYNTAX read(x); atau readln(x);
Contoh:
Program Luas_PersegiPanjang; { Program untuk menghitung luas bangun
empat persegi panjang }
Uses Crt;
Var
panjang, lebar, luas :integer; { Mendeklarasikan variable panjang, lebar dan
luas persegi panjang sebagai integer }
BEGIN { Program MULAI } {Membaca dari data panjang dan lebar persegi
panjang, default input unit dan default format
tanpa ganti baris}
Read(panjang);
Readln(lebar);
{pengisian variabel pertama dan kedua dipisahkan dengan
spasi}
Luas:=panjang*lebar; {Menghitung luas persegi panjang}
END. { Program SELESAI }
Contoh lain
Program input;
Uses Crt;
Var
nama, NIM : String;
Begin
Clrscr;
Writeln ('masukkan nama dan NIM ');
Writeln ('------------------------------');
Write ('nama anda : ');
79
Readln (nama);
Writeln ('NIM anda : '); Readln (NIM);
End.
Bila dijalankan hasilnya adalah:
masukkan nama dan NIM
------------------------------
nama anda : ( di input )
NIM anda : ( di input )
Perintah read atau readln dapat juga digunakan untuk membaca data lebih dari satu
sekaligus dengan berbagai format. Contoh:
Program BacaSemua; { Membaca data sekaligus menggunakan perintah read }
Uses Crt;
Var
nim : char;
umur : integer;
status: boolean;
BEGIN
Readln(nim,umur,status); {setelah mengisi semua variabel , harus diikuti
dengan Enter}
END.
5. Perintah Output
Perintah write dan writeln digunakan untuk menampilkan output di layar
setelah program dirunning. Perintah write digunakan untuk mencetak pada baris yang
sama dari beberapa argument. Perintah writeln digunakan untuk mencetak pada satu
baris tersendiri dari beberapa argument. Perintah writeln yang tidak diikuti argument
hanya mencetak baris kosong. Perintah digunakan untuk menyajikan data ke default
output - key-board.
Sintaksnya adalah sebagai berikut:
Write(x); atau writeln(x);
80
Bagaimana menampilan luaran yang berasal dari variabel dan luaran yang
berasal dari informasi dalam string? Agar mudah membedakannya pelajarilah
penjelasan pada Tabel 7.
Tabel 7: Perbedaan tampilan luaran variabel dan string.
Perintah Penjelasan
Perintah ini akan menampilkan teks string TES ke layar
Program luas_PersegiPanjang;
{Program untuk menghitung luas empat persegi panjang. input dibaca dari
keyboard dan output ditampilkan ke layar monitor }
Uses wincrt;
Var
panjang, lebar, luas : integer;
BEGIN
{ Membaca dari data panjang dan lebar persegi panjang; default input unit
dan default format dengan memberikan pentunjuk ke pemakai tanpa ganti
baris. Setelah membaca data kursor pindah ke baris baru. }
Write('Panjang = '); readln(panjang);
Write('Lebar = '); readln(lebar);
Luas := panjang * lebar;
{ Menyajikan hasil hitungan luas persegi panjang ke unit default
output dan default format.Setelah menyajikan kursor pindah ke baris
baru. }
Writeln('Luas = ', luas);
END.
Catatan:
Argumen perintah writeln boleh berupa ekspresi atau operasi aritmatika. Contoh :
81
perintah penyajian writeln('Luas = ', luas); bisa diganti dengan perintah:
writeln('Luas = ', panjang * lebar);
Perintah hasil
writeln(n:5); ____5
writeln(n*10:5); _ _ _ _50
writeln(n*100:5); _ _ _ _500
82
d adalah tempat maksimum yang disediakan untuk angka desimal.
Sajian
format ini mengatur tampilan rata kanan (right justified)
Contoh:
Bila R = 123.45 dan S = 12.355, maka hasil yang tampil di monitor adalah
seperti terlihat pada Tabel 9 berikut:
Tabel 9 : Format tampilan tipe data bilangan real
Perintah Hasil
writeln(R:6:2); 123.45
writeln(S:6:2); 12.35
Bilangan dengan tipe real bila ditampilkan menggunakan default format akan
disajikan menggunakan format floating point. Untuk contoh nilai R dan S di
atas, default format sajiannya adalah: R 1.2345E2 S 1.2355E1
Program Konversi_Suhu;
Uses WinCrt;
var
f,c:real;
BEGIN
Writeln('Program Konversi Fareinheit Ke Celcius');
Writeln;
Write('Masukan Suhu dalam Farenheit: ');readln(f);
c:=5/9*(f-32);
Writeln;
Writeln('Jadi Suhu Dalam Celcius Adalah: ',c:4:2);
END.
83
c. Penempatan Kursor Layar
Monitor komputer umumnya dibagi dalam 80 kolom dan 25 baris dengan
kolom ke-0 dan baris ke-0 terletak di pojok kiri atas. Dalam lingkungan
pemrograman yang beorientasi teks, pengaturan interaksi pengguna dengan
komputer menggunakan tampilan-tampilan teks yang posisinya diatur berdasarkan
komposisi baris dan kolom dengan menggunakan perintah GotoXY. Sintaks
pemakaian statement GotoXY adalah sebagai berikut:
GotoXY(X,Y);
Keterangan
X menyatakan kolom dan Y menyatakan baris.
Untuk Pascal versi tertentu, masih dilengkapi dengan perintah penghapusan
seluruh layar dan penghapusan dari posisi kursor hingga akhir baris, dengan
sintaks sebagai berikut:
ClrScr; dan CLrEOL;
Contoh program menggunakan statement GotoXY:
Program contohGOTO_XY;
{ Contoh penggunaan perintah gotoXY untuk pengaturan tampilan. }
Uses winCRT;
var
panjang, lebar, luas, keliling: real;
BEGIN
ClrScr; { Membersihkan tampilan keseluruhan layar }
{Membuat tampilan untuk meminta masukan data mulai kolom ke 25 baris
ke 10 layar}
GotoXY(25,10); write('Masukkan data persegi panjang : ');
GotoXY(25,11); write('Panjang = '); read(panjang);
GotoXY(25,12); write('Lebar = '); read(lebar);
{Melakukan operasi matematika}
keliling := 2 * (panjang + lebar);
84
luas := panjang * lebar;
{Membuat tampilan untuk output mulai kolom ke 25 baris ke 14 layar }
GotoXY(25,14); write('Keliling = ', keliling:8:2);
GotoXY(25,15); write('Luas = ', luas:8:2);
Readln;
END.
85
2. Tipe real dapat dibagi ke dalam 5 bagian seperti pada Tabel 11
Tabel 11 : Tipe Data Real
86
s : string;
BEGIN
s:='Hello';
writeln(s);
writeln('panjang dari string adalah: ',ord(s[0]));
END.
Karakter nol merupakan karakter yang menyatakan panjang string, sehingga
ord(s[0]) menyatakan panjang dari string tersebut. Berhubung dengan merupakan
array dari karakter, maka perlu dijelaskan beberapa perintah yang dapat
dioperasikan pada tipe data string
a. Length
Length untuk menentukan panjang suatu string dengan sintaks sebagai berikut:
Length(s)
Contoh :
n:=length(s);
bila s:='pemrograman';, maka n akan sama dengan 11.
b. Copy
Copy berfungsi untuk mengkopi suatu ekstrak karakter dari sebuah string,
dengan sintaks
Copy(s,dari,banyaknya)
Contoh
St:=copy(s,5,3);
arti dari pernyataan ini adalah kita mengekstrak 3 karakter dari s, dimulai dari
karakter kelima.
Bila s:='Who are you ?'; , maka st adalah 'are'.
catatan: bila indek lebih besar dari panjang string maka hasilnya akan kosong.
Contoh:
st:=copy(s,15,4); {kosong}
87
arti dari pernyataan ini adalah jika banyaknya string yang akan diekstrak lebih
besar dari s, maka hasilnya adalah bagian yang tersisa dari string.
Contoh :
Bila st:=copy(s,9,10);, maka st hasilnya adalah 'you ?'
c. Pos
Pos berfungsi untuk menentukan atau untuk menghasilkan posisi dari suatu
substring dari suatu string, dengan pemakainnya seperti berikut:
Pos(substr,s)
Contoh :
Bila n:=pos('are','Who are you ?'); maka hasilnya adalah n:=5;
Jika substring tidak ditemukan, maka hasilnya 0.
d. Val
Value merupakan pernyataan digunakan untuk mengkonversi string ke numerik
dengan sintaks pemakaiannya sebagai berikut:
val(strvar,numvar,errorcode),
strvar adalah variabel string yang akan dikonversi, numvar variabel numerik
(dapat berupa tipe data integer atau real), dan errorcode adalah variabel integer
yang menyimpan error code (kode kesalahan). Jika errorcode adalah 0,
konversi berhasil. Sebaliknya, bila terjadi kesalahan errorcode tidak sama
dengan 0, hal ini akan menunjukan posisi dimana pada strvar yang
menyebabkan kesalahan tersebut.
Contoh :
Program konversiangka;
Uses wincrt;
Var
s : string;
e : integer;
r : real;
BEGIN
88
write('masukkan angka : '); readln(s);
val(s,r,e);
if e<>0 then
writeln('salah pada posisi : ',e)
else
writeln('itu adalah : ',r:4:3);
END.
e. String
String merupakan pernyataan digunakan untuk mengkonversi numerik ke
string dengan sintaks pemakaiannya sebagai berikut:
Str(numvar,strvar)
Contoh :
Program konversiangka_1;
Uses Crt;
Var
s : string;
i : integer;
BEGIN
write('masukkan angka: '); readln(i);
str(i,s);
writeln('itu adalah: ',s);
END.
89
Day = (Sun, Mon, Tue, Wed, Thu, Fri, Sat);
CharSet = set of Char;
Digits = set of 0..9;
Days = set of Day;
const EvenDigits: Digits = [0, 2, 4, 6, 8];
Vowels: Letters = ['A', 'E', 'I', 'O', 'U', 'Y'];
Kita tidak bisa menulis atau membaca isi dari set, tetapi kita bisa melakukan
operasi yang lain dengan data yang ada pada set (misalnya relasional).
Contoh:
Program contoh_set;
Uses Crt;
Type
hari = (ahad, sen, sel, rab, kam,jum, Sab);
Var
semua_hari : set of hari;
hari_kerja : set of sen .. jum;
hari_ini : hari;
BEGIN
hari_ini:=sen;
if hari_ini in hari_kerja then
writeln('Hari Ini Hari Kerja')
else
writeln(' Hari Libur');
END.
Salah satu manfaat dari penggunaan tipe data set adalah untuk mengecek apakah
suatu nilai muncul dalam suatu range tertentu. Misalnya, untuk mementukan apakah
suatu karakter berupa lower case letter (huruf kecil) seperti Ch adalah tipe Char, kita
bisa menulis,
if (Ch >= 'a') and (Ch <= 'z') then Writeln( Ch,' merupakan huruf kecil.');
90
atau dengan notasi lain, kita dapat menulis sebagai berikut:
if Ch in ['a'..'z'] then Writeln( Ch,' merupakan huruf kecil.');
91
F. Operator
Beberapa operator yang disediakan oleh Pascal adalah aritmatika, boolean,
relasional dan set
1. Operator Aritmatika
Tabel 12. Operator Aritmatika Pascal
Contoh :
9 + 2 (hasil: 11)
9 - 2 (hasil: 7)
9 * 2 (hasil: 18) 9 / 2 (hasil: 4.5)
9 div 2 (hasil: 4)
9 mod 2 (hasil: 1)
2. Operator Aritmatika
Tabel 13. Operator Boolean PASCAL
92
Contoh: A dan B suatu variabel boolean
A B A and B A or B A xor B
3. Operator Relasional
Tabel 14. Operator Relasional
Contoh:
Misal suatu variable A:=9 dan B:=2, maka: A = B (hasil: FALSE);
A <= B (hasil: FALSE) A <> B (hasil: TRUE);
A >= B (hasil: TRUE)
A < B (hasil: FALSE)
A > B (hasil: TRUE)
93
A not (A)
TRUE FALSE
FALSE TRUE
a. Operasi Relasional pada Set
Ada empat perbandingan relasional yang diperkenankan pada set.
Tabel 15. Operator Relasional pada set
Misal A dan B adalah merupakan dua buah set. A = B : mempunyai hasil True jika A
dan B memiliki anggota-anggota yang sama.
Contoh:
[Sun, Tue, Fri] = [Tue, Fri, Sun].
A <> B akan mempunyai hasil True jika A dan B memiliki anggota-anggota yang
tidak sama.
A <= B : menunjukkan bahwa A adalah subset dari B.
Contoh: Jika A berisi [Sun, Mon, Tue] dan B berisi [Sun, Mon, Tue, Wed, Thu],
maka A adalah merupakan subset dari B dan ekspresi menghasilkan nilai True.
A >= B : menunjukkan bahwa A adalah superset dari B.
Contoh: Jika A berisi [Sun..Sat] dan B berisi [Mon..Fri], maka A adalah merupakan
superset dari B dan ekspresi menghasilkan nilai True.
b. Operasi Logika pada Set
Tabel 16. Operator logika pada set
94
G. Fungsi Matematik Standar dalam PASCAL
Tabel 17. Beberapa fungsi matematik standar yang disediakan oleh Pascal
Contoh :
Abs(-11) (hasil: 11)
Round(10.6) (hasil: 11)
Trunc(10.6) (hasil: 10)
Sqrt(4) (hasil: 2)
Sqr(4) (hasil: 16)
Untuk fungsi trigonometri:
x = sin phi menjadi x:=sin (3.1416);
95
H. Soal Latihan 3
1. Apa yang dimaksud pemograman terstruktur ?
2. Apa guna perintah "uses" ?
3. Apa perbedaan antara "Write" dan"Writeln" ?
4. Bagaimana cara menulis dua baris kosong pada layar ?
5. Berikan contoh minimal 5 jenis variable dengan range dan tipe !
6. Apa perbedaan antara "Read" and "Readln" ?
7. Kenapa kita tidak memasukan harga 0.75 untuk tipe data variable Word ?
8. Bagaimana kita bisa melihat dan jeda layar setelah program di run ?
9. Bagaimana kita bisa mendeklarasikan variabel dalam Pascal?
10. Bisakah kita masukkan nilai "1/4" untuk variabel Real
96
BAB IV
STRUKTUR KONTROL PEMROGRAMAN
A. Runtutan
Runtutan (sequensial) berfungsi mengontrol program berdasarkan algoritma
sehingga berjalan secara berurutan. Pada struktur runtutan setiap pernyataan akan
dikerjakan satu per satu sesuai dengan urutan penulisan algoritma program. Setiap
pernyataan dilaksanakan tepat satu kali dan tidak ada pernyataan yang diulang atau
pernyataan yang tidak dilaksanakan. Akhir dari pernyataan terakhir merupakan
akhir dari algoritma program tersebut. Program dibaca mulai dari perintah yang
pertama dituliskan kemudian turun ke perintah selanjutnya demikian seterusnya
sampai pada akhir perintah. Struktur kontrol runtutan merupakan struktur kontrol
yang paling sederhana karena tidak terdapat proses pengulangan atau pencabangan.
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;
97
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.
B. Perulangan
Penyelesaian masalah membuat 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. Turbo Pascal untuk akomodasi hal tersebut telah menyediakan suatu
struktur perulangan yang memudahkan melakukan proses tersebut, sehingga kode-
kode dalam program menjadi lebih sederhana. Setiap program yang kompleks
mutlak memerlukan suatu perulangan dan percabangan. Tujuan perulangan disini
adalah untuk mengulang statement atau blok statement berulang kali sesuai sejumlah
yang ditentukan pemakai. Materi berikut akan memberikan gambaran konsep dasar
dari pengertian pengulangan yang dimaksud. Turbo pascal menyediakan beberapa
struktur perulangan antara lain struktur FOR…TO…. DO…., struktur WHILE…DO…
dan struktur REPEAT…UNTIL….
98
1. Perulangan For ... to .. Do
Perulangan dengan statemen For digunakan untuk mengulang statemen atau
suatu blok statemen berulang kali. Perulangan dengan statemen For dapat berupa
perlangan positif atau naik (ascendant) dan perulangan negatif atau turun
(descendant). Sintaks struktur pengulangan dengan statemen for adalah
a. Pengulangan Positif (naik)
Digunakan bila jumlah pengulangan sudah diketahui atau sudah
tertentu. Sintaks pemakaian pengulangan for .. to .. do adalah sebagai berikut:
For count := awal to akhir do aksi/ blok aksi ;
BEGIN
:
:
pernyataan
:
:
END;
Keterangan:
Variabel : merupakan nama variabel yang digunakan sebagai kendali
pengulangan,
<awal> : menyatakan kondisi awal nilai variabel kendali pengulangan,
<akhir> : menyatakan kondisi akhir nilai variabel kendali pengulangan,
<perintah>: merupakan instruksi-instruksi yang perlu dilakukan.
Tipe data untuk variabel pengulangan (count) harus bilangan ordinal
atau bilangan bulat. Contoh: Misalkan i adalah suatu variabel dalam integer
For i:=1 to 4 do
Begin
writeln(‘ Hei Suci Rahmawati, mari membuat program’);
End;
Penjelasan:
Perintah For i:=1 to 4 do,
99
Pernyataan di atas berarti statemen Hei Suci Rahmawati, mari membuat
program akan diulang sebanyak 4 kali yaitu dengan menghitung nilai i dari i = 1
sampai dengan nilai i terakhir yaitu i = 4.
Contoh dengan pengulangan dengan menggunakan blok statement. Cara
penulisannya dengan pada awal blok diawali dengan Begin dan pada akhir blok
diakhiri dengan End; , Perhatikan diagram pada Gambar 13 berikut.
Program JumlahFor;
Uses Crt;
Var
I : Integer;
Begin
Clrscr;
Writeln;
i := 0;
For i := 1 To 100 Do
Begin
i := i + 1;
Writeln(i);
End;
END.
Gambar 19 : Diagram alir mencetak
bilangan bulat dengan For .. to.. do
Program Interasi_Jumlah;
Uses WinCRT;
Var
A,B, Jumlah,i :Integer;
BEGIN
Writeln('Masukan data-data berikut :');
Write ('Nilai A : ');readln(A);
Write ('Nilai A : ');readln(B);
For i:= A to B do
Jumlah := jumlah + i
writeln('Jumlah deret A s/d B: ',jumlah);
END.
Gambar 20 : Diagram alir Output :
menjumlah bilangan dengan For Masukkan nilai A: 10
.. to.. do Masukkan nilai B: 15
Jumlah deret A s/d B : 75
Contoh 3 :
Penggunaan perulangan For dalam blok statement untuk membuat tabel dapat
perhatikan contoh berikut ini:
100
Program Contoh3;
Uses Crt;
Var
a,b,c : Integer;
bagi : Real;
Begin
Writeln('----------------------------------------------');
Writeln(' a a*a a*a*a 1/a ');
Writeln('----------------------------------------------');
For a := 1 To 8 Do
Begin
b:= a*a;
c:=a*a*a;
bagi := 1/a;
Writeln(a:4,c:10,d:10,bagi:12:3);
End;
Writeln ('----------------------------------------------');
End.
Hasil Run program adalah
--------------------------------------------------------
a a*a a*a*a 1/a
-------------------------------------------------------
1 1 1 1.000
2 4 8 0.500
3 9 27 0.333
4 16 64 0.250
5 25 125 0.200
6 36 216 0.167
7 49 343 0.143
8 64 512 0.125
---------------------------------------------------------
101
Contoh :
Uses Crt;
Var
i : Integer;
Begin
For i := 10 DownTo 1 Do
Write (i:3);
End.
Hasil Running program adalah :
10 9 8 7 6 5 4 3 2 1
Contoh lain :
Setiap akhir minggu Melly, seorang mahasiswa yang mendapatkan kiriman
biaya hidup bulanan dengan jumlah agak pas-pasan, sehingga ia selalu mencatat
pengeluarannya per-minggu di luar sewa kamar selama satu bulan. Di akhir bulan ia
menghitung total pengeluarannya selama sebulan dan menghitung rerata
pengeluarannya per minggu selama bulan itu. Bila sebulan dianggap 4 minggu, buat
program komputer untuk menghitung pengeluaran tertib seperti Tabel 18
Tabel 18. Contoh belanja bulanan mahasiswa.
Minggu ke Pengeluaran (Rp.)
1 170.000
2 175.000
3 175.000
4 180.000
Penyelesaian:
1. Rumus penyelesaian: rerataOHM = SUM( ongkosHPM[i] )/m; i = 1 .. m, m = 4.
2. Algoritma:
a. Kosongkan variabel penjumlah (accumulator) jumlahOHB - total ongkos
hidup perbulan.
b. Baca data ongkosHPM - ongkos hidup minggu ke i.
c. Tambahkan ongkosHPM ke jumlahOHB, jumlahOHB = jumlahOHB +
ongkosHPM.
d. Ulangi 2.2 dan 2.3 hingga 4 kali
e. rerataOHM = jumlahOHB / 4.
102
Program Hitung_RerataOHB;
uses winCRT;
Var
ongkosHPM, jumlahOHB, rerataOHM : real;
i, m : integer;
BEGIN
jumlahOHB := 0.0; { Nilai awal penjumlah }
m := 4; { Jumlah minggu dalam sebulan dianggap 4 }
for i := 1 to m do
Begin
write('Data minggu ke : ', i,' : ');
readln(ongkosHPM);
jumlahOHB := jumlahOHB + ongkosHPM;
End;
rerataOHM := jumlahOHB/m;
writeln('Total ongkos hidup per bulan = Rp ',jumlahOHB:7:2);
writeln('Rerata ongkos hidup per minggu =Rp ',rerataOHM:7:2);
END.
103
Begin
For a := 1 To 3 Do
Begin
For b := 1 To 2 Do Write (a :4,b:2);
Writeln;
End;
End.
Hasil :
1112
2122
3132
begin begin
clrscr; clrscr;
write('Baca nilai : ');readln(N); write(‘Baca nilai:’);
for i:= 1 to N do readln(N);Data:=N;
begin for i:=N downto 1 do
for j:=1 to i do begin
write(i:3); for j:=N downto 1 do
writeln; write(data:3);
end; writeln;
readln; data := data -1;
end. end;
End.
Hasil Run Program : Hasi Run Program :
Baca nilai : 7 Baca nilai : 7
1 7
22 66
333 555
4444 4444
55555 33333
666666 222222
7777777 1111111
104
ditetapkan tersebut. Perulangan While – Do tidak dilakukan jika kondisi tidak
terpenuhi. 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. Sintaks pemakaian statement while ... do adalah
While <ekspresi boolean> Do
Begin
:
perintah;
:
End;
Contoh program :
Program coba;
Uses wincrt;
Var
i:integer;
BEGIN
clrscr;
write('Masukkan angka :');readln(i);
while i<5 do
Begin
write(‘ Suci mahasiswa Jurusan Fisika FMIPA UNP’);
i:=i+1;
End;
readln;
END.
Contoh lain :
105
Uses Crt;
Var i : Integer;
Begin
i := 0;
While < 100 do
Begin
Write (i:3);
Inc (i); { sama dengan i:=i+1 }
End;
End.
Hasilnya :
0 1 2 3 4 ….. 100
106
Contoh program lain adalah :
Program WHILE_DEMO ;
uses wincrt;
var
XL, Frequency, Inductance : real;
begin
Inductance := 1.0;
Frequency := 100.00;
while Frequency < 1000.00 do
begin
XL := 2 * PI * Frequency * Inductance;
writeln('XL at ',Frequency,' hertz = ', XL);
Frequency := Frequency + 100.00
end
end.
107
agar program dapat berhenti, namun berbeda dengan while...do yang mana kontrol
pengulangannya ditempatkan pada awal proses, repeat… until kontrolnya
diletakkan pada akhir proses. Sintak dari statement ini adalah :
Repeat
:
:
perintah;
:
Until <ekspresi boolean>;
dalam hal ini, kita tidak perlu menggunakan Begin...End karena pernyataan di
antara Repeat...Until diperlakukan oleh Pascal sebagai sebuah blok. Contoh
program untuk pemakaian Repeat .. Until adalah sebagai berikut:
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.
Contoh lain :
program REPEAT_UNTIL_DEMO ;
uses wincrt;
var
XL, Frequency, Inductance : real ;
BEGIN
Inductance := 1.0;
Frequency := 100.00;
Repeat
XL := 2 * PI * Frequency * Inductance;
writeln('XL at ',Frequency,' hertz = ', XL );
Frequency := Frequency + 100.00 ;
Until Frequency = 1000.00 ;
END.
Gambar 23 : Diagram alir
repeat .. until
108
g. Repeat – Until tersarang
Repeat – Until tersarang adalah suatu perulangan Repeat – Until yang satu
berada di dalam perulangan Repeat – Until yang lainnya.
Contoh :
Var
a,b,c : Real;
Begin
Writeln('========================================');
Writeln(' sisi A sisi B Sisi C ');
Writeln (' =======================================');
a:= 1;
Repeat { perulangan luar }
b := 0;
Repeat{ perulangan dalam }
c:=Sqrt (a*a+b*b);
Writeln (a:6:2, b:9:2, c:9:2);
b:=b+5;
Until b>25; { berhenti jika b lebih besar dari 5 untuk
perulangan dalam }
a:=a+1;
Until a>3; { berhenti jika a lebih besar dari 3 untuk
perulangan luar }
Writeln(' =======================================');
End.
109
Begin
statement1;
statement2;
...
End.
dimana, boolean_expression adalah sebuah penyataan logika (true/false) atau
variable bertipe boolean.
Secara diagram alir bentuk struktur if .. then digambarkan seperti Gambar 24
2. If..then..Else
110
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 dilaksa-
kan. Jadi masing-masing struktur terpisah satu dengan yang
lain}
Bentuk struktur umum If – Then .. Else dalam diagram pada Gambar 25 adalah
sebagai berikut :
111
Pernyataan If Kondisi Then merupakan statement yang mengungkapkan
kondisi yang diseleksi oleh statement If. Bila kondisi yang diseleksi terpenuhi,
maka statement yang mengikuti Then akan diproses, sebaliknya bila kondisi tidak
terpenuhi, maka yang akan diproses statement berikutnya.
Misalnya :
If Pilihan = 2 Then
Begin{ jika kondisi terpenuhi, Yaitu jika pilihan = 2 }
......
......
End
Else { jika kondisi tidak terpenuhi, yaitu jika pilihan tidak sama dengan 2}
Begin
.......
.......
End;
atau
if <Ekspresi Boolean> then
begin
:
: end {perhatikan tanda semicolon ‘ ; ‘ dihilangkan}
else
begin
:
:
end;
Contoh Program :
Program If_Then_Else;
Uses Crt;
Var
Nilai : Real;
Begin
Write ('Jumlah Nilai :');
Readln (nilai); { Pemasukan data }
If nilai > 60 Then { seleksi kondisi variabel nilai }
Writeln('Lulus') { Dilaksanakan jika nilai lebih besar dari 60 }
Else
Writeln('Tidak lulus'); {Dilaksanakan jika variabel nilai lebih kecil dari
60}
End.
Hasil :
Jika kita Memasukan 40 pada variabel nilai, maka program diatas akan
mencetak Tidak lulus.
112
Contoh program lain
program IF_ELSE_DEMO;
Uses Wincrt;
Var
angka, tebakan : integer;
BEGIN
angka := 2;
writeln('Tebak angka antara 1 dan 10'); readln(tebakan);
if angka = tebakan then
writeln('Tebakan anda benar, Selamat!')
else
writeln('Maaf, Tebakan anda salah.')
end.
3. If Tersarang
Struktur If tersarang merupakan bentuk dari suatu statement If yang berada
di dalam lingkungan statemen If yang lainya, dengan syarat kita tidak melupakan
blok Begin...End untuk membatasinya. Bentuk statement If tersarang sebagai
berikut :
if <Ekspresi Boolean> then
begin
:
if <Ekspresi Boolean> then
begin
:
:
end
:
end
113
Gambar 26 : Diagram alir If .. then tersarang
Contoh Program
Program yang digunakan untuk menentukan siapa yag berhak mengikuti pemilihan
umum di Indonesia. Diagram dan programnya adalah sebagai berikut:
PROGRAM pemilu;
Uses Wincrt;
Var
WN,status,ket,nama : string;
umur : integer;
BEGIN
Clrscr;
write('Nama siswa :');readln(nama);
write('warg negera :');readln(WN);
write('status perkawinan :');readln(status);
write('umur :');readln(umur);
if (WN = 'wni') then
Begin
if (status ='menikah') or (umur > 17) then
ket := 'pemilih'
Else
ket := 'bukan pemilih';
End
Else
ket := 'bukan pemilih';
Gambar 27: Diagram alir seleksi ikut writeln(nama,'':3,ket);
pemilahan umum di Indonesia. End;
END.
114
Program IF_ELSE_DEMO_2;
uses crt;
var A, B, C : integer;
begin
writeln('Masukkan tiga angka dengan spasi');
readln( A, B, C );
if A >= B then begin if A >= C then
writeln( A,' adalah terbesar')
else writeln( C,' adalah terbesar')
end
else if B >= C then writeln( B,' adalah terbesar')
else writeln( C,' adalah terbesar')
end.
Contoh
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.
Contoh program :
program_menghitung_akar_kwadrat:
uses crt;
var A,B,C:integer;
x1,x2,D:real;
begin
clrscr;
115
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);
writeln('Akar-akanya adalah:',x1:2:2);
end else
writeln('Tidak memiliki akar riil');
end;
readln;
end.
Contoh yang lebih kompleksperhatikan diagram pada Gambar 28 berikut
116
Flowchart Menu,
L Lingkaran, L. Segitiga, L. Persegipanjang
Start
l,p,t Luas=real
Pilihan=byte
Input Pilihan
Baca Pilihan
Pilihan=1
Input r
Pilihan=2
Baca r
Input l,t
Luas=phi*r*r
Pilihan=3
Baca l,t
Cetak
‘Luas Lingkaran=’, Input l,p
Luas
Cetak Luas=0.5*l*t
‘Pilihan hanya
1,2,3’ Baca l,p
‘Anda tadi pilih no Cetak
berapa? ‘Luas Segitiga=’,
...ngawur’ Luas
Luas=l*p
Cetak
‘Luas Persegi
panjang=’, Luas
End
begin
clrscr;
gotoxy(10,2); writeln(' <<< PILIHAN >>>');
gotoxy(10,4); writeln(' 1. Menghitung luas lingkaran!');
gotoxy(10,6); writeln(' 2. Menghitung luas segitiga!');
117
gotoxy(10,8); writeln(' 3. Menghitung luas Persegi panjang!');
gotoxy(10,20); write(' pilih nomer berapa {1-3} ?');readln(pilihan);
clrscr;
case pilihan of
1: begin
write ('jari_jari lingkaran ?');readln(r);
luas:=pi*r*r;
writeln;
writeln('luas lingkaran =',luas:9:2);
end;
2: begin
write ('panjang sisi alas ?');readln(l);
write ('tinggi segitiga ?');readln(t);
luas:=0.5*l*t;
writeln;
writeln('luas segitiga =',luas:9:2);
end;
3: begin
write ('panjang persegi panjang ?');readln(p);
write ('lebar persegi panjang?');readln(l);
luas:=t*l;
writeln;
writeln('luas bujur-sangkar =',luas:9:2);
end;
else
begin
writeln('pilihan hanya {1,2 atau 3}');
writeln('anda tadi pilih nomer berapa ?............ngawur!!!!!');
end;
end;
end.
4. Case - Of
Pernyataan Case dipergunakan apabila kita menulis program yang
memerlukan banyak pernyataan If...Then...Else, sehingga program akan tampak
lebih jelas untuk dibaca. Struktur Case – Of mempunyai suatu ungkapan logika
yang disebut dengan selector. Sejumlah statemen yang diawali dengan suatu label
permasalahan (case label) yang mempunyai tipe sama dengan selector. Statement
yang mempunyai case label yang bernilai sama dengan case label yang bernilai
sama dengan nilai selector akan diproses sedang statemen yang lainya tidak.
Dengan demikian Case .. of dapat dikatakan sebagai peluasan dari struktur If. Bila
dalam struktur If hanya disediakan dua pilihan (berdasarkan kondisi logikanya)
118
maka dalam struktur Case ..Of dimungkinkan untuk memilih satu pilihan di antara
banyak pilihan yang ada. Bentuk umumnya :
Case var.pilih of atau Case var.pilih of
Pilih1 : aksi1 ; pilih1 : aksi1 ;
Pilih2 : aksi2 ; pilih2 : aksi2 ;
……………. ; ……………. ;
pilih-n : aksi-n ; pilih-n : aksi n;
else aksi-n+1
end; 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. Daftar Case
label dapat berupa konstanta, range dari konstanta yang bukan bertipe real.
Contoh program ;
Program nilai;
Var
nil : Char ;
Begin
Write ('Nilai Numerik yang didapat :');
Readln (nil);
Case nil Of
'A': Writeln ('Sangat Baik’);
'B': Writeln('Baik’);
'C': Writeln('Cukup');
'D': Writeln('Kurang');
'E': Writeln('Sangat Kurang');
End;
End.
hasil :
Nilai Numerik yang didapat : B Input
Baik
Contoh:
Contoh Listing Program untuk Dicoba
Contoh a.
if operator = '*' then result := number1 * number2
else if operator = '/' then result := number1 / number2
else if operator = '+' then result := number1 + number2
else if operator = '-' b result := number1 - number2
else invalid_operator = 1;
119
case operator of
'*' : result:= number1 * number2;
'/' : result:= number1 / number2;
'+' : result:= number1 + number2;
'-' : result:= number1 - number2;
else invalid_operator := 1 end;
Program SARANG;
uses wincrt;
var invalid_operator : boolean;
operator : char;
number1, number2, result : real;
begin
invalid_operator := FALSE;
writeln('Enter two numbers and an operator in the format');
writeln(' number1 operator number2');
readln(number1);
readln(operator);
readln(number2);
if operator = '*' then result := number1 * number2
else if operator = '/' then result := number1 / number2
else if operator = '+' then result := number1 + number2
else if operator = '-' then result := number1 - number2
else invalid_operator := TRUE;
if invalid_operator then writeln('Invalid operator')
else writeln(number1:4:2,' ',operator,' ',number2:4:2,' is ' ,result:5:2) end.
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.
120
Catatan : Program ini akan memberikan nilai yang sama persis dengan yang
menggunakan struktur If.
Program macam_macam_benda;
uses CRT;
var
rho,vol,massa,r :real;
pilih : char;
begin
repeat
clrscr;
writeln('menu pilihan');
writeln('1 :Besi');
writeln('2 :kayu');
writeln('3 :selesai');
write('pilihan anda !:');readln(pilih);
writeln('3 :selesai');
case pilih of
'1' :begin
rho :=3;
repeat
clrscr;
writeln('jenis benda :');
writeln('A:bola');
writeln('B:kubus');
writeln('S:selesai');
write('pilihan anda !');readln(pilih);
if(pilih='A')or(pilih='a')then
begin
write('radiusnya ?');readln(r);
vol:=4*pi*r*r*r/3;
massa:=rho*vol;
writeln('massa:',massa:10:4);
end;
if(pilih='B')or(pilih='b')then
begin
write('sisi ?');readln(r);
121
vol:=r*r*r;
massa:=rho*vol;
writeln('massa :',massa:10:4);
end;
readln;
until(pilih ='S')or(pilih ='s');
end;
'2' :begin
rho :=2;
repeat
clrscr;
writeln('jenis benda :');
writeln('A:bola');
writeln('B:kubus');
writeln('S:selesai');
write('pilihan anda !');readln(pilih);
if(pilih ='A')or(pilih ='a')then
begin
write('radiusnya ?');readln(r);
vol:=4*pi*r*r*r/3;
massa:=rho*vol;
writeln('massa:',massa:10:4);
end;
if(pilih='B')or(pilih='b')then
begin
write ('sisi ?');readln(r);
vol:=r*r*r;
massa:=rho*vol;
writeln('massa:',massa:10:4);
end;
readln;
until(pilih='S');
end;
'3' :exit;
end;
122
until pilih='3';
end.
contoh:
program if_and;
uses wincrt;
var i, j : integer;
begin
write('Masukkan nilai i = ');
readln(i);
write ('Masukkan nilai j = ');
readln (j);
if (i>3) and (j>4) then
begin
writeln('Hal ini terjadi jika i>3 dan j>4');
end;
end.
2. Pernyataan OR
Pernyataan OR akan dieksekusi bila salah satu kondisi dalam keadaan TRUE,
if <Ekspresi Bool_1> or <Ekspresi Bool_2> then
begin
:
end
123
Contoh
Program if_OR;
uses wincrt;
var i, j: integer;
begin
write('Masukkan nilai i = ');
readln(i);
write ('Masukkan nilai j = ');
readln (j);
if (i>3) or (j>4) then
begin writeln('Yeah !!');
end;
end.
3. Pernyataan NOT
NOT menggantikan TRUE ke FALSE dan sebaliknya (vice versa)
if not <Ekspresi Boolean> then
begin
:
:
end
Contoh
program if_NOT;
uses wincrt;
var i: integer;
begin
write('Masukkan nilai i = ');
readln(i);
if not(i>3) then
begin
writeln('Yeah !!');
end;
end.
124
E. Soal Latihan 4
Buatlah diagram alir dan program untuk soal dibawah ini dengan tampilan
sebagus mungkin (gunakan perintah Window, Textcolor dan lain-lain). Jumlah
suku sesuai dengan input dari keyboard.
1. Buat deret hitung 3,7,11,15,......................=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
2. Buat deret ukur 3,9,27,................................=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" , diisi huruf T.
3. Buat tabel deret bergoyang 1,-2,4,-8,...........=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
4. Buat deret suku harmonis 1,1/2,1/3,.............=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T
5. Buat deret fibbonaci 1,1,2,3,5,.....................=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
6. Buat deret seperti berikut 1,-2,3,-4,.............=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
7. Buat deret kuadrat 1, 4, 9,............................=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
8. Buat deret seperti berikut 100, 90, 70 ,...........=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
9. Buat deret seperti berikut 256, 196, 144,............=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
10. Buat deret seperti berikut 1, 1, 1, 2, 2, 3, 6, 4, 24, 5..........=?
Program berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
11. Buatlah program untuk mencari faktorial, sesuai dengan input yang diminta.
12. Buat Algoritma untuk menghitung, sebuah kabel jalur kereta gantung
sepanjang 500 m direntang diantara 2 menara dengan 1 menara penunjang
ditengah-tengahnya. Kecepatan kereta tergantung kepada jarak kereta dari
menara terdekat. Ketika kereta berada pada jarak kecil dari 25 m dari
2
menara terdekat kecepatan kereta adalah : vel 0 , 2 d m / dt dimana d
adalah jarak kereta ke menara terdekat dan ketika kerata berada pada jarak
2
>= 25 m dari menara kecepatannya adalah vel d 0 .01 d m / dt .
125
Cetaklah tabel jarak dari menara I dan kecepatan kereta yang bergerak dari
menara I hingga ke III, setiap jarak 5 m. Cetak atau tampilkan juga nomor
menara yang dilewati kereta
13. Saudara diminta untuk menghitung potensial pada titik (r) solenoida tak
terhingga dengan jumlah lilitan N persatuan panjang dengan program
komputer. Bila penampang solenoida berbentuk lingkaran berjari-jari R dan
arus mengalir arus sebesar I dengan persamaan yang berlaku
o NI
V r, (r < R atau titik berada di dalam selenoida)
2
V=0 , ( r = R atau titik berada di selenoida)
126
BAB V
SUB PROGRAM
A. Pengertian
Sebuah program yang baik adalah program yang membagi permasalahan utama
menjadi bagian-bagian kecil dimana setiap bagian kecil ditangani oleh sebuah
subprogram, cara ini disebut dengan pemrograman terbagi/terpecah (modular
programming). Cara ini termasuk pemrograman terstruktur dan sangat didukung
oleh bahasa Pascal. Untuk itu, Pascal telah menyediakan dua jenis subprogram, yaitu
procedure dan function (prosedur dan fungsi). Subprogram adalah bagian dari
program yang dirancang untuk melaksanakan suatu tugas tertentu. Idenya adalah
konsep tentang modularitas. Dengan cara ini, program akan lebih mudah dimengerti,
dan jika ada kesalahan di dalam proses pengolahan data akan lebih mudah untuk
melokalisirnya.
Secara garis besar, konstruksi keduanya mirip dengan program. Prosedur dan
fungsi biasanya dikatakan sebagai ’program kecil’. Keduanya bisa memiliki bagian
deklarasi, bagian badan, bahkan juga dapat memiliki subprogram (prosedur atau
fungsi) yang lain. Aturan umum yang dapat digunakan untuk menentukan perlunya
dibuat suatu prosedur atau fungsi adalah tingkat kerumitan masalah yang akan
diselesaikan. Untuk permasalah yang cukup rumit, solusinya dibagi menjadi
subsolusi-subsolusi yang lebih kecil. Masing-masing subsolusi diwujudkan dalam
bentuk prosedur atau fungsi. Contoh; masalah pengelolaan data karyawan dapat
dibagi menjadi bagian pemasukan data, pengubahan data, penampilan data, dan
penghapusan data. Kemudian masing-masing bagian tersebut diwujudkan dalam
sebuah procedure atau function. Setiap bagian yang disebut module melakukan tugas
tertentu secara cepat dan tepat, namun tetap tergantung kepada kejelian si programmer.
Subprogram biasanya dibuat apabila ada perhitungan atau sering dieksekusi dalam
sebuah program. Contoh bagain yang dapat dibuat menjadi subprogram antara lain :
· Menampilkan menu pilihan
· Menghitung nilai rata-rata
· Mensortir data
127
B. Prosedur
Suatu ide penting yang ditekankan oleh Pascal dalam pemograman adalah apabila
konsep rutin, secara dasar merupakan sekumpulan perintah dengan nama tertentu yang
dapat diaktifkan banyak kali, maka kita dapat menggunakanya dengan memanggil
nama mereka. Cara ini dapat menghindari pengulangan penulisan perintah yang sama
berkali-kali dan pemakaian versi kode dirubah-rubah dalam sebuah program.
Pemakaian versi yang berubah-rubah dalam sebuah program akan berdampak kepada
seluruh aplikasi yang dibuat. Dengan demikan, dari sudut pandang ini berpikir secara
rutinitas mekanisme merupakan dasar dari code encapsulation.
Prosedur (procedure) adalah bentuk subprogram yang semata-mata bertugas
mengerjakan suatu aktivitas. Aktivitas tersebut dapat dikerjakan secara berulang
dengan apabila aktivitas tersebut akan dilakukan, bagian program yang
membutuhkannya cukup memanggil nama prosedur tersebut bersama parameter yang
menyertai apabila ada. Berikut ini akan diuraikan cara pembuatan prosedur dan cara
menggunakan atau cara memanggilnya.
1. Prosedur Sederhana
Prosedur (module) sederhana minimal terdiri atas beberapa pernyataan
(statements) yang dikelompokkan yang dimulai dengan menggunkan kata kunci Begin
dan diakhir dengan kata End; (end dengan memakai tanda titik koma). Setiap
procedure mempunyai nama yang khusus sesuai dengan masalah yang diselesaikan.
Sintaks dalam mendeklarasikan prosedur adalah seperti terlibat pada Gambar 23
berikut:
128
parameter yang menyertainya.
129
writeln(' 4: Kopi file teks’);
writeln(' 5: Cetak file teks’)
End;
BEGIN
writeln('memanggil prosedur');
Display_Menu;
writeln('kembali dari prosedur')
END.
Sintaks pemakaian procedure dalam bentuk diagram adalah adalah seperti pada
Gambar 30 berikut:
130
writeln('Menghitung jarak tempuh berdasar pada');
writeln('dua variabel yaitu: kecepatan dan waktu');
end;
Procedure masukkan_data;
Begin
write('Masukkan kecepatan dalam km/jam: '); readln(kecepatan);
write('Masukkan waktu dalam jam : ‘); readln(waktu)
end;
Procedure hitung_jarak;
Begin
jarak:= kecepatan *waktu;
End;
Procedure tampilkan_hasil;
begin
writeln('jarak yang ditempuh adalah ',jarak:5:2,' km.');
End;
BEGIN {program utama}
tampilan_judul;
masukkan_data;
hitung_jarak;
tampilkan_hasil
END.
131
memahaminya perhatikan Gambar 31, berikut, dimana, variabel A, B, dan C dapat
diakses oleh procedure D maupun E
Keterangan Gambar 32
Keseluruhan mengenal dan dapat mengakses variabel global A, B, C.
132
Pada procedure Tulisan_Ilmiah definisi global variabel A diganti dengan variabel
lokal. Pengertian A pada Variabel_Utama tidak sama dengan A pada
Tulisan_Ilmiah.
Karya dan Ilmiah dapat mengakses varibel Konsep dan Fakta.
Karya tidak dapat mengakses variabel Jujur dan Disiplin, dan Ilmiah tidak dapat
mengakses Iman dan Taqwa.
Tidak ada subprogram, kecuali Tulisan_Ilmiah yang dapat mengakses D dan E.
Procedure Karya_Ilmiah dapat mengakses Konsep dan Fakta.
Contoh:
Program Lokal_Variabel;
Uses crt;
Var
nomor1, nomor2 : integer; {ini bisa dipanggil dari mana-mana Global Var}
Procedure tambah;
Var
Hasil : integer; {hasil merupakan milik procedure tambah Local Var}
Begin
hasil := nomor1 + nomor2;
writeln(‘hasil adalah', hasil)
End;
Begin {program utama}
writeln(‘Masukkan dua angka bulat dengan spasi’); readln(nomor1, nomor2);
tambah;
End.
c. Penggunaan Forward
Forward pada Pascal digunakan untuk mendeklarasikan dimuka judul prosedur
secara terpisah dari bloknya. Judul prosedur yang berisi parameter terpisah ini
merupakan judul yang semestinya dan di deklarasikan dengan menambahkan kata
cadangan “ Forward ”. Blok prosedur ini letaknya terpisah dari judulnya, juga
133
diawali dengan judul prosedur, tetapi hanya mencantumkan judul atau nama
prosedurnya saja, tanpa mencantumkan parameter formalnya. Variabel pada suatu
subprogram dapat diakses oleh subprogram lain apabila sudah didefinisikan terlebih
dahulu namun kita sulit menentukan mana yang lebih dahulu ada bila kita memiliki
dua atau lebih subprogram. Untuk mengatasi masalah chicken-and-the-egg, bila kita
memiliki dua/lebih subprogram masing-masing bisa memanggil yang lain dengan
referensi forward. Hal ini berlaku juga nanti untuk subprogram Function (fungsi).
Procedure Pro1 ;
Begin
Writeln ( ‘Prosedur PRO’, I ) ;
End ;
Var
I : integer ;
Begin
I:=1;
Pro1 ( I ) ;
I:=2;
Pro2 ( I ) ;
End.
134
Keluaran dari contoh program di atas adalah sebagai berikut
Prosedur PRO1
Prosedur PRO2
3. Prosedur Komplek
Prosedur kompleks maksudnya disini adalah prosedur yang telah dilengkapi
dengan parameter dan prosedur yang memanggil prosedur lain. Procedure juga bisa
memakai variabel (data) untuk bekerja ketika dipanggil.
a. Mendeklarasikan parameter di dalam prosedur
· Variabel yang diterima oleh procedure diapit dengan tanda kurung ( ).
· Deklarasi dari variabel terletak diantara nama procedure dan semi-colon.
Contoh.
135
Procedure Panggil ( kesatu, kedua : integer );
Var
hasil : integer;
Begin
hasil := kesatu + kedua;
writeln('hasil adalah ', hasil );
End;
BEGIN
writeln('masukkan dua angka dalam spasi'); Readln( nomor1, nomor2 );
Panggil( nomor1, nomor2);
END.
Untuk lebih menambah pemahaman kita, pelajarilah prosedur memakai parameter
berikut ini.
Program TestNilai;
Uses wincrt;
var
x, y : integer;
Procedure NoEffect (x, y : integer );
Begin
x := y;
y := 0;
writeln( x, y );
End;
BEGIN
x := 1;
y := 2;
writeln( x, y );
NoEffect( x, y );
writeln( x, y );
END.
136
c. Prosedur Memanggil Prosedur Lain
Prosedur dapat memanggil prosedur yang lainnya. Untuk lebih mudah
pemahami pelajarilah contoh program dengan prosedur memanggil pprosedur lain :
Program Prosedur_panggil_prosedur;
Uses WinCrt;
Var
X : integer ;
Procedure Prosedur_Satu ( X1 : integer ) ;
Begin
Writeln ( 'Nilai X = ', X1, 'ada di prosedur Prosedur satu' ) ;
End ;
Procedure Prosedur_Dua (X2 : integer ) ;
Begin
Writeln ( 'Nilai X = ', X2, 'ada di prosedur dua' ) ;
Prosedur_satu (X2) ;
End ;
Begin
X := 5 ;
Prosedur_dua ( X ) ;
End.
Output program :
137
Program Prosedur_Utama;
Procedure_Tersarang
Procedure Pertama
Begin
…
…
…
End ;
Begin
…
…
…
End ;
BEGIN
…
…
…
END .
4. Prosedur Standar
a. Prosedur Standar Exit
Prosedur standar Exit digunakan untuk keluar dari suatu blok pernyataam. Bila
diletakkan pada program bagian, prosedur standar exit akan menyebabkan proses
di program bagian berhenti dan proses kembali ke blok program yang
memanggilnya. Bila berada di program utama, menyebabkan proses program
berhenti.
b. Prosedur standar Halt
Prosedur standar halt digunakan untuk menghentikan proses program baik di
subprogram maupun program utama.
c. Prosedur standar Move
Prosedur standar Move digunakan untuk menyalinkan suatu blok sebanyak count
byte memori dari blok, dimulai byte pertama source dan disalinkan ke byte
pertama dan demikianlah selanjutnya. Bentuk umum dari prosedur ini adalah
seperti berikut:
Move ( var source, dest; count : word )
138
Contoh program :
Var
Sumber, Tujuan : string [5] ;
Sejumlah : word ;
Begin
Sumber : = ‘ABCDE’ ;
Tujuan : = ‘FGHIJ’ ;
Sejumlah : = 4 ;
Move (Sumber, Tujuan, Sejumlah ) ;
Writeln (Sumber : 7, Tujuan : 7 ) ;
End.
Output program di atas adalah sebagai berikut:
ABCDE ABCIJ
C. Function
1. Pengertian
Sebagai subprogram, kegunaan fungsi mirip dengan prosedur. Fungsi diaktifkan
juga dengan memanggil namanya. Perbedaan utamanya adalah bahwa selain
mengerjakan suatu aktivitas tertentu, fungsi akan mengembalikan sutu nilai hasil
pemrosesan yang dilakukannya kepada bagian pemanggil (progam pemanggil).
Function, ketika dieksekusi menghasilkan suatu nilai. Function (fungsi) juga
memakai data dan mempunyai kemampuan untuk menghasilkan nilai pada procedure
atau program yang memanggilnya.
139
Sebagai mana halnya blok prosedur, blok fungsi harus dideklarasikan dengan
tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi.
Pada bahasa Pascal dikenal beberapa fungsi, seperti abs, pred, sqrt, sqr, succ dan
sebagainya. Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function.
Sedangkan fungsi yang akan bicarakan disini adalah fungsi yang kita buat sendiri.
Akibat fungsi akan mengembalikan suatu nilai, maka nilai kembalian ini harus
diperlakukan sebagaimana mestinya.
Berbeda dengan prosedur, fungsi merupakan modul program yang
menghasilkan suatu kuantitas. Hal ini dapat dilihat dari bentuk header-nya yang
menyebutkan jenis data dari kuantitas yang dihasilkan. Fungsi digunakan untuk
melakukan operasi matematika seperti perhitungan faktorial. Dalam membuat fungsi
harus memperhatikan hal-hal berikut ini:
a. dimulai dengan kata kunci function
b. struktur fungsi sama dengan sebuah procedure
c. didalam fungsi, suatu nilai dihasilkan dengan nama function
d. suatu function dipakai pada sisi sebelah kanan pada suatu ekspresi
e. fungsi hanya menghasilkan tipe data sederhana
Pengembalian nilai pada fungsi yang umum dilakukan adalah menampungnya
dalam sebuah variabel dengan tipe yang sama dengan tipe data nilai kembalian. Sintaks
untuk mendeklarasikan fungsi adalah sebagai berikut:
Function Identifier(daftar-parameter: tipe data) : type_data;
Contoh :
Function Faktorial(Var Fak,Hasil : Integer):Integer;
Function Pangkat(X,Y : Real):Real;
Blok fungsi diawali dengan kata cadangan Begin dan diakhiri dengan kata
cadangan End dan titik koma. Contoh di atas memperlihatkan bahwa secara blok fungsi
hampir sama dengan blok prosedur, hanya saja fungsi harus dideklarasikan dengan
tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Bentuk diagram alir
perumusan sintaks penggunaan function adalah seperti Gambar 34 berikut:
140
Gambar 34. Sintaks deklarasi fungsi
Contoh:
Program Contoh_fungsi ;
Var a : array [ 1 . . 5 ] of integer ;
total : integer ;
Function Hitung : integer ; {mengembalikan nilai bertipe integer }
Var i , jumlah : integer ;
Begin
jumlah := 0 ;
for i := 1 to 5 do
jumlah := jumlah + a [i] ; {hitung jumlah bilangan }
Hitung := jumlah ; {kembalikan nilai kepemanggil}
End ;
BEGIN
Total := hitung;
Writeln(total);
END.
141
Contoh lain:
Program Contoh_Fungsi;
Uses crt;
var
angka, jawaban : integer;
Function Kubik( x : integer ) : integer;
Begin
Kubik := x * x * x
End;
BEGIN
writeln('Masukkan angka.'); Readln(angka);
jawaban := Kubik (angka );
writeln('Hasil pangkat tiga dari ',angka,' adalah ',jawaban);
END.
Contoh lain adalah fungsi yang digunakan untuk menghitung faktorial seperti
program berikut ini:
Program MenghitungFaktorial;
Uses WinCrt;
Var
x : byte;
Function faktorial (n:byte):integer;
Begin
if n<2 then faktorial:=1
Else Faktorial:=n*faktorial(n-1);
end;
BEGIN
writeln('Masukkan Angka : '); readln(x);
writeln(x,'! adalah ',faktorial(x));
Readln;
END.
142
2. Perbedaan fungsi dengan prosedur
a. Pada fungsi, nilai yang dikirimkan balik pengirimnya terdapat pada nama
fungsinya (kalau pada prosedur pada parameter yang dikirimkan secara acuan).
Pada contoh, nama fungsi tersebut adalah Hitung dan nilai yang dikirim balik
berada pada nama fungsi tersebut, sehingga nama fungsi ini harus digunakan
untuk menampung hasil yang akan dikirimkan dari fungsi, sebagai berikut :
Hitung := A + B;
Nama fungsi yang berisi nilai yang akan dikirimkan
b. Fungsi dapat langsung digunakan untuk dicetak hasilnya, karena nilai balik
berada di nama fungsi tersebut, untuk mudahnya perhatikan contoh berikut :
Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
Nama fungsi yang langsung
digunakan untuk ditampilkan hasilnya.
Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel
yang lainnya, sebagaimana terlihat pada contoh berikut :
Hasil := Hitung(X,Y);
Writeln(X,’ + ‘,Y, ‘ + ‘,Hasil);
Sedang pada prosedur, nama prosedur tersebut tidak dapat digunakan langsung.
Pada prosedur yang dapat digunakan langsung adalah parameter yang mengandung
nilai balik.
D. Parameter
Parameter adalah sarana untuk berkomunikasi antara bagian pemanggil dengan
prosedur atau fungsi yang dipanggilnya. Parameter digunakan bagian pemanggil untuk
memberikan data pendukung aktivitas prosedur/fungsi, atau menerima kembali data
hasil pemrosesan oleh prosedur/fungsi. Parameter yang digunakan dalam
mendefinisikan prosedur atau fungsi disebut parameter formal, dan parameter yang
143
digunakan untuk memanggil prosedur/fungsi disebut parameter aktual. Keduanya bisa
sama, bisa juga berbeda.
Ada dua jenis parameter formal, yaitu parameter nilai dan parameter variabel.
Parameter nilai digunakan jika ia hanya diharapkan membawa data pendukung dari
bagian pemanggil untuk diberikan kepada prosedur/fungsi. Isi dari parameter nilai tidak
akan berubah, meskipun di dalam prosedur/fungsi. Sebaliknya, parameter selain
dimaksudkan untuk membawa data ke prosedur/fungsi, parameter variabel diharapkan
juga untuk membawa data hasil pemrosesan kembali ke bagian pemanggil.
Konsekuensinya adalah isi parameter variabel dapat berubah selama terjadi pemrosesan
di dalam prosedur/fungsi. Perubahan ini akan diterima oleh bagian pemanggil.
Berdasarkan uraian di atas, dapat ditarik suatu kesimpulan, bahwa kita akan
menggunakan parameter nilai jika kita hanya ingin memberikan data kepada
prosedur/fungsi tanpa perlu mengubah isinya. Kita akan menggunakan parameter
variabel jika kita berharap isi parameter tersebut berubah sesuai hasil pemrosesan yang
dilakukan oleh prosedur/fungsi.
Deklarasi pengenal tipe data, variabel, konstanta, prosedur, maupun fungsi
memiliki ruang lingkup tertentu. Secara umum, aturannya adalah segala sesuatu hanya
akan dikenal di mana ia dideklarasikan. Jika sebuah pengenal dideklarasikan dilevel
program, maka semua bagian program akan mengenalnya. Jika sebuah pengenal
dideklarasikan disebuah prosedur atau fungsi, maka ia hanya akan dikenal di prosedur
atau fungsi tersebut. Konsep di atas sering dinyatakan juga dengan lokalitas dan
globalitas pengenal. Pengenal dengan ruang lingkup meliputi seluruh program disebut
pengenal global, sementara yang ruang lingkupnya lebih kecil (sebatas prosedur atau
fungsi) disebut pengenal lokal. Pemrograman yang baik adalah pemrograman yang
tidak menggunakan banyak pengenal, khususnya variabel, yang bersifat global. Jika
ada nama pengenal global dan pengenal lokal yang sama, maka yang digunakan adalah
pengenal lokal. Ada beberapa aturan lain untuk default parameter, seperti berikut:
Parameter dengan nilai default haruslah diletakkan pada akhir daftar parameter.
Nilai default haruslah berupa konstanta. Hal ini terlihat membatasi tipe yang kita
pakai dengan default parameter. Misalnya, suatu array dinamis atau suatu
144
interface type tidak dapat mempunyai default parameter selain nol, record tidak
dapat digunakan sama sekali.
Default parameter harus dilewatkan secara nilai (passed by value) atau sebagai
konstanta. Suatu parameter reference (variabel) tidak dapat mempunyai nilai
default.
145
(nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan
pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak
dikirimkan balik dari parameter formal ke parameter nyata.
Parameter – parameter yang digunakan dengan pengiriman secara nilai ini disebut
dengan parameter nilai (value parameter). Untuk memudahkan memahaminya
pelajarilah contoh berikut:
Procedure Hitung(A, B : integer ) ;
Var
X, Y : integer ;
C : integer ;
Begin
C:=A+B;
Writeln (‘Nilai C =’, C ) ;
End ;
Begin
Write ( ‘Nilai X =’ ) ; readln ( X ) ;
Write ( ‘Nilai Y =’ ) ; readln ( Y ) ;
Hitung ( X, Y ) ;
End.
Output program di atas adalah :
Nilai X = 2
Nilai Y = 3
Nilai C = 5
Penjelasan program :
prosedur dimulai dengan deklarasi prosedur dengan judul prosedur hitung.
Variable A dan B adalah parameter formal dan integer adalah tipe parameternya.
Variable local yang hanya dipergunakan di prosedur dan tidak termasuk parameter
formal (parameter nilai), harus didefinisikan sendiri, yaitu : variable C
Hubungan antara parameter formal di prosedur dengan parameter nyata di modul
utama adalah : nilai parameter nyata X dan Y dimodul utama dikirimkan ke
146
parameter formal A dan B di prosedur. Dengan demikian nilai parameter A dan B
diprosedur akan berisi nilai yang sama dengan parameter X dan Y di modul
utama.
147
Untuk meningkatkan pemahaman anda pelajarilah contoh program yang prosedur
hitung berikut ini :
148
Function Terbesar(X,Y:Real):Real;
Begin
If X>Y then
Terbesar :=X
Else
Terbesar :=Y;
End;
Var
Nilai1,Nilai2 :Real;
BEGIN
Write(‘Nilai Pertama ?’);Readln(Nilai1);
Write(‘Nilai Kedua ?’); Readln(Nilai2);
Writeln(‘Nilai Terbesar adalah’ ,Terbesar(Nilai1,Nilai2):9:3);
END.
Output dari program di atas adalah :
Nilai Pertama ? 12,356
Nilai Kedua ? 55.182
Nilai Terbesar adalah 55,182
Program Contoh3:
Function Hitung(Var A,B,C : Integer):Integer; Output :
Begin
Hitung :=A+B; Nilai X ? 2
C :=A*B; Nilai Y ? 3
End.
2+3=5
Var 2*3=6
X,Y,Z : Integer;
Begin
149
Write(‘Nilai X ?’);
Readln(X);
Write(‘Nilai Y?’);
Readln(Y);
Writeln;
Writeln(X,’+’,Y, ‘=’,Hitung(X,Y,Z);
Writeln(X,’*’,Y, ‘=’,Z);
End.
Pascal tidak menyediakan Fungsi untuk perpangkatan tinggi, yang ada hanyalah SQR,
yaitu untuk pemangkatan kuadrat. Bila kita menghitung bilangan berpangkat berorde
lebih tinggi, maka kita harus dibuat program tersendiri, seperti program berikut:
Program Contoh4;
Function PangkatI(X:Real; Y:Integer):Real;
Var Pangkat :=1;
For I := 1 to Y do
Pangkat := Pangkat * X;
PangkatI := Pangkat;
End;
Var
A: Real;
B : Integer;
Begin
Write(‘Nilai akan dipangkatkan ?’); Readln(A);
Write(‘Dipangkatkan dengan ?’); Readln(B);
Writeln(A:9:3, ‘Pangkat’ ,B, ‘adalah’,PangkatI(A,B):9:3);
End.
Output dari program di atas adalah sebagai berikut:
Nilai akan dipangkatkan ? 1.5
Dipangkatkan dengan ? 3
1.500 pangkat 3 adalah 3.375
150
E. Rekursi dan Iterasi
Subprogram bisa memanggil dirinya (Recursive Call) dengan catatan bahwa
memiliki syarat penghentian operasi (iterasi), sehingga perlu dilakukan kehati-hatian
dalam penulisannya. Sebagai gambaran bagi anda, perhatikanlah contoh tentang
faktorial suatu bilangan di bawah ini. 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 atau 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.
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;
151
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ') ;
readln(N) ;
writeln('Hasil perhitungan : ',Fakto(N)) ;
readln ;
end .
Hasil run program adalah sebagai berikut :
Faktorial berapa yang anda ingin hitung : 5
Hasil perhitungan : 120
Dari program di atas terlihat bahwa notasi Fakto(N-1) yang digunakan untuk
memanggil program sebelumnya dinamakan sebagai pemanggil atau rekursi.
Program faktorial;
Uses wincrt;
Var x : integer;
Function factorial (n:integer):integer;
Begin
if n<2 then { ini adalah syarat penghentian operasi }
factorial:=1;
else
factorial:=n*factorial(n-1); { ini bagian rekursi}
End;
BEGIN
writeln('Masukkan nilai : '); readln(x);
writeln(x,'! adalah ',factorial(x));
END.
Penjelasan
Jika x= 5,maka Pemanggilan
Ke-1, n=5. Factorial:=5*factorial(4); => Perlu Pemanggilan Ke-2
Ke-2 , n=4. Factorial:=4*factorial(3); => Perlu Pemanggilan Ke-3
152
Ke-3 , n=3. Factorial:=3*factorial(2); => Perlu Pemanggilan Ke-4
Ke-4, n=2. Factorial:=2*factorial(1); => Perlu Pemanggilan Ke-5
Ke-5, n=1. Factorial:=1;
Ke-4 menjadi : Factorial:=2*1; (=2)
Ke-3 menjadi: Factorial:=3*2; (=6)
Ke-2 menjadi: Factorial:=4*6; (=24)
Ke-1 menjadi: Factorial:=5*24; (=120)
F. Fungsi Standar
Pascal menyediakan beberapa fungsi standar yang telah didefinisikan dan tidak
perlu dibuat kembali oleh pemakai yang sering digunakan untuk operasi-operasi
arithmatika diantaranya adalah :
1. Fungsi standar ABS
Bentuk Umum : ABS(X);
Fungsi ABS digunakan untuk memutlakkan suatu nilai yang ditunjukkan oleh
argumen X. Argumen X dapat berupa tipe real atau integer dan hasil dari fungsi ini
akan sama dengan tipe argumennya. Memutlakkan suatu nilai berarti nilai negatif
dipositifkan dan nilai positif tetap positif. Perhatikan contoh berikut :
Program Mutlak;
Var X : Real;
Begin
Write(‘Nilai yang akan dimutlakkan ?’);Readln(X);
Writeln(‘Nilai Mutlaknya =’,Abs(X):9:2);
End.
Output :
Nilai yang akan dimutlakkan ? –25.75
Nilai mutlaknya = 25.75
2. Fungsi standar EXP
Bentuk umum : EXP(x : Real) : Real;
153
Fungsi Exp digunukan untuk menghitung nilai pangkat dari bilangan e (bilangan
alam), yaitu sebesar ex. Argumen x dapat berbentuk tipe real atau integer dan hasil
dari fungsinya adalah real. Perhatikan contoh berikut ini.
Program Misal;
Var X : Real;
Begin
Write(‘Nilai yang akan dieksponentialkan ?’);Readln(X);
Writeln(‘Nilai Eksponentialnya = ‘,Exp(X):9:5);
End.
Output :
Nilai yang akan dieksponentialkan ? 7.5
Nilai Eksponentialnya = 1808.04241
3. Fungsi Standar LN
Bentuk Umum : Ln(x : Real):Real;
Digunakan untuk menghitung nilai algorithma alam (Natural Logarithm) dari nilai x.
Argumen x dapat berbentuk tipe Real atau Integer dan hasil dari Fungsinya adalah
Real.
Contoh :
Program Misal3;
Var
X : Real;
Begin
Write(‘Nilai yang akan di Ln ?’);Readln(x);
Writeln(‘Nilai Ln = ‘,Ln(x):9:2);
End.
Output :
Nilai yang akan di Ln ? 100
Nilai Ln = 4.61
154
berupa pembulatan ke bawah (nilai pecahan dibuang) dari nilai x. Perhatikanlah
contoh berikut ini :
Program Misal4;
Var X : Real;
Begin
Write(‘Nilai yang akan dibulatkan ?’); Readln(X);
Writeln(‘Nilai pembulatannya = ‘,Int(X):9:2);
End.
Output :
Nilai yang akan dibulatkan ? 9.99
Nilai pembulatannya = 9.00
155
dengan tipe argumennya. Untuk memudahkan pengertian anda perhatikanlah contoh
berikut ini.
Program Misal6;
Var x : Real;
Begin
Write(‘Nilai yang akan dikuadratkan ?’); Readln(X);
Writeln(‘Nilai kuadratnya =’, SQR(X):9:2);
End.
Output :
Nilai yang akan dikuadratkan ? 5
Nilai kuadratnya = 25.00
156
G. Fungsi Standar Transfer
Fungsi standar transfer digunakan untuk merubah suatu nilai ke bentuk nilai yang lain.
Fungsi-fungsi standar transfer yang tersedia pada Turbo Pascal antara lain: Chr, Ord,
Round dan Trunc
157
Output dari program di atas adalah :
Karakter ? B
B adalah kode ASCII : 66
158
H. Soal Latihan 5
1. Buatlah 3 contoh sintaks deklarasi procedure dan function serta cara memanggilnya
2. Sebutkan dan buat 3 contoh ruang lingkup variabel
3. Buat program sederhana dalam bentuk prosedur dan fungsi yang melewati harga
dengan parameter nilai (acuan) dan prosedur yang melewati harga dengan parameter
variabel.
4. Pada sebuah laboratorium dalam melaksanakan penelitian terdapat petunjuk
penggunaan alat atau bahan dengan berbagai satuan skala suhu yaitu Fahrenheit,
Reamor dan Celsius. Konversi yang harus dibuat adalah dari Fahrenheit ke Celsius,
Fahrenheit ke Reamor, Celsius ke Fahrenheit. Instruktur laboratorium meminta
Saudara untuk membuat program koversi skala penggukuran tersebut. Petunjuk
gunakan program pembantu berupa prosedur yang mengandung variabel global,
variabel lokal, parameter acuan (nilai) dan parameter variabel.
5. Saudara ditugaskan menghitung massa jenis benda berbentuk bola dan kubus yang
terbuat Besi dan Aluminium dengan ukuran dan kerapatan jenis yang berbeda-beda.
Agar perhitungan dapat dilakukan dengan cepat dan akurat, instruktur
memerintahkan Saudara agar membuat program dengan ketentuan sebegai berikut:
a. untuk menghitung volume, gunakan program pembantu Procedure
b. Input adalah sisi kubus atau jari-jari bola, massa benda
c. Tampilan menu:
- Menu Jenis Benda:
1. Data Kubus
2. Data Bola
Selasai
Pilihan Anda !!!
159
d. Input data selesai setalah pada bagian input jenis benda dituliskan kata
“Selesai”.
Buatlah algoritma dan program dengan pascal untuk menyelesaikan
permasalahan di atas
6. Buatlah procedure untuk menampilkan pola segi tiga dari karakter ’*’ dengan sisi
tegak ada di bagian kanan. Contoh untuk n = 5, hasilnya berbentuk :
*
* *
* *
*****
7. Ingin dibuat procedure untuk menampilkan pola bilangan dalam segi tiga seperti
contoh berikut (untuk n = 5). Bagaimana isi procedurenya?
1
121
12321
1234321
123454321
8. Buatlah program untuk menghitung luas persegi panjang, segitiga, dan lingkaran.
Perhitungan masing-masing bangun dilakukan oleh fungsi yang mengembalikan
luas tiap bangun. Tiap fungsi memiliki parameter berupa data yang diperlukan
untuk menghitung luas : panjang dan lebar (persegi panjang), alas dan tinggi
(segitiga), dan diameter (lingkaran).
9. Buatlah function untuk menghitung luas segiempat yang batasnya ditunjukkan oleh
koordinat titik kiri-atas (x1,y1) dan koordinat titik kanan-bawah (x2,y2). Cara
memanggil function ini adalah Luas(x1,y1,x2,y2). Sebagai contoh Luas(0,0,1,1)
akan menghasilkan nilai 1 sedang Luas(10,10,60,30) akan menghasilkan 1000.
10. Diketahui sebuah konduktor berongga berupa bola berjari-jari (R) bermuatan q
dan pada jarak d dari pusat bola dan mempunyai sebesar muatan Q. Buatlah
algoritma dan program dalam satu paket untuk menghitung:
160
a. Energi pada kulit bola bermuatan q
b. Medan listrik dan potensial untuk
- d>R
- d< R
- d=R
Gunakan program moduler procedure dan parameter nilai, parameter variabel,
Variabel global, variabel lokal untuk setiap kasus perhitungan (Baca Medan
Elektromagnetik, Karangan Waloejo Laksmanto, hal 37 – 49) untuk
mendapatkan persamaan yang akan digunakan.
11. Buat program mengandung procedure untuk menghitung, sebuah kabel jalur kereta
gantung sepanjang 500 m direntang diantara 2 menara dgn 1 menara penunjang
ditengah-tengahnya. Kecepatan kereta gantung tersebut bergantung kepada
posisinya pada menara. Ketika kereta berada pada jarak kecil dari 25 m dari
2
menara kecepatannya adalah : vel 0 , 2 d m / dt dan dengan: d adalah jarak
kereta ke menara terdekat dan ketika kerata berada pada jarak >= 25 m dari
2
menara kecepatannya adalah vel d 0 . 01 d m / dt . Cetaklah tabel
jarak dari menara I dan kecepatan kereta yang bergerak dari menara I hingga ke
III, setiap jarak 5 m. Cetak juga nomor menara yang dilewati kereta.
161
BAB VI
ARRAY (LARIK)
A. Pengertian
Array atau larik adalah tipe data terstruktur yang terdiri dari sejumlah komponen-
komponen yang mempunyai tipe sama. Array sering juga disebut dengan sekumpulan
kotak “variabel” yang dapat menyimpan sekumpulan elemen bertipe sama secara
berurutan (sequential). Komponen-komponen tersebut disebut sebagai komponen tipe
yang mempunyai jumlah tetap. Array dapat juga dikatakan sebagai suatu tipe data
terstruktur yang mempunyai komponen dalam jumlah yang tetap, dimana setiap
komponen mempunyai tipe data yang sama. Posisi masing-masing komponen dalam
array dinyatakan dengan nomor indeks.
Banyaknya komponen dalam array ditunjukkan oleh suatu indeks, dimana tiap
komponen array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array
dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan
tipe data skalar atau subrange. Tipe indeks ini dapat berbentuk satu dimensi, dua dimensi
hingga n dimensi. Array mempunyai ciri-ciri sebagai berikut:
1. Setiap elemen data array diakses melalui indeksnya
2. Indek array harus suatu tipe data yang mempunyai keterurutan , maksudnya adalah
indeks data mempunyai suksesor dan predecessor, karena setiap elemen data
disimpan secara berurutan. Contoh bertipe data yang mempunyai sifat keterurutan
tersebut adalah integer, charakter atau tipe data enumerasi.
3. Jika indeks berupa bilangan integer, maka keterurutan indeks sesuai dengan urutan
bilangan integer yaitu (0,1,2,3,4,5,6,..)
4. Jika indeks karakter, maka keterurutan indeks sesuai dengan urutan karakter
(a,b,c,d,e ….).
Contoh1
Type
x:array[1..11] of integer;
Var
Gaji : array[1..10] of Real;
162
Contoh 2 :
Var
Vektor : array[1..50] of Integer;
Pada contoh 2, array dengan nama Vektor telah dideklarasikan dengan tipe
integer, dengan jumlah elemen maksimum 50, nilai dari elemen array Contoh 2 di atas
harus bertipe integer.
Bagi para pemrogram, efisiensi dalam menulis program merupakan hal utama
yang harus diperhatikan, baik itu dalam hal kecepatan jalannya program, memori yang
digunakan, banyak baris kode yang dituliskan dan juga ketepatan algoritma yang
digunakan. Salah satu komponen yang harus dikuasai untuk memperoleh program yang
baik adalah pengetahuan tentang array. Sebagai contoh, misalkan terdapat kumpulan
data berbentuk array, katakanlah A yang memiliki 10 buah elemen nilai yang bertipe
integer, dapat dipresentasikan seperti Gambar 35 berikut :
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
1 2 3 4 5 6 7 8 9 10
10 20 30 40 50 60 70 80 90 100
Setiap elemen array di atas menyimpan nilai bertipe integer dan akan menempati
alamat memori yang berbeda, hal ini akan menyebabkan array tersebut memiliki ukuran
40 byte, yang berasal dari 10 x 4. Nilai 10 menunjukkan banyaknya elemen array
sedangkan nilai 4 merupakan ukuran dari tipe data integer (dalam 32 bit).
163
Type
nama_array = ARRAY[bawah..atas] of tipe_data;
Var
Variabel_array : nama_array;
atau dengan menggunakan statemen var dapat ditulis sebagai berikut:
Var
Variabel_array : ARRAY[bawah..atas] of tipe_data;
Deklarasi di atas mempunyai pengertian bawah dan atas menyatakan batas untuk
array, tipe_data adalah merupakan tipe variabel yang dipunyai array (misalnya
Integer, char, real, dan sebagainya. Bentuk lain juga dapat ditulis sebagai berikut:
Type
Indeks = 1..50;
namaarray = array [indeks] of tipedata ;
Var
namavariabel : namaarray ;
164
A A A A A A A A A . . A
1 2 3 4 5 6 7 8 9 . . 50
Begin
…
…
End.
165
2. Deklarasi Tipe Index Subrange Byte
Jika indeks dari larik tidak sampai dengan 255, maka indeis dari array ini dapat
dideklarasikan dengan tipe byte. Caranya mendeklarasinya adalah sebagai berikut:
Var
X : array [0..255] of real ;
Karena nilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini dapat
ditulis :
Var
X : array [byte] of real ;
166
Var
Jumlah : array [(Jan, Peb, Mar)] of integer ;
Begin
Jumlah[Jan] : = 125 ;
Jumlah{Peb] : = 75 ;
Jumlah[Mar] : = 18 ;
Writeln ( ‘Jumlah untuk bulan maret = ‘, Jumlah{Mar});
End.
Output dari program di atas adalah :
Jumlah untuk bulan Maret = 18
Contoh di atas dapat ditulis menjadi :
Type
Bulan = (Jan, Peb, Mar) ;
Var
Jumlah : array [Bulan] of integer ;
167
Nilai Konstanta larik ke 1 = 6
Nilai Konstanta larik ke 2 = 25
Nilai Konstanta larik ke 3 = 375
Nilai Konstanta larik ke 4 = 5
Nilai Konstanta larik ke 5 = 2
168
Contoh 2
Program Contoh_Array;
uses crt;
var
a : array[1..10] of byte;{maksimum jumlah elemen=10}
BEGIN
a[1]:=10;
a[2]:=15;
a[3]:=a[1]+a[2];
writeln(a[1]);
writeln(a[2]);
writeln(a[3]);
END.
Contoh 3 merupakan contoh lain untuk mengakses nilai ke dalam suatu komponen
array.
Program Contoh_Array_Input;
Uses Crt;
Var Bilangan : array[1..50] of Integer;
Begin
ClrScr;
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);
Readln;
End.
169
Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti
contoh 4. Contoh 4 merupakan array yang dideklarasikan bersama dengan tipe yang
beragam seperti contoh dibawah ini :
Program Contoh_Deklarasi_Array_Beragam;
Uses Crt;
Var
NIM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
BEGIN
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NIM =');Readln(NIM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NIM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Nim[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.
170
Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :
Type
Angka = String[20];
Var
Nama : Array [1..50] of Angka;
Begin
.
.
End.
Deklarasi tipe indeks subrange integer indeks pada array dapat tipe skalar atau
subrange, tetapi tidak bisa real.
Contoh:
Var
Nilai : Array[1..10] of Integer;
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array
tersebut dapat dideklarasikan dengan type seperti berikut ini :
Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;
atau :
Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;
atau :
Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;
171
atau :
Const
Atas =1;
Bawah = 5;
type
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;
172
9. Deklarasi Konstanta Array
Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di
bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const).
Caranya mendeklarasinya dalam bentuk program sederhana adalah sebagai
berikut;
Program Contoh_Deklarasi_Array_Konstan;
Uses Crt;
Const
Tetap : Array[1..4] of Integer=(7,10,21,20);
Var i : Integer;
Begin
For i:= 1 to 4 Do
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]);
Readln;
End.
konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut.
Caranya mendeklarasinya dalam bentuk program sederhana adalah sebagai berikut;
Program Contoh_Konstan_Array_Char_;
Uses Crt;
Const
Huruf : Array[0..5] of Char=('A','B','C','D','E','F');
Var i : Integer;
Begin
For i:= 0 to 5 Do
Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]);
Readln;
End.
Konstanta array dapat juga berupa string seperti berikut ini. Caranya
mendeklarasinya dalam bentuk program sederhana adalah sebagai berikut;
173
Program Constanta_Array_String;
Uses Crt;
Type
A = Array [1..5] of String;
Const
Nama : A = ('basic','pascal','cobol','paradox','dbase');
Var i : Integer;
Begin
For i:= 1 to 5 Do
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]);
readln;
End.
String dalam pascal juga merupakan array dari elemen- elemen karakter. Caranya
mendeklarasinya dalam bentuk program sederhana adalah sebagai berikut;
Program String_Adalah_Array_Tipe_Char;
Uses Crt;
Var
Nama : string;
i : Integer;
Begin
Nama:='Turbo Pascal';
For i:= 1 to Length(nama) Do
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]);
Readln;
End.
Berikut ini akan diberikan contoh program bilangan prima dengan menggunakan
bantuan array sebagai untuk memperjelas bagaimana penting tipe data terstruktur
dalam pemograman dengan menggunakan tipe data berindeks.
174
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses Crt;
Var
Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then
Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.
Berikut ini adalah sebuah program pengurutan atau shorting yang merupakan
proses untuk menyusun kembali kumpulan entri-entri data yang telah dimasukkan
dengan suatu aturan tertentu. Secara umum ada 2 macam pengurutan yaitu pengurutan
secara menaik (ascending) dan pengurutan secara menurun (descending). Salah satu
metodanya adalah metode gelembung (buble sort). Metode penukaran (Exchange
Sort) adalah metoda yang berdasarkan kepada penukaran elemen untuk mencapai
keadaan urut yang diinginkan. Algoritma mengurutan data menggunakan metoda
gelembung adalah sebagai berikut:
175
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
Algoritma di atas dapat diterjemahkan dalam bentuk program dalam bahasa Turbo
Pascal adalah sebagai berikut:
Program Sorting_data;
Uses Wincrt;
const N=10;
type
Vektor = Array [1..N] of integer;
Var
bil : vektor;
cad,i,j : integer;
Procedure Sorting( bil : vektor);
Begin
for i := 1 to n do
begin
for j := i+1 to n do
begin
if (bil[J] < bil[I] )then
begin
cad := bil[J];
bil[J] := bil[I];
bil[I] := cad;
end;
end;
end;
176
end;
BEGIN
writeln('masukkan sepuluh bilangan integer.');
for i:= 1 to 10 do
begin
write('masullan bila ke ',i); readln(bil[i]);
end;
writeln('Isi dari sebelum disorting array ini adalah');
for i := 1 to 10 do
begin
writeln('bil[', i:2,'] adalah ',bil[i] );
sorting(bil);
writeln('Isi dari setelah disorting array ini adalah');
for i := 1 to 10 do
begin
writeln('bil[', i:2,'] adalah ',bil[i] );
end;
END.
C. Array Multidimensi
Array dalam pascal dapat berdimensi lebih dari satu yang disebut dengan array
dimensi banyak (multidimensional array). Mengingat keterbatasan ruang dan
kebutuhan dalam pemograman secara umum, berikut ini akan dibahas array 2 dimensi
saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks
pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau
matrik. Array multidimensi lainya dapat dikembangkan dari pengertian dan cara
mengoperasikan array dua dimensi. Array dua dimensi terdiri atas baris (row) dan
kolom (column). Indeks pertama menyatakan baris dan indeks kedua menyatakan
kolom. Bentuk umum deklarasi array dua dimensi adalah sebagai berikut:
Nama_larik = array [tipe index1] of array [tipe index2] of tipe larik
177
atau
Nama_larik = array [tipe index1, tipe index2] of tipe larik
Ada beberapa sintaks dalam mendeklarasikan array dua dimensi antara lain :
Type
nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;
var
variabel_array : nama_array;
atau dengan menggunakan statemen Var
var
variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;
Contoh penggunaan array dua dimensi untuk pemograman operasi aritmatika untuk
matrik adalah seperti potongan program berikut:
Tabel : Array[1..3] of Array[1..2] of Byte;
atau :
Type
Matrik = Array[1..3,1..2] of Byte;
Var
Tabel : Matrik;
atau
Type
Baris = 1..3;
Kolom = 1..2;
Matrik = Array[Baris,Kolom] of Byte;
Var
Tabel : Matrik;
atau
Type
Baris = 1..3;
Kolom=1..2;
Matrik= Array[Baris] of Array[Kolom] of Byte;
178
Var
Tabel : Matrik;
Contoh program berikut merupakan cara mengakses elemen secara langsung pada
saat pembuatan program.:
Var
Tabel : array [1..3, 1..2] of byte ;
I, J : byte ;
Begin
Tabel[1,1] : = 5 ;
Tabel[1,2] : = 25 ;
Tabel[2,1] : = 200 ;
Tabel[2,2] : = 22 ;
Tabel[3,1] : = 75 ;
Tabel[3,2] : = 50 ;
For I : = 1 to 3 do
Begin
For J : = 1 to 2 do
Write ( table [I,J] : 10 ) ;
Writeln ;
End ;
End.
D. Parameter Array
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai
atau secara acuan ke prosedur atau ke fungsi. Prosedur yang menggunakan parameter
berupa array harus dideklarasikan di dalam judul prosedur dengan menyebutkan
parameternya bertipe aray. Caranya mendeklarasinya adalah sebagai berikut;
Type
Matriks = array [1..50, 1..50] of real ;
Var
179
I, J, K : byte ;
Procedure inverse (Var X : matriks ; N : byte ) ;
….
….
Begin
….
…
End.
Statemen array [1..50,1..50] berarti bahwa suatu pernyataan membentuk suatu array
real dengan nama matriks 50 x 50, yang berarti variabel matrik memiliki 2.500
elemen dengan tipe data real.
Untuk mengakses elemen setiap elemen matrik diperlukan suatu prosedur yang
menggandung parameter dengan mempergunakan struktur pengulangan for ...do
tersarang seperti diagram alir Gambar 36 berikut:
(a) (b)
Diagram alir pada Gambar 36a di atas merupakan diagram alir membaca elemen
matriks dari papan ketik yang dapat diterjemahkan ke dalam program dalam Turbo
Pascal sebagai berikut:
180
Procedure ISI_MATRIK(AKU:matriks; m,n:integer);
Var
i,j: integer; {faktor pengulang}
Begin
For I:=1 To M Do
Begin
For J:=1 To N Do
Begin
Write(‘A[‘,i,’ ,‘,j,’]’); Readln(A[I,J]);
End;
Readln ; {Ini Memungkinkan Kita Menulis Tiap Baris Elemen}
End;
Diagram alir pada Gambar 30b di atas merupakan diagram alir menampilkan
elemen yang dapat diterjemahkan ke dalam program dalam Turbo Pascal sebagai
berikut.
Procedure TULIS_MATRIK(AKU:matriks; m,n:integer);
Var
I,J: Integer; {Faktor Pengulang}
Begin
For I:=1 To M Do
Begin
For J:=1 To N Do
Begin
Write(A[I,J]:6);
End;
Writeln ; { Untuk Menulis Elemen Dalam Baris Dan Kolom }
End;
End;
181
Untuk meningkatan pemahaman tentang aplikasi tipe data array berikut ini
diberikan diagram alir dan listing program penggunaan array dua dimensi dalam
aplikasi penjumlahan matrik seperti Gambar 37 .
Procedure Penjumlahan_Matrik;
Var
Matrik1,Matrik2,
Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
For i := 1 to 3 Do
182
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];
End;
End;
End;
183
for i:=1 to 8 do
begin
if Mince[i]:= 11 then
writeln(‘ terdapat bilangan 11 dalam pita ini ‘);
else
writeln(‘ tidak ada bilangan 11, pencarian berhenti ‘);
end;
end;
184
Procedure cari_minimum( Deret : Vektor);
var
i: integer; {faktor pengulang}
Min : integer;
begin
min := 3200;
for i:=1 to 8 do
begin
if deret[i]< Min then Min:= deret[i];
end;
writeln(‘Nilai Minimum = ’,Min);
end;
Sebagai perwujudan dari array dua dimensi dalam operasi aritmatika seperti
penjumlahan, perkalian, dan pengurangan dapat dipelajari diagram alir Gambar 38 dan
listing program berikut ini.
185
Diagram alir pada Gambar 31, dapat diterjemahkan sebagai berikut:
Program Operasi_Matrik;
Uses crt;
Type
matrik=array[1..50,1..50] of real;
var
m,n, p, q: integer; {dimensi dari matrik}
A,B,C: matrik; {matrik A, B sebagai input, C sebagai hasil}
{ Membaca Elemen Matrik}
Procedure bacamatrik(var A:matrik; m,n:integer);
Var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
read(A[i,j]);
readln;
end;
end;
Procedure tulismatrik (A:matrik; m,n:integer);
Var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
writeln;
for j:=1 to n do
write(A[i,j]:6:2);
end;
186
writeln;
end;
Procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);
Var i,j :integer;
Begin
if (m=p) and (n=q) then
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
C[m,n]=A[m,n]+B[m,n])
end;
end;
end
else
writeln('Dimensi Matrik Tidak Cocok')
end;
Procedure perkalian_matrik(A,B,C:matrik; m,n,p,q:integer);
Var i,j, k :integer;
C1: matrik;
Begin
if (n=p) then
begin
for i:=1 to m do
begin
for j:=1 to p do
begin
C1[i,j]:=0;
for k:=1 to n do
187
C1[i,j]:=C1[i,j]+A[i,k]*B[k,j];
end;
end;
n:=q;
for i:=1 to m do
for j:=1 to n do
C[i,j]:=C1[i,j];
end
else
writeln('Dimensi Matrik Tidak Cocok')
end;
procedure Transpose(A,B:matrik; m,n,p,q:integer);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
begin
B[m,n]=A[n,m]
end;
end;
end;
188
Contoh 1
Program Operasi_Contoh;
Uses Wincrt;
Var
Nama : String;
Begin
Nama := 'Suci Rahmawati Roselina ';
Writeln(Nama[1]);
Writeln(Nama[8]);
Nama[6] := 'K';
Nama[16] := ' ';
Writeln(Nama);
End.
Jadi contoh 1 yaitu Program Operasi_Contoh di atas akan menghasilkan Nama[1]
adalah huruf 'S', dan Nama[8] adalah huruf 'h', Sedangkan Nama[6] := 'K'; dan
nama[8] serta nama[16] := ‘ ’ akan menyebabkan string nama ('Suci Rahmawati
Roselina) berubah menjadi ''Suci Kahmawati oselina '. Kita juga dapat
mendeklarasikan string dengan cara seperti berikut :
Var
Nama : String[40];
Alamat : String;
Cara pendeklarasian di atas berarti bahwa variabel Nama dapat menampung
maksimal 40 character, sedangkan variabel Alamat dapat menampung maksimal 255
character. Apabila panjang string pada deklarasi tidak ditentukan, secara otomatis
pascal menyediakan 255 character untuk string. Disamping hal di atas, kita juga dapat
memesan variabel array string dengan membuat pada deklarasi variable sebagai berikut:
NamaMhs : Array[1..10] Of String[30];
189
Program Operasi_Contoh2;
Uses Wincrt;
Var
NamaSiswa : Array[1..10] Of String[30];
i : integer;
Begin
for i := 1 to 5 do
Begin
Write('nama siswa ke ',i); Readln(namasiswa[i]);
end;
Writeln(Namasiswa[1]);
Writeln(Namasiswa[7]);
Writeln(Namasiswa[5]);
End.
Apabila program ini kita running dengan memasukan nama Badu, Mince,
Roselina, Fajar, Suci, maka akan menghasilkan Badu dan Suci. Kenapa demikian ?,
Pelajarilah contoh 2 dengan baik. Tentu anda mendapatkan jawabannya. Pada Turbo
Pascal juga terdapat beberapa fungsi bawaan Pascal yang dapat digunakan untuk oprasi
string. Adapun fungsi pembantu tersebut antara laian adalah :
1. Length
Length berfungsi untuk mendapatkan panjang string yang telah didefenisikan,
dengan sintaks pemakaiannya adalah sebagai berikut:
Syntax : length(s)
Contoh : : n:=length(s);
Misalnya s:='Apa kabar ?'; n akan berisi 11.
2. Copy, mendapatkan bagian dari suatu string.
Syntax : copy(s,from,howmuch)
Contoh : : st:=copy(s,5,5);
Menggambil 5 character mulai posisi ke 5
Misalnya s:='Apa kabar ?'; st akan berisi 'kabar'.
190
3. Pos
Pos berfungsi untuk mengambil posisi substring dari suatu string yang telah
didefenisikan, dengan sintaks pemakaiannya adalah sebagai berikut:
Syntax : Pos(substr,s)
Contoh : : n:=pos('kabar','Apa kabar ?'); { n:=5; }
Jika substring tidak ditemukan, maka akan mengembalikan 0.
4. Val
Val berfungsi untuk mengkonversi tipe data string menjadi tipe data numeric,
dengan sintaks pemakaiannya adalah sebagai berikut:
Syntax : val(strvar,numvar,errorcode)
strvar adalah suatu variabel string yang akan di konversi numvar adalah variabel
integer atau real. Errorcode adalah variabel integer yang akan berisi nilai
kesalahan, jika berisi 0 sukses. Contoh : :
Program String_Contoh;
Uses Wincrt;
Var
s : string;
e : integer;
r : real;
Begin
Write('Masukan sebuah bilangan : '); readln(s);
val(s,r,e);
if e<>0 then writeln('Kesalahan pada posisi : ',e)
else
writeln('Hasil konversinya adalah : ',r:4:3);
End.
5. Str
Fungsi Str berfungsi untuk mengkonversi numerik menjadi string, dengan sintaks
pemakaiannya numvar,strvar).
Contoh :
191
Var
s : string;
i : integer;
BEGIN
write('Masukan Bilangan bulat : '); readln(i);
str(i,s);
writeln('Bilangannya adalah : ',s);
END.
Jika anda bekerja dengan type real, anda perlu melakukan pemformatan sebelum
konversi ke string.
Contoh : :
Var
s : string;
r : real;
Begin
write('Masukan Bilangan real : '); readln(r);
str(r:4:3,s);
writeln('Bilangannya adalah : ',s);
End.
6. Concat,
Concat berguna untuk mengabung dua string atau lebih, dengan sintaks :
concat(s1,s2,...,sn)
Contoh : st:=concat(s1,s2);
Jika s1 adalah 'Penta', dan s2 adalah 'COM', maka st menjadi 'PentaCOM'
Sebenarnya kita juga dapat menggunakan operator + untuk mengabung string.
Contoh : st:=s1 + s2; atau sama dengan st:=concat(s1,s2);
7. Insert berguna untuk menyisip suatu string kedalam string lain dari posisi
tertentu,denga sintaks : insert(source,target,index).
Contoh :
192
Var
s1, s2 : string;
Begin
s1:='not ';
s2:='I do love you';
insert(s1,s2,6);
writeln(s2); { I do not love you }
End.
8. Delete
Delete berguna menghapus sejumlah character dari string mulai posisi ke I,dengan
sintaks delete(s,i,n);
Contoh:
Var
s : string;
Begin
s:='I am not responsible for that !';
delete(s,6,3);
writeln(s); { I am responsible for that }
End.
Sebagai program tambahan, perhatikan program berikut ini
Program String_tambahan;
Uses WinCrt;
var nama : string;
urutan, posisi: integer;
Begin
nama:='Dijas Keren';
writeln('Yang ini delete');
for urutan:=1 to 11 do
Begin
posisi:= 13 - urutan;
193
delete(nama, posisi, 1);
writeln(nama);
End;
writeln;
nama:='DijasKeren';
writeln('Yang ini insert');
writeln('Sebelum di Insert : ', nama);
insert('-', nama, 6);
writeln('Setelah di Insert : ', nama);
readln;
End.
Jadi isi penggunaan delete itu maksudnya menghapus (string, posisinya, jumlah
yang di hapus). Sedangkan insert berguna untuk menyisip (apa yang mau
disisipkan, string, posisinya).
9. Upcase.
Upcase berfungsi untuk merubah huruf kecil menjadi huruf kapital untuk
mudahnya perhatikan contoh berikut ini:
Program convert_upper;
USES Wincrt;
Var
text : string;
i
: integer;
BEGIN
Clrscr;
writeln ('Input some text in all lowercase letters'); readln (text);
for i := 1 to length(text) do
begin
text[i] := upcase(text[i]);
end;
writeln ('The uppercase text is: ');
194
writeln (' ', text);
readln;
END.
Berikut ini diberikan tambahan program pemakaian array untuk melewatkan
parameter nilai dan parameter acuan. Contoh Program :
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure;
Uses Crt;
Const Garis ='---------------------------------------------------';
Type
Vektor = Array[1..10] of String[15];
Bulat = Array[1..10] of Integer;
Mutu = Array[1..10] of Char;
Var
i, Banyak : Integer;
Procedure Proses(Nama:Vektor ; Nilai:Bulat);
Var
Keterangan : String;
Huruf : Char;
Begin
Writeln(Garis);
Writeln('Nama Nilai Huruf Keterangan');
Writeln(Garis);
For i := 1 to Banyak Do
Begin
If Nilai[i] > 90 Then
Begin
Huruf :='A';
Keterangan :='Istimewa';
End;
If (Nilai[i]<90) And (Nilai[i]>70) Then
Begin
Mutu:='B';
Keterangan :='Memuaskan';
End;
If (Nilai[i]<70) And (Nilai[i]>60) Then
Begin
Mutu:='C';
Keterangan :='Cukup';
End;
If (Nilai[i]<60) And (Nilai[i]>45) Then
Begin
Mutu:='D';
195
Keterangan :='Kurang';
End;
If Nilai[i]< 45 Then
Begin
Mutu:='E';
Keterangan :='Sangat kurang';
End;
Writeln(Nama[i]:15,' ',Nilai[i]:4,' ',Mutu,' ',Keterangan:15);
End;
Writeln(Garis);
End;
Procedure Masuk_Data;
Var
Nama : Vektor;
Nilai : Bulat;
Begin
Write('Banyak data =');Readln(Banyak);
For i:= 1 to Banyak Do
Begin
ClrScr;
Writeln('Data ke - ',i);
Write('Nama ='); readln(Nama[i]);
Write('Nilai =');readln(Nilai[i]);
End;
End; {modul Utama}
Begin
Masuk_Data;
Proses(Nama,Nilai);
Readln;
End.
G. Soal Latihan 6
4. Buat program untuk menampilkan deret bilangan prima dari 1 sampai dengan n,
dimana n adalah inputan dari user.
5. Buatlah tabel harga fotokopian dari 1 – 100 lembar, dimana harga perlembar adalah
80 rupiah!
196
6.
Buatlah perintah pokok yang digunakan untuk pengisian matriks A sebagai berikut :
1 2 3 4
0 2 3 4
0 0 3 4
0 0 0 4
7. Buatlah perintah pokok yang digunakan untuk pengisian matriks A sebagai berikut :
1 0 0 0
2 2 0 0
3 3 3 0
4 4 4 4
8. Diberikan suatu Array X[1..4] dan Y[1..4], dengan nilai X=4,6,8,10 dan Y=2,3,4,5.
Suatu Algoritma :
Hasil = 0
For i = 1 to n
Hasil= hasil+X[i]/Y[i]
End_i
Bila Algoritma ( dengan n=4 ) dikerjakan, maka nilai dari hasil adalah :
9. Buat algoritma dan program untuk menjumlahkan dua matriks A dan matriks B,
dimana hasilnya disimpan pada array C
10. Menuliskan isi array A,B dan C, dengan menggunakan sebanyak mungkin program
pembantu (subprogram).
11. Buatlah algoritma dan program yang dapat digunakan untuk mengurutkan dari harga
terkecil sampai dengan nilai terbesar, program dibuat dalam bentuk subprogram yang
terdiri dari
Procedure yang terdiri dari:
a. Procedure Masukkan_data
b. Procedure Mengurutkan_data
c. Procedure Penampilkan_hasil
12. Apakahan dimaksud dengan string ?
13. Jelaskan hubungan antara string dan character pada pascal !
14. Buat program animasi teks, dengan menampilan kalimat pada tengah-tengah layar
dan yang sebelumnya bergerak dari kiri ke kanan dan kanan ke kiri.
197
15. Buat program animasi teks, dengan menampilan kalimat pada tengah-tengah layar
dengan huruf muncul satu per satu.
16. Palindrom adalah sebuah kalimat yang jika dibaca dari belakang sama dengan dibaca
dari depan. Contoh “murah ada harum”, atau “ kasur ini rusak”, Rencanglah
program untuk mengetahui apakah sebuah kalimat merupakan palindrome atau tidak
17. Buatlah program untuk menentukan apakah kata yang kita inginkan terdapat dalam
sebuah kalimat yang ditulis.
198
BAB VII
TIPE DATA TERSTRUKTUR RECORD DAN FILE
A. Record
Record atau rekaman adalah jenis tipe data terstruktur yang mana berisi beberapa
data yang masing-masing dapat berlainan tipe. Record dapat juga dikatakan sebagai
suatu kumpulan data item yang masing-masing mempunyai jenis data berbeda.
Sebuah record disusun oleh beberapa field. Setiap field berisi data dari tipe dasar atau
bentukan tertentu. Record mempunyai kelebihan yaitu daapat menyimpan suatu
sekumpulan elemen data yang berbeda-beda tipenya. Contoh: Sebuah variable record
dengan nama mahasiswa_1, mahasiswa_2, mahasiswa_3 dan seterusnya, dimana
masing-masing datanya terdiri dari 4 field (umpamakan NIM, Nama, IPK dan Alamat).
Sketsa susunan variabel mahasiswa ini dapat dibuat seperti Gambar 32;
Nama Record
Field
199
Variabel : nama_record;
Masing-masing daftar_field dapat berupa satu atau beberapa nama pengenal dan
masing-masing dinamakan field. Bila daftar_field berisi lebih dari satu field, antar field
perlu dipisahkan dengan koma. Masing-masing tipe dapat berupa tipe data apa saja
termasuk array. Contoh operasional deklarasi record, berdasarkan Gambar 32 dapat
ditulis sebagai berikut:
Type
Data_Mahasiswa = record
NIM : Integer
Nama : String[30];
IPK : Real;
Alamat : String;
End;
Var
Mhs : Data_mahasiswa;
Untuk meningkatkan pemahaman anda berikut ini dberikan beberapa contoh
mendeklarasikan record berikut ini:
VAR nilai : RECORD
Nilai_1 : integer;
Nilai_2 : integer;
END;
TYPE date = RECORD
Tanggal : 1..31;
Bulan : 1…12;
Tahun : 2000… 2030;
END;
VAR
Agenda1,agenda2 : ARRAY [1..10] OF date;
TYPE account = RECORD
cust_no : integer;
200
cust_type
: char;
cust_balance : real;
END;
VAR customer : account;
1. Pengaksesan Elemen Record
Elemen record dapat diakses dengan mengacu kepada setiap field yang pada
record. Perhatikan contoh record berikut:
Type TRecord = record
NIM : Integer
Nama : String[30];
IPK : Real;
Alamat : String;
End;
Var
Mhs, alumi : Trecord;
Untuk mengakses atau memproses variabel Mhs dan/atau alumni dilakukan dengan
cara menyebutkan field designator-nya, yang terdiri dari atas
Nama_record.nama_field
201
Read(Mhs.Nim); Read (Mhs.Nama);
Read (Mhs.IPK); Read (Mhs.Alamat);
Read (alumni.Nim); Read (alumni.Nama);
Read (alumni.IPK); Read(alumni.Alamat);
Program berikut adalah contoh program untuk memasukan dan menampilkan data
nilai mahasiswa. Pelajarilah Program Record_Intro dengan seksama
Program Record_Intro;
Type Data_Mahasiswa = record
NIM : Integer
Nama : String[30];
IPK : Real;
Alamat : String;
End;
Var
Mhs : Data_mahasiswa;
Begin
Mhs.NIM :=1778;
Mhs.Nama : = ‘Akmam’
Mhs.IPK :=2.74;
Mhs.Alamat := ‘Jl. Parkit XII’;
writeln('Mahasiswa adalah adalah ',Mhs.nim,':', Mhs.Nama,':', Mhs.IPK,’:’,
Mhs.Alamat)
End.
202
var
birthdays : array[1..10] of tanggal;
pernyataan ini akan membentuk suatu array dengan 10 elemen, dimana tiap elemen
adalah sebuah record tanggal, yaitu, terdiri atas bulan, hari, tahun dengan tipe data
Integer, yang dapat digambarkan seperti Gambar 40 berikut:
203
nim: string;
alamat: string;
ipk: real;
end;
VAR
data1: mahasiswa;
data2 : mahasiswi;
204
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;
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
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;
end;
2: begin
write('Masukan No. Mahasiswa : ');readln(mhs1.nim);
writeln;
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
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;
end;
3: begin
write('Masukan Alamat Mahasiswa : ');readln(mhs1.alamat);
writeln;
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
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;
end;
4: begin
write('Masukan IPK : ');readln(mhs1.ipk);
writeln;
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
for i:=1 to n do
205
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;
end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);
writeln;
end;
end;
end;
end;
{====================PROGRAM UTAMA========================}
BEGIN
clrscr;
data(data1,data2);
readln;
end.
206
pemberian nilai akan terjadi seperti di bawah ini:
saat_ini.tanggal.bulan:= 11;
saat_ini.tanggal.hari:= 2;
saat_ini.tanggal.tahun:= 1985;
saat_ini.waktu.jam:= 3;
saat_ini.waktu.menit:= 3;
saat_ini.waktu.detik:= 33;
Tampak bahwa tipe record bernama RecPegawai berisi record yang lain
(RecTanggal). Hal yang menarik yang perlu diperhatikan adalah cara mengakses
field seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai
berikut.
Nama_variabel.TglLahir.Tanggal
Nama_variabel.TglLahir.Bulan
Nama_variabel.TglLahir.Tahun
Program Record3;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
207
Nomor
Nama
TglLahir
Gaji : LongInt;
: string [35];
: RecTanggal;
: longInt
End;
Var
DataPeg : RecordPegawai; {variabel betipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-fiedl}
DataPeg.Nomor := 56789;
DataPeg.Nama := ’Badu’;
DataPeg.TglLahir.Tanggal := 24;
DataPeg.TglLahir.Bulan := 12;
DataPeg.TglLahir.Tahun := 1972;
DataPeg.Gaji := 750000; {menampilkan isi field}
Writeln (’Nama Pegawai : ’, DataPeg.Nama);
Writeln (’Tanggal Lahir : ’, DataPeg.TglLahir.Tanggal,’/’,
DataPeg.TglLahir.Bulan,’/’, DataPeg.TglLahir.Tahun);
Readln
End.
Luaran dari program di atas adalah sebagai berikut :
Nama Pegawai : Badu
Tanggal Lahir : 24 / 12 / 1972
Kita disamping dapat menggunakan fasilitas di atas, juga dapat melakukan
penugasan antar record. Jika record R1 dan R2 bertipe sama dan masing-masing
memiliki F1, F2, dan F3, maka statemen untuk penugasannya adalah :
R1 := R2;
Pernyataan di atas merupakan penyederhanaan dari sederetan pernyataan berikut :
R1.F1 := R2.F1;
R1.F2 := R2.F2;
R1.F3 := R2.F3;
208
Untuk lebih jelasnya, pelajarilah program berikut dengan mengedit langsung pada
komputer dan jalankan serta pelajari luarannya.
Program Record_2;
Uses crt;
Type
RecBarang = Record
Nama : string[25];
Kualitas : car;
Harga : longInt
End;
Var
Barang1, Barang2 : RecBarang; {variabel bertipe record}
Begin
Clrscr; {penugasan nilai terhadap field-field}
Barang1.Nama := ’Komputer Laptop merek hahaha’;
Barang1.Kualitas := ’A’;
Barang1.Harga := 14000; {menyalin record}
Barang2 := Barang1; {Menampilkan isi field}
Writeln (’Nama Barang : ’, Barang2.Nama);
Writeln (’Kualitas : ’, Barang.Kualitas);
Writeln (’Harga : ’, Barang.Harga);
Readln
End.
dengan adanya penugasan Barang2 := Barang1;, maka semua field pada record
Barang2 akan berisi recrod Barang1. Luaran dari program di atas :
Nama Barang : ’Komputer Laptop merek hahaha
Kualitas : A
Harga : 14000
209
5. Pengunaan With … do
Pernyataan With diguakan untuk lebih menyederhanakan pengaksesan field-
field yang terdapat di dalam record. Misalkan pernyataan :
x.Nama
x.Usia
x.Kota
x.Kodepos
menjadi
with x do
Begin
Nama
Usia
Kota
Kodepos
End
Contoh lengkap pemakaian statemen with dapat anda pelajari program berikut:
Program RECORD_INTRO;
Type tanggal = record
bulan, hari, tahun : integer;
End;
var waktu : tanggal;
BEGIN {program utama}
with waktu do {mulai with}
Begin
hari :=25;
bulan:=09;
tahun:=1983;
writeln('hari ini adalah ',hari,':',bulan,':', tahun)
End {akhir with}
END.
210
6. Array Record
Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat di
bawah ini.
Const
Jum_Maks = 20;
Type
RecBarang = Record
Nama : String [25];
Kualitas : Char;
Harga : LongInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang; {array record}
Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20 buah elemen
bertipe record. Untuk mengakses suatu field, kita perlu menggunakan notasi :
DafBarang [indeks].NamaField
Program Record7;
Uses Crt;
Const
Jum_Maks = 20; {jumlah maksimal jenis baramg}
Type
RecBarang = Record
Nama : string [25];
Kualitas : char;
Harga : longInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang; {array record}
211
JumBarang : Integer;
212
Begin
Entribarang (DafBarang, JumBarang);
InfoBarang (DafBarang, JumBarang);
Readln
End.
B. File
Kita dalam kasus-kasus pemrograman tertentu sering dituntut untuk
menggunakan file atau berkas sebagai media untuk menyimpan data-data, baik berupa
data input (untuk masukan) maupun sebagai data output (untuk keluaran). Sebagai
contoh, apabila kita menggunakan sistem operasi Microsoft Windows maka kita akan
menemukan file sistem seperti autoexec.bat, config.sys, system.ini dan lainnya.
File adalah kumpulan byte-byte yang disimpan dalam media penyimpanan.
File merupakan komponen yang bertipe data sama, yang jumlahnya tidak tentu, yang
dapat ditambah atau dikurangi sesuai dengan kebutuhan. File tersebut sebenarnya
digunakan untuk menyimpan data-data secara terpisah sehingga nilainya dapat diubah
dengan mudah sesuai dengan kebutuhan. Sebagai seorang programmer, kita tentu
dituntut untuk dapat menggunakan (mengakses) file dari dalam prograam yang kita
buat. Berdasarkan prosedur yang ada, proses pengaksesan file di dalam bahasa Pascal
terdiri dari empat tahap, yaitu :
1. Menghubungkan file fisik yang akan dibuka atau dibuat dengan variabel file
2. Membuka file
3. Melakukan operasi file (membaca atau menulis)
4. Menutup file
1. Membuat File
Sebelum file dapat dibuka atau dibuat oleh program, kita harus
menghubungkannya dengan variabel file terlebih dahulu. Variabel file merupakan
peralatan logik yang digunakan sebagai perantara dalam mentransfer atau membaca
data dari atau ke sebuah file fisik yang tersimpan di dalam disk. Dengan kata lain,
sebenarnya kita tidak secara langsung memanipulasi file fisik tersebut, melainkan
213
melalui variabel file. Dalam bahasa Pascal, variabel seperti ini dianggap sebagai
variabel biasa yang dideklarasikan dengan tipe file tertentu. Cara yang harus dilakukan
untuk dapat menghubungkan file fisik dengan variabel file adalah dengan menggunakan
prosedur Assign, yang memeiliki bentuk umum sebagai berikut.
Procedure Assign (VaFile, NaFile);
VaFile akronim dari NamaVariabelFile yang merupakan nama variabel yang
harus dideklarasikan terlebih dahulu. NaFile yang merupakan akronim dari
NamaFileFisik merupakan nama file yang akan dibuka atau dibuat. Perlu diperhatikan
bahwa nama file tersebut harus dituliskan secara lengkap beserta lokasi atau path-nya.
Langkah-langkah membuka file adalah sebagai berikut:
a. Mendeklarasikan variabel file. Caranya adalah
Var
VaFile: TEXT;
dengan VaFile : Nama variabel file text
b. Menghubungkan variabel file dengan nama file. Caranya adalah sebagai berikut:
Assign (VaFile, nafile);
dimana
VaFile : Nama variabel file text
Nafile : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis dalam
bentuk string.
Sebagai contoh, apabila kita ingin membuka file dengan nama Contoh.Txt
yang terdapat di dalam direktori data di drive D, maka kode yang harus dituliskan
adalah sebagai berikut.
Var
F:TextFile; {mendeklarasikan variabel file denagn nama F}
Begin
Assign (F, ’D:\Data\CONTOH.TXT’);
.......
End.
214
Sedangkan apabila file yang akan kita akses berada dalam satu direktori
dengan program (file eksekusi) yang kita buat, maka kita tidak perlu menuliskan
lokasi atau path-nya. Artinya kita hanya perlu untuk menuliskan nama file-nya saja
seperti berikut.
Assign (F, ’ CONTOH.TXT’);
Pada kode di atas, file CONTOH.TXT akan dihubungkan dengan variabel F.
Selanjutnya yang akan dimanipulasi di dalam program adalah variabel F. Namun
karena variabel tersbut sebenarnya menunjuk ke file fisik, maka setiap perubahan
yang terjadi di dalam variabel F tentu akan mempengaruhi isi dari file
CONTOH.TXT.
Hal yang perlu diperhatikan di sini adaalah bahwa walaupun file tersebut
sudah terhubung dengan variabel file, namun file masih dalam keadaan tertutup
sehingga kita perlu membukanya terlebuh dahulu sebelum kita mengakses data yang
terdapat di dalamnya.
c. Membuat file text aktif . Caranya adalah menggunakan statemen
Rewrite(NmVar);
dimana
VaFile : Nama variabel file text yang sudah di- assign
d. Menulis ke dalam file text. Caranya adalah menggunakan statemen
Write (VaFile, data item1, data item 2, …)
dimana
VaFile : Nama variabel file text
Data item : text/string yang akan dituliskan, atau bisa juga berupa isi suatu
variabel
e. Menutup file. Caranya adalah menggunakan statemen
Close (VaFile);
dimana
VaFile : Nama variabel file text
Contoh program berikut ini adalah program membuat file, dimana datanya bertipe
record. perhatikan contoh program tulis file berikut ini:
215
Program Data_mahasiswa;
uses wincrt;
Type
index = 1..30;
Dtmhs = record
nama : string[25];
nim : integer;
Alamat : string[50];
nilai : array[1..3] of real;
NA : real;
end;
var
mhs : array[index] of dtmhs;
n,i,j : integer;
nfile : string[12];
vfile : file of dtmhs;
Begin
writeln('masukan data mahasiswa ');
write('nama file ');readln(nfile);
write('jumlah mahasiswa '); readln(N);
for i := 1 to n do
begin
with mhs[i] do
begin
write('nama ');readln(nama);
write('nim ');readln(nim);
for j:= 1 to 3 do
begin
write('nilai ke ',j);readln(nilai[j]);
NA := 0.45*nilai[1]+0.35*nilai[2]+0.2*nilai[3];
end;
write('alamat ');readln(alamat);
216
end;
end;
for I:= 1 to n do
begin
with mhs[i] do
writeln(nama,'':2,nim,'':2, NA:6:3,'':2,alamat);
end;
for I:= 1 to n do
begin
with mhs[i] do
begin
Assign(vfile,nfile);
rewrite(vfile);
for I:=1 to n do
begin
write(vfile,mhs[i]);
end;
end;
close(vfile);
end;
end.
2. Membuka File
Seteleh file tersebut dihubungkan dengan variabel file, maka langkah
selanjutnya yang perlu dilakukan adalah membuka file. Langkah-langkah membuka
atau membaca file sebagai berikut:
a. Mendeklarasikan variabel file
VaFile : text;
b. Menghubungkan variabel file dengan nama file
Assign (VaFile, nafile)
c. Membaca isi file dan menampilkannya di layar
217
While not eof (VaFile) do
Begin
Read / readln (VaFile, data item 1, data item 2, … ); { untuk membaca data file}
Write / writeln ( data item1, data item 2, … ); {untuk menulis data file}
End;
d. Menutup file
Close (VaFile);
Dalam bahasa Pascal, terdapat tiga buah prosedur yang dapat digunakan untuk
membuka file, yaitu Rewrite, Reset dan Append.
a. Prosedur Rewrite
Prosedur ini digunakan untuk membuka file yang sama sekali belum terdapat
di dalam disk. Artinya, di sini kompiler akan melakukan proses pembuatan file baru
sekaligus membuka file tersebut. Bentuk umum dari prosedur Rewrite adalah
sebagai berikut.
Procedure Rewrite(VaFile[:File; UkuranRecord : Word]);
Bila file yang dibuka berupa file teks, maka file tersebut akan bersifat
writeonly atau tidak dapat dibaca, artinya operasi yang diizinkan untuk file tersebut
hanyalah operasi tulis. UkuranRecord merupakan ekspresi yang bersifat opsional
yang hanya disertakan apabila file yang dibuka merupakan file tanpa tipe. Nilai
tersebut akan digunakan sebagai ukuran record dalam transfer data. Nilai tersebut
akan digunakan sebagai ukuran record dalam transfer data. Apabila dihilangkan,
maka UkuranRecord ini alan dianggap bernilai 128 byte. Untuk lebih memahami
penggunaan prosedur ini, perhatikan contoh program sederhana ini.
Program ContohRewrite;
Var
F : TextFile;
Begin
Assign (F, ’D:\Coba.txt’);
Rewrite (F);
End.
218
Running program di atas dan lihatlah drive D pada komputer anda, maka
di situ pasti akan tercipta file baru dengan nama Coba.txt dimana isinya kosong.
Apabila anda bereksperimen untuk membuka file yang sudah ada sebelumnya
dengan menggunakan prosedur Rewrite maka isi dari file tersebut akan ditimpa
dengan isi file baru. Satu hal lagi yang perlu diperhatikan adalah bahwa etelah
pemanggilan prosedur Rewrite, fungsi EOF (end-of-file) akan selalu menghasilkan
nilai true.
b. Prosedur Reset
Prosedur ini digunakan untuk membuka file yang sebelumnya sudah ada di
dalam disk. Hal ini bertujuan untuk membaca isi dari file tersebut untuk kemudian
dimanipilasi sesuai dengan kebutuhan. Perlu sekali untuk diperhatikan bahwa
apabila file yang dibuka merupakan file teks, maka variabel file akan bersifat read
only (hanya dapat dibaca). Berikut ini prototype dari prosedur Reset.
Procedure Reset VaFile [: file; UkuranRecord: word]);
UkuranRecord merupakan ekspresi yang bersifat operaional yang hanya
disertakan apabila file yang dibuka merupakan file tanpa tipe. UkuranRecord
sendiri berfungsi untuk menentukan ukuran record dalam proses transfer data.
Apabila nilai tersebut dihilangkan, maka nilainya akan dianggap 128 byte. Sebagai
contoh, kita telah memiliki file Sample.Txt yang disimpan di drive D. Selanjutnya
kita ingin membaca isi file tersebut dan ditampilkan di layar monitor, maka kita
dapat menggunakan prosedur Reset seperti yang tampak pada kode berikut.
Program ContohReset;
Uses crt;
Var
F : TextFile;
Teks : string;
Begin
Assign (F, ’D :\Sample.txt’);
Reset (F);
While not eof (F ) do
Begin
Readln (F, teks) ; {membaca data dari file dan mengisikannya ke variabel
teks}
Writeln (teks); menampilkan variabel teks ke layar}
219
Close (F);
Readln;
End.
Sekarang coba jalankan program tersebut dan akan melihat bahwa seluruh
isi dari file Sample.txt akan ditampilkan di layar monitor. Apabila kita
menggunakan prosedur Reset pada file yang belum terdapat di dalam disk maka
kompiler akan menampilkan pesan kesalahan pada saat program dijalankan.
c. Prosedur Append
Prosedur ini digunakan untuk menambahkan isi file yang sebelumnya sudah
terdapat di dalam disk. Isi yang ditambahkan selalu berada pada bagian akhir dari
isi file yang sudah ada sebelumnya. Dalam menggunakan prosedur ini kita tidak
perlu memanggil prosedur Rewrite maupun reset karena prosedur Append secara
otomatis akan membuka file yang telah dihubungkan dengan variabel file. Namun
sebagai catatan bagi Anda bahwa prosedur Append hanya dapat digunakan apabila
file yang dibuka merupakan file teks. Berikut ini bentuk umum dari prosedur
Append.
Procedure Append (NamaVariabelFile: Text ) ;
Apabila anda membuka file teks yang belum ada didalam diks dengan
menggunakan prosedur Append, maka akan terjadi kesalahan pada saat program
sedang berjalan (run-time). Setiap pemanggila prosedur Append, file bersifat write-
only (hanya dapat ditulis) dan posisi file akan diset pada bagian akhir baris file.
Untuk dapat lebih memahaminya, buatlah file teks (*.TXT) dengan program teks
editor yang tersedia, misalnya Notepad, kemudian isikan teks berikut ke dalamnya.
Sebagai contoh, file tersebut disimpan dengan nama TEST.TXT pada drive
D di dalan direktori Coba. Selanjutnya kita ingin menamnbahkan dua buah baris
data ke dalam file di atas, maka kita dapat melakukannya melalui kode program
dibawah ini.
220
Program ContohAppend;
Uses
Crt;
Var
F: TextFile;
Begin
Assign (F,’D:\COBA\TEST.TXT’) ;
Append (F) ; {Membuka file untuk di tambah isinya}
{Menambahkan data ke dalam file}
writeln (F,’Ini adalah data pertama yang ditambahkan’) ;
writeln (F,’Ini adalah data kedua yang ditambahkan’) ;
Close(F) ;
End.
221
DaftarKonsumen
222
kita buat. Untuk melakukan hal tersebut tentu Anda harus memahami dengan benar
cara membaca data dan menuliskan data kedalam file.
a). Menulis Data ke dalam File
Dalam bahasa Pascal, proses penulisan data ke dalam file dapat dilakukan
dengan menggunakan prosedur Write, Writeln maupun BlockWrite. Untuk
informasi lebih detil mengenai masing-masing prosedur tersebut, Anda dapat
melihat sub bab di bawah ini.
b). Menggunakan Prosedur Write
Prosedur Write digunakan untuk menuliskan data kedalam file dimana posisi
kursor tidak akan dipindahkan kebaris selanjutnya. Berikut ini bentuk
prototipe dari prosedur Write.
Procedure Write (NamaVariabelFile; VI [ , V2..VN] ) ;
dimana V1..VN adalah nama variabel yang akan digunakan untuk menyimpan
data yang akan dituliskan. Walaupun demikian, Andajuga dapat menuliskannya
secara langsung tanpa harus menyimpannya terlebih dahulu ke dalam variabel
seperti yang tampak pada kode berikut.
write (F,’Mencoba menuliskan data ke dalam file’);
Berdasarkan kode di atas, maka teks tersebut akan dimasukkan atau ditulis ke
dalam file yang telah dihubungkan dengan variabel file F. Untuk lebih
memahaminya, perhatikan contoh program di bawah ini dimana kita akan
melakukan penulisan terhadap file DATA.TXT yang terdapat pada direktori
COBA di dalam drive D. Sebagai catatan bahwa file DATA.TXT ini
sebelumnya sudah ada di dalam disk dimana isi dari file tersebut masih kosong.
Program ContohWrite;
Uses crt;
Var
F : TextFile;
Begin
Assign (F,’D:\COBA\DATA.TXT’);
Reset (F);
223
Write (F, ’Teknik Pemrograman ’);
Write (F, ’Pascal’);
Close (F);
End.
Jalankan program tersebut dan buka kembali isi dari file DATA.TXT, maka kita akan
melihat bahwa file tersebut sekarang telah berisi teks berikut.
Teknik Pemrograman Pascal
Contoh lain adalah program menulis file dengan yang mengandung record:
Program RecordWith;
uses wincrt;
Type
RecordMhs = Record
Nama : String[20];
NIM : LongInt;
na : Real;
nilai : Array[1..3] of Real;
END;
TFile = File of RecordMhs;
Var
i,j : integer;
nfile : string[12];
vfile : Tfile;
Dtm : array[1..5] of RecordMhs;
Begin
write('nama file');readln(nfile);
Assign(vfile,'d:\CANTIK.DAT');
Rewrite(Vfile);
for i := 1 to 3 do
begin
With Dtm[i] do
Begin
write(' nama '); readln(nama);
write(' NIM '); readln(NIM);
for j := 1 to 3 do
begin
write('nilai ke ',j);readln(nilai[j]);
end;
na := (nilai[1]+nilai[2]+nilai[3])/3;
end;
write(Vfile,dtm[i]);
224
end;
Close(vfile);
readln;
END.
225
Begin
writeLN(' nama ',Nama);
writeLN(' NIM ', NIM);
for j := 1 to 3 do
begin
writeLN('nilai ke ',j, Nilai[j]);
end;
WRITELN('nILAI AKHIR ',NA:6:2);
end;
END;
readln;
END.
226
Assign (F, ’D:\CONTOH.TXT’);
Rewrite (F);
Writeln (F, ’Algoritma dan Pemograman’);
Writeln (F, ’Oleh : Ayu Triana’);
Writeln (F, ’Tahun : 2012’);
Writeln (F, ’Jurusan Fisika FMIPA UNP’);
Close (F);
End.
Hal ini dengan asumsi bahwa file Contoh.txt belum ada di dalam dirive D,
selanjutnya kita ingin membuat atau menciptakan file tersebut dan mengisikan data
yang berupa teks ke dalamnya. Sekarang jalankan program tersebut dan lihatlah
drive D, maka kita akan menmui file baru dengan nama Contoh.txt yang isinya
adalah sebagai berikut.
Algoritma dan Pemograman
Oleh : Ayu Triana
Tahun : 2012’
Jurusan Fisika FMIPA UNP
b. File Bertipe
File bertipe adalah file yang menampung data dengan tipe data tertentu,
seperti integer, real dan lainnya. Selain tipe data dasar, kita juga dapat
mendefinisikan file bertipe ini dengan tipe data bentukan, misalnya record.
Berikut ini bentuk umum untuk mendeklarasikan variabel file bertipe.
Var
NamaVariabelFile : file of <Tipedata>
Sebagai contoh, apabila kita akan mendeklarasikan variable file yang
mengakses file yang berisi data integer amak kode yang harus dituliskan adalah
sebagai berikut.
Var
F : file of integer;
Begitu juga apabila file berisi data real, maka kodenya adalah seperti berikut.
227
Var
F : file of real;
Contoh penggunaan file bertipe untuk tipe record adalah sebagai berikut.
Type
Tsiswa = Record
NIM : string [8];
Nama : string [25];
Umur : integer;
Alamat : string [30];
Kota : string [15];
End;
Var
F : file of Tsiswa;
Program menyalin_file
Uses crt; Var
Fileasal, filetuju :file;
Besar :real;
Buf :array [1..10240] of char;
Hbaca, Hatulis :word;
nfile1,nfile2 :string;
Begin besar:=0;
clrscr;
228
write (‘Input nama file asal :’);readln(nfile1);
write (‘Input nama file tujuan :’);readln(nfile2);
{$I-}
Assign(fileasal,nfile1);
Assign(filetuju,nfile2);
Reset(fileasal,1);
If IOResult <>0 then
Begin
Writeln(‘File asal tidak ada !’);
Halt(0);
End;
Rewrite(filetuju,1);
If IOResult <>0 then
Begin
Writeln(‘File tujuan tidak bisa dibuat !’);
Halt(0);
End;
{$I+}
Repeat Blockread(fileasal,buf,10240,hbaca);
Besar:=besar + hbaca;
Blockwrite(filetuju,buf,hbaca,htulis);
If Hbaca <> Htulis then
Begin
Writeln(‘Tujuan tidak bisa menampung besar file’); Halt(0);
End;
Until hbaca <>10240;
Close (fileasal);
Close (filetuju);
Writeln (‘Besar file yang dipindahkan :‘,besar:10:0);
End.
C. Soal Latihan 7
1. Buat program untuk pengolahan data barang dengan menggunakan media file teks.
2. Buat program untuk mengkoreksi data barang dengan menggunakan media file teks.
3. Buat program untuk menginput dan menampilkan data nilai mahasiswa dengan
menggunakan array record
4. Buat program mengakses record di dalam record
229
BAB VIII
PEMOGRAMAN GRAFIK DAN ANIMASI
230
komputer. Dalam pemograman grafik menggunakan bahasa pascal kita akan
memerlukan file – file yang termasuk kepada include pada file header adalah sebagai
berikut :
1. File driver grafik (graphic driver) yaitu file – file yang berakhiran BGI ( Boolean
Grafik Interface), untuk dipergunakan sesuai dengan monitor yang dipergunakan
2. File Graph. TPU adalah file yang berisi definisi dari fungsi – fungsi grafik yang
dipergunakan
3. File Huruf adalah file – file yang memiliki akhiran CHR yang bersifat optimal jika
tidak terdapat file – file ini setiap karakter dicetak menggunakan jenis huruf default
(standar)
Untuk dapat menggunakan fasilitas layar grafik terlebih dahulu harus melakukan
inialisasi yaitu memberikan kode pada komputer untuk memperlakukan layar monitor
sebagai layar grafik. Setelah dilakukan inisialisasi ini cara penulisan ke layar berbeda
dengan cara penulisan yang dilakukan pada pertemuan sebelumnya. Dalam pemograman
grafik dipergunakan InitGraph. Syntax penulisannya adalah:
InitGraph(var GraphDriver, GraphMode: integer; DriverPath: string);
231
mendeteksi monitor apa yang terpasang pada komputer yang kita pergunakan. File –
file driver berikut ini :
Tabel 19. Jenis Driver Grafik
2. GraphMode
Parameter ini berupa variabel bertipe integer yang menyatakan modes grafik yang
akan kita pergunakan. Jika variabel ini dipergunakan, tetapi tidak diinialisasikan, maka
complier akan mencari resolusi tertinggi yang mampu ditampilkan oleh driver ke layar.
Mode – mode grafik dalam bahasa Pascal adalah seperti pada Tabel 21 berikut :
232
Tabel 21. Jenis Mode Grafik dan Resolusinya 233
Nama File Ukuran Warna
CGACO 0 320 X 200 Palet 0 : LightGreen, LightRed, Yellow 1
CGAC1 1 320 X 200 Palet 1 : LightCyan, LightMagenta, White 1
CGAC2 2 320 X 200 Palet 2 : Green, Red, Brown 1
CGAC3 3 320 X 200 Palet 3 : Cyan, Magenta, LightGray 1
CGAH1 4 640 x 200
MCGACO 0 320 X 200 Palet 0 : LightGreen, LightRed, Yellow 1
MCGAC1 1 320 X 200 Palet 1 : LightCyan, LightMagenta, White 1
MCGAC2 2 320 X 200 Palet 2 : Green, Red, Brown 1
MCGAC3 3 320 X 200 Palet 3 : Cyan, Magenta, LightGray 1
EGALO 0 640 x 200 16 Warna 4
EGAHi 1 640 x 350 16 Warna 2
EGAL64LO 0 640 x 200 16 Warna 1
EGAL64Hi 1 640 x 350 4 Warna 1
ATT400C0 0 320 X 200 Palet 0 : LightGreen, LightRed, Yellow 1
ATT400C1 1 320 X 200 Palet 1 : LightCyan, LightMagenta, White 1
ATT400C2 2 320 X 200 Palet 2 : Green, Red, Brown 1
ATT400C3 3 320 X 200 Palet 3 : Cyan, Magenta, LightGray 1
VGALO 0 640 x 200 16 Warna 4
VGAMed 1 640 x 350 16 Warna 2
VGAHi 2 640 x 480 16 Warna 1
PC3270Hi 0 720 X 350 1
IBM8514LO 0 640 X 480 256 Warna
IBM8514Hi 1 1024 X 768 2561 Warna
3. Drive Path
Parameter string yang menyatakan letak direktori dari file driver di simpan.
Tempat dimana file driver tergantung kepada tempat direktori atau folder mengandung
233
BGI disimpan (drive c atau d atau e ). Setelah selesai menggunakan grafik, modus
layar harus dikembalikan lagi ke modus text. Hal ini dilakukan dengan menggunakan
perintah CloseGraph;
Jadi, berdasarkan uraian di atas, jelaslah bahwa hal pertama kali yang harus
dilakukan apabila kita akan mengaktifkan mode grafik adalah mendeklarasikan unit
graph, dengan cara Uses Graph;
Kemudian untuk mengubah mode teks menjadi mode grafik dengan menjalankan
prosedur InitGraph yang sebelumnya kita harus mendefinisikan driver grafik dan mode
grafik yang akan kita pakai. Ingat kita harus mendeklarasikan variabel GraphDriver
dan GraphMode pada deklarasi variabel. Lenggkapnya untuk mengaktifkan mode
grafik adalah sebagai berikut:
Program Grafik_coba;
Uses crt, graph;
Var
GraphDriver, GraphMode : Integer;
BEGIN
GraphDriver := VGA;
GraphMode := VGAHi;
Initgraph(GraphDriver, GraphMode, '');
{gambar program anda disini ...}
CloseGraph;
END.
Agar mudahkan para programmer biasanya bagian buka grafik dan tutup grafik
dibuat dalam bentuk procedure buka_grafik dan procedure tutup_grafik berikut ini:
Procedure buka_grafik;
var
grdr, grmd : integer;
Begin
Grdr := Vga;
Grmd := VgaHi;
234
InitGraph(Grdr,Grmd,’c:\tp\Bgi'');
if GraphResult <> grOk then
begin
Writeln('Graph driver ',grdr,' graph mode ',grmd,' not supported');
Halt(1);
end;
end;
procedure Tutup_grafik;
begin
closegraph;
end;
Kita akan dapat lebih leluasa menggambar dalam mode grafik, karena sistem
koordinatnya menggunakan pixel (titik) sebagai satuannya. Untuk mode VGAHi kita
akan mendapatkan 640 pixel untuk arah sumbu x (sumbu horizontal) dan 480 pixel
untuk arah sumbu y (sumbu vertikal). Perlu diingat bahwa sistem koordinat tidak
mengenal nilai negatif dan pusat sumbu koordinat (0, 0) terletak pada sudut kiri atas .
Jika anda tidak tahu nilai maksimal untuk x dan y, anda dapat menggunakan fungsi
GetMaxX untuk mendapatkan nilai maksimal sumbu x dan GetMaxY untuk sumbu y.
235
C. Perintah – Perintah Grafik
1. GetMaxX dan GetMaxY
Perintah ini berfungsi untuk mendapatkan nilai maxsimum dari koordinat
X dan koordinat Y adalah titik paling bawah layar. Koordinat layar pada monitor
komputer seperti terlihat pada Gambar 41.
2. PutPixel
PutPixel berfungsi untuk mencetak titik pada suatu koordinat tertentu. Sintaks
untuk menggunakan fungsi adalah :
PutPixel(X,Y,Warna);
dimana X dan Y koordinat titik, dan warna adalah warna titik. X dan Y haruslah
bilangan bulat
3. Line
Line adalah fungsi yang berguna untuk menggambar garis pada layar dengan
sintaks menggunakannya adalah :
Line( X1, Y1, X2, Y2 );
X1 dan Y1 adalah koordinat awal garis dan X2 dan Y2 adalah koordinat akhir garis,
x1,y1, x2 dan y2 harus bilangan bulat. Jika x dan y bertipe bilangan real, maka
bilangan real harus dibulatkan dengan menggunakan fungsi round atau trunc.
4. LineTo
LineTo adalah fungsi yang berguna untuk menggambar garis dari posisi aktif ke
koordinat tertentu, dengan sintaks menggunakannya adalah :
LineTo( X, Y );
X dan Y adalah koordinat ujung garis.
5. MoveTo
MoveTo adalah fungsi yang berguna untuk memindahkan posis aktif ke posisi
tertentu dengan sintaks menggunakannya adalah :
MoveTo ( X, Y);
X dan Y adalah posisi aktif baru.
236
6. Rectangle
Rectangle merupakan fungsi yang berguna untuk menggambar sebuah kotak pada
layar dengan sintaks menggunakannya adalah :
Rectangle( X1, X2, Y1, Y2);
X1 dan Y1 adalah koordinat sudut kiri atas persegi panjang X2 dan Y2 adalah
koordinat kiri bawah persegi panjang
7. Circle
Circle merupakan fungsi yang berguna untuk mengambar lingkaran pada layar
dengan sintaks pemakainnya adalah:
Circle ( X, Y, Radius );
X dan Y adalah koordinat pusat lingkaran dan Radius adalah jari – jari lingkaran.
8. Ellipse
Ellipse merupakan fungsi yang berguna untuk mengambar Ellips pada layar dengan
sintaks pemakainnya adalah
Ellipse( X, Y, Sudut awal, Sudut Akhir, RadiusX, RadiusY );
X dan Y adalah koordinat pusat ellips. Sudut awal dan sudut akhir adalah bilangan
antara 0 – 360o, RadiusX adalah jari-jari arah sumbu-x dan RadiusY adalah jari-jari
arah sumbu-y
D. Aplikasi Grafik
1. Membuat Garis
Setelah kita melakukan diinisialisasi grafik dan mempelajari perintah dasar
grafik, kita dapat menggunakan berbagai perintah gambar sederhana. Perintah
sederhana adalah Line. Dua variabel yang pertama adalah X1 dan Y1 koordinat di
mana garis dimulai, dan dua variabel kedua X2 dan Y2 adalah koordinat di mana
garis berhenti. Cobalah program berikut:
Program Garis;
Uses Crt, Graph;
Var
Gd, Gm : integer;
237
BEGIN
InitGraph(gd,gm, 'c:\tp\bgi');
Line(50,50,100,100);
readln;
Line(50,50,100,50);
readln;
Line(100,50,100,100);
readln;
CloseGraph;
END.
2. Membuat Lingkaran
Perintah lingkaran membutuhkan 3 angka variabel yaitu X dan Y koordinat dari
pusat lingkaran, dan ukuran lingkaran atau jari-jari lingkaran yang akan dibuat.
Untuk mudahnya perhatikanlah program contoh berikut:
Program Lingkaran;
Uses Crt, Graph;
Var
Gd, Gm : integer;
BEGIN
InitGraph(gd,gm, 'c:\tp\bgi');
Circle(200,200,50);
Delay(500);
ClearDevice;
Circle(200,200,100);
Delay(500);
ClearDevice;
Circle(200,200,300);
Delay(500);
CloseGraph;
238
Readln;
END.
239
BEGIN
InitGraph(gd,gm, 'C;\tp\bgi');
SetColor(1);
SetBkColor(2);
Rectangle(100,100,500,500);
Delay(1000); SetColor(2);
SetBkColor(3);
Rectangle(150,150,450,450);
Delay(1000); SetColor(3);
SetBkColor(4);
Rectangle(200,200,400,400);
Delay(1000); SetColor(4);
Readln;
CloseGraph;
END.
5. Filling (Isian)
Kita dalam Pascal dapat mengisi bentuk dengan menggunakan fungsi FloodFill.
Fungsi ini bekerja seperti menumpahkan cat. Kita menumpahkan warna pada
koordinat (X, Y) mengisi area tersebut dan berhenti pada warna pembatas yang telah
didefenisikan. Kita dapat mengubah isi dengan menggunakan fungsi SetFillStyle.
Uses crt, graph;
Var
Gd, gm : integer;
Begin
InitGraph(gd,gm, 'c:\tp\BGI');
SetColor(4);
Circle(200,200,100);
SetFillStyle(1,3); {First number is style 1-10, second is color 0-15}
FloodFill(200,200,4); {Start filling at (200,200), stop at color 4}
SetColor(3);
240
Outtextxy(310, 310, 'Inside...');
Readln;
ClearDevice;
SetColor(4);
Circle(200,200,100);
SetFillStyle(1,3);
FloodFill(400,400,4);
SetColor(3);
Outtextxy(310, 310, 'Outside...');
readln;
CloseGraph;
END.
6. Animasi
Animasi sederhana dapat dilakukan dengan menggambar apa yang kita inginkan,
kemudian menghapus layar (menggunakan atau mengisi area dengan warna latar
belakang), kemudian menggambar lagi di posisi baru. Berikut adalah contoh
sederhana:
Uses crt, graph;
Var
Gd, gm : integer;
BEGIN
InitGraph(gd,gm 'c:\tp\bgi');
Circle(100,100,100);
Delay(300);
ClearDevice;
Circle(110,100,100);
Delay(300); ClearDevice;
Circle(110,100,100);
Delay(300); ClearDevice;
Circle(120,100,100);
241
Delay(300);
ClearDevice;
Circle(130,100,100);
Delay(300);
ClearDevice;
Circle(140,100,100);
Delay(300);
CloseGraph;
END.
Cara di atas dapat diganti dengan menggunakan perintah loop, sehingga program di
atas dapat ditulis menjadi
Uses crt, graph;
Var
Gd, gm : integer;
counter : integer;
Begin
InitGraph(gd,gm, 'c:\tp\BGI');
For COUNTER := 100 To 200 Do
Begin
Circle(COUNTER, 100,100);
Delay(30);
ClearDevice;
End;
CloseGraph;
END.
Berikut ini contoh program animasi menggunakan Turbo Pascal. Untuk
meningkatkan pemahaman anda, ada baik anda mencoba dan menikmati hasilnya
Uses crt, graph;
var
i,gd,gm:integer;
242
begin
randomize;
gd := Vga;
gm := VgaHi;
Initgraph(gd,gm,'');
for i := 1 to 500 do putpixel(random(640),random(480),random(14)+1);
repeat
setcolor(random(14)+1);
setfillstyle(random(12), random(14)+1);
PieSlice(319,239,random(360),random(360),random(239));
delay(20);
Until keypressed; readkey; cleardevice;
for i := 1 to 500 do putpixel(random(640),random(480),random(14)+1);
repeat
setcolor(random(14)+1);
setfillstyle(random(12), random(14)+1);
PieSlice(319,479,random(180),random(180),random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(319,000,random(180)+180,random(180)+180,random(239));
delay(20);
until keypressed; readkey; cleardevice;
for i := 1 to 500 do putpixel(random(640),random(480),random(14)+1);
repeat
setcolor(random(14)+1);
setfillstyle(random(12), random(14)+1);
PieSlice(000,000,random(90)+270,random(90)+270,random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(639,000,random(90)+180,random(90)+180,random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(000,479,random(90)+000,random(90)+000,random(239));
243
setfillstyle(random(12), random(14)+1);
PieSlice(639,479,random(90)+090,random(90)+090,random(239));
delay(20);
until keypressed; readkey;
repeat
setcolor(random(14)+1);
setfillstyle(random(12), random(14)+1);
PieSlice(000,000,random(90)+270,random(90)+270,random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(639,000,random(90)+180,random(90)+180,random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(000,479,random(90)+000,random(90)+000,random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(639,479,random(90)+090,random(90)+090,random(239));
setfillstyle(random(12), random(14)+1);
PieSlice(319,239,random(360),random(360),random(139));
delay(20);
until keypressed; readkey;
setcolor(1);
setlinestyle(0,0,3);
line(0,0,639,0);
line(0,479,639,479);
for i := 1 to 239 do
begin
setcolor(0);
line(0,i-1,639,i-1);
line(0,479-i,639,479-i);
setcolor(1);
line(0,i,639,i);
line(0,479-i-1,639,479-i-1);
244
delay(15);
end;
setcolor(0);
line(0,239,639,239);
delay(600);
closegraph;
end.
7. Screen Savers
Screen Savers dapat dengan mudah dibuat pada Turbo Pascal, dengan cara
menambahkan menambahkan loop berikut:
Repeat
{Draw ScreenSaver here}
Until KeyPressed;
245
8. Mengambar Grafik Sinus
Program grafik sinus dapat dibuat nilai Sinus (sudut) terhadap sudutnya, dari 0
sampai xmax, dengan demikian sebagai sumbu y adalah sinus (sudut) dan sumbu x
adalah sudutnya, karena hasil perhitungan sinus (sudut) merupakan bilangan nyata
sedangkan sistem koordinat Pascal adalah bilangan bulat maka hasil perhitungan
sinus (sudut) harus dinyatakan ke dalam bilangan bulat. Untuk menyatakannya
dilakukan dengan mempergunakan fungsi Round.
246
OutTextXY(xmax div 20,y,’-1’);
{-----grafik sinus----}
For x := 0 to xmax do
Begin
Y1 := round(yamx div 5*sin(x*pi/180));
Y := ymax div 2-y1;
PutPixel(x+xmax div 10,y,GetMaxColor);
End;
Repeat until KeyPressed;
CloseGraph;
End.
9. Mengambar Lingkaran
Pada grafik sinus dan cosinus, Anda membuat hubungan antara hara sinus
sudut) dan cosinus (sudut) terhadap sudutnya, diperoleh grafik seperti gelombang
longitudinal. Apa yang akan terjadi jika grafik tersebut dibuat dengan
menghubungkan antara harga sinus (sudut) terhadap cosinus (sudut)? Misalnya
persamaan sinus dan cosinus di atas diubah menjadi :
X := R cos(sudut)
Y := R sin(sudut)
Jika R dan Y digambarkan dalam suatu koordinat cartesius dan sudutnya diambil
dari 0 sampai 360, maka grafik yang diperoleh adalah swbuah lingkran dengan
jari-jari R.
Contoh program 1.4
Program lingkaran;
Uses
Crt, graph;
Var
Xmax, ymax, x, y,
X1, y1, s, gd, gm : integer;
Begin
247
ClrScr;
Gd := VGA;
Gm := VGAHi;
InitGraph(gd,gm,’c:\tp\bgi’);
Xmax := GetMaxX;
Ymax := GetMaxy;
Rectangle(0,0, xmax,ymax);
For s := 0 to 360 do
Begin
X1 := round(xmax div 6*cos(s*pi/180));
X := xmax div 2-x1;
Y1 := Round(ymax div 4*sin(s*pi/180));
Y := ymax div 2-y1;
PutPixel(x,y, GetMaxColor);
End;
Repeat until KeyPressed;
CloseGraph;
End.
Program Grafik_Gerak_Peluru;
Uses Crt,graph;
Const
248
G = 9.8;
Var
drive,mode : Integer;
x,y,vo,t,theta,dt : real;
BEGIN
Clrscr;
Write(‘Kecepatan awal ‘);readln(vo);
Write(‘Sudut Elevasi ‘);readln(theta);
Theta :=theta*pi/180;
drive := Vga;
mode := VgaHi;
initgraph(drive,mode,’c:\tp\bgi’);
dt := 0.1;
Repeat
t := t + dt;
x := vo*cos(theta)*t;
y := vo*sin(theta)*t – 0.5*g*t*t;
putpixel(round(x), getmaxy div 2 –round(y), yellow));
until keypressed;
Closegraph
END.
E. Soal Latihan 8
1. Jelaskan (berikut parameternya) dari fungsi dan prosedur grafik Pascal di bawah ini:
a. GetPixel
b. ClearDevice
c. Bar3D
d. SetLineStyle
e. SetTextStyle
2. Buatlah flowchart dari program Grafik2, kemudian jelaskanlah jalan programnya !
249
3. Jelaskan manfaat penggunaan fungsi round dalam perulangan
repeat...until pada
program Grafik2 !
4. Jelaskan manfaat dari masing-masing variabel yang telah Anda amati pada saat
menjalankan program Grafik2 di atas !
5. Buat program dengan judul Teks Grafik yang berisikan garis horizontal dan garis
vertikal yang berpotongan di tengah-tengah layar. Pada tengah-layar tersebut muncul
tulisan "Belajar Grafik Nii Yee". Buat tulisan ini dalam 3 jenis ukuran.
6. Dengan menggunakan perintah menggambar grafik yang telah ada, coba sdr. buat suatu
bentuk (misalnya gambar mobil, pesawat, komputer, wajah, dan sebagainya). Penilaian
tugas praktikum ini ditentukan oleh kreativitas sdr. dalam membuat bentuk ini.
7. Pada mode grafik, tipe data numerik tidak dapat ditampilkan secara langsung,
bagaimana cara sdr. untuk menampilkan tipe data tersebut pada mode grafik. Jelaskan
secara algoritma
8. Dengan menggunakan program Grafik2, ubahlah persamaan grafiknya menjadi :
f(x) = exp(x). Jelaskan apa yang terjadi pada program !
9. Buat program untuk melukiskan beberapa segiempat dengan berbagai ukuran dan
letaknya pada layar monitor.
10. Buat program untuk melukiskan beberapa buah garis berbagai ukuran (panjang), arah,
dan letak pada layar monitor.
11. Buat program untuk melukiskan beberapa lingkaran dengan berbagai ukuran dan letak
pada layar monitor.
12. Buat program untuk melukiskan beberapa ellips dengan berbagai ukuran dan letak pada
layar monitor.
13. Buat program untuk melukiskan beberapa busur lingkaran dengan posisi yang berbeda
dan letak pada layar monitor.
14. Buat program dengan memanfaatkan program pembantu di atas untuk menggambar
grafik gerak peluru
y = vo sin (teta) t - 0.5 g t2
x = vo cos (teta) t.
250
15. Buat program untuk membuat garis yang menyapu layar dari kiri ke kanan. Garis ini
memakai warna latar belakang layar. Buat juga cara menyapu layar dari arah yang lain.
16. Buat animasi suatu gerak lingkaran dari kiri ke kanan.
Caranya: Buat lingkaran pada posisi tertentu, kemudian hapus lingkaran tersebut
dengan lingkaran barn yang warnanya sama dengan warna latar belakang. Ulangi
kembali proses pertama pada posisi yang berbeda dan seterusnya.
17. Buatlah program untuk membuat lingkaran yang bergerak pada lintasan lingkaran,
dengan menggunakan persamaan:
x = R cos (teta) t.
y = R sin (teta) t.
18. Buatlah program untuk membuat lingkaran yang bergerak pada lintasan yang dibentuk
oleh hasil pemaduan gerak yang saling tegak lurus (lissajous), baca Fisika Untuk
Universitas I halaman 280 – 283)
251