120 likes | 252 Views
Fungsi , Parameter, Rekursi. Daniel Riano Kaparang. Book reference: Jogiyanto . Konsep Dasar Pemrograman Bahasa C . Andi Star. Yogyakarta. 2006 Kristanto Andri . Algoritma dan Pemrograman dengan C . Graha Ilmu . Yogyakarta. 2009.
E N D
Fungsi, Parameter, Rekursi Daniel RianoKaparang • Book reference: • Jogiyanto. KonsepDasarPemrogramanBahasa C. Andi Star. Yogyakarta. 2006 • KristantoAndri. AlgoritmadanPemrogramandengan C. GrahaIlmu. Yogyakarta. 2009.
Fungsiadalahsuatubagiandari program yang dimaksudkanuntukmengerjakansuatutugastertentudanletaknyadipisahkandaribagian program yang menggunakannya (Jogiyanto, 2006). • Bahasa C dibentukdarikumpulanfungsi. • Fungsibanyakdigunakanuntukduaalasanutama: • Fungsimenjadikan program C mempunyaistruktur yang jelas. • Fungsidapatdigunakanuntukmenghindaripenulisan yang samasecaraberulang Function
Secaraumumfungsiterdiridaridefinisifungsidantubuhfungsi. • Definisifungsiberisitipedarifungsi, namafungsidan parameter jikadiperlukan. • Tubuhfungsiberisi statement-statement yang akanmelakukantugas yang diberikankepadafungsiitusendiri. Tipe_datanama_fungsi (param1, param2,…,param-N){ Statement1; Statement2; . . Statement-M; } MendefinisikanFungsi
Parameter dalam C terdiridari parameter formal dan parameter aktual (Kristanto, 2009). • Parameter formal adalahvariabel yang adapadadaftar parameter dalamdefinisifungsi. • Parameter aktualadalah parameter yang dapatberupavariabelataukonstantamaupunungkapan yang dipakaidalampemanggilanfungsi. • Ada 2 caramelewatkannilaidari parameter dalamfungsi: • Passing by value. • Passing by reference. Parameter
#include <stdio.h> intFindMax(int n1, int n2); Void PrintMax(int m); int main(){ inti=5, j=7, k; k=FindMax(i,j); PrintMax(k); return 0; } intFindMax(int n1, int n2){ if(n1>n2){ return n1; } else{ return n2; } } void PrintMax(int m){ printf(“Max number is : %d\n”, m); } Contoh1 Fungsi
Yang dikirimkankefungsiadalahnilaidaridatanya, bukanalamatmemoriletakdaridatanya. • Fungsi yang menerimakirimannilaiakanmenyampaikannyadialamat yang terpisahdarinilaiaslinya yang digunakanolehbagian program yang memanggilfungsi. • Karenaalasan ke-2 diatas, makaperubahannilaidifungsitidakakanmerubahnilaiaslidibagian program yang memanggilfungsiwalaupunkeduanyamenggunakannamavariabel yang sama. • Passing by value merupakanpengirimansearahyaitudaribagian program yang memanggilfungsikefungsi yang dipanggil. • Pengirimansuatunilaidapatdilakukanuntuksuatuungkapantidakhanyauntuksebuahvariabelatau element array ataukonstantasaja. Passing by value
#include <stdio.h> void PassByValue (float A,float B, char C); main() { char C='a'; float A=25, *Alamat_A; Alamat_A = &A; printf("PASS BY VALUE (PROGRAM UTAMA) : \n"); printf("Nilai A adalah %f dialamat %p \n", A, Alamat_A); printf("Nilai A/3 adalah %f \n", A/3); printf("Nilaikarakter C adalah %c \n \n", C); PassByValue(A, A/3, C); } void PassByValue(float A, float B, char C) { float *Alamat_A; Alamat_A = &A; A = 7; printf("PASS BY VALUE (DI FUNGSI) : \n"); printf("Nilai A adalah %f dialamat %p \n", A, Alamat_A); printf("Nilai A/3 adalah %f \n", A/3); printf("Nilaikarakter C adalah %c \n \n", C); } Contoh 2 Passing by value
Yang dikirimkankefungsiadalahalamatletakdarinilaidatanya, bukannilaidaridatanya. • Fungsi yang menerimakirimanalamatiniakanmenggunakanalamat yang samauntukmendapatkannilaidatanya. • Karenaalasan ke-2 diatas, makaperubahannilaidarifungsiakanmerubahnilaiaslidibagian program yang memanggilfungsi. • Passing by reference merupakanperngirimanduaarah, yaitudaribagian program yang memanggilfungsikefungsi yang dipanggildansebaliknya. • Passing by value tidakdapatdilakukanuntuksuatuungkapan, hanyauntuksebuahvariabelatauelemenlarikkonstantasaja. Passing by reference
#include <stdio.h> void PassByRefference (float *A,float B, char *C); void main() { char C='a'; float A=25, *Alamat_A; Alamat_A = &A; printf("PASS BY REFFERENCE (PROGRAM UTAMA) : \n"); printf("Nilai A adalah %f dialamat %p \n", A, Alamat_A); printf("Nilai A/3 adalah %f \n", A/3); printf("Nilaikarakter C adalah %c \n \n", C); PassByRefference(&A, A/3, &C); } void PassByRefference(float *A, float B, char *C) { float *Alamat_A; Alamat_A = A; *A=7; printf("PASS BY REFFERENCE (DI FUNGSI) : \n"); printf("Nilai A adalah %f dialamat %p \n", *A, Alamat_A); printf("Nilai B adalah %f \n", B/3); printf("Nilaikarakter C adalah %c \n \n", *C); } Contoh 3 Passing by reference
Rekursimerupakanfungsi yang memanggildirinyasendiri. Dalamkondisiiniakanterjadiperulanganpemanggilanfungsidanakanberhentiketikakondisiterpenuhi. • Iterasi, prosesperulangandengan statement yang samaakanberhentijikakondisiterpenuhi. • Penggunaanrekursidaniterasibergantungpadakebutuhan program, karenarekursiakanmengambilmemoricukupbanyak. Rekursi & Iterasi
intfaktorial(int n){ if(n==1) return 1; else return (n*faktorial(n-1)); } Contohrekursi
Void main(){ for (inti=1; i<5; i++){ i=i*i+1; } } Contohiterasi