PROGRAM
DAN BAHASA PEMROGRAMAN
Menurut definisi, Program Komputer adalah kumpulan instruksi yang digunakan untuk mengatur komputer agar
melakukan suatu tindakan tertentu. Jadi komputer tidak akan bisa apa-apa jika
tidak ada program di dalamnya. Sebuah komputer atau laptop secanggih apa pun
spesifikasinya tanpa program sistem operasi maka tidak ada gunanya.
Demikian juga untuk lebih optimal
kemanfaatannya perlu dipasang berbagai program seperti pengolah kata, pengolah
angka, pengolah grafis, program video, musik hingga game. Semua program
tersebut pada dasarnya memberikan instruksi kepada komputer sedemikian rupa
sehingga bisa melakukan berbagai macam hal sesuai dengan fungsi program
tersebut. Orang yang
mengembangkan program disebut dengan programmer.
Komputer bekerja dengan operasi-operasi
biner, yaitu mengolah data-data berupa barisan biner 0 dan 1 sehingga tidak mungkin
ketika seorang programmer memerintahkan untuk menulis pesan langsung dimengerti
oleh komputer. Oleh karena itu harus ada suatu bahasa yang penghubung agar komputer mengerti instruksi
atau perintah yang diberikan. Bahasa penghubung inilah yang disebut dengan bahasa pemrograman.
Bahasa
Pemrograman
adalah suatu instruksi standar untuk memerintah komputer. Untuk menjadi sebuah program maka kode-kode
yang sudah dituliskan dalam bahasa pemrograman diubah ke dalam bahasa mesin
yang dimengerti oleh komputer dengan menggunakan interpreter atau compiler.
Proses perubahan ini disebut dengan interprestasi atau kompilasi. Hasil
kompilasi inilah yang menghasilkan program komputer.
Menurut kedekatannya dengan mesin komputer, bahasa pemrograman dibagi menjadi beberapa
tingkatan diantaranya:
1. Bahasa Mesin
Bahasa
mesin merupakan rangkaian instruksi yang terdiri dari kode biner, contohnya 0001110011. Bahasa ini menempati tingkatan yang paling
rendah karena bahasa ini bisa langsung dieksekusi oleh processor, sehingga
bahasa mesin sering kali digunakan untuk kompilasi oleh compiler pada bahasa
pemrograman lain, yang lebih tinggi tingkatnya.
2. Bahasa Tingkat Rendah
Bahasa
tingkat rendah merupakan rangkaian instruksi menggunakan kode-kode singkat
(kode mnemonic) contohnya bahasa Assembly.
3. Bahasa Tingkat Menengah
Bahasa
tingkat menengah merupakan rangkaian instruksi gabungan antara bahasa manusia
dengan kode-kode simbolik, contohnya
{,},?,<,>&&,$,dsb. Yang termasuk bahasa menengah yakni bahasa C.
4. Bahasa Tingkat Tinggi
Bahasa
tingkat tinggi merupakan rangkaian instruksi yang menggunakan unsur kata-kata
manusia sehingga lebih mudah untuk dimengerti contohnya begin, end, if, for, while, and, or dsb. Untuk bahasa ini
diperlukan compiler untuk
mengompilasi ke dalam bahasa mesin sehingga dimengerti komputer. Yang termasuk
kategori ini adalah Pascal dan Basic.
Mengenal
Bahasa Pascal
Dalam materi Pemrograman Dasar ini, digunakan
bahasa Pemrograman Pascal. Mengapa Pascal? Seperti yang dijelaskan sebelumnya
bahasa pemrograman Pascal, selanjutnya disingkat bahasa Pascal, adalah salah
satu bahasa tingkat tinggi, yang menggunakan perintah-perintah sebagaimana
bahasa sehari-hari.
Dalam Bahasa Pascal digunakan perintah-perintah seperti read, write, pernyataan if then, while do,
repeat until, begin, end, dan sebagainya yang dimengerti oleh kebanyakan orang,
sehingga menjadi bahasa Pascal mudah dipelajari, khususnya untuk mengenalkan
pemrograman, melatih kemampuan algoritma dan pemecahan masalah.
Bahasa
Pascal pertama kali dirancang oleh Profesor “Niklaus Wirth” dari Technical Uneversity di Zurich, Switzerland pada
tahun 1971. Nama Pascal sendiri
terinspirasi nama seorang matematikawan Perancis, Blaise Pascal yang pertama kali menciptakan mesin penghitung.
Bahasa Pascal kala itu dikembangkan untuk memudahkan para mahasiswa dalam
mempelajari pemrogaman secara sistematis
Pascal sempat menjadi bahasa pemrograman
utama dalam pengembangan Apple Lisa, yakni cikal bakal sistem
operasi Apple Macintosh, dan Apple pernah merilis sistem
operasi Apple Pascal. Photoshop versi pertama juga
dibuat menggunakan bahasa Pascal.
Bahasa
Pascal
menerapkan konsep procedural dan structured programming yang baik,
sehingga pas untuk belajar konsep programming. Perintah Pascal mirip dengan
bahasa inggris sehari-hari seperti begin, end, write, dan read.
Mengenal
Tools/Framework Pengembangan Program
Seperti yang telah disampaikan sebelumnya
bahwa Pascal termasuk bahasa pemrograman tingkat tinggi sehingga dibutuhkan
sebuah compiler atau tools pengembang yang berfungsi menterjemahkan bahasa kedalam bahasa yang dimengerti komputer.
Beberapa compiler Pascal diantaranya GNU Pascal, Free Pascal, Dev Pascal dan Turbo Pascal, dan
Delphi. Dari
beberapa compiler tersebut, untuk pembelajaran buku ini menggunakan FreePascal. FreePascal memiliki keunggulan yakni cocok digunakan untuk berbagai
platform Sistem Operasi diantanya: DOS,Linux, Windows, FreeBSD, PalmOs dan masih banyak yang
lain. Tools ini gratis (freeware) dan
dapat didownload di www.freepascal.org.
Selain sebagai compiler, kita bisa langsung menggunakan FreePascal sebagai editor,
sehingga kita bisa membuat dan mengedit kode sekaligus mengkompilasi menjadi
sebuah aplikasi.
Fitur
Bahasa PASCAL
Pascal memiliki beberapa fitur yang
membuatnya cocok untuk belajar pemrograman dan untuk membuat aplikasi komersil.
Beberapa diantaranya adalah:
§
Tipe data bawaan: Pascal memiliki tipe data standar yang umum
terdapat dalam bahasa pemrograman komputer seperti Integer, Real,
Character, dan Boolean.
§
Tipe data bentukan: Pascal membolehkan kita untuk membuat tipe
data bentukan yang didefinisikan sendiri.
§
Memiliki beragam struktur data: Pascal menyediakan
beberapa struktur data seperti Array, Record, File dan Set.
§
Aturan tipe data yang ketat: Pascal membatasi
penggunaan tipe data secara ketat. Kita hanya bisa menggunakan variabel untuk 1
tipe data saja dan variabel tersebut harus dideklarasikan terlebih dahulu.
§
Mendukung struktural programming: Bahasa Pascal dirancang
dengan konsep pemrograman terstruktur yang mendukung sub program melalui fungsi dan prosedur
§
Sederhana dan expresif: Pascal banyak menggunakan perintah-perintah
dalam bahasa inggris sederhana, sehingga mudah dipahami.
§
Mendukung pemrograman objek: Walaupun tidak banyak
dibahas, tetapi Pascal juga mendukung pemrograman berbasis objek, terutama pada
compiler versi terakhir.
STRUKTUR
BAHASA PEMROGAMAN PASCAL
Struktur
Dasar Kode Program Pascal
Pascal adalah bahasa pemrograman deklaratif dan terstruktur,
yang artinya seluruh variabel, konstanta, fungsi, dan beberapa
struktur pemrograman lain harus ‘diperkenalkan’ diawal kode program dan dalam
urutan yang sudah ditentukan. Didalam pemrograman, ‘perkenalan’ ini dikenal
dengan istilah ‘deklarasi’ (declarations).
Struktur
kode program pascal
bisa dipecah menjadi 2 bagian: bagian Deklarasi dan
bagian Main Program, seperti berikut ini:
1
2
3
4
5
6
7
8
9
|
program nama_program;
{ bagian deklarasi }
begin
{ main program }
end.
|
Bagian Deklarasi terdiri dari beberapa
jenis kode program, yakni:
§
Perintah Uses
§
Deklarasi Type
§
Deklarasi Konstanta (constant)
§
Deklarasi Variabel (variable)
§
Deklarasi Fungsi (function)
§
Deklarasi Prosedur (procedure)
Sedangkan Main Program nantinya
akan berisi kode program utama. Penjelasan mengenai fungsi masing-masing
deklarasi akan kita lihat sekilas, dan akan dibahas secara mendalam dalam
tutorial terpisah.
Agar lebih mudah memahami fungsi dari
masing-masing deklarasi tersebut, saya akan membuat kode program menghitung luas dan keliling segitiga. Anda tidak perlu memahami
kode-kode yang ada karena kita memang belum membahasnya, silahkan perhatikan
pada penulisan struktur saja.
Berikut contoh kode menghitung luas dan
keliling segitiga menggunakan pascal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
program hitung_lingkaran;
uses
crt;
type
warna=(merah, kuning, biru);
const
PI=3.14;
var
jari2:integer=7;
warna_lingkaran:warna=merah;
function luas_lingkaran:real;
begin
luas_lingkaran:=PI*jari2*jari2;
end;
procedure kel_lingkaran(jari2:integer);
begin
write('Keliling Lingkaran = ');
writeln(PI*(jari2+jari2):4:2, ' cm');
end;
begin
clrscr;
writeln('==PROGRAM MENGHITUNG LUAS LINGKARAN==');
writeln('==---------------------------------==');
writeln('Diketahui: jari-jari lingkaran =
',jari2,' cm');
writeln('Warna Lingkaran = ',warna_lingkaran);
writeln('Luas Lingkaran = ',luas_lingkaran:4:2, '
cm');
kel_lingkaran(jari2);
readln;
end.
|
Kode program diatas cukup panjang, namun
sekali lagi anda tidak perlu memahaminya. Saya akan membahas kode-kode diatas
dalam tutorial pascal lainnya. Kali ini kita hanya fokus kepada struktur
program. Berikut penjelasannya dari struktur diatas:
Penulisan
Nama Program Pascal
Seperti biasa, baris pertama sebuah kode
pascal dimulai dengan penulisan keyword program ,
kemudian diikuti dengan nama program.
Sebenarnya, anda tidak harus menulis kode
ini. Penulisan nama program sepenuhnya opsional (boleh
ditulis, boleh tidak). Silahkan coba hapus baris “program
hitung_lingkaran;” dari kode diatas, hasilnya tetap bisa di-compile dan dijalankan.
Aturan penulisan nama program sama seperti
aturan penulisan identifier yang kita bahas pada tutorial
aturan dan cara penulisan kode program pascal.
Uses adalah cara bahasa pemrograman pascal
untuk memasukkan kode-kode external yang dikenal dengan unit (atau library dalam
bahasa pemrograman lain). Sebagai contoh, perintah clrscr yang
saya gunakan pada program utama merupakan perintah yang ada pada unit crt.
Terdapat berbagai unit yang bisa kita gunakan, seperti math, sysutils,
printer, dan strutils.
Ketersediaan unit ini berbeda-beda untuk
masing-masing aplikasi. Compiler Free Pascal memiliki unit yang lebih banyak
dari pada Turbo Pascal karena masih aktif dikembangkan hingga sekarang.
Deklarasi
Type
Pada bagian deklarasi Type, kita
bisa membuat tipe data bentukan. Sebagai contoh, dalam kode diatas saya membuat
tipe data warna, dimana tipe data ini hanya bisa diisi dengan
nilai merah, kuning, atau biru.
Deklarasi
Konstanta (constant)
Konstanta atau constant adalah
sebuah ‘penampung’ yang nilainya bersifat tetap. Dalam contoh diatas, saya
membuat konstanta PI dengan nilai 3.14.
Dalam penulisan angka, tanda ‘koma’ digunakan
sebagai pemisah ribuan, sedangkan tanda ‘titik’ digunakan untuk pemisah
desimal. Ini berlaku dalam hampir semua bahasa pemrograman komputer lainnya,
seperti C, C++, PHP, dan Java
Deklarasi
Variabel (variable)
Variabel atau variable adalah
‘penampung’ yang nilainya bisa berubah sepanjang alur program. Kita akan sering
menggunakan variabel dalam pembuatan kode program. Pada contoh diatas saya
membuat variabel jari2 yang diset bertipe data integer.
Nilai jari2 juga langsung diisi dengan angka 7.
Sebuah fungsi atau function dikenal
juga sebagai subprogram, karena kita bisa memecah alur program yang
panjang menjadi fungsi-fungsi yang saling terpisah. Berbeda dengan prosedur,
fungsi akan mengembalikan nilai.
Dalam contoh diatas saya membuat function luas_lingkaran yang
digunakan untuk menghitung luas lingkaran. Fungsi ini akan mengembalikan nilai
akhir bertipe real.
Pada dasarnya, prosedur atau procedure adalah
fungsi yang tidak mengembalikan nilai. Prosedur adalah sesuatu yang unik di
dalam pascal. Bahasa pemrograman lain umumnya tidak mengenal prosedur.
Dalam kode diatas saya membuat procedure kel_lingkaran untuk
menghitung keliling lingkaran. Karena prosedur tidak mengembalikan nilai, maka
saya langsung menampilkan hasilnya dengan writeln.
Main
Program/
Bagian Pernyataan/Statement
Main program adalah tempat dimana
kode program utama ditulis. Disinilah dilakukan pemanggilan fungsi atau prosedur (jika
ada), serta pembuatan proses alur kerja program. Main program diawali dengan
keyword begin dan diakhiri dengan end.
Pada contoh kode diatas, saya memulai main
program dengan perintah clrscr. Perintah ini berasal dari
unit crt. Clrscr merupakan singkatan dari clear
screen, digunakan untuk
menghapus output dari kode program sebelumnya
(membersihkan layar).
Agar anda bisa mengetahui fungsi clrscr,
silahkan hapus kode ini dan jalankan program beberapa kali dari dalam aplikasi
Free Pascal atau Turbo Pascal. Anda akan lihat bahwa output program akan
‘bertumpuk’ setiap kali kita menjalankan kode program.
Pada bagian ini dituliskan urutan-urutan
instruksi yang perlu dieksekusi oleh program. Aturan penulisan;
1. Bagian program
inti diawali dengan Begin (tanpa diikuti tanda baca) dan diakhiri dengan End
(diikuti tanda titik (.) )
2. Dalam Pascal
penggunaan huruf besar dan kecil tidak dipermasalahkan (tidak sensitive-case)
3. Untuk setiap
perintah atau pernyataan, diakhiri dengan titik koma (;), boleh ada lebih dari
1 pernyataan dalam tiap baris.
Contoh:
Pernyataan1;
Pernyataan2;
Boleh
juga dituliskan
Pernyataan1;Pernyataan2;
Namun
demikian agar penulisan lebih terstruktur dan mudah dalam menemukan adanya
kesalahan, lebih baik satu pernyataan satu baris dan digunakan aturan indentasi
sebagaimana ketika menyusun algoritma pada Semester 1.
4. Jika ada
struktur percabangan (kondisi bersyarat) atau perulangan dengan lebih dari satu
pernyataan, diawali dengan begin dan diakhiri dengan end dan titik koma (;)
Contoh:
If (kondisi) then
Begin
Pernyataan_If1;
Pernyataan_If2;
End;
Jika
pernyataan dalam struktur hanya satu saja maka Begin dan End boleh dihilangkan
If
(kondisi) then
Pernyataan_If1;
5. Komentar
dituliskan di antara tanda kurung { }
Contoh
Program Luas_lingkaran;
{Program ini
menghitung luas lingkaran}
uses crt;
varr : integer;
L : real;
Tulisan
“Program ini menghitung luas lingkaran” tidak akan tercetak pada program yang
sudah jadi, karena diletakkan di antara kurung { } maka
ini hanya sebagai komentar untuk menerangkan bagian Judul mengenai apa tujuan
program. Hal ini memudahkan orang lain untuk memahami atau mengedit program
tersebut.
Perintah clrscr akan
menghapus kode-kode diatasnya, sehingga tampilan output akan ‘bersih’.
Jika anda menggunakan Turbo Pascal
1.5 for Windows, perintah clrscr ditulis dengan uses
wincrt, bukan uses crt.
Sebuah kode program pascal tidak harus
menggunakan seluruh struktur diatas, contohnya kode program Hello World yang
kita jalankan pada tutorial sebelumnya tidak menggunakan struktur ini sama
sekali. Kita akan mempelajari lebih dalam mengenai masing-masing struktur ini
dalam tutorial tersendiri.
Secara umum, struktur kode dari sebuah program komputer terdiri dari dua bagian
utama yaitu bagian judul dan blok program. Sedangkan blok program terdiri dari bagian deklarasi dan pernyataan.
Struktur kode program mirip atau dapat dikatakan sama denganstruktur algoritma,
ada judul, deklarasi dan pernyataan (deskripsi). Yang membedakan hanya pada
aturan penulisan, dimana dalam bahasa pemrograman, bahasa yang digunakan sudah
baku dan detail, sehingga tidak menoleransi kesalahan-kesalahan kecil yang
tidak sesuai dengan sintaksnya, meskipun hanya titik, koma, atau tanda petik
saja.
Aturan pemberian nama identifer, dalam hal ini
termasuk judul program adalah sebagai berikut.
1. Nama identifier harus dimulai dengan karakter
huruf alfabet a-z atau A-Z.
2. Setelah karakter
pertama, dapat dilanjutkan dengan karakter alfanumerik
(angka maupun huruf)
dan
underscore (_).
3. Dalam penulisan identifier tidak boleh menggunakan
karakter-karakter berikut ini.
~ ! @ # $ % ^ & * ( ) +
` - = { } [ ] : " ; ' <> ? , . / |
4. Tidak boleh
menuliskan identifier dengan nama
yang sama pada kata kunci dari Pascal, seperti and, array, begin, case, const, div, do, downto, else, end, file, for,
forward, function, goto, if, in, label, mod, nil, not, of, or, packed,
procedure, program, record, repeat, set, then, to, type, until, var, while,
with
5. Jika ingin tetap
digunakan, maka kata tersebut harus dirangkai dengan kata/karakter yang lain. Misal
program_if, begin1.
Sebagai tambahan, dalam bahasa Pascal,
penulisan write atau WRITE atau Write dianggap sama karena tidak case-sensitive
seperti di Bahasa C. Demikian juga dengan nama identifier a atau A, luas atau
Luas, Phi atau PHI dianggap sebagai identifier yang sama.
Untuk lebih jelasnya perhatikan contoh-contoh
berikut.
Contoh 1
Program Pascal yang paling sederhana adalah
sebagai berikut.
Program di atas hanya terdiri dari begin dan
end saja, tapi dapat dijalankan oleh Pascal, tanpa ada
kesalahan. Namun demikian tidak ada output
apapun dalam program ini.
Contoh 2
Program di atas meskipun tanpa judul dapat
dijalankan oleh Pascal, di mana dalam program tersebut menampilkan isi dari
variabel a, yang sudah dideklarasikan di awal. Tulisan di antara kurung { }
adalah komentar yang tidak akan dieksekusi oleh program. Komentar ini bertujuan
untuk memberikan informasi kepada pengguna mengenai kode program yang
dituliskan.
Contoh 3
Program Menghitung Luas Segitiga
Kode program ini lebih lengkap, ada judul,
bagian deklarasi, dan bagian pernyataan. Dari program
diatas maka dapat diketahui algoritma dalam
bahasa natural sebagai berikut.
Algoritma LuasSegitiga
Persiapkan variable Luas,a,t bertipe real
Langkah-langkah
1. Meminta inputan nilai alas
2. Membaca nilai input dan menyimpan dalam variable a
3. Meminta inputan nilai tinggi
4. Membaca nilai input dan menyimpan dalam variable t
5. Melakukan perhitungan luas segitiga dengan rumus
½ ( a * t ), dan
menyimpannya dalam variable Luas
6. Menampilkan hasil Luas
Berikut ini penjelasan kode program satu demi
satu.
1. Judul Program, nama programnya adalah Luas_segitiga
2. Bagian
Deklarasi, diantaranya
Uses crt; ini digunakan untuk menyiapkan layar di awal
program.
Var
Luas,a,t: real, artinya menyiapkan
variabel-variabel seperti Luas, a, t sekaligus tipe datanya yaitu bilangan
real.
3. Bagian
Pernyataan, terdiri dari beberapa urutan instruksi:
Begin Digunakan sebagai penanda akan memulai
instruksi program
Clrscr, digunakan untuk membersihkan layar
Write(‘Masukan nilai
alas=’); Meminta input nilai
alas
Readln(a); Menyimpan inputan nilai dalam variable a
Writeln(‘Masukan nilai
tinggi=’); Meminta input nilai
tinggi
Readln(t); Menyimpan inputan nilai dalam variable t
Luas:=1/2 (a * t); Proses perhitungan Luas Segitiga
Writeln(‘Luas
Segitiganya adalah=’, Luas); Menampilkan
luas segitiga
End. Digunakan untuk mengakhiri instruksi program.
STANDAR
INPUT OUTPUT
Dalam
pemrograman, secara garis besar ada tiga tahap, yaitu INPUT, PROSES, dan OUTPUT. Ketiganya terangkai dalam bagian pernyataan dalam kode
program. Standar masukan pada Pascal adalah keyboard,
sedangkan standar output dalam Pascal adalah monitor. Artinya dalam Pascal
umumnya semua input dimasukkan lewat keyboard hasilnya juga berupa output ditampilkan melalui layar
monitor. Selain itu, dalam Pascal juga dikenal standar input output lain, yaitu dengan melakukan operasi pada
file, artinya kita bisa membaca input
dari file dan mencetak pada file. Standar Output.
Lihat kembali algoritma pada kasus1 Untuk
menampilkan data ke layar digunakan instruksi Write dan Writeln.Apa bedanya?
Kode program 1 hanya menggunakan perintah
write sedangkan kode program 2 menggunakan
perintah writeln. Hasilnya pada kode program
satu menghaslkan output semua dalam satu baris, sedangkan kode program 2, satu
perintah cetak ditulis pada satu baris. Apa kesimpulannya?
Ada beberapa perbedaan untuk instruksi write
dan writeln:
1. Write digunakan untuk menampilkan data ke layar tanpa disertai pergantian baris baru, jadi data berikutnya akan
menyambung pada baris yang sama
2. Writeln digunakan untuk menampilkan data ke layar kemudian
mencetak baris baru.
Perintah write atau
writeln dapat digunakan untuk menuliskan beberapa hal berikut:
a. Nilai
Contoh :
Write (5); {menuliskan nilai bilangan bulat 5}
Writeln(‘Halo apa
kabar’); {menuliskan string
‘halo apa kabar’)
Write (‘a’); {menuliskan karakter ‘a’}
Writeln(3.14); {menuliskan bilangan real 3.14}
b.
Variabel
Contoh:
A:=5;
Kata:=’Halo apa
kabar’;
StatusLulus:=True;
Write(A); {menuliskan isi variabel A}
Writeln(Kata); {menuliskan isi variabel Kata}
Writeln(StatusLulus); {menuliskan isi variabel StatusLulus}
c.
Operasi nilai-nilai atau variable
Contoh:
writeln(3+2); {menuliskan hasil jumlahan }
write(A*2); {menuliskan hasil perkalian A*2}
write('Aku'+’Bisa'); {menuliskan string ‘Aku’ diikuti ‘bisa’}
d.
Gabungan ketiga bentuk di atas (nilai, variabel, dan operasinya)
Contoh:
Write(‘Luas segitiga=
‘, Luas) {menuliskan ‘Luas
segitiga = ‘, diikuti nilai variabel luas}
Write(a,b); {menuliskan nilai variabel a diikuti nilai
variabel b}
Writeln (Hasil
penjumlahan adalah ‘, a+b);
Write (‘Luas segitiga
dengan alas ‘, a, ‘dan tinggi ‘, t, ‘adalah ’, Luas);
{menuliskan string
diikuti nilai a, kemudian string, nilai t, string, dan nilai Luas}
Standar
Output
Perhatikan kembali berbagai macam bentuk
output pada Kasus 2.
Input berupa bilangan 2, 3, dan 4 dibaca oleh
program melalui perintah membaca input. Dalam Pascal perintah dasar membaca
input adalah Read dan Readln. Apa bedanya? Kode-kode berikut adalah
kode dari pembacaan ketiga inputan di atas.
Berdasarkan contoh kode program di atas, apa
perbedaan antara perintah read dan readln?
1. Read mengambil atau membaca nilai dari layar yang diinputkan melalui
keyboard menyimpannya dalam variable dan kursor tetap pada baris input.
2. Readln mengambil atau membaca nilai dari layar yang diinputkan melalui
keyboard kemudian memerintahkan ganti
baris (kursor turun pada baris berikutnya)
Contoh1
Program Latihan1;
Uses crt;
Var a: String[30];
b : Integer;
c: String[3];
Begin
Clrscr;
Write(‘Masukan
Nama:’); {Menampilkan string
‘Masukkan nama:’}
Readln(a); {Menyimpan data dalam variabel a bertipe
string}
Write(‘Masukan
Umur:’); {Menampilkan string
‘Masukkan Umur’}
Readln(b); {Menyimpan data dalam variabel b bertipe
Integer}
Write(‘Masukan
Pendidikan Terakhir:’);
Readln(c); {Menyimpan data dalam variable c bertipe
String}
Write(‘Nama Saya’,a,
‘Umur Saya’,b, ‘Pendidikan Terakhir:’,c);{Menampilkan hasil}
Readln;
End.
Maka ketika dijalankan akan
muncul:
Mengatur
format penulisan
Secara default, perintah write atau writeln
menuliskan dengan rata kiri, namun kita juga bias menuliskan dengan rata kanan,
dengan memberikan ruang yang lebih pada data yang akan dituliskan.
Contoh :
Write (nama:20); {nama adalah variabel bertipe string}
Write(tinggi_badan:10);
{ringgi_badan adalah
variabel dengan tipe integer}
Write(5/2:10); {menuliskan nilai 5/2 dengan diberikan ruang
10 karakter}
Khusus
untuk penulisan bilangan real, dapat juga dituliskan format berapa angka di belakang
koma. Misalkan sebagai berikut.
Write(Rerata:10:2)
Artinya
nilai rerata dituliskan pada ruang den an 10 digit dengan dua angka di belakang
koma.
KOMPILASI
PROGRAM DAN PERBAIKAN KESALAHAN
Kompilasi
Program Yaitu
proses menerjemahkan
kode program dalam bahasa pemrograman, ke bahasa mesin yang sehingga dapat dimengerti dan dijalankan oleh komputer. Proses kompilasi sendiri
dibantu oleh translator yaitu program yang mengambil inputan sebuah program yang
ditulis pada satu bahasa program ke
bahasa yang lain.
Pada bahasa tingkat tinggi termasuk di
dalamnya bahasa Pascal translatornya
adalah Compiler, dimana salah satunya
adalah Free Pascal. Dalam proses kompilasi, dilakukan proses pengecekan untuk
mengetahui kebenaran dalam hal penulisan instruks, apakah sudah sesuai kaidah
dan struktur penulisan Bahasa Pemrogrman tersebut atau belum. Jika belum, maka
proses kompilasi tidak akan diteruskan hingga benar. Untuk melakukan kompilasi
pada Compiler Free Pascal maka
berikut langkah-langkahnya:
1. Membuat File baru
klik File->New File
2. Kemudian simpan
data klik File->Save beri nama
3. Setelah itu
perhatikan pada menu bar terapat menu compile
pilih Compile.
4. Kemudian untuk
menjalankan program maka pada menu bar pilih menu Run atau dengan menekan Ctrl + F9
Namun demikian meskipun dilihat dari kaidah (sintaks) sudah benar beldum berarti
program yang dihasilkan sudah benar. Perlu dilihat juga apakah output yang dihasilkan sudah sesuai
dengan yang diharapkan atau belum. Jika belum bisa jadi terjadi kesalahan di
luar sintaks, seperti kesalahan logika (logical
error) atau run-time error.
Memperbaiki
Kesalahan
Dari penjelasan di atas ada beberapa tipe
kesalahan yang mungkin bisa terjadi. Secara garis besar, kita dapat membedakan
jenis kesalahan-kesalahan dalam pembuatan program sebagai berikut.
1. Syntax Error
Jenis
error ini adalah jenis yang paling
sering dijumpai, errornya program
dikarenakan adanya penulisan perintah yang diketik tidak sesuai dengan aturan bahasa
pemrogaman. Contohnya penulisan perintah tidak diakhiri dengan semicolon (;), lupa menyebutkan tipe
data pada variabel, salah dalam penulisan identifer, salah penulisan dalam
operator-operator perhitungan, pemberian tanda titik atau tanda petik, dan
sebagainya. Meskipun sering muncul error
jenis ini pada umumnya mudah untuk diatasi karena Compiler Message akan mendeteksi kesalahan pada baris ke berapa,
biasanya kesalahan penulisan ada pada baris tersebut dan atau pada baris
sebelum atau sesudahnya.
2. Run-Time Error
Runtime Error terjadi manakala program menuliskan
kode untuk sesuatu yang tidak memungkinkan. Misalnya mengakses file yang tidak
ada, terjadi kesalahan alokasi memori, atau bisa juga bukan karena penulisan
program tapi karena tidak sengaja menghapus file penting aplikasi. Untuk error jenis ini dapat dilakukan
pencegahan dengan memberikan validasi atau penanganan error (error handling
atau exception) sehingga kesalahan
tidak berakibat berhentinya program di tengah jalan.
3. Logical Error
Jenis
Error ini cukup sulit untuk dilacak,
karena biasanya tidak dituliskan kesalahan pada compiler massage, namun saat program dijalankan belum sesuai dengan
yang kita harapkan. Untuk mengatasinya maka perlu dilakukan pengecekan secara
runtut alur kerja program yang berkaitan.
Tugas
1. Apa yang dimaksud dengan bahasa pemrograman?
2.
Sebutkan fungsi tools/framework bahasa
pemrogaman!
3. Apakah kelebihan tools/framework Free Pascal
dibanding yang lain?
4. Sebutkan klasifikasi tingkatan bahasa
pemrogaman, dan masing-masing perbedaan- nya?
5.
Apakah yang dimaksud dengan struktur
bahasa pemrograman?
6. Sebutkan apa saja struktur bahasa pascal!
7.
Sebutkan aturan penulisan masing-masing
bagian pada struktur bahasa pascal!
8.
Apa yang dimaksud dengan mengkompilasi
program?
9. Apakah yang di maskud dengan read dan readln ?
10.
Apakah yang dimaskud dengan write dan writeln ?
VARIABEL,
TIPE DATA, KONSTANTA, OPERATOR, DAN EKSPRESI
Variabel
Kalian masih ingat apakah arti variabel? Iya, variabel adalah suatu
nama atau simbol untuk menyimpan sebuah nilai. Atau lebih tepatnya variabel
adalah sebuah nama yang diberikan oleh programmer yang berfungsi sebagai tempat
penyimpanan data, sehingga dapat dimanipulasi oleh program.
Seperti pada contoh pada source code di atas,
Progam Biodata diperlukan variabel nama, alamat dan umur. Pada program
menghitung volume diperlukan variabel r,t, V yang mewakili jari-jari, tinggi,
dan volume tabung. Sedangkan pada Program UAN diperlukan variabel NilaiMat,
NilaiIngg, NilaiInd, rerata, dan stsLulus.
Variabel ini ditentukan sesuai dengan kebutuhan
dari solusi permasalahan. Karena Volume tabung adalah Volume = pr2t, maka tentu
kita membutuhkan variabel untuk mewakili Volume, jari-jari dan tinggi, dan satu
lagi adalah p sebagai konstanta. Jadi ada 3 variabel dan 1 konstanta. Demikian
juga dengan kelulusan, karena tergantung dari nilai ketiga mata pelajaran, maka
variabel-variabel yang dibentuk pun menyesuaikan.
Jenis nilai yang disimpan variabel tentu
berbeda-beda sesuai dengan kebutuhan, ingat kembali materi pada semester 1.
Variabel nama dan alamat tentu menyimpan nilai berupa susunan huruf, atau yang
dulu dikenalkan sebagai string (dalam Pascal disebut juga string), Volume, r,
dan t menyimpan nilai bilangan real, sedangkan variabel nilaiMat, nilaiInd
menyimpan nilai bilangan bulat (mungkin juga bilangan real, sesuai kebutuhan).
Jenis-jenis data inilah yang disebut sebagai TIPE DATA. Oleh karena itu dalam
mendeklarasikan variabel harus didefinisikan juga tipe data yang akan
digunakan. Hal ini sekaligus digunakan program untuk menentukan besarnya memori
sebagai tempat penyimpanan variabel tersebut.
Sintaks Penulisan Variabel Berikut ini adalah
sintaks pendeklarasian variabel.
var nama_variabel:tipe_data;
Jika ada beberapa variabel dengan tipe data
sama, sintaksnya adalah:
var namaVar1, namaVar2, namaVar3:tipe_data;
Jika ada beberapa variabel dengan tipe data
berbeda-beda sintaksnya adalah:
var namaVar1:tipe_data1;
namavar2:tipe_data2;
namaVar3:tipe_data3;
Pemberian
Nama Variabel
Pemberian nama variabel sebagaimana pemberian
nama identifier seperti yang dijelaskan pada Bab 1, sebagai berikut.
1. Nama identifier harus dimulai dengan karakter huruf alfabet a-z atau A-Z.
2. Setelah karakter
pertama, dapat dilanjutkan dengan karakter alfanumerik (angka maupun huruf) dan
underscore (_).
3. Dalam penulisan
identifier tidak boleh menggunakan karakter-karakter berikut ini. ~ ! @ # $ % ^ & * ( ) + ` - = { } [ ] :
" ; ' <> ? , . / |
4. Tidak boleh
menuliskan identifier dengan nama yang sama pada kata kunci dari Pascal,
seperti and, array, begin,
case, const, div, do, downto, else, end, file, for, forward, function, goto,
if, in, label, mod, nil, not, of, or, packed, procedure, program, record,
repeat, set, then, to, type, until, var, while, with
5. Jika ingin tetap
digunakan, maka kata tersebut harus dirangkai dengan kata/karakter yang lain. Misal program_if, begin1.
Aturan tersebut juga berlaku untuk pemberian
nama konstanta, tipe data buatan, dan sub program (procedure dan function).
Berikut ini contoh pemberian nama variabel yang benar.
Jari_jari, jari2, Volume_Balok, LuasPersegi, Luas_segi3,
record3.
Berikut ini contoh nama variabel yang salah
Jari^2, jari-jari, Volume Balok, p*l, 2jari,
alam@t
Konstanta
Variabel dapat diturunkan dari kebutuhan
input, output, dan segala sesuatu yang dilibatkan dalam pengolahan input
menjadi output. Pemberian nilai variabel dapat dilakukan melalui perintah baca
(input) maupun dari pernyataan
pemberian nilai (assignment), dengan
demikian nilai variable dapat
berubah-ubah selama proses dijalankan. Jika diperlukan suatu nilai yang tetap,
maka dibutuhkan konstanta.
Dalam hal ini, sebagai contoh karena besaran
nilai p adalah tetap, tidak berubahselama perhitungan maka p yang diwakili
dengan variabel Phi dideklarasikan sebagai konstanta. Jadi konstanta adalah variabel
yang mempunyai nilai tunggal, dimana nilai tunggal tersebut tidak dapat berubah
ketika program sudah dieksekusi. Sebagaimana juga variabel constants mempunyai
tipe data tertentu yang menyesuaiakan nilai yang diberikan dalam deklarasi
konstanta.
Sintaks deklarasi penggunaan konstanta adalah
sebagai berikut :
ConstNama_konstanta = nilai_konstanta;
Contoh deklarasi konstanta pada beberapa tipe :
ConstA = 100;
ConstPi = 3.14;
ConstOperator = ‘+’;
ConstPesan = ‘Selamat Datang’;
Tipe
Data
Tipe
data merupakan klasifikasi jenis data dari variabel
atau object yang terdapat dalam program computer. Jenis data yang digunakan
dalam variabel merupakan bagian penting dalam pengkodean pemrograman computer.
Ketepatan pemilihan data pada variabel atau konstanta akan sangat menentukan
pemakain sumber daya komputer (terutama memori komputer). Sehingga dalam
pemilihan tipe data yang akan digunakan dalam variabel dan konstanta akan
mempengaruhi efesiensi dan kinerja dari program tersebut.
Secara
garis besar tipe data dalam Pascal dibagi menjadi 3 kategori, yaitu tipe data sederhana (tunggal), Tipe data pointer dan tipe data terstruktur (stuctured data). Masing-masing kategori
dapat dibagi lagi menjadi beberapa jenis lagi seperti pada Gambar 2.1.
1. Tipe Data Sederhana
Tipe
data sederhana merupakan tipe data paling dasar yang terdapat dalam pascal.
Tipe data ini mewakili satu objek yaitu hanya satu nilai yang dapat disimpan
dalam tipe data ini sehingga disebut juga tipe data tunggal. Tipe data sederhana dibagi menjadi dua
yaitu tipe data standar dan User Defined.
a)
Standar, merupakan
tipe data yang umum dijumpai dalam berbagai bahasa pemrograman. Tipe data
standar meliputi integer, real, character dan boolean.
§
Integer
Tipe data integer merupakan tipe data berupa bilangan bulat. Tipe data ini cocok untuk
variabel-variabel seperti: jumlah anak, bulan, tahun, dan sebagainya. Berat
badan, tinggi, suhu, panjang, lebar, nominal uang dapat juga dimasukkan dalam
tipe data ini, meskipun dapat juga dimasukkan ke dalam tipe data lain seperti
bilangan real.
Dalam
bahasa Pemrograman, terkait dengan penggunaan memori untuk menyimpan variabel,
maka tipe data integer, dibagi menjadi beberapa kelas sesuai dengan kebutuhan.
Sebagai contoh untuk variabel jumlah anak, maka kita dapat memperkirakan
batasan berapa maksimalnya. Jumlah anak biasanya tidak leboh dari 10, maka
dipilih tipe data integer dengan jangkauan yang kecil, yaitu byte. Sedangkan
untuk nominal uang, karena tidak mungkin bernilai negatif, dan jangkaunnya yang
tinggi (bisa mencapai ratusan juta atau milyar) bisa digunakan tipe data
cardinal, dan sebagainya. Hal ini penting untuk diperhatikan agar program kita
lebih efisien.
Tabel
jenis-jenis tipe data integer dapat dilihat pada Tabel berikut.
Gambar.
Macam-macam tipe data dalam Pascal
Penulisan
deklarasi dengan tipe data integer adalah sebagai berikut :
var nama_variabel :
integer; atau var nama_variabel : byte;
atau var nama_var1,
nama_var2,nama_var3:integer;
§
Real
Tipe data real merupakan tipe data yang berisi bilangan yang
bisa memuat angka di belakang koma. Berbeda dengan integer yang hanya menyimpan
bilangan bulat. Dalam tipe data real nilai yang tersimpan dapat berupa bilangan
desimal. Untuk mengidentifikasi variabel dengan tipe data real, dapat dilihat
dari operasi yang dibutuhkan dalam proses perhitungan. Jika variabel tersebut
diperoleh dari operasi dari bilngan lain bertipe data real maka tipe datanya
juga real. Sebagai contoh Luas lingkaran, volume tabung dan kerucut termasuk bertipe data real
karena melibatkan perkalian dengan Phi 3.14 sehingga hasilnya pasti ada angka
di belakang koma. Selain itu adanya operasi bagi (‘/’) juga menghasilkan
bilangan real. Sebagai contoh Luas segitiga = (alas*tinggi)/2 termasuk mempunyai tipe
data real, demikian juga rata-rata, suhu konversi dalam Reamur dan Farenheit,
karena melibatkan operasi pembagian. Selain berdasarkan operasi, variabel
dengan tipe data bilangan real tergantung kebutuhan. Misalkan menghitung tinggi
badan. Kita bisa melakukan pembulatan tanpa koma sehingga tinggi badan bisa
kita masukkan tipe data integer. Jika ingin lebih teliti, menggunakan koma,
bisa menggunakan tipe data real. Sebagaimana pada tipe data integer, tipe data
bilangan real ini dapat dibagi menjadi beberapa kelas sesuai dengan
jangkauannya seperti pada Tabel 2.2.
Sedangkan
penulisan deklarasi variabel dengan tipe data real adalah sebagai berikut.
var nama_variabel :
real; atau var nama_variabel : double;
atau var nama_var1,
nama_var2,nama_var3:real;
§
Character
Tipe data character merupakan tipe data yang menyimpan karakter
yang berupa angka maupun huruf. Tipe data character dalam pascal meliputi
char dan string. Tipe data char hanya meyimpan 1 karakter saja. Variabel yang
cocok untuk tipe data karakter adalah variabel yang nilainya hanya terdiri dari
satu karakter saja, contoh: JenisKelamin (nilainya bisa diwakili ‘L’ untuk
laki-laki atau ‘P’ untuk perempuan), Pilihan yang bernilai iya dan tidak (bisa
diwakili dengan ‘Y’ atau ‘N’), dan lain-lain.
§
String
Tipe data string merupakan susunan dari karakter-karakter dengan
batas maksimum 255 karakter, tipe data string digunakan untuk menyimpan data
text, misal nama, alamat dan sebagainya. Penulisan deklarasi variaebl dengan tipe
data characterdan string adalah sebagai berikut :
var nama_variabel :
char;
atau
var nama_variabel :
string[batasMaksimal];
Keterangan:
batasMaksimal diganti dengan
banyaknya karakter yang maksimal dapat ditampung oleh variabel tersebut.
Contoh:
var Gender:char;
var pilihan:char;
var nama:string[20];
var alamat:string
[50];
§
Boolean
Tipe data Boolean merupakan tipe data yang hanya mempunyai dua
nilai yaitu true atau false. Tipe data ini biasanya digunakan variabel
yang hanya mempunyai nilai benar atau salah saja. Misalkan statusLulus,
bisa bernilai True atau False; remidi, bias bernilai true atau false, Menikah, bisa bernilai true
atau false, dan sebagainya.
Penulisan deklarasi variabel dengan tipe data ini adalah ebagai berikut.
Var
nama_variabel:boolean;
b)
User defined
Tipe data ini
merupakan tipe data yang dibuat oleh sang programmer.
Jadi setiap programmer dapat membuat
tipe data baru yang dibutuhkannya. User defined meliputi enumerated dan subrange.
§
Enumerated
Tipe data enumerated
merupakan tipe data yang didefinisikan oleh programmer. Hal ini memungkinkan
programmer untuk membuat tipe datanya sendiri, yang terdiri dari kumpulan
symbol. Contoh penulisan code program tipe data enumerated adalah sebagai berikut:
type hari =
(senin,selasa,rabu,kamis,jumat,sabtu,minggu);
var nama_hari : hari;
Dari
contoh diatas, baris pertama menunjukkan pembuatan tipe data baru yaitu hari
yang berisi nama-nama hari, kemudian di baris kedua menunjukkan deklarasi
penggunaan tipe data yang telah dibuat tadi.
§
Subrange
Tipe data subrange
merupakan tipe data yang memungkinkan programmer untuk
mendefinisikan
beberapa nilai dari tipe data tertentu. Misalkan seorang programmer ingin membuat
tipe data nilai yang dimana tipe data ini berisi bilangan integer dari 1 sampai
10.
Contoh penulisan code program tipe
data enumerated adalah sebagai berikut:
type nilai = 1..10;
var nilai_mtk : nilai;
Dari
contoh diatas, baris pertama merupakan tipe data baru yang berisi bilangan
integer dari satu sampai 10. Berikut beberapa contoh lain untuk tipe data subrange :
Positif = 1..32500;
Skor = 0.00..4.00;
Abjad = ‘Z’..’A’;
Range = ‘1’..9;
Count = -15..15;
2. Tipe Data Pointer
Sama
seperti tipe data sederhana, pointer merupakan tipe data yang dapat menyimpan
satu nilai saja. Bedanya adalah, sesuai dengan namanya tipe data ini berfungsi menunjuk, yaitu alamat
memori yang digunakan suatu variabel dengan tipe data tertentu. Misalkan a adalah variable
dengan tipe data integer. Variabel point adalah variabel dengan tipe data
pointer dari integer. Ketika variabel point diberi nilai dengan alamat a
(alamat memori a), maka kita bisa mengubah isi a melalui variabel point
tersebut dengan langsung mengakses ke memori tanpa melalui variable a. Tipe
data ini sangat berguna untuk membangun suatu program dengan data yang dinamis.
Lebih jelasnya akan dipelajari di kelas XI nanti.
3. Tipe Data Terstruktur
Berbeda
dengan tipe data sederhana dan pointer, yang hanya dapat menyimpan satu nilai
saja, tipe data terstruktur dapat menyimpan beberapa nilai dalam satu variabel.
Tipe data terstruktur
adalah tipe data yang terdiri dari data-data tunggal, yang diorganisasi oleh
suatu tipe data terstruktur. Sebagai contoh, terdapat data mengenai nilai ulangan 20
anak, apakah kita harus membuat 20 variabel untuk menyimpan masing-masing nilai
tersebut? Tentu ini akan menjadikan program komputer menjadi tidak efisien.
Mungkinkah kita bisa mengumpulkan semua variable tersebut dalam satu wadah?
Iya, bisa yaitu menggunakan tipe data terstruktur. Inilah pentingnya data
terstruktur dalam algoritma atau pemrograman. Berikut ini jenis-jenis tipe data
terstruktur.
a) Array
Array dapat diartikan sebagai larik, atau barisan. Array digunakan untuk
menyimpan banyak data dengan tipe data yang sama. setiap elemen diakses
melalui indeksnya. Biasanya indeks array bertipe integer dimulai dari 0
(nol). Array dapat berupa 1
dimensi (membentuk 1 garis lurus), 2 dimensi (matriks) atau lebih. Bentuk deklarasinya adalah:Sebagai contoh, dalam sebuah algoritma diberikan input
sejumlah data ulangan anak, misalkan
40 anak. Jika untuk menyimpan data itu salah satu alternatifnya adalah
memberikan variabel Nilai1, Nilai2, dan seterusnya, hingga Nilai40. Bagaimana
jika 100 anak?
Maka cara ini sangatlah tidak efisien. Data seperti ini dapat disimpan dalam
satu wadah yang disebut dengan
Berikut
deklarasi variabel dengan tipe data array pada Pascal.
Typenama_array :
Array[nilai array] of tipe_data;
Contoh :
Typenilai :
Array[1..40] of integer;
Struktur data
adalah cara pengaturan data agar dapat disimpan memori komputer secara efisien.
Tujuannya supaya lebih mudah/efisien
dalam pengaksesan/pemrosesan data tersebut.
Struktur data dibagi menjadi 2 yaitu :
Static
data
tidak dapat dihapus pada saat program dijalankan
Dinamic data dapat dihapus pada saat program dijalankan
Index Array digunakan untuk
mengakses element array.
Element Array digunakan untuk menyimpan data. (Elemen
array tidak dapat dihapus saat
runtime.)
Sifat-sifat ARRAY adalah sebagai berikut :
1) Kumpulan data bertipe sama yang menggunakan
nama yang sama.
2) Sejumlah variabel dapat memakai nama yang sama.
3) Antara satu variabel dengan variabel lain
didalam array dibedakan berdasarkan subcript.
4) Subcript adalah berupa bilangan di dalam kurung
siku [ ].
5) Melalui subcript elemen array dapat diakses.
6) Elemen array tidak lain adalah masing-masing
variabel di dalam array.
Kekurangan-kekurangan dalam penggunaan array:
Kekurangan Array adalah semua tipenya harus sama / tipe array harus
homogen, misalnya integer semua atau string semua, tidak bisa beda-beda
data dalam satu array, indeks array yang kosong tetap memiliki porsi memori
yang sama sehingga tidak efesien. Penggunaan array statik secara repetisi/pengulangan
dalam suatu program tidak efisien untuk memory dan makan banyak waktu
komputasi.
Array Berdimensi Satu
biasa disebut
vektor
Array Berdimensi Dua Sering kali di
gambarkan/di analogikan sebagai sebuah
matriks.
b) Record
Jika
Array hanya mampu menyimpan sejumlah data yang bertipe sama, Record,
biasa menampung data-data
dengan tipe yang berbeda.
Sebagai contoh data seorang siswa, bias terdiri dari Nama, Nomor
Induk Siswa, Alamat, Tempat Lahir, Jenis Kelamin, Kelas Umur. Agar data tersebut menjadi
satu kesatuan informasi maka perlu suatu wadah untuk menampung tipe data
seperti itu, yaitu RECORD. Berikut deklarasi tipe data record dalam pascal :
Typenama_record =
record
variabel_1 :
tipe_data_1;
variabel_2 :
tipe_data_2;
….
variabel_n :
tipe_data_n;
end;
Contoh:
Typebuku = record
judul :string[30];
tahun_terbit =
integer;
pengarang =
string[30];
end;
c) File
Dalam
pemrograman pascal terdapat tipe data
file, dimana data input dan
output dari suatu program dapat disimpan dalam bentuk file.txt. Selain menyimpan pascal dapat
juga membaca dan mengedit file.txt tersebut. Sebagai contoh kita ingin memproses suatu nilai ulangan dari 20 anak yan telah tersimpan
dengan format text. Tentunya
sangat tidak efisien jika data harus diinput satu persatu. Agar data yang sudah
ada dapa terbaca dalam pascal maka kita perlu tipe data file. Penjelasan
mengenai penggunaan tipe data ini dibahas pada pembahasan berikutnya.
Berikut
ini contoh bagaimana menentukan variabel dan tipe data dalam suatu
permasalahan.
Contoh 1.
Budi seorang
programmer di SMP Nusantara akan membuat program untuk menampilkan data nilai
siswa, dimana data yang akan ditampilkan meliputi : nomor induk siswa, nama
siswa, nilai matematika, nilai bahasa Indonesia, nilai bahasa inggris dan
rata-rata nilai. Dimana data yang diinputkan mempunyai peraturan yaitu
1)
Nomor induk siswa terdiri dari 6
karakter,
2)
Nama siswa maksimal 30 karakter,
3) Nilai matematika, nilai bahasa Indonesia dan
nilai bahasa inggris merupakan bilangan bulat skala 1 – 100,
4) Rata – rata nilai berupa bilangan desimal
dengan dua digit angka di belakang koma, yang diperoleh dari penjumlahan nilai
matematika, bahasa Indonesia dan bahasa inggris dibagi tiga.
Contoh
data yang akan diinputkan adalah sebagai berikut :
Nomor
induk siswa : A45789
Nama
Siswa : Slamet Sentosa
Nilai
Matematika : 80
Nilai
Bahasa Indonesia : 76
Nilai
Bahasa Inggris : 70
Rata
– rata nilai : 75.33
Bantulah budi untuk
menentukan variabel dan tipe data yang tepat dagian deklarasinya dalam Program!
Jawab:
Untuk
menentukan variabel dan tipe data yang tepat, kita harus memperhatikan data apa
saja yang akan diinputkan ke dalam program. Pada contoh diatas data yang
diinputkan meliputi : nomor induk siswa, nama siswa, nilai matematika, nilai
bahasa Indonesia, nilai bahasa inggris dan ratarata nilai. Kemudian kita
perhatikan contoh data yang akan diinputkan. Dengan demikian dapat ditentukan
variabel dan tipe data sebagai berikut.
1) Coba perhatikan
data nomor induk siswa pada contoh di atas. Jika kita perhatikan, data nomor
induk siswa terdiri dari 1 huruf dan 5 angka, maka tipe data yang tepat adalah
string. Karena string dapat menyimpan data berupa huruf atau karakter dan
angka. Sehingga dapat ditentukan nama variabel NIS sebagai string dengan
panjang maksimal 6 karakter.
2) Kemudian
perhatikan data nama siswa pada contoh diatas. Data nama siswa terdiri dari
huruf, maka tipe data yang tepat adalah string. Karena string dapat menyimpan
data berupa huruf atau karakter.Sehingga dapat ditentukan nama variabel Nama
sebagai string. Panjangnya dapat diperkirakan maksimal 30.
3) Selanjutnya,
perhatikan data nilai matematika. Data tersebut berupa bilangan bulat maka tipe
data yang tepat adalah integer. Jika kita perhatikan, data nilai bahasa
Indonesia dan data nilai bahasa inggris mempunyai data yang sama dengan nilai
matematika. Maka tipe data yang tepat adalah integer. Karena tipe data integer
dapat menyimpan bilangan bulat. Sehingga dapat ditentukan nama variabel
Nilai_Mat, Nilai_BInd, Nilai_Inggris sebagai integer.
4) Berikutnya,
perhatikan data rata-rata nilai. Data tersebut di dapat dari penjumlahan nilai
matematika, bahasa Indonesia dan bahasa inggris dibagi tiga. Karena ada operasi
pembagian, maka tipe data yang tepat adalah real.
Deklarasi variabel dan tipe data
Var
NIS : string[6];
Nama:
string[30];
Nilai_Mat
: integer;
Nilai_BInd
: integer;
Nilai_Inggris
: integer;
Rerata
: real;
Pada
nomor induk siswa akan menyimpan data dengan maksimal 6 karakter, sedangkan
pada nama siswa maksimal 30 karakter. Sehingga, walaupun user menginputkan data
lebih dari 30 karakter, maka data yang tersimpan tetap 30 karakter.
EKSPRESI
Ekspresi yaitu sesuatu yang jika dievaluasi/diproses
menghasilkan suatu nilai. Sebagai contoh dimasukkan nilai a adalah
30 dan b adalah 5.
a*b
memberikan nilai 150
a/b
memberikan nilai 6.00
a
mod b mememberikan nilai 0
(a
mod b)=0 memberikan nilai TRUE.
Selanjutnya simbol-simbol *, /, mod dan = disebut sebagai operator
dan nilai yang dioperasikan disebut operan.
Ketika nilai dari ekspresi diberikan kepada variabel lain maka disebut sebagai Assignment.
d:=a*b;
e:=a/b;
c:=(a
mod b =0)
Dalam Pascal Assignment ditandai
dengan := (titik dua sama dengan).
Selain itu perlu diperhatikan bahwa operasi yang dilakukan menentukan tipe data
dari variabel yang diberi nilai. Variabel d tetap integer, e bertipe real,
sedangkan c menjadi boolean.
OPERATOR
Operator adalah sebuah simbol yang memberitahukan compiler pascal untuk melakukan sebuah
operasi matematika maupun operasi logika. Atau,
Operator merupakan
simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan
sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai,
memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai.
Ada
beberapa jenis operator dalam pemrograman pascal diantaranya operator aritmatika, operator relasional,
operator Boolean
1. Operator Aritmatika
Operator Aritmatika adalah operator yang digunakan untuk melakukan
operasi penjumlahan, pengurangan, pembagian, dan perkalian atau operator yang
digunakan untuk melakukan perhitungan pada bilangan atau operasi hitung dari
bilangan-bilangan. Terdapat dua macam tipe data bilangan yaitu integer dan
bilangan real.
Operator-operator yang berlaku keduanya hampir sama, kecuali untuk bagian
pembagian. Berikut ini adalah operator-operator untuk tipe data integer dan
bilangan real. Operator Aritmatika pada Bilangan Integer.
2. Operator Relasional
Operator Relasional adalah operator yang
menghubungkan nilai dari variabel. Hasil ekspresi dengan operator ini adalah
nilai kebenaran True atau False. Berikut operator relasional dalam Pascal.
Operator
relasional tidak hanya berlaku pada tipe data bilangan (integer dan real) namun
berlaku pula untuk tipe data lain seperti karakter, string maupun boolean.
Sebagai
contoh:
‘a’ < ‘c’
memberikan nilai true
if (Nama)=’Dwi’ then
....
If (StatusLulus=True)
then ....
While (n>100) do
....
.
Operasi
relasional seringkali muncul pada kondisi bersyarat, yaitu pemenuhan suatu
syarat untuk melakukan proses lanjutan. Meskipun pembahasan kondisi bersyarat
masih pada Bab selanjutnya, tak ada salahnya kita mengenal bentuknya terlebih
dahulu untuk memahami pentingnya operasi relasional.
3. Operator Boolean
Operator
Boolean adalah operator yang digunakan pada sebuah statement. Berikut beberapa operator Boolean pada pascal :
Operator Penugasan (=)
Prioritas Operator
Urutan Prioritas Operator :
■ Jika ada tanda kurung, maka kerjakan dahulu
yang ada dalam kurung.
1. Perkalian
2. Pembagian
3. Penambahan
4. Pengurangan
Operator Relasi adalah operator penghubung yang berupa benar atau salah, sesuai dengan
teorinya bahwa operator relasi mengeluarkan tipe data Boolean sehingga contoh
program di atas mengeluarkan output true atau false.
Operator logika adalah
Operator yang digunakan untuk menggabungkan dua kalimat sehingga terbentuk
kalimat gabungan.
Operator And
digunakan untuk menghubungkan dua atau lebih ekspresi
relasi, akan dianggap BENAR, bila semua ekspresi relasi yang dihubungkan
bernilai BENAR.
Operator OR
digunakan untuk menghubungkan dua atau lebih ekspresi
relasi, akan dianggap BENAR, bila salah satu ekspresi relasi yang dihubungkan
bernilai BENAR.
Operator NOT
Operator logika NOT akan memberikan nilai kebalikkan dari
ekspresi yang disebutkan. Jika nilai yang disebutkan bernilai BENAR maka akan
menghasilkan nilai SALAH, begitu pula sebaliknya.
Operator Kombinasi digunakan untuk memendekkan penulisan operasi penugasan.
Jenis-jenis Operator menurut jumlah operand yang dilibatkan:
■ operator unary operator yang hanya melibatkan satu
operand Contoh : -4
■ operator binary operator yang hanya melibatkan
dua buah operand Contoh : 6 + 7.
■ operator ternary/tertiary
operator yang hanya
melibatkan tiga buah operand Contoh
: 6 + 7/2
Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah operand (sebuah
nilai atau variable).
Operator Relasional menghasilkan nilai dari hasil membandingkan dua operand. Hasil dari
operator ini adalah bernilai true/ false.
Operator Relasi digunakan untuk menghubungkan dua buah operasi relasi
menjadi sebuah ungkapan kondisi. Hasil dari operator logika ini menghasilkan
nilai numerik 1 (True) atau 0 (False).
STRUKTUR
PERCABANGAN
1. Percabangan 1 Kondisi
Struktur
percabangan dengan satu kondisi pada Bahasa Pascal mempunyai sintaks sebagai
berikut.
if (kondisi) then
Pernyataan;
Jika pernyataan lebih
dari satu maka dituliskan
if (kondisi) then
Begin
Pernyataan1;
Pernyataan2;
dst;
end;
Perhatikan permasalahan berikut.
a) Sebuah Toko Baju
memberlakukan diskon akhir tahun sebesar 20% untuk semua koleksi yang dijual.
Namun diskon akan dinaikkan menjadi 25% jika total belanjaan lebih dari 200ribu
rupiah. Untuk itu toko tersebut membutuhkansebuah program untuk menghitung
jumlah uang yang harus dibayarkan oleh pelanggan untuk baju-baju yang telah
dibeli.
b) Di sebuah
perusahaan gaji pegawai teridri dari gaji pokok, tunjangan keluarga dan dikurangi
30 ribu untuk asuransi kesehatan pekerja. Gaji pokok tiap pekerja berbeda-beda
sehingga perlu diinputkan oleh operator, sedangkan tunjangan keluarga dihitung
sama untuk semua karyawan, sebesar 10% dari gaji pokok. Khusus bagi karyawan
dengan masa kerja lebih dari 20 tahun maka total gajinya akan ditambahkan
dengan tunjangan pengabdian sebesar 500 ribu. Untuk itu persahaan tersebut
membutuhkan program perhitungan gaji para karyawannya.
Jika
dilihat pada permasalahan di atas, pada kasus 1, setiap pembelanjaan dapat
diskon sebesar 20% dari harga normal. Namun jika total belanjaan lebih dari 200
ribu maka diskonnya menjadi 25%, maka hal ini dapat dinyatakan dalam algoritma
sebagai berikut.
Pertama
tentukan semua variabel terlebih, dahulu. Ada hargaTotalBelanja, prosentase
diskon (skala 1-100), besar diskon, dan TotalBayar. Selanjutnya dibuat
algoritma berikut.
Algoritma DiskonBaju
Variabel hargaNormal,
ProsenDiskon,:integer
BesarDiskon,
hargaAkhir:bilangan real
1) READ TotalBelanja
2) ProsenDiskon=20
3) IF (TotalBelanja>=200000)
THEN
4) ProsenDiskon=25
5)
BesarDiskon=(ProsenDiskon/100)*TotalBelanja
6)
TotalBayar=TotalBelanja-BesarDiskon
7) WRITE TotalBayar
8) END
Mengapa
data harga normal, prosen diskon dengan besar diskon dan harga akhir mempunyai
tipe data yang berbeda? Hal ini dikarenakan, dalam perhitungan besar diskon
melibatkan operasi / yang akan menghasilkan bilangan real, sedangkan harga
akhir hasil mengurangkan harga normal (integer) dengan harga diskon (real)
sehingga menghasilkan bilangan real juga. Selanjutnya algoritma di atas akan
dikonveris ke dalam bahasa pemrograman Pascal.
Karena
pseudocode yang kita bahas adalah pseudocode berbasis Pascal, maka tidak ada
perubahan yang berarti. Dalam bahasa pascal, struktur percabangan dengan 1
kondisi dituliskan,
if (kondisi) then
Pernyataan;
Jika pernyataan lebih
dari satu maka dituliskan
if (kondisi) then
Begin
Pernyataan1;
Pernyataan2;
dst;
end;
Sekarang
kita lihat bagaimana menyajikan algoritma di atas dalam bahasa Pascal.
Program DiskonBaju;
Uses crt;
var hargaNormal,
ProsenDiskon:integer;
BesarDiskon,
hargaAkhir: real;
Begin
Clrscr;
write(‘Masukkan total
harga pembelian: ‘ );
readln( TotalBelanja);
ProsenDiskon:=20;
if
(TotalBelanja>=200000) then
ProsenDiskon:=25;
BesarDiskon=(ProsenDiskon/100)*TotalBelanja;
TotalBayar=TotalBelanja-BesarDiskon;
writeln(‘Total harga
yang harus dibayar ad alah : ‘, TotalBayar:6:2);
end.
2. Percabangan Dengan 2 Kondisi
Bentuk
umum struktur percabnagan dengan dua kondisi menggunakan bahasa Pascal adalah
sebagai
berikut
If (syarat) then
Pernyataan1
else
Pernyataan2;
untuk
pernyataan tunggal pada tiap syarat, atau
If (syarat1) then
begin
Pernyataan1;
Pernyataan2;
end
else
begin
Pernyataan3;
Pernyataan4;
End;
Untuk
pernyataan lebih dari satu untuk tiap syarat.
Program DiskonBaju;
var hargaNormal,
ProsenDiskon:integer;
BesarDiskon,
hargaAkhir: real;
Begin
write(‘Masukkan total
harga pembelian: ‘ );
readln( TotalBelanja);
if
(TotalBelanja>=200000) then
ProsenDiskon:=25
Else
ProsenDiskon:=25;
BesarDiskon=(ProsenDiskon/100)*TotalBelanja;
TotalBayar=TotalBelanja-BesarDiskon;
writeln(‘Total harga
yang harus dibayar adalah : ‘, TotalBayar:6:2);
end.
Pada
dasarnya program di atas adalah program untuk menyelesaikan permasalahan yang
sama, hanya beda dalam penyajian saja. Hal ini sebagaimna pembahasan pada
semester 1, bahwa ada percabngan dengan 1 kondisi, 2 kondisi atau lebih.
Pada
percabangan 1 kondisi, ketika kondisi dipenuhi maka proses tertentu akan
dijalankan, jika tidak maka tidak dilakukan apa-apa. Padahal dalam kehidupann
nyata, permasalahan seringkali terjadi melibatkan dua kondisi. Misalkan “Jika
nilai lebih besar 60 maka lulus, jiak tidak, maka tidak lulus”; “Jika rajin
belajar maka naik kelas, jika tidak maka tinggal kelas”; “Jika bobot
truk>=100 ton maka tidak boleh lewat, jika kurang dari itu boleh lewat”.
Kenyatannya seperti itu dalam kehidupan sehari-hari sehingga percabangan dengan
dua kondisi lebih banyak digunakan.
Seperti
halnya pada contoh di atas, sebenarnya mempunyai dua kondisi, jika total
belanja <200 ribu maka diskonnya 20% jika lebih besar atau sama dengan 200
ribu maka diskonnya menjadi 25%. Oleh karena itu pada percabangan dengan 1
kondisi pernyataan Prosendiskon:=20 diletakkan sebelum struktur if then, karena
digunakan sebagai nilai default dari prosen diskon.
Hal
ini dapat disajikan dalam bentuk yang lebih cocok menggunakan struktur if then
else sebagai bentuk percabangan dengan dua kondisi. Dalam percabangan 2 kondisi
ini digunakan struktur if then else
3. Percabangan Lebih Dari Dua Kondisi
Struktur
if then else if
Dalam
pseudocode, percabangan dengan lebih dari dua kondisi dituliskan sebagai
berikut:
IF (kondisi1) THEN
Pernyataan1
ELSEIF (kondisi2) THEN
Pernytaan2
ELSE
Pernyataan3
Sehingga
dapat dibuat flowchartnya dalam bentuk sebagai berikut:
Perhatikan
masalah berikut :
1. Perhitungan Gaji
Misalkan
di sebuah perusahaan yang bergerak di bidang pemasaran, gaji pegawai dihitung
berdasarkan gaji pokok dan bonus dari omset penjualan
Jika
Omset>100 juta maka bonusnya adalah 1.5%*Omset Penjualan
Jika
Omset antara 50-100 juta, bonusny adalah 1% *OmsetPenjualan
Jika
kurang dari 50 juta maka ia tidak mendapatkan bonus.
Bagaimana
mengimplementasikan aturan tersebut dalam program komputer?
2. Persewaan Mobil
Sebuah
persewaan mobil mempunyai 4 jenis koleksi mobil, Avanza, Xenia, Innova dan
Alphard.
Biaya
persewaan mobil terdiri dari dua komponen, yaitu Biaya Sewa dan Biaya Asuransi.
Berikut
ini adalah Tabel biaya sewa mobil dan asuransi
Akan
dirancang sebuah program untuk menghitung biaya persewan mobil. Algoritma akan
meminta inputan berupa Jenis Mobil yang disewa, dan lama hari menyewa. Asuransi
dihitung
sekali
bayar untuk berapappun lama peminjaman. Biaya peersewaan dihitung dengan
menjumlahkan total biaya sewa untuk n hari ditambah dengan biaya asuransi.
Dalam
hal ini untuk kasus diatas dapat dituliskan flowchart percabangannya dalam
bentuk berikut:
Demikian
juga pada bahasa Pascal, kita bisa menyajikan permasalahan di atas dalam
sitantks
sebagai
berikut.
if (kondisi1) then
pernyataan1
else if (kondisi2)
then
pernyataan2
else
pernyataan3;
sehingga
untuk permasalahan 1, dapat dituliskan bagian percabngannya adalah
if
(Omset_Jual>100000000) then
bonus:=(1.5/100)*Omset_Jual
else if
(Omset_Jual>=50000000) then
bonus:=(1/100)*Omset_Jual
else
bonus:=0;
Bagaimana
dengan permasalahan kedua? Pada permasalahan kedua ini, kondisi jauh lebih
banyak, dalam hal ini ada 5 cabang atau kondisi sesuai dengan banyaknya jenis
mobil. Selain itu dalam setiap cabang ada lebih dari satu pernyataan sehingga
sehingga dapat dituliskan kode dalam Pascalnya adalah sebagai berikut.
If
(jenis_Mobil=’Avanza’) then
Begin
Pernyataan1;
Pernyataan2;
End
Else if (jenis_Mobil=’Avanza’)
then
Begin
Pernyataan1;
Pernyataan2;
End
Else if (jenis_mobil=’’Innova’) then
Begin
Pernyataan1;
Pernyataan2;
End
Else
Pernyataan1;
Pernyataan2;
Sehingga
dapat dituliskan bentuk flowchartnya adalah sebagai berikut.
Struktur
case of
Perhatikan permasalahan kedua, dengan 5
kondisi (percabngan) maka penyajian algoritma menjadi memanjang ke kanan. Dan
ini akan menjadi kurang menarik dan efektif dalam penulisan meskipun hasilnya
tetap sama. Alternatifnya adalah dengan menggunakan struktur case of sebagai
mana pada pembahasan algoritma.
Secara umum, sintaks struktur case of adalah
sebagai berikut.
Case (variabelpilihan) of
Nilai1: pernyataan1;
Nilai2:pernytaan2;
Nilai3:pernyataan3;
...
Else
PernyataanElse;
end;
Pada struktur case of, seluruh kemungkinan
nilai didaftar dan diberikan pernyataan yang
sesuai dengan nilai yang dimilki variabel.
Ini tentu akan lebih efektif dibandingkan menggunakan if then else if secara
berulang-ulang. Kekuranganya bahwa struktur ini hanya bekerja pada variabel dengan
tipe data ordinal, yaitu tipe data yang dapat dihitung, dlam hal ini adalah
integer, karakter atau tipe data set (tipe data terstruktur). Jika variabel
yang akan diubah dalam bentuk case of belum menjadi salah satu bentuk ini maka
perlu diubah ke salah satu bentuk tipe data. Caranya?
Lihat kembali permasalah kedua, yaitu
persewaan mobil. Kita bisa membuatkan menu pilihan untuk mewakili setiap jenis
mobil. Misalkan ditampilkan di awal program keterangan berikut.
Mobil yang disewakan:
1. Avanza
2. Xenia
3. Innova
4. Alphard
Masukkan nomor pilihan mobil:
..............{baca sebagai variabel var_pilih}
Selanjutnya kita bisa menggantikan setiap
jenis dengan nilai var_pilih dari 1, 2, 3, atau 4 untuk masing-masing kategori
mobil. Dengan ini maka var_pilih bertipe ordinal, sehingga dapat diterapkan
struktur case sabagai berikut.
case (var_pilih) of
1: begin
Pernyataan1a;
Pernyataan1b;
end;
2: begin
Pernyataan2a;
Pernyataan2b;
end;
3:begin
Pernyataan 3a;
Pernyataan 3b;
End;
Else
Begin
PernyataanElse1;
PernyataanElse2;
End;
End;
Selain kondisi berupa data tunggal, struktur
case of juga dapat diterapkan pada interval data ordinal, emisalkan sebagai
berikut. Dalam algoritma penghitungan bonus karyawan berdasarkan omset jual di
atas. Agar dapat diterapkan struktur case of, maka besar omset jual dituliskan
sebagai variabel dengan tipe integer (pembulatan) di mana nilainya dalam satuan
juta.
Sehingga jika variabel omset_jual= 125
artinya 125 juta, sehingga bonusnya dihitung (1.5/100)*omset_jual*1000000.
Sekali lagi, ini adalah salah satu bentuk strategi untuk memecahkan masalah.
Dengan demikian kita bisa memberikan alternatif solusi kondisi percabangan
adalah sebagai berikut:
readln(omset_jual);
{dalam juta}
case (omset_jual) of
0..49 : bonus:=0;
50..100
:bonus:=(1/100)*omset_jual*1000000;
else
bonus:=(1.5/100)*omset_jual*1000000;
end;
Struktur di atas meberikan gambaran bahwa
struktur case of dapat diterapkan pada rentang nilai
dari suatu data ordinal. Bisa juga dengan
mengggunakan tipe data karakter seperti berikut.
case (karakter) of
'a'..'j' :
pernyataan1;
'k'..'p' :pernyataan2;
‘q’..'u' : pernyataan3
else
PernyataanElse;
end;
STRUKTUR
PERULANGAN
program whiledo
var i : integer;
begin
I := 1;
while i <= 5 do
begin
writeln(‘Pascal’);
i:=i+1;
end;
end.
Program FORDO
Var i : integer;
Begin
For i := 1 to 5 Do
Writeln(‘Pascal’);
End.
Program NestedLoops; {* contoh aplikasi
mencari nilai prima *}
var
i, j:integer;
begin
for i := 2 to 50 do
begin
for j := 2 to i do
if (i mod j)=0 then
break; {* if faktor ketemu, berarti bukan prima *}
if(j = i) then
writeln(i , ' adalah nilai prima' );
end;
end.
Ketiga kode program di atas adalah contoh
dari perulangan dengan kondisi diawal Jika kita lihat sekilas, maka kita bisa
menyimpulkan bahwa kode program pertama dan kedua memiliki struktur yang hampir
sama, yang membedakan hanya yang pertama menggunakan pernyataan WHILE-DO,
sedangkan yang kedua menggunakan pernyataan FOR-DO. Bagaimana dengan yang
ketiga? Yang ketiga menunjukkan sebuah contoh penggunaan dari sebuah nested
loops (perulangan bersarang/ perulangan di dalam perulangan). Bagaimana cara
kerja, hasil, dan kapan ketiga kode program (pernyataan perulangan) tersebut di
gunakan? Akan kita bahas pada pembahasan berikut ini.
Sebagaimana yang pernah dijelaskan pada
semster lalu bahwa struktur perulangan merupakan struktur yang tidak
terpisahkan dengan algoritma dan pemrograman. Struktur perulangan memungkinkan
program untuk melakukan serangkaian perintah secara berulang-ulang. Dan untuk
memenuhi syarat bahwa algoritma harus finite (terbatas) maka dalam perulangan
pasti ada titik pemberhentian. Jika ternyata dalam sebuah kasus perulangan
tidak mencapai titik berhenti maka dapat dikatakan algoritma tersebut salah.
Titik pemberhentian dapat diberikan dengan
beberapa cara, sebagai berikut.
1. Pemberhentian dengan syarat
Pemberhentian
dengan syarat artinya ada sebuah kondisi yang akan menyebabkan perulangan
berhenti. Pemberian syarat ini juga dapat dilakukan dengan dua cara, yaitu
a. Syarat diberikan
di awal, di mana selama persayaratan dipenuhi maka dilakuakn serangkain
perintah.
b. Syarat diberikan
di akhir, di mana proses akan diulang-ulang sampai syarat dipenuhi.
Perbedaan
antara a dan b adalah ketika syarat diberikan di awal, maka selama persayaratan
itu dipenuhi , maka perulangan dilakukan. Jika kondisi sudah tidak dipenuhi
maka berhenti. Sedangakan pada kasus syarat di akhir, dikerjakan serangkaian
langkah. Setiap selesai rangkaian langkah diperiksa apakah kondisi sudah
dicapai, jika belum maka proses diulangi lagi. Struktur yang sesuai dengan
perulangan dengan kondisi di awal adalah struktur WHILE DO sedangkan untuk
kondisi di akhir adalah dengan REPEAT UNTIL.
2. Pemberhentian dengan pencacah
Pemberhentian
dengan pencacah, artinya dari awal sudah ditentukan bahwa perulangan akan
dilakukan berapa kali. Pencacah ini juga ada dua macam cara, yaitu
a. Pencacah naik
Pemberhentian
dengan pencacah naik artinya untuk suatu pencacah, misalkan i dari 1 sampai 100
lakukan rangkain langkah x. Artinya langkah tersebut akan diulangi sebanyak
seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR TO DO.
b. Pencacah turun
Pemberhentian
dengan pencacah turun , artinya sebaliknya untuk suatu pencacah i dari 100
sampai 1 lakukan rangkaian langkah x, artinya langkah x akan diulangi sebanyak
seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR DOWNTO DO
Penggunaan
beberapa macam pemberhentian di atas tergantung dari situasi dan kondisi, untuk
lebih jelasnya akan dijelaskan seperti berikut.
Perulangan dengan struktur
WHILE DO
Dalam
berbagai bahasa Pascal dikenal struktur WHILE DO, yang berarti selama memenuhi
kriteri/kondisi tertentu, maka dilakukan serangkaian proses. Struktur ini dapat
diterapkan pada
contoh
di atas sebagai berikut.
Bentuk
Umum:
WHILE
(kondisi) DO
Pernyataan;
Atau
jika lebih dari satu pernyataan dapat dituliskan
WHILE
(kondisi) DO
Begin
Pernyataan1;
Pernyataan2;
Pernyataan3;
End;
Perulangan
dengan struktur FOR DO
Perulangan
dengan pencacah, yaitu menggunakan struktur FOR DO dimasukkan dalam
pembahasan
pada kegaiatan Belajar ini. Struktur ini digunakan untuk mengulang statement
atau
satu
blok statement berulang kali sejumlah yang ditentukan.
Bentuk
umum :
for
nama_variabel := nilai_awal to nilai_akhir do {untuk pencacah naik}
Pernyataan;
atau
for
nama_variabel := nilai_awal downto nilai_akhir do {untuk pencacah turun}
Pernyataan;
Penulisan
pernyataan yang akan diproses berulang kali tersebut dapat juga ditulis dalam
bentuk blok pernyataan (diawali dengan BEGIN dan diakhiri dengan END), walaupun
hanya berisi sebuah
statement
saja,
Dalam
menyelesaiakan suatu permasalahan kita bisa menggunakan salah satu bentuk
perulangan, apakah While Do ataupun For Do. Manakah yang lebih baik? Keduanya
mempunyai
kelebihan
dan kekurangan sendiri-sendiri. Ada permasalahan yang dapat diubah dalam dua
bentuk eprulangan tapi ada yang lebih mudah menggunakan bentuk For Do, tapi ada
juga yang hanya bisa digunakan bentuk While Do.
Perhatikan
dua contoh pertama pada bagian mengamati
Kedua
program di atas mempunyai keluaran yang sama yaitu mencetak ‘Pascal’ sebanyak
5
kali, yaitu untuk i=1 sampai 5. Dalam While Do,
-
pertama i diberi nilai 1,
-
Periksa apakah i <= 5? Iya maka tuliskan ‘Pascal’ kemudian nilai i ditambah
1 menjadi 2
-
Periksa Apakah I<=5? Iya , Maka Tuliskan Pascal, I=I+1=3
-
Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=4
-
Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=5
-
Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=6
-
Periksa apakah i<=5?Tidak, maka STOP
Di
sini i berfungsi sebagai iterator dan 5 sebagai nilai sentinel.
Dalam
struktur FOR DO, iterator dan sentinel diringkas dalam bentuk for i:=1 to 5, di
mana i
otomatis
bertambah naik, mulai dari nilai awal 1 menjadi 5. Oleh karena itu struktur For
Do disebut
perulangan
dengan pencacah.
Perulangan
Dengan Kondisi Di Akhir
PROGRAM
REPEATUNTIL
var
digit := 1;
begin
repeat
write (digit);
digit := digit + 1
until digit > 5 ;
end.
Program REPEATUNTIL
var
a: integer;
begin
a := 10;
(* repeat until loop execution *)
repeat
writeln(‘nilai dari a adalah ', a);
a := a + 1
until a = 20;
end.
Sebagaimana yang dijelaskan sebelumnya bahwa
perulangan dapat dilakukan dengan menyatakan kondisi di akhir. Berbeda dengan
kondisi di awal, di mana selama syarat (kondisi) dipenuhi maka perintah
dijalankan, pada kondisi di akhir, perintah dijalankan sampai memenuhi kondisi
yang diinginkan. Struktur yang digunakan adalah struktur Repeat Until.
Bentuk Umum :
REPEAT
Pernyataan;
UNTIL (kondisi)
Kode Program
Var digit := 1;
begin
repeat
writeln (digit);
digit := digit + 1
until digit > 5 ;
end.
Program di atas diawali dengan nilai awal digit=1, kemudian
dilakukan perintah
writeln (digit);
digit := digit + 1
hingga nilai digit>5.
Perbedaan antara struktur REPEAT-UNTIL dengan
WHILE-DO adalah sebagai berikut :
1) Paling sedikit statement-statement
di dalam perulangan REPEAT-UNTIL diproses sekali, karena seleksi kondisi ada
pada statement Until yang terletak dibawah. Sedang pada struktur WHILE-DO
paling sedikit dikerjakan nol kali, karena seleksi kondisi ada pada statement
While yang terletak diatas, sehingga kalau kondisi sudah tidak terpenuhi, maka
tidak akan masuk ke dalam lingkungan perulangan.
2) Pada REPEAT-UNTIL dapat tidak
dipergunakan blok statement (tidak diperlukan Begin dan End untuk menunjukkan
batas perulangannya), karena batas perulangannya sudah ditunjukkan oleh Repeat
sampai dengan Until (Repeat dan Until sebagai pengganti Begin dan End).
PERULANGAN
DENGAN KONDISI DIINPUTKAN USER
Aplikasi pemroograman dalam kehidupan nyata,
khususnya yang terkait dengan struktur perulangan, memerlukan syarat yang
diinputkan oleh pengguna. Sebagai contoh, dalam sebuah aplikasi kasir, ketika
melayani pembeli, seorang kasir akan memasukkan data barang-barang yang dibeli
dengan barcode reader, hingga akhirnya kasir akan mengklik sebuah tombol untuk
menghitung total belanjaan. Proses memasukkan data dari barang pertama, kedua,
dan ke barang-barang berikutnya, adalah suatu bentuk perulangan. Dan perulangan
ini akan berhenti hingga akhrinya kasir mengeklik tombol untuk menghitung total
belanjaan.
Contoh lain misalkan dalam sebuah video game
dengan koin, ketika seorang anak memasukkan koin, kemudian bermain dan akhirnya
terjadi game over. Berikutnya biasanya, video game akan menampilkan hitungan
mundur menunggu anak untuk memasukkan koin berikutnya agar permainan dapat
dilanjutkan. Bentuk hitugan mundur ini juga menggunakan perulangan, dan akan
berhenti perulangan ini untuk dua kemungkinan, si anak memasukkan koin atau
perhitungan mundur selesai dan akhirnya masuk ke menu awal game kembali.
Kondisi yang diinputkan dari user bisa
diperoleh sebelum perulangan atau di dalam perulangan itu sendiri. Contoh di
atas adalah kondisi dimasukkan oleh user di dalam perulangan itu sendiri.
Contoh pengambilan kondisi sebelum perulangan adalah menentukan suku ke-n dari
sebuah barisan. Misalkan menetukan suku ke n dari barisan 1,2,3,5,8, .... Nilai
n diperoleh dengan menerima masukan dari user sebelum perulangan dilakukan.
Buku Paket Pemrograman Dasar
http://pemrogramandasartkjpunya.blogspot.com/
https://www.duniailkom.com/