0% menganggap dokumen ini bermanfaat (0 suara)
76 tayangan87 halaman

Fundamental of Algorithm Programming Dasar Algoritma Dan Pemrograman

Dokumen ini berisi peraturan dan daftar isi modul praktikum pemrograman untuk laboratorium informatika. Dokumen ini memberikan informasi tentang aturan yang berlaku selama praktikum serta urutan materi yang akan dipelajari pada setiap modul praktikum.

Diunggah oleh

Yusuf SIhombing
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
76 tayangan87 halaman

Fundamental of Algorithm Programming Dasar Algoritma Dan Pemrograman

Dokumen ini berisi peraturan dan daftar isi modul praktikum pemrograman untuk laboratorium informatika. Dokumen ini memberikan informasi tentang aturan yang berlaku selama praktikum serta urutan materi yang akan dipelajari pada setiap modul praktikum.

Diunggah oleh

Yusuf SIhombing
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 87

Lembar Pengesahan

Saya yang bertanda tangan di bawah ini:

Nama : Dade Nurjanah, Ph.D


NIP :
Dosen PJMP : Dasar Algoritma dan Pemrograman
KK : ICM

Menerangkan dengan sesungguhnya bahwa modul ini digunakan untuk pelaksanaan praktikum di
semester genap tahun ajaran 2015/2016 di Informatics Lab Fakultas Informatika Universitas Telkom.

Bandung, Januari 2016

Menyetujui,

Febryanti Sthevanie, S.T., M.T. Rimba Whidiana Ciptasari, Ph.D Rita Rismala, S.T., M.T.

Yanti Rusmawati, Ph.D Mohamad Syahrul Mubarok Siti Sa’adah, S.T., M.T.,

Dody Qori Utama, S.T., M.T. Said Al Faraby, S.T., M.Sc Untari Novia Wisesty, S.T., M.T.

Mengesahkan, Mengetahui,
Dosen PJMP Kaprodi S-1 Fakultas
Dasar Algoritma dan Informatika
Pemrograman

Dade Nurjanah, Ph.D Moch. Arif Bijaksana, Ph.D


Peraturan Praktikum
Laboratorium Informatika 2015/2016

1. Praktikum diampu oleh dosen kelas dan dibantu oleh asisten laboratorium dan asisten
praktikum.
2. Praktikum dilaksanakan di Gedung Kultubai Selatan (IFLAB 1 s/d IFLAB 5) sesuai jadwal yang
ditentukan.
3. Praktikan wajib membawa modul praktikum, kartu praktikum, dan alat tulis.
4. Praktikan wajib mengisi daftar hadir rooster dan BAP praktikum dengan bolpoin bertinta hitam.
5. Durasi kegiatan praktikum S-1 = 3 jam (150 menit).
a. 15 menit untuk pengerjaan Tes Awal atau wawancara Tugas Pendahuluan
b. 45 menit untuk penyampaian materi
c. 90 menit untuk pengerjaan jurnal dan tes akhir
6. Jumlah pertemuan praktikum:
 10 kali di lab (praktikum rutin)
 3 kali di luar lab (terkait Tugas Besar dan UAS)
 1 kali berupa presentasi Tugas Besar atau pelaksanaan UAS
7. Praktikan wajib hadir minimal 75% dari seluruh pertemuan praktikum di lab. Jika total kehadiran
kurang dari 75% maka nilai UAS/ Tugas Besar = 0.
8. Praktikan yang datang terlambat :
 <= 30 menit : diperbolehkan mengikuti praktikum tanpa tambahan waktu Tes Awal
 > 30 menit : tidak diperbolehkan mengikuti praktikum
9. Saat praktikum berlangsung, asisten praktikum dan praktikan:
 Wajib menggunakan seragam sesuai aturan institusi.
 Wajib mematikan/ mengkondisikan semua alat komunikasi.
 Dilarang membuka aplikasi yang tidak berhubungan dengan praktikum yang berlangsung.
 Dilarang mengubah pengaturan software maupun hardware komputer tanpa ijin.
 Dilarang membawa makanan maupun minuman di ruang praktikum.
 Dilarang memberikan jawaban ke praktikan lain.
 Dilarang menyebarkan soal praktikum.
 Dilarang membuang sampah di ruangan praktikum.
 Wajib meletakkan alas kaki dengan rapi pada tempat yang telah disediakan.
10. Setiap praktikan dapat mengikuti praktikum susulan maksimal dua modul untuk satu mata kuliah
praktikum.
 Praktikan yang dapat mengikuti praktikum susulan hanyalah praktikan yang memenuhi
syarat sesuai ketentuan institusi, yaitu: sakit (dibuktikan dengan surat keterangan medis),
tugas dari institusi (dibuktikan dengan surat dinas atau dispensasi dari institusi), atau
mendapat musibah atau kedukaan (menunjukkan surat keterangan dari orangtua/wali
mahasiswa.)
 Persyaratan untuk praktikum susulan diserahkan sesegera mungkin kepada asisten
laboratorium untuk keperluan administrasi.
 Praktikan yang diijinkan menjadi peserta praktikum susulan ditetapkan oleh Asman Lab dan
Bengkel Informatika dan tidak dapat diganggu gugat.
11. Pelanggaran terhadap peraturan praktikum akan ditindak secara tegas secara berjenjang di
lingkup Kelas, Laboratorium, Fakultas, hingga Universitas.
Daftar Isi
Lembar Pengesahan ................................................................................................................................ 2
Peraturan Praktikum Laboratorium Informatika 2015/2016 ................................................................. 3
Daftar Isi .................................................................................................................................................. 4
Modul 1 Pengenalan Pascal............................................................................................................... 6
1.1 Pengertian Algoritma .............................................................................................................. 6
1.2 Pengenalan IDE Free Pascal .................................................................................................... 7
1.2.1 Menulis Program ............................................................................................................. 7
1.2.2 Menyimpan Program ...................................................................................................... 7
1.2.3 Menjalankan/ Mengeksekusi Program ........................................................................... 8
Modul 2 Variabel, Record, I/O, Assignment dan Operator ............................................................. 14
2.1 Variabel ................................................................................................................................. 14
2.2 Input / Output ....................................................................................................................... 14
2.3 Tipe Data ............................................................................................................................... 15
2.3.1 Tipe Data Dasar ............................................................................................................. 15
2.3.2 Konstanta ...................................................................................................................... 17
2.3.3 Record / Tipe Bentukan ................................................................................................ 17
2.4 Assignment............................................................................................................................ 18
2.5 Ekspresi dan Operator .......................................................................................................... 19
Modul 3 Percabangan...................................................................................................................... 23
3.1 If – Then ................................................................................................................................ 23
3.1.1 If – Then 1 kondisi ......................................................................................................... 23
3.1.2 If – Then 2 kondisi ......................................................................................................... 23
3.1.3 If – Then lebih dari 2 kondisi ......................................................................................... 24
3.1.4 If – Then Bertingkat ....................................................................................................... 24
3.1.5 Case of ........................................................................................................................... 26
Modul 4 Fungsi dan Prosedur.......................................................................................................... 30
4.1 Fungsi .................................................................................................................................... 30
4.2 Prosedur ................................................................................................................................ 33
4.2.1 Menukar bilangan (menggunakan parameter by reference) ....................................... 33
4.2.2 Menghitung luas dan keliling (menggunakan parameter by value) ............................. 34
Modul 5 Perulangan ........................................................................................................................ 37
5.1 Perulangan For ...................................................................................................................... 37
5.2 Perulangan while – do ........................................................................................................... 39
5.3 Perulangan repeat - until ...................................................................................................... 40
Modul 6 Skema Pemrosesan Sekuensial .......................................................................................... 45
Dalam modul ini, akan .......................................................................................................................... 45
6.1 Skema Pemrosesan Sekuensial dengan Mark....................................................................... 45
6.1.1 Tanpa Penanganan Kasus Kosong ................................................................................. 45
6.1.2 Dengan Penanganan Kasus Kosong............................................................................. 46
6.2 Skema Pemrosesan Sekuensial Tanpa Mark ....................................................................... 46
Soal Latihan ....................................................................................................................................... 48
Modul 7 Larik (Array)....................................................................................................................... 49
7.1 Dimensi Array........................................................................................................................ 49
7.1.1 Array Satu Dimensi (1-D)............................................................................................... 49
7.1.2 Array Multi Dimensi ...................................................................................................... 50
7.2 Array Statis dan Dinamis ....................................................................................................... 51
7.3 Array sebagai Parameter Fungsi/Prosedur ........................................................................... 51
Modul 8 Searching dan Sorting ....................................................................................................... 53
8.1 Searching............................................................................................................................... 53
8.2 Metode Pencarian Datum ..................................................................................................... 54
8.2.1 Sequential Search .......................................................................................................... 54
8.2.2 Binary Search ................................................................................................................ 55
8.3 Sorting ................................................................................................................................... 56
8.4 Metode Pengurutan Data ..................................................................................................... 57
8.4.1 Bubble Sort.................................................................................................................... 57
8.4.2 Insertion Sort ................................................................................................................ 57
8.4.3 Selection Sort ................................................................................................................ 58
8.4.4 Counting sort ................................................................................................................. 58
Modul 9 Sequential File ................................................................................................................... 62
Modul 10 Mesin Abstrak .................................................................................................................. 68
10.1 Mesin Karakter ...................................................................................................................... 68
10.2 Mesin Pencacah .................................................................................................................... 70
Modul Overview .................................................................................................................................... 73
Lampiran 1 – Exit Code dalam Free Pascal ............................................................................................ 51
Lampiran 2 - Fungsi dan Prosedur Bawaan Free Pascal ....................................................................... 53
Lampiran 3 – Programming is Fun ........................................................................................................ 54
Daftar Pustaka ....................................................................................................................................... 91
Modul 1 – Pengenalan Pascal

Modul 1 Pengenalan Pascal

Tujuan
Praktikan diharapkan mampu :
o Memahami tentang algoritma dan cara kerjanya.
o Menggunakan bahasa Pascal untuk implementasi algoritma
o Menggunakan free Pascal: compile, run, dan lain-lain

1.1 Pengertian Algoritma


Algoritma adalah urutan langkah-langkah untuk memecahkan masalah. Terdapat beberapa definisi
lain dari algoritma yang dikutip dari berbagai literatur, antara lain:

o Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data


masukan menjadi keluaran.[COR92]

o Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk
memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang
terbatas. [LEV03]

o Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan
beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran.
Jadi, algoritma adalah deretan langkah komputasi yang mentransformasikan masukan
menjadi keluaran. [COR89]

*untuk lebih jelasnya silahkan buka buku “ALGORITMA DAN PEMROGRAMAN” hal 3.

Pada dasarnya, sebuah komputer tidak dapat mengerjakan apapun tanpa adanya perintah dari
manusia. Perintah-perintah yang terstruktur dan sistematis untuk membuat komputer bekerja sesuai
dengan apa yang diinginkan disebut dengan program. Komputer dapat diprogram untuk berbagai
hal, misalnya diprogram untuk melakukan perhitungan suatu ekspresi matematika dan menampilkan
hasilnya di layar monitor, diprogram untuk memainkan sebuah lagu, diprogram untuk mengurutkan
data (misalnya mengurutkan data nama siswa, data nilai siswa), diprogram untuk permainan
(game), diprogram untuk menggambar dan sebagainya. Program-program semacam itu dibuat oleh
manusia. Syarat utama dalam membuat program adalah perintah- perintah yang diberikan dalam
program tersebut harus dimengerti oleh komputer.

Bahasa komputer tersebut disebut bahasa pemrograman (programming language). Yang perlu
diingat, konsep bahasa pemrograman adalah merubah/menerjemahkan perintah-perintah
(program) yang diberikan oleh manusia ke dalam bahasa mesin yang dapat dimengerti oleh
komputer. Jadi bahasa pemrograman adalah sarana interaksi antara manusia dan komputer. Seperti
tujuan semula, bahasa pemrograman dibuat mudah dipelajari dan dimengerti agar manusia dapat
mudah membuat program komputer dengan bahasa pemrograman ini (tak perlu menggunakan
bahasa mesin untuk membuat program komputer).

Dalam membuat program, ada beberapa hal yang harus diketahui sebagai tahap awal atau konsep
dasar dalam pemrograman. Konsep-konsep dasar tersebut antara lain kalkulasi (operasi aritmatika
dasar maupun lanjut), kontrol blok program (dalam bentuk sequence, percabangan, perulangan),
komunikasi (input/output), dan jumlah memori yang digunakan (variabel, list, record).

Praktikum Dasar Algoritma dan Pemrograman 6


Modul 1 – Pengenalan Pascal

Dalam praktikum ini, bahasa pemrograman yang digunakan sebagai standar adalah bahasa
pemrograman Pascal. Keunggulan bahasa Pascal adalah keteraturan dalam pembuatan program dan
kelengkapan struktur data.

Dalam pemrograman Pascal, pokok dari pemrograman tersebut ada 3, yaitu:


1. Nama program
2. Kamus/pendefinisian variable
3. Pada bagian ini dilakukan pendefinisian variabel. Variabel adalah tempat menyimpan data.
4. Algoritma
5. Pada bagian ini notasi algoritma dituliskan. Notasi algoritma yang ditulis, akan dilaksanakan
secara berurutan

1.2 Pengenalan IDE Free Pascal


Free Pascal adalah compiler untuk bahasa Pascal. Free Pascal ini didistribusikan secara gratis di
bawah lisensi GNU Public. Versi terakhir Free Pascal (untuk berbagai platform) serta cara
instalasinya dapat di unduh di situs http://www.freePascal.org/.

1.2.1 Menulis Program


Buka Free Pascal yang telah ter-install. Untuk membuat program. Anda dapat memulai membuat
program dengan cara sebagai berikut:

1. Pilih menu File(Alt+F),

2. Pilih New.

Setelah itu akan muncul jendela baru. Silahkan tuliskan program yang ingin anda tulis. Untuk
mencoba anda dapat menulis program berikut persis seperti apa yang tertulis di buku:
Kode Bahasa Pascal
program Lat1;
begin
writeln(‘Selamat Belajar Free Pascal’);
end.

Gambar berikut akan menunjukkan isi editor setelah program diatas di ketik:

1.2.2 Menyimpan Program


Program yang telah dibuat atau dimodifikasi sebaiknya disimpan ke disk sebelum dijalankan.
Langkah ini perlu dilakukan agar program yang baru saja ditulis tidak hilang bila komputer
mendadak mati pada saat program dieksekusi atau karena sebab-sebab lain.

Praktikum Dasar Algoritma dan Pemrograman 7


Modul 1 – Pengenalan Pascal

Sebelum kita simpan, kita harus mengganti direktori untuk menyimpan atau membuka program.
Sebaiknya anda membuat 1 folder untuk menempatkan hasil kerja anda. Caranya adalah sebagai
berikut:

1. Pilih menu File,

2. Pilih Change Dir ...

3. Ubah menuju ke dalam folder yang telah anda buat (mis: D:/Praktikum),

4. Klik Change Dir.

Sebelum di Change Dir Sesudah di Change Dir

Cara menyimpan program adalah sebagai berikut:

1. Pilih menu File,

2. Pilih File Save.

3. Masukkan nama yang sesuai dengan program.

1.2.3 Menjalankan/ Mengeksekusi Program


Untuk menjalankan program terlebih dahulu kita harus melakukan proses compile terhadap
program. Proses compile adalah proses kompilasi terhadap program yang telah dibuat, dengan kata
lain proses untuk merubah program yang telah dibuat menjadi sebuah aplikasi yang dapat
dieksekusi. Proses kompilasi ini juga untuk mengecek apakah terdapat kesalahan dalam penulisan
program. Adapun caranya adalah dengan:

1. Pilih menu Compile;


2. Pilih Compile
atau bisa disederhanakan dengan (Alt+F9). Apabila program yang ditulis benar akan muncul notifikasi
sebagai berikut.

Praktikum Dasar Algoritma dan Pemrograman 8


Modul 1 – Pengenalan Pascal

Pada layar diatas terdapat informasi yang diantaranya menyatakan bahwa:


o Jumlah memori yang digunakan adalah sebesar 224K,
o Jumlah baris program sebanyak 3 Baris.
Tetapi bila ada kesalahan dalam penulisan program. Misalnya kita hilangkan tanda “ ‘ “ pada
awal penulisan writeln. Maka akan tampil sebagai berikut.

Kesalahan pada program, terdapat 2 jenis, yang pertama kesalahan sintaks atau penulisan program
seperti yang telah dijelaskan di atas. Yang kedua, yaitu kesalahan pada logika
pemrograman/semantik (misal program yang melakukan looping terus-menerus atau menampilkan
keluaran yang tidak sesuai dengan yang diinginkan).

Anda dapat mengkompilasi suatu program menjadi file yang executable (dapat dieksekusi secara
langsung dari prompt DOS) dengan cara compile seperti ini. Jadi setelah dilakukan Compile maka
akan terdapat file executable pada folder tempat anda menyimpan program.

Apabila program sudah benar. Maka kita akan lanjut ke dalam tahap eksekusi program. Untuk
menjalankan program yang telah berada pada editor, lakukan langkah berikut:
1. Pilih menu Run,
2. Pilih Run.

Kedua cara tersebut dapat disingkat menjadi Ctrl+F9. Setelah itu pada layar akan tampak output:
Selamat Belajar Free Pascal.

Praktikum Dasar Algoritma dan Pemrograman 9


Modul 1 – Pengenalan Pascal

Komentar pada Program


Dalam pembuatan program, ada kalanya kita ingin memberikan sebuah komentar pada program
untuk suatu tujuan tertentu, misal menjadi pengingat kegunaan sebuah fungsi atau blok program,
memberikan penjelasan tentang program yang telah dibuat (dengan harapan dapat membantu orang
lain yang membaca program tersebut) atau sebagai dokumentasi dari program yang telah dibuat
(memberikan nama programmer, tempat dan tanggal program dibuat, deskripsi singkat program,
dsb).

Komentar komentar yang diberikan pada program ini, nantinya tidak akan di proses pada saat proses
kompilasi (diabaikan). Dalam Bahasa pemrograman Pascal terdapat 2 cara untuk memberikan
komentar pada program, yaitu :

o Jika ingin memberikan komentar pada suatu baris tertentu, dapat memberikan tanda “//”
pada awal baris pada suatu program

o Jika ingin memberikan komentar lebih dari 1 baris (berurutan), dapat memberikan tanda “{”
pada baris pertama komentar dan tanda “}” pada baris akhir komentar

Tips menulis program yang baik


o Cara menulis program dengan diketik agak ke dalam, disebut dengan indentasi. Cara ini
berguna untuk memudahkan membaca blok-blok perintah program, terutama pada program
yang memiliki banyak struktur subblok

o Berikan komentar secukupnya. Orang lain yang membaca program tersebut akan sangat
terbantu pada saat membacanya. Demikian juga diri sendiri pun akan sangat terbantu, pada
saat membaca ulang program tersebut di masa yang akan dating

o Jangan berlebihan dan bertele-tele dalam memberikan komentar! Usahakan singkat, padat,
tepat dan jelas (kecuali, apabila komentar tersebut dipakai untuk keperluan
pengajaran/tutorial)

o Berikan dokumentasi berupa penjelasan singkat tentang maksud program yang dibuat,
tanggal pembuatan, identitas coder, ataupun instansi yang berkaitan

Praktikum Dasar Algoritma dan Pemrograman 10


Modul 1 – Pengenalan Pascal

Soal
Bagian I
1. Dapatkah suatu program dikompilasi tanpa dijalankan? Bagaimana caranya?

2. Apa fungsi dari tombol Alt+X?

3. Mengapa anda sebaiknya menyimpan program anda sebelum melakukan eksekusi?

4. Mungkinkah suatu program yang baru dibuat dijalankan tanpa dikompilasi?

Bagian II
Perhatikan program berikut ini.
Program IFLAB;
uses crt; {*}
TYPE karyawan = record nama : String;
jml_lembur,gol : integer;
gaji_pokok,bonus_tetap,bonus_lembur,gaji_bulan,gaji_total: real;
end;

var
a :
karyawan begin
clrscr; {**}
write('Masukkan nama karyawan : '); readln(a.nama);
writeln('Golongan Karyawan : ');
writeln(' 1. Golongan I ');
writeln(' 2. Golongan II ');
writeln(' 3. Golongan III ');
write('Masukkan golongan karyawan : '); readln(a.gol);
write('Masukkan jumlah lembur : '); readln(a.jml_lembur);
case a.gol of
1 : begin
a.gaji_pokok := 250000;
end;
2 : begin
a.gaji_pokok := 500000;
end;
3 : begin
a.gaji_pokok := 750000;
end;
a.bonus_tetap := 0.25*a.gaji_pokok;
a.bonus_lembur := a.jml_lembur*a.bonus_tetap;
a.gaji_bulan := a.gaji_pokok+a.bonus_tetap+a.bonus_lembur;
writeln('---Jumlah Gaji---');
writeln('Nama Karyawan : ',a.nama);

Praktikum Dasar Algoritma dan Pemrograman 11


Modul 1 – Pengenalan Pascal

writeln('Golongan Karyawan : ',a.gol);


writeln('Jumlah lembur : ',a.jml_lembur);
writeln('Total Gaji per bulan : Rp. ',a.gaji_bulan:0:0);
readln;
end.

a. Salin potongan program tersebut ke aplikasi Pascal!

b. Bila program tersebut di-compile apa yang terjadi? Sudah benarkah program tersebut? Jika
belum perbaiki program tersebut hingga benar!

c. Hapus sintaks yang ditandai dengan “{**}”, apa yang terjadi? Apa pula yang terjadi

d. bila sintaks yang ditandai dengan “{*}” yang dihapus?

e. Simpan program tersebut ke direktori masing-masing!

f. Jalankan program tersebut dan jelaskan maksud program tersebut!

Shortcut Key
1. Untuk membuka file (open), atau bahkan untuk membuat file baru, tekan F3.
Ketikkan nama file yang ingin dibuka, bila file tersebut tidak ditemukan, FPC
akan membuat file baru dengan nama tersebut.
2. Untuk menyimpan file (save) secara cepat, tekan tombol F2
3. Untuk meng-compile dan me-run program sekaligus tekan tombol CTRL+F9.
4. Untuk melihat output program di layar dos, tekan ALT+F5
5. Untuk change directory dengan cepat gunakan kombinasi tombol ALT+F
kemudian C.
6. Untuk berpindah ke file lain yang sedang dibuka, tekan F6
7. CTRL+C dan CTRL+V tidak berfungsi di IDE FPC, gunakan kombinasi :
a. CTRL+Insert untuk Copy b.
SHIFT+Insert untuk Paste c.
SHIFT+Delete untuk Cut

Praktikum Dasar Algoritma dan Pemrograman 12


Modul 1 – Pengenalan Pascal

8. Hafalkan shortcut-shortcut diatas! Semakin jarang anda menggunakan


mouse, semakin cepat anda mengetik sebuah program. Memindahkan tangan dari
keyboard ke mouse untuk meng-klik File kemudian meng-klik Save akan makan
waktu jauh lebih banyak dibandingkan dengan menekan
tombol F2! Berikut adalah beberapa shortcut untuk meng-edit text (terutama
untuk mem-block / men-select text) tanpa bantuan mouse :
a. Undo : Alt + Backspace
b. Mengawali blok Ctrl + K B
c. Mengakhiri blok Ctrl + K K
d. Menghilangkan blok Ctrl + K Y
e. Menambah blok satu karakter ke kiri Shift + Panah kiri
f. Menambah blok satu karakter ke kanan Shift + Panah kanan
g. Menambah blok ke akhir baris Shift + End
h. Menambah blok ke baris di atasnya Shift + Panah atas
i. Menambah blok ke baris di bawahnya Shift + Panah bawah
j. Menambah blok satu kata di kiri Ctrl + Shift + Panah kiri
k. Menambah blok satu kata di kanan Ctrl + Shift + Panah kanan
l. Menambah blok satu halaman ke atas Shift + Page Up
m. Menambah blok satu halaman ke bawah Shift + Page Down
n. Menambah blok hingga ke awal program Ctrl + Shift + Home

Praktikum Dasar Algoritma dan Pemrograman 13


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

Modul 2 Variabel, Record, I/O,


Assignment dan Operator

Tujuan
Praktikan diharapkan dapat :
o Mengetahui tipe primitif maupun tipe bentukan dalam Pascal.
o Mengetahui instruksi masukan dan assignment.
o Memahami ekspresi dan operator.
o Membuat program yang dapat dieksekusi.
o Mengetahui prosedur standar dalam Pascal.

2.1 Variabel
Variabel dapat didefinisikan sebagai sesuatu yang memiliki nilai dan tipe data yang nilainya dapat
berubah-ubah. Penamaan variabel ini memiliki aturan. Aturan penamaan tersebut adalah sebagai
berikut:

o Maksimal 32 karakter.
o Hanya boleh terdiri dari karakter huruf abjad (A-Z, a-z), angka (0-9), dan garis bawah /
underscore ( _ ).
o Harus diawali dengan karakter huruf abjad.
o Tidak boleh sama dengan variabel lain.
o Tidak boleh sama dengan keyword (kata kunci), seperti program, var, begin, end, if, case,
dan lain-lain

2.2 Input / Output


Perintah input dalam Pascal ada 2 macam yaitu: read dan readln. readln digunakan untuk
memasukkan data perbaris, artinya setelah tombol Enter ditekan, maka akan ganti baris. Perintah
read tidak ganti baris, masih dalam baris yang sama.

Perintah output dalam Pascal ada 2 macam yaitu: write dan writeln. write akan mengoutputkan
data dalam satu baris. writeln akan mengoutputkan data lalu posisi kursor akan berganti baris.

Contoh Input / Output:


Pseudo Code Kode Bahasa Pascal Output
Program baca1; (*deskripsi : contoh membaca dengan readln Contoh membaca dan
kamus kemudian menuliskan yang dibaca*) menulis, ketik nilai
a: integer; Program baca1; integer
Var 6
Algoritma a: integer; nilai yang dibaca : 6
input(a);
output(a) Begin
writeln('contoh membaca dan
menulis, ketik nilai integer');
readln(a);
writeln('nilai yang dibaca : ',a);
readln;
End.

Praktikum Dasar Algoritma dan Pemrograman 14


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

2.3 Tipe Data


Seperti yang telah disebutkan pada subbab 2.1, dalam pemrograman, ada yang disebut dengan
variabel, yaitu sebuah nilai dengan tipe data tertentu yang nilainya dapat berubah-ubah. Variabel ini
memiliki tipe data tertentu yang sudah didefinisikan sebelumnya. Variabel yang sudah didefinisikan
dengan sebuah tipe data tertentu hanya dapat dimasukkan nilai dengan tipe data tersebut saja.
Contoh, variabel abc sebelumnya didefinisikan sebagai variabel yang dapat menyimpan data bilangan
bulat (integer) maka, variabel abc hanya dapat diisi oleh bilangan 1,2,3, dan lain sebagainya. Variabel
abc tidak akan bisa diisi dengan bilangan desimal seperti 2.5. dengan kata lain, tipe data adalah
sebuah pengklasifikasian sebuah data yang dapat disimpan dalam sebuah variable

2.3.1 Tipe Data Dasar


Tipe dasar adalah tipe yang sudah didefenisikan pada suatu bahasa pemrograman (dalam hal ini
Pascal) dan siap untuk digunakan. Dalam algoritma, kita mengenal 5 tipe dasar. Berikut ini adalah
tabel yang berisikan macam-macam tipe yang ada pada algoritma dan transisinya pada bahasa
Pascal.

Tabel 2.1: tipe dasar pada algoritma dan bahasa Pascal

Dalam Algoritma Dalam Pascal Keterangan


Integer Integer Digunakan untuk variabel yang
Byte menyimpan bilangan bulat
Longint
Shortin
String String Digunakan untuk variabel yang
menyimpan
Real Real Digunakan untuk variabel yang
Single menyimpan bilangan riil
Double
Extended
Comp
Karakter Char Digunakan untuk variabel yang
menyimpan
Booelan Boolean Digunakan untuk variabel yang
menyimpan nilai TRUE (1) atau
FALSE

Praktikum Dasar Algoritma dan Pemrograman 15


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

Contoh penggunaan tipe data dasar :


Pseudo Code Kode Bahasa Pascal Output
Kamus Program TDasar;
a : word Var
i: integer a : word; i: integer;
z: longint z: longint; x,y: real;
x,y: real found: boolean;
found: boolean Begin
Algoritma a:=15;
a  15 writeln('a= ',a); a= 15
output(a) i:=15000;
i  15000 writeln('i= ',i); i=15000
output(i) x:=0.5;
x 0.5 writeln('x= ',x); x=5.0000000 E-001
output(x) y:=1.56789;
y1.56789 writeln('y= ',y:0:2); y=1.57
output(y) z:=1000000;
z1000000 writeln('z= ',z); z=1000000
output(z) found := true ;
found  true writeln('found = ',found) ; found=TRUE
output(found) readln;
End.

Contoh Tipe Data Dasar String :


Pseudo Code Kode Bahasa Pascal Output
(*deskripsi : alokasi string,
kemudian mengisi dengan membaca*)
Program bacaSTR1 Program bacaSTR1;
kamus Var
str1, str2: string str1, str2: string;
Algoritma Begin Baca string, maks 256
input(str1) writeln('Baca string, maks karakter
output(str1) 256 karakter'); Halo
str2str1 readln(str1); String yang dibaca :
output(str2) writeln('String yang dibaca : Halo
',str1); String yang disalin :
str2:=str1; Halo
writeln('String yang disalin
: ',str2);
readln;
End.

(*deskripsi : contoh membaca


string kemudian menuliskan yang
Program bacastr2 dibaca*)
Kamus Program bacastr2;
nim,nama: string Var
Begin nim,nama: string;
input(nim) Begin masukkan nim kamu :
input(nama) write('masukkan nim kamu : 11314
output(nim,nama) '); masukkan nama kamu :
readln(nim); beni
write('masukkan nama kamu : selamat dating beni
'); readln(nama); (11314)
writeln('selamat datang
',nama,
' (',nim, ' ) ');
readln;
End.

Praktikum Dasar Algoritma dan Pemrograman 16


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

2.3.2 Konstanta
Konstanta adalah sebuah tipe data yang bernilai tetap dan tidak akan pernah berubah selama
program dijalankan. Konstanta dapat bernilai numerik (angka), karakter, ataupun sebuah String.
Dalam penulisan program, konstanta didefinisikan didalam blok CONST yang ada di atas blok VAR.

Contoh Konstanta :
Pseudo Code Kode Bahasa Pascal Output
Program KONSTANTA Program KONSTANTA; Jari-jari lingkaran = 6
Kamus CONST Luas lingkaran = 113.09
r,luas: real pi = 3.1415; Akhir program
Constant VAR
pi=3.1415 r,luas: real;
begin
Algoritma write('Jari-jari lingkaran = ');
input(r) readln(r);
luasphi*r*r luas:=pi*r*r;
output(luas) writeln('Luas lingkaran = ',luas:0:2);
writeln('Akhir program');
readln;
end.

2.3.3 Record / Tipe Bentukan


Record / tipe bentukan adalah tipe yang didefinisikan sendiri oleh programmer untuk menampung
elemen data yang tipenya tidak perlu sama dengan tujuan mewakili satu jenis objek.

Contoh tipe bentukan:


Pseudo Code Kode Bahasa Pascal Output
{contoh pendefinisian dan pengisian contoh mengisi
Program tipe1 struktur record point} struktur dengan
TYPE Program tipe1; assignment
Point = < TYPE titik P1, dengan P1.x
X : integer Point = record dan P1.y :
Y : integer X : integer; (*absis*) P1.x = 1
> Y : integer; (*ordinat*) P1.y = 2
end; Baca titik P2
Kamus VAR Absis : 3
P1,P2 : point P1,P2 : point; Ordinat : 4
Begin Koordinat : 3,4
writeln('contoh mengisi struktur
Algoritma dengan assignment');
P1.x 1 writeln('titik P1, dengan P1.x
P1.y 2 dan
Output(P1.x,P1.y) P1.y : ');
input(P2.x) P1.x:=1; P1.y:=2;
input(P2.y) writeln('P1.x = ',P1.x);
output(P2.x,P2.y) writeln('P1.y = ',P1.y);
writeln('baca titik P2');
write('absis : ');
readln(P2.x);
write('ordinat : ');
readln(P2.y);
writeln('koordinat : ',P2.x, ',
',P2.y);
readln;
End.

Praktikum Dasar Algoritma dan Pemrograman 17


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

Contoh tipe bentukan :


Pseudo Code Kode Bahasa Pascal Output
Program tipe2 Program tipe2;
TYPE TYPE
MAHASISWA = < MAHASISWA = record
Nama : string Nama : string;
NIM : string NIM : string; Nilai: real;
Nilai: real end;
>
VAR
Kamus Mhs : MAHASISWA;
Mhs : MAHASISWA {Harap diperhatikan bahwa “Mhs”
adalah nama variabel dan
“MAHASISWA” adalah nama tipe contoh mengisi struktur
Algoritma bentukan} dengan assignment
Mhs.nama  'Juliete' Hasil assignment thd mhs
Mhs.nim  '7473' nama = Juliete
Mhs.nilai  80 Begin NIM = 7473
Output(mhs.nama) writeln('contoh mengisi nilai = 80.00
Output(mhs.nim) struktur
Output(mhs.nilai) dengan assignment');
Mhs.nama := 'Juliete';
Mhs.nim := '7473';
Mhs.nilai := 80; Hasil assignment thd mhs
{pemakaian WITH untuk writeln('Hasil assignment thd nama = Juliete
RECORD} With Mhs do mhs'); NIM = 7473
Output(nama) writeln('nama = ',mhs.nama); nilai = 80.00
Output(nim) writeln('NIM = ',mhs.nim);
Output(nilai) writeln('nilai
=',mhs.nilai:6:2);

{pemakaian WITH untuk RECORD}


writeln('hasil assignment thd
mhs');
With Mhs do
Begin
writeln('nama = ',nama);
writeln('NIM = ',nim);
writeln('nilai
=',nilai:6:2);
end;
readln;
End.

2.4 Assignment
Assignment adalah proses pemberian nilai terhadap suatu variabel. dan tentunya setiap nilai yang
dimasukkan harus sesuai dengan tipe data variabel.

Contoh Assignment:
Pseudo Code Kode Bahasa Pascal Output
(*deskripsi : assignment suatu
variabel dan menampilkan nilai
Program asign variabel yang diassign*)
kamus Program asign;
x: integer y: integer Var
z: string x: integer; y: integer; z:
string;
Algoritma Nilai x : 100
x100 Begin Nilai y : 500
y500 writeln('contoh program Nilai z : prolab
z 'prolab' assignment! '); Nilai max integer :
output(x) x:=100; 32767

Praktikum Dasar Algoritma dan Pemrograman 18


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

output(y) y:=500; Nilai max longint :


output(z) z:= 'prolab'; 2147483847
output(maxint) writeln('nilai x :
output(maxlongint) ',x);
writeln('nilai y :
',y);
writeln('nilai z :
',z);
writeln('nilai max integer :
',maxint);
writeln('nilai max longint :
',maxlongint);
readln;
End.

2.5 Ekspresi dan Operator


Ekspresi merupakan suatu “rumus perhitungan”, yang terdiri dari operand dan operator. Operand
harus memiliki nilai, oleh karenanya operand dapat berupa variabel, konstanta atau nilai itu sendiri.
Berdasarkan hasil dari ekspresi, ekspresi dibagi menjadi dua jenis, yaitu:

1. Ekspresi Boolean

Ekspresi Hasil
True and False False
True or False True

2. Ekspresi Numerik

Ekspresi Hasil
1+5 6
1+3*5 16
1/2 0.5
1.9/0.2 9.5
10 mod 3 1
10 div 3 3

Sama dengan ekspresi, operator juga dibagi menjadi 2 jenis, yaitu operator Boolean (operator
logika) dan operator numerik. Berikut ini daftar operator boolean pada algoritma dan pada bahasa
Pascal.
Tabel 2.2. notasi operator logika pada algoritma dan Tabel 2.3. notasi operator numerik pada algoritma
Bahasa Pascal dan Bahasa Pascal
Dalam Algoritma Dalam Pascal Dalam Algoritma Dalam Pascal
< < + +
> < - -
≥ >= * *
≤ <= / /
= = mod mod
≠ <> div div

Praktikum Dasar Algoritma dan Pemrograman 19


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

Apa itu div dan mod?

Lihat contoh berikut :


5 / 2= 2.5 sedangkan 5 div 2=2, berarti operator “div” sama saja dengan operator “bagi”, tetapi
pada “div”, angka di belakang koma dihilangkan. Mod adalah sisa hasil div. Sebagai contoh “11 mod
3=2” karena 11 div 3 = 3 sisa 2.

Pseudo Code Kode Bahasa Pascal Output


Program oparit (*deskripsi : contoh
Kamus pengoperasian aritmatika*)
i,j: integer Program oparit;
x,y,hsl: real Var
i,j: integer;
Algoritma x,y,hsl: real;
i100
j200 Begin
Output(i) writeln('Contoh operator Contoh operator
Output(j) Aritmatik'); Aritmatik
Output(i+j) i:=100; j:=200; I = 100
Output(i-j) writeln('i = ',i); J = 200
Output(i*j) writeln('j = ',j); Hasil penjumlahan : 300
Output(i div j) writeln('hasil penjumlahan : Hasil pengurangan : -
Output(i mod j) ',i+j); 100
x100 writeln('hasil pengurangan : Hasil perkalian : 2000
y3 ',i-j); Hasil div : 0
Output(x) writeln('hasil perkalian : Hasil mod : 100
Output(y) ',i*j); X = 1.0000000000E+002
Hsl  x/y writeln('hasil div : ',i div Y = 3.0000000000E+000
Output(Hsl) j); Hasil pembagian : 33.33
writeln('hasil mod : ',i mod
j);
x:=100; y:=3;
writeln('x = ',x);
writeln('y = ',y);
Hsl:x/y;
writeln('hasil pembagian :
',Hsl:0:2);
readln;
End.

Pseudo Code Kode Bahasa Pascal Output


(*deskripsi : contoh
Program oplog pengoperasian logika*)
Kamus Program oplog;
bool1,bool2:Boolean Var
bool1,bool2:Boolean;
Algoritma
bool1true Begin Contoh operator logika
bool2false writeln('Contoh operator
logika'); Bool1 = TRUE
Output(bool1) bool1:=true; bool2:=false; Bool2 = FALSE
Output(bool2) writeln('bool1 = ',bool1);
writeln('bool2 = ',bool2); TRUE AND FALSE = FALSE
Output(bool1 AND writeln(bool1, ' AND ',bool2,
bool2) ' = ', TRUE OR FALSE = TRUE
Output(bool1 OR bool2) bool1 AND bool2);
writeln(bool1, ' OR ',bool2, NOT TRUE = FALSE
' = ',

Praktikum Dasar Algoritma dan Pemrograman 20


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

Output(NOT bool1) bool1 OR bool2); TRUE XOR FALSE = TRUE


Output(bool1 XOR writeln('NOT ',bool1, ' = ',
bool2) NOT bool1);
writeln(bool1, ' XOR ',bool2,
' = ',bool1 XOR bool2);
readln;
End.

Apa itu Array?

Contoh program yang di bawah ini merupakan penggunaan Array atau Larik pada pemrograman
Pascal. Apa itu Array/Larik? Pada dasarnya array sama seperti variabel yang berfungsi untuk
menampung nilai, hanya saja pada array kita dapat menampung lebih dari suatu nilai. Hal ini
berbeda dengan variabel yang hanya dapat menampung satu nilai saja. Layaknya variabel, array
juga memiliki tipe data yang harus dideklarasikan terlebih dahulu, seperti integer, string, boolean,
dan lain-lain. Dikarenakan array dapat menampung lebih dari suatu nilai maka untuk pengaksesan
tiap-tiap elemennya dibutuhkan indeks. Untuk penjelasan lebih lanjutnya akan dibahas pada modul
7.
Pseudo Code Kode Bahasa Pascal Output
Program ApaItuArray;
uses crt;
Program ApaItuArray
Kamus Var
larik : array [1..3] larik : array [1..3] of
of integer integer;

begin
Algoritma Clrscr;
{Proses pengisian elemen {Proses pengisian elemen Masukkan bilangan ke-1
array} array} : 3
input (larik[1]) write ('Masukkan bilangan ke- Masukkan bilangan ke-2
input (larik[2]) 1 : '); : 4
input (larik[3]) readln (larik[1]); Masukkan bilangan ke-3
write ('Masukkan bilangan ke- : 2
Output (larik[1]) 2 : ');
Output (larik[2]) readln (larik[2]); Bilangan ke-1 : 3
Output (larik[3]) write ('Masukkan bilangan ke- Bilangan ke-2 : 4
3 : '); Bilangan ke-3 : 2
readln (larik[3]);

writeln ('Bilangan ke-1 :


',larik[1]);
writeln ('Bilangan ke-2 :
',larik[2]);
writeln ('Bilangan ke-3 :
',larik[3]);
readln;
end.

Praktikum Dasar Algoritma dan Pemrograman 21


Modul 2 – Variabel, Record, I/O, Assignment dan Operator

Soal
1. Tuliskan program yang dapat menerima input/masukan biodata diri
mahasiswa meliputi: nim, nama, kelas;
format tampilan :
NIM : <mengisiNIM>
Nama:<mengisiNama>
Kelas :<mengisiKelas>
<selang 2 baris>
Selamat, <nama> anda memiliki NIM = <NIM> dengan kelas <Kelas>
Program anda jalan.
2. Apa perbedaan antara read dan readln?
3. Jelaskan perbedaan antara kedua pernyataan berikut:
WriteLn(279); dan WriteLn(279 : 8);

4. Buatlah sebuah program untuk menghitung selisih waktu awal dan waktu akhir suatu
percakapan dan menuliskan durasi waktu dalam detik. Gunakan tipe bentukan!
Contoh :
---input---
Jam Awal : 08.45.00
Jam Akhir : 09.00.30

---output---
Lamanya waktu pembicaraan : 930 detik

5. Buatlah sebuah program untuk menginputkan 3 mahasiswa (nama, nim, nilai) lalu
menampilkan nilai rata-ratanya! (gunakan record)!
6. Buat program yang dapat menukar isi dua buah variabel yang bertipe integer.
format tampilan
:

Masukan nilai A= <mengisi nilaiA> Masukan nilai B=


<mengisi nilaiB> Setelah ditukar menjadi:
Nilai A = <nilaiA> Nilai B = <nilaiB>
Conto
h:
Masukan nilai A= 5
Masukan nilai B= 3
Setelah ditukar menjadi: Nilai A = 3
Nilai B = 5

Praktikum Dasar Algoritma dan Pemrograman 22


Modul 3 – Percabangan

Modul 3 Percabangan

Tujuan
Praktikan diharapkan dapat :
o Mengerti esensi penggunaan Percabangan dalam Algoritma dan Pascal.
o Memahami bentuk umum Percabangan (pemilihan)
o Mampu memecahkan masalah sederhana dengan menggunakan Percabangan serta
mengimplementasikan ke dalam Pascal.

Analisis kasus adalah sebuah penentuan kasus-kasus yang mungkin terdapat didalamnya. Untuk
setiap kasus ada aksi tertentu yang dilakukan. Adanya analisis kasus menyebabkan terjadi pemilihan
instruksi (atau percabangan) dalam algoritma, tergantung dari kasus mana yang terpenuhi.

3.1 If – Then
3.1.1 If – Then 1 kondisi
Adalah sebuah kasus dimana aksi akan dilaksanakan bila kondisi bernilai benar (true). Bila kondisi
salah (false), tidak ada aksi apapun yang dikerjakan.
Pseudo Code Kode Bahasa Pascal
(* Deskripsi : program untuk menentukan
apakah angka yang
Program CekNilai diinputkan lebih besar dari 0 atau tidak *)
Kamus Program CekNilai;
Angka : integer Uses crt;
Var
Algoritma Angka:integer;
Input(angka) Begin
Clrscr;
If(angka > 0 ) then write(masukkan suatu angka: „);
Output(“lebih besar dari 0”) readln(Angka);
If (Angka>0) then
write(“ Angka yang anda masukkan lebih
besar dari 0‟);
readln;
End.

3.1.2 If – Then 2 kondisi


Adalah sebuah kasus dimana aksi1 akan dilaksanakan bila kondisi bernilai benar (true). Bila kondisi
salah (false), maka aksi2 yang akan dilaksanakan.

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : program untuk menentukan
apakah angka yang diinputkan termasuk bilangan
Program Ganjil ganjil atau genap*)
Uses crt Program Ganjil;
Kamus Uses crt;
Angka:integer Var
Angka:integer;
Algoritma
Begin
readln(Angka) Clrscr;
If (Angka mod 2 = 1) then write('masukkan suatu angka: ');

Praktikum Dasar Algoritma dan Pemrograman 23


Modul 3 – Percabangan

Output(“ganjil”) readln(Angka);
Else If (Angka mod 2 = 1) then
Output(“genap”) write('angka yang anda masukkan bilangan
ganjil')
Else
write('angka yang anda masukkan bilangan
genap');
readln;
End.

3.1.3 If – Then lebih dari 2 kondisi


Adalah sebuah kasus dimana aksi tertentu akan dilaksanakan apabila memenuhi kondisi
tertentu yang telah ditetapkan.
Pseudo Code Kode Bahasa Pascal
(* Deskripsi : program untuk mengecek apakah angka yang
diinputkan positif, negatif, atau nol *)
Program Cek Program Cek;
Uses crt;
Kamus Var
angka:integer angka:integer;
Begin
Algoritma Clrscr;
input(angka) write('masukkan suatu angka: ');
If (angka>0) then readln(angka);
Output(‘positif') If (angka>0) then
Else if (angka<0) then writeln('angka yang anda masukkan bernilai
Output (‘negatif') positif')
Else Else if (angka<0) then
Output (‘nol') writeln('angka yang anda masukkan bernilai
negatif')
Else
writeln('angka yang anda masukkan adalah nol');
readln;
End.

3.1.4 If – Then Bertingkat


Adalah sebuah kasus dimana didalam sebuah kondisi masih terdapat kondisi lainnya untuk
menjalankan aksi tertentu.
Pseudo Code Kode Bahasa Pascal
(* Deskripsi : program untuk mencari posisi
sebuah titik pada kuadran dengan penanganan
kasus titik berada pusat koordinat, sumbu x,
Program Kuadran atau sumbu y *)
Program Kuadran;
Uses crt;
Type
Ttitik=< Type
X:real Y:real Ttitik=record
> X:real; Y:real;
Kamus end;
titik:Ttitik Var
titik:Ttitik;
Algoritma
input(titik.X) Begin
input (titik.Y) Clrscr;
if (titik.X>0) and (titik.Y>0) write('Masukkan Koordinat X : ');
then readln(titik.X);
output('Titik terletak di write('Masukkan Koordinat Y : ');
Kuadran I') readln(titik.Y);
else if (titik.X<0) and if (titik.X>0) and (titik.Y>0) then

Praktikum Dasar Algoritma dan Pemrograman 24


Modul 3 – Percabangan

(titik.Y>0) then writeln('Titik terletak di Kuadran I')


output ('Titik terletak di else if (titik.X<0) and (titik.Y>0) then
Kuadran II') writeln('Titik terletak di Kuadran II')
else if (titik.X<0) and else if (titik.X<0) and (titik.Y<0) then
(titik.Y<0) then writeln('Titik terletak di Kuadran III')
output ('Titik terletak di else if (titik.X>0) and (titik.Y<0) then
Kuadran III') writeln('Titik terletak di Kuadran IV')
else if (titik.X>0) and else
(titik.Y<0) then begin
output ('Titik terletak di if (titik.X=0) and (titik.Y=0) then
Kuadran IV') writeln('Titik di pusat koordinat 0,0')
else else
if (titik.X=0) and begin
(titik.Y=0) then if (titik.X=0) then
output ('Titik di pusat writeln('Titik di sumbu Y')
koordinat 0,0') else
else writeln('Titik di sumbu X');
if (titik.X=0) then end;
output ('Titik di end;
sumbu Y') readln;
else End.
output ('Titik di
sumbu X')

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : program untuk mengecek status
Program Kuadran boolean *)
Program Kuadran;
Kamus Uses crt;
kondisi1 : boolean Var
kondisi2 : Boolean kondisi1 : boolean;
kondisi2 : Boolean;
Algoritma Begin
kondisi1true Clrscr;
kondisi2false kondisi1:=true;
kondisi2:=false;
If (kondisi1 AND kondisi2)then
Output(kondisi1, ' AND If (kondisi1 AND kondisi2)then
',kondisi2, ' TRUE') writeln(kondisi1,' AND ',kondisi2, '
Else bernilai TRUE')
Output(kondisi1, ' AND Else
',kondisi2, ' FALSE') writeln(kondisi1,' AND ',kondisi2,'
bernilai FALSE');
If (kondisi1 OR kondisi2) then
Output(kondisi1, ' OR If (kondisi1 OR kondisi2) then
',kondisi2, ' TRUE') writeln(kondisi1, ' OR ',kondisi2, '
Else bernilai TRUE')
Output(kondisi1, ' OR Else
',kondisi2, ' FALSE') writeln(kondisi1, ' OR ',kondisi2, '
bernilai FALSE');
readln;
End.

Pseudo Code Kode Bahasa Pascal


Program Kuadran (* Deskripsi : program untuk mengecek
Uses crt status boolean *)
Kamus Program Kuadran;
nilai1 : integer Uses crt;
nilai2 : integer Var
Algoritma nilai1 : integer;
input(nilai1) nilai2 : integer;
input(nilai2) Begin
If (nilai1 > nilai2)then Clrscr;
Output(nilai1, ' > ',nilai2) writeln(„masukkan suatu nilai integer‟);
readln(nilai1);

Praktikum Dasar Algoritma dan Pemrograman 25


Modul 3 – Percabangan

If (nilai1 < nilai2)then writeln(„masukkan nilai pembatas‟);


Output(nilai1, ' < ',nilai2) readln(nilai2);
If (nilai1 > nilai2)then
If (nilai1 >= nilai2)then writeln(nilai1, ' > ',nilai2);
Output(nilai1, ' >= ',nilai2)
If (nilai1 < nilai2)then
If (nilai1 <= nilai2)then writeln(nilai1, ' < ',nilai2);
Output(nilai1, ' <= ',nilai2)
If (nilai1 >= nilai2)then
If (nilai1 <> nilai2)then writeln(nilai1, ' >= ',nilai2);
Output(nilai1, ' <> ',nilai2)
If (nilai1 <= nilai2)then
If (nilai1 = nilai2)then writeln(nilai1, ' <= ',nilai2);
Output(nilai1, ' = ',nilai2)
If (nilai1 <> nilai2)then
writeln(nilai1, ' <> ',nilai2);

If (nilai1 = nilai2)then
writeln(nilai1, ' = ',nilai2);
readln;
End.

3.1.5 Case of
Untuk masalah dengan dua kasus atau lebih, konstruksi CASE dapat menyederhanakan penulisan IF-
THEN-ELSE yang bertingkat – tingkat. Konstruksi CASE memeriksa apakah nilai dari ekspresi
tersebut sama dengan salah satu dari nilai1, nilai2, nilai3, ..., nilain (semua nilai berbeda). Jika nilai
ekspresi sama dengan salah satu dari nilai –nilai tersebut, maka aksi yang bersesuaian dilaksanakan.
Apabila tidak terdapat suatu kecocokan maka akan melakukan aksi yang terdapat dalam nilai
otherwise/else. Otherwise/else bersifat optional.
Pseudo Code Kode Bahasa Pascal
(* Deskripsi : program memilih menu*)
Program menu;
uses crt;
Program menu
var
kamus pilihan:char;
pilihan:char begin
clrscr;
Algoritma writeln('Menu Utama');
writeln('1. Input Data');
Output(‘menu’) writeln('2. Update Data');
input(pilihan) writeln('3. Delete Data');
writeln('4. Keluar');
depend on pilihan write('Pilih : ');
case '1': readln(pilihan);
Output('Selamat datang di menu
input case pilihan of
anggota') '1':begin
case '2': writeln('Selamat datang di menu
Output('Selamat datang di menu input
update anggota');
anggota') readln;
case '3': end;
Output('Selamat datang di menu '2':begin
delete writeln('Selamat datang di menu
anggota') update
case '4':begin anggota');
Output('Keluar') readln;
end;
'3':begin
writeln('Selamat datang di menu
delete

Praktikum Dasar Algoritma dan Pemrograman 26


Modul 3 – Percabangan

anggota');
readln;
end;
'4':begin
writeln('Keluar');
readln;
End
END.

Contoh Indeks nilai


Pseudo Code Kode Bahasa Pascal
(* Deskripsi : program melakukan penentuan
Program nilai indeks nilai*)
Program nilai;
kamus uses crt;
nilai:integer var
nama, kelas, indeks:string nilai:integer;
nama, kelas, indeks:string;
Algoritma
clrscr begin
input(nama) clrscr;
input(kelas) write('nama mahasiswa : '); readln(nama);
input(nilai) write('kelas : '); readln(kelas);
write('nilai : '); readln(nilai);
depend on nilai
0..54 : indeks  'E' case nilai of
55..64 : indeks  'D' 0..54 : indeks := 'E';
65..74 : indeks  'C' 55..64 : indeks := 'D';
75..84 : indeks  'B' 65..74 : indeks := 'C';
85..100 : indeks  'A' 75..84 : indeks := 'B';
85..100 : indeks := 'A';
end;
output(nama,kelas,indeks)
write(nama,' mahasiswa ',kelas,' mendapatkan
indeks',indeks);
readln;
end.

Praktikum Dasar Algoritma dan Pemrograman 27


Modul 3 – Percabangan

Soal
1. Cari kesalahan dalam kode program berikut, kemudian tuliskan kode program yang
benar (correct).
If Bil < 0 then
writeln(“negatif‟);
Else
writeln(“Positif‟);
writeln(“selesai‟);

2. Tuliskan program Pascal untuk masing – masing persoalan berikut:


a. Jika total pembelian lebih dari 100.000, tampilkan tulisan ‘anda mendapatkan diskon
10%’.
b. Tampilkan tulisan ‘Digit‟ jika variabel Kar(Bertipe Char) berisi sebuah digit atau
menuliskan ‘Bukan Digit’ kalau Kartidak berisi digit.

3. Su at u h ar i , J on o sed an g be l a ja r an g ka -a n g ka . Ta pi d ia t i da k b i s a m e ne ntu ka n m a
na ang ka ya n g le bi h b e sa r d a r i a n g ka ya n g l a in . K a ka k n ya , Jo n i m en cob a m e
mb a ntu j on o de n g an me mb u at kan s e bu ah p r o gr a m unt u k m en ge t ahu i m a na b i
la n g an ya n g pa l in g b e sa r d an ma na b i l an g an yan g p al i ng ke ci l . Co b a b an tu j on
i u nt u k me n ge r ja ka n pr o g r am t e r se but ! (in pu ta n 4 bi l a n ga n )

4. Tuliskan program untuk menghitung total harga barang yang mengikuti aturan berikut:
a. Jika jumlah barang yang dibeli < 100 buah, maka harga per barang adalah Rp
10.000,00
b. Jika jumlah barang yang dibeli ≥ 100 buah dan 150, maka harga per barang
adalah Rp 9.500,00
c. Jika jumlah barang yang dibeli ≥ 150, maka hargar per barang adalah Rp
9.000,00

5. Tuliskan program yang menghasilkan keluaran nama bulan tertentu berdasarkan angka yang
dimasukkan oleh user.
format tampilan :
Masukkan angka: <mengisi angka>
< selang 2 baris >

Bulan ke <angka> adalah bulan <nama bulan ke-


angka>

Contoh :
Masukkan angka: 4

< selang 2 baris >

Bulan ke 4 adalah bulan April


6. Dahulu, kalkulator hanya dapat melakukan 4 operasi sederhana, yaitu pertambahan,
pengurangan, pembagian, dan perkalian terhadap HANYA 2 buah bilangan. tolong buatkan
program yang bisa melakukan seperti apa yang bisa dilakukan oleh kalkulator dahulu kala
dengan tampilan seperti dibawah ini.

tampilan program:

Praktikum Dasar Algoritma dan Pemrograman 28


Modul 3 – Percabangan

Operasi yang dapat dijalanakan :


1. pertambahan
2. pengurangan
3. perkalian
4. pembagian
pilihan anda (1-4) : <user input>

==clrscr==
masukkan bilangan pertama :
masukan bilangan kedua :
hasil dari operasi : <keluar hasil operasi yang sudah dipilih dari 2 bilangan yang sudah
dimasukan )

Praktikum Dasar Algoritma dan Pemrograman 29


Modul 4 – Fungsi dan Prosedur

Modul 4 Fungsi dan Prosedur

Tujuan
Praktikan diharapkan dapat :
o Mengerti esensi penggunaan Fungsi dan Prosedur dalam Algoritma dan Pascal.
o Memahami bentuk umum fungsi dan prosedur
o Memahami arti dari variabel global, lokal, parameter variabel, parameter konstanta, parameter
formal, dan parameter aktual
o Memecahkan masalah sederhana dengan menggunakan fungsi dan prosedur dan
mengimplementasikan ke dalam Pascal.

4.1 Fungsi
Suatu teknik yang biasa diterapkan dalam pemrograman terstruktur adalah teknik rancang atas-
bawah (top-down design). Berdasarkan falsafah rancang atas-bawah, maka suatu program dipecah
menjadi beberapa sub bagin lebih kecil dengan tugas tertentu. Dalam Pascal proses pemecahan
program menjadi sub program ada 2 macam, yaitu: fungsi dan procedure.

Dalam pembuatan sebuah program, ada kalanya 2 atau lebih linecode dibutuhkan untuk digunakan
berkali-kali dalam alur jalannya program di tempat yang berbeda (tidak sekuensial), misal untuk
menampilkan hasil sebuah operasi, maupun untuk menampilkan sebuah menu dalam sebuah
program. Untuk melakukan hal tersebut, penggunaan linecode tersebut dapat direduksi atau dapat
digantikan dengan pemanggilan sebuah subprogram. Subprogram terdapat 2 jenis, fungsi dan
prosedur. Fungsi digunakan ketika bagian program yang ingin diulang menghasilkan satu nilai hasil
atau keluaran. Prosedur digunakan ketika bagian program yang ingin diulang tidak menghasilkan
apapun (seperti ketika menampilkan menu) atau menghasilkan keluaran lebih dari 1 buah.

Fungsi digunakan apabila modul program mengembalikan sebuah nilai, sementara prosedur
digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi. Namun dalam
praktek, sering perbedaan antara keduanya tidak jelas.

Bentuk umum dari suatu fungsi adalah sebagai berikut:

FUNCTION identifier(daftar parameter) : type;

Parameter merupakan variabel yang dituliskan di dalam kurung setelah nama prosedur dan fungsi.
Dalam pembuatannya program biasanya diperlukan pertukaran informasi antara prosedur dan
fungsi. Berdasarkan penulisannya terdapat 2 jenis parameter, yaitu: parameter formal dan
parameter aktual. Parameter formal adalah parameter yang dituliskan pada saat pendefinisian
prosedur dan fungsi itu sendiri.

Sedangkan parameter aktual adalah parameter yang disertakan pada saat pemanggilan prosedur
dan fungsi tersebut di blok program utama.

Seperti yang sudah dijelaskan sebelumnya, sebuah fungsi digunakan ketika program yang dibuat
akan menghasilkan satu nilai keluaran. Nilai keluaran ini disebut dengan return value dalam fungsi,
wajib adanya pendefinisian ini nilai dari return value tersebut.

Agar lebih memahami tentang fungsi, perhatikan contoh berikut:

Praktikum Dasar Algoritma dan Pemrograman 30


Modul 4 – Fungsi dan Prosedur

Perkalian dan penjumlahan:


Pseudo Code Kode Bahasa Pascal
{sebaiknya ada deskripsi dari (* Deskripsi : program melakukan perkalian
algoritma yang dibuat} dan penjumlahan
fungsi kali dan jumlah*)
Program xtambah Program xtambah;
kamus Uses crt;
a,b,hasilkali,hasiljumlah:integer
var
function kali (a,b:integer): a,b,hasilkali,hasiljumlah:integer;
integer
function jumlah (a,b:integer): function kali (a,b:integer): integer;
integer begin
kali := a * b;
(*program utama*) end;
Algoritma
input(a) function jumlah (a,b:integer): integer;
input(b) begin
hasilkali  kali(a,b) jumlah := a + b;
hasiljumlah  jumlah(a,b) end;
Output(hasilkali)
Output(hasiljumlah) (*program utama*)
Begin
function kali (a,b:integer): integer writeln('Masukkan angka pertama : ');
Algoritma readln(a);
kali  a * b writeln('Masukkan angka kedua : ');
readln(b);
function jumlah (a,b:integer): hasilkali := kali(a,b);
integer hasiljumlah := jumlah(a,b);
Algoritma writeln('Hasil kali kedua angka adalah :
jumlah  a + b ',hasilkali);
writeln('Hasil bagi kedua angka adalah :
',hasiljumlah);
readln;
End.

Indeks Nilai
Pseudo Code Kode Bahasa Pascal
{sebaiknya ada deskripsi dari (* Deskripsi : program melakukan penentuan
algoritma yang dibuat} indeks nilai melalui fungsi indeks yang
menghasilkan keluaran berupa karakter *)

Program nilai Program nilai;


kamus Uses crt;
nilai : integer var
nama, kelas, index : string nilai : integer;
function indeks (nilai : nama, kelas, index : string;
integer) :char;
function indeks (nilai : integer) :char;
Algoritma BEGIN
Case nilai of
input(nama) 0..54 : indeks := ‘E’;
input(kelas) 55..64 : indeks := ‘D’;
input(nilai) 65..74 : indeks := ‘C’;
Index  indeks(nilai) 75..84 : indeks := ‘B’;
output(nama, kelas, index) 85..100 : indeks : = ‘A’;
end;
end;
function indeks (nilai : integer)
:char Begin
Algoritma clrscr;
Depend on nilai write(‘ Nama Mahasiswa : ‘);
0..54 : indeks  ‘E’ readln(nama);
55..64 : indeks  ‘D’ write(‘ Kelas : ‘);readln(kelas);

Praktikum Dasar Algoritma dan Pemrograman 31


Modul 4 – Fungsi dan Prosedur

65..74 : indeks  ‘C’ write(‘ Nilai : ‘);readln(nilai);


75..84 : indeks  ‘B’ Index := indeks(nilai);
85..100 : indeks  ‘A’ write(nama, ‘ mahasiswa ‘, kelas, ‘
mendapatkan indeks ‘,
index);
End.

Soal
1. Tuliskan program untuk memeriksa sebuah bilangan bulat yang diberikan user
merupakan bilangan genap atau bukan. Pendefinisian bilangan tersebut merupakan
bilangan genap atau bukan dituliskan dalam sebuah function IsGenap().
2. Carilah letak kesalahan pada pendeklarasian subprogram berikut:

FUNCTION Kali (a, b: Integer);


Begin
Kali := a * b;

End.

Praktikum Dasar Algoritma dan Pemrograman 32


Modul 4 – Fungsi dan Prosedur

4.2 Prosedur
Seperti yang sudah dijelaskan sebelumnya prosedur adalah sebuah subprogram yang digunakan
untuk kasus-kasus yang tidak menghasilkan keluaran apapun atau kasus-kasus yang membutuhkan
nilai keluaran lebih dari sama dengan 2 (walaupun dapat deprogram untuk yang memiliki 1 nilai
keluaran). Dalam pendefinisian sebuah prosedur, dalam algoritma ada yang disebut dengan
parameter input, parameter output, dan parameter input/output. Namun, dalam Pascal, hanya
disediakan dua jenis parameter yaitu parameter input, dan parameter input/output.

Parameter input, adalah parameter yang digunakan sebagai sebuah masukkan dari program utama
ke prosedur yang dipanggil. Karena sifatnya hanya sebagai masukkan, maka nilai dari parameter
tersebut akan tetap sama sebelum dan setelah eksekusi prosedur tersebut (walaupun dalam
prosedur terdapat code yang mengubah nilai parameter input tersebut). Sedangkan parameter
input/output adalah parameter yang digunakan sebagai masukkan sekaligus sebagai keluaran dari
prosedur tersebut. Maka, parameter input/output akan memiliki nilai yang berbeda saat sebelum
dan sesudah eksekusi prosedur (jika dalam prosedur terdapat code yang mengubah nilai parameter
tersebut).

Selain parameter input, dan parameter input/output, dalam subprogram (fungsi dan prosedur)
terdapat dua jenis variabel yang dapat digunakan, yaitu variabel lokal dan variabel global. Variabel
global adalah variabel yang didefinisikan diawal program dan dapat digunakan oleh seluruh blok
program (program utama dan subprogram) sementara variabel lokal adalah variabel yang
didefinisikan dalam sebuah subprogram, dan hanya dapat digunakan oleh subprogram yang
mendefinisikannya saja. Jika sebuah subprogram mendefinisikan sebuah variabel (variabel lokal)
yang dengan nama yang sama seperti pada yang sudah didefinisikan di kamus awal sebelumnya
(variabel global), maka dalam subprogram tersebut, jika variabel tersebut dipanggil, maka variabel
tersebut akan mengacu ke variabel lokal.

4.2.1 Menukar bilangan (menggunakan parameter by reference)


Maksud dari parameter by reference adalah suatu parameter/variabel yang dimasukkan kedalam
prosedur akan berubah nilai setelah keluar dari prosedur tersebut. Perubahan nilai dari suatu
variabel tidak hanya berlaku di prosedur tersebut melainkan dikeseluruhan program.
Pseudo Code Kode Bahasa Pascal
Program subprg Program subprg;
Var
kamus a,b : integer;
a,b : integer
procedure tukar(input/output procedure tukar(var a,b:integer);
a,b:integer) (* menukar nilai dua buah variabel *)
var
temp : integer;
algoritma begin
input(a) temp := a;
input(b) a := b;
output(a,b) b := temp;
tukar(a,b) end;
output(a,b)
begin
writeln('ketikkan bilangan pertama : ');
procedure tukar (input/output readln(a);
a,b:integer) writeln('ketikkan bilangan kedua : ');

Praktikum Dasar Algoritma dan Pemrograman 33


Modul 4 – Fungsi dan Prosedur

(* menukar nilai dua buah variabel readln(b);


*) writeln('ke dua bilangan: a = ',a);
kamus writeln(‘b = ',b);
temp : integer tukar(a,b);
algoritma writeln('ke dua bilangan setelah di tukar:
temp  a a= ',a);
a b writeln('b= ',b);
b  temp readln;
end.

4.2.2 Menghitung luas dan keliling (menggunakan parameter by value)


Maksud dari parameter by value adalah suatu parameter/variabel yang dimasukkan kedalam
prosedur tidak akan berubah nilainya setelah keluar dari prosedur tersebut. Perubahan nilai dari
suatu variabel hanya berlaku di prosedur tersebut.
Pseudo Code Kode Bahasa Pascal
program luaskel program luaskel
uses crt uses crt;
(* Deskripsi : plih menu, hitung (* Deskripsi : plih menu, hitung luas dan
luas dan keliling sesuai pilihan *) keliling sesuai pilihan *)
kamus var
bil:integer bil:integer;
procedure menu(input pil:integer)
procedure menu(pil:integer);
var
s,t,L,K:real;
algoritma begin
output('Nama bidang :') case pil of
output('1. Persegi') 1: begin
output('2. Segitiga siku- write('sisi : '); readln(s);
siku') L:=s*s;
output('3. Lingkaran') K:=4*s;
input(bil) end;
menu(bil) 2: begin
write('alas : '); readln(s);
write('tinggi : '); readln(t);
procedure menu(pil:integer) L:=s*t/2;
kamus K:=s+t+(sqrt(s*s+t*t));
s,t,L,K:real end;
algoritma 3: begin
depend on pil write('Jari-jari: '); readln(s);
case 1: algoritma L:=s*s*3.14;
input(s) K:=2*s*3.14;
Ls*s end;
K4*s else
case 2: algoritma write('invalid input');
input(s) end;
input(t) writeln('Luas : ',L:0:2);
Ls*t/2 writeln('Keliling: ',K:0:2);
Ks+t+(sqrt(s*s+t*t)) end;

case 3: algoritma begin


input(s) writeln('Nama bidang :');
Ls*s*3.14 writeln('1. Persegi');
K2*s*3.14 writeln('2. Segitiga siku-siku');
else writeln('3. Lingkaran');

Praktikum Dasar Algoritma dan Pemrograman 34


Modul 4 – Fungsi dan Prosedur

output('invalid input') write('pilihan : '); readln(bil);


menu(bil);
output('Luas : ',L:0:2) readln;
output('Keliling: ',K:0:2) end.

Soal
1. Buat procedure untuk menghitung jumlah uang yang harus dikeluarkan oleh mesin
ATM dengan spesifikasi : mesin ATM menyimpan 3 pecahan mata uang yaitu pecahan
Rp 20.000,- ; Rp10.000,-; dan Rp 5.000. Procedure menggunakan 1 parameter
masukan untuk input jumlah uang, dan 3 parameter keluaran untuk jumlah
masing – masing pecahan yang harus dikeluarkan. (Misal bila masukan user 35.000
maka akan dikeluarkan jumlah Rp 20.000,- = 1, jumlah Rp 10.000,- = 1, dan
Rp5.000,- = 1 ).

2. Buatlah program untuk konversi suhu dari Celcius ke Reamur/Fahrenheit dengan


menggunakan fungsi!
Reamur=4/5*Celcius
Fahrenheit=9/5*Celcius+32
Contoh :

Suhu Celcius = 33 <input> akan dikonversikan ke


1. Reamur
2. Fahrenheit
Pilih (1/2) = 1 <input>
Reamur = 26.40 <output>

Suhu Celcius = 34 <input> akan dikonversikan ke


1. Reamur
2. Fahrenheit
Pilih (1/2) = 2 <input> Fahrenheit = 93.20 <output>

3. Buat sebuah program dengan menggunakan prosedur dan fungsi untuk menghitung
volume kubus, silinder, dan kerucut.
4. Andi diminta ibunya untuk membuat sebuah program yang dapat memasukkan tanggal
hari ini dan menampilkan tanggal untuk besok hari (dd=mm-yy). Bantulah Andi
untuk membuat program tersebut (Gunakan record dan gunakan fungsi untuk
perhitungan tanggal besok hari, cek juga apakah tahunnya kabisat atau tidak!)
Contoh :

input
hari : 31
bulan : 12
tahun : 92

Praktikum Dasar Algoritma dan Pemrograman 35


Modul 4 – Fungsi dan Prosedur

output
besok adalah tanggal 1-1-93

5. Buatlah program yang mengandung prosedur untuk mentranslasikan suatu titik


koordinat dengan menggunakan prosedur translasi (titikawal,translasi). Diwajibkan
menggunakan record
{contoh}
Input : Koordinat awal
absis : 3 {input}
ordinat : 7 {input} Translasi ke
absis : -7 {input} ordinat : 5 {input}
Output :
Koordinat (3,7) setelah ditranslasikan dengan T(-7,5) menjadi (-4,12)

Praktikum Dasar Algoritma dan Pemrograman 36


Modul 5 – Perulangan

Modul 5 Perulangan

Tujuan
Praktikan diharapkan dapat :
o Mengerti esensi penggunaan Perulangan (Looping) dalam Algoritma dan Pascal.
o Memilih bentuk pengulangan yang benar dan tepat untuk kelas persoalan tertentu.
o Mampu memecahkan masalah sederhana dengan menggunakan Perulangan dan
mengimplementasikan ke dalam Pascal.

5.1 Perulangan For


Dalam proses pembuatan program ada kalanya kita membutuhkan penggunaan 1 atau lebih linecode
yang sama untuk digunakan berkali-kali secara sekuensial. Untuk itu terdapat blok kontrol yang
memudahkan kita yang disebut dengan perulangan atau looping. Sekilas, definisi antara subprogram
yang sudah dijelaskan pada modul 4 kurang lebih mirip dengan definisi perulangan di atas. Namun,
yang perlu diperhatikan, subprogram digunakan untuk melakukan aksi yang sama namun tidak
sekuensial, berbeda dengan perulangan yang harus sekuensial, misal menulis “Hello World” 5 kali
secara berurutan. Selain itu, subprogram digunakan biasanya untuk mem-package atau
membungkus beberapa linecode untuk suatu fungsionalitas tertentu. Untuk lebih jelasnya silahkan
diperhatikan contoh dibawah ini.

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : baca N, print 1 s/d N dengan
Program forto FOR TO DO *)
Kamus Program forto;
i : integer Var
N : integer i : integer;
N : integer;
Algoritma
input(N) Begin
i traversal [i…N] writeln('baca N, print 1 s/d N');
output(i) write('N = ');
output('akhir program') readln(N);
for i:= 1 to N do
Begin
writeln(i);
end;
writeln('akhir program');
readln;
End.

Praktikum Dasar Algoritma dan Pemrograman 37


Modul 5 – Perulangan

Perlu anda tahu..


Tipe data yang bisa dipakai untuk perulangan for adalah tipe data yang mempunyai successor dan
predecessor yaitu :

Integer (termasuk longint,shortint,byte) dan char. Contoh penggunaan char.

for c:=”A‟ to “Z‟ do


writeln(c);

Selain itu, dalam perulangan, apabila code yang ingin diulang memiliki jumlah baris lebih
dari 1, diperlukan sebuah blok kontrol yang dimulai dengan Begin dan end; sehingga,
contoh diatas, apabila ditambahkan perintah writeln(1) misal, maka akan menjadi seperti
berikut
for c:=”A‟ to “Z‟ do
Begin
writeln(c);
writeln(1);
End;

Untuk perulangan for sendiri, terdapat 2 jenis perulangan, yaitu perulangan ascending (for – to – do
) dan perulangan descending ( for – downto – do ). Pada dasarnya proses perulangan kedua for
tersebut adalah sama, yang membedakan adalah perubahan variable setiap iterasi, untuk for – to –
do setiap iterasi, nilai dari variable bertambah, sedangkan for – downto – do nilai dari variable
berkurang setiap iterasi. Perulangan for mencapai iterasi terakhir adalah ketika nilai variable
sudah sama dengan nilai kedua (setelah kata to ). Contoh :

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : baca N, print N s/d 1 dengan
Program fordto FOR DOWNTO DO *)
kamus Program fordto;
I, N :integer Var
Algoritma I, N :integer;
Begin
readln(N) writeln('baca N, print N s/d 1');
i traversal [N..1] write('N = ');
Begin readln(N);
Output(i) for i:= N downto 1 do
End Begin
Output('akhir program') writeln(i);
end;
writeln('akhir program');
readln
End.

Praktikum Dasar Algoritma dan Pemrograman 38


Modul 5 – Perulangan

Pada program tersebut, nilai variable i akan terus berubah. Kondisi awal variable I akan bernilai
sama dengan N, karena tipe perulangan downto, maka pada iterasi berikut, variable i akan bernilai
N-1, iterasi berikutnya N-2, dan seterusnya hingga i =1. Iterasi i = 1 adalah iterasi terakhir pada
perulangan tersebut.

Seperti halnya pada bab III, tentang if – then, Penerapan for juga dapat digunakan di dalam for
yang lain (perulangan di dalam perulangan) untuk memahaminya, silakan coba tracing program
pembentuk pola berikut.

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : menampilkan bentuk segitiga
siku-siku dengan ukuran n kali sesuai dengan
Program fordto inputan user *)
Program fordto;
kamus Var
i,j,N :integer i,j,N :integer;

Algoritma Begin
writeln(„Masukkan nilai n : '); readln(N);
Input(N) for i:= 1 to N do
begin
i traversal [1..N] for j:=1 to N do
J traversal [1..N] begin
output('*') write('*');
end;
Output(‘/n’) writeln;
end;
Output('akhir program') writeln('akhir program'); readln;
End.

Untuk lebih memahami proses perulangan for, buatlah program untuk membuat sebuah pola
yang memberikan output seperti gambar di bawah dengan inputan N=5.
*****
****
***
**
*

5.2 Perulangan while – do


Teknik lain yang dapat digunakan untuk skema perulangan adalah while – do. While (kondisi) do
akan mengulang perintah selama kondisi dipenuhi ( bernilai true ). Bisa dibilang, perulangan while –
do ini lebih powerful dibandingkan dengan perulangan for, karena setiap permasalahan perulangan
yang dapat diselesaikan dengan for, pasti dapat diselesaikan pula dengan while – do, namun tidak
untuk sebaliknya, ada kasus dimana permasalahan perulangan hanya dapat diselesaikan dengan
skema while – do.

Perulangan pada skema While – do akan memeriksa kondisi setiap iterasi. Jika kondisi benar, maka
perintah akan dilakukan, oleh karena itu perulangan berhenti ketika kondisi bernilai salah. Hati –
hati untuk skema ini, karena jika penentuan kondisi, karena jika kondisi selalu bernilai true, maka
perulangan tidak akan pernah berhenti, dan program akan mengalami error. Berikut contoh
sederhana penggunaan while – do :
Pseudo Code Kode Bahasa Pascal

Praktikum Dasar Algoritma dan Pemrograman 39


Modul 5 – Perulangan

(* Deskripsi : baca N, print 1 s/d N dengan


while *)
Program priw1 Program priw1;
kamus Var
I, N : integer I, N : integer;

Algoritma Begin
input(N) writeln('baca N, print 1 s/d N'); write('N
i1 = '); readln(N);
while (i<=N) do i:=1
output(i) while (i<=N) do
ii+1 Begin
writeln(i);
i:=i+1;
end; { i>N }
readln;
End.

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : baca N, print bilangan
kelipatan 3 yang lebih kecil dari N dengan
Program priw1 while*)
kamus Program priw2;
I, N : integer Var
I, N : integer;
Algoritma
input(N) Begin
writeln(baca N, print bilangan kelipatan 3
i3 yang lebih kecil dari N');
while (i<=N) do write('N = '); readln(N);
output(i) i:=3
Ii+3 while (i<=N) do
Begin
writeln(i);
i:=i+3;
end; { i>N }
readln;
End.

5.3 Perulangan repeat - until


Teknik perulangan Repeat – until memiliki dasar yang mirip dengan While – do, yaitu
perulangan dilakukan berdasarkan sebuah kondisi. Namun terdapat sedikit perbedaan, yaitu repeat
– until akan melakukan perulangan selama kondisi bernilai salah, dan proses pemeriksaan kondisi
dilakukan di akhir iterasi. Seperti halnya while–do, hati – hati dalam penentuan kondisi berhenti,
jika kondisi tidak bisa bernilai true, maka program tidak akan berhenti berulang. Berikut contoh
sederhana penggunaan repeat– until.

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : baca N, print 1 s/d N dengan
REPEAT *)
Program prirep1 Program prirep1;
kamus Var
I, N : integer i : integer; N : integer;

Algoritma Begin
Input(n) writeln('baca N, print 1 s/d N');
I1 write('N = '); readln(N);

Praktikum Dasar Algoritma dan Pemrograman 40


Modul 5 – Perulangan

repeat i:=1
output(i); repeat
ii+1; writeln(i);
until (i>N); i:=i+1;
until (i>N);
readln;
End.

Penerapan Repeat dalam menu kalkulator

Pseudo Code Kode Bahasa Pascal


(* Deskripsi : program kalkulator
sederhana dengan fungsi dan perulangan *)
Program kalkulator Program kalkulator;
kamus Var
a,b : integer a,b : integer;
pil : integer pil : integer;

function kali (a,b:integer): function kali (a,b:integer): integer;


integer begin
function jumlah (a,b:integer): kali := a * b;
integer end;
function kurang (a,b:integer):
integer function jumlah (a,b:integer): integer;
procedure input(var begin
a,b:integer) jumlah := a + b;
end;
Algoritma
Repeat function kurang (a,b:integer): integer
Output('Menu Utama') begin
Output('1. Penjumlahan') kurang := a - b;
Output('2. Pengurangan') end;
Output('3. Perkalian')
Output('4. Keluar') procedure input(var a,b:integer);
Input(pil) begin
Depend on pil writeln('Masukkan angka pertama : ');
Case 1: readln(a);
Input(a,b) writeln('Masukkan angka kedua : ');
Output(jumlah(a,b)) readln(b);
Case 2: end;
Input(a,b)
Output(kurang(a,b)) Begin
Case 3: Repeat
Input(a,b) Clrscr;
Output(kali(a,b)) writeln('Menu Utama');
until pil=4 writeln('1. Penjumlahan');
writeln('2. Pengurangan');
writeln('3. Perkalian');
function kali (a,b:integer): writeln('4. Keluar');
integer write('Pilih : ');
algoritma readln(pil);
kali  a * b Case pil of
1:begin
Input(a,b);
function jumlah (a,b:integer): writeln('Hasil penjumlahan :
integer ',jumlah(a,b));
algoritma readln;
jumlah  a + b end;
2:begin

Praktikum Dasar Algoritma dan Pemrograman 41


Modul 5 – Perulangan

Input(a,b);
function kurang (a,b:integer): writeln('Hasil pengurangan :
integer ',kurang(a,b));
algoritma readln;
kurang  a - b end;
3:begin
Input(a,b);
procedure input(var a,b:integer) writeln('Hasil perkalian :
algoritma ',kali(a,b));
input(a) readln;
input(b) end;
end;
until pil=4;
readln;
End.

Praktikum Dasar Algoritma dan Pemrograman 42


Modul 5 – Perulangan

Soal
1. Tuliskan program untuk membuat sebuah pola angka. Inputan dari
program adalah sebuah angka N. Jika N diberi nilai 5, maka output-nya
adalah :

12 3 4 5
23 4 5 1
34 5 1 2
45 1 2 3
51 2 3 4
2. Buat program untuk menentukan angka yang diinputkan adalah bilangan
prima atau bukan.
Contoh : Input
:
Masukkan angka : 2
Output : Prima
Input :
Masukkan angka : 51
Output : Bukan Prima

3. Buat program untuk membuat tulisan seperti di bawah ini :


input :
masukkan kata :
abrakadabra output :
a
ab
abr
abra
abrak
abraka
abrakad
abrakada
abrakadab
abrakadabr
abrakadabra

Praktikum Dasar Algoritma dan Pemrograman 43


Modul 5 – Perulangan

4. Buatlah sebuah program untuk melakukan konversi dari bilangan desimal


menjadi bilangan biner.
Gunakan fungsi : function biner (desimal:integer):string;
Contoh:
Bilangan Desimal : 22 {input}
Bilangan Biner : 10110
{output}

5. Buatlah program dengan prosedur untuk mencari nilai rata – rata,


nilai tertinggi dan nilai terendah dari inputan yang dinputkan oleh user
contoh :
banyak data : 5 data ke-1 : 8 data ke-2 :
10 data ke-3 : 7 data
ke-4 : 5 data ke-5 : 9
Nilai rata - rata = 7,8
Nilai Tertinggi = 10
Nilai Terendah = 5

Praktikum Dasar Algoritma dan Pemrograman 44


Modul 6 – Skema Pemrosesan Sekuensial

Modul 6 Skema Pemrosesan Sekuensial

Tujuan
Praktikan diharapkan dapat :
o Memahami pengertian sekuensial.
o Memahami item-item sekuensial.
o Memahami kasus kosong.
o Memahami “mark”.
o Memahami penanganan kasus kosong.
o Memahami hubungan berulang dan studi kasusnya.

Skema pemrosesan sekuensial adalah cara menyelesaikan permasalahan secara sekuensial atau
berurutan. Contoh persoalan yang diselesaikan dengan skema pemrosesan sekuensial adalah
menjumlahkan setiap bilangan yang ada dalam jangkauan 1 hingga 100, atau menghitung fungsi
faktorial dari 10! dengan mengalikan angka 1 hingga 10 secara satu per satu dan terurut. Modul ini
sangat membutuhkan pemahaman yang baik mengenai modul perulangan yang telah dipelajari
sebelumnya.

Dalam modul ini, akan dibahas dua jenis skema pemrosesan sekuensial: dengan penanda berakhir
(mark) dan tanpa penanda berakhir. Mark adalah penanda yang memberikan sinyal agar perulangan
berhenti. Mark biasanya berupa nilai yang tidak termasuk dalam elemen permasalahan.

6.1 Skema Pemrosesan Sekuensial dengan Mark


6.1.1 Tanpa Penanganan Kasus Kosong
Pada skema ini, pemrosesan yang dilakukan secara sekuensial menggunakan penanda (mark). Mark
disini adalah penanda kapan sebuah pemrosesan sekuensial tersebut akan berhenti. Pada contoh
di bawah ini, tidak ada penanganan kasus kosong, dengan kata lain suatu proses ada
kemungkinan tidak dilakukan sama sekali pada kondisi tertentu. Pada bagian manakah yang
menentukan sebuah kasus kosong atau tidak? Kondisi apa yang dapat membuat sebuah kasus
kosong?
Pseudo Code Kode Bahasa Pascal
Program Seq1 Program Seq1;
{Deskripsi: Menjumlahkan bilangan 1+2+3+4+..N,
kamus dengan N > 0 dan diperoleh melalui masukan
I ,N, Sum : integer (input) pengguna}

algoritma var
input(N) i : integer; {bilangan yang akan
Sum0 dijumlahkan}
I1 {First-Elmt} n : integer;
while I <= N do {EOP} sum : integer; {jumlah}
output(i) {Current-Elmt}
sumsum + 1 begin
II+1 {Next-Elmt} write('Masukkan banyaknya bilangan : ');
output(sum) readln(n);
sum := 0;
i := 1; {First-Elmt}

Praktikum Dasar Algoritma dan Pemrograman 45


Modul 6 – Skema Pemrosesan Sekuensial

while i <= N do {EOP}


begin
writeln('Nilai i adalah : ', i);
{Current-Elmt}
sum := sum + 1;
i:=i + 1; {Next-Elmt}
end;
writeln('Jumlah bilangan adalah ', sum);
readln;
end.

6.1.2 Dengan Penanganan Kasus Kosong


Berbeda dengan skema sebelumnya, skema kali ini terdapat penanganan kasus kosong. Pada
skema ini proses dilakukan minimal satu kali. Hal ini di sebabkan proses pemeriksaan penanda
(mark) dilakukan di akhir skema. Salah satu contoh kondisi yang mengakibatkan proses dilakukan
hanya satu kali adalah ketika N diinputkan dengan angka 1.

Pseudo Code Kode Bahasa Pascal


program Seq2 Program Seq2;
{ Deskripsi : Menjumlahkan bilangan
kamus 1+2+3+4+..N, dengan N dibaca dari keyboard}
I,N, Sum : integer Uses Crt;

Var
Algoritma I : integer; {bilangan yang akan
input(N) dijumlahkan }
Sum0 N : integer; {banyaknya bilangan yang
I1 dijumlahkan, N > 0}
repeat Sum : integer;{jumlah}
sum  sum + 1 Begin {Program Utama}
II+1 write('Masukan banyaknyabilangan yang akan
until I > N{Mark} dijumlahkan: ');
output(sum) readln(N);
Sum:=0; I:=1;
repeat
sum:=sum + 1;
I:=I+1;
until I > N;{Mark}
writeln('Jumlah bilangan adalah ', sum);
readln;
End.

6.2 Skema Pemrosesan Sekuensial Tanpa Mark


Skema Pemrosesan Sekuensial Tanpa Mark. Skema pemrosesan seperti ini adalah skema
pemrosesan yang tidak memakai penanda (mark). Sehingga jumlah iterasi sudah dapat diketahui di
awal.

Pseudo Code Kode Bahasa Pascal


Program Seq3 Program Seq3;
{ Deskripsi : Menjumlahkan bilangan 1+2+3+4+..N, dengan N
Kamus dibaca dari keyboard}
I,N,sum : integer Uses Crt;
Algoritma
input(N) Var
Sum0 I : integer; {bilangan yang akan dijumlahkan }
i traversal N : integer; {banyaknya bilangan yang dijumlahkan,

Praktikum Dasar Algoritma dan Pemrograman 46


Modul 6 – Skema Pemrosesan Sekuensial

[1..N] N>0}
sumsum + 1 Sum : integer;{jumlah}
output(sum) Begin {Program Utama}
write('Masukan banyaknya bilangan yang akan
dijumlahkan : ');
readln(N);
Sum:=0;
for I:=1 to N do
sum:=sum + 1;
writeln('Jumlah bilangan adalah ', sum);
readln;
End.

Berikut adalah salah satu contoh penerapan skema pemrosesan sekuensial untuk masalah
Menghitung Deret S = 1/2 + 1/ 4 + 1/8 +… (Hubungan Berulang)

Pseudo Code Kode Bahasa Pascal


Program Seq4 {Deskripsi : Menjumlahkan bilangan 1/2+1/4+1/8+..N,
dengan N dibaca dari keyboard}
Kamus Program Seq4;
I, N : integer Uses Crt;
Temp, S : real
Var
Algoritma I : integer; {bilangan yang akan dijumlahkan }
input(N) N : integer; {banyaknya bilangan yang dijumlahkan, N
I  1 > 0}
temp  1 temp : real; {manampung bilangan pecahan yang akan
while I <= N do dijumlahkan}
temp  temp * S : real; {jumlah bilangan}
0.5
S  S + temp Begin {Program Utama}
I  I + 1 write('Masukan banyak bilangan : ');
output(S) readln(N);
I := 1;
temp := 1;
while I <= N do
begin
temp := temp * 0.5;
S := S + temp;
I := I + 1;
end;
writeln('Jumlah bilangan adalah ', S);
readln;
End.

Pemrosesan sekuensial juga dapat digunakan untuk menampilkan faktorial ke n


Pseudo Code Kode Bahasa Pascal
Program seq1l Program seq1l
Kamus Var
I,n,faktorial :integer I,n,faktorial :integer;

Begin Begin
Faktorial1 Faktorial:=1;
Input(n) write('Faktorial keberapa ?? '); readln(n);
i traversal [n..1] for i:= n downto 1 do
Output (faktorial) Begin
Faktorial  faktorial * writeln('Faktorialnya adalah = ',
I faktorial);

Praktikum Dasar Algoritma dan Pemrograman 47


Modul 6 – Skema Pemrosesan Sekuensial

Faktorial := faktorial * I;
end;
readln;
End.

n
Contoh lain adalah memangkatkan m

Pseudo Code Kode Bahasa Pascal


Program seq1l Program seq1l
Kamus Var
I,n,m,pangkat:integer I,n,m,pangkat:integer;

Algoritma Begin
Pangkat1 Pangkat:=1;
Input(m) write('masukkan M ');
Input(n) readln(m);
for i:= 1 to n do write('Masukkan N');
Pangkat Pangkat*m readln(n);
Output (pangkat) for i:= 1 to n do
Begin
Pangkat:=Pangkat*m;
end;
writeln ('M pangkat N = ',pangkat);
readln;
End.

Soal Latihan
1. Buatlah algoritma untuk mencetak bilangan ganjil sebanyak N bilangan.
Contoh masukan : N = 4
Contoh keluaran : hasil = 1,3,5,7
Gunakan model dengan mark dan tanpa mark juga pemrosesan kasus kosong
1 N
2. Buatlah algoritma untuk memberikan output dari 2 sampai 2 .
Contoh input : N = 3
Contoh output : hasil = 2,4,8
Catatan : Buatlah asumsi sendiri

3. Buatlah algoritma untuk menghitung deret fibonaci


Contoh input : N = 7
Contoh Output : deret = 1 1 2 3 5 8 13 21

4. Buatlah program untuk menampilkan n buah bilangan prima dimana n adalah inputan user.
Contoh input : N = 5
Contoh Output : deret = 2, 3, 5, 7, 11

5. Buatlah program untuk menghitung jumlah x bilangan prima pertama.

6. Buat program yang terus meminta inputan user berupa angka. Program akan berhenti ketika
angka yang diinputkan user adalah angka prima.
Contoh Input :
Masukkan angka : 4
Masukkan angka : 6
Masukkan angka : 29
Contoh Output : 29 adalah prima

Praktikum Dasar Algoritma dan Pemrograman 48


Modul 7 – Larik (Array)

Modul 7 Larik (Array)

Tujuan
Praktikan diharapkan dapat :
o Mengerti definisi, deklarasi tipe tabel/larik dan mengetahui penggunaan tipe larik tersebut.
o Dapat memprogram tabel dengan fungsi dan prosedur.
o Memahami semua skema searching (sequential, binary, dan mencari harga ekstrim).
o Dapat mengimplementasikan skema searching tersebut terhadap kasus-kasus tertentu.
o Dapat menuliskan kode program seluruh skema sorting yang telah diberikan terhadap
berbagai jenis data (integer dan string).

Array merupakan sebuah tipe data yang dapat menyimpan banyak data bertipe sama. Array dapat
diakses berdasarkan nomor indeksnya. Array dapat dibangun dalam satu, dua atau lebih dimensi.
Dimensi array ini disesuaikan dengan kebutuhan.

7.1 Dimensi Array


7.1.1 Array Satu Dimensi (1-D)
Contoh kasus yang membutuhkan array satu dimensi misalnya ketika kita ingin menyimpan bilangan-
bilangan (bertipe integer) atau nama-nama (bertipe string) yang dimasukkan pengguna, atau
kasus sejenis. Selain integer dan string, array tentu juga bisa dideklarasikan dengan tipe data
yang lain. Tipe data yang digunakan juga dapat berupa tipe data buatan (record). Yang perlu diingat
adalah bahwa tipe data array haruslah sama. Berikut adalah beberapa contoh pendeklarasian array
satu dimensi pada bagian var.
a : array[1..10] of integer;
b : array[0..9] of integer;
c : array[2..11] of integer;
Perhatikan bahwa jangkauan indeks dapat dideklarasikan sesuai keinginan. Dalam berbagai bahasa
pemrograman termasuk Pascal, indeks array seringkali dimulai dari nol, bukan satu. Namun banyak
orang seringkali memulai indeks dari 1 pada program yang dibangun dengan bahasa Pascal. Ini
karena kita lebih terbiasa menghitung sesuatu diawali dari angka 1, bukan 0.

Berikut adalah contoh kode untuk menyimpan bilangan-bilangan yang dimasukkan oleh pengguna.

Kode Bahasa Pascal


program TABEL;
{latihan array Untuk memasukkan bilangan sebanyak n dan
Menampilkannya tanpa dengan menggunakan prosedur}
Var
Bilangan : array[1..10] of integer; { deklarasi array }
i,banyak : integer;

begin
{awal dari memasukkan suatu elemen ke dalam sebuah array}
writeln ('Masukkan Banyak bilangan yg diinput (< 10)');
readln(banyak);
if (banyak <=10)then
for i:= 1 to banyak do
begin
writeln('masukkan bilangan ke ',i);

Praktikum Dasar Algoritma dan Pemrograman 49


Modul 7 – Larik (Array)

readln(Bilangan[i]);
end;
{akhir dari memasukkan suatu elemenke dalam sebuah array}

{awal menampilkan elemen yang ada di dalam array}


For i:= 1 to banyak do
Writeln('Isi elemen ke – ',i, ' adalah',bilangan[i]);
Readln;
end.

7.1.2 Array Multi Dimensi


Array dapat dibuat dalam lebih dari satu dimensi. Contoh cara pendeklarasian array multidimensi
adalah sebagai berikut:
2 dimensi a : array[1..10, 1..10] of integer;
3 dimensi b : array[1..10, 1..10, 1..10] of integer;

Contoh permasalahan yang membutuhkan array multidimensi misalnya adalah representasi matriks.
Berikut adalah contoh program yang merepresentasikan matriks dua dimensi.

Kode Bahasa Pascal


Program Tab2Dim;
{tabel integer dua dimensi (matriks)}
Type
{cara 1: sebagai array dua dimensi}
MatInt = array[1..3,1..3] of integer;

{cara 2: sebagai array of array}


MatArr = array[1..3] of array[1..3] of integer;

Var
M1 : MatInt;
MA1 : MatArr;

procedure initM2DInt(var tabel2d:MatInt);


var
i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
tabel2d[i,j]:=i*j;
end;

procedure initM2DArr(var tabel2d:MatArr);


var
i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
tabel2d[i][j]:=i*j;
end;

procedure outM2DInt(tabel2d:MatInt);
var
i,j:integer;
begin
for i:=1 to 3 do
begin

Praktikum Dasar Algoritma dan Pemrograman 50


Modul 7 – Larik (Array)

for j:=1 to 3 do
write('M1[',i,',',j,']= ',tabel2d[i,j]);
writeln;
end;
end;

procedure outM2DArr(tabel2d:MatArr);
var
i,j:integer;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
write('M1[',i,',',j,']=',tabel2d[i][j]);
writeln;
end;
end;

Begin
initM2DInt(M1);
initM2DArr(MA1);
outM2DInt(M1);
outM2DArr(MA1);
readln;
End.

7.2 Array Statis dan Dinamis


Array yang telah dibahas di atas adalah array statis. Array statis adalah array yang ukurannya (jumlah
elemen) telah dideklarasikan dan tidak dapat diubah (dikurangi atau ditambah) lagi.

Array dinamis adalah array yang jumlah elemennya belum ditentukan. Awalnya, jumlah elemen
dalam array ini adalah nol. Ukuran array dapat ditambah (serta dipotong) dengan prosedur
bawaan Pascal, yaitu setlength. Prosedur setlength akan mengatur ukuran array sesuai
dengan masukan yang diberikan pada parameter. Berikut adalah contoh potongan program yang
menggunakan array dinamis.
Kode Bahasa Pascal
var
a : array of integer;

begin
writeln( length(a) ); {di awal, jumlah elemen array a adalah nol}
setlength(a,4);
writeln( length(a) ); {elemen array a berubah menjadi 4}
readln
end.
Pada contoh potongan program di atas, array a akan memiliki indeks yang dimulai dari 0 hingga 3
(ukuran array dikurangai satu).

7.3 Array sebagai Parameter Fungsi/Prosedur


Array juga dapat digunakan sebagai parameter fungsi maupun prosedur. Array sebagai parameter
tidak perlu ditentukan jumlah elemennya, karena secara otomatis akan menyesuaikan dengan
ukuran array yang diacu. Berikut adalah contoh programnya.

Praktikum Dasar Algoritma dan Pemrograman 51


Modul 7 – Larik (Array)

Kode Bahasa Pascal


program TABEL;
{latihan array Untuk memasukkan bilangan sebanyak n dan menampilkannya tanpa
dengan menggunakan prosedur}
Var
a:array[1..10] of integer;
banyak : integer;

procedure inittab(c:integer;var tabel:array of integer);


{mengisi array dengan assignment}
Var
i : integer;
begin
for i := 1 to c do
tabel[i] := i;
end;

procedure outtab(c:integer;tabel:array of integer);


{traversal: print}
var
i:integer;
begin
for i:=1 to c do
writeln('i=',i,' tabel[i]=', tabel[i]);
end;

begin
writeln ('Masukkan Banyak bilangan yg diinput(< 10) ');
readln(banyak);
if (banyak <= 10) then
begin
inittab(5,a);
outtab(5,a);
end;
readln;
end.

Praktikum Dasar Algoritma dan Pemrograman 52


Modul 8 – Searching dan Sorting

Modul 8 Searching dan Sorting

Tujuan
Praktikan diharapkan dapat :
o Memahami dan dapat mengaplikasikan algoritma sequential dan binary search.
o Memahami dan dapat mengaplikasikan algoritma sorting seperti bubble sort, insertion sort,
selection sort dan counting sort.

8.1 Searching
Diberikan sebuah array yang berisi banyak data nama-nama mahasiswa, kita dapat mencari nama
seseorang yang kita inginkan dengan metode-metode searching. Berikut adalah contoh program
sederhana pencarian nama seseorang, dengan data nama-nama orang yang telah disimpan
sebelumnya.
Pseudo Code Kode Bahasa Pascal
Program pencarian Program pencarian;
Kamus Var
nama : array [1..5] of nama : array [1..5] of string[50];
string[50] nama_dicari : string;
Nama_dicari : string i : integer;
I : integer begin
{pengisian elemen dengan nama}
Algoritma nama[1]:= ‘harry’;
Nama[1] ‘harry’ nama[2]:= ‘hermione’;
Nama[2] ‘hermione’ nama[3]:= ‘ron’;
Nama[3] ‘ron’ nama[4]:= ‘neville’;
Nama[4] ‘neville’ nama[5]:= ‘luna’;
Nama[5] ‘luna’
{awal pencarian}
Input(nama_dicari) writeln('masukkan nama yang dicari');
readln(nama_dicari);
i traversal [1..5]
If (nama_dicari=nama[i]) then {mulai mencari}
Output('Nama ditemukan') for i:=1 to 5 do
{dicari satu dalam elemen array}
If (nama_dicari=nama[i]) then
writeln('Nama ditemukan');
{ jika ditemukan }
end.

Contoh di atas adalah program yang sangat sederhana untuk mencari (search) data dalam array. Jika
kita mencari ‘luna’, maka program akan mengeluarkan ‘Nama ditemukan’ karena nama luna
berada dalam array nama yang ingin dicari. Hal yang berbeda akan berbeda jika kita mencari
‘cedric’ misalnya, karena nama ‘cedric’ tidak terdapat dalam array nama. Dalam hal ini,
program tersebut akan langsung keluar (terminasi) tanpa mengeluarkan output apapun. Padahal,
akan sangat membantu jika kita memberikan keterangan pada pengguna bahwa data yang dicari
tidak ditemukan. Pada contoh selanjutnya, kita akan melihat program yang dapat melakukan hal ini
dengan memanfaatkan sebuah variable bertipe Boolean. Variabel ini akan diset true jika data
ditemukan, dan tetap bernilai false jika hingga ujung pencarian array, data tidak juga ditemukan.

Praktikum Dasar Algoritma dan Pemrograman 53


Modul 8 – Searching dan Sorting

Kemudian, perhatikan bahwa jika kita ingin mencari ‘harry’, maka sebenarnya program akan
menemukan data ‘harry’ pada iterasi pertama. Kondisinya, walaupun tujuan dari program ini telah
selesai (yaitu menemukan data yang ingin dicari), namun sayangnya program sederhana di atas akan
tetap meneruskan mencari keseluruhan array. Hal ini juga akan diperbaiki pada pembahasan berikut,
yaitu program akan berhenti ketika data yang ingin dicari telah ditemukan.

8.2 Metode Pencarian Datum


Pada modul ini, akan dijelaskan dua dari sekian banyak metode pencarian yang ada, yaitu pencarian
berurut (sequential search) dan pencarian biner (binary search).

8.2.1 Sequential Search


Pada pembahasan berikut, diberikan contoh skema sequential search dengan serta tanpa bantuan
variabel Boolean. Kedua contoh program berikut ini sama-sama melakukan tugas yang sama:
menampilkan keterangan ‘data ditemukan pada indeks ke-‘ jika data ditemukan, dan menampilkan
keterangan ‘data tidak ditemukan’ jika hal sebaliknya terjadi.

Skema sequential search tanpa boolean


Pseudo Code Kode Bahasa Pascal
Procedure Procedure SEQSearch1(T:TabInt;N,x:integer;var
SEQSearch1(T:TabIntN,x:integeri/o idx:integer);
idx:integer) Var
kamus i : integer;
i : integer Begin
algoritma i:=1;
i1 While ((i<N) and (T[i]<>x)) do
While ((i<N) and (T[i]<>x)) do Begin
ii+1 i:=i+1;
end;
If T[i]=x then
output(‘data ditemukan pada If T[i]=x then
indeks ke-‘,i) writeln(‘data ditemukan pada indeks ke-
Else ‘,i);
output(‘data tidak Else
ditemukan’) writeln(‘data tidak ditemukan’);
end;

Skema sequential search dengan boolean (benar)


Pseudo Code Kode Bahasa Pascal
Procedure Procedure SEQSearch2(T:TabInt;N,x:integer;
SEQSearch2(T:TabIntN,x:integer var idx:integer;found:boolean);
i/o idx:integerfound:boolean) Var
kamus i : integer;
i : integer Begin
algoritma i:=1;
i1 found:=false;
foundfalse While (i<=N and not(found)) do
While (i<=N and not(found)) do Begin
If T[i]=x then If T[i]=x then
foundtrue found:=true
else else
ii+1 i:=i+1;
end;

Praktikum Dasar Algoritma dan Pemrograman 54


Modul 8 – Searching dan Sorting

If found then
output(‘data ditemukan pada If found then
indeks ke-‘,i) writeln(‘data ditemukan pada indeks ke-
Else ‘,i);
output(‘data tidak ditemukan’) Else
writeln(‘data tidak ditemukan’);
end;

end;

Variasi lain dari sequential search adalah Skema sequential search dengan sentinel.
Coba perhatikan program berikut :
Pseudo Code Kode Bahasa Pascal
Procedure SEQSearchSentinel(T:TabInt; Procedure SEQSearchSentinel(T:TabInt;
NMax,x:integer; i/o idx:integer) NMax,x:integer; var idx:integer);
kamus Var
i : integer i : integer;
algoritma Begin
i1 i:=1;
T[NMax+1]x {pasang sentinel} T[NMax+1]:=x; {pasang sentinel}
While (T[i]<>x) do While (T[i]<>x) do
ii+1 Begin
i:=i+1;
If i < NMax +1 then end;
output(‘data ditemukan pada
indeks ke-‘,i) If i< NMax +1 then
Else writeln(‘data ditemukan pada indeks ke-
output(‘data tidak ditemukan’) ‘,i);
Else
writeln(‘data tidak ditemukan’);
end;

8.2.2 Binary Search


Skema binary search adalah skema pencarian yang hanya dapat dilakukan pada data yang sudah
terurut, baik ascending, maupun descending. Pada sebagian besar kasus, proses binary search lebih
cepat bila dibandingkan dengan sequential search. Mengapa demikian?

Skema pencarian binary search dengan boolean

Pseudo Code Kode Bahasa Pascal


Procedure BinSearch1(input Procedure BinSearch1(input T:tabint,
T:tabint,n:integer, x:integer, n:integer, x:integer,
Output found:boolean, ix:integer) Output found:boolean, ix:integer);
kamus var
Atas,bawah,tengah:integer Atas,bawah,tengah:integer;
algoritma begin
Atas1 Atas:=1;
Bawahn Bawah:=n;
Foundfalse Found:=false;
Ix0 Ix=0;
While (atas<=bawah and not(found)) While (atas<=bawah and not(found)) do
do begin
Tengah(atas+bawah)div 2 Tengah:=(atas+bawah)div 2;
If T[tengah]=x then If T[tengah]=x then

Praktikum Dasar Algoritma dan Pemrograman 55


Modul 8 – Searching dan Sorting

Foundtrue Found:=true;
Ixtengah Ix:=tengah;
Else if T[tengah]<x then Else if T[tengah]<x then
atastengah+1 atas:=tengah+1
Else Else
bawahtengah-1 bawah:=tengah-1;
end;
{atas>bawah or found,
harga found menentukan hasil pencarian}
end;

Skema binary search tanpa Boolean


Pseudo Code Kode Bahasa Pascal
Procedure BinSearch2(input T:tabint, Procedure BinSearch2(input T:tabint,
n:integer, x:integer, Output n:integer, x:integer,
ix:integer) Output ix:integer);
kamus Var
Atas,bawah,tengah:integer Atas,bawah,tengah:integer;
algoritma Begin
Atas1 Atas:=1;
Bawahn Bawah:=n;
Tengah(atas+bawah)div 2 Tengah:=(atas+bawah)div 2;
While (atas<bawah and T[tengah]<>x) While (atas<bawah and T[tengah]<>x) do
do begin
if T[tengah]<x then if T[tengah]<x then
atastengah+1 atas:=tengah+1
Else Else
bawahtengah-1 bawah:=tengah-1;

Tengah(atas+bawah)div 2 Tengah:=(atas+bawah)div 2;
end; {atas>=bawah or T[tengah]=x}
if (T[tengah]=x) then
ixtengah if (T[tengah]=x) then
else ix:=tengah
ix0 else
ix:=0;
end;

8.3 Sorting
Dalam ilmu komputer, terdapat banyak metode pengurutan data (sorting) yang telah ditemukan
dengan segala kekurangan dan kelebihannya masing-masing. Dalam modul ini, akan dibahas empat
metode pengurutan data yang sederhana dan fundamental, yaitu bubble sort, insertion sort,
selection sort dan counting sort.

Di bawah ini adalah contoh program utama yang akan memanggil prosedur pengurutan data
tertentu. Metode-metode pengurutan data akan dijelaskan pada subbab berikutnya dalam bentuk
kode procedure atau function.

Pseudo Code Kode Bahasa Pascal


Program pengurutan Program pengurutan;
{program ini berfungsi sebagai main {program ini berfungsi sebagai main program
program yang akan memanggil yang akan memanggil beberapa prosedur
beberapa prosedur sorting} sorting}

Praktikum Dasar Algoritma dan Pemrograman 56


Modul 8 – Searching dan Sorting

CONST CONST
Nmax = 100 Nmax = 100
TYPE TYPE
Tabel = array[1..Nmax] of integer Tabel = array[1..Nmax] of integer;
kamus VAR
T : Tabel {tabel integer} T : Tabel; {tabel integer}
N : integer N : integer;
I,x : integer Kondisi : boolean {indeks efektif,
maksimum tabel yang terdefinisi 1 ≤ N ≤
algoritma Nmax+1}
While (not(kondisi)) do I,x : integer; Kondisi : boolean;
input(N)
if ((N>=1) and (N<=Nmax+1)) Begin
then While (not(kondisi)) do
kondisitrue Begin
readln(N);
i traversal [1..n] if ((N>=1) and (N<=Nmax+1)) then
input(T[I]) kondisi:=true;
end;
{lakukan pemanggilan prosedur sort
disini……!} for I :=1 to N do
begin
write('masukkan nilai ke ',I,' = ');
readln(T[I]);
end;

{lakukan pemanggilan prosedur sort


disini……!}

End.

8.4 Metode Pengurutan Data


8.4.1 Bubble Sort
Pseudo Code Kode Bahasa Pascal
procedure bubbleSort(i/o a : tabel procedure bubbleSort(var a : tabel );
) var
kamus int i,j, tmp : integer;
int i,j, tmp : integer
begin
algoritma for i:= size downto 2 do
i traversal [size..2] for j:= 2 to i do
J traversal [2..i] if (a[j-1] > a[j]) then
if (a[j-1] > a[j]) then begin
tmp := a[j-1];
tmp  a[j-1] a[j-1] := a[j];
a[j-1]  a[j] a[j] := tmp;
a[j]  tmp end;
end;

8.4.2 Insertion Sort


Bekerja mirip seperti bubble sort, metode insertion sort juga membandingkan antardua data.
Bedanya, sebuah datum (satu buah ‘data’) yang tidak berada pada tempatnya akan langsung
dipindah atau disisipkan (insert) pada tempat yang selayaknya saat itu juga.

Praktikum Dasar Algoritma dan Pemrograman 57


Modul 8 – Searching dan Sorting

Pseudo Code Kode Bahasa Pascal


procedure insertionSort(I/o a : procedure insertionSort(var a : tabel );
tabel ) var
kamus i,j,tmp :integer;
i,j,tmp :integer
begin
algoritma for(i:=2 to size)do
i traversal [2..size] begin
tmpa[i] tmp:=a[i];
ji j=i;
while ((j>1) and ( tmp < a[j- while ((j>1) and ( tmp < a[j-1])) do
1])) do begin
a[j]a[j-1] a[j]:=a[j-1];
jj-1 j:=j-1;
a[j]<-tmp end;
a[j]:=tmp
end;
end;

8.4.3 Selection Sort


Metode ini akan memilih (select) nilai terkecil dari setiap iterasi, kemudian menempatkannya pada
tempat yang seharusnya.
Pseudo Code Kode Bahasa Pascal
Procedure selectionSort(i/o a : Procedure selectionSort(var a : tabel);
tabel) var
kamus i,j,min,tmp :integer;
i,j,min,tmp :integer
begin
algoritma for i:=1 to size-1 do
i traversal [1..size-1] begin
min  i min := i;
j traversal [i + 1 .. size] for j := i + 1 to size do
if (a[j] < a[min]) then if (a[j] < a[min]) then
min  j min := j;
tmp  a[min] tmp := a[min];
a[min]  a[i] a[min] := a[i];
a[i]  tmp a[i] := tmp;
end;
end;

8.4.4 Counting sort


Berbeda dengan ketiga jenis metode pengurutan data sebelumnya yang bekerja dengan cara
membandingkan dua data, metode counting sort tidak bekerja dengan cara demikian. Counting sort
bekerja selayaknya perhitungan suara dalam pemilu, yaitu menghitung frekuensi kemunculan suatu
datum, dan menyimpannya pada array.

Pseudo Code Kode Bahasa Pascal


procedure CountSort(i/o procedure CountSort(var TabInt:tabel);
TabInt:tabel) var
i,j,k, : integer;
kamus {min dan max adalah batas minimum dan
i,j,k, : integer maksimum, harga yang tersimpan dalam T, harus
TabCount : array[Min..Max] of diketahui}
integer
TabCount : array[Min..Max] of integer;

Praktikum Dasar Algoritma dan Pemrograman 58


Modul 8 – Searching dan Sorting

begin
Algoritma for i:=Min to Max do
i traversal [min..max] begin
TabCount[i]0 TabCount[i]:=0;
end;
i traversal [i..n]
TabCount[TabInt[i]] for i:=1 to n do
TabCount[TabInt[i]]+1 begin

k<-0 TabCount[TabInt[i]]:=TabCount[TabInt[i]]+1;
i traversal [min..max] end;
if TabCount[i] <> 0 then
j traversal k:=0;
[1..TabCount[i]] for i:=Min to Max do
kk+1 if TabCount[i] <> 0 then
TabInt[k]i for j:=1 to TabCount[i] do
begin
k:=k+1;
TabInt[k]:=i;
end;
end;

Catatan:
o Lakukan pengujian terhadap semua prosedur sorting tersebut dengan menggabungkan
antara program utama pengurutan dan semua prosedurnya.
o Manakah yang lebih mangkus? Selection, insertion, atau bubble sort?
o Lakukan pengujian terhadap
 Karakter (mengurutkan abjad) dan
 String (mengurutkan nama).

Praktikum Dasar Algoritma dan Pemrograman 59


Modul 8 – Searching dan Sorting

Soal

1. Buat sebuah prosedur untuk mencari hasil perkalian matriks. Inputan


matriks(kolom,baris,dan isi matriks) terserah kepada user tapi dengan syarat jumlah
kolom matriks pertama harus sama dengan jumlah baris matrik kedua

Contoh keluaran program


Baris matrik 1: 3
Kolom matrik 1: 2
Baris matrik 2: 2
Kolom matrik 2: 1

Isi matrik 1
matrik1 [1,1] = 1
matrik1 [1,2] = 2
matrik1 [2,1] = 3
matrik1 [2,2] = 4
matrik1 [3,1] = 5
matrik1 [3,2] = 6

Isi matrik 2
matrik2 [1,1] = 1
matrik2 [2,1] = 2

Hasil perkalian matriks


Hasil [1,1] = 5
Hasil [2,1] = 11
Hasil [3,1] = 17

2. Buatlah sebuah program untuk mengurutkan array of record berdasarkan field tertentu!
3. Buatlah program untuk melakukan perhitungan modus pada suatu array berdimensi 2!

4. Bu a tl a h p r o gr a m yang d ap at m en gu ru t kan an g ka se ca r a d e s cend in g !


Co nt oh In put :
m a s u kkan ju m la h an gka : 7
a n g ka -1 : -2
a n g ka -2 : 4 3
a n g ka -3 : 2
a n g ka -4 : 5 6 .5
a n g ka -5 : -2 8 . 4

Praktikum Dasar Algoritma dan Pemrograman 60


Modul 8 – Searching dan Sorting

a n g ka -6 : 2 43
a n g ka -7 : 6 7
Co nt oh Ou tpu t :
u ru t an an g ka yan g a ka n d im a ka n ol eh P ep i a d a la h :
2 4 3, 6 7 , 56 . 5, 4 3 , 2 , -2 , - 28 . 4

5. Buatlah program untuk melakukan inisialisasi array berjumlah 100 item dengan nilai
random kemudian lakukan pengurutan dengan metode sorting tertentu!

Praktikum Dasar Algoritma dan Pemrograman 61


Modul 9 - Sequential File

Modul 9 Sequential File

Tujuan
Praktikan diharapkan dapat :
o Memahami bentuk-bentuk file sekuensial dalam algoritma.
o Memahami bentuk algoritma konsolidasi.
o Membuka file, menutup file, menuliskan data ke file, menampilkan data, menampilkan data
baik dalam bentuk file skuensial dalam algoritma maupun dalam bahasa Pascal.

Pada modul ini, kita akan belajar bagaimana menyimpan data pada sebuah file. Sebelum
membahas lebih lanjut perlu diketahui beberapa operasi terhadap file yang dapat dilakukan, yaitu

 Assign
Berfungsi untuk membuka berkas atau file yang akan dioperasikan.
Sintaks: Assign(Variabel_File,’File_Name’)
 Rewrite
Berfungsi untuk membuat file baru dan menempatkan posisi kursor/pointer pada awal berkas
(posisi nol). Perlu diperhatikan, bila ternyata file tersebut sudah ada maka secara otomatis data
sebelumnya akan terhapus.
Sintaks: Rewrite(Variable_File)
 Write
Berfungsi untuk menuliskan data dari variabel penampung ke dalam file. Posisi pointer akan
secara otomatis maju ke posisi selanjutnya setelah prose penulisan selesai.
Sintaks: Write(Variable_File,Variable_Penampung)
 Read
Berfungsi untuk membaca data dari file dan selanjutnya disimpan ke dalam variable
penampung. Posisi pointer juga secara otomatis akan maju.
Sintaks :
Read (Variable_File,Variable_Penampung)

 Reset
Berfungsi mengembalikan posisi pointer ke awal file. Sintaks :
Reset (Variable_File)

 Seek
Berfungsi untuk menempatkan pointer pada posisi data tertentu yang ada di dalam file.
Sintaks :
Seek (Variable_File,Posisi_Pointer)

 FileSize
Berfungsi untuk mendapatkan jumlah data yang tersimpan dalam file.
Sintaks :
Variable_Penampung := FileSize(Variable_File)

Praktikum Dasar Algoritma dan Pemrograman 62


Modul 9 - Sequential File

 FilePos
Berfungsi untuk mendapatkan posisi pointer pada saat eksekusi operasi ini dilakukan.
Sintaks :
Variable_Penampung := FilePos(Variable_File)

 Erase
Berfungsi untuk menghapus berkas.
Sintaks :
Erase (Variable_File)

 Rename
Berfungsi untuk mengganti nama berkas yang sudah ada.
Sintaks :
Rename(Variable_File,’New_Name’)

 EOF
Berfungsi untuk mengetahui apakah posisi pointer sudah berada di data terakhir (TRUE)
atau tidak (FALSE).
Sintaks :
Variable_Penampung := EOF (Variable_File)

 Close
Berfungsi untuk menutup berkas bila tidak akan dioperasikan lagi.
Sintaks :
Close(Variable_File)

Berikut contoh Penerapan File Sekuensial untuk membuat data Mahasiswa :


Pseudo Code Kode Bahasa Pascal
Program DataMahasiswa Program DataMahasiswa
Type Uses crt;
Mahasiswa = < Type
NIM : String Mahasiswa = Record
Nama : String NIM : String;
Nilai : Real Nama : String;
> Nilai : Real;
End;
Kamus
ArsipMhs : file Of Var
Mahasiswa ArsipMhs : file Of Mahasiswa;
RekMhs : Mahasiswa RekMhs : Mahasiswa;
I :integer I :integer;

Algoritma Begin {Program Utama}


Assign(ArsipMhs,‟MHS.DAT‟) Assign(ArsipMhs,‟MHS.DAT‟);
Rewrite(ArsipMhs) Rewrite(ArsipMhs);
While i<=5 do {Pada contoh kali ini kita akan menginputkan 5
input(RekMhs.Nim) data mahasiswa}
input(RekMhs.Nama) While i<=5 do
input(RekMhs.Nilai) Begin
Write(“Input Nim :
write(ArsipMhs,RekMhs) “);readln(RekMhs.Nim);
Write(“Input Nama :
Reset (ArsipMhs) “);readln(RekMhs.Nama);
Write(“Input Nilai :

Praktikum Dasar Algoritma dan Pemrograman 63


Modul 9 - Sequential File

i traversal [1..5] “);readln(RekMhs.Nilai);


Read(ArspiMhs,RekMhs) write(ArsipMhs,RekMhs)
Write(“Nim end;
:“,RekMhs.Nim)
Write(“Nama Reset (ArsipMhs);
:“,RekMhs.Nama) {Membaca isi data yang kita tulis di file
MHS.DAT}
Write(“Nilai:“,RekMhs.Nilai For i:=1 to 5 do
) Begin
close(ArsipMhs) Read(ArspiMhs,RekMhs);
Write(“Nim : “,RekMhs.Nim);
Write(“Nama : “,RekMhs.Nama);
Write(“Nilai : “,RekMhs.Nilai);
End;
Close(ArsipMhs);
Readln;
End.

Penerapan File Sekuensial untuk menghitung mencari nilai tertinggi dan terendah dari file
Pseudo Code Kode Bahasa Pascal
Program Mencari Nilai Max dan Min dari Program Mencari Nilai Max dan Min dari
File File
Uses crt;
Type Type
Mahasiswa = < Mahasiswa = Record
NIM : String NIM : String;
Nama : String Nama : String;
Nilai : Real Nilai : Real;
> End;

kamus Var
ArsipMhs : file Of Mehasiswa ArsipMhs : file Of Mehasiswa;
RekMhs,RekMhsMax,RekMhsMin : RekMhs,RekMhsMax,RekMhsMin :
Mahasiswa Mahasiswa;
{Dengan Asumsi Range nilai 0-100}
algoritma
RekMhsMax.Nilai0 Begin {Program Utama}
RekMhsMin.Nilai100 RekMhsMax.Nilai:=0;
Assign(ArsipMhs,‟MHS.DAT‟) RekMhsMin.Nilai:=100;
Reset(ArsipMhs) Assign(ArsipMhs,‟MHS.DAT‟);
Reset(ArsipMhs);
While not Eof(ArsipMhs) do While not Eof(ArsipMhs) do
Read(ArsipMhs,RekMhs) begin
If RekMhsMax.Nilai<=RekMhs.Nilai Read(ArsipMhs,RekMhs)
then If RekMhsMax.Nilai <= RekMhs.Nilai
RekMhsMaxRekMhs then
If RekMhsMin.Nilai>=RekMhs.Nilai RekMhsMax=RekMhs;
then If RekMhsMin.Nilai>=RekMhs.Nilai
RekMhsMinRekMhs then
RekMhsMin=RekMhs;
Writeln(RekMhsMax.Nilai,RekMhsMax. end;
Nim)
Writeln(RekMhsMin.Nilai,RekMhsMin. Writeln(“Mahasiswa dengan nilai
Nim) tertinggi:
Close(ArsipMhs) “,RekMhsMax.Nilai,‟dengan
Nim‟,RekMhsMax.Nim);
Writeln(“Mahasiswa dengan nilai
terendah:

Praktikum Dasar Algoritma dan Pemrograman 64


Modul 9 - Sequential File

“,RekMhsMin.Nilai,‟dengan
Nim‟,RekMhsMin.Nim);
Close(ArsipMhs);
End.

Penerapan File Sekuensial untuk menghapus data dari file


Pseudo Code Kode Bahasa Pascal
Program hapus Program hapus;
Uses crt;
Type Type
Mahasiswa = Record Mahasiswa = Record
NIM : String NIM : String;
Nama : String Nama : String;
Nilai : Real Nilai : Real;
End;

kamus Var
ArsipMhs,TempArsipMhs : file Of ArsipMhs,TempArsipMhs : file Of
Mehasiswa Mehasiswa;
RekMhs : Mahasiswa RekMhs : Mahasiswa;
X:String X:String;

algoritma Begin {Program Utama}


Assign(ArsipMhs,‟MHS.DAT‟) Assign(ArsipMhs,‟MHS.DAT‟);
Assign(TempArsipMhs,‟TEMP.DAT‟) Assign(TempArsipMhs,‟TEMP.DAT‟);
Reset(ArsipMhs) Reset(ArsipMhs);
Rewrite(TempArsipMhs) Rewrite(TempArsipMhs);
input (x) Write(“Masukkan Nim Mahasiswa yang ingin
While not Eof(ArsipMhs) do di hapus :“);
Read(ArsipMhs,RekMhs) readln(x);
If(RekMhs.Nim <> x)then While not Eof(ArsipMhs) do
Write(TempArsipMhs,RekMhs) begin
Read(ArsipMhs,RekMhs)
Erase(ArsipMhs) If(RekMhs.Nim <> x)then
Rename(TempArsipMhs,‟MHS.DAT‟) Write(TempArsipMhs,RekMhs);
end;
Erase(ArsipMhs);
Rename(TempArsipMhs,‟MHS.DAT‟);
End.

Penerapan File Sekuensial untuk mengecek file


Pseudo Code Kode Bahasa Pascal
Program Cek File Program Cek File;
Uses crt;
Type Type
Mahasiswa = Record Mahasiswa = Record
NIM : String NIM : String;
Nama : String Nama : String;
Nilai : Real Nilai : Real;
End;

kamus Var
ArsipMhs: file Of Mahasiswa ArsipMhs: file Of Mahasiswa;
Filename :string Filename :string;

function cekfile(namafile:string) : function cekfile(namafile:string):boolean;

Praktikum Dasar Algoritma dan Pemrograman 65


Modul 9 - Sequential File

boolean begin
assign(ArsipMhs,namafile) assign(ArsipMhs,namafile);
{$I-} {$I-}
reset(ArsipMhs) reset(ArsipMhs);
{$I+} {$I+}
if IOresult=0 then if IOresult=0 then
cekfile<-false cekfile:=false
else else
cekfile<-true cekfile:=true;
end;

Begin {Program Utama}


algoritma Writeln(“Inputkan Nama File : “);
input(Filename) readln(Filename);
If(cekfile(filename))then If(cekfile(filename))then
output(“File sudah ada‟) Write(“File sudah ada‟)
Else Else
output (“File belum ada‟) write (“File belum ada‟);
Readln;
End.

Menggabungkan Dua File Menjadi Satu (Merge)


Pseudo Code Kode Bahasa Pascal
Program GabungData Program GabungData;
Uses crt;
Type Type
Mahasiswa = < Mahasiswa = Record
NIM : String NIM : String;
Nama : String Nama : String;
Nilai : Real Nilai : Real;
> End;

Var Var
ArsipMhs1,ArsipMhs2,ArsipMhsOut ArsipMhs1,ArsipMhs2,ArsipMhsOut : file
: Of Mahasiswa;
file Of Mahasiswa RekMhs1,RekMhs2,RekMhsOut: Mahasiswa;
RekMhs1,RekMhs2,RekMhsOut:
Mahasiswa Begin {Program Utama}
Assign(ArsipMhs1,‟MHS1.DAT‟);
algoritma Reset(ArsipMhs1);
Assign(ArsipMhs1,‟MHS1.DAT‟) Assign(ArsipMhs2,‟MHS2.DAT‟);
Reset(ArsipMhs1) Reset(ArsipMhs2);
Assign(ArsipMhs2,‟MHS2.DAT‟) Assign(ArsipMhsOut,‟MHSOUT.DAT‟);
Reset(ArsipMhs2) Rewrite(ArsipMhsOut);
Assign(ArsipMhsOut,‟MHSOUT.DAT‟) While not Eof(ArsipMhs1) do
Rewrite(ArsipMhsOut) begin
While not Eof(ArsipMhs1) do read(ArsipMhs1,RekMhs1);
read(ArsipMhs1,RekMhs1) write(ArsipMhsOut,RekMhs1);
write(ArsipMhsOut,RekMhs1) end;
seek(ArsipMhsOut,filesize(ArsipM
hsOut)) seek(ArsipMhsOut,filesize(ArsipMhsOut));
While not Eof(ArsipMhs2) do
While not Eof(ArsipMhs2) do begin
read(ArsipMhs2,RekMhs2) read(ArsipMhs2,RekMhs2);
write(ArsipMhsOut,RekMhs1) write(ArsipMhsOut,RekMhs1);
end;
Close(ArsipMhs1)

Praktikum Dasar Algoritma dan Pemrograman 66


Modul 9 - Sequential File

Close(ArsipMhs2) Close(ArsipMhs1);
Close(ArsipMhsOut) Close(ArsipMhs2);
Close(ArsipMhsOut);
End.

Soal
1. Buat sebuah program untuk menampilkan data mahasiswa tertentu saja untuk
data mahasiswa dengan menggunakan file sekuensial!

2. Buat sebuah program untuk menampilkan rata-rata nilai mahasiswa apabila satu
mahasiswa dapat memiliki lebih dari satu mata kuliah!

3. Buat sebuah program untuk mengubah data Mahasiswa berdasarkan NIM- nya!

4. Buatlah sebuah program yang mampu membaca dan menulis data diary dalam
mode text. Setiap elemen diary terdiri dari tanggal, judul dan isi diary. Main menu
program ini adalah :
1. Lihat diary
2. Tambah diary baru
3. Exit
5. Buat sebuah program untuk mengelompokkan file pada mahasiswa berdasarkan
program studi yang diketahui dari Nimnya! Contoh:

NIM : 613060001 ada di file D3.DAT Sedangkan NIM : 113060001 ada di file

S1.DAT

Praktikum Dasar Algoritma dan Pemrograman 67


Modul 10 – Mesin Abstrak

Modul 10 Mesin Abstrak

Tujuan
Praktikan diharapkan dapat :
o Memahami pengertian mesin abstrak.
o Memahami item-item mesin abstrak.
o Memahami penggunaan mesin abstrak dalam studi kasus tertentu.

Mesin abstrak adalah yang dapat melakukan sebuah tugas namun tidak mempunyai fisik. Mesin ini
hanya khayalan, oleh sebab itu disebut abstrak. Terdapat dua jenis mesin abstrak yang akan
dibahas dalam modul ini, yaitu mesin karakter dan mesin pencacah.

10.1 Mesin Karakter


Kali ini akan dibahas mesin karakter, yaitu mesin yang dapat memproses karakter. Mesin abstrak
akan membaca karakter per karakter yang diambil dari sebuah file teks yang disebut sebagai
pitaChar.

Gambar 10.1 Visualisasi Mesin Karakter

Seperti tampak pada gambar Gambar 10.1, mesin karakter divisualisasikan sebagai sebuah mesin
sederhana yang hanya memiliki dua tombol untuk dioperasikan: tombol start dan adv. PitaChar
sendiri adalah “kertas” berisi karakter-karakter yang akan dibaca. Dalam gambar yang sama, pitaChar
divisualisasikan sebagai persegi dengan pola strip hitam putih. Mesin abstrak kita akan membaca
karakter yang tertulis dalam pitaChar ini hingga ujung pita. Penting untuk diingat bahwa mesin
sederhana ini hanya mampu membaca satu karakter per satuan waktu.

Ketika tombol start ditekan (dalam program yang akan kita buat pada subbab berikutnya, cara
“menekan” mesin khayalan kita adalah dengan memanggil function yang bersangkutan), mesin akan
menyala dan mulai membaca karakter pertama pada pitaChar. Ketika tombol adv ditekan, mesin
akan menggeser pitaChar selangkah ke kanan dan membaca karakter selanjutnya yang ada dalam
pitaChar.

Selain dua tombol tadi, mesin sederhana ini juga dilengkapi dengan dua buah indikator: CC dan EOP.

Praktikum Dasar Algoritma dan Pemrograman 68


Modul 10 – Mesin Abstrak

Sebelumnya harus diketahui dulu hal – hal dasar yang harus diketahui mengenai mesin karakter. CC
atau current character adalah layar yang menampilkan karakter yang sedang dibaca oleh mesin.
Indikator EOP adalah sebuah lampu (atau dalam program kita nantinya, sebuah variabel bertipe
Boolean) yang berfungsi sebagai indikator habisnya pita untuk dibaca. Lampu EOP yang tadinya
padam, akan menyala (dalam program kita berarti, variabel EOP yang tadinya bernilai false akan
berubah menjadi true) ketika pitaChar telah habis dibaca.

Tipe data yang paling cocok untuk menampung PitaChar adalah dengan menggunakan file bertipe
char, yang dapat diimplementasikan sebagai file of char ataupun textfile, karena string
adalah kumpulan dari banyak karakter. Dalam modul ini, textfile akan digunakan sebagai tipe data
file.

Setiap karakter dapat diproses dengan mengakses variable CC. untuk mendapatkan CC, kita dapat
memakai bantuan variable CI (current integer). Pada mesin karakter, dikenal ADV untuk maju
satu karakter kedepan, namun tidak ada procedure untuk mundur satu karakter kebelakang. Berikut
adalah contoh sederhana dari sebuah mesin karakter. CI pada mesin karakter dimulai dari angka 1,
karena pada bahasa Pascal, index pertama sebuah string dimulai dari angka 1, berbeda dengan
bahasa C yang dimulai dari angka 0.

Berikut adalah contoh program untuk membaca karakter yang dibaca oleh mesin abstrak dari file
pitaChar, kemudian menampilkannya ke layar komputer kita. Sebelum mencoba program berikut,
buatlah terlebih dahulu sebuah file bertipe txt dengan nama abstract0.txt yang di dalamnya berisi
‘0123456789’ tanpa tanda petik.

Gambar 10.2 Isi file abstract0.txt

Pseudo Code Kode Bahasa Pascal


kamus var
CC : char CC : char;
pitaChar : file of char pitaChar : file of char;

procedure START; procedure START;


{- mesin abstrak khayalan {- mesin abstrak khayalan dinyalakan
dinyalakan - indikator layar CC berisi karakter
- indikator layar CC berisi pertama dalam pitaChar
karakter pertama dalam pitaChar }
} begin
algoritma assign(pitaChar, 'abstract0.txt');
assign(pitaChar, 'abstract0.txt') reset(pitaChar);
reset(pitaChar) read(pitaChar, CC);
read(pitaChar, CC) end;

procedure ADV procedure ADV;


{- pitaChar digeser ke kanan {- pitaChar digeser ke kanan selangkah
selangkah - indikator layar CC berisi karakter yang

Praktikum Dasar Algoritma dan Pemrograman 69


Modul 10 – Mesin Abstrak

- indikator layar CC berisi sedang dibaca }


karakter yang sedang dibaca begin
} read(pitaChar, CC);
algoritma end;
read(pitaChar, CC)
function EOP:boolean;
function EOP:Boolean begin
algoritma if EOF(pitaChar) then
if EOF(pitaChar) then EOP := true
EOP  true else
else EOP := false;
EOP  false; end;

Algoritma program utama begin


START {mulai nyalakan mesin} START; {mulai nyalakan mesin}
while (not EOP) do {ulangi selama writeln(CC);
sinyal EOP tidak menyala} while (not EOP) do {ulangi selama sinyal
begin EOP tidak menyala}
ADV {geser pita ke kanan begin
selangkah} ADV; {geser pita ke kanan selangkah}
writeln(CC) {tulis apa yang writeln(CC); {tulis apa yang tampil pada
tampil pada layar CC} layar CC}
end end;
readln;
end.

10.2 Mesin Pencacah


Mesin abstrak yang lain adalah mesin pencacah atau mesin integer. Mesin abstrak ini mirip dengan
alat penghitung lompat tali. Hanya ada dua tombol dalam mesin sederhana ini: tombol INC untuk
menambah hitungan, dan tombol RESET untuk mengembalikan hitungan menjadi nol. Selain kedua
tombol tersebut, mesin ini juga dilengkapi indikator CI (current integer) yang memperlihatkan
banyaknya hitungan yang telah dilakukan.

Gambar 10.3. Alat penghitung lompat tali, representasi nyata dari mesin pencacah

Berikut adalah contoh mesin integer yang digunakan untuk menyelesaikan kasus sederhana:
menghitung panjang pitaChar. Sebelum mencoba, buatlah file abstract2.txt terlebih dahulu yang
berisi ‘abcde’ tanpa tanda petik. Kemudian cobalah apakah program di bawah ini memberikan hasil

Praktikum Dasar Algoritma dan Pemrograman 70


Modul 10 – Mesin Abstrak

jumlah karakter dalam pitaChar yang benar, yaitu 5. Pada contoh di bawah ini, mesin integer
digunakan bersama dengan mesin karakter agar dapat berfungsi.

Pseudo Code Kode Bahasa Pascal


kamus var
CC : char; CC : char;
pitaChar : file of char; pitaChar : file of char;
CI : integer; CI : integer;

procedure START; procedure START;


algoritma begin
assign(pitaChar, 'abstract2.txt') assign(pitaChar, 'abstract2.txt');
reset(pitaChar) reset(pitaChar);
read(pitaChar, CC) read(pitaChar, CC);
end;
procedure ADV
algoritma procedure ADV;
read(pitaChar, CC) begin
read(pitaChar, CC);
procedure RESET end;
algoritma
CI  0 procedure RESET;
begin
procedure INC CI := 0;
algoritma end;
CI  CI + 1
procedure INC;
function EOP:boolean; begin
algoritma CI := CI + 1;
if EOF(pitaChar) then end;
EOP  true
else function EOP:boolean;
EOP  false begin
if EOF(pitaChar) then
algoritma EOP := true
START else
INC EOP := false;
while (not EOP) do end;
ADV
INC begin
output(CI) START;
INC;
while (not EOP) do
begin
ADV;
INC;
end;
writeln(CI);
readln;
end.

Catatan:
 Cobalah untuk melakukan perhitungan jumlah kata dengan memodifikasi program untuk
menghitung panjang suatu kalimat
 Modifikasi kembali program untuk menghitung panjang suatu kalimat untuk melakukan
perhitungan jumlah kemunculan suatu pasangan huruf pada kalimat.

Praktikum Dasar Algoritma dan Pemrograman 71


Modul 10 – Mesin Abstrak

Soal
1. Hitung Kemunculan jumlah huruf konsonan yang ada pada suatu kalimat
2. Buatlah program untuk menghitung frekuensi kemunculan suatu kata tertentu
pada kalimat yang diinputkan oleh user.
3. Buatlah program untuk menghilangkan blank yang berlebihan, yaitu antara
lain:
a. Satu atau lebih blank sebelum huruf pertama yang bukan blank.
b. Satu atau lebih blank sebelum huruf terakhir yang bukan blank.
c. Lebih dari satu blank di antara dua buah kata
4. Buatlah program untuk melakukan konversi pada pita karakter yang
mengandung bilangan biner dan mengubahnya menjadi bilangan integer!

Praktikum Dasar Algoritma dan Pemrograman 72


Modul Overview

Modul Overview

Tujuan
Praktikan diharapkan dapat :
 Memahami konsep assignment dan operasi variabel
 Memahami tipe-tipe dasar yang ada dalam bahasa pemrograman Pascal
 Memahami dan menerapkan konsep analisa kasus
 Memahami dan menerapkan konsep fungsi dan prosedur di berbagai kasus
 Memahami dan menerapkan konsep perulangan di berbagai kasus

Program TubuhIdeal;
{ Nama File : TubuhIdeal.pas
Deskripsi : Mengkategorikan berat badan yang diinputkan user ke
dalam
kategori ideal, di atas normal, ataupun di bawah normal
berdasarkan nilai acuan (tinggi badan – 100 – ((tinggi badan-
100)x0.1) }

uses crt;
var
{---Kamus Global---}

a : real;
b,c : real;

begin
{---Program Utama---}
clrscr;
write('Masukkan tinggi badan : '); readln(a);
write('Masukkan berat badan : '); readln(b);
c := a - 100 - ((a-100)*0.1);
if (b = c) then
write ('berat badan anda ideal')
else
if (b>c) then
write('berat badan anda di atas
normal')
else
write('berat badan anda di bawah normal');
readln;
end.

Praktikum Dasar Algoritma dan Pemrograman 73


Modul Overview

Program PecahinUang;
{ Nama File : PecahinUang.pas
Deskripsi : Menentukan jumlah masing-masing pecahan uang 20000,
10000, dan 1000 terhadap inputan user }

uses crt;
var
{---Kamus Global---}

a : longint;
p1, p2, p3, sisa : longint;

begin
{---Program Utama---}

clrscr;
write('Masukkan jumlah uang yang akan diambil : ') ;readln(a);
sisa := a;
if (a >= 20000) then
begin
p1 := a div 20000;
sisa := a - (p1*20000);
end;
if (sisa >= 10000) and (sisa < 20000) then
begin
p2 := sisa div 10000;
sisa := sisa - (p2*10000);
end;
if (sisa < 10000) then begin
p3 := sisa div 1000;
end;

writeln('Jumlah penarikan yang dilakukan adalah : ');


writeln(p1, ' lembar 20.000an, ');
writeln(p2, ' lembar 10.000an, '); writeln('dan ', p3, ' lembar
1000an.'); readln
end.

Praktikum Dasar Algoritma dan Pemrograman 74


Modul Overview

Program Garis;
{ Nama File : Garis.pas
Deskripsi : Menentukan dua koordinat titik yang diinputkan termasuk
kategori garis vertikal, horizontal, miring, ataupun bukan garis }

uses crt;
var
{---Kamus Global---}
x1, x2, y1, y2, delta_x, delta_y : integer;
m : real;
begin
{---Program Utama---}
clrscr;
write ('Masukkan titik x1 : '); readln(x1);
write ('Masukkan titik y1 : '); readln(y1);
write ('Masukkan titik x2 : '); readln(x2); write ('Masukkan
titik y2 : '); readln(y2); delta_x := x2-x1;
delta_y := y2-y1;
if ( (delta_x = 0) and (delta_y = 0) ) then
write('Bukan merupakan suatu garis')
else
if ( delta_x = 0 ) then
write('Ini merupakan garis Vertikal')
else
if ( delta_y = 0 ) then
write('Ini merupakan garis Horizontal')
else begin
m := delta_y / delta_x;
write ('ini merupakan garis miring dengan gradien = ',m:0:2);
end;
readln;
end.

Praktikum Dasar Algoritma dan Pemrograman 75


Program IPK;
{ Nama File : ipk.pas
Deskripsi : Menghitung nilai IP dengan asumsi terdapat 4 mata
kuliah, yakni Kalkulus I, Prokom, PengLing, dan Bahasa Indonesia }
uses crt;
TYPE Nilai = record
indeks : char;
jumSKS : integer; nilai : integer; end;
var
m1,m2,m3,m4 : Nilai;
tot_sks, tot_ip : integer; IP : real;
function konversi(a:char) : integer;
begin
case a of
'A' : konversi := 4;
'B' : konversi := 3;
'C' : konversi := 2;
'D' : konversi := 1;
'E' : konversi := 0;
end;
end;
function Total (s, t:integer) : integer;
begin
Total := s*t;
end;
begin
clrscr;
write ('Masukkan Indeks Kalkulus I : ');
readln(m1.indeks);
write ('Masukkan Jumlah SKS Kalkulus I : ');
readln(m1.jumSKS);
write ('Masukkan Indeks PROKOM : ');
readln(m2.indeks);
write ('Masukkan Jumlah SKS PROKOM : ');
readln(m2.jumSKS);
write ('Masukkan Indeks PENGLING : ');
readln(m3.indeks);
write ('Masukkan Jumlah SKS PENGLING : ');
readln(m3.jumSKS);
write ('Masukkan Indeks BHS INDO : ');
readln(m4.indeks);
write ('Masukkan Jumlah SKS BHS INDO : '); readln(m4.jumSKS);
m1.nilai:=konversi(m1.indeks); m2.nilai:=konversi(m2.indeks);
m3.nilai:=konversi(m3.indeks); m4.nilai:=konversi(m4.indeks) ;
tot_ip := Total(m1.nilai , m1.jumSKS) + Total(m2.nilai ,
m2.jumSKS)
+ Total(m3.nilai , m3.jumSKS) + Total(m4.nilai ,
m4.jumSKS);
tot_sks := m1.jumSKS + m2.jumSKS + m3.jumSKS + m4.jumSKS;
IP := tot_ip / tot_sks;
writeln ('Total jumlah SKS yang diambil : ',tot_sks);
writeln ('Total IP : ',IP:0:2);
readln;
end.

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 49
Program Diamond;

{ Nama File : diamond.pas


Deskripsi : Menerapkan perulangan for untuk membuat pola belah
ketupat
dengan ukuran sesuai inputan user }

uses crt;
var
i,j,n : integer;
begin
clrscr;
write('masukkan bilangan : '); readln(n);
for i:=1 to n do
begin
for j:=1 to n do begin
if ( (i+j) = n div 2 + 2 ) OR ( (i-j) = n div 2 )
OR ( (i+j) = n + (n div 2 +1)) OR ( (j-i) = n div 2
) then write('*')
else
write(' ');
end;
writeln;
end;
readln;
end.

(i+j) = n div 2 + 2 j (j-i) = n div 2

(i-j) = n div 2 (i+j) = n + (n div 2 +1)

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 50
Lampiran 1 – Exit Code dalam Free Pascal

Lampiran 1 – Exit Code dalam Free Pascal

Contoh exit code 201 saat runtime dalam IDE Free Pascal

1 : invalid function number 160 : device write fault


2 : file not found 161 : device read fault
3 : path not found 162 : hardware failure
4 : too many open files 200 : div by zero
5 : file access denied 201 : range error
6 : invalid file handle 202 : overflow stack
12 : invalid file access code 203 : heap overflow
15 : invalid drive number 204 : invalid pointer operation
16 : cannot remove current directory 205 : floating point overflow
17 : cannot rename across 206 : floating point underflow
18 : no more files 207 : invalid floating point operation
100 : disk read error 208 : overlay manager not installed
101 : disk write error 209 : overlay file read error
102 : file not assigned 210 : object not initialized
103 : file not open 211 : call to abstract method
104 : file not open for input 212 : stream registration error
105 : file not open for output 213 : collection index out of range
106 : invalid numeric format 214 : collection overflow error
150 : disk is write protected 215 : overflow checking when doing
151 : bad drive request structure length computation with integer
152 : drive not ready 216 : general protection fault
154 : CRC error in data 217 : invalid operation code
156 : disk seek error 227 : assertion failed
157 : unknown media type 300 : file IO error
158 : sector not found 301 : non-matched array bounds
159 : printer out of paper 302 : non-local procedure pointer

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 51
Lampiran 1 – Exit Code dalam Free Pascal

303 : procedure pointer out of scope 307 : break by ctrl/break


304 : function not implemented 308 : break by other process
305 : breakpoint error 309 : no floating point coprocessor
306 : break by ctrl/c 310 : invalid variant type operation

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 52
Lampiran 2 – Fungsi dan Prosedur BawaanFree Pascal

Lampiran 2 - Fungsi dan Prosedur Bawaan Free Pascal

Sintaks Fungsi / Keterangan


Prosedur
clrscr prosedur [gunakan uses crt] Membersihkan layar dan kursor diletakkan di
kiri atas window.
sqr fungsi pemangkatan dua (square).
sqrt fungsi akar pangkat dua (square root).
str(i,s) prosedur Mengubah nilai variabel i yang bertipe integer menjadi variabel s
yang bertipe string.
val(s,i) prosedur Kebalikan dari str; mengubah nilai variabel s yang bertipe string
menjadi i yang bertipe integer.
chr(i) fungsi Mengubah i yang bertipe integer ke dalam karakter ASCII. Fungsi
chr(45) akan mengembalikan karakter -.
ord(c) fungsi Mengubah karakter c menjadi kode ASCII dalam integer. Fungsi
ord(‘-‘) akan mengembalikan 45.
inc(i) prosedur Menambah variabel integer i dengan 1. Fungsi ini identic dengan i
:= i + 1.
succ(i) fungsi Sama seperti inc. Bedanya, succ merupakan fungsi.
dec(i) prosedur Identik dengan i := i – 1.
pred(i) fungsi Sama seperti dec. Bedanya, pred merupakan fungsi.
length(s) fungsi Mengembalikan panjang string s. Misalnya, length(“Potter”) akan
menghasilkan nilai 6.

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 53
Lampiran 3 – Programming is Fun

Lampiran 3 – Programming is Fun

Library
Jika anda pernah memanggil prosedur “clrscr;” di program yang anda buat,
maka itu artinya anda sudah menggunakan salah satu prosedur yang sudah dibuat
dalam library “crt”. Sebelum bisa memanggil prosedur clrscr, anda harus meng-
ikutkan library crt dalam program anda dengan menuliskan perintah “uses crt;”
Library adalah kumpulan dari rutin-rutin (prosedur dan fungsi) yang dirasa
akan sering digunakan oleh program lain, seperti misalnya clrscr untuk membersihkan
layar. Anda tidak perlu lagi membuat sendiri prosedur untuk membersihkan layar,
anda cukup menggunakan prosedur clrscr yang sudah disediakan oleh pembuat
bahasa pemrograman Pascal.
Beberapa prosedur lain yang akan anda temukan dalam listing program
Pong.pas di bagian 10.2
adalah :
 GotoXY : pergi ke posisi X dan Y tertentu pada sebuah layar
 Inc : Increase, atau menambahkan 1 ke sebuah variable integer
 Dec : Decrease, atau menambahkan -1 ke sebuah variable integer
 Randomize : Menyiapkan sebuah seed angka random, cukup
dipanggil satu kali saja.
 Random : Mengeluarkan angka secara acak dari sebuah range.
Misal dengan memanggil fungsi Random(100) maka
keluarannya bisa saja sebuah angka dari mulai 0
sampai
100.
 Keypressed : Digunakan untuk mendteksi kejadian sebuah
penekanan tombol keyboard. Biasanya
penggunaannya dibarengi dengan pemanggilan fungsi
readkey (untuk membaca tombol yang barusan
ditekan)
 readkey : Menerima inputan satu buah tombol dari keyboard.
Tidak seperti read/readln, readkey hanya menerima satu
-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 54
Lampiran 3 – Programming is Fun

inputan saja (tidak menunggu ada penekanan tombol


enter). Output dari fungsi readkey adalah nilai karakter
dari tombol
yang di tekan (tipe datanya : char).
 Delay : Membuat program menunggu sampai batas
waktu tertentu (seperti di pause). Waktunya dihitung dalam
satuan millisecond (ms).

Listing program Pong.Pas


Berikut adalah contoh sebuah game sederhana yang ditulis kedalam
bahasa Pascal.

program Pascalpongby0263;
uses crt;
type
TipePosisi =
record x, y :
integer;
end;

const
panjangPapan = 4;

var
player1, player2 : TipePosisi;
i : integer;
ch : char;
posBola, arahBola : TipePosisi;
playerKalah, computerKalah : boolean;

procedure Gambar;
begin
clrscr; (* bersihkan layar, biar ada efek "perubahan"
*) (* gambar player*)
for i:=0 to panjangPapan-1 do begin
gotoXY(player1.x, player1.y + i); write('|');
gotoXY(player2.x, player2.y + i); write('|');
end;
-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 55
Lampiran 3 – Programming is Fun

(*gambar bola*)
gotoXY(posBola.x, posBola.y); write('0');
end;

procedure updatePosisi;
begin
if (keypressed) then
begin ch := readkey;
case ch of
'w' : dec(player1.y);
's' : inc(player1.y);
end;
(* normalisasi player 1 *)
if (player1.y <= 1) then player1.y := 1;
if (player1.y >= 24-panjangPapan +1) then player1.y :=
24- panjangPapan+1;
end;
end;

procedure updateBola;
begin
posBola.x := posBola.x + arahBola.x;
posBola.y := posBola.y + arahBola.y;
if (posBola.y >= 24) or (posBola.y <= 1)
then arahBola.y := arahBola.y * -1;
if (posBola.x >= 80) then computerKalah := true;
if (posBola.x <= 1) then playerKalah :=
true; (* cek tabrakan bola vs. player1 *)
if (posBola.x = 4) then

if (posBola.y >= player1.y) and


(posbola.y <= player1.y + panjangPapan)
then arahBola.x := arahBola.x * -
1; (* cek tabrakan bola vs. player2 *)
if (posBola.x = 76) then
if (posBola.y >= player2.y) and
(posbola.y <= player2.y +
panjangPapan)
then arahBola.x := arahBola.x * -
1;
end;

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 56
Lampiran 3 – Programming is Fun

procedure UpdateKomputer;
var ran : integer;
begin
ran := random(100);
if (ran <= 50) then begin (* % chance komputer bergerak *)
if (posBola.y <= player2.y + (panjangPapan div 2))
then dec(player2.y)
else inc(player2.y);
end;
(* normalisasi player 2 *)
if (player2.y <= 1) then player2.y := 1;
if (player2.y >= 24-panjangPapan +1)
then player2.y := 24-panjangPapan+1;
end;

(* begin utama *)
begin
Randomize;
playerKalah := false; computerKalah := false;
player1.x := 3; player1.y :=
10; player2.x := 77; player2.y
:= 10; posBola.x := 40;
posBola.y := 10; arahBola.x:= -
1; arahBola.y := 1;

repeat
delay(100); (* di delay tiap frame, biar ga terlalu cepet *)
updatePosisi;
Gambar;
updateBola;
updateKompute
r;
until (ch = #27) or playerKalah or computerKalah;
(* charakter ke 27 adalah kode untuk tombol ESCAPE *)
if (playerKalah) then writeln('cupu ah..');
if (computerKalah) then writeln('wah kamu jago..');
readln;
end.

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 57
Tugas

Siapa yang tidak kenal game snake? Dalam game ini kita harus mengendalikan
seekor ular yang harus makan apel (ularnya vegetarian??) untuk menambah score.
Namun semakin banyak apel yang dimakan, semakin panjang pula tubuh sang ular. Ular
akan mati ketika ia (kepalanya) menabrak bagian tubuhnya sendiri.

Sederhana sekali bukan? Bisakah anda membuat game tersebut dengan bahasa
pemrograman Pascal?

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 90
Daftar Pustaka

[1] Anonim. Ayo Membuat Program Pascal / Dasar – Dasar Pemrograman.


http://id.wikibooks.org/wiki/Ayo_Membuat_Program_Pascal/Dasar-
Dasar_Pemrograman (diakses tanggal 7 September 2012).
[2] Liem, Inggriani. 1990. Diktat Kuliah IF223 Algoritma dan Pemrograman.
Bandung: ITB.
[3] Munir, Rinaldi. 2007. Algoritma & Pemrograman Dalam Bahasa Pascal dan C.
Bandung: Informatika.
[4] Windra Swastika, Fauzan Joko. 2004. Referensi Pemrograman Bahasa Pascal.
Departemen Pendidikan Nasional RI.

-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 91
-------------------------------------------------------------------
Praktikum Dasar Algoritma dan Pemrograman 92

Anda mungkin juga menyukai