.8/,$+
35$.7,.80
Francis Y Rumlawang
Gysber J. Tamaela
Silvert Tahalea
1 PENDAHULUAN
Kompetensi Dasar:
1. Mahasiswa mampu memahami pengertian bahasa pemrograman, algoritma,
flowchart dan pseudocode
2. Mahasiswa dapat membuat algoritma dan flowchart dari sebuah permasalahan
sederhana
S
ekarang ini komputer bukan lagi sebuah barang langka, mahal dan berkesan
eksklusif. Setiap bidang kehidupan manusia sekarang ini memerlukan
bantuan dan campur tangan komputer sebagai alat bantu dalam pemecahan
masalah. Ini disebabkan karena kemampuan manusia itu sendiri terbatas.
Tetapi komputer tidak begitu saja langsung dapat menyelesaikan masalah yang
diberikan. Pemakai komputer (user) itu sendiri yang harus merumuskan langkah-
langkah penyelesaian masalah itu dalam suatu runtunan perintah atau instruksi.
Kemudian instruksi-instruksi itu akan dikerjakan oleh komputer. Kelebihan dari
komputer dibandinglan dengan manusia adalah karena komputer memiliki kecepatan,
keakuratan dan bahkan dapat melakukannya berulang-ulang tanpa lelah. Kumpulan
instruksi itu yang dinamakan program.
Di lain pihak jika ditinjau dari urutan langkah penyelesaian masalah, maka bahasa
pemrograman dapat dibagi diantaranya dalam bahasa pemrograman prosedural
(Cobol, Basic, Pascal, Fortran dan C), bahasa pemrograman berorientasi obyek (C++,
Visual Basic, Delphi).
Sebelum kita masuk lebih dalam mengenai struktur dari bahasa pemrograman Pascall
ada baiknya kita mempelajari sedikit mengenai Algoritma , Flowchart dan Pseudocode,
dan sejarah singkat Pascal.
I.2. Algoritma
Kata algoritma sendiri menjadi pertentangan diantara para ahli bahasa. Akhirnya para
ahli sejarah matematika menemukan bahwa kata algorithm (algorism) berasal dari
nama penulis buku Kitab al jabar wal-muqabala, Abu Ja’far Muhammad ibnu Musa
al-Khuwarzimi (al-Khuwarsimi dibaca oleh orang Barat menjadi algorism).
Contoh 1.1:
Langkah – langkah untuk menulis dan mengirimkan surat:
1. Persiapkan kebutuhan: kertas, pena, amplop, perangko dan lem.
2. Mulai menulis
3. Masukkan kertas surat ke dalam amplop
4. Tempel perangko dan tulis nama dan alamat tujuan surat dan pengirim
5. Tutup dan rekatkan amplop
6. Pergi ke kantor pos untuk mengirim surat
Langkah ke-1 sampai ke-6 diatas yang kita sebut algoritma. Jika kita perhatikan, maka
setiap langkah memiliki nilai ketergantungan satu sama lain. Misalnya langkah ke-2
tidak dapat dilakukan tanpa melakukan langkah ke-1. Begitupun langkah ke-3 terhadap
langkah ke-2. Tetapi langkah ke-4 dapat dilakukan tanpa melalui langkah ke-2 dan ke-
3. Artinya dalam membuat urutannya, langkah ke-4 dapat diubah menjadi langkah ke-
2.
Kasus yang lain, misalnya kita bisa memilih untuk menulis surat dengan menggunakan
kertas surat atau kertas tulis biasa. Kemudian kita juga bisa memilih antara
mengantarkan surat ke Kantor Pos secara langsung atau cukup ke Bis Surat yang
sudah disediakan di jalan. Hal ini yang kita sebut percabangan.
Contoh 1.2:
Misalkan akan dihitung luas lingkaran. Rumus dari luas lingkaran adalah:
L = π.r2
dimana: L = Luas lingkaran yang dicari, π = konstanta (3.14) dan r = jari-jari. Masukan
dalam algoritma ini hanya satu yaitu jari-jari (r). Maka algoritma untuk menghitung luas
lingkaran adalah sebagai berikut:
1. Masukkan panjang jari-jari lingkaran (r)
2. Tentukan nilai dari π (π ← 3,14)
3. Hitung luas lingkaran dengan menggunakan rumus L ←πr2
4. Tulis L
Tanda “← “ berarti nilai di sebelah kanan diberikan kepada operan yang disebelah kiri.
Langkah ke-1 dari algoritma di atas meminta pengguna memasukkan nilai dari jari-jari
dan nilainya disimpan dalam variable r. Pada langkah ke-2 nilai 3,14 disimpan dalam
variable π. Langkah ke-3 adalah untuk menghitung luas lingkaran, dan hasilnya
disimpan dalam variable L. Langkah terakhir dipakai untuk menampilkan nilai L.
Dari algoritma dalam Contoh 1.2, adakah langkah yang dapat dipertukarkan (tidak
saling tergantung)?
Dalam pembuatan flowchart tidak ada rumus atau patokan yang bersifat mutlak.
Karena flowchart merupakan gambaran hasil pemikiran dalam menganalisa suatu
masalah dengan komputer. Sehingga flowchart yang dihasilkan dapat bervariasi antara
satu pemrogram dengan yang lainnya.
Namun secara garis besar setiap pengolahan selalu terdiri dari 3 bagian utama, yaitu:
Masukan (Input),
Proses pengolahan dan
Keluaran (Output)
Masukan Keluaran
(Bahan mentah) Proses (Bahan Jadi)
Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart, namun
ada beberapa anjuran:
Mulai A
Masukkan Tulis L
jari-jari (r)
Selesai
π ← 3,14
L=π*r*r
Mulai A
Siapkan alat
tulis menulis Surat sudah Tidak
B
benar?
B
Ya
Menulis surat
Masukkan ke
dalam amplop
Periksa isi
surat
Pergi ke
Kantor Pos
A
Selesai Gambar 1.4.
Flowchart dari Menulis Surat
Pada Contoh 1.5 dan Contoh 1.6 berikut akan diberikan pseudocode dari algoritma
untuk mencari jenis akar-akar dari sebuah persamaan kuadrat sebagai implementasi
dari percabangan, dan algoritma Euclidian untuk mencari Faktor Persekutuan Terbesar
(FBP) dari 2 buah bilangan, sebagai implementasi perulangan.
Contoh 1.5:
Bentuk umum persamaan kuadrat adalah : Ax2 + Bx + C = 0
Sehingga dapat didefinisikan
Masukan : A,B, dan C (koefisien persamaan)
Keluaran : Jenis akar-akar persamaan, imajiner, real dan sama, real dan
berlainan
Langkah-langkah :
1. Masukkan A, B, C
2. D ← B^2 – 4*A*C
3. Jika D < 0, maka Tulis “Akar-akar Imajiner”, jika tidak
Jika D = 0, maka Tulis “Akar-akar Real dan Sama”, jika tidak
Tulis “Akar-akar Real dan Berlainan” {output}
4. Selesai
Contoh 1.6:
Masukan : 2 buah bilangan bulat positif, m dan n (m ≥ n)
Keluaran : FPB
Langkah-langkah :
1. Masukkan m dan n
2. p ← m mod n
3. Jika p = 0, maka Tulis “FPB dari m dan n adalah n”, lompat ke langkah ke-9
4. Jika tidak, maka
5. m ← n
6. n ← p
7. Ulangi mulai langkah ke-2, sampai p = 0
8. Tulis “FPB dari m dan n adalah n”
9. Selesai
2. Tulislah sebuah algoritma dan buatlah flowchart-nya untuk mencari panjang sisi
miring dari sebuah segiitiga.siku-siku! Input-nya adalah panjang sisi alas dan
tegak, sementara output-nya adalah panjang sisi miring segitiga
Kompetensi Dasar:
1. Mahasiswa mengenal Free Pascal.
2. Mahasiswa mengetahui kelebihan dan kekurangan Free Pascal dibandingkan
dengan compiler yang lain.
S
ebelum masuk lebih jauh untuk mengenal tentang struktur bahasa Pascal,
maka bab ini baiknya kita awali dengan penjelasan tentang bahasa Pascal
dan pengenalan compiler Free Pascal.
Niklaus Wirth lahir di Winterthur-Swiss, Februari 1934. Setelah lulus dari Swiss Federal
Institute of Technology jurusan Teknik Elektro tahun 1959, kemudian ia meraih gelar
M.Sc. dari Laval University, Kanada tahun 1960 dan Ph.D. University of California at
Berkeley tahun 1963. Ia menjadi Asisten Profesor Ilmu Pengetahuan Komputer di
Universitas Stanford (1963 - 1967) dan kemudian di Universitas Zurich. Di tahun 1968
ia menjadi seorang Profesor Informatics pada Zurich.
Ketidakpuasan terhadap bahasa pemrograman Algol dan Fortran saat itu disebabkan
kekakuan dan minimnya sintak yang digunakan untuk menemukan kesalahan dan
inkonsistensi analisa algoritma, memicu Niklaus Wirth untuk menciptakan suatu
bahasa pemrograman yang dapat memenuhi kebutuhan dari suatu disain sistem
Pada Tab Menu FILE terdapat beberapa sub menu, antara lain:
New, untuk membuka editor baru pada IDE Free Pascal.
New from template, untuk menggunakan template yang sudah tersedia.
Open, untuk menggunakan file yang pernah dikerjakan sebelumnya.
Reload
Save, untuk menyimpan program ke dalam file.
Save as, untuk menyimpan file yang sama dengan nama yang lain.
Save all, (sama seperti save).
Print, untuk mencetak file.
Print setup, untuk mengatur (setting) printer.
Change dir, untuk menentukan lokasi (folder) tempat kerja (menyimpan file).
Command Shell, untuk melakukan perintah dengan DOS.
2.5.2 EDIT
Pada Tab Menu EDIT terdapat beberapa sub menu, antara lain:
Undo, perintah untuk mengembalikan program pada kondisi sebelumnya.
Redo, perintah untuk mengembalikan program pada kondisi berikutnya (jika
telah di-undo).
2.5.3 SEARCH
Pada Tab Menu SEARCH terdapat beberapa sub menu, antara lain:
Find, untuk mencari teks yang ada pada editor program.
Replace, untuk mencari teks yang ada pada editor dan menggantinya dengan
teks yang lain.
Search again, untuk mencari teks yang ada pada editor (lagi).
Go to line number, untuk menuju baris tertentu pada editor.
Find procedure
Objects
Modules
Globals
Symbols
2.5.5 COMPILE
2.5.7 HELP
Menu Help pada Free Pascal merupakan bagian terpisah dari compiler Free
Pascal, sehingga harus di-download secara terpisah. Dokumen tersebut dapat di-
download dari link dibawah ini:
http://www.freepascal.org/down/docs/docs.html
Kompetensi Dasar:
1. Mahasiswa mengenal tipe-tipe data, operator, derajat operator dalam bahasa
Pascal
2. Mahasiswa dapat menulis program dengan menggunakan tipe data serta
operator yang tepat.
BEGIN
statement1;
statement2;
statement3;
Pernyataan
...
END.
Judul program bebas ditentukan namanya oleh programmer. Nama program ditulis
setelah kata program dan harus selalu diakhiri dengan tanda titik koma (;). Apabila
judul tersusun lebih dari satu kata yang masing-masing terpisah oleh spasi maka
antar kata tersebut harus dihubungkan dengan garis sambung bawah ( _ ) tanpa
spasi.
Hasil Benar
No_Siswa Benar
Bab3 Benar
7_kali Salah karena diawali angka
H&R Salah karena mengandung simbol khusus, &
H R Salah karena mengandung spasi
3.3. Deklarasi
Bagian deklarasi digunakan bila dalam program dipakai pengenal (identifier).
Pengenal dapat berupa label, konstanta, tipe, variabel, prosedur dan fungsi. Apabila
suatu program memakai pengenal, maka Pascal menuntut supaya pengenal
tersebut dideklarasikan atau diperkenalkan dulu kepada Pascal sebelum digunakan.
Sebagai contoh, apabila suatu program hanya akan memakai label dan variabel
maka pendeklarasian juga hanya dibuat untuk label dan variabel saja, sementara
label, konstanta, prosedur dan fungsi tidak perlu dibuat pendeklarasiannya. Jadi
disesuaikan dengan keperluan program.
Penjelasan program:
Bila program dieksekusi maka akan diperoleh keluaran sebagai berikut :
OUTPUT
Hallo
Kabar baik ?
Sampai jumpa
begin
writeln(RubahString(‘perubahan string’));
end.
begin
geser(7);
end.
readln(usia);
Merupakan nama pengenal variablel
yang akan menampung sementara data
keluaran usia
Perhatikan bahwa nama pengenal variabel harus diletakkan dalam kurung ( ). Aturan
yang sama diterapkan jika akan dipakai pernyataan read. Perbedaan antara
pernyataan read dan readln adalah perilakunya seusai pernyataan tersebut
dijalankan, yaitu untuk pernyataan readln, seusai membaca data maka kursor akan
turun satu spasi ke bawah, sedangkan pernyataan read tidak. Perbedaan ini terutama
harus diperhatikan manakala data masukan dibaca dari sebuah file. Jika data dalam
file tersimpan secara horisontal maka harus dibaca dengan pernyataan read,
sedangkan jika data dalam file tersimpan secara vertikal maka harus dibaca dengan
pernyataan readln. Contoh akan diberikan bersamaan dengan pernyataan write
dan writeln.
Pernyataan readln; akan memberi hasil ekseskusi yang berbeda dengan penjabaran
di atas. Pernyataan readln; akan menahan layar hasil sampai ditekannya tombol
[enter]. Dengan demikian seusai menekan tombol eksekusi anda tidak akan langsung
kembali ke layar listing program akan tetapi bisa langsung melihat hasil eksekusi di
layar hasil dan jika ingin kembali ke layar listing program, cukup dengan menekan
tombol [Enter]. Bila pernyataan ini tidak dipakai maka untuk melihat hasil eksekusi
program, anda harus menekan tombol [Alt] [F5] terlebih dahulu.
writeln(total);
Merupakan nama pengenal variabel yang
akan menampilkan data dalam variabel
pengenal total
Perhatikan bahwa nama pengenal variabel penampung hasil perhitungan yang akan
ditampilkan hasilnya di layar harus diletakkan dalam kurung ( ). Selain itu pernyataan
write dan writeln dapat pula dipakai untuk menampilkan tulisan pada layar
dengan cara sebagai berikut :
Aturan yang sama diterapkan jika akan dipakai pernyataan writeln. Perbedaan
antara pernyataan write dan writeln adalah perilakunya seusai pernyataan
tersebut dijalankan, yaitu untuk pernyataan writeln, seusai menuliskan di layar
maka kursor akan turun satu spasi ke bawah, sedangkan pernyataan write tidak.
Perhatikan posisi kursor di layar jika anda mencobanya di komputer. Perbedaan ini
juga harus diperhatikan manakala pernyataan write ataupun writeln dipakai
untuk menyimpan data ke dalam sebuah file.
Contoh 3.5:
PROGRAM
program Contoh_Keluaran;
var
Nama:string;
begin
write(‘Sebutkan namamu ‘);
read(nama);
writeln;
writeln(‘Oo...namamu ‘,nama);
readln;
end.
Penjelasan program:
Bila program dieksekusi maka akan diperoleh tampilan sebagai berikut :
OUTPUT
Sebutkan namamu _
Masukan data nama yang diketikkan akan ditampung sementara dalam variabel
nama.
write(‘Oo...namamu ‘,nama);
Oleh sebab itu ketika dipanggil variabel nama dalam pernyataan akan tercetak
tulisan dan isi data yang tertampung dalam variabel nama. Perhatikan bahwa
antara tulisan yang akan ditampilkan dan variabel nama cukup dipisah oleh tanda
koma. Kini gantilah setiap write dengan writeln dan read dengan
readln. Amati tampilannya hingga anda cukup mengerti cara kerja pernyataan-
pernyataan ini.
write(I:n)
Secara default ddd untuk data berupa bilangan desimal adalah 18 digit berbentuk
eksponensial.
bd.dddddEsdd
dengan b = blank jika desimal positif dan tanda − jika desimal negatif
d = digit
s = tanda positif atau negatif
E = menyatakan 10 pangkat dengan eksponennya adalah sdd
Ingat bahwa aturan dalam Pascal, tanda koma dalam bilangan desimal harus diganti
titik. Tampilan seperti ini kurang bagus dan memerlukan ruang yang cukup lebar. Akan
sangat baik bila diformat dengan cara sebagai berikut :
write(I:n:m)
program Contoh_Keluaran;
var
I:byte;
K:real;
begin
for I:= 1 to 3 do
begin
write(I:5);
K:=sqrt(I);
writeln(K:6:3);
end;
readln;
end.
Penjelasan program:
Dalam program di atas, variabel K akan menampung hasil akar 2 dari isi data
dalam variabel I. Dengan demikian apabila program ini dieksekusi maka akan
diperoleh keluaran pada layar sebagai berikut :
OUTPUT
1 1
2 1.414
3 1.732
Kini yang perlu anda cari jawabnya adalah dalam penformatan bilangan desimal dapat
diatur jumlah angka di belakang koma. Pertanyaannya: apakah angka terakhir hasil
penformatan anda merupakan hasil pembulatan ataukah bukan hasil pembulatan
mengingat setiap bilangan desimal secara default memiliki panjang 18 digit.
1. Tulislah sebuah program untuk menghitung luas dan keliling dari sebuah
persegi panjang, dengan masukan adalah panjang dan lebar dari persegi
panjang tersebut, dan keluarannya berupa luas dan kelilingnya.
3. Umur Julio adalah 12 tahun, 3 bulan, 15 hari. Bila 1 tahun = 365 hari dan 1
bulan = 30 hari, berapakah umur Julio dalam satuan jam, menit dan detik?
Tulislah programnya!
Kompetensi Dasar:
1. Mahasiswa mampu memahami tipe-tipe data, operator, derajat operator dalam
bahasa Pascal
2. Mahasiswa dapat menulis program dengan menggunakan tipe data serta operator
yang tepat.
S
alah satu bagian terpenting dalam pemrograman adalah kemampuan
program untuk menangani berbagai macam jenis atau tipe data. Apabila kita
mendeklarasikan variabel, maka kita harus menentukan tipenya. Tipe ini
menentukan nilai yang dapat disimpan variabel tersebut dan operator-operator apa
yang dapat dikenakan padanya. Ada banyak tipe data dalam bahasa pemrograman,
tetapi di sini hanya akan dibahas 3 macam tipe data yaitu:
1. Tipe data sederhana:
a. Standar
i. Integer (Bulat)
ii. Real
iii. Char (Karakter)
iv. Boolean
b. User Define
i. Terbilang
ii. Subjangkauan
2. Tipe data string (kumpulan karakter)
3. Tipe data terstruktur
a. Sets (Himpunan)
b. Array (Larik)
c. Record (Rekaman)
Tipe data-tipe data yang lain yang tidak akan dibahas dalam buku ini adalah: tipe data
pointer, tipe data prosedural dan tipe data objek.
Contoh 4.1:
5 div 2 akan memberikan hasil 2
11 div 4 akan memberikan hasil 3
Karena selalu berupa bilangan bulat, maka tipe data integer biasa digunakan
sebagai pencacah (counter).
Ada beberapa macam tipe data integer yang ada pada bahasa Pascal, yang secara
lengkap dapat dilihat pada Tabel 4.1 berikut.
Tabel 4.1. Macam-macam tipe data Integer
Jangkauan di sini merupakan batasan, dan jika melebihi batasan yang telah ditetapkan
maka akan terjadi overflow.
Cara mendeklarasikan tipe data integer pada Bahasa Pascal adalah sebagai
berikut:
var
x, y, : integer;
z : word;
4.1.2. Real
Konstanta tipe data real adalah bilangan yang mengijinkan tanda desimal, hingga
bentuknya dapat berupa pecahan. Bilangan real juga dapat dideklarasikan dalam
bentuk eksponensial.
Contoh 4.2:
Bilangan 0.00335 adalah 3.35E-2. Artinya 0,00335 = 3,35 x 10 –2
Operator yang dapat digunakan pada tipe data real ini sama dengan operator yang
digunakan pada tipe data integer. Kecuali pada operator pembagian yang
dinyatakan dengan tanda “/”.
Dalam perhitungan-perhitungan matematis, sains dan rekayasa, dimana membutuhkan
derajat ketelitian yang tinggi, maka banyak dipakai tipe data real. Kesalahan yang
mungkin akan terjadi adalah karena tipe data real memiliki cacah digit yang tetap.
Padahal beberapa bilangan memiliki cacah digit yang tak terhingga.
Macam-macam tipe data real yang terdapat dalam bahasa Pascal dapat dilihat pada
Tabel 4.2.
Tabel 4.2. Macam-macam tipe data Real
Cara mendeklarasikan tipe data real pada bahasa Pascal adalah sebagai berikut:
var
x, y, : real;
z : double;
Huruf capital/besar A, B, C, …, X, Y, Z
Huruf kecil a, b, c, ….., x, y, z
Digit 0, 1, 2, 3, …., 8, 9
Operator aritmetika +, - , *, /
Spasi
Simbol-simbol khusus $, @, [, ], (, ), %
Dalam pemrograman, nilai rinci tipe data char ditulis di antara tanda petik, misalnya
‘C’, ‘9’, ‘,’.
4.1.4. Boolean
Tipe data Boolean hanya memiliki 2 nilai yaitu true/benar dan false/salah. Operator
yang dipakai pada tipe data ini adalah operator–operator logika seperti and, or dan
not. Tipe data ini sangat penting, terutama untuk suatu pengambilan keputusan dalam
program. bahasa Pascal menyediakan 4 macam tipe Boolean seperti yang tergambar
dalam Tabel 3.3.
Tabel 4.3. Macam-macam tipe data Boolean
Tipe Ukuran
Boolean 1 byte
ByteBool 1 byte
WordBool 2 byte (1 word)
LongBool 4 byte (2 word)
Dari keempat tipe di atas, yang paling sering digunakan adalah tipe Boolean. Tipe
Boolean yang lain seperti ByteBoll, WordBool dan LongBool, hanya disediakan
bahasa Pascal untuk kompatibilitas dengan pemrograman Windows.
Cara mendeklarasikan tipe data boolean pada Bahasa Pascal adalah sebagai
berikut:
var
b1 : boolean;
type
TipeHari = (Minggu, Senin, Selasa,
Rabu, Kamis, Jumat, Sabtu);
Contoh di atas memberikan nama Minggu pada 0, Senin pada 1, Selasa pada 2 dan
seterusnya.
Dengan pendeklarasian TipeHari seperti contoh di atas, maka tidak perlu lagi untuk
menggunakan angka 0,1,2,…,6 untuk merepresentasikan hari. Sebagai contoh, jika
kita memiliki variable Hari yang bertipe TipeHari:
var
Hari : TipeHari;
type
Bulan : 1..12;
mendeklarasikan tipe Bulan yang memiliki jangkauan 1 sampai dengan 12. Dengan
demikian jika kita memiliki variable bertipe Bulan seperti berikut,
var
Januari: Bulan;
Cara mendeklarasikan tipe data string pada bahasa Pascal adalah sebagai berikut:
var
kalimat: string;
Pemberian nilai pada string dilakukan dengan meletakan untaian karakter di antara
tanda petik tunggal seperti di atas.
kalimat:= ‘Matematika’;
Untuk membedakan nilai yang mengandung karakter ‘ pada satu string, maka harus
ditulis karakter “ ”
Sering timbul persoalan dalam menetapkan jenis data yang mempunyai tipe integer
dan string. Seperti misalnya Nomor Induk Mahasiswa (NIM) 1293100015 dapat
diperlakukan sebagai integer jika akan dipakai dalam operasi aritmetika. Tetapi jika
hanya untuk ditampilkan saja, maka dapat digunakan tipe data string.
Fungsi dan prosedur lain yang dapat dikenakan pada tipe data string diantaranya
adalah length, copy, delete.
Cara mendeklarasikan tipe data himpunan pada bahasa Pascal adalah sebagai
berikut:
type
HimpunanKarakter = set of char;
var
Vokal: HimpunanKarakter;
Huruf: HimpunanKarakter;
Pemberian nilai pada tipe himpunan dilakukan dengan menuliskan anggota himpunan
dalam kurung siku ([ dan ]).
Vokal:= [‘A’,’I’,’U’,’E’,’O’]
Huruf:= [‘A’..’Z’]
4.4. Operator
Pada dasarnya ada tujuh macam operator pada Bahasa Pascal, yaitu:
1. Operator pemberian nilai
2. Operator aritmetika
3. Operator pemanipulasi bit
4. Operator boolean
5. Operator pembanding
6. Operator himpunan
7. Operator string
A := 5;
phi := 3.14;
x := ‘Matematika’;
Turbo Pascal mengenal 2 macam operator aritmetika, yaitu operator aritmetika tunggal
dan operator aritmetika biner. Perbedaan keduanya terletak pada jumlah operan. Pada
operator aritmetika tunggal, jumlah operan yang digunakan hanya satu, sementara
pada operator aritmetika biner, jumlah operan yang digunakan lebih dari satu.
Ada 2 macam operator aritemetika tunggal dalam Turbo Pascal seperti terlihat dalam
Tabel 4.4.
Tabel 4.4. Operator aritemetika tunggal
Sementara itu ada 6 macam operator aritemetika biner pada Turbo Pascal seperti
terlihat dalam Tabel 4.5.
or Logika or x:= 1 or 0; 1
shl Penggeseran bit ke kiri x:= y shl 2; Bit variable y digeser ke kiri 2 bit
shr Penggeseran bit ke kanan x:= b shr 5; Bit variable b digeser ke kanan 5 bit
Sederhana
= Sama dengan Himpunan a:= 5 = 6 a = False
String
Sederhana
<> Tidak sama dengan Himpunan a:= 5 <> 6 a = True
String
Sederhana
< Kurang dari a:= 5 < 6 a = True
String
Sederhana
> Lebih dari a:= 5 > 6 a = False
String
Sederhana
<= Kurang dari atau sama dengan a:= 5 <= 6 a = True
String
Sederhana
>= Lebih dari atau sama dengan a:= 5 >= 6 a = False
String
Operator Operasi
+ Union
_ Selisih
* Interseksi
in Anggota dari
Contoh 10:
x:= 2 + 3 * 4;
Secara matematis kita dapat katakan bahwa langkah pengerjaannya adalah x:= 2 +
(3*4) = 14, karena perkalian memiliki derajat yang lebih besar dari penjumlahan.
Tetapi komputer tidak dapat melaksanakannya begitu saja. Oleh sebab itu perlu dibuat
sebuah mekanisme dan aturan yang mengatur derajat dari setiap operator. Karena
seperti yang telah dijelaskan di atas, komputer akan mengerjakan instruksi yang
Gambar 4.1. akan menggambarkan derajat dari operator-operator mulai dari operator
dengan derajat tertinggi
not
+ – or xor
Apapun yang diapit tanda kurung pembingkai komentar program tidak akan pernah
dieksekusi. Komentar yang ditulis biasanya merupakan catatan programer tentang
pernyataan di samping komentar tersebut.
begin
x:= 40;
y:= 30;
z:= x*y;
end.
begin
a:= ‘12’;
b:= ‘4’;
c:= 48;
x:= a + b;
y:= ord(b) + c;
z:= b + chr(c);
end.
x:= a + b shl 2 * c;
y:= c * b mod a;
z:= b shl a div c;
end.
begin
a:= 3;
b:= 4;
c:= 5;
x:= a and b or c;
y:= a shl (b and c) shr (b or c);
z:= a or (b shr 2) or (c shl 1);
end.
begin
a:= true;
b:= false;
c:= true;
d:= false;
C:= A + B;
D:= A – B;
E:= A * B;
x:= ‘G’ in A;
y:= C <= A;
z:= D <= A;
end.
8. Tulislah program untuk menampilkan jumlah hari, jam, menit, dan detik dari
masukkan yang berupa lamanya waktu dalam detik. Sebagai contoh, masukkan
100.000 detik akan menghasilkan: 1hari, 3 jam, 46 menit dan 40 detik.
10. Tulislah program untuk menghitung ppanjang sisi a dari segitiga ABC apabila
pengguna memasukan nilai b, c, dan α.
Masukan dalam program ini adalah 3 bilangan real, yaitu b, c dan alpha.
Keluaran dari program ini adalah bilangan real yaitu panjang sisi a!
b a
α
A c B
Kompetensi Dasar:
1. Mahasiswa mampu memahami algoritma percabangan dan penulisannya dalam
bahasa Pascal
2. Mahasiswa dapat menulis program yang mengandung permasalahan percabangan.
P
ada bab ini, akan dipelajari salah satu elemen algoritma yang paling
sederhana, yaitu percabangan. Pernyataan percabangan memungkinkan
suatu pernyataan dieksekusi hanya jika suatu kondisi terpenuhi atau tidak
terpenuhi.
Di dalam program, adakalanya suatu aksi hanya dilakukan bila memenuhi persyaratan
atau kondisi tertentu. Jadi dalam memecahkan masalah, kita harus menganalisis
kasus-kasus apa saja yang mungkin ada.
Sebagai contoh, kita ingin menentukan kuadran sebuah titik P(x,y) di dalam bidang
Kartesian seperti gambar di bawah ini.
Kuadran II Kuadran I
0 x
Selain keempat kasus tersebut di atas, P(x,y) tidak terletak di kuadran manapun, yaitu
jika P(x,y) terletak pada sumbu koordinat).
Menganalisis kasus dari sebuah masalah berarti menentukan kondisi boolean (true
atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut memenuhi.
Kondisi boolean adalah suatu ekspresi rasional (yaitu ekspresi dengan operator
rasional) yang bernilai true atau false bergantung pada nilai masing-masing seperti
yang terlibat di dalamnya.
Contoh 5.1:
x > y
a ≠ 10
m = n
p ≤ q
a + b > 1
k mod 4 = 0
ketemu = true
not ketemu
(x > 0) and (y < 0)
Penentuan kondisi boolean dan aksi yang dilakukan bergantung pada jumlah kasus
yang terdapat pada permasalahan tersebut. Dalam bahasa Pascal jumlah kasus dalam
permasalahan bisa dipilah menjadi permasalahan satu kasus (menggunakan perintah
if...then), permasalahan dari dua kasus (menggunakan perintah
if...then...else), dan permasalahan lebih dari dua kasus (menggunakan
perintah (if...then...else if).
If kondisi then
begin
{pernyataan-pernyataan yang dijalankan
jika kondisi terpenuhi}
end;
Kondisi sendiri merupakan suatu ekspresi bertipe boolean, artinya hanya dapat
bernilai benar (true) atau salah (false).
Contoh 5.2:
if (x > 0) then
writeln (‘x adalah bilangan positif’);
Pada contoh di atas yang merupakan kondisi adalah apa benar nilai x yang
dimasukkan lebih dari nol. Jika kondisinya memenuhi, maka program akan mencetak
di layar ‘x adalah bilangan positif’.
Mulai
Ya
Cetak Naskah
Gambar 4.2.
Selesai
Flowchart if ...then else
If kondisi then
begin
{pernyataan-pernyataan yang dijalankan
jika kondisi terpenuhi}
end
else
begin
{pernyataan-pernyataan yang dijalankan
jika kondisi TIDAK terpenuhi}
end;
Contoh 5.2:
if (x > 0) then
writeln (‘x adalah bilangan positif’);
else
writeln (‘x adalah bilangan negatif’);
If kondisi 1 then
begin
{pernyataan-pernyataan yang dijalankan
jika kondisi 1 terpenuhi}
end
else
If kondisi 2 then
begin
{pernyataan-pernyataan yang dijalankan
jika kondisi 2 terpenuhi}
end
else
begin
{pernyataan-pernyataan yang dijalankan
jika kondisi 1 dan 2 TIDAK terpenuhi}
end;
Contoh 5.3:
if (x > 0) then
writeln (‘x adalah bilangan positif’)
else if (x < 0) then
writeln (‘x adalah bilangan negatif’)
else
writeln (‘x adalah nol’);
Mulai
Ya
? Proses 1
Tidak
Ya
? Proses 2
Tidak
Ya
? Proses n
Tidak
alternatif Lanjutkan
case ungkapan of
1: begin
pernyataan ke-1;
end
2: begin
pernyataan ke-2;
end
...
...
...
n: begin
pernyataan ke-n;
end
end
if (x = 0) then
writeln (‘x bernilai 0’)
else if (x = 1) then
writeln (‘x bernilai 1’)
else if (x = 2) then
writeln (‘x bernilai 2’)
else if (x = 3) then
writeln (‘x bernilai 3’)
else
writeln (‘x bukan bernilai 0,1, 2 atau 3’);
case x of:
0: writeln (‘x bernilai 0’);
1: writeln (‘x bernilai 1’);
2: writeln (‘x bernilai 2’);
3: writeln (‘x bernilai 3’);
else
writeln (‘x bukan bernilai 0,1, 2 atau 3’);
Dari contoh di atas dapat dilihat bahwa walaupun penggunaan kedua pernyataan akan
memberikan hasil yang sama, namun penggunaan pernyataan case akan membuat
program lebih ringkas dan mudah untuk dimengerti.
1. Tulislah program untuk menentukan nilai dan jenis dari akar-akar sebuah
persamaan kuadrat
Ax2 + Bx + C = 0
2. Tulislah program untuk menentukan letak dari sebuah titik koordinat pada
bidang Kartesian. Masukkan dari program ini berupa titik x dan y dan
keluarannya berupa letak titik koordinat tersebut (Kuadran I, II, III, atau IV).
Petunjuk: Gunakan pernyataan if … then else if
3. Tulislah program untuk menentukan nilai huruf/mutu dari hasil ujian mahasiswa
dengan ketentuan:
80 ≤ A ≤ 100
60 ≤ B < 80
40 ≤ C < 60
20 ≤ D < 40
E < 20
Masukkan dari program ini berupa nilai angka/numerik (0 sampai dengan 100)
dari ujian mahasiswa dan keluarannya berupa nilai huruf/mutu (A, B, C, D, atau
E). Petunjuk: Gunakan pernyataan case
Kompetensi Dasar:
1. Mahasiswa mampu memahami algoritma perulangan dan penulisannya dalam
bahasa Pascal
2. Mahasiswa dapat menulis program yang mengandung permasalahan perulangan.
Proses berulang adalah suatu proses dimana komputer akan mengeksekusi satu atau
lebih pernyataan sesuai kebutuhan. Dengan kata lain, perulangan memungkinkan kita
untuk menjalankan beberapa pernyataan hanya dengan menuliskan pernyataan
tersebut satu kali saja.
Sebagai contoh penggunaan for dengan cacah maju. misalkan kita akan meng-input
dan menampilkan output dari 5 buah bilangan, maka penulisan programnya adalah
sebagai berikut.
Contoh 6.1:
PROGRAM
program contoh_for_1;
var
i, nilai : integer;
begin
for i:= 1 to 10 do
begin
writeln (‘Masukkan nilai ke-,’i',:’); readln(nilai);
writeln (‘Nilai ke-,’i',adalah’,nilai);
end;
end.
Penjelasan program:
Misalkan kita 5 nilai yang kita input-kan adalah berturut-turut: 10, 12, 6, 39
dan 50. Maka keluaran dari program di atas adalah:
OUTPUT
Kita juga bisa menuliskan pernyataan for di dalam pernyataan for. Konstruksi seperti
ini dinamakan for bersarang (nested for). Untuk lebih jelasnya perhatikan contoh
program di bawah ini.
Contoh 6.2:
PROGRAM
program contoh_for_2;
var
x, y : integer;
begin
for x:= 1 to 3 do
for y:= 1 to 2 do
writeln (x,’’y);
end.
Penjelasan program:
Pada program di atas, cacah ke-1 dari pernyataan for pertama akan
diikuti oleh cacah ke-1 dan ke-2 pada pernyataan for yang kedua. Begitu
seterusnya sampai pada cacah ke-3 dari pernyataan for yang pertama.
OUTPUT
1 1
1 2
2 1
2 2
3 1
3 2
repeat
pernyataan-pernyataan yang akan diulang;
until kondisi
Dari struktur penulisan di atas, ada 2 hal yang perlu diingat, yaitu :
a) Berapa pun jumlah pernyataan yang dipakai untuk menyusun proses yang akan
diulang-ulang, seluruh pernyataan tersebut tidak perlu dibingkai dalam begin dan
end;.
b) Pemasangan kondisi harus benar dan telah diperhitungkan sebaik mungkin
karena sangat menentukan kebenaran hasil proses perulangan tersebut.
Contoh 6.3:
Bandingkan ketiga program berikut ini
PROGRAM
OUTPUT
a) Ketiga program di atas memiliki kondisi yang sama, yaitu I > 6. Ini
berarti proses perulangan akan berhenti bila nilai I telah lebih besar
daripada 6.
b) Kini perhatikan listing program dan keluaran antara program A dengan
program B.
Perbedaan antara program A dan program B adalah perbedaan letak
pernyataan I:= I + 1. Sebelum masuk perulangan repeat
..until, variabel I diset bernilai nol maka begitu masuk dalam
perulangan pada program A, nilai variabel I ditambah 1 dulu baru
ditulis sehingga keluaran pertama program A adalah 1. Berbeda
dengan program B, nilai variabel I ditulis terlebih dahulu baru ditambah
1 sehingga keluaran pertama program B adalah 0.
c) Oleh karena kondisi pada perulangan repeat..until terletak di
akhir perulangan maka meski sebelum masuk perulangan variabel I
di-set bernilai 8 yang jelas lebih besar daripada 6 namun proses
perulangan tetap berjalan 1 kali.
PROGRAM
program hitung;
uses crt;
var sum, bil: integer;
begin
clrscr;
sum:= 0;
repeat
write (‘Masukkan sebuah bilangan bulat : ‘);
readln (bil);
sum:= sum + bil;
until bil= 999;
writeln (sum:5);
readln;
end.
Penjelasan program:
Program ini bila dijalankan maka akan selalu minta masukan bilangan
bulat dan setiap kali diberi masukan maka akan dijumlahkan dengan
penjumlahan sebelumnya. Proses minta masukan dan penjumlahan akan
terus berlangsung dan baru berhenti bila program telah diberi masukan
bilangan 999.
Kasus: Bilangan 999 yang berfungsi sebagai penghenti proses
perulangan pada program hitung turut dijumlahkan dengan hasil
penjumlahan sebelumnya. Kini agar bilangan 999 benar-benar hanya
berfungsi sebagai penghenti proses perulangan maka ubahlah sedikit
program hitung sedemikian hingga bilangan 999 tidak turut
dijumlahkan dengan hasil penjumlahan sebelumnya.
while kondisi do
begin
pernyataan-pernyataan yang akan diulang;
end;
Dari struktur penulisan di atas maka ada 2 hal yang perlu diingat, yaitu :
a) Jika jumlah pernyataan penyusun proses yang akan diulang-ulang lebih dari satu
stemen maka pernyataan-pernyataan tersebut wajib dibingkai antara begin dan
end;
b) Perhatikan bahwa letak kondisi ada di awal perulangan (berbeda dengan
perulangan repeat..until). Ini berarti jika pada perulangan pertama akan
dijalankan kondisi sudah tidak terpenuhi maka perulangan while ... do
tersebut tidak akan dijalankan sama sekali.
Contoh program:
PROGRAM
OUTPUT
Program A Program B Program C
2 3 4 5 6 7 1 2 3 4 5 6
Contoh 6.4:
x:= 0;
while (x >= 0) do
begin
x:= x + 1;
if (x > 100) then
break;
end;
Bila dilihat, kalang di atas tidak akan pernah berhenti karena x selalu ditambah 1
padahal kondisi yang harus dipenuhi adalah (x > 0). Namun bila dijalankan, setelah
nilai x > 100, pengulangan akan berhenti karena adanya pernyataan break.
Contoh 6.5:
Program ini akan menuliskan semua bilangan kelipatan 3 yang kurang dari 100.
Mengapa bisa demikian? Karena pada saat nilai pencacah pengulangan tidak habis
dibagi 3, program memanggil pernyataan continue, akibatnya pernyataan
writeln(i) tidak dipanggil.
Pernyataan break dan continue tidak dapat menghentikan atau melanjutkan kalang
paling dalam.
2. Pada program berikut, berapa kali string ‘Jurusan’ dan ‘Matematika’ muncul di
layar? Jelaskan!
var
x : byte;
begin
for x:= 1 to 10 do;
writeln (‘Jurusan’);
writeln (‘Matematika’);
end.
3. Tulislah sebuah program untuk menghitung nilai rata-rata dari 10 bilangan yang
diinputkan. Masukkan berupa 10 buah bilangan bulat, dan keluarannya berupa
nilai bilangan-bilangan tersebut dan rata-rata nya.
4. Pada Program 1 dan Program 2 berikut ini apakah kedua program tersebut
akan menghasilkan keluaran yang sama? Jika tidak, dimana perbedaannya?
Program 1
repeat
inc(x);
until (x > 10);
writeln(x);
Program 2
while (x <= 10) do
inc(x);
writeln(x);
20
b. Total = ∏ (i + 5)
i =10
5
Kompetensi Dasar:
1. Mahasiswa mampu memahami algoritma perulangan dan penulisannya dalam
bahasa Pascal
2. Mahasiswa dapat menulis program yang mengandung permasalahan perulangan.
D
i dalam program, konsep pemrograman modular merupakan konsep yang
bermanfaat dan produktif. Pemrograman modular berkembang sejalan
dengan teknik pemrograman terstruktur.
Program Pascal adalah bahasa pemrograman pioneer dalam hal pemrograman
modular, artinya program dapat terdiri dari beberapa subprogram atau biasa disebut
subrutin yang berupa Prosedur (Procedure) dan Fungsi (Function). Tiap-tiap
subrutin dalam Pascal menjalankan satu atau lebih tugas tertentu. Dalam
memecahkan masalah dengan pemrograman Pascal sebaiknya dibuat terlebih dahulu
langkah-langkah pokoknya dan dari tiap langkah pokok tersebut dijabarkan dalam
langkah yang lebih detail. Begitu seterusnya hingga langkah terakhir yang bisa
diterjemahkan ke dalam perintah-perintah dalam bahasa pascal.
program utama;
begin
nama_prosedur#1/nama_fungsi#1;
nama_prosedur#2/nama_fungsi#2;
...
nama_prosedur#n/nama_fungsi#n;
end.
Contoh 7.1:
begin
BacaData;
ProsesData;
TulisHasil;
end;
Dapat dilihat dari contoh di atas, sebuah program yang kompleks dapat lebih mudah
dibaca jika ditata sebagai beberapa subrutin. Hal lain yang bermanfaat adalah jika
terjadi kesalahan di dalam program maka akan lebih mudah pelacakannya. Misalnya
jika terjadi kesalahan dalam proses pembacaan data, maka kita hanya akan
memusatkan perhatian pada subrutin BacaData.
Pada bab ini akan dibahas tentang dua macam subrutin dalam bahasa Pascal yaitu
Prosedur dan Fungsi, dan salah satu bentuk aplikasi dari subrutin yaitu Rekursi.
7.1. Prosedur
7.1.1. Prosedur Sederhana
Prosedur sederhana adalah sebuah subprogram yang tidak mempunyai parameter
masukan maupun parameter keluaran.
Pada bentuk di atas, terlihat bahwa dalam prosedur dapat digunakan variable yang
dideklarasikan juga dalam prosedur tersebut, variable-variabel ini disebut variable
lokal.
PROGRAM
program hitungan_2_bil;
uses crt;
var bil1,bil2: integer;
procedure jumlahkan;
var hasilJum: integer;
begin
hasilJum := bil1+bil2;
writeln('hasil penjumlahan: ',hasilJum);
end;
begin
clrscr;
writeln('masukan 2 bilangan');
write('bilangan pertama: '); readln(bil1);
write('bilangan kedua : '); readln(bil2);
jumlahkan;
readkey;
end.
Keluaran program:
OUTPUT
masukan 2 bilangan
bilangan pertama: 5
bilangan kedua : 7
hasil penjumlahan: 12
Penjelasan program
Bil1, bil2 adalah variable global, sedangkan hasilJum adalah variable local
untuk prosedur jumlahkan
Contoh 7.3:
PROGRAM
Program Perhitungan_4_bil;
uses crt;
var bil1,bil2,bil3,bil4: integer;
begin
clrscr;
writeln('masukan 4 bilangan');
write('bilangan pertama: '); readln(bil1);
write('bilangan kedua : '); readln(bil2);
write('bilangan ketiga : '); readln(bil3);
write('bilangan keempat: '); readln(bil4);
writeln;
writeln('bilangan pertama dan kedua');
jumlahkan(bil1,bil2);
writeln;
writeln('bilangan ketiga dan keempat');
jumlahkan(bil3,bil4);
end.
Keluaran program:
OUTPUT
masukan 4 bilangan
bilangan pertama: 5
bilangan kedua : 8
bilangan ketiga : 2
bilangan keempat: 7
Bentuk umum dari prosedur yang menerima masukan dan menghasilkan keluaran
adalah sebagai berikut:
Pada skema bentuk umum prosedur di atas didefinisikan dua macam parameter, yaitu:
- parameter nilai (value parameter) : param1, param2
- parameter acuan (reference parameter): paramx, paramy
Contoh 7.4:
PROGRAM
program Perhitungan_4_bil;
uses crt;
var bil1,bil2,bil3,bil4,bil12,bil34,bil1234: integer;
begin
clrscr;
writeln('masukan 4 bilangan');
write('bilangan pertama: '); readln(bil1);
write('bilangan kedua : '); readln(bil2);
write('bilangan ketiga : '); readln(bil3);
write('bilangan keempat: '); readln(bil4);
write('jumlah bilangan pertama dan kedua : ');
jumlahkan(bil1,bil2,bil12); writeln(bil12);
write('jumlah bilangan ketiga dan keempat: ');
jumlahkan(bil3,bil4,bil34); writeln(bil34);
write('jumlah semua bilangan : ');
jumlahkan(bil12,bil34,bil1234); writeln(bil1234);
end.
masukan 4 bilangan
bilangan pertama: 5
bilangan kedua : 8
bilangan ketiga : 2
bilangan keempat: 7
jumlah bilangan pertama dan kedua : 13
jumlah bilangan ketiga dan keempat: 9
jumlah semua bilangan : 22
Penjelasan program:
Perhatikan contoh di atas, lihat parameter angka1, angka2, hasilJum
di dalam pendeklarasian prosedur jumlahkan yang sesuai dengan
parameter bil1, bil2, bil12 pada pemakaian prosedur di dalam
tubuh program.
Dalam hal ini dapat didefinisikan dua macam parameter, yaitu:
- parameter formal, di dalam deklarasi prosedur: angka1,
angka2, hasilJum
- parameter aktual, pada pemanggilan prosedur: bil1, bil2,
bil12
7.2. Fungsi
Fungsi adalah subrutin yang menerima masukan dan mempunyai keluaran secara
langsung.
function A : tipeparam;
begin
pernyataan-pernyataan;
end;
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.
Pemilihan bentuk subrutin yang berupa prosedur atau fungsi lebih bersifat seni dalam
pemrograman karena secara teknis dua bentuk subprogram tersebut dapat
menghasilkan bentuk yang sama.
Contoh 7.5:
PROGRAM
program perhitungan_4_bil;
uses crt;
var bil1,bil2,bil3,bil4,bil12,bil34,bil1234: integer;
begin
clrscr;
writeln('masukan 4 bilangan');
write('bilangan pertama: '); readln(bil1);
write('bilangan kedua : '); readln(bil2);
write('bilangan ketiga : '); readln(bil3);
write('bilangan keempat: '); readln(bil4);
write('jumlah bilangan pertama dan kedua : ');
bil12:=jumlah(bil1,bil2); writeln(bil12);
write('jumlah bilangan ketiga dan keempat: ');
writeln(jumlah(bil3,bil4));
write('jumlah semua bilangan : ');
bil1234:=jumlah(bil12,jumlah(bil3,bil4)); writeln(bil1234);
write('jumlah semua bilangan : ');
writeln(jumlah(jumlah(bil1,bil2),jumlah(bil3,bil4)));
end.
masukan 4 bilangan
bilangan pertama: 5
bilangan kedua : 8
bilangan ketiga : 2
bilangan keempat: 7
jumlah bilangan pertama dan kedua : 13
jumlah bilangan ketiga dan keempat: 9
jumlah semua bilangan : 22
jumlah semua bilangan : 22
7.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 :
procedure Z;
begin
pernyataan-pernyataan;
Z;
end;
program CetakTerbalik;
uses crt;
const enter=#13;
procedure BacaHuruf;
var ch: char;
begin
ch:=ReadKey;
if ch <> enter then BacaHuruf; {rekursif}
write(ch);
end;
begin
clrscr;
writeln('Ketikkan kalimat diakhiri tombol <Enter> ');
writeln('-----------------------------------------');
BacaHuruf;
end.
Keluaran program:
Sebagai contoh, kalimat yang diketikan adalah ’komputer’
OUTPUT
PROGRAM
program Cari_nilai_faktorial;
uses crt;
var bil1,hasil: byte;
begin
clrscr;
write('masukkan bilangan yang akan dicari nilai faktorialnya:');
readln(bil1);
hasil:=faktorial(bil1);
writeln('nilai faktorial dari ',bil1,' adalah ',hasil);
end.
Keluaran program:
OUTPUT
Kompetensi Dasar:
1. Mahasiswa mengenal tipe data larik (array)
2. Mahasiswa dapat menggunakan tipe data larik (array) sesuai keperluan programnya
3. Mahasiswa mengenal tipe data rekaman (record)
4. Mahasiswa dapat menggunakan tipe data rekaman (record) sesuai keperluan
programnya.
5. Mahasiswa dapat menggunakan tipe data larik dan rekaman dalam subrutin
P
ada Bab 4 telah dibahas beberapa tipe data dalam bahasa Pascal. Pada
bab ini akan dibahas 2 buah tipe data yang lain yang masuk dalam tipe
data terstruktur yaitu larik dan rekaman.
8.1. Larik
Larik adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang
mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen
type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen
dalam larik ditunjukkan oleh suatu indeks, dimana tiap komponen di larik dapat diakses
dengan menunjukkan nilai indeksnya atau subscript. Larik dapat bertipe data
sederhana seperti byte,word,integer,real,bolean,char,string dan
tipe data subrange. Tipe larik mengartikan isi dari larik atau komponen-komponenya
mempunyai nilai dengan tipe data tersebut.
var
nama_larik: array[batas_bawah .. batas_atas] of tipe_larik;
var
a1,a2,a3,a4,a5,a6,a7,a8 : longint;
Namun dengan menggunakan larik, maka bentuk deklarasinya akan menjadi lebih
sederhana yaitu
var
a: array[1..8] of longint;
Dengan bentuk deklarasi seperti di atas, seolah-olah kita memiliki 8 buah variable,
yaitu: a[1],a[2],a[3],a[4],a[5],a[6],a[7], dan a[8]. Keuntungannya
dengan menggunakan tipe data larik adalah kita dapat menghemat penggunaan ruang
(space) dalam memory.
Contoh 8.1:
Var
Untai : array[1..50] of Integer;
Pada contoh larik dengan nama Untai telah dideklarasikan dengan tipe
integer, dengan jumlah elemen maksimum 50 elemen, nilai dari elemen
array tersebut diatas harus bertipe integer.
Cara pengaksesan variable dengan tipe larik adalah dengan menyebutkan nama
variable dan indeksnya. Format pemanggilan tipe data larik adalah sebagai berikut:
nama_larik[indeks_larik]:= nilai;
Bilangan[1]:=3;
Contoh 8.3:
PROGRAM
program contoh_larik;
uses crt;
const N=10;
type larik1 = array[1..N] of integer;
var bil : larik1;
indeks : integer;
begin
writeln('masukkan sepuluh bilangan bulat.');
for indeks := 1 to 10 do
begin
readln(bil[indeks]); { loop untuk memasukkan elemen array }
end;
writeln('Isi dari array ini adalah'); { tampilkan setiap
elemen }
for indeks := 1 to 10 do
begin
writeln('bil[', indeks:2,'] adalah ',bil[indeks] );
end
end.
OUTPUT
Pada contoh di atas batas atas dari larik ditetapkan dengan deklarasi konstanta
N=10. Sehingga dalam pendeklarasian variable larik1 cukup dengan
array[1..N]of integer. Ini berarti semua variable mulai dari
larik1[1],larik1[2],…,larik1[N] memiliki tipe data integer.
var
nama_larik: array[bb1 .. ba1, bb2 .. ba2] of tipe_larik;
dimana:
bb1 : batas bawah 1
bb2 : batas bawah 2
ba1 : batas atas 1
ba2 : batas atas 2
Contoh 8.4:
Var
A : array[1..2,1..2] of Integer;
Maka variable A pada contoh diatas dapat berupa sebuah matriks berindeks 2
dimensi, dengan komponen-komponen A[1,1],A[1,2],A[2,1] dan
A[2,2].
Sementara cara pengaksesan variable dengan tipe larik 2 dimensi adalah dengan
menyebutkan nama variable beserta kedua indeksnya. Format pemanggilan tipe data
larik adalah sebagai berikut:
nama_larik[indeks1,indeks2]:= nilai;
program Operasi_Matrik;
uses crt;
const baris=3;
kolom=5;
type matrik= array[ 1..baris,1..kolom] of integer;
var A,B, AplusB: matrik;
procedure tampilMatrik(X:matrik);
var i,j: integer;
begin
for i:=1 to baris do
begin
for j:=1 to kolom do
write(X[i,j],' ');
writeln;
end;
end;
begin
clrscr;
writeln('isikan elemen matrik A: '); inputMatrik(A);
writeln;
writeln('cetak matrik A: '); tampilMatrik(A);
writeln; writeln('tekan enter untuk melanjutkan'); readln;
clrscr;
writeln('isikan elemen matrik B: '); inputMatrik(B);
writeln;
writeln('cetak matrik B: '); tampilMatrik(B);
writeln; writeln('tekan enter untuk melanjutkan'); readln;
clrscr;
writeln('matrik A: '); tampilMatrik(A); writeln;
writeln('matrik B: '); tampilMatrik(B); writeln;
writeln('matrik A+B: '); tambahMatrik(A,B,AplusB);
tampilMatrik(AplusB);
end.
8.2. Rekaman
Rekaman adalah tipe data kompleks yang elemen-elemennya boleh mempunyai tipe
data yang berbeda. Rekaman lebih kompleks daripada larik karena rekaman
merupakan kumpulan beberapa variabel dengan tipe data yang berbeda. Berbeda
dengan larik yang tiap elemennya ditandai dengan nomer indeks maka rekaman
ditandai dengan nama variabel anggotanya. Cara mengakses elemen dari rekaman
dilakukan dengan menyebutkan nama variabel anggota setelah menyebutkan nama
rekaman yang akan diakses. Di antara nama rekaman dan nama variabel anggota
dipisahkan tanda titik (.).
var
nama_rekaman1 : record
var_rekaman11 : type_var_rekaman11;
var_rekaman12 : type_var_rekaman12;
end;
nama_rekaman2 : record
var_rekaman21 : type_var_rekaman21;
var_rekaman22 : type_var_rekaman22;
end;
nama_rekaman.var_rekaman:= nilai;
Contoh 8.6:
var
TMataKuliah: record
NamaMK : string;
KodeMK : string;
Semester : byte;
end;
TMahasiswa : record
Nama : string;
NIM : string;
Nilai : real;
end;
begin
clrscr;
for i:=1 to 4 do
begin
writeln('masukkan pada daftar no. ',i);
catatelp(bukutelp[i]); writeln
end;
clrscr;
writeln('Daftar No Telp: ');
for i:=1 to 4 do
writeln(i,'. ',bukutelp[i].nama);
writeln;
repeat
write('Telp yang dicari pada daftar no.: '); readln(indeks);
with bukutelp[indeks] do
begin
writeln('Nama : ',nama);
writeln('Alamat : ',alamat);
writeln('No Telp : ',notelp);
end;
writeln;
until (indeks=0)
end.
OUTPUT
Daftar No Telp:
1. Tomy
2. Diana
3. Adib
4. Fakhri
0DWHULPDWHUL\DQJWHUVDMLGDODP%XNXDGDODK
3HQJDQWDU%DKDVD3HPURJUDPDQ
3HQJHQDODQ )UHH3DVFDO
6WUXNWXU%DKDVD3DVFDO
7LSH'DWDGDQ2SHUDWRU
3HUFDEDQJDQGDQ3HUXODQJDQ
6XEUXWLQ
7LSH'DWD/DULNGDQ5HNDPDQ
%XNX LQL GLWXMXNNDQ SHODWLKDQ PDKDVLVZD SHQHULPD EHDVLVZD
ELGLNPLVLGLOLQJNXQJDQ8QLYHUVLWDV3DWWLPXUD