Blog yang menyediakan pelajaran, source code, dan artikel-artikel seputar pemrograman dan komputer.

Showing posts with label pelajaran pascal. Show all posts
Showing posts with label pelajaran pascal. Show all posts

Tuesday, April 17, 2012

4 – kontrol program

10:07 AM Posted by Vyn , No comments
Photobucket
Pelajaran kali ini akan membahas:
  • Statement if
    • if ... then ... else
    • if bersarang
  • Perulangan Repeat – Until
  • Perulangan For
    • for bersarang
  • Perulangan While – do
Sekarang, saatnya mempelajari hal yang paling penting di dalam pemrograman: statement if (pembuat keputusan), perulangan for dan perulangan repeat – until. Tiga hal umum inilah yang biasanya mmembangun sebuah program di semua bahasa pemrograman, dan anda harus memastikan bahwa setelah anda mempelajari bagian ini, anda sudah cukup mempraktikannya berulang-ulang sebelum melanjutkan ke pelajaran berikutnya karena bagian ini adalah yang paling penting. Jika anda masih tidak yakin dengan pemahaman anda, cobalah pergi ke forum-forum untuk mencari jawaban atas masalah anda.

Statement if
statement if mengeksekusi sebuah pengkondisian. Maksudnya adalah jika sebuah aksi bernilai true, maka instruksi-instruksi yang ada di dalam badan if akan dieksekusi, jika tidak maka instruksi-instruksi akan dilewatkan saja. Untuk lebih jelasnya perhatikan yang dibawah ini:

if ini terjadi (aksi), then lakukan ini (reaksi, jika kondisi bernilai true/ benar).

Atau:

if ini terjadi  (aksi), then lakukan ini (reaksi, jika kondisi true/ benar), else lakukan yang ini (reaksi, jika kondisi false/ salah).

di dalam pascal, 'statement if' harus ditulis seperti berikut:

If ekspresi kondisional then kode ..... ; {jika satu aksi}

Atau:

If ekspresi kondisional then Begin instruksi-instruksi ... end; (jika ada lebih dari satu aksi)

Sebagai catatan bahwa anda tidak boleh menggunakan operator assignment ('=') di dalam ekspresi kondisional, jika iya maka compiler akan menampilkan pesan error. Contoh:

Salah:
If
x := 20 then x := x + 1; {karakter yang digarisbawahi adalah yang salah.}

Benar:
If
x = 20 then x:= x + 1; {tanda sama dengan hanya dipakai pada kondisi}

Program dibawah ini adalah contoh bagaimana statement if bekerja:

  1. Program lesson4_Program1;
  2. Uses  Crt;
  3. Label 1{digunakan bersama statement goto}
  4. Var Sel: String;
  5.     N1,N2, Total : Real;
  6.     YN : Char{variabel dengan tipe karakter,
  7.                  yang HANYA akan menampung satu huruf/angka saja}
  8. Begin
  9.  1:Clrscr;
  10. Total := 0{biasakan untuk menginisialisasi variabel integer / real}
  11. GotoXy(4,3);
  12.  Writeln('1.Penjumlahan');
  13. GotoXy(4,4);
  14.  Writeln('2.Pengurangan');
  15. GotoXy(4,5);
  16.  Writeln('3.Exit');
  17. GotoXy(6,8);
  18.  Write('Pilih: ');
  19. Sel := Readkey;
  20.  If Sel = '1' {aksi} then
  21.   Begin  {lebih dari satu aksi}
  22.    ClrScr;              
  23.    Write('Input No.1:');
  24.    Readln(N1);          
  25.    Write('Input No.2:');
  26.    Readln(N2);          
  27.    Total := N1 + N2;   
  28.    Writeln('Penjumlahan: ',N1:2:3,' + ',N2:2:3,' = ',Total:2:3);
  29.    Write('Tekan tombol mana saja untuk melanjutkan...');
  30.    Readkey;
  31.    Goto 1;{ini akan membawa kembali ke awal program,
  32.            jika tidak maka program akan berhenti}
  33.   End{menutup if statement(begin)}
  34.  If Sel = '2' then
  35.   {perhatikan bahwa operator assignment
  36.    tidak digunakan di dalam statement if}
  37.   Begin
  38.    ClrScr;
  39.    Write('Input No.1:');
  40.    Readln(N1);
  41.    Write('Input No.2:');
  42.    Readln(N2);
  43.    Total := N1 - N2;
  44.    Write('Pengurangan: ');
  45.    Write(N1:2:3,' - ',N2:2:3,' = ',Total:2:3);
  46.    Write('Tekan tombol mana saja untuk melanjutkan...');
  47.    Readkey;
  48.    Goto 1;
  49.   End{Menutup if statement}
  50.  If Sel = '3' then
  51.   Begin
  52.    ClrScr;
  53.    Write('Anda yakin untuk keluar?(Y/N)');
  54.    YN := Readkey;
  55.    If YN = 'y' then Halt; {1 aksi jadi tidak memerlukan Begin..End}
  56.    If YN = 'n' then Goto 1; {statement goto tidak direkomendasikan
  57.                              untuk program yang kompleks}
  58.   End;
  59. End.


Pada program diatas, statement 'goto' digunakan. Sejauh ini, ini adalah sebuah kerusakan yang nyata pada program dan ini membuat kebingungan yang tak diinginkan. Saya menganjurkan anda untuk tidak menggunakannya berulang-ulang.

>>If ... Then ... Else
Di dalam statement normal, 'reaksi' tidak bisa dilakukan jika kondisi tidak bernilai true. Tapi di dalam sebuah statement if ... then ... else, setidaknya ada satu statement yang dikerjakan. Mari lihat contoh di bawah ini:

writeln('Siapa yang menjadi presiden pertama indonesia?');
readln(ans);
if (ans = 'Soekarno') then
score := score + 1 {jika benar}
ELSE
writeln('maaf, jawaban anda salah');      {jika salah}

Perhatikan bahwa 'else' termasuk di dalam statement if, sehingga tidak ada tanda semi-colon (';') sebelum else; lihat saja pada contoh di atas

>>Statement if bersarang
Program diatas sudah menunjukkan sebuah contoh statement if bersarang.
if sel = '3' then
 Begin
  
clrscr;
   write('Anda Yakin? (Y/N)');
   YN := readkey;
   if YN = 'y' then HALT; {pernyataan if bersarang}
   if YN = 'n' then goto 1; {pernyataan if bersarang yang lain}
End.

Sebuah pernyataan if bersrang ada pada form:
if (ini terjadi) then {if 1}
  if (ini terjadi) then {if 2}
    (lakukan ini) dll...
  Else (lakukan ini) {if 2}
Else (lakukan ini) dll.. {if 1}

Sebuah pernyataan if bersarang adalah pernyataan if di dalam pernyataan if yang lain seperti tulisan diatas.

Pengulangan Repeat – Until

Perulangan ini digunakan untuk mengulang-ulang eksekusi dari satu set instruksi, minimal satu kali. Set Instruksi diulangi sampai kondisi ekspresi salah. Contoh dibawah ini menunjukkan model perulangan 'repeat-until':

Repeat
... (code)
... (code)
... (code)
Until pernyataan kondisi;

berikut contohnya:


Sangat mudah kan! Dalam program di atas, ada Ekspresi Boolean di baris ke-sepuluh (or) akan dijelaskan pada pelajaran berikutnya.

Perulangan For
Perulangan for mengulang satu set instruksi sebanyak jumlah yang ditentukan. Bentuk penulisan perulangan for:

- Jika untuk satu aksi/ instruksi:
for {variable}*:={nilai awal} to/downto {nilai akhir} do
  
{code.. (untuk satu aksi)}

- Jika untuk lebih dari satu aksi
for {variable}* := {nilai awal} to/downto {nilai akhir} do begin
  
{code..}
   {code..}
End;

*
Biasanya, variabel ini disebut 'loop counter'

Sekarang, sebagai contoh dari perulangan for, diperlihatkan dibawah ini, tapi pertama kali, anda harus mengerti penggunaan for loop yang efektif. Seperti contoh dibawah ini:

Tanpa for loop:


Dengan for loop:


Perhatikan bahwa kedua program diatas menghasilkan fungsi yang sama, tapi gaya pemrograman mana yang lebih luar biasa?

- For loop bersarang

Sebuah perulangan for bersarang mirip dengan pernyataan if bersarang. Penulisan for loop bersarang:

for {loop counter} := {nilai awal} to {nilai akhir} do {Begin-if required}
{code jika banyak, perlu menggunakan begin (i.e lebih dari satu aksi)}
for {loop counter} := {nilai awal} to {nilai akhir} do {Begin-if required}
{code..jika lebih dari satu aksi, gunakan begin pada for loop kedua}
{End; – jika begin digunakan pada for loop kedua)}
     {code if any..begin should be included in the first for loop} 
{End; - if begin is included in the first for loop)}



While-Do loop
Loop tipe ini dieksekusi ketika kondisi bernilai benar. ini berbeda dari 'Repeat-Until' loop yang dieksekusi minimal satu kali. Code bekerja seperti ini:

While <kondisi benar> lakukan berikut ini:
instruksi 1;
Instruksi 2;
Instruksi 3;
dll..
End; {jika While-do loops dimulai dengan pernyataan begin}

Contoh program While-do loop:


Tuesday, January 31, 2012

2 – Variabel, Constanta dan Operator Assignment

10:52 PM Posted by Vyn , No comments
Photobucket

Variabel string
Pada bagian ini, anda telah mempelajari bagaimana memasukkan teks dengan menggunakan variabel string. Program di bawah ini akan menampilkan contoh dari variabel string, yang akan meminta user untuk memasukkan nama.



Jika kita perhatikan pada, program diatas ada tipe variabel baru yaitu ‘String’. Variabel ‘name’ dan ‘surname’ bertipe string. Ketika program dijalankan dan meminta user untuk memasukkan namanya, nama yang diketik oleh user akan langsung dimasukkan ke dalam memory yang disebut ‘name’. begitu pula dengan surname. ~sekedar mengingatkan kembali bahwa variabel ‘name’ dan ‘surname’ bukanlah merupakan kata pasti, tapi digunakan oleh programmer sebagai variabel. Anda dapat saja menggunakan ‘n’ dan bukan ‘name’ atau menggunakan ‘sname’ dan bukan ‘surname’~. Dua ‘writeln’ pada baris 9 dan 10 digunakan untuk memindahkan ke baris baru. Dalam bagian ini, 2 baris kosong. Pesan berikutnya menampilkan nama lengkap dari user menggunakan format diatas. Jika sebuah variabel string ingin ditampilkan dilayar, variabel tersebut harus diletakkan diantara koma dengan koma jika diteruskan dengan pesan yang lain. Sebagai contoh:

Perhatikan dimana anda harus meletakkan koma terbalik dan diikuti oleh koma:

writeln(‘Nama anda adalah: ’,name);

atau:

writeln(‘Nama anda adalah: ‘,name.’. Nama belakang anda adalah: ‘,surname,’.’);

anda juga bisa menampilkannya seperti ini:

writeln(‘Nama anda adalah: ‘,name,’.’);

Konstanta dan operator assignment

Selain variabel, ada juga sesuatu di dalam program yang disebut konstanta. Tidak seperti variabel, konstanta menjaga value-nya agar tidak berubah dalam keseluruhan badan program. Disini saya buat sebuah program, tidak terlalu berbeda dengan yang pertama:


Pada program diatas, konstanta ‘name’ diisi dengan ‘Victor’ dengan tipe data string. Namun, dalam persoalan lain, anda dapat menggunakan konstanta integer (untuk angka), contoh:

const
age = 15;

konstanta ‘age’ adalah value yang dapat digunakan kapanpun dibutuhkan. contoh:
age2 := 15;
age2 := age + 15;

contoh diatas akan menampilkan penjumlahan value dari variabel ‘age2’ yang bernilai 15 dengan value dari konstanta ‘age’ bernilai 15. Kemudian value dari variabel ‘age2’ akan menjadi 30. Operator assignment tidak hanya digunakan untuk penjumlahan, tapi juga digunakan untuk memasukkan nilai ke dalam variabel: teks jika variabel bernilai string dan angka jika variabel bernilai integer.

Coba latih diri anda:
name := 'victor';
age := 15; {juga: "age:='15';" Namun dalam kasus ini, 'age' adalah variabel integer}
writeln('Name:',name,'. Age:',age,'.');

Bagian ini dapat disimpulkan dengan program sederhana berikut untuk anda baca dan fikirkan.

1 – Langkah awal memahami pemrograman pascal

6:08 AM Posted by Vyn , No comments
Photobucket
Dalam sebuah program, anda harus selalu mematuhi aturan-aturan bahasa yang digunakan di dalam bahasa pemrograman tersebut. Seperti halnya sebuah bahasa manusia yang juga memiliki tata bahasa, ejaan dan susunan kalimatnya masing-masing. Bahasa pemrograman pascal adalah sebuah bahasa pemrograman tingkat tinggi yang memiliki susunan dan syntax-nya sendiri. Selama pembelajaran, anda harus belajar memahami apa yang boleh dan yang tidak boleh anda tulis di dalam sebuah pemrograman pascal.

 Program Lesson1_Program1;    
Begin    
Write('Hello World. Prepare to learn PASCAL!!');  
Readln;    
End.  
Program diatas ditulis hanya untuk menampilkan pesan: ‘Hello World, Prepare to learn PASCAL!!’ – sebuah pesan pengantar yang ditampilkan pada anda setiap kali anda mulai untuk belajar bahasa pemrograman baru, ini adalah sebuah contoh program paling simpel yang akan memunculkan tulisan di layar.  Jadi, untuk menampilkan sebuah pesan di layar, anda harus menggunakan ‘write’ (atau ‘writeln’). Pernyataan ‘readln’ disini digunakan untuk menghentikan program dan menunggu sampai user menekan tombol ‘enter’. Jika pernyataan ‘readln’ tidak disertakan di dalam program ini, maka pesan yang ditampilkan di layar tidak akan memberikan kesempatan kepada user untuk membacanya karena program langsung diselesaikan. Cobalah untuk menjalankan program diatas dengan menggunakan ‘readln’ dan tanpa menggunakannya. Dan perhatikan perbedaannya.

Sekarang, coba program dibawah ini:


 Program Lesson1_Program2;begin   
Write('Hello World. Prepare to learn PASCAL!!');Readln;End.  

Program diatas juga akan menampilkan hasil yang benar-benar sama. Perbedaannya hanya pada: kerapian dan userfriendlynya.

Program pertama, biasanya dikatakan sebagai “program terstruktur” di dalam bahasa pemrograman. Indentasi (jarak penulisan dari awal baris) adalah sebuah keharusan di dalam penulisan program. Karena hal ini membantu cara penulisan kode program yang rapi. Indentasi juga membantu dalam debugging (pencarian kesalahan program) dan presentasi kode.

Sebuah program di pascal selalu dimulai dengan penulisan kata ‘Program’ diikuti judul program. Ada banyak variasi dalam cara penulisan statement (pernyataan). Dibawah ini adalah contoh mudah sebuah program kecil. (Ingat: Anda bisa copy and paste program di dalam file text (notepad), save file dengan ekstensi *.pas dan buka file di dalam turbo pascal atau IDE yang anda gunakan. anda harus menulis nama file dengan ekstensi *.pas agar program dapat dibaca oleh compiler.

Di dalam program berikut, komputer harus meminta user untuk memasukkan sebuah angka, kemudian yang terakhir akan ditambahkan ke dalam angka kedua yang dimasukkan oleh user.


 Program Lesson1_Program3;  
Var      
Num1, Num2, Sum : Integer;  
Begin  
Write('Masukkan angka ke- 1:');   
Readln(Num1);  
Writeln('Masukkan angka ke- 2:');  
Readln(Num2);  
Sum := Num1 + Num2; {penjumlahan}   
Writeln(Sum);  
Readln;  
End.  

sekarang kita harus perhatikan programnya. Sebuah program di dalam Pascal dimulai dengan kata ‘Program’ (meskipun ini tidak harus ditulis) dan diakhiri dengan 'End', diikuti dengan tanda titik. Sebuah tanda titik tidak pernah digunakan di dalam program, terkecuali saat anda berurusan dengan records (dibahas di topik berikutnya) dan diakhir sebuah program seperti yang anda lihat pada program diatas

Statement  ‘Var’, digunakan untuk memperkenalkan semua variabel yang akan digunakan pada badan program. Variabel-variabel ini merupakan pernyataan yang tidak konstan, sehingga mereka digunakan di dalam program untuk menyimpan value yang akan berubah-ubah (baik itu berupa angka, kata, karakter, dll). Kata ‘Num1’, ‘Num2’ dan ‘Sum’ di dalam program adalah variabel-variabel yang menyimpan angka yang berupa bilangan bulat. Seperti yang anda lihat pada contoh di atas, variabel-variabel ini dideskripsikan sebagai integer. Kata integer di atas mengartikan jenis angka. integer merupakan jenis angka yang bukan merupakan bilangan desimal, tapi bilangan bulat positif dan negatif. range tipe data integer dimulai dari –32768 sampai 32767. Jadi value (angka) yang tidak berada di dalam range tersebut tidak dapat disimpan di dalam sebuah variabel bertipe integer. Ada tipe-tipe data yang memiliki range lebih lebar, tapi untuk saat ini, tipe data integer sudah cukup untuk menampung value yang akan kita gunakan. Variabel ‘Num1’, ‘Num2’ dan ‘Sum’ bukan merupakan kata pasti, tapi dapat digunakan sebagai variabel di dalam program untuk menyimpan data. Nilai yang mereka simpan dapat berubah berkali-kali. Atau, anda juga dapat menggunakan ‘angka1’, ‘angka2’ dan ‘jumlahtotal’ (perhatikan, tidak ada spasi didalam nama variabel), dan bukan ‘Num1’, ‘Num2’, dan ‘Sum’. Seperti yang anda lihat, lebih baik menggunakan variabel dengan nama yang lebih singkat daripada menulis kata yang panjang, seperti ‘variabel_nomor1’.

Setelah mendeklarasikan semua variabel yang dibutuhkan untuk digunakan di badan program, program utama selalu dimulai dengan kata pasti ‘Begin’. Tanpa kata pasti ini, compiler akan menampilkan sebuah pesan error. Pada program diatas, kedua jenis ‘write’ digunakan. Yaitu 'write’ dan ‘writeln’. keduanya memiliki fungsi yang sama, tapi fungsi ‘write’ tidak memindahkan titik sisip ke baris berikutnya ketika menulis sebuah pernyataan. Jika anda menjalankan program ini, anda akan melihat perbedaan diantara keduanya. ketika menggunakan dua kondisi ini, setiap kata yang diketik diantara tanda kurung dan koma terbalik (' '), akan ditampilkan di layar. Dalam hal lain, jika anda menggunakan sebuah variabel untuk menampilkan pesan di layar, ketik variabel tanpa menggunakan koma terbalik, maka komputer akan menampilkan isi variabel di dalam memory ke layar. Pada baris 9, komputer tidak akan menampilkan ‘Sum’ di layar, tapi yang ditampilkan adalah angka yang tersimpan di memori. Hal penting lain yang harus di perhatikan adalah tanda titik koma (;). Tanda titik koma digunakan di setiap akhir pernyataan dalam program, pengecualian-pengecualian akan kita pelajari di bagian berikutnya. Dan terlihat dari contoh di atas, tidak ada tanda titik koma setelah pernyataan ‘begin'. Ini dikarenakan badan program baru dimulai dan tidak harus diakhiri dengan sebuah ';'.

Pesan yang berada diantara tanda kurung ({}) disebut komentar. Komentar diperlukan terutama dalam program panjang yang terdiri dari ribuan baris, sebagai penjelasan fungsi-fungsi sederhana apalagi yang rumit. Dalam pengalaman saya, ketika saya tidak menulis komentar dalam program yang cukup panjang dalam jangka waktu yang cukup lama, dan kemudian  saya melanjutkan untuk menulisnya, saya menghabiskan banyak waktu untuk memahami apa yang sudah saya tulis. Perlu dipahami juga bahwa komentar yang ada di dalam tanda kurung kurawal tidak akan dibaca ataupun di compile oleh compiler/ interpreter.

Pernyataan ‘readln' adalah kata pasti lain yang digunakan sebagai masukan, yang memungkinkan user untuk memasukkan sebuah angka atau teks. Sebagai contoh: menggunakan keyboard. Tapi di dalam pembahasan kita ‘readln' digunakan hanya untuk memasukkan angka (bisa juga dimasukkan huruf tapi akan menyebabkan error karena bukan merupakan masukan yang diinginkan) dan menyimpannya di dalam variabel ‘Num1’ dan ‘Num2’. Karena kedua variabel dideklarasikan sebagi integer, dan variabel integer tidak menyimpan strings. Sebuah error dideteksi oleh Operating System jika terjadi kesalahan di dalam input. Dalam pembahasan berikutnya, anda juga akan mempelajari bagaimana mengontrol pengecualian masukan dan keluaran – error yang tidak diinginkan. Ada dua macam penyebab terjadinya error: runtime errors dan compilation errors. Runtime errors adalah terjadinya hal-hal yang tidak diinginkan dalam eksekusi program, sedangkan compilation error adalah terdeteksinya kesalahan di dalam kompilasi. Perhatikan bahwa angka desimal sebagai input yang salah; sebuah angka desimal bisa di input, jika variabel dideklarasikan sebagai bilangan real (dibahas di bagian berikutnya).

Setelah meminta masukan dari user, diikuti instruksi berikutnya.

Sum := Num1 + Num2;

hasil dari pernyataan diatas adalah penjumlahan value yang tersimpan di dalam variabel ‘Num1’ dan ‘Num2’. Hal penting yang harus diperhatikan adalah pernyataan diatas tidak dapat dibuat sebagai berikut:

Num1 + Num2 := Sum;

Pernyataan diatas adalah contoh lain dari syntax error. Transfer informasi (value) dilakukan dari kanan ke kiri dan bukan dari kiri e kanan. Jadi, ingatlah untuk tidak membuat kesalahan ini. Tanda ‘:=’ disebut operator assignment, dan akan dibahas pada bagian selanjutnya.