33
FUNGSI (FUNCTION) PADA C++ FUNGSI (FUNCTION) PADA C++ FUNGSI (FUNCTION) PADA C++ FUNGSI (FUNCTION) PADA C++

FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

Embed Size (px)

Citation preview

Page 1: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

FUNGSI (FUNCTION) PADA C++FUNGSI (FUNCTION) PADA C++FUNGSI (FUNCTION) PADA C++FUNGSI (FUNCTION) PADA C++

Page 2: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 3: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 4: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 5: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

FUNGSI STANDARTabel berikut menyajikan daftar sebagiansudah tersedia di dalam pustaka C dan

FUNGSI STANDARsebagian fungsi baku matematika yang

dan siap untuk digunakan.

55

Page 6: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 7: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

77

Page 8: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 9: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

DEKLARASI FUNGSI1. Diawali dengan fungsi utama (Prototype Fungsi

DEKLARASI FUNGSIFungsi)

99

Page 10: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 11: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

JENIS FUNGSIJENIS FUNGSI

1111

Page 12: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

Contoh Penggunaan FungsiFungsi Void & Non-void

1212

Page 13: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 14: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

Ruang LingkupLingkup Variabel

1414

Page 15: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

/* 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

Page 16: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

Ruang Lingkup• Variabel Global dikenal di seluruh daerah

di luar fungsi).

Lingkup Variabeldaerah dalam program (baik di dalam ataupun

1616

Page 17: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

Contoh :

1717

Page 18: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

/* 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

Page 19: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

• 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

Page 20: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

• Contoh

2020

Page 21: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 22: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 23: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 24: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 25: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

• 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

Page 26: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

• Contoh:

2626

Page 27: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 28: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

4. Pengiriman suatu nilai merupakan pengiriman

5. Pengiriman secara nilai dapat mengirimkan

pengiriman satu arah sebagai berikut:

mengirimkan suatu statement, yaitu data1/52828

Page 29: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 30: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

• 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

Page 31: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 32: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

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

Page 33: FUNGSI (FUNCTION) PADA C++ - Official Site of LILIS …lisetyo.staff.gunadarma.ac.id/Downloads/files/47882/FUNGSI+... · berbagai bahasa pemrograman, yaitu pemanggilan referensi (call

….SEE YOU NEXT WEEK….SEE YOU NEXT WEEK

Lilis Setyowati

3333