250 likes | 383 Views
Dasar Komputer & Pemrog 2 A. minggu 5. PROCEDURE DAN FUNCTION. Procedure dan Function adalah suatu program yang terpisah dalam blok sendiri
E N D
DasarKomputer & Pemrog 2 A minggu 5
PROCEDURE DAN FUNCTION • Procedure dan Function adalahsuatuprogram yang terpisahdalambloksendiri • Dan memilikifungsisebagai sub-program (modul program) yang merupakansebuah program keciluntukmemprosessebagiandaripekerjaan program utama. PROCEDURE Prosedurdiawalidengankatacadangan Procedure didalambagiandeklarasiprosedur. Prosedurdipanggildandigunakandidalamblok program yang lainnyadenganmenyebutkanjudulprosedurnya.
Prosedurbanyakdigunakanpada program yang terstruktur, karena : 1. Merupakanpenerapankonsep program modular, yaitumemecah-mecah program yang rumitmenjadi program-program bagian yang lebihsederhanadalambentukprosedur-prosedur. 2. Untukhal-hal yang seringdilakukanberulang-ulang, cukupdituliskansekalisajadalamprosedurdandapatdipanggilataudipergunakansewaktu-waktubiladiperlukan. suatu procedure jugamemiliki header dan block. Perbedaanbentuknyadengan program hanyalahpadabagian header-nyasaja.
BentukUmum header suatu procedure adalah: PROCEDURE nama; Atau PROCEDURE nama (formal parameter : jenis); Jikamenggunakan procedure dalamsuatu program, maka procedure tersebutharusdituliskanpadabagiandeklarasi.
Contoh : Misalakandibuatsuatu procedure untukmenentukanbilanganbulatterbesardiantaratigabilanganbulat, maka procedure tersebutadalahsebagaiberikut : PROCEDURE maksimum; VAR max : integer; BEGIN IF a > b THEN max := a ELSE max := b; IF c > max THEN max := c; WRITELN(max); END.
Selanjutnya, didalamsuatu program, procedure inidapatdigunakandenganbentukpenulisansebagaiberikut : PROGRAM contoh_1; HEADER program utama VAR a,b,c : integer; PROCEDURE maksimum; VAR max : integer; BEGIN IF a>b THEN max := a ELSE max := b; deklarasiprogram IF c>max THEN max := c; utama WRITELN(max); END; BEGIN READLN(a,b,c); Maksimum statement program utama END.
JANGKAUAN IDENTIFIER Identifier yang dideklarasikandalamsuatublok program hanyaberlakupadablokdimana identifier tersebutdidefinisikan. 1. PROGRAM p; VAR x : real; PROCEDURE pl; VAR y : integer; begin ………………..; daerahberlakunya y daerah ………………..; berlakunyax end; begin ………………..; ………………..; end. y → variabel global
PROCEDURE DENGAN PARAMETER Nilaididalamsuatumodul program Pascal sifatnyaadalahlokal, artinyahanyadapatdigunakanpadamodulatau unit program yang bersangkutansaja, tidakdapatdigunakanpadamodulatau unit program yang lainnya. Contoh : ProsedurTanya_hitung; Var X,Y :real; Begin Write (‘Nilai X ?’); Readln(X); Y:=X*X; Writeln(‘Nilai Y = ‘,Y:6:2); End; Begin Tanya_Hitung; End. Hasilnya : Nilai X ? 5 Nilai Y = 25.00
Keterangan : Variabel X dan Y sifatnyaadalahlokaluntukprosedurTanya_hitung, artinyahanyadapatdigunakanpadamodulitusaja, Padamodul yang lain tidakdapatdigunakan, contoh : ProsedurTanya_hitung; Var X,Y :real; Begin Write (‘Nilai X ?’); Readln(X); Y:=X*X; End; Begin Tanya_Hitung; Writeln(‘Nilai Y = ‘,Y:6:2); End. Hasilnya : Error 31: Unknown identifier
FUNCTION Blok fungsihampirsamadenganblokprosedur, hanyafungsiharusdideklarasikandengantipenyaataujenishasilnya. Tipedeklarasiinimenunjukkantipehasildarifungsi Padabahasa Pascal dikenalbeberapafungsi, misalkan : abs, pred, sqrt, sqr, succdansebagainya. Fungsi-fungsitersebutbiasanyadikenaldengan Built in Function. Sedangkanfunction yang akanbicarakandisiniadalahfungsi yang kitabuatsendiri. Berbedadengan procedure, function merupakanmodul program yang menghasilkansuatukuantitas. Hal inidapatdilihatdaribentuk header-nya yang menyebutkanjenis data darikuantitas yang dihasilkan.
dihasilkan. Secaraumumbentuk header suatu function adalah : FUNCTION nama : jenishasil; AtauFUNCTION nama (formal parameter : jenis ) : jenis_hasil; Akandibuatsuatufungsidengannama MAX yang dapatmenentukan integer terbesardiantaradua integer. Function MAX (x,y : integer) : integer; Begin If x < y then MAX := y ; Else MAX := x; End; Selanjutnyakitadapatmenggunakan
Selanjutnyakitadapatmenggunakanfungsidiatasdalamsuatu program, misalnyadenganmenyatakansebagaiberikut : P := MAX(a,b); Z := MAX(a+b,a*b); Q := MAX(MAX(a,b),c); ………………………… dsb.
Function LOG (x : real) : real; Begin LOG := ln (x) / ln (10.0); End; Function POWER (x,y : real) : real; Begin POWER := exp (y * ln (X)) End; ab= POWER (a,b) ba= POWER (b,a) (p + q)r/s = POWER (p + q, r/s) ……………………………….. dll
Contoh : Function Hitung(Var A,B : integer): integer; Begin Hitung := A + B; End; VarX,Y : integer; Begin Write(‘Nilai X ? ‘); Readln(X); Write(‘Nilai Y ? ‘); Readln(Y); Writeln; Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y)); End. Hasilnya: Nilai X ? 2 Nilai Y ? 3 1 + 3 = 5
Perbedaanfungsidenganproseduradalah : • Padafungsi, nilai yang dikirimkanbalikterdapatpadanamafungsinya • (kalaupadaprosedurpada parameter yang dikirimkansecaraacuan). • Padacontoh, namafungsitersebutadalahHitungdannilai yang dikirimbalikberadapadanamafungsitersebut. • Sehingganamafungsiiniharusdigunakanuntukmenampunghasil yang akandikirimkandarifungsi, sebagaiberikut : • Hitung:= A + B; • Namafungsi yang berisinilai yang akandikirimkan
Karenanilaibalikberadadinamafungsitersebut, makafungsitersebutdapatlangsungdigunakanuntukdicetakhasilnya, sebagaiberikut : Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y)); Namafungsi yang langsungdigunakanuntukditampilkanhasilnya. Ataunilaifungsitersebutdapatjugalangsungdipindahkankepengenalvariabel yang lainnya, sebagaiberikut : Hasil := Hitung(X,Y); Writeln(X,’ + ‘,Y, ‘ + ‘,Hasil); Sedangpadaprosedur, namaprosedurtersebuttidakdapatdigunakanlangsung, yang dapatlangsungdigunakanadalahparameternya yang mengandungnilaibalik
REKURSIF Suatufungsiatauprosedurdalambahasa Pascal dapatbersifatrekursif. Artinya, fungsiatauprosedurtersebutdapatmemanggildirinyasendiri. Berikutinisebuahcontohfungsidanprosedur 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(‘Berapafaktorial ? ‘); Readln(N); Writeln(N,’ faktorial = ‘,faktorial(N):9:0); End. faktorial (4) = 4 * faktorial (3) 3 * faktorial (2) 2 * faktorial (1)
1 * faktorial (0) 1 = 4 * 3 * 2 * 1 * 1 = 24 Bilangan Fibonanci: F (0) = 0 F (1) = 1 F (n) = F ( n-1 ) + F (n-2); untuk n >1 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;
Procedure reverse ( num : integer ); Begin If num < 10 then write(num) Else begin Write(num mod 10); Reverse(num div 10); End; End;
FungsiStandar • Fungsistandararutmatika • • FungsistandarABS • Bentukumum : ABS(x); • Digunakanuntukmemutlakkansuatunilai yang ditunjukkanolehargumen x. • Contoh: • Begin • X:=-2.3; • Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1); • End. • Fungsi standar EXP Bentuk Umum : EXP(x:):real; • Digunakanuntukmenghitungnilaipangkatdaribilangan e yaitusebesar ex. Hasilnyaberupanilai real.
• FungsistandarLN Bentukumum : LN(x):real; Digunakanuntukmenghitungnilailogaritmaalam (natural logarithm) darinilai x. Hasilnyaberupanilai real. • FungsistandarINT Bentukumum : INT(x:real):real; Digunakanuntukmenghasilkannilai integer dari x. hasildarifungsiadalahtipe real dengannilai yang berupapembulatankebawah (nilaipecahandibuang) darinilai x. Contoh : Begin X:=9.99; Write(‘Nilai yang akandibulatkan = ‘,X); Writeln(‘Nilaipembulatannya = ‘,Int(X):3:2); End. Hasil : Nilai yang akandibulatkan = 9.99 Nilaipembulatannya = 9.00
FungsistandarFRAC Bentukumum : FRAC(x:):real; Digunakanuntukmendapatkannilaipecahandariargumen x. Argumen x dapatbernilai real maupun integer danhasildarifungsiadalah real. Contoh : Begin X:=9.99; Write(‘Nilai X = ‘,X,’ Nilaipecahannya = ‘,Frac(X):4:3); End. Hasilnya : Nilai X = 9.99 Nilaipecahannya = 0.990 • FungsistandarSQR Bentukumum : SQR(x); Digunakanuntukmenghitungnilaipangkatkuadratdariargumen x. Contoh : Begin X :=2; Write(‘Nilai X = ‘,X,’ Nilaikuadratnya = ‘,sqr(x)); End.
• FungsistandarSQRT Bentukumum : SQRT(x) : real; Digunakanuntukmenghitungnilaiakardariargumen x, hasilnyaberupa real. • FungsistandarPI, SIN, COS, ARCTAN FungsiStandar Transfer Digunakanuntukmerubahsuatunilaikebentuknilai lain. • FungsistandarCHR Bentukumum : CHR(x:byte):char; Digunakanuntukmerubahnilaidari byte x kebentukkarakter yang sesuaidengankode ASCII. Contoh : X := 66; Write(‘Nilai X = ‘,x,’ Nilaikarakternya = ‘,CHR(X)); Hasilnya : Nilai X = 66 Nilaikarakternya = B • FungsistandarORD Bentukumum : ORD(x):longint; Digunakanuntukmerubahnilai x kebentuknilailongint yang sesuaidengankode ASCII, merupakankebalikandarifungsi CHR.
• FungsistandarROUND Bentukumum : ROUND(x:real):longint; Digunakanuntukmembulatkannilaidari real x kenilailongint yang terdekat. Bilanilaipecahansamadenganataulebihbesardari 0.5 akandibulatkankeatas, sedangkalaulebihkecildari 0.5 akandibulatkankebawah. Contoh : Write(’10 dibagi 3 hasilpembulatanterdekat ‘,Round(10/3)); Writeln(’20 dibagi 3 hasilpembulatanterdekatadalah ‘,Round(20/3); Hasilnya : 10 dibagi 3 hasilpembulatanterdekatadalah 3 20 dibagi 3 hasilpembulatanterdekatadalah 7 • FungsistandarTRUNC Bentukumum : TRUNC(x:real):longint; Digunakanuntukmembulatkannilaidari real x kenilailongintterkecil. Ataudengankata lain membulatkankebawah.
FungsiStandarLainnyaFungsistandar yang tidaktermasukdalamkelompokpembagiandiatas : • Fungsi standar Hi, Lo, Swap • FungsistandarRandom Bentukumum : Random [(range :word)]; Digunakanuntukmenghasilkanangka random berkisardarinilailebihbesaratausamadengannoldanlebihkecildarisatu. Bila range tidakdisebutkan, hasildarifungsiiniadalah real, bila range disebutkan, hasilnyaadalah word. • FungsistandarSizeOf Bentukumum : SizeOf(x):word; Digunakanuntukmenunjukkanbesarnya byte yang digunakanolehsuatuvariabel x, hasilnyaberupanilai word. • FungsistandarUPCASE Bentukumum : UpCase(Ch:char):char; Digunakanuntukmerubahargumensuatukarakter yang ditunjukkanoleh Ch menjadibentukkarakterhurufbesar (upper case).