fungsi / prosedur - · pdf filemenggunakan fungsi pada setiap subprogram. ... void...

8

Click here to load reader

Upload: nguyenkhanh

Post on 06-Feb-2018

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

1

FungsiFungsi / / ProsedurProsedur

Algoritma dan PemrogramanTahar Agastani

Teknik Informatika UIN - 2008

FungsiFungsiFungsiFungsi (Sub Program) :(Sub Program) :• Beberapa statements digabungkan dalam suatu modul

(fungsi atau sub program) untuk menyelesaikan suatutugas tertentu,

• Merupakan sekumpulan instruksi Yang membentuk satu unit serta memiliki nama,

• Modul diperlukan bila sekumpulan statements tersebutsering digunakan pada tempat lain di dalam program,

• Digunakan untuk membantu organisasi program dan mengurangi besar (size) program.

Page 2: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

2

Keuntungan menggunakan modul (fungsi):1.Rancangan Top - down dengan teknik Sub goal, program

besar dapat dibagi menjadi modul-modul yang lebih kecil.2.Dapat dikerjakan oleh lebih dari satu orang dengan

koordinasi yang relatif mudah.3.Mencari kesalahan relatif lebih mudah karena alur logika

lebih jelas, dan kesalahan dapat dilokalisir dalam satumodul.

4.Modifikasi dapat dilakukan, tanpa mengganggu program secara keseluruhan.

5.Mempermudah dokumentasi.

• Bahasa C melengkapi fasilitas modular denganmenggunakan fungsi pada setiap SubProgram.

• Contoh pembagian program menjadi beberapa subprogram:Program Utama

SubProgram

SubProgram

SubProgram SubProgram

SubProgram

Sifat-sifat modul yang baik adalah :

Fan-In yang tinggi, yaitu makin sering suatu modul dipanggil olehpengguna, makin tinggi nilai fan-in.

Fan-Out yang rendah, makin sedikit tugas yang dilakukan oleh suatumodul makin rendah nilai fan-out. Dengan demikian, makin spesifiktugas yang dikerjakan oleh modul tersebut.

Self-Contained, atau memenuhi kebutuhannya sendiri.

Page 3: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

3

DimanaDimana::• type → tipe data dari return value.• function_name → nama fungsi• argument_list → variable input• statement_list → kumpulan instruksi

Argument (Function Parameter)Argument (Function Parameter)

Argument merupakan data yang dikirim dari program ke fungsi dan sebaliknya. Arguments dipergunakan untukmengirim data yang akan diproses.

Format Deklarasi Fungsi Secara Umum:

type function_name(<argument_list>) {

<statement_list>}

JangkauanJangkauan IdentifierIdentifierGlobal Identifier:Global Identifier:

•• Identifier yang dideklarasikan di luar fungsi danditempatkan di atas semua fungsi dalam suatu program.

• Jangkauan meliputi seluruh program.• Identifier yang dideklarasikan secara global, dapat di-

deklarasikan kembali (redeclared) di subprogram.

Local Identifier:Local Identifier:• Identifier yang dideklarasikan di dalam fungsi, termasuk

daftar parameter.• Jangkauan terbatas pada fungsi itu sendiri.

Page 4: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

4

Kerugian menggunakan Global Identifier :• Jika program semakin besar, maka semakin besar pula

kecenderungan terjadinya error. • Sulit melacak kesalahan.• Data tidak terjaga dengan baik, setiap subprogram

dapat mengubah isi variabel tanpa sepengetahuansubprogram lainnya.

Keuntungan menggunakan Global Identifier :• Transfer data antar modul sederhana.

Contoh jangkauan identifier baik yang bersifat Global maupun Local, dapat digambarkan sebagai berikut:

fungsi1(){……

}

fungsi2(){int z;…

}

main(){

int z;int y;…

}

scope dari variabel x

z dan y hanya dikenal oleh mainz di main berbeda dgn z di fungsi2()

z hanya dikenal oleh fungsi2()

scope dari variabel y

int x;

int y;

int x;

int y;

Page 5: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

5

Ada 2 jenis cara untuk mengirimkan argumen yaitu:1. Passing by Value

- Pada metode ini yang dikirimkan adalah nilai (value) dari variableyang dikirim sebagai argumen.

- Perubahan terhadap argumen yang terjadi di dalam fungsi, tidakakan mempengaruhi nilai dari variable tersebut dari fungsipemanggil ( hanya 1 arah, masuk ke fungsi ).

Contoh Program:#include <stdio.h>

/*deklarasi fungsi (function declaration/prototype)*/void print (int num);

void main(){int num = 7007;print(num); /* nilai variable ‘num’ tetap 7007 */

}

/* definisi fungsi (function definition) */void print (int num){

printf ( “ Nilai bilangan : %d\n“, num++);}

2. Passing by Reference

1. Pada cara ini yang dikirimkan adalah reference (pointer) darivariable yang dikirim sebagai argumen.

2. Perubahan argumen di dalam fungsi, akan mempengaruhi nilai variable pada pemanggil. Karena yang dikirimkan adalah pointer.

3. Jenis data yang dikirim sebagai argumen harus berupa variable, tidak dapat berupa bilangan konstan.

4. Pada C/C++ diperkenalkan reference parameter untukmenghindari penggunaan pointer untuk melakukan passing by Reference.

Page 6: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

6

/* Program C Hitung Luas Segi Tiga Tanpa Modul */#include <stdio.h>

void main(){

/* Deklarasi Variabel */float Alas, Tinggi, Luas;

/* Memasukkan Data */printf (“Masukkan Alas = “);scanf( “%f”, &Alas);printf (“Masukkan Tinggi = “);scanf( “%f”, &Tinggi);

/* Menghitung Luas */Luas = 0.5 * Alas * Tinggi;

/* Menampilkan Hasil */printf (“Luas Segi Tiga = %f \n”, Luas);

}

Program tersebut di atas akan dimodifikasi denganmenggunakan beberapa modul (fungsi), antara lain:

• Fungsi Memasukkan Data• Fungsi Menghitung Luas Segi Tiga• Fungsi Menampilkan Hasil Luas• Fungsi Utama (yang mengontrol tiga fungsi di atas).

/* Program C Hitung Luas Segi Tiga Menggunakan Modul */#include <stdio.h>

void Masuk_Data ( float &Alas, float &Tinggi ){

printf (“Masukkan Alas = “);scanf( “%f”, &Alas);printf (“Masukkan Tinggi = “);scanf( “%f”, &Tinggi);

}

Page 7: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

7

float Hitung_Luas ( float Alas, float Tinggi ){

float Luas;Luas = 0.5 * Alas * Tinggi;return Luas;

}

void Tampil_Data ( float Luas ){

printf ( “Luas Segi Tiga = %f \n”, Luas );}

void main() {float Alas, Tinggi, Luas;/* Pemanggilan Fungsi */Masuk_Data ( Alas, Tinggi );Luas = Hitung_Luas ( Alas, Tinggi );Tampil_Data ( Luas );

}

Return ValueReturn Value

Satu fungsi setelah melaksanakan pekerjaan, maka akan mengirimkan hasil, hasil dari fungsi dikembalikan dengan statement return.

Contoh program:

/* Program C menghasilkan return value */#include <stdio.h>

float lbsTokg( float ); /* function declaration */

Page 8: Fungsi / Prosedur -   · PDF filemenggunakan fungsi pada setiap SubProgram. ... void main(){int num = 7007; print ... Pada C/C++ diperkenalkan reference parameter untuk

8

void main(){

float lbs, kgs;printf (“ Enter your weight in pounds : “);scanf( “%f”, &lbs );kgs = lbsTokg( lbs ); /* calling function */printf (“ Your weight in Kilograms is %f ”, kgs);

}

/* lbsTokg () function definition */float lbsTokg ( float pounds ){

float kilograms = 0.453592 * pounds;return kilograms;

}

LatihanLatihanTulis fungsi double power(double x, int n) yang akanmenghitung xn, pangkat ke n dari x. Cek untuk melihatbahwa hasil perhitungan 3.57 benar. (Hasilnya: 6433.9296875)Gunakan fungsi library sqrt() untuk menuliskan sebuahfungsi yang mengembalikan akar pangkat empat dari intargument k. Nilai yang dikembalikan berupa double. Tulis sebuah fungsi yang menggunakan tiga argument: satu karakter dan dua integer. Karakter tersebut akandicetak. Integer pertama menyatakan berapa kali jumlahkarakter yang dicetak pada satu baris, dan integer keduamenyatakan jumlah baris yang dicetak. Tulis program yang menggunakan fungsi ini.