4 Perintah Sulit di Pemrograman Pascal Pemula
4 Perintah Sulit di Pemrograman Pascal - Di pascal, ada beberapa perintah yang sering digunakan mulai dari perintah yang dianggap mudah sampai perintah yang dianggap sulit. Seperti pada postingan sebelumnya, 10 Menit Belajar Pemrograman Pascal dari Nol sampai Mahir telah kita bahas tentang perintah output, perintah input, perintah perulangan dan perintah percabangan.
Pada kesempatan ini kita akan membahas 4 Perintah Sulit di Pemrograman Pascal, perintah-perintah yang dimaksud adalah :
Daftar isi
Berikut Materi dan Praktek
- Perintah Loncat (Jumping)
- Perintah Larik (Array)
- Setiap variabel yang dinyatakan sebagai ARRAY harus dideklarasikan pada blok VAR
- Hal yang perlu dideklarasikan adalah nama variabel, indeks variabel dan tipe data variabel
- Deklarasi ini berfungsi untuk memesanan tempat/memori dari setiap variabel ARRAY tersebut.
- Record merupakan type data terstruktur yang harus dideklarasikan sendiri
- Record terdiri dari beberapa field dimana setiap field harus dinyatakan namanya dan type dari field tersebut
- Deklarasi dari record dapat dinyatakan pada bagian blok TYPE dan pada blok VAR
- Untuk melakukan pengolahan terhadap field dapat dilakukan dengan
2 cara:
- perintah titik
- statement WITH
- Dibawah ini adalah contoh deklarasi record
- Perintah Function
- Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya(kalau pada prosedur parameter yang dikirimkan secara acuan).
- Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya. Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel yang lainnya.
- Pada prosedur, nama prosedur tidak dapat digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.
- Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada prosedur pada parameter yang dikirimkan secara acuan). Pada contoh, nama fungsi tersebut adalah Hitung dan nilai yang dikirim balik berada pada nama fungsi tersebut. Sehingga nama fungsi ini harus digunakan untuk menampung hasil yang akan dikirimkan dari fungsi, sebagai berikut :
- Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya, sebagai berikut :
- Perintah Procedure
- Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
- Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.
- Prosedur standar EXIT. Digunakan untuk keluar dari suatu blok.
- Prosedur standar HALT. Digunakan untuk menghentikan proses program baik di program bagian maupun di program utama.
- Prosedur standar MOVE. Bentuk umum : MOVE (Var source,dest; count : word); Digunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
- Prosedur standar FILLCHAR. Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variabel, sebagai berikut:
Perintah loncat dalam Pascal adalah Goto. Peintah ini berfungsi loncat ekseksi ke pernyataan yang dideklarasikan oleh Label.
Bentuk penulisan:
Goto Label;
Label harus berada didalam blok yang sama dengan pernyataan Goto. Hal ini tidak memungkinkan melompat keluar dari dalam procedure atau function. Suatu Label dideklarasikan pada bagian deklarasi Label.
Bentuk Penulisan:
Label identifier, ... identifier;Contoh 1
Program penggunaan_GoTo_Label;
Uses Crt;
Label atas;
Var
nil1, nil2 : Integer;
nilRata : Real;
Lagi : Char;
Begin
atas:
ClrScr;
WriteLn ('Program Hitung Nilai');
WriteLn ('--------------------');
WriteLn;
Write ('Masukan Nilai 1 : ');
ReadLn (nil1);
Write ('Masukan Nilai 2 : ');
ReadLn (nil2);
nilRata := (nil1 + nil2)/2;
WriteLn ('Nilai Rata - Rata : ',nilRata:5:2);
WriteLn;
Write ('Ingin Hitung Lagi[Y/T] : ');
ReadLn (Lagi);
If (Lagi='Y') Then
GoTo atas;
End.
Contoh 2 Program contohLabel;
Uses Crt;
Label menu, luasPersegi, luasSegiTiga, luasLingkaran, keluar;
Const phi = 3.14;
var
s : Integer;
p,l,luasP : Integer;
a,t,luasS : Real;
r,luasL : Real;
Begin
Clrscr;
Goto menu;
menu:
Begin
Writeln ('Menu Menghitung Luas');
Writeln (‘=====================');
Writeln ('1. Luas Persegi');
Writeln ('2. Luas Segi Tiga');
Writeln ('3. Luas Lingkaran');
Writeln ('4. Keluar');
Write ('Masukkan Pilihan Menu [1-4] : '); Readln(s);
Writeln;
If (s = 1) Then
Goto luasPersegi;
If (s = 2) Then
Goto luasSegiTiga;
If (s = 3) Then
Goto luasLingkaran;
If (s = 4) Then
Goto keluar;
End;
luasPersegi:
Begin
Writeln ('Menghitung Luas Persegi');
Writeln (‘=======================');
Write ('Masukkan Panjang : '); Read(p);
Write ('Masukkan Lebar : '); Read(l);
luasP := p * l;
Write ('Luas Persegi Panjang : ', luasP);
Writeln;
Goto menu;
End;
luasSegiTiga:
Begin
Writeln ('Menghitung Luas Segi Tiga');
Writeln (‘=========================');
Write ('Masukkan Alas : '); Read(a);
Write ('Masukkan Tinggi : '); Read(t);
luasS := 0.5 * a * t;
Write ('Luas Segitiga : ', luasS:3:2);
Writeln;
Goto menu;
End;
luasLingkaran:
Begin
Writeln ('Menghitung Luas Lingkaran');
Writeln (‘=========================');
Write('Masukkan Jari-jari : ');read(r);
luasL := phi * r * r;
Write('Luas Lingkaran : ', luasL:3:2);
Writeln;
Goto menu;
End;
keluar:
End.
Array adalah tipe data bentukan yang terdiri dari kumpulan tipe data lain yang diwakili oleh 1 (satu) nama variabel. Dalam satu nama variabel ini dapat menampung banyak nilai (value) dengan tipe dan panjang (type & width) datanya (field) sama. Seperti contoh berikut:
Contoh 1Program tipe_array;
Uses Crt;
Var
nilai1, nilai2, nilai3, nilai4 : Integer;
Begin
Clrscr;
nilai1 := 17;
nilai2 := 12;
nilai3 := 5;
nilai4 := 40;
Writeln ('nilai1: ', nilai1);
Writeln ('nilai2: ', nilai2);
Writeln ('nilai3: ', nilai3);
Writeln ('nilai4: ', nilai4);
Readln;
End.
Tipe data nilai pada Program 40. Diubah kedalam bentuk Array.
Contoh 2Program tipe_array;
Uses Crt;
Var
Nilai : Array [1..4] Of Integer;
Begin
Clrscr;
Nilai [1] := 17;
Nilai [2] := 12;
Nilai [3] := 5;
Nilai [4] := 40;
Writeln ('nilai1: ', nilai [1]);
Writeln ('nilai2: ', nilai [2]);
Writeln ('nilai3: ', nilai [3]);
Writeln ('nilai4: ', nilai [4]);
Readln;
End.
Pengisian dan menampilkan data dapat dilakukan secara acak, tetapi harus disesuaikan dengan batasan dan ketetapan yang ada.
Contoh 3Program tipe_array;
Uses Crt;
Var
Nilai : Array [1..4] Of Integer;
Begin
Clrscr;
Nilai [3] := 17;
Nilai [4] := 12;
Nilai [2] := 5;
Nilai [1] := 40;
Writeln ('nilai1: ', nilai [3]);
Writeln ('nilai2: ', nilai [4]);
Writeln ('nilai3: ', nilai [2]);
Writeln ('nilai4: ', nilai [1]);
Writeln ('nilai1: ', nilai [1]);
Writeln ('nilai2: ', nilai [2]);
Writeln ('nilai3: ', nilai [3]);
Writeln ('nilai4: ', nilai [4]);
Readln;
End.
Seluruh tipe data dapat digunakan dalam Array dan jumlah indek Arraynya harus sesuai dengan kemampuan memory komputer. Secara standar hanya mampu menampung 255 buah index yang dimulai dari 0.
Contoh 4Program tipe_array; Uses Crt; Var Kata : Array[0..255] Of String[20]; Begin Clrscr; Kata [24] := 'Sedang '; Kata [25] := 'belajar Pascal '; Kata [26] := 'di '; Kata [27] := 'Komputer'; Write (kata [24]); Write (kata [25]); Write (kata [26]); Write (kata [27]); Readln; End.
Yang perlu diperhatikan adalah:
Program mhs (input, output);
Uses Crt;
Var
Nama : Array [1..10] Of String[15];
nobp : Array [1..10] Of Longint;
quiz,mid,akhir,rata : Array [1..10] Of Real;
indeks: Array[1..10] of String[1];
i,n,k : Integer;
Begin
Clrscr;
Write (‘Jumlah Mahasiswa : ‘); Readln(n);
For i := 1 To n Do
Begin
clrscr;
Gotoxy (10, 5); Write (‘Nama : ‘);
Gotoxy (10, 6); Write (‘Nobp : ‘);
Gotoxy (10, 7); Write (‘Nilai Quiz : ‘);
Gotoxy (10, 8); Write (‘Nilai Mid : ‘);
Gotoxy (10, 9); write (‘Nilai Akhir : ‘);
Gotoxy (30, 5); Readln (nama [j]);
Gotoxy (30, 6); Readln (nobp [j]);
Gotoxy (30, 7); Readln (quiz [j]);
Gotoxy (30, 8); Readln (mid [j]);
Gotoxy (30, 9); Readln (akhir [j]);
End;
For k := 1 To n Do
Begin
Rata [k] := 0.25 * quiz [k] + 0.25 * mid [k] + 0.5 * akhir
[k];
Case rata[k] Of
0..39 : indeks [k] :=’E’;
40..54 : indeks [k] :=’D’;
55..64 : indeks [k] :=’C’;
65..79 : indeks [k] :=’B’;
80..100 : indeks [k] :=’A’;
End;
End;
Clrscr;
Gotoxy (2,2); Write(‘Nama Nobp Rata-rata Indeks’);
Gotoxy (2,3); Write(‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’);
{ 2345678901234567890123456789012345678
{ 1 2 3 }
For i := 1 To n Do
Begin
Clrscr;
Gotoxy (2, 3+i); Write (nama [i]);
Gotoxy (11, 3+i); Write (nobp [i]);
Gotoxy (22, 3+i); write (rata [i]);
Gotoxy (33, 3+i); write (indeks [i]);
End;
Gotoxy (2,4+i); Write(‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’);
End.
Data Array juga dapat meampung data lebih dari satu indek. Indek ini disebut dengan dimensi. Berikut ini adalah latihan penggunaan Aray lebih dari 1 dimensi.
Contoh 6Program tipe_array;
Uses Crt;
var
nilai : Array [0..1,0..2] Of Integer;
Begin
Clrscr;
nilai [0,0] := 1;
nilai [0,1] := 2;
nilai [0,2] := 3;
nilai [1,0] := 4;
nilai [1,1] := 5;
nilai [1,2] := 6;
Writeln ('nilai 0,0: ',nilai [0,0]);
Writeln ('nilai 0,1: ',nilai [0,1]);
Writeln ('nilai 0,2: ',nilai [0,2]);
Writeln ('nilai 1,0: ',nilai [1,0]);
Writeln ('nilai 1,1: ',nilai [1,1]);
Writeln ('nilai 1,2: ',nilai [1,2]);
Readln;
End.
Contoh 7Program tipe_array;
Uses Crt;
var
nilai : Array [0..1,0..2] Of Integer;
Begin
Clrscr;
nilai [0,0] := 1;
nilai [0,1] := 2;
nilai [0,2] := 3;
nilai [1,0] := 4;
nilai [1,1] := 5;
nilai [1,2] := 6;
Write ('nilai 0,0: ',nilai [0,0]);
Write ('nilai 0,1: ',nilai [0,1]);
Writeln ('nilai 0,2: ',nilai [0,2]);
Write ('nilai 1,0: ',nilai [1,0]);
Write ('nilai 1,1: ',nilai [1,1]);
Writeln ('nilai 1,2: ',nilai [1,2]);
Readln;
End.
Contoh 8Program tipe_array; Uses Crt; Var nilai : Array [0..1,0..2,0..3] Of Integer; Begin Clrscr; nilai [0,0,2] := 2; Writeln (nilai[0,0,2]); nilai [1,2,3] := 999; Writeln (nilai[1,2,3]); Readln; End.Contoh 9
Program tipe_array;
Uses Crt;
Type
nama_hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
usia = 0..99;
Var
hari: Array [0..9] Of nama_hari;
umur: Array [0..9] Of usia;
Begin
Clrscr;
hari [1] := senin;
hari [9] := sabtu;
umur [3] := 17;
umur [8] := 80;
Writeln ('hari [1]: ', hari[1]);
Writeln ('hari [9]: ', hari[9]);
Writeln ('umur [3]: ', umur[3]);
Writeln ('umur [8]: ', umur[8]);
Readln;
End.
Contoh 10Program exArrays;
Var
N : Array [1..10] Of Integer; (* n is an array of 10 integers *)
i, j : Integer;
Begin
(* initialize elements of array n to 0 *)
For i := 1 To 10 Do
n[ i ] := i + 100; (* set element at location i to i + 100 *)
(* output each array element's value *)
For j := 1 To 10 Do
Writeln ('Element[', j, '] = ', n[j] );
End.
ARRAY terhadap RECORD dengan ketentuan, sebagai berikut:
TYPE mahasiswa = RECORD
Nama : string [15] ;
BP : string [8] ;
Umur : integer ;
END;
VAR mhs : mahasiswa; { hanya untuk 1 orang mahasiswa }
Membaca field dengan menggunakan perintah titik:
Write ('Nama : '); readln (mhs.nama);
Write ('Nobp : '); readln (mhs.nobp);
Write ('Umur : '); readln (mhs.umur);
Dapat juga menggunakan statement WITH:
WITH mhs DO
BEGIN
Write ('Nama : '); readln (nama);
Write ('Nobp : '); readln (nobp);
Write ('Umur : '); readln (umur);
END ;
Untuk menampung data Record juga dapat menggunakan Array, seperti:
Contoh 11Program arrayRecord;
Uses Crt;
TYPE mahasiswa = RECORD
Nama : string [15] ;
BP : string [8] ;
Umur : integer ;
END;
VAR
mhs : array [1..5] of mahasiswa;
i : byte;
BEGIN
For i := 1 to 5 do
BEGIN
WITH mhs[ i ] DO
BEGIN
Write ('Nama : '); readln (nama);
Write ('Nobp : '); readln (nobp);
Write ('Umur : '); readln (umur);
END ;
For i := 1 to 5 do
BEGIN
WITH mhs[ i ] DO
BEGIN
Write ('Nama : '); writeln (nama);
Write ('Nobp : '); writeln (nobp);
Write ('Umur : '); writeln (umur);
END;
END;
END.
Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama.
Function hampir sama dengan blok pada procedure, hanya pada function harus dideklarasikan dengan tipe dari function tersebut yang merupakan tipe hasil dari function itu sendiri. Sehingga dikatakan function dapat mengembalikan nilai. Perbedaan fungsi dengan prosedur adalah:
Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang dihasilkan.Secara umum bentuk header suatu function adalah :
Pada Latihan 58. Adalah sebuah fungsi dengan nama MAX yang dapat menentukan integer terbesar di antara dua integer.
Contoh 1Selanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan menyatakan sebagai berikut :
p := max(a,b); z := max(a+b,a*b); q := max(MAX(a,b),c); ………………………… dsb.Contoh 2
Function log (x : Real) : Real; Begin log := Ln (x) / Ln (10.0); End;Contoh 3
Function power (x,y : Real) : Real; Begin power := Exp (y * Ln (X)) End;Contoh 4
Function hitung(Var a, b : Integer): Integer;
Begin
hitung := a + b;
End;
Var x, y : Integer;
Begin
Write (‘Nilai X ? ‘);
Readln (X);
Write (‘Nilai Y ? ‘);
Readln (y);
Writeln;
Writeln (X,’ + ‘,Y,’ = ‘,Hitung(x,y));
End.
Perbedaan fungsi dengan prosedur adalah:
Atau nilai fungsi tersebut yang dapat juga dipindahkan langsung ke pengenal variabel yang lainnya, seperti berikut :
Sedangkan pada prosedur, nama prosedur tersebut tidak dapat digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik
Contoh 5rogram contoh;
Uses Crt;
Function faktor(bilangan : Integer) : Real;
Begin
If (bilangan = 0) Then
faktor := 1
Else
faktor := faktor (bilangan - 1) * bilangan;
End;
Var
n : Integer;
Begin
Clrscr;
Write (‘Berapa Faktorial Dari = ‘); Readln(n);
Writeln (n,’ faktorial = ‘, faktor (n) :9:0);
Readln;
End.
Contoh 6Program 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.
Contoh 7Program exFunction; Var a, b, ret : Integer; (*function definition *) Function max (num1, num2: integer) : Integer; Var (* local variable declaration *) Result : Integer; Begin If (num1 > num2) Then result := num1 Else result := num2; max := result; End; Begin a := 100; b := 200; (* calling a function to get max value *) ret := max(a, b); Writeln( 'Max value is : ', ret ); End.
Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedure. Prosedure dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya. Prosedur banyak digunakan pada program yang terstruktur, karena :
Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja. Bentuk Umum header suatu procedure adalah :
Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan pada bagian deklarasi.
Procedure nama_procedure (parameter);
Deklarasi variabel,label,…dll;
Begin
Statement procedure;
………………………….
………………………….
End;
Contoh untuk mebuat suatu procedure untuk menentukan bilangan bulat terbesar diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut :
Keterangan:Jangkauan identifier yang dideklarasikan dalam suatu blok program hanya berlaku pada blok dimana identifier tersebut didefinisikan.
Nilai parameter dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program y.
Keterangan : Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan. Coba Kerjakan latihan di atas.
Agar nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara dideklarasikan secara global, yaitu dideklarasikan di atas modul yang menggunakannya. Struktur 1.
Pada Struktur 1 diatas, variabel A dab B bersifat global untuk prosedur kedua, ketiga dan utama, tetapi tidak bersifat global untuk prosedur kesatu, sehingga prosedur kesatu tidak dapat menggunakan variabelvariabel tersebut. Struktur 2.
Pada Struktur 2 diatas, variabel A dan B bersifat global untuk semua modul. Parameter yang dikirim dari modul utama ke modul prosedur disebut actual parameter, dan parameter yang ada dan dituliskan pada judul prosedur disebut formal parameter. Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur.
Procedure di atas dapat dipanggil dengan variabel yang berbeda, tetapi penulisannya harus diubah dengan menggunakan parameter sbb:
Contoh 8Bila pengiriman parameter secara acuan (by reference), maka perubahanperubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter.
Contoh 9Acuan Forward digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya.
Contoh 10Prosedur Standar yang disediakan oleh Turbo Pascal :
FillChar(x;count :word;ch);
X adalah variabel yang dapat bertipe apapun yang akan diisi dengan
nilai tipe ordinal Ch sebanyak count byte.
Rekursif adalah suatu fungsi atau prosedur tersebut dapat memanggil dirinya sendiri. Berikut ini sebuah contoh fungsi dan prosedur yang rekursif.
Contoh 12 Contoh 13Source : Jufriadif Naam - Buku Penunjang Praktek Pascal
Demikian materi tentang 4 Perintah Sulit di Pemrograman Pascal Pemula.
Terimakasih sudah berkunjung di blog kami, semoga bermanfaat. Jika ada pertanyaan dari teman-teman, silahkan sampaikan pada kolom komentar atau bisa langsung hubungi pada kontak yang sudah kami lampirkan di menu Contact Us.

Comments
Post a Comment