Download - Bab i Pendahuluan - Buku-font Size-10
Algoritma dan Pemrograman
2015
SMK Islam Al-AriefRekayasa Perangakat Lunak (RPL)
[ALGORITMA DAN PEMROGRAMAN]
Algoritma dan Pemrograman
SMK Islam Al-AriefRekayasa Perangkat Lunak
[ALGORITMA DAN PEMROGRAMAN]
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Maha Esa atas segala rahmatNYA sehingga
buku ini dapat tersusun hingga selesai . Tidak lupa kami juga mengucapkan banyak
terimakasih atas bantuan dari pihak yang telah berkontribusi dengan memberikan
sumbangan baik materi maupun pikirannya.
Dan harapan kami semoga buku ini dapat menambah pengetahuan dan
pengalaman bagi para pembaca, Untuk ke depannya dapat memperbaiki bentuk
maupun menambah isi buku agar menjadi lebih baik lagi.
Karena keterbatasan pengetahuan maupun pengalaman kami, Kami yakin
masih banyak kekurangan dalam buku ini, Oleh karena itu kami sangat mengharapkan
saran dan kritik yang membangun dari pembaca demi kesempurnaan makalah ini.
Jambi, September 2015
I
[ALGORITMA DAN PEMROGRAMAN]
DAFTAR ISI
KATA PENGANTAR ............................................................................................ IDAFTAR ISI ......................................................................................................... IIBAB I. PENDAHULUAN ......................................................................................1
A. Pengertian Sistem Komputer....................................................................1B. Pengenalan Algoritma dan Pemrograman ...............................................6C. Pengertian Pemrograman ........................................................................8
BAB II. DASAR-DASAR ALGORITMA DAN NOTASI ALGORITMIK ................... 10 A. Dasar-dasar Algoritma ............................................................................. 10B. Notasi Algoritmik ...................................................................................... 15
BAB III. TIPE, NAMA DAN NILAI ......................................................................... 25A. Tipe Dasar ............................................................................................... 25B. Tipe Bentukan ......................................................................................... 34C. Nama ....................................................................................................... 36D. Nilai ......................................................................................................... 38
BAB IV. RUNTUNAN ........................................................................................... 42A. Contoh-contoh Runtunan ......................................................................... 43
BAB V. PEMILIHAN ............................................................................................. 47A. Satu Kasus .............................................................................................. 47B. Contoh-contoh Satu Kasus ...................................................................... 48C. Dua Kasus ............................................................................................... 50D. Contoh-contoh Dua Kasus ....................................................................... 51E. Tiga Kasus atau Lebih ............................................................................. 53F. Contoh-contoh Tiga Kasus atau Lebih .................................................... 54G. Struktur CASE ......................................................................................... 55H. Contoh Struktur CASE ............................................................................. 56
BAB VI. PENGULANGAN .................................................................................... 58A. Struktur Pengulangan .............................................................................. 58B. Pernyataan FOR ...................................................................................... 59C. Pernyataan WHILE .................................................................................. 63D. Pernyataan REPEAT ............................................................................... 65
BAB VII. ARRAY .................................................................................................. 67A. Definisi Array ........................................................................................... 67B. Deklarasi Array ........................................................................................ 68C. Menginisialisasi Array .............................................................................. 70D. Mengisi Elemen Array dengan Pembacaan ............................................. 71E. Mencetak Elemen Array .......................................................................... 72F. Mengapa Menggunakan Array ................................................................ 72G. Pencarian Data Dalam Array ................................................................... 74H. Pengurutan Data Array ............................................................................ 77
DAFTAR PUSTAKA ............................................................................................ 81
II
[ALGORITMA DAN PEMROGRAMAN]
BAB I PENDAHULUAN
A. Pengertian Sistem KomputerSistem komputer adalah suatu jaringan elektronik yang terdiri dari perangkat
lunak dan perangkat keras yang melakukan tugas tertentu (menerima input,
memproses input, menyimpan perintah-perintah, dan menyediakan output dalam
bentuk informasi).
Selain itu dapat pula diartikan sebagai elemen-elemen yang terkait untuk
menjalankan suatu aktivitas dengan menggunakan komputer. Komputer dapat
membantu manusia dalam pekerjaan sehari-harinya, pekerjaan itu seperti:
pengolahan kata, pengolahan angka, pengolahan gambar, dll.
Komponen-komponen Komputer
Komponen – komponen dalam sistem komputer terbagi 3, yang tidak bisa
terpisahkan yaitu :
1. Hardware ( Perangkat Keras )
a. Processing Device
b. Input Device
c. Output Device
d. Storage Device
2. Software ( Perangkat Lunak )
a. Operating System
b. Application Program
c. Language Program
3. Brainware ( Orang Yang Mengoperasikan Komputer )
1
[ALGORITMA DAN PEMROGRAMAN]
1. Hardware ( Perangkat Keras )
Perangkat yang dapat kita lihat dan dapat kita sentuh secara fisik, seperti
perangkat perangkat masukan, perangkat pemroses, maupun perangkat
keluaran. Peralatan ini umumnya cukup canggih. Dia dapat bekerja
berdasarkan perintah yang ada padanya, yang disebut juga dengan instruction
set tadi. Dengan adanya perintah yang dimengerti oleh mesin tersebut, maka
perintah tersebut melakukan berbagai aktifitas kepada mesin yang dimengerti
oleh mesin tersebut sehingga mesin bisa bekerja berdasarkan susunan
perintah yang didapatkan olehnya.
Processing Device (CPU)
CPU ( Central Processing Unit ) berperanan untuk memproses arahan,
melaksanakan pengiraan dan menguruskan laluan informasi menerusi system
komputer. Unit atau peranti pemprosesan juga akan berkomunikasidengan
peranti input , output dan storan bagi melaksanakan arahan-arahan berkaitan.
Input Device
Input Device adalah perangkat keras komputer yang berfungsi sebagai alat
untuk memasukan data atau perintah ke dalam komputer. Alat-alatnya adalah
Keyboard, Pointing Device, Mouse, Touch screen, Digitizer Grapich Tablet,
Scanner, Microphone.
Output Device
Output Device adalah perangkat keras komputer yang erfungsi untuk
menampilkan keluaran sebagai hasil pengolahan data. Keluaran dapat berupa
hard-copy (ke ertas), soft-copy (ke monitor), ataupun berupa suara. latnya
antara lain adalah Monitor, Printer, Speaker.
2
[ALGORITMA DAN PEMROGRAMAN]
Storage Device
Register CPU berukuran kecil sehingga tidak dapat enyimpan semua
informasi, maka CPU harus dilengkapi dengan alat penyimpan berkapasitas
lebih besar yaitu memori utama. Terbagi menjadi dua yaitu :
1. Internal Storage
Adalah media penyimpanan yang terdapat didalam komputer yaitu :
RAM ( Random Access Memory )
Untuk menyimpan program yang kita olah untuk sementara waktu. Dapat
diakses secara acak ( dapat diisi/ditulis, diambil, atau dihapus isinya ).
Struktur RAM terbagi menjadi empat bagian utama, yaitu:
Input Storage Digunakan untuk menampung input yang dimasukkan
melalui alat input.
Program Storage Digunakan untuk menyimpan semua instruksi-
instruksi program yang akan diakses.
Working Storage Digunakan untuk menyimpan data yang akan diolah
dan hasil pengolahan.
Output Storge Digunakan untuk menampung hasil akhir dari
pengolahan data yang akan ditampilkan ke alat output.
ROM ( Read Only Memori )
Memori yang hanya bisa dibaca dan berguna sebagai penyedia
informasi pada saat komputer pertama kali dinyalakan. Hanya dapat
dibaca, tidak bisa mengisi sesuatu ke dalam ROM, sudah diisi oleh pabrik
pembuatnya. Berupa sistem operasi yg terdiri dari program pokok, seperti
program untuk mengatur penampilan karakter di layar, pengisian tombol
kunci papan ketik untuk keperluan kontrol tertentu, dan bootstrap program.
3
[ALGORITMA DAN PEMROGRAMAN]
Program bootstrap diperlukan pada saat pertama kali sistem komputer
diaktifkan (booting).
2. External Storage
Perangkat keras untuk melakukan operasi penulisan, pembacaan &
penyimpanan data, di luar komponen utama, yaitu Floppy Disk, Hard Disk,
CD Room, DVD.
2. Software ( Perangkat Lunak )
Rangkaian prosedur dan dokumentasi program yang berfungsi menyelesaikan
masalah yang dikehendaki. Merupakan data elektronik yang disimpan sedemikian
rupa oleh komputer itu sendiri, data yang disimpan ini dapat berupa program atau
instruksi yang akan dijalankan oleh perintah, maupun catatan-catatan yang
diperlukan oleh komputer untuk menjalankan perintah yang dijalankannya.
Operating System
Sistem operasi atau operating system ialah Program dasar pada komputer
yang menghubungkan pengguna dengan hardware komputerPerangkat lunak yang
dihubungkan dengan pelaksanaan program dan koordinasi dari aktivitas sistem
komputer. Ada beberapa macam system operasi diantaranya adalah :
1. Linux
2. Windows
3. Mac OS
Tugas sistem operasi termasuk (tetapi tidak hanya) mengurus penjalanan
program di atasnya, koordinasi Input, Output, pemrosesan, memori, serta
penginstalan dan pembuangan Software. Sistem operasi, menentukan program
yang mana dijalankan, kapan, dan alat yang mana (seperti memori atau I/O) yang
mereka gunakan. Sistem operasi juga memberikan servis kepada program lain,
seperti kode (driver) yang membolehkan programer untuk menulis program untuk
4
[ALGORITMA DAN PEMROGRAMAN]
suatu mesin tanpa perlu mengetahui detail dari semua alat elektronik yang
terhubung.
Application Program
Yaitu program komputer yang siap digunakan atau disebut juga program siap
pakai. Program paket digunakan untuk aplikasi bisnis secara umum, aplikasi
khusus dibidang industri, aplikasi untuk meningkatkan produktifitas organisasi atau
perusahaan dan aplikasi untuk produktifitas perorangan. Contoh :
1. Microsoft Word
2. Microsoft Excel
3. CorelDraw X4
4. Dll
Language Program
Language Program atau bahasa pemrograman adalah bahasa yang digunakan
oleh manusia untuk berkomunikasi dengan komputer, karena komputer memiliki
bahasa sendiri maka komputer tidak akan merespon selain menggunakan bahasa
Pemrograman, seperti : Bahasa komputer yang digunakan untuk menulis instruksi-
instruksi program untuk melakukan suatu pekerjaan yang dilakukan oleh
programer, seperti :
1. Visual basic
2. Turbo pascal
3. Delphi
3. BrainwareBrainware adalah orang yang mengoperasikan sebuah komputer,
karena jika tidak ada orang yang mengoperasikan maka tidak akan dapat
digunakan.
5
[ALGORITMA DAN PEMROGRAMAN]
B. Pengenalan Algoritma dan Pemrograman
Apakah Itu AlgoritmaDitinjau dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah yang
aneh. Orang hanya menemukan kata algorism yang berarti proses menghitung
dengan angka arab. Anda dikatakan algorist jika Anda menghitung menggunakan
angka arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya
kurang memuaskan.
Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang
berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad
Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism. Al-
Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya
“Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari
judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata
dari algorism menjadi algorithm muncul karena kata algorism sering dikelirukan
dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm.
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.
Definisi AlgoritmaPandangan mengenai komputer sebagai sebuah mesin yang “pintar” adalah
pandapat yang salah, karena komputer hanyalah suatu alat yang diberi
serangkaian perintah oleh manusia sehingga dapat menyelesaikan permasalahan
secara cepat, akurat, bahkan berulang-ulang tanpa kenal lelah dan bosan.
Sekumpulan instruksi yang merupakan penyelesaian masalah itu dinamakan
program. Agar program dapat dilaksanakan oleh komputer, program tersebut harus
6
[ALGORITMA DAN PEMROGRAMAN]
ditulis dalam suatu bahasa yang dimengerti oleh komputer. Bahasa komputer yang
digunakan dalam menulis program dinamakan bahasa pemrograman. Urutan
langkah-langkah yang sistematis untuk menyelesaikan sebuah masalah dinamakan
algoritma.
Jadi “Algoritma adalah 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. Dalam beberapa konteks, algoritma adalah
spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. 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 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.
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2 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. Dalam
kenyataannya, setiap orang bisa membuat algoritma yang berbeda untuk
menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam menyusun
algoritma, tentunya kita mengharapkan keluaran yang sama. Jika terjadi demikian,
carilah algoritma yang paling efisien dan cepat.
7
[ALGORITMA DAN PEMROGRAMAN]
Didalam algoritma langkah-langkah yang tidak benar dapat memberikan hasil
yang salah. Sebagai contoh tinjau persoalan mempertukarkan isi dua buah bejana,
A dan B. Bejana A berisi larutan yang berwarna merah, sedangkan bejana B berisi
air berwarna biru. Kita ingin mempertukarkan isi kedua bejana itu sedemikian
sehingga bejana A berisi larutan berwarna biru dan bejana B berisi larutan
berwarna merah. Ada 2 algoritma untuk menyelesaikan permasalahan tersebut,
yaitu :
a) Algoritma yang pertama, ada dua langkah :
(1) Tuangkan larutan dari bejana A ke dalam bejana B
(2) Tuangkan larutan dari bejana B ke dalam bejana A
Algoritma tukar isi bejana di atas tidak menghasilkan pertukaran yang benar,
karena langkah-langkahnya tidak logis sehingga yang terjadi adalah
percampuran keduanya.
b) Algoritma yang kedua, ada 3 langkah :
(1) Tuangkan larutan dari bejana A ke dalam bejana C
(2) Tuangkan larutan dari bejana B ke dalam bejana A
(3) Tuangkan larutan dari bejana C ke dalam bejana B
Sekarang, dengan algoritma tukar isi bejana yang sudah diperbaiki ini, isi bejana
A dan B dapat dipertukarkan dengan benar.
Dari kedua contoh algoritma di atas dapat diambil 2 pesan penting. Pertama,
algoritma harus benar. Kedua, algoritma harus berhenti, dan setelah berhenti,
algoritma memberi hasil yang benar.
C. Pengertian PemrogramanKomputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh
komputer, algoritma harus ditulis dalam notasi bahasa pemrograman sehingga
dinamakan program. Jadi program adalah perwujudan atau implementasi algoritma
yang ditulis dalam bahasa pemrograman tertentu sehingga dapat dilaksanakan oleh
8
[ALGORITMA DAN PEMROGRAMAN]
komputer. Program ditulis dalam salah satu bahasa pemrograman, dan kegiatan
membuat program disebut pemrograman (programmming). Orang yang menulis
program disebut pemrogram (programmer). Tiap-tiap langkah di dalam program
disebut pernyataan atau instruksi. Jadi, program tersusun atas sederetan
instruksi. Bila suatu instruksi dilaksanakan, maka operasi-operasi yang bersesuaian
dengan instruksi tersebut dikerjakan oleh komputer.
Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
memprogram berarti mempelajari metodologi pemecahan masalah, kemudian
menuliskan algoritma pemecahan masalah dalam notasi tertentu. Sedangkan
belajar bahasa pemrograman berarti belajar memakai suatu bahasan komputer,
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.
9
[ALGORITMA DAN PEMROGRAMAN]
BAB II
DASAR-DASAR ALGORITMA DAN NOTASI ALGORITMIK
A. Dasar-Dasar AlgoritmaProses, Instruksi dan Aksi
Pada dasarnya, sebuah algoritma merupakan deskripsi pelaksanaan suatu
proses. Algoritma disusun oleh sederetan langkah instruksi yang logis. Tiap
langkah instruksi tersebut melakukan suatu tindakan atau aksi. Bila suatu aksi
dilaksanakan, maka sejumlah operasi yang bersesuaian dengan aksi itu dikerjakan
oleh pemroses. Efek dari pengerjaan suatu aksi dapat diamati dengan
membandingkan keadaan pada saat aksi belum dimulai, t0, dan keadaan pada saat
aksi selesai dikerjakan, t1.
To : Keadaan sebelum aksi dikerjakan
AksiT1 : Keadaan setelah aksi dikerjakan
Sebagai contoh, tinjau kembali algoritma yang menggambarkan proses
mempertukarkan larutan dari dua buah bejana A dan B. Pada setiap pelaksanaan
aksi kita amati keadaan awal dan keadaan akhirnya.
To : bejana A berisi larutan berwarna merah,bejana B berisi larutan berwarna
biru (bejana C masih kosong).
(1) Tuangkan larutan dari bejana A ke dalam bejana C
T1 : bejana A kosong, bejana C berisi larutan berwarna
Merah
To : bejana A kosong, bejana B berisi larutan berwarna biru.
(2) Tuangkan larutan dari bejana B ke dalam bejana A
T1 : bejana A berisi larutan berwarna biru, bejana B kosong
10
[ALGORITMA DAN PEMROGRAMAN]
To : bejana B kosong, bejana C berisi larutan berwarna merah.
(3) Tuangkan larutan dari bejana C ke dalam bejana B
T1 : Bejana B berisi larutan berwarna merah, bejana A sudah berisi larutan
berwarna biru (bejana C kosong).
Keadaan awal dan keadaan akhir algoritma dapat dijadikan acuan bagi
pemrogram dalam merancang suatu algoritma. Keadaan akhir mencerminkan hasil
yang diinginkan dari sebuah keadaan awal. Algoritma berisi langkah-langkah
pencapaian keadaan akhir dari keadaan awal yang didefinisikan.
Tahap-tahap penyusunan algoritma seringkali dimulai dari langkah yang global
lebiha dahulu. Langkah global ini diperhalus sampai ke langkah yang lebih rinci.
Pendekatan desain algoritma seperti ini dinamakan perancangan puncak turun
(top-down design). Cara pendekatan seperti ini angat bermanfaat dalam membuat
algoritma untuk masalah yang cukup rumit atau kompleks.
Struktur Dasar AlgoritmaAlgoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-
langkah tersebut dapat berupa runtunan aksi, pemilihan aksi dan pengulangan aksi.
Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi, sebuah
algoritma dapat dibangun dari 3 buah struktur dasar, yaitu :
(1) Runtunan (sequence)(2) Pemilihan (selection)(3) Pengulangan (looping)
Runtunan (Sequence)Sebuah runtunan terdiri dari satu atau lebih pernyataan, setiap pernyataan
ditulis dalam satu baris atau dipisahkan dengan tanda titik koma. Tiap pernyataan
dikerjakan secara berurutan (sekuensial) sesuai dengan urutannya di dalam teks
algoritma. Sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai
11
[ALGORITMA DAN PEMROGRAMAN]
dilaksanakan. Urutan instruksi menentukan keadaan akhir algoritma. Bila urutannya
berubah, maka hasil akhir kemungkinan juga berubah.
Contoh :
Algoritma mempertukarkan isi dua buah ember, A dan B :
(1) Tuangkan air dari ember A ke dalam ember C.
(2) Tuangkan air dari ember B ke dalam ember A.
(3) Tuangkan air dari ember C ke dalam ember B.
Algoritma di atas adalah sebuah runtunan yang terdiri atas tiga buah
pernyataan. Tiap pernyataan akan dieksekusi dalam urutan yang sama
sebagaimana tertulis di dalam teks algoritma tersebut.
Pemilihan (Selection)Ada kalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi.
Penulisan pemilihan secara umum :
If kondisi then
Aksi
Dalam bahasa indonesia, if berarti “jika” dan then artinya “maka”. Kondisi
adalah persyaratan yang dapat bernilai salah atau benar. Aksi hanya dilakukan jika
kondisi bernilai benar. Perhatikan kata yang digarisbawahi, if dan then merupakan
kata kunci(keywords) untuk struktur pemilihan ini. Dalam kehidupan sehari-hari, kita
sering menuliskan pernyataan tindakan bila suatu persyaratan dipenuhi. Misalnya :
If Zaki memperoleh juara kelas then
Ayah akan membelikannya sepeda
If jalan panenan macet then
Ambil alternatif jalan dipati ukur
12
[ALGORITMA DAN PEMROGRAMAN]
Struktur pemilihan if-then hanya memberikan satu pilihan aksi jika kondisi
dipenuhi (bernilai benar), dan tidak memberi pilihan aksi lain jika bernilai salah.
Bentuk pemilihan yang lebih umum ialah memilih satu dari dua buah aksi
bergantung pada nilai kondisinya :
If kondisi then
Aksi 1Else
Aksi 2
Else artinya “kalau tidak”. Bila kondisi bernilai benar, aksi 1 akan dikerjakan,
tetapi kalau tidak, aksi 2 yang akan dikerjakan. Misalnya pada pernyataan berikut :
If hari hujan then
Pergilah dengan naik becak
Else
Pergilah dengan naik motor
Jika kondisi “hari hujan” bernilai benar, maka aksi “pergilah dengan naik beca”
dilakukan, sebaliknya aksi “pergilah dengan naik motor” akan dilakukan jika “hari
hujan” tidak benar.
Pengulangan (Looping)Salah satu kelebihan komputer adalah kemampuannya untuk megngerjakan
perkejaan yang sama berulang kali tanpa kenal lelah.
Pengulangan digunakan untuk menjalankan satu atau beberapa pernyataan
sebanyak beberapa kali. Dengan kata lain, pengulangan memungkinkan
pengerjaan beberapa kali perintah tetapi penulisan perintah tersebut hanya satu
kali.
Struktur PengulanganStruktur pengulangan yang umum digunakan antara lain:
Pernyataan for
13
[ALGORITMA DAN PEMROGRAMAN]
Pernyataan pengulangan for digunakan jika kita sudah tahu berapa kali kita
akan mengulang satu atau beberapa pernyataan.
Pernyataan repeat-until
Pernyataan repeat-until akan melakukan pengulangan aksi hingga kondisi
(persyaratan) berhenti terpenuhi. Tidak seperti pada struktur for yang jumlah
pengulangannya diketahui sebelum pengulangan dilaksanakan, maka untuk
struktur repeat-until digunakan jika jumlah pengulangan tidak dapat diketahui di
awal. Namun yang pasti, pengulangan aksi akan terus dilakukan sampai kondisi
berhenti dipenuhi.
Pernyataan while-do
Sama seperti pada pernyataan repeat-until, pada pernyataan while-do ini
digunakan untuk pengulangan yang belum diketahui pasti jumlah
pengulangannya. Berakhirnya pengulangan ini ditentukan oleh suatu kondisi.
Bila kondisi sudah tidak terpenuhi, maka pengulangan akan berakhir. Dengan
kata lain, selama kondisi masih terpenuhi, pengulangan akan terus dilakukan.
Pada pernyataan repeat-until dan while-do, pada dasarnya hampir sama yaitu
digunakan jika jumlah pengulangan belum dapat ditentukan. Tetapi terdapat
perbedaan yaitu pada pengecekan kondisi. Jika pada pernyataan while-do, kondisi
dicek pada awal blok pengulangan, pada pernyataan repeat-until, kondisi dicek
pada akhir blok pengulangan.
Perbedaan yang lain, bila pernyataan while-do mengulang pernyataan
selama kondisi masih terpenuhi, pernyataan repeat-until mengulang pernyataan
selama kondisi belum terpenuhi.
Contoh :
Bagaimana menuliskan sebuah kalimat yang sama sebanyak 100 kali ?
Misalkan kalimat yang akan ditulis sebanyak 100 kali adalah seperti ini :
“ Saya akan rajin belajar ”
FOR
14
[ALGORITMA DAN PEMROGRAMAN]
for i=1 to 100 do
write “Saya akan rajin belajar”
i adalah pencacah pengulangan yang mencacah pengulangan dari 1
sampai 100.
REPEAT-UNTIL
repeat
write “Saya akan rajin belajar”
until sudah 100
B. Notasi AlgoritmikDalam suatu penulisan algoritma terkadang kita sulit untuk mengerti dan
memahami maksud dari algoritma tersebut. Selain itu juga kita sulit untuk
menuliskan algoritmanya. Untuk itu agar mempermudahnya dapat dilakukan notasi
– notasi algoritma. Notasi algoritmik merupakan standard yang dipakai dalam
menuliskan teks algoritma.
Aturan Penulisan
Judul (Header)
Judul adalah bagian teks algoritma yang digunakan sebagai tempat
mendefinisikan nama dengan menentukan apakah teks tersebut adalah program,
prosedur, atau fungsi. Setelah judul disarankan untuk menuliskan spesifikasi
singkat dari teks algoritma tersebut. Nama algoritma sebaiknya singkat namun
cukup menggambarkan apa yang akan dilakukan oleh algoritma tersebut.
Contoh :
Algoritma Luas_Persegi_Panjang ← {Judul Algoritma}
{ Menghitung luas kubus untuk ukuran sisi yang dibaca daripiranti masukan lalu
mencetak hasilnya kepiranti keluaran } ← { Spesifikasi Algoritma }
15
[ALGORITMA DAN PEMROGRAMAN]
Kamus(Deklarasi)
Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan
Nama type, Nama konstanta, Nama variabel, Nama fungsi dan Nama prosedur.
Semua nama tersebut baru dapat dipakai di dalam algoritma jika dan
hanya jika telah didefinisikan terlebih dahulu didalam bagian kamus. Penulisan
sekumpulan nama dalam kamus sebaiknya dikelompokkan menurut jenis nama
tersebut.
Contoh :
DEKLARASI
Luas : integer
panjang : integer
lebar : integer
Algoritma (Deskripsi)
Ddeskripsi adalah bagian inti dari suatu algoritma yang berisi instruksi atau
pemanggilan aksi yang telah didefinisikan. Komponen teks algoritma dalam
pemrograman procedural dapat berupa :
Instruksi dasar seperti input/output, assignment
Squence (runtutan)
Analisa kasus / percabangan
Perulangan
Contoh :
DESKRIPSI
read(panjang, lebar)
Luas = panjang * lebar
write(Luas)
16
[ALGORITMA DAN PEMROGRAMAN]
Beberapa Notasi Algoritmik
Notasi algoritma yang sering dijumpai ada 3 macam yaitu :
1. Notasi Deskriptif
2. Notasi Flowchart
3. Notasi pseudo-code
1. Notasi DeskriptifYaitu dengan cara menuliskan langkah-langkah penyelesaian masalah
dengan kalimat- kalimat yang jelas dan deskriptif disertai dengan urutan (nomor
urut) yang jelas. Selain itu juga Dengan notasi ini, deskripsi setiap langkah
dijelaskan dengan bahasa yang jelas. Notasi ini cocok untuk algoritma yang
pendek, namun untuk masalah yang algoritmanya besar, notasi ini jelas tidak
efektif. Selain itu, pengkonversian notasi algoritma ke notasi bahasa
pemrograman cenderung relatif sukar.
Contoh notasi deskriptif :
Algoritma luas_persegi_panjang :
DESKRIPSI
1. Mulai
2. Baca panjang
3. Baca lebar
4. Hitung luas = panjang * lebar
5. Tampilkan luas
6. Selesai
17
[ALGORITMA DAN PEMROGRAMAN]
2. Notasi FlowchartKelemahan notasi deskriptif adalah dalam penyusunan algoritma sangat
dipengaruhi oleh tata bahasa pembuatnya, sehingga kadang-kadang orang lain
sulit memahaminya. Oleh sebab itu kemudian dikembangkan metode yang
menggambarkan tahap-tahap pemecahan masalah dengan merepresentasikan
simbol-simbol tertentu yang mudah dimengerti, mudah digunakan dan standar.
Salah satu penulisan simbol tersebut adalah dengan menggunakan flowchart.
Pembuatan Algoritma dengan Notasi Flowchart adalah dengan cara
Menuliskan Algoritma menggunakan bagan alir dengan memanfaatkan bentuk-
bentuk geometri seperti persegi panjang, jajaran genjang, lingkaran dan
sebagainya yang memiliki fungsi tersendiri. Sama halnya dengan notasi
deskriptif, notasi ini cocok untuk algoritma yang pendek, namun untuk masalah
yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu, pengkonversian
notasi algoritma ke notasi bahasa pemrograman cenderung relatif sukar.
Flowchart terdiri dari 2 macam, yaitu :
1. Flowchart Program
2. Flowchart Sistem
1. Flowchart ProgramFlowchart program adalah suatu bagan yang menggambarkan arus logika
dari data yang akan diproses dalam suatu program dari awal sampai akhir.
Flowchart program merupakan alat yang berguna bagi programmer untuk
mempersiapkan program yang rumit. Terdiri dari simbol-simbol yang
mewakili fungsi-fungsi langkah program dan garis alir (flow lines)
menunjukan urutan dari simbol yang akan dikerjakan.
18
[ALGORITMA DAN PEMROGRAMAN]
Gambar 1. Simbol Standar Flowchar Program
19
[ALGORITMA DAN PEMROGRAMAN]
Gambar 2. Simbol Standar Flowchar Program
Contoh flowchart program :
Gambar 3. Flowchart Algoritma hitung luas persegi panjang
20
[ALGORITMA DAN PEMROGRAMAN]
2. Flowchart SistemFlowchart sistem berbeda dengan flowchart program. Flowchart sistem hanya
menggambarkan arus data dari sistem. Simbol-simbol yang digunakan pada flowchart
sistem ada yang sama dan ada yang berbeda dengan simbol-simbol yang digunakan
pada bagan alir program.
Gambar 4. Simbol Flowchart Sistem
21
[ALGORITMA DAN PEMROGRAMAN]
Gambar 5. Simbol Flowchart Sistem
22
[ALGORITMA DAN PEMROGRAMAN]
Gambar 6. Simbol Flowchart Sistem
3. Notasi pseudo-codeNotasi Pseudocode (pseudo artinya semu atau tidak sebenarnya) deskripsi dari
algoritma pemrograman computer yang menggunakan struktur sederhana dari
beberapa bahasa pemograman tetapi bahasa tersebut hanya ditujukan agar dapat
dibaca manusia. Biasanya yang ditulis dari pseudocode adalah variabel dan fungsi.
Banyak notasi pseudo-code yang digunakan oleh para ahli komputer dan
berbeda-beda sehingga tidak ada aturan baku dalam penulisan pseudo-code ini,
tetapi yang paling banyak digunakan dalam algoritma pemrograman adalah yang
mendekati bahasa pascal.
Keuntungan menggunakan notasi pseudo code adalah kemudahan
mengkonversinya lebih tepat yang disebut mentranslasi ke notasi bahasa
pemrograman, karena terdapat kesamaan antara setiap pseudo-code dengan
notasi bahasa pemrograman.
Contoh :
1. Program menghitung jumlah 2 buah bilangan
PROGRAM jumlah_bilangan
DEKLARASI
Nilai_1 : integer
Nilai_2 : integer
23
[ALGORITMA DAN PEMROGRAMAN]
Jumlah : integer
DESKRIPSI
read(nilai_1, nilai_2)
Jumlah = nilai_1 + nilai_2
write(Jumlah)
end.
2. Program menghitung Luas Persegi Panjang
PROGRAM Luas_Persegi_Panjang
DEKLARASI
Luas : integer
panjang : integer
lebar : integer
DESKRIPSI
read(panjang, lebar)
Luas = panjang * lebar
write(Luas)
end.
24
[ALGORITMA DAN PEMROGRAMAN]
BAB III
TIPE, NAMA DAN NILAI
Pada umumnya, program komputer memanipulasi objek (data) didalam memori.
Peubah (variabel) dan konstanta (constant) adalah objek data dasar yang dimanipulasi
didalam program. Deklarasi daftar peubah digunakan untuk menyatakan tipe peubah .
Operator mengspesifikasikan operasi apa yang dapat dilakukan terhadap peubah dan
konstanta. Ekspresi mengkombinasikan peubah-peubah dan konstanta untuk
menghasilkan nilai baru. Tipe data dapat dikelompokkan menjadi atas dua macam : tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai,
sedangkan tipe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lain yang
sudah didefinisakn sebelumnya.
A. TIPE DASARTipe dasar sudah dikenal dalam kehidupan sehari-hari. Tipe ini sudah ada sejak
zaman dahulu. Hampir setiap hari berbicara tentang angka-angka dan karakter.
Dalam dunia pemrograman, yang termasuk dalam tipe dasar adalah : bilangan lojik,
bilangan bulat, karakter, bilangan riil dan string.
1. Bilangan LogikNama TipeNama tipe bilangan logic adalah boolean(diambil dari nama seorang
matematikawan Inggris, George Boole).
Ranah NilaiHanya mengenal dua buah nilai : benar(true) atau salah(false). Atau kita dapat
memberikan istilah benar ( 1 ) dan salah ( 0 ).
25
[ALGORITMA DAN PEMROGRAMAN]
KonstantaKarena ranah nilai boolean hanya beranggotakan dua buah nilai, maka
konstanta yang terdapat pada tipe ini adalah true dan false.
OperasiOperasi yang dapat dilakukan terhadap tipe boolean dikenal dengan operasi logika atau operasi boolen. Operasi logika menghasilkan nilai true atau false.
Operator logika yang umum digunakan untuk operasi logika adalah : not, and,
or dan xor.
Jika a dan b adalah peubah(varibel) yang bertipe boolean, maka operasi a dan
b dengan keempat operator boolean tersebut diberikan oleh masing-masing
tabel (disebut tabel kebenaran) berikut :
Table 1. Tabel Kebenaran
a b not a not b a and b a or b a xor btrue true false false true true falsetrue false false true false true truefalse true true false false true Truefalse false true true false false False
Contoh operasi logika : misalkan x, y dan z adalah peubah bertipe boolean. X bernilai true, y bernilai false dan z bernilai true, maka :
Table 2. Contoh operasi logika pada bilangan lojik
Operasi Logika Hasil(x and y) or z Truenot (x and z) False(y xor z) and y False
2. Bilangan BulatBilangan bulat sudah umum digunakan dalam kehidupan sehari-hari. Bilangan
bulat adalah bilangan yang tidak mengandung pecahan desimal, misalnya 88,
69, 30, 1234 dan sebagainya.
26
[ALGORITMA DAN PEMROGRAMAN]
Nama TipeNama tipe bilangan bulat adalah integer.
Ranah NilaiSecara teoritis bilangan bulat tidak mempunyai batasan untuk nilai. Tetapi pada
dunia pemograman, ranah nilai bilangan bulat mempunyai batasan. Hal
tersebut dimaksudkan untuk penghematan alokasi memori. Ranah nilai tipe
integer pemrograman bergantung pada mesin(komputer) dan kompilator yang
digunakan. Pada kompilator pascal yang menggunakan komputer 16-bit,
rentang nilai integer adalah dari -32768 sampai 32767. Kompilator ini
menyediakan empat macam tipe untuk integer, yaitu byte, shortinit, word,
integer dan longint.. Rentang nilai untuk kelima tipe tersebut adalah :
Table 3. Rentang Nilai Integer
Tipe Rentang NilaiByte 0...255
Shortint -128..127Word 0..65535
Integer -32768..32767longint -2147483648..2147483647
KonstantaKonstanta untuk bilangan bulat tidak boleh mengandung titik desimal.
OperasiOperasi yang dapat dilakukan terhadap bilangan bulat ada dua macam , yaitu
operasi aritmatika dan operasi perbandingan.
a. Operasi AritmatikaOperator aritmatika yang didefinisikan pada bilangan bulat adalah :
27
[ALGORITMA DAN PEMROGRAMAN]
Table 4. Operator atirmatika bilangan bulat
+ Tambah- Kurang* Kali
div Bagimod Sisa Hasil Bagi
Contoh-contoh operasi aritmatika bilangan bulat beserta hasil operasinya :
Table 5. Contoh operasi aritmarika pada bilangan bulat
Operasi aritmatika Hasil3+3 687-31 565*10 5010 div 3 310 mod 3 1
b. Operasi PerbandinganOperator perbandingan untuk bilangan bulat adalah :
Table 6. Tabel operasi perbandingan bilangan bulat
< Lebih kecil≤ Lebih kecil atau sama dengan> Lebih besar≥ Lebih besar atau sama dengan= Sama dengan≠ Tidak sama dengan
Contoh-contoh operasi perbandingan pada bilangan bulat adalah :
Table 7. Contoh Operasi perbandingan pada bilangan bulat
Operasi perbandingan Hasil3 < 8 True9 ≥ 9 True17 = 18 False
3. Karakter
28
[ALGORITMA DAN PEMROGRAMAN]
Yang termasuk karakter adalah semua huruf-huruf abjad, semua tanda baca,
angka ‘0’, ‘1’, … , ‘9’, dan karakter-karakter khusus seperti ‘&’, ‘^’, ‘%’, ‘#’, ‘@’,
dll. Karakter kosong (null) adalah karakter yang panjangnya nol dan
dilambangkan ‘ ‘.
Nama TipeNama tipe untuk karakter adalah char.
Ranah NilaiRanah nilai untuk karakter adalah semua huruf di dalam alfabet (‘a’, … ‘z’, ‘A’
… ‘Z’) angka desimal (0...9), tanda baca (‘.’, ‘:’, ‘!’, ‘?’, ‘,’, dll), operator aritmatika
(‘+’, ‘-‘, ‘*’, ‘/’), dan karakter-karakter khusus seperti (‘$’, ‘#’, ‘@’, ‘^’, ‘~’, dll).
Daftar karakter baku yang lengkap dapat dilihat di dalam buku-buku yang
memuat tabel ASCII.
KonstantaKonstanta karakter harus diapit oleh tanda petik tunggal. Contoh konstanta
karakter misalnya : ‘9’ .
Ket: ingatlah bahwa ‘9’ adalah karakter,tetapi 9 adalah integer.
OperasiOperasi yang dapat dilakukan pada tipe karakter adalah operasi perbandingan.
Operator perbandingan yang berlaku adalah :
Table 8. Operasi perbandingan pada karakter
< Lebih kecil≤ Lebih kecil atau sama dengan> Lebih besar≥ Lebih besar atau sama dengan= Sama dengan≠ Tidak sama dengan
Contoh-contoh operasi perbandingan pada karakter :
29
[ALGORITMA DAN PEMROGRAMAN]
Table 9. Contoh operasi perbandingan karakter
Operasi perbandingan Hasil‘a’ = ‘a’ True‘T’ = ‘t’ False‘m’ < ‘z’ True
4. Bilangan RiilBilangan riil adalah bilangan yang mengandung pecahan desimal, misalnya
3.65, 0.0003, 29.0, 2.60240000E-6, 0.24 , dll. Semua konstanta bilangan riil
harus mengandung titik (desimal). Misalnya “18” dianggap sebagai bilangan
bulat, tetapi “18.0” dianggap sebagai bilangan riil. Untuk bilangan riil yang ditulis
dengan notasi E berarti perpangkatan sepuluh. Contoh : 2.60240000E-6 artinya
2.60240000×10-6.
Nama TipeNama tipe bilangan riil adalah real(beberapa literatur menyebutnya floating-
point)
Ranah NilaiSebagaimana halnya pada tipe bilangan bulat, secara teoritis bilangan riil
memiliki ranah nilai yang tidak terbatas. Di dalam komputer, tipe real
mempunyai rtentang nilai yang terbatas bergantung pada prosessor dan
kompilator yang digunakan. Didalam kompilator pascal misalnya, tipe real dapat
direpresntasikan ke dalam empat macam tipe, yaitu real, single, double dan
extended. Rentang nilai untuk keempat tipe tersebut adalah :
Table 10. Rentang nilai blangan riil
Tipe Rentang Nilai Formatreal 2.9×10-39 … 1.7 x 1038 6 ByteSingle 1.5 x 10-45 …. 3.4 x 1038 4 ByteDouble 5.0 x 10-324 … 1.7 x 10308 8 ByteExtended 3.4 x 10-4932 … 1.1 x 104932 10 Byte
30
[ALGORITMA DAN PEMROGRAMAN]
KonstantaSetiap konstanta yang bertipe bilangan riil harus ditulis dengan tanda titik
desimal. Contoh konstanta bertipe biangan riil misalnya :
0.78
-14.22
99.0
OperasiSeperti pada tipe bilangan bulat, operasi yang dilakukan terhadap bilangan riil
ada dua macam, yaitu operasi aritmatika dan operasi perbandingan. a. Operasi Aritmatika
Operasi aritmatika terhadap bilangan riil dengan sembarang operator
aritmatika menghasilkan nilai yang bertipe bilangan riil juga. Operator
aritmatika yang didefinisikan pada bilangan riil adalah :
Table 11. Operator atirmatika bilangan riil
+ Tambah- Kurang* Kali/ Bagi
Contoh-contoh operasi aritmatika bilangan bulat beserta hasil operasinya :
Table 12. Contoh operasi aritmarika pada bilangan riil
Operasi aritmatika Hasil6.4 + 5.7 12.18.0 – 2.8 5.210.0 – 3.0 3.3333333310 - 2.5 4.0 → Operasi bilangan campuran
7.2 * 0.5 3.6b. Operasi Perbandingan
Operator perbandingan untuk bilangan riil adalah :
31
[ALGORITMA DAN PEMROGRAMAN]
Table 13. Tabel operasi perbandingan bilangan riil
< Lebih kecil≤ Lebih kecil atau sama dengan> Lebih besar≥ Lebih besar atau sama dengan≠ Tidak sama dengan
Pada bilangan riil tidak dikenal operasi sama dengan “=”. Karena bilangan
riil tidak dapat disajikan secara tepat oleh komputer. Misalnya 1/3 tidak
sama dengan 0.33333, sebab 1/3 = 0.333333.... (dengan angka 3 yang
tidak pernah berhenti).
Contoh-contoh operasi perbandingan pada bilangan riil adalah :
Table 14. Contoh Operasi perbandingan pada bilangan riil
Operasi perbandingan Hasil3.9 < 8.0 True9.6 ≥ 9.9 True0.003 < 0.3 False
5. StringString adalah untaian karakter dengan panjang tertentu. String sebenarnya
bukan tipe dasar murni karena ia disusun dari elemen-elemen bertipe karakter.
Namun, karena tipe string sering dipakai dalam pemrograman, maka string
dapat diperlakukan sebagai tipe dasar.
Nama TipeNama tipe string adalah string.
Ranah Nilai
32
[ALGORITMA DAN PEMROGRAMAN]
Ranah nilai untuk tipe string adalah deretak karakter yang telah didefinisikan
pada ranah karakter.
KonstantaSemua konstanta string harus diapit oleh tanda petik tunggal. Contoh-contoh
konstanta string misalnya :
‘JAMBI’
‘Pondok Pesantren Nurul Iman’
String kosong (null) adalah string yang panjangnya nol, dan dilambangkan
dengan ‘’. Dengan kata lain, string kosong sama dengan karakter kosong.
OperasiOperasi terhadap data bertipe string didefinisikan dua macam :
a. Operasi Penyambungan (Concatenation)Operator : +
Operator “ + ” yang dimaksudkan disini berarti penyambungan. Bila dan b
adalah peubah bertipe string, maka a + b sama dengan ab.
Contoh :
‘Pondok’ + ‘Pesantren’ = ‘PondokPesantren’
‘1’ + ‘2’ = ‘12’
b. Operasi PerbandinganOperator perbandingan untuk data bertipe string adalah :
Table 15. Tabel operasi perbandingan
< Lebih kecil≤ Lebih kecil atau sama dengan> Lebih besar≥ Lebih besar atau sama dengan≠ Tidak sama dengan
Contoh-contoh operasi perbandingan pada data bertipe string adalah :
33
[ALGORITMA DAN PEMROGRAMAN]
Table 16. Contoh Operasi perbandingan
Operasi perbandingan Hasil‘aaa’ = ‘abc’ False‘aku’ = ‘AKU’ True
String yang disusun oleh gabungan numerik dan karakter sering dinamakan
alfanumerik. Misalnya ‘K76KS’, ‘H8J9’ dan sebagainya.
B. TIPE BENTUKANTipe bentukan adalah tipe yang didefenisikan sendiri oleh pemogram (user defined
type data). Tipe bentukan di susun oleh satu atau lebih tipe dasar. Ada dua macam
tipe bentukan :
1. Tipe dasar yang diberi nama dengan nama tipe baru,
2. Tipe terstruktur
1. Tipe Dasar yang Diberi Nama Tipe BaruKadang-kadang pemrogram ingin memberi nama baru terhadap tipe dasar
yang sudah dikenal. Alasan pemberian nama baru mungkin agar nama baru
tersebut lebih “akrab” dan lebih mudah diinterpretasi oleh orang yang membaca
teks algoritma.
Kita dapat memberi nama baru untuk tipe dasar tersebut dengan kata kunci
type. Ranah nilai, cara menulis konstanta, dan operasi-operasi terhadap tipe
baru tersebut tidak berubah, tetap sama dengan tipe dasar aslinya.
Contoh : type BilanganBulat : integer
BilanganBulat adalah tipe bilangan bulat yang sama saja dengan tipe integer.
2. Tipe Terstruktur
34
[ALGORITMA DAN PEMROGRAMAN]
Tipe terstruktur adalah tipe yang berbentuk rekaman (record). Rekaman
(record) disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe
dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan
sebelumnya. Nama rekaman ditentukan sendiri oleh pemogram.
Gambar 7. Tipe terstruktur dengan N buah field
Contoh dibawah ini memperlihatkan bagaimana mendefinisikan tipe bentukan
untuk tipe terstruktur.
1. Didefinisikan tipe terstruktur yang mewakili tanggal dalam kalender Masehi.
Hari dinyatakan sebagai tanggal (dd), bulan (mm), dan tahun (yy), misalnya
10-8-1999. Misalkan tipe bentukan tersebut diberi nama tanggal :
Cara menuliskan tipe tanggal :
tipe tanggal : record
< dd : integer, mm : integer, yy : integer >
Jika D adalah variabel bertipe tanggal, maka cara pendeklarasiannya
adalah :
D.dd
D.mm
D.yy
2. Didefinisikan tipe terstruktur yang mewakili jam. Jam dinyatakan sebagai
jam(hh), menit(mm), dan detik(ss), contohnya 12:45:09 (jam 12 lewat 45
menit lewat 09 detik). Misalkan tipe bentukan tersebut diberi nama jam.
Cara menuliskan tipe jam :
tipe jam : record
< hh : integer, mm : integer, ss : integer >
35
[ALGORITMA DAN PEMROGRAMAN]
Jika J adalah variabel bertipe tanggal, maka cara pendeklarasiannya
adalah :
J.hh
J.mm
J.ss
C. NAMASetiap objek dialam mempunyai nama. Nama itu diberikan oleh manusia agar objek
tersebut mudah diidentifikasi, diacu, dan dibedakan dari objek lainnya. Nama dalam
algoritma dipakai sebagai pengidentifikasi “sesuatu” dan pemrogram mengacu
“sesuatu” itu melalui namanya. Karena itu, tiap nama haruslah unik, tidak boleh ada
dua buah nama yang sama.
Beberapa aturan mengenai penamaan :
1. Nama harus dimulai dengan huruf alfabet, tidak boleh dengan angka, spasi
atau karakter khusus lainnya.
2. Huruf besar atau huruf kecil tidak dibedakan. Jadi, suatu nama yang ditulis
dalam huruf besar atau huruf kecil dianggap sama.
3. Karakter penyusunan nama hanya boleh huruf alfabet, angka, dan “_”.
Underscore (“_”) dihitung sebagai sebuah huruf.
4. Nama tidak boleh mengandung operator aritmetika, operator relasional, tanda
baca, dan karakter khusus lainnya.
5. Karakter dalam nama tidak boleh dipisahkan dengan spasi. Spasi dapat diganti
dengan karakter “_”.
6. Panjang nama tidak dibatasi.
Nama sebaiknya interpretatif, yaitu mencerminkan nilai intrisik atau fungsi yang
dikandungnya.
36
[ALGORITMA DAN PEMROGRAMAN]
Contoh penamaan yang benar : titik6, hari, nilai_ujian, PT_1.
Contoh penamaan yang salah : 6titik, hari!, nilai ujian
Semua nama yang digunakan di dalam algoritma harus dideklarasikan di dalam
bagian DEKLARASI sebelum mereka digunakan, Deklarasi menspesifikasikan
nama-nama peubah beserta tipenya, nama konstanta beserta nilainya, nama tipe
bentukan, dan nama prosedur/fungsi.
Didalam algoritma, objek yang diberi nama dapat berupa :
1. Peubah (variable)Peubah adalah tempat menyimpan nilai yang isinya dapat diubah.
Contoh :
DEKLARASI
X, nilai_ujian, jumlah : real
2. Konstanta (constant)Konstanta adalah tempat penyimpanan didalam memori yang nilanya tetap
selama pelaksanaan program dan tidak boleh dirubah. Notasi untuk
menyatakan konstanta adalah const.
Contoh :
Const phi = 3.14
Phi adalah nama konstanta. Nilai konstanta yang sudah diisikan ke dalam
nama konstanta tidak dapat diubah oleh instruksi di dalam algoritma.
3. Tipe bentukanUntuk tipe bentukan sudah dijelaskan pada bahasan sebelumnya.
4. Nama FungsiContoh :
DEKLARASI
FUNCTION maksimum(input A, B :integer) → integer
Maksimum adalah fungsi.
37
[ALGORITMA DAN PEMROGRAMAN]
5. Nama ProsedurContoh :
DEKLARASI
PROCEDURE tukar(input/output A, B : integer)
Tukar adalah nama prosedur.
D. NILAINilai adalah besaran dari tipe data yang terdefinisi (tipe dasar atau tipe bentukan).
Nilai dapat berupa isi yang disimpan oleh nama peubah atau nama konstanta, nilai
dari hasil penghitungan, atau nilai yang dikirim oleh fungsi. Algoritma pada
dasarnya memanipulasi nilai yang disimpan di dalam peubah. Memanipulasi nilai ini
di dalam peubah misalnya : mengisikannya ke peubah lain yang bertipe sama,
dipakai untuk perhitungan, atau dituliskan ke piranti keluaran. Masing-masing cara
memanipulasi ini dibahas satu-persatu dibawah ini.
1. Pengisian Nilai ke dalam Nama PeubahNilai dapat dimasukkan ke dalam nama peubah melalui beberapa cara, yakni :
a. Pengisian nilai secara langsung (assignment)Pengisian nilai secara langsung (assignment) adalah mengisi sebuah nilai ke
dalam peubah secara langsung di dalam algoritma. Nilai yang diisikan harus
bertipe sama dengan tipe peubah. Notasi pengisian secara langsung adalah .
Arti notasi : nilai di sebelah kanan tanda panah diisikan ke dalam peubah
disebelah kirinya.
Sebagai contoh :
Nilai yang diisikan ke dalam peubah dapat berupa konstanta :
A 10 {nilai A sama dengan 10 }
38
[ALGORITMA DAN PEMROGRAMAN]
Atau suatu peubah diisi dengan nilai dari peubah lain :
A B {nilai A disali ke dalam B}
Atau suatu peubah diisi dengan hasil evaluasi dari sebuah ekspresi :
A (B+C)/2 {A berisi hasil evaluasi (B+C)/2)
Setiap peubah menempati sebuah lokasi di memori komputer. Sifat memori
adalah jika ia diisi dengan nilai baru, maka nilai yang disimpan sebelumnya
hilang. Prinsip yang dipakai adalah : nilai yang diakndung oleh peubah adalah
nilai yang terakhir kali diisikan ke dalamnya.
b. PembacaanNilai peubah dapat diisi dari piranti masukan, misalnya dari keyboard, dari
sebuah berkas(file), dan sebagainya. Memasukkan nilai dari piranti masukan
dinamakan operasi pembacaan data, karena komputer seolah-olah membaca
apa yang kita masukkan. Dalam algoritma pernyataan pembacaan
menggunakan notasi read.
Sebagai contoh :
read(nama_mahasiswa)
read(no_telepon)
dengan syarat bahwa nama_mahasiswa, no_telepon adalah nama-nama
peubah yang sudah dideklarasikan tipenya.
2. EkspresiSuatu nilai dipakai untuk proses transformasi menjadi keluaran yang diinginkan.
Transformasi nilai menjadi keluaran dilakukan melalui suatu
perhitungan(komputasi). Cara perhitungan itu dinyatakan dalam suatu ekspresi.
Ekspresi terdiri atas operand dan operator. Operand adalah nilai yang
dioperasikan dengan operator tertentu. Operand daoat berupa konstanta, nama
39
[ALGORITMA DAN PEMROGRAMAN]
peubah, nama konstanta, atau hasil dari suatu fungsi. Dikenal tiga macam
ekspresi yaitu ekspresi aritmatik, ekspresi relasional dan ekspresi string.
a. Ekspresi aritmatikEkspresi aritmatik adalah ekspresi yang baik operand-nya bertipe numerik dan
hasilnya juga bertipe numerik. Misalkan dideklarasikan nama-nama ubah
sebagai berikut :
DEKLARASI
a, b, c : real
d :integer
contoh ekspresi aritmatik misalnya ,
a * c
Hasil evaluasi ekspresi tersebut juga bertipe real. Pada ekspresi ini, operand-
nya adalah a dan b, sedangkan operatornya adalah “ * ”. Bila hasil evaluasi
disimpan ke dalam peubah, maka peubah tersebut haruslah bertipe sama
dengan tipe hasil. Pengisian hasil evaluasi ekspresi a * c ke dalam nama
peubah c melalui pernyataan dibawah ini benar :
b ← a * c
b. Ekspresi relasionalEkspresi relasional adalah ekspresi dengan operator <, ≤, >, ≥, = dan ≠, not,
and, or, dan xor. Hasil evaluasi ekspresinya adalah nilai bertipe boolean (true
atau false). Misalkan dideklarasikan nama-nama peubah sebagai berikut ini :
DEKLARASI
ada, ketemu, besar : boolean
x, y : integer
misalkan ketemu diisi nilai false, ada bernilai true, x bernilai 8 dan y bernilai 12,
maka contoh-contoh ekspresi boolean adalah sebagai berikut :
40
[ALGORITMA DAN PEMROGRAMAN]
x < 5 hasil :false
not ada hasil : false
ada or ketemu hasil : true
c. Ekspresi stringEkspresi string adalah ekspresi dengan operator “ + “ (operaot penyambungan).
Misalkan dideklarasikan nama-nama peubah sebagai berikut ini :
DEKLARASI
kar : char
s : string
maka contoh-contoh ekspersi string misalnya :
s + kar + ‘c’
‘Pondok Pesantren’ + ‘Nurul Iman’
3. Menuliskan Nilai ke Piranti KeluaranNilai konstanta, peubah, dan hasil ekspresi dapat ditampilkan ke piranti
keluaran (umumnya layar). Instruksi penulisan nilai dilakukan dengan notasi
write.
Contohnya adalah sebagai berikut :
write(nama, nama_siswa)
write(konstanta)
write(ekspresi)
Nama dapat berupa nama peubah atau nama konstanta. Menampilkan nilai ke
piranti keluaran diistilahkan dengan mencetak nilai tersebut.
Contoh lain adalah sebagai berikut :
write(‘a’) menulis karakter ‘a’
write(a) menulis nilai yang disimpan peubah a
write(a+2) menulis ekspresi, yaitu a + 2
41
[ALGORITMA DAN PEMROGRAMAN]
BAB IVRUNTUNAN
Ada tiga struktur dasar yang digunakan dalam membuat algoritma yaitu struktur
berurutan (sequencing), struktur pemilihan/keputusan/percabangan (branching) dan
struktur pengulangan (looping). Sebuah algoritma
biasanya akan menggabungkan ketiga buah struktur ini
untuk menyelesaikan masalah. Pada bagian ini kita akan
bahas lebih dulu struktur algoritma berurutan. Struktur
berurutan dapat kita samakan dengan mobil yang sedang
berjalan pada jalur lurus yang tidak terdapat persimpangan
seperti tampak pada Gambar disamping Mobil tersebut
akan melewati kilometer demi kilometer jalan sampai
tujuan tercapai. Struktur berurutan terdiri satu atau lebih
instruksi. Tiap instruksi dikerjakan secara berurutan sesuai
dengan urutan penulisannya, yaitu sebuah instruksi dieksekusi setelah instruksi
sebelumnya selesai dieksekusi. Urutan instruksi menentukan keadaan akhir dari
algoritma. Bila urutannya diubah, maka hasil akhirnya mungkin juga berubah. Menurut
Goldshlager dan Lister (1988) struktur berurutan mengikuti ketentuan-ketentuan sebagai
berikut:
a. Tiap instruksi dikerjakan satu persatu.
b. Tiap instruksi dilaksanakan tepat sekali, tidak ada yang diulang.
c. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi
sebagaimana yang tertulis di dalam algoritmanya.
d. Akhir dari instruksi terakhir merupakan akhir algoritma.
42
Gambar 8. Algoritma runtunan
[ALGORITMA DAN PEMROGRAMAN]
Setiap instruksi di dalam runtunan ditulis dalam satu baris, atau beberapa instruksi
dalam baris yang sama tetapi antara setiap instruksi dipisahkan dengan tanda titik koma
(;). Contoh-contoh masalah dibawah ini memperlihatkan algoritma yang hanya berisi
runtunan.
A. Contoh-contoh RuntunanContoh 1. Bagaimana mencetak pesan “Hello, world” ke layar ?
PenyelesaianVersi 1 :Algoritma untuk mencetak “Hello, Wolrd” :
PROGRAM Hello_world
DEKLARASI
{tidak ada}
ALGORITMA
write(‘Hello, World’)
Versi 2 :String “Hello, World” disimpan di dalam sebuah peubah yang bertipe string, baru
kemudian dicetak.
PROGRAM Hello_world
DEKLARASI
pesan : string
ALGORITMA
pesan ← ‘Hello, World’
write(pesan)
Contoh 2. Tulislah algoritma yang membaca nama seseorang dari masukkan
keyboard, lalu menampilkan ucapan “Halo” diikuti dengan nama orang tersebut.
43
[ALGORITMA DAN PEMROGRAMAN]
PenyelesaianProgram hallo_nama
DEKLARASI
nama : string
ALGORITMA
read(nama)
write(‘Halo’, nama)
Contoh 3. Tulislah algoritma masing-masing dalam notasi algoritmik dan pascal
yang membaca panjang dan lebar dari sebuah empat persegi panjang, lalu
menghitung luas segiempat yang berbentuk empat persegi panjang. Luas
segiempat adalah panjang dikali lebar. Luas segiempat dicetak ke piranti keluaran.
PenyelesaianNotasi Algoritmik
Program luas_persegi_panjang
DEKLARASI
panjang : real
lebar : real
luas : real
ALGORITMA
read(panjang, lebar)
luas ← panjang * lebar
write(luas)
Pascalprogram luas_persegi_panjang;
uses crt;
(* DEKLARASI *)
44
[ALGORITMA DAN PEMROGRAMAN]
var
panjang : real;
lebar : real;
luas : real;
(* ALGORITMA *)
Begin
clrscr;
write(‘Berapa panjang segiempat ? = ‘); readln(panjang);
write(‘Berapa lebar segiempat ? = ‘); readln(lebar);
luas := panjang * lebar;
writeln(‘Luas Segiempat = ‘,luas);
readln;
end.
Contoh 4. Tulis algoritma untuk menghitung komisi yang diterima salesman
berdasarkan nilai penjualan yang dicapainya. Salesman akan mendapat komisi
sebesar 5 % dari hasil penjualannya. Masukannya nama salesman dan hasil
penjualan kemudian tampilkan nama salesman dan besarnya komisi yang
diterimanya.
PenyelesaianNotasi AlgoritmikProgram Komisi_Salesmen
{di baca nama dan hasil penjualan salesman, kemudian hitung besarnya komisi
sebesar 5 % dari hasil penjualan dan tampilkan nama dan komisinya ke layar}
DEKLARASI
nama : string
NilaiPenjualan : real
Komisi : real
ALGORITMA
45
[ALGORITMA DAN PEMROGRAMAN]
read (nama, NilaiPenjualan)
Komisi ← 0.05 * NilaiPenjualan
write (nama, Komisi)
Pascalprogram Komisi_Salesmen;
uses crt;
(* DEKLARASI *)
var
nama : string;
NilaiPenjualan : real;
Komisi : real;
(* ALGORITMA *)
begin
clrscr;
write(‘Nama Salesman ? = ‘); readln(nama);
write(‘Nilai Penjualan ? = ‘); readln(NilaiPenjualan);
Komisi := 0.05 * NilaiPenjualan;
writeln (‘ Nama Salesmen = ‘,nama);
writeln (‘ Komisi = ‘,komisi);
readln;
end.
46
[ALGORITMA DAN PEMROGRAMAN]
BAB VPEMILIHAN
Sebuah program tidak selamanya akan berjalan dengan mengikuti struktur
berurutan, kadang-kadang kita perlu merubah urutan pelaksanaan program dan
menghendaki agar pelaksanaan program meloncat ke
baris tertentu. Peristiwa ini kadang disebut sebagai
percabangan/pemilihan atau keputusan.
Pada struktur percabangan, program akan berpindah
urutan pelaksanaan jika suatu kondisi yang disyaratkan
dipenuhi. Pada proses seperti ini simbol flowchart
Decision harus digunakan. Simbol decision akan berisi
pernyataan yang akan diuji kebenarannya. Nilai hasil
pengujian akan menentukan cabang mana yang akan
ditempuh.
A. Satu KasusNotasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan
konstruksi IF-THEN (jika-maka) dalam bentuk pernyataan :
If kondisi then
aksi
endif
pernyataan di atas berarti bahwa aksi hanya dilaksanakan bila kondisi bernilai
benar (true). Bila kondisi bernilai salah(false), tidak ada aksi apaun yang dikerjakan.
Notasi flowchart dibawah ini membantu memperlihatkan visualisasi pemilihan
dengan satu kasus.
47
Gambar 9. Algoritma Pemilihan
[ALGORITMA DAN PEMROGRAMAN]
Gambar 10. Flowchart Pemilihan satu kasus
B. Contoh-contoh Satu KasusContoh 1. Buatlah algoritma yang membaca sebuah bilangan bulat, lalu mencetak
pesan “genap” jika bilangan tersebut adalah genap.
PenyelesaianBilangan genap adalah bilangan yang habis dibagi dengan 2 ( sisa pembagian =
0 ). Oleh karena itu, kita perlu membagi data masukan dengan 2. Jika data
masukan habid dibagi 2, maka bilangan tersebut bilangan genap.
Notasi AlgoritmikPROGRAM genap
DEKLARASI
x : integer
ALGORITMA
read(x)
if x mod 2 = 0 then
write(‘genap’)
endif
48
[ALGORITMA DAN PEMROGRAMAN]
Pascalprogram genap;
uses crt;
(* DEKLARASI *)
var
x : integer;
(* ALGORITMA *)
begin
clrscr;
write(‘Masukkan Bilangan ? = ‘); readln(x);
if(x mod 2=0) then
begin
write(‘Bilangan Genap’);
readln;
end
end.
Contoh 2. Tulislah algoritma yang membaca sebuah karakter, lalu menuliskan
pesan “huruf vokal” jika karakter tersebut merupakan salah satu dari huruf vokal.
PenyelesaianHuruf vokal ada lima, yaitu a, i, u, e dan o. Bandingkan karakter yang dibaca
dengan kelima huruf tersebut. Jika karakter masukan sama dengan salah satu
huruf vokal tersebut, maka tuliskan pesan bahwa karakter tersebut adalah huruf
vokal.
Notasi Algoritmikprogram huruf_vokal
DEKLARASI
c : char
ALGORITMA
49
[ALGORITMA DAN PEMROGRAMAN]
read(c)
if (c=’a’) or (c=’i’) or (c=’u’) or (c=’e’) or (c=’o’) then
write(‘Huruf Vokal’)
endif
Pascalprogram huruf_vokal;
uses crt;
(* DEKLARASI *)
var
c : char;
(* ALGORITMA *)
begin
clrscr;
write(‘Masukkan Karakter ? = ‘); readln(c);
if (c=’a’) or (c=’i’) or (c=’u’) or (c=’e’) or (c=’o’) then
begin
write(‘Huruf Vokal’);
readln;
end
end.
C. Dua KasusKonstruksi IF-THEN hanya menyediakan satu alternatif aksi jika suatu
persyaratan(kondisi) dipenuhi. Kadang-kadang kita perlu memilih melakukan aksi
alternatif jika suatu kondisi tidak memenuhi. Jadi, ada dua kasus, tetapi hanya
salah satu dari keduanya yang harus dipilih satu untuk dikerjakan. Notasi algoritmik
50
[ALGORITMA DAN PEMROGRAMAN]
untuk masalah dengan dua buah kasus adalah dengan menggunakan konstruksi
IF-THEN-ELSE(jika-maka-kalau tidak).
If kondisi then
Aksi1
Else
Aksi2
Endif
Pernyataan diatas berarti bahwa aksi1 dikerjakan jika kondisi bernilai benar,
sebaliknya jika kondisi salah, maka aksi2 yang akan dilaksanakan. Notasi flowchart
dibawah ini membantu memperlihatkan visualisasi pemilihan dengan dua kasus.
Gambar 11. Flowchart Pemilihan dua kasus
D. Contoh-contoh Dua KasusContoh 1. Tulislah algoritma yang membaca bilangan bulat, lalu menuliskan pesan
“genap” jika bilangan tersebut adalah genap, atau “ganjil” jika bilangan tersebut
adalah bilangan ganjil.
51
[ALGORITMA DAN PEMROGRAMAN]
Penyelesaian
Bilangan genap adalah bilanga yang habis dibagi 2 (sisa bagi=0), sedangkan
bilangan ganjil bersisa 1 bila dibagi dengan 2.
Analisis kasus :
Kasus 1 : jika x mod = 0, maka tulis pesan “genap”
Kasus 2 : jika x mod ≠ 0, maka tulis pesan “ganjil”
Notasi AlgoritmikPROGRAM genap_ganjil
DEKLARASI
x : integer
ALGORITMA
read(x)
if x mod 2 = 0 then
write(‘genap’)
else
write(‘ganjil’)
endif
Pascalprogram genap_ganjil;
uses crt;
(* DEKLARASI *)
var
x : integer;
(* ALGORITMA *)
begin
clrscr;
52
[ALGORITMA DAN PEMROGRAMAN]
write(‘Masukkan Bilangan ? = ‘); readln(x);
if(x mod 2=0) then
begin
write(‘Genap’);
readln;
end
else
begin
write(‘Ganjil’);
readln;
end
end.
E. Tiga Kasus Atau LebihMasalah yang mempunyai tiga buah kasus atau lebih dapat dianalisis dengan
konstruksi IF-THEN-ELSE bertingkat-tingkat.
If kondisi1 then
Aksi1
Else
If kondisi2 then
Aksi2
Else
If kondisi3 then
Aksi3
Endif
Endif
Endif
53
[ALGORITMA DAN PEMROGRAMAN]
Gambar dibawah ini akan memperlihatkan notasi flowchart untuk masalah dengan
3 kasus.
Gambar 12. Flowchart Pemilihan Tiga Kasus Lebih
F. Contoh Tiga Kasus Atau LebihContoh 1. Tulislah algoritma yang membaca sebuah bilangan bulat, lalu
menentukan apakah bilangan tersebut positif, negatif atau nol.
PenyelesaianBaca bilangan bulat itu adalah x.
Analisis kasus :
Kasus 1 : jika x > 0 maka x adalah bilangan positif
Kasus 2 : jika x < 0 maka x adalah bilangan negatif
Kasus 3 : jika x = 0 maka x adalah bilangan nol
54
[ALGORITMA DAN PEMROGRAMAN]
Notasi Algoritmikprogram jenis_bilangan_bulat
DEKLARASI
x : integer
ALGORITMA
read(x)
if x > 0 then
write(‘Bilangan Positif’)
else
if x < 0 then
write(‘Bilangan Negatif’)
else
if x = 0 then
write(‘Nol’)
endif
endif
endif
G. Struktur CASEUntuk masalah dengan dua kasus atau lebih, konstruksi CASE dapat
menyederhanakan penulisan IF-THEN-ELSE yang bertingkat-tingkat. Konstruksi
CASE sebagai berikut :
Case (ekspresi)
kondisi1 : aksi1
kondisi2 : aksi2
kondisi3 : aksi3
.
kondisi4 : aksi4
55
[ALGORITMA DAN PEMROGRAMAN]
[otherwise aksiX]
Endcase
Kondisi1, kondisi2,…, kondisiN dapat bernilai benar atau salah. Tiap kondisi
diperiksa nilai kebenarannya mulai dari kondisi pertama sampai ditemukan kondisi
yang bernilai benar. Jika kondisi ke-N dilaksanakan, selanjutnya keluar dari struktur
CASE. Aksi yang dipasangkan dengan kondisi ke-N dapat lebih dari satu. Jika tidak
ada satupun kondisi yang benar, maka aksi sesudah otherwise dikerjakan.
Perhatikanlah bahwa otherwise optional, artinya boleh ditulis boleh juga tidak
ditulis.
H. Contoh Struktur CASEContoh 1. Buatlah algoritma yang membaca sebuah angka bulat yang nilainya
terletak antara 1 sampai 4, lalu menuliskan ke piranti keluaran angka tersebut
dalam kata-kata. Misalkan bila dibaca angka 1, maka tercetak tulisan “satu”, bila
dibaca 2, maka tercetak tulisan “dua”, demikian seterusnya. Jika angka yang
dimasukkan selain 1 sampai 4 tuliskan pesan bahwa angka yang dimasukkan
salah.
Penyelesaian
Dengan struktur CASE, algoritma untuk masalah tersebut dapat dibuat menjadi
lebih singkat sebagai berikut:
program konversi_angka_ke_teks
DEKLARASI
Angka : integer
ALGORITMA
read(angka)
case angka
1 : write(‘satu’)
2 : write(‘dua’)
56
[ALGORITMA DAN PEMROGRAMAN]
3 : write(‘tiga’)
4 : write(‘empat’)
Otherwise : write(‘angka yang dimasukkan salah’)
Endcase
Contoh 2. Buatlah algoritma menentukan bilangan genap atau ganjil menggunakan
struktur CASE.
PenyelesaianNotasi Algoritmikprogram genap_ganjil
DEKLARASI
x : integer
ALGORITMA
read(x)
case x mod 2
0 = write(‘Genap’)
1 = write(‘Ganjil”)
endcase
57
[ALGORITMA DAN PEMROGRAMAN]
BAB VI
PENGULANGAN
Dalam banyak kasus seringkali kita dihadapkan pada sejumlah pekerjaan yang
harus diulang berkali. Salah satu contoh yang
gampang kita jumpai adalah balapan mobil seperti
tampak pada gambar ini Mobil- mobil peserta harus
mengelilingi lintasan sirkuit berkali-kali sesuai yang
ditetapkan dalam aturan lomba. Siapa yang mencapai
garis akhir paling cepat, dialah yang menang. Di
dalam algoritma, pengulangan dapat dilakukan sejumlah kali, atau sampai kondisi
berhenti pengulangan tercapai.
A. Struktur PengulanganStruktur pengulangan terdiri dari dua bagian :
1. Kondisi pengulangan, yaitu syarat yang harus dipenuhi untuk melaksanakan
pengulangan. Syarat ini biasanya dinyatakan dalam ekspresi Boolean yang
harus diuji apakah bernilai benar (true) atau salah (false)
2. Badan pengulangan (loop body), yaitu satu atau lebih instruksi yang akan
diulang.
Pada struktur pengulangan, biasanya juga disertai bagian inisialisasi dan bagian
terminasi. Inisialisasi adalah instruksi yang dilakukan sebelum pengulangan
dilakukan pertama kali. Bagian insialisasi umumnya digunakan untuk memberi nilai
awal sebuah variable. Sedangkan terminasi adalah instruksi yang dilakukan
setelah pengulangan selesai dilaksanakan. Ada beberapa bentuk pengulangan
yang dapat digunakan, masing-masing dengan syarat dan karakteristik tersendiri.
58
Gambar 13. Algoritma Pengulangan
[ALGORITMA DAN PEMROGRAMAN]
Beberapa bentuk dapat dipakai untuk kasus yang sama, namun ada bentuk yang
hanya cocok untuk kasus tertentu saja. Pemilihan bentuk pengulangan untuk
masalah tertentu dapat mempengaruhi kebenaran algoritma. Pemilihan bentuk
pengulangan yang tepat bergantung pada masalah yang akan diprogram.
Didalam algoritma terdapat beberapa macam konstruksi perulangan yang berbeda.
Beberapa konstruksi dapat dipakai unruk masalah yang sama, namun ada
konstruksi pengulangan yang hanya cocok dipakai untuk masalah tertentu.
Pemilihan konstruksi pengulangan yang tepat bergantung pada masalah yang akan
diprogram.
B. Pernyataan FORStruktur pengulangan FOR digunakan untuk mengulang statemen atau satu blok
statemen berulang kali. Jumlah pengulangan diketahui atau dapat ditentukan
sebelum eksekusi. Untuk mencacah sejumlah pengulangan diperlukan sebuah
variabel pencacah (counter). Variabel ini nilainya selalu bertambah satu setiap kali
pengulangan dilakukan. Jika cacah pengulangan sudah mencapai jumlah yang
dispesifikasikan, maka proses pengulangan berhenti. Sebagai contoh, FOR dapat
digunakan untuk menampilkan tulisan ‘Algoritma dan Pemrograman’ 10 kali atau
pun dalam jumlah yang lebih banyak lagi. Perulangan dapat dalam bentuk positif,
perulangan negatif dan perulangan tersarang.
Bentuk umum pernyataan FOR ada dua macam : menaik(ascending) atau menurun
(descending).
1. FOR Menaik ( FOR-TO-DO)
For pencacah ← nilai_awal to nilai_akhir do
Aksi
Endfor
59
[ALGORITMA DAN PEMROGRAMAN]
Keterangan :
a. Pencacah haruslah dari tipe data yang memiliki predecessor dan
successor, yaitu integer atau karakter.
b. Aksi dapat berupa satu atau lebih instruksi yang diulang.
c. Nilai_awal harus lebih kecil atau sama dengan nilai_akhir.Jika
nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak
akan dimasuki.
d. Pada awalnya pencacah diinisialisasi dengan nilai_awal. Nilai
pencacah secara otomatis bertambah satu setiap kali badan
pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan
nilai_akhir.
e. Jumlah pengulangan yang terjadi adalah nilai_akhir – nilawai_awal +1.
Contoh 1. Program yang menggunakan FOR untuk menampilakan tulisan
‘Algoritma dan Pemrograman’ 10 kali.
PenyelesaianPascal
Program x10;
{ Contoh pemakaian FOR untuk menampilkan }
{ tulisan ‘Algoritma dan Pemrograman 10 kali }
USES Crt;
VAR
Pencacah : Integer;
BEGIN
ClrScr;
FOR pencacah := 1 TO 10 DO
Writeln (‘‘Algoritma dan Pemrograman);
END.
60
[ALGORITMA DAN PEMROGRAMAN]
Pada contoh diatas, Pencacah akan bernilai 1, 2, 3, 4 hingga 10 secara berturut-
turut. Untuk setiap nilai tersebut, pernyataan: Writeln (‘‘Algoritma dan
Pemrograman); Dieksekusi. Sebagai akibatnya, pada layar muncul tulisan:
Algoritma dan Pemrograman Sebanyak 10 kali.
Contoh 2. isi dari variabel pengontrol FOR ditampilkan
PenyelesaianPascalProgram Deret;
{ ----------------------------------------------------- }
{ Menampilkan bilangan 1 sampai dengan 5 }
{ ----------------------------------------------------- }
USES Crt;
VAR
Pencacah : Integer;
BEGIN
ClrScr;
FOR Pencacah := 1 TO 5 DO
WriteLn(Pencacah);
END.
Hasilnya berupa bilangan 1 sampai dengan 5 :
1
2
3
4
5
61
[ALGORITMA DAN PEMROGRAMAN]
2. FOR Menurun (FOR-DOWNTO-DO)
Kalau FOR-TO-DO digunakan untuk mencacah naik, FOR-DOWNTO-DO
adalah kebalikannya. Pada FOR-DOWNTO-DO, nilai awal justru harus lebih
besar (atau sama dengan) nilai akhir. Format selengkapnya :
For pencacah ← nilai_akhir downto nilai_awal do
Aksi
endfor
Keterangan :
a. Pencacah haruslah dari tipe data yang memiliki predecessor dan
successor, yaitu integer atau karakter.
b. Aksi dapat berupa satu atau lebih instruksi yang diulang.
c. Nilai_akhir harus lebih kecil atau sama dengan nilai_awal. Jika
nilai_akhir lebih besar kecil nilai_awal, maka badan pengulangan tidak
akan dimasuki.
d. Pada awalnya pencacah diinisialisasi dengan nilai_akhir. Nilai
pencacah secara otomatis berkuranf satu setiap kali badan
pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan
nilai_awal.
e. Jumlah pengulangan yang terjadi adalah nilai_awal – nilawai_akhir +1.
Contoh 1. Sebuah roket diluncurkan dengan hitungan mundur, mulai dari 100,
99, 98 ... 0. Algoritma perhitungan mundur adalah :
PenyelesaianNotasi AlgoritmikProgam peluncuran_roket
DEKLARASI
i : integer
ALGORITMA
62
[ALGORITMA DAN PEMROGRAMAN]
For i ← 100 downto 0 do
Write(i)
Endfor
Write(‘Go’)
C. Pernyataan WHILEStruktur WHILE-DO digunakan untuk melakukan proses perulangan suatu
statemen atau blok statemen terus menerus selama kondisi ungkapan logika pada
WHILE masih bernilai logika benar.
Bentuk umum pernyataan WHILE adalah :
While kondisi do
Aksi
Endwhile
Keterangan :
Aksi akan dilaksanakan berulangkali selama kondisi bernilai true. Jika kondisi
bernilai false, badan pengulangan tidak akan dimasuki, yang berati pengulangan
selesai. Kondisi di akhir pengulangan (setelah endwhile) disebut loop invariant,
yaitu variabel kondisi yang nilainya sudah tidak berubah lagi.
Notasi flowchart dibawah ini dapat membantu memahami struktur pernyataan
WHILE
Gambar 14. Pernyataan WHILE
63
[ALGORITMA DAN PEMROGRAMAN]
Pada flowchart diatas, pengulangan terhadap pernyataan dilakukan terus selama
kondisi bernilai True. Dan dari diagram terlihat bahwa ada kemungkinan pernyataan
tidak dieksekusi sama sekali. Keadaan ini terjadi kalau kondisi awal bernilai False.
Contoh 1. Mencetak pesan “hello, world” sebanyak 10 kali
PenyelesaianNotasi Algoritmik
Program cetak_hello
DEKLARASI
i : integer
ALGORITMA
I ← 1
While i ≤ 10 do
Write(‘ hello, world ’)
I ← i + 1
Endwhile
Contoh 2. Mencetak angka-angka 1, 2, ..., 10
PenyelesaianNotasi AlgoritmikPROGRAM cetak_sampai_10
DEKLARASI
K : integer
ALGORITMA
i ← 1
while i ≤ 10 do
write(i)
i ← i + 1
endwhile
64
[ALGORITMA DAN PEMROGRAMAN]
D. Pernyataan REPEATDigunakan untuk mengulang statemen sampai kondisi yang diseleksi di Until tidak
terpenuhi.
Bentuk umum pernyataan REPEAT adalah :
repeat
aksi
until kondisi
Notasi ini mendasarkan pengulangan pada kondisi boolean. Aksi di dalam badan
pengulangan diulang-ulang sampai kondisi bernilai true. Dengan kata lain, jika
kondisi masih false, proses pengulangan masih terus dilakukan. Karena proses
pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus
ada pernyataan yang mengubah nilai peubah kondisi.
Contoh 1. Mencetak hello, world sebanyak 10 kali
PenyelesaianNotasi AlgoritmikPROGRAM cetak_hello
DEKLARASI
i : integer
ALGORITMA
i ← 1
repeat
write(‘Hello, world’)
i ← i + 1
until i > 10
65
[ALGORITMA DAN PEMROGRAMAN]
Contoh 2. Mencetak angka 1, 2, 3, ..., sampai 10
PenyelesaianPROGRAM cetak_angka
DEKLARASI
I : integer
ALGORITMA
I ← 0
Repeat
I ← I + 1
Writeln (I) ;
Until I = 5
Catatan :Pada pernyataan repeat-until dan while-do, pada dasarnya hampir sama yaitu
digunakan jika jumlah pengulangan belum dapat ditentukan. Tetapi terdapat
perbedaan yaitu pada pengecekan kondisi. Jika pada pernyataan while-do, kondisi
dicek pada awal blok pengulangan, pada pernyataan repeat-until, kondisi dicek
pada akhir blok pengulangan.
Perbedaan yang lain, bila pernyataan while-do mengulang pernyataan selama
kondisi masih terpenuhi, pernyataan repeat-until mengulang pernyataan selama
kondisi belum terpenuhi.
Berdasarkan perbedaan diatas, maka kita dapat menarik kesimpulan kapan
menggunakan WHILE dan kapan menggunakan REPEAT :
a. Gunakan konstruksi WHILE pada kasus yang mengharuskan terlebih dahulu
pemeriksaan kondisi objek sebelum objek tersebut dimanipulasi.
b. Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasi
objek, baru kemudian memeriksa kondisi objek tersebut.
66
[ALGORITMA DAN PEMROGRAMAN]
BAB VIIARRAY
Bab ini akan mengemukakan bahasan tentang definisi array, deklarasi array,
mengakses elemen array, array sebagai tipe data bentukan, array konstan, array
sebagai parameter.
Pembahasan pada bab ini sangat penting dipahami, karena materi array ini
memberikan manfaat yaitu efisiensi program. Materi array sangat berkaitan dengan
materi lainnya dalam sebuah pemrograman terstruktur, karena array dapat digunakan
dan dikombinasikan dengan bahasan lain dalam sebuah program.
Bagi para pemrogram, efisiensi 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.
A. Definisi ArrayVariabel-variabel yang kita gunakan selama ini adalah variable biasa yang memiliki
sifat bahwa sebuah nama variable hanya dapat menyatakan sebuah nilai numeric
atau string pada suatu saat. Apabila kita ingin memberi nilai yang baru pada
variable tersebut maka nilai lama akan hilang tergantikan oleh nilai yang baru.
Bagaimana apabila kita ingin menyimpan beberapa nilai/data dalam sebuah
variable dengan nama yang sama, tetapi semua nilai tetap tersimpan? Solusi yang
dapat dilakukan adalah dengan menggunakan indeks pada nama variable tersebut.
Cara ini biasa disebut dengan array.
67
[ALGORITMA DAN PEMROGRAMAN]
Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe
sama, setiap elemen diakses langsung melalui indeksnya. Indeks array haruslah
tipe data yang menyatakan keterurutan, misalnya integer atau string. Array dapat
dianalogikan sebagai sebuah lemari atau locker yang memiliki sederetan kotak
penyimpanan yang diberi nomor berurutan (lihat Gambar 14). Untuk menyimpan
atau mengambil sesuatu dari kotak tertentu kita hanya cukup mengetahui nomor
kotaknya saja.
Gambar 15. Lemari dengan banyak kotak laci didalamnya
Pada variabel array, kita tidak hanya menentukan tipe datanya saja, tetapi juga
jumlah elemen dari array tersebut atau dalam hal ini adalah batas atas indeksnya.
B. Deklarasi ArraySama seperti variabel lain, array juga dideklarasikan di dalam bagian deklarasi
variabel. Bila akan didefinisikan sebagai tipe bentukan, maka array juga akan
dideklarasikan di bagian definisi tipe (di bawah kata kunci type). Dalam bahasa
Pascal, pendeklarasian array dilakukan dengan menggunakan kata kunci array dan
tipe data yang akan disimpan di dalamnya, selain itu juga harus disertai dengan
batas-batas indeksnya yang diapit oleh tanda bracket ( [ ] ). Berikut ini bentuk
umum pendeklarasian array.
NamaArray : array [Indeks Awal..IndeksAkhir] of tipe data;
68
[ALGORITMA DAN PEMROGRAMAN]
Sebagai contoh, apabila kita ingin mendeklarasikan array dengan nama A yang
berisi 10 buah elemen bertipe integer, maka kita harus mendeklarasikannya
dengan cara berikut.
Var
A : array [1 . . 10] of integer;
Pada kode tersebut, indeks array dimulai dari satu. Pada bahasa Pascal, indeks
array dapat dimulai dari bilangan berapapun. Selain itu, indeks array juga dapat
bertipe karakter maupun tipe enumerasi. Berikut ini contoh-contoh kode yang dapat
digunakan untuk mendeklarasikan 10 buah elemen array bertipe integer sebagai
pengganti kode di atas.
Var
A1 : array [0 . . 9] of integer;
A2 : array [5 . . 15] of integer;
A3 : array [’a’ . . ’j’] of integer;
A4 : arrat [’A’ . . ’J’] of integer;
Dalam bahasa Pascal, tersedia dua buah fungsi yang dapat digunakan untuk
mengambil indeks terendah dan tertinggi dari sebuah array, yaitu fungsi Low dan
High. Adapun parameter dari kedua fungsi tersebut adalah nama array yang akan
dicari indeksnya. Perhatikan contoh kode berikut:
Var
A: array [1 . . 100] of integer;
terendah, tertinggi : integer;
Begin
terendah := Low (A); {akan menghasilkan nilai 1}
tertinggi := High (A) {akan menghasilkan nilai 100}
. .
end.
69
[ALGORITMA DAN PEMROGRAMAN]
C. Menginisialisasi ArrayMenginisialisasi array adalah memberikan nilai awal untuk seluruh elemen array
atau sebagian saja. Inisialisasi array mungkin diperlukan, misalnya
“mengosongkan” elemen array sebelum dipakai untuk proses tertentu, tetapi hal ini
bukan keharusan, bergantung pada permasalahan yang akan dipecahkan.
Setelah mengetahui cara pendeklarasian array, selanjutnya kita harus mengetahui
bagaimana cara untuk memanipulasi array tersebut. Langkah pertama yang harus
dilakukan adalah mengisikan nilai ke dalam elemen-elemen array bersangkutan.
Bentuk umum untuk pengisian elemen array adalah sebagai berikut.
NamaArray [indeks] := nilai;
Untuk lebih memahaminya, coba perhatikan contoh kode di bawah ini.
Var
A: array [1..100] of integer;
Begin
A[1] :=1; {mengisi elemen pertama dengan nilai 1}
A[2] :=2; {mengisi elemen kedua dengan niali 2}
A[3] :=3; {mengisi elemen ketiga dengan niali 3}
....
A[100] :=100; {mengisi elemen keseratus dengan nilai 100}
end.
Kode tersebut akan melakukan pengisian 100 elemen array dengan nilai 1 sampai
100 sehingga kode tersebut akan lebih sederhana apabila dituliskan dengan
menggunakan struktur pengulangan seperti yang terlihat pada kode berikut.
Var
A: array [1..100] of integer;
i : integer;
70
[ALGORITMA DAN PEMROGRAMAN]
Begin
For i:= 1 to 100 do
Begin
A[1] := i;
end;
End.
D. Mengisi Elemen Array dengan PembacaanSelain dengan pengisian nilai secara langsung (seperti pada inisialisasi), elemen
array bisa diisi dengan cara pembacaan (misalnya dengan mengetikkan nilainya
dari keyboard). Dalam hal ini, elemen array dibaca satu per satu mulai untuk
elemen pertama sampai elemen ke-n.
Algoritma pembacaan elemen array adalah seperti dibawah ini :
Versi 1 : jika jumlah elemen efektif ditentukan diawal
Program baca_larik1
DEKLARASI
i : integer
ALGORITMA
for i ← 1 to 6 do
read(A[i])
endfor
Versi 2 : Jika jumlah elemen aktif baru diketahui di akhir pembacaan
Adalakanya jiumlah elemen aktif tifak ditentukan di awal, tetapi baru diketahui pada
akhir pembacaan.
Program baca_larik2
DEKLARASI
jawab : char
71
[ALGORITMA DAN PEMROGRAMAN]
ALGORITMA
n ← 0
repeat
n ← n + 1
read(A[n])
write(‘Lagi ? (y/t)’)
read(jawab)
until jawab = ‘t’
Jika jawabannya ‘y’ maka pembacaan dilanjutkan, jika t maka proses pembacaan
dihentikan. Jumlah elemen yang dibaca dicatat dalam peubah n.
E. Mencetak Elemen ArrayIsi elemen array dicetak ke piranti dengan pernyataan write. Dalam hal ini, elemen
larik dicetak satu persatu mulai untuk elemen pertama sampai elemen ke-n.
Algoritma pencetakan emelen-elemen array dinyatakan seperti pada contoh
dibawah ini :
program cetak_larik
DEKLARASI
i : integer
ALGORITMA
For i ← 1 to 10 do
Write(A[i])
Endfor
F. Mengapa Menggunakan ArrayBagi seorang pemula, mungkin akan mucul pertanyaan mengapa kita perlu
mendeklarasikan array? Untuk menjawab pertanyaan tersebut, coba perhatikan
contoh kasus berikut.
72
[ALGORITMA DAN PEMROGRAMAN]
Apabila kita akan membuat program untuk menyimpan sekumpulan data, misalnya
data-data hasil penelitian yang berupa bilangan, dimana jumlah dari data tersebut
puluhan, ratusan atau bahkan ribuan, apakah akan menggunakan variabel
sebanyak data yang ada? Jawabannya tentu tidak, karena hal tersebut merupakan
hal yang sangat tidak efisien. Sebagai contoh, asumsikan bahwa banyak data
tersebut.
Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real;
Begin
Writeln(’masukkan data ke-1 : ’); readln(n1);
Writeln(’masukkan data ke-2 : ’); readln(n2);
Writeln(’masukkan data ke-3 : ’); readln(n3);
Writeln(’masukkan data ke-4 : ’); readln(n4);
Writeln(’masukkan data ke-5 : ’); readln(n5);
Writeln(’masukkan data ke-6 : ’); readln(n6);
Writeln(’masukkan data ke-7 : ’); readln(n7);
Writeln(’masukkan data ke-8 : ’); readln(n8);
Writeln(’masukkan data ke-9 : ’); readln(n9);
Writeln(’masukkan data ke-10 : ’); readln(n10);
End.
Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program di atas memang
masih pendek karena datanya hanya 10, bagaimana bila ratusan ata bahkan
ribuan?
Untuk mengatasi masalah ini, seharusnya kita menggunakan array untuk
menyimpan data-data tersebut sehingga program akan jauh lebih sederhana dan
mudah dalam pengerjaannya. Berikut ini perbaikan program di atas apabila kita
menampung data-datanya ke dalam sebuah array.
Const max = 10;
73
[ALGORITMA DAN PEMROGRAMAN]
Var
n : array [1 . . max] of real;
i : integer;
begin
for i:= 1 to max do
writeln(’Masukkan data ke-’, i,’ : ’); readln(n[i]);
end.
Apabila ternyata data berjumlah 100 atau 1000, maka kita hanya perlu mengganti
nilai dari konstanta max di atas dengan nilai yang sesuai. Alasan seperti inilah yang
menyebabkan kita perlu untuk menggunakan array.
G. Pencarian Data Dalam ArraySalah satu permasalahan yang sering dijumpai dalam array adalah bagaimana
mencari elemen tertentu dari array. Misalnya pada kasus loker pada Gambar 14 di
atas tersedia 100 kotak. Kemudian kita diminta untuk mencari nomor kotak
keberapa yang dimiliki oleh seorang siswa bernama “Rudi”. Contoh yang lain,
misalkan ada banyak siswa dalam satu sekolah dan kita diminta mencari data
seorang siswa dengan nama tertentu atau alamat tertentu.
Perhatikan contoh berikut.
Gambar 16. Contoh Pencarian Array
74
[ALGORITMA DAN PEMROGRAMAN]
Pada contoh ini kita diminta mencari elemen yang berisi angka 12 dari sekumpulan
elemen dalam array. Ada 6 elemen pada array tersebut. Menurut kalian
bagaimanakah algoritma penyelesaiannya?
Cara yang paling umum dan paling mudah dilakukan adalah dengan cara pencarian
berurutan (linear search). Pada masa lalu cara ini dianggap tidak efisien karena
membutuhkan waktu lama. Namun dengan perkembangan komputer yang sangat
cepat, waktu eksekusi algoritma ini tidak terlalu dipermasalahkan. Cara ini
dilakukan dengan cara membandingkan isi dari elemen dengan apa yang kita cari.
Satu per satu dimulai dari elemen yang paling awal.
Apabila kita terapkan pada Contoh yang ada pada gambar 16, maka eksekusi
program akan berlangsung berurutan sebagai berikut:
Tetapkan bilangan yang ingin kita cari (yaitu 12)
Ambil elemen paling awal (yaitu A[0]), bandingkan isi elemen tersebut
(yaitu 23) dengan bilangan yang kita cari. Jika sama maka stop.
Jika tidak maka lanjutkan dengan elemen berikutnya (yaitu
A[1]),bandingkan isi elemen tersebut dengan bilangan yang kita cari. Jika
sama maka stop.
Jika tidak maka lanjutkan dengan elemen berikutnya. Dan seterusnya
sampai dijumpai elemen yang berisi sama dengan bilangan yang kita cari.
Contoh pada gambar 16 akan memberikan hasil elemen A[3] yang memiliki isi 12.
Apabila digambarkan dalam bentuk flowchart maka akan tampak seperti pada
Gambar dibawah ini.
75
[ALGORITMA DAN PEMROGRAMAN]
Gambar 17. Flowchar Contoh Pencarian
Pada flowchart di Gambar 16, kita menggunakan pengulangan model While.
Kondisi yang harus dipenuhi disini ada dua, yaitu I < N dan Bil[I] <> A. Arti dari
kondisi ini adalah jika nilai indeks I kurang dari batas atas indeks dan isi dari Bil[I]
tidak sama dengan bilangan yang kita cari, maka pencarian akan diteruskan pada
indeks yang lebih tinggi. Selama kondisi ini dipenuhi maka pencarian akan terus
dilakukan. Perhatikan bahwa di sini kita menggunakan “dan” yang artinya kedua
kondisi harus dipenuhi agar dianggap benar. Pencarian akan hanya akan berhenti
jika salah satu kondisi atau kedua kondisi tidak dipenuhi lagi. Sehingga misalnya
Bil[I] mempunyai isi yang sama dengan A maka pencarian akan dihentikan karena
kondisi pada While sudah tidak dipenuhi lagi.
76
[ALGORITMA DAN PEMROGRAMAN]
H. Pengurutan Data ArrayPermasalahan lain dalam array yang juga banyak digunakan adalah bagaimana
mengurutkan elemen-elemen dari variabel array tersebut. Perhatikan kembali
Contoh 5.24. Pada contoh tersebut terlihat bahwa isi elemen-elemen dari array
tidak dalam posisi berurutan. Bagaimanakah caranya agar isi elemenelemen
tersebut terurut dari besar ke kecil atau sebaliknya?
Ada beberapa algoritma yang dapat digunakan untuk mengurutkan sekumpulan
bilangan, antara lain bubble sort, selection sort, shell sort, quick sort, dan lain-lain.
Pada buku ini kita akan membahas satu algoritma yaitu bubble sort. Meskipun
kinerjanya tidak sebaik algoritma yang lain, algoritma ini mudah dimengerti dan
banyak digunakan. Perhatikan contoh berikut :
Contoh 1. Misalkan sebuah variabel array dengan nama Bil yang terdiri dari 5
elemen yang masing-masing berisi bilangan "5 1 4 2 8". Urutkan dari mulai nilai
terkecil sampai ke yang paling besar.
PenyelesaianKita akan menggunakan metode bubble sort untuk mengurutkan array ini. Bubble
sort dilakukan dengan cara membandingkan dua bilangan yang berurutan letaknya.
Jika urutan letaknya benar maka dilanjutkan dengan membandingkan dua bilangan
berikutnya. Jika tidak maka tukar letak dari dua bilangan tersebut.
Marilah kita terapkan algoritma ini.
- Perulangan Pertama (First Pass)
4 5 1 3 2 (cocok)
4 5 1 3 2 (tukar 5 dan 1) 4 1 5 3 2
4 1 5 3 2 (tukar 5 dan 3) 4 1 3 5 2
4 1 3 5 2 (tukar 5 dan 2) 4 1 3 2 5- Perulangan Kedua (Second Pass)
4 1 3 2 5 (tukar 4 dan 1) 1 4 3 2 5
1 4 3 2 5 (tukar 4 dan 3) 1 3 4 2 5
77
[ALGORITMA DAN PEMROGRAMAN]
1 3 4 2 5 (tukar 4 dan 2) 1 3 2 4 5
1 3 2 4 5 (cocok)
- Perulangan Ketiga (Third Pass)
1 3 2 4 5 (cocok)
1 3 2 4 5 (tukar 3 dan 2) 1 2 3 4 5
1 2 3 4 5 (cocok)
1 2 3 4 5 (cocok)
- Perulangan Keempat (Fourth Pass)
1 2 3 4 5 (cocok)
1 2 3 4 5 (cocok)
1 2 3 4 5 (cocok)
1 2 3 4 5 (cocok)
Pada waktu Perulangan Keempat, sudah tidak terjadi pertukaran lagi (semua sudah
cocok), maka sudah dapat dipastikan bahwa semua data sudah berada di lokasi
yang tepat.
Berikut adalah implementasi dari Algoritma Bubble Sort dengan memakai prosedur.
Parameter data berjenis referensi ke tipe data array of string:
PascalVersi 1 :procedure Bubble(var Arr: array of string);
var I: integer;
Ada_Tukar: boolean;
begin
repeat
Ada_Tukar:= false;
for I:= Low(Arr) to High(Arr) -1 do begin
78
[ALGORITMA DAN PEMROGRAMAN]
if Arr[I] > Arr[I+1] then begin
Tukar(Arr[I], Arr[I+1]);
Ada_Tukar:= true;
end;
end;
until Ada_Tukar = false;
end;
Versi 2 :Program Bubblesort_ascending;
uses crt;
const
maks = 50;
type
Larik = array[1..maks] of integer;
var
n,i,j : integer;
L: larik;
min : integer;
temp : integer;
{===============INPUT LARIK==================}
begin
writeln('Masukkan Jumlah data : '); readln(n);
for i:= 1 to n do
begin
writeln('Masukkan data ke-',i,' : ');read(L[i]);
end;
writeln('==================');
writeln('Data input nya adalah : ');
79
[ALGORITMA DAN PEMROGRAMAN]
for i:=1 to n do
write(L[i],' ');
{==========PROSES SORTING Bubble SORT ASCENDING============}
for i:=1 to n-1 do
begin
for j:= n downto i+1 do
begin
if L[j] > L[j-1] then
begin
Temp:=L[j];
L[j]:=L[j-1];
L[j-1]:=temp;
end;
end;
end;
{===============TAMPIL DATA=================}
writeln;
writeln('Data setelah Diurutkan dengan Bubble Sort
Ascending : ');
for i := 1 to n do
write(L[i],' ');
readln;
readln;
end.
80
[ALGORITMA DAN PEMROGRAMAN]
DAFTAR PUSTAKA
E-Learningista, 2007, “Modul Algoritma dan Pemrograman”,
http://202.91.15.14/upload/files/9520_Modul-4
, diakses tanggal 7 September 2015.
Furnawan, Hambali, “Modul Algoritma dan Pemrograman”, Jambi, STMIK Nurdin
Hamzah, 2015.
Munir, Rinaldi, “Algoritma dan Pemrograman Dalam Bahasa Pascal & C”, Bandung,
Penerbit Informatika, 2011.
Wikipedia, 2015, “Ayo Membuat Program Pascal / Algoritma Sorting Dasar”,
https://id.wikibooks.org/wiki/Ayo_Membuat_Program_Pascal/
Algoritma_Sorting_Dasar , diakses tanggal 7 September 2015.
81