Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) :: Noor Ifada ::
S1 Teknik Informatika-Unijoyo
1
Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi Teks Algoritma ke dalam Teks Program Bahasa Pascal Tabel Translasi
S1 Teknik Informatika-Unijoyo
2
1
Pendahuluan Teks algoritma yang dimaksud di sini adalah teks pseudocode yang dianggap perlu untuk menjembatani keragaman dan kompleksitas bahasa sehingga dapat dilakukan “abstraksi” Teks ini lebih berorientasi kepada detail design dibandingkan coding (merupakan rancangan secara prosedural yang selanjutnya dengan mudah dapat ditranslasi menjadi salah satu program dalam bahasa tertentu) Contoh bahasa pemrograman yang digunakan adalah Bahasa Pascal. Jadi dalam pembahasan berikutnya, translasi teks Algoritma adalah ke dalam teks program Bahasa Pascal. S1 Teknik Informatika-Unijoyo
3
Pendahuluan - contd Bagian-bagian (blok) dalam teks algoritma: JUDUL (header) algoritma DEKLARASI algoritma DESKRIPSI algoritma Algoritma NAMA_ALGORITMA { Penjelasan mengenai algoritma, yang berisi mengenai apa yang dilakukan oleh algoritma }
uraian
singkat
DEKLARASI { Semua nama yang dipakai, meliputi nama tipe, nama tetapan, nama peubah, nama prosedur dan nama fungsi didefinisikan di sini } DESKRIPSI : { Semua langkah atau aksi algoritma dituliskan di sini }
Keterangan: Pasangan tanda kurung kurawal (‘{‘ dan ‘}’) digunakan untuk memberikan komentar (untuk memperjelas maksud teks yang dituliskan). S1 Teknik Informatika-Unijoyo
4
2
Judul Algoritma • Terdiri dari nama dan penjelasan (spesifikasi) algoritma. • Nama yang digunakan sebaiknya singkat (namun cukup informatif). • Biasanya di bawah nama diberi spesifikasi algoritma. Algoritma yang akan ditulis nantinya harus sesuai dengan spesifikasi yang didefinisikan. Algoritma LUAS_PERSEGI_PANJANG { Menghitung luas persegi panjang dengan masukan ukuran panjang dan ukuran lebar, lalu mencetak hasil luas persegi panjang ke piranti keluaran }
S1 Teknik Informatika-Unijoyo
5
Deklarasi •
• •
Merupakan tempat untuk mendefinisikan berbagai macam nama, yaitu: nama tipe nama konstanta nama peubah (nama variabel) nama fungsi, sekaligus spesifikasinya nama prosedur, sekaligus spesifikasinya Semua nama tersebut baru dapat digunakan jika telah didefinisikan di dalam DEKLARASI. Penulisan sekumpulan nama dalam DEKLARASI sebaiknya dikelompokkan menurut jenis nama tersebut. Ketentuan-ketentuan dalam pendefinisian nama-nama: nama peubah belum terdefinisi harganya ketika didefinisikan. Pendefinisian konstanta sekaligus juga memberikan harganya. Pendefinisian nama fungsi sekaligus juga dengan domain dan range serta spesifikasinya. Pendefinisian nama prosedur sekaligus juga dengan pendefinisian parameter (jika ada) dan spesifikasi prosedur (kondisi awal, kondisi akhir dan proses yang dilakukan). S1 Teknik Informatika-Unijoyo
6
3
Deklarasi - contd DEKLARASI { Nama tipe, hanya untuk tipe yang bukan tipe dasar } type Titik : <X:real,Y:real> { koordinat pada sumbu kartesian } { Nama konstanta, harus menyebutkan nilai } const phi = 3.14 { Nama peubah (variabel), menyebutkan tipe } P : Titik { Titik dalam derajat kartesian } jmlh : integer { Jumlah suatu elemen } ketemu : boolean { Keadaan hasil pencarian } { Spesifikasi Fungsi, menyebutkan nama fungsi, domain dan range } function Konversi_Real_Ke_Integer(input i:real)→integer { Mengkonversi harga i yang bertipe real menjadi harga ekivalen bertipe integer }
yang
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } procedure Tukar(input/output A:integer, input/output B:integer) { Kondisi awal : A dan B terdefinisi, A=a dan B=b } { Kondisi akhir : A=b dan B=a } { Proses : Mempertukarkan nilai A dan B } S1 Teknik Informatika-Unijoyo
7
Deskripsi • Merupakan bagian inti dari algoritma. • Komponen di dalam teks algoritma dapat berupa: – – – –
Instruksi dasar seperti input/output, assignment Urutan (sequence) Pemilihan Pengulangan
DESKRIPSI: read(a) b←a mod 2 if b = 0 then write(‘bilangan genap’) else write(‘bilangan ganjil’) endif S1 Teknik Informatika-Unijoyo
8
4
Translasi Teks Algoritma ke dalam Teks Program Bahasa Pascal Struktur program Pascal juga terdiri dari tiga bagian: 1. Judul Program sifatnya opsional dan tidak signifikan. Dapat
digunakan untuk memberi nama program dan sifatnya sebagai dokumentasi saja. Judul program dituliskan pada awal program dan diakhiri dengan titik koma (‘;’). 2. Bagian Deklarasi digunakan bila di dalam program menggunakan pengenal (identifier). Identifier dapat berupa label, konstanta, tipe, peubah, prosedur dan fungsi. Jika suatu program menggunakan identifier, Bahasa Pascal menuntut supaya identifier tersebut dikenalkan/dideklarasikan terlebih dahulu sebelum digunakan. 3. Bagian Deskripsi menunjukkan suatu tindakan yang dikerjakan oleh program. Tindakan yang dilakukan oleh program tergantung pada instruksi-instruksi yang diberikan. Instruksiinstruksi yang akan diberikan untuk dikerjakan ditulis di antara kata cadangan Begin dan End. Akhir penulisan dari End diakhiri dengan tanda baca titik (‘.’). Setiap instruksi per barisnya diakhiri dengan tanda baca titik koma (‘;’). S1 Teknik Informatika-Unijoyo
9
Translasi… - contd PASCAL
ALGORITMA Algoritma NAMA_ALGORITMA {Penjelasan mengenai algoritma, yang berisi uraian singkat mengenai apa yang dilakukan oleh algoritma} DEKLARASI {Semua nama yang dipakai, meliputi nama tipe, nama tetapan, nama peubah, nama prosedur dan nama fungsi didefinisikan di sini} DESKRIPSI : {Semua langkah atau aksi algoritma dituliskan di sini}
program NAMA_PROGRAM; {Penjelasan mengenai program, yang berisi uraian singkat mengenai apa yang dilakukan oleh program} (* DEKLARASI *) [const] {semua nama tetapan dan harga tetapannya didefinisikan di sini} [type] {semua nama tipe bentukan didefinisikan di sini} [var] {semua nama peubah global didefinisikan di sini} {deklarasi prosedur dan fungsi didefinisikan di sini} (* DESKRIPSI *) begin {semua instruksi program dituliskan di sini} end. S1 Teknik Informatika-Unijoyo
10
5
Translasi… - contd • Contoh translasi dari teks algoritma ke teks bahasa pemrograman Pascal untuk mendapatkan hasil sebagai berikut: 0 1 2 3 4 5
• Untuk mendapatkan hasil seperti di atas, pada bagian Deskripsi digunakan instruksi dengan struktur pengulangan While-Do
S1 Teknik Informatika-Unijoyo
11
Translasi… - contd ALGORITMA
PASCAL
Algoritma PENAMBAHAN_SATU { Menampilkan penambahan satu dari suatu bilangan bulat, dimulai dari 0 sampai dengan 5 } DEKLARASI I : integer { peubah data bilangan bulat } DESKRIPSI: I ← 0 while I ≤ 5 do write(I) I←I + 1 endwhile { I > 5 }
program PENAMBAHAN_SATU; { Menampilkan penambahan satu dari suatu bilangan bulat, dimulai dari 0 sampai dengan 5 } (* DEKLARASI *) [var] I : integer { peubah data bilangan bulat } (* DESKRIPSI *) begin I := 0; while I <= 5 do begin writeln(I); I := I + 1; end; end.
S1 Teknik Informatika-Unijoyo
12
6
Translasi - contd Beberapa hal penting tentang bahasa Pascal: • Bahasa Pascal tidak membedakan nama yang ditulis dalam huruf besar ataupun huruf kecil (tidak bersifat case sensitive). Misal: I sama saja dengan i penambahan_satu sama saja dengan PENAMBAHAN_SATU • Komentar ditulis di antara tanda “{“ dan “}” atau di antara “(*” dan “*)” • Program Pascal tidak mengenal aturan penulisan di kolom tertentu, jadi boleh dituliskan mulai kolom ke berapapun. Penulisan instruksi-instruksi yang menjorok masuk beberapa kolom tidak memiliki pengaruh apapun di dalam proses. Hal ini hanya dimaksudkan untuk mempermudah pembacaan atau dokumentasi program, sehingga akan lebih terlihat bagianbagiannya. S1 Teknik Informatika-Unijoyo
13
Tabel Translasi • Notasi Algoritma ke dalam Notasi Bahasa Pascal • Notasi Algoritma Pengisian Nilai, Pembacaan dan Penulisan ke dalam Notasi Bahasa Pascal • Notasi Algoritma Struktur Penyeleksian ke dalam Notasi Bahasa Pascal • Notasi Algoritma Struktur Pengulangan ke dalam Notasi Bahasa Pascal • Notasi Algoritma Prosedur ke dalam Notasi Bahasa Pascal • Notasi Algoritma Fungsi ke dalam Notasi Bahasa Pascal S1 Teknik Informatika-Unijoyo
14
7
Notasi Algoritma ke dalam Notasi Bahasa Pascal [1]
Kelompok 1. Tipe Dasar
Algoritmik
Pascal
boolean
boolean
integer
byte shortint word integer longint real double extended
real
Ket.
1 byte 1 byte 2 byte 2 byte 4 byte
char
Char
string
String String[n]
record
record field1: type; field2: type; . . . fieldN: type; end;
S1 Teknik Informatika-Unijoyo
15
Notasi Algoritma ke dalam Notasi Bahasa Pascal [2] Kelompok
Algoritmik
Pascal
Ket.
2. Operator a. Aritmatika
+ − * / div mod
+ − * / div mod
b. Perbandingan
< ≤ > ≥ = ≠ not and or xor
< <= > >= = <>
3. Komentar
{ komentar }
{ komentar } (* komentar *)
4. Lain-lain
const type true false
const type true false
c. Logika
not and or xor
S1 Teknik Informatika-Unijoyo
16
8
Notasi Algoritma Pengisian Nilai, Pembacaan dan Penulisan ke dalam Notasi Bahasa Pascal
Kelompok
Algoritmik
Pascal
2. Pembacaan
← read
:=
3. Penulisan
write
write writeln
1. Penugasan
read readln
read
: Membaca masukan dari keyboard, kursor tetap di baris yang sama
readln
: Membaca masukan dari keyboard, lalu kursor pindah ke baris berikutnya
write
: Menulis keluaran ke layar, kursor tetap di baris yang sama
writeln
: Menulis keluaran ke layar, lalu kursor pindah ke baris berikutnya
S1 Teknik Informatika-Unijoyo
Struktur
Notasi Algoritma Struktur Pemilihan ke dalam Notasi Bahasa Pascal
1. IF-THEN
17
Algoritmik if then aksi endif
Pascal if then begin aksi1; aksi2; . .
aksiN end; (*if*) 2. IF-THEN-ELSE
if then aksi1 else aksi2 endif
if then aksi1 else aksi2; (*endif*)
3. CASE
case nama : aksi1 : aksi1 . . : aksiN [otherwise aksiX] endcase
Cara 1: case nama of nilai1 : aksi1; nilai2 : aksi1;
S1 Teknik Informatika-Unijoyo
. .
nilaiN : aksiN; [else aksiX] end; Cara 2: if kond1 then aksi1 else if kond2 then aksi2 else ... 18
9
Struktur 1. FOR
Algoritmik For menaik: for pencacah←a to b do aksi endfor
Pascal For menaik: for pencacah:=a to b do begin aksi1; aksi2; . .
aksiN; end; (*for*)
Notasi Algoritma Struktur Pengulangan ke dalam Notasi Bahasa Pascal
For menurun: for pencacah←b downto a do aksi endfor
For menurun: for pencacah:=b dowmto a do begin aksi1; aksi2; . .
aksiN; end; (*for*) 2. WHILE
while kondisi do aksi endwhile
while kondisi do begin aksi1; aksi2; . .
aksiN; end; (*while*) 3. REPEAT
repeat aksi until kondisi
repeat aksi; until kondisi;
S1 Teknik Informatika-Unijoyo
19
Notasi Algoritma Prosedur ke dalam Notasi Bahasa Pascal
• • • •
Prosedur Tanpa Parameter Prosedur dengan Parameter Masukan Prosedur dengan Parameter Keluaran Prosedur dengan Parameter Masukan/Keluaran
S1 Teknik Informatika-Unijoyo
20
10
Prosedur Tanpa Parameter PASCAL
ALGORITMA procedure NAMA_PROSEDUR { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } DEKLARASI { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } DESKRIPSI : { badan prosedur, berisi semua langkah atau aksi algoritma }
procedure NAMA_PROSEDUR; { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *) { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } (* DESKRIPSI *) begin { badan prosedur, berisi semua langkah atau aksi } end;
Cara memanggil prosedur: NAMA_PROSEDUR; S1 Teknik Informatika-Unijoyo
21
Prosedur dengan Parameter Masukan ALGORITMA
PASCAL
procedure NAMA_PROSEDUR (input parameter : tipe_param) { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } DEKLARASI { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } DESKRIPSI : { badan prosedur, berisi semua langkah atau aksi algoritma }
procedure NAMA_PROSEDUR(parameter : tipe_param); { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *) { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } (* DESKRIPSI *) begin { badan prosedur, berisi semua langkah atau aksi } end;
Cara memanggil prosedur: NAMA_PROSEDUR(parameter_aktual);
S1 Teknik Informatika-Unijoyo
22
11
Prosedur dengan Parameter Keluaran ALGORITMA
PASCAL
procedure NAMA_PROSEDUR (output parameter : tipe_param) { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } DEKLARASI { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } DESKRIPSI : { badan prosedur, berisi semua langkah atau aksi algoritma }
Cara memanggil prosedur: NAMA_PROSEDUR(parameter_aktual);
procedure NAMA_PROSEDUR(var parameter : tipe_param); { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *) { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } (* DESKRIPSI *) begin { badan prosedur, berisi semua langkah atau aksi } end;
S1 Teknik Informatika-Unijoyo
23
Prosedur dengan Parameter Masukan/Keluaran ALGORITMA
PASCAL
procedure NAMA_PROSEDUR (input/output parameter : tipe_param) { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } DEKLARASI { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } DESKRIPSI : { badan prosedur, berisi semua langkah atau aksi algoritma }
procedure NAMA_PROSEDUR(var parameter : tipe_param); { Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } { Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *) { Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } (* DESKRIPSI *) begin { badan prosedur, berisi semua langkah atau aksi } end;
Cara memanggil prosedur: NAMA_PROSEDUR(parameter_aktual); S1 Teknik Informatika-Unijoyo
24
12
Notasi Algoritma Fungsi ke dalam Notasi Bahasa Pascal ALGORITMA
PASCAL
function NAMA_FUNGSI (input daftar parameter formal)→tipe_hasil { Spesifikasi Fungsi, menjelaskan apa yang dilakukan dan dikembalikan oleh fungsi } DEKLARASI { Semua nama yang dipakai fungsi didefinisikan di sini dan hanya berlaku lokal } DESKRIPSI : { badan fungsi, berisi semua langkah atau aksi algoritma untuk menghasilkan nilai yang akan dikembalikan } return hasil { pengembalian nilai yang dihasilkan fungsi }
function NAMA_FUNGSI(daftar parameter formal) : tipe_hasil; { Spesifikasi Fungsi, menjelaskan apa yang dilakukan dan dikembalikan oleh fungsi } (* DEKLARASI *) { Semua nama yang dipakai fungsi didefinisikan di sini dan hanya berlaku lokal } (* DESKRIPSI *) begin { badan fungsi, berisi semua langkah atau aksi algoritma untuk menghasilkan nilai yang akan dikembalikan } NAMA_FUNGSI:=hasil; { pengembalian nilai yang dihasilkan fungsi } end;
S1 Teknik Informatika-Unijoyo
25
Summary • Teks algoritma adalah hasil pemikiran yang konseptual. Agar dapat dilaksanakan oleh komputer maka algoritma harus ditranslasi ke dalam notasi bahasa pemrograman. • JUDUL algoritma adalah bagian algoritma yang terdiri dari nama dan penjelasan (spesifikasi) tentang algoritma tersebut • DEKLARASI adalah tempat untuk mendefinisikan nama tipe, nama konstanta, nama informasi/peubah (nama variabel), nama fungsi (sekaligus spesifikasinya) dan nama prosedur (sekaligus spesifikasinya) • DESKRIPSI merupakan uraian langkah-langkah penyelesaian masalah. Setiap langkah algoritma dibaca dengan urutan dari “atas” ke “bawah”. Urutan penulisan ini akan menentukan urutan pelaksanaan perintah. S1 Teknik Informatika-Unijoyo
26
13
Daftar Pustaka Andri Kristanto [2003]. Algoritma dan Pemrograman dengan C++, Yogyakarta: Graha Ilmu. Jogiyanto HM [1989]. Turbo Pascal, Yogyakarta: Andi Offset. Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman (Hibah Kompetisi A1), Bangkalan: Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika.
S1 Teknik Informatika-Unijoyo
27
14