Materi Pascal
PERULANGAN ( LOOPING ) Di dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan pernyataan For, While-Do, dan Repeat…Until. 1. Struktur Perulangan For Perulangan dengan pernyataan For digunakan untuk mengulang pernyataan atau satu blok pernyataan berulang kali sejumlah yang ditentukan. Perulangan dengan pernyataan For dapat berbentuk perulangan positif, perulangan negatif dan perulangan tersarang.
LOOPING ( FOR ) Perulangan positif. For variabel-kontrol:=nilai awal To nilai akhir Do pernyataan Contoh Var I:Integer; Begin For I:= 1 to 5 Do Writeln(‘Pascal’); End.
LOOPING ( FOR ) Perulangan negatif For variabel-kontrol:=nilai awal DownTo nilai akhir Do penyataan Contoh Var I:integer; Begin For I:=5 downto 1 do Writeln(I); End; End.
LOOPING ( FOR ) Perulangan tersarang Perulangan tersarang adalah perulangan yang berbeda di dalam perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan akan bertambah, mengerjakan perulangan yang lebh dalam lagi mulai dari nilai awalnya dan seterusnya.
Contoh Var I,J:Integer; Begin For I:=1 to 5 Do For j:=1 to 3 Do Write(I:8,J:3); End; Writeln; End. Bila program dijakankan akan menghasilkan: 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 4 1 4 2 4 3 5 1 5 2 5 3
LOOPING ( While ... Do ) Struktur Perulangan While-Do Perulangan ini menggunakan pernyataan While—Do. Pernyataan While—Do digunakan untuk melakukan proses perulangan suatu pernyataan atau blok pernyataan terus-menerus selama kondisi ungkapan logika pada While masih bernilai logika benar. BU : While kondisi ungkapan Do Pernyataan
Contoh Var I:Integer; Begin I:=0; While I<5 Do Writeln(I); I:=I+1; End; End. Bila program dijalankan akan menghasilkan: 0 1 2 3 4
LOOPING ( Repeat ... Until ) Struktur Repeat...Until Struktur Repeat…Until digunakan untuk mengulang pernyataan-pernyataan atau blok pernyataan sampai kondisi yang diseleksi di Until terpenuhi. Bentuk mumnya adalah: Repeat pernyataan Until
Contoh Var I:Integer Begin I:=0; Repeat I:=I+1; Writeln(I); Until I=5; End. Bila program dijalankan akan menghasilkan: 1 2 3 4 5
Penyeleksian Kondisi Dengan menyeleksi suatu kondisi, program dapat menentukan tindakan apa yang harus dikerjakan, bergantung dari hasil kondisi yang diseleksi tersebut. Untuk menyeleksi suatu kondisi, di dalam bahasa Pascal dapat dipergunakan pernyataan IF dan CASE.
Penyeleksian Kondisi ( IF ) Pernyataan IF Struktur pernyataan IF dapat berupa If—Then atau If—Then—Else dengan bentuk umum: If ungkapan Then pernyataan Ungkapan adalah kondisi yang akan diseleksi oleh pernyataan If. Bila kondisi yang diseleksi terpernuhi, maka pernyataan yang mengikuti Then akan diproses. Sebaliknya, bila kondisi tidak terpenuhi, maka yang akan diproses adalah pernyataan berikutnya
Contoh Var Nilai:ral; Ket : string[11]; Begin Ket:’Tidak Lulus’; Write(‘Nilai Ujian = ‘); Readln(Nilai); {Penyeleksian kondisi} If Nilai>60 Then Ket:=’Lulus’; Writeln(Ket); End.
Penyeleksian Kondisi ( IF ) If kondisi Then pernyataan1; Else pernyataan2; Pernyataan1 akan diproses apabila kondisi benarn(terpenuhi) sedang pernyataan2 akan diproses apabila kondisi tidak terpenuhi.
Contoh Var Nilai:Real; Begin Writeln(‘Nilai Ujian = ‘); Readln(Nilai); If Nilai>60 Then Writeln(‘Lulus’); Else Writeln(‘Tidak Lulus’); End.
Penyeleksian Kondisi ( Case ) Pernyataan Case Pernyataan Case dapat berbentuk struktur Case—Of atau Case—Of…. Else. Struktur Case—Of mempunyai suatu ungkapan logika yang disebut dengan selector dan sejumlah pernyataan yang diawali dengan suatu label permasalahan yang mempunyai tipe sama dengan selector. Pernyataan yang mempunyai label permasalahan yang bernilai sama dengan nilai selector akan diproses sedang pernyataan yang lainnya tidak.
Penyeleksian Kondisi ( Case ) Bentuk dari struktor Case—Of adalah: Case ungkapan Of daftar case-label1:pernyataan1; daftar case-label2:pernyataan2; daftar case-label3:pernyataan3; . daftar case-labeln:pernyataann; End; Daftar case label (label permasalahan) dapat berupa konstanta, atau range (himpunan) dari konstanta yang bukan bertipe real.
Contoh Var Nilai:Char; Begin Writeln(‘Nilai huruf yang didapat = ‘);Readln(Nilai); Case Nilai of ‘A’:Writeln(‘Sangat Baik’); ‘B’:writeln(‘Baik’); ‘C’:Writeln(‘Cukup’); ‘D’:Writeln(‘Kurang’); ‘E’:Writeln(‘Gagal’); End; End.
Penyeleksian Kondisi ( Case ) Struktur Case—Of…Else merupakan pengembangan dari struktur Case—Of dan juga merupakan pengembangan dari standar Pascal. Pada struktur Case—Of bila tidak ada kondisi yang terpenuhi berarti tidak ada pernyataan di lingkungan Case—Of yang diproses. Dengan struktur Case—Of…Else, bila Tidak ada kondisi yang terpenuhi, maka pernyataan yang akan diproses di dalam lingkungan Case—Of adalah pernyataan yang ada di Else.
Contoh Var Bersih,Beli,potong:Integer; Begin Writeln(‘Total Pembelian = ‘); Readln(beli); Case Beli of 0..1000:potong:=100; 1001..5000:potong:=200; Else potong:=500; End; Bersih:=beli-ptong; Writeln(‘Potongan = ‘, potongan); Writeln(‘Jumlah Bersih = ‘, Bersih); End.
Procedure Prosecure adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.
Procedure Prosedur banyak digunakan pada program yang terstruktur, karena: 1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur. 2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waltu bila diperlukan.
Contoh prosedur tanpa acuan Procedure Hitung; Var x,y:real; Begin Writeln(‘Nilai x: ‘); Readln(x); Y:=x*x; Writeln(‘Nilai Y= ‘, y:6;2); End; Begin Hitung; End.
Contoh prosedur secara acuan Procedure Hitung(var a,b,c); Begin C:=a+b; Writeln(c); End; Var X,y,z:integer; Begin X:=2;Y;=3; Hitung(x,y,z); End.
Function Fungsi hampir sama dengan prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Tipe tersebut ditulis pada akhir deklarasi fungsi yang didahului dengn titik koma, sebagai berikut. Function namafungsi(daftar_parameter):type;
Contoh Function Hitung(Var A,B : integer): integer; Begin Hitung := A + B; End; Var X,Y : integer; Write(‘Nilai X ? ‘); Readln(X); Write(‘Nilai Y ? ‘); Readln(Y); Writeln; Writeln(X,’ + ‘,Y,’ =‘,Hitung(X,Y)); End.
Perbedaan fungsi dengan prosedur 1. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada prosedur pada parameter yang dikirimkan secara acuan). 2. 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
Rekursif Suatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. Artinya, fungsi atau prosedur tersebut dapat memanggil dirinya sendiri. Berikut ini sebuah contoh fungsi dan prosedur yang rekursif.
function faktorial (nilai : integer) : integer; begin if nilai <= 0 then faktorial := 1; else faktorial := nilai * faktorial (nilai-1) end; Var N : integer; Begin Write(‘Berapa faktorial ? ‘); Readln(N); Writeln(N,’ faktorial = ‘,faktorial(N):9:0); End.
Function fibonacci ( n : integer ) : integer; Begin If n = 0 then fibonacci := 0 Else If n := 1 then fibonacci := 1 Else fibonacci := fibonacci (n-1) + fibonacci (n-2); End; Var N : integer; Write(‘Berapa banyak ? ‘); Readln(N); fibonacci(n); End.
Procedure reverse ( num : integer ); Begin If num < 10 then write(num) Else begin Write(num mod 10); Reverse(num div 10); End; End; Var N : integer; Begin Write(‘Berapa nilai ? ‘); Readln(N); reverse(n); End.
Array ( Larik ) Array Satu Dimensi Array Dua Dimensi
Array Satu Dimensi Array adalah sekumpulan data yang bertipe sama, yang anggota-anggotanya dapat diakses berdasarkan nomor indeks. Misalnya ada 26 huruf, kita sebut saja array Abjad, adalah sekumpulan 26 buah karakter yang berisi nama-nama abjad latin. Anggota pertama adalah ‘A’, anggota kedua adalah ‘B’ dan seterusnya hingga anggota ke 26 adalah ‘Z’.
Dalam notasi algoritma kita tuliskan : Abjad : array [1..26] of character Pemberian nilainya bisa dilakukan dengan cara, pertama pengisian satu-satu berdasarkan nomor indeks : Abjad [1] ‘A’ Abjad [2] ‘B’ dst sampai Abjad [26] ‘Z’ Dalam notasi algoritma , indeks array dimulai dari 1, artinya jika kita punya array dengan 26 anggota, indeksnya mulai dari 1,2,3…sampai 26.
Berikut penulisan array dengan menggunakan turbo Pascal: Abjad : array [1..26] of char; Contoh pemberian nilai untuk array diatas dengan menggunakan bahasa Pascal adalah : Abjad [1] := ‘A’; Abjad [2] := ‘B’ dst sampai Abjad [26] := ‘Z’
Contoh 1.1 Program Nama_array; Uses winrt; Type nameType = String[50]; ageType = 0..150; { age range: from 0 to 150 } Var name : nameType; age : ageType; Begin Write('Enter your name: '); Readln(name); Write('Enter your age: '); Readln(age); Writeln; Writeln('Your name:', name); Writeln('Your age :', age); Readln; End.
Contoh 1.2 Program P002; uses wincrt; var abjad : array [1..50] of char; i,maks : integer; begin clrscr; write ('Masukan jumlah data karakter : '); readln(maks); for i:=1 to maks do write ('Masukan karakter ke ',i,' : '); readln(abjad[i]); end; write ('Karakter yang dinput : '); write (abjad[i],’ ‘); readln; end.
Contoh 1.3 Program P003; uses wincrt; var angka:array [1..50] of integer; i,maks:integer; begin clrscr; write ('Masukan jumlah data : '); readln(maks); for i:=1 to maks do write ('Masukan angka ke ',i,' : '); readln(angka[i]); end; write ('Angka yang dinput : '); write(angka[i]); readln; end.
Contoh 1.4 Program Contoh_Deklarasi_Array_Beragam; Uses winCrt; Var NPM :array[1..20] of string[10]; Nama :array[1..20] of string[25]; Nilai : array[ 1. .20] of real; Umur : array[1 . .20] of byte; banyak,i : integer; Begin ClrScr; Write('Isi berapa data array yang diperlukan :'); Readln(banyak); For i := 1 to banyak Do Write('NPM =');Readln(NPM[i]); Write('Nama =');readln(Nama[i]); Write('Nilai=');readln(Nilai[i]); Write('Umur =');readln(Umur[i]); End; {cetak varibel array} Writeln('NPM NAMA NILAI UMUR '); For i:= 1 to banyak Do Writeln(Npm[i]:1 0,Nama[i] :25,Nilai[i] :3:2,' ',Umur[i] :3); End; Readln; End.
Studi Kasus : Input : nama, tugas, quiz, uts, dan uas Buat sebuah program perhitungan nilai akhir 5 orang mahasiswa ? Input : nama, tugas, quiz, uts, dan uas Proses : nilai = 10%*tugas + 20%*quiz + 30%*uts+ 40%*uas. Output : nama, dan nilai ditampilan menurut index
Jawaban. Program Studi_Kasus; Uses wincrt; Var Nama:array[1..5]of string; I,Tugas,Quiz,UTS,UAS:integer; Nilai:array[1..5]of real; Begin for I:=1 to 5 do begin Clrscr; write('Masukan Nama : ');readln(Nama[I]); write('Masukan Tugas : ');readln(Tugas); write('Masukan Quis : ');readln(Quiz); write('Masukan UTS : ');readln(UTS); write('Masukan UAS : ');readln(UAS); Nilai[I]:=0.1*Tugas+0.2*Quiz+0.3*UTS+0.4*UAS; end; writeln('Nama : ',Nama[I],' mendapat nilai :',nilai[i] :5:2); readln; End. Jawaban.
Array Dua Dimensi Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array). Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
Contoh Bentuk Tampilan Let us have the 2 dimensional array defined first. Think of a grid where each box is located by using horizontal and vertical coordinates just in the example below: 1 2 3 4 5 3,4 5,3 An example of a 5 by 5 2D array illustrated on a grid
1 2 3 4 5 10 Var my2DArray : Array[1..3][1..5] of Byte; Having the vertical axis as the 1st dimension and the horizontal one as the 2nd dimension, the above example is illustrated as follows: Var my2DArray : Array[1..3][1..5] of Byte; Begin my2DArray[2][4] := 10; End. 1 2 3 4 5 10
Contoh 2.1 Program Deklarasi_Array_Dua_Dimensi; Uses Wincrt; Var Tabel : Array [1..3, 1..2] of Integer; i,j : Integer; Begin ClrScr; Tabel [1,1] :=1; Tabel [1,2] :=2; Tabel [2,1] :=3; Tabel [2,2] :=4; Tabel [3,1] :=5; Tabel [3,2] :=6; For I := 1 to 3 Do For J:= 1 to 2 Do Writeln ('Elemen ',i,',',j ,'= ',tabel [i,j] ); End; End. Contoh 2.1
Contoh 2.2 Program penjumlahan_matrik; Uses Wincrt; Var Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer; i,j : Integer; Begin ClrScr; { input matrik ke satu } Writeln(' Elemen matrik satu'); For i := 1 to 3 Do For j := 1 to 2 Do Write('Elemen baris -',i,' Kolom -',j,'= '); Readln(matrik1 [i,j]); End;
Writeln('input elemen matrik dua'); For i:= 1 to 3 Do Begin Contoh 2.2 cont… {input matrik ke dua} Writeln('input elemen matrik dua'); For i:= 1 to 3 Do Begin For j:= 1 to 2 Do Write('Elemen baris -',i,' kolom -',j,'= '); Readln(matrik2 [i,j]); End;
{proses penjumlahan tiap elemen} For i := 1 to 3 Do Begin Contoh 2.2 cont… {proses penjumlahan tiap elemen} For i := 1 to 3 Do Begin For j:= 1 to 2 Do Hasil[i,j] :=Matrik1 [i,j]+Matrik2[i,j]; End;
{proses cetak hasil} For i:= 1 to 3 Do Begin For j:= 1 to 2 Do Contoh 2.2 cont… {proses cetak hasil} For i:= 1 to 3 Do Begin For j:= 1 to 2 Do Write(Hasil[i,j] :6); End; Writeln; Readln; End.