Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

74
ALGORITM T FAKUL Jl. Siliwangi No E-Mail : infor M O D U L MA dan PEMROGRAMAN Oleh : Devi Febrianty Rahmi Nur Shofa TEKNIK INFORMATIKA LTAS TEKNIK UNIVERSITAS SILIWANGI o. 24 Tasikmalaya Kotak Pos 164 Tlp. (0265) 323537 [email protected].id ; URL : http://www.unsil.ac.id N

Transcript of Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Page 1: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

ALGORITMA dan

TEKNIK INFORMATIKAFAKULTAS TEKNIK UNIVERSITAS SILIWANGI

Jl. Siliwangi No. 24 E-Mail : [email protected]

M O D U L

ALGORITMA dan PEMROGRAMAN

Oleh :

Devi Febrianty Rahmi Nur Shofa

TEKNIK INFORMATIKA

FAKULTAS TEKNIK UNIVERSITAS SILIWANGI Jl. Siliwangi No. 24 Tasikmalaya Kotak Pos 164 Tlp. (0265) 323537

Mail : [email protected] ; URL : http://www.unsil.ac.id

PEMROGRAMAN

Page 2: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

DAFTAR ISI

1 KONSEP DASAR PEMROGRAMAN 2

2 KONSEP DASAR ALGORITMA 6

3 ATURAN PENULISAN NOTASI ALGORITMA 10

4 TIPE DATA, NAMA, NILAI 15

5 AKSI SEKUENSIAL 25

6 PEMILIHAN 28

7 PENGULANGAN 33

8 RECORD 37

9 ARRAY 42

10 PROSEDUR 45

11 FUNGSI 57

12 ARRAY DUA DIMENSI (MATRIKS) 59

13 SEARCHING 61

14 SORTING 67

DAFTAR PUSTAKA 73

Page 3: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 2

1 KONSEP DASAR PEMROGRAMAN

1.1 Pengertian Program dan Pemrograman

Komputer merupakan alat bantu penyelesaian masalah di berbagai bidang: Pendidikan, Perbankan,

Industri, Penerbangan, Kedokteran, Permainan, dll

Tetapi, permasalahan tidak dapat disodorkan begitu saja ke depan komputer, karena sebenarnya mesin

komputer hanyalah benda mati yang tidak bisa apa-apa. Manusia harus merumuskan langkah-langkah

pemecahan masalah dalam runtunan instruksi yang dapat dilaksanakan oleh komputer yang disebut program.

Program merupakan runtunan atau himpunan instruksi(perintah) tertulis yang ditanamkan ke dalam

komputer untuk menyelesaikan masalah.

Pemrograman merupakan pengerjaan penulisan instruksi oleh programmer untuk menyelesaikan suatu

masalah.

Tahapan Penyelesaian Masalah oleh Komputer

1.2 Bahasa Pemrograman

Program harus dibuat dalam bahasa yang dimengerti oleh komputer yang disebut bahasa pemrograman

supaya instruksi yang ditulis oleh programmer dapat dilaksanakan oleh komputer .

1. Bahasa Mesin (Mnemonic Code)

Bahasa mesin adalah bahasa yang berisi kode-kode mesin yang hanya dapat diinterpretasikan langsung

oleh mesin komputer. Bahasa ini merupakan bahasa level

terendah dan berupa kode numerik 0 dan 1.

Keuntungan : Eksekusi cepat

Kerugian : Sangat sulit dipelajari manusia

2. Bahasa Assembly

Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin memiliki simbol

sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk

pengurangan, dan lain-lain.

Kelebihan : Eksekusi cepat, masih bisa dipelajari daripada bahasa mesin, file kecil

Kekurangan : Tetap sulit dipelajari, program sangat panjang

Page 4: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 3

3. Bahasa Tingkat Tinggi (High Level Language)

Bahasa tingkat tinggi adalah bahasa pemrograman yang lebih tinggi daripada bahasa assembly. Bahasa

ini lebih dekat dengan bahasa manusia dan lebih dipahami manusia.

Contoh: Pascal, Basic, Cobol, C, C++, Java, dll.

Keuntungan :

- Mudah dipelajari

- Mendekati permasalahan yang akan dipecahkan

- Kode program pendek

Kerugian : Eksekusi lambat karena ada proses pengubahan perintah dalam bahasa ini ke dalam bahasa

mesin oleh Translator(Penterjemah)

Bahasa generasi ini disebut juga bahasa generasi ke-3 (3rd Generation Programming Language).

4. Bahasa yang berorientasi pada masalah spesifik

Bahasa ini adalah bahasa yang digunakan langsung untuk memecahkan suatu masalah tertentu.

Misalnya SQL untuk database. Bahasa ini juga masuk ke bahasa tingkat tinggi. Bahasa ini disebut juga

bahasa generasi ke-4 (4th Generation Programmming Language).

Translator(Penterjemah)

Translator berfungsi untuk menterjemahkan program yang ditulis dalam bahasa pemrograman tingkat

tinggi ke dalam bahasa mesin. Translator dapat dibedakan menjadi :

– Interpreter : menterjemahkan dan mengeksekusi baris per baris instruksi. Contoh bahasa Basic.

– Compiler : mengeksekusi program setelah seluruh instruksi diterjemahkan. Contoh bahasa Pascal,

C, Ada ,C++, dll.

1.3 Belajar memprogram dan Belajar bahasa pemrograman

· Belajar memprogram adalah belajar tentang strategi, metodologi, dan sistematika pemecahan masalah,

kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.

Sifat : Pemahaman persoalan, analisis, sintesis

Titik Berat : Designing Program

· Belajar bahasa pemrograman adalah belajar memakai suatu bahasa, aturan tata bahasanya, instruksi-

instruksinya, tata cara pengoperasian compiler-nya untuk membuat program yang ditulis dalam bahasa

itu saja.

Sifat : Keterampilan

Titik Berat : Coding Program

Produk yang dihasilkan oleh seorang pemrogram adalah program dengan rancangan yang baik

(metodologis, sistematis), yang dapat dieksekusi oleh mesin, berfungsi dengan benar, sanggup melayani

segala kemungkinan masukan, dan didukung dengan adanya dokumentasi.

Pengajaran pemrograman titik beratnya adalah membentuk seorang perancang ”designer” program,

sedangkan pengajaran bahasa pemrograman titik beratnya adalah membentuk seorang ”coder”(juru kode).

Pada prakteknya, suatu rancangan harus dapat dikode untuk dieksekusi dengan mesin. Oleh karena itu,

belajar pemrograman dan belajar bahasa pemrograman saling komplementer, tidak mungkin dipisahkan satu

sama lain

Page 5: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 4

Tetapi, karena banyak bahasa pemrograman yang dapat digunakan dan pemilihannya akan sangat

tergantung kepada masalah yang dipecahkan, maka belajar memprogram menjadi lebih penting daripada

belajar bahasa pemrograman. Keduanya diperlukan tetapi dalam tingkat yang berbeda.

1.4 Langkah-langkah pemrograman Komputer :

1. Mendefinisikan masalah : menentukan masalahnya seperti apa, apa saja yang harus dipecahkan dengan

komputer, apa masukannya, dan bagaimana keluarannya

2. Menentukan solusi : mencari jalan bagaimana masalah tersebut diselesaikan. Jika masalah terlalu

kompleks, maka ada baiknya masalah tersebut dipecah menjadi modul-modul kecil agar lebih mudah

diselesaikan.

3. Memilih algoritma : pilihlah algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut

4. Menulis Program : menuliskan program dalam salah satu bahasa pemrograman

Pilihlah bahasa yang sesuai dengan permasalahan, mudah dipelajari, mudah digunakan, dan lebih baik

lagi jika sudah dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan platform

lainnya.

5. Menguji program : Menentukan apakah program berhasil dikompilasi dengan baik ? apakah program

dapat menghasilkan keluaran yang diinginkan?

Langkah keempat dan kelima bisa dilakukan berulang-ulang sampai program diyakini benar-benar sesuai

dengan yang diharapkan

6. Menulis dokumentasi : Menulis dokumentasi sangat penting agar pada suatu saat jika kita akan

melakukan perubahan atau membaca source code yang sudah kita tulis dapat kita ingat-ingat lagi dan kita

akan mudah membacanya. Caranya adalah dengan menuliskan komentar-komentar kecil tentang apa

maksud kode tersebut, untuk apa, variabel apa saja yang digunakan, untuk apa, dan parameter-parameter

yang ada pada suatu prosedur dan fungsi.

7. Merawat program : Program yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang

sebelumnya tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas baru yang dulu tidak

ada.

Contoh Permasalahan : Menghitung dan menampilkan Luas Persegi Panjang

Tahapan penyelesaian :

1. Mendefinisikan Masalah

· Masukan / Input : panjang, lebar

· Keluaran / Output : Luas

2. Menentukan Solusi + Memilih Algoritma

Contoh urutan solusi :

· Baca input panjang

· Baca input lebar

· Hitung Luas = panjang x lebar

· Tampilkan Luas

Page 6: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 5

3. Menulis Program

Contoh penulisan program dalam Bahasa Pascal dan Hasilnya Program Contoh Tampilan di layar

Program Luas_Persegi_Panjang;

Var

panjang, lebar, Luas : integer;

Begin

Write(’Panjang : ’);

Readln(panjang);

Write(’Lebar : ’);

Readln(lebar);

Luas := panjang * lebar;

Write(’Luas persegi Panjang = ’,

Luas);

Readln;

End.

Panjang : 20

Lebar : 6

Luas persegi Panjang = 120

Page 7: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 6

2 KONSEP DASAR ALGORITMA

2.1 Pengertian Algoritma Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis

dan tidak tergantung pada bahasa pemrograman tertentu.

Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam Algoritma harus logis

(masuk akal dan mengikuti suatu urutan tertentu, tidak boleh melompat-lompat) serta harus dapat

ditentukan bernilai salah atau benar.

Perbedaan Algoritma dan Program

Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer, algoritma harus ditulis

dalam notasi bahasa pemrograman sehingga dinamakan program. Jadi program adalah perwujudan atau

implementasi teknis Algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga dapat dilaksanakan

oleh komputer.

Tahapan Pelaksanaan algoritma oleh komputer

Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah

pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik maka proses

pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.

Page 8: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 7

2.2 Algoritma untuk memecahkan permasalahan sehari-hari

Contoh 1 : Jika seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak pasti akan

melakukan suatu langkah-langkah tertentu sehingga masakannya atau kuenya jadi dan rasanya enak.

Contoh 2 : Algoritma TUKAR ISI BEJANA

Diberikan dua buah bejana A dan B, bejana A berisi larutan berwarna merah, bejana B berisi larutan

berwarna biru. Pertukarkan isi kedua bejana itu sedemikian sehingga bejana A berisi larutan berwarna biru

dan bejana B berisi larutan berwarna merah.

Deskripsi Algoritma 1:

Aksi 1 : Tuangkan larutan dari bejana A ke dalam bejana B

Aksi 2 : Tuangkan larutan dari bejana B ke dalam bejana A.

· Algoritma TUKAR ISI BEJANA di atas tidak menghasilkan pertukaran yang benar. Langkah di atas

tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua larutan tersebut.

· Untuk mempertukarkan isi duah bejana, diperlukan sebuah bejana tambahan sebagai tempat

penampungan sementara, misalnya bejana C. Maka algoritma untuk menghasilkan pertukaran yang

benar adalah sebagai berikut :

Deskripsi Algoritma 2:

Aksi 1 : Tuangkan larutan dari bejana A ke dalam bejana C.

Aksi 2 : Tuangkan larutan dari bejana B ke dalam bejana A.

Aksi 3 : Tuangkan larutan dari bejana C ke dalam bejana B.

Contoh 3 : Ibu Tati mengupas kentang untuk makan malam

Sub masalah : 1. Apakah kentangnya harus dibeli dulu atau sudah di dapur?

2. Apakah pisau sudah siap?

3. Berapa jumlah kentang yang dikupas?

Maka kita harus membatasi dengan jelas keadaan awal dan keadaan akhirnya. Keadaan awal dan

keadaan akhir algoritma dapat dijadikan acuan bagi pemrogram dalam merancang sebuah algoritma

Initial State(T0) : Kentang sudah ada di kantong plastik, yang ditaruh di lemari di dapur dimana Ibu Tati

akan mengupasnya, pisau ada di rak.

Final State(T1) : 100 Kentang dalam keadaan terkupas siap untuk dimasak dan kantong kentangnya

harus dikembalikan ke lemari lagi jika masih ada kentangnya

Deskripsi Algoritma 1

Aksi 1 : Ibu Tati mengambil kantong kentang dari lemari Aksi 2 : Ibu Tati mengambil pisau dari rak Aksi 3 : Ibu Tati mengupas kentang Aksi 4 : Ibu Tati mengembalikan kantong kentang ke dalam lemari

Page 9: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 8

· Deskripsi Algoritma di atas masih belum memenuhi Final State dimana kentang yang sudah dikupas ada

100 buah dan kantong kentang harus dikembalikan ke lemari jika masih ada kentangnya. Pada algoritma

tersebut kentang yang dikupas hanya 1 dan Aksi 4 akan tetap dilaksanakan walaupun kantong kentang

sudah kosong

· Supaya kentang yang sudah terkupas ada 100 maka perlu dilakukan proses PENGULANGAN

pengupasan kentang sebanyak 100 kali. Dan supaya Ibu Tati hanya mengembalikan kantong kentang ke

lemari hanya jika masih ada isinya, maka perlu ada PEMILIHAN berdasarkan kondisi isi kantong

kentang. Maka algoritma untuk mencapai Final State yang benar adalah sebagai berikut :

Deskripsi Algoritma 2

Aksi 1 : Ibu Tati mengambil kantong kentang dari lemari dan

Aksi 2 : Ibu Tati mengambil pisau dari rak

Aksi 3 : Selama kentang terkupas < 100 maka

· Kupas 1 kentang

Aksi 4 : Lihat isi kantong

· Kantong Kosong à buang

· Kantong Tidak kosong à Kembalikan kantong ke lemari

Ciri penting algoritma:

· Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.

· Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (Ambiguitas).

· Algoritma memiliki nol atau lebih masukan (input).

· Algoritma memiliki nol atau lebih keluaran (output).

· Algoritma harus efektif (setiap langkah harus sederhana sehingga dapat dikerjakan dalam waktu yang

efisien).

2.3 Struktur Dasar Algoritma

Langkah-langkah penyelesaian masalah bisa berupa :

a. Runtunan (sequence))

Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan berurutan sesuai aturan

penulisannya. Urutan instruksi menentukan keadaan akhir algoritma, jika urutannya diubah maka hasil

akhirnya mungkin akan berubah. Urutan instruksi menunjukkan cara berfikir penyusun algoritma dalam

menyelesaikan masalah

Runtunan Instruksi : Instruksi 1 Instruksi 2 Instruksi 3

Contoh : Algoritma Tukar isi Bejana

Runtunan instruksi :

1. Tuangkan larutan dari bejana A ke dalam bejana C

2. Tuangkan larutan dari bejana B ke dalam bejana A

3. Tuangkan larutan dari bejana C ke dalam bejana B

Hasil akhir :

Bejana A berisi larutan dari bejana B, bejana B berisi larutan dari bejana A

Jika runtunan instruksi diubah maka hasilnya berubah

Page 10: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 9

b. Pemilihan (selection)

Adakalanya sebuah instruksi dikerjakan jika sebuah kondisi tertentu terpenuhi

Struktur umum : If kondisi

then

Aksi

atau If kondisi then

Aksi 1

Else

Aksi 2

Contoh :

If Amir memperoleh juara kelas then

Ayah akan membelikannya hadiah

If Jalan Dago macet then

Ambil alternative Jalan Dipati Ukur

If Kantong Kentang kosong then

Buang

Else

Kembalikan kantong kentang ke lemari

Endif

c. Pengulangan (repetition)

Komputer tidak pernah bosen dan lelah jika diminta untuk mengerjakan instruksi secara berulang-ulang.

Contoh :

· Menulis kalimat ”Saya harus lebih giat belajar” sebanyak 1000 kali

Ulangi :

- Tulis kalimat ” Saya harus lebih giat belajar”

Sampai jumlah_kalimat = 1000

· Mengupas 100 buah kentang

Selama kentang terkupas < 100 maka

- Kupas 1 kentang

Page 11: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 10

3 ATURAN PENULISAN NOTASI ALGORITMA

Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemrograman dan komputer yang

mengeksekusinya melainkan bersifat umum tetapi notasi-notasi algoritma dapat diterjemahkan ke dalam

berbagai bahasa pemrograman.

Notasi algoritma dapat berupa :

– Uraian kalimat deskriptif (narasi)

Instruksi pada algoritma dapat dituliskan dalam bahasa sehari-hari (B.Indonesia, B.Inggris, dsb). Tidak

aturan yang baku untuk menuliskan algoritma dalam bentuk notasi ini, tetapi penulisan algoritma

menggunakan notasi ini dapat menimbulkan ambiguitas.

– Bagan alir (flow chart).

Instruksi-instruksi pada Algoritma digambarkan secara grafis(menghasilkan sebuah bagan)

menggunakan simbol-simbol tertentu dengan aturan sebagai berikut :

Simbol Keterangan

Tanda Start(Mulai) atau

Tanda End (Selesai)

Proses

Operasi Input atau Output

Percabangan / Pengambilan Keputusan

Aliran Data

Pembuatan flowchart akan sulit dilakukan untuk program yang sangat kompleks

– Pseudo-code

Penulisan teks algoritma dengan Pseudo-code menggunakan notasi-notasi tertentu yang mendekati

bahasa pemrograman sehingga lebih mudah ditranslasikan ke dalam bahasa pemrograman.

Page 12: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 11

Aturan Penulisan Teks Algoritma :

Judul Algoritma { Bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut.

Nama sebaiknya singkat dan menggambarkan apa yang dilakukan oleh algoritma tersebut. } Kamus (Deklarasi Algoritma) { Bagian untuk mendefinisikan semua nama yang digunakan di dalam program. Nama tersebut dapat

berupa nama konstanta, variabel, tipe, prosedur dan fungsi. }

Deskripsi Algoritma { Bagian ini berisi uraian langkah-langkah penyelesaian masalah yang ditulis dengan menggunakan

notasi yang akan dijelaskan selanjutnya }

Contoh 1 : Algoritma Luas_Lingkaran

Menghitung dan menampilkan Luas Lingkaran dengan masukan jari-jari lingkaran

Contoh Penulisan Algoritma :

– Uraian kalimat deskriptif (narasi)

DESKRIPSI :

o Baca jari-jari lingkaran (R)

o Phi ß 3.14

o Luas ß Phi x R x R

o Tulis Luas

– Flowchart

Mulai

Selesai

Phi 3.14

Luas Phi * R * R

Baca R

TulisLuas

Page 13: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 12

– Pseudo-code Algoritma Luas_Lingkaran {Menerima masukan jari-jari lingkaran(R), menghitung Luasnya dengan rumus 3.14 * R * R, kemudian menuliskan hasilnya} Kamus

const Phi : real = 3.14 R, Luas : real

Deskripsi read(R) Luas ß Phi * R * R write(Luas)

Contoh 2 : Algoritma Kelulusan_Mhs

Diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa

tersebut dinyatakan lulus jika nilai lebih kecil dari 60 maka dinyatakan tidak lulus.

– Uraian kalimat deskriptif (narasi)

DESKRIPSI :

o baca nama dan nilai mahasiswa.

o jika nilai >= 60 maka keterangan = lulus

o tetapi jika nilai < 60 maka keterangan = tidak lulus.

o tulis nama dan keterangan

– Flow chart

Page 14: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 13

– Pseudo-code Algoritma Kelulusan_Mhs {Menerima masukan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika tidak maka dinyatakan tidak lulus} Kamus

Nama : string Nilai : integer Keterangan : string

Deskripsi read (nama, nilai) if nilai >= 60 then

keterangan ß ‘lulus’ else

keterangan ß ‘tidak lulus’ endif write(nama, keterangan)

Contoh 3 : Algoritma Cetak_Frase

Diberikan sebuah angka, kemudian tuliskan frase ‘Dasar Pemrograman’ sebanyak angka tersebut

– Uraian kalimat deskriptif (narasi)

DESKRIPSI :

o baca angka

o selama jumlah_frase_tercetak < angka

- tulis ’Dasar Pemrograman’

o tulis nama dan keterangan

Page 15: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 14

– Flow chart

– Pseudo-code

Algoritma Cetak_Frase {Menerima masukan sebuah angka, kemudian tuliskan frase ‘Dasar Pemrograman’ sebanyak angka tersebut } Kamus

angka : integer i : integer

Deskripsi read (angka) i ß 0 while i < angka do

write(‘Dasar Pemrograman’) i ß i + 1

endwhile

Page 16: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 15

4 TIPE DATA, NAMA, NILAI

4.1 TIPE

Pada umumnya, program komputer bekerja dengan memanipulasi objek(data) di dalam memori.

Objek(data) yang akan diprogram bermacam-macam jenis atau tipenya misalnya nilai numerik(angka),

karakter(huruf), kumpulan karakter, dll.

Suatu tipe menyatakan jenis data yang akan dimanipulasi dalam program, gunanya untuk

mendefinisikan objek yang akan diprogram. Suatu tipe diacu dari namanya. Nilai-nilai yang dicakup oleh

tipe tersebut dinyatakan dalam domain nilai. Tipe data dikelompokkan menjadi tipe dasar dan tipe bentukan

4.1.1 Tipe dasar

Tipe yang dapat langsung dipakai(angka-angka atau karakter) karena sudah didefinisikan sebelumnya

oleh pemroses bahasa

1. Bilangan Bulat

Bilangan yang tidak mengandung pecahan desimal.

· Nama Tipe : Integer

· Domain Nilai :

Secara teoritis tak terbatas dari -∞ s.d +∞. Pada algoritma dapat dibatasi tergantung kebutuhan

untuk objek, misalnya untuk jam [0..23]. Dalam implementasinya pada bahasa pemrograman,

tipe integer punya rentang nilai terbatas untuk menghemat memory.

· Contoh nilai : 300, 0, -1000, 113010038, -24

· Contoh objek : Nim, Jam, Menit, Detik

2. Bilangan Riil

Bilangan yang mengandung pecahan desimal

· Nama Tipe : Real

· Domain Nilai :

Secara teoritis tak terbatas dari -∞ s.d +∞. Ditulis dengan titik desimal

· Contoh nilai : 2.8 , -0.39, 4.24 , 57.567, -102.00

· Contoh objek : Nilai ujian

3. Bilangan Logika

· Nama Tipe : Boolean

· Domain Nilai : Benar(True--1) atau Salah(False--0)

· Konstanta : True dan False

Page 17: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 16

4. Karakter

Karakter tunggal yang diapit oleh tanda petik satu.

· Nama Tipe : char

· Domain Nilai :

- Huruf alfabet (’a’..’z’ dan ’A’..’Z’)

- Tanda baca (’!’, ’?’ , ’,’ , ’.’)

- Angka ’0’ , ’1’ ,..., ’9’

- Karakter khas seperti ’#’ , ’&’ , ’%’ , ’@’ , ’*’ , dll

· Contoh nilai : ’l’ , ’p’ , ’+’ , ’6’, ’A’

· Contoh objek : Jenis Kelamin, Indeks nilai

4.1.2 Tipe bentukan

Tipe yang dibentuk(dan diberi nama) dari tipe dasar atau dari tipe lain yang sudah dikenal, bahkan

dapatt didefinisikan sendiri oleh pemrogram.

Macam tipe bentukan :

1. String(kumpulan karakter)

Deretan karakter dengan panjang tertentu.

· Nama Tipe : String

· Domain Nilai : Satu atau lebih karakter yang diapit oleh tanda petik tunggal

· Contoh nilai : ’Apa kabar’,’Teknik Informatika’,’A234’, ’Ramayana’, ’123’

· Contoh objek : Nama, Alamat

2. Tipe bentukan dari tipe data dasar atau tipe bentukan lain : Kata Kunci type

Deklarasi kamus data : type nama_tipe_bentukan : tipe_data

Contoh : membuat sebuah tipe data baru bernama BilBulat yang memiliki domain nilai yang sama

dengan tipe integer type BilBulat : integer;

3. Record

Record tersusun dari satu atau lebih field. Tiap field menyimpan data dengan tipe tertentu

field 1 field 2 field 3 … field n

Deklarasi kamus data : type Nama_Record : record < nama_field1 :tipe_field1,

nama_field2 :tipe_field2,

....

nama_fieldn : tipe_fieldn>

Page 18: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 17

Contoh :

a. Titik dalam koordinat kartesian dinyatakan sebagai (x,y) dengan x adalah nilai absis dan y adalah

nilai ordinat. Kita dapat menyatakan titik sebagai record dengan (x,y) sebagai field

x y

type Titik : record < x : real, y : real > atau

type Titik : record< x , y : real >

b. Definisi tipe terstruktur yang mewakili tanggal dalam kalender Masehi. dd sebagai tanggal, mm

sebagai bulan, yy sebagai tahun

dd mm yy

type Tanggal : record <dd : integer, {1..31}

mm : integer, {1..12}

yy : integer {>0} >

c. NilMhs adalah tipe terstruktur yang menyatakan nilai ujian seorang mahasiswa untuk mata

kuliah yang diambil(MK)

Nim NamaMhs KodeMK Nilai

type NilMhs : record < Nim : integer,

NamaMhs : string,

KodeMK : string,

Nilai : char >

d. Tipe terstruktur untuk jadwal kereta api yang terdiri dari nomor kereta(NoKA), kota

asal(KotaAsal), kota tujuan(KotaTujuan), jam berangkat(JamBerangkat), jam tiba(JamTiba)

NoKA KotaAsal KotaTujuan JamBerangkat JamTiba

type JadwalKA : record <NoKA : string,

KotaAsal : string,

KotaTujuan : string,

JamBerangkat : Jam,

JamTiba : Jam >

4.2 NAMA

Nama digunakan mengidentifikasi objek dan mengacu objek tersebut.. Dalam sebuah teks

algoritmik, objek yang diberi nama bisa berupa :

- Modul program, Algoritma - variabel - konstanta - type - fungsi - prosedur Karena adanya bermacam-macam nama tersebut, maka dalam suatu teks algoritma dikenal nama

program, nama variabel, nama konstanta, nama fungsi, nama prosedur, nama type.

Page 19: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 18

Setiap bahasa pemrograman memiliki aturan masing-masing untuk mendefinisikan nama(panjang maks

nama, perbedaan huruf besar dan kecil) tetapi dalam algoritma batasan pendefinisian nama tidak seketat pada

bahasa pemrograman. Syarat-syarat penggunaan sebuah nama pada algoritma:

- Pemilihan nama harus interpretatif(disesuaikan dengan objek yang diidentifikasi) dan tidak menimbulkan kerancuan

- Nama harus unik dalam sebuah algoritma/program

- Nama tidak boleh dipisahkan oleh spasi

- Tidak case sensitive (huruf besar dan kecil tidak dibedakan)

- Tidak boleh mengandung symbol khusus

- Nama harus dideklarasikan pada bagian tertentu supaya dapat dipakai.

1. Nama Algoritma

Digunakan untuk mengidentifikasi sebuah program atau algoritma, dideklarasikan pada bagian Judul

algoritma

Contoh : Algoritma Luas_Lingkaran, Algoritma Kelulusan_Mhs

2. Nama Peubah(variabel)

Tempat penyimpan data/informasi/nilai yang isinya dapat diubah selama eksekusi program berlangsung.

Setiap variabel mempunyai tiga atribut, yaitu nama, tipe, dan nilai. Nama variabel dan tipe datanya

dideklarasikan pada bagian Kamus. Sedangkan nilai yang disimpan dalam variabel didefinisikan pada bagian

deskripsi algoritma.

Bentuk umum deklarasi variabel adalah : nama_variabel : tipe data

Contoh : Kamus nama : string {variabel nama bertipe string} nim: integer {variabel nim bertipe integer/bilangan bulat} jns_kelamin : char {variabel jns_kelamin bertipe karakter} rata, nilai_uts, nilai_uas, nilai_tugas : real; {variabel dengan nama rata, nilai_uts,

nilai_uas, nilai_tugas bertipe sama yaitu real}

3. Nama Tetapan(konstanta)

Tempat penyimpan data/informasi/nilai yang isinya tidak dapat diubah selama pelaksanaan program.

Nama, tipe, dan nilai Konstanta dideklarasikan pada bagian Kamus. Untuk mendefinisikan konstanta harus

memakai kata kunci const dan konstanta harus langsung diisi dengan sebuah nilai tertentu.

Bentuk umum deklarasi konstanta adalah : const nama_konstanta : tipe = nilai

Contoh :

Kamus const phi : real = 3.14 const Nmaks : integer = 200 const password : string = ’abcd’

Page 20: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 19

4. Nama Tipe bentukan

Nama tipe bentukan disini berarti nama tipe bentukan yang dibuat/didefinisikan oleh perancang

program. Nama tipe bentukan dideklarasikan pada bagian Kamus

Nama tipe bentukan tidak dapat langsung digunakan di dalam bagian deskripsi algoritma, tetapi

sebelumnya harus mendeklaraikan variabel yang bertipe bentukan tersebut

Contoh :

Kamus type Karakter : char type Titik : record < x : real; y : real > type Jam : record <hh : integer, {0..23} mm : integer, {0..59} ss : integer {0..59} >

Indeks : karakter T : Titik J : Jam

Dari contoh di atas telah didefinisikan tipe data baru bernama karakter dan dua buah tipe record yang

bernama Titik dan Jam. Nama karakter, Titik, dan Jam tidak bisa langsung digunakan pada bagian Deskripsi

algoritma tetapi harus mendeklarasikan variabel baru. Pada contoh di atas dideklarasikan variabel Indeks

yang bertipe karakter, variabel T bertipe Titik dan variabel J yang bertipe Jam. Indeks, T, dan J inilah yang

bisa digunakan pada bagian deklarasi program.

5. Nama Fungsi

Bagian Judul Fungsi(nama fungsi, parameter) dideklarasikan pada bagian Kamus

Contoh :

Kamus Function Penjumlahan(a , b : integer) à integer {mengembalikan hasil penjumlahan antara dua bilangan}

6. Prosedur

Bagian Judul Prosedur(nama prosedur , parameter) dideklarasikan pada bagian Kamus

Contoh : Kamus

Procedure TUKAR(input/output A , B : integer) {mempertukarkan nilai A dan B}

Page 21: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 20

Contoh-Contoh Pendefinisian/Delarasi Nama Di Dalam Bagian Kamus : Kamus

{nama konstanta} const phi = 3.14 const Nmaks = 200 const password = ’abcd’ {nama tipe} type karakter : char type Titik : record < x : real; y : real > type Jam : record <hh : integer, {0..23}

mm : integer, {0..59} ss : integer {0..59} >

type NilMhs : record <Nim : integer, NamaMhs : string, KodeMK : string, Nilai : char >

{nama variabel} luasL : real nama : string indeks : karakter ketemu : boolean J : Jam T : Titik Nilai : NilMhs {nama fungsi} Function Penjumlahan(a , b : integer) à integer {mengembalikan hasil penjumlahan antara dua bilangan}

function CARI <input x : integer> à Boolean {mencari nilai x,bila ketemu maka true,bila tidak maka false}

{nama prosedur} procedure HITUNG_TITIK_TENGAH(input P1 :Titik, input P1 :Titik, output Pt :Titik) {menghitung nilai titik tengah dari sebuah garis dengan ujung-ujung Px dan Py}

4.3 NILAI

Nilai/Harga adalah besaran dari tipe data yang sudah dikenal. Nilai dapat berupa konstanta yang

dipakai langsung, isi yang disimpan oleh variabel atau konstanta, hasil perhitungan suatu ekspresi, atau hasil

yang dikirim suatu fungsi.

Algoritma pada dasarnya adalah proses memanipulasi nilai. Nilai dapat dimanipulasi dengan cara :

mengisi nilai ke dalam variabel, menuliskan nilai ke piranti keluaran, diacu dari suatu nama untuk

perhitungan/ekspresi

Page 22: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 21

1. Pengisian Nilai

Suatu nama konstanta secara otomatis akan mempunyai harga tetap yang terdefinisi(sudah ditentukan)

pada saat nama konstanta dideklarasikan dalam kamus sehingga nama konstanta dapat langsung

digunakan dalam program. Tetapi tidak demikian halnya dengan nama variabel. Suatu nama variabel

dapat digunakan dalam ekspresi program jika harganya telah terdefinisi. Ada dua cara untuk mengisi

nama variabel dengan harga/nilai :

· Assignment : ß

Assignment adalah instruksi untuk menyimpan harga pada suatu nama variabel. Dengan pemberian

harga ini, harga lama yang disimpan tidak lagi berlaku, yang berlaku adalah harga paling akhir yang

diberikan.

Nilai/Harga yang dimasukkan ke dalam nama variabel bisa berupa nilai tetap, nilai dari variabel lain,

atau ekspresi :

Deskripsi Algoritma nama_var1 ß nama_var2 {harga dari nama variabel2 disalin ke nama variabel1} nama_var ß konstanta {harga dari nama konstanta disalin ke nama variabel} nama_var ß ekspresi {hasil perhitungan ekspresi diisikan ke nama variabel} nama_var ß nama_fungsi {nilai yang dikembalikan fungsi diisikan ke nama variabel}

dengan syarat :

- Bagian kiri dan bagian kanan tanda assignment (ß) bertipe sama - nama_var1 dan nama_var (bagian kiri tanda ß) harus merupakan nama variabel, tidak boleh nama

konstanta, type, fungsi, atau prosedur - nama yang tertulis di bagian kanan tanda assigment (ß)boleh berupa nama variabel, nama fungsi,

nama konstanta - semua nama yang dipakai dalam assignment tidak bleh berupa nama type atau prosedur

Contoh :

Kamus k, suhu1, suhu2, Total : integer ketemu : boolean J : Jam Jarak : real NamaKota : string

Deskripsi Algoritma k ß 10 ketemu ß false Jarak ß 34.8 NamaKota ß ’Tasikmalaya’ Suhu1 ß 40 Suhu2 ß 30 Total ß Suhu1 + Suhu2 Suhu1 ß Suhu2 Total ß k*20+14

Page 23: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 22

· Pembacaan Nilai dari Piranti Masukan

Selain dengan assignment, suatu nilai dapat diisikan ke suatu nama variabel melalui pembacaan nilai

tersebut dari piranti masukan(keyboard, mouse, scanner, dsb). Disebut ”dibaca” karena arah dari

pengisian harga yaitu seakan-akan komputer ”membaca” nilai yang diberikan pengguna.

Bentuk Umum :

Deskripsi Algoritma read(nama_variabel) {membaca sebuah nilai} read(list nama_variabel) {membaca lebih dari satu nilai}

Contoh :

Kamus Nim : integer Nama : string Indeks : char Nilai : real

Deskripsi Algoritma read(Nim) read(Nama) read(Nilai, Indeks)

2. Penulisan nilai ke piranti keluaran

Suatu nilai/harga yang disimpan dalam memori komputer harus dapat dikomunikasikan ke dunia luar

untuk diinterpretasikan oleh pemakai program. Dalam hal ini, nilai harus dapat dituliskan ke suatu piranti

keluaran, misalnya layar, printer.

Bentuk Umum :

Deskripsi Algoritma write(nama_variabel) {menuliskan isi nama_variabel ke piranti keluaran} write(konstanta) {menuliskan konstanta / isi nama_konstanta ke piranti keluaran} write(ekspresi) {menuliskan harga hasil perhitungan ekspresi ke piranti keluaran } write(list-nama) {menuliskan semua harga sesuai urutan penulisannya }

dengan syarat :

- list-nama adalah satu atau lebih nama : boleh nama variabel, nama konstanta, atau hasil pemanggilan

fungsi

- nama-nama dalam list-nama tidak boleh berupa nama type atau nama prosedur

- nama yang dituliskan sudah terdefinisi harganya. Jika nama_variabel sudah didefinisikan dengan

assignment atau instruksi read

Page 24: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 23

Contoh :

Kamus const pass : string = ’abce’ A, B : integer Nilai : real

Deskripsi Algoritma Nilai ß 92.7 read(A , B) write(pass, Nilai) write(’Teknik Informatika’) write(100) write(A + B)

write((A + B)/2*10)

4.4 OPERATOR DAN EKSPRESI

Operator adalah lambang-lambang yang biasa dilibatkan dalam program untuk melakukan suatu

operasi atau manipulasi. Misalnya untuk perkalian, penjumlahan, perbandingan, dll. Sedangkan ekspresi

adalah suatu ”rumus perhitungan” yang terdiri dari operan dan operator. Operan harus mempunyai harga,

karena itu dapat berupa konstanta, nama variabel(yang dipakai dalam perhitungan adalah harga yang

dikandung nama variabel), hasil pengiriman suatu fungsi, atau merupakan suatu ekspresi

Contoh Ekspresi :

a ß b + c – 2

Pada ekspresi ini, a, b, dan c merupakan nama variabel yang berperan sebagai operand sedangkan

simbol ß, + dan – merupakan operator. Dalam hal ini variabel a diisi dengan hasil penjumlahan b dan c

dikurangi 2.

Jenis –jenis operator :

1. Operator Perbandingan

Operator perbandingan digunakan untuk membandingkan dua operand. Operand yang dibandingkan bisa

bertipe bilangan bulat, karakter, real, boolean, atau string. Ekspresi yang menggunakan operator

perbandingan akan menghasilkan nilai boolean(true atau false).

Operator Operasi Contoh Ekpresi Hasil

= Sama dengan a := 6 = 9 a = false

≠ Tidak sama dengan a := 7 ≠ 5 a = true

< Lebih kecil dari a := 4 < 6 a = true

> Lebih besar dari a := 10 > 1 a = true

≤ Lebih kecil atau sama dengan a := 8 ≤ 4 a = false

≥ Lebih besar atau sama dengan a := 3 ≥ 1 a = true

Page 25: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 24

2. Operator aritmatika

Operator aritmatika hanya dapat dikenakan pada operand bertipe bilangan bulat atau bilangan real.

Ekspresi yang menggunakan operator ini pun hanya akan menghasilkan nilai bilangan bulat atau real

Operator Operasi Hasil Contoh Ekpresi Hasil

+ Jumlah Integer/Real x ß 8 + 13

x ß 4.3 + 2

x = 21

x = 6.3

- Kurang Integer/Real x ß 15 – 2

x ß 2.1 – 1.1

x = 13

x = 1.0

* Kali Integer/Real x ß 5 * 6

x ß 2.0 * 1.1

x = 30

x = 2.2

/ Bagi Real x ß 6 / 4 x = 1.5

div Pembagian bilangan bulat integer z ß 7 div 2 z = 3

mod Sisa pembagian bilangan bulat integer z ß 7 mod 2 z = 1

^ Pangkat integer/real z ß 2 ^ 3 z = 8

3. Operator logika

Operator ini dikenakan pada operand bertipe boolean dan ekspresinya akan menghasilkan nilai

boolean(true atau false)

Operator Arti Hasil

not negasi boolean

and dan boolean

or atau boolean

xor exclusive OR boolean

Hasil operator not, and, or, dan xor untuk berbagai kombinasi kondisi

A B not A not B A and B A or B A xor B

true true false false true true false

true false false true false true true

false true true false false true true

false false true true false false false

Contoh penggunaan operator pada ekspresi :

Kamus Gaji_Total, Gaji_Pokok, Potongan : real HBagi,HSisa : integer k, l, m, n: boolean;

Deskripsi k := true; l := false; read(Gaji_Pokok,Potongan) Gaji_Total ß Gaji_Pokok – Potongan HBagi ß (5 * 7) div 3 HSisa ß (5 * 7) mod 3 m := (k or l) and l; n := ((6 >= 8) and (9 <> 1)) or (3 < 7); write(HBagi, HSisa, Gaji_Total, m , n);

Page 26: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 25

5 AKSI SEKUENSIAL

Aksi sekuensial(runtunan) adalah sederetan instruksi atau aksi yang akan dilaksanakan (dieksekusi)

oleh komputer berdasarkan urutan penulisannya. Jadi, jika dituliskan sebuah aksi sekuensial yang terdiri dari

deretan instruksi/aksi ke 1, 2, 3, 4,..n maka setiap instruksi/aksi akan dilaksanakan secara sekuensial mulai

dari yang ke-1, kemudian ke-2, ke-3, ...s/d ke-n. Program paling sederhana tentunya hanya mengandung

salah satu instruksi saja.

Urutan instruksi dalam algoritma sangat penting, ada aksi sekuensial yang jika diubah urutan

instruksi/aksinya akan mempengaruhi hasil eksekusi program.

Contoh aksi sekuensial yang berpengaruh jika diubah urutannya :

Algorima Runtunan_1 Kamus

p , q : integer Deskripsi

p ß 15 p ß 2* p q ß p write(q) {nilai q yang dicetak = 30}

Algorima Runtunan_2 Kamus

p, q : integer Deskripsi

p ß 15 q ß p p ß 2* p write(q) {nilai q yang dicetak = 15}

Beberapa contoh aksi sekuensial :

Contoh 1 : HELLO

Permasalahan : Tuliskan algoritma untuk menulis ’HELLO’ ke piranti keluaran

Input : -

Output : ’HELLO’

Proses : menulis ’HELLO’

Algoritma Cetak_HELLO {Menulis ”HELLO” ke piranti keluaran} Kamus Deskripsi

write(‘HELLO’)

Page 27: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 26

Contoh 2 : HELLO X

Permasalahan : Tuliskan algoritma untuk membaca sebuah nama, dan menulis ’HELLO’ yang diikuti

dengan nama yang diketikkan ke piranti keluaran

Input : nama

Output : ’HELLO <nama>’

Proses : menulis ’HELLO’ diikuti nama yang dibaca

Algoritma Cetak_HELLOX {Menulis ”HELLO” berikut nama yang dibaca dari piranti masukan ke piranti keluaran} Kamus

nama : string Deskripsi

read(nama) write(‘HELLO ’,nama)

Contoh 3 : SEGITIGA

Permasalahan : Tuliskan algoritma untuk menghitung Luas Segitiga dengan membaca harga alas (cm) dan

tinggi (cm) kemudian menuliskan hasilnya ke piranti keluaran

Input : alas(alas segitiga, cm), real dan tinggi(tinggi segitiga, cm) , real

Output : Luas(Luas segitiga), real

Proses : menghitung dan menuliskan Luas Segitiga = 2

a la s x t in g g i

Algoritma Hitung_Luas_Segitiga {Membaca alas dan tinggi, menghitung Luas=alasxtinggi/2 dan menuliskan hasilnya } Kamus alas : real (panjang alas segitiga, satuan cm) tinggi : real Luas : real Deskripsi read(alas) read(tinggi) Luas ß alas * tinggi / 2 write(Luas)

Contoh 4 : GAJI

Permasalahan : Dibaca nama karyawan dan gaji pokok bulanannya. Buat algoritma untuk menghitung dan

menampilkan gaji bersih karyawan tersebut dengan ketentuan :

- Gaji bersih = gaji pokok + tunjangan – pajak

- Tunjangan untuk setiap pegawai sama dan tetap setiap bulannya yaitu 1.000.000

- Pajak 10% dari (gaji pokok+tunjangan)

Input : Nama dan Gaji Pokok

Output : Gaji Bersih

Page 28: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 27

Proses : menghitung dan menampilkan Gaji Bersih = gaji pokok + tunjangan – pajak, Tunjangan =

1000000 , Pajak = 10

100x (Gaji Pokok + Tunjangan)

Algoritma_Gaji_Karyawan {Menghitung Gaji bersih karyawan dengan membaca nama karyawan dan gaji pokoknya. Gaji bersih = gaji pokok+tunjangan–pajak} Kamus const Tunjangan : real = 1000000 nama_kar : string

gaji_pokok, pajak, gaji_bersih : real Deskripsi read(nama_kar, gaji_pokok) pajak ß 0.1 * (gaji_pokok + tunjangan) gaji_bersih ß gaji_pokok + tunjangan – pajak write(nama_kar, gaji_bersih)

Contoh 5 : TUKAR

Permasalahan : Buatlah algoritma yang membaca dua buah bilangan integer yang ditampung dalam variabel,

menukarkan harga variabel tersebut dan menuliskan hasil pertukarannya

Input : dua bilangan integer A dan B

Output : dua bilangan integer A dan B yang telah ditukar harganya

Proses : menukarkan harga variabel antara A dan B menggunakan sebuah variabel penampung sementara

Algoritma_TUKAR {mempertukarkan nilai antara A dan B} Kamus A, B, temp : integer Deskripsi read(A, B) temp ß A A ß B B ß temp write(A, B)

Page 29: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 28

6 PEMILIHAN

Analisis kasus adalah salah satu elemen primitif pembangun algoritma. Analisis kasus diperlukan dalam sebuah

program ketika terdapat suatu instruksi yang hanya dikerjakan jika memenuhi persyaratan atau kondisi tertentu. Contoh

pada algoritma Ibu Tati mengupas kentang

Penulisan Algoritma Yang Mengandung Analisa Kasus/Pemilihan

1. Flowchart

Permasalahan : Diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka

mahasiswa tersebut dinyatakan lulus jika nilai lebih kecil dari 60 maka dinyatakan tidak lulus.

– Uraian kalimat deskriptif (narasi)

DESKRIPSI :

o baca nama dan nilai mahasiswa.

o jika nilai >= 60 maka keterangan = lulus

o tetapi jika nilai < 60 maka keterangan = tidak lulus.

o tulis nama dan keterangan

– Flow chart

2. Pseudocode

Penulisan algoritma yang mengandung analisis kasus menggunakan pseudocode terdiri dari dua struktur umum :

IF-THEN dan DEPEND-ON

Mendefinisikan analisis kasus adalah mendefinisikan :

- kondisi boolean, berupa suatu ekspresi yang menghasilkan nilai true atau false

- aksi yang akan dilaksanakan jika kondisi yang dipasangkan dengan aksi yang bersangkutan dipenuhi.

Ungkapan Kondisi dapat dihasilkan dengan operator perbandingan dan operator logika.

contoh kondisi : x > 100, kar = ‘*’ , (a ≠ 0) or (b = 0) , ketemu = true, not ketemu

Page 30: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 29

IF-THEN

a. Satu Kasus

if <kondisi> then aksi endif

Contoh – contoh :

a. if x > 100 then x ß x + 1

endif b. if (a ≠ 0) or (b = 0) then

b ß a * b write(b)

endif c. if (ketemu) then

if a ≤ 10 then read(b)

endif endif

Contoh Kasus 1 : Algoritma HURUF_VOKAL {mencetak pesan ”huruf vokal” bila sebuah karakter yang dibaca merupakan huruf vokal. Asumsi huruf kecil} Kamus huruf : char Deskripsi read(huruf) if (huruf=‘a’) or (huruf=‘i’) or (huruf=‘u’) or (huruf=‘e’) or

(huruf=‘o’) then write(‘Huruf Vokal’) endif

Contoh Kasus 2 :

Algoritma Bilangan_Genap {mencetak pesan ”bilangan genap” kemudian kalikan bilangan tersebut dengan angka 2 jika bilangan bulat yang dimasukkan dari piranti masukan merupakan bilangan genap} Kamus bil : integer Deskripsi read(bil) if bil mod 2 = 0 then write(‘bilangan genap’)

write(bil*2) endif

Page 31: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 30

b. Dua Kasus

if <kondisi> then aksi1 else aksi2 endif

Contoh – contoh : a. if a > 0 then

write(‘bilangan positif’) else

write(‘bilangan negatif’) endif

b. if (k > 4) and (k div 2 = 4) then read(n) z ß n * k

else read(m) z ß n / k

endif

Contoh Kasus 1 : Algoritma Kelulusan_Mhs {Menerima masukan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika tidak maka dinyatakan tidak lulus} Kamus

Nama : string Nilai : integer Keterangan : string

Deskripsi read (nama, nilai) if nilai >= 60 then

keterangan ß ‘lulus’ else

keterangan ß ‘tidak lulus’ endif write(nama, keterangan)

Contoh Kasus 2 : Algoritma Bilangan_Genap_dan_Ganjil {Mencetak “bilangan genap” jika bilangan bulat yang dibaca merupakan bilangan genap dan ”bilangan ganjil” jika bukan bilangan genap} Kamus Bil : integer Deskripsi read(bil) if (bil mod 2 = 0) then write(’Bilangan Genap’) else write(’Bilangan Ganjil’) endif

Page 32: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 31

c. Banyak Kasus

if <kondisi1> then aksi1 else if <kondisi2> then aksi2 else if <kondisi3> then aksi3 endif endif endif

Contoh Kasus 1 :

Membaca dua buah nilai integer, jika nilai pertama lebih besar atau sama dengan nilai kedua kerjakan nilai

pertama/nilai kedua, jika nilai kedua lebih besar dari nilai pertama kerjakan nilai kedua/nilai pertama, tetapi jika

nilai kedua = 0 maka tampilkan pesan error

Algoritma WUJUD_AIR {Menentukan hasil pembagian} Kamus

n1, n2 : integer hasil : real

Deskripsi read(n1,n2) if n2=0 then write(‘Error’) else if n1≥n2 then hasil ß n1/n2 else

hasil ß n2/n1 endif write(hasil) endif

DEPEND-ON

Untuk menyederhanakan pola IF-THEN-ELSE jika terdapat banyak kasus. Strukturnya :

depend on (nama) <kondisi1> : aksi1 <kondisi2> : aksi2 <kondisi3> : aksi3 ..... <kondisiN> : aksiN [otherwise aksiX]

Tiap langkah diperiksa kebenarannya. Jika kondisi ke-k benar maka aksi ke-k dilaksanakan. Kondisi berikutnya tidak

dipertimbangkan lagi. Jika tidak ada satupun aksi yang benar maka aksi sesudah otherwise yang dikerjakan.

Page 33: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 32

Contoh Kasus 1:

Dibaca nomor dari 1-7 untuk menunjukkan hari. Tuliskan nama hari sesuai nomor harinya

Algoritma NAMA_HARI {Mencetak nama bulan } Kamus

Nomor_hari : integer Deskripsi read(nomor_hari) depend on (nomor_ hari) nomor_hari=1 : write(‘Januari’) nomor_hari =2 : write(‘Februari’) nomor_hari =3 : write(‘Maret’) nomor_hari =4 : write(‘April’) nomor_hari =5 : write(‘Mei’) nomor_hari =6 : write(‘Juni’) nomor_hari =7 : write(‘Juli’) otherwise write(‘Bukan nomor hari yang benar’)

Page 34: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 33

7 PENGULANGAN

Komputer memiliki kemampuan untuk mengerjakan suatu instrukasi (aksi) secara berulang-ulang dengan

performansi yang sama. Kemampuan tersebut menjadi salah satu keunggulan komputer dibandingkan manusia karena

manusia biasanya tidak menyukai tugas-tugas monoton yang dikerjakan secara berulang-ulang (karena lelah atau

bosan).

Notasi pengulangan adalah salah satu notasi dasar dalam penulisan algoritma selain pemilihan. Terdapat

beberapa macam struktur pengulangan pada algoritma dan beberapa diantaranya yang paling banyajk digunakan antara

lain struktur FOR, WHILE-DO, dan REPEAT-UNTIL.. Masing-masing struktur digunakan pada jenis permasalahan

yang berbeda meskipun untuk beberapa kasus sebuah struktur pengulangan dapat diganti dengan struktur pengulangan

yang lain.

1. Struktur FOR

Struktur ini digunakan bila sudah diketahui berapa kali akan mengulang satu atau beberapa aksi dalam badan

pengulangan.

Bentuk Umum :

for variabel ß nilai_awal to nilai_akhir do aksi1 aksi2 ... aksin

endfor

Catatan :

· variabel adalah nama variabel kontrol bertipe karakter atau integer yang berfungsi sebagai pencacah

pengulangan

· aksi1, aksi2, ..., aksin merupakan satu atau lebih instruksi yang dikerjakan secara berulang-ulang

· nilai_awal dan nilai_akhir bisa berupa konstanta atau ekspresi

· nilai_awal harus lebih kecil atau sama dengan nilai_akhir

· tipe data variabel harus sama dengan tipe data nilai_awal dan nilai_akhir

· Pengulangan akan dilakukan sebanyak nilai_akhir - nilai_awal + 1

Contoh : Membuat sebuah algoritma untuk menampilkan bilangan dari 1 sampai 10

Algoritma Show_Numeric { menampilkan bilangan integer dari 1 sampai 10} Kamus

i : integer Deskripsi

for i ß 1 to 10 do write(i)

endfor

Page 35: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 34

For juga dapat digunakan pada pengulangan yang mencacah dari bilangan lebih besar ke bilangan yang lebih kecil

Bentuk Umum : for variabel ß nilai_awal downto nilai_akhir do

aksi1 aksi2 ... aksin

endfor

Catatan :

· variabel adalah nama variabel kontrol bertipe karakter atau integer yang berfungsi sebagai pencacah

pengulangan

· aksi1, aksi2, ..., aksin merupakan satu atau lebih instruksi yang dikerjakan secara berulang-ulang

· nilai_awal dan nilai_akhir bisa berupa konstanta atau ekspresi

· nilai_awal harus lebih besar atau sama dengan nilai_akhir

· tipe data variabel harus sama dengan tipe data nilai_awal dan nilai_akhir

· Pengulangan akan dilakukan sebanyak nilai_awal - nilai_akhir + 1

Contoh : Membuat sebuah algoritma untuk menampilkan bilangan dari N sampai 1 dimana N diinpuitkan dari user

Algoritma Show_Numeric2 { menampilkan bilangan integer dari N sampai 1} Kamus

i, N : integer Deskripsi

read(N) for i ß N downto 1 do

write(i) endfor

2. Struktur WHILE-DO (Pengulangan berdasarkan kondisi ulang)

Struktur pengulangan ini biasanya digunakan pada kasus yang belum pasti berapa kali aksi/instruksinya akan

diulang. Struktur While mirip struktur IF yang melakukan pemeriksaan ekspresi boolean sebelum satu atau lebih aksi

dikerjakan.

Bentuk Umum : while (kondisi) do

aksi1

aksi2

...

aksin

endwhile

Catatan :

· Kondisi adalah kondisi pengulangan berupa ekspresi boolean yang dapat menghasilkan nilai True atau False

· Aksi pada badan pengulangan dilaksanakan selema (kondisi) menghasilkan nilai True

· Pengulangan berhenti jika (kondisi) menghasilkan nilai False

Page 36: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 35

Contoh : Membuat sebuah algoritma untuk menampilkan bilangan dari 1 sampai 10

Algoritma Show_Numeric3 { menampilkan bilangan integer dari 1 sampai 10} Kamus

i : integer Deskripsi

i ß 1 while i ≤ 10 do

write(i) i ß i + 1

endwhile

Badan pengulangan (aksi) pada struktur While-Do mungkin tidak akan pernah dilakukan karena sebelum aksi

pertama dieksekusi, dilakukan test terhadap kondisi pengulangan. Pengulangan ini berpotensi untuk menimbulkan aksi

“kosong” (tidak pernah melakukan apa-apa) jika pada test pertama kondisi menghasilkan nilai False

Contoh : Kamus

f : boolean

Deskripsi

f ß true

while (not f) do

f ß not f

enwhile

3. Struktur REPEAT-UNTIL (Pengulangan berdasarkan kondisi berhenti)

Struktur ini hampir sama dengan struktur Whike dan biasanya digunakan bila jumlah pengulangan belum dapat

ditentukan saat program ditulis

Bentuk Umum : Repeat

aksi1 aksi2 ... aksin

Until (kondisi berhenti) Catatan :

· Kondisi berhenti berupa ekspresi boolean yang dapat menghasilkan nilai True atau False · Aksi pada badan pengulangan akan dikerjakan sampai kondisi berhenti bernilai True · Badan pengulangan (aksi) pada struktur ini minimal dikerjakan satu kali karena pada waktu eksekusi

pengulangan yang pertama tidak dilakukan test terhadap kondisi berhenti. Test terhadap kondisi berhenti dilakukan setelah aksi dikerjakan

Page 37: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 36

Contoh : Membuat sebuah algoritma untuk menampilkan bilangan dari 1 sampai 10

Algoritma Show_Numeric4 { menampilkan bilangan integer dari 1 sampai 10} Kamus

i : integer Deskripsi

i ß 1 repeat

write(i) i ß i + 1

until i > 10

Perbedaan struktur Repeat-Until dan While-Do terletak pada pengecekan kondisi. Jika pada struktur While, kondisi dicek pada awal badan pengulangan, sedangkan pada struktur Repeat kondisi dicek pada akhir badan pengulangan.

Perbedaan yang lain, bila struktur While mengulang pernyataan selama kondisi masih terpenuhui (kondisi = True), struktur Repeat mengulang pernyataan selama kondisi belum terpenuhi (kondisi = False) STUDI KASUS 1. Membuat algoritma untuk menampilkan semua bilangan faktor dari n dimana n diinputkan oleh user

Algoritma Faktor Kamus

n, i : integer Deskripsi

read(n) for i ß 1 to n do

if (n mod i = 0) then write(i)

endif endfor

2. Buat algoritma untuk membaca dan menghitung nilai mahasiswa kemudian menghitung nilai rata-rata

dari nilai mahasiswa tersebut. Proses pembacaan dan perhitungan dilakukan sampai user tidak ingin

menginputkan lagi

Algoritma Rerata_Nilai_Mahasiswa Kamus

n : integer jawab : char nilai, jumlah, rata : real

Deskripsi jumlah ß 0 n ß 0 repeat

read(nilai) jumlah ß jumlah + nilai n ß n + 1 write(‘Apakah anda ingin input data lagi (y/t) ? ’) read(jawab)

until (jawab = ‘T’) or (jawab = ‘t’) rata ß jumlah / n write(rata)

Page 38: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 37

8 RECORD

Untuk merepresentasikan sebuah objek, sering tipe data dasar seperti integer, real, boolean, char, tidak

dapat memenuhinya. Oleh karena itu, dibentuklah tipe bentukan yang merupakan gabungan dari beberapa

tipe data dasar atau dari tipe bentukan lainnya. Salah satu tipe bentukan tersebut adalah record.

Record adalah salah satu tipe data terstruktur(structured ata type) bentukan yang setiap recordnya terdiri

dari beberapa elemen yang disebut field. Setiap field menggambarkan informasi tertentu dan tipe data pada

masing-masing field dapat berbeda-beda namun sudah dikenal baik itu tipe dasar atau tipe bentukan lainnya.

Ilustrasi sebuah record

Sebagai contoh, di dalam matematika untuk menggambarkan sebuah titik pada diagram kartesian

digunakan dua bilangan integer atau real yaitu untuk menunjukkan koordinat titik yang ditunjuk pada sumbu

x dan sumbu y. Untuk merepresentasikan tanggal juga digunakan tipe bentukan yang terdiri dari hari, bulan,

dan tahum yang masing-masing bertipe integer. Data pegawai juga terdiri dari beberapa elemen seperti nama,

tanggal lahir, dan alamat. Untuk menjawab semua kebutuhan pada beberapa contoh tersebut, dibuatlah tipe

bentukan yang disebut record.

DEKLARASI RECORD

Seperti halnya tipe data lain, tipe data record juga harus dideklarasikan terlebih dahulu di bagian kamus

jika kita ingin menggunakan sebuah variabel yang bertipe record pada bagian deskripsi algoritmanya.

Deklarasi record pada algoritma adalah sebagai berikut : type nama_record : record < nama_field1 : tipe_field1,

nama_field2 : tipe_field2 ..... nama_fieldn : tipe_fieldn

>

Contoh 1 : Type Titik {menyatakan absis dan ordinat pada diagram kartesian}

Titik dalam koordinat kartesian dinyatakan sebagai (x,y) dengan x adalah nilai absis dan y adalah nilai

ordinat. Kita dapat menyatakan titik sebagai record dengan (x,y) sebagai field

x y

type Titik : record < x : real, {absis} y : real {ordinat}

>

Jika dideklarasikan sebuah variabel T sebagai berikut :

T : Titik {artinya : mendeklarasikan variabel T bertipe Titik} Maka cara mengacu atau mengakses nilai elemen yang tersimpan pada T yang telah terdefinisi adalah :

T.x dan T.y

field 1 field 2 field 3 … field n

Page 39: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 38

Contoh : Kamus

type Titik : record < x : real, y : real

> T : Titik

Deskripsi T.x ß 4.5 T.y ß -2.0 read(T.x , T.y) write(T.x , T.y)

Contoh 2 : Type Tanggal{menyatakan tanggal, bulan, dan tahun dalam kalender Masehi}

Tipe tanggal merepresentasikan tanggal pada kalender Masehi dalam notasi dd–mm–yy dimana dd sebagai

tanggal bernilai [1..31], mm sebagai bulan bernilai [1..12], dan yy sebagai tahun bernilai [>0]

dd mm yy type Tanggal : record <dd : integer[1..31],

mm : integer[1..12], yy : integer[>0]

>

Jika dideklarasikan sebuah variabel TGL sebagai berikut :

TGL : Tanggal {artinya : mendeklarasikan variabel TGL bertipe Tanggal} Maka cara mengacu atau mengakses nilai elemen yang tersimpan pada TGL yang telah terdefinisi adalah :

TGL.dd , TGL.mm, dan dan TGL.yy

Contoh : Kamus

type Tanggal : record < dd : integer[1..31], mm : integer[1..12], yy : integer[>0]

> TGL : Tanggal

Deskripsi TGL.dd ß 20 TGL.mm ß 2 TGL.yy ß 1987 read(TGL.dd, TGL.mm, TGL.yy) write(TGL.dd, TGL.mm, TGL.yy)

Contoh 3 : Type Waktu{menyatakan jam, menit, dan detik }

Tipe waktu merepresentasikan WAKTU dalam notasi hh:mm:ss dimana hh sebagai jam bernilai [0..23], mm

sebagai menit bernilai [0..59], dan ss sebagai detik bernilai [0..59]

hh mm ss type Waktu : record < hh : integer[0..23],

mm : integer[0..59], ss : integer[0..59]

>

Page 40: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 39

Jika dideklarasikan sebuah variabel W sebagai berikut :

W : Waktu {artinya : mendeklarasikan variabel W bertipe Waktu} Maka cara mengacu atau mengakses nilai elemen yang tersimpan pada W yang telah terdefinisi adalah :

W.hh , W.mm, dan dan W.ss

Contoh : Kamus

type Waktu : record < hh : integer[0..23], mm : integer[0..59], ss : integer[0..59]

> W : Waktu

Deskripsi W.hh ß 10 W.mm ß 30 W.ss ß 50 read(W.hh, W.mm, W.ss) write(W.hh, W.mm, W.ss)

Contoh 4 : Record untuk pengolahan data nilai mahasiswa

Tipe terstruktur yang menyatakan nilai ujian seorang mahasiswa untuk mata kuliah yang diambil(MK) terdiri

dari Nim, Nama, Kode MK dan Nilai

Nim NamaMhs KodeMK Nilai

type NilaiMhs : record < Nim : integer,

NamaMhs : string, KodeMK : string, Nilai : char

>

Jika dideklarasikan sebuah variabel M sebagai berikut :

M : NilaiMhs {artinya : mendeklarasikan variabel M bertipe NilaiMhs} Maka cara mengacu atau mengakses nilai elemen yang tersimpan pada W yang telah terdefinisi adalah :

M.Nim, M.NamaMhs, M.KodeMK, dan M.Nilai

Contoh : Kamus

type NilaiMhs : record < Nim : integer, NamaMhs : string, KodeMK : string, Nilai : char

> M : NilaiMhs

Deskripsi M.Nim ß 077006187 M.NamaMhs ß ’Arjuna’ M.KodeMK ß ’MKK1107’ M.Nilai ß ’B’ read(M.Nim, M.NamaMhs, M.KodeMK, M.Nilai) write(M.Nim, M.NamaMhs, M.KodeMK, M.Nilai)

Page 41: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 40

LATIHAN

1. Tentukan baris instruksi yang salah pada algoritma di bawah ini! Algoritma Contoh_Type Kamus type MyPoint : record <x : integer, y : integer>

P : integer R : MyPoint

Deskripsi {1} read(MyPoint) {2} read(R) {3} read(P) {4} write(H.x , H.y) {5} R ß R + 5 {6} R.x ß R.x + 5 {7} write(MyPoint) {8} write(R.x, R.y)

2. Deklarasikan tipe Data_Karyawan yang terdiri dari ID, Nama Karyawan, Golongan, dan Gaji Pokok.

Berikutnya buat algoritma untuk menerima masukan 1 buah data Karyawan dan menampilkannya!

3. Buat algoritma yang membaca dua waktu (jam, menit, dan detik) dan menghitung selisih kedua waktu

tersebut dalam detik kemudian menampilkannya! JAWABAN LATIHAN 1. Baris instruksi yang salah :

(1) Karena MyPoint adalah sebuah type maka tidak bisa dijadikan sebagai variabel penampung hasil

pembacaan dari piranti masukan

(2) Karena R adalah variabel yang bertipe record jadi harus disebutkan nama fieldnya. Seharusnya

read(R.x) atau read(R.y)

(4) Karena variabel H tidak ada pada kamus

(5) Karena R adalah variabel yang bertipe record jadi harus disebutkan nama fieldnya pada setiap

pemrosesan. Seharusnya R.x ß R.x + 5 atau R.y ß R.y + 5

(7) Karena MyPoint adalah sebuah type maka tidak bisa langsung dioutputkan

2. Algoritma Rerata_Nilai_Mahasiswa Kamus

type Data : record < ID : integer, nama : string, golongan : char, gaji_pokok : real

> D : Data

Deskripsi read(D.ID, D.nama, D.golongan, D.gaji_pokok) write(D.ID, D.nama, D.golongan, D.gaji_pokok)

Page 42: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 41

3. Algoritma Selisih_Waktu Kamus

type waktu : record < jam : integer [0..23], menit : integer [0..59], detik : integer [0..59]

> W1, W2 : waktu selisih : integer

Deskripsi read(w1.jam, w1.menit, w1.detik) read(w2.jam, w2.menit, w2.detik) selisih ß (w2.jam * 3600 + w2.menit * 60 + w2.detik) –

(w1.jam * 3600 + w1.menit * 60 + w1.detik) write(selisih)

Page 43: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 42

9 ARRAY

Array merupakan salah satu tipe data terstruktur(structured data type) yang berguna sebagai sebuah

tempat penyimpanan elemen data / nilai yang bertipe sama. Penggunaannya sama seperti variabel(untuk

menyimpan nilai) tetapi variabel hanya dapat menyimpan sebuah nilai sedangkan pada array data yang

diolah bisa beberapa nilai bertipe sama.

Struktur data array dipakai untuk merepresentasikan sekumpulan informasi yang bertipe sama dan

disimpan dengan urutan yang sesuai dengan definisi indeks secara kontigu dalam memeori komputer. Oleh

karena itu indeks harus suatu tipe data yang mempunyai keterurutan seperti tipe integer atau karakter.

Bentuk array sama seperti tabel sehingga array seringkali juga disebut tabel. Misalnya tabel untuk

menyimpan data nilai 100 buah

TabNilai

index nilai 1 60 2 70 3 100 4 80 5 65

..... ..... 100 89

Sebuah array harus diberi nama, supaya mudah diakses atau diacu. Setiap elemen/bagian array harus

diberi alamat supaya dapat dibedakan dengan elemen lainnya dan mudah dalam pencarian. Indeks

digunakan sebagai alamat elemen pada array.

Deklarasi Array

Supaya sebuah array dapat diisi, arraynya harus dibuat dulu atau dipesan tempatnya (berapa banyak

data yang akan dimasukkan ke dalam array) dengan cara dideklarasikan di bagian kamus. Jumlah elemen

array tidak dapat diubah selama pelaksanaan program

Bentuk umum deklarasi array :

nama_array : array [range_index] of tipe_elemen

contoh : TabNilai : array [1..100] of real Frekuensi : array [‘a’..’z’] of integer NamaKota : array [1..20] of string

Tipe_elemen menunjukkan tipe data dari elemen tabel, semua isi elemen tabel bertipe sama. Range

index bisa berupa integer atau character dan harus menaik.

Setelah sebuah array dideklarasikan, akan disediakan tempat di memori sebanyak jumlah elemen yang

dipesan. Memori adalah tempat untuk menyimpan data yang bersifat sementara sedangkan harddisk untuk

menyimpan data yang bersifat permanen. Memori juga memiliki alamat yang dapat diakses jika dibutuhkan.

Page 44: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 43

Operasi Terhadap Array

Operasi atau manipulasi terhadap array hanya dapat dilakukan terhadap satu elemennya yang

ditunjukkan oleh indeks.

Untuk mengisi atau mengambil data/nilai dari array : Nama_Array[alamat_index] ç nilai write(Nama_Array[alamat_index]) nama_variabel ç Nama_Array[alamat_index]

Contoh 1 : Membuat dan mengisi array huruf

ArrHuruf

1 ‘A’ 2 ‘N’ 3 ‘G’ 4 ‘S’ 5 ‘A’

Kamus const N = 5 ArrHuruf : array [1..N] of char

Deskripsi ArrHuruf[1] ç ‘A’ ArrHuruf[2] ç ‘N’ ArrHuruf[3] ç ‘G’ ArrHuruf[4] ç ‘S’ ArrHuruf[5] ç ‘A’ write(ArrHuruf[3])

PEMROSESAN ARRAY

Pemrosesan terhadap Array berarti memproses elemen mulai dari elemen pertama (elemen dengan

indeks terkecil, berturut-turut pada elemen berikutnya, sampai elemen terakhir dicapai). Pemrosesan terhadap

elemen array menggunakan bentuk pengulangan sebagai berikut :

for i ç index_awal to index_akhir do Proses(Nama_Array[i]) endfor 1. Pengisian elemen array dengan nilai yang dibaca dari piranti masukan

Algoritma Tabel1 Kamus

MyTab : array[1..50] of integer n,I : integer

Agoritma read(n) for i ç 1 to n do

read(MyTab[i]) endfor

Page 45: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 44

2. Penulisan elemen array Algoritma Tabel Kamus

MyTab : array[1..50] of integer n,i : integer

Agoritma read(n) for i ç 1 to n do

read(MyTab[i]) endfor

for i ç 1 to n do

write (MyTab[i]) endfor

Contoh 2 : Algoritma yang membaca sebuah array integer yang menyatakan nilai ujian, TabNilai, mulai

indeks 1 sampai n dan menghitung nilai rata-rata ujian dan menampilkannya pada layar

dimana n diinputkan oleh user

Algoritma Nilai_Mahasiswa Kamus

const NMax = 100 TabNilai : array [1..NMax] of real n,i : integer rata : real

Deskripsi read (n) for i ß 1 to n do

read(TabNilai[i]) endfor jumlah ß 0 for i ß 1 to n do jumlah ß jumlah + TabNilai[i] endfor rata ß jumlah / n

Page 46: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 45

10 PROSEDUR

Seringkali dalam membuat program besar, pemrogram perlu memecah program menjadi beberapa subprogram yang lebih kecil. Tiap subprogram(modul) dapat dirancang oleh pemrogram selain orang yang mengembangkan program utama. Modul yang sudah dirancang dapat dipasang ke dalam program lain yang membutuhkan à Teknik pemrograman modular(prosedur, routine, fungsi) Keuntungan modularisasi : 1. Untuk aktivitas yang harus dilakukan lebih dari sekali, cukup ditulis sekali sehingga dapat mengurangi panjang

program. Contoh :

Algoritma ABCD DEKLARASI

A, B, C, D, temp : integer

DESKRIPSI ….. {Pertukarkan nilai A dan B} temp ß A A ß B B ß temp ..... if C > D then

{pertukarkan nilai C dan D} temp ß C C ß D D ß temp

endif …..

Procedure TUKAR(input/output P, Q : integer) {mempertukarkan nilai P dan Q} DEKLARASI

Temp : integer DESKRIPSI

Temp ß P P ß Q Q ß Temp

Algoritma ABCD DEKLARASI

A, B, C, D, temp : integer Procedure TUKAR(input/output P, Q : integer)

DESKRIPSI ….. {Pertukarkan nilai A dan B} TUKAR(A,B) {panggil prosedur TUKAR} ..... if C > D then

{pertukarkan nilai C dan D} TUKAR(C,D) {panggil prosedur TUKAR}

endif

Page 47: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 46

Ketika sebuah program dipanggil, pelaksanaan program berpindah ke dalam modul. Lalu seluruh instruksi dalam modul dilaksanakan secara beruntun sampai akhir modul. Setelah instruksi dalam modul dilaksanakan, pelaksanaan program kembali ke program utama.

Program Utama MODUL1

MODUL2

Ilustrasi : a. Prosedur URUS PASPOR (di kantor imigrasi)

- Isi formulir permintaan paspor dengan lampiran foto copy KTP, Kartu keluarga, pas foto - Serahkan formulir yang sudah diisi beserta biaya pembuatan paspor - Wawancara dengan petugas imigrasi - Terima paspor

b. Prosedur URUS VISA (di kantor kedutaan besar) - Isi formulir permintaan visa dengan lampiran foto copy KTP, paspor, pas foto, tiket pesawat - Serahkan formulir yang sudah diisi beserta biaya pembuatan visa - Terima visa

c. Prosedur BERANGKAT DARI BANDARA - Datang ke bandara satu jam sebelum keberangkatan - Jika sudah disuruh naik ke pesawat, tunjukkan tiket, paspor, dan visa ke petugas - Naik ke pesawat - Selamat jalan...

Algoritma PERGI_KE_LUAR_NEGERI DESKRIPSI :

a. Urus Paspor b. URUS VISA c. BERANGKAT DARI BANDARA

2. Kemudahan menulis dan mencari kesalahan(debug) program

Kemudahan menulis berguna jika sebuah program dilaksanakan oleh satu tim pemrogram. Masalah dipecah menjadi beberapa submasalah. Setiap submasalah ditulis ke dalam modul individual yang dikerjakan oleh orang yang berbeda. Setelah selesai, semua modul diintegrasikan kembali menjadi program lengkap. Program modular mudah dipahami dan mudah dicari kesalahannya karena setiap modul melakukan aktivitas spesifik

M11 M12 M13

M11 M12 M13

A1 A2 A3 Call MODUL1 A4 A5 Call MODUL2 A6 A7 Call MODUL1 A8

Page 48: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 47

STRUKTUR PROSEDUR 1. Bagian Header à nama prosedur dan komentar yang menjelaskan spesifikasi prosedur 2. Bagian Kamus 3. Badan Prosedur (Deskripsi) Nama prosedur sebaiknya diawali kata kerja, misalnya Hitung_Luas, Tukar, CariMaks

.

Contoh :

Procedure Nama_Prosedur {Spesifikasi prosedur, penjelasan yang berisi uraian singkat mengenai apa yang dilakukan prosedur}

Kamus {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal didefinisikan disini}

Deskripsi {Badan prosedur, berisi kumpulan instruksi}

Procedure HIT_LUAS_LINGKARAN {menghitung luas segitiga dengan rumus L = ½ (a x t)} DEKLARASI const phi = 3.14 r , L: real

DESKRIPSI read(r) L ß phi * r * r write(L)

Procedure CETAK_HALLO {mencetak string ”Hallo, Dunia”} DEKLARASI

DESKRIPSI write(‘Hallo, Dunia’)

Procedure HIT_LUAS_ PERSEGI_PANJANG {menghitung luas empat persegi panjang dengan rumus L = panjang x lebar} DEKLARASI p, l , Luas: real

DESKRIPSI read(p , l) Luas ß p * l write(‘Luas = ’, Luas)

Procedure HIT_LUAS_SEGITIGA {menghitung luas segitiga dengan rumus L = ½ (alas x tinggi)} DEKLARASI a, t , L: real

DESKRIPSI read(a , t) L ß a * t / 2 write(L)

Page 49: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 48

PEMANGGILAN PROSEDUR Prosedur tidak bisa dieksekusi langsung. Instruksi pada prosedur bisa dilaksanakan jika prosedur diakses.

Prosedur diakses dengan memanggil namanya dari program pemanggil (program utama atau modul program lain) NAMA_PROSEDUR Ketika nama prosedur dipanggil, kendali program berpindah ke prosedur tersebut. Setelah semua instruksi

prosedur selesai dilaksanakan, kendali program berpindah kembali ke program pemanggil. Dalam program pemanggil, harus mendeklarasikan prototype prosedur (header) dalam bagian deklarasi supaya dikenali oleh program pemanggil dan mengetahui cara mengaksesnya.. Contoh :

Algoritma HALLO {program utama untuk mencetak string ”Hallo, Dunia”} DEKLARASI

Procedure CETAK_HALLO

DESKRIPSI CETAK_HALLO {panggil prosedur CETAK_HALLO}

Algoritma HITUNG_LUAS_SEGITIGA {program utama untuk menghitung luas segitiga} DEKLARASI

Procedure HIT_LUAS_SEGITIGA DESKRIPSI write(‘Menghitung Luas Sebuah Segitiga’) HIT_LUAS_SEGITIGA {panggil prosedur HIT_LUAS_SEGITIGA} write(’Selesai’)

Algoritma HITUNG_LUAS {program utama untuk menampilkan menu perhitungan luas segitiga, luas persegi panjang, dan lingkaran, memilih menu, dan melakukan proses perhitungan sesuai pilihan menu} DEKLARASI

nomor_menu : integer Procedure HIT_LUAS_SEGITIGA Procedure HIT_LUAS_PERSEGI_PANJANG Procedure HIT_LUAS_LINGKARAN

DESKRIPSI Repeat {cetak menu ke layar}

write(‘ # Menu Pilihan Menghitung Luas # ’) write(’ 1. Menghitung Luas Segitiga ’) write(’ 2. Menghitung Luas Persegi Panjang ’) write(’ 3. Menghitung Luas Lingkaran ’) write(’ 4. Keluar Program ’)

write(’ Masukkan Pilihan Menu (1 / 2 / 3 / 4) : ’) read(nomor_menul) depend on ( nomor_menu)

1 : HIT_LUAS_SEGITIGA 2 : HIT_LUAS_PERSEGI_PANJANG 3 : HIT_LUAS_LINGKARAN 4 : write(’Keluar Program...Sampai Jumpa’)

until nomor_menu = 4

Page 50: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 49

VARIABE GLOBAL DAN VARIABEL LOKAL Variabel Lokal à Ditulis pada bagian Kamus prosedur dan hanya dapat digunakan oleh prosedur Variabel Global à Ditulis pada bagian Kamus program utama, dapat digunakan di dalam program utama maupun prosedur. Contoh :

Usahakan menggunakan nama global sesedikit mungkin karena dengan nama lokal, program terlihat lebih elegan dan mempermudah mencari kesalahan program yang disebabkan oleh nama tersebut

Parameter Kebanyakan program memerlukan pertukaran informasi antara prosedur / fungsi dengan titik dimana ia dipanggil à penggunaan parameter

Parameter adalah :

Nama- nama peubah yang dideklarasikan pada bagian header prosedur.

Parameter actual ( argument ) adalah :

Parameter yang disertakan pada waktu pemanggilan prosedur.

Parameter formal adalah :

Parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri.

Procedure Hitung_Rata_Rata {program utama untuk menghitung rata-rata N buah bilangan bulat yang dibaca dari keyboard} DEKLARASI

x : integer {data bilangan bulat yang dibaca dari keyboard} k : integer {pencacah banyak bilangan} jumlah : real {jumlah seluruh bilangan} DESKRIPSI k ß 1 jumlah ß 0 while k ≤ N do read(x) jumlah ß jumlah + x k ß k + 1 endwhile rata ß jumlah / N

Algoritma Rata_Rata_Bilangan_Bulat {program utama untuk menghitung rata-rata N buah bilangan bulat yang dibaca dari keyboard } DEKLARASI N : integer {banyaknya bilangan bulat } rata : real {nilai rata-rata bilangan bulat}

Procedure Hitung_Rata_Rata

DESKRIPSI read(N) write(‘Menghitung rata-rata bilangan bulat’) Hitung_Rata_Rata write(’Nilai rata-rata : ’,rata)

Page 51: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 50

Tiap item data ditransfer antara parameter aktual(yang disertakan pada waktu pemanggilan) dengan parameter formal(yang dideklarasikan di prosedur). Ketika pemanggilan, parameter aktual menggantikan parameter formal. Tiap parameter berpasangan dengan parameter formal yang bersesuaian. Pendeklarasian parameter di dalam prosedur bukanlah keharusan. Dengan kata lain boleh ada atau tidak ada.

Memanggil prosedur dengan parameter : NAMA_PROSEDUR(daftar parameter actual)

Prosedur yang baik adalah

Prosedur yang independent dari program pemanggilannya. Prosedur yang tidak menggunakan peubah-

peubah global didalam badan prosedurnya.

Jika program utama perlu mengkomunikasikan nilai peubah global ke dalam prosedur, maka ada satu cara

untuk melakukannya yaitu dengan menggunakan parameter.

Aturan penting korespondensi satu-satu antara parameter formal dengan parameter aktual : 1. Jumlah parameter aktual harus sama dengan jumlah parameter formal 2. Tipe parameter aktual harus sama dengan tipe parameter formal 3. Tiap parameter aktual harus diekspresikan dengan cara yang benar dengan parameter formal bersesuaian,

tergantung jenis parameter formal Jenis parameter formal : 1. Parameter Masukan(input parameter) = parameter nilai(value parameter) dalam bahasa pemrograman à

nilainya berlaku sebagai masukan untuk prosedur Nilai parameter aktual diisikan(assign) ke parameter formal bersesuaian. Nilai tersebut digunakan dalam badan prosedur tetapi tidak dapa dikirimkan ke titik pemanggilan . Perubahan nilai parameter dalam badan prosedur tidak mengubah nilai parameter aktual. Nama parameter aktual boleh berbeda dengan nama parameter formal. Contoh :

Procedure Nama_Prosedur(daftar parameter formal) {Spesifikasi prosedur, penjelasan yang berisi uraian singkat mengenai apa yang dilakukan prosedur}

Kamus {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal didefinisikan disini}

Algoritma {Badan prosedur, berisi kumpulan instruksi}

Procedure SATU (input x : integer , input y : real) {Contoh prosedur dengan parameter formal jenis parameter masukan}

Deklarasi

Deskripsi x ß x + 1 y ß y + 1 write(x) write(y)

Page 52: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 51

Yang tidak boleh : SATU(c,d) SATU(a) SATU(a,c,b)

Parameter formal ß Nilai parameter aktual

2. Parameter Keluaran(output parameter) à menampung keluaran yang dihasilkan oleh prosedur Bila prosedur menghasilkan satu atau lebih nilai yang akan digunakan oleh program pemanggil, maka nilai

keluaran ditampung di dalam parameter keluaran. Bila prosedur dengan parameter keluaran dipanggil, nama parameter aktual dalam program pemanggil akan menggantikan nama parameter formal yang bersesuaian dalam prosedur. Nama parameter aktual akan digunakan selama pelaksanaan prosedur. Parameter formal ß Parameter aktual Karena nama parameter merupakan suatu lokasi di memori, maka jika parameter aktual diisi suatu nilai di dalam prosedur, nilai tersebut akan tetap berada dalam parameter aktual walaupun prosedur selesai dilaksanakan. Contoh :

Algoritma PQR {Contoh program utama yang memanggil prosedur SATU}

Deklarasi a , b : integer c , d : real Procedure SATU (input x : integer , input y : real)

Deskripsi SATU(4,10.5) read(a,b,c,d) SATU(a,c) SATU(b,d) SATU(a+5,c/d) SATU(a,b)

Procedure HIT_LUAS_SEGITIGA(input a , t : real) {menghitung luas segitiga dengan rumus L = ½ (alas x tinggi)} DEKLARASI L: real

DESKRIPSI L ß a * t / 2 write(‘Luas Segitiga = ’,L)

Algoritma HITUNG_LUAS_SEGITIGA {program utama untuk menghitung luas segitiga} DEKLARASI

alas , tinggi : real Procedure HIT_LUAS_SEGITIGA(input a , t : real)

DESKRIPSI write(‘Menghitung Luas Sebuah Segitiga’) read(alas,tinggi) HIT_LUAS_SEGITIGA(alas,tinggi) write(’Selesai’)

Page 53: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 52

Yang tidak boleh : output berupa nilai atau ekspresi DUA(4,8.5) DUA(a,a+5)

Procedure DUA(input x : integer , output y : real) {Contoh prosedur dengan parameter formal jenis parameter masukan dan jenis parameter keluaran}

Deklarasi

Deskripsi x ß x + 1 y ß x * 10

Algoritma PQR {Contoh program utama yang memanggil prosedur DUA}

Deklarasi a , b : integer Procedure DUA (input x : integer , output y : real)

Deskripsi DUA (4,b) write(b) read(a) DUA (a,b) write(b) DUA (a+5,b) write(b)

Procedure HIT_LUAS_SEGITIGA(input a , t : real, output L : real) {menghitung luas segitiga dengan rumus L = ½ (alas x tinggi)} DEKLARASI

DESKRIPSI L ß a * t / 2

Algoritma HITUNG_LUAS_SEGITIGA {program utama untuk menghitung luas segitiga} DEKLARASI

alas , tinggi, Luas : real Procedure HIT_LUAS_SEGITIGA(input a , t : real, output L : real)

DESKRIPSI write(‘Menghitung Luas Sebuah Segitiga’) read(alas,tinggi) HIT_LUAS_SEGITIGA(alas,tinggi, Luas) write(’Luas segitiga = ’, Luas)

Page 54: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 53

3. Parameter masukan/keluaran(input/output parameter)à sebagai masukan dan keluaran bagi prosedur

Parameter masukan digunakan pada situasi dimana informasi dikirim dari titik pemanggilanà prosedur Parameter keluaran digunakan pada situasi dimana informasi dikirim dari titik pemanggilan à prosedur Pada kebanyakan aplikasi, informasi harus dikirim dalam dua arah à Parameter masukan / keluaran

Procedure HITUNG_TITIKTENGAH(input T1, T2 : Titik , output Tt : Titik) {menghitung titik tengah dari dua buah titik T1 dan T2} DEKLARASI

DESKRIPSI Tt.x ß (T1.x + T2.x) / 2 Tt.y ß (T1.y + T2.y) / 2

Algoritma TITIKTENGAH {Program untuk menghitung titik tengah dari dua buah titik T1 dan T2} DEKLARASI

type Titik : record < x : real, y : real >

P1, P2, Pt : Titik Procedure HITUNG_TITIKTENGAH(input T1, T2 : Titik , output Tt : Titik)

DESKRIPSI read(P1.x, P1.y) read(P2.x, P2.y) HITUNG_TITIKTENGAH(P1, P2, Pt) write(Pt.x, Pt.y)

Page 55: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 54

Dengan parameter masukan/keluaran, nama dan nilai parameter aktual dari program pemanggil akan digunakan di seluruh bagian prosedur. Bila parameter aktual diubah nilainya di dalam prosedur, maka sesudah pemanggilan prosedur, niai parameter aktual di titik pemanggilan juga berubah. Contoh :

Bila algoritma di atas ditranslasikan ke dalam salah satu bahasa pemrograman, lalu dijalankan, hasilnya : Nilai a dan b sebelum pemanggilan : a = 15 b = 10 Nilai x dan y di akhir Prosedur TIGA : a = 17 b = 8 Nilai a dan b sesudah pemanggilan : a = 15 b = 10

Procedure TIGA (input x,y : integer) {Menambahkan nilai x dengan dan mengurangi nilai y dengan 2 }

Deklarasi

Deskripsi x ß x + 2 y ß y – 2 write(‘Nilai x dan y di akhir Prosedur TIGA : ’) write(‘x = ’,x) write(‘y = ’,y)

Algoritma FGH {Contoh program utama yang memanggil prosedur TIGA}

Deklarasi a , b : integer Procedure TIGA (input x, y : integer)

Deskripsi a ß 15 b ß 10 write(‘Nilai a dan b sebelum pemanggilan : ’) write(‘a = ’,a) write(‘b = ’,b) TIGA(a,b) write(‘Nilai a dan b sesudah pemanggilan : ’) write(‘a = ’,a) write(‘b = ’,b)

Page 56: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 55

Bila algoritma di atas ditranslasikan ke dalam salah satu bahasa pemrograman, lalu dijalankan, hasilnya : Nilai a dan b sebelum pemanggilan : a = 15 b = 10 Nilai x dan y di akhir Prosedur TIGA : a = 17 b = 8 Nilai a dan b sesudah pemanggilan : a = 17 b = 8

Procedure TIGA (input/output x,y : integer) {Menambahkan nilai x dengan dan mengurangi nilai y dengan 2 }

Deklarasi

Deskripsi x ß x + 2 y ß y – 2 write(‘Nilai x dan y di akhir Prosedur TIGA : ’) write(‘x = ’,x) write(‘y = ’,y)

Algoritma FGH {Contoh program utama yang memanggil prosedur TIGA}

Deklarasi a , b : integer Procedure TIGA (input/output x, y : integer)

Deskripsi a ß 15 b ß 10 write(‘Nilai a dan b sebelum pemanggilan : ’) write(‘a = ’,a) write(‘b = ’,b) TIGA(a,b) write(‘Nilai a dan b sesudah pemanggilan : ’) write(‘a = ’,a) write(‘b = ’,b)

Page 57: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 56

Program dengan Prosedur atau tanpa Prosedur ? Program yang modular menunjukkan teknik pemrograman yang baik dan terstruktur

Prosedur dengan parameter atau tanpa parameter? Parameter digunakan sebagai media komunikasi antara prosedur dengan program pemanggil dan dapat mengurangi kebutuhan penggunaan variabel global

Parameter Masukan atau Parameter Keluaran? Bila prosedur menghasilkan keluaran yang dibutuhkan program pemanggil, gunakan parameter keluaran untuk menampung keluaran tersebut. Bila prosedur tidak menghasilkan keluaran atau keluarannya hanya digunakan di dalam prosedur, gunakan parameter masukan. Jika prosedur menerima masukan sekaligus keluaran pada parameter yang sama, gunakan parameter masukan/keluaran

Procedure TUKAR(input/output A, B : integer) {Mempertukarkan nilai antara A dan B }

Deklarasi temp : integer

Deskripsi temp ß A A ß B B ß temp

Procedure TUKAR_A_B {Program untuk mempertukarkan nilai antara A dan B }

Deklarasi A , B : integer Procedure TUKAR(input/output A, B : integer)

Deskripsi read(A , B) write(A , B) TUKAR(A , B) write(A , B)

Page 58: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 57

11 F U N G S I

Bentuk Umum :

Function nama_fungsi(daftar parameter) à tipe_hasil Kamus Algoritma ..... ..... à hasil {mengembalikan nilai}

Procedure vs function : Function mengembalikan nilai, hampir sama seperti prosedur dengan parameter output tetapi outputnya

tidak ditampung oleh sebuah parameter / variabel melainkan dikembalikan / dikirimkan ke program

utama

Tipe_Hasil : integer, real, boolean, string, atau tipe_bentukan seperti record

Parameter : parameter input

Contoh fungsi :

Buat algoritma untuk menghitung hasil fungsi kuadrat F = 2x2 + 4x – 6 dengan masukan nilai x

Funsction Fungsi_Kuadrat(input x : integer) à integer Kamus Algoritma à ((2 * x * x) + (4 * x) - 6)

Algoritma Kuadrat Kamus i : integer F : integer Algoritma i ß 5 F ß Fungsi_Kuadrat(i) write(F) write(Fungsi_Kuadrat(i)) if (Fungsi_Kuadrat(i) > 0) then write(’Hasil Fungsi Kuadrat Positif’) else write(’Hasil Fungsi Kuadrat Negatif’) endif write(6 + Fungsi_Kuadrat(i) * 4)

Page 59: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 58

LATIHAN

1. Buat algoritma untuk menukarkan nilai 3 buah character {proses pertukaran menggunakan prosedur /

fungsi}

2. Buat algoritma yang menentukan nilai indeks mahasiswa dengan input NIM dan nilai akhir

mahasiswa tersebut. {menggunakan fungsi / prosedur untuk penentuan indeksnya}

Ketentuan :

nA ≥ 80 : ’A’ 70 ≤ nA < 80 : ’B’ 55 ≤ nA < 70 : ’C’ 40 ≤ nA < 55 : ’D’ nA < 40 : ’E’

3.

Tentukan output dari algoritma tersebut

jika input

x y output

5 20

15 8

20 2

Procedure One (input a , b : integer , output c : integer) Kamus Algoritma if (a < b) then c ß a else while (a ≥ b) and (a > 5) do b ß b * 2 a ß a – b endwhile c ß (a * b) + Two(a , b) * Two(a + 10 , b + a) endif Function Two (input p , q : integer) à integer Kamus Algoritma if (q = 0) then à 0 else if (p > q) then à p div q else à q div p endif endif Algoritma Mistery Kamus x , y , z : integer Algoritma read(x) read(y) One(x , y, z) write(z) z ß Two(x * 2 , y - 2) * 10 write(z)

Page 60: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 59

12. ARRAY DUA DIMENSI (MATRIKS)

Array dua dimensi memiliki indeks lebih dari 1. Jika dalam matematika array dua dimensi seperti matriks.

Deklarasi Kamus:

Nama_Variabel_Array : array[range_index1][range_index2] of tipe_elemen range_index1 menunjukkan index baris range_index2 menunjukkan index kolom

Contoh : Untuk membuat matrix di bawah ini

1 2 3 1 3,5 6 8,9 2 0 1 7 3 2,8 4,7 6 4 9 5,6 4

Algoritma Isi_Matriks Kamus

const baris = 4 const kolom = 3 Mat : array[1..baris][1..kolom] of real i , j : integer

Algoritma Mat[1][1] ç 3,5 {pengisian secara langsung dengan sebuah nilai} Mat[1][2] ç 6 {pengisian secara langsung dengan sebuah nilai} Mat[1][3] ç 8,9 {pengisian secara langsung dengan sebuah nilai} for i ç 1 to baris do {pengisian secara dari piranti masukan}

for j ç 1 to kolom do read(Mat[i][j]) endfor

endfor

PEMROSESAN MATRIKS

Pemrosesan terhadap Matriks berarti memproses elemen mulai dari elemen pertama (elemen dengan

indeks terkecil, berturut-turut pada elemen berikutnya, sampai elemen terakhir dicapai) untuk setiap baris

dan setiap kolom

for i ç index_awal_baris to index_akhir_baris do for j ß index_awal_kolom to index_akhir_kolom do

Proses(Nama_Variabel_Array[i][j]) endfor

endfor

Page 61: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 60

3. Pengisian elemen matriks dengan nilai yang dibaca dari piranti masukan

Algoritma Matriks Kamus

Matrix : array[1..50][1..50] of integer n, m, i, j : integer

Agoritma read(n,m) {n adalah banyaknya baris, m adalah banyaknya kolom} if (n > 0) and (m > 0) then

for i ç 1 to n do for j ß 1 to m do

read(Matrix[i][j]) endfor

endfor endif

4. Penulisan elemen matriks

Algoritma Tabel Kamus

Matrix : array[1..50][1..50] of integer n, m, i, j : integer

Agoritma read(n,m) if (n > 0) and (m > 0) then

for i ç 1 to n do for j ß 1 to m do

read(Matrix[i][j]) endfor

endfor for i ç 1 to n do

for j ß 1 to m do write(Matrix[i][j])

endfor endfor

endif LATIHAN SOAL

1. Tuliskan algoritma untuk penulisan elemen matriks yang memiliki 6 baris dan 8 kolom, pengisian

matriks dengan nilai yang dibaca dari piranti masukan.

2. Tuliskan algoritma untuk membuat serta mengisi nilai matriks seperti dibawah ini.

20 3,2 5 6,7 4 1 7 6 8 4 6 7

Page 62: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 61

13 S E A R C H I N G

Searching (Pencarian) merupakan proses menemukan suatu nilai(data) tertentu di dalam sekumpulan data

yang bertipe sama(baik bertipe dasar atau bertipe bentukan)

Metode-metode Pencarian :

1. Pencarian Beruntun(SEQUENTIAL SEARCH)

Proses pencarian dengan metode Sequential Search adalah dengan melakukan perbandingan nilai yang

dicari dengan setiap elemen pada array mulai dari indeks terkecil sampai indeks terbesar. Pencarian

dihentikan jika nilai yang dicari telah ditemukan atau semua elemen array sudah diperiksa.

Ilustrasi Kasus :

Terdapat sebuah Array TabInt yang terdiri dari n=10 elemen

Isi Tabel 7 5 23 1 15 8 17 75 10 4

Indeks 1 2 3 4 5 6 7 8 9 10

Kasus 1 : Misalkan nilai yang dicari adalah x = 7

Elemen yang dibandingkan : 7 (ditemukan)

Karena data langsung ditemukan maka pengulangan dihentikan

indeks larik yang dikembalikan : idx = 1

Kasus 2 : Misalkan nilai yang dicari adalah x = 17

Elemen yang dibandingkan : 7, 5, 23, 1, 15, 8, 17 (ditemukan)

Setelah data ditemukan pengulangan dihentikan

indeks larik yang dikembalikan : idx = 7

Kasus 3 : Misalkan nilai yang dicari adalah x = 25

Elemen yang dibandingkan: 7, 5, 23, 1, 15, 8, 17, 75, 10, 4 (tidak ditemukan)

Karena pencarian data sudah mencapai indeks terbesar dan nilai yang dicari belum

ditemukan maka pencarian dihentikan

indeks larik yang dikembalikan : idx = 0

Page 63: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 62

Algoritma Sequential Search Algoritma Sequential_Search Kamus

const Nmax=100 type TabInteger = array[1..NMax] of integer TabInt : TabInteger jml_data, x, i : integer

Deskripsi read(jml_data) {Banyaknya integer} for i ß 1 to jml_data do {Awal Proses Input Data ke Array}

read(TabInt[i]) endfor {Akhir Proses Input Data ke Array}

read (x) {membaca data yang akan dicari} i ß 1 {Awal Prosedur Sequential Search} while (i<jml_data) and (TabInt[i] ≠ x) do

i ß i+1 endwhile { perulangan berhenti jika i ≥ jml_data atau TabInt[i] = x} if (TabInt[i] = x) then

write('Data ditemukan pada posisi ke - ',i) else

write('Data tidak ditemukan!') {Akhir Prosedur Sequential Search} endif

Salah satu ciri program yang baik adalah program tersebut memiliki sifat prosedural. Tujuannya untuk

memudahkan dalam pengembangan program, menghemat ukuran program(jika ada beberapa instruksi

yang sama digunakan pada beberapa tempat dalam program), mempermudah pembacaan program, dan

mempermudah pendeteksian kesalahan pada program. Algoritma di atas bukan algoritm yang prosedural

karena belum membagi bagian-bagian tertentunya menjadi prosedur atau fungsi. Algoritma berikut ini

merupakan modifikasi dari algoritma di atas dan sifatnya lebih prosedural

Page 64: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 63

Implementasi Algoritma Sequential Search dengan Prosedur procedure InputData(input n : integer , output T : TabInteger) Kamus i : integer Deskripsi

for i ß 1 to n do read(T[i])

endfor procedure SeqSearch(input T : TabInteger; input n , x : integer ;

output idx : integer) Kamus i : integer Deskripsi

i ß 1 while (i<n) and (T[i]≠x) do

i ß i+1 endwhile

if (T[i] = x) then

idx ß i else

idx ß 0 endif

Algoritma Sequential_Search2 Kamus

const Nmax=100 type TabInteger = array[1..NMax] of integer TabInt : TabInteger jml_data, data, indeks : integer cari : char

Deskripsi read(jml_data) {banyaknya data yang diinputkan} InputData(jml_data,TabInt) {panggil prosedur InputData}

repeat

read(data) {memasukkan data yang akan dicari} SeqSearch(TabInt, jml_data, data, indeks) {panggil prosedur SeqSearch} if (indeks = 0) then

write('Data tidak ditemukan!') else

write('Data ditemukan pada posisi ke-',indeks) endif write('Cari data lagi(y/t) ? ') read (cari)

until (cari='t') or (cari='T')

Page 65: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 64

Algoritma Sequential_Seach2 memanggil dua prosedur yaitu prosedur InputData(dengan parameter

jml_data sebagai input untuk parameter input n dan TabInt sebagai output untuk parameter output T)

dan prosedur SeqSearch(dengan parameter TabInt sebagai input untuk T, jml_data sebagai input untuk n,

data sebagai input untuk x, dan indeks sebagai output untuk idx)

Algoritma pencarian dengan metode Sequential Search memiliki banyak versi tergantung kebutuhan

akan output, kreatifitas pembuat algoritma, dan faktor lainnya. Procedure di bawah ini adalah versi lain

dari algoritma Sequential Search

Prosedur Sequential Search versi Boolean procedure SeqSearch2(input T : TabInteger ; input n , x : integer ;

output idx : integer ; output found : boolean) Kamus

i : integer Deskripsi

i ß 1 found ß false while (i ≤ n) and (not found) do

if (T[i] = x) then {jika isi T[i] = x, nilai found diubah menjadi true} foundßtrue

else {jika isi T[i] ≠ x, pencacah indeks array bertambah 1} i ß i+1

endif endwhile {perulangan berhenti jika i > n atau found=true} if (found) then {jika found=true}

idx ß i else {jika i > n}

idx ß 0 endif

2. Pencarian Bagi Dua(Binary Search)

Pencarian bagi dua adalah metode pencarian yang diterapkan pada sekumpulan data yang sudah terurut

baik menaik maupun menurun. Maksud dari metode ini adalah mempersingkat waktu pencarian data/nilai

pada tabel.

Proses pencarian :

1. Bandingkan nilai yang kita cari(x) dengan data yang berada pada posisi tengah. Jika sama, maka

pencarian selesai.

2. Jika x lebih kecil daripada data pada posisi tengah, pencarian dilakukan pada daerah yang data-

datanya lebih kecil dari data tengah

3. Jika x lebih besar daripada data pada posisi tengah, pencarian dilakukan pada daerah yang data-

datanya lebih besar dari data tengah

Page 66: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 65

4. Kembali ke proses nomor 1 jika masih ada daerah pencarian. Jika tidak ada, berarti data tidak

ditemukan.

Prosedur Binary Search Procedure BinarySearch(input T : TabInteger; input n , x : integer ;

output idx : integer) Kamus

BatasAtas, BatasBawah, Tengah : integer Deskripsi

BatasAtas ß 1 BatasBawah ß n while (BatasAtas ≤ BatasBawah) and (T[Tengah]≠x) do

Tengah ß (BatasAtas + BatasBawah) div 2 if (T[Tengah] > x) then

BatasBawah ß Tengah-1 else

if (T[Tengah] < x) then BatasAtas ß Tengah+1

endif endif

endwhile

if (T[Tengah]=x) then idx ß Tengah

else idx ß 0

endif

LATIHAN SOAL

1. Prosedur sequential versi boolean dan prosedur binary search pada contoh pembahasan yang sudah

dibahas, implementasikan kedalam algoritma dengan perosedur seperti contoh algoritma sequential

search yang sudah dibahas.

2. Perhatikanlah pada semua prosedur search yang sudah dibahas, dipakai kamus umum sebagai berikut.

Kamus Umum constant Nmax : integer = 100 type TabInt : array [1..Nmax+1] of integer { jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut} T : TabInt {tabel integer} N : integer {indeks efektif, 1 < N < Nmax+1}

Jika prosedur diparametrisasi seperti pada spesifikasi yang diberikan, maka T dan N menjadi dua buah

parameter. Padahal, nilai T dan N sebenarnya erat kaitannya satu sama lain. Deklarasi TabInt akan

lebih baik jika dibungkus menjadi sebuah type komposisi sebagai berikut :

Page 67: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 66

Kamus Umum constant Nmax : integer = 100 type TabInt : < TI: array [1..Nmax+1] of integer

N : integer {indeks efektif, } {maksimum tabel yang terdefinisi, 1 < N < Nmax+1}

{ jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut} T : TabInt {tabel integer}

Sebagai latihan, tuliskan ulang semua prosedur yang pernah didefinisikan dengan deklarasi type

komposisi ini.

Page 68: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 67

14 S O R T I N G

Sorting atau pengurutan data adalah proses untuk menyusun kumpulan data yang seragam menjadi

susunan tertentu. Kumpulan data dapat diurutkan secara Ascending(Urut Menaik), yaitu dari data yang

nilainya paling kecil sampai data yang nilainya paling besar, atau diurutkan secara Descending(Urut

Menurun), yaitu dari data yang nilainya paling besar sampai data yang nilainya paling kecil.

Metode-metode Sorting :

1. Bubble Sort

Pengurutan model ini mengambil ide dari gelembung air, yaitu mengapungkan elemen yang bernilai kecil

dari bawah ke atas. Proses pengapungan dilakukan dengan pertukaran elemen-elemen tabel.

Apabila kita menginginkan array terurut menaik, maka elemen array yang berharga paling kecil

”diapungkan” artinya diangkat ke ”atas” (atau ke ujung kiri array) melalui proses pertukaran. Proses

pengapungan ini dilakukan sebanyak n-1 langkah(satu langkah disebut satu kali pass) dengan n adalah

ukuran array.

Ilustrasi Kasus :

Perhatikan array TabInt di bawah ini yang terdiri dari n = 6 elemen yang belum terurut. Array ini akan

diurutkan menaik dengan metode Bubble Sort.

Elemen Array 25 27 10 8 76 21

Indeks 1 2 3 4 5 6

ß Arah pembandingan

Pass 1 : 25 27 10 8 21 76 1 2 3 4 5 6

25 27 10 8 21 76

25 27 8 10 21 76

25 8 27 10 21 76

8 25 27 10 21 76 Hasil Akhir Pass 1 :

8 25 27 10 21 76 1 2 3 4 5 6

Pass 2 : (Berdasarkan hasil akhir Pass 1) 8 25 27 10 21 76

8 25 27 10 21 76

8 25 10 27 21 76

8 10 25 27 21 76

Hasil akhir Pass 2 :

8 10 25 27 21 76 1 2 3 4 5 6

Page 69: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 68

Pass 3 : (Berdasarkan Hasil Akhir Pass 2)

8 10 25 27 21 76

8 10 25 21 27 76

8 10 21 25 27 76

Hasil Akhir Pass 3 : 8 10 21 25 27 76 1 2 3 4 5 6

Pass 4 : (Berdasarkan Hasil Akhir Pass 3)

8 10 21 25 27 76

8 10 21 25 27 76

Hasil Akhir Pass 4 : 8 10 21 25 27 76 1 2 3 4 5 6

Pass 5 : (Berdasarkan Hasil Akhir Pass 4)

8 10 21 25 27 76

Hasil Akhir Pass 5 : 8 10 21 25 27 76 1 2 3 4 5 6

Hasil akhir Pass 5 menyisakan satu elemen yang tidak perlu diurutkan lagi maka pengurutan selesai

Keterangan :

: Bagian data yang sudah diurutkan/diapungkan

: Bagian data yang dibandingkan dan mungkin ditukarkan posisinya

Procedure Bubble Sort Procedure BubbleSort(input n:integer,input/output T:TabInteger) {Mengurutkan Tabel Integer[1..N] dengan Bubble Sort} Kamus

pass : integer {pencacah untuk jumlah langkah} k : integer {pencacah pengapungan untuk setiap langkah} temp : integer {variabel bantu untuk pertukaran}

Algoritma for pass ß 1 to (n-1) do

for k ß n downto (pass+1) do if (T[k] < T[k-1]) then

{pertukarkan T[k] dengan T[k-1]} temp ß T[k] T[k] ß T[k-1] T[k-1] ß temp

endif endfor

endfor

Page 70: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 69

Implementasi Procedure Bubble Sort dalam Algoritma procedure InputData(input n : integer; output T : TabInteger) Kamus

i : integer Deskripsi

for i ß 1 to n do read(T[i])

endfor Procedure BubbleSort(input n:integer,input/output T:TabInteger) {Mengurutkan Tabel Integer[1..N] dengan Bubble Sort} Kamus

pass : integer {pencacah untuk jumlah langkah} k : integer {pencacah pengapungan untuk setiap langkah} temp : integer {variabel bantu untuk pertukaran}

Algoritma for pass ß 1 to (n-1) do

for k ß n downto (pass+1) do if (T[k] < T[k-1]) then

{pertukarkan T[k] dengan T[k-1]} temp ß T[k] T[k] ß T[k-1] T[k-1] ß temp

endif endfor

endfor Algoritma Bubble_Sort Kamus

const Nmax=100 type TabInteger = array[1..NMax] of integer TabInt : TabInteger jml_data : integer

Deskripsi

read (jml_data) {memasukkan banyak data yang mau diinput} InputData(jml_data,TabInt) {memanggil prosedur InputData} BubbleSort(jml_data,TabInt) {memanggil Prosedur BubbleSort}

Algoritma Bubble_Sort memanggil dua prosedur yaitu prosedur InputData(dengan parameter jml_data

sebagai input untuk parameter input n dan TabInt sebagai output untuk parameter output T) dan

prosedur BubbleSort(dengan jml_data sebagai input untuk parameter input n dan TabInt sebagai input

sekaligus output untuk parameter input/output T )

Page 71: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 70

2. Maximum Sort

Pengurutan model ini dilakukan dengan mencari nilai terbesar/maksimum dari suatu array. Nilai

terbesar tersebut kemudian disimpan di awal array(jika diurutkan menurun) atau di akhir array(jika

diurutkan menaik) dan diisolasi agar tidak disertakan lagi pada proses selanjutnya.

Ilustrasi Kasus :

Perhatikan array TabInt di bawah ini yang terdiri dari n = 6 elemen yang belum terurut. Array ini

akan diurutkan menaik dengan metode Bubble Sort.

Elemen Array 29 27 10 8 76 21

Indeks 1 2 3 4 5 6

Pass 1 : Cari elemen maksimum di dalam array TabInt[1..n] è maks = TabInt[5] = 76 Pertukarkan TabInt[5] dengan TabInt[n]

Proses Pertukaran Hasil Akhir Pass 1 29 27 10 8 76 21

29 27 10 8 21 76 Pass 2 : (Berdasarkan sususan Array hasil Pass 1)

Cari elemen maksimum di dalam array TabInt[1..5] è maks = TabInt[1] = 29 Pertukarkan TabInt[1] dengan TabInt[5]

29 27 10 8 21 76

21 27 10 8 29 76

Pass 3 : (Berdasarkan sususan Array hasil Pass 2)

Cari elemen maksimum di dalam array TabInt[1..4] è maks = TabInt[2] = 27 Pertukarkan TabInt[2] dengan TabInt[4]

21 27 10 8 29 76

21 8 10 27 29 76

Pass 4 : (Berdasarkan sususan Array hasil Pass 3)

Cari elemen maksimum di dalam array TabInt[1..3] è maks = TabInt[1] = 21 Pertukarkan TabInt[1] dengan TabInt[3]

21

8 10

27

29

76

10

8 21

27

29

76

Pass 5 : (Berdasarkan sususan Array hasil Pass 4)

Cari elemen maksimum di dalam array TabInt[1..2] è maks = TabInt[1] = 10 Pertukarkan TabInt[1] dengan TabInt[2]

10 8 21 27 29 76

8 10 21 27 29 76

Terisa satu elemen yaitu 8, maka pengurutan dihentikan. Array sudah terurut menaik

Keterangan :

: Bagian data yang sudah diurutkan

: Bagian data yang terbesar dan posisi yang akan ditukarkan dengan data terbesar

Page 72: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 71

Algoritma 2Procedure Pengurutan dengan Metode Maximum Sort secara Menaik Procedure MaxSort(input n:integer,input/output T:TabInteger) {Mengurutkan Tabel Integer[1..N] dengan Maximum Sort} Kamus

i : integer {pencacah untuk jumlah langkah} k : integer {pencacah untuk mencari nilai maksimum} imaks: integer {indeks yang berisi nilai maksimum sementara} temp : integer {variabel bantu untuk pertukaran}

Algoritma for i ß n downto 2 do

imaks ß 1 for k ß 1 to (i-1) do

if (T[k] > T[imaks]) then imaks ß k

endif endfor {pertukarkan T[i] dengan T[imaks]} temp ß T[i] T[i] ß T[imaks] T[imaks] ß temp

Endfor

3. Minimum Sort

Berbeda dengan algoritma pengurutan Maksimum, pada algoritma pengurutan minimum, basis pencarian

adalah elemen minimum. Pengurutan model ini dilakukan dengan mencari nilai terkecil/minimum dari

suatu array. Nilai terkecil tersebut kemudian disimpan di awal array(jika diurutkan menaik) atau di akhir

array(jika diurutkan menurun) dan diisolasi agar tidak disertakan lagi pada proses selanjutnya.

Algoritma 3 Procedure Pengurutan dengan Metode Minimum Sort secara Menaik Procedure MinSort(input n:integer,input/output T:TabInteger) {Mengurutkan Tabel Integer[1..N] dengan Minimum Sort} Kamus

i : integer {pencacah untuk jumlah langkah} k : integer {pencacah untuk mencari nilai minimum} imin : integer {indeks yang berisi nilai minimum sementara} temp : integer {variabel bantu untuk pertukaran}

Algoritma for i ß 1 to (n-1) do

imin ß i for k ß (i+1) to n do

if (T[k] < T[imin]) then imin ß k

endif endfor {pertukarkan T[i] dengan T[imin]} temp ß T[i] T[i] ß T[imin] T[imin] ß temp

Endfor

Page 73: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 72

LATIHAN SOAL

1. Untuk setiap metoda sort, coba analisis secara kualitatif apa yang dikerjakan jika :

a. Elemen array sudah terurut

b. Elemen array terurut terbailk

c. Elemen array bernilai sama

2. Carilah performasi ke tiga algoritma pengurutan yang dibahas, dansebutkan kasus terbaik dan kasus

terjeleknya.

3. Prosedur pengurutan maximum sort dan prosedur pengurutan minimum sort pada contoh yang

dibahas, implementasikan kedalam bentuk algoritma seperti conoth prosedur bubble sort.

4. Perhatikanlah pada semua prosedur untuk sort yang sudah dibahas, dipakai kamus umum sebagai

berikut.

Kamus Umum constant Nmax : integer = 100 type TabInt : array [1..Nmax+1] of integer { jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut} T : TabInt {tabel integer} N : integer {indeks efektif, 1 < N < Nmax+1}

Jika prosedur diparametrisasi seperti pada spesifikasi yang diberikan, maka T dan N menjadi dua buah

parameter. Padahal, nilai T dan N sebenarnya erat kaitannya satu sama lain. Deklarasi TabInt akan

lebih baik jika dibungkus menjadi sebuah type komposisi sebagai berikut :

Kamus Umum constant Nmax : integer = 100 type TabInt : < TI: array [1..Nmax+1] of integer

N : integer {indeks efektif, } {maksimum tabel yang terdefinisi, 1 < N < Nmax+1}

{ jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut} T : TabInt {tabel integer}

Sebagai latihan, tuliskan ulang semua prosedur yang pernah didefinisikan dengan deklarasi type

komposisi ini.

Page 74: Diktat Kuliah Algoritma Dan Pemrograman 2011-2012

Modul Algoritma dan Pemrograman Page 73

DAFTAR PUSTAKA

[1] Inggriani Liem. Diktat Kuliah Algoritma dan Pemrograman (Bagian Pemrograman Prosedural).

1999. Bandung : Diktat Kuliah Informatika ITB

[2] Kadir, Abdul. Dasar Pemrograman Delphi 5.0. 2000. Yogyakarta : ANDI

[3] Munir, Rinaldi. Algoritma dan Pemrograman 1. 2001. Bandung : Informatika

[4] Pardosi, Mico. Turbo Pascal 7.0. 1999. Surabaya : INDAH Surabaya

[5] Pranata, Antony. Algoritma dan Pemrograman. 2005. Yogyakarta : Graha Ilmu

[6] Wahid, Fathul. Dasar-dasar Algoritma dan Pemrograman. 2004. Yogyakarta : Andi Offset