19012031 Algoritma Dasar

25
BAHAN AJAR ke 2 DASAR DASAR PEMROGRAMAN Disusun Oleh: SUCARMAN [email protected] SEKOLAH MENENGAH KEJURUAN (SMK) PELITA KARYA Jln.Raya Borbok Desa Cicau Kecamatan Cikarang Pusat Kabupaten Bekasi Tahun 2009 STANDAR KOMPETENSI: MENGGUNAKAN ALGORITMA PEMROGRAMAN TINGKAT DASAR KOMPETENSI DASAR: MEMBUAT LOGIKA ALUR PEMOGRAMAN

Transcript of 19012031 Algoritma Dasar

Page 1: 19012031 Algoritma Dasar

BAHAN AJAR ke 2

DASAR DASAR PEMROGRAMAN

Disusun Oleh:

SUCARMAN

[email protected]

SEKOLAH MENENGAH KEJURUAN (SMK)

PELITA KARYA Jln.Raya Borbok Desa Cicau Kecamatan Cikarang Pusat Kabupaten Bekasi

Tahun 2009

STANDAR KOMPETENSI:

MENGGUNAKAN ALGORITMA PEMROGRAMAN TINGKAT DASAR

KOMPETENSI DASAR:

MEMBUAT LOGIKA ALUR PEMOGRAMAN

Page 2: 19012031 Algoritma Dasar

2

KATA PENGANTAR

Tulisan kali ini benar-benar diperuntukkan bagi pemula yang ingin belajar RPL di

Sekolah Menengah Kejuruan. Mengingat Kompetensi Dasar yang diharapkan oleh Pemerintah,

maka tulisan ini dicobakan dengan “bahasa apa adanya” dengan harapan dapat dengan mudah

diserap oleh siswa. Ini juga merupakan kelanjutan dari tulisan yang terdahulu yang sedikit

mengulas tentang Variabel, Konstanta dan Tipe Data.

Masih banyak kekurangannya, sehingga perlu penambalan disana-sini oleh para

Guru/Pembimbingnya, sehingga Pondasi Siswa untuk mengenal dan belajar pemrograman dapat

dibangun dan dibentuk dengan benar.

Kritik dan saran senantiasa dinanti di [email protected], selain itu jika ada

kekurangan dan atau kesalahan yang fatal dalam tulisan ini, agar tidak sungkan-sungkan

menegur penulis. Perbaikan adalah sebuah kebahagian buat penulis dan keluarga.

Selamat berkarya

Penulis

Page 3: 19012031 Algoritma Dasar

3

STANDAR KOMPETENSI:

Menggunakan Algoritma Pemrograman Tingkat Dasar

KOMPETENSI DASAR:

Membuat Logika Alur Pemograman

INDIKATOR:

• Siswa dapat mendeskripsikan , memahami Algoritma.

• Siswa mampu membuat Algoritma dengan skema program Sekuensial .

• Siswa mampu membuat Algoritma dengan skema program Pencabangan.

• Siswa mampu membuat Algoritma dengan skema program Pengulangan.

BAHAN AJAR:

ALGORITMA

Ditemukan dan dipopulerkan oleh seorang Ilmuwan Muslim yang bernama Muhammad

ibnu Musa Al-Khwarizmi. Beliau adalah ilmuwan besar yang karya-karyanya banyak menjadi

dasar perkembangan ilmu modern, antara lain dalam bidang Matematika, Astronomi, Astrologi,

Geografi dan banyak cabang ilmu lainnya. Al-khwarizmi kemudian berubah menjadi Algorism,

kemudian berubah lagi menjadi Algorithm dalam Bahasa Inggris dan terjemahkan secara bebas

kedalam Bahasa Indonesia menjadi Algoritma.

Pengertian Algoritma sendiri adalah urutan langkah-langkah logis penyelesaian masalah

yang disusun secara sistematis.1 Sedangkan dalam Kamus Besar Bahasa Indonesia (KBBI)

terbitan Balai Pustaka (1988);

Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah

Dari dua definisi tersebut diatas maka kata kuncinya adalah “Urutan” dan “logis”, sehingga

selain logis Algoritma juga mengharuskan agar langkah langkah tersebut berurutan secara

sistematis, agar hasil akhirnya sesuai dengan yang diharapkan.

1 Aunur R. Muryanto, Rekayasa Perangkat Lunak Jilid 1 untuk SMK, Jakarta 2008: Direktorat Pembinaan Sekolah

Kejuruan, Direktorat Jenderal Manajemen Pendidikan Dasar dan Menengah, Departemen Pendidikan Nasional,

ha.l101

Page 4: 19012031 Algoritma Dasar

4

Menurut Donald E.Knuth dalam bukunya yang berjudul The Art of Komputer

Programming, Algoritma harus mempunyai lima ciri penting;

1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. Program yang

tidak berhenti berarti mengandung algoritma yang salah.

2. Setiap langkah harus mempunyai langkah yang tepat dan tidak mempunyai tafsiran

ganda (Ambigu)

3. Algoritma memiliki masukan nol atau lebih sebelum algoritma itu sendiri bekerja (input)

4. Algoritma memiliki keluaran nol atau lebih sebagai output yang berhubungan dengan

input. Dan keluaran tersebut harus benar adanya, artinya harus sesuai dengan yang kita

harapkan.

5. Algoritma harus efektif, artinya setiap langkah harus sederhana sehingga dapat

dikerjakan dalam sejumlah waktu yang masuk akal.

Algoritma dapat diekspresikan melalui tiga cara, yakni;

1. Structured Indonesian (SI), yakni penulisan urutan langkah yang dilakukan oleh

programmer sesuai dengan bahasa sehari-hari (dalam hal ini Bahasa Indonesia). Sebagai

contoh, Algoritma untuk mencari luas segi tiga dalam Structured Indonesian adalah;

1. Mulai

2. Baca data Alas dan tinggi

3. Periksa apakah Alas dan tinggi mempunyai nilai lebih

besar dari 0 (nol).Jika ya, maka lanjutkan ke langkah

ke 4, jika tidak maka berhenti.

4. Luas adalah Alas kali Tinggi kali 0,5.

5. Tampilkan luas.

2. Pseudocode, adalah penulisan algoritma yang menyerupai kode program. Pseudo sendiri

berarti imitasi atau tiruan atau menyerupai, sedangkan code menunjuk pada kode program.

Pseudocode didasarkan kepada bahasa pemrograman yang sesungguhnya seperti BASIC,

PASCAL atau FORTRAN. Penulisan Pseudocode masih tetap bersifat umum, artinya boleh

ditulis dengan menyerupai bahasa pemrograman tersebut. Latar belakang programmer sangat

berpengaruh dalam menuliskan pseudocode. Programer yang familiar dengan Bahasa BASIC

Page 5: 19012031 Algoritma Dasar

5

akan lebih mudah dan senang menuliskan pseudocode dalam Bahasa BASIC, begitu juga yang

berpengalaman dengan Bahasa Pascal tentunya akan lebih memudahkan jika pseudocode-nya

mirip bahasa Pascal. Pendekatan yang terbaik disesuaikan kepada kemampuan siswa dan

Pemrograman apa yang akan dipelajari oleh Siswa itu sendiri.

Berikut ini contoh Pseudocode algoritma menghitung Luas Segitiga;

1. START

2. READ alas, tinggi

3. IF alas < 0 or tinggi < 0 GOTO 6

4. luas = alas * tinggi * 0,5

5. PRINT luas

6. END

Algoritma diatas sangat mirip dengan bahasa BASIC dan yang satu rumpun dengan

Bahasa BASIC ( Penulis menggunakan Liberty Basic, Gold License). Dengan adanya

pseudocode akan memudahkan proses penterjemahan kedalam bahasa pemrograman.

3. Flow Chart, adalah bagan alir yang menggambarkan urutan langkah/aliran program secara

logika. Flow Chart banyak dipakai untuk menggambarkan algoritma dengan bantuan symbol

symbol tertentu yang telah disepakati secara internasional. Dengan adanya symbol/lambang

lambang tersebut dan ditambah notasi penjelasannya, maka logika pemrograman dapat

dimengerti dengan mudah. Bagi yang sudah familiar dengan Microsoft Word, symbol-symbol

Flow Chart dapat di tampilkan dengan langkah Insert-Shapes-Flowchart yang akan

menampilkan lambang sebagai berikut;

Lambang-lambang tersebut mempunyai makna/menggambarkan proses dan atau peripheral

tertentu dalam pembuatan algoritma dengan Diagram Alir /Flow Chart.

Page 6: 19012031 Algoritma Dasar

6

Start

Read

Alas,Tinggi

Alas>0?

Tinggi>0?

Luas=0,5*Alas*Tinggi

End

Print Luas

Mulai

Baca Data

Apakah

Data valid?

Hitung Luas Segitiga

Selesai

Tampilkan

Hasil Luas

Sebagai ilustrasi berikut ini contoh Flowchart Menghitung Luas Segitiga;

Bagan Alir Logika Program Bagan Alir Program Komputer terinci

Dari ketiga cara penulisan Algoritma (SI, Psedocode dan Flowchart) kesemuanya itu

bersifat independent terhadap semua bahasa pemrograman, artinya Algoritma yang kita buat

dapat dipakai oleh setiap bahasa Pemrograman. Hanya mungkin saja dari cara penulisan pada

“program komputernya” (syntax) yang sedikit berbeda dan keyword (kata kunci) untuk

melakukan perintah.

Penulisan “Print” dalam Bahasa BASIC , jika dalam Bahasa PASCAL diekspresikan

dengan “Write” atau Writeln. Algoritma dapat diibaratkan Resep Masakan yang ditulis dalam

berbagai bahasa, dan orang akan bisa membuatnya selama orang tersebut memahami bahasa

yang dipakai untuk menulis resep masakan tersebut.

Tidak Tidak

Ya Ya

Page 7: 19012031 Algoritma Dasar

7

Contoh-contoh Algoritma dapat dikembangkan dengan memperhatikan lingkungan dan

kehidupan siswa itu sendiri.

Struktur Algoritma

Struktur dasar algoritma terbentuk dari tiga struktur dasar, yakni struktur berurutan,

struktur percabangan/pemilihan/keputusan dan struktur pengulangan. Dalam bahasa

pemrograman ketiga dasar pembentuk sebuah algoritma tersebut dikenal dengan sequencing,

branching dan looping. Pada dasarnya hampir semua algoritma merupakan gabungan dari

struktur tersebut.

Algoritma Berurutan (Sequencing)

Struktur berurutan ini dapat dianalogikan dengan kita berjalan lurus atau kendaraan yang

meluncur dijalan yang lurus. Langkah demi langkah atau kilometer demi kilometer kita harus

melaluinya sehingga tahapan demi tahapan harus dilalui sesuai dengan urutannya. Dapat juga

kita analogikan dengan mencatat mata pelajaran, kata demi kata dan kalimat demi kalimat kita

menyalinnya secara berurutan sampai selesai.

Struktur berurutan bisa terdiri dari satu dan atau beberapa instruksi. Intruksi intruksi

tersebut akan dieksekusi oleh komputer sesuai dengan urutannya. Oleh sebab itu maka

pentingnya sistematika yang tepat dan benar agar algoritma tersebut menghasilkan “output”yang

kita harapkan. Menurut Goldshlager dan A. Lister, struktur berurutan mengikuti ketentuan

sebagai berikut;

• Tiap instruksi dikerjakan satu demi satu.

• Tiap instruksi hanya dilakukan/dilaksanakan tepat satu kali, tidak ada pengulangan

• Urutan pelaksanaan yang dilakukan oleh komputer(pemroses) sama dengan urutan yang

ditulis dalam algoritmanya.

• Akhir dari instruksi terakhir, merupakan akhir algoritma.

Page 8: 19012031 Algoritma Dasar

8

Sebagai ilustrasi dapat dicontohkan dalam pelajaran Matematika/Geometri tentang theorem

phytagoras yang kita umpamakan akan mencari panjang sisimiring/hypotenusa, jika sisi

tegak dan alas sebuah segi tiga siku-siku telah diketahui;

Ilustrasi dan Flowchart mencari panjang sisi miring

Dalam bahasa pemrograman BASIC (Liberty Basic atau Turbo Basic) Algoritma

tersebut dapat ditulis sebagai berikut;

'Mencari Panjang Sisi Miring

cls

AB=3

AC=4

BC=SQR(AB^2+AC^2)

Print "Panjang sisi miringnya adalah = ";BC

end

Jika program itu ditulis dengan benar kemudian dijalankan, akan menghasilkan;

Panjang sisi miringnya adalah = 5

Dipersilahkan dikembangkan lebih lanjut dengan mengisikan panjang AB dan AC nya

melalui perintah “INPUT”, atau untuk materi pembelajaran lainnya semisal mencari isi

kubus, luas jajaran genjang, atau volume kerucut.

Mulai

Print BC

BC=SQR(AB^2+AC^2)

Read AB,

AC

Selesai

Page 9: 19012031 Algoritma Dasar

9

Algoritma Pencabangan (Branching)

Pada dasarnya pemrograman komputer adalah untuk keperluan manusia dalam

memenuhi kebutuhan dan keinginan hidupnya. Oleh sebab itu pemrograman komputer identik

dengan penyelesaian pekerjaan manuasia keseharian. Kehidupan kita tidak selamanya berjalan

lurus, terkadang harus melakukan pilihan dari beberapa keadaan, atau melakukan pengujian

kepada suatu kondisi agar kita dapat mengambil keputusan tentang jalan/arah mana yang akan

diambil. Dalam pemrograman kondisi seperti ini lajimnya disebut pencabangan/branching.

Dalam kondisi tertentu mungkin kita melakukan lompatan atau melewatkan beberapa instruksi,

dan program akan berjalan sesuai dengan kehendak kita jika kondisi memenuhi syarat yang kita

tetapkan.

Contoh:

“Syarat usia untuk ikut memilih dalam PEMILU adalah minimum 17 tahun. Jika

usianya kurang dari 17 tahun maka dia belum mempunyai hak pilih.”

Maka Algoritmanya dapat dibuat sebagai berikut;

Flowchart Penentuan Hak Pilih

MULAI

USIA ≥ 17

READ USIA

PRINT

“PUNYA HAK

PILIH”

PRINT

“TIDAK PUNYA

HAK PILIH”

SELESAI

TIDAK YA

Page 10: 19012031 Algoritma Dasar

10

Secara umum Algoritma tersebut sudah benar, namun pada kenyataannya ada

pengecualian bahwa walaupun usianya belum mencapai 17 tahun, asal saja sudah menikah maka

orang tersebut sudah punya hak pilih, sehingga Algoritmanya dapat diperbaiki menjadi;

Dari algoritma yang kedua, dapat dilihat adanya pengujian kedua tentang status orang.

Jika orang tersebut sudah menikah (pernah menikah) maka walaupun usianya kurang dari 17

tahun, maka dia sudah mempunyai hak pilih.

Dalam hal Algoritma yang kedua, jika ingin disederhanakan bentuknya maka dapat

dilakukan dengan melakukan pengujian sekaligus pada pencabangan pertama, yakni dengan

Operator Boolean “OR” seperti alur yang dicontohkan dibawah ini;

MULAI

USIA ≥ 17?

READ USIA,

STATUS

PRINT

“PUNYA HAK

PILIH”

PRINT

“TIDAK PUNYA

HAK PILIH”

SELESAI

TIDAK YA

STATUS=ME

NIKAH?

YA

TIDAK

Page 11: 19012031 Algoritma Dasar

11

Dalam Bahasa Pemrograman Liberty BASIC dapat dituliskan sebagai berikut:

‘ Penentuan Hak Pilih CLS INPUT “Masukan usia calon pemilih : “;Usia INPUT “Apakah sudah Menikah ? (Y/T) : “;Status$ Status$=UPPER$(Status$) ‘ baris ini hanya untuk mengkonversi ke huruf kapital

If Usia>=17 OR Status$=”Y” THEN PRINT PRINT “Sudah mempunyai hak pilih”

ELSE PRINT “Belum mempunyai hak pilih”

END IF END

Jika Program tersebut dijalankan maka hasil keluarannya akan tampak sebagai berikut;

Masukan usia calon pemilih : 15

Apakah sudah Menikah ? (Y/T) : y

Sudah mempunyai hak pilih

Untuk bahasa pemrograman yang lain , silahkan disesuaikan dengan ketentuan yang

berlaku pada bahasa pemrograman yang dikuasai oleh Siswa/Guru.

MULAI

USIA ≥ 17 OR

STATUS=”MENIK

AH”

READ USIA,

STATUS

PRINT

“PUNYA HAK

PILIH”

PRINT

“TIDAK PUNYA

HAK PILIH”

SELESAI

TIDAK YA

Page 12: 19012031 Algoritma Dasar

12

Dalam menterjemahkan sebuah algoritma pencabangan, kita bisa melakukan pendekatan

penyelesaian yang berbeda untuk kasus yang sama dan berbeda untuk kasus yang berlainan. Hal

ini tergantung sejauh mana kita mampu melakukan pendekatan yang paling efektif dan efisien.

Hal lain yang penting juga diperhatikan adalah bagaimana “orang lain” dapat dengan mudah

memahami jalan pemikiran kita (algoritmanya) dan mudah menggunakan aplikasi yang sudah

kita buat. Setiap bahasa pemrograman mempunyai beberapa ketentuan yang sedikit berbeda,

namun pada umumnya Statement untuk pencabangan sebagiannya adalah;

• IF test expression THEN expression(s)

• IF test expression THEN expression(s)1 ELSE expression(s)2

• IF test expression THEN

expression(s)1

END IF

• IF test expression THEN

expression(s)1

ELSE

expression(s)2

END IF

Cara lain untuk mengontrol alur program adalah penggunaan pernyataan

IF...THEN...ELSE. Pernyataan ini merupakan pengembangan dari bentuk IF….THEN. Salah

satu contoh dalam implementasinya adalah;

[ulangi]

input "Silahkan pilih mode, (B)iasa atau (A)hli?"; mode$

if len(mode$) = 0 then print "Keliru Input! Coba lagi!" : goto

[ulangi]

mode$ = left$(mode$, 1)

if instr("BbAa", mode$) = 0 then print " Keliru Input! Coba lagi!" :

goto [ulangi]

if instr("Bb", mode$) > 0 then print "Mode Biasa" : goto [main]

print "Mode Ahli"

[main]

print "Menu Pilihan Utama"

end

Perhatikan Ekspresi/pernyataan ini:

if instr("Bb", mode$) > 0 then print "Mode Biasa" : goto [main]

print "Mode Ahli"

Pernyataan tersebut dapat diringkas menjadi

if instr("Bb",mode$)> 0 then print "Mode Biasa " else print "Mode Ahli"

Page 13: 19012031 Algoritma Dasar

13

Beberapa bentuk penulisan yang diijinkan (dalam Liberty BASIC) adalah sebagai berikut;

if a < b then pernyataan1 else pernyataan2

if a < b then [label] else pernyataan if a < b then pernyataan else [label]

if a < b then pernyataan1 : pernyataan2 else pernyataan3 if a < b then pernyataan1 else pernyataan2 : pernyataan3 if a < b then pernyataan1 : goto [label] else pernyataan2 if a < b then gosub [label1] else gosub [label2]

IF...THEN...END IF adalah merupakan bentuk lain yang banyak digunakan dalam

pengambilan keputusan/pencabangan. Bentuk pernyataan seperti ini dikenal dengan “

conditional blocks”. Cara ini memungkinkan kita dapat mengontrol alur program dengan lebih

baik dan sistematis. Contoh penggunaannya;

if qtySubdirs = 0 then

print "None."

goto [noSubs]

end if

Keuntungan yang diperoleh dalam penggunaan Blok ini adalah kita dapat menuliskan

lebih banyak pernyataan/perintah yang bisa dilakukan sesuai dengan kondisi yang terjadi.

if qtySubdirs = 0 then

print "None."

else

print "Count of subdirectories: "; qtySubdirs

Pencabangan/Pengujian Kondisi bukan hanya untuk memilih satu dari dua

kemungkinan yang harus dipilih, melainkan juga bisa memilih satu dari beberapa

kemungkinan/keinginan dari hal yang kita harapkan. Pada prinsipnya setiap

pencabangan dan pengujian merupakan kondisi atau syarat agar akhir program yang

kita buat sesuai tujuan dan benar hasilnya:

Contoh pencabangan yang banyak, semisal kita memasuki sebuah restoran maka akan

disodorkan “daftar menu” yang tersedia di restoran tersebut.

Page 14: 19012031 Algoritma Dasar

14

Algoritma Pengulangan (Looping)

• Sebuah kendaraan sedang mengisi bahan bakar di sebuah Statsiun Pengisian

Bahan Bakar Umum (SPBU). Sang Sopir meminta agar agar kendaraannya diisi

bahan bakar sebanyak 100 liter. Petugas mengisikan bahan bakar kedalam tangki

kendaraan tidak sekaligus 100 liter, melainkan bertahap sesuai kapasitas aliran

selang pengisian bahan bakar. Dia akan melakukan pengisian secara terus

menerus sampai indikator menunjukkan angka 100. Dan akan berhenti jika telah

terpenuhi kondisi sesuai permintaan sang sopir.

• Seorang anak sedang menimba air dari sebuah sumur untuk mengisi ember

/jerigen air yang dibawanya dari rumah. Dia akan terus menimba sampai volume

air yang ada di ember tersebut penuh atau sesuai dengan kemampuan angkatnya.

Dari dua ilustrasi tersebut dapat kita simak, bahwa pengulangan akan terus terjadi sampai

dengan sebuah kondisi yang kita inginkan tercapai, dan pengulangan akan berakhir manakala

kondisi yang kita harapkan sudah tercapai.

Dalam pembuatan program komputer, kita kadang-kadang harus mengulang satu atau

beberapa perintah agar memperoleh hasil sesuai dengan yang kita inginkan. Salah satu kelebihan

komputer adalah mampu melakukan pengulangan sebanyak yang kita inginkan tanpa merasa

lelah dan bosan <walaupun sebenarnya terbatas juga>. Dalam contoh kedua, bisa saja anak

tersebut berhenti menimba air bukan karena embernya sudah penuh, melainkan kecapaian.

Tidak demikian halnya dengan computer, dia akan terus melakukan/mengeksekusi perintah

sampai dengan selesai.

Struktur pengulangan terdiri dari 2 bagian;

1. Kondisi Pengulangan, yaitu syarat yang harus dipenuhi untuk melaksanakan

pengulangan. Syarat ini biasanyanya dinyatakan dalam ekspresi Boolean yang

harus diuji apakah mempunyai nilai true (benar) atau false (salah).

2. Badan penglangan (loop body), yakni satu atau sekumpulan perintah yang harus

diulang.

Page 15: 19012031 Algoritma Dasar

15

Counter=

awal TO

akhir

Badan

Loop

Pernyataan

Berikutnya

Dalam pengulangan biasanya ada yang dikenal dengan inisialisasi dan terminasi.

Inisialisasi adalah memberikan nilai awal pada sebuah variabel (Counter SPBU di reset “0”),

sedangkan terminasi adalah nilai akhir sebagai tanda berakhirnya pengulangan .

Ada beberapa pernyataan yang dapat dilakukan untuk menyelesaikan pengulangan ini.

Pada pelaksanaannya pemakaian struktur pengulangan tergantung dari masalah yang harus

diselesaikan, dukungan bahasa pemrograman dan tehnik pendekatan dari programmer computer

itu sendiri. Seperti halnya juga dalam pencabangan, bentuk satu pengulangan dapat saja

menyelesaikan beberapa kasus yang berbeda. Namun ada juga bentuk pengulangan yang hanya

cocok untuk kasus tertentu saja. Pemilihan bentuk pengulangan yang tepat, dapat meningkatkan

kinerja dan efisiensi sebuah program computer.

Struktur pengulangan dengan FOR…..NEXT

Bentuk pengulangan seperti ini merupakan tehnik pengulangan yang paling tua dalam

bahasa pemrograman2. Hampir semua bahasa pemrograman mendukung tehnik pengulangan

FOR….NEXT ini, kalaupun ada perbedaan paling dalam cara penulisannya saja (syntax).

Bentuk umum dari FOR…NEXT adalah;

FOR variabel=inisialisasi TO terminasi STEP aturan

Jika STEP tidak didefinisikan maka nilai variabel akan bertambah satu, namun jika ingin

melakukan pencacahan (counter) dengan bilangan negative, maka

STEP harus disertakan. Berikut ini contoh potongan algoritma

For…Next dalam bentuk Flowchart;

Dalam pelaksanaan/eksekusi pengulangan FOR…NEXT urutan

langkahnya adalah sebagai berikut;

1. Menetapkan nilai counter sama dengan nilai awal

(inisialisasi)

2. Melakukan pengujian apakah bilai awal lebih besar dari

nilai akhir, jika tidak maka mengerjakan perintah yang ada

pada badan loop. Jika ya maka keluar dari Program

3. Menaikkan/menurunkan nilai counter sesuai aturan yang

kita tetapkan.

4. Kembali ke urutan nomor 2.

2 Ibid, hal 114

Page 16: 19012031 Algoritma Dasar

16

Untuk membantu lebih memahami tehnik pengulangan dengan FOR…NEXT, berikut ini kita

contohkan ;

“Sebuah himpunan A mempunyai anggota bilangan bulat ganjil positif tidak lebih besar dari

19. Buatlah Algoritma dalam bentuk Flowchart.”

Penyelesaian:

Langkah pertama adalah menetapkan variabel A dengan type data integer dan sebagai nilai awal

kita inisialisasikan dengan A=1 sedangkan nilai terminasinya adalah 19. Karena A adalah

himpunan bilangan bulat ganjil positif, maka kita tahu bahwa STEP nya adalah = 2. Dua inilah

yang akan menjadi increment (penambahan) untuk nilai A berikutnya.

FLOWCHART:

Tanpa menggunakan For…Next Dengan menggunakan For…Next

Cobalah perhatikan kedua bentuk algoritma tersebut, amati persamaan dan perbedaannya serta

silahkan menentukan mana yang paling efektif alurnya. Semua itu adalah sangat tergantung dari

START

A=1

PRINT A

A= A+2

A≥19 ?

END

START

PRINT A

END

A=1 to 19

Step 2

Page 17: 19012031 Algoritma Dasar

17

cara kita melakukan pendekatan terhadap persoalan yang ingin kita hadapi, dan apa yang akan

dan mampu kita lakukan untuk menyelesaikannya dengan benar.

Untuk lebih memperjelas berikut contoh progam dari kedua algoritma tersebut diatas;

Tanpa memakai FOR…NEXT

' Himpunan Bilangan bulat ganjil positif

A=1

[ulangi]

PRINT space$(2);A;

A=A+2

IF A<=19 goto [ulangi]

END

Dengan menggunakan FOR…NEXT

' Himpunan Bilangan bulat ganjil positif

FOR A=1 TO 19 STEP 2

PRINT space$(2);A;

NEXT A

END

Kedua program tersebut mempunyai keluaran yang sama yakni mencetak anggota himpunan

A(1,3,5,…,….,19).

1 3 5 7 9 11 13 15 17 19

Pengulangan Bersarang (Nested Loop)

Dalam pemrograman terkadang diperlukan pengulangan didalam pengulangan.

Pengulangan demikian dikenal dengan pengulangan bersarang (nested loop). Seperti ilustrasi

pada awal materi ini. Jika si anak disuruh mengisi bak air sampai penuh dengan cara mengambil

air dari sumur depan halaman rumah ember per ember, maka proses pengisian bak air tersebut

merupakan loop utama, sedangkan menimba air dari sumur ke ember hingga ember tersebut

penuh adalah loop didalam loop. Dari sini dapat tergambarkan bahwa looping terdalam

diselesaikan terlebih dahulu baru kemudian menyelesaikan loop luar. Pelaksanaan loop dalam

akan berulang terus hingga akhirnya loop luarnya selesai.

Page 18: 19012031 Algoritma Dasar

18

Untuk lebih jelasnya mari kita buat latihan untuk membuat sebuat tabel kebenaran

(Truste Table) dari sebuah gerbang logika dengan operasi AND, OR, dan XOR dari dua gerbang

logika.

“Buatlah Tabel kebenaran dari 2 gerbang logika A dan B. C adalah A AND B, D

adalah A OR B, sedangkan E adalah C XOR D”

Penyelesaian:

Karena Logika merupakan bilangan Binner (0 dan 1) maka semua gerbang mempunyai

inisialisasi 0 dan terminasi 1. Bisa juga kita tetapkan inisialisasinya 1 dengan terminasi 0 dengan

syarat STEP-nya harus kita definisikan -1. Loop A ditetapkan sebagai outer loop (pengulangan

luar) dan Loop B menjadi inner loop (loop dalam). Semua perintah operasi Boolean (AND, OR

dan XOR harus ditempatkan di body loop dalam.

Coba perhatikan algoritma dibawah ini, perhatikan perbedaannya:

FLOWCHART NAIK FLOWCHART TURUN

START

B=0 to 1

A=0 to 1

C= A AND B

D= A OR B

E= C XOR D

PRINT A,B,C,D,E

END

START

B=1 to 0

STEP -1

A=1 to 0

STEP -1

C= A AND B

D= A OR B

E= C XOR D

PRINT A,B,C,D,E

END

Page 19: 19012031 Algoritma Dasar

19

Sedangkan listing program dan hasil keluarannya adalah sebagai berikut;

UNTUK FLOWCHART NAIK

'Tabel Kebenaran PRINT "=============================================================" PRINT "A B C(A AND B) D(A OR B) E(C XOR D)" PRINT "-------------------------------------------------------------"

'ketiga baris diatas untuk memudahkan membaca hasilnya 'badan programnya adalah: FOR A=0 to 1 FOR B=0 to 1 C= A AND B

D= A OR B E= C XOR D

PRINT A,B,C,D,E NEXT ' untuk menutup loop B NEXT 'untuk menutup loop A PRINT "=============================================================" END

Hasil keluarannya:

============================================================= A B C(A AND B) D(A OR B) E(C XOR D)

------------------------------------------------------------- 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0

=============================================================

UNTUK FLOWCHART TURUN

'Tabel Kebenaran PRINT "============================================================="

PRINT "A B C(A AND B) D(A OR B) E(C XOR D)" PRINT "-------------------------------------------------------------" 'ketiga baris diatas untuk memudahkan membaca hasilnya 'badan programnya adalah: FOR A=1 to 0 step -1 FOR B=1 to 0 step -1 C= A AND B D= A OR B

E= C XOR D PRINT A,B,C,D,E

NEXT ' untuk menutup loop B NEXT 'untuk menutup loop A PRINT "=============================================================" END

Page 20: 19012031 Algoritma Dasar

20

Hasil Keluarannya:

============================================================= A B C(A AND B) D(A OR B) E(C XOR D)

------------------------------------------------------------- 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 =============================================================

Nah dengan gambaran, contoh serta hasil keluaran program diatas, kita bisa faham

bagaimana pengulangan bersarang tersebut bekerja.

Untuk latihan silahkan dicoba memodifikasi program diatas dengan variasi berbeda,

misalnya For A=0 to 1 dipasangkan dengan For B=1 to 0 step -1 dan sebaliknya, sehingga

mendapat gambaran yang lebih jelas lagi tentang urutan kerja dari “Nested Loop”.

Dengan menambah loop lain didalamnya maka membuat “Tabel Kebenaran” untuk 3

dan 5 bahkan….10 gerbang logikapun sangat mudah, bukan?

Struktur pengulangan dengan WHILE….WEND

Perintah lain untuk pengulangan adalah pernyataan WHILE…WEND. Jika dalam

FOR…NEXT pengulanganya sudah diketahui karena kita tentukan nilai awal dan nilai akhirnya,

maka dalam WHILE…WEND kita tidak mengetahui berapa kali pengulangan, karena program

akan terus melakukan looping selama kondisi WHILE nya

terpenuhi.

Seperti halnya FOR …NEXT, WHILE..WEND juga

didukung oleh hampir semua bahasa Pemrograman, hanya saja

cara penulisannya (syntax) yang berbeda.

Selain kondisi yang disyaratkan, bentuk pengulangan

seperti ini juga diperlukan inisialisasi nilai variabel terlebih

dahulu. Jadi kalau dalam For…Next kita batasi pengulangannya

dengan nilai akhir, maka dalam While…Wend kita kendalikan

pengulangannya dengan “Kondisi” yang kita buat. Loop akan

berakhir (Program keluar dari Loop) manakala kondisi yang kita

persayaratkan sudah tidak terpenuhi.

Berikut ini contoh Algoritma dimana kita meminta seseorang

untuk menuliskan umurnya, selama orang tersebut belum

memasukkan umurnya dengan benar, maka program akan terus

Badan

Loop

Pernyataan

Berikutnya

Kondisi

Page 21: 19012031 Algoritma Dasar

21

berjalan hingga teman kita memasukkan angka yang mengakibatkan kondisi tidak lagi

terpenuhi, sehingga Loop berakhir.

Dalam algoritma disamping jelas terlihat bahwa

kondisi yang kita tentukan adalah Usia≤0, jadi selama

teman kita melakukan pengisian usianya = 0 maka loop

akan terus berjalan. Ketika Usia>0 maka loop akan

berakhir dan akan melakukan perintah berikutnya berupa

Print Usia.

Sebagai inisialisasi variabel usia maka input dari

pengguna (dalam hal ini teman kita) merupakan

inisialisasi variabel agar loop bisa berjalan, sedangkan

pengujian usia ≤ 0 merupakan kondisi yang kita tetapkan

agar program melakukan pengulangan, sampai akhirnya

teman kita mengisi umurnya dengan nilai yang lebih besar

dari 0 (nol)

Berikut Contoh Programnya;

' ulangi sampai jawaban sesuai dengan yang diminta while val(usia$) <= 0 input "Berapakah umur anda?"; usia$ if val(usia$) <= 0 then print "Salah Jawaban.Cobalagi!" Print

wend PRINT "Usia anda adalah "; val(usia$);"

tahun." End

Coba simak dan pelajari keluarannya berikut ini

Berapakah umur anda?-2 Salah Jawaban.Cobalagi! Berapakah umur anda?-5 Salah Jawaban.Cobalagi! Berapakah umur anda?0 Salah Jawaban.Cobalagi!

Berapakah umur anda?AKU Salah Jawaban.Cobalagi! Berapakah umur anda?25 Usia anda adalah 25 tahun

Dengan meperhatikan Algoritma, Program dan Keluarannya kita akan tahu lebih jelas tentang

jalannya sebuah looping dengan pernyataan WHILE…WEND.

Start

Read usia

Usia≤0 ?

Print “Keliru,

coba lagi!”

Print Usia

End

Tidak

Ya

Page 22: 19012031 Algoritma Dasar

22

Dalam beberapa bahasa pemrograman, TIDAK DIANJURKAN memaksa keluar dari

looping dengan pernyataan GOTO. Ini akan mengakibatkan jalannya program tidak dapat

diprediksi. Mungkin untuk program yang sederhana dan kecil hal tersebut masih bisa berjalan

normal, namun untuk sebuah program yang besar dan kompleks, hal ini SANGAT TIDAK

DIANJURKAN.

Contoh dibawah ini masih bisa berjalan, namun tidak dianjurkan

while count < 10

input "Enter a name (or a blank line to quit) ?"; n$

if n$ = "" then [exitLoop]

list$(count) = n$

count = count + 1

wend

[exitLoop]

Pernyataan EXIT WHLIE merupakan salah satu cara yang benar apabila kita ingin keluar dari

looping dengan pernyataan WHILE…WEND

while count < 10

input "Masukkan Nama anda (atau tekan enter untuk keluar) ?"; n$

if n$ = "" then EXIT WHILE

Print "Nama anda adalah ";n$

Print

wend

Print

Print "Anda telah keluar dari Loop!"

Struktur pengulangan dengan DO…LOOP (WHILE/UNTIL)

Pengulangan DO dengan LOOP dapat dilakukan ketika kondisi dalam keadaan

True/benar, atau sampai kondisi benar. Pengulangan DO dengan LOOP ketika kondisi dalam

keadaan benar, maka harus dipasangkan dengan pernyataan WHILE, sedangkan DO dengan

LOOP sampai kondisi benar maka harus dipasangkan dengan UNTIL.

Page 23: 19012031 Algoritma Dasar

23

Berikut ini Algoritma pernyataan tersebut;

CONTOH A CONTOH B

Perhatikan kedua algoritma tersebut diatas! Sekilas sepertinya sama namun

menghasilkan “output” yang sangat berbeda. Perbedaan output ini disebabkan kita melakukan

kondisi yang berbeda (WHILE). Pada Contoh A, terjadi Looping ketika nilai A masih lebih kecil

dari 9 sehingga menghasilkan output berupa tercetaknya angka 0 hingga 9, ketika A=10 maka

kondisi sudah tidak terpenuhi sehingga keluar dari Loop.

Pada Contoh B tidak terjadi Looping, karena pada saat diuji kondisi apakah A lebih

besar dari 10, ternyata tidak sesuai karena A baru bernilai 1 (hasil dari eksekusi A= 0+1), hal ini

mengakibatkan jalannya program keluar dari Loop. Program B hanya menghasilkan tercetaknya

angka 0 pada layar monitor kita. Berikut ini contoh program dari algoritma tersebut (dalam

bahasa pemrograman Liberty BASIC), yang sengaja digabungkan antara contoh A dan contoh B

START

A=0

PRINT A

A < 10

A=A+1

END

START

A=0

PRINT A

A > 10

A=A+1

END

YA

TIDAK

YA

TIDAK

Page 24: 19012031 Algoritma Dasar

24

Agar lebih mudah membandingkan antara Algoritma, Program dan Outputnya;

' CONTOH PENGGUNAAN DO...LOOP WHILE

' Program sesuai contoh algoritma A

print "Output dari Algoritma A"

a=0

do

print a

a = a + 1

loop while a < 10

Print "----------------------------"

' Program sesuai contoh algoritma B

a=0 ' untuk mereset kembali nilai variabel a

print "Output dari Algoritma B"

do

print a

a = a + 1

loop while a > 10

end

Hasil Keluaran dari Program tersebut diatas adalah;

Output dari Algoritma A

0

1

2

3

4

5

6

7

8

9

----------------------------

Output dari Algoritma B

0

Komputer akan dapat membantu kita dengan cepat dan benar apabila diberikan

input dan urutan langkah (Algoritma) yang benar pula. Garbage in, garbage out

Page 25: 19012031 Algoritma Dasar

25

DO….LOOP UNTIL

Pengulangan akan terjadi, sampai kondisi pengujian adalah benar. Jika kondisi sudah

tercapai, maka loop berakhir. Perhatikan Algoritma dibawah ini

CONTOH A CONTOH B

Selintas sama dengan pernyataan DO….LOOP WHILE hanya perlu sekali lagi ditegaskan

bahwa dalam struktur DO….LOOP UNTIL; pengulangan akan berakhir ketika kondisi yang

disyaratkan terpenuhi. Adapun contoh programnya sama dengan contoh diatas, tinggal kata

“WHILE”-nya diganti dengan “UNTIL”.

Masih banyak statement/pernyataan pengulangan yang berlaku di setiap Bahasa

Pemrograman. Oleh sebab itu teruslah belajar dan berkreasi bukan hanya sekedar pemenuhan

terhadap Standar Kompetensi dan Kompetensi Dasar saja. Insya Allah akan kita bahas pada

tulisan berikutnya. Mudah-mudahan Tulisan ini bermanfaat bagi kita semua.

START

A=0

PRINT A

A =1

A=A+1

END

START

A=0

PRINT A

A > 10

A=A+1

END

Tidak

YA

Tidak

Ya