Anda di halaman 1dari 19

Mata Kuliah : Struktur Data dan Algoritma

RUNTUNAN, PEMILIHAN DAN PENGULANGAN

OLEH : KELOMPOK 10
NAMA NIM
WINDA FEBRI YANTI 4161111082
JUMALA RISKA ISMAYUNI 4162111075
MARSINTAULI NAINGGOLAN 4163111039

JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI MEDAN
MEDAN
2018
RUNTUNAN, PEMILIHAN, DAN PENGULANGAN

A. INSTRUKSI RUNTUNAN
B. Pengertian Runtunan

Runtunan adalah struktur algoritma paling dasar yang berisi rangkaian instruksi
yang diproses secara sekuensial, satu per satu, mulai dari instruksi pertama sampai
instruksi terakhir.

C. Syarat Runtunan

Algoritma merupakan runtunan ( sequence ) satu atau lebih instruksi, yang berarti
bahwa:

1. Tiap instruksi dikerjakan satu per satu;


2. Tiap instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang;
3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagaimana yang tertulis didalam teks algoritmanya;
4. Akhir dari instruksi terakhir marupakan akhir algoritma.

Setiap instruksi didalam runtunan ditulis dalam satu baris, atau beberapa instruksi dalam
baris yang sama, tetapi antara setiap instruksi dipisahkan dengan tanda titik koma (;).

D. Contoh – Contoh Runtunan

Contoh. 1. Bagaimana mencetak pesan “Hello, world” ke layar?

Penyelesaian

Algoritma untuk mencetak “Hello, world”:

PROGRAM Hello_world
{ program untuk mencetak “ Hello, world “ }
DEKLARASI
{ tidak ada }
ALGORITMA :
Write (‘hello, world’)
Runtunan seperti pada contoh.1 diatas hanya berisi satu pernyataan saja, yaitu Write
(‘hello, world’). Dapat juga dibuat beragam versi program Hello_world, tidak
hanya satu baris instruksi seperti algoritma diatas, beberapa versi algoritma untuk
mencetak “Hello, world” seperti dibawah ini :

Versi 2 :

String “Hello, world” disimpan didalam sebuah peubah yang bertipe string, baru
kemudian dicetak.

PROGRAM Hello_world2
{ program untuk mencetak “ Hello, world “ }
DEKLARASI
Pesan : string
ALGORITMA :
Pesan  ‘Hello, world’
Write(pesan)

Versi 3 :

String “Hello, world” disimpan sebagai konstanta, baru kemudian dicetak.

PROGRAM Hello_world3
{ program untuk mencetak “ Hello, world “ }
DEKLARASI
Const pesan = ‘Hello, world’
ALGORITMA :
Write(pesan)

Contoh.2 tuliskan algoritma yang membaca dua buah nilai – nilai untuk peubah A dan B,
lalu mempertukarkan nilai kedua peubah tersebut. Misalnya, sebelum pertukaran nilai A
= 8, nilai B = 5, maka setelah pertukaran, nilai A = 5 dan nilai B = 8.

Penyelesaian

Algoritma pertukaran dua buah nilai sama seperti algoritma mempertukarkan isi dari buah
ember. Kita membutuhkan sebuah peubah bantu sebagai tempat penampungan sementara.

PROGRAM Pertukaran
{ mempertukarkan nilai A dan B, nilai A dan B dibaca
terlebih dahulu }
DEKLARASI
A, B, C : integer
ALGORITMA :
{ asumsikan A dan B sudah terdefenisi dengan nilai,
misalnya melalui pengisian langsung atau dibaca
nilainya dari papan ketik }
{ pertukarkan nilai A dan B }
C  A {simpan nilai A di tempat penampungan
sementara, C}
A  B {sekarang A dapat diisi dengan nilai B}
B  C {isi B dengan nilai A semula yang tadi disimpan
di C}
{tulis nilai A dan B setelah pertukaran, jika
diperlukan}

Contoh.3 Misalkan A dan B adalah dua buah peubah yang bertipe integer. Apa yang
dilakukan oleh potongan algoritma dibawah ini?

ALGORITMA :
...
A  A + B
B  A – B
A  A – B
...
Penyelesaian

lakukan tes untuk A = 10 dan B = 6. Akan didapatkan hasil setelah pelaksanaan runtunan
tersebut bahwa A = 6 dan B = 10. Jadi, potongan algoritma diatas adalah cara lain untuk
mempertukarkan nilai dari dua buah peubah yang bertipe bilangan bulat tanpa
menggunakan peubah bantu ( bandingkan contoh.2 yang menggunakan peubah bantu ).
Namun algoritma pada contoh.2 dapat digunakan untuk mempertukarkan nilai dari dua
peubah yang bertipe sembarang (asalkan keduanya bertipe sama), sedangkan algoritma
pada contoh.3 hanya dapat digunakan untuk mempertukarkan nilai dari dua peubah integer
saja.

Algoritma pertukaran nilai dari dua buah peubah integer tanpa peubah bantu selengkapnya
sebagai berikut :

PROGRAM Tukar
{ Mempertukarkan nilai A dan B yang bertipe bilangan bulat
tanpa peubah bantu. Nilai A dan B dibaca terlebih dahulu
dari piranti masukan }
DEKLARASI
A : integer { nilai pertama }
B : integer { nilai kedua }
temp : integer { peubah bantu }
ALGORITMA
Read(A,B) { baca nilai A dan B terlebih dahulu }
Write(A,B) { cetak nilai A dan B sebelum pertukaran }
{ proses pertukaran }
A  A + B
B  A – B
A  A – B
Write (A,B) {cetak nilai A dan B setelah pertukaran}

Contoh. 4 Tulis algoritma masing – masing dalam notasi algoritmik, pascal, dan C, 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. Tuliskan!

panjang

lebar

penyelesaian

ALGORITMIK :
PROGRAM Luas_Empat_Persegi_Panjang
{ Membaca panjang dan lebar segiempat yang berbentuk empat
persegi panjang, menghitung luasnya, lalu mencetak luas
tersebut ke piranti keluaran.}
DEKLARASI
Panjang : real { panjang segiempat, dalam satuan cm }
Lebar : real { lebar segiempat, dalam satuan cm }
Luas : real { luas segiempat, dalam satuan cm2 }
ALGORITMA
Read(panjang,lebar)
Luas  panjang * lebar
Write(luas)

PASCAL

Program Luas_Empat_Persegi_Panjang
{ Membaca panjang dan lebar segiempat yang berbentuk empat
persegi panjang, menghitung luasnya, lalu mencetak luas
tersebut ke piranti keluaran.}
(* DEKLARASI *)
Var
Panjang :real; {panjang segiempat, dalam satuan cm}
Lebar :real; {lebar segiempat, dalam satuan cm}
Luas :real; {luas segiempat, dalam satuan cm2}
(* ALGORITMA *)
Begin
Write (‘Berapa panjang segiempat? ‘); readln(panjang);
Write (‘Berapa lebar segiempat?’); readln(lebar);
Luas :”panjang*lebar;
Writeln(‘Luas segiempat = ‘,luas);
end

C:

/* PROGRAM LUAS SEGIEMPAT


/*Membaca panjang dan lebar segiempat yang berbentuk empat
persegi panjang, menghitung luasnya, lalu mencetak luas
tersebut ke piranti keluaran.*/
#include <stdio.h>
Main ()
{
/* DEKLARASI */
Float panjang; /*panjang segiempat,dalam satuan cm*/
Float lebar; /*lebar segiempat,dalam satuan cm*/
Float luas; /*luas segiempat,dalam satuan cm2 */
/* ALGORITMA */
Printf(“Berapa panjangsegiempat?”);scanf(“\f”,%panjang);
Printf(“Berapa lebar segiempat?”);scanf(“\f”,%lebar);
Luas = panjang * lebar
Printf(“Luas segiempat = \f\n”,%luas);
}
B. INTRUKSI PEMILIHAN

Penyelesaian masalah dengan struktur pemilihan atau percabangan adalah suatu cara
pemecahan masalah dengan intruksi-intruksi tertentu yang dapat digunakan untuk mengambil
keputusan berdasarkan suatu kondisi. Pernyataan percabangan memungkinkan suatu
pernyataan dieksekusi, hanya jika suatu kondisi terpenuhi. Artinya, tidak setiap baris atau
langkah algoritma akan dikerjakan. Suatu baris algoritma akan dikerjakan jika kondisinya
memenuhi syarat. Struktur pemilihan adalah struktur algoritma yang melakukan proses
pengujian untuk mengambil suatu keputusan atau tindakan mengenai diproses atau tidaknya
suatu baris intruksi atau blok intruksi. Bentuk intruksi percabangan ada 2 yaitu :

1. Intruksi IF
1.1 Satu Kasus
Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan
konstruksi IF-THEN (Jika-maka) dalam bentuk pernyataan:
If kondisi then
Aksi
Endif
Pernyataan diatas berarti bahwa aksi hanya dilakasanakan bila kondisi bernilai benar
(true). Bila kondisi bernilai salah(false), tidak ada aksi apapun yang dikerjakan. Kata
endif sengaja ditambahkan untuk mempertegas awal dan akhir struktur IF-THEN.
Bagan alir dibawah ini akan akan membantu memperlihatkan visualiasasi pemilihan
dengan hanya satu kasus ini.

Salah
kondi
si
Benar

aksi

end
Contoh-contoh :

a) if x > 100 then


x x + 1
endif
b) if ( a ≠ 0 ) or ( p = 1) then
q a * p
write (q)
endif
c) if ada = false then
read (cc)
write (cc)
endif

Catatan :
Contoh c diatas dapat juga ditulis seperti berikut :
If not ada then
Read (cc)
Write (cc)
endif
karena aksi sesudah kata then hanya akan dikerjakan hanya jika kondisi bernilai true (dalam
hal ini, kondisi adalah not ada, yang bernilai true bila ada bernilai false).
Contoh Masalah Dengan Satu Kasus
Buatlah algoritma yang membaca sebuah bilangan bulat, lalu mencetak pesan ‘’genap’’ jika
bilangan tersebut adalah genap.
Penyelesaian :
Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0). Oleh karena
itu, kita perlu membagi data masukan dengan 2. Jika data masukan habis dibagi 2, maka kita
tulis bahwa bilangan tersebut adalah bilangan genap.
Program genap
Mencetak pesan ‘’bilangan genap’’ jika sebuah bilangan bulat yang dibaca dari piranti
masukan merupakan bilangan genap
DEKLARASI
x : integer
ALGORITMA :
Read (x)
If x mod 2 = 0 then
Write (‘genap’)
endif

1.2 Dua Kasus


Konstruksi IF-THEN hanya menyediakan satu alternative aksi jika suatu
persyaratan (kondisi) dipenuhi. Kadang-kadang kita perlu memilih melakukan aksi
alternative jika suatu kondisi tidak memenuhi. Jadi, ada dua kasus, tetapi hanya salah
satu dari keduanya yang harus dipilih satu untuk dikerjakan. Notasi algoritmik untuk
masalah dengan 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 berniai benar,
sebaliknya, jika kondisi bernilai salah, maka aksi2 yang akan dilaksanakan.
Perhatikanlah bahwa else menyatakan ingkaran (negation) dari kondisi. Berikut ini
adalah bagan alir untuk memperlihatkan visualisasi pemilihan dengan dua kasus :
Benar salah
kondi
si

Aksi1 Aksi2

end

Contoh-contoh :
a) if a > 0 then
write ( ‘bilangan positif’ )
else
write ( ‘bilangan bukan positif’ )
endif
b) if (k > 4) and (k div 2 = 4) then
read (n)
z n * k
else
read (m)
z m/k
endif
c) if (n > 0) then
if a > b then
z a
else
z b
else
write ( ‘ n harus positif ‘ )
endif
Contoh-Contoh Masalah Dengan Dua Kasus
Buatlah algoritma yang membaca dua buah bilangan bulat, lalu menentukan bilangan
yang terbesar!
Penyelesaian
Misalkan kedua bilangan tersebut A dan B. hanya ada dua kemungkinan bilangan
terbesar, A atau B, kita harus membandingkan kedua bilangan tersebut lalu menentukan
yang terbesar.
Analisis kasus :
Kasus 1 : jika A > B, maka tulis pesan ‘’bilangan terbesar = A’’
Kasus 2 : jika B ≥ A, maka tulis pesan ‘’bilangan terbesar = B’’

Program Maksimum
( Menentukan bilangan terbesar dari dua buah bilangan bulat )

DEKLARASI
A, B : integer

ALGORITMA:
read (A,B)
if A > B then
Write (‘Bilangan terbesar = ‘ , A)
else ( berarti B ≥ A)
write ( ‘ Bilangan terbesar = ‘ , B)
endif

1.3 Tiga Kasus atau Lebih


Masalah yang mempunyai tiga buah kasus atau lebih dapat dianalisis dengan
konstruksi IF-THEN-ELSE bertingkat-tingkat.
Tiga Kasus:
if kondisi 1 then
Aksi 1

else
if kondisi 2 then
aksi 2

else
if kondisi 3 then
aksi 3

endif
endif
endif

Empat Kasus
if kondisi1 then
Aksi1
else
if kondisi2 then
aksi2
else
if kondisi3 then
aksi3
else
if kondisi4 then
aksi4
endif
endif
endif
endif

Contoh-Contoh Masalah Dengan Tiga Kasus


tulislah algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah
bilangan tersebut positif, negative, atau nol.
Penyelesaian
Baca 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 0
PROGRAM JenisBilanganBulat
( menentukan apakah sebuah bilangan bulat merupakan bilangan positif, negatif, atau nol )

DEKLARASI
X : integer

ALGORITMA :
read (x)
if x > 0 then
write (‘positif’)
else
if x < 0 then
write (‘negatif’)
else
if x = 0
write (‘nol’)
endif
endif
endif

C. INSTRUKSI PERULANGAN

Instruksi perulangan adalah instruksi yang dapat mengulang pelaksanaan sederetan


instruksi – instruksi lainnya berulang – ulang sesuai persyaratan yang ditetapkan. Instruksi
perulangan digunakan untuk menjalankan satu atau beberapa instruksi sebanyak beberapa
kali jika suatu kondisi terpenuhi. Instruksi perulangan memungkinkan kita untuk
menjalanka beberapa instruksi hanya dengan menuliskan instruksi tersebut satu kali.
Proses perulangan biasanya digunakan untuk:
o Mengulang proses pemasukan data
o Mengulang proses perhitungan
o Mengulang proses penampilan hasil pengolahan data
Terdapat beberapa instruksi perulangan yang bisa digunakan, antara lain repeat N times,
for, repeat-until dan while. Dengan notasi yang pertama repeat N times (yang artinya:
ulangi sebanyak N kali) maka algoritmanya dapat ditulis menjadi:
ALGORITMA tulis kalimat 100 kali:
repeat 100 times
Tulis “Saya berjanji tidak akan nakal dan malas lagi”

Struktur pengulangan ini dapat ditulis secara umum dengan pernyataan pengulangan:
repeat N times
aksi
yang artinya: aksi diulang dikerjakan sebanyak N kali.
Struktur pengulangan yang mirip dengan repeat N times adalah for:
for pencacah pengulangan dari 1 sampai N do
aksi
yang artinya: aksi dilakukan sebanyak g=hitungan cacah pengulangan, yaitu dari 1 samapi
N (yaitu sebanyak N kali). Pencacah pengulangan dapat di-set tidak hanya mulai dari 1
tetapi juga dari sembarang nilai yang lain. Contoh masalah penulisan 100 kalimat dengan
notasi for menjadi:
ALGORITMA
for i dari 1 sampai 100 do
tulis “Saya berjanji tidak akan nakal dan malas lagi”

i adalah pencacah pengulangan yang mencacah pengulangan dari 1 sampai 100.

Struktur pengulangan yang ketiga adalah repeat until (repeat yang artinya “ulangi” dan
until artinya “sampai” atau “hingga”) yang mempunyai bentuk umum sebagai berikut:
repeat
aksi
until kondisi
yang artinya adalah pengulangan aksi dilakukan hingga kondisi (persyaratan) berhenti
terpenuhi. Contoh masalah penulisan kalimat 100 kali dengan notasi repeat-until menjadi:
ALGORITMA tulis kalimat 100 kali
repeat
tulis “Saya berjanji tidak akan nakal dan malas lagi”
until sudah 500 kali.

Contoh lain dalam pengulangan repeat-until yaitu pada masalah mencari data alamat
dan nomor telepon mahasiswa tertentu, dimana data yang diketahui adalah NIM (Nomor
Induk Mahasiswa) mahasiswa tersebut. Misalkan data pribadi mahasiswa disimpan dalam
sebuah tabel. Tabet terdiri atas kotom (field) NIM, Nama, Alamat, dan Nomor Telepon
(lihat Tabet 2.1). Setiap baris di tabet kita sebut satu entry. Kita asumsikan tabel sudah
berisi sejumlah data mahasiswa (tabel berisi minimal satu entry data).
NIM Nama Alamat Telepon
13599001 Ahmad Sadikin Jl. Mawar 31 A 2504321
13599009 RusliNasution Jl. Dago 231 2503456
..... ..... ..... .....
13599087 Harnidah Tanjung Jl. Pelesiran 24 2519038

Secara tradisional, kalau kita mencari lnformasi dari sebuah tabel, maka cara yang
lazim kita lakukan adalah membaca setiap entry tabel satu per satu, mulai dari entry baris
pertama, terus ke bawah, sampai data yang dicari ditemukan atau seluruh entry tabel sudah
habis ditelusuri. Algoritma pencarian seperti itu sebagai berikut:
tinjau entry pertama didalam tabel
if NIM pada entry tabel sama dengan NIM yang dicari then
ambil alamat dan telepon dari NIM tersebut.
else
tinjau entry berikutnya didalam tabel
if NIM pada entry tabel sama dengan NIM yang dicari then
ambil alamat dan telepon dari NIM tersebut
else
tinjau entry berikutnya didalam tabel
if NIM pada entry tabel sama dengan NIM yang dicari then
ambil alamat dan telepon dari NIM tersebut
else
tinjau entry berikutnya didalam tabel
.....

Algoritma di atas rnengandung kelemahan karena pemrograrn tidak tahu kapan harus
berhenti rnenuliskan pernyataan kondisional. Dengan kata lain, pemrogram tidak tnhu
berapa kali pernyataan
if NIM pada entry tabel sama dengan NIM yang dicari then
ambil alamat dan telepon dari NIM tersebut
else
tinjau entry berikutnya didalam tabel
harus ditulis sarnpai data yang dicari ditemuknn. Tidak seperti pada struktur repeat N
times atau for yang jumlah pcngulangan aksi sudah diketahui sebelum pcngulangan
dilaksanakan, maka kita dapal meuggunakan struktur repeat-until jika jumlah
pengulangan tidak dikelahui di awal. Pengulangan aksi dilnkukan sampai ditcmukan entry
dari NIM yang dicari atau akhir label sudah terlarnpaui. Algoritma pencarian data
mahasiswa di dalam tabel dengan struktur repeat-until rnenjadi seperti di bawah ini:

ALGORITMA pencarian data didalam tabel:


baca NIM yang dicari (misalkan NIM = X)
tinjau entry pertama tabel
repeat
if NIM pada entry tabel sama dengan X then
tulis alamat dan telepon dari NIM X tersebut
else
tinjau entry berikutnya didalam tabel
until NIM yang dicari sudah ditemukan atau akhir tabel sudah terlampaui

Struktur pengulangan selanjutnya adalah while (while artinyu "selagi" atau “selama”)
while kondisi do
aksi
yang artinya adalah selama kondisi (persyaratan) pengulangan masih benar, maka aksi
dikerjakan. Perbedaannya dengan repeat-until, jika pada repeat-until kondisi pengulangan
dievaluasi di akhir, maka pada while-do kondisi pengulangan dievaluasi di awal pengulangan.
Masalah pencarian data dalam tabel dapat juga ditulis menggunakan struktur while-do
ditunjukkan pada algoritma berikut:
ALGORITMA, pencarian data didalam tabel:
baca NIM yang dicari (misalkan NIM = X)
tinjau entry pertama tabel
while NIM yang dicari belum ditemukan dan akhir tabel belum
terlampaui do
if NIM pada entry tabel sama dengan X then
ambil alamat dan telepon dari NIM tersebut
else
tinjau entry berikutnya didalam tabel
REFERENSI

Munir, Rinaldi.2007. ALGORITMA & PEMROGRAMAN BAHASA PASCAL dan C Edisi


Revisi. Bandung : Penerbit INFORMATIKA.

Suarga.2004. Algoritma Pemrograman. Makasar : Penerbit ANDI.

Anda mungkin juga menyukai