ARMANSYAH
Halaman Judul
Kata Pengantar .......................................................................................................................... 2
Daftar Isi .................................................................................................................................... 3
Modul 1 Algoritma dan Pengenalan Bahasa Pascal ............................................................................ 4
Modul 2 Variabel, Tipedata, Operator ............................................................................................... 13
Modul 3 Struktur Keputusan .............................................................................................................. 24
Modul 4 Perulangan ........................................................................................................................... 38
Modul 5 Array ..................................................................................................................................... 47
Modul 6 Record .................................................................................................................................. 53
Modul 7 Sub Program ......................................................................................................................... 71
Daftar Pustaka
a) Bahasa Natural
Bahasa Natural merupakan algoritma yang ditulis dengan menggunakan bahasa sehari-hari yang
secara langsung dapat dipahami oleh manusia. Biasanya algoritma model bahasa natural menggunakan
bahasa Inggris, tetapi penggunaan bahasa ibu diperbolehkan. Kadangkali algoritma bahasa natural
dikombinasikan dengan pseudocode.
b) Flowchart
Flowchart diambil dari kata flow yang berarti aliran, atau mengalir, chart yang artinya diagram,
grafik atau bagan. Dengan kedua kata itu, maka flowchart dapat diartikan sebagai urutas proses
Selain simbol-simbol yang ditampilkan pada tabel diatas, umumnya masih ada beberapa simbol
lain yang tidak disajikan sini. Namun diatas cukup untuk rancangan flowchart program sederhana. Dalam
penggunaannya, flowchart memiliki aturan standar yang harus diikuti diantaranya :
DEKLARASI
nama_variabel : tipe data
Contoh :
bilangan : integer;
5) Assignment (penugasan) atau saat memberikan value (nilai) pada variabel dan konstanta,
menggunakan format sebagai berikut :
Contoh :
x <- 3;
Program Operasi_bilangan
Deklarasi
x, y : integer
hasil : integer
Algoritma
x 11
y 2
hasil x + y
write(hasil)
if (x > y) then
write(‘Nilai x lebih besar dari i’)
end if
Mekanisme program diatas menerapkan prinsip inisialisasi nilai langsung melalui variabel, yang
diterapkan pada variabel x dan y. Dalam program, suatu nilai dapat diinisialisasi secara manual. Untuk
melakukan itu, algoritma cukup mendaftarkan variabel inisialiasi ke dalam perintah read. Perhatikan
alternatif algoritma berikut :
Program Operasi_bilangan
Deklarasi
x, y : integer
hasil : integer
Algoritma
Read(x) { user diminta menginput nilai x}
Read(y) { user diminta menginput nilai y}
readkey;
end.
1) Judul Program
Judul program merupakan identitas program yang mewakili maksud dan tujuan program. Dalam
struktur program diatas judul program “pertama” dapat diganti dengan kata yang sesuai dengan tujuan
2) Deklarasi Program
Blok deklarasi merupakan bagian yang mengenalkan identifier yang digunakan pada program.
Identifier dapat berupa variabel bertipe, variabel konstanta, array, type record, procedure, function dan
lain sebagainya.
3) Badan Program
Badan program merupakan bagian inti dari suatu program, yang dimulai dari kode begin dan
diakhiri dengan kode end. (titik). Pada bagian ini perancang program dapat menuliskan perintah
(instruksi) yang akan dilakukan oleh (aplikasi) komputer sesuai dengan rancangan algoritma. Perintah
program akan dieksekusi selama sintaksi program telah melalui pengujian program (kompilasi),
sedangan pembacaan program mengacu kepada parser (grammer) yang telah dikenali oleh kompiler.
Ada banyak editor yang dapat digunakan untuk menulis Bahasa Pascal, diantaranya, Turbo Pascal,
Free Pascal dan Pascal Windows. Secara praktis dalam modul ini, penulisan program pascal disampaikan
dengan menggunakan Free Pascal yang saat ini masih terus dikembangkan oleh pengembangnya. Free
pascal mudah didapatkan, mahasiswa dapat mengunduhnya secara gratis disitus resmi milik
pengembangnya di alamat url : https://www.freepascal.org/download.var
1) Menu File ; Menu ini digunakan untuk membuka program baru, membuka program yang telah
disimpan, menyimpan program baru, dan menyimpan perubahan program, serta berpindah
direktori penyimpanan dan membuka jendela command prompt serta keluar dari program
2) Menu Edit; Menu ini digunakan untuk merevisi kode program seperti pencarian kode,
mengganti kode, mengcopy dan menempelkan kode ke baris tertentu.
3) Menu Run; Menu ini merupakan utama yang akan selalu digunakan manakala akan
menjalankan kode program yang telah ditulis.
Fasilitas menu yang dimaksud diatas dapat diamati pada gambar antarmuka Free Pascal berikut :
c) Menulis Program
Menulis program adalah merancang program dengan mengacu kepada struktur bahasa program
yang telah dijelaskan diawal. Untuk menulis program dengan Free Pascal, silahkan ikuti langkah-langkah
praktikum berikut ini.
1) Buka porgram baru, Klik menu File - New
2) Untuk menghindari kehilangan program, simpan file terlebih dahulu, klik File - Save As..
3) Ganti noname01.pas menjadi program1.pas, tekan enter untuk mengakhiri
4) Selanjutnya ketik program berikut, sembari mengamati kode program dengan benar
1. program pertama;
2.
3. uses crt;
4.
5) Jika sudah yakin, kompilasilah program, tekan menu Compile (Alt + F9), enter
6) Jika kompilasi error, perhatikan pesan kesalahan, dan perbaiki kode yang ditunjuk.
7) Jika kompilasi sukses, lanjutkan dengan menjalankan program, klik menu Run - lalu pilih
kembali Run (Ctrl + F9)
8) Jika program berhasil, tulislah keluaran program pada kota berikut, lalu beri penjelasan. Ada
baiknya, eksplorasi program untuk memantapkan pemahaman dasar pascal
1.3 LATIHAN
Untuk memenuhi kompetensi materi perkuliahan, tulislah program berikut dengan mengikuti
panduan program berikut :
1) Buka program baru, dan beri nama file latihan1.pas
2) Tulis program berikut hingga selesai
1. program latihan1;
2.
3. uses crt;
4.
5. var
6. x, y : integer;
7. hasil : integer;
8.
9. begin
10. clrscr;
11. x:=11;
12. y:=2;
13. hasil := x + y;
14. writeln('Hasil penjumlahan x + y adalah ', hasil);
15.
16. readln;
17. end.
Jika dilihat dari ketentuan diatas maka penulisan variabel pada bahasa PASCAL yang absah
(dibenarkan) adalah sebagai berikut :
Penulisan variabel pada program PASCAL mengacu pada standar format yang dimilikinya.
Adapun penulisan variabel pada PASCAL selalu diikuti oleh jenis tipedata yang sesuai dengan maksud
penggunaan variabel tersebut. Adapun penulisan (deklarasi) variabel yang dimaksud, mengacu pada
bentuk umum (struktur penulisan variabel) sebagai berikut :
nama_variabel : tipe_data;
var
bilangan : integer;
nama : string ;
lebar : real;
2.2.2 Keywords
Keywords merupakan daftar kata-kata kunci yang dimiliki oleh PASCAL. Keywords tidak dapat
digunakan secara bebas sebagai variabel dan nama fungsi atau prosedur karena penggunaanya sudah
Tipedata bilangan bulat yang terdapat pada tabel diatas, dapat digunakan mengacu kepada
struktur penulisan (deklarasi) variabel yang telah diuraikan diatas seperti contoh berikut ini :
var
bilangan : integer;
begin
bilangan := 45 + 3;
writeln(bilangan);
end.
Untuk menggunakan tipedata bilangan pecahan didalam program (pascal) sama seperti
penggunaan tipedata bilangan bulat. Dimana tipedata dapat dituliskan (dikenalkan / deklarasikan)
terlebihdahulu seperti pada contoh berikut :
var
bilangan : real;
begin
bilangan := 45 + 3;
writeln(bilangan);
end.
Jika potongan program diatas dieksekusi maka akan menghasilkan nilai phi = 3.14. Variabel
const secara default akan menyesuaikan diri pada nilai ekspresi yang diberikan. Jika variabel konstanta
diberikan nilai berbentuk teks, maka hasilnya tentu akan tetap sesuai dengan nilai yang diberikan pada
saat pendeklarasian variabel konstanta.
Selain kedua jenis tipe data bilangan (bulat dan pecahan) diatas didukung pula dengan tipe data
teks dan logika. Dimana tipedata teks terbagi dalam tipedata char yang digunakan untuk variabel
dengan nilai karakter tunggal dan string digunakan untuk variabel dengan nilai karakter majemuk. Nilai
tipedata char dapat berupa huruf, simbol, dan angka yang diapit oleh tanda petik tunggal seperti ‘A’,
‘@’, ‘1’ dan lain sebagainya. Sedangkan nilai string dapat berupa teks, simbol, dan bilangan yang
dikombinasikan. Misal ‘kelas3’, ‘em@il’, dan lain sebagainya yang juga diapit oleh tanda petik tunggal.
Satu tipedata lagi yang umum digunakan yaitu tipedata logika boolean yang hanya memiliki nilai
benar true dan nilai salah false. Prinsip tipedata ini digunakan untuk mengoperasikan nilai-nilai pada
operasi-operasi logika. Lebih lanjut kita akan bahas setelah mengkaji materi tentang operator logika.
Pada prinsipnya baik tipedata bilangan bulat dan pecahan, tipedata char, string dan boolean sama
penulisan dan pendeklarasiannya didalam program. Akan lebih mudah jika mengamati baik-baik struktur
penulisan variabel-tipedata yang telah disajikan pada pembahana tentang variabel.
a) Operator Arimatika
b) Operator Relasional
Operator Relasional merupakan operator yang digunakan untuk membandingkan nilai dua variabel.
Operator ini umumnya digunakan pada struktur percabangan untuk menentukan pilihan mana yang
akan dieksekusi. Secara umum operator relasional dapat dilihat pada tabel dibawah ini :
c) Operator Logika
Operator logika merupakan operator yang memiliki hasil keluaran bernilai benar (true) atau salah
(false). Umpama variabel A bernilai true dan B bernilai false, maka perhatikanlah penjelasan dari
penggunaan operator logika berikut terhadap variabel A dan B pada tabel berikut ini :
d) Operator Bitwise
Operator jenis ini mirip dengan operator logika, hanya saja penggunaan ini lebih spesifik untuk
menangani data dengan nilai bilangan biner 1 dan 0. Adapun operator jenis ini diantaranya, and, or, xor,
not, left shift, dan right shift. Untuk lebih jelasnya perhatikan contoh penggunaanya misal A dan B
adalah bilangan biner, maka operator ini akan bekerja seperti tabel dibawah ini :
Implementasi operator bitwise yang ditunjukkan pada tabel diatas mengacu pada penjelasan
tabel operatoberikut :
Operator Deskripsi
and Bernilai 1 jika kedua operan bernilai 1
or Bernilai 1 jika satu saja operan bernilai 1
xor Bernilai 1 jika kedua operan berbeda, dan sebaliknya akan
bernilai o jika kedua operan bernilai sama
not Bernilai 1 jika 0, dan sebaliknya bernilai 0 jika 1
shl Nilai operan kiri dipindahkan ke kiri oleh jumlah bit yang
ditentukan oleh operan kanan.
shr Nilai operan kiri dipindahkan ke kanan dengan jumlah bit
e) Operator Penugasan
Operator ini digunakan untuk menugaskan operator memberikan nilai kepada suatu variabel.
Operator penugasan pada pascal adalah := (yang diambil dari simbol titikdua dan samadengan). Untuk
menerapkan operator ini menggunakan format variabel := ekspresi; Ekspresi merupakan nilai yang
diberikan kepada variabel. Misal bilangan : = 45; artinya operator := memberikan nilai 45 kepada
variabel bilangan.
fungsimatematika(ekspresi);
Contoh sqr(5);
1) Latihan Pertama
(a) Studi Kasus
Buatlah program untuk menampilkan nilai ekponen, misal variabel a dan b diberi nilai masing-
masing 2 dan 10, maka berapakah hasilnya jika a dipangkatkan dengan b ?
(b) Penyelesaian Program
1) Jalankan program FreePascal
2) Bukalah program baru, klik File - New
3) Simpan file, klik File - Save As .. ketik nama file latihan11.pas, lalu OK (enter)
4) Ketik kode program berikut sampai selesai, lalu simpan kembali dengan File - Save atau
tekan F2
5) Kompilasi program untuk melihat apakah program sudah benar, klik menu Compile -
Compile (Alt + F9)
2) Latihan Kedua
(a) Studi Kasus
Buatlah program untuk menampilkan nama kamu dengan menggunakan metode input.
(b) Penyelesaian Program
1) Buka file baru, klik File - New
2) Simpan program, klik File - Save As.. lalu ketik file dengan nama latihan12.pas
3) Ketik program berikut hingga selesai
4) Latihan Keempat
(a) Studi Kasus
Buatlah program untuk mengkonversi suhu derajat celsius ke derajat fahreinheit. Jika misal
suhu berada pada derajat 28 OC maka berapakah derajat fahreinheitnya ?
5) Latihan Kelima
(a) Studi Kasus
Buatlah program untuk mengkonversi suhu derajat celsius ke derajat fahreinheit. Jika misal
suhu berada pada derajat 28 OC maka berapakah derajat fahreinheitnya ?
(b) Penyelesaian Program
1) Buka file baru, klik File - New
2) Simpan program, klik File - Save As.. lalu ketik file dengan nama latihan15.pas
If kondisi then
statement;
Struktur dasar keputusan diatas dapat diartikan dengan melihat bagan alur berikut ini :
Dimana jika nilai suatu variabel memenuhi syarat pada kondisi maka statement akan dikerjakan
dan jika tidak memenuhi syarat, maka statement akan diabaikan. Dengan kata lain, struktur If - then
Statement merupakan struktur dengan opsi tunggal. Sehingga jika kondisi variabel tidak terpenuhi pada
nilai benar, maka statement diabaikan.
Statement_1 dijalankan hanya jika kondisi pada kondisi bernilai benar, sebaliknya statemen
tidak akan dijalankan jika kondisi pada kondisi bernilai salah. Struktur dasar If-then-else statement
diatas, dapat diamati melalui bagan alur berikut :
Mengacu kepada bagan alir diatas, struktur keputusan Else if ladder dapat dituliskan seperti
pada struktur dasar berikut :
3.2.4 Nested If
Ada kalanya struktur keputusan mengandung struktur keputusan lain didalamnya. Kasus seperti
ini disebut dengan nested if. Dimana ada struktur if dalam struktur if. Ini disebut juga dengan struktur if
bersarang, dimana struktur if di dalamnya merupakan anak dari struktur if yang berada pada posisi
paling luar. Struktur dasar struktur if bersarang dapat melihat struktur keputusan berikut :
IF condition-1 THEN
IF condition-2 THEN
...
IF condition–n THEN
statement–n1
ELSE
statement–n2;
...
ELSE
statement–2
ELSE
statement–1;
CASE variabel OF
nilai-1: Statemen-1;
nilai-2: Statemen-2;
nilai-3: Statemen-3;
...
END;
Struktur Case..of diatas dapat juga ditulis dengan menggunakan struktur program seperti berikut :
3.2.6 Operator
Ada kalanya struktur pemilihan membutuhkan beberapa operator yang diantaranya untuk
membantu keakuratan hasil eksekusi. Ini biasa terjadi pada kasus-kasus yang melibatkan operasi
perbandingan. Misal suatu nilai variabel memiliki interval dari 50 hingga 100, tentu jika hanya
menggunakan operator >=50, ini bisa bernilai benar jika yang dihasilkan tidak lebih besar dari 100. Pola
yang demikian akan menghitung nilai diatas 100, artinya nilai 101 akan diperhitungkan bahkan lebih dari
itu. Disinilah dibutuhkan operator lain yang bertugas membatasi rentang nilai.
Ada beberapa operator yang umum digunakan dalam struktur pemilihan, seringkali operator-
operator ini digunakan sekaligus secara bersamaan. Adapun operator yang sering digunakan dalam
struktur ini adalah :
1) Operator Relational
Operator ini berfungsi untuk menentukan nilai perbandingan antara dua nilai dari variabel yang
sama. Adapun operator ini diuraikan pada tabel berikut :
1) Latihan 3.1
Misal diketahui n adalah bilangan bulat 10, tampilkanlah statemen ‘n adalah 10’ jika n=10. Untuk
menjawab permasalahan tersebut ke dalam program pascal, lakukan tahap-tahap berikut :
a) Buka program FreePascal, simpan file dengan nama latihan31.pas
b) Selanjutnya tulis kode program berikut
1. PROGRAM SatuPilihan;
2. USES CRT;
3. VAR
4. n : byte;
5.
6. BEGIN
7. CLRSCR;
8. n:=10;
9. IF n=10 THEN
10. WRITE(' n adalah 10');
11. READKEY;
12. END.
c) Simpan perubahan program, selanjutnya kompilasilah program, klik Compile - Compile (Alt + F9)
2) Latihan 3.2
Diketahui n dan m adalah bilangan pecahan, inputlah n dan m, dan k adalah n dikali m, jika k lebih
besar dari 99, maka k adalah bilangan ratuan, dan jika k < 100, berarti k adalah bilangan satuan.
Untuk menyelesaikan permasalahan program diatas, ikuti langkah-langkah program berikut :
1. PROGRAM duaSeleksi;
2. USES CRT;
3. VAR
4. n, m, k : real;
5.
6. BEGIN
7. CLRSCR;
8. WRITELN(' Input n dan m < 10');
9. WRITELN(' ------------------');
10. WRITE(' Masukkan n : '); READLN(n);
11. WRITE(' Masukkan m : '); READLN(m);
12. k:=n * m;
13. IF k<99 THEN
14. WRITELN(' k adalah bilangan Puluhan')
15. ELSE
16. WRITELN(' k adalah bilangan Ratusan');
17.
18. WRITELN(' Karena k adalah ..', k:0:2);
19.
20. READKEY;
21. END.
1. PROGRAM BanyakPilihan;
2. USES CRT;
3. VAR
4. n, m, k : real;
5.
6. BEGIN
7. CLRSCR;
8. WRITELN(' Input n dan m ... ');
9. WRITELN(' -----------------');
10. WRITE(' Masukkan n : '); READLN(n);
11. WRITE(' Masukkan m : '); READLN(m);
12. k:=n * m;
13. IF k<=9 THEN
14. WRITELN(' k adalah bilangan Satuan')
15. ELSE IF k<=99 THEN
16. WRITELN(' k adalah bilangan Puluhan')
17. ELSE IF k<=999 THEN
18. WRITELN(' k adalah bilangan Ratusan')
19. ELSE IF k<=9999 THEN
20. WRITELN(' k adalah bilangan Ribuan')
21. ELSE
22. WRITELN(' Maaf, nilai tidak terdefenisikan program');
23.
24. WRITELN(' Karena k adalah ..', k:0:2);
25.
26. READKEY;
27. END.
4) Latihan 3.4
Buatlah program untuk menentukan nilai dengan ketentuan yang tercantum pada tabel :
5) Latihan 3.5
Buatlah program kalkulator dengan menggunakan Case..Of, dengan ketentuan :
- Jika di tekan simbol +, operasi penjumlahan,
- Jika - pengurangan,
- Jika * perkalian,
- Jika / pembagian pecahan,
Untuk menyelesaikan permasalahan diatas ikuti langkah program berikut ini :
1) Buat program baru, simpan dengan nama latihan35.pas
2) Ketik program berikut hingga selesai
1. PROGRAM BanyakPilihan;
2. USES CRT;
3. VAR
4. bilangan1 : REAL;
5. bilangan2 : REAL;
A. Perulangan FOR
Perulangan model ini merupakan perulangan dengan jumlah iterasi yang sudah tetap berapa kali
iterasi akan dilakukan. Struktur dasar perulanga For mengacu pada struktur berikut :
Ascending
FOR variabel : nilaiawal TO nilaiakhir DO
statement;
Descending
FOR variabel : nilaiawal DOWNTO nilaiakhir DO
statement;
B. Perulangan While
Perulangan while merupakan struktur algoritma dimana perulangan akan terus dijalankan
selaman kondisi bernilai benar. Perulangan yang dimaksud disini bisa saja berupa perulangan terhadap
proses menghitung, mencetak (menampilkan) atau justeru melakukan iterasi lain didalam perulangan
tersebut. Kondisi nilai benar dan salah adalah kondisi yang menjadi syarat bagi variabel yang menjadi
kontrol keputusan. Struktur perulangan while mengacu pada struktur berikut ini :
WHILE kondisi DO
Statemen;
C. Repeat..Until
Perulangan ini merupakan perulangan yang hampir sama dengan perulangan while. Akan tetapi,
pada perulanga repeat...until ini ekspresi akan dilakukan minimal satu kali. Jika kondisi benar maka
ekspresi selanjutnya akan dilakukan, kemudian melakukan pengujian untuk membuat keputusan apakah
perulangan dilakukan kembali atau tidak. Untuk menggunakan perulangan ini mengikuti struktur dasar
sebagai berikut :
repeat
statemen-1;
...
...
Until kondisi;
I. Latihan 4.1
Buatlah program perulangan untuk mencetak bilangan bulat 1 sampai 10 dengan menggunakan
perulangan for
1) Jalankan FreePascal dan simpan program dengan nama latih41.pas
2) Tulis program berikut sampai selesai
1. PROGRAM ULANGAN;
2. USES CRT;
3. VAR
4. n : INTEGER;
5.
6. BEGIN
7. CLRSCR;
8. WRITE('Masukkan n = 1 : '); READLN(n);
9. FOR n:=1 TO 10 DO
1. PROGRAM ULANGAN;
2. USES CRT;
3. VAR
4. n : INTEGER;
5.
6. BEGIN
7. CLRSCR;
8. WRITE('Masukkan n = 1 : '); READLN(n);
9. REPEAT
10. BEGIN
11. WRITE(n, ' ');
12. n:=n+1;
13. END;
14. UNTIL n=11;
15. READKEY;
16. END.
1. PROGRAM ULANGAN;
2. USES CRT;
3. VAR
4. n : INTEGER;
5.
6. BEGIN
7. CLRSCR;
8. WRITE('Masukkan n = 1 : '); READLN(n);
9. WHILE n<11 DO
10. BEGIN
11. WRITE(n, ' ');
12. n:=n+1;
13. END;
14. READKEY;
15. END.
Latihan 4.1, 4.2 dan 4.3 dapat kita kembangkan seperti misalnya pada program berikut :
1. PROGRAM ULANGAN;
2. USES CRT;
3. VAR
4. n : INTEGER;
5.
Jika program dijalankan maka keluaran program akan seperti pada gambar berikut :
1. PROGRAM FAKTORIALWHILE;
2. USES CRT;
3. VAR
4. n : INTEGER;
5. faktorial : longint;
6. BEGIN
7. CLRSCR;
8. faktorial := 1;
9. WRITE(' Masukkan n = 1 : '); READLN(n);
10. WHILE n>0 DO
11. BEGIN
12. WRITELN(' Faktorial adalah = ',faktorial);
13. faktorial := faktorial * n;
14. n:=n-1;
15. END;
16. READKEY;
3) Simpan perubahan program, kompilasi dan jalankan program, jika berhasil maka keluaran
program faktorial akan seperti pada gambar berikut :
V. Latihan 4.5
Untuk perulangan bersarang (nested loop), seperti yang dijelaskan diawal, dapat diterapkan
terhadap semua model perulangan. Kali ini akan kita coba menerapkannya dalam program
mencetak bilangan berbentuk segitiga. Lakukan langkah-langkah berikut :
1) Buka program, dan simpan dengan nama latihan45.pas
2) Ketik program berikut dengan teliti
1. PROGRAM NESTEDFOR;
2. USES CRT;
3. VAR
4. a, b: BYTE;
5. BEGIN
6. CLRSCR;
7. FOR a:=1 TO 10 DO
8. BEGIN
9. FOR b:=1 TO a DO
10. BEGIN
11. WRITE(b,' ');
12. END;
13. WRITELN;
14. END;
15. READKEY;
16. END.
Untuk meningkatkan kompetensi pemrograman Pascal, terutama untuk struktur keputusan dan
perulangan, kerjakanlah permasalahan berikut dengan baik.
1) Diketahui suatu bilangan pecahan lebih besar dari 0.0, buatlah program penjumlahan dengan
perulangan untuk menghitung bilangan tersebut, jika hasil penjumlahan bernilai awal 0, maka
berapakah hasilnya jika diinputkan bilangan 5. Eksekusi program mengacu pada narasi program
berikut :
a. Input bilangan
b. Hitung hasil
c. Tampil hasil
2) Perbaikilah program berikut, hasil program adalah suatu pilihan untuk melakukan perhitungan
dengan beberapa operasi hitung. Lakukan langkah-langkah praktikum dengan baik :
1. PROGRAM KombinasiSistemKontrol
2. USER CRT
3. VAR
4. pilihan = REAL;
5. a, b, c = INTEGER;
6.
7. BEGIN
8. CLRSCR;
9. pilihan:= 0;
10. WHILE pilihan != 4 DO
11. BEGIN
12. WRITELN(' 1. Tekan 1 untuk penjumlahan';
13. WRITELN(' 2. Tekan 2 untuk pengurangan');
14. WRITELN(' 3. Tekan 3 untuk perkalian');
15. WRITE(' Masukkan pilihan kamu: ');
16. READLN(a);
Elemen
Nama_array Elemen
Dari gambar diatas dapat diamati, kelima data tersebut tersusun secara berdekatan. Karakteristik ini
merupakan identifikasi array. VariabelIndeks array selalu bertipe bilangan bulat (integer), dan pada
pemrograman C indeks pertama diawali dengan nilai 0 (nol). Sehingga jika mengacu struktur array,
gambar tersebut menjelaskan bahwa sebagai berikut :
1. data_nama sebagai array (nama array)
2. Aisyah, Faisal, Abdullah, Hasan, dan Fadhilah adalah elemen data array
3. 0, 1, 2, 3, 4, merupakan indeks array yang berfungsi untuk mengakses setiap elemen.
A. Pendeklarasian Array
Untuk menggunakan Array dalam bahasa C dapat menggunakan struktur sebagai berikut :
pendeklarasian array dapat juga langsung menginisialisasikan nilai array tersebut bersamaan
dengan pendeklarasian seperti misalnya :
bilangan[0]=2;
bilangan[1]=19;
bilangan[2]=100;
bilangan[3]=0;
bilangan[4]=19;
sehingga jika mengacu pada data array diatas, untuk mengakses elemen nilai 100, maka dapat dipanggil
dengan struktur bilangan[2];. Indeks 0, 1, 2, 3, 4 diwakili oleh sebuah variabel bertipe bilangan bulat.
Umpama variabel diberikan dengan nama i, maka untuk mengakses kelima elemen tersebut dipanggil
dengan struktur bilangan [i];
untuk array tiga dimensi atau multi dimensi yang lain, dapat menggunakan struktur berikut :
Contoh (1)
1. Jalankan program editor Free Pascal
2. Bukan program baru, klik File – New
3. Simpan program, klik menu File – Save As..
4. Tulis program berikut
Latihan (1)
1. Buka program baru, File – New
2. Simpan program, File – Save As..dengan nama arr61.pas
3. Tulis program di editor Free Pascal,
Jika dikonotasikan dengan sekumpulan data, Record sebenarnya adalah sebuah database (basis
data), dimana elemen-elemen datanya saling terkait. Elemen-elemen ini, jika terkoneksi satu sama lain,
membentuk sekumpulan data yang disebut dengan tabel. Tetapi, defenisi record disini sangat sempit,
sehingga belum bisa dikatakan sebagai sebuah basis data.
Sementara, basis data merupakan sekumpulan tabel-tabel yang saling terkait hingga dengan
keterkaitan tabel-tabel tersebut menghasilkan sebuah informasi. Sebagai ilustrasi berikut ini saya
berikan sebuah contoh.
#Ilustrasi 1
Umpama beberapa elemen data, kita ambil misalnya : budi, Ilmu Komputer, ilkom3, III. Jika
keempat elemen data tersebut disimpan didalam kotak data yang sesuai, misalnya nama, jurusan, kelas,
dan semester, maka jika dirangkai ke dalam tabel, elemen data tersebut bisa berbentuk seperti tabel
berikut :
Nah, element data : Budi, Ilmu Komputer, Ilkom3, dan I itulah yang disebut dengan record atau
rekaman data. Atau data yang tersimpan di dalam record. Di dalam sebuah basis data terdapat dua
unsur record dan field. Dimana record menginterpretasikan suatu baris, sementara field,
menginterpretasikan suatu kolom. Dan di dalam record elemen-elemen yang berfungsi sebagai
penampung data disebut juga dengan field.
Pada ilustrasi diatas, dapat disimpulkan bahwa field atau kolom-kolom yang terdiri dari nama,
jurusan, kelas dan semeter, yang merekam atau merecord elemen data budi, ilmu komputer, ilkom3,
dan I.
Sehingga, jika keempat elemen data tersebut dikatakan sebagai record atau rekaman data yang
berada di dalam sebuah tabel dengan kolom-kolom yang berbeda, maka dapat di tarik suatu kesimpulan
bahwa record merupakan sekumpulan elemen data yang saling terkait satu sama lain dalam sebuah
tabel dengan tipe data berbeda. Perbedaan tipe data pada tabel diatas dapat digambar seperti pada
informasi field atau kolom sebagai berikut :
Sebelum menggunakan record, record harus dideklarasikan terlebih dahulu di awal program.
Pendeklarasian record dapat dilakukan dengan beberapa model. Berikut ini akan diuraikan model yang
umum digunakan. Yaitu sebagai berikut :
Keterangan :
Type ; merupakan pernyataan bahwa record dibangun berdasarkan type
Nama_record; Jika dikonotasikan sebagai tabel, nama_record ini menyatakan suatu nama
dari suatu tabel
Record ; merupakan struktur record, dimana nama_record merupakan suatu struktur record
#contoh
#contoh
Pengaksesan record pada program pascal tidak terlalu sulit. Pada dasarnya pengaksesannya
memiliki aturan atau struktur seperti pada bentuk struktur-struktur lain di dalam bahasa pascal seperti
function, procedure, array dan struktur-struktur lainnya. Sebelum saya sampaikan aturan dasar
pengaksesan record tersebut, ada baiknya saya sampaikan dahulu apa yang dimaksud dengan
pengaksesan tersebut.
Jika dilihat dari pendeklarasian record, terdapat komponen nama_record yang bertugas sebagai
record-nya (perhatikan kembali deklarasi record diatas), dimana didalam record tersebut terdapat
kolom-kolom (field) dengan tipe data yang berbeda. Untuk mengaktifkan field tersebut, maka record
harus mengakses field-field tersebut dengan cara mengaitkannya dengan bantuan operator titik (.).
Adapun pengaksesan kolom-kolom (field) terhadap record mengunakan struktur sebagai berikut :
Setelah melakukan simulasi cara mengakses field didalam record, kali ini mari kita coba terapkan
struktur record ke dalam bahasa pascal. Pada kali ini saya menggunakan contoh deklarasi yang telah
saya uraikan diatas.
#Studikasus
Buatlah program pendataan mahasiswa (sederhana) menggunakan struktur record
untuk menampilkan data berupa nama, jurusan, kelas dan semester
Dalam bahasa pascal, penggunaan record dapat lebih disederhanakan dengan memanfaatkan
statemenwith. Dengan statement with pengaksesan field oleh record tidak perlu dilakukan, cukup
dengan menyertakan nama record dengan statement with di awal. Adapun tatacara penggunaan
statement with akan ditunjukkan pada struktur with sebagai berikut :
Keterangan :
Dari deklarai record diatas, sudah jelas bahwa nama recordnya adalah mahasiswa,
dengan fieldnya, masing-masing : nama, jurusan, kelas, dan semester. Jika record ini diterapkan dengan
menggunakan statement with .. do, maka akan tampil seperti berikut :
Keterangan :
Pernyataan diantara begin dan end yaitu writeln(nama) (dan seterusnya); dapat diganti
dengan kode program yang sesuai dengan kebutuhan. Misalnya programmernya ini
membaca record dan field, maka perintahnya diganti dengan readln(nama)
#Studi Kasus
Buatlah program pendataan mahasiswa (sederhana) menggunakan struktur record
dengan statemen with..do untuk menampilkan data berupa nama, jurusan, kelas dan
semester
Perhatikan baik-baik pada kode program tersebut. Pada contoh program di atas pengaksesan
field oleh menggunakan statement with .. do. Terlihat perbedaan yang sangat jelas antara contoh
program pertama dengan contoh program kedua yang menggunakan statement with. Dimana
perbedaan yang jelas terdapat pada kode pengakasesan fieldnya. Pada record dengan statement with
pengaksesan field sama seperti pemanggilan variabel pada umumnya. Jika contoh program diatas di
running makan akan menampilkan kotak masukan seperti berikut :
Sama seperti contoh program diawal, pada tampilan ini program meminta user untuk
menginput data berdasarkan kotak masukannya hingga selesai. Jika input telah diselesaikan maka
program akan menampilkan keluaran seperti berikut :
Dari keluaran program pertama dan kedua baik dengan metode pengait menggunakan operator
titik (.), maupun menggunakan pengait dengan statement with..do, hasil yang didapatkan sama-sama
berjalan dengan baik. Dengan demikian perancang program (programmer) dapat menggunakan metode
manapun bergantung kepada kebutuhan dan kemampuan programmer.
Pada contoh record di atas, program hanya mampu menyimpan sebaris data record. Untuk
dapat menyimpan data dengan banyak record, maka dibutuhkan array. Dalam prinsip perekaman
(record) dengan menggunakan array, pengkodean program membutuhkan struktur perulangan. Pada
umumnya para perancang program lebih sering menggunakan model perulangan for. Mengingat model
#contoh
Dalam pengaksesan record-array, secara struktur hampir sama dengan pengaksesan record
tanpa array. Hanya saja, pada record-array, pengaksesan record harus disertai oleh variabel yang
bertugas mengendalikan indeks arraynya.
Adapun variabel ini bertipe bilangan bulat positif, apakah byte, integer, long integer, maupun
jenis tipe data lainnnya namun harus bertipe bilangan bulat positif. Pemilihan tipe data untuk variabel
indeks ini juga tidak mutlak. Perancang program dapat memilih sesuai kebutuhan. Adapun pengaksesan
record dengan array dapat dilihat seperti pada struktur berikut ini :
Dari contoh pengaksesan record-array tersebut diatas, terlihat untuk masing-masing field
dikaitkan dengan array yang tugasnya menjadi record. Sementara itu, dalam penerapannya, terdapat
variabel “i” yang dikurung dengan tanda kurung siku, variabel inilah yang dalam array bertindak sebagai
pengendali indeks.
Pengaksesan dengan cara lain dapat juga diterapkan jika penerapan record menggunakan
statement with..do. Untuk record-array yang menggunakan statement with..do, pengaksesan recordnya
menggunakan strukter sebagai berikut :
Setelah kita membahas konseptualnya, mari kita terapkan di dalam program dengan
menggunakan bahasa pascal.
#Studikasus
Buatlah program pendataan mahasiswa (sederhana) menggunakan struktur record
untuk menampilkan data berupa nama, jurusan, kelas dan semester
Pada tampilan awal program diatas, program meminta user untuk menginput data sebagai data
yang ditetapkan pada perulangan. Pada perulangan terdapa data sebagai 2, yaitu 1-2. Sehingga, user
hanya dapat menginput data sebanyak 2 data record saja. Setelah proses input selesai, seperti pada
contoh gambar berikut :
6.6 Latihan
Untuk meningkatkan kemampuan mahasiswa, berikut ini diberikan latihan untuk dikerjakan
sebagai sarana praktikum terkait dengan materi Record.
1) Rancanglah program untuk menghitung nilai hasil dari UTS dan UAS serta menampilkan
Nilai Huruf sesuai dengan kriterianya. Adapun ketentuannya sebagai berikut :
- Nilai akhir didapat dengan formulasi 60% dari nilai UAS ditambah dengan 40% dari
nilai UTS
- Ketentuan Nilai huruf adalah :
o Jika nilai akhir >= 80, maka nilai huruf adalah ‘A’
o Jika nilai akhir >= 70, maka nilai huruf adalah ‘B’
o Jika nilai akhir >= 60, maka nilai huruf adalah ‘C’
o Jika nilai akhir >= 50, maka nilai huruf adalah ‘D’
o Jika nilai akhir <=49, maka nilai huruf adalah ‘E’
- Tampilan program berbentuk tabel seperti pada contoh pada pembahasan modul
Record
Sub Program merupakan bagian program kecil yang terpisah dari program utama (main program). Sub
program ini dapat dipanggil seperti pemanggilan variabel biasa, baik pemanggilan itu dilakukan di dalam
sub program tersebut, maupun di luar sub program atau di dalam program utama.
Penggunaan sub program dimaksudkan untuk mempermudah dan menyederhanakan kode
program. Karena tidak menutup kemungkinan, pada program komplek (program skala besar), akan
dijumpai pembuatan kode program yang berulang-ulang. Pengulangan kode program pada program
skala besar ini, dapat disederhanakan dengan hanya membuat satu blok program saja. Lalu blok
program tersebut dapat di panggil di dalam maupun di luar sub program sesering mungkin sesuai
kebutuhan. Perhatikan contoh berikut :
Jika kode program di atas dieksekusi, hasilnya adalah seperti gambar berikut :
Pada bahasa Pascal sub program dibagi dalam dua tipe, yaitu :
1. Prosedur [Procedure]
2. Fungsi [Function]
Untuk melihat penggunaan dari proceduresilahkan perhatikan pada potongan kode program di
atas. Kode program diatas mewakili satu contoh program menggunakan procedure, dengan nama
prosedurnya adalah procedure garis;
Prosedur merupakan sub program yang terpisah dari blok program utama yang memiliki nilai
keluaran atau pun tidak. Prosedur terdiri dari prosedur standar, dan prosedur buatan. Pada pascal,
prosedur standar seperti clrscr, gotoxy, dan lain sebagainya dapat digunakan oleh perancang program
sesuai dengan kebutuhan.
Sementara prosedur buatan harus dideklarasikan terlebih dahulu. Pendeklarasian prosedur dapat
menyertakan idenfier maupun tidak, bergantung kepada maksud dari pembentukan prodesur tersebut.
Secara umum prosedur pada Pascal dideklarasikan seperti berikut :
Studi kasus :
Buatlah program untuk menentukan akar pangkat dari suatu fungsi
Di dalam prosedur, terdapat dua jenis variabel, yaitu variabel global dan variabel lokal. Variabel
global adalah variabel yang berada di luar tubuh prosedur. Umumnya dideklarasikan di bagian tubuh
program utama. Variabel global sifatnya terbuka, sehingga dapat digunakan di blok program manapun,
baik diblok prosedur maupun di dalam blok program utama.
Berbeda dari variabel global, variabel lokal bersifat tertutup. variabel ini hanya dapat digunakan
didalam prosedur itu sendiri. Berikut ini, perhatikanlah contoh program prosedur berikut :
Studi Kasus
Buatlah program untuk menghitung luas persegi panjang. Pada studi kasus berikut ini,
perhatikanlah penjelasan pada bagian komentar didalam kurung kurawal pada kode program. {
... }
LuasLP:=panjang * lebar;
Selanjutnya hasil keluaran akan ditampilkan pada baris perintah dibawahnya, yaitu
kode perintah diatas tidak akan ditampilkan selama prosedur tidak di panggil pada blok program utama.
Maka, untuk menampilkan hasil keluaran, pada blok program utama prosedur harus dipanggil untuk
dapat mengeksekusi perintah yang dituliskan pada blok prosedur. Adapaun proses pemanggilan
prosedur terlihat pada bagian :
HitungLP(L, p, lb);
Antara fungsi dan prosedur pada dasarnya memiliki persamaan. Yakni subprogram yang terpisah
dari blok program utama. Dimana tubuh fungsi melakukan tugas tertentu yang dapat dipanggil melalui
blok program utama. Persamaan mendasar antara prosedur dan fungsi juga terlihat dari strukturnya.
Namun yang menjadi pembeda diantara keduanya adalah, fungsi memiliki nilai balik dari fungsi,
sementara prosedur tidak. Secara umum struktur fungsi dapat dilihat seperti berikut di bawah ini :
Studi Kasus :
Buatlah program untuk menghitung luas segitiga sama sisi dengan mengunakan fungsi.
Jika kode program tersebut dijalankan, maka monitor akan menampilkan keluaran sebagai
berikut :
Secara sederhana parameter dapat disamakan juga dengan variabel. Hanya saja istilah parameter
digunakan untuk mendefenisikan fungsi variabel tersebut. Jika dilihat dari cara kerjanya, parameter ini
dinamakan berdasarkan dimana dia letakkan. Ada dua jenis parameter, yaitu parameter formal dan
parameter aktual.
Parameter formal
Pada potongan program tersebut terlihat bahwa, parameter formal ditunjukkan pada
pendeklarasian fungsi, yaitu r, dan l. Sementara pada tubuh program utama, terdapat variabel jejari,
dan luas, dimana kedua variabel ini bersifat global dan bertindak sebagai parameter aktual.
Kode program tersebut diatas, jika dijalankan akan menampilkan keluaran sebagai berikut :
Pada bahasa Pascal, pengiriman parameter dapat menggunakan tiga model, yakni pemanggilan
parameter :
By Value
By Reference
Combination (Campuran)
Namun pada kesempatan ini, implementasi akan dicontohkan berdasarkan By Value (dengan
nilai) dan By References (dengan referensi). Pengiriman parameter dapat dilakukan meskipun nama
variabel berbeda, tetapi tipe data diantara parameter di dalam prosedur-fungsi harus sama.
Pengiriman parameter dengan nilai ini merupakan metode dimana nilai yang dimiliki oleh
pamater di tubuh prosedur-fungsi dikirim ke variabel global di tubuh program utama. Lebih lanjut
penjelasan pengiriman parameter dengan nilai dapat dilihat pada contoh program berikut :
Studi Kasus
Buatlah program dengan prosedur untuk menentukan luar permukaan bola dengan metode
pengiriman parameter dengan nilai (By Value)
Pada program tersebut, prosedur yang digunakan adalah procedure luasbola. Diman parameternya
adalah r dengan tipedata real. Parameter ini disebut dengan parameter formal. Nilai paramter ini pada
awalnya bernilai nol atau kosong, namun ketika program dijalankan, lalu diinput, maka nilai ini akan
bernilai tertentu sesuai masukan yang diberikan oleh user melalui keyboard. Parameter r ini menjadi
bernilai karena mendapat kiriman dari variabel jejari.
Selanjutnya setelah parameter r, menjadi bernilai maka variabel luas akan menghitung nilai
yang dimiliki oleh r. Setelah variabel luas telah mendapatkan hasil perhitungan, nilai luas akan dibawa
oleh prosedur luasbola untuk ditampilkan berdasarkan pemanggilan prosedur di tubuh program utama
yaitu luasbola(jejari);
Maka jika program tersebut diatas dijalankan, akan menampilkan keluaran sebagai berikut :
Studi Kasus
Buatlah program menghitung luas permukaan bola, dengan menggunakan prosedur dengan
metode pengiriman parameter berdasarkan Reference
Jika dilihat dari kode program diatas, dan dengan membandingkan dengan metode pemanggilan
berdasarkan nilai, perbedaan terlihat pada beberapa hal, diantarang :
Setelah membahas berbagai subtopik mengenai prosedur dan fungsi serta metodenya, seorang
programmer diharapkan untuk tidak bingung harus menggunakan prosedur ataupun fungsi.
Programmer bebas menggunakan konseptual apa saja dan dengan metode apa saja sesuai dengan
kemampuannya.
Prosedur dan fungsi ditawarkan dalam pemrograman hanya sebagai alternatif untuk
memecahkan masalah program yang komplek skala besar dimana dalam program tersebut diharuskan
untuk membuat perencanaan secara sederhana untuk meminimalisir permasalah program yang
dihadapi.
Namun, suka atau tidak suka, penggunakan konsep prosedur dan fungsi akan tetap akan
ditemukan di disiplin ilmu pemrograman apapun, dan tentu penggunaan konsep ini sangat membantu.
Hanya saja, konsep prosedur dan fungsi akan berbeda istilah pada pemrograman lainnya.
Berikut ini akan saya contohkan program menggunakan fungsi dengan studi kasus yang sama,
yaitu program menghitung luas permukaan bola dengan menggunakan metode pengiriman parameter
berdasarkan referensi (By Reference).
Studi Kasus
Program menghitung luas permukaan bola menggunakan fungsi dengan parameter by
reference
Perhatikan baik-baik pada kode program di atas, secara sintaksis tidak terdapat perbedaan yang
jauh. Perbedaan hanya terdapat pada struktur fungsinya, yaitu dengan penambahan nilai balik pada
fungsi, yaitu dengan typedata nilai baliknya adalah byte.
7.7 Rekursi
Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. Menurut definisi dalam
Microsoft Bookshelf, Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam
0!=1
N ! = N x (N-1) !
Persamaan (2) di atas adalah contoh hubungan rekurens (recurrence relation), yang berarti
bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen
yang lebih kecil. Persamaan (1) tidak bersifat rekursif, disebut nilai awal atau basis. Setiap fungsi rekursif
paling sedikit mempunyai satu nilai awal, jika tidak fungsi tersebut tidak bisa dihitung secara eksplisit.
1 1 2 3 5 8 13 21 34 55 89 …
dari barisan tersebut dapat dilihat bahwa bilangan ke-N (N>2) dalam barisan dapat dicari dari dua
bilangan sebelumnya yang terdekat dengan bilangan N, yaitu bilangan ke-(N-1) dan bilangan ke-(N-
2), sehingga dapat dirumuskan sebagai
Fibbonacci(1) = 1 (1)
Fibbonacci(2) = 1 (2)
Fibbonacci(N) = Fibbonacci(N-1) + Fibbonacci(N-2) (3)
Dengan persamaan (1) dan (2) adalah basis dan persamaan (3) adalah rekurensnya.
Dalam beberapa situasi, pemecahan secara rekursif maupun secara iteratif mempunyai
keuntungan dan kekurangan yang bisa saling diperbandingkan. Adalah cukup sulit untuk menentukan
mana yang paling sederhana, paling jelas, paling efisien dan paling mudah dibanding yang lain. Boleh
dikatakan pemilihan cara iterative maupun rekursif merupakan kesenangan seorang programmer dan
tergantung konteks permasalahan yang akan dipecahkan sesuai dengan kesanggupan yang
bersangkutan.
Perhatikanlah contoh Algoritma berikut :
#Contoh 1
Namun diantara kelebihan diatas, penggunaan rekursif juga memiliki kekurangan diantaranya :
Program akan memakai memori lebih besar karena program melakukan proses
perulangan yang tidak tertentu jumlahnya
Terkait dengan perulangan tersebut, rekursif justeru sering tidak berhenti (bergantung
kepada perancangan algoritmanya)
Untuk mencapai target perkuliahan, kerjakanlah latihan berikut dengan baik, eksplorasilah
berbagai sumber, baik modul, internet, buku, atau turorial untuk menyelesaikan latihan berikut. Latihan
berikut akan diuji secara mandiri dikelas untuk melihat kesiapan mahasiswa. Berikut latihannya :
1. Sebuah perpustakaan sebuah masjid menyewakan 3 golongan buku, yaitu A, B, dan C.
Harga sewa per 7 hari adalah :
Golongan Harga Sewa per 7 Hari
A Rp. 400,-
B Rp. 600,-
C Rp. 800,-
Jika peminjaman lebih dari 7 hari, setiap harinya akan didenda sebesar Rp. 200,-. Buatlah
program untuk menghitung pembayaran sewa dengan dengan acuan sebagai berikut :
Masukan : Golongan Buku, Lama sewa
Keluaran : Biaya yang harus dibayar
Petunjuk : Buatlah 3 prosedur (atau boleh fungsi)
1. Prosedur/fungsi untuk menghitung harga sewa
2. Prosedur/fungsi untuk menghitung Denda
3. Prosedur / fungsi untuk menghitung Pembayaran
2. Buatlah program (boleh prosedur atau fungsi) untuk menentukan nilai terkecil. Dengan
ketentuan :
Input : beberapa nilai puluhan,
Keluaran : nilai terkecil