Rabu, 16 Januari 2013

Pemrogaraman Pascal

            Pemrograman Pascal adalah salah satu bahasa pemrograman yang tidak lekang dimakan waktu. sebagai bahan pembelajaran demi menigaktakn mutu pembelajaran pemrograman bagi mahasiswa maka di gunakan bahasa pemrograman turbo pascal. Pada praktek ini kami menggunakan turbo pascal 1,5.
TPW adalah program yang digunakan dalam penggunaan bahasa pemrograman PASCAL pada komputer dengan operating sistem adalah windows. Turbo Pascal sendiri merupakan versi yang populer dalam PASCAL. PASCAL sudah menjadi bahasa standar dalam dunia pendidikan komputer.
            Pascal adalah salah satu bahasa pemrograman yang paling sederhana dan merupakan bahasa yang dasar. Sehingga bisa jadi bagi seseorang yang pengin jadi programmer bahasa pascal salahsatu yang kudu dikuasai.
Pada semester 3 ini kami ada mata Pemrograman I. Dan praktikumnya menggunakan program TPW ini. Tidak terlalu sulit untuk mengerti bahasa pascal ini.
            Sebab struktur dalam pascal memiliki banyak kesamaan dengan struktur dalam algoritma. Jadi yang penting kita mengetahui algoritmanya maka dengan hanya mengubah bentuk strukturnya sesuai Pascal dalam program TPW ini maka program yang kita susun dengan algoritma tersebut akan dapat dijalankan.
itulah sekilas tentang materi pemrograman I dan menggunakan bahasa Turbo Pascal.
2. Tipe data


a. integer = bilangan bulat
b. real = desimal
c. string = kata dan kalimat
d. char = ‘a’ atau ‘b’
e. Boolean = true dan false


Konstanta

Konstanta ini seperti variabel, hanya saja nilainya sudah didefinisikan sebelumnya dan selalu tetap dan tidak bisa diubah dalam program.
Contoh:

Const
Myconst = 1234;
Var
i:word;
Begin
i:=40;
writeln(i*myconst);
End.

Sudah jelas to maksud program di atas? Ingat! Nilai konstanta tidak dapat diubah. Jika dalam program dicoba untuk diubah, maka akan error.



3. Latihan Soal
Pada Pertemuan praktek pertama dipemrograman I, saya belajar cara mencetak kalimat pada layar pascal, menghitung luas bangun datar dan voliume bangun ruang.
1. Untuk latihan pertama kami membuat hasil output ‘belajar bahasa pascal’ dan ‘sekolah(enter) tinggi informatika(enter) dan komputer.
2. Program untuk Menghitung Luas persegi panjang dan volume balok, adapun rumusnya adalah:
 Luas persegi panjang = Panjang(p) * Lebar(L)
Volume Balok = Panjang(p) * Lebar(L) * Tinggi(T)
1. Latihan Pertama.


A. progam pertamaku;
Uses wincrt;
Begin
Write(‘Belajar Pascal pertamaku’);
End.
Outputnya : Belajar Pascal Petamaku
B. program pertamaku;
uses wincrt;
writeln(‘sekoalh’);
writeln(‘Tinggi Informatika’);
writeln(‘Dan Komputer’);
end.
Outputnya: Sekolah
Tinggi Informatika
Dan Komputer


2. Menghitung Luas Persegi Panjang dan volume balok.
uses wincrt;
var
panjang,lebar,tinggi:integer;
begin
write(‘panjang=’);readln(panjang);
write(‘lebar=’);readln(lebar);
write(‘tinggi=’);readln(tinggi);
writeln(‘Luas =’,panjang * lebar);
writeln(‘Volume balok =’,panjang * lebar * tinggi);
end.
Proses Pengulangan
Dalam pemerosesan suatu data atau penghitungan serigkali dijumpai peroses penghilangan yang amat membosankan bila dikerjakan secara manual. Dalam hal ini pemakain komputer akan sangat berguna untuk melakukan pengulangan proses tersebut.
Bahasa pascal mengenal beberapa macam cara untuk melakukan proses pengulangan, yaitu:
a.    While…do…
b.    Repeat….until…
c.    For…to…do…
d.    If…then…
e.    Case…of…
a.  Pernyataan while..do..

Pernayataan ini dilakukan untuk melakukan proses pengulangan bila kondisi atau syrat tertentu yang terdapat pada awal blok terpenuhi. Proses pengulangan setelah pernyataan Do dilakukkan bila kondisi pada pernyataan While terpenuhi. Bila proses pengulangan tersebut terdiri dari beberapa pernyataan, maka harus dibuat blok dengan diawali pernyataan Begin dan diakhri pernyataan End.
Contoh program sederhana.


Syntax:

WHILE kondisi DO

BEGIN

…apa_yang_dilakukan…

END;


Bedanya dengan FOR ... DO, adalah pada WHILE ... DO, sebelum memulai masuk ke blok begin end, ada kondisi yang harus dicek. Jika terpenuhi baru masuk ke blok BEGIN END dan terus-menerus diulang hingga kondisi tidak tercapai. Jadi bisa saja yang di dalam blok BEGIN END tidak dijalankan sama sekali.

Contoh penggunaan:


i:=1;

WHILE i<6 DO

BEGIN

Writeln(i);

i:=i+1;
END;



1.Program While_do_pertama;
Uses wincrt;                                                   Const c:= 1609344
Var a,b:real ;
Begin
Writeln(‘konversi’);
Writeln(‘kilometer mil’);
a:=0;
while a< 20 do
begin
a:= a + 1;
b:= c* a;
writeln(a : 15 : 2, b: 8:2);
end;
end.
2.Program While_do_kedua;
Uses wincrt;
Var
jumlah, data ,i: integer;
lagi           : char;
rata_rata      : real;
Begin
Lagi:='Y';
while Lagi='Y' do
begin
Write ('Masukan  Nilai : ');
inc(i);
Readln(Data);
Jumlah:=jumlah+data;            
Write ('Apakah anda ingin menginputkan data lagi (Y/T)?: ');
Lagi:=upcase(readkey);
writeln;
end;
writeln;
 rata_rata:=Jumlah/i;
 writeln('Hasil rata-rata : ',rata_rata:0:2);  
end.


b.  Repeat…until…
Selain While..do..,bahasa pascal mengenal pasangan pernyataan Repeat…Until.. untuk proses pengulangan. Proses pengulangan terjadi setelah pernyataan Repeat berakhir pada pernytaan Until. Bila kondisi pada pernyataan Until masih terpenuhi, proses pengulangan akan dilakukan lagi.
Contoh program:

Syntax:

REPEAT

…apa_yang_dilakukan…

UNTIL kondisi


Ini adalah kebalikan dari WHILE DO, jika pada WHILE DO, sebelum menjalankan statement, maka kondisi dicek terlebih dahulu. Maka sebaliknya, pada REPEAT UNTIL, program menjalankan statement dalam blok BEGIN END satu kali terlebih dahulu, baru di akhir dilakukan pengecekan kondisi. Jika kondisi terpenuhi, maka Blok statement akan diulang lagi, sampai kondisi sudah tidak terpenuhi. Jadi, minimal blok program dalam REPEAT UNTIL dijalankan satu kali.

Contoh penggunaan:


i:=1;

REPEAT

Writeln(i);

i:=i+5;

UNTIL i>5;


Nah, itu semua adalah dasar dari pemrograman Pascal. Untuk lebih lanjut akan dibahas pada waktu berikutnya (semoga saya sempat membuat tutorial berikutnya). Berikut ini saya berikan bonus program BINTANG BERGERAK MEMANTUL-MANTUL DI LAYAR.



PROGRAM BintangMantulMantulSampaiDitekanEscape;
USES crt;
CONST
lebar=80;
tinggi=25;
xawal=1;
yawal=1;
VAR
x,y : byte;
dx,dy : shortint;
c : char;
BEGIN
{inisialisasi awal}
x:=xawal;
y:=yawal;
dx:=1;
dy:=1;
c:=#0;
REPEAT
clrscr; {bersihkan layar}
gotoxy(x,y);
write('*'); {mencetak bintang pada posisi X,Y}
x:=x+dx; {ubah koordinat x}
y:=y+dy; {ubah koordinat y}
{cek, jika sudah sampai di batas layar,
maka ubah dx & dy untukk ganti arah}
IF (X>=lebar) OR (X<=1) THEN dx:=-dx;
IF (Y>=tinggi) OR (Y<=1) THEN dy:=-dy;
{jika ada penekanan tombol, maka tombol tersebut dideteksi}
IF keypressed THEN c:=readkey;
delay(100); {menunda selama 100ms}
UNTIL c=#27;
END.



Sederhana bukan? Silahkan berkreasi dengan program yang lain.
1.Program Repeat_Until_pertama;
uses wincrt;
var
i:integer;
begin
clrscr;
i:=1;
repeat
writeln(‘Bahasa Pemograman Pascal’);
i:=i+1;
until (i>5);
readln;
end.
2.Program repeat_until_kedua;
uses wincrt;
var
jumlah,I,data:integer;
lagi  :char;
rata_rata : real;
Begin  
repeat
Write ('Masukkan Nilai : ');
 inc(i);
 readln(data);
 jumlah:=(jumlah +data);
Write ('Apakah anda ingin menginputkan data lagi (Y/T) ?');
Lagi:=upcase (readkey);
writeln;
until lagi='T';
write;
rata_rata:=jumlah/i;
writeln('Hasil rata-rata :',rata_rata:0:2);
End.




c.          For…to…do…

Syntax:

FOR variable := nilai_awal TO nilai_akhir DO

BEGIN

…apa_yang_diulang….

END;


Contoh penggunaan:

FOR i:=1 TO 5 DO

BEGIN

Writeln(i);
END;


Program di atas akan menuliskan angka 1 sampai 5 ke bawah di layar.

Jika ingin melakukan perhitungan mundur dari 5 ke 1, gunakan perintah DOWNTO sebagai pengganti TO (FOR i:=5 DOWNTO 1 DO).


BONUS!!! Untuk variabel yang bertipe char, bisa juga menggunakan FOR dengan cara berikut:

FOR c:='A' TO 'Z' DO write(c,' ');

Atau boleh juga menulisnya dengan

FOR c:='Z' DOWNTO 'a' DO write(c,' ');

Atau untuk tipe boolean, bisa juga seperti ini:

FOR b:=false TO true DO writeln(b);


Bagaimana? Keren kan?


1.Program for_do_pertama;
uses wincrt;
var
x,y:integer;
begin
for y:= 10 downto 1 do

begin
for x:= 1 to y do
begin
write('*');
end;
writeln;
end;
end.


2.Program for_do_kedua;
uses wincrt;
var
x,a,c,y,i:integer;
begin
y:=1;
x:=10;
a:=10;
c:=28;
gotoxy(a,i);
for i:=1 to 18 do begin
write('*');
end;
for i:=1 to 10 do begin
gotoxy(a,i);write('*');
gotoxy(c,i);write('*');
writeln;
inc(a);
dec(c);
end;
end






d.          If…then…
Salah satu dari tiga konstruksi fundamental adalah percabangan/branching. Dalam pascal, percabagan menggunakan syntax if then else dan case of.
IF kondisi THEN
BEGIN

END;
Dengan ELSE:
IF kondisi [and] kondisi [or] kondisi THEN
BEGIN

END {memang tanpa titik koma di sini; sebelum ELSE tidak perlu titik koma!!!}
ELSE
BEGIN

END;
Apabila kondisi terpenuhi, maka program akan menjalankan b\perintah yang ada setelah THEN. Tapi jika kondisi tidaki terpenuhi, maka program akan menjalankan program setelah ELSE.
Contoh penggunaan:
1.Progaram if_then_pertama;


Var i: integer;
Begin
Write(’Masukkan bilangan antara 1-100: ‘); readln(i);
If i<=50 then
Write(’bilangan kecil’)
Else
Write(’bilangan besar’);
End.

2.
program if_then_kedua;
uses wincrt;
var
nama:string;
nilai:integer;
begin
clrscr;
writeln(‘Nama dan Nilai Mahasiswa’);
writeln(‘————————-’);
write(‘Nama = ‘);
readln(nama);
write(‘Nilai = ‘);
readln(nilai);
if (nilai >=85) then begin
writeln(‘Nilai Huruf = A’);
end else if (nilai >=75) then begin
writeln(‘Nilai Huruf = B’);
end else if (nilai >=60) then begin
writeln(‘Nilai Huruf = C’);
end else if (nilai >=50) then begin
writeln(‘Nilai Huruf = D’);
end else if (nilai <50) then begin
writeln(‘Nilai Huruf = E’);
end;
readln;
end.


e.          Case..of..
Penggunaan Case OF ini lkebih berguna jika kondisi yang dibandingkan berupa range. Lihat contoh berikut:
CASE nilai OF
80..100 : grade:=’A';
70..79  : grade:=’B';
55..69  : grade:=’C';
45-54  : grade:=’D';
ELSE grade:=’E';
END;


1.Prorgram case_of_pertama;
uses wincrt;
var
Nilai : char;
begin
write ('Masukkan Grade Nilai = '); readln(Nilai);
Case Nilai of
'A'  : writeln ('Nilai = 90');
'B'  : writeln ('Nilai = 80');
'C'  : writeln ('Nilai = 60');
'D'  : writeln ('Nilai = 50');
'E'  : writeln ('Nilai = 30');
end;
Case Nilai of
'A','B','C' : writeln ('Keterangan = Lulus');
'D'         : writeln ('Keterangan = Tidak Lulus');
else writeln ('Keterangan = TB')
end;
Case Nilai of
'A'  : write ('Koment = Sangat Memuaskan');
'B'  : write ('Koment = Memuaskan');
'C'  : write ('Koment = Cukup');
'D'  : write ('Koment = Tidak Cukup') ;
else write ('Koment = Sangat Kurang');
end;
end.
2.program Case_of_kedua;
uses wincrt;
var
nama:string;
nomor,jumlah,harga:integer;
diskon,pajak,total:real;
lagi:char;
begin
clrscr;
writeln(‘<<< program swalayan >>>’);
writeln(‘========================’);
lagi:=’Y';
while lagi=’Y’ do begin
write(‘masukan nomor program=’); readln(nomor);
case nomor of
1:begin
write(‘masukan nama barang=’); readln(nama);
write(‘masukan jumlah barang=’); readln(jumlah);
write(‘masukan harga satuan Rp=’); readln(harga);
total:=jumlah*harga;
writeln(‘total harga Rp=’,total:0:2)
end;
2:begin
write(‘masukan nama barang=’); readln(nama);
write(‘masukan harga barang Rp=’); readln(harga);
if harga >= 100000 then begin
diskon:=80/100*harga;
total:=harga-diskon;
writeln(‘harga barang setelah didiskon Rp=’,total:0:2);
end else if harga < 100000 then begin
diskon:=10/100*harga;
total:=harga-diskon;
end;
writeln(‘harga barang setelah didiskon Rp=’,total:0:2);
end;
3:begin
write(‘masukan nama barang=’); readln(nama);
write(‘masukan harga barang Rp=’); readln(harga);
pajak:=10/100*harga;
total:=harga-pajak;
writeln(‘harga barang setelah kena pajak Rp=’,total:0:2);
end;
4:writeln(‘>>>keluar dari program<<<’);
end;
write(‘untuk melanjutkan program tekan Y/N=’); readln(lagi);
end;
readln;
end.


5. Arrray
Suatu array yang terdiri atas banyak variable dengan tipe data sama, dimana masing- masing elemen variable mempunyai nilai indeks. Setiap elemen array mampu untuk menyimpan satu jenis data (yaitu variable). Suatu aray dinyatakan denag type, sehingga variable yang bekerja dinyatakna denagn :
A = array [batas bawah..batas atas] of type data
Array dibedakan menjadi 3 macam, yaitu :
1. Array 1 dimensi
2.Array 2 dimensi
3. Array 3 dimensi
1. Array 1 Dimensi
Array 1 dimensi merupakan array yang mempunyai satu indeks.
Contoh :


1. program array_satu_dimensi;
Var tanda : Array [ 1…10] of integer
Contoh program pada praktek :
Uses wincrt;
Var  lagi:char;
 i,j:integer;
 arraystr: array[1..25] of string;
Begin
{inisialasi ARRAY}
lagi:='Y';
i:=1;
repeat
clrscr;
 write('Masukan nama : '); readln(arraystr[i]);
inc(i);
write('Apakah anda ingin memasukan data lagi (Y/T)?');
lagi:=upcase(readkey);
 until lagi<>'Y';
clrscr:
{cetak array}
for j:= 1 to i do begin
writeln(arraystr[j]);
 end;
 end.
2. program array_satu_dimensi;
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses wincrt;
Var
Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then Write(Prima[i],’ ‘); {*cetak array yg prima*}
End;
Readln;
End.


2. Array 2 Dimensi
Array 2 dimensi merupakan arra yang mempunyai 2 buah indeks. Array 2 dimensi dipakai untuk memepermudah pengertian tentang posisi, ciri khas, atau arti dari nama variable tersebut.
Contoh :
Var X: Array [1..2,1…3] of integer;
Pernyataan pada contoh diatas berarti bahwa variable X mempunyai 6 suku yaitu :
X [1,1]                        X [2,1]
X [1,2]                        X [2,2]
X [1,3]                        X [2,3]
Untuk membaca atau member nilai pada array 2 dimensi biasanya digunakan struktur control For..To…Do..
Contoh :
For I := 1 to 2 do
           For J := 1 to 3 do
                       Readln (x[I,j]);




1. Program array_dua_dimensi;
contoh program pada praktek :
Program Array_2;
Uses wincrt;
Var  lagi:char;
 i,j:integer;
arraystr: array[1..5,1..3] of string;
label cetak;
Begin
{inisialasi ARRAY}
lagi:='Y';
repeat
inc(i);
clrscr;
gotoxy(20,2); write('Masukan nama  : '); readln(arraystr[i,1]);
gotoxy(20,3); write('Masukan nim   : '); readln(arraystr[i,2]);
gotoxy(20,4); write('Masukan nilai : '); readln(arraystr[i,3]);
gotoxy(20,6); write('Apakah anda ingin memasukan data lagi (Y/T)?'); lagi:=upcase(readkey);
until lagi<>'Y';
cetak:
clrscr;
{cetak array}
for J:= 1 to I do begin
 writeln('___data ke- ',J);
 writeln('Nama  : ',arraystr[J,1]);
 writeln('Nim   : ',arraystr[J,2]);
 writeln('Nilai : ',arraystr[J,3])
 writeln
end;
end.
2.program array_dua_dimensi;
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 Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]);
End;
End;
Readln;
End.


3. Array 3 Dimensi
Array 3 dimensi merupakan array yang tersusun atas 3 buah indeks.
Contoh :
Var x :Array [1..2, 1..2, 1..3] of integer
Pernyataan tersebut berarti bahwa variable x mempunyai suku yaitu:
x[1,1,1]                       x[1,2,1]
x[1,1,2]                       x[1,2,2]
x[1,1,3]                       x[1,2,3]
dan seterusnya.
Be Creative,,,

Tidak ada komentar :

Posting Komentar