Anda di halaman 1dari 89

MODUL 4

ALGORITMA DAN BAHASA PEMROGRAMAN PASCAL


Kompetensi Inti: Pengetahuan Kompetensi Inti: Keterampilan
[X-3.] Memahami, menerapkan, [X-4.] Mengolah, menalar, dan menyaji
menganalisis pengetahuan faktual, dalam ranah konkret dan ranah abstrak
konseptual, prosedural berdasarkan rasa terkait dengan pengembangan dari yang
ingintahunya tentang ilmu pengetahuan, dipelajarinya di sekolah secara mandiri,
teknologi, seni, budaya, dan humaniora bertindak secara efektif dan kreatif, dan
dengan wawasan kemanusiaan, mampu menggunakan metode sesuai
kebangsaan, kenegaraan, dan peradaban kaidah keilmuan.
terkait penyebab fenomena dan kejadian,
serta menerapkan pengetahuan prosedural
pada bidang kajian yang spesifik sesuai
dengan bakat dan minatnya untuk
memecahkan masalah.
Topik Algoritma dan Pemrograman
[X-3.4.a.] Mengenal notasi algoritma. [X-4.4.a.] Menulis program sederhana
[X-3.4.b.] Mengenal struktur/templates dengan satu program utama yang memakai
program dalam bahasa yang diajarkan. salah satu atau gabungan dari pengetahuan
[X-3.4.c.] Memahami variabel, value, X.3.4.a sampai dengan X.3.4.e
konstanta, ekspresi dan instruksi [X-4.4.b.] Mengkombinasikan struktur
input/output. kontrol dan mengetahui akibatnya,
[X-3.4.d.] Memahami mekanisme berdasarkan dengan pengetahuan X.3.4.a
eksekusi kondisional dan loop. sampai dengan X.3.4.e
[X-3.4.e.] Memahami struktur data dasar
(array sederhana).
Peta Konsep
1. Apakah Itu Algoritma
Tahukah Anda asal kata algoritma? Para ahli sejarah matematika menemukan asal kata
tersebut dari nama penulis buku berjudul Kitab Al Jabar Wal-Muqabala yang artinya
“Buku pemugaran dan pengurangan” (The book of restoration and reduction) yaitu Abu
Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Penggalan nama Al-Khuwarizmi dibaca
orang barat menjadi Algorism. Judul buku itu memperoleh akar kata “Aljabar” (Algebra).
Perubahan kata dari algorism menjadi algorithm muncul karena kata algorism sering
dikelirukan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm. Sehingga kata
algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara
umum, sehingga kehilangan makna kata aslinya. Studi bahasa Indonesia, kata algorithm
diserap menjadi algoritma.

2. Definisi Algoritma
“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis dan logis”. Kata logis merupakan kata kunci dalam algoritma. Langkah-
langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.
Jadi, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu.
Pertimbangan dalam pemilihan algoritma adalah sebagai berikut.
(a). Algoritma harus benar. Artinya algoritma akan memberikan keluaran yang
dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun
algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut bukanlah
algoritma yang baik.
(b). Algoritma menghasilkan produk yang dicapai oleh algoritma tersebut. Terutama pada
algoritma untuk menyelesaikan masalah yang memerlukan hasil pendekatan (aproksimasi).
Algoritma yang baik harus mampu memberikan hasil yang mendekati nilai sebenarnya.
(c). Efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari dua hal yaitu efisiensi waktu
dan memori. Meskipun algoritma memberikan keluaran yang benar (paling mendekati),
tetapi Anda harus menunggu berjam-jam untuk mendapatkan keluarannya. Algoritma
tersebut biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang cepat.
Begitu juga dengan memori, semakin besar memori yang terpakai maka semakin buruklah
algoritma tersebut. Anda dapat membuat algoritma yang berbeda untuk menyelesaikan
suatu permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma, tentunya
Anda mengharapkan keluaran yang sama. Jika terjadi demikian, carilah algoritma yang
paling efisien dan cepat.

3. Algoritma dan Program


Program adalah kumpulan pernyataan komputer, sedangkan algoritma adalah metode dan
tahapan sistematis dalam program. Program ditulis dengan menggunakan bahasa
pemrograman. Jadi, program adalah suatu implementasi dari bahasa pemrograman.
Formulanya adalah :

Program = Algoritma + Bahasa (Struktur Data)


Struktur data dan algoritma berhubungan sangat erat pada program. Algoritma yang baik
tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik,
berlaku juga sebaliknya.

Keuntungan pembuatan algoritma :


 Penulisan algoritma tidak tergantung pada bahasa pemrograman dan komputer.
 Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
 Keluaran (output) yang dihasilkan sama karena algoritmanya sama apapun bahasa
pemrogramannya.

Beberapa hal yang perlu diperhatikan membuat algoritma adalah sebagai berikut :
 Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi
tersebut dapat ditulis dalam notasi apapun agar mudah dipahami.
 Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa
pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi
algoritmik.
 Anda dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini
dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi
algoritmik mudah diterjemahkan ke dalam notasi bahasa pemrograman, maka
sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa
pemrograman secara umum.
 Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam
notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh
komputer, pseudocode dalam notasi algoritmik harus diterjemahkan ke dalam
notasi bahasa pemrograman. Perhatikan, seorang programmer sangat terikat dengan
aturan tata bahasa dan spesifikasi mesin yang menjalankannya.
 Algoritma membantu untuk mengkonversikan suatu masalah ke dalam bahasa
pemrograman.
 Algoritma merupakan hasil pemikiran konseptual, agar dapat dilaksanakan oleh
komputer, dan algoritma harus diterjemahkan ke dalam notasi bahasa
pemrograman.

Beberapa hal yang harus diperhatikan pada terjemahan tersebut, adalah :


a. Pendeklarasian variabel
b. Pemilihan tipe data
c. Pemakaian instruksi-instruksi
d. Aturan sintaksis
e. Tampilan hasil
f. Pengoperasian compiler atau interpreter.

4. Algoritma adalah hati/jantung Ilmu Informatika


Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer
yang mengarah ke dalam terminologi algoritma. Namun, jangan beranggapan algoritma
selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari banyak terdapat
proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat rendang daging yang
dinyatakan dalam suatu resep dapat disebut sebagai algoritma. Pada setiap resep selalu ada
urutan langkah-langkah membuat rendang daging. Jika langkah-langkah tidak logis, tidak
dapat dihasilkan rendang daging yang diinginkan. Ibu-ibu yang mencoba suatu resep
rendang daging akan membaca satu per satu langkah-langkah pembuatannya lalu Ibu
mengerjakan proses sesuai yang dibaca. Secara umum, pihak (benda) yang mengerjakan
proses disebut pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer,
robot atau alat-alat elektronik lainnya. Pemroses melakukan suatu proses dengan
melaksanakan atau “mengeksekusi” algoritma yang menjabarkan proses tersebut.
Jadi, melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam algoritma
tersebut. Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan
kepadanya. Juru masak membuat rendang daging berdasarkan resep yang diberikan
kepadanya, pianis memainkan lagu berdasarkan papan not balok, fisikawan menuntaskan
problem fisika dengan persamaan yang teruji, demikian juga seorang dokter, pilot, guru
dan profesi lainnya. Karena itu, suatu algoritma harus dinyatakan dalam bentuk yang dapat
dimengerti oleh pemroses. Jadi suatu pemroses harus:
 Mengerti setiap langkah dalam algoritma.
 Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Tabel 4.1 Beberapa contoh algoritma dalam kehidupan sehari-hari
No Proses Algoritma Contoh langkah
dalam algoritma
1 Merakit komputer Panduan merakit komputer Sambungkan
komponen A
dengan komponen
B
2 Mengajar materi Informatika RPP Informatika Membaca dan
memahami RPP
dengan
penerapannya
3 Membuat seragam guru Pola seragam Potong dengan
Informatika gunting bahan kain
dari pinggir kiri
bawah ke arah
kanan sejauh 7 cm
4 Mengisi voucher listrik Panduan pengisian Tekan nomor
voucher listrik

5. Mekanisme Pelaksanaan Algoritma oleh Pemroses


Anda dapat membedakan arti kata algoritma dan program. Algoritma adalah langkah-
langkah penyelesaikan masalah, sedangkan program adalah realisasi algoritma dalam
bahasa pemrograman. Program ditulis dalam salah satu bahasa pemrograman dan kegiatan
membuat program disebut pemrograman (programming). Orang yang menulis program
disebut pemrogram (programmer). Setiap langkah di dalam program disebut pernyataan
atau instruksi. Jadi, program tersusun atas sederetan instruksi. Bila suatu instruksi
dilaksanakan, maka operasi-operasi yang bersesuaian dengan instruksi tersebut dikerjakan
komputer.
Secara garis besar komputer tersusun atas empat komponen utama yaitu, piranti masukan,
piranti keluaran, unit pemroses utama, dan memori. Unit pemroses utama (Central
Processing Unit – CPU) adalah “otak” komputer, yang berfungsi mengerjakan operasi-
operasi dasar seperti operasi perbandingan, operasi perhitungan, operasi membaca, dan
operasi menulis. Sesuatu yang disimpan di dalam memori adalah program (berisi operasi-
operasi yang akan dikerjakan oleh CPU) dan data atau informasi (sesuatu yang diolah oleh
operasi-operasi). Piranti masukan dan keluaran (I/O devices) adalah alat yang memasukkan
data atau program ke dalam memori, dan alat yang digunakan komputer untuk
mengkomunikasikan hasil-hasil aktivitasnya. Contoh piranti masukan antara lain, papan
kunci (keyboard), pemindai (scanner), dan cakram (disk). Contoh piranti keluaran adalah,
layar peraga (monitor), pencetak (printer), dan cakram.

Gambar 4.1 Komponen-komponen utama komputer


Mekanisme kerja keempat komponen di atas dapat dijelaskan sebagai berikut. Mula-mula
program dimasukkan ke dalam memori komputer. Ketika program dilaksanakan (execute),
setiap instruksi yang telah tersimpan di dalam memori dikirim ke CPU. Kemudian, CPU
mengerjakan operasi-operasi yang bersesuaian dengan instruksi tersebut. Jika suatu operasi
memerlukan data, data dibaca dari piranti masukan, disimpan di dalam memori lalu dikirim
ke CPU untuk operasi yang memerlukannya. Jika proses menghasilkan keluaran atau
informasi, keluaran disimpan ke dalam memori, lalu memori menuliskan keluaran tadi ke
piranti keluaran melalui layar monitor komputer atau printer.

6. Belajar Memprogram dan Belajar Bahasa Pemrograman


Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami. Sedangkan
belajar bahasa pemrograman berarti belajar memakai suatu bahasa aturan-aturan tata
bahasanya, pernyataan-pernyataannya, tata cara pengoperasian compiler-nya, dan
memanfaatkan pernyataan-pernyataan tersebut untuk membuat program yang ditulis dalam
bahasa tertentu, misalnya bahasa Pascal. Sampai saat ini terdapat puluhan bahasa
pemrogram, antara lain bahasa rakitan (assembly), Fortran, Cobol, Ada, PL/I, Algol,
Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasa-bahasa simulasi seperti CSMP,
Simscript, GPSS, Dinamo.

Berdasarkan terapannya, bahasa pemrograman digolongkan atas dua kelompok besar :


 Bahasa pemrograman bertujuan khusus. Contohnya Cobol (untuk terapan bisnis
dan administrasi). Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan
pemrograman mesin), Prolog (terapan kecerdasan buatan), bahasa-bahasa simulasi,
dan sebagainya.
 Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai
aplikasi. Contohnya Pascal, Basic, C, C plus-plus, Python, Java Script dan lainnya

Berdasarkan notasi bahasa pemrograman lebih “dekat” ke mesin atau ke bahasa manusia,
maka bahasa pemrograman dikelompokkan atas dua macam :
 Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya langsung
dikerjakan oleh komputer, tanpa harus melalui penerjemah (translator). Contohnya
adalah bahasa mesin. CPU mengambil instruksi dari memori, langsung mengerti
dan langsung mengerjakan operasinya. Bahasa tingkat rendah bersifat primitif,
sangat sederhana, orientasinya lebih dekat ke mesin, dan sulit dipahami manusia.
Sedangkan bahasa rakitan dimasukkan ke dalam kelompok ini karena alasan notasi
yang dipakai dalam bahasa ini lebih dekat ke mesin, meskipun untuk melaksanakan
instruksinya masih perlu penerjemahan ke dalam bahasa mesin.
 Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah dipahami, lebih
“manusiawi”, dan berorientasi ke bahasa manusia (bahasa Inggris). Perhatikan,
program dalam bahasa tingkat tinggi tidak dapat langsung dilaksanakan oleh
komputer, karena harus diterjemahkan terlebih oleh translator bahasa (disebut
kompilator atau compiler) ke dalam bahasa mesin agar dieksekusi oleh CPU.
Contoh bahasa tingkat tinggi adalah Pascal, PL/I, Ada, Cobol, Basic, Fortran, C,
C++, dan sebagainya.

7. Menilai suatu Algoritma


Ketika Anda berusaha memecahkan masalah, metode atau teknik yang digunakan untuk
memecahkan masalah itu kemungkinan banyak. Anda dapat memilih mana yang terbaik di
antara teknik-teknik tersebut. Hal ini sama juga dengan algoritma, suatu masalah
dipecahkan dengan metode dan logika yang berlainan. Lalu, bagaimana mengukur
algoritma yang terbaik?. Beberapa syarat untuk menjadi algoritma yang baik adalah :
 Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus
berakurasi tinggi dan benar.
 Pemrosesan yang efisien (cost rendah). Proses harus Anda selesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkin.
 Sifatnya general. Mampu menyelesaikan kasus lain yang lebih general.
 Dapat dikembangkan (expandable). Anda dapat kembangkan lebih jauh
berdasarkan perubahan requirement yang ada.
 Mudah dimengerti. Algoritma Anda dapat dipahami siapapun. Suatu program sulit
dimengertivakan membuat sulit di-maintenance (kelola).
 Portabilitas yang tinggi (portability). Mudah diimplementasikan di berbagai
platform komputer.
 Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan seksama dan tidak
ada keragu-raguan. Setiap instruksi harus dinyatakan secara eksplisit dan tidak ada
bagian yang dihilangkan karena pemroses dianggap sudah mengerti.
Contoh : Tambahkan 4 atau 7 pada x.
Instruksi di atas terdapat keraguan.
 Jumlah instruksi berhingga dan tertentu. Artinya, untuk kasus yang sama
banyaknya, langkah harus tetap dan tertentu meskipun datanya berbeda.
 Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses
yang akan menjalankannya.

Contoh : Hitung akar 2 dengan presisi sempurna.


Instruksi di atas tidak efektif, agar efektif instruksi tersebut diubah.
Misal : Hitung akar 2 sampai lima digit di belakang koma.
Harus berhenti atau terminate. Jalannya algoritma harus ada kriteria berhenti.
Pertanyaannya adalah apakah jika jumlah instruksinya berhingga maka pasti terminate?
 Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan diikuti
dengan seksama maka dihasilkan output yang diinginkan.

Kriteria Algoritma menurut Donald E. Knuth adalah :


1. Input: algoritma dapat memiliki nol atau lebih masukan dari luar.
2. Output: algoritma harus memiliki minimal satu keluaran.
3. Definiteness (pasti): algoritma memiliki instruksi-instruksi jelas dan tidak ambigu.
4. Finiteness (ada batas): algoritma harus memiliki titik berhenti (stopping role).
5. Effectiveness (tepat dan efisien): algoritma harus dapat dilaksanakan dan efektif.

Contoh instruksi yang tidak efektif adalah: A = A + 0 atau A = A * 1

8. Penyajian Algoritma
Penyajian algoritma dalam dua bentuk penyajian yaitu tulisan dan gambar. Algoritma yang
disajikan dengan tulisan yaitu dengan struktur bahasa tertentu (misalnya bahasa Indonesia
atau bahasa Inggris) dan pseudocode. Pseudocode adalah kode yang mirip dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat digunakan
untuk menggambarkan algoritma yang akan dikomunikasikan kepada pemrogram.
Sedangkan algoritma disajikan dengan gambar, misalnya dengan flowchart. Secara umum,
pseudocode mengekspresikan ide-ide secara informal dalam proses penyusunan algoritma.
Salah satu cara untuk menghasilkan kode pseudo adalah dengan meregangkan aturan-
aturan bahasa formal.
Flowchart adalah gambar atau bagan yang memperlihatkan urutan dan hubungan antar
proses dan pernyataannya. Gambaran ini dinyatakan dengan simbol. Jadi, setiap simbol
menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis
penghubung. Adanya flowchart akan memudahkan Anda untuk memeriksa bagian-bagian
yang terlupakan dalam analisis masalah. Flowchart berguna sebagai fasilitas untuk
berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek.

Ada dua macam flowchart yang menggambarkan proses dengan komputer, yaitu :
 Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang
menggambarkan urutan prosedur dan proses suatu file dalam suatu media menjadi
file di dalam media lain, dalam suatu sistem pengolahan data. Beberapa contoh
Flowchart sistem:
Gambar 4.2 Flowchart sistem

 Flowchart program adalah bagan dengan simbol-simbol tertentu yang


menggambarkan urutan proses dan hubungan antar proses secara rinci di dalam
suatu program.

Tata cara Umum Pembuatan Flowchart Program


Anda dapat membuat flowchart program. Pada pembuatan flowchart Program tidak ada
rumus atau patokan yang bersifat mutlak. Karena flowchart adalah gambaran hasil
pemikiran dalam menganalisis suatu masalah dengan komputer. Sehingga flowchart yang
dihasilkan dapat bervariasi antara satu pemrogram dengan yang lainnya. Namun secara
garis besar setiap pengolahan selalu terdiri atas tiga bagian utama, yaitu :
1. Input,
2. Proses pengolahan dan
3. Output

Gambar 4.3 Pengolahan flowchart

Untuk pengolahan data dengan komputer, urutan dasar pemecahan suatu masalah:
1. START, berisi pernyataan untuk persiapan peralatan yang diperlukan pemecahan
persoalan.
2. READ, berisi pernyataan kegiatan untuk membaca data dari suatu peralatan input.
3. PROSES, berisi kegiatan pemecahan persoalan sesuai dengan data yang dibaca.
4. WRITE, berisi pernyataan untuk merekam hasil kegiatan ke peralatan output.
5. END, mengakhiri kegiatan pengolahan.
Walaupun tidak ada aturan yang baku dalam penyusunan flowchart, namun ada beberapa
anjuran :
1. Hindari pengulangan proses yang tidak perlu dan logika yang berbelit agar proses
menjadi singkat.
2. Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk
memperjelas.
3. Suatu flowchart diawali dari satu titik START dan diakhiri dengan END.

Berikut beberapa contoh simbol flowchart yang disepakati oleh dunia pemrograman.

Gambar 4.4 Beberapa simbol flowchart

Untuk memahami mengenai flowchart, Anda ambil kasus sederhana berikut.


Kasus : Buatlah rancangan program dengan menggunakan flowchart, mencari volume
balok.
Solusi : Perumusan untuk mencari volume balok adalah : V = p . l. t
dengan, V adalah volume balok, p adalah panjang sisi balok, l adalah lebar sisi balok dan t
adalah tinggi sisi balok .
Gambar 4.6 Flowchart volume balok

Keterangan :
1. Simbol pertama menunjukkan mulai (start) program.
2. Simbol kedua menunjukkan input data dari p, l dan t.
3. Data dari p, l dan t diproses pada simbol ketiga dengan rumus V = p. l.t
4. Simbol keempat menunjukkan hasil keluaran dari simbol ketiga.
5. Simbol kelima menunjukkan akhir program dengan tanda Selesai (End).

9. Struktur Dasar Algoritma


Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut
berupa runtunan aksi (sequence), pemilihan aksi (selection), pengulangan aksi (iteration)
atau kombinasi dari ketiganya. Jadi struktur dasar pembangunan algoritma ada tiga, yaitu:
1. Struktur Runtunan, untuk program yang pernyataannya urutan (sequential).
2. Struktur Pemilihan, untuk program pemilihan atau penyeleksian kondisi.
3. Struktur Perulangan, untuk program yang pernyataannya dieksekusi berulang-
ulang.
Dalam Algoritma, tidak dipakai simbol-simbol atau sintaks dari suatu bahasa
pemrograman tertentu, melainkan bersifat umum dan tidak tergantung pada suatu bahasa
pemrograman apapun. Notasi-notasi algoritma dapat digunakan untuk seluruh bahasa
pemrograman manapun.

Definisi Pseudo-code
Kode atau tanda yang menyerupai (pseudo) atau merupakan penjelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan algoritma.
Contoh kasus : mencari bilangan terbesar dari dua bilangan yang dimasukkan
Solusi Pseudo-code :
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak,
kerjakan langkah 5.
4. Tampilkan bilangan pertama
5. Tampilkan bilangan kedua
Solusi Algoritma :
1. Masukkan bilangan pertama (x)
2. Masukkan bilangan kedua (y)
3. if x > y then kerjakan langkah 4
4. print x
5. print y

Contoh lain Algortima dan Pseudo-code :

10. Tahapan dalam Pemrograman


Langkah-langkah yang dilakukan dalam menyelesaikan masalah dalam pemrograman
dengan komputer adalah :
 Definisikan Masalah
 Buat Algoritma dan Struktur Cara Penyelesaian
 Menulis Program
 Mencari Kesalahan
 Uji dan Verifikasi Program
 Dokumentasi Program
 Pemeliharaan Program

Latihan 4.1 ...........................................................................................................................


1. Bagaimana Cara Suatu Algoritma Bekerja?
Pembahasan :
Algoritma adalah langkah demi langkah yang dirancang untuk melakukan operasi dengan
sejumlah langkah yang terbatas. Untuk membuat komputer melakukan sesuatu, Anda harus
menulis program komputer. Untuk menulis program komputer, Anda harus memberi
informasi kepada komputer, selangkah demi selangkah, apa yang Anda inginkan.
Komputer kemudian “menjalankan” program, mengikuti setiap langkah secara mekanis,
untuk mencapai tujuan akhir.
Bila Anda memberi tahu komputer apa yang harus dilakukan, Anda juga dapat memilih
bagaimana cara melakukannya. Di situlah algoritma komputer masuk. Algoritma adalah
teknik dasar yang digunakan untuk menyelesaikan pekerjaan.

2. Bagaimana Anda memberi contoh untuk memahami konsep algoritma?


Pembahasan :
Anda memiliki seorang teman yang tiba di bandara Kualanamu SUMUT, dan teman Anda
perlu pergi dari bandara ke rumah Anda. Berikut adalah empat algoritma berbeda yang
dapat Anda berikan kepada teman Anda untuk sampai ke rumah Anda.
Algoritma taksi :
1. Pergi ke tempat taksi.
2. Naik taksi
3. Beri alamat ke pengemudinya.
Algoritma “menelpon-Pak Syams” :
1. Saat pesawat Anda tiba, teleponlah ponsel Pak Syams.
2. Temui Pak Syams di luar bagasi.
Algoritma sewa mobil :
1. Naik pesawat ke tempat penyewaan mobil.
2. Menyewa mobil.
3. Ikuti petunjuk untuk sampai ke rumah Pak Syams.
Algoritma bus :
1. Di luar bagasi, naik bus nomor 70.
2. Transfer ke bus 14 di Main Street.
3. Turun di jalan Elm.
4. Berjalanlah dua blok ke utara ke rumahku.
Keempat algoritma ini mencapai tujuan yang sama persis, namun setiap algoritma
melakukannya dengan cara yang sama sekalipun menempuh cara berbeda. Setiap algoritma
juga memiliki biaya berbeda dan waktu tempuh berbeda. Naik taksi misalnya, mungkin
cara tercepat, tapi juga yang paling mahal. Mengambil bus pasti lebih murah, tapi jauh
lebih lambat. Anda memilih algoritma berdasarkan keadaan.
-----------------------------------------------------------------------------------------------------------

Bentuk Dasar Algoritma dan Penerapannya


Algoritma mempunyai tiga bentuk dasar, yaitu :
1. Algoritma Sekuensial (Sequence Algorithm)
Algoritma sekuensial (Sequence algorithm) adalah algoritma yang langkah-langkahnya
secara urut dari awal hingga akhir. Bentuk dari algoritma sekuensial ini salah satu
contohnya seperti algoritma memasak air. Langkah demi langkah yang dijalankan harus
urut dari atas sampai bawah.
2. Algoritma Perulangan (Looping Algorithm)
Algoritma perulangan (Looping algorithm) adalah suatu algoritma yang menjalankan
beberapa langkah tertentu secara berulang-ulang (looping). Contoh dari algoritma looping
adalah algoritma menjemur pakaian:
1. Siapkan jemuran.
2. Ambil satu pakaian yang nantinya akan dijemur.
3. Peras pakaian tersebut terlebih dahulu.
4. Letakkan pakaian tersebut pada tiang jemuran.
5. Ulangi langkah dari 2 sampai 4 hingga pakaian habis.
Dari algoritma di atas, dapat diketahui bahwa dari langkah 2 sampai 4 harus dilakukan
secara berulang-ulang hingga pakaian habis.
3. Algoritma Percabangan atau Bersyarat (Conditional Algorithm)
Algoritma bersyarat (Conditional algorithm) adalah algoritma yang menjalankan langkah
berikutnya apabila terdapat syarat yang sudah dapat dipenuhi. Berikut salah satu contoh
dari algoritma Membuat Mie Goreng bersyarat.
1. Siapkan mie goreng instant
2. Apakah mie instant ada?
3. Jika tika tidak, beli di warung
4. Jika ada buka kemasan mie instant
5. Keluarkan mie beserta bumbu-bumbunya
6. Siapkan piring
7. Lihat kondisi piring, jika kotor dicuci dulu
8. Jika bersih siap digunakan
9. Buka bumbu-bumbunya
10. Letakkan didalam piring
11. Siapkan panci
12. Lihat kondisi panci, jika kotor dicuci dulu
13. Jika bersih panci dengan air secukupnya
14. Letakkan panci diatas kompor
15. Nyalakan kompor
16. Tunggu hingga air mendidih
17. Jika sudah mendidih, masukkan mie
18. Tunggu hingga mie matang
19. Setelah mie matang, matikan kompor
20. Siapkan saringan, lihat kondisi saringan jika kotor dicuci dulu
21. Tuang mie ke saringan, tunggu sampai airnya tiris
22. Masukkan kedalam piring
23. Siapkan sendok dan garpu, lihat kondisinya jika kotor dicuci dulu
24. Jika bersih aduk mie menggunakan sendok dan garpu
25. Mie goreng siap dihidangkan

JENIS-JENIS ALGORITMA
Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan
memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma
tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan
dijelaskan di bagian ini. Setiap paradigma dapat digunakan dalam banyak algoritma yang
berbeda.

Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil. Singkatnya menyelesaikan keseluruhan
masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-
permasalahan kecil yang terbentuk.
Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan
pada suatu masalah yang mengandung sub-struktur yang optimal dan mengandung
beberapa bagian permasalahan yang tumpang tindih. Paradigma ini sekilas terlihat mirip
dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi
permasalahan menjadi sub permasalahan yang lebih kecil, tetapi secara intrinsik ada
perbedaan dari karakter permasalahan yang dihadapi.

Metode serakah, algoritma serakah mirip dengan pemrograman dinamik, bedanya


jawaban dari submasalah tidak perlu diketahui dalam setiap tahap dan menggunakan
pilihan “serakah” apa yang dilihat terbaik pada saat itu.

Adapun jenis-jenis algoritma yang lain adalah :


1. Bahasa Semu (pseudo code) yaitu dengan menggunakan bahasa sehari-hari, tetapi harus
jelas dan struktur.
2. Diagram Alir (Flowchart) yaitu dengan membuat suatu penulisan atau penyajian
algoritma berupa diagram yang menggambarkan susunan alur logika dari suatu
permasalahan

ALGORITMA DALAM KEHIDUPAN SEHARI-HARI


Algoritma sebenarnya dijumpai dalam kehidupan sehari-hari. Contohnya saja jika Anda
membaca resep masakan, selain bahan-bahan yang digunakan, Anda juga akan melihat
prosedur untuk membuat masakan. Prosedur dalam resep seperti itu sebenarnya
menyatakan semacam algoritma. Prosedur itu merupakan suatu urutan yang memandu
Anda untuk melakukan suatu proses. Namun ada perbedaan antara algoritma dan prosedur.
Prosedur biasanya bersifat global dengan mengasumsikan manusia telah mengetahui
rincian langka-langkah tertentu. Berikut ini contoh-contoh algoritma dan bukan algoritma,
sehingga memudahkan Anda untuk membedakan mana yang algoritma atau bukan
algoritma.

1. Jelaskanlah algoritma berikut dengan singkat dan jelas.


Aku harus mengirim surat kepada sahabat penaku yang berada di Jakarta. Aku harus
menuliskan alamat sahabat penaku di Jakarta di bagian depan amplop dan alamat rumahku
dibagian belakang amplop surat. Namun, aku tidak tahu jumlah perangko yang harus aku
tempel di sisi kiri atas amplop. Jadi, aku harus pergi ke kantor pos. Sesampainya kantor
pos, aku langsung menuju ke loket pengiriman surat. Aku beruntung tidak perlu mengantri
karena dikantor pos sepi. Aku serahkan surat itu kepada penjaga loket, oleh penjaga loket
suratku diberi perangko sesuai dengan tujuan surat yang aku buat untuk sahabatku. Suratku
siap dikirim oleh tukang pos.
Pembahasan :
1. Aku menyiapkan surat yang akan aku kirimkan.
2. Aku menuliskan alamat sahabatku di bagian depan amplop dan alamat rumahku di
bagian belakang amplop.
3. Aku pergi ke kantor pos.
4. Menuju ke loket dan menyerahkan surat agar diberi perangko sesuai tujuan surat.
5. Surat siap dikirim.
2. Jelaskan algoritma berikut menjadi algoritma yang baik.
Menentukan bilangan bulat, apakah merupakan bilangan genap atau ganjil ? Dengan cara,
bilangan di mod 2. Jika, hasilnya sama dengan 0 maka bilangan tersebut adalah bilangan
genap. Apabila hasilnya selain 0 maka bilangan tersebut adalah bilangan ganjil.
Pembahasan :
1. Tentukan bilangan bulat.
2. Bilangan mod 2
3. Jika, hasilnya sama dengan 0 maka bilangan tersebut adalah bilangan genap. Jika
hasilnya selain 0 maka bilangan tersebut bilangan ganjil

3. Tuliskan contoh bukan algortima.


Pembahasan :
Saya ingin minum susu coklat.
1. Saya menyiapkan gelas dan susu coklat bubuk.
2. Tambahkan air panas dan gula.
3. Tambahkan air mineral.
4. Susu coklat siap diminum.

4. Tuliskan Algoritma Membuat Mie Goreng Instant


Pembahasan :
1. Siapkan mie goreng instant
2. Apakah mie instant masih tersedia?
3. Jika tika tidak, beli di warung
4. Jika masih ada buka kemasan mie instant
5. Keluarkan mie beserta bumbu-bumbunya
6. Siapkan piring
7. Lihat kondisi piring, jika kotor dicuci dulu
8. Jika bersih siap digunakan
9. Buka bumbu-bumbunya
10. Letakkan didalam piring
11. Siapkan panci
12. Lihat kondisi panci, jika kotor dicuci dulu
13. Jika bersih panci dengan air secukupnya
14. Letakkan panci diatas kompor
15. Nyalakan kompor
16. Tunggu hingga air mendidih
17. Jika sudah mendidih, masukkan mie
18. Tunggu hingga mie matang
19. Setelah mie matang, matikan kompor
20. Siapkan saringan, lihat kondisi saringan jika kotor dicuci dulu
21. Tuang mie ke saringan, tunggu sampai airnya tiris
22. Masukkan kedalam piring
23. Siapkan sendok dan garpu, lihat kondisinya jika kotor dicuci duu
24. Jika bersih aduk mie menggunakan sendok dan garpu
25. Mie goreng siap dihidangkan
5. Tuliskan algoritma cara menggunakan spons.
Pembahasan :
1. Siapkan spons
2. Apakah spons ada?
3. Jika tidak ada, beli diwarung
4. Siapkan sabun pencuci piring
5. Apakah sabun ada?
6. Jika tidak ada, beli diwarung
7. Taruh piring kotor kedalam wastafel
8. Buka keran air
9. Basahi piring kotor dengan air
10. Tutup keran air
11. Tuang sabun ke spons
12. Usapkan spons ke piring yang kotor
13. Buka kran air
14. Bilas piring yang telah disabun dengan air sampai bersih
15. Tutup keran air
16. Jika sudah bersih, taruh disamping wastafel
17. Tunggu hingga airnya tiris dan kering
18. Jika sudah kering, pindahkan piring kedalam rak piring
19. Piring siap digunakan

5. Dua orang pekerja mampu menyelesaikan suatu proyek selama 12 hari. Jika pekerjanya
ditambah 6 orang, berapa lama proyek itu selesai?
Pembahasan :
n1 = 2 orang
t1 = 12 hari
n2 = 2 + 6 = 8 orang
Tanya : t2 (waktu yang diperlukan setelah ditambah pekerjanya)?
Jawab. Karena semakin banyak pekerja maka waktu yang dihabiskan makin sedikit maka
hal ini merupakan perbandingan terbalik. Ciri-ciri perbandingan terbalik adalah jika
variabel x semakin naik tetapi variabel y semakin turun. Perkalian pasangan setiap
komponen akan menghasilkan konstanta yang sama. Artinya:

Jadi, perlu waktu sebanyak 3 hari.


Karena ini perbandingan terbalik, maka
Kalau seandainya pembelajaran matematika tidak menitikberatkan pada rumus dan urutan-
urutan langkah penggunaan melainkan pada berpikir dan bernalar kreatif siswa, maka hal
ini tidak perlu terjadi. Siswa tidak perlu banyak menghafal karena mampu berpikir dan
bernalar sendiri untuk menyelesaikan soal. Artinya siswa dibebaskan untuk menentukan
penyelesaian berdasarkan pemikiran dan penalarannya sendiri.

6. Ifti memandang dari jendela taman dekat rumahnya. Dia melihat bahwa setiap orang di
taman membawa seekor kucing piaraannya. Setelah itu dia menghitung banyaknya semua
kaki di taman itu dan ternyata ada 54 kaki. Berapa banyaknya kucing peliharaan yang ada
di taman?
Pembahasan :
Manusia punya 2 kaki
Seekor kucing punya 4 kaki
Satu pasang (manusia dan kucing peliharaan) totalnya 6 kaki. Karena terdapat 54 kaki
berarti ada 9 pasang. Jadi ada 9 ekor kucing peliharaan.
Jika Anda menggunakan logika (berpikir dan bernalar) maka hampir semua masalah dapat
Anda selesaikan. Terutama permasalahan yang berkaitan dengan kehidupan sehari-hari.
Usahakan menyelesaikan masalah dengan logika, bukan dengan rumus-rumus yang pelik?
Bebaskan para siswa berpikir dan bernalar. Biarkan kedua komponen itu berkembang
dengan baik dalam diri siswa untuk menghadapi kehidupan.

Struktur Dasar Algoritma


1. Algoritma Sekuensial
Algoritma Sekuensial (Sequence Algorithm) adalah algoritma yang langkah-langkahnya
dikerjakan atau dieksekusi secara urut dari awal hingga akhir sesuai dengan urutannya.

Anda lihat flowchart diatas, kumpulan instruksi tersusun dari atas ke bawah. Program
mengeksekusi instruksi_1, setelah instruksi_1 dikerjakan selanjutnya program
mengeksekusi instruksi_2. Setelah instruksi_2 dikerjakan selanjutnya program
mengeksekusi instruksi_3. Setelah instruksi_3 dikerjakan maka selanjutnya program akan
berakhir atau selesai.
Sebagai contoh program Luas lingkaran, untuk panjang jari-jarinya sudah diketahui
besarannya. Berikut adalah algoritmanya :
Deskripsi :
1. Mulai
2. Input Jari_Jari
3. Hitung Luas = 3.14 * Jari_Jari * Jari_Jari
4. Cetak Luas
5. Selesai
Flowchart Luas Lingkaran

Perhatikan flowchart Luas Lingkaran memiliki 3 instruksi yang harus dieksekusi. Instruksi
ke-1 : program membaca nilai jari-jari yang telah diinputkan, Instruksi ke-2 : program
melakukan operasi aritmatika rumus luas lingkaran dan Instruksi ke-3 : menampilkan hasil
dari perhitungan rumus luas lingkaran. Perhatikan, semakin banyak instruksi pada program
maka semakin banyak waktu untuk mengeksekusinya. Pada perancangan program,
efesiensi instruksi sangatlah penting untuk mempercepat proses dan menghemat konsumsi
memory pada program.

2. Algoritma Perulangan (Looping Algorithm)


Algoritma Perulangan atau Looping Algorithm adalah struktur dasar algoritma yang
menjalankan beberapa langkah tertentu secara berulang-ulang sampai terpenuhinya suatu
kondisi. Pada kehidupan sehari-hari banyak yang kita lakukan secara berulang-ulang,
contohnya algoritma menjemur pakaian:
1. Siapkan tiang jemuran
2. Ambil satu pakaian yang sudah dicuci
3. Peras pakaian hingga sedikit mengering
4. Letakkan pakaian pada tiang jemuran
5. Ulangi langkah 2 sampai 4 hingga pakaian habis.

Dari algoritma menjemur pakaian diatas, Anda dapat mendapat gambaran tentang struktur
algoritma looping. Jenis struktur dasar ini selesai jika kondisi tertentu terpenuhi, seperti
menjemur pakaian maka proses jemur akan selesai jika pakaian yang akan dijemur sudah
habis.

Struktur dasar algoritma ini mempunyai beberapa bentuk seperti Struktur FOR, Struktur
While dan Struktur Do….While.

A. Struktur FOR
Struktur dasar algoritma perulangan menggunakan instruksi FOR untuk mengulang satu
baris instruksi atau beberapa baris instruksi sampai jumlah perulangan yang disyaratkan
terpenuhi. Ciri-ciri utama struktur perulangan menggunakan FOR adalah terdapat nilai
awal dan nilai akhir yang menunjukkan syarat yang harus terpenuhi. Berikut Flowchart
menggunakan FOR :
Gambar diatas menjelaskan bahwa Instruksi_1, Instruksi_2 dan Instruksi_3 akan
dieksekusi ketika syarat terpenuhi. Perulangan menggunakan struktur FOR dimulai dari
Nilai_Awal dan akan berhenti pada Nilai_Akhir.

Latihan 4.2
1. Buatlah algoritma dan flowchart mencetak angka menggunakan FOR, program akan
dicetak angka 1 sampai 5.
Pembahasan :
Deskripsi :
1. Mulai
2. Kerjakan Langkah 3 mulai i = 1 sampai i = 5
3. Cetak i
4. Selesai
Flowchart Cetak Angka dengan FOR

Gambar flowchart diatas, menjelaskan bahwa nilai i awal berisi 1, kemudian dicetak nilai
i awal yaitu 1. Nilai variabel i akan bertambah secara otomatis sehingga nilai variabel i.
Setelah ditambahkan secara otomatis, sekarang i = 2 lalu cetak nilai variabel i. Proses
tersebut akan dijalankan sampai kondisi yang sudah ditentukan terpenuhi yaitu i = 5 maka
proses looping akan berhenti.

2. Buatlah algoritma dan flowchart Cetak Bilangan Genap menggunakan struktur FOR,
program akan mencetak bilangan genap mulai dari 0 dengan batas akhir 10 dengan
menggunakan struktur looping FOR.
Pembahasan :
Deskripsi :
1. Mulai
2. Kerjakan langkah 3 sampai langkah 4 mulai i = 1 sampai i = 10
3. Jika i dibagi 2 sama dengan 0 maka kerjakan langkah 4
4. Cetak i
5. Selesai
Flowchart Cetak Bilangan Genap dengan FOR

Gambar flowchart diatas, menjelaskan bahwa program akan mengeksekusi syarat yang
dijabarkan dengan FOR, diketahui nilai i pertama kali berisi 1 kemudian diuji apakah nilai
i tersebut habis dibagi dengan 2. Jika benar maka nilai i akan dicetak kemudian dilakukan
penambahan otomatis sehingga nilai i menjadi 2. Namun jika salah, nilai i akan langsung
ke langkah penambahan otomatis. Proses tersebut akan dieksekusi terus sampai nilai i lebih
besar dari 10.

Perulangan FOR DO dalam Pascal


Perulangan (looping) adalah konsep pemrograman mengulang baris program beberapa kali.
“Beberapa kali” maksudnya tidak terbatas, selama komputer masih mampu mengolahnya.
Sebagai contoh, Anda menulis teks “Semangat Informatika” sebanyak 1000 kali. Tentu
sangat melelahkan mengetik teks tersebut walaupun dengan di-copy paste. Menggunakan
struktur looping, Anda dapat membuatnya dalam waktu singkat dan cepat, hanya butuh
beberapa baris kode program.
Salah satu struktur perulangan di dalam Pascal adalah FOR DO, berikut format
penulisannya adalah :
FOR (variabel_counter) := (nilai_awal) TO (nilai_akhir) DO
begin
(kode program yang ingin diulang disini...)
end;

Perhatikan, variabel_counter adalah variabel yang berfungsi sebagai counter, atau


penghitung dalam perulangan. Variabel ini otomatis menaik dari nilai_awal hingga
nilai_akhir. Dalam setiap kenaikan, blok kode program yang berada di dalam begin dan
end; akan dijalankan. Ingat, variabel_counter ini dapat digunakan sepanjang perulangan
jika masih diperlukan.
Pelajari contoh kode Program PASCAL berikut ini.

Penjelasan kode tesrebut adalah sebagai berikut.


Pada bagian var, ada variabel i dengan tipe data integer. Variabel ini sebagai variabel
counter. Di dalam bahasa pemrograman komputer, variabel i, j, dan k sering digunakan
sebagai variabel counter. Anda akan sering melihat huruf-huruf ini dalam setiap perulangan,
tidak hanya dalam bahasa Pascal.
Untuk membuat perulangan sebanyak 1000 kali, Anda dapat menggunakan perintah for
i := 1 to 1000 do. Maksudnya adalah “Untuk variabel i, jalankan perulangan mulai dari
1 hingga 1000”.
Bagian mana yang diulang? Bagian blok program yang diawali perintah begin, dan diakhiri
perintah end;. Di dalam blok ini Anda membuat perintah: writeln(‘Semangat
Informatika’). Jadi, pascal akan menjalankan 1000 kali baris writeln(‘(‘Semangat
Informatika’’). Perhatikan hasil eksekusi baris program berikut :
Gambar 4....Hasil pengulangan teks Semangat Informatika sebanyak 1000 kali

Karena keterbatasan ukuran layar, Anda tidak akan mampu menghitung jumlah
“Semangat Informatika” ini. Tetapi Anda dapat memanfaatkan variabel counter i. Anda
ubah kode programnya menjadi seperti berikut.

Disini, Anda dapat menambahkan variabel counter i ke dalam blok perulangan. Kode
writeln(‘Semangat Informatika ke – ‘,i), artinya Anda ingin menampilkan Semangat
Informatika – 1, Semangat Informatika – 2, Semangat Informatika – 3, hingga
Semangat Informatika – 1000. Tampilan berikut menujukkan pada Anda bahwa teks
tersebut tampil sebanyak 1000 kali.

Latihan 4...
1. Buatlah kode program yang merupakan daftar perkalian 7, yakni 7 × 1 = 7, 7 × 2 = 14,
7 × 3 = 21, dan seterusnya sampai 7 × 10 = 70. Disini Anda harus menggunakan variabel
counter i agar setiap perkalian naik dari 1 hingga 10. Berikut kode program tersebut.
Hasil eksekusi baris program :

Ini sebenarnya modifikasi dari kode program perulangan Semangat Informatika. Anda
dapat merangkai tampilan daftar perkalian menggunakan perintah writeln(‘7 × ‘,i,’ = ‘,7 *
i). Tanda koma digunakan untuk memisahkan bagian teks, dan bagian variabel Pascal.

2. Anda modifikasi kode program di atas agar lebih interaktif. Anda ingin membuat daftar
perkalian tetapi angka perkaliannya Anda yang memasukkannya. Misalnya diinput angka
9, tampilkan daftar perkalian 9 × 1, 9 × 2, hingga 9 × 10. Jika diinput 14, tampilkan
perkalian 14 × 1, 14 × 2, hingga 14 × 10.
Anda dapat menggunakan dua variabel yaitu i dan angka. Variabel angka digunakan untuk
menampung variabel input, sedangkan variabel i sebagai variabel counter. Selain
tambahan kode readln(angka), kode program di atas mirip sebelumnya. Tentu saja di
dalam blok perulangan Anda harus membuat baris writeln( i ,’ x ‘, angka ,’ = ‘, i * angka)
agar variabel angka di proses sebagai bilangan pengali. Berikut hasil eksekusinya.
Perulangan Angka Negatif untuk FOR DO Pascal
Dalam contoh sebelumnya, Anda menggunakan angka positif untuk perulangan. Selain itu,
Anda juga dapat menggunakan nilai negatif, selama nilai awal harus lebih besar daripada
nilai akhir. Berikut kode programnya.

Hasil eksekusi program sebagai berikut.

Perulangan Mundur untuk FOR DO Pascal


Anda dapat menggunakan angka negatif. Saat ini Anda mencoba hitung mundur?
Maksudnya berhitung dari bilangan besar ke kecil. Berikut contoh kode programnya.
Hasil kode programnya adalah sebagai berikut.

Hasil eksekusinya tidak ada tampilan layar. Karena PASCAL tidak mampu melakukan
hitung mundur dengan perulangan FOR..TO DO, tetapi harus menggunakan perulangan
FOR DONWTO DO.

Perulangan FOR DOWNTO dalam Pascal


Perulangan FOR DOWNTO sangat mirip dengan perulangan FOR TO DO, bedanya
perulangan kali ini khusus untuk iterasi yang menurun, dari angka besar ke angka kecil.
Berikut format penulisannya :
FOR (variabel_counter) := (nilai_awal) DOWNTO (nilai_akhir) DO
begin
(kode program yang ingin diulang disini...)
end;

Hampir tidak berbeda dengan format perulangan FOR TO DO, Anda hanya menggunakan
keyword DOWNTO sebagai pengganti TO. Anda dapat melihat kode program hitung
mundur dari 10 ke 1 menggunakan FOR DOWNTO:
Terlihat bahwa variabel counter i akan menurun dari 10 ke 0, sesuai dengan perintah for
i := 10 downto 0 do.

Anda dapat mengubah kode program sebagai berikut.


Hasilnya sebagai berikut.

Latihan 4...
1. Untuk yang lebih interaktif, buatlah lirik lagu ayak ayam dengan perulangan FOR
DOWNTO, yakni menampilkan string “Anak ayam turun 10, pergi 1 tinggal 9”,
kemudian dilanjutkan dengan string “Anak ayam turun 9, pergi 1 tinggal 8”, hingga
“Anak ayam turun 1, pergi 1 tinggal 0”. Jumlah anak ayam awal harus diinput oleh
pengguna.
Pembahasan :
Anda membuat dua variabel: i sebagai variabel counter, dan anak_ayam sebagai variabel
penampung masukan untuk perintah readln(anak_ayam). Perhatikan baris
writeln(‘Anak ayam turun ‘,i,’ pergi 1, tinggal ‘,i-1); inilah yang menampilkan teks lagu
anak ayam yang terus menurun hingga “Anak ayam turun 1, pergi 1 tinggal 0”.

Anda dapat membuat perulangan dengan for i := anak_ayam downto 1 do. Anda tidak
membuat for i := anak_ayam downto 0 do, karena di bagian looping nilai i akan
dikurangi lagi. Jika Anda melakukan perulangan hingga 0, lirik lagu terakhir akan menjadi
“Anak ayam turun 0, pergi 1 tinggal -1”. Sangat tidak logis ada anak ayam dengan nilai
negatif. Sama seperti FOR TO DO, perulangan FOR DOWN TO juga dapat digunakan
untuk nilai negatif. Tentu saja dengan catatan nilai awal harus lebih besar daripada nilai
akhir.

B. Struktur WHILE
Struktur looping dengan menggunakan WHILE berfungsi hampir mirip dengan FOR yaitu
mengulang satu baris instruksi atau beberapa baris instruksi selama syarat yang ditentukan
masih terpenuhi. Ciri-ciri utama dari struktur WHILE adalah syarat yang ditentukan akan
diuji lebih dahulu sebelum instruksi-instruksi dieksekusi dalam perulangan.
Perhatikan, pada Struktur WHILE akan menguji syarat yang ditentukan terlebih dahulu,
sehingga jika syarat tidak terpenuhi maka instruksi-istruksi pada perulangan tidak
dikerjakan.
Flowchart struktur while

Gambar diatas menjelaskan bahwa syarat akan diuji oleh pemroses terlebih dahulu sebelum
mengeksekusi instruksi-instruksi yang akan diulang. Jika syarat yang diuji benar, maka
instruksi akan dieksekusi. Setelah instruksi dikerjakan maka syarat akan diuji lagi, proses
perulangan ini akan berhenti jika syarat yang telah diuji bernilai salah.

Latihan 4.3
1. Rancanglah algoritma dan flowchart cetak bilangan genap menggunakan WHILE,
program akan mencetak bilangan genap sampai 10 dengan menggunakan struktur
perulangan WHILE.
Pembahasan :
Deskripsi :
1. Mulai
2. i = 1
3. Selama i <= 10 kerjakan langkah 4 sampai langkah 6
4. Jika i habis dibagi 2 kerjakan langkah 5
5. Cetak i
6. i = i + 1
7. Selesai
Flowchart Cetak Angka Genap dengan WHILE
Pada gambar flowchart diatas, dapat dijelaskan pertama adalah nilai i diberikan nilai 1.
Lalu nilai i diuji apakah nilai i lebih kecil atau sama dengan (<=) 10, jika benar maka akan
dilakukan operasi aritmatika yaitu nilai i dibagi 2, jika habis atau hasilnya 0 maka akan
dicetak nilai i dan jika sebaliknya maka nilai i tidak tercetak dan langsung ke proses
berikutnya. Proses berikutnya adalah nilai i akan ditambah 1, sebelumnya nilai i adalah 1
maka setelah proses ini menjadi 2. Kemudian nilai i diuji kembali sampai nilai i lebh besar
dari 10 barulah proses perulangan menggunakan WHILE berakhir.
2. Buatlah algoritma dan flowchart cetak angka menggunakan WHILE, program akan
mencetak angka 1 sampai 5 dengan struktur WHILE.
Pembahasan :
Deskripsi :
1. Mulai
2. i = 1
3. Selama i <= 5 kerjakan langkah 4 sampai langkah 5
4. Cetak i
5. i = i + 1
6. Selesai
Flowchart Cetak Angka dengan WHILE

Gambar flowchart diatas, menjelaskan bahwa nilai i pertama kali bernilai 1. Kemudian
akan diuji apakah nilai i lebih kecil atau sama dengan (<=) 5, jika benar maka nilai i dicetak.
Kemudian nilai i ditambah 1, lalu nilai i akan diuji kembali apakah masih memenuhi syarat
yang sudah di deklaraskikan di awal, jika benar maka nilai i akan dicetak. Langkah
perulangan akan berjalan terus sampai nilai i lebih besar dari 5. Perhatikan, pada struktur
WHILE penambahan tidak dilakukan secara otomatis seperti pada struktur FOR, sehingga
Anda perlu menambahkan instruksi lagi.

C. Struktur DO…WHILE
Struktur looping dengan DO…WHILE digunakan untuk mengulangi satu baris instruksi
atau beberapa baris instruksi sampai syarat yang ditetapkan tidak terpenuhi. Ciri-ciri utama
dari struktur DO…WHILE ialah syarat akan diuji setelah instruksi dikerjakan seluruhnya.
Perhatikan, struktur menggunakan DO…WHILE berbeda dengan menggunakan WHILE,
jika DO…WHILE melakukan pengujian di akhir dan WHILE melakukan pengujian di
awal.
Flowchart struktur DO…WHILE

Pada gambar flowchart diatas, Anda lihat bahwa instruksi_1, instruksi_2 dan instruksi_3
akan dikerjakan dahulu baru syarat akan diuji. Jika syarat yang diuji bernilai benar maka
instruksi_1 sampai instruksi_3 akan dikerjakan kembali. Setelah dikerjakan kembali maka
syarat akan diuji lagi, perulangan akan selesai jika syarat yang diuji bernilai salah.

Latihan 4.5
1. Buatlah algoritma dan flowchart cetak angka DO…WHILE, program akan mencetak
angka 1 sampai 5 dengan menggunakan DO…WHILE
Pembahasan :
Deskripsi :
1. Mulai
2. i = 0
3. i = i + 1
4. Cetak i
5. Jika i <= 5 kerjakan langkah 3 sampai langkah 4
6. Selesai
Flowchart Cetak Angka dengan DO…WHILE
Pada gambar diatas, pertama kali variabel i diberi nilai awal adalah 0. Kemudian nilai i
ditambah 1 sehingga nilai i menjadi 1, Lalu nilai i dicetak. Langkah selanjutnya adalah
nilai i diuji apakah lebih kecil atau sama dengan (<=) 5, jika hasil uji bernilai benar maka
akan kembali ke instruksi ke 1 yaitu nilai i ditambah 1 sehingga nilai i sekarang menjadi
2. Kemudian nilai i dicetak dan diuji kembali, perulangan akan berhenti sampai nilai i lebih
besar dari 5.

2. Buatlah algoritma dan flowchart cetak bilangan genap, program akan mencetak bilangan
genap dari 1 sampai 10 menggunakan struktur perulangan DO…WHILE.
Pembahasan :
Deskripsi :
1. Mulai
2. i = 1
3. Selama i <= 10 kerjakan langkah 4 sampai langkah 6
4. Jika i habis dibagi 2 kerjakan langkah 5
5. Cetak i
6. i = i + 1
7. Selesai
Flowchart Cetak Angka Genap dengan DO…WHILE
Pada gambar flowchart, instruksi pertama adalah nilai i adalah 1. Instruksi selanjutnya
pengujian nilai i habis dibagi 2, jika benar maka nilai i dicetak kemudian nilai i ditambah
1 sehingga nilai i menjadi 2. Jika salah maka instruksi nilai i ditambah 1 sehingga menjadi
2. Instruksi berikutnya adalah pengujian apakah nilai i lebih kecil atau sama dengan 10,
jika benar maka akan kembali pada instruksi ke 2 yaitu diuji apakah nilai i habis dibagi 2,
begitulah seterusnya sampai nilai i lebih besar dari 10 barulah perulangan selesai.

Perulangan WHILE DO dalam Pascal


Untuk situasi jumlah perulangan belum dapat dipastikan, Anda dapat menggunakan
perulangan WHILE DO atau REPEAT UNTIL. Berikut format dasar penulisan
perulangan WHILE DO dalam bahasa pemrograman PASCAL.

WHILE (condition) DO
begin
(kode program yang ingin diulang disini...)
(kode program untuk mengubah condition..)
end;
Perhatikan, perulangan WHILE DO ada di condition dan kode program untuk
mengubah condition. Condition sebagai syarat agar perulangan dapat dijalankan. Selama
syarat ini terpenuhi (bernilai TRUE), perulangan akan terus dijalankan. Jika syarat tidak
terpenuhi (bernilai FALSE), perulangan tidak akan berjalan. Perhatikan kode program
berikut.

Hasilnya sebagai berikut.

Pada awal program, Anda membuat variabel i yang berfungsi sebagai variabel counter.
Sebelum perulangan, Anda memberikan nilai 0 untuk i. Setelah itu Anda masuk ke
perulangan WHILE DO. Baris program while i < 10 do adalah awal dari perulangan.
Inilah kondisi atau syarat yang harus dipenuhi agar perulangan dapat diproses. Ketika
kode program jalan pertama kali, nilai variabel i adalah 0, artinya kondisi i < 10
menghasilkan nilai TRUE. Karena tentu saja 0 kurang dari 10.
Karena syarat di penuhi, blok begin hingga end; segera di eksekusi. Baris pertama adalah
writeln(‘Syams Informatics’). Ini digunakan untuk menampilkan teks ‘Syams
Informatics’. Baris berikutnya Anda membuat i:= i + 1. Bagian ini dikenal juga sebagai
increment, artinya Anda menambah nilai variabel counter i sebanyak 1 angka. Ini
dilakukan agar dapat mengubah kondisi i < 10 yang terdapat di awal perulangan. Jika ini
tidak ditulis, perulangan tidak akan pernah berhenti atau looping forever (infinity loop).
Sampai disini, kode program akan kembali ke awal dan memeriksa apakah i < 10? Ingat,
variabel i sekarang sudah bernilai 1. Nah, 1 < 10 = benar (TRUE), kembali jalankan
writeln(‘Syams Informatics’), yang diikuti dengan i:= i + 1. Karena 1 + 1 = 2, varibel i
sekarang bernilai 2.
Kode program kembali ke awal dan memeriksa apakah i < 10? Sekarang nilai i adalah 2,
dan 2 masih kurang dari 10, 2 < 10 = benar (TRUE), sekali lagi kode blok perulangan
akan dijalankan. Proses seperti ini terus berlangsung sampai kondisi i < 10 menghasilkan
FALSE. Kapan kondisi ini terjadi? Ketika variabel i = 10. 10 < 10 adalah FALSE. Artinya,
perulangan WHILE DO akan dijalankan sebanyak 10 kali, dimana dalam setiap perulangan,
nilai i akan menaik mulai dari 0, 1, 2, 3, 4, 5, 6, 7, 8, hingga 9.

Latihan 4...
1. Buatlah kode program Pascal dengan tampilan berikut.

Pembahasan :
Kondisi perulangan WHILE DO yang Anda pakai sama seperti sebelumnya. Hanya kali
ini perintah yang dijalankan pada setiap perulangan adalah writeln(‘Variabel i sekarang
bernilai: ‘,i). Ini akan membantu kita melihat nilai variabel counter i yang terus bertambah
1 selama perulangan dijalankan.

Pemahaman Logika untuk Perulangan WHILE DO


Untuk dapat membuat perulangan dengan WHILE DO, Anda perlu pemahaman logika
untuk menentukan nilai awal dan kondisi akhir.

Latihan 4...
Buatlah kode program yang menghasilkan teks: “Variabel i sekarang bernilai: 5”,
“Variabel i sekarang bernilai: 6”, … Hingga “Variabel i sekarang bernilai: 10”.
Tampilan hanya 5 baris. Modifikasi kode program di atas.
Pembahasan :
Hasilnya sebagai berikut.

Perhatikan, kuncinya adalah bagaimana menentukan kondisi awal variabel i, dan kondisi
akhir dari perulangan. Anda membuat i:= 5, dan while i <= 10 do, artinya nilai i akan
mulai dari 5, 6, 7, 8, 9, dan 10.
Tapi Anda juga dapat menggunakan kode program berikut:
Dapatkah Anda melihat bedanya? Perhatikan bahwa kali ini Anda menggunakan
kondisi while i < 11 do. Sebenarnya sama seperti while i <= 10 do. Angka 10 akan TRUE
jika dibandingkan dengan “< 11″, dan “<= 10“.
Konsep seperti ini agar selalu diperhatikan ketika membuat perulangan WHILE DO.

Hati-hati dengan Infinity Loop


Infinity Loop adalah sebuah perulangan yang tidak pernah berhenti (looping forever). Ini
terjadi karena variabel kondisi akan selalu bernilai TRUE. Perhatikan kode program
berikut:
Jika anda menjalankan kode program diatas, akan terjadi Infinity Loop. Hal ini karena
kondisi while i <= 10 do akan selalu TRUE. Di dalam perulangan Anda tidak membuat
‘sesuatu’ yang dapat mengubah nilai variabel i (untuk membuat syarat i <= 10 menjadi
FALSE).

Infinity Loop biasanya terjadi karena kesalahan logika dari programmer, terutama untuk
perulangan WHILE DO dan REPEAT UNTIL. Untuk menghentikan infinity loop, Anda
dapat menekan kombinasi tombol CRTL + C, atau menutup paksa Pascal for Windows.

Membuat Hitung Mundur dengan WHILE DO


Untuk membuat perulangan yang mundur, Anda dapat mengubah nilai awal variabel
counter dan kondisi syarat dari perulangan WHILE DO. Berikut contohnya.
Pembahasan :

Anda memulai variabel i dari 100. Memeriksa kondisi while i >= 0 do artinya, perulangan
akan dijalankan selama nilai i besar dari 100.
Bagaimana agar kondisi ini dapat bernilai FALSE? Anda menggunakan i:= i – 1, sehingga
dalam setiap perulangan, nilai i selalu berkurang 1 angka, dari 100, ke 99, ke 98, dan
seterusnya hingga berhenti saat i = 0, yakni ketika syarat i >= 0 menghasilkan FALSE.

Membuat Perulangan Lompat dengan WHILE DO


Anda dapat memodifikasi bagian counter, Anda dapat membuat perulangan yang
“lompat”, yaitu tidak berurutan dari 1, 2, 3, .... Anda dapat membuat variabel counter yang
naik misalnya dari 3, 6, 9, 12, dan seterusnya. Perhatikan kode program berikut, dan
dapatkah Anda menebak urutan angka yang ditampilkan?

Perhatikan bahwa variabel i mulai dari 3, dan perubahannya menggunakan i:= i + 3.


Artinya variabel i akan ‘lompat’ 3 angka setiap perulangan. Berikut hasilnya.

Sampai disini Anda dapat mencoba berbagai kombinasi perulangan lain, misalnya
membuat perulangan yang lompat setiap 7 angka, atau perulangan yang mundur 4 angka,
misalnya dari 100, ke 96, ke 92, ke 88, dan seterusnya.
Perulangan REPEAT UNTIL dalam Pascal
Pada dasarnya, perulangan REPEAT UNTIL mirip perulangan WHILE DO. Anda akan
memeriksa dalam setiap iterasi apakah nilai variabel counter masih dipenuhi atau tidak.
Bedanya, pada REPEAT UNTIL, pemeriksaan kondisi dilakukan di akhir perulangan,
bukan di awal seperti WHILE DO.
Berikut format dasar penulisan perulangan REPEAT UNTIL dalam bahasa pemrograman
PASCAL
REPEAT
begin
(kode program yang ingin diulang disini...)
(kode program yang untuk mengubah condition..)
end;
UNTIL (condition)
Karena condition diperiksa di akhir, setidaknya isi perulangan akan dijalankan minimal 1
kali, meskipun condition tidak dipenuhi. Inilah perbedaan mendasar dari REPEAT UNTIL
dengan perulangan lain seperti FOR TO DO dan WHILE DO.

Berikut kode program menggunakan perulangan REPEAT UNTIL untuk menampilkan


teks “Syams Informatics” sebanyak 10 kali.

Hasilnya sebagai berikut.


Terlihat sangat mirip dengan WHILE DO, bedanya variabel counter i diperiksa di akhir
perulangan. Anda dapat menampilkan nilai variabel i dalam setiap iterasi berikut ini.
Jika Anda sudah paham konsep perulangan WHILE DO, maka tidak akan sulit memahani
perulangan REPEAT UNTIL. Perbedaan mendasar, bagaimana jika nilai variabel counter
sudah tidak dapat dipenuhi saat perulangan di jalankan? Cobalah kode program berikut.

Perhatikan di awal kode program, saya mengisi variabel counter i dengan nilai 1000. Di
akhir looping REPEAT UNTIL, saya membuat kondisi until i > 10. Artinya, kondisi ini
sudah tidak memenuhi. 1000 tentu lebih besar dari 10, sehingga i > 10 akan
menghasilkan nilai FALSE.
Namun inilah keunikan perulangan REPEAT UNTIL. Karena kondisi diperiksa di akhir
perulangan, isi perulangan itu bisa berjalan minimal 1 kali. Berikut hasil kode program
tersebut.

Sebagai contoh terakhir, saya ingin membuat deret angka kelipatan 5 menggunakan
perulangan REPEAT UNTIL. Berikut kode programnya:
Hasilnya sebagai berikut.

Kunci dari pembuatan deret ini ada di variabel counter. Anda menggunakan perintah i:= i
+ 5 dalam perulangan. Artinya, variabel i ditambahkan 5 dalam setiap iterasi. Hasil akhir
berupa deret dari 5, 10, 15, dan seterusnya hingga 100.

3. Algoritma Percabangan (Conditional Algorithm)


Algoritma percabangan atau Algoritma bersyarat adalah algoritma yang menjalankan
instruksi selanjutnya jika syarat yang ditetapkan sudah terpenuhi. Pada struktur ini tidak
setiap instruksi akan dikerjakan, instruksi yang dikerjakan hanya yang memenuhi syarat.
Pada bahasa pemrograman, struktur ini sering digunakan menggunakan instruksi IF-THEN
atau lebih dikenal instruksi jika-maka. Berikut macam-macam instruksi IF.

(a). Struktur IF Sederhana


Bentuk dari struktur IF sederhana adalah IF (Syarat) THEN (Instruksi). Bentuk flowchart
IF Sederhana adalah sebagai berikut.
Pada gambar flowchart di atas, struktur IF sederhana dapat Anda lihat bahwa instruksi_1
akan dieksekusi jika syarat yang ditentukan bernilai benar dan jika bernilai salah,
instruksi_1 tidak akan dieksekusi.
Berikut ini contoh algoritma kelulusan siswa, program ini menyatakan siswa lulus jika
nilainya >= 65.
Deskripsi :
1. Mulai
2. Baca nilai siswa
3. Jika nilai siswa >= 65 maka kerjakan langkah 4
4. Cetak “LULUS”
5. Selesai
Flowchart Kelulusan Siswa
Pada flowchart di atas, nilai siswa yang dimasukkan akan diuji apakah nilai tersebut lebih
besar atau sama dengan 65. Jika benar maka program akan mencetak “LULUS” kemudian
selesai, namun jika salah maka program selesai.

(b). Struktur IF…THEN…ELSE…


Pada struktur ini, terdapat dua kemungkinan instruksi yang akan dikerjakan berdasarkan
hasil dari pengujian. Contoh jika syarat yang diujikan memperoleh hasil benar maka
instruksi_1 dikerjakan, namun jika bernilai salah maka instruksi_2 yang dikerjakan. Untuk
lebih jelasnya lihat gambar di bawah ini.
Bentuk flowchart
Contoh, mengambil masalah sebelumnya tentang kelulusan siswa. Sekarang Anda
modifikasi sedikit, jika nilai siswa lebih besar atau sama dengan 65 maka dinyatakan lulus
dan jika nilai siswa lebih kecil dari 65 maka siswa dinyatakan tidak lulus.
Deskripsi :
1. Mulai
2. Baca nilaisiswa
3. Jika nilai siswa >= 65 maka kerjakan langkah 4, selain itu kerjakan langkah 5
4. Cetak “LULUS”
5. Cetak “TIDAK LULUS”
6. Selesai
Flowchart Kelulusan Siswa
Pada gambar flowchart di atas, setelah nilai dimasukkan maka nilai tersebut akan diuji
apakah nilai siswa lebih besar atau sama dengan 65. Jika benar maka program akan
mencetak “LULUS” lalu selesai, Jika tidak maka akan dicetak “TIDAK LULUS” lalu
program selesai.

(c). IF Bersarang
Untuk struktur ini, Anda perlu belajar logika dan ketelitian, satu alasan yang pasti adalah
struktur ini sering dipakai untuk tes kerja dalam bidang IT terutama pekerjaan yang
berkaitan dengan perancangan sistem. Bentuk flowchart struktur IF Bersarang adalah
sebagai berikut.
Berdasarkan flowchart di atas, Anda dapat mempelajari struktur dari IF bersarang. Anda
dapat jelaskan satu persatu, jika syarat1 yang diuji bernilai benar maka instruksi1 akan
dieksekusi, jika syarat1 bernilai salah maka syarat2 diuji. Jika syarat2 yang diuji bernilai
benar maka instruksi2 akan dieksekusi. Jika syarat2 bernilai salah, maka syarat3 diuji. Jika
syarat3 yang diuji bernilai benar, maka instruksi3 akan dieksekusi. Jika syarat3 bernilai
salah maka syaratx diuji. Jika syaratx yang diuji bernilai benar maka instruksix akan
dieksekusi. Jika syaratx bernilai salah atau tidak ada syarat yang terpenuhi maka instruksiy
yang dieksekusi.

Contoh 4...
1. Buatlah algoritma dan flowchart konversi nilai siswa, program akan mengkonversi nilai
siswa dari semula dalam bentuk angka dirubah menjadi bentuk huruf dengan ketentuan
sebagai berikut :
– Jika nilai angka >= 80 maka nilai huruf sama dengan A
– Jika nilai angka >= 70 maka nilai huruf sama dengan B
– Jika nilai angka >= 60 maka nilai huruf sama dengan C
– Jika nilai angka >= 50 maka nilai huruf sama dengan D
– Jika nilai angka < 50 maka nilai huruf sama dengan E
Deskripsi :
1. Mulai
2. Baca nilaiangka
3. Jika nilaiangka >= 80 maka nilaihuruf = “A”, selain itu
4. Jika nilaiangka >= 70 maka nilaihuruf = “B”, selain itu
5. Jika nilaiangka >= 60 maka nilaihuruf = “C”, selain itu
6. Jika nilaiangka >= 50 maka nilaihuruf = “D”, selain itu
7. nilaihuruf = “E”
8. Cetak nilaihuruf
9. Selesai
Flowchart Konversi Nilai Siswa
Berdasarkan flowchart di atas, dalam struktur IF bersarang adalah jika salah satu syarat
sudah terpenuhi maka syarat-syarat lainnya yang ada sejajar tidak akan diuji lagi.
Contohnya, Anda masukkan nilai 60 maka nilai hurufnya adalah “C” dan pengujian nilai
angka lebih besar atau sama dengan 50 tidak akan dijalankan.

Percabangan Kondisi IF THEN dalam Pascal


Konsep dasar percabangan perintah IF THEN dalam bahasa pemrogram Pascal adalah
sebagai berikut.
IF (kondisi) THEN
begin
(kode program)
end;

Kondisi berperan sebagai penentu dari stuktur percabangan. Jika kondisi terpenuhi
(menghasilkan nilai TRUE), kode program dijalankan. Jika kondisi tidak terpenuhi
(menghasilkan nilai FALSE), tidak terjadi apa-apa. Kondisi biasanya terdiri dari operasi
perbandingan, misalnya apakah variabel a berisi angka 10, atau variabel password berisi
string ‘rahasia’.
Bagian yang ditandai dengan begin dan end; adalah “blok” kode program yang dijalankan
seandainya kondisi bernilai TRUE. Setelah itu, Pascal akan lanjut mengeksekusi kode
program di bawahnya. Contoh kode Program Percabangan IF THEN adalah sebagai berikut.

Pada awal kode program Anda membuat variabel “angka” dengan nilai 10 (integer).
Kemudian Anda dapat memeriksa kondisi menggunakan perintah IF THEN.
if (angka > 7) artinya Anda memeriksa apakah nilai dari variabel “angka” lebih besar dari
7. Jika ya, kondisi tersebut akan menghasilkan nilai TRUE. Akibatnya, kode program
writeln(‘Variabel “angka” lebih besar dari 7’) akan dijalankan.
Setelah blok kondisi IF diproses, Pascal lanjut menjalankan kode program setelah blok
IF THEN, yakni baris writeln(‘Belajar Informatika SMA’) hingga akhir kode program
yang di tandai dengan END.

Latihan 4...
1. Modifikasilah kode program lain di dalam blok IF THEN, seperti berikut.

Hasilnya adalah sebagai berikut.

Berikan penjelasannya?!
Pembahasan :
Bagian blok begin dan end; ini tidak ditulis. Jika seperti ini, perintah yang dijalankan (saat
kondisi TRUE) hanya boleh satu baris, seperti pada kode program berikut.
program struktur_if_then;
uses wincrt;
var
angka:integer;
begin
clrscr;
angka:=7;
if (angka > 7) then
writeln('Variabel "angka" lebih besar dari 7');
writeln('Belajar Informatika SMA');
readln;
end.
Namun sangat disarankan untuk selalu membuat blok begin dan end; pada setiap kondisi
if, karena seperti yang terlihat dari kode program di atas, sulit memastikan apakah baris
writeln(‘Belajar Informatika SMA’) termasuk ke dalam blok if atau tidak, kenyataannya
memang tidak termasuk.

2. Ketikklah kode program berikut ini. Perhatikan, tetap berhati-hati untuk menulis penutup
blok IF THEN, yakni “END;” (dengan tanda titik koma), bukan “END.” (dengan tanda
titik). Jelaskan dan tafsirkan.
program struktur_if_then;
uses wincrt;
var
angka:integer;
begin
clrscr;
write('Masukkan angka: ');
readln(angka);
if (angka mod 2 = 0) then
begin
writeln('Angka yang Anda masukkan merupakan bilangan
genap');
end;
readln;
end.

Pembahasan :
Anda membuat program yang meminta input dari pengguna (menggunakan perintah
readln), lalu disimpan ke dalam variabel angka. Variabel angka selanjutnya Anda periksa
menggunakan kondisi IF (angka mod 2 = 0). Perhatikan, mod menghasilkan sisa hasil
bagi dari suatu bilangan.
Dengan menulis IF (angka mod 2 = 0) artinya Anda memeriksa apakah variabel angka
jika dibagi 2 sisanya 0? Sebagai contoh, 4 mod 2 = 0 (sesuai dengan kondisi). 7 mod 2 =
1 (tidak sesuai dengan kondisi).
Kondisi IF (angka mod 2 = 0) ini sebenarnya digunakan untuk memeriksa apakah angka
termasuk genap atau tidak. Jika habis dibagi 2 (sisanya 0), artinya angka tersebut
merupakan bilangan genap.

Konsep Dasar Percabangan Kondisi IF THEN ELSE dalam Pascal


Kondisi IF THEN ELSE adalah tambahan dari kondisi IF THEN. Bagian ELSE digunakan
untuk menjalankan kode program jika kondisi tidak terpenuhi. Konsep dasar dari
percabangan IF THEN ELSE dalam bahasa pemrogram Pascal adalah sebagai berikut.
IF (kondisi) THEN
begin
(kode program 1)
end
ELSE
begin
(kode program 2)
end;
Jika kondisi terpenuhi, pascal akan menjalankan (kode program 1), jika tidak yang akan
dijalankan adalah (kode program 2). Pelajari contoh kode program Percabangan IF THEN
ELSE Pascal berikut.
Pada awal kode program Anda membuat variabel angka dan diisi dengan nilai 5 (integer).
Kemudian Anda memeriksa kondisi IF (angka > 7), jika hasilnya TRUE artinya isi variabel
angka besar dari 7, jalankan writeln(‘Variabel “angka” lebih besar dari 7’). Tapi jika
kondisi IF (angka > 7) menghasilkan nilai FALSE, yang akan dijalankan adalah
writeln(‘Variabel “angka” lebih kecil dari 7’).
Perhatikan, penutup blok sebelum perintah ELSE tidak boleh ada titik koma “ ; ” . Anda
harus menuliskan end else, bukan end; else. Jika anda menulis seperti ini, kode program
akan error.

if (angka > 5) then


begin
writeln('Variabel "angka" lebih besar dari 5');
end;
else

Kesalahan atau error 113 atau Fatal: syntax error, “;” expected but “ELSE” found
sangat sering terjadi dalam pembuatan kondisi IF THEN ELSE.

Latihan 4...
1. Buatlah kode progam berikut. Berikan penjelasannya.
Pembahasan :
Jika isi dari variabel angka habis dibagi 2, yakni hasil dari kondisi IF (angka mod 2 = 0),
jalankan perintah writeln(‘Anda memasukkan bilangan genap’). Selain itu, pasti angka
ganjil, sehingga yang akan dijalankan adalah writeln(‘Anda memasukkan bilangan
ganjil’).

Konsep Dasar Kondisi IF Bersarang (Nested IF)


Secara sederhana, IF bersarang atau nested IF adalah penggunaan struktur IF di dalam
IF. Kondisi seperti ini sering digunakan untuk kode program yang sudah cukup kompleks.
Terdapat banyak variasi dari nested IF, tergantung kode program yang ingin kita rancang.
Salah satunya adalah sebagai berikut:
IF (kondisi 1) THEN
begin
(kode program 1)
IF (kondisi 1.1) THEN
begin
(kode program 1.1)
end;
end
ELSE
begin
(kode program 2)
end;
Pada contoh tersebut, Anda menempatkan kondisi IF di dalam IF (nested IF). Perhatikan
bahwa (kode program 1.1) hanya akan dijalankan jika kondisi 1 dan kondisi 1.1 terpenuhi.
Jika kondisi 1 tidak terpenuhi, program akan langsung lompat ke bagian ELSE.
Pascal dan mayoritas bahasa pemrograman lain tidak membatasi jumlah IF di dalam IF.
Anda dapat membuat struktur yang lebih rumit seperti berikut ini.
IF (kondisi 1) THEN
begin
(kode program 1)
IF (kondisi 1.1) THEN
begin
(kode program 1.1)
IF (kondisi 1.1.1) THEN
begin
(kode program 1.1.1)
end;
end;
end
ELSE
begin
(kode program 2)
IF (kondisi 2.1) THEN
begin
(kode program 2.1)
end;
end;
Anda membuat struktur IF di dalam IF di dalam IF (2 level nested IF). Untuk kode
program yang panjang, Anda harus hati-hati menentukan kode program yang masuk ke
dalam blok IF. Penulisan indenting (menjorokkan kode program beberapa spasi di awal)
juga akan membantu Anda membedakan kode program masuk IF yang ini atau kode
program masuk ke IF yang itu. Kemampuan logika juga sangat berperan dalam membuat
kondisi yang kompleks seperti ini.

Contoh kode program Nested IF dalam Pascal


Anda dapat membuat program yang meminta input angka (integer), kemudian
menginformasikan apakah angka itu angka genap atau ganjil, dan apakah angka itu besar
atau kecil dari 10.
Dapatkah Anda merancang kode programnya? Tentunya dengan menggunakan konsep
nested IF. Disini terdapat dua kondisi dengan empat kemungkinan:
1. Angka genap dan besar dari 10
2. Angka genap dan kecil dari 10
3. Angka ganjil dan besar dari 10
4. Angka ganjil dan kecil dari 10
Berikut kode program yang Anda rancang.
program struktur_if_then_else_nested;
uses wincrt;
var
angka:integer;
begin
clrscr;
write('Masukkan angka: ');
readln(angka);
if (angka mod 2 = 0) then
begin
write('Anda memasukkan bilangan genap ');
if (angka > 10) then
begin
writeln('dan besar dari 10');
end
else
begin
writeln('dan kecil dari 10');
end;
end
else
begin
write('Anda memasukkan bilangan ganjil ');
if (angka > 10) then
begin
writeln('dan besar dari 10');
end
else
begin
writeln('dan kecil dari 10');
end;
end;
readln;
end.

Anda tidak perlu memeriksa apakah angka tersebut kecil dari 10, atau apakah angka itu
tidak habis dibagi 2. Kondisi ini cukup dibuat menggunakan ELSE. Jika angka tidak lebih
besar dari 10, pastinya angka tersebut lebih kecil dari 10 (tidak perlu diperiksa). Jika angka
tidak habis dibagi 2, berarti angka tersebut ganjil. Anda juga menggunakan perintah write
dan writeln secara bergantian, agar hasil akhir teks menjadi satu baris.

Alternatif Penggunaan Nested IF


Dalam beberapa situasi, Anda dapat mengubah nested IF menjadi IF “biasa” dengan
bantuan operator logika AND. Kode program sebagai berikut:
Program struktur_if_then_else_nested;
uses wincrt;
var
angka:integer;
begin
clrscr;
write('Masukkan angka: ');
readln(angka);
if (angka mod 2 = 0) and (angka > 10) then
begin
writeln('Anda memasukkan bilangan genap dan lebih
besar dari 10');
end
else
if (angka mod 2 = 0) and (angka < 10) then
begin
writeln('Anda memasukkan bilangan genap dan lebih
kecil dari 10');
end
else
if (angka mod 2 <> 0) and (angka > 10) then
begin
writeln('Anda memasukkan bilangan ganjil dan lebih
besar dari 10');
end
else
if (angka mod 2 <> 0) and (angka < 10) then
begin
writeln('Anda memasukkan bilangan ganjil dan lebih
kecil dari 10');
end;
readln;
end.

Kode program tersebut tanpa nested IF dan hasil yang didapat sama persis dengan kode
program sebelumnya. Kode ini lebih mudah dibaca, karena Anda dapat melihat kondisi apa
yang diperiksa. Namun dari performa, nested IF lebih efisien. Variabel angka diperiksa
sebanyak dua kali jika menggunakan nested IF. Misalkan Anda menginput angka:= 7,
pertama kali akan diperiksa kondisi: IF (angka mod 2 = 0)? Tidak, program langsung
menjalankan bagian ELSE, dan masuk ke kondisi kedua: IF (angka > 10)? Tidak, jalankan
ELSE.
Sedangkan yang tanpa nested IF, variabel angka akan diperiksa lebih dari 4 kali. Pertama
IF (angka mod 2 = 0)? Tidak. Program lanjut ke bagian ELSE IF kedua: IF (angka mod
2 = 0)? Juga tidak, lanjut ke ELSE IF ketiga: IF (angka mod 2 <> 0)? Betul. Program
masuk ke kondisi (angka > 10)? Tidak. Sehingga akan dijalankan ELSE terakhir: IF
(angka mod 2 <> 0) and (angka < 10)? Benar.
Untuk kode program yang sederhana seperti di atas, efeknya tidak akan terasa (karena
dieksekusi dengan sangat cepat). Beberapa programmer tidak keberatan mengorbankan
performa agar kode program mudah dibaca daripada menggunakan nested IF.

Pengertian Struktur Percabangan CASE dalam Pascal


Secara sederhana, struktur percabangan CASE mirip struktur IF THEN ELSE yang
berulang. Jika di dalam IF THEN ELSE kita memiliki format penulisan seperti berikut.
IF (kondisi1) THEN
(kode program 1)
ELSE IF (kondisi2) THEN
(kode program 2)
ELSE IF (kondisi3) THEN
(kode program 3)
Maka di struktur CASE, format penulisannya seperti berikut.
CASE (expression) OF
kondisi 1 : (kode program 1);
kondisi 2 : (kode program 2);
kondisi 3 : (kode program 3);
end;
Expression adalah ‘sesuatu’ yang akan diperiksa nilainya. Jika nilai dari expression ini
sama dengan kondisi 1, maka yang dijalankan adalah (kode program 1), jika sesuai dengan
kondisi 2, maka yang akan dijalankan adalah (kode program 2), dan seterusnya. Contoh
kode program Pascal untuk Struktur CASE.
program struktur_case;
uses wincrt;
var
bulan: integer;
begin
clrscr;
write('Masukkan angka untuk bulan (1-12): ');
readln(bulan);

case (bulan) of
1 : writeln('Muharam');
2 : writeln('Shafar');
3 : writeln('Rabiul Awwal');
4 : writeln('Rabiul Akhir');
5 : writeln('Jumadil Awwal');
6 : writeln('Jumadil Akhir');
7 : writeln('Rajab');
8 : writeln('Syaban');
9 : writeln('Ramadhan');
10 : writeln('Syawal');
11 : writeln('Dzulqaidah');
12 : writeln('Dzulhijjah');
end;

readln;
end.

Terlihat lebih rapi dan lebih singkat. Pada 8 baris pertama kode program, sama persis
dengan sebelumnya. Anda membuat variabel bulan, kemudian meminta masukan dari
pengguna. Pada baris ke 10, terdapat perintah case (bulan) of, inilah awal dari blok CASE.
Perhatikan di baris ke 23 terdapat perintah end; yang menandakan akhir dari blok CASE.
Perintah case (bulan) of artinya Anda memeriksa apakah nilai dari dari variabel bulan
sesuai dengan beberapa kondisi. Kondisi ini ditulis sepanjang blok CASE, dengan format :
kondisi1 : kode program 1;
kondisi2 : kode program 2;
kondisi3 : kode program 3;
dst...
Karena saya ingin memeriksa nilai bulan dari 1 – 12, maka penulisannya sebagai berikut:
1 : writeln('Muharam');
2 : writeln('Shafar');
3 : writeln('Rabiul Awwal');
4 : writeln('Rabiul Akhir’);
5 : writeln('Jumadil Awwal');
6 : writeln('Jumadil Akhir');
7 : writeln('Rajab');
8 : writeln('Syaban');
9 : writeln('Ramadhan');
10 : writeln('Syawal');
11 : writeln('Dzulqaidah');
12 : writeln('Dzulhijjah');
Jika nilai variabel bulan berisi angka 9, maka jalankan perintah writeln(‘Ramadhan’),
jika nilai variabel bulan adalah 12, maka jalankan perintah writeln(‘Dzulhijjah’).

Pengertian Tipe Data Array Pascal


Tipe data array adalah tipe data bentukan yang terdiri dari kumpulan tipe data lain. Anda
dapat membuat 10 variabel yang terdiri dari nama1, nama2, nama3, dan seterusnya, namun
akan lebih efisien jika variabel nama-nama tersebut disimpan ke dalam array.
Sebagai contoh, perhatikan kode program berikut ini.
program tipe_array;
uses wincrt;
var
nilai1, nilai2, nilai3, nilai4: integer;
begin
clrscr;
nilai1:= 33;
nilai2:= 73;
nilai3:= 97;
nilai4:= 99;

writeln('nilai1: ',nilai1);
writeln('nilai2: ',nilai2);
writeln('nilai3: ',nilai3);
writeln('nilai4: ',nilai4);

readln;
end.

Anda membuat empat variabel: nilai1, nilai2, nilai3 dan nilai4. Keempat variabel ini
bertipe integer. Tetapi jika Anda ingin menyimpan lebih dari empat nilai, bagaimana jika
10 atau 100 nilai? Tentu tidak efisien jika Anda harus membuat variabel nilai1, nilai2,
nilai3… sampai dengan nilai100. Untuk hal inilah tipe data array lebih cocok digunakan.

Cara menggunakan Tipe Data Array Pascal


Untuk membuat tipe data array di pascal, Anda harus menentukan seberapa banyak elemen
array yang ingin Anda buat. Elemen adalah sebutan untuk ‘anggota’ atau isi dari array.
Sebagai contoh, untuk membuat 10 elemen array bertipe integer Anda dapat menggunakan
kode berikut.
var
nilai: array[0..9] of integer;

Sekarang, variabel ‘nilai’ berisi array dengan 10 elemen bertipe integer. Perhatikan angka
0..9, ini berarti Anda membuat elemen array dari elemen 0, elemen 1, elemen 2, elemen 3,..
sampai elemen 9 (semua terdapat 10 elemen). Bagaimana cara mengakses element ini?
Anda dapat mengaksesnya melalui nomor index. Index adalah urutan elemen di dalam
array. Sebagai contoh, untuk mengakses element ke – 2, Anda dapat menulis: nilai[2].
Untuk mengakses elemen ke-6, Anda dapat menggunakan: nilai[6]. Berikut contoh kode
program pascal cara penggunaan tipe data array.
Anda membuat variabel ‘nilai’ sebagai array yang berisi 10 elemen integer. Di dalam
variabel ‘nilai’, indeks array dimulai dari 0 hingga 9, karena Anda menulisnya dengan
array[0..9] of integer. Jika Anda membuat 100 elemen array, Anda dapat menulis sebagai
array[0..99] of integer.
Walaupun Anda membuat 10 elemen, tetapi Anda tidak harus mengisi semua element ini.
Pada contoh tersebut, Anda hanya mengisi empat elemen. Bagaimana dengan elemen
lainnya? Pascal menggunakan nilai bawaan (default) pascal, biasanya berisi angka 0 untuk
tipe data integer. Selain itu, Anda juga tidak harus mengisinya secara berurutan. Anda
dapat mengisi elemen-elemen array ini secara acak, selama masih dalam batas yang
ditetapkan. Berikut contohnya.
Anda dapat mengisi elemen secara acak dan menampilkan elemen nilai[1] dan nilai[7]
yang tidak diisi dengan nilai. Hasilnya? pascal akan menggunakan nilai default: 0.

Bagaimana jika Anda melewati batas elemen array? Misalnya Anda mengakses elemen ke
10? Pascal akan mengeluarkan error: Range check error while evaluating constants.

Latihan 4.....
1. Anda tidak hanya dapat membuat array bertipe integer saja, tapi dapat menggunakan
tipe lain seperti real, char atau string. Rancanglah kode program berikut. Jelaskan!
Pembahasan :
Anda dapat membuat variabel kata dengan array berjumlah 10 elemen yang masing-masing
isinya adalah string[20]. Anda menggunakan penomoran array mulai dari 20 hingga 29.
Hal ini tidak menjadi masalah, selama Anda mengakses dengan indeks yang sesuai. Berikut
hasil program tersebut.

2. Buatlah array 1 dimensi, dengan setiap elemen array terdiri satu ‘lapis’, seperti berikut.
program tipe_array;
uses wincrt;
var
nilai: array[0..2] of integer;
begin
clrscr;

nilai[0]:= 10;
nilai[1]:= 20;
nilai[2]:= 30;
writeln('nilai1: ',nilai[0]);
writeln('nilai2: ',nilai[1]);
writeln('nilai3: ',nilai[2]);

readln;
end.
Pembahasan :
Maksud dari 1 dimensi disini adalah, setiap elemen array dibahas dengan 1 indeks, seperti
nilai[0], nilai[1] dan nilai[2].

3. Buatlah kode program menggunakan array 2 dimensi membuat struktur matriks


berikut.
program tipe_array;
uses wincrt;
var
nilai: array[0..1,0..1] of integer;
begin
clrscr;

nilai[0,0]:= 1;
nilai[0,1]:= 2;
nilai[1,0]:= 4;
nilai[1,1]:= 5;

write (nilai[0,0],' ');


writeln(nilai[0,1]);
write (nilai[1,0],' ');
writeln(nilai[1,1]);

readln;
end.
Berikan penjelasannya.
Pembahasan :
Anda membatasi dengan element 2×2 (perhatikan cara pendeklarasikan variabel ‘nilai’).
Ketika menampilkan hasil array, Anda dapat menyusunnya agar sesuai dengan bentuk
matriks 2×2. Hal ini didapat dengan perpaduan perintah write dan writeln.

4. Secara teori, dimensi untuk array di dalam pascal tidak terbatas. Anda dapat membuat
array 3 dimensi. Hal ini diperlukan jika koordinat cartesius terdiri dari sumbu x, sumbu y,
dan sumbu z. Buatlah array 3 dimensi 2×3×4. Berikan penjelasannya!
Pembahasan :
program tipe_array;
uses wincrt;
var
nilai: array[0..1,0..2,0..3] of integer;
begin
clrscr;

nilai[0,0,2]:= 777;
writeln(nilai[0,0,2]);

nilai[1,2,3]:= 999;
writeln(nilai[1,2,3]);

readln;
end.

UJI KOMPETENSI MODUL 4


PILIHAN GANDA
Pilihlah jawaban yang Anda anggap paling benar

1. Manakah yang boleh digunakan sebagai variable?


A. Baris_7 B. 25Baris C. Tgl.Lahir D. Rata-Rata E. Tempat&Tanggal

2. Cara yang benar untuk mendeklarasikan string adalah …


A. var a : string of Char; B. var a: string[1…255];
C. var a: string[0..255]; D. var a: string[255]; E. var a: string[255] of Char

3. Perintah manakah yang mendeklarasikan sebuah tipe enumerasi?


A. type a = Integer; B. type a = 1..540; C. type a = (baik, sedang, jelek);
D. type a = set of (baik, sedang, jelek); E. type a = [baik, sedang, jelek];

4. Bagaimana cara mendefinisikan pointer yang menunjukkan data bertipe integer?


A. pointer of Integer B. @integer C. ^integer D. Integer^ E. *integer
5. Deklarasi prosedur manakah yang tidak dibenarkan?
A. procedure Hapus; B. procedure Hapus(Nama : String);
C. procedure Hapus(var Nama : String); D. procedure Hapus(Ukuran:Integer; var
Data); E. procedure Hapus(Ukuran : Integer):Boolean;

6. Deklarasi fungsi manakah yang salah?


A. function Density(X:Real):Real;
B. function Density(X:Real):var;
C. function Density(X:Real):Pointer;
D. function Density(X:Real):String;
E. function Density(var X):Boolean;

7. Manakah yang mendeklarasikan A sebagai konstanta bertipe (typed constant) dengan


tepat?
A. const A = 250; B. const B = 76;
A = B*10;
C. const A : Real = 365; D. const A = integer(230);
E. const B : integer = 35;
A = B*10;

8. Perintah mana yang tidak diperbolehkan dalam bahasa Pascal?


A. S := C + S; B. I:=Ord(C); C. Inc(R); D. I:=I*3+L*2; E. R:=I*3+4;

9. Pada bagian awal program di atas, setiap variable diberi nilai awal (misalnya I = 5, R =
2.50). dengan nilai-nilai awal tersebut berapakah hasil dari ekspresi I+L/R*I …
A. 60 B. 55 C. 75 D. 7 E. 2.4

10. Bila ekspresi pada soal sebelumnya diganti menjadi I+(L/R)*I berapakah hasil dari
ekspresi ini?
A. 60 B. 55 C. 75 D. 7 E. 2.4

11. Perintah manakah yang tidak valid dalam bahasa Pascal?


A. R :=Ord(C); B. L:=Ord(C); C. I:=Ord(S[l]); D. I:=Ord(S); E. C:=S[l];

12. Perintah mana yang tidak valid dalam bahasa Pascal?


A. R:=10; B. I:=42000; C. S:= #130; D. L :=65536; E. S:= #13; S:=S+#10;

13. Ekspresi atau perintah mana yang tidak diperbolehkan?


A. Dec(L,I); B. Pred(S[0]); C. Inc(C); D. Succ(R); E. Ord(I);

14. Ekspresi manakah yang diperbolehkan dalam bahasa Pascal tetapi tidak selalu bernilai
False?
A. W > 0 B. C = “ C. S<>” D. S[0] < 0 E. S[0] = #0

15. Ekspresi manakah yang tidak diperbolehkan dalam bahasa Pascal?


A. If I = R then writeln(R);
B. If R = I then writeln(R);
C. If I = Round(R) then writeln(R);
D. If I = 3 and R = 4.5 then writeln(R);
E. If R = Round(I/3) then writeln(R);

16. Ekspresi manakah yang tidak dapat digunakan sebagai syarat (kondisi) dalam perintah
If?
A. R = I and 5 B. not (I=5) C. L or I and 3 D. (R=I) and (L and 5 =4)
E. semua ekspresi dapat digunakan

17. Fungsi manakah yang dapat menghasilkan nilai bertipe integer atau real?
A. Sqrt B. Int C. Frac D. Sqr E. Salah semua

18. Pernyataan manakah yang salah?


A. Ord(True) bernilai – 1
B. Ord(False) bernilai 0
C. Bila C bertipe Char, maka Ord(C) bisa bernilai dari 0 sampai dengan 255
D. Ord(Succ(False)) adalah 1
E. Tidak ada pernyataan yang salah

19. Pernyataan manakah yang benar?


A. Bila W adalah variable bertipe Word, maka Abs(W) selalu bernilai sama dengan W
B. Bila I adalah variable bertipe integer, maka Abs(I) selalu bernilai sama dengan I
C. Bila R adalah variable bertipe Real, maka Abs(R) selalu bernilai sama dengan R
D. Bila R adalah variable bertipe Real, maka Round(R) selalu bernilai sama dengan Int(R)
E. Pernyataan di atas semua benar

20. Jika R adalah variable bertipe Real, maka nilai yang mungkin untuk Round(Frac(R)*10)
adalah …
A. bilangan bulat dari 1 sampai dengan 10
B. bilangan bulat dari 0 sampai dengan 10
C. bilangan bulat sari 0 sampai dengan 9
D. sembarang bilangan real dari 0 sampai dengan 9
E. sembarang bilangan real dari 0 sampai dengan 10

21. Dengan bantuan deklarasi berikut, tentukanlah pernyataan manakah yang benar?
A. ekspresi Pos (K,S) bernilai 1
B. ekspresi Pos (L,S) bernilai 1
C. ekspresi Copy(S, 3, Length(S) – 3)+ Copy(S, 1.2)
Menghasilkan string ‘TOKI 99 for Gold! Go’
D. perintah Insert(‘toki’, S, 4) menyebabkan S bernilai ‘Go toki 99 for Gold!’
E. perintah Insert(‘Medal’, S, Pos(‘Gold’,S}} menyebabkan S bernilai
‘Go TOKI 99 for Gold Medal!’

22. Apakah output program di bawah ini?

A. 5 – 3 B. 5 – 8 C. 6 – 3 D. 3 – 3 E. 36 – 8

23. Bagaimana keluaran program berikut?

A. prima genap B. Normal C. Prima genap D. Normal E. Prima Genap


Normal Prima Genap Tidak Normal

Gunakan program terlampir untuk menjawab soal-soal di bawah ini


24. Hasil keluaran dari program di atas adalah ….
A. 1 2 3 B. 3 5 3 C. 3 6 9 D. 1 3 6 E. 1 2 3
246 6 10 6 5 10 15 2 6 12 3 6 9
369 9 15 9 3 6 9 3 9 18 6 12 18

25. Bagaimana keluaran program di atas jika perintah pada baris ke –12 diganti menjadi :
Inc(A[I-1, j], A[j,I]);
A. 3 6 3 B. 3 6 9 C. 3 5 3 D. 1 3 6 E. Salah semua
5 10 15 5 10 15 5 10 15 2 6 12
369 3 6 9 3 6 9 3 9 18

Catatan : jawaban soal diberi garis bawah

URAIAN
Jawablah pertanyaan di bawah ini dengan singkat dan jelas!
1. Gunakan program berikut. Berapa besar royalti yang diterima?

Solusi :
Jalankan dengan menekan Alt+R atau klik menu Run>Run. Anda mendapatkan hasilnya
seperti berikut.

2. Program dengan Procedure untuk menghitung gerak jatuh buah mangga bermassa m kg
yang jatuh dari ketinggian h meter :
2h
a) waktu yang dibutuhkan mangga untuk mencapai tanah ( t  )
g

Solusi :

b) kecepatan sesaat mangga mencapai tanah v  2 gh


Berikan tafsiran terhadap kedua program di atas. Bagaimana hasilnya?
Solusi :

3. Pascal for Windows mencoba memecahkan soal gerak bola yang ditendang Ronaldo dan
berbentuk lintasan parabola dengan input Vo, , t dari keyboard dan sebuah konstanta
gravitasi g = 9.8 N/kg. Buatlah dua program Pascal dengan menggunakan CASE..OF
dan IF..THEN untuk memilih :

“1” Menghitung Xt, “2” Menghitung Yt, “3” Menghitung Vx, “4” Menghitung Vy, “5”
Menghitung Xmax, “6” Menghitung Ymax
Bantuan : X t  Vo . cos  ..t (jarak bola pada sumbu-x); Yt  Vo . sin  .t  12 .g.t 2 (jarak
bola pada sumbu-y); Vx  Vo . cos (kecepatan bola pada sumbu-x);
V . sin 2
2

V y  Vo . sin  .  g.t (kecepatan bola pada sumbu-y); X max  o (jarak terjauh


g
V . sin 
2

bola pada sumbu-x) dan Ymax  o (jarak terjauh bola pada sumbu-y)
2g
Solusi :
Berikut ini program gerak bola dengan menggunakan CASE ..OF.
PROGRAM GERAK_BOLA_WORDCUP2006;

USES
WinCrt;

CONST
g = 10; {dalam satuan N/kg}

VAR
Vo, a, t, Xt, Yt, Vx, Vy, Xmaks, Ymaks : real;
Pilih : char;

BEGIN
Writeln ('Pilihan Menu');
Writeln ('Pemrogram : John Tralala');
Writeln ('1. Menghitung Xt');
Writeln ('2. Menghitung Yt');
Writeln ('3. Menghitung Vx');
Writeln ('4. Menghitung Vy');
Writeln ('5. Menghitung Xmaks');
Writeln ('6. Menghitung Ymaks');
Writeln ('Tekan Sembarang Tombol Untuk Keluar');

BEGIN
Write ('Pilihan Anda = '); readln (pilih);

CASE pilih OF

'1' : Begin
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Write ('Waktu = '); readln (t);
Xt := Vo*cos(a*pi/180)*t; {ingat rumus X t  Vo . cos  ..t }
Writeln ('Jarak Bola Pada Sumbu-x = ',Xt:10:0, ' meter');
End;

'2':Begin
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Write ('Waktu = '); readln (t);
Yt := Vo*sin(a*pi/180)*t-0.5*g*t*t; {ingat rumus Yt  Vo . sin  .t  12 .g.t 2 }
Writeln ('Jarak Bola Pada Sumbu-y = ',Yt:10:0, ' meter');
End;

'3':BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Vx := Vo*cos(a*pi/180); {ingat rumus Vx  Vo . cos }
Writeln ('Kecepatan Bola Pada Sumbu-x = ',Vx:10:0, ' meter');
End;

'4':BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Write ('Waktu = '); readln (t);
Vy := Vo*sin(a*pi/180)-g*t; {ingat rumus V y  Vo . sin  .  g.t }
Writeln ('Jarak Bola Pada Sumbu-y = ',Vy:10:0, ' meter');
End;

'5':BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Vo . sin 2
2

Xmaks := (Vo*Vo*sin(2*a*pi/180))/2*g; {ingat rumus X max  }


g
Writeln ('Jarak Maksimum Bola Pada Sumbu-x =',Xmaks:10:0,' meter');
End;

'6':BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Vo . sin 
2

Ymaks:= (Vo*Vo*sin(a*pi/180)*sin(a*pi/180))/(2*g); {ingat rumus Ymax  }


2g
Writeln ('Jarak Maksimum Bola Pada Sumbu-y =',Ymaks:10:0,' meter');
End;
End;
End;
End.

Selanjutnya program gerak bola dengan menggunakan IF..THEN.


PROGRAM GERAK_BOLA_WORDCUP2006;

USES
WinCrt;

CONST
g = 10; {dalam satuan N/kg}

VAR
Vo, a, t, Xt, Yt, Vx, Vy, Xmaks, Ymaks : real;
Pilih : char;

BEGIN
Writeln ('Pilihan Menu');
Writeln ('Pemrogram : John Tralala');
Writeln ('1. Menghitung Xt');
Writeln ('2. Menghitung Yt');
Writeln ('3. Menghitung Vx');
Writeln ('4. Menghitung Vy');
Writeln ('5. Menghitung Xmaks');
Writeln ('6. Menghitung Ymaks');
Writeln ('Tekan Sembarang Tombol Untuk Keluar');

BEGIN
Write ('Pilihan Anda = '); readln (pilih);

IF pilih=’1’ THEN
Begin
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Write ('Waktu = '); readln (t);
Xt := Vo*cos(a*pi/180)*t; {ingat rumus X t  Vo . cos  ..t }
Writeln ('Jarak Bola Pada Sumbu-x = ',Xt:10:0, ' meter');
End;

IF pilih=’2’ THEN

Begin
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Write ('Waktu = '); readln (t);
Yt := Vo*sin(a*pi/180)*t-0.5*g*t*t; {ingat rumus Yt  Vo . sin  .t  12 .g.t 2 }
Writeln ('Jarak Bola Pada Sumbu-y = ',Yt:10:0, ' meter');
End;

IF pilih=’3’ THEN

BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Vx := Vo*cos(a*pi/180); {ingat rumus Vx  Vo . cos }
Writeln ('Kecepatan Bola Pada Sumbu-x = ',Vx:10:0, ' meter');
End;

IF pilih=’4’ THEN

BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
Write ('Waktu = '); readln (t);
Vy := Vo*sin(a*pi/180)-g*t; {ingat rumus V y  Vo . sin  .  g.t }
Writeln ('Jarak Bola Pada Sumbu-y = ',Vy:10:0, ' meter');
End;

IF pilih=’5’ THEN

BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
V . sin 2
2

Xmaks := (Vo*Vo*sin(2*a*pi/180))/2*g; {ingat rumus X max  o }


g
Writeln ('Jarak Maksimum Bola Pada Sumbu-x =',Xmaks:10:0,' meter');
End;
IF pilih=’6’ THEN
BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
V . sin 
2

Ymaks:= (Vo*Vo*sin(a*pi/180)*sin(a*pi/180))/(2*g); {ingat rumus Ymax  o }


2g
Writeln ('Jarak Maksimum Bola Pada Sumbu-y =',Ymaks:10:0,' meter');
End;
End;
End.

Jika Anda klik menu Run>Run, maka Anda mendapatkan hasil program sebagai berikut.
Perhatikan, perintah CASE .. OF dan IF .. THEN menampilkan hasil program yang sama
seperti di atas.

4. Sebuah program FOR-TO .. DO diberikan sebagai berikut. Bagaimana hasilnya?

Edit program tersebut coba Anda gunakan REPEAT-UNTIL dan WHILE-DO untuk
mendapatkan hasil yang sama.
Solusi :
Menggunakan REPEAT ..UNTIL

Menggunakan WHILE ..DO


Hasil dari ketiga program di atas (FOR..TO..DO, REPEAT..UNTIL, WHILE..DO) adalah
sebagai berikut.

Sebagai bahan selingan, Anda dapat membuat gambar segitiga siku-siku dengan
menggunakan simbol bintang (*) yang tersusun. Misalkan Anda menggunakan bintang
sebanyak 10 bintang, maka Anda dapat merakit program dengan menggunakan
Repeat..Until, For..to..do, dan While..Do. Perhatikan listing program di bawah ini.
Hasil eksekusi ketiga program di atas adalah seperti di bawah ini.
PSIKOMOTOR
1. Jelaskanlah kegunaan menu Help pada editor Pascal for windows di atas.
Pembahasan :
Pada menu Help terdapat submenu : Index, Topic search, Using help, Compiler directives,
ObjectWindows, Procedures and Functions, Reserved words, Standard units, Turbo Pascal
language dan Windows API.

Index, atau Shift+F1, untuk menampilkan bantuan berdasarkan Index tertentu


Topic search, atau Ctrl+F1, untuk menampilkan bantuan berdasarkan topik tertentu
Using help, untuk menampilkan cara menggunakan fungsi help
Compiler directives, untuk menampilkan index pada compiler directives
ObjectWindows, untuk menampilkan hirarki Object Windows
Procedures and Functions, untuk menampilkan koleksi procedure dan function yang
dapat Anda gunakan untuk menulis program.
Reserved words, untuk menampilkan index seluruh reserved word
Standard units, untuk menampilkan index seluruh unit standar
Turbo Pascal language, untuk menampilkan daftar seluruh elemen untuk membuat
program
Windows API, untuk menampilkan index constant, style, message, type, function dan
procedure yang menyusun Windows API
About Turbo Pascal, untuk menampilkan kotak dialog hak cipta dan versi Turbo Pascal
yang Anda gunakan.
2. Jelaskanlah langkah-langkah penggunaan menu Help tersebut.
Pembahasan :
Cara terampuh untuk menggunakan sub-menu tersebut adalah dengan mempraktikkannya.
Anda dapat mencoba sub-menu tersebut satu demi satu. Selanjutnya, lihat file tutorial.
3. Terangkan komponen-komponen menuliskan bahasa pemrograman Pascal
Pembahasan :
Judul program biasanya diawali dengan Program Menulis_Perhitungan;
Bagian deklarasi terdiri dari :
Uses …; {deklarasi uses}
Label …; {deklarasi label}
Const …; {deklarasi konstanta}
Type ….; {deklarasi tipe}
Var ……; {deklarasi variabel}
Procedure …; {deklarasi procedure}
Function ….; {deklarasi function}

Bagian utama program terdiri dari :


Begin
Sejumlah pernyataan
End.

4. Ketiklah program Pascal berikut ini.


Solusi :
Setelah Anda mengetik naskah program di atas, carilah kesalahan sintaksis (shyntax error)
dengan menekan Alt+C. Jika tidak ada kesalahan, eksekusilah program di atas dengan
menekan Alt+R.

5. Buatlah program sederhana seperti di atas untuk identitas diri Anda. Gunakan bahasa
Indonesia dan Bahasa Inggris untuk pernyataan di dalam kurung.
Solusi :
Anda dapat dengan mudah memodifikasi naskah program di atas dengan cara mengisi data
diri Anda termasuk nama, alamat, tempat dan tanggal lahir, pelajaran favorit dan lainnya.

Daftar Pustaka
Kadir, Abdul. 2012. Algoritma & Pemrograman Menggunakan Java. Yogyakarta : Andi
Offset
Kamus Besar Bahasa Indonesia. Struktur .http://kbbi.web.id/struktur
Wawan. 2015. Struktur Dasar Algoritma Pemrograman.
http://www.gatewan.com
https://masirwin.com
https://www.duniailkom.com

Anda mungkin juga menyukai