Anda di halaman 1dari 74

M

O D U

L

ALGORIT MA dan PEMROGRAMAN

Oleh :

Devi Febrianty Rahmi Nur Shofa

MA dan PEMROGRAMAN Oleh : Devi Febrianty Rahmi Nur Shofa T EKNIK INFORMATIKA FAKU LTAS TEKNIK
MA dan PEMROGRAMAN Oleh : Devi Febrianty Rahmi Nur Shofa T EKNIK INFORMATIKA FAKU LTAS TEKNIK
MA dan PEMROGRAMAN Oleh : Devi Febrianty Rahmi Nur Shofa T EKNIK INFORMATIKA FAKU LTAS TEKNIK
MA dan PEMROGRAMAN Oleh : Devi Febrianty Rahmi Nur Shofa T EKNIK INFORMATIKA FAKU LTAS TEKNIK

T EKNIK INFORMATIKA

FAKU LTAS TEKNIK UNIVERSITAS SILIWANGI

Jl. Siliwangi N o. 24 Tasikmalaya Kotak Pos 164 Tlp. (0265) 323537 E-Mail : infor matika@ft.unsil.ac.id ; URL : http://www.unsil.ac.id

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

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.

instruksi oleh programmer untuk menyelesaikan suatu masalah. Tahapan Penyelesaian Masalah oleh Komputer 1.2 Bahasa
instruksi oleh programmer untuk menyelesaikan suatu masalah. Tahapan Penyelesaian Masalah oleh Komputer 1.2 Bahasa
instruksi oleh programmer untuk menyelesaikan suatu masalah. Tahapan Penyelesaian Masalah oleh Komputer 1.2 Bahasa

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

mesin, file kecil Kekurangan : Tetap sulit dipelajari, program sangat panjang Modul Algoritma dan Pemrograman Page
mesin, file kecil Kekurangan : Tetap sulit dipelajari, program sangat panjang Modul Algoritma dan Pemrograman Page

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

bahasa pemrograman saling komplementer, tidak mungkin dipisahkan satu sama lain Modul Algoritma dan Pemrograman Page 3
bahasa pemrograman saling komplementer, tidak mungkin dipisahkan satu sama lain Modul Algoritma dan Pemrograman Page 3

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 :

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.

menuliskan program dalam salah satu bahasa pemrograman

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

panjang · Baca input lebar · Hitung Luas = panjang x lebar · Tampilkan Luas Modul
panjang · Baca input lebar · Hitung Luas = panjang x lebar · Tampilkan Luas Modul

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

; End. Panjang : 20   Lebar : 6 Luas persegi Panjang = 120 Modul Algoritma
; End. Panjang : 20   Lebar : 6 Luas persegi Panjang = 120 Modul Algoritma

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.

tertentu sehingga dapat dilaksanakan oleh komputer. Tahapan Pelaksanaan algoritma oleh komputer Dalam bidang
tertentu sehingga dapat dilaksanakan oleh komputer. Tahapan Pelaksanaan algoritma oleh komputer Dalam bidang

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.

maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien. Modul Algoritma dan Pemrograman
maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien. Modul Algoritma dan Pemrograman

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

kentang Aksi 4 : Ibu Tati mengembalikan kantong kentang ke dalam lemari Modul Algoritma dan Pemrograman
kentang Aksi 4 : Ibu Tati mengembalikan kantong kentang ke dalam lemari Modul Algoritma dan Pemrograman

· 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

· Kantong Tidak kosong

Ciri penting algoritma:

à buang

à Kembalikan kantong ke lemari

·

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

Instruksi 1

Instruksi 2 Instruksi 3 Contoh : Algoritma Tukar isi Bejana

Runtunan instruksi :

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

berisi larutan dari bejana A Jika runtunan instruksi diubah maka hasilnya berubah Modul Algoritma dan Pemrograman
berisi larutan dari bejana A Jika runtunan instruksi diubah maka hasilnya berubah Modul Algoritma dan Pemrograman

b. Pemilihan (selection)

Adakalanya sebuah instruksi dikerjakan jika sebuah kondisi tertentu terpenuhi

Struktur umum :

If

kondisi

atau

If kondisi

then

then

Aksi 1

 

Aksi

Else

 

Aksi 2

Contoh :

If

Amir memperoleh juara kelas

then

Ayah akan membelikannya hadiah

If

Jalan Dago macet

then

If

Ambil alternative Jalan Dipati Ukur 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

100 buah kentang Selama kentang terkupas < 100 maka - Kupas 1 kentang Modul Algoritma dan
100 buah kentang Selama kentang terkupas < 100 maka - Kupas 1 kentang Modul Algoritma dan

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

Operasi Input atau Output

 
    Percabangan / Pengambilan Keputusan
 

Percabangan / Pengambilan Keputusan

 
    Aliran Data
 

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.

pemrograman sehingga lebih mudah ditranslasikan ke dalam bahasa pemrograman. Modul Algoritma dan Pemrograman Page 10
pemrograman sehingga lebih mudah ditranslasikan ke dalam bahasa pemrograman. Modul Algoritma dan Pemrograman Page 10

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 Baca R Phi 3.14 Luas Phi * R * R Tulis Luas Selesai
Mulai
Baca R
Phi
3.14
Luas
Phi * R * R
Tulis
Luas
Selesai
– Flowchart Mulai Baca R Phi 3.14 Luas Phi * R * R Tulis Luas Selesai
– Flowchart Mulai Baca R Phi 3.14 Luas Phi * R * R Tulis Luas Selesai

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

keterangan = tidak lulus. o tulis nama dan keterangan – Flow chart Modul Algoritma dan Pemrograman
keterangan = tidak lulus. o tulis nama dan keterangan – Flow chart Modul Algoritma dan Pemrograman
keterangan = tidak lulus. o tulis nama dan keterangan – Flow chart Modul Algoritma dan Pemrograman

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

angka - tulis ’Dasar Pemrograman’ o tulis nama dan keterangan Modul Algoritma dan Pemrograman Page 13
angka - tulis ’Dasar Pemrograman’ o tulis nama dan keterangan Modul Algoritma dan Pemrograman Page 13

Flow chart

– Flow chart – Pseudo-code Algoritma Cetak_Frase   {Menerima masukan sebuah angka, kemudian
– Flow chart – Pseudo-code Algoritma Cetak_Frase   {Menerima masukan sebuah angka, kemudian
– Flow chart – Pseudo-code Algoritma Cetak_Frase   {Menerima masukan sebuah angka, kemudian
– Flow chart – Pseudo-code Algoritma Cetak_Frase   {Menerima masukan sebuah angka, kemudian

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

 
(‘Dasar Pemrograman’)   i ß i + 1 endwhile   Modul Algoritma dan Pemrograman Page 14
(‘Dasar Pemrograman’)   i ß i + 1 endwhile   Modul Algoritma dan Pemrograman Page 14

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

Dalam implementasinya pada bahasa pemrograman,

tipe integer punya rentang nilai terbatas untuk menghemat memory.

23].

· 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

· Contoh objek

3. Bilangan Logika

·

· Domain Nilai

Konstanta

·

Nama Tipe

: 2.8 , -0.39, 4.24 , 57.567, -102.00

: Nilai ujian

: Boolean

: Benar(True--1) atau Salah(False--0)

: True dan False

ujian : Boolean : Benar( True --1) atau Salah( False --0) : True dan False Modul
ujian : Boolean : Benar( True --1) atau Salah( False --0) : True dan False Modul

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_field 1 :tipe_field 1 ,

nama_field 2 :tipe_field 2 ,

nama_field n : tipe_field n >

, nama_field 2 :tipe_field 2 , nama_field n : tipe_field n > Modul Algoritma dan Pemrograman
, nama_field 2 :tipe_field 2 , nama_field n : tipe_field n > Modul Algoritma dan Pemrograman

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
x y

type Titik : record < x : real,

type Titik : record< x , y : real >

y : real >

atau

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

sebagai bulan, yy sebagai tahun dd mm yy
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

algoritmik, objek yang diberi nama bisa berupa :

Dalam sebuah teks

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

program, nama variabel, nama konstanta, nama fungsi, nama prosedur, nama type. Modul Algoritma dan Pemrograman Page
program, nama variabel, nama konstanta, nama fungsi, nama prosedur, nama type. Modul Algoritma dan Pemrograman Page

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:

tidak

- Pemilihan

nama

harus

interpretatif(disesuaikan

dengan

objek

yang

diidentifikasi)

dan

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 nim: integer jns_kelamin : char

{variabel nama bertipe string} {variabel nim bertipe integer/bilangan bulat} {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’

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

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}

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

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

nilai ke piranti keluaran, diacu dari suatu nama untuk perhitungan/ekspresi Modul Algoritma dan Pemrograman Page 20
nilai ke piranti keluaran, diacu dari suatu nama untuk perhitungan/ekspresi Modul Algoritma dan Pemrograman Page 20

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_var ß konstanta nama_var ß ekspresi nama_var ß nama_fungsi

nama_var2 {harga dari nama variabel2 disalin ke nama variabel1}

{harga dari nama konstanta disalin ke nama variabel} {hasil perhitungan ekspresi diisikan ke nama variabel} {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 Jarak : real Deskripsi Algoritma k ß 10 ketemu ß false Jarak ß 34.8 NamaKota ß ’Tasikmalaya’ Suhu1 ß 40 Suhu2 ß 30 Total ß Suhu1 + Suhu2 Suhu1 ß Suhu2 Total ß k*20+14

J : Jam NamaKota : string

Suhu1 + Suhu2 Suhu1 ß Suhu2 Total ß k*20+14 J : Jam NamaKota : string Modul
Suhu1 + Suhu2 Suhu1 ß Suhu2 Total ß k*20+14 J : Jam NamaKota : string Modul

· 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) read(list nama_variabel)

{membaca sebuah nilai} {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)

write(ekspresi)

write(list-nama)

{menuliskan konstanta / isi nama_konstanta ke piranti keluaran} {menuliskan harga hasil perhitungan ekspresi ke piranti keluaran } {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

Jika nama_variabel sudah didefinisikan dengan assignment atau instruksi read Modul Algoritma dan Pemrograman Page 22
Jika nama_variabel sudah didefinisikan dengan assignment atau instruksi read Modul Algoritma dan Pemrograman Page 22

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

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

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

= 21

x

ß

4.3 + 2

x

= 6.3

 

- Kurang

Integer/Real

x

ß

15 – 2

x

= 13

x

ß

2.1 – 1.1

x

= 1.0

*

Kali

Integer/Real

x

ß

5 * 6

x

= 30

x

ß

2.0 * 1.1

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

boolean(true atau false)

operand

bertipe

boolean

Operator

Arti

Hasil

not

negasi

boolean

and

dan

boolean

or

atau

boolean

xor

exclusive OR

boolean

dan

ekspresinya

akan

menghasilkan

nilai

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);

and (9 <> 1)) or (3 < 7); write(HBagi, HSisa, Gaji_Total, m , n); Modul Algoritma
and (9 <> 1)) or (3 < 7); write(HBagi, HSisa, Gaji_Total, m , n); Modul Algoritma

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

maka setiap instruksi/aksi akan dilaksanakan secara sekuensial mulai

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.

deretan instruksi/aksi ke 1, 2, 3, 4, dari yang ke-1, kemudian ke-2, ke-3,

n

s/d

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

Permasalahan : Tuliskan algoritma untuk menulis ’HELLO’ ke piranti keluaran Input : - Output : ’HELLO’ Proses : menulis ’HELLO’

: HELLO

Algoritma Cetak_HELLO {Menulis ”HELLO” ke piranti keluaran} Kamus Deskripsi write(‘HELLO’)

{Menulis ”HELLO” ke piranti keluaran} Kamus Deskripsi write(‘HELLO’) Modul Algoritma dan Pemrograman Page 25
{Menulis ”HELLO” ke piranti keluaran} Kamus Deskripsi write(‘HELLO’) Modul Algoritma dan Pemrograman Page 25

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 =

a la s

x

tin g g i

2

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

pokok+tunjangan) Input : Nama dan Gaji Pokok Output : Gaji Bersih Modul Algoritma dan Pemrograman Page
pokok+tunjangan) Input : Nama dan Gaji Pokok Output : Gaji Bersih Modul Algoritma dan Pemrograman Page

Proses

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

1000000 , Pajak =

10

100 x (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

Permasalahan : Buatlah algoritma yang membaca dua buah bilangan integer yang ditampung dalam variabel, menukarkan harga variabel tersebut dan menuliskan hasil pertukarannya

: TUKAR

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)

Deskripsi read (A, B) temp ß A A ß B B ß temp write(A, B) Modul
Deskripsi read (A, B) temp ß A A ß B B ß temp write(A, B) Modul

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

x > 100, kar = ‘*’ , (a ≠ 0) or (b = 0) , ketemu
x > 100, kar = ‘*’ , (a ≠ 0) or (b = 0) , ketemu

IF-THEN

a. Satu Kasus

if <kondisi> then aksi endif

Contoh – contoh :

a. if

x > 100

x ß x + 1

then

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

if bil mod 2 = 0 then write (‘bilangan genap’) write (bil*2) endif Modul Algoritma dan
if bil mod 2 = 0 then write (‘bilangan genap’) write (bil*2) endif Modul Algoritma dan

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

0) then write (’Bilangan Genap’) else write (’Bilangan Ganjil’) endif Modul Algoritma dan Pemrograman Page 30
0) then write (’Bilangan Genap’) else write (’Bilangan Ganjil’) endif Modul Algoritma dan Pemrograman Page 30

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

write(‘Error’)

else

if n1≥n2 then hasil ß n1/n2 else hasil ß n2/n1 endif write(hasil) endif

n2=0 then

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.

tidak ada satupun aksi yang benar maka aksi sesudah otherwise yang dikerjakan. Modul Algoritma dan Pemrograman
tidak ada satupun aksi yang benar maka aksi sesudah otherwise yang dikerjakan. Modul Algoritma dan Pemrograman

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’)

=7 : write (‘Juli’) otherwise write (‘Bukan nomor hari yang benar’) Modul Algoritma dan Pemrograman Page
=7 : write (‘Juli’) otherwise write (‘Bukan nomor hari yang benar’) Modul Algoritma dan Pemrograman Page

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,

· 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

, aksin merupakan satu atau lebih instruksi yang dikerjakan secara berulang-ulang

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

10} Kamus i : integer Deskripsi for i ß 1 to 10 do write (i) endfor
10} Kamus i : integer Deskripsi for i ß 1 to 10 do write (i) endfor

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,

· 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

, aksin merupakan satu atau lebih instruksi yang dikerjakan secara berulang-ulang

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

nilai True · Pengulangan berhenti jika (kondisi) menghasilkan nilai False Modul Algoritma dan Pemrograman Page 34
nilai True · Pengulangan berhenti jika (kondisi) menghasilkan nilai False Modul Algoritma dan Pemrograman Page 34

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

endwhile

+

1

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

berhenti. Test terhadap kondisi berhenti dilakukan setelah aksi dikerjakan Modul Algoritma dan Pemrograman Page 35
berhenti. Test terhadap kondisi berhenti dilakukan setelah aksi dikerjakan Modul Algoritma dan Pemrograman Page 35

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

tersebut. Proses pembacaan dan perhitungan dilakukan sampai user tidak ingin

dari nilai mahasiswa 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 + 1

n write(‘Apakah anda ingin input data lagi (y/t) ? ’) read(jawab) until (jawab = ‘T’) or (jawab = ‘t’) rata ß jumlah / n write(rata)

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

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.

field 1

field 2

field 3

field n

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

nilai elemen yang tersimpan pada T yang telah terdefinisi adalah : T.x dan T.y Modul Algoritma
nilai elemen yang tersimpan pada T yang telah terdefinisi adalah : T.x dan T.y Modul Algoritma

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

sebagai menit bernilai [0 59], hh mm ss
sebagai menit bernilai [0
59],
hh
mm ss

dan ss sebagai detik bernilai [0

59]

type Waktu : record < hh : integer[0

23],

mm

: integer[0

59],

ss

: integer[0

59]

>

23],

mm

23], mm : integer[0 59], ss : integer[0 59] > 23], mm Modul Algoritma dan Pemrograman
23], mm : integer[0 59], ss : integer[0 59] > 23], mm Modul Algoritma dan Pemrograman

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)

M.NamaMhs, M.KodeMK, M.Nilai) write (M.Nim, M.NamaMhs, M.KodeMK, M.Nilai) Modul Algoritma dan Pemrograman Page 39
M.NamaMhs, M.KodeMK, M.Nilai) write (M.Nim, M.NamaMhs, M.KodeMK, M.Nilai) Modul Algoritma dan Pemrograman Page 39

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)

D.golongan, D.gaji_pokok) write (D.ID, D.nama, D.golongan, D.gaji_pokok) Modul Algoritma dan Pemrograman Page 40
D.golongan, D.gaji_pokok) write (D.ID, D.nama, D.golongan, D.gaji_pokok) Modul Algoritma dan Pemrograman Page 40

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)

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

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

Frekuensi : array [‘a’

NamaKota

: array [1

: array [1

100]

of real

’z’] of integer

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.

permanen. Memori juga memiliki alamat yang dapat diakses jika dibutuhkan. Modul Algoritma dan Pemrograman Page 42
permanen. Memori juga memiliki alamat yang dapat diakses jika dibutuhkan. Modul Algoritma dan Pemrograman Page 42

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’
ArrHuruf
1 ‘A’
2 ‘N’
3 ‘G’
4 ‘S’
5 ‘A’

Kamus

const N = 5 ArrHuruf : array [1 Deskripsi ArrHuruf[1] ç ‘A’ ArrHuruf[2] ç ‘N’ ArrHuruf[3] ç ‘G’ ArrHuruf[4] ç ‘S’ ArrHuruf[5] ç ‘A’

write(ArrHuruf[3])

N] of char

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

n,I

:

integer

Agoritma

50] of integer

read(n)

for i

ç 1 to n do

read(MyTab[i])

endfor

50] of integer read (n) for i ç 1 to n do read (MyTab[i]) endfor Modul
50] of integer read (n) for i ç 1 to n do read (MyTab[i]) endfor Modul

2. Penulisan elemen array

Algoritma Tabel Kamus

MyTab : array[1

n,i

:

integer

Agoritma

50] of integer

read(n)

for i

ç 1 to n do

read(MyTab[i])

endfor