Senin, 06 Januari 2020


PROGRAM DAN BAHASA PEMROGRAMAN

Menurut definisi, Program Komputer adalah kumpulan instruksi yang digunakan untuk mengatur komputer agar melakukan suatu tindakan tertentu. Jadi komputer tidak akan bisa apa-apa jika tidak ada program di dalamnya. Sebuah komputer atau laptop secanggih apa pun spesifikasinya tanpa program sistem operasi maka tidak ada gunanya.
Demikian juga untuk lebih optimal kemanfaatannya perlu dipasang berbagai program seperti pengolah kata, pengolah angka, pengolah grafis, program video, musik hingga game. Semua program tersebut pada dasarnya memberikan instruksi kepada komputer sedemikian rupa sehingga bisa melakukan berbagai macam hal sesuai dengan fungsi program tersebut. Orang yang mengembangkan program disebut dengan programmer.
Komputer bekerja dengan operasi-operasi biner, yaitu mengolah data-data berupa barisan biner 0 dan 1 sehingga tidak mungkin ketika seorang programmer memerintahkan untuk menulis pesan langsung dimengerti oleh komputer. Oleh karena itu harus ada suatu bahasa yang penghubung agar komputer mengerti instruksi atau perintah yang diberikan. Bahasa penghubung inilah yang disebut dengan bahasa pemrograman.
Bahasa Pemrograman adalah suatu instruksi standar untuk memerintah komputer. Untuk menjadi sebuah program maka kode-kode yang sudah dituliskan dalam bahasa pemrograman diubah ke dalam bahasa mesin yang dimengerti oleh komputer dengan menggunakan interpreter atau compiler. Proses perubahan ini disebut dengan interprestasi atau kompilasi. Hasil kompilasi inilah yang menghasilkan program komputer.

Menurut kedekatannya dengan mesin komputer, bahasa pemrograman dibagi menjadi beberapa tingkatan diantaranya:
1. Bahasa Mesin
Bahasa mesin merupakan rangkaian instruksi yang terdiri dari kode biner, contohnya 0001110011. Bahasa ini menempati tingkatan yang paling rendah karena bahasa ini bisa langsung dieksekusi oleh processor, sehingga bahasa mesin sering kali digunakan untuk kompilasi oleh compiler pada bahasa pemrograman lain, yang lebih tinggi tingkatnya.
2.  Bahasa Tingkat Rendah
Bahasa tingkat rendah merupakan rangkaian instruksi menggunakan kode-kode singkat (kode mnemonic) contohnya bahasa Assembly.
3.  Bahasa Tingkat Menengah
Bahasa tingkat menengah merupakan rangkaian instruksi gabungan antara bahasa manusia dengan kode-kode simbolik, contohnya {,},?,<,>&&,$,dsb. Yang termasuk bahasa menengah yakni bahasa C.
4. Bahasa Tingkat Tinggi
Bahasa tingkat tinggi merupakan rangkaian instruksi yang menggunakan unsur kata-kata manusia sehingga lebih mudah untuk dimengerti contohnya begin, end, if, for, while, and, or dsb. Untuk bahasa ini diperlukan compiler untuk mengompilasi ke dalam bahasa mesin sehingga dimengerti komputer. Yang termasuk kategori ini adalah Pascal dan Basic.

Mengenal Bahasa Pascal
Dalam materi Pemrograman Dasar ini, digunakan bahasa Pemrograman Pascal. Mengapa Pascal? Seperti yang dijelaskan sebelumnya bahasa pemrograman Pascal, selanjutnya disingkat bahasa Pascal, adalah salah satu bahasa tingkat tinggi, yang menggunakan perintah-perintah sebagaimana bahasa sehari-hari.

Dalam Bahasa Pascal digunakan perintah-perintah seperti read, write, pernyataan if then, while do, repeat until, begin, end, dan sebagainya yang dimengerti oleh kebanyakan orang, sehingga menjadi bahasa Pascal mudah dipelajari, khususnya untuk mengenalkan pemrograman, melatih kemampuan algoritma dan pemecahan masalah.

Bahasa Pascal pertama kali dirancang oleh Profesor “Niklaus Wirth” dari Technical Uneversity di Zurich, Switzerland pada tahun 1971. Nama Pascal sendiri terinspirasi nama seorang matematikawan Perancis, Blaise Pascal yang pertama kali menciptakan mesin penghitung. Bahasa Pascal kala itu dikembangkan untuk memudahkan para mahasiswa dalam mempelajari pemrogaman secara sistematis

Pascal sempat menjadi bahasa pemrograman utama dalam pengembangan Apple Lisa, yakni cikal bakal sistem operasi Apple Macintosh, dan Apple pernah merilis sistem operasi Apple PascalPhotoshop versi pertama juga dibuat menggunakan bahasa Pascal.

Bahasa Pascal menerapkan konsep procedural dan structured programming yang baik, sehingga pas untuk belajar konsep programming. Perintah Pascal mirip dengan bahasa inggris sehari-hari seperti begin, end, write, dan read.

Mengenal Tools/Framework Pengembangan Program
Seperti yang telah disampaikan sebelumnya bahwa Pascal termasuk bahasa pemrograman tingkat tinggi sehingga dibutuhkan sebuah compiler atau tools pengembang yang berfungsi menterjemahkan bahasa kedalam bahasa yang dimengerti komputer.
Beberapa compiler Pascal diantaranya GNU Pascal, Free Pascal, Dev Pascal dan Turbo Pascal, dan Delphi. Dari beberapa compiler tersebut, untuk pembelajaran buku ini menggunakan FreePascal. FreePascal memiliki keunggulan yakni cocok digunakan untuk berbagai platform Sistem Operasi diantanya: DOS,Linux, Windows, FreeBSD, PalmOs dan masih banyak yang lain. Tools ini gratis (freeware) dan dapat didownload di www.freepascal.org. Selain sebagai compiler, kita bisa langsung menggunakan FreePascal sebagai editor, sehingga kita bisa membuat dan mengedit kode sekaligus mengkompilasi menjadi sebuah aplikasi.

Fitur Bahasa PASCAL
Pascal memiliki beberapa fitur yang membuatnya cocok untuk belajar pemrograman dan untuk membuat aplikasi komersil. Beberapa diantaranya adalah:
§  Tipe data bawaan: Pascal memiliki tipe data standar yang umum terdapat dalam bahasa pemrograman komputer seperti Integer, Real, Character, dan Boolean.
§  Tipe data bentukan: Pascal membolehkan kita untuk membuat tipe data bentukan yang didefinisikan sendiri.
§  Memiliki beragam struktur data: Pascal menyediakan beberapa struktur data seperti Array, Record, File dan Set.
§  Aturan tipe data yang ketat: Pascal membatasi penggunaan tipe data secara ketat. Kita hanya bisa menggunakan variabel untuk 1 tipe data saja dan variabel tersebut harus dideklarasikan terlebih dahulu.
§  Mendukung struktural programming: Bahasa Pascal dirancang dengan konsep pemrograman terstruktur yang mendukung sub program melalui fungsi dan prosedur
§  Sederhana dan expresif: Pascal banyak menggunakan perintah-perintah dalam bahasa inggris sederhana, sehingga mudah dipahami.
§  Mendukung pemrograman objek: Walaupun tidak banyak dibahas, tetapi Pascal juga mendukung pemrograman berbasis objek, terutama pada compiler versi terakhir.


STRUKTUR BAHASA PEMROGAMAN PASCAL

Struktur Dasar Kode Program Pascal
Pascal adalah bahasa pemrograman deklaratif dan terstruktur, yang artinya seluruh variabel, konstanta, fungsi, dan beberapa struktur pemrograman lain harus ‘diperkenalkan’ diawal kode program dan dalam urutan yang sudah ditentukan. Didalam pemrograman, ‘perkenalan’ ini dikenal dengan istilah ‘deklarasi’ (declarations).
Struktur kode program pascal bisa dipecah menjadi 2 bagian: bagian Deklarasi dan bagian Main Program, seperti berikut ini:
1
2
3
4
5
6
7
8
9
program nama_program;

   { bagian deklarasi }

begin

   { main program }

end.

Bagian Deklarasi terdiri dari beberapa jenis kode program, yakni:
§  Perintah Uses
§  Deklarasi Type
§  Deklarasi Konstanta (constant)
§  Deklarasi Variabel (variable)
§  Deklarasi Fungsi (function)
§  Deklarasi Prosedur (procedure)

Sedangkan Main Program nantinya akan berisi kode program utama. Penjelasan mengenai fungsi masing-masing deklarasi akan kita lihat sekilas, dan akan dibahas secara mendalam dalam tutorial terpisah.

Agar lebih mudah memahami fungsi dari masing-masing deklarasi tersebut, saya akan membuat kode program menghitung luas dan keliling segitiga. Anda tidak perlu memahami kode-kode yang ada karena kita memang belum membahasnya, silahkan perhatikan pada penulisan struktur saja.
Berikut contoh kode menghitung luas dan keliling segitiga menggunakan pascal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
program hitung_lingkaran;
  
uses
  crt;
  
type
  warna=(merah, kuning, biru);
  
const
  PI=3.14;
  
var
  jari2:integer=7;
  warna_lingkaran:warna=merah;
  
function luas_lingkaran:real;
begin
   luas_lingkaran:=PI*jari2*jari2;
end;
  
procedure kel_lingkaran(jari2:integer);
begin
   write('Keliling Lingkaran = ');
   writeln(PI*(jari2+jari2):4:2, ' cm');
end;
  
begin
  clrscr;
  writeln('==PROGRAM MENGHITUNG LUAS LINGKARAN==');
  writeln('==---------------------------------==');
  writeln('Diketahui: jari-jari lingkaran = ',jari2,' cm');
  writeln('Warna Lingkaran = ',warna_lingkaran);
  writeln('Luas Lingkaran = ',luas_lingkaran:4:2, ' cm');
  kel_lingkaran(jari2);
  readln;
end.


Kode program diatas cukup panjang, namun sekali lagi anda tidak perlu memahaminya. Saya akan membahas kode-kode diatas dalam tutorial pascal lainnya. Kali ini kita hanya fokus kepada struktur program. Berikut penjelasannya dari struktur diatas:


Penulisan Nama Program Pascal
Seperti biasa, baris pertama sebuah kode pascal dimulai dengan penulisan keyword program , kemudian diikuti dengan nama program.
Sebenarnya, anda tidak harus menulis kode ini. Penulisan nama program sepenuhnya opsional (boleh ditulis, boleh tidak). Silahkan coba hapus baris “program hitung_lingkaran;” dari kode diatas, hasilnya tetap bisa di-compile dan dijalankan.
Aturan penulisan nama program sama seperti aturan penulisan identifier yang kita bahas pada tutorial aturan dan cara penulisan kode program pascal.

Perintah Uses
Uses adalah cara bahasa pemrograman pascal untuk memasukkan kode-kode external yang dikenal dengan unit (atau library dalam bahasa pemrograman lain). Sebagai contoh, perintah clrscr yang saya gunakan pada program utama merupakan perintah yang ada pada unit crt. Terdapat berbagai unit yang bisa kita gunakan, seperti math, sysutils, printer, dan strutils.
Ketersediaan unit ini berbeda-beda untuk masing-masing aplikasi. Compiler Free Pascal memiliki unit yang lebih banyak dari pada Turbo Pascal karena masih aktif dikembangkan hingga sekarang.

Deklarasi Type
Pada bagian deklarasi Type, kita bisa membuat tipe data bentukan. Sebagai contoh, dalam kode diatas saya membuat tipe data warna, dimana tipe data ini hanya bisa diisi dengan nilai merah, kuning, atau biru.

Deklarasi Konstanta (constant)
Konstanta atau constant adalah sebuah ‘penampung’ yang nilainya bersifat tetap. Dalam contoh diatas, saya membuat konstanta PI dengan nilai 3.14.

Dalam penulisan angka, tanda ‘koma’ digunakan sebagai pemisah ribuan, sedangkan tanda ‘titik’ digunakan untuk pemisah desimal. Ini berlaku dalam hampir semua bahasa pemrograman komputer lainnya, seperti C, C++, PHP, dan Java

Deklarasi Variabel (variable)
Variabel atau variable adalah ‘penampung’ yang nilainya bisa berubah sepanjang alur program. Kita akan sering menggunakan variabel dalam pembuatan kode program. Pada contoh diatas saya membuat variabel jari2 yang diset bertipe data integer. Nilai jari2 juga langsung diisi dengan angka 7.

Deklarasi Fungsi (function)
Sebuah fungsi atau function dikenal juga sebagai subprogram, karena kita bisa memecah alur program yang panjang menjadi fungsi-fungsi yang saling terpisah. Berbeda dengan prosedur, fungsi akan mengembalikan nilai.
Dalam contoh diatas saya membuat function luas_lingkaran yang digunakan untuk menghitung luas lingkaran. Fungsi ini akan mengembalikan nilai akhir bertipe real.

Deklarasi Prosedur (procedure)
Pada dasarnya, prosedur atau procedure adalah fungsi yang tidak mengembalikan nilai. Prosedur adalah sesuatu yang unik di dalam pascal. Bahasa pemrograman lain umumnya tidak mengenal prosedur.
Dalam kode diatas saya membuat procedure kel_lingkaran untuk menghitung keliling lingkaran. Karena prosedur tidak mengembalikan nilai, maka saya langsung menampilkan hasilnya dengan writeln.


Main Program/ Bagian Pernyataan/Statement
Main program adalah tempat dimana kode program utama ditulis. Disinilah dilakukan pemanggilan fungsi atau prosedur (jika ada), serta pembuatan proses alur kerja program. Main program diawali dengan keyword begin dan diakhiri dengan end.

Pada contoh kode diatas, saya memulai main program dengan perintah clrscr. Perintah ini berasal dari unit crtClrscr merupakan singkatan dari clear screen, digunakan untuk
menghapus output dari kode program sebelumnya (membersihkan layar).

Agar anda bisa mengetahui fungsi clrscr, silahkan hapus kode ini dan jalankan program beberapa kali dari dalam aplikasi Free Pascal atau Turbo Pascal. Anda akan lihat bahwa output program akan ‘bertumpuk’ setiap kali kita menjalankan kode program.

Pada bagian ini dituliskan urutan-urutan instruksi yang perlu dieksekusi oleh program. Aturan penulisan;
1.  Bagian program inti diawali dengan Begin (tanpa diikuti tanda baca) dan diakhiri dengan End (diikuti tanda titik (.) )
2.  Dalam Pascal penggunaan huruf besar dan kecil tidak dipermasalahkan (tidak sensitive-case)
3.  Untuk setiap perintah atau pernyataan, diakhiri dengan titik koma (;), boleh ada lebih dari 1 pernyataan dalam tiap baris.

Contoh:
Pernyataan1;
Pernyataan2;
Boleh juga dituliskan
Pernyataan1;Pernyataan2;

Namun demikian agar penulisan lebih terstruktur dan mudah dalam menemukan adanya kesalahan, lebih baik satu pernyataan satu baris dan digunakan aturan indentasi sebagaimana ketika menyusun algoritma pada Semester 1.

4. Jika ada struktur percabangan (kondisi bersyarat) atau perulangan dengan lebih dari satu pernyataan, diawali dengan begin dan diakhiri dengan end dan titik koma (;)
Contoh:
If (kondisi) then
Begin
Pernyataan_If1;
Pernyataan_If2;
End;
Jika pernyataan dalam struktur hanya satu saja maka Begin dan End boleh dihilangkan
If (kondisi) then
Pernyataan_If1;

5.  Komentar dituliskan di antara tanda kurung { }
Contoh
Program Luas_lingkaran; {Program ini menghitung luas lingkaran}
uses crt;
varr : integer;
L : real;
Tulisan “Program ini menghitung luas lingkaran” tidak akan tercetak pada program yang sudah jadi, karena diletakkan di antara kurung { } maka ini hanya sebagai komentar untuk menerangkan bagian Judul mengenai apa tujuan program. Hal ini memudahkan orang lain untuk memahami atau mengedit program tersebut.


Perintah clrscr akan menghapus kode-kode diatasnya, sehingga tampilan output akan ‘bersih’.

Jika anda menggunakan Turbo Pascal 1.5 for Windows, perintah clrscr ditulis dengan uses wincrt, bukan uses crt.

Sebuah kode program pascal tidak harus menggunakan seluruh struktur diatas, contohnya kode program Hello World yang kita jalankan pada tutorial sebelumnya tidak menggunakan struktur ini sama sekali. Kita akan mempelajari lebih dalam mengenai masing-masing struktur ini dalam tutorial tersendiri.

Secara umum, struktur kode dari sebuah program komputer terdiri dari dua bagian utama yaitu bagian judul dan blok program. Sedangkan blok program terdiri dari bagian deklarasi dan pernyataan. Struktur kode program mirip atau dapat dikatakan sama denganstruktur algoritma, ada judul, deklarasi dan pernyataan (deskripsi). Yang membedakan hanya pada aturan penulisan, dimana dalam bahasa pemrograman, bahasa yang digunakan sudah baku dan detail, sehingga tidak menoleransi kesalahan-kesalahan kecil yang tidak sesuai dengan sintaksnya, meskipun hanya titik, koma, atau tanda petik saja.

Aturan pemberian nama identifer, dalam hal ini termasuk judul program adalah sebagai berikut.
1. Nama identifier harus dimulai dengan karakter huruf alfabet a-z atau A-Z.
2.  Setelah karakter pertama, dapat dilanjutkan dengan karakter alfanumerik (angka maupun huruf)
dan underscore (_).
3. Dalam penulisan identifier tidak boleh menggunakan karakter-karakter berikut ini.
~ ! @ # $ % ^ & * ( ) + ` - = { } [ ] : " ; ' <> ? , . / |
4.  Tidak boleh menuliskan identifier dengan nama yang sama pada kata kunci dari Pascal, seperti and, array, begin, case, const, div, do, downto, else, end, file, for, forward, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, then, to, type, until, var, while, with
5.  Jika ingin tetap digunakan, maka kata tersebut harus dirangkai dengan kata/karakter yang lain. Misal program_if, begin1.

Sebagai tambahan, dalam bahasa Pascal, penulisan write atau WRITE atau Write dianggap sama karena tidak case-sensitive seperti di Bahasa C. Demikian juga dengan nama identifier a atau A, luas atau Luas, Phi atau PHI dianggap sebagai identifier yang sama.
Untuk lebih jelasnya perhatikan contoh-contoh berikut.
Contoh 1
Program Pascal yang paling sederhana adalah sebagai berikut.
Program di atas hanya terdiri dari begin dan end saja, tapi dapat dijalankan oleh Pascal, tanpa ada
kesalahan. Namun demikian tidak ada output apapun dalam program ini.
Contoh 2
Program di atas meskipun tanpa judul dapat dijalankan oleh Pascal, di mana dalam program tersebut menampilkan isi dari variabel a, yang sudah dideklarasikan di awal. Tulisan di antara kurung { } adalah komentar yang tidak akan dieksekusi oleh program. Komentar ini bertujuan untuk memberikan informasi kepada pengguna mengenai kode program yang dituliskan.
Contoh 3
Program Menghitung Luas Segitiga

Kode program ini lebih lengkap, ada judul, bagian deklarasi, dan bagian pernyataan. Dari program
diatas maka dapat diketahui algoritma dalam bahasa natural sebagai berikut.
Algoritma LuasSegitiga
Persiapkan variable Luas,a,t bertipe real
Langkah-langkah
1. Meminta inputan nilai alas
2. Membaca nilai input dan menyimpan dalam variable a
3. Meminta inputan nilai tinggi
4. Membaca nilai input dan menyimpan dalam variable t
5. Melakukan perhitungan luas segitiga dengan rumus
½ ( a * t ), dan menyimpannya dalam variable Luas
6. Menampilkan hasil Luas

Berikut ini penjelasan kode program satu demi satu.
1. Judul Program, nama programnya adalah Luas_segitiga
2. Bagian Deklarasi, diantaranya
Uses crt; ini digunakan untuk menyiapkan layar di awal program.
Var Luas,a,t: real, artinya menyiapkan variabel-variabel seperti Luas, a, t sekaligus tipe datanya yaitu bilangan real.
3.  Bagian Pernyataan, terdiri dari beberapa urutan instruksi:
Begin Digunakan sebagai penanda akan memulai instruksi program
Clrscr, digunakan untuk membersihkan layar
Write(‘Masukan nilai alas=’); Meminta input nilai alas
Readln(a); Menyimpan inputan nilai dalam variable a
Writeln(‘Masukan nilai tinggi=’); Meminta input nilai tinggi
Readln(t); Menyimpan inputan nilai dalam variable t
Luas:=1/2 (a * t); Proses perhitungan Luas Segitiga
Writeln(‘Luas Segitiganya adalah=’, Luas); Menampilkan luas segitiga
End. Digunakan untuk mengakhiri instruksi program.



STANDAR INPUT OUTPUT

Dalam pemrograman, secara garis besar ada tiga tahap, yaitu INPUT, PROSES, dan OUTPUT. Ketiganya terangkai dalam bagian pernyataan dalam kode program. Standar masukan pada Pascal adalah keyboard, sedangkan standar output dalam Pascal adalah monitor. Artinya dalam Pascal umumnya semua input dimasukkan lewat keyboard hasilnya juga berupa output ditampilkan melalui layar monitor. Selain itu, dalam Pascal juga dikenal standar input output lain, yaitu dengan melakukan operasi pada file, artinya kita bisa membaca input dari file dan mencetak pada file. Standar Output.

Lihat kembali algoritma pada kasus1 Untuk menampilkan data ke layar digunakan instruksi Write dan Writeln.Apa bedanya?
Kode program 1 hanya menggunakan perintah write sedangkan kode program 2 menggunakan

perintah writeln. Hasilnya pada kode program satu menghaslkan output semua dalam satu baris, sedangkan kode program 2, satu perintah cetak ditulis pada satu baris. Apa kesimpulannya?
Ada beberapa perbedaan untuk instruksi write dan writeln:
1. Write digunakan untuk menampilkan data ke layar tanpa disertai pergantian baris baru, jadi data berikutnya akan menyambung pada baris yang sama
2. Writeln digunakan untuk menampilkan data ke layar kemudian mencetak baris baru.
Perintah write atau writeln dapat digunakan untuk menuliskan beberapa hal berikut:
a. Nilai
Contoh :
Write (5); {menuliskan nilai bilangan bulat 5}
Writeln(‘Halo apa kabar’); {menuliskan string ‘halo apa kabar’)
Write (‘a’); {menuliskan karakter ‘a’}
Writeln(3.14); {menuliskan bilangan real 3.14}
b. Variabel
Contoh:
A:=5;
Kata:=’Halo apa kabar’;
StatusLulus:=True;
Write(A); {menuliskan isi variabel A}
Writeln(Kata); {menuliskan isi variabel Kata}
Writeln(StatusLulus); {menuliskan isi variabel StatusLulus}
c. Operasi nilai-nilai atau variable
Contoh:
writeln(3+2); {menuliskan hasil jumlahan }
write(A*2); {menuliskan hasil perkalian A*2}
write('Aku'+’Bisa'); {menuliskan string ‘Aku’ diikuti ‘bisa’}
d. Gabungan ketiga bentuk di atas (nilai, variabel, dan operasinya)
Contoh:
Write(‘Luas segitiga= ‘, Luas) {menuliskan ‘Luas segitiga = ‘, diikuti nilai variabel luas}
Write(a,b); {menuliskan nilai variabel a diikuti nilai variabel b}
Writeln (Hasil penjumlahan adalah ‘, a+b);
Write (‘Luas segitiga dengan alas ‘, a, ‘dan tinggi ‘, t, ‘adalah ’, Luas);
{menuliskan string diikuti nilai a, kemudian string, nilai t, string, dan nilai Luas}


Standar Output
Perhatikan kembali berbagai macam bentuk output pada Kasus 2.
Input berupa bilangan 2, 3, dan 4 dibaca oleh program melalui perintah membaca input. Dalam Pascal perintah dasar membaca input adalah Read dan Readln. Apa bedanya? Kode-kode berikut adalah kode dari pembacaan ketiga inputan di atas.

Berdasarkan contoh kode program di atas, apa perbedaan antara perintah read dan readln?
1.  Read mengambil atau membaca nilai dari layar yang diinputkan melalui keyboard menyimpannya dalam variable dan kursor tetap pada baris input.
2.  Readln mengambil atau membaca nilai dari layar yang diinputkan melalui keyboard kemudian memerintahkan ganti baris (kursor turun pada baris berikutnya)
Contoh1
Program Latihan1;
Uses crt;
Var a: String[30];
b : Integer;
c: String[3];
Begin
Clrscr;
Write(‘Masukan Nama:’); {Menampilkan string ‘Masukkan nama:’}
Readln(a); {Menyimpan data dalam variabel a bertipe string}
Write(‘Masukan Umur:’); {Menampilkan string ‘Masukkan Umur’}
Readln(b); {Menyimpan data dalam variabel b bertipe Integer}
Write(‘Masukan Pendidikan Terakhir:’);
Readln(c); {Menyimpan data dalam variable c bertipe String}
Write(‘Nama Saya’,a, ‘Umur Saya’,b, ‘Pendidikan Terakhir:’,c);{Menampilkan hasil}
Readln;
End.

Maka ketika dijalankan akan muncul:

Mengatur format penulisan
Secara default, perintah write atau writeln menuliskan dengan rata kiri, namun kita juga bias menuliskan dengan rata kanan, dengan memberikan ruang yang lebih pada data yang akan dituliskan.
Contoh :
Write (nama:20); {nama adalah variabel bertipe string}
Write(tinggi_badan:10); {ringgi_badan adalah variabel dengan tipe integer}
Write(5/2:10); {menuliskan nilai 5/2 dengan diberikan ruang 10 karakter}
Khusus untuk penulisan bilangan real, dapat juga dituliskan format berapa angka di belakang koma. Misalkan sebagai berikut.
Write(Rerata:10:2)
Artinya nilai rerata dituliskan pada ruang den an 10 digit dengan dua angka di belakang koma.


KOMPILASI PROGRAM DAN PERBAIKAN KESALAHAN

Kompilasi Program Yaitu proses menerjemahkan kode program dalam bahasa pemrograman, ke bahasa mesin yang sehingga dapat dimengerti dan dijalankan oleh komputer. Proses kompilasi sendiri dibantu oleh translator yaitu program yang mengambil inputan sebuah program yang ditulis pada satu bahasa program ke bahasa yang lain.

Pada bahasa tingkat tinggi termasuk di dalamnya bahasa Pascal translatornya adalah Compiler, dimana salah satunya adalah Free Pascal. Dalam proses kompilasi, dilakukan proses pengecekan untuk mengetahui kebenaran dalam hal penulisan instruks, apakah sudah sesuai kaidah dan struktur penulisan Bahasa Pemrogrman tersebut atau belum. Jika belum, maka proses kompilasi tidak akan diteruskan hingga benar. Untuk melakukan kompilasi pada Compiler Free Pascal maka berikut langkah-langkahnya:
1.  Membuat File baru klik File->New File
2. Kemudian simpan data klik File->Save beri nama
3.  Setelah itu perhatikan pada menu bar terapat menu compile pilih Compile.
4.  Kemudian untuk menjalankan program maka pada menu bar pilih menu Run atau dengan menekan Ctrl + F9
Namun demikian meskipun dilihat dari kaidah (sintaks) sudah benar beldum berarti program yang dihasilkan sudah benar. Perlu dilihat juga apakah output yang dihasilkan sudah sesuai dengan yang diharapkan atau belum. Jika belum bisa jadi terjadi kesalahan di luar sintaks, seperti kesalahan logika (logical error) atau run-time error.

Memperbaiki Kesalahan
Dari penjelasan di atas ada beberapa tipe kesalahan yang mungkin bisa terjadi. Secara garis besar, kita dapat membedakan jenis kesalahan-kesalahan dalam pembuatan program sebagai berikut.
1. Syntax Error
Jenis error ini adalah jenis yang paling sering dijumpai, errornya program dikarenakan adanya penulisan perintah yang diketik tidak sesuai dengan aturan bahasa pemrogaman. Contohnya penulisan perintah tidak diakhiri dengan semicolon (;), lupa menyebutkan tipe data pada variabel, salah dalam penulisan identifer, salah penulisan dalam operator-operator perhitungan, pemberian tanda titik atau tanda petik, dan sebagainya. Meskipun sering muncul error jenis ini pada umumnya mudah untuk diatasi karena Compiler Message akan mendeteksi kesalahan pada baris ke berapa, biasanya kesalahan penulisan ada pada baris tersebut dan atau pada baris sebelum atau sesudahnya.
2. Run-Time Error
Runtime Error terjadi manakala program menuliskan kode untuk sesuatu yang tidak memungkinkan. Misalnya mengakses file yang tidak ada, terjadi kesalahan alokasi memori, atau bisa juga bukan karena penulisan program tapi karena tidak sengaja menghapus file penting aplikasi. Untuk error jenis ini dapat dilakukan pencegahan dengan memberikan validasi atau penanganan error (error handling atau exception) sehingga kesalahan tidak berakibat berhentinya program di tengah jalan.
3. Logical Error
Jenis Error ini cukup sulit untuk dilacak, karena biasanya tidak dituliskan kesalahan pada compiler massage, namun saat program dijalankan belum sesuai dengan yang kita harapkan. Untuk mengatasinya maka perlu dilakukan pengecekan secara runtut alur kerja program yang berkaitan.

Tugas

1.  Apa yang dimaksud dengan bahasa pemrograman?
2. Sebutkan fungsi tools/framework bahasa pemrogaman!
3.  Apakah kelebihan tools/framework Free Pascal dibanding yang lain?
4.  Sebutkan klasifikasi tingkatan bahasa pemrogaman, dan masing-masing perbedaan- nya?
5. Apakah yang dimaksud dengan struktur bahasa pemrograman?
6.  Sebutkan apa saja struktur bahasa pascal!
7. Sebutkan aturan penulisan masing-masing bagian pada struktur bahasa pascal!
8. Apa yang dimaksud dengan mengkompilasi program?
9.  Apakah yang di maskud dengan read dan readln ?
10. Apakah yang dimaskud dengan write dan writeln ?




VARIABEL, TIPE DATA, KONSTANTA, OPERATOR, DAN EKSPRESI

Variabel
Kalian masih ingat apakah arti variabel? Iya, variabel adalah suatu nama atau simbol untuk menyimpan sebuah nilai. Atau lebih tepatnya variabel adalah sebuah nama yang diberikan oleh programmer yang berfungsi sebagai tempat penyimpanan data, sehingga dapat dimanipulasi oleh program.

Seperti pada contoh pada source code di atas, Progam Biodata diperlukan variabel nama, alamat dan umur. Pada program menghitung volume diperlukan variabel r,t, V yang mewakili jari-jari, tinggi, dan volume tabung. Sedangkan pada Program UAN diperlukan variabel NilaiMat, NilaiIngg, NilaiInd, rerata, dan stsLulus.

Variabel ini ditentukan sesuai dengan kebutuhan dari solusi permasalahan. Karena Volume tabung adalah Volume = pr2t, maka tentu kita membutuhkan variabel untuk mewakili Volume, jari-jari dan tinggi, dan satu lagi adalah p sebagai konstanta. Jadi ada 3 variabel dan 1 konstanta. Demikian juga dengan kelulusan, karena tergantung dari nilai ketiga mata pelajaran, maka variabel-variabel yang dibentuk pun menyesuaikan.

Jenis nilai yang disimpan variabel tentu berbeda-beda sesuai dengan kebutuhan, ingat kembali materi pada semester 1. Variabel nama dan alamat tentu menyimpan nilai berupa susunan huruf, atau yang dulu dikenalkan sebagai string (dalam Pascal disebut juga string), Volume, r, dan t menyimpan nilai bilangan real, sedangkan variabel nilaiMat, nilaiInd menyimpan nilai bilangan bulat (mungkin juga bilangan real, sesuai kebutuhan). Jenis-jenis data inilah yang disebut sebagai TIPE DATA. Oleh karena itu dalam mendeklarasikan variabel harus didefinisikan juga tipe data yang akan digunakan. Hal ini sekaligus digunakan program untuk menentukan besarnya memori sebagai tempat penyimpanan variabel tersebut.

Sintaks Penulisan Variabel Berikut ini adalah sintaks pendeklarasian variabel.
var nama_variabel:tipe_data;

Jika ada beberapa variabel dengan tipe data sama, sintaksnya adalah:
var namaVar1, namaVar2, namaVar3:tipe_data;

Jika ada beberapa variabel dengan tipe data berbeda-beda sintaksnya adalah:
var namaVar1:tipe_data1;
namavar2:tipe_data2;
namaVar3:tipe_data3;

Pemberian Nama Variabel
Pemberian nama variabel sebagaimana pemberian nama identifier seperti yang dijelaskan pada Bab 1, sebagai berikut.
1.  Nama identifier harus dimulai dengan karakter huruf alfabet a-z atau A-Z.
2.  Setelah karakter pertama, dapat dilanjutkan dengan karakter alfanumerik (angka maupun huruf) dan underscore (_).
3. Dalam penulisan identifier tidak boleh menggunakan karakter-karakter berikut ini. ~ ! @ # $ % ^ & * ( ) + ` - = { } [ ] : " ; ' <> ? , . / |
4.  Tidak boleh menuliskan identifier dengan nama yang sama pada kata kunci dari Pascal, seperti and, array, begin, case, const, div, do, downto, else, end, file, for, forward, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, then, to, type, until, var, while, with
5.  Jika ingin tetap digunakan, maka kata tersebut harus dirangkai dengan kata/karakter yang lain. Misal program_if, begin1.

Aturan tersebut juga berlaku untuk pemberian nama konstanta, tipe data buatan, dan sub program (procedure dan function).

Berikut ini contoh pemberian nama variabel yang benar.
Jari_jari, jari2, Volume_Balok, LuasPersegi, Luas_segi3, record3.

Berikut ini contoh nama variabel yang salah
Jari^2, jari-jari, Volume Balok, p*l, 2jari, alam@t

Konstanta
Variabel dapat diturunkan dari kebutuhan input, output, dan segala sesuatu yang dilibatkan dalam pengolahan input menjadi output. Pemberian nilai variabel dapat dilakukan melalui perintah baca (input) maupun dari pernyataan pemberian nilai (assignment), dengan demikian nilai variable dapat berubah-ubah selama proses dijalankan. Jika diperlukan suatu nilai yang tetap, maka dibutuhkan konstanta.

Dalam hal ini, sebagai contoh karena besaran nilai p adalah tetap, tidak berubahselama perhitungan maka p yang diwakili dengan variabel Phi dideklarasikan sebagai konstanta. Jadi konstanta adalah variabel yang mempunyai nilai tunggal, dimana nilai tunggal tersebut tidak dapat berubah ketika program sudah dieksekusi. Sebagaimana juga variabel constants mempunyai tipe data tertentu yang menyesuaiakan nilai yang diberikan dalam deklarasi konstanta.

Sintaks deklarasi penggunaan konstanta adalah sebagai berikut :
ConstNama_konstanta = nilai_konstanta;
Contoh deklarasi konstanta pada beberapa tipe :
ConstA = 100;
ConstPi = 3.14;
ConstOperator = ‘+’;
ConstPesan = ‘Selamat Datang’;

Tipe Data
Tipe data merupakan klasifikasi jenis data dari variabel atau object yang terdapat dalam program computer. Jenis data yang digunakan dalam variabel merupakan bagian penting dalam pengkodean pemrograman computer. Ketepatan pemilihan data pada variabel atau konstanta akan sangat menentukan pemakain sumber daya komputer (terutama memori komputer). Sehingga dalam pemilihan tipe data yang akan digunakan dalam variabel dan konstanta akan mempengaruhi efesiensi dan kinerja dari program tersebut.
Secara garis besar tipe data dalam Pascal dibagi menjadi 3 kategori, yaitu tipe data sederhana (tunggal), Tipe data pointer dan tipe data terstruktur (stuctured data). Masing-masing kategori dapat dibagi lagi menjadi beberapa jenis lagi seperti pada Gambar 2.1.
1.  Tipe Data Sederhana
Tipe data sederhana merupakan tipe data paling dasar yang terdapat dalam pascal. Tipe data ini mewakili satu objek yaitu hanya satu nilai yang dapat disimpan dalam tipe data ini sehingga disebut juga tipe data tunggal. Tipe data sederhana dibagi menjadi dua yaitu tipe data standar dan User Defined.
a)  Standar, merupakan tipe data yang umum dijumpai dalam berbagai bahasa pemrograman. Tipe data standar meliputi integer, real, character dan boolean.
§  Integer
Tipe data integer merupakan tipe data berupa bilangan bulat. Tipe data ini cocok untuk variabel-variabel seperti: jumlah anak, bulan, tahun, dan sebagainya. Berat badan, tinggi, suhu, panjang, lebar, nominal uang dapat juga dimasukkan dalam tipe data ini, meskipun dapat juga dimasukkan ke dalam tipe data lain seperti bilangan real.
Dalam bahasa Pemrograman, terkait dengan penggunaan memori untuk menyimpan variabel, maka tipe data integer, dibagi menjadi beberapa kelas sesuai dengan kebutuhan. Sebagai contoh untuk variabel jumlah anak, maka kita dapat memperkirakan batasan berapa maksimalnya. Jumlah anak biasanya tidak leboh dari 10, maka dipilih tipe data integer dengan jangkauan yang kecil, yaitu byte. Sedangkan untuk nominal uang, karena tidak mungkin bernilai negatif, dan jangkaunnya yang tinggi (bisa mencapai ratusan juta atau milyar) bisa digunakan tipe data cardinal, dan sebagainya. Hal ini penting untuk diperhatikan agar program kita lebih efisien.

Tabel jenis-jenis tipe data integer dapat dilihat pada Tabel berikut.





Gambar. Macam-macam tipe data dalam Pascal

Penulisan deklarasi dengan tipe data integer adalah sebagai berikut :
var nama_variabel : integer; atau var nama_variabel : byte;
atau var nama_var1, nama_var2,nama_var3:integer;

§  Real
Tipe data real merupakan tipe data yang berisi bilangan yang bisa memuat angka di belakang koma. Berbeda dengan integer yang hanya menyimpan bilangan bulat. Dalam tipe data real nilai yang tersimpan dapat berupa bilangan desimal. Untuk mengidentifikasi variabel dengan tipe data real, dapat dilihat dari operasi yang dibutuhkan dalam proses perhitungan. Jika variabel tersebut diperoleh dari operasi dari bilngan lain bertipe data real maka tipe datanya juga real. Sebagai contoh Luas lingkaran, volume tabung dan kerucut termasuk bertipe data real karena melibatkan perkalian dengan Phi 3.14 sehingga hasilnya pasti ada angka di belakang koma. Selain itu adanya operasi bagi (‘/’) juga menghasilkan bilangan real. Sebagai contoh Luas segitiga = (alas*tinggi)/2 termasuk mempunyai tipe data real, demikian juga rata-rata, suhu konversi dalam Reamur dan Farenheit, karena melibatkan operasi pembagian. Selain berdasarkan operasi, variabel dengan tipe data bilangan real tergantung kebutuhan. Misalkan menghitung tinggi badan. Kita bisa melakukan pembulatan tanpa koma sehingga tinggi badan bisa kita masukkan tipe data integer. Jika ingin lebih teliti, menggunakan koma, bisa menggunakan tipe data real. Sebagaimana pada tipe data integer, tipe data bilangan real ini dapat dibagi menjadi beberapa kelas sesuai dengan jangkauannya seperti pada Tabel 2.2.

Sedangkan penulisan deklarasi variabel dengan tipe data real adalah sebagai berikut.
var nama_variabel : real; atau var nama_variabel : double;
atau var nama_var1, nama_var2,nama_var3:real;

§  Character
Tipe data character merupakan tipe data yang menyimpan karakter yang berupa angka maupun huruf. Tipe data character dalam pascal meliputi char dan string. Tipe data char hanya meyimpan 1 karakter saja. Variabel yang cocok untuk tipe data karakter adalah variabel yang nilainya hanya terdiri dari satu karakter saja, contoh: JenisKelamin (nilainya bisa diwakili ‘L’ untuk laki-laki atau ‘P’ untuk perempuan), Pilihan yang bernilai iya dan tidak (bisa diwakili dengan ‘Y’ atau ‘N’), dan lain-lain.

§  String
Tipe data string merupakan susunan dari karakter-karakter dengan batas maksimum 255 karakter, tipe data string digunakan untuk menyimpan data text, misal nama, alamat dan sebagainya. Penulisan deklarasi variaebl dengan tipe data characterdan string adalah sebagai berikut :
var nama_variabel : char;
atau
var nama_variabel : string[batasMaksimal];
Keterangan: batasMaksimal diganti dengan banyaknya karakter yang maksimal dapat ditampung oleh variabel tersebut.
Contoh:
var Gender:char;
var pilihan:char;
var nama:string[20];
var alamat:string [50];

§  Boolean
Tipe data Boolean merupakan tipe data yang hanya mempunyai dua nilai yaitu true atau false. Tipe data ini biasanya digunakan variabel yang hanya mempunyai nilai benar atau salah saja. Misalkan statusLulus, bisa bernilai True atau False; remidi, bias bernilai true atau false, Menikah, bisa bernilai true atau false, dan sebagainya. Penulisan deklarasi variabel dengan tipe data ini adalah ebagai berikut.
Var nama_variabel:boolean;

b)  User defined
Tipe data ini merupakan tipe data yang dibuat oleh sang programmer. Jadi setiap programmer dapat membuat tipe data baru yang dibutuhkannya. User defined meliputi enumerated dan subrange.
§  Enumerated
Tipe data enumerated merupakan tipe data yang didefinisikan oleh programmer. Hal ini memungkinkan programmer untuk membuat tipe datanya sendiri, yang terdiri dari kumpulan symbol. Contoh penulisan code program tipe data enumerated adalah sebagai berikut:
type hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
var nama_hari : hari;
Dari contoh diatas, baris pertama menunjukkan pembuatan tipe data baru yaitu hari yang berisi nama-nama hari, kemudian di baris kedua menunjukkan deklarasi penggunaan tipe data yang telah dibuat tadi.

§  Subrange
Tipe data subrange merupakan tipe data yang memungkinkan programmer untuk
mendefinisikan beberapa nilai dari tipe data tertentu. Misalkan seorang programmer ingin membuat tipe data nilai yang dimana tipe data ini berisi bilangan integer dari 1 sampai 10.
Contoh penulisan code program tipe data enumerated adalah sebagai berikut:
type nilai = 1..10;
var nilai_mtk : nilai;
Dari contoh diatas, baris pertama merupakan tipe data baru yang berisi bilangan integer dari satu sampai 10. Berikut beberapa contoh lain untuk tipe data subrange :
Positif = 1..32500;
Skor = 0.00..4.00;
Abjad = ‘Z’..’A’;
Range = ‘1’..9;
Count = -15..15;

2.  Tipe Data Pointer
Sama seperti tipe data sederhana, pointer merupakan tipe data yang dapat menyimpan satu nilai saja. Bedanya adalah, sesuai dengan namanya tipe data ini berfungsi menunjuk, yaitu alamat memori yang digunakan suatu variabel dengan tipe data tertentu. Misalkan a adalah variable dengan tipe data integer. Variabel point adalah variabel dengan tipe data pointer dari integer. Ketika variabel point diberi nilai dengan alamat a (alamat memori a), maka kita bisa mengubah isi a melalui variabel point tersebut dengan langsung mengakses ke memori tanpa melalui variable a. Tipe data ini sangat berguna untuk membangun suatu program dengan data yang dinamis. Lebih jelasnya akan dipelajari di kelas XI nanti.

3.  Tipe Data Terstruktur
Berbeda dengan tipe data sederhana dan pointer, yang hanya dapat menyimpan satu nilai saja, tipe data terstruktur dapat menyimpan beberapa nilai dalam satu variabel. Tipe data terstruktur adalah tipe data yang terdiri dari data-data tunggal, yang diorganisasi oleh suatu tipe data terstruktur. Sebagai contoh, terdapat data mengenai nilai ulangan 20 anak, apakah kita harus membuat 20 variabel untuk menyimpan masing-masing nilai tersebut? Tentu ini akan menjadikan program komputer menjadi tidak efisien. Mungkinkah kita bisa mengumpulkan semua variable tersebut dalam satu wadah? Iya, bisa yaitu menggunakan tipe data terstruktur. Inilah pentingnya data terstruktur dalam algoritma atau pemrograman. Berikut ini jenis-jenis tipe data terstruktur.
a)  Array
Array dapat diartikan sebagai larik, atau barisan. Array digunakan untuk menyimpan banyak data dengan tipe data yang sama. setiap elemen diakses melalui indeksnya. Biasanya indeks array bertipe integer dimulai dari 0 (nol). Array dapat berupa 1 dimensi (membentuk 1 garis lurus), 2 dimensi (matriks) atau lebih. Bentuk deklarasinya adalah:Sebagai contoh, dalam sebuah algoritma diberikan input sejumlah data ulangan anak, misalkan 40 anak. Jika untuk menyimpan data itu salah satu alternatifnya adalah memberikan variabel Nilai1, Nilai2, dan seterusnya, hingga Nilai40. Bagaimana jika 100 anak? Maka cara ini sangatlah tidak efisien. Data seperti ini dapat disimpan dalam satu wadah yang disebut dengan

Berikut deklarasi variabel dengan tipe data array pada Pascal.
Typenama_array : Array[nilai array] of tipe_data;
Contoh :
Typenilai : Array[1..40] of integer;

Struktur data adalah cara pengaturan data agar dapat disimpan memori komputer secara efisien. Tujuannya supaya lebih mudah/efisien dalam pengaksesan/pemrosesan data tersebut.

Struktur data dibagi menjadi 2 yaitu :
Static                          data tidak dapat dihapus pada saat program dijalankan
Dinamic                      data dapat dihapus pada saat program dijalankan

Index Array                digunakan untuk mengakses element array.
Element Array           digunakan untuk menyimpan data. (Elemen array tidak dapat dihapus saat
                                    runtime.)

Sifat-sifat ARRAY adalah sebagai berikut :
1)  Kumpulan data bertipe sama yang menggunakan nama yang sama.
2)  Sejumlah variabel dapat memakai nama yang sama.
3)  Antara satu variabel dengan variabel lain didalam array dibedakan berdasarkan subcript.
4) Subcript adalah berupa bilangan di dalam kurung siku [ ].
5) Melalui subcript elemen array dapat diakses.
6) Elemen array tidak lain adalah masing-masing variabel di dalam array.

Kekurangan-kekurangan dalam penggunaan array:
Kekurangan Array adalah semua tipenya harus sama / tipe array harus homogen, misalnya integer semua atau string semua, tidak bisa beda-beda data dalam satu array, indeks array yang kosong tetap memiliki porsi memori yang sama sehingga tidak efesien. Penggunaan array statik secara repetisi/pengulangan dalam suatu program tidak efisien untuk memory dan makan banyak waktu komputasi.

Array Berdimensi Satu biasa disebut vektor
Array Berdimensi Dua Sering kali di gambarkan/di analogikan sebagai sebuah matriks.
 

b)  Record
Jika Array hanya mampu menyimpan sejumlah data yang bertipe sama, Record, biasa menampung data-data dengan tipe yang berbeda. Sebagai contoh data seorang siswa, bias terdiri dari Nama, Nomor Induk Siswa, Alamat, Tempat Lahir, Jenis Kelamin, Kelas Umur. Agar data tersebut menjadi satu kesatuan informasi maka perlu suatu wadah untuk menampung tipe data seperti itu, yaitu RECORD. Berikut deklarasi tipe data record dalam pascal :
Typenama_record = record
variabel_1 : tipe_data_1;
variabel_2 : tipe_data_2;
….
variabel_n : tipe_data_n;
end;
Contoh:
Typebuku = record
judul :string[30];
tahun_terbit = integer;
pengarang = string[30];
end;

c)  File
Dalam pemrograman pascal terdapat tipe data file, dimana data input dan output dari suatu program dapat disimpan dalam bentuk file.txt. Selain menyimpan pascal dapat juga membaca dan mengedit file.txt tersebut. Sebagai contoh kita ingin memproses suatu nilai ulangan dari 20 anak yan telah tersimpan dengan format text. Tentunya sangat tidak efisien jika data harus diinput satu persatu. Agar data yang sudah ada dapa terbaca dalam pascal maka kita perlu tipe data file. Penjelasan mengenai penggunaan tipe data ini dibahas pada pembahasan berikutnya.

Berikut ini contoh bagaimana menentukan variabel dan tipe data dalam suatu permasalahan.
Contoh 1.
Budi seorang programmer di SMP Nusantara akan membuat program untuk menampilkan data nilai siswa, dimana data yang akan ditampilkan meliputi : nomor induk siswa, nama siswa, nilai matematika, nilai bahasa Indonesia, nilai bahasa inggris dan rata-rata nilai. Dimana data yang diinputkan mempunyai peraturan yaitu
1) Nomor induk siswa terdiri dari 6 karakter,
2) Nama siswa maksimal 30 karakter,
3) Nilai matematika, nilai bahasa Indonesia dan nilai bahasa inggris merupakan bilangan bulat skala 1 – 100,
4) Rata – rata nilai berupa bilangan desimal dengan dua digit angka di belakang koma, yang diperoleh dari penjumlahan nilai matematika, bahasa Indonesia dan bahasa inggris dibagi tiga.
Contoh data yang akan diinputkan adalah sebagai berikut :
Nomor induk siswa : A45789
Nama Siswa : Slamet Sentosa
Nilai Matematika : 80
Nilai Bahasa Indonesia : 76
Nilai Bahasa Inggris : 70
Rata – rata nilai : 75.33
Bantulah budi untuk menentukan variabel dan tipe data yang tepat dagian deklarasinya dalam Program!
Jawab:
Untuk menentukan variabel dan tipe data yang tepat, kita harus memperhatikan data apa saja yang akan diinputkan ke dalam program. Pada contoh diatas data yang diinputkan meliputi : nomor induk siswa, nama siswa, nilai matematika, nilai bahasa Indonesia, nilai bahasa inggris dan ratarata nilai. Kemudian kita perhatikan contoh data yang akan diinputkan. Dengan demikian dapat ditentukan variabel dan tipe data sebagai berikut.
1) Coba perhatikan data nomor induk siswa pada contoh di atas. Jika kita perhatikan, data nomor induk siswa terdiri dari 1 huruf dan 5 angka, maka tipe data yang tepat adalah string. Karena string dapat menyimpan data berupa huruf atau karakter dan angka. Sehingga dapat ditentukan nama variabel NIS sebagai string dengan panjang maksimal 6 karakter.
2) Kemudian perhatikan data nama siswa pada contoh diatas. Data nama siswa terdiri dari huruf, maka tipe data yang tepat adalah string. Karena string dapat menyimpan data berupa huruf atau karakter.Sehingga dapat ditentukan nama variabel Nama sebagai string. Panjangnya dapat diperkirakan maksimal 30.
3) Selanjutnya, perhatikan data nilai matematika. Data tersebut berupa bilangan bulat maka tipe data yang tepat adalah integer. Jika kita perhatikan, data nilai bahasa Indonesia dan data nilai bahasa inggris mempunyai data yang sama dengan nilai matematika. Maka tipe data yang tepat adalah integer. Karena tipe data integer dapat menyimpan bilangan bulat. Sehingga dapat ditentukan nama variabel Nilai_Mat, Nilai_BInd, Nilai_Inggris sebagai integer.
4) Berikutnya, perhatikan data rata-rata nilai. Data tersebut di dapat dari penjumlahan nilai matematika, bahasa Indonesia dan bahasa inggris dibagi tiga. Karena ada operasi pembagian, maka tipe data yang tepat adalah real.
Deklarasi variabel dan tipe data
Var NIS : string[6];
Nama: string[30];
Nilai_Mat : integer;
Nilai_BInd : integer;
Nilai_Inggris : integer;
Rerata : real;
Pada nomor induk siswa akan menyimpan data dengan maksimal 6 karakter, sedangkan pada nama siswa maksimal 30 karakter. Sehingga, walaupun user menginputkan data lebih dari 30 karakter, maka data yang tersimpan tetap 30 karakter.

EKSPRESI
Ekspresi yaitu sesuatu yang jika dievaluasi/diproses menghasilkan suatu nilai. Sebagai contoh dimasukkan nilai a adalah 30 dan b adalah 5.
a*b memberikan nilai 150
a/b memberikan nilai 6.00
a mod b mememberikan nilai 0
(a mod b)=0 memberikan nilai TRUE.
Selanjutnya simbol-simbol *, /, mod dan = disebut sebagai operator dan nilai yang dioperasikan disebut operan. Ketika nilai dari ekspresi diberikan kepada variabel lain maka disebut sebagai Assignment.
d:=a*b;
e:=a/b;
c:=(a mod b =0)
Dalam Pascal Assignment ditandai dengan := (titik dua sama dengan). Selain itu perlu diperhatikan bahwa operasi yang dilakukan menentukan tipe data dari variabel yang diberi nilai. Variabel d tetap integer, e bertipe real, sedangkan c menjadi boolean.

OPERATOR

Operator adalah sebuah simbol yang memberitahukan compiler pascal untuk melakukan sebuah operasi matematika maupun operasi logika. Atau,
Operator  merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai.
Ada beberapa jenis operator dalam pemrograman pascal diantaranya operator aritmatika, operator relasional, operator Boolean
1.  Operator Aritmatika
Operator Aritmatika adalah operator yang digunakan untuk melakukan operasi penjumlahan, pengurangan, pembagian, dan perkalian atau operator yang digunakan untuk melakukan perhitungan pada bilangan atau operasi hitung dari bilangan-bilangan. Terdapat dua macam tipe data bilangan yaitu integer dan bilangan real. Operator-operator yang berlaku keduanya hampir sama,  kecuali untuk bagian pembagian. Berikut ini adalah operator-operator untuk tipe data integer dan bilangan real. Operator Aritmatika pada Bilangan Integer.

 


2.  Operator Relasional
Operator Relasional adalah operator yang menghubungkan nilai dari variabel. Hasil ekspresi dengan operator ini adalah nilai kebenaran True atau False. Berikut operator relasional dalam Pascal.
Operator relasional tidak hanya berlaku pada tipe data bilangan (integer dan real) namun berlaku pula untuk tipe data lain seperti karakter, string maupun boolean.
Sebagai contoh:
‘a’ < ‘c’ memberikan nilai true
if (Nama)=’Dwi’ then ....
If (StatusLulus=True) then ....
While (n>100) do ....
.
Operasi relasional seringkali muncul pada kondisi bersyarat, yaitu pemenuhan suatu syarat untuk melakukan proses lanjutan. Meskipun pembahasan kondisi bersyarat masih pada Bab selanjutnya, tak ada salahnya kita mengenal bentuknya terlebih dahulu untuk memahami pentingnya operasi relasional.

3.  Operator Boolean
Operator Boolean adalah operator yang digunakan pada sebuah statement. Berikut beberapa operator Boolean pada pascal :

Operator Penugasan (=)
 






Prioritas Operator
Urutan Prioritas Operator :
■ Jika ada tanda kurung, maka kerjakan dahulu yang ada dalam kurung.
1. Perkalian
2. Pembagian
3. Penambahan
4. Pengurangan

Operator Relasi adalah operator penghubung yang berupa benar atau salah, sesuai dengan teorinya bahwa operator relasi mengeluarkan tipe data Boolean sehingga contoh program di atas mengeluarkan output true atau false.


Operator logika adalah Operator yang digunakan untuk menggabungkan dua kalimat sehingga terbentuk kalimat gabungan.



Operator And
digunakan untuk menghubungkan dua atau lebih ekspresi relasi, akan dianggap BENAR, bila semua ekspresi relasi yang dihubungkan bernilai BENAR.

Operator OR
digunakan untuk menghubungkan dua atau lebih ekspresi relasi, akan dianggap BENAR, bila salah satu ekspresi relasi yang dihubungkan bernilai BENAR.

Operator NOT
Operator logika NOT akan memberikan nilai kebalikkan dari ekspresi yang disebutkan. Jika nilai yang disebutkan bernilai BENAR maka akan menghasilkan nilai SALAH, begitu pula sebaliknya.

Operator Kombinasi digunakan untuk memendekkan penulisan operasi penugasan.

 






Jenis-jenis Operator menurut jumlah operand yang dilibatkan:
operator unary                      operator yang hanya melibatkan satu operand                Contoh : -4
operator binary                     operator yang hanya melibatkan dua buah operand         Contoh : 6 + 7.
operator ternary/tertiary         operator yang hanya melibatkan tiga buah operand         Contoh : 6 + 7/2

Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah operand (sebuah nilai atau variable).

Operator Relasional menghasilkan nilai dari hasil membandingkan dua operand. Hasil dari operator ini adalah bernilai true/ false.

Operator Relasi digunakan untuk menghubungkan dua buah operasi relasi menjadi sebuah ungkapan kondisi. Hasil dari operator logika ini menghasilkan nilai numerik 1 (True) atau 0 (False).

STRUKTUR PERCABANGAN

1.  Percabangan 1 Kondisi
Struktur percabangan dengan satu kondisi pada Bahasa Pascal mempunyai sintaks sebagai berikut.
if (kondisi) then
Pernyataan;
Jika pernyataan lebih dari satu maka dituliskan
if (kondisi) then
Begin
Pernyataan1;
Pernyataan2;
dst;
end;
Perhatikan permasalahan berikut.
a) Sebuah Toko Baju memberlakukan diskon akhir tahun sebesar 20% untuk semua koleksi yang dijual. Namun diskon akan dinaikkan menjadi 25% jika total belanjaan lebih dari 200ribu rupiah. Untuk itu toko tersebut membutuhkansebuah program untuk menghitung jumlah uang yang harus dibayarkan oleh pelanggan untuk baju-baju yang telah dibeli.
b) Di sebuah perusahaan gaji pegawai teridri dari gaji pokok, tunjangan keluarga dan dikurangi 30 ribu untuk asuransi kesehatan pekerja. Gaji pokok tiap pekerja berbeda-beda sehingga perlu diinputkan oleh operator, sedangkan tunjangan keluarga dihitung sama untuk semua karyawan, sebesar 10% dari gaji pokok. Khusus bagi karyawan dengan masa kerja lebih dari 20 tahun maka total gajinya akan ditambahkan dengan tunjangan pengabdian sebesar 500 ribu. Untuk itu persahaan tersebut membutuhkan program perhitungan gaji para karyawannya.
Jika dilihat pada permasalahan di atas, pada kasus 1, setiap pembelanjaan dapat diskon sebesar 20% dari harga normal. Namun jika total belanjaan lebih dari 200 ribu maka diskonnya menjadi 25%, maka hal ini dapat dinyatakan dalam algoritma sebagai berikut.
Pertama tentukan semua variabel terlebih, dahulu. Ada hargaTotalBelanja, prosentase diskon (skala 1-100), besar diskon, dan TotalBayar. Selanjutnya dibuat algoritma berikut.
Algoritma DiskonBaju
Variabel hargaNormal, ProsenDiskon,:integer
BesarDiskon, hargaAkhir:bilangan real
1) READ TotalBelanja
2) ProsenDiskon=20
3) IF (TotalBelanja>=200000) THEN
4) ProsenDiskon=25
5) BesarDiskon=(ProsenDiskon/100)*TotalBelanja
6) TotalBayar=TotalBelanja-BesarDiskon
7) WRITE TotalBayar
8) END

Mengapa data harga normal, prosen diskon dengan besar diskon dan harga akhir mempunyai tipe data yang berbeda? Hal ini dikarenakan, dalam perhitungan besar diskon melibatkan operasi / yang akan menghasilkan bilangan real, sedangkan harga akhir hasil mengurangkan harga normal (integer) dengan harga diskon (real) sehingga menghasilkan bilangan real juga. Selanjutnya algoritma di atas akan dikonveris ke dalam bahasa pemrograman Pascal.
Karena pseudocode yang kita bahas adalah pseudocode berbasis Pascal, maka tidak ada perubahan yang berarti. Dalam bahasa pascal, struktur percabangan dengan 1 kondisi dituliskan,
if (kondisi) then
Pernyataan;
Jika pernyataan lebih dari satu maka dituliskan
if (kondisi) then
Begin
Pernyataan1;
Pernyataan2;
dst;
end;
Sekarang kita lihat bagaimana menyajikan algoritma di atas dalam bahasa Pascal.
Program DiskonBaju;
Uses crt;
var hargaNormal, ProsenDiskon:integer;
BesarDiskon, hargaAkhir: real;
Begin
Clrscr;
write(‘Masukkan total harga pembelian: ‘ );
readln( TotalBelanja);
ProsenDiskon:=20;
if (TotalBelanja>=200000) then
ProsenDiskon:=25;
BesarDiskon=(ProsenDiskon/100)*TotalBelanja;
TotalBayar=TotalBelanja-BesarDiskon;
writeln(‘Total harga yang harus dibayar ad alah : ‘, TotalBayar:6:2);
end.

2. Percabangan Dengan 2 Kondisi
Bentuk umum struktur percabnagan dengan dua kondisi menggunakan bahasa Pascal adalah
sebagai berikut
If (syarat) then
Pernyataan1
else
Pernyataan2;
untuk pernyataan tunggal pada tiap syarat, atau
If (syarat1) then
begin
Pernyataan1;
Pernyataan2;
end
else
begin
Pernyataan3;
Pernyataan4;
End;
Untuk pernyataan lebih dari satu untuk tiap syarat.
Program DiskonBaju;
var hargaNormal, ProsenDiskon:integer;
BesarDiskon, hargaAkhir: real;
Begin
write(‘Masukkan total harga pembelian: ‘ );
readln( TotalBelanja);
if (TotalBelanja>=200000) then
ProsenDiskon:=25
Else
ProsenDiskon:=25;
BesarDiskon=(ProsenDiskon/100)*TotalBelanja;
TotalBayar=TotalBelanja-BesarDiskon;
writeln(‘Total harga yang harus dibayar adalah : ‘, TotalBayar:6:2);
end.

Pada dasarnya program di atas adalah program untuk menyelesaikan permasalahan yang sama, hanya beda dalam penyajian saja. Hal ini sebagaimna pembahasan pada semester 1, bahwa ada percabngan dengan 1 kondisi, 2 kondisi atau lebih.

Pada percabangan 1 kondisi, ketika kondisi dipenuhi maka proses tertentu akan dijalankan, jika tidak maka tidak dilakukan apa-apa. Padahal dalam kehidupann nyata, permasalahan seringkali terjadi melibatkan dua kondisi. Misalkan “Jika nilai lebih besar 60 maka lulus, jiak tidak, maka tidak lulus”; “Jika rajin belajar maka naik kelas, jika tidak maka tinggal kelas”; “Jika bobot truk>=100 ton maka tidak boleh lewat, jika kurang dari itu boleh lewat”. Kenyatannya seperti itu dalam kehidupan sehari-hari sehingga percabangan dengan dua kondisi lebih banyak digunakan.

Seperti halnya pada contoh di atas, sebenarnya mempunyai dua kondisi, jika total belanja <200 ribu maka diskonnya 20% jika lebih besar atau sama dengan 200 ribu maka diskonnya menjadi 25%. Oleh karena itu pada percabangan dengan 1 kondisi pernyataan Prosendiskon:=20 diletakkan sebelum struktur if then, karena digunakan sebagai nilai default dari prosen diskon.

Hal ini dapat disajikan dalam bentuk yang lebih cocok menggunakan struktur if then else sebagai bentuk percabangan dengan dua kondisi. Dalam percabangan 2 kondisi ini digunakan struktur if then else

3. Percabangan Lebih Dari Dua Kondisi
Struktur if then else if
Dalam pseudocode, percabangan dengan lebih dari dua kondisi dituliskan sebagai berikut:
IF (kondisi1) THEN
Pernyataan1
ELSEIF (kondisi2) THEN
Pernytaan2
ELSE
Pernyataan3
Sehingga dapat dibuat flowchartnya dalam bentuk sebagai berikut:
Perhatikan masalah berikut :
1.  Perhitungan Gaji
Misalkan di sebuah perusahaan yang bergerak di bidang pemasaran, gaji pegawai dihitung berdasarkan gaji pokok dan bonus dari omset penjualan
Jika Omset>100 juta maka bonusnya adalah 1.5%*Omset Penjualan
Jika Omset antara 50-100 juta, bonusny adalah 1% *OmsetPenjualan
Jika kurang dari 50 juta maka ia tidak mendapatkan bonus.
Bagaimana mengimplementasikan aturan tersebut dalam program komputer?
2. Persewaan Mobil
Sebuah persewaan mobil mempunyai 4 jenis koleksi mobil, Avanza, Xenia, Innova dan Alphard.
Biaya persewaan mobil terdiri dari dua komponen, yaitu Biaya Sewa dan Biaya Asuransi.
Berikut ini adalah Tabel biaya sewa mobil dan asuransi
Akan dirancang sebuah program untuk menghitung biaya persewan mobil. Algoritma akan meminta inputan berupa Jenis Mobil yang disewa, dan lama hari menyewa. Asuransi dihitung
sekali bayar untuk berapappun lama peminjaman. Biaya peersewaan dihitung dengan menjumlahkan total biaya sewa untuk n hari ditambah dengan biaya asuransi.

Dalam hal ini untuk kasus diatas dapat dituliskan flowchart percabangannya dalam bentuk berikut:
Demikian juga pada bahasa Pascal, kita bisa menyajikan permasalahan di atas dalam sitantks
sebagai berikut.
if (kondisi1) then
pernyataan1
else if (kondisi2) then
pernyataan2
else
pernyataan3;
sehingga untuk permasalahan 1, dapat dituliskan bagian percabngannya adalah
if (Omset_Jual>100000000) then
bonus:=(1.5/100)*Omset_Jual
else if (Omset_Jual>=50000000) then
bonus:=(1/100)*Omset_Jual
else
bonus:=0;
Bagaimana dengan permasalahan kedua? Pada permasalahan kedua ini, kondisi jauh lebih banyak, dalam hal ini ada 5 cabang atau kondisi sesuai dengan banyaknya jenis mobil. Selain itu dalam setiap cabang ada lebih dari satu pernyataan sehingga sehingga dapat dituliskan kode dalam Pascalnya adalah sebagai berikut.
If (jenis_Mobil=’Avanza’) then
Begin
                   Pernyataan1;
                   Pernyataan2;
End
                   Else if (jenis_Mobil=’Avanza’) then
Begin
                   Pernyataan1;
                   Pernyataan2;
End
          Else if (jenis_mobil=’’Innova’) then
Begin
                   Pernyataan1;
                   Pernyataan2;
End
Else
                   Pernyataan1;
                   Pernyataan2;
Sehingga dapat dituliskan bentuk flowchartnya adalah sebagai berikut.

Struktur case of
Perhatikan permasalahan kedua, dengan 5 kondisi (percabngan) maka penyajian algoritma menjadi memanjang ke kanan. Dan ini akan menjadi kurang menarik dan efektif dalam penulisan meskipun hasilnya tetap sama. Alternatifnya adalah dengan menggunakan struktur case of sebagai mana pada pembahasan algoritma.
Secara umum, sintaks struktur case of adalah sebagai berikut.
Case (variabelpilihan) of
Nilai1: pernyataan1;
Nilai2:pernytaan2;
Nilai3:pernyataan3;
...
Else
PernyataanElse;
end;

Pada struktur case of, seluruh kemungkinan nilai didaftar dan diberikan pernyataan yang
sesuai dengan nilai yang dimilki variabel. Ini tentu akan lebih efektif dibandingkan menggunakan if then else if secara berulang-ulang. Kekuranganya bahwa struktur ini hanya bekerja pada variabel dengan tipe data ordinal, yaitu tipe data yang dapat dihitung, dlam hal ini adalah integer, karakter atau tipe data set (tipe data terstruktur). Jika variabel yang akan diubah dalam bentuk case of belum menjadi salah satu bentuk ini maka perlu diubah ke salah satu bentuk tipe data. Caranya?
Lihat kembali permasalah kedua, yaitu persewaan mobil. Kita bisa membuatkan menu pilihan untuk mewakili setiap jenis mobil. Misalkan ditampilkan di awal program keterangan berikut.

Mobil yang disewakan:
1. Avanza
2. Xenia
3. Innova
4. Alphard

Masukkan nomor pilihan mobil: ..............{baca sebagai variabel var_pilih}

Selanjutnya kita bisa menggantikan setiap jenis dengan nilai var_pilih dari 1, 2, 3, atau 4 untuk masing-masing kategori mobil. Dengan ini maka var_pilih bertipe ordinal, sehingga dapat diterapkan struktur case sabagai berikut.
case (var_pilih) of
1: begin
          Pernyataan1a;
          Pernyataan1b;
end;
2: begin
Pernyataan2a;
Pernyataan2b;
end;
3:begin
Pernyataan 3a;
Pernyataan 3b;
End;
Else
Begin
PernyataanElse1;
PernyataanElse2;
End;
End;
Selain kondisi berupa data tunggal, struktur case of juga dapat diterapkan pada interval data ordinal, emisalkan sebagai berikut. Dalam algoritma penghitungan bonus karyawan berdasarkan omset jual di atas. Agar dapat diterapkan struktur case of, maka besar omset jual dituliskan sebagai variabel dengan tipe integer (pembulatan) di mana nilainya dalam satuan juta.

Sehingga jika variabel omset_jual= 125 artinya 125 juta, sehingga bonusnya dihitung (1.5/100)*omset_jual*1000000. Sekali lagi, ini adalah salah satu bentuk strategi untuk memecahkan masalah. Dengan demikian kita bisa memberikan alternatif solusi kondisi percabangan adalah sebagai berikut:
readln(omset_jual); {dalam juta}
case (omset_jual) of
0..49 : bonus:=0;
50..100 :bonus:=(1/100)*omset_jual*1000000;
else
bonus:=(1.5/100)*omset_jual*1000000;
end;
Struktur di atas meberikan gambaran bahwa struktur case of dapat diterapkan pada rentang nilai
dari suatu data ordinal. Bisa juga dengan mengggunakan tipe data karakter seperti berikut.
case (karakter) of
'a'..'j' : pernyataan1;
'k'..'p' :pernyataan2;
‘q’..'u' : pernyataan3
else
PernyataanElse;
end;

STRUKTUR PERULANGAN

program whiledo
var i : integer;
begin
I           := 1;
while i <= 5 do
begin
writeln(‘Pascal’);
i:=i+1;
end;
end.
Program FORDO
Var i : integer;
Begin
For i := 1 to 5 Do
Writeln(‘Pascal’);
End.

Program NestedLoops; {* contoh aplikasi mencari nilai prima *}
var
i, j:integer;
begin
for i := 2 to 50 do
begin
for j := 2 to i do
if (i mod j)=0 then
break; {* if faktor ketemu, berarti bukan prima *}
if(j = i) then
writeln(i , ' adalah nilai prima' );
end;
end.
Ketiga kode program di atas adalah contoh dari perulangan dengan kondisi diawal Jika kita lihat sekilas, maka kita bisa menyimpulkan bahwa kode program pertama dan kedua memiliki struktur yang hampir sama, yang membedakan hanya yang pertama menggunakan pernyataan WHILE-DO, sedangkan yang kedua menggunakan pernyataan FOR-DO. Bagaimana dengan yang ketiga? Yang ketiga menunjukkan sebuah contoh penggunaan dari sebuah nested loops (perulangan bersarang/ perulangan di dalam perulangan). Bagaimana cara kerja, hasil, dan kapan ketiga kode program (pernyataan perulangan) tersebut di gunakan? Akan kita bahas pada pembahasan berikut ini.

Sebagaimana yang pernah dijelaskan pada semster lalu bahwa struktur perulangan merupakan struktur yang tidak terpisahkan dengan algoritma dan pemrograman. Struktur perulangan memungkinkan program untuk melakukan serangkaian perintah secara berulang-ulang. Dan untuk memenuhi syarat bahwa algoritma harus finite (terbatas) maka dalam perulangan pasti ada titik pemberhentian. Jika ternyata dalam sebuah kasus perulangan tidak mencapai titik berhenti maka dapat dikatakan algoritma tersebut salah.
Titik pemberhentian dapat diberikan dengan beberapa cara, sebagai berikut.
1.  Pemberhentian dengan syarat
Pemberhentian dengan syarat artinya ada sebuah kondisi yang akan menyebabkan perulangan berhenti. Pemberian syarat ini juga dapat dilakukan dengan dua cara, yaitu
a.  Syarat diberikan di awal, di mana selama persayaratan dipenuhi maka dilakuakn serangkain perintah.
b.  Syarat diberikan di akhir, di mana proses akan diulang-ulang sampai syarat dipenuhi.

Perbedaan antara a dan b adalah ketika syarat diberikan di awal, maka selama persayaratan itu dipenuhi , maka perulangan dilakukan. Jika kondisi sudah tidak dipenuhi maka berhenti. Sedangakan pada kasus syarat di akhir, dikerjakan serangkaian langkah. Setiap selesai rangkaian langkah diperiksa apakah kondisi sudah dicapai, jika belum maka proses diulangi lagi. Struktur yang sesuai dengan perulangan dengan kondisi di awal adalah struktur WHILE DO sedangkan untuk kondisi di akhir adalah dengan REPEAT UNTIL.
2. Pemberhentian dengan pencacah
Pemberhentian dengan pencacah, artinya dari awal sudah ditentukan bahwa perulangan akan dilakukan berapa kali. Pencacah ini juga ada dua macam cara, yaitu
a. Pencacah naik
Pemberhentian dengan pencacah naik artinya untuk suatu pencacah, misalkan i dari 1 sampai 100 lakukan rangkain langkah x. Artinya langkah tersebut akan diulangi sebanyak seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR TO DO.
b. Pencacah turun
Pemberhentian dengan pencacah turun , artinya sebaliknya untuk suatu pencacah i dari 100 sampai 1 lakukan rangkaian langkah x, artinya langkah x akan diulangi sebanyak seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR DOWNTO DO
Penggunaan beberapa macam pemberhentian di atas tergantung dari situasi dan kondisi, untuk lebih jelasnya akan dijelaskan seperti berikut.
Perulangan dengan struktur WHILE DO
Dalam berbagai bahasa Pascal dikenal struktur WHILE DO, yang berarti selama memenuhi kriteri/kondisi tertentu, maka dilakukan serangkaian proses. Struktur ini dapat diterapkan pada
contoh di atas sebagai berikut.
Bentuk Umum:
WHILE (kondisi) DO
Pernyataan;
Atau jika lebih dari satu pernyataan dapat dituliskan
WHILE (kondisi) DO
Begin
Pernyataan1;
Pernyataan2;
Pernyataan3;
End;

Perulangan dengan struktur FOR DO
Perulangan dengan pencacah, yaitu menggunakan struktur FOR DO dimasukkan dalam
pembahasan pada kegaiatan Belajar ini. Struktur ini digunakan untuk mengulang statement atau
satu blok statement berulang kali sejumlah yang ditentukan.
Bentuk umum :
for nama_variabel := nilai_awal to nilai_akhir do {untuk pencacah naik}
Pernyataan;
atau
for nama_variabel := nilai_awal downto nilai_akhir do {untuk pencacah turun}
Pernyataan;

Penulisan pernyataan yang akan diproses berulang kali tersebut dapat juga ditulis dalam bentuk blok pernyataan (diawali dengan BEGIN dan diakhiri dengan END), walaupun hanya berisi sebuah
statement saja,
Dalam menyelesaiakan suatu permasalahan kita bisa menggunakan salah satu bentuk perulangan, apakah While Do ataupun For Do. Manakah yang lebih baik? Keduanya mempunyai
kelebihan dan kekurangan sendiri-sendiri. Ada permasalahan yang dapat diubah dalam dua bentuk eprulangan tapi ada yang lebih mudah menggunakan bentuk For Do, tapi ada juga yang hanya bisa digunakan bentuk While Do.
Perhatikan dua contoh pertama pada bagian mengamati
Kedua program di atas mempunyai keluaran yang sama yaitu mencetak ‘Pascal’ sebanyak
5 kali, yaitu untuk i=1 sampai 5. Dalam While Do,
- pertama i diberi nilai 1,
- Periksa apakah i <= 5? Iya maka tuliskan ‘Pascal’ kemudian nilai i ditambah 1 menjadi 2
- Periksa Apakah I<=5? Iya , Maka Tuliskan Pascal, I=I+1=3
- Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=4
- Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=5
- Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=6
- Periksa apakah i<=5?Tidak, maka STOP
Di sini i berfungsi sebagai iterator dan 5 sebagai nilai sentinel.
Dalam struktur FOR DO, iterator dan sentinel diringkas dalam bentuk for i:=1 to 5, di mana i
otomatis bertambah naik, mulai dari nilai awal 1 menjadi 5. Oleh karena itu struktur For Do disebut
perulangan dengan pencacah.

Perulangan Dengan Kondisi Di Akhir
PROGRAM REPEATUNTIL
var
digit := 1;
begin
repeat
write (digit);
digit := digit + 1
until digit > 5 ;
end.
Program REPEATUNTIL
var
a: integer;
begin
a := 10;
(* repeat until loop execution *)
repeat
writeln(‘nilai dari a adalah ', a);
a := a + 1
until a = 20;
end.
Sebagaimana yang dijelaskan sebelumnya bahwa perulangan dapat dilakukan dengan menyatakan kondisi di akhir. Berbeda dengan kondisi di awal, di mana selama syarat (kondisi) dipenuhi maka perintah dijalankan, pada kondisi di akhir, perintah dijalankan sampai memenuhi kondisi yang diinginkan. Struktur yang digunakan adalah struktur Repeat Until.
Bentuk Umum :
REPEAT
Pernyataan;
UNTIL (kondisi)

Kode Program
Var digit := 1;
begin
repeat
writeln (digit);
digit := digit + 1
until digit > 5 ;
end.
Program di atas diawali dengan nilai awal digit=1, kemudian dilakukan perintah
writeln (digit);
digit := digit + 1
hingga nilai digit>5.
Perbedaan antara struktur REPEAT-UNTIL dengan WHILE-DO adalah sebagai berikut :
1)   Paling sedikit statement-statement di dalam perulangan REPEAT-UNTIL diproses sekali, karena seleksi kondisi ada pada statement Until yang terletak dibawah. Sedang pada struktur WHILE-DO paling sedikit dikerjakan nol kali, karena seleksi kondisi ada pada statement While yang terletak diatas, sehingga kalau kondisi sudah tidak terpenuhi, maka tidak akan masuk ke dalam lingkungan perulangan.
2)   Pada REPEAT-UNTIL dapat tidak dipergunakan blok statement (tidak diperlukan Begin dan End untuk menunjukkan batas perulangannya), karena batas perulangannya sudah ditunjukkan oleh Repeat sampai dengan Until (Repeat dan Until sebagai pengganti Begin dan End).



PERULANGAN DENGAN KONDISI DIINPUTKAN USER

Aplikasi pemroograman dalam kehidupan nyata, khususnya yang terkait dengan struktur perulangan, memerlukan syarat yang diinputkan oleh pengguna. Sebagai contoh, dalam sebuah aplikasi kasir, ketika melayani pembeli, seorang kasir akan memasukkan data barang-barang yang dibeli dengan barcode reader, hingga akhirnya kasir akan mengklik sebuah tombol untuk menghitung total belanjaan. Proses memasukkan data dari barang pertama, kedua, dan ke barang-barang berikutnya, adalah suatu bentuk perulangan. Dan perulangan ini akan berhenti hingga akhrinya kasir mengeklik tombol untuk menghitung total belanjaan.

Contoh lain misalkan dalam sebuah video game dengan koin, ketika seorang anak memasukkan koin, kemudian bermain dan akhirnya terjadi game over. Berikutnya biasanya, video game akan menampilkan hitungan mundur menunggu anak untuk memasukkan koin berikutnya agar permainan dapat dilanjutkan. Bentuk hitugan mundur ini juga menggunakan perulangan, dan akan berhenti perulangan ini untuk dua kemungkinan, si anak memasukkan koin atau perhitungan mundur selesai dan akhirnya masuk ke menu awal game kembali.

Kondisi yang diinputkan dari user bisa diperoleh sebelum perulangan atau di dalam perulangan itu sendiri. Contoh di atas adalah kondisi dimasukkan oleh user di dalam perulangan itu sendiri. Contoh pengambilan kondisi sebelum perulangan adalah menentukan suku ke-n dari sebuah barisan. Misalkan menetukan suku ke n dari barisan 1,2,3,5,8, .... Nilai n diperoleh dengan menerima masukan dari user sebelum perulangan dilakukan.

Sumber :
Buku Paket Pemrograman Dasar
http://pemrogramandasartkjpunya.blogspot.com/
https://www.duniailkom.com/