Anda di halaman 1dari 122

ALGORITMA DAN PEMROGRAMAN

Arti dari Algoritma


• Algoritma adalah urutan langkah-langkah
logis penyelesaian masalah yang disusun
secara sistematis
• Algoritma adalah urutan logis pengambilan
keputusan untuk pemecahan masalah
• Urutan logis berarti urutan langkah-
langkah harus benar, dan langkah-langkah
itu sendiri juga harus benar
Penemu Algoritma
• Berasal dari ahli matematika Arab :
Abu Ja’far Muhammad Ibnu Musa Al-
Khuwarizmi
Definisi Algoritma
Algoritma merupakan kerangka dasar dari
konsep suatu program untuk
menyelesaikan masalah.
Algoritma tidak terikat dari suatu bahasa
pemrograman manapun atau dengan kata
lain bahasa yang digunakan adalah bebas
dengan bahasa apapun, baik memakai
bahasa Indonesia, bahasa Inggris atau
bahasa lainnya.
Contoh penerapan algoritma
dalam kehidupan sehari-hari
• Menyapu halaman
• Mencuci piring
• Mandi
• Dan banyak contoh lainnya …
Dasar Pemikiran Algoritma
• Setiap orang punya pola pikir yang berbeda,
karena itu akan menghasilkan algoritma yang
berbeda
• Algoritma dikatakan benar apabila dapat
memecahkan masalah
• Perlu dipertimbangkan masalah efisiensi dalam
penyusunan algoritma
• Pemilihan rute jalan, misalnya :
– Beberapa rute mungkin akan menghasilkan tujuan
yang sama
– Ada rute yang lebih efisien dibanding rute lainnya
– Sebaiknya yang diambil adalah rute terpendek
Penulisan Algoritma :
• Algoritma dapat dinotasikan dalam beberapa
cara, yaitu:
– Dengan untaian kalimat deskriptif (natural)
Tapi sering membingungkan (ambiguous)
– Dengan Pseudocode
Sudah lebih dekat ke bahasa pemrograman, namun
sulit dimengerti oleh orang yang tidak mengerti
pemrograman
– Dengan flowchart
Bagus secara visual akan tetapi repot kalau
algoritmanya panjang
FLOWCHART
• Flowchart lebih baik dibandingkan pseudocode
• Merupakan gambaran dalam bentuk diagram alir dari
algoritma-algoritma dalam suatu program yang
menyatakan arah alur program tersebut
• Disajikan dalam bentuk grafik/gambar
• Dapat membantu programmer maupun orang lain dalam
memahami alur program (apa saja: input, proses dan
output dari program)
• Representasi visual, karena itu lebih mudah dipahami
• Jumlah simbol yang digunakan sedikit, karena itu lebih
sederhana dan lebih mudah dipelajari
Flow Chart
• flow chart (diagram alir)
– (menggambarkan urutan langkah-langkah
kegiatan /program mulai dari awal sampai
akhir dengan menggunakan simbol atau
gambar tertentu.)
• Kegunaan : mendesain dan mempresentasikan
program
Lambang Flowchart
Terminator (mulai/selesai)

Input/output

Proses

Decision (percabangan)

Data Flow (Aliran data)

Preparation (pemberian nilai awal suatu


variabel)
Call (memanggil prosedur/fungsi)
Connector (di halaman yg sama

Connector ( di halaman lain)


Mulai

Inputkan nilai
(tugas,uts,uas)

NA = 25%tg+25%uts+50%uas

NA>60 Gagal

Lulus

Selesai
Program – Pemrograman
• Pemrograman : aktifitas yg dilakukan dengan
membuat instruksi untuk menyelesaikan
permasalahan yg dimengerti oleh komputer
• Program : coding, hasil pemrograman
• Bahasa Pemrograman : Bahasa program yang
digunakan untuk membuat urutan instruksi yg
dimengerti oleh komputer.
• Pemrograman (programmer) : orang yg
membuat program komputer.
Algoritma dengan pseudo-code
kecil  bilangan pertama
if ( bilangan kedua < kecil)
kecil  bilangan kedua
if ( bilangan ketiga < kecil)
kecil  bilangan ketiga
Ouput(kecil)
Flow chart untuk menentukan bilangan terkecil
tugas
• Buat flowchart dari rumus :
a. Luas lingkaran
b. Keliling Persegi Panjang
Kriteria/ Aspek Penting dari Algoritma
1. Finiteness
• Algoritma harus berhenti after a finite number
of steps
2. Definiteness
• Setiap langkah harus didefinisikan secara
tepat, tidak boleh membingungkan (ambiguous)
3. Input
• Sebuah algoritma memiliki nol atau lebih input
yang diberikan kepada algoritma sebelum
dijalankan
4. Output
• Sebuah algoritma memiliki satu atau lebih
output, yang biasanya bergantung kepada input
5. Effectiveness
• Setiap algoritma diharapkan miliki sifat efektif
Langkah umum dalam pembuatan suatu program
• Mendefinisikan masalah
– mendefinisikan permasalahan. langkah ini harus dilakukan untuk
menentukan masalah yang ada serta ditentukan pula input dan
output program
• Mencari solusinya
– Bila untuk mendapatkan solusi harus melalui langkah yang
terlalu rumit dapat dilakukan pembagian masalah dalam
beberapa modul-modul kecil agar mudah untuk dikerjakan. Lalu
modul-modul kecil tersebut digabungkan menjadi satu untuk
dapat menentukan solusi.
• Menentukan algoritma
• Menulis program
• Menguji program
• Mendokumentasikan program
• Merawat program
TIGA BAGIAN ALGORITMA :

• Judul (Header)
• Kamus
• Algoritma
Contoh :
JUDUL ( Header)
– Program Luas_Kubus  { judul algoritma }
KAMUS
– Kamus :
• X,Y : integer
• Cari : boolean
ALGORITMA
– Algoritma :
• Input (c,d)
• If c < d then
• ea+b
• Else
• e  a-b
• Output( e )
Contoh Penulisan Kasus Algoritma
Bahasa Natural Pseudo code
Program nilai_maksimal Program Nilai_maksimal
Kamus Kamus
X = nilai pertama hasil,x,y : integer
Y = nilai kedua Algoritma
Hasil = hasil perbandingan input(x,y)
Algoritma if x > y then
a. Masukkan Nilai x dan y hasil  x
b. Jika x lebih besar dari y,
else
nilai terbesar adalah x jika
tidak maka nilai terbesar hasil  y
adalah nilai y output(hasil)
c. Cetak hasil nilai yg terbesar
TIPE DATA, OPERATOR DAN EKSPRESI

Program Komputer memanipulasi data (variabel dan


konstanta) di dalam memori.
• TIPE DATA :
– Untuk menyatakan tipe data dari sebuah variabel
(peubah) pada Deklarasi.
• OPERATOR :
– Menspesifikasikan operasi apa yang dapat dilakukan
terhadap peubah (variabel) dan konstanta.
• EKSPRESI :
– Mengkombinasikan peubah-peubah dan dan
konstanta untuk menghasilkan hasil baru.
TIPE DATA
1. TIPE DATA DASAR :
– Tipe yang dapat langsung dipakai.

2. TIPE DATA BENTUKAN :


– Tipe dasar atau dari tipe bentukan lain yang
sudah didefinisikan sebelumnya.
1. TIPE DATA DASAR
• Dalam pemrograman, yang termasuk ke
dalam tipe dasar adalah : Bilangan logik,
bilangan bulat, karakter, bilangan riil, dan
string
• Bilangan logik, bilangan bulat, dan
karakter disebut juga dengan TIPE
ORDINAL (nilainya ada dalam urutan).
BILANGAN LOGIK
• NAMA TIPE :
– Boolean
• RANAH NILAI :
– Dua buah nilai : Benar (true) dan Salah (false)
– bilangan logik :benar  1, salah  0
• KONSTANTA :
– True dan False
• OPERASI :
– Operasi Logika atau operasi boolean
– Operasi logika menghasilkan nilai : true atau false
– Operator logika : AND, OR dan XOR
Tabel Kebenaran Logika
A B not A A and B A or B A xor B

True True False True True False

True False False False True True

False True True False True True

False false True false False False


Contoh Operasi Logika
• Misalkan X, Y, dan Z adalah peubah (variabel)
bertipe boolean.
• Dimana :
– X bernilai true, Y bernilai false, dan Z bernilai true
• Maka :
operasi logika hasil
------------------------------------------
( x and y) or z true
A and ( y or z) true
Not (x and z) false
(y xor z) and y false
BILANGAN BULAT
• Bilangan yang tidak mengandung pecahan desimal, misal : 34,
8, 0, -17, 45678901, dsb
• NAMA TIPE :
– Integer
• RANAH NILAI :

tipe Rentang nilai Format
Byte 0 .. 255 8 bit
Shortint -128 .. 127 8 bit
Word 0 .. 65535 16 bit
Integer -32768 .. 32767 16 bit
Longint -2147483648 .. 2147483647 32 bit
BILANGAN BULAT - next
• Contoh ;
• deklarasi :
• X : byte
• Y : integer
• Maka :
– Peubah X tidak dapat dioperasikan untuk
nilai-nilai di atas 255
– Peubah Y tidak dapat dioperasikan untuk
nilai-nilai di atas 32767
Contoh Segmen Program
Program salahtipe;

Var
a,b,x : shortInt;
Begin
a:=10;
b:=20;
X:=a*b; {x akan bernilai -56, bukan 200}
Writeln(‘Nilai x=‘, x);
End.
BILANGAN BULAT - next
• KONSTANTA :
– Harus ditulis tanpa mengandung titik desimal :
– Contoh : 78, -14, 7654, 0, 5, 9999, dsb

• OPERASI :
1. Operasi Aritmetika :
+ (tambah)
- (kurang)
* (kali)
Div (hasil bagi bilangan bulat)
Mod (sisa hasil bagi)
Contoh :
3 + 10  hasil : 13
10 DIV 3  hasil : 3
10 MOD 3  hasil : 1
BILANGAN BULAT - next

2. Operasi Perbandingan :
• Menghasilkan nilai boolean (true dan false)

< Lebih kecil


≤ Lebih kecil atau sama dengan
> Lebih besar
≥ Lebih besar atau sama dengan
= Sama dengan
≠ Tidak sama dengan
Contoh : Operasi Perbandingan

3<8 True

74 > 101 False

17 = 17 True

(24 div 3) ≠ 8 false


BILANGAN RIIL
• Bilangan yang mengandung pecahan desimal:
3.65, 0.003, 29.0, .24, dll.
• NAMA TIPE :
– Real
• RANAH NILAI :

tipe Rentang nilai Format


Real 2.9 x 10 -39 .. 1.7 x 1038 6 byte
Single 1.5 x 10-45 .. 3.4 x 1038 4 byte
Double 5.0 x 10-324 .. 1.7 x 10308 8 byte
extended 3.4 x 10-4932 .. 1.1 x 104932 10 byte
BILANGAN RIIL - next
• KONSTANTA :
harus ditulis dengan tanda titik desimal
contoh : 0.78, -14.2376, 0.0, .5, 99.0
• OPERASI :
1. operasi Aritmetika
+ (tambah, -(kurang), *(kali), / (bagi)

Contoh:
6.4 + 5.7  hasil : 12.1
8.0 – 2.8  hasil: 5.2
10/2.5  hasil: 4.0 (operasi bilangan campuran)
7.2 * 0.5  hasil : 3.6
BILANGAN RIIL - next
2. Operasi Perbandingan :
menghasilkan nilai boolean (true dan false)
< Lebih kecil
≤ Lebih kecil atau sama dengan
> Lebih besar
≥ Lebih besar atau sama dengan
≠ Tidak sama dengan

Tipe bilangan riil tidak mengenal operator kesamaan (=),


karena bilangan riil tidak bisa disajikan secara tepat oleh
komputer,
Misal : 1/3 tidak sama dengan 0.33333, sebab 1/3 =
0.33333…(dg angka 3 yg tidak pernah berhenti).
KARAKTER
• Semua huruf-huruf abjad, semua tanda baca,
karakter khusus, karakter kosong (null) ‘’.
• NAMA TIPE :
– Char
• RANAH NILAI :
– Adalah semua huruf di dalam alfabet (‘a’..’z’, ‘A’..’Z’,
angka desimal (‘0’..’9’), tanda baca(‘.’,’:’,’!’,dll),
operator aritmetika(‘+’,’-’,dll), karakter
khusus(‘$’,’#’,’@’,dll)
• KONSTANTA :
– Karakter harus diapit oleh tanda petik tunggal.
• Contoh : ‘h’, ‘y’, ‘.’, ‘ ‘, ‘9’, ‘$’
KARAKTER - next
• OPERASI :
– Hanya Operasi Perbandingan :

< Lebih kecil


≤ Lebih kecil atau sama dengan
> Lebih besar
≥ Lebih besar atau sama dengan
= Sama dengan
≠ Tidak sama dengan

Contoh :
‘a’ = ‘a’  hasil: true
‘T’ = ‘t’  hasil: false
‘y’ ≠ ‘y’  hasil: false
‘m’ < ‘z’  hasil: true
STRING
• Adalah untaian karakter dengan panjang
tertentu.
• NAMA TIPE :
– String
• RANAH NILAI :
– Deretan karakter yg telah didefinisikan pada ranah
karakter.
• KONSTANTA :
– Semua konstanta string harus diapit oleh tanda petik
tunggal.
Contoh: ‘SURABAYA’, ‘stts’, ‘Jl. Ngagel no. 73-77’,
‘…………………’, ‘k768532’, dll.
STRING - next
• OPERASI :
1. Operasi Penyambungan (Concatenation):
– Operator : + (penyambungan, bukan tambah)
Contoh :
‘Teknik’ + ‘Informatika’  hasil : ‘TeknikInformatika’
‘aaa’ + ‘ bbb’  hasil: ‘aaa bbb’
‘1’ + ‘2’  hasil: ’12’

2. Operasi Perbandingan :
STRING - next
2. Operasi Perbandingan
menghasilkan nilai boolean (true dan false)
< Lebih kecil
≤ Lebih kecil atau sama dengan
> Lebih besar
≥ Lebih besar atau sama dengan
= Sama dengan
≠ Tidak sama dengan
Contoh:
‘abcd’ = ‘abc’  hasil: false
‘aku’ < ‘AKU’  hasil: true
Syarat penamaan (variabel, konstanta, nama type
bentukan, nama field, nama fungsi,nama prosedur)
• Harus unik (tidak boleh dua buah nama yang
sama)
• Harus dimulai dengan huruf alfabet (tidak boleh
dimulai dg angka, spasi, atau karakter khusus
lainnya)
• Huruf besar dan huruf kecil tidak dibedakan
• Karakter penyusun nama hanya boleh huruf
alfabet, angka, dan ‘_’ (underscore)
• Tidak boleh mengandung operator aritmetika,
relasional, tanda banca, dan karakter khusus
lainnya
• Karakter tidak boleh dipisah dengan spasi
• Panjang nama tidak dibatasi
Contoh penamaan NAMA
Contoh yg salah Contoh yg benar

6titik Titik6 atau titik_6


Nilai ujian NilaiUjian atau Nilai_ujian
PT-1 PT_1 atau PT1
Hari! Hari
A1 A1
Yg diberi nama dalam Algoritma :

1. Peubah (variable) :
Tempat menyimpan nilai yg isinya dapat diubah
Contoh: X, nilai_ujian, jumlah : real
k : integer
2. Konstanta (constant)
Tempat penyimpanan di dalam memori yg nilainya tetap
selama pelaksanaan program dan Notasi yg
digunakan adalah const
Contoh ;
const
phi = 3.14, Nmaks = 100, sandi = ‘xyz’,
dll
Yg diberi nama dalam Algoritma -next:
3. Tipe Bentukan :
Nama tipe bentukan diberikan oleh pemrogram

Contoh:
Type
titik : record <x:real, y: real>
Type
Jam : record
< hh : integer {0..23}
mm : integer {0..59}
ss : integer {0..59} >
P : titik
J1, J2 : Jam

Titik dan Jam adalah nama tipe, sedangkan P adalah variabel yg


bertipe Titik, J1 dan J2 adalah variabel yg bertipe Jam
Yg diberi nama dalam Algoritma -next:

4. Nama Fungsi :
Function Maksimum (input A,B : integer)  integer
{ mengembalikan nilai terbesar antara A dan B}

Maksimum adalah nama fungsi

5. Nama prosedur :
Procedure Tukar(input/output A, B : integer)
{ mempertukarkan nilai A dan B}

Tukar adalah nama prosedur


NILAI dalam Algoritma
• Nilai adalah besaran dari tipe data yang
terdefinisi (tipe dasar atau tipe bentukan)
• Dapat berupa data yg disimpan di dalam
peubah atau konstanta, nilai dari hasil
hitung, atau nilai yg dikirim oleh fungsi
• Pada Algoritma, memanipulasi nilai di
dalam peubah/variabel (yg bertipe sama)
Pengisian Nilai ke dalam Peubah (Variable):
1. Pengisian secara langsung (assignment):
Mengisi sebuah nilai ke dalam peubah secara langsung (nilai yg diisikan
harus bertipe sama dg tipe peubah)
contoh :
M  16
PM*2
M  P + 100
PP+M

2. Pembacaan :
Nilai peubah dapat diisi secara eksternal dari piranti masukan, misalnya
dari keyboard, dari file, mouse, dsb.
Akan membaca sesuai apa yg kita masukkan (inputkan).
Contoh :
Read (M)
: komputer membaca nilai M yg diinputkan dari luar (mis: keyboard),
jika nilai yg diketik adalah 78, maka lokasi memori yg bernama M
sekarang berisi 78
EKSPRESI
• Transformasi nilai menjadi keluaran
dilakukan melalui suatu perhitungan
(komputasi)
• Cara perhitungan itu dinyatakan dalam
suatu ekspresi
• Ekspresi terdiri atas :OPERAND dan
OPERATOR
Tiga macam ekspresi :
1. Ekspresi Aritmetik (operator aritmetik):
Contoh : a*b, a*b/c, a div b * c, a+b*c
: d  a*b (tipe data d harus sama dengan hasil hitungan
ekspresi a*b)

2. Ekspresi Relasional (operator relasional):


Contoh : not ada, ada or ketemu, x < 5,
ada or (x=y), dll.

3. Ekspresi String (operator penyambungan (+))


Contoh :
‘Jl. Ganesa’ + ‘No.12’
Jenis Proses Algoritma
• Algoritma berisi langkah-langkah
penyelesaian suatu masalah (berurut,
pemilihan, pengulangan aksi)

Konstruksi Algoritma :
• Runtunan (sequence process)
• Pemilihan (selection process)
• Pengulangan (repetition/iteration process)
Runtunan (sequence process)
• Terdiri dari satu atau lebih pernyataan
• Tiap pernyataan dikerjakan secara berurutan sesuai dg urutan penulisannya
(sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan)

Bentuk umum :
proses 1
proses 2
proses 3

Contoh: mempertukarkan dua nilai dari dua buah variabel (peubah) A dan B.
Algoritma :
1. isikan nilai A ke dalam C
2. isikan nilai B ke dalam A
3. isikan nilai C ke dalam B
Hasil akhir : varibel A berisi nilai dari varibale B, dan variabel B berisi nilai dari
variabel A .
Pemilihan (selection process)
• Sebuah aksi dikerjakan jika kondisi tertentu dipenuhi
(True) dan apabila suatu kondisi tidak terpenuhi (false)
maka program akan melakukan aksi lain (jika ada) atau
langsung keluar dari blok pemilihan.
Contoh:
jika lampu traffic light berwarna merah, maka
berhenti
• Dalam Algoritma dan pemrograman Struktur pemilihan
dapat didefinisikan dengan dua cara yaitu menggunakan
statemen IF atau CASE.
Struktur IF
• Statemen IF akan diikuti oleh ekspresi
(sebagai kondsi yang diperiksa) dan selalu
berpasangan dengan kata kunci THEN.

Bentuk umum dari selection process : IF


if kondisi then
aksi
Pemilihan (selection process)-IF-next
• Struktur pemilihan If-then : hanya memberikan
satu pilihan aksi
• Struktur pemilihan If-then-else
– Memilih satu dari dua buah aksi bergantung pada nilai
kondisinya.
bentuk umum : if kondisi then
aksi 1
else
aksi 2
Contoh : if x > y then
tulis x sebagai bilangan terbesar
else
tulis y sebagai bilangan terbesar
Algoritma Pemilihan satu Aksi (IF-THEN)
Contoh:
Mencetak “genap” jika data masukan adalah bilangan genap.

Notasi Algoritma :

Program Genap
{mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari
piranti masukan merupakan bilangan genap}

Kamus
x : integer

Algoritma
Read (x)
If x mod 2 = 0 then
write(‘genap’)
endif
Algoritma Pemilihan dua aksi (IF-THEN-ELSE)
Contoh:
Mencetak “genap” jika data masukan adalah bilangan genap atau mencetak “ganjil” jika
data masukan adalah bilangan ganjil.

Notasi Algoritma :

Program Genap
{mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari
piranti masukan merupakan bilangan genap dan mencetak “bilangan ganjil jika
sebuah bilangan bulat yang dibaca merupakan bilangan ganjil}

Kamus
x : integer

Algoritma
Read (x)
If x mod 2 = 0 then
write(‘genap’)
Else
write(‘ganjil’)
endif
Pemilihan (selection process)-Nested-IF
• Struktur pemilihan bersarang (nested-if) :
– terdapat strktur IF didalam IF lainnya
– Aksi yang dilakukan lebih dari 2 buah

Bentuk umum :
if kondisi1 then
aksi1
else if kondisi2 then
aksi2
else
aksi-alternatif

Contoh :
if x > y then
if x > z then
tulis x sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
else
if y > z then
tulis y sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
Tiga aksi atau lebih (Nested-IF)
• Tiga kasus :
• Empat kasus :

Notasi algoritma : Notasi algoritma :

If kondisi1 then If kondisi1 then


aksi1 aksi1
Else Else
if kondisi2 then if kondisi2 then
aksi2 aksi2
else else
if kondisi3 then if kondisi3 then
aksi3 aksi3
endif else
endif if kondisi4 then
endif aksi4
endif
endif
endif
endif
Algoritma Pemilihan tiga aksi atau lebih (Nested-IF)
Contoh:
Menentukan bilangan positif, negatif atau nol dari sebuah bilangan bulat yang diinput dari piranti
masukan.

Notasi Algoritma :

Program JenisBilanganBulat
{menentukanapakah sebuah bilangan bulat merupakan bilangan positif, negatif, atau nol }

Kamus
x : integer

Algoritma
Read (x)
If x > 0 then
write(‘positif’)
Else
if x < 0 then
write(‘negatif’)
else
if x = 0 then
write(‘nol’)
endif
endif
endif
Kelebihan Struktur/Jenis Proses Pemilihan
• Kemampuannya yang memungkinkan
pemroses mengikuti jalur aksi yg berbeda
berdasarkan kondisi yang ada

• Memungkinkan menulis algoritma untuk


permasalahan praktis yang demikian
kompleks.
Struktur CASE
Konstruksi CASE dapat menyederhanakan
IF THEN ELSE yang bertingkat (lebih dari
2 kasus)
Konstruksi CASE
CASE ekspresi if ekspresi = nilai1 then
Nilai1 : aksi1 aksi1
Nilai2 : aksi2 else
Nilai3 : aksi3 if ekspresi = nilai2 then
... aksi2
... else
Nilain : aksin if ekspresi = nilai3 then
Otherwise : aksix aksi3
endCASE else {otherwise}
aksi x
endif
endif
endif
----------------------------------------------------------------------------
Ekspresi menghasilkan suatu nilai (konstanta), range dari
konstanta yang bukan bertipe real.
Contoh CASE
• Algoritma untuk membaca nomor hari (integer) , lalu
menuliskan nama hari sesuai dengan angka harinya.

------------------------------------------------------------------------------
-
Read(nomor_hari)
CASE nomor_hari
1: write(‘Minggu’)
2: write(‘Senin’)
3: write(‘Selasa’)
4: write(‘Rabu’)
5: write(‘Kamis’)
6: write(‘Jum’at’)
7: write(‘Sabtu;)
Otherwise: write(‘bukan hari yang benar’)
endCASE
NOTASI ALGORITMA
PROGRAM NamaHari
{ mencetak nama hari berdasarkan nomor hari (1..7) }

KAMUS
Nomor_hari : integer

ALGORITMA
Read(nomor_hari)
CASE nomor_hari
1: write(‘Minggu’)
2: write(‘Senin’)
3: write(‘Selasa’)
4: write(‘Rabu’)
5: write(‘Kamis’)
6: write(‘Jum’at’)
7: write(‘Sabtu;)
Otherwise: write(‘bukan hari yang benar’)
endCASE
Tidak semua bahasa
pemrograman menyediakan
struktur CASE

Gunakan struktur IF-THEN-ELSE


Ekuivalesi if-then-else dg CASE
If-Then-Else Case
Read(angka) Read(angka)
If angka = 1 then
write(‘satu’) Case angka
Else
if angka = 2 then
1: write(‘satu’)
write(‘dua’) 2: write(‘dua’)
elses
if angka = 3 then 3: write(‘tiga’)
write(‘tiga’)
elses 4: write(‘empat’)
if angka = 4 then
write(‘empat’)
otherwise :write(‘angka
else yg dimasukan salah’)
write(‘angka yg dimasukan salah’)
endif endcase
endif
endif
endif
Latihan CASE
• Buat algoritma untuk konversikan Huruf ke
Status dari Nilai Mahasiswa, dengan
menggunakan Struktur CASE.
Seperti :
A = Sangat Baik
B = Baik
C = Cukup
D = Kurang
E = Sangat Kurang
Jenis Proses : PENGULANGAN
(Repetition Process)
• Kelebihan komputer dibanding manusia
adalah kemampuan untuk melaksanakan
perintah berulangkali tanpa mengenal
lelah dan bosan
• Dalam algoritma, pengulangan (repetition
atau looping) dapat dilakukan beberapa
kali sampai kondisi pemberhentian
pengulangan tercapai
Struktur Pengulangan
<inisialisasi>
Awal pengulangan
Badan pengulangan
Akhir pengulangan
<terminasi>

• Inisialisasi dan terminasi tidak selalu harus ada,


namun pada beberapa kasus inisialisasi
umumnya diperlukan
Tiga konstruksi pengulangan
• FOR (pengulangan tanpa kondisi : jumlah pengulangan sudah
diketahui, sebelum konstruksi pengulangan dieksekusi)
• WHILE
• REPEAT

WHILE dan REPEAT (pengulangan dengan kondisi :


jumlah pengulangan tidak diketahui sebelum eksekusi program,
yang dapat ditentukan hanyalah kondisi berhenti pengulangan)
Pengulangan - FOR
• Diperlukan sebuah peubah (variable)
pencacah (counter)  untuk menghitung
sudah berapa kali pengulangan dilakukan
• Bentuk umum pengulangan FOR ada dua
macam :
– FOR menaik (ascending) / FOR positif
– FOR menurun (descending) / FOR negatif
FOR menaik (ascending) / FOR positif

Bentuk umum:
For pencacahnilai_awal to nilai_akhir do
Aksi
Endfor
Contoh pengulangan FOR Positif untuk Satu
Aksi
PROGRAM cetak_satuaksi
KAMUS
i: integer {pencacah pengulangan}

ALGORITMA
For i1 to 5 do {ulang sebanyak 5 kali}
Write(‘I Love Dinda’) {aksi yang diulang}

endfor
Contoh Notasi Algoritma pengulangan FOR Positif
untuk membuat tabel
PROGRAM cetak_tabel
KAMUS
a,b,c: integer
Bagi : real;
ALGORITMA
Write(‘-----------------------------------’)
write(‘a a*a a*a*a 1/a’)
Write(‘-----------------------------------’)
for a1 to 10 do
b a*a
c a*a*a
bagi 1/a
Write(a,b,c,bagi)
Endfor
Write(‘-----------------------------------’)
FOR menurun (descending) / FOR negatif

Bentuk umum:

For pencacahnilai_akhir downto nilai_awal do


Aksi
Endfor
Contoh pengulangan FOR Negatif untuk
Satu Aksi
PROGRAM cetak_ulangnegatif
KAMUS :
i: integer {pencacah pengulangan}

ALGORITMA :
For i10 downto 1 do {ulang sebanyak 10 kali secara
menurun}
Write(i) {Aksi yang diulang}

endfor
Pengulangan FOR tersarang
(nested-FOR)
• Perulangan FOR berada pada perulangan
FOR yang lainnya
• Perulangan yang lebih dalam akan
diproses terlebih dahulu sampai habis,
kemudian perulangan yang lebih luar baru
akan bertambah, masuk lagi ke
perulangan dalam sampai habis, dst. Dan
berakhir pada akhir pengulangan luar.
Contoh :Pengulangan FOR tersarang
(nested-FOR)
PROGRAM nested_for
KAMUS
I,j: integer {pencacah pengulangan}

ALGORITMA
For i1 to 3 do
For j1 to 2 do
write(i,j)
endfor
Endfor
Struktur pengulangan- repeat-until
• Bentuk umum :
Repeat
aksi
Until kondisi
(pengulangan aksi dilakukan hingga kondisi
berhenti terpenuhi)
- Pengulangan akan dijalankan terus kalau
kondisi masih bernilai FALSE
- Pengulangan berhenti, jika kondisi bernilai
TRUE
while-do vs repeat-until

Repeat-until vs while-do
Kondisi pengulangan kondisi pengulangan
Di evaluasi di akhir di evaluasi di awal

Pernyataan REPEAT memiliki makna yang sama dg


WHILE
Dalam beberapa masalah kedua pernyataan tsb
komplemen satu sama lain.
Contoh :
ALGORITMA :

I1
Repeat
write (‘hello pascal’)
II+1
Until I > 10
WHILE atau REPEAT ?
• Gunakan konstruksi WHILE pada kasus
yg mengharuskan terlebih dahulu
pemeriksaan kondisi objek sebelum objek
dimanipulasi
• Gunakan konstruksi REPEAT pada kasus
yg terlebih dahulu memanipulasi objek,
baru kemudian memeriksa kondisi objek
tersebut.
perbandingan
WHILE (benar) Repeat ( salah)
• ALGORITMA : • ALGORITMA :
• S0 • S0
• Read(x) • Repeat
• While x ≠ 0 do • read(x)
• s  s + 1/x • s  s + 1/x
• read(x) • Until x = 0
• Endwhile
• Write (s) • Write (s)
perbandingan
Repeat ( benar) While (salah)
ALGORITMA : ALGORITMA :
Repeat While nomormenu≠ 3 do
write(‘ MENU ‘) write(‘ MENU ‘)
write(‘1. Baca Data’) write(‘1. Baca Data’)
write(‘2. cetak data’) write(‘2. cetak data’)
write(‘3. keluar’) write(‘3. keluar’)
write(‘masukan pilihan anda(1/2/3) ? ‘) write(‘masukan pilihan anda(1/2/3) ? ‘)
read(nomormenu) read(nomormenu)
case nomormenu case nomormenu
1 : write (‘anda memilih menu nomor 1’) 1 : write (‘anda memilih menu nomor 1’)
2 : write(‘anda memilih meniu nomo 2’) 2 : write(‘anda memilih meniu nomo 2’)
3 : write(‘keluar program’ 3 : write(‘keluar program’
endcase endcase
endwhile
Until nomormenu = 3
Latihan
• Buatlah sebuah algoritma lengkap, untuk
menghitung jumlah deret bilangan bulat
dari 3 sampai dengan 10. dengan
menggunakan konstruksi pengulangan
REPEAT-UNTIL !
• Transformasikan algoritma di atas ke
program komputer dengan bahasa pascal
• Lakukan modifikasi algoritma dan program
komputer di atas untuk menghitung nilai
rata-rata, dan tampilkanlah nilai rata-rata
tersebut.
PEMROGRAMAN MODULAR
• adalah suatu teknik pemrograman di mana
program yang biasanya cukup besar
dibagi-bagi menjadi beberapa bagian
program yang lebih kecil .
• Dalam beberapa bahasa pemrograman
disebut : sub-rutin, modul, prosedur, atau
fungsi.
STRUKTUR POHON

PROGRAM A

SUBPROGRAM A1 SUBPROGRAM A2 SUBPROGRAM A3


ILUSTRASI
DEKLARASI
A, B, Temp : integer
ALGORITMA
{ baca nilai A dan B}
read(A)
read(B)
{proses pertukaran}
temp  A
AB
B  temp
{ tulis nilai A dan B setelah pertukaran }
output(A)
output(B)
Dipecah subprogram
DEKLARASI
A, B : integer

Baca(A,B:Integer)
ALGORITMA:
read(A)
read(B)

Tukar(A, B:integer)
DEKLARASI
temp : integer {peubah bantu}
ALGORITMA
temp  A
AB
B  temp
Tulis(A,B : integer)
ALGORITMA
output(A)
output(B)

ALGORITMA
Baca(A,B)
Tukar(A,B)
Tulis(A,B)
KEUNTUNGAN Pemrogram Modular

1. Program lebih pendek


2. Mudah menulis (banyak programer)
3. Mudah dibaca dan dimengerti
(bandingkan dg nonmodular dg banyak
instruksi)
4. Mudah didokumentasi
5. Mengurangi kesalahan dan mudah
mencari kesalahan(debug) program
6. Kesalahan yang terjadi bersifat “lokal”
Dua bentuk pemrogram modular :
PROSEDUR dan FUNGSI
• Struktur setiap subprogram tersebut pada
hakekatnya sama , yaitu :
– Nama modul (subprogram)
– Bagian deklarasi
– Algoritma (intruksi yg akan dilaksanakan)
• Perbedaan penggunaannya dalam bahasa
pemrograman Pascal :
– Prosedur merupakan modul(subprogram) yg
melakukan aktifitas tertentu tanpa adanya
pengembalian nilai
– Fungsi terdapat pengembalian nilai
PROSEDUR
• Dalam bahasa pemrograman
• Prosedur adalah modul program yang
mengerjakan tugas/aktifitas yg spesifik
dan menghasilkan suatu efek netto
(membandingkan keadaan awal dan keadaan
akhir dari suatu aktifitas prosedur)
• Setiap prosedur perlu mendefinisikan
keadaan awal sebelum rangkaian instruksi
di dalam prosedur dilaksanakan, dan
keadaan akhir yg diharapkan setelah
instruksi di dalam prosedur dilaksanakan
STRUKTUR PROSEDUR
• JUDUL (header)  nama prosedur dan
deklarasi parameter(kalau ada)
• DEKLARASI  mengumumkan nama-
nama dan tipe data
• ALGORITMA  badan prosedur
(instruksi)

*sama dengan struktur ALGORITMA


Nama Prosedur
• Nama yang unik
• Sebaiknya diawali dengan kata kerja
karena prosedur berisi suatu aktifitas
– Misalnya: HitungLuas, Tukar, CariMaks,
Tulis, dll.
Parameter
• Adalah nama-nama peubah (variabel)
yang dikdeklarasikan pada bagian header
(judul) prosedur dan titik dimana dia
dipanggil.
• Penggunaan parameter menawarkan
mekanisme pertukaran informasi (antara
yg memanggil (program/algoritma utama)
dg prosedur itu sendiri)
Parameter dibedakan menjadi dua :
• Parameter aktual (argumen) :
– Parameter yg disertakan pada waktu pemanggilan prosedur
(parameter yg ada pada program/algoritma utama).
• Parameter formal :
– Parameter yg dideklarasikan di dalam bagian header prosedur
itu sendiri.

• Ketika prosedur dipanggil, parameter aktual


menggantikan parameter formal.
• Tiap-tiap parameter aktual berpasangan dengan
parameter formal yg bersesuain (berkorespondasi satu
satu)
Notasi algoritma untuk
PROSEDUR
Procedure NamaProsedur(deklarasi
parameter, jika ada)
{spesifikasi prosedur, berisi penjelasan tentang apa yg dilakukan oleh
prosedur ini.
K.awal : keadaan sebelum prosedur dilaksanakan.
K. akhir : keadaan setelah prosedur dilaksanakan}
DEKLARASI
{semua nama yg dipakai di dalam prosedur dan hanya berlaku lokal di
dalam prosedur ini}
ALGORITMA
{badan prosedur, berisi urutan instruksi}
Pendeklarasian Parameter dalam prosedur
bukanlah keharusan

Contoh :
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : sembarang}
{K.akhir : luas segitiga tercetak}
DEKLARASI
Alas, tinggi, luas : real
ALGORITMA
Read(alas, tinggi)
Luas  (alas * tingg) / 2
Write(luas)
Pemanggilan Prosedur

• Prosedur bukan program yg beridiri sendiri


• Prosedur tidak dapat dieksekusi secara
langsung.
• Instruksi-instruksi di dalam prosedur dapat
dilaksanakan bila prosedur itu diakses.
• Prosedur diakses dg cara memanggil namanya
dari program pemanggil (misalnya dari program
utama atau modul program lainnya)
• Jika prosedur tanpa parameter, maka
pemanggilannya cukup dg nama prosedurnya
saja, contoh : HitungLuasSegitiga
Notasi Algoritma :
PROGRAM Segitiga
{menghitung luas segitiga}
DEKLARASI
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : sembarang}
{K.akhir : luas segitiga tercetak}
DEKLARASI
Alas, tinggi, luas : real
ALGORITMA
Read(alas, tinggi)
Luas  (alas * tinggi) / 2
Write(luas)
ALGORITMA
HitungLuasSegitiga
Latihan
• BUATLAH NOTASI ALGORITMA UNTUK
MELAKUKAN PEMANGGILAN
PROSEDUR LUASSEGITIGA SEBANYAK
3X
Nama Global dan Nama Lokal
• Nama Lokal :
Nama-nama (Konstanta, peubah(variabel), tipe, dll)
yang dideklarasikan di dalam prosedur (termasuk
parameter, jika ada). (hanya dikenal/digunakan
dalam lingkup (scope) prosedur tersebut

• Nama Global :
Nama-nama (Konstanta, peubah(variabel), tipe, dll)
yang dideklarasikan di dalam program utama. (dapat
dikenal/digunakan dibagian manapun dalam program
(progam utama maupun prosedur).
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
alas, tinggi : real
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : sembarang}
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas  (alas * tinggi) / 2
Write(luas)
ALGORITMA
read(N) { tentukan banyaknya segitiga }
for I  1 to N do
read(alas, tinggi
HitungLuasSegitiga
endfor

_______________________________________________________________
Nama Peubah (variabel) I, N, alas, tinggi  variabel GLOBAL
Nama Peubah (variabel) luas  variabel LOKAl
Menggunakan variabel Global atau variabel Lokal

• Bila suatu peubah (variabel) digunakan di


seluruh bagian program (baik program utama
maupun prosedur), maka deklarasikanlah
peubah tsb secara Global.
• Bila suatu peubah (variabel) hanya digunakan di
dalam prosedur, maka deklarasikanlah peubah
tsb secara Lokal.
• Gunakan peubah global sedikit mungkin
• Penggunaan variabel lokal membuat program
lebih elegan
• Penggunaan variabel lokal dapat
meminimumkan usaha pencarian kesalahan yg
disebabkan oleh nama-nama tsb.
Parameter
• Prosedur yg baik adalah prosedur yg
independen dari program utama/ program
yg memanggilnya.
• Prosedur yg baik tidak menggunakan
peubah-peubah global di dalam prosedur.
• Jika program utama perlu
mengomunikasikan nilai peubah Global
ke dalam prosedur, maka gunakanlah
PARAMETER.
Parameter - next
• Penggunaan parameter adalah mekanisme
pertukaran informasi antara prosedur dengan
yang memaggilnya (program utama maupun
subprogram lainnya).
• Prosedur dengan parameternya (Parameter
Formal) dapat diakses dg cara memanggil
namanya dari program yg memanggilnya yg
disertai dg parameter dari program yg
memanggil tsb (Parameter Aktual).
Contoh: NamaProsedur(parameter aktual)
• Tiap parameter aktual berpasangan dg
paramater formal yg bersesuaian
Parameter - next
• Ketika prosedur dipanggil, parameter
aktual berkoresponden satu-satu dengan
parameter formal (parameter yg
dideklarasikan pada bagian header
prosedur)
Aturan korespondensi satu satu
• Jumlah parameter aktual harus sama
dengan jumlah parameter formal.
• Tiap parameter aktual harus bertipe sama
dengan tipe parameter formal yg sesuai.
• Tiap parameter aktual harus diekspresikan
dalam cara yg taat azas dg parameter
formal yg bersesuaian, bergantung pada
jenis parameter formal.
Jenis parameter formal yg
disertakan di dalam prosedur :
• Parameter Masukan (input parameter) :
Parameter yg nilainya berlaku sebagai masukan untuk
prosedur.
• Parameter Keluaran (Output parameter):
Parameter menampung keluaran yg dihasilkan oleh
prosedur.
• Parameter masukan/keluaran (input/output
parameter) :
Parameter yg berfungsi sebagai masukan sekaligus
keluaran bagi prosedur tsb.
Parameter masukan
• Nilai parameter aktual diisikan ke dalam
parameter formal yg sesuai.
• Perubahan nilai parameter di dalam badan
prosedur tidak mengubah nilai parameter
aktual.
• Nama parameter aktual boleh berbeda dg
nama parameter formal yg sesuai
Contoh : paramater masukan
Procedure HitungLuasSegitiga(input alas,
tinggi : real)
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : alas dan tinggi sudah terdefinisi nilainya}
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas  (alas * tinggi) / 2
Write(luas)
Program utama yg memanggil nama prosedur:
harus mendeklarasikan nama prosedur dan memanggilnya
dg parameter aktual yg sesuai
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
alas, tinggi : real
Procedure HitungLuasSegitiga(input alas, tinggi : real)
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : alas dan tinggi sudah terdefinisi nilainya }
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas  (alas * tinggi) / 2
Write(luas)
ALGORITMA
read(N) { tentukan banyaknya segitiga }
for I  1 to N do
read(alas, tinggi
HitungLuasSegitiga(alas,tinggi)
endfor
nama parameter aktual tidak harus sama dengan nama
parameter formal : yg dipentingkan adalah nilainya
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
a, t : real
Procedure HitungLuasSegitiga(input alas, tinggi : real)
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : alas dan tinggi sudah terdefinisi nilainya }
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas  (alas * tinggi) / 2
Write(luas)
ALGORITMA
read(N) { tentukan banyaknya segitiga }
for I  1 to N do
read(a, t)
HitungLuasSegitiga(a,t)
endfor
Parameter aktual boleh berupa
ekspresi atau konstanta
Contoh :

• HitungLuasSegitiga(a*0.2, t*0.1)

• HitungLuasSegitiga(12, 6)
Parameter keluaran
• Parameter keluaran dideklarasikan di dalam
header prosedur, sebagaimana parameter
masukan
• Parameter keluaran dideklarasikan dengan
keyword OUTPUT.
• Ketika prosedur yg mengandung parameter
keluaran dipanggil, maka nama parameter
aktual menggantikan (substitute) nama
parameter formal yg bersesuaian.
Contoh : parameter keluaran-next
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
a, t, L : real
Procedure HitungLuasSegitiga(input alas, tinggi : real, output
luas:real)
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : alas dan tinggi sudah terdefinisi nilainya }
{K.akhir : luas segitiga tercetak}
ALGORITMA
Luas  (alas * tinggi) / 2
ALGORITMA
read(N) { tentukan banyaknya segitiga }
for I  1 to N do
read(a, t)
HitungLuasSegitiga(a, t, L)
Write(L)
endfor
Parameter masukan/keluaran
• Prosedur harus dapat mengakomodasi baik
masukan dari dan keluaran ke blok program
pemanggil
• Maka gunakan parameter masukan/ keluaran
• Bila parameter aktual diubah nilainya di dalam
badan prosedur, maka sesudah pemanggilan
prosedur nilai parameter aktual di titik
pemanggilan juga berubah
• Parameter masukan/keluaran dideklarasikan di
dalam header prosedur dengan keyword
INPUT/OUTPUT
• Parameter aktual harus berupa peubah, tidak
boleh berupa ekspresi atau konstanta
Contoh : parameter masukan/keluaran
PROGRAM Cetak0Sampai10
{ mencetak nilai dari 0 sampai 10 }

DEKLARASI
x : integer
procedure Inc(input/output x : integer)
{menaikan nilai x sebesar 1}
{K.Awal : x sudah terdefinisi nilainya}
{K.Akhir : nilai x bertambah 1}
DEKLARASI

ALGORITMA
xx+1

ALGORITMA
X0
repeat
write(x)
inc(x)
until x > 10
Parameter masukan - parameter masukan/keluaran

PROGRAM xyz
PROGRAM xyz DEKLARASI
DEKLARASI a, b : integer
a, b : integer Procedure tambah(input/output
Procedure tambah(input x,y:integer) x,y:integer)
Deklarasi Deklarasi
Algoritma Algoritma
xx+4 xx+4
Y  y +4 Y  y +4
write(‘nilai x dan y di akhir prosedur write(‘nilai x dan y di akhir prosedur
tambah:’) tambah:’)
Write(‘ x=‘, x) Write(‘ x=‘, x)
Write(‘ y=‘, y) Write(‘ y=‘, y)
ALGORITMA ALGORITMA
a  15 a  15
B  10 B  10
Write(‘nilai a dan b sebelum panggil Write(‘nilai a dan b sebelum panggil
prosedur tambah:’) prosedur tambah:’)
Write(‘ a=‘, a) Write(‘ a=‘, a)
Write(‘ b=‘, b) Write(‘ b=‘, b)
Tambah(a,b) Tambah(a,b)
Write(‘nilai a dan b sesudah panggil Write(‘nilai a dan b sesudah panggil
prosedur tambah:’) prosedur tambah:’)
Write(‘ a=‘, a) Write(‘ a=‘, a)
Write(‘ b=‘, b) Write(‘ b=‘, b)
Program dg prosedur atau
tanpa prosedur
• Dianjurkan menulis program yg modular
• Program yg dipecah menjadi beberapa
prosedur menunjukkan teknik
pemrograman yg baik dan terstruktur
Prosedur dg parameter atau
tanpa parameter
• Dianjurkan menulis prosedur dg parameter
• Parameter dapat mengurangi kebutuhan
penggunaan peubah (variabel) global
Parameter masukan atau
parameter keluaran
• Bila prosedur menghasilkan keluaran yg
digunakan oleh program pemanggil, gunakan
parameter keluaran untuk menampung keluaran
tsb.
• Bila prosedur tidak menghasilkan keluaran, atau
kalaupun menghasilkan keluaran tapi keluaran
tsb hanya digunakan di dalam prosedur itu saja,
maka gunakan parameter masukan.
• Bila prosedur menerima masukan sekaligus
keluaran pada parameter yg sama, gunakan
parameter masukan/keluaran.

Anda mungkin juga menyukai