Anda di halaman 1dari 25

BAHAN AJ AR ke 2

DASAR DASAR PEMROGRAMAN






STANDAR KOMPETENSI:

MENGGUNAKAN ALGORITMA PEMROGRAMAN TINGKAT DASAR
KOMPETENSI DASAR:
MEMBUAT LOGIKA ALUR PEMOGRAMAN










Disusun Oleh:
SUCARMAN
sucar mangmail.com




SEKOLAH MENENGAH KEJURUAN (SMK)
PELITA KARYA
Jln.Raya Borbok Desa Cicau Kecamatan Cikarang Pusat Kabupaten Bekasi
Tahun 2009
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 sucarmangmail.com, selain itu jika ada
kekurangan dan atau kesalahan yang Iatal dalam tulisan ini, agar tidak sungkan-sungkan
menegur penulis. Perbaikan adalah sebuah kebahagian buat penulis dan keluarga.

Selamat berkarya






Penulis










STANDAR KOMPETENSI:

Menggunakan Algoritma Pemrograman Tingkat Dasar

KOMPETENSI DASAR:

Membuat Logika Alur Pemogra man

INDIKATOR:

W Siswa dapat mendeskripsikan , memahami Algor it ma.
W Siswa mampu membuat Algoritma dengan skema program Sekuensial .
W Siswa mampu membuat Algoritma dengan skema program Pencabangan.
W Siswa mampu membuat Algoritma dengan skema program Pengulangan.




BAHAN AJ AR:
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,
GeograIi 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 deIinisi 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 8 MuryanLo 8ekayasa erangkaL Lunak !llld 1 unLuk SMk !akarLa 2008 ulrekLoraL emblnaan Sekolah
ke[uruan ulrekLoraL !enderal Mana[emen endldlkan uasar dan Menengah ueparLemen endldlkan naslonal
hal101









Menurut Donald E.Knuth dalam bukunya yang berjudul The Art oI 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 taIsiran
ganda (Ambigu)
. Algoritma memiliki masukan nol atau lebih sebelum algoritma itu sendiri bekerja (input)

. 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 eIektiI, 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 bersiIat umum, artinya boleh
ditulis dengan menyerupai bahasa pemrograman tersebut. Latar belakang programmer sangat
berpengaruh dalam menuliskan pseudocode. Programer yang Iamiliar dengan Bahasa BASIC
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 GJTJ 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.


. 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 Iamiliar dengan MicrosoIt 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.









Sebagai ilustrasi berikut ini contoh Flowchart Menghitung Luas Segitiga;


Mulal SLarL




8aca uaLa
8ead
Alas1lnggl





Apakah
uaLa valld?
1ldak Alas0?
1lnggl0?
1ldak



?a
?a


PlLung Luas SeglLlga

Luas03*Alas*1lnggl





1ampllkan
Pasll Luas
rlnL Luas




Selesal Lnd



Bagan Alir Logika Program Bagan Alir Program Komputer t er inci



Dari ketiga cara penulisan Algoritma (SI, Psedocode dan Flowchart) kesemuanya itu
bersiIat 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.










Contoh-contoh Algoritma dapat dikembangkan dengan memperhatikan lingkungan dan
kehidupan siswa itu sendiri.


Struktur Algor it ma

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.


Algorit ma 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 'outputyang
kita harapkan. Menurut Goldshlager dan A. Lister, struktur berurutan mengikuti ketentuan
sebagai berikut;
W Tiap instruksi dikerjakan satu demi satu.

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

W Urutan pelaksanaan yang dilakukan oleh komputer(pemroses) sama dengan urutan yang
ditulis dalam algoritmanya.
W Akhir dari instruksi terakhir, merupakan akhir algoritma.
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;


Mulal



8ead A8
AC



8CSC8(A82+AC2)
rlnL 8C

Selesal




Ilustrasi dan Flowchart mencari panjang sisi mir ing

Dalam bahasa pemrograman BASIC (Liberty Basic atau Turbo Basic) Algoritma
tersebut dapat ditulis sebagai berikut;


Mencari Panjang Sisi Miring
cls







end

AB=3

AC=4

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

Print "Panjang sisi miringnya adalah = ";BC

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.
9









Algoritma Pencabangan (Br anching)


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 1 tahun. Jika
usianya kurang dari 1 tahun maka dia belum mempunyai hak pilih.
Maka Algoritmanya dapat dibuat sebagai berikut;


MuLAl




8LAu uSlA






?A
uSlA 17
1luAk




8ln1
un?A PAk
lLlP"
8ln1
1luAk un?A
PAk lLlP"




SLLLSAl


Flowchart Penentuan Hak Pilih
10









Secara umum Algoritma tersebut sudah benar, namun pada kenyataannya ada
pengecualian bahwa walaupun usianya belum mencapai 1 tahun, asal saja sudah menikah maka
orang tersebut sudah punya hak pilih, sehingga Algoritmanya dapat diperbaiki menjadi;


MuLAl





8LAu uSlA
S1A1uS





?A
uSlA 17?
1luAk






8ln1
un?A PAk
lLlP"
?A S1A1uSML
nlkAP?



1luAk

8ln1
1luAk un?A
PAk lLlP"






SLLLSAl



Dari algoritma yang kedua, dapat dilihat adanya pengujian kedua tentang status orang.
Jika orang tersebut sudah menikah (pernah menikah) maka walaupun usianya kurang dari 1
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;
11










MuLAl




8LAu uSlA
S1A1uS






?A uSlA 17 C8
S1A1uS"MLnlk
AP"
1luAk



8ln1
un?A PAk
lLlP"
8ln1
1luAk un?A
PAk lLlP"





SLLLSAl

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 JR Status$=Y THEN
PRINT
PRINT Sudah mempunyai hak pilih
ELSE

END IF
END

PRINT Belum mempunyai hak pilih


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.
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 eIektiI dan eIisien.
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;
W IF test expression THEN expression(s)

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

W IF test expression THEN
expression(s)1
END IF

W IF test expression THEN
expression(s)1
ELSE

END IF

expression(s)2


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"
1




iI qtySubdirs 0 then
print "None."
else


print "Count oI subdirectories: "; qtySubdirs








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.


Pencabangan/Pengujian Kondisi bukan hanya untuk memilih satu dari dua
kemungkinan yang harus dipilih, melainkan juga bisa memilih satu dari beber apa
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 'daItar menu yang tersedia di restoran t er sebut.
1









Algoritma Pengulangan (Looping)


W 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.
W 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 Ialse (salah).
2. Badan penglangan (loop body), yakni satu atau sekumpulan perintah yang harus
diulang.
15









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 eIisiensi sebuah program computer.

Struktur pengulangan dengan FOR...NEXT


Bentuk pengulangan seperti ini merupakan tehnik pengulangan yang paling tua dalam
bahasa pemrograman
2
. 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 variabelinisialisasi TO terminasi STEP aturan

Jika STEP tidak dideIinisikan 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;

awal 1C
akhlr

langkahnya adalah sebagai berikut;

1. Menetapkan nilai counter sama dengan nilai awal


8adan
Loop




ernyaLaan
8erlkuLnya

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
. Menaikkan/menurunkan nilai counter sesuai aturan yang
kita tetapkan.
. Kembali ke urutan nomor 2.


2
lbld hal 114
1









Untuk membantu lebih memahami tehnik pengulangan dengan FOR.NEXT, berikut ini kita
contohkan ;
'Sebuah himpunan A mempunyai anggota bilangan bulat ganjil positiI 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 A1 sedangkan nilai terminasinya adalah 19. Karena A adalah
himpunan bilangan bulat ganjil positiI, 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



S1A81




A1
S1A81





8ln1 A
A1 Lo 19
SLep 2





A A+2
8ln1 A






A19 ?

Lnu



Lnu


Cobalah perhatikan kedua bentuk algoritma tersebut, amati persamaan dan perbedaannya serta
silahkan menentukan mana yang paling eIektiI alurnya. Semua itu adalah sangat tergantung dari
1









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


FJR A=1 TJ 19 STEP 2


PRINT space$(2);A;
NEXT A
END

Kedua program tersebut mempunyai keluaran yang sama yakni mencetak anggota himpunan

A(1,,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.
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 deIinisikan -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

S1A81 S1A81







A0 Lo 1
A1 Lo 0
S1L 1






80 Lo 1
81 Lo 0
S1L 1




C A Anu 8
u A C8 8
L C xC8 u
8ln1 A8CuL
C A Anu 8
u A C8 8
L C xC8 u
8ln1 A8CuL





Lnu Lnu
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 JR B) E(C XJR D)"
PRINT "-------------------------------------------------------------"
ketiga baris diatas untuk memudahkan membaca hasilnya
badan programnya adalah:
FJR A=0 to 1
FJR B=0 to 1
C= A AND B
D= A JR B
E= C XJR D
PRINT A,B,C,D,E
NEXT untuk menutup loop B
NEXT untuk menutup loop A
PRINT "============================================================="
END


Hasil keluar annya:

=============================================================
A B C(A AND B) D(A JR B) E(C XJR 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 JR B) E(C XJR D)"
PRINT "-------------------------------------------------------------"
ketiga baris diatas untuk memudahkan membaca hasilnya
badan programnya adalah:
FJR A=1 to 0 step -1
FJR B=1 to 0 step -1
C= A AND B
D= A JR B
E= C XJR D
PRINT A,B,C,D,E
NEXT untuk menutup loop B
NEXT untuk menutup loop A
PRINT "============================================================="
END
20








Hasil Keluarannya:

=============================================================
A B C(A AND B) D(A JR B) E(C XJR 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 Iaham
bagaimana pengulangan bersarang tersebut bekerja.
Untuk latihan silahkan dicoba memodiIikasi program diatas dengan variasi berbeda,
misalnya For A0 to 1 dipasangkan dengan For B1 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
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.





kondlsl





8adan
Loop




ernyaLaan
8erlkuLnya
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
21








berjalan hingga teman kita memasukkan angka yang mengakibatkan kondisi tidak lagi

terpenuhi, sehingga Loop berakhir.



SLarL




8ead usla




usla0 ?
?a

rlnL kellru
coba lagl!"








rlnL usla






Lnd
















1ldak

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.
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.
2








Berikut ini Algoritma pernyataan tersebut;


CONTOH A CONTOH B


S1A81 S1A81





A0 A0






8ln1 A 8ln1 A





AA+1 AA+1






?A
A 10

?A
A 10


1luAk 1luAk


Lnu Lnu




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 A10 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 01), 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
2








Agar lebih mudah membandingkan antara Algoritma, Program dan Outputnya;


CJNTJH PENGGUNAAN DJ...LJJP WHILE

Program sesuai contoh algoritma A
print "Jutput 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 "Jutput dari Algoritma B"
do

print a

a = a + 1

loop while a 10
end
Hasil Keluaran dari Program tersebut diatas adalah;

Jutput dari Algoritma A

0

1

2

3

4

5

6

7

8

9

----------------------------
Jutput dari Algoritma B
0

Komputer akan dapat membantu kita dengan cepat dan benar apabila diber ikan
input dan urutan langkah (Algor it ma) yang benar pula. Garbage in, garbage out
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



S1A81 S1A81





A0 A0






8ln1 A 8ln1 A





AA+1 AA+1






1ldak

A 1
1ldak

A 10



?a ?A

Lnu Lnu

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 bermanIaat bagi kita semua.

Anda mungkin juga menyukai