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.
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.
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.
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
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.
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).
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
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.
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:
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.
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
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.
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 eksekusinya tidak ada tampilan layar. Karena PASCAL tidak mampu melakukan
hitung mundur dengan perulangan FOR..TO DO, tetapi harus menggunakan perulangan
FOR DONWTO DO.
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.
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.
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.
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.
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.
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.
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.
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.
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.
(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.
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.
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.
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’).
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.
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.
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’).
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.
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].
nilai[0,0]:= 1;
nilai[0,1]:= 2;
nilai[1,0]:= 4;
nilai[1,1]:= 5;
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.
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
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
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
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!’
A. 5 – 3 B. 5 – 8 C. 6 – 3 D. 3 – 3 E. 36 – 8
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
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 :
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 to V .cos..t (jarak bola pada sumbu-x); Yto V .sin .t 12 .g.t2 (jarak
bola pada sumbu-y);Vx Vo .cos (kecepatan bola pada sumbu-x);
V 2 .sin 2
Vyo V .sin . g.t (kecepatan bola pada sumbu-y); X max o (jarak terjauh
g
V 2 .sin
bola pada sumbu-x) dan Y max 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 Y V .sin .t 1 .g.t 2 }
t o 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 Vy
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);
V 2 .sin 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;
'6':BEGIN
Write ('Kecepatan Awal = '); readln (Vo);
Write ('Sudut Elevasi = '); readln (a);
V 2 .sin
Ymaks:= (Vo*Vo*sin(a*pi/180)*sin(a*pi/180))/(2*g); {ingat rumus Ymax o
2g }
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 Y V .sin .t 1 .g.t 2 }
t o 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 Vy 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 2 .sin 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 2 .sin
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.
Edit program tersebut coba Anda gunakan REPEAT-UNTIL dan WHILE-DO untuk
mendapatkan hasil yang sama.
Solusi :
Menggunakan REPEAT ..UNTIL
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.
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