Sabtu, 01 Mei 2010

Fungsi

1. Algoritma pendeklarasian fungsi

Fungsi (Function) adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Pada fungsi, tipe data harus dideklarasikan. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Tipe tersebut ditulis pada akhir deklarasi fungsi yang didahului dengan titik koma, sebagai berikut:

Function identifier(daftar-parameter): type;

Contoh :

Function Faktorial(Var Fak, Hasil : integer) : integer;

a. Fungsi tanpa parameter

Suatu fungsi tanpa menggunakan parameter berarti nilai balik yang akan dihasilkannya merupakan nilai yang sudah pasti.

b. Parameter dalam fungsi

Parameter dalam fungsi dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).

Contoh penulisan :

Function Hitung (A, B : integer) : integer;

c. Fungsi memanggil dirinya sendiri

Fungsi juga dapat memanggil dirinya sendiri. Proses fungsi memanggil dirinya sendiri juga merupakan proses rekursi (recursion).

d. Fungsi memanggil fungsi yang lain

Suatu fungsi dapat juga memanggil fungsi yang lain. Fungsi yang dipanggil letaknya harus berada di atas fungsi yag memanggil.

2. Contoh program untuk pemanggilan fungsi

a. Contoh penggunaan fungsi

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.

b. Contoh fungsi memanggil fungsi yang lain

Fuction Fungsi2(Y: integer) : integer;

Begin

Fungsi2 := Y * 2;

End;

Function Fungsi1(X: integer) : integer;

Begin

Fungsi2(X) + 5;

End;

Begin

Writeln(Fungsi1(3));

End.

3. Algoritma pendeklarasian prosedur

Prosedur (Procedure) adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian) dan tipe data tidak perlu dideklarasikan. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.

Prosedur banyak digunakan pada program terstruktur, karena:

- 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 swaktu-waktu bila diperlukan.

a. Parameter dalam prosedur

Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.

b. Prosedur memanggil dirinya sendiri

Prosedur memanggil dirinya sendiri merupakan suatu prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Walaupun proses ini merupakan algorithm yang baik, tetapi membutuhkan banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkan.

c. Prosedur memanggil prosedur yang lain

Di dalam suatu prosedur dapat memanggil prosedur yang lainnya.

4. Contoh program untuk pemanggilan prosedur

a. Contoh penggunaan prosedur

Procedure Garis;

Begin

Writeln(‘----------------------------------------‘);

End;

Begin

Garis;

Writeln(‘Rekayasa Perangkat Lunak”);

Garis;

End.

b. Contoh prosedur memanggil dirinya sendiri

Var

I : integer;

Procedure Rekursi;

Begin

Writeln(“Rekayasa Perangkat Lunak’);

I := I + 1;

If I <>

Rekursi

End.

Begin

I := 1;

Rekursi;

End.

c. Contoh prosedur memanggil prosedur yang lain

Procedure Pro1(X1 : integer);

Begin

Writeln(‘Nilai X = ‘, X1,’ ada di prosedur Pro1’);

End;

Procedure Pro2(X2 : integer);

Begin

Writeln(‘Nilai X = ‘, X2,’ ada di prosedur Pro2);

Pro1(X2);

End;

Var

X : integer;

Begin

X := 5;

Pro2(X);

End.

1. Perhitungan matematika menghitung rumus luas segitiga dengan menggunakan prosedur :

uses crt;

var

a, t : integer;

procedure segitiga;

begin

write ('Masukkan alas : '); readln (a);

write ('Masukkan tinggi : '); readln (t);

luas := a * t;

write ('Luas segitiga adalah ', luas);

end;

begin

segitiga;

readln;

end.

2. Perhitungan matematika (2 bilangan) :

program Prosedur;

uses crt;

var

Bil_1, Bil_2, Hasil : integer;

procedure Awal;

begin

Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');

Writeln('--------------------------------------');

Writeln;

Writeln('Nama : ____________________');

Writeln('NIS : __________');

Writeln;

end;

procedure Baca_Data;

begin

Write('Masukkan bilangan pertama : ');

Readln(Bil_1);

Write('Masukkan bilangan kedua : ');

Readln(Bil_2);

Writeln;

end;

procedure Kali(A,B : integer);

var

I : integer;

begin

Hasil := 0;

for I := 1 to B do Hasil := Hasil + A;

end;

procedure Kalikan(A,B : integer; var C : integer);

var

I : integer;

begin

C := 0;

for I := 1 to B do C := C + A;

end;

begin

ClrScr;

Awal;

Baca_Data;

Kali(Bil_1, Bil_2);

Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);

Kalikan(Bil_1, Bil_2, Hasil);

Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);

Writeln;

Write('Tekan Enter...');

Readln;

end.

STUDI KASUS

Amikom Jogja

1.Buku Tamu

a. Rancangan Tabel ukutamu
Field Type Data Keterangan
no Int(4) PRIMARY KEY AUTO_INCREMENT
nama Varchar(100)
email Varchar(100)
komentar Text

b. Buat file koneksi ke MySQL dan tutup koneksi :
koneksiMySQL.php

diskoneksiMySQL.php

Kedua file ini dipanggil atau diinclude-kan tatkala membutuhkan koneksi
ke MySQL

c. Buat form yang mempunyai elemen untuk pengisian nama,email,dan
komentar. Anggap masing-masing elemen mempunyai name :
nama, email, komentar. Action diisi dengan SimpanBukuTamu.php Simpan
dengan nama formBukuTamu.php

d. Buat file actionnya dengan nama SImpanBukuTamu.php
SImpanBukuTamu.php

e. File di atas belum mempunyai validasi data sehingga jika ada orang yang
mengisi bukutamu dengan data kosong akan tetap masuk. Untuk validasi
pada file
SimpanBukuTamu.php
diberi tambahan menjadi :

/*<
scr
ipt>
alert('Hai... nama kamu siapa?? boleh minta no.tlp ga???');win
dow.history.go(-1);//ada ganti baris disini
script>";*/
}
//mengecek email sudah diisi atau belum
else if ($email=="")
{
/*print"<
script>ale
rt('Namaku heri, kamu bisa telp di 02194321368');win
dow.history.go(-1);script>";*/
}
//mengecek komentar sudah diisi atau belum
else if ($komentar=="")
{
/*print"<
script>ale
rt('selamat belajar..ya.....');win
dow.history.go(-1)script>";*/
}
else
{
//membuka koneksi ke MySQL
include"koneksiMySQL.php";
//membuat query
$query="INSERT INTO buku_tamu(nama,email,komentar)
VALUES ('$nama','$email','$komentar')";
//mengeksekusi query
if (!mysql_query($query)){
//menampilkan error jika query yang dieksekusi salah
echo mysql_error();
//keluar dari program
exit;
}
//menutup koneksi ke MySQL
include"diskoneksiMySQL.php";
}
?>

f. Membuat tampilan bukutamu. Tampilan akan dibuat berbentuk table
dengan table dasar yang mempunyai 2 baris 4 kolom. Baris pertama tetap
baris kedua mengalami perulangan
No Nama Email Komentar

ListBukuTamu.php

// ada body disini

Buku Tamu









include"koneksiMySQL.php";
$query="SELECT * FROM buku_tamu ORDER BY no DESC";
If (!$hasil=mysql_query($query))
{
echo mysql_error();
exit;
}
$no=0;
while ($baris=mysql_fetch_array($hasil))
{
$no++;
print "
?> //NANTI DIHAPUS
onmouseover=\"this.style.backgroundColor='#F1F1F1';\"
onmouseout=\"this.style.backgroundColor='#FFFFFF';\">




";
}
include"diskoneksiMySQL.php";
?>
NoNamaEmailKomentar
$no$baris[nama]$baris[email]$baris[komentar]

Isi Buku
Tamu




g. Agar setiap orang selesai mengisi bukutamu dapat melihat hasilnya maka
halaman Action (SimpanBukuTamu.php) diberi fasilitas atau perintah
refresh halaman menuju LisBukuTamu.php setelah pemanggilan file
diskoneksiMySQL.php

//menutup koneksi ke MySQL
include"diskoneksiMySQL.php";
echo"
?> tar dihapus
http-equiv='refresh' content='0;url=ListBukuTamu.php'>";
?>
Tambahkan link pada file FormBukuTamu menuju file ListBukuTamu
dengan pesan Lihat List Buku Tamu

2. Membuat Halaman Administrasi Buku Tamu
Maksud dari Halaman Administrasi adalah halaman yang memuat Hapus dan
Update jika ternyata ada orang yang memasukkan data ke bukutamu berisi
pesan-pesan yang tidak kita inginkan.

a. Buat LisiBukuTamu.php sehingga tampilannya menjadi :

No Nama Email Komentar Hapus Edit
.. … … … Hapus Edit
Hapus Edit

b. Hapus.
Isi link hapus sehingga menjadi
Hapus
.

c. Buat File HapusBukuTamu.php
//membuka koneksi ke MySQL
include"koneksiMySQL.php";
//membuat query
$query="DELETE FROM bukutamu WHERE no='$no'";
//mengeksekusi query
if (!mysql_query($query)){
//menampilkan error jika query yang dieksekusi salah
echo mysql_error();
//keluar dari program
exit;
}
//menutup koneksi ke MySQL
include"diskoneksiMySQL.php";
echo"
?>// nanti dihapus
http-equiv='refresh' content='0;url=ListBukuTamu.php'>";
?>

Perhatikan $no pada query. Jika kita perhatikan maka variable tersebut
tidak bernilai. Nilai yang dikehendaki sebenarnya adalah nilai dari field no
yang ada di table bukutamu. Oleh sebab itu kita harus memparsing
variable no melalui link yang ada di ListBukuTamu.php dan menjadi :
Hapus
no adalah variable yang akan diparsing/dikirm ke file HapusBukuTamu.php
sedangkan $baris[no] yang terletak setelah tanda sama dengan (=)
adalah nilainya yang berupa nilai field no dari masing-masing record.

d. Membuat kotak dialog yang berisi apakah seseorang yakin untuk
menghapus sebuah data :
Buat perintah javascript pada halaman ListBukuTamu.php. Perintah
tersebut terletak sebelum penutup HEAD>
Tambahkan pula perintah Javascript pada Link Hapus sehingga menjadi :


HEAD>



confirmLink(this,'menghapus nama $baris[nama]'); \"> Hapus



e. Edit.
Isi link edit sehingga menjadi Edit
.

f. Buat file FormEditBukuTamu.php
Copy saja file FormBukuTamu.php kemudian tambahkan perintah PHP
dibagian atasnya. Jika file tersebut sudah jadi maka akan tampak
dibutuhkan suatu variable untuk menampilkan data yang ditunjuk atau
record yang diklik bagian Edit-nya. Hal ini serupa dengan masalah Hapus.
Sehingga kirim va riable no dengan nilai $baris[no pada file
ListBukuTamu.php sehingga menjadi :
Edit

FormEditBukuTamu.php
include"koneksiMySQL.php";
$query="SELECT * FROM buku_tamu WHERE no='$no'";
If (!$hasil=mysql_query($query))
{
echo mysql_error();
exit;
}
$baris=mysql_fetch_array($hasil);
include"diskoneksiMySQL.php";
?>

<
HTML>
<
HEAD><
TITLE> Buku Tamu TITLE>HEAD>
<
BODY>

BUKU TAMU




















Nama : <
INPUT TYPE="text" NAME="nama" VALUE="$baris[nama] ?>">
Email :<
INPUT TYPE="text" NAME="email" VALUE="$baris[email] ?>">
Komentar :
<
INPUT TYPE="submit" Value="Edit">
<
INPUT TYPE="reset" Value="Batal">


BODY>
HTML>


g. Buat file Action dengan nama EditBukutamu.php

include"koneksiMySQL.php";
$query="UPDATE bukutamu SET nama='$nama', email='$email,
komentar='$komentar' 'WHERE no='$no'";
if (!mysql_query($query)){
echo mysql_error();
exit;
}
include"diskoneksiMySQL.php";
echo"
?> //nanti dihapus
http-equiv='refresh' content='0;url=ListBukuTamu.php'>";
?>

Perhatikan $no pada EditBukutamu.php
. jika dilihat dari file sebelumnya
yaitu FormEditBukuTamu.php maka tidak terdapat variable no atau
elemen form yang NAME-nya bernilai no karena yang ada hanyalah nama,
email, dan komentar. Sehingga $no pada file EditBukutamu.php
tidak ada nilainya. Agar mempunyai nilai maka kita tambahkan satu INPUT dari

form dengan NAME=no VALUE-nya adalah nilai field no dari table
bukutamu dan typenya HIDDEN agar nilainya tidak tampak di browser
penambahan dituliskan pada bagian setelah <
FORM METHOD= … >
sehingga menjadi :

<
FORM METHOD
=POST ACTION="EditBukuTamu.php">
<
INPUT TYPE="hidden" NAME="no" VALUE="">


h. Membuat hak akses.
Untuk membuat akses terhadap fasilitas Hapus dan Edit pada bukutamu
atau dengan kata lain Link Hapus dan Edit akan muncul jika orang
melakukan Login dengan mengisi Username dan Password harus
dibuatkan dulu table yang menyimpan data username dan password
Field Type Data Keterangan
username Varchar(20) PRIMARY KEY
password Varchar(16)
Insertkan datanya misal username-nya diisi admin dan passwordnya juga
admin. Namun pada password gunakan fungsi PASSWORD

i. Buat Form Login dengan tampilan kurang lebih berikut ini
simpan dengan nama FormLogin.php isikan ACTION-nya ProsesLogin.php
kemudian buat file tersebut

/*
include"koneksiMySQL.php";
$query="SELECT * FROM admin WHERE username='$username' AND
password=PASSWORD('$password')";
if (!$hasil=mysql_query($query)){
echo mysql_error();
exit;
}
if (mysql_num_rows($hasil)==0)
{

echo"
?>//del
<
Script>ale
rt('Login invalid.. buruan hub.02194321368');window.history.go(-1)script>";

}
else{
echo"http-equiv='refresh' content='0;url=ListBukuTamu.php'>";
}
include"diskoneksiMySQL.php";
?>
*/

Jika kita mencoba login maka hal tersebut sudah bisa dijalankan namun
seseorang yang login ataupun tidak bisa melihat link Hapus dan Edit. Agar
maksud yang diharap tercapai maka kita manfaatkan session. Sehingga
pada halaman ProsesLogin.php menjadi :

/*

else{
$baris=mysql_fetch_array($hasil);
$user=$baris[username];
$pwd=$baris[password];
session_start();
session_register("user");
session_register("pwd");
echo"?> //del
http-equiv='refresh' content='0;url=ListBukuTamu.php'>";
}

?>
*/

j. Selanjutnya buat pengecekan pada halaman ListBukuTamu.php apakah
session user dan pwd sudah terdaftar. Jika sessionnya sudah terdaftar
maka link Hapus dan Edit ditampilkan. Untuk membuat hal itu berarti kita
pisahkan skrip yang ada tulisan Hapus dan Edit kemudian dimasukkan
sebagai pernyataan dalam kondisi pengecekan session menjadi :

print "onmouseover=\"this.style.backgroundColor='#F1F1F1';\"
onmouseout=\"this.style.backgroundColor='#FFFFFF';\">
$no
$baris[nama]
$baris[email]
$baris[komentar]";
if (session_is_registered(user) && session_is_registered(pwd)){
print"
<
A HREF=\"HapusBukuTamu.php?no=$baris[no]\" onClick = \"

return confirmLink(this,'menghapus nama $baris[nama]'); \"> Hapus
A>

<
A HREF=\"FormEditBukuTamu.php?no=$baris[no]\"> Edit

A>
";
}
print"";


k. Buat link Logout dan sebagaimana Hapus dan Edit Logout tidak akan
muncul jika tidak ada session yang terdaftar
No Nama Email Komentar Logout
Hapus Edit
.. … … …
Hapus Edit
Hapus Edit


l. Isikan nilai link Logout dengan file Logout.php kemudian buat file tersebut.
/*
session_start();
session_unregister("user");
session_unregister("pwd");
session_destroy();
include("ListBukuTamu.php");
?>
*/

m. Kemudian kita lindungi pula file :
HapusBukuTamu.php, FormEditBukuTamu.php, dan EditBukuTamu.php
Agar orang yang tidak login tidak dapat mengaksesnya. Untuk hal itu buat
file CekLogin.php kemudian file tersebut dipanggil dalam tiga file yang
akan dilindungi.
/*
session_start();
if (!session_is_registered(user) && !session_is_registered(pwd))
{
print"
?> //del
<
script> ale
rt('anda harus telp heri : 02194321368 ...');script>";
print"http-equiv='refresh' content='0;url=ListBukuTamu.php'>";
exit;
}
?>
*/
Include file CekLogin.php terletak di bagian atas masing-masing ketiga file
tersebut. Karena CekLogin akan melindungi 3 file tersebut. Jika tidak ada
pendaftaran session maka otomatis program yang ada di bawah
cekLogin.php tidak akan dikerjakan. Tahu sebabnya?
Catatan : pahami petunjuk-petunjuk serta langkah-langkah di atas untuk
menyelesaikan studi kasus lainnya

sumber materi : materi online dari kampus amikom.ac.id