Upload
dangminh
View
242
Download
0
Embed Size (px)
Citation preview
FUNGSI (FUNCTION) PADA C++FUNGSI (FUNCTION) PADA C++FUNGSI (FUNCTION) PADA C++FUNGSI (FUNCTION) PADA C++
KONSEP DASAR
Program komputer yang dibuat untukberukuran sangat besar. Pengalamanterbaik untuk mengembangkan danmenyusunnya menjadi potongan-potongankecil (atau disebut modul) yang lebihdengan program yang terdiri dari banyakconquer.
KONSEP DASAR
untuk menjawab permasalahan umumnyaPengalaman telah menunjukkan bahwa cara
dan menangani program besar adalahpotongan program yang berukuran kecil-lebih mudah untuk ditangani dibandingbanyak sekali baris. Teknik ini disebut
22
Fungsi adalah suatu bagian darimengerjakan suatu tugas tertentu dan letaknyayang menggunakannya.
Program dari bahasa C dibentuk dari kumpulan
• Fungsi utama main()
• Fungsi pustaka (standar) mis: printf
• Fungsi yang dibuat sendiri oleh pemrogram
program yang dipergunakan untukletaknya dipisahkan dari bagian program
kumpulan fungsi, yaitu:
printf(), scanf()
pemrogram
33
Penyebab seringnya penggunaan Fungsi:
1. Fungsi menjadikan program C mempunyaimemisahkan bagian detail dalam fungsipendek, jelas dan mudah dimengerti (
2. Fungsi dapat digunakan untuk menghindariBagian program yang membutuhkannyatersedia, tanpa menulis ulang.
mempunyai struktur yang jelas. Denganfungsi-fungsi, maka fungsi utama akan lebih
(struktur program yang baik).
menghindari penulisan secara berulang-ulang.membutuhkannya cukup memanggil fungsi yang telah
44
FUNGSI STANDARTabel berikut menyajikan daftar sebagiansudah tersedia di dalam pustaka C dan
FUNGSI STANDARsebagian fungsi baku matematika yang
dan siap untuk digunakan.
55
FILE HEADERFILE HEADERSetiap pustaka baku mempunyai file headeruntuk semua fungsi yang ada di dalammaupun konstanta yang diperlukan oleh fungsifile header yang dapat di-include ke dalam
FILE HEADERFILE HEADERheader yang mengandung prototype fungsi
pustaka dan definisi dari tipe-tipe datafungsi tersebut. Berikut dicantumkan daftar
program.
66
77
DEFINISI FUNGSIFungsi secara umum terdiri dari 2 buah komponentubuh fungsi.
• Bentuk umum suatu fungsi:
• Contoh definisi fungsi:
DEFINISI FUNGSIkomponen utama yakni definisi fungsi dan
88
DEKLARASI FUNGSI1. Diawali dengan fungsi utama (Prototype Fungsi
DEKLARASI FUNGSIFungsi)
99
2. Diawali dengan fungsi yang lain
Apakah perbedaan antara ke-2 cara pendeklarasian
>> perlu diingat bahwa prinsip kerjadokumentasiprogram yang baik, maka sebaiknyadideklarasikan terlebih dahulu (cara I).
pendeklarasian tersebut?
program C sekuensial. Untuk alasansebaiknya semua fungsi yang akan dipergunakan
1010
JENIS FUNGSIJENIS FUNGSI
1111
Contoh Penggunaan FungsiFungsi Void & Non-void
1212
Ruang LingkupRuang lingkup / scope variabel adalah batasan
Terdapat 3 jenis scope variabel, yakni:
Variabel Lokal, hanya dikenal di daerah lokalfungsi)
Contoh - 1:
Lingkup Variabelbatasan atau jangkauan suatu variabel di dalam fungsi.
lokal saja (mis: blok statement tertentu, di dalam
1313
Ruang LingkupLingkup Variabel
1414
/* File program : lokal.c */#include <stdio.h>void fung_1(void);main() {
int i = 20;fung_1();printf("nilai i di dalam main() = %d\n", i);
}void fung_1(void){
int i =11; int i 11;printf("nilai i di dalam fung_1() = %d\n", i);
}Contoh eksekusi :nilai i di dalam fung_1() = 11nilai i di dalam main() = 20
1515
Ruang Lingkup• Variabel Global dikenal di seluruh daerah
di luar fungsi).
Lingkup Variabeldaerah dalam program (baik di dalam ataupun
1616
Contoh :
1717
/* File program : ekstern1.cContoh program dengan variabel eksternal */#include <stdio.h>
int i = 273; /* variabel eksternal */void tambah(void); main() {
printf("Nilai awal i = %d\n", i);i += 7;printf("Nilai i kini = %d\n", i);tambah();printf("Nilai i kini=%d\n",i); tambah();printf("Nilai i kini = %d\n", i);
}void tambah(void){ i++; } 1818
Contoh eksekusi :Nilai awal i = 273Nilai i kini = 280Nilai i kini = 281Nilai i kini = 282
• Variabel Statik
o Variabel yang nilainya tetap dipertahankankeluar dari bloknya.
o Variabel statik dibuat denganstatic
o Variabel statik merupakan modifiersehingga variabel statik dapat bersifat(tergantung dari letak deklarasinya
dipertahankan walaupun proses telah
menggunakan modifier (pengubah)
modifier dari variabel lokal atau global,bersifat statik lokal atau statik global
deklarasinya)
1919
• Contoh
2020
ArgumenArgumen
• Disebut juga Parameter
• Sebuah fungsi dapat mempunyai
opsionalbisa ada atau tidak
• argument-argument berfungsi sebagaivariabel-variabel bagi fungsi tersebutdideklarasikan lagi)
• argument harus bertipe data tertentu
ArgumenArgumen FungsiFungsi
mempunyai argument-argument yang bersifat
sebagai parameter inputan yang berupatersebut(bersifat lokal, sehingga tidak perlu
tertentu
2121
Terdapat 2 jenis parameter, yaitu:
• Parameter Formal
→ parameter yang ditulis pada deklarasi
• Parameter Aktual
→ parameter yang berlaku sebagaifungsi
→ Dapat berupa variabel atau nilai
deklarasi fungsi
sebagai inputan dalam pemanggilan suatu
nilai tertentu atau suatu statement
2222
Berdasarkan penjelasan di atas, maka komunikasisaling bertukar data, dengan cara:
• hasil balik dari suatu fungsi (return)
• dengan menggunakan variabel Global (
• parameter aktual yang dikirimkan ke parameter formal
komunikasi antar fungsi dilakukan dengan
Global (bersifat global)
parameter aktual yang dikirimkan ke parameter formal2323
PEMANGGILAN FUNGSI : BY VALUE / BY REFERENCE
• Ada dua cara pemrosesan fungsi dalampemanggilan nilai (call by value) danyang keduanya mempunyai karakteristik
• Metode pemanggilan nilai terjadipemanggilnya adalah berupa nilai, dantertulis di dalam argument pemanggilnya
• Sedangkan metode pemanggilan referensiberupa referensi (alamat) dan diterimavariable penerima ini akan mempengaruhimemanggilnya.
PEMANGGILAN FUNGSI : BY VALUE / BY REFERENCE
dalam berbagai bahasa pemrograman, yaitupemanggilan referensi (call by reference),
karakteristik berbeda.
jika yang dikirimkan ke fungsi olehdan tidak berpengaruh pada variable yang
pemanggilnya argument pemanggilnya.
referensi terjadi jika yang dikirimkan ke fungsioleh fungsi sehingga perubahan terhadap
mempengaruhi variable argument yang
2424
• Secara default pengiriman parameter di dalam
• Karakteristik dari pengiriman parameter
1. Yang dikirimkan ke fungsi adalah nilainya
2. Fungsi yang menerima kiriman nilaiterpisah dari nilai aslinya yang digunakanfungsi tersebut
3. Karena alasan no.2 di atas, maka perubahan(tidak mempengaruhi) pada nilai asliwalaupun keduanya menggunakan nama
4. Pengiriman secara nilai adalah pengirimanyang memanggil fungsi ke fungsi yang
5. Pengiriman suatu nilai dapat dilakukanuntuk sebuah variabel atau array atau
dalam adalah pass by value
secara nilai adalah:
nilainya, bukan alamat memori dari datanya
nilai ini akan menyimpannya di alamat yangdigunakan oleh bagian program yang memanggil
perubahan nilai difungsi tidak akan merubahasli di bagian program yang memanggil fungsinama variabel yang sama
pengiriman searah, yaitu dari bagian programyang dipanggil
dilakukan untuk suatu statement, tidak hanyaatau konstanta saja
2525
• Contoh:
2626
PenjelasanPenjelasan
Berdasarkan contoh di atas, maka pengiriman secara nilai1. Parameter aktual yang dikirimkan adalah berupa
dan data3; dalam statement: secaraNilai(data1,data2. Variabel data1 dan data3 menempati memori
secaraNilai()• Fungsi main(), nilai variabel data1 disimpan pada• Fungsi secaraNilai(), nilai variabel data1 disimpan
3. Perubahan nilai variabel data1 pada fungsi secaraNilaivariabel data1 ini dalam fungsi main() yang akan
PenjelasanPenjelasan ContohContoh
nilai dapat dijelaskan sebagai berikut:berupa nilai datanya, yaitu untuk variabel data1, data1/5,
,data1/5,data3);memori yang berbeda untuk fungsi main() dan fungsi
pada alamat = 24A0disimpan pada alamat = 24AEsecaraNilai() menjadi bernilai = 100 tidak merubah nilaiakan tetap bernilai = 20
2727
4. Pengiriman suatu nilai merupakan pengiriman
5. Pengiriman secara nilai dapat mengirimkan
pengiriman satu arah sebagai berikut:
mengirimkan suatu statement, yaitu data1/52828
FUNGSI REKURSIF• Fungsi yang telah dibahas sebelumnya dipanggil
yang bersangkutan. Fungsi rekursif adalahartinya fungsi tersebut dipanggil di dalam
• Fungsi factorial, yang menghitung nilaimerupakan pokok bahasan yang memudahkan
• Berikut adalah fungsi factorial yang diselesaikanInt factorial(int n) {
Int counter hasil=1; InFor (counter = n; counter >=
counter--)Hasil *=counter;
Return hasil; }
FUNGSI REKURSIFdipanggil dari bagian lain di luar tubuh fungsi
adalah suatu fungsi yang memanggil dirinya sendiritubuh fungsi itu sendiri.factorial dari suatu bilangan bulat positif
memudahkan pemahaman fungsi rekursif.diselesaikan dengan cara biasa:
>= 1;
2929
• Fungsi di atas menunjukkan bahwa nilaisehingga melakukan proses sebagai berikut
Hasil = 1;
Hasil = hasil * n; artinya hasil = n;
Hasil = hasil * (n-1) artinya hasil = n x (n
Demikian seterusnya sampain bernilai 1, atau
Factorial = n! = n x (n-1) x (n-2) …. X 1;
Fungsi ini dapat dituliskan dalam bentuk :
Factorial (n) = n ! = n x (n-1)!;
nilai faktorial dihitung menggunakan looping berikut:
= n x (n-1);
atau jika dituliskan sekaligus menjadi :
2) …. X 1;
3030
Yang menunjukkan sifat rekursif dari suatufungsi factorial yang telah ditulis dalamkembali dalam bentuk rekursif sbb :
Int factorial(int n) {
If (n == 0)
Return 1;
Else
Return (n * factorial(n-1));
}
suatu fungsi, yaitu (n-1)!. Oleh karena itu,dalam program C sebelumnya, dapat ditulis
3131
Contoh lain adalah menghitung jumlah dari suatudidefinisikan sebagai:
Fibonacci(0)= 0
Fibonacci(1) = 1
Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n
Sehingga fungsi dalam program C dapat dibuat
Long Fibonacci(long n) {
If(n==0|| n==1)
Return n;
Else
Return Fibonacci(n-1) + Fibonacci(n-2);
}
suatu deret fibonnaci, dimana deret tersebut
1) + Fibonacci(n-2)
dibuat sbb:
3232
….SEE YOU NEXT WEEK….SEE YOU NEXT WEEK
Lilis Setyowati
3333