Bab i Pendahuluan - Buku-font Size-10

116
Algoritma dan Pemrogram an 201 5 SMK Islam Al-Arief Rekayasa Perangakat Lunak (RPL)

description

cv

Transcript of Bab i Pendahuluan - Buku-font Size-10

Page 1: Bab i Pendahuluan - Buku-font Size-10

Algoritma dan Pemrograman

2015

SMK Islam Al-AriefRekayasa Perangakat Lunak (RPL)

Page 2: Bab i Pendahuluan - Buku-font Size-10

[ALGORITMA DAN PEMROGRAMAN]

Algoritma dan Pemrograman

SMK Islam Al-AriefRekayasa Perangkat Lunak

Page 3: Bab i Pendahuluan - Buku-font Size-10

[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

Page 4: Bab i Pendahuluan - Buku-font Size-10

[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

Page 5: Bab i Pendahuluan - Buku-font Size-10

[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

Page 6: Bab i Pendahuluan - Buku-font Size-10

[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

Page 7: Bab i Pendahuluan - Buku-font Size-10

[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

Page 8: Bab i Pendahuluan - Buku-font Size-10

[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

Page 9: Bab i Pendahuluan - Buku-font Size-10

[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

Page 10: Bab i Pendahuluan - Buku-font Size-10

[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

Page 11: Bab i Pendahuluan - Buku-font Size-10

[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

Page 12: Bab i Pendahuluan - Buku-font Size-10

[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

Page 13: Bab i Pendahuluan - Buku-font Size-10

[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

Page 14: Bab i Pendahuluan - Buku-font Size-10

[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

Page 15: Bab i Pendahuluan - Buku-font Size-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

Page 16: Bab i Pendahuluan - Buku-font Size-10

[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

Page 17: Bab i Pendahuluan - Buku-font Size-10

[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

Page 18: Bab i Pendahuluan - Buku-font Size-10

[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

Page 19: Bab i Pendahuluan - Buku-font Size-10

[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

Page 20: Bab i Pendahuluan - Buku-font Size-10

[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

Page 21: Bab i Pendahuluan - Buku-font Size-10

[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

Page 22: Bab i Pendahuluan - Buku-font Size-10

[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

Page 23: Bab i Pendahuluan - Buku-font Size-10

[ALGORITMA DAN PEMROGRAMAN]

Gambar 1. Simbol Standar Flowchar Program

19

Page 24: Bab i Pendahuluan - Buku-font Size-10

[ALGORITMA DAN PEMROGRAMAN]

Gambar 2. Simbol Standar Flowchar Program

Contoh flowchart program :

Gambar 3. Flowchart Algoritma hitung luas persegi panjang

20

Page 25: Bab i Pendahuluan - Buku-font Size-10

[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

Page 26: Bab i Pendahuluan - Buku-font Size-10

[ALGORITMA DAN PEMROGRAMAN]

Gambar 5. Simbol Flowchart Sistem

22

Page 27: Bab i Pendahuluan - Buku-font Size-10

[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

Page 28: Bab i Pendahuluan - Buku-font Size-10

[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

Page 29: Bab i Pendahuluan - Buku-font Size-10

[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

Page 30: Bab i Pendahuluan - Buku-font Size-10

[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

Page 31: Bab i Pendahuluan - Buku-font Size-10

[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

Page 32: Bab i Pendahuluan - Buku-font Size-10

[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

Page 33: Bab i Pendahuluan - Buku-font Size-10

[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

Page 34: Bab i Pendahuluan - Buku-font Size-10

[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

Page 35: Bab i Pendahuluan - Buku-font Size-10

[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

Page 36: Bab i Pendahuluan - Buku-font Size-10

[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

Page 37: Bab i Pendahuluan - Buku-font Size-10

[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

Page 38: Bab i Pendahuluan - Buku-font Size-10

[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

Page 39: Bab i Pendahuluan - Buku-font Size-10

[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

Page 40: Bab i Pendahuluan - Buku-font Size-10

[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

Page 41: Bab i Pendahuluan - Buku-font Size-10

[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

Page 42: Bab i Pendahuluan - Buku-font Size-10

[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

Page 43: Bab i Pendahuluan - Buku-font Size-10

[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

Page 44: Bab i Pendahuluan - Buku-font Size-10

[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

Page 45: Bab i Pendahuluan - Buku-font Size-10

[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

Page 46: Bab i Pendahuluan - Buku-font Size-10

[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

Page 47: Bab i Pendahuluan - Buku-font Size-10

[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

Page 48: Bab i Pendahuluan - Buku-font Size-10

[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

Page 49: Bab i Pendahuluan - Buku-font Size-10

[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

Page 50: Bab i Pendahuluan - Buku-font Size-10

[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

Page 51: Bab i Pendahuluan - Buku-font Size-10

[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

Page 52: Bab i Pendahuluan - Buku-font Size-10

[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

Page 53: Bab i Pendahuluan - Buku-font Size-10

[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

Page 54: Bab i Pendahuluan - Buku-font Size-10

[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

Page 55: Bab i Pendahuluan - Buku-font Size-10

[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

Page 56: Bab i Pendahuluan - Buku-font Size-10

[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

Page 57: Bab i Pendahuluan - Buku-font Size-10

[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

Page 58: Bab i Pendahuluan - Buku-font Size-10

[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

Page 59: Bab i Pendahuluan - Buku-font Size-10

[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

Page 60: Bab i Pendahuluan - Buku-font Size-10

[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

Page 61: Bab i Pendahuluan - Buku-font Size-10

[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

Page 62: Bab i Pendahuluan - Buku-font Size-10

[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

Page 63: Bab i Pendahuluan - Buku-font Size-10

[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

Page 64: Bab i Pendahuluan - Buku-font Size-10

[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

Page 65: Bab i Pendahuluan - Buku-font Size-10

[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

Page 66: Bab i Pendahuluan - Buku-font Size-10

[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

Page 67: Bab i Pendahuluan - Buku-font Size-10

[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

Page 68: Bab i Pendahuluan - Buku-font Size-10

[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

Page 69: Bab i Pendahuluan - Buku-font Size-10

[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

Page 70: Bab i Pendahuluan - Buku-font Size-10

[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

Page 71: Bab i Pendahuluan - Buku-font Size-10

[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

Page 72: Bab i Pendahuluan - Buku-font Size-10

[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

Page 73: Bab i Pendahuluan - Buku-font Size-10

[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

Page 74: Bab i Pendahuluan - Buku-font Size-10

[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

Page 75: Bab i Pendahuluan - Buku-font Size-10

[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

Page 76: Bab i Pendahuluan - Buku-font Size-10

[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

Page 77: Bab i Pendahuluan - Buku-font Size-10

[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

Page 78: Bab i Pendahuluan - Buku-font Size-10

[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

Page 79: Bab i Pendahuluan - Buku-font Size-10

[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

Page 80: Bab i Pendahuluan - Buku-font Size-10

[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

Page 81: Bab i Pendahuluan - Buku-font Size-10

[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

Page 82: Bab i Pendahuluan - Buku-font Size-10

[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

Page 83: Bab i Pendahuluan - Buku-font Size-10

[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

Page 84: Bab i Pendahuluan - Buku-font Size-10

[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

Page 85: Bab i Pendahuluan - Buku-font Size-10

[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