• Tidak ada hasil yang ditemukan

Notasi Algoritmik untuk Instruksi Sekuensial

KAMUS i : integer

x : real flag : boolean ALGORITMA input (i) x ← 0.0 flag ← true output (x)

output (i*2, flag)

Program SEQ2

{ Contoh penulisan aksi sekuensial dengan tanda titik koma}

KAMUS

i : integer x : real flag : boolean

ALGORITMA

input (i); x ← 0.0; flag ← true

Ada aksi sekuensial yang jika diubah urutan instruksi/aksinya akan mempengaruhi eksekusi program. Ada sequence yang jika diubah urutan instruksi/aksinya akan menghasilkan efek neto yang sama (tidak berpengaruh).

Contoh aksi sekuensial yang berpengaruh jika diubah urutannya:

Program SEQ3

{ Aksi sekuensial yang berpengaruh jika diubah urutannya }

KAMUS

i : integer

ALGORITMA

{ Jika urut-urutan dua buah instruksi pada program dengan dua buah instruksi sekuensial sebagai berikut diubah, maka akan menghasilkan kesalahan fatal karena syarat untuk dapat menuliskan harga yang tersimpan di suatu nama adalah bahwa nama tersebut sudah terdefinisi harganya }

{ State : i belum terdefinisi } input (i)

{ State : i terdefinisi akibat instruksi input } output (i)

{ State : i tertulis di piranti keluaran }

Program SEQ3

{ aksi sekuensial yang berpengaruh jika diubah urutan instruksinya }

KAMUS

i : integer j : integer

ALGORITMA

{ Jika urut-urutan instruksi dibalik, program akan salah. Nilai j harus diisi dengan i yang terdefinisi dari pembacaan; penulisan I dan j hanya dapat dilakukan jika sudah terdefinisi }

{ State : harga i dan j tidak terdefinisi }

input (i)

{ State : i terdefinisi }

j ← i

{ State : harga j terdefinisi, disalin dari i, harga i dan j terdefinisi }

output (i,j)

{ State : harga i dan j tertulis di piranti keluaran }

Pada bagian ini akan diberikan beberapa contoh program yang hanya mengandung aksi sekuensial dan hanya mempergunakan instruksi yang pernah dipelajari sebelumnya yaitu manipulasi nama dan harga.

Jika bagian prosedur, analisis kasus dan pengulangan serta yang lain telah dipelajari, maka aksi sekuensial boleh mengandung analisis kasus dan pengulangan serta aksi yang yang dinyatakan dengan nama prosedur.

Contoh 1: HELLO

Persoalan:

Tuliskanlah algoritma untuk menulis "HELLO" ke piranti keluaran yang disediakan. Berikut ini diberikan 2 solusi. Pikirkanlah, mana yang lebih "baik".

Spesifikasi:

Input : -

Output : “HELLO”

Proses : menulis “HELLO”

Program HELLO1

{ Menulis "HELLO" ke piranti keluaran }

KAMUS

ALGORITMA

output (“HELLO”)

Program HELLO2

{ Menulis "HELLO" ke piranti keluaran }

KAMUS

pesan : string { nama informasi yang dituliskan pesannya }

ALGORITMA

pesan ← “HELLO”

output (pesan)

Contoh 2: HELLOX

Persoalan:

Tuliskanlah algoritma untuk membaca sebuah nama, dan menulis "HELLO" yang diikuti dengan nama yang diketikkan. Contoh :

jika dibaca “ALI”, maka keluaran adalah : “HELLO ALI” jika dibaca “SINTA”, maka keluaran adalah : “HELLO SINTA”

Spesifikasi:

Input : nama

Output : “HELLO <nama>”

Proses : menulis “HELLO” diikuti nama yang dibaca

Program HELLOX

{ Menulis "HELLO" berikut nama yang diberikan dari piranti masukan ke piranti keluaran }

KAMUS

name : string { nama informasi yang dituliskan pesannya }

ALGORITMA

input (name)

Contoh 3: JARAK

Persoalan:

Dibaca dua buah harga v (kecepatan, m/detik) dan t (waktu, detik), yang mewakili koefisien persamaan gerak lurus beraturan. Harus dihitung dan dituliskan hasilnya, jarak yang ditempuh benda yang bergerak lurus beraturan dengan kecepatan v tersebut dalam waktu t.

Spesifikasi:

Input : v (kecepatan, m/detik), integer dan t (waktu, detik), integer Proses : menghitung S = v * t

Output : S (jarak yang ditempuh dalam meter ), integer

Program JARAK1

{ Dibaca v dan t, Menghitung S = v * t dan menuliskan hasilnya, } { dengan memakai nama antara }

KAMUS

v : integer { kecepatan, m/detik } t : integer { waktu, detik }

S : integer { jarak (m) yang ditempuh dalam waktu t,

dengan kecepatan v, pada gerak lurus beraturan }

ALGORITMA

input (v,t)

S ← v * t

output (S)

Program JARAK2

{ Dibaca v dan t, menghitung jarak = v * t dan menuliskan hasilnya } { Tanpa memakai nama antara }

KAMUS

v : integer { kecepatan, m/detik } t : integer { waktu, detik }

ALGORITMA

input (v,t) output (v*t)

Catatan:

1. Mengenai input yang dibaca oleh program: dalam kehidupan sehari-hari, akan sangat sulit untuk memasukkan input nilai v dan t di atas, karena jika pemakai program salah memasukkan urutan, harga yang tersimpan akan salah. Untuk contoh di atas, karena rumusnya hanya perkalian dua buah nilai integer mungkin tidak fatal. Jika rumus misalnya adalah v-t, maka pemasukan data dengan urutan yang lain akan fatal akibatnya.

2. Mengenai output: output program di atas sangat sulit diinterpretasi karena yang dihasilkan oleh program hanya sebuah angka yang tidak jelas interpretasinya.

Program JARAK3

{ Dibaca v dan t, menghitung jarak = v * t dan menuliskan hasilnya } { Tanpa memakai nama antara }

KAMUS

v : integer { kecepatan, m/detik } t : integer { waktu, detik }

ALGORITMA

output (“Input nilai kecepatan : ”) input (v)

output (“Input nilai waktu : ”) input (t)

output (“Jarak yang dihitung = ”, v * t)

Catatan:

1. Dengan menuliskan semacam ini, program akan dapat dioperasikan dengan lebih mudah, namun algoritma menjadi sangat rinci. Lebih rinci lagi, dapat dibuat layar yang indah dengan warna-warni dan posisi penulisan yang enak dibaca.

2. Tujuan dari menuliskan algoritma adalah untuk menuliskan “sketsa” solusi dari program, jadi hanya mengandung hal yang esensial.

3. Sebaiknya instruksi yang sudah sangat rinci dan tidak mengandung hal esensial dikode secara langsung dalam bahasa pemrograman pada saat impelementasi. Jadi, teks algoritma JARAK1 dan JARAK2 yang hanya mengandung hal yang esensial adalah produk dari design program, sedangkan teks rinci semacam JARAK3 langsung pada bahasa pemrogramannya.

4. Untuk selanjutnya, teks algoritma dituliskan dengan hanya mengandung hal yang esensial saja karena pusat perhatian kita adalah untuk menghasilkan sketsa solusi saja.

Contoh 4: JAMMENITDETIK

Persoalan:

Dibaca sebuah harga berupa bilangan bulat, positif dan lebih kecil dari 1 juta, yang mewakili besaran dalam detik. Harus dihitung ekivalensinya, berapa hari, jam berapa menit dan berapa detik. Contoh: data 309639 akan menghasilkan 3, 14, 0, 39, yang artinya 3 hari, 14 jam, 0 menit dan 9 detik.

Spesifikasi:

Input : n (detik), integer

Proses : menghitung hari, jam, menit, detik ekivalen dengan n Output : HARI, JAM, MENIT, DETIK

Analisis: nama-nama informasi yang akan dibutuhkan adalah: n : bilangan yang dibaca sebagai data, integer antara 0 dan 999999 H : HARI, bilangan bulat positif, HARI

J : JAM, bilangan bulat positif antara 0 - 23 M : MENIT, bilangan bulat antara 0 -59 D : DETIK, bilangan bulat antara 0 – 59

Program JAMMENITDETIK

{ Dibaca n (integer), besaran dalam detik}

{ Harus dihitung J (Jam) dan M(Menit) dan D(Detik sisanya), dan dituliskan hasilnya }

KAMUS

n : integer [0..999999] { data yang dibaca }

H : integer ≥ 0 { HARI, bilangan bulat positif }

J : integer [0..23] { JAM, bilangan bulat positif antara 0 - 23 }

M : integer [0..59] { MENIT, bilangan bulat antara 0 -59 }

D : integer [0..59] { DETIK, bilangan bulat antara 0 - 59 }

rH : integer [0..86399] { sisa detik dalam perhitungan HARI }

rJ : integer [0..3599] { sisa detik dalam perhitungan JAM }

ALGORITMA

Dokumen terkait