|
ALGORITMA DAN PEMROGRAMAN
|
DENGAN BAHASA PASCAL
|
|
|
JURUSAN TEKNIK INFORMATIKA
BAB
I PENDAHULUAN
I.1 LATAR BELAKANG
Bahasa program
merupakan suatu wahana untuk menuangkan pikiran manusia yang dapat
dimengerti oleh mesin komputer sehingga
bernilai guna. Suatu bahasa program akan terikat aturan dari paradigma bahasa. Ada berbagai macam
paradigma bahasa : Prosedural, Fungsional,
Deklaratif, Object Oriented, Konkuren.
Perlu
diperhatikan perbedaan antara belajar bahasa program dengan belajar memprogram!!!
Belajar bahasa program hanya belajar tentang sintak (aturan) dari bahasa
sedangkan belajar memprogram akan tercakup beberapa hal yang didalamnya
terkandung tentang belajar bahasa program itu sendiri. Yang harus diperhatikan oleh mahasiswa yang
sedang belajar memprogram, yaitu :
- Simulasi , sensibilitas terhadap masalah dan kemungkinan solusi. Kegiatan dilakukan di kelas, melalui permainan. Contoh : Mengurutkan tinggi badan mahasiswa dari tinggi ke pendek atau sebaliknya. Permainan dapat dilakukan secara manual maupun dengan komputer.
- Analisis masalah secara lebih formal dan membuat spesifikasi dan algoritma dalam notasi yang ditetapkan. Mahasiswa harus menuliskan solusi algoritmiknya dalam notasi standar di kelas. Penulisan notasi algoritmik bertujuan untuk menyeragamkan pemahaman tentang algoritma program yang terbebas dari sintak (aturan) penulisan bahasa program .
- Menulis program, yaitu menterjemahkan notasi algoritmik ke dalam sintak bahasa program.
- Debugging dan menguji coba program. Hal ini bertujuan untuk mendapatkan program yang benar. Program dikatakan benar jika terbebas dari salah lojik dan sintak bahasa. Secara ideal mahasiswa hanya diberi kesempatan untuk me-run program sebanyak 2 kali : pertama untuk membersihkan program dari kesalahan sintak dan kedua untuk mendapatkan program benar. Pada tahap ini diharapkan tidak terjadi kesalahan lojik jika analisa benar.
- Mengamati peristiwa eksekusi, perlu dilakukan untuk meningkatkan kepercayaan bahwa jika analisa benar maka sisa pekerjaan menjadi mudah. Pada pemrograman prosedural, aspek ini penting untuk memahami fenomena eksekusi dan perubahaan nilai suatu struktur data.
- Membaca program : orang akan dapat menulis dengan baik kalau sering membaca. Hal ini juga berlaku dalam memprogram. Kegiatan yang dapat dilakukan di kelas adalah dengan saling tukar menukar teks algoritma, dan saling mengkritik algoritma teman. Mahasiswa harus berlatih sendiri pada kegiatan belajar bersama.
·
Membuktikan kebenaran
program secara formal , satu-satunya hal yang menjamin kebenaran, tetapi
kontradiktif dan sulit diterapkan dalam kehidupan sehari-hari. Program yang
hanya lima baris pembuktiannya bisa sehalaman, sehingga seringkali tidak pernah
diterapkan dalam aplikasi nyata.
Makalah ini
akan membahas tentang algoritma dan pemrograman dalam Bahasa Pascal.
I.2 RUANG LINGKUP
Pada penulisan makalah ini, Saya membatasi permasalahan,
yakni seputar runtunan, pemilihan (satu kasus, dua kasus, tiga kasus/lebih,
case), pengulangan (for_do, while_do, repeat_until), prosedur, fungsi, dan
larik.
I.3 RUMUSAN MASALAH
- Apa saja elemen-elemen bahasa dalam Pascal ?
- Bagaimana struktur program Pascal ?
- Apa yang dimaksud dengan struktur runtunan, pemilihan, pengulangan, prosedur, fungsi, dan larik ?
- Bagaimana algoritma dan program dari struktur tersebut ?
I.4 TUJUAN
Adapun tujuan
pembuatan makalah ini adalah :
- Untuk melengkapi nilai tugas mata kuliah Algoritma dan Pemrograman 1
- Sebagai media untuk berbagi pengetahuan
- Untuk mengkaji kembali pengetahuan yang telah saya dapat pada kuliah Algoritma dan Pemrograman 1
I.5 MANFAAT
Dengan adanya makalah
ini diharapkan mahasiswa/i dapat lebih memahami dan mengerti tentang Algoritma
dan dapat Pemrograman.
BAB
II PEMBAHASAN
II.1 ELEMEN – ELEMEN BAHASA DALAM PASCAL
Pascal adalah bahasa pemrograman
yang pertama kali di buat oleh Profesor Niklaus Wirth, seorang anggota
International Federation of Information Processing (IFIP) pada tahun 1971.
Dengan mengambil nama dari matematikawan Perancis, Blaise Pascal, yang pertama kali
menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini
sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu,
Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi
kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu. Sebelum kita
membuat sebuah program, maka terlebih dahulu kita harus mengerti tentang
elemen- elemen bahasa (Language elements) Turbo Pascal, seperti Reserved word,
Statement, Type, Constants, Variabel, Tipe data, Label, Operator, dan
lain-lain.
a. Reserved Word
Reserved word adalah kata
– kata yang tidak dapat dijadikan menjadi identifier (pengenal), karena kata –
kat tersebut sudah mempunyai arti tersendiri dalam Turbo Pascal. Adapun kata –
kata yang termasuk ke dalam identifier adalah:
And, asm, array, begin,
case, const, constructor, destructor, div, do, downto, else, end, exports,
file, for, function, goto, if, implementation, in, inherited, inline, interface,
label, library, mod, nil, not, object, of, or,packed, procedure, program,
record, repeat, set, shl, shr, string, then, to, type, unit, until, uses, var,
while, with, xor.
b. Statement
Statement adalah salah
satu dari berikut ini:
-
Assignment (:=)
-
Begin..end
-
Case..of..else..end
-
For..to/downto..do
- Goto
-
If..then..else
-
Inline(..)
-
Procedure call
-
Repeat..until
-
While..do
-
With..do
c. Type
Bentuk umum:
Type
Pengenal = tipe
data;
……….
Pengenal = tipe data;
d. Const (Constant)
Constant yang disingkat
dengan const adalah nilai konstanta ( nilai tetap) yang dipasang dalam program.
Bentuk umum:
Const
Pengenal = ekspresi
………
Pengenal = ekspresi
Const
Pengenal: type = nilai;
………..
Pengenal: type = nilai;
e. Var ( Variabel)
Jika constant adalah nilai
tetap, maka Variabel adalah nilai yang isinya dapat berubah – ubah. Dalam
program, Variabel disingkat menjadi Var.
Bentuk umum:
Var
Pengenal, … pengenal : Tipe data;
……
Pengenal,… pengenal: Tipe data;
f. Tipe Data
Tipe atau jenis data dalam
Turbo Pascal dibagi kedalam 6 kelompok besar, antara lain:
1. Tipe simple:
- Tipe ordinal : dibagi kedalam 5 tipe:
Tipe
|
Range
|
Size
|
Shortint
|
128..127
|
8-bit
|
Integer
|
-32768..32767
|
16-bit
|
Longint
|
-2147483648..2147483647
|
32-bit
|
Byte
|
0.255
|
8-bit
|
Word
|
0.65535
|
16-bit
|
- Tipe integer : dibagi kedal 5 bagian yaitu:
Tipe
|
Range
|
Format
|
Shortint
|
-128..127
|
8-bit bertanda
|
Integer
|
-32768..32767
|
16-bit bertanda
|
Longint
|
-2147483648..2147483647
|
32-bit bertanda
|
Byte
|
0.255
|
8-bit tak bertanda
|
Word
|
0.65535
|
16-bit tak bertanda
|
Catatan :
Semua tipe integer adalah tipe ordinal.
Tipe real : dibagi kedalm 5 bagian yaitu:
Tipe
|
Range
|
Digit
|
Byte
|
Real
|
2.9e-39..1.7e38
|
11 - 12
|
6
|
Single
|
1.5e-45..3.4e38
|
7 - 8
|
4
|
Double
|
5.0e-324..1.7e308
|
15 - 16
|
8
|
Extended
|
3.4e4932..1.1e4932
|
19 - 20
|
10
|
comp
|
-9.2e18..9.2e18
|
19 - 20
|
8
|
Turbo Pascal
juga menyediakan 2 model floating-point:
- Software floating point,{$N-}
- 80×87 floating point, {$N+}
- Tipe char
Char adalah semua tombol
yang terdapat pada keyboard, atau lebih lengkapnya semua karakter yang terdapat pada kode ASCII.
Apabila tipe char
dijadikan konstanta, maka karakter yang dimasukkan harus diapit oleh tanda
kutip satu. Dan apabila karakter
tersebut berupa tanda kutip satu, maka harus diapit oleh dua tanda kutip satu.
- Tipe Boolean
Ada empat yang termasuk
kedalam tipe Boolean :Boolean, wordbool, longbool, bytebool. Keempat tipe
Boolean tersebut adalah tipe untuk kompatibilitas dengan Windows.
- Tipe enumerated
Bentuk umum:
Type
Nama = (pengenal,
Pengenal,…,
Pengenal );
- Tipe subrange
Bentuk umum:
Constant1 .. constant2
2. Tipe String
String adalah kumpulan dari beberapa
karakter dan panjangnya tidak boleh melebihi 255 karakter. Jika string
mengandung tanda kutip satu, maka tanda kutip tersebut harus diberi tanda kutip
lagi.
Bentuk umum:
String [ constant ]
Atau
String
Ciri – ciri
Apabila panjang string
tidak ditentukan maka panjangnya dianggap255 karakter. Oleh karena itu, untuk
menghemat memori, biasakanlah selalu menentukan panjang string yang akan
dibuat.
3. Tipe Structured
Tipe
structured adalah tipe yang terdiri lebih dari satu nilai. Sedangkan tipe structured terdiri dari 5 tipe :
a)
Tipe array
Bentuk umum:
Array [Indeks]
of Tipe Data
b)
Tipe file
Bentuk umum:
File of type
Atau
File
c)
Tipe object
Tipe object
adalah data berstruktur yang berisi komponen bilangan fixed.
Bentuk umum:
Object
Field;
Field;
……..
Method;
Method;
End;
d)
Tipe record
Bentuk umum:
Record
Field;
Field;
…….
End;
e)
Tipe set
Bentuk umum:
Set of Tipe
Data
4. Tipe Pointer
Tipe pointer
adalah tipe yang berisi alamat memori, dan berlambang ^. Anda dapat menunjuk
sebuah nilai kedalam variable pointer dengan:
- Procedure New atau GetMem
- Operator @
- Fungsi Ptr
5. Tipe Procedural
Procedure dan
Function adalah bagian Turbo Pascal dalam mebuat sebuah program. Melalui tipe
Procedural, maka anda dapat memperlakukan Procedure dan Function sebagai object
sehingga dapat dimasukkan kedalam sebuah variable dan parameter. Hasil function
haruslah berupa string, real, integer, char, Boolean, atau pointer.
g. Label
Label adalah suatu
deklarasi untuk membuat percabangan dalam proram. Label bisa berupa huruf,
misalnya: AWAL, AKHIR, atau angka antara 0 and 999. Dan untuk menuju kelabel
yang telah dideklarasikan harus menggunakan instruksi GOTO.
Bentuk umum:
Label pengenal,….. pengenal;
h. Operator
Operator adalah lambing-
lambing untuk melakukan perkalian, penjumlahan dan lain- lain seperti dalam
kalkulator. Tetapi operator dalam computer lebih kompleks dibandingkan
kalkulator. Jenis-jenis operator:
§ Operator penghubung (
relational operators )
§ Operator arithmatik (
arithmetic operators )
§ Operator logika ( logical
operators )
§ Operator pembanding (
Boolean operators )
§ Operator string ( string
operators )
§ Operator set ( set
operators )
§ Operator @ ( @ operators )
§ Operator Pchar ( Pchar
operators
II.2 STRUKTUR PROGRAM PASCAL
Struktur dasar dalam pemrograman pascal :
|
Elemen-elemen dalam program harus sesuai dengan
urutannya, beberapa elemen bisa dihilangkan bila tidak diperlukan. Seperti
contoh dibawah, program yang ada merupakan program yang benar, tapi tidak
melakukan apapun.
Komentar dapat disertakan dalam penulisan kode.
Komentar tidak akan disertakan dalam kompilasi (compile) atau saat program
dijalankan (execute). Penanda komentar adalah (* dan diakhiri dengan *). atau
dapat pula dengan tanda { dengan akhiran }. Pemakaian komentar dalam bahasa
pascal tidak boleh salah, karena akan menimbulkan masalah. Penulisan komentar
yang salah seperti :
{ { disini komentar } }
Pada saat code dicompile, akan memberikan pesan
kesalahan karena compiler akan melihat tanda { yang pertama dan tanda } yang
pertama pula, sehingga tanda } yang kedua akan dianggap kesalahan. Berikut
beberapa contoh penulisan komentar yang benar :
{ { disini komentar }
{ disini komentar } writeln(’test komentar’); {
komentar lagi }
(* disini komentar *)
Pemberian komentar akan mempermudah dalam memahami
suatu kode program (source code). Bila kita menulis program tanpa memberikan
komentar, saat kita membuka kembali kode yang kita tulis dalam jangka waktu
berselang lama. Akan mempersulit kita memahami program yang kita buat
sebelumnya (bila program sangat rumit).
II.3 RUNTUNAN
Algoritma merupakan runtunan (sequence) satu atau
lebih instruksi, yang berarti bahwa :
- Tiap instruksi dikerjakan satu per satu
- Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang
- Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagaimana yang tertulis di dalam teks algoritmanya
- Akhir dari instruksi terakhir merupakan akhir algoritma
Urutan instruksi di dalam algoritma adalah penting.
Urutan instruksi menunjukkan urutan logik penyelesaian masalah. Bergantung pada
masalahnya, urutan instruksi yang berbeda mungkin tidak ada pengaruhnya tehadap
solusi persoalan, tetapi mungkin juga menghasilkan keluaran yang berbeda pula.
Contoh kasus 1 : urutan instruksi tidak berpengaruh
terhadap solusi persoalan.
Dibaca dua buah nilai integer dari piranti masukan, A
dan B. hitung jumlah keduanya dan
hasil kali keduanya, lalu cetak jumlah dan hasil kali itu ke piranti keluaran.
Hasil algoritma di atas sama saja jika urutan C←A+B dan D←A*B diubah sebagai berikut :
Contoh kasus 2 : urutan instruksi berpengaruh terhadap
solusi persoalan.
Diketahui dua buah nilai integer, masing-masing disimpan di dalam dua peubah, A dan B. bagaimana cara mempertukarkan nilai A dan B ? Misalnya,
sebelum pertukaran nilai A=8, nilai B=5, maka setelah pertukaran, nilai A=5 dan B=8.
Proses pertukaran nilai akan salah
jika anda tidak benar menuliskan urutan instruksi, misalnya runtunan
{ proses pertukaran }
temp←A { simpan
nilai A di penampungan sementara, temp }
A←B { sekarang
A dapat diisi dengan nilai B }
B←temp { isi B
dengan nilai A semula yang tadi disimpan di temp }
Diubah urutannya sebagai berikut :
{ proses pertukaran }
temp←A { simpan
nilai A di penampungan sementara, temp }
B←temp { isi B
dengan nilai A semula yang tadi disimpan di temp }
A←B { sekarang
A dapat diisi dengan nilai B }
maka runtunan yang terakhir ini sama saja dengan
runtunan :
B←A
A←B
Contoh
runtunan :
Dibaca waktu tempuh seorang pelari marathon dalam
jam-menit-detik (hh:mm:ss). Diminta
mengkonversi waktu tempuh tersebut ke dalam detik. Tuliskan algoritmanya.
Ingatlah
1
menit = 60 detik
1
jam = 3600 detik
Misalnya waktu tempuh
seorang pelari marathon adalah 1 jam, 5 menit, 40 detik. Dalam detik, waktu
tempuh seluruhnya adalah ( 1 x 3600 ) + ( 5 x 60 ) + 40 = 3940 detik.
Jika anda mentranslasikan algoritma
KONVERSI_JAM_KE_DETIK ke dalam bahasa pascal, anda harus memperhatikan tipe
bilangan bulat yang digunakan. Karena ranah nilai tipe integer terbatas, maka
ada kemungkinan hasil pengubahan jam-menit-detik ke total detik bernilai
negatif, sebab nilai (J.hh*3600) + (J.mm*60) + J.ss berada di luar rentang tipe
integer. Tipe longint yang mempunyai ranah yang lebih besar dapat dipakai untuk
masalah ini.
Jadi, program KONVERSI_JAM_KE_DETIK dalam bahasa
pascal adalah sebagai berikut :
II.4 PEMILIHAN
Struktur runtunan hanya
terdapat pada program sederhana. Pada umumnya, masalah yang akan diselesaikan memiliki
beberapa alternative pelaksanaan aksi. Suatu aksi hanya dilakukan bila
persyaratan atau kondisi tertentu dipenuhi. Kita katakan bahwa masalah tersebut
memiliki beberapa kasus. Jadi, dalam memecahkan masalah, kita harus
menganalisis kasus-kasus apa saja yang mungkin ada, lalu aksi apa yang
dilakukan bila suatu kasus dimasuki. Adanya pemilahan kasus-kasus menyebabkan
terjadinya pemilihan instruksi di dalam algoritma, bergantung pada kasus yang
memenuhi.
Menganalisis kasus dari
suatu masalah adalah menentukan kondisi boolean (bernilai true atau false) untuk setiap kasus dan menentukan
aksi yang dilakukan jika kondisi tersebut berlaku (memenuhi).
Kondisi boolean adalah
ekspresi boolean yang bernilai true atau false bergantung pada nilai
masing-masing operand yang terlibat di dalamnya. Ekspresi boolean dibentuk
dengan mengkombinasikan operand yang bertipe sama dengan salah satu dari
operator relasional : =, ≠, <, >, ≤, ≥, dan operator uner not.
Contoh-contoh ekspresi boolean :
x
> y
a ≠ 10
m = n
p ≤ q
a + b > 1
str = ‘itb’
k
mod 4 = 0
ketemu
= true
not
berhenti
(x
> 0) and (y < 0)
Aksi yang dikerjakan bila
kondisi boolean dipenuhi dapat berupa pengisian nilai (assignment), kalkulasi,
baca, tulis, dan sebagainya, bergantung pada masalahnya.
Penentuan kondisi boolean dan aksi yang dilakukan
bergantung pada jumlah kasus yang terdapat pada masalah tersebut : satu kasus,
dua kasus, atau lebih dari dua kasus.
Satu Kasus
Notasi algoritmik untuk
analisis dengan satu kasus adalah dengan menggunakan struktur IF-THEN
(jika-maka) :
Aksi sesudah kata then
(dapat berupa
satu atau lebih aksi) hanya akan dilaksanakan bila kondisi bernilai benar
(true). Bila kondisi bernilai salah (false), tidak ada aksi apapun yang
dikerjakan. Kata endif sengaja ditambahkan untuk
mempertegas awal dan akhir struktur if-then.
Contoh-contoh :
a. if
x > 100 then
x←x+1
endif
b. if
ada=false then
read (cc)
write (cc)
endif
catatan:
contoh (b) di atas dapat juga ditulis sebagai berikut
:
if
not ada then
read(cc)
write(cc)
endif
Ingatlah bahwa aksi
sesudah kata then akan dikerjakan hanya jika kondisi
bernilai true ( dalam hal ini, not
ada bernilai true bila ada =
false ).
Contoh analisis :
Dibaca sebuah karakter.
Diminta menuliskan pesan ‘huruf hidup’ jika karakter tersebutmerupakan huruf
vokal.
Jadi, program HURUF_VOKAL dalam bahasa pascal adalah
sebagai berikut :
Dua Kasus
Notasi algoritma untuk
analisis dengan dua buah kasus adalah dengan menggunakan struktur IF-THEN-ELSE
(jika-maka-kalau tidak) :
Aksi1 akan dilaksanakan jika kondisi bernilai benar, tetapi
jika kondisi bernilai salah, maka aksi2 yang akan dilaksanakan.
Perhatikanlah bahwa “else” menyatakan ingkaran
(negation) dari kondisi.
Contoh analisis :
Buatlah algoritma dan program yang
membaca angka tahun masehi dari papan kunci,lalu menentukan apakah tahun
tersebut merupakan tahun kabisat. Secara sederhana, tahun kabisat adalah tahun
yang habis dibagi dengan 4. Pada tahun kabisat, bulan februari berjumlah 29
hari. Contoh tahun kabisat adalah 1996 dan 2000. Tahun 2002 bukan tahun kabisat
karena tidak habis dibagi 4.
Misalkan tahun masehi tersebut adalah
Tahun.
Analisis kasus :
Kasus
1 : Tahun mod 4 = 0, maka tulis Tahun
adalah tahun kabisat
Kasus
2 : Tahun mod 4 ≠ 0, maka tulis Tahun
bukan tahun kabisat
Jadi, program TAHUN_KABISAT dalam bahasa pascal adalah
sebagai berikut :
Tiga Kasus
atau Lebih
Masalah yang mempunyai
tiga buah kasus atau lebih tetap dapat dianalisis dengan struktur IF-THEN-ELSE
sebagaimana halnya pada masalah dengan dua kasus.
Tiga Kasus : Empat
Kasus :
dan seterusnya.
Contoh analisis :
Buatlah algoritma dan program yang membaca temperatur
air, T, (dalam suatu derajat celcius) pada tekanan normal, lalu menentukan
apakah wujud air tersebut dalam keadaan padat (T ≤ 0°C), cair (0 < T <
100), atau gas (T > 100).
Misalkan suhu air adalah T.
Analisis kasus :
Kasus
1 : T ≤ 0, maka tulis “padat”
Kasus
2 : 0 < T < 100, maka
tulis “cair”
Kasus
3 : T ≥ 100, maka tulis “uap”
Jadi, program WUJUD_AIR dalam penulisan IF-THEN-ELSE
yang bertingkat-tingkat.
Struktur CASE
Tidak semua bahasa pemrograman
menyediakan struktur CASE (misalnya Bahasa Fortran). Bahasa pascal menyediakan
struktur ini. Jika bahasa pemrograman tidak yang ekivalen.
Contoh analisis :
Buatlah algoritma dan program yang
membaca angka bulan dan tahun, lalu menuliskan jumlah hari dalam bulan
tersebut. Misalnya jika dibaca bulan 8 (agustus), maka jumlah harinya adalah
31.
Kita harus mengidentifikasi
bulan-bulan dan jumlah harinya sebagai berikut :
Bulan
|
Jumlah hari
|
1, 3, 5, 7, 8, 10, 12
|
31
|
4, 6, 9, 11
|
30
|
2
|
29 (jika tahun kabisat),
28 (jika bukan kabisat)
|
Jadi, program JUMLAH_HARI dalam bahasa pascal adalah
sebagai berikut :
II.5 PENGULANGAN
Struktur
pengulangan secara umum terdiri atas dua bagian :
- kondisi pengulangan, yaitu ekspresi Boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini ada yang dinyatakan secara eksplisit oleh pemrogram atau dikelola sendiri oleh komputer (implisit);
- badan (body) pengulangan, yaitu bagian algoritma yang diulang.
Disamping itu, struktur
pengulangan biasanya disertai dengan bagian :
- inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali
- terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan
Inisialisasi dan terminasi tidak selalu harus ada, namun
pada berbagai kasus inisialisasi umumnya diperlukan.
Struktur pengulangan secara umum :
yang dalam hal ini awal dan akhir pengulangan
dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang
digunakan. Selain itu, <inisialisasi> dan <terminasi> adalah bagian yang
opsional.
Di dalam algoritma
terdapat beberapa macam struktur pengulangan yang berbeda. Beberapa struktur
dapat dipakai untuk masalah yang sama, namun ada notasi pengulangan yang hanya
cocok dipakai untuk masalah tertentu. Pemilihan struktur pengulangan untuk
masalah tertentu dapat mempengaruhi kebenaran algoritma. Pemilihan struktur
pengulangan yang tepat bergantung pada masalah yang akan deprogram. Tiga (3)
macam notasi struktur pengulangan, yaitu :
1) struktur FOR
2) struktur WHILE
3) struktur REPEAT
Struktur FOR
Struktur
pengulangan FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang dispesifikasikan.
Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi. Untuk
mencacah sudah berapa kali pengulangan dilakukan, kita memerlukan sebuah peubah
(variable) pencacah (counter). Peubah ini nilainya selalu bertambah satu setiap
kali pengulangan dilakukan. Jika cacah pengulangan sudah mencapai jumlah yang
dispesifikasikan, maka proses pengulangan berhenti
Bentuk umum struktur FOR ada dua
macam : menaik (ascending) atau menurun (descending).
FOR menaik :
Keterangan :
i.
pencacah haruslah dari tipe data yang memiliki predecessor
dan successor, yaitu integer atau karakter. Tipe riil tidak dapat digunakan
sebagai pencacah.
ii.
Aksi adalah satu atau lebih instruksi yang diulang.
iii.
nilai_awal harus lebih kecil atau
sama dengan nilai_akhir. Jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan
tidak dimasuki.
iv.
Pada awalnya,pencacah diinisialisasi dengan nilai_awal.Nilai pencacah secara
otomatis bertambah satu setiap kali pengulangan dimasuki, sampai akhirnya nilai
pencacah sama dengan nilai_akhir.
v.
Jumlah pengulangan yang tejadi adalah nilai_akhir
- nilai_awal + 1.
Contoh analisis :
Buatlah algoritma dan program mencetak angka 1, 2, ..,
N, yang dalam hal ini nilai N dibaca terlebih dahulu dari piranti masukan.
Jadi, program CETAK_N_ANGKA dalam
bahasa pascal adalah sebagai berikut :
Pertanyaan :
Apa yang terjadi bila N=0? N=-1? N=1?
Jawab :
Jika N = 0 atau N = -1, proses
pengulangan tidak terjadi, karena nilai akhir pencacah pengulangan lebih besar
dari nilai awalnya (1).
Jika N = 1, pengulangan yang terjadi
adalah 1 kali, karena 1 – 1 + 1 = 1.
For menurun :
Keterangan :
i. Pencacah haruslah dari
tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter.
Tipe riil tidak dapat digunakan sebagai pencacah.
ii. Aksi adalah satu atau
lebih instruksi yang diulang.
iii. nilai_akhir harus lebih besar atau
sama dengan nilai_awal. Jika nilai_akhir lebih kecil dari nilai_awal, maka badan pengulangan
tidak dimasuki.
iv. Pada awalnya, pencacah
diinisialisasi dengan nilai_akhir. Nilai pencacah secara
otomatis berkurang satu setiap kali aksi diulang, sampai akhirnya nilai
pencacah sama dengan nilai_awal.
v. Jumlah pengulangan yang
terjadi adalah nilai_awal-nilai_akhir+1.
Contoh analisis :
Algorima dan program peluncuran roket dengan hitung
mundur, mulai dari 10, 9, 8, …, 0.
Struktur WHILE
Bentuk umum :
Aksi
(atau runtunan aksi) akan dilaksanakanberulangkali selama kondisi benilai true.
Jika kondisi bernilai false, badan pengulangan tidak akan dilaksanakan, yang
berarti pengulangan selesai.
Yang
harus diperhatikan adalah pengulangan harus berhenti. Pengulangan yang tidak
pernah berhenti menandakan bahwa logika algoritma tersebut salah. Pengulangan
berhenti apabila kondisi bernilai false. Agar kondisi suatu saat bernilai
false, maka di dalam badan pengulangan harus ada instruksi yang mengubah nilai
peubah kondisi.
Contoh analisa :
Dibuat sejumlah data bilangan bulat
positif dari piranti masukan. Banyaknya data tidak diketahui sebelumnya, tetapi
akhir pemasukan data adalah bila data yang dimasukkan bernilai -99. Bilangan
-99 akan diinterpretasikan sebagai tanda berhenti proses pengisian data. Kita
diminta menghitung jumlah seluruh nilai yang dimaskkan (-99 tidak termasuk data
yang dijumlahkan).
Sebagai ilustrasi :
i.
misalkan dibaca berturut-turut data: 10, 4, 5, 8, -99.
maka
jumlah seluruh nilai adalah 10 + 4 + 5 + 8 = 27
ii. misalkan dibaca
berturut-turut data : 9, -99
maka jumlah seluruh nilai
adalah 9
iii. misalkan dibaca
berturut-turut data : -99
maka jumlah seluruh nilai adalah 0
Struktur REPEAT
Bentuk umum :
Notasi
ini mendasarkan pengulangan pada kondisi boolean. Aksi di dalam badan kalang
diulang samopai kondisi boolean bernilai true. Dengan kata lain, jika kondisi
boolean masih false, pengulangan masih terus dilakukan. Karena proses
pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus
ada aksi yang mengubah nilai peubah kondisi.
Struktur
REPEAT memiliki makna yang sama dengan WHILE, dan dalam beberapa masalah kedua
struktur tersebut komplemen satu sama lain.
Contoh analisa :
Algoritma dan program untuk
menghitung jumlah angka dari 1 sampai N. Nilai N dibaca dari papan kunci.
Misalnya N = 5, maka 1 + 2 + 3 + 4 + 5 = 15.
II.6 PROSEDUR DAN FUNGSI
Sebuah program yang baik adalah program yang membagi permasalahan utama
menjadi bagian-bagian kecil dimana setiap bagian kecil ditangani oleh sebuah
subprogram, cara ini disebut dengan modular programming (pemrograman
terbagi/terpecah). Cara ini termasuk pemrograman terstruktur dan sangat didukung
oleh bahasa Pascal. Untuk itu, Pascal telah menyediakan dua jenis subprogram, yaitu
procedure dan function (prosedur dan fungsi).
Dengan modular programming, program lebih mudah dibaca dan dimengerti.
Selain itu, pembenahan program dan penelusuran jalannya program (debugging)
menjadi lebih mudah sebab dapat langsung diketahui subprogram mana yang berjalan
tidak sesuai dengan yang diharapkan.
Sebuah program yang baik adalah program yang membagi permasalahan utama
menjadi bagian-bagian kecil dimana setiap bagian kecil ditangani oleh sebuah
subprogram, cara ini disebut dengan modular programming (pemrograman
terbagi/terpecah). Cara ini termasuk pemrograman terstruktur dan sangat didukung
oleh bahasa Pascal. Untuk itu, Pascal telah menyediakan dua jenis subprogram, yaitu
procedure dan function (prosedur dan fungsi).
Dengan modular programming, program lebih mudah dibaca dan dimengerti.
Selain itu, pembenahan program dan penelusuran jalannya program (debugging)
menjadi lebih mudah sebab dapat langsung diketahui subprogram mana yang berjalan
tidak sesuai dengan yang diharapkan.
1. P r o s e d u r
Prosedur adalah subprogram yang menerima masukan tetapi tidak mempunyai
keluaran secara langsung.
Prosedur adalah subprogram yang menerima masukan tetapi tidak mempunyai
keluaran secara langsung.
Pada dasarnya,
struktur prosedur sama dengan struktur algoritma yang sudah anda kenal. Setiap
prosedur mempunyai nama yang unik. Nama prosedur sebaiknya diawali dengan kata
kerja karena prosedur berisi suatu aktivitas.
Notasi algoritma yang digunakan untuk
mendefinisikan struktur prosedur (tanpa parameter) adalah :
Cara mendeklarasikan sebuah prosedur adalah sebagai
berikut :
berikut :
Pendeklarasian prosedur di atas
adalah untuk prosedur yang tidak memerlukan
parameter. Parameter adalah data
masukan untuk subprogram yang nantinya akan
diproses lebih lanjut dalam subprogram tersebut. Dalam Pascal, dikenal dua macam
parameter yaitu :
1. parameter nilai (value parameter), dan
2. parameter referensi (reference parameter).
Cara mendeklarasikan parameter tersebut adalah sebagai berikut :
diproses lebih lanjut dalam subprogram tersebut. Dalam Pascal, dikenal dua macam
parameter yaitu :
1. parameter nilai (value parameter), dan
2. parameter referensi (reference parameter).
Cara mendeklarasikan parameter tersebut adalah sebagai berikut :
Pada deklarasi prosedur di atas,
parameter X adalah parameter nilai sedang parameter
Y adalah parameter referensi. Jadi, pendeklarasian parameter referensi didahului oleh
reserved word var. Parameter referensi ini nantinya dapat dijadikan sebagai variabel
keluaran dari prosedur.
Y adalah parameter referensi. Jadi, pendeklarasian parameter referensi didahului oleh
reserved word var. Parameter referensi ini nantinya dapat dijadikan sebagai variabel
keluaran dari prosedur.
Untuk lebih memahami penggunaan
prosedur dalam Pascal, perhatikan contoh
program di bawah ini :
program Prosedur;
uses wincrt;
var
Bil_1, Bil_2, Hasil : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Write('Masukkan bilangan pertama : ');
Readln(Bil_1);
Write('Masukkan bilangan kedua : ');
Readln(Bil_2);
Writeln;
end;
procedure Kali(A,B : integer);
var
I : integer;
begin
Hasil := 0;
for I := 1 to B do Hasil := Hasil + A;
end;
procedure Kalikan(A,B : integer; var C : integer);
var
I : integer;
begin
C := 0;
for I := 1 to B do C := C + A;
end;
begin
ClrScr;
Awal;
Baca_Data;
Kali(Bil_1, Bil_2);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Kalikan(Bil_1, Bil_2, Hasil);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Writeln;
Write('Tekan Enter...');
Readln;
end.
program di bawah ini :
program Prosedur;
uses wincrt;
var
Bil_1, Bil_2, Hasil : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Write('Masukkan bilangan pertama : ');
Readln(Bil_1);
Write('Masukkan bilangan kedua : ');
Readln(Bil_2);
Writeln;
end;
procedure Kali(A,B : integer);
var
I : integer;
begin
Hasil := 0;
for I := 1 to B do Hasil := Hasil + A;
end;
procedure Kalikan(A,B : integer; var C : integer);
var
I : integer;
begin
C := 0;
for I := 1 to B do C := C + A;
end;
begin
ClrScr;
Awal;
Baca_Data;
Kali(Bil_1, Bil_2);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Kalikan(Bil_1, Bil_2, Hasil);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas. Dua prosedur terakhir
memiliki kemiripan, bedanya hanya
pada jumlah parameter dan variabel hasil perkaliannya. Untuk lebih jelas, jalankan program dan perhatikan apa yang dilakukan oleh dua prosedur tersebut maka akan nampak perbedaan keduanya.
2. F u n g s i
Fungsi adalah subprogram yang menerima masukan dan mempunyai keluaran secara langsung. Cara mendeklarasikan sebuah fungsi adalah sebagai berikut :
pada jumlah parameter dan variabel hasil perkaliannya. Untuk lebih jelas, jalankan program dan perhatikan apa yang dilakukan oleh dua prosedur tersebut maka akan nampak perbedaan keduanya.
2. F u n g s i
Fungsi adalah subprogram yang menerima masukan dan mempunyai keluaran secara langsung. Cara mendeklarasikan sebuah fungsi adalah sebagai berikut :
Sebagaimana dalam prosedur, fungsi
juga dapat diberikan parameter. Cara
mendeklarasikan fungsi dengan parameter juga tidak jauh berbeda dengan
pendeklarasian parameter pada prosedur.
mendeklarasikan fungsi dengan parameter juga tidak jauh berbeda dengan
pendeklarasian parameter pada prosedur.
Perbedaan utama antara prosedur dan
fungsi adalah dalam menghasilkan keluaran.
Walaupun prosedur bisa menghasilkan nilai keluaran, tetapi nilai tersebut tidak dapat
diambil secara langsung, melainkan harus diambil melalui parameter referensi.
Sedangkan keluaran dari fungsi dapat diambil langsung dari fungsi tersebut.
Walaupun prosedur bisa menghasilkan nilai keluaran, tetapi nilai tersebut tidak dapat
diambil secara langsung, melainkan harus diambil melalui parameter referensi.
Sedangkan keluaran dari fungsi dapat diambil langsung dari fungsi tersebut.
Untuk lebih memahami perbedaan
prosedur dan fungsi, perhatikan contoh berikut ini :
program Fungsi;
uses wincrt;
var
Bil_1, Bil_2, Hasil : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Write('Masukkan bilangan pertama : ');
Readln(Bil_1);
Write('Masukkan bilangan kedua : ');
Readln(Bil_2);
Writeln;
end;
function Kali(A,B : integer) : integer;
var
I,J : integer;
begin
J := 0;
for I := 1 to B do J := J + A;
Kali := J;
end;
procedure Kalikan(A,B : integer; var C : integer);
var
I : integer;
begin
C := 0;
for I := 1 to B do C := C + A;
end;
begin
ClrScr;
Awal;
Baca_Data;
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kali(Bil_1,Bil_2):5);
Kalikan(Bil_1, Bil_2, Hasil);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Writeln;
Write('Tekan Enter...');
Readln;
end.
program Fungsi;
uses wincrt;
var
Bil_1, Bil_2, Hasil : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Write('Masukkan bilangan pertama : ');
Readln(Bil_1);
Write('Masukkan bilangan kedua : ');
Readln(Bil_2);
Writeln;
end;
function Kali(A,B : integer) : integer;
var
I,J : integer;
begin
J := 0;
for I := 1 to B do J := J + A;
Kali := J;
end;
procedure Kalikan(A,B : integer; var C : integer);
var
I : integer;
begin
C := 0;
for I := 1 to B do C := C + A;
end;
begin
ClrScr;
Awal;
Baca_Data;
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kali(Bil_1,Bil_2):5);
Kalikan(Bil_1, Bil_2, Hasil);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas. Prosedur
Kalikan dan fungsi Kali mempunyai keluaran yang sama, tetapi cara mengambil
keluarannya berbeda. Perhatikan dan jelaskan apa yang terjadi jika baris
keempat dalam program utama yang semula perintah :
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kali(Bil_1,Bil_2):5);
diubah menjadi :
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kalikan(Bil_1,Bil_2,Hasil):5);
3. Rekursi
Dalam Pascal, ada satu kelebihan dalam cara pemanggilan subprogram. Pascal mengijinkan pemanggilan suatu subprogram dari dalam subprogram itu sendiri. Tidak semua bahasa pemrograman mengijinkan cara pemanggilan subprogram seperti itu karena akan banyak memakan memori. Untuk lebih jelasnya perhatikan potongan program di bawah ini :
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kali(Bil_1,Bil_2):5);
diubah menjadi :
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kalikan(Bil_1,Bil_2,Hasil):5);
3. Rekursi
Dalam Pascal, ada satu kelebihan dalam cara pemanggilan subprogram. Pascal mengijinkan pemanggilan suatu subprogram dari dalam subprogram itu sendiri. Tidak semua bahasa pemrograman mengijinkan cara pemanggilan subprogram seperti itu karena akan banyak memakan memori. Untuk lebih jelasnya perhatikan potongan program di bawah ini :
Pada baris terakhir prosedur Z di atas, terdapat pemanggilan kembali terhadap prosedur Z, sehingga prosedur di atas tidak akan pernah selesai dijalankan sebab begitu sampai pada baris terakhir dari prosedur, program akan kembali lagi ke awal prosedur. Yang terjadi adalah semacam perulangan tanpa perintah perulangan Pascal, dan perulangan dengan cara ini disebut dengan rekursi. Rekursi berlaku terhadap semua subprogram dalam Pascal, yaitu prosedur dan fungsi.
Dengan adanya rekursi ini, banyak
algoritma komputer menjadi lebih mudah dibuat programnya. Berikut ini adalah program
menghitung suku banyak Legendre, salah satu contoh perhitungan yang dapat
diselesaikan dengan menggunakan rekursi :
program Rekursi;
uses wincrt;
var
Jum_Suku, I : integer;
Bil_X : real;
function Legendre(X : real; N : integer) : real;
var
Suku_1, Suku_2 : real;
begin
if N = 0 then
Legendre := 1
else if N = 1 then
Legendre := X
else
begin
Suku_1 := ((2*N - 1) * (X * Legendre(X, N-1))) / N;
Suku_2 := ((N-1) * Legendre(X, N-2)) / N;
Legendre := Suku_1 + Suku_2;
end;
end;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Writeln('Menghitung Suku Banyak Legendre');
Writeln;
Write('Sampai suku ke : ');
Readln(Jum_Suku);
Write('Masukkan nilai X : ');
Readln(Bil_X);
Writeln;
end;
begin
ClrScr;
Awal;
Baca_Data;
for I := 0 to Jum_Suku do
begin
Writeln('Suku ke-',I:2,', Nilainya = ',Legendre(Bil_X, I):8:3);
end;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Untuk lebih jelas memahami program, jalankan program dengan F7. Perhatikan pula
apa yang dilakukan oleh fungsi Legendre. Amati perubahan variabel-variabel yang
terlibat dalam fungsi.
program Rekursi;
uses wincrt;
var
Jum_Suku, I : integer;
Bil_X : real;
function Legendre(X : real; N : integer) : real;
var
Suku_1, Suku_2 : real;
begin
if N = 0 then
Legendre := 1
else if N = 1 then
Legendre := X
else
begin
Suku_1 := ((2*N - 1) * (X * Legendre(X, N-1))) / N;
Suku_2 := ((N-1) * Legendre(X, N-2)) / N;
Legendre := Suku_1 + Suku_2;
end;
end;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Writeln('Menghitung Suku Banyak Legendre');
Writeln;
Write('Sampai suku ke : ');
Readln(Jum_Suku);
Write('Masukkan nilai X : ');
Readln(Bil_X);
Writeln;
end;
begin
ClrScr;
Awal;
Baca_Data;
for I := 0 to Jum_Suku do
begin
Writeln('Suku ke-',I:2,', Nilainya = ',Legendre(Bil_X, I):8:3);
end;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Untuk lebih jelas memahami program, jalankan program dengan F7. Perhatikan pula
apa yang dilakukan oleh fungsi Legendre. Amati perubahan variabel-variabel yang
terlibat dalam fungsi.
II.7 ARRAY DAN RECORD
Dalam bahasa Pascal, secara garis besar dikenal dua macam tipe data yaitu tipe data sederhana (primitive type) dan tipe data kompleks (complex type). Contoh tipe data sederhana adalah tipe numerik (integer dan real), tipe data karakter, tipe data boolean dan tipe data enumerasi. Contoh tipe data kompleks adalah string, array (larik), record dan object. Tipe data sederhana adalah tipe data yang hanya mampu menyimpan satu nilai tiap satu variabelnya. Sebaliknya tipe data kompleks adalah tipe data yang mampu menyimpan lebih dari satu nilai dalam tiap satu variabelnya. Dalam latihan ini hanya
akan dibahas dua tipe data kompleks yaitu array dan record.
1. A r r a y
Array adalah tipe data kompleks yang elemen-elemennya mempunyai tipe data yang sama. Jumlah elemen array bersifat tetap dan tidak bisa ditambah atau dikurangi setelah pendeklarasiannya. Tiap elemen mempunyai nomer indeks sendiri dan pengaksesan terhadap elemen array dilakukan dengan menunjukkan nomer indeks dari elemen yang akan diakses.
Cara pendeklarasian suatu variabel bertipe array adalah sebagai berikut :
Dalam bahasa Pascal, secara garis besar dikenal dua macam tipe data yaitu tipe data sederhana (primitive type) dan tipe data kompleks (complex type). Contoh tipe data sederhana adalah tipe numerik (integer dan real), tipe data karakter, tipe data boolean dan tipe data enumerasi. Contoh tipe data kompleks adalah string, array (larik), record dan object. Tipe data sederhana adalah tipe data yang hanya mampu menyimpan satu nilai tiap satu variabelnya. Sebaliknya tipe data kompleks adalah tipe data yang mampu menyimpan lebih dari satu nilai dalam tiap satu variabelnya. Dalam latihan ini hanya
akan dibahas dua tipe data kompleks yaitu array dan record.
1. A r r a y
Array adalah tipe data kompleks yang elemen-elemennya mempunyai tipe data yang sama. Jumlah elemen array bersifat tetap dan tidak bisa ditambah atau dikurangi setelah pendeklarasiannya. Tiap elemen mempunyai nomer indeks sendiri dan pengaksesan terhadap elemen array dilakukan dengan menunjukkan nomer indeks dari elemen yang akan diakses.
Cara pendeklarasian suatu variabel bertipe array adalah sebagai berikut :
Pada potongan program di
atas, maksudnya adalah sebagai berikut : variabel A berupa array dari integer
dengan jumlah elemen sebanyak 10, nomer indeks terkecil adalah 1 dan nomer
indeks terbesar adalah 10. Untuk mengakses elemen dari variabel A dapat
dilakukan dengan menunjukkan nomer indeks elemen A seperti ini :
contoh : A[1] := 10;
Untuk lebih memahami penggunaan array dalam program, perhatikan contoh
program di bawah ini :
program Fibonacci;
uses wincrt;
var
I : integer;
Data : array[1..10] of integer;
procedure Awal;
begin
Writeln('Praktikum DKP III : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Fibo;
begin
for I := 1 to 10 do
begin
if I < 3 then
Data[I] := I - 1
else
Data[I] := Data[I-1] + Data[I-2];
end;
Writeln('Deret Fibonacci suku ke-1 hingga suku ke-10 :');
for I := 1 to 10 do Write(Data[I]:3);
Writeln;
end;
begin
ClrScr;
Awal;
Fibo;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas, terutama cara mengakses variabel array pada prosedur
Fibo. Untuk lebih memahami jalannya program, jalankan program dengan F7 dan perhatikan perubahan elemen-elemen variabel Data yang berupa array. Jika program di atas telah dimengerti, buatlah program menghitung deret Fibonacci tetapi tidak menggunakan variabel array. Kemudian bandingkan dan perhatikan perbedaan kedua program tersebut. Array yang digunakan pada program di atas adalah array berdimensi tunggal atau array berdimensi satu. Dengan demikian, dapat pula dideklarasikan variabel array dengan dimensi lebih dari satu atau array berdimensi banyak. Berikut adalah cara mendeklarasikan array berdimensi dua :
Antara dimensi satu dengan dimensi lainnya dipisahkan oleh tanda koma (,), demikian juga untuk mendeklarasikan array berdimensi lebih dari dua. Cara mengakses elemen array juga tidak jauh berbeda dengan cara mengakses elemen array berdimensi satu, yaitu menggunakan nomer indeksnya. Contohnya sebagai berikut : A[2,3] := 10; artinya elemen yang terletak pada nomer 2 dimensi pertama dan nomer 3 dimensi kedua diisi dengan nilai 10. Array berdimensi dua ini banyak digunakan dalam perhitungan matrik, oleh sebab itu array berdimensi dua disebut juga dengan array matrik. Perhatikan contoh program berikut ini :
program Jumlah_Matrik;
uses wincrt;
const
Orde = 3;
type
Matrik = array[1..orde,1..orde] of integer;
var
M1, M2, H : matrik;
I, J : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 3 : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure JumlahMatrik(var Mat1, Mat2, MatHasil : matrik);
begin
for I := 1 to orde do
for J := 1 to orde do
MatHasil[I,J] := Mat1[I,J] + Mat2[I,J];
end;
procedure BacaData(var Mat : matrik);
begin
for I := 1 to orde do
for J := 1 to orde do
begin
Write('Nilai[',I,',',J,'] = ');
Readln(Mat[I,J]);
end;
end;
procedure TulisMatrik(var Mat : matrik);
begin
for I := 1 to orde do
begin
for J := 1 to orde do
begin
Write(Mat[I,J]:5);
end;
Writeln;
end;
end;
begin
ClrScr;
Awal;
Writeln('Isi matrik pertama :');
BacaData(M1);
Writeln;
Writeln('Isi matrik kedua :');
BacaData(M2);
Writeln;
JumlahMatrik(M1, M2, H);
Writeln('Penjumlahan matrik pertama dan kedua :');
TulisMatrik(H);
Writeln;
Write('Tekan Enter...');
Readln;
end.
Untuk lebih memahami penggunaan array dalam program, perhatikan contoh
program di bawah ini :
program Fibonacci;
uses wincrt;
var
I : integer;
Data : array[1..10] of integer;
procedure Awal;
begin
Writeln('Praktikum DKP III : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Fibo;
begin
for I := 1 to 10 do
begin
if I < 3 then
Data[I] := I - 1
else
Data[I] := Data[I-1] + Data[I-2];
end;
Writeln('Deret Fibonacci suku ke-1 hingga suku ke-10 :');
for I := 1 to 10 do Write(Data[I]:3);
Writeln;
end;
begin
ClrScr;
Awal;
Fibo;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas, terutama cara mengakses variabel array pada prosedur
Fibo. Untuk lebih memahami jalannya program, jalankan program dengan F7 dan perhatikan perubahan elemen-elemen variabel Data yang berupa array. Jika program di atas telah dimengerti, buatlah program menghitung deret Fibonacci tetapi tidak menggunakan variabel array. Kemudian bandingkan dan perhatikan perbedaan kedua program tersebut. Array yang digunakan pada program di atas adalah array berdimensi tunggal atau array berdimensi satu. Dengan demikian, dapat pula dideklarasikan variabel array dengan dimensi lebih dari satu atau array berdimensi banyak. Berikut adalah cara mendeklarasikan array berdimensi dua :
Antara dimensi satu dengan dimensi lainnya dipisahkan oleh tanda koma (,), demikian juga untuk mendeklarasikan array berdimensi lebih dari dua. Cara mengakses elemen array juga tidak jauh berbeda dengan cara mengakses elemen array berdimensi satu, yaitu menggunakan nomer indeksnya. Contohnya sebagai berikut : A[2,3] := 10; artinya elemen yang terletak pada nomer 2 dimensi pertama dan nomer 3 dimensi kedua diisi dengan nilai 10. Array berdimensi dua ini banyak digunakan dalam perhitungan matrik, oleh sebab itu array berdimensi dua disebut juga dengan array matrik. Perhatikan contoh program berikut ini :
program Jumlah_Matrik;
uses wincrt;
const
Orde = 3;
type
Matrik = array[1..orde,1..orde] of integer;
var
M1, M2, H : matrik;
I, J : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 3 : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure JumlahMatrik(var Mat1, Mat2, MatHasil : matrik);
begin
for I := 1 to orde do
for J := 1 to orde do
MatHasil[I,J] := Mat1[I,J] + Mat2[I,J];
end;
procedure BacaData(var Mat : matrik);
begin
for I := 1 to orde do
for J := 1 to orde do
begin
Write('Nilai[',I,',',J,'] = ');
Readln(Mat[I,J]);
end;
end;
procedure TulisMatrik(var Mat : matrik);
begin
for I := 1 to orde do
begin
for J := 1 to orde do
begin
Write(Mat[I,J]:5);
end;
Writeln;
end;
end;
begin
ClrScr;
Awal;
Writeln('Isi matrik pertama :');
BacaData(M1);
Writeln;
Writeln('Isi matrik kedua :');
BacaData(M2);
Writeln;
JumlahMatrik(M1, M2, H);
Writeln('Penjumlahan matrik pertama dan kedua :');
TulisMatrik(H);
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas. Terutama
cara mengakses isi array dua dimensi secara
berurutan seperti pada tiga prosedur terakhir.
berurutan seperti pada tiga prosedur terakhir.
2. R e c o r d
Record adalah tipe data kompleks yang elemen-elemennya boleh mempunyai tipe data yang berbeda. Record lebih kompleks daripada array karena record merupakan kumpulan beberapa variabel dengan tipe data yang berbeda. Berbeda dengan array yang tiap elemennya ditandai dengan nomer indeks maka record ditandai dengan nama variabel anggotanya. Cara mengakses elemen dari record dilakukan dengan menyebutkan nama variabel anggota setelah menyebutkan nama record yang akan diakses. Di antara nama record dan nama variabel anggota dipisahkan tanda titik (.).
Untuk lebih memahami penggunaan record dalam program, perhatikan contoh
berikut ini :
program Jumlah_Kompleks;
uses wincrt;
Type
Kompleks = record
bil_real : integer;
bil_imaj : integer;
end;
var
K1, K2, H : kompleks;
procedure Awal;
begin
Writeln(' Latihan Pascal 3 : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure JumlahKompleks(var Komp1, Komp2, KompHasil : kompleks);
begin
KompHasil.bil_real := Komp1.bil_real + Komp2.bil_real;
KompHasil.bil_imaj := Komp1.bil_imaj + Komp2.bil_imaj;
end;
procedure BacaData(var Komp : kompleks);
begin
Write('Bilangan real : ');
Readln(Komp.bil_real);
Write('Bilangan imajiner : ');
Readln(Komp.bil_imaj);
end;
procedure TulisKompleks(var Komp : kompleks);
begin
Write('(',Komp.bil_real:3,' + ',Komp.bil_imaj:3,'i)');
end;
begin
ClrScr;
Awal;
Writeln('Isi bilangan kompleks pertama :');
BacaData(K1);
Writeln;
Writeln('Isi bilangan kompleks kedua :');
BacaData(K2);
Writeln;
JumlahKompleks(K1, K2, H);
Writeln('Penjumlahan bilangan kompleks pertama dan kedua :');
TulisKompleks(K1);
Write(' + ');
TulisKompleks(K2);
Write(' = ');
TulisKompleks(H);
Writeln;
Writeln;
Write('Tekan Enter...');
Readln;
Record adalah tipe data kompleks yang elemen-elemennya boleh mempunyai tipe data yang berbeda. Record lebih kompleks daripada array karena record merupakan kumpulan beberapa variabel dengan tipe data yang berbeda. Berbeda dengan array yang tiap elemennya ditandai dengan nomer indeks maka record ditandai dengan nama variabel anggotanya. Cara mengakses elemen dari record dilakukan dengan menyebutkan nama variabel anggota setelah menyebutkan nama record yang akan diakses. Di antara nama record dan nama variabel anggota dipisahkan tanda titik (.).
Untuk lebih memahami penggunaan record dalam program, perhatikan contoh
berikut ini :
program Jumlah_Kompleks;
uses wincrt;
Type
Kompleks = record
bil_real : integer;
bil_imaj : integer;
end;
var
K1, K2, H : kompleks;
procedure Awal;
begin
Writeln(' Latihan Pascal 3 : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure JumlahKompleks(var Komp1, Komp2, KompHasil : kompleks);
begin
KompHasil.bil_real := Komp1.bil_real + Komp2.bil_real;
KompHasil.bil_imaj := Komp1.bil_imaj + Komp2.bil_imaj;
end;
procedure BacaData(var Komp : kompleks);
begin
Write('Bilangan real : ');
Readln(Komp.bil_real);
Write('Bilangan imajiner : ');
Readln(Komp.bil_imaj);
end;
procedure TulisKompleks(var Komp : kompleks);
begin
Write('(',Komp.bil_real:3,' + ',Komp.bil_imaj:3,'i)');
end;
begin
ClrScr;
Awal;
Writeln('Isi bilangan kompleks pertama :');
BacaData(K1);
Writeln;
Writeln('Isi bilangan kompleks kedua :');
BacaData(K2);
Writeln;
JumlahKompleks(K1, K2, H);
Writeln('Penjumlahan bilangan kompleks pertama dan kedua :');
TulisKompleks(K1);
Write(' + ');
TulisKompleks(K2);
Write(' = ');
TulisKompleks(H);
Writeln;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di
atas. Untuk lebih jelasnya, jalankan program dengan F7
sehingga akan terlihat urutan jalannya program. Perhatikan pula bagaimana cara
mengakses elemen record seperti pada prosedur JumlahKompleks.
sehingga akan terlihat urutan jalannya program. Perhatikan pula bagaimana cara
mengakses elemen record seperti pada prosedur JumlahKompleks.
BAB
III PENUTUP
III.1 KESIMPULAN
Pascal adalah bahasa pemrograman
yang pertama kali di buat oleh Profesor Niklaus Wirth, seorang anggota
International Federation of Information Processing (IFIP) pada tahun 1971.
Dengan mengambil nama dari matematikawan Perancis, Blaise Pascal, yang pertama kali
menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini
sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu,
Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi
kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu.
Bahasa Pascal adalah bahasa pemrograman tingkat tinggi
(high level language) yang cukup populer, khususnya di Indonesia. Hal ini
disebabkan bahasa Pascal lebih mudah dipahami dibanding bahasa pemrograman
lainnya, seperti bahasa C, bahasa assembler, dan lain sebagainya. Selain itu,
bahasa Pascal adalah bahasa pemrograman yang terstruktur dan lebih mendekati
bahasa manusia (bahasa Inggris) sehingga sangat cocok diterapkan dalam dunia
pendidikan. Dalam latihan ini, digunakan compiler FreePascal
(www.freepascal.org) yang bersifat open source dan tersedia di banyak operating
system (DOS, Windows, Linux, Macintosh, FreeBSD, dan lain sebagainya).
Sebelum mempelajari pemrograman dengan bahasa Pascal,
sebaiknya mengerti terlebih dahulu tentang konsep dan teknik pemrograman.
Konsep pemrograman adalah bentuk dasar dari suatu program yaitu algoritma
program. Algoritma adalah urutan proses yang dilakukan oleh sebuah program,
umumnya algoritma ini berbentuk flowchart (diagram alir). Teknik pemrograman
adalah cara mengubah suatu algoritma menjadi program yang sebenarnya dengan
bahasa pemrograman tertentu. Konsep dan teknik pemrograman adalah dasar dari
pemrograman komputer, dengan menguasai kedua hal tersebut maka mempelajari
pemrograman menjadi lebih mudah.
Kelebihan dari bahasa pemrograman Pascal adalah:
Tipe Data Standar, tipe-tipe data standar yang
telah tersedia pada kebanyakan bahasa pemrograman. Pascal memiliki tipe
data standar: boolean, integer, real,
char, string,
User defined Data Types, programmer
dapat membuat tipe data lain yang diturunkan dari tipe data standar.
Strongly-typed, programmer harus menentukan
tipe data dari suatu variabel, dan variabel tersebut tidak dapat dipergunakan
untuk menyimpan tipe data selain dari format yang ditentukan.
Terstruktur, memiliki sintaks yang memungkinkan
penulisan program dipecah menjadi fungsi-fungsi kecil (procedure dan function)
yang dapat dipergunakan berulang-ulang.
Sederhana dan Ekspresif, memiliki
struktur yang sederhana dan sangat mendekati bahasa manusia (bahasa Inggris)
sehingga mudah dipelajari dan dipahami.
Bahasa PASCAL juga merupakan bahasa yang digunakan
sebagai standar bahasa pemrograman bagi tim nasional Olimpiade Komputer
Indonesia (TOKI).
Selain itu, Bahasa PASCAL masih digunakan dalam IOI (International Olympiad
in Informatics).
DAFTAR
PUSTAKA
munir,Rinaldi.2002.Algoritma dan Pemrograman.Bandung:Informatika.
0 komentar:
Posting Komentar