SlideShare a Scribd company logo
1 of 69
ALGORITMA DAN DASAR PEMROGRAMAN
KONSEP DASAR FUNGSI
 Program komputer yang dibuat untuk
menjawab permasalahan umumnya
berukuran sangat besar, karena itu perlu
dibuat potongan-potongan program
yang lebih kecil (biasa disebut modul)
yang lebih mudah untuk ditangani
dibanding dengan program yang terdiri
dari banyak baris.
 Modul program ini disebut fungsi
(function).
KONSEP DASAR FUNGSI
 Pemrograman C ditulis dengan
mengkombinasikan fungsi baru yang
ditulis oleh pemrogram (disebut
programmer-defined function) dengan
fungsi yang telah tersedia di dalam
pustakanya (disebut standard library).
 Fungsi merupakan blok dari kode yang
dirancang untuk melakukan tugas
khusus.
KONSEP DASAR FUNGSI
 Tujuan pembuatan fungsi:
1. Program menjadi lebih terstruktur
dengan memecah program menjadi
beberapa program yang lebih kecil,
yang masing-masing mempunyai tugas
tertentu.
2. Mengurangi duplikasi kode atau
penulisan kode yang sama yang ditulis
secara berulang-ulang.
KONSEP DASAR FUNGSI
 Supaya dapat digunakan, fungsi harus
dapat dipanggil dari bagian program yang
membutuhkannya. Karena itu fungsi harus
diberi nama dan nama ini harus
didefinisikan dan dideklarasikan terlebih
dahulu.
 Pemanggilan fungsi bertujuan untuk
mengerjakan suatu tugas tertentu yang
dapat berupa tugas input/output, tugas
penyeleksian, atau tugas perhitungan.
KONSEP DASAR FUNGSI
 Bagian program yang menggunakan
fungsi dapat berkomunikasi dengan
fungsinya lewat pengiriman parameter-
parameter yang dilakukan melalui
argumen-argumen fungsi.
MENDEFINISIKAN FUNGSI
 Fungsi terdiri dari dua buah komponen
utama, yaitu definisi fungsi dan tubuh
fungsi.
 Definisi fungsi berisi tipe dari fungsi,
nama fungsi, dan argumen-argumennya
jika digunakan.
 Tubuh fungsi berisi statemen-statemen
yang akan melakukan tugas yang diberikan
kepada fungsi tersebut, yang ditulis di
dalam tanda kurung kurawal buka dan
tutup.
MENDEFINISIKAN FUNGSI
 Bentuk umum fungsi, yaitu:
MENDEFINISIKAN FUNGSI
 Definisi fungsi ditulis sebelum tubuh
fungsi tanpa diakhiri dengan titik koma.
 Tipe di definisi fungsi menunjukkan tipe
dari fungsi, dimana tipe dari fungsi ini
tergantung dari tipe data hasil balik yang
akan diberikan oleh fungsi.Jika hasil
balik dari fungsi misalnya berupa nilai
pecahan, maka tipe fungsi dapat dibuat
float atau double atau long double.
MENDEFINISIKAN FUNGSI
 Jika fungsi tidak memberikan hasil balik,
maka tipenya adalah void. Tipe dari
fungsi ini dapat tidak ditulis jika tipenya
adalah int atau char. Jadi, jika suatu
fungsi didefinisikan tanpa menggunakan
tipenya, maka akan dianggap bertipe
int.
 Nama dari fungsi merupakan nama
yang dibentuk sendiri oleh pembuat
program.
MENDEFINISIKAN FUNGSI
 Sebuah fungsi dapat memiliki satu atau
lebih argumen yang ditulis dengan
dipisahkan oleh koma atau suatu fungsi
dapat tidak mempunyai argumen sama
sekali. Jika argumen tidak digunakan,
kurung buka dan kurung tutup setelah
nama dari fungsi tetap harus dituliskan.
 Tipe data void dapat dituliskan sebagai
pengganti argumen untuk fungsi yang
tidak menggunakan argumen.
MENDEFINISIKAN FUNGSI
 Argumen yang berada di definisi fungsi
ini disebut dengan argumen formal
atau parameter formal. Parameter-
parameter formal ini dimaksudkan
sebagai alat komunikasi untuk data
yang dikirimkan dari bagian program
yang menggunakan fungsi ke fungsi
bersangkutan.
MENDEFINISIKAN FUNGSI
 Parameter-parameter formal dapat
dituliskan dengan dua cara, yaitu cara
baru dan cara lama.
 Cara baru dilakukan dengan menuliskan
parameter-parameter formal yang diawali
dengan tipe datanya. Contohnya:
int Fungsi_Ku(float A, int B, char C)
 Contoh yang salah:
int Fungsi_Ku(float A, B, char C)
MENDEFINISIKAN FUNGSI
 Cara lama untuk menuliskan parameter formal
adalah dengan memecahnya menjadi dua bagian.
Pertama, semua parameter formal ditulis tanpa tipe
datanya. Kedua, parameter-parameter formal ini
dideklarasikan terpisah dengan tipe datanya setelah
definisi dari fungsi. Contoh:
int Fungsi_Ku(A, B, C)
float A;
int B;
char C;
{
/*tubuh fungsi*/
}
/*tidak diakhiri titik koma*/
/*diakhiri titik koma*/
/*diakhiri titik koma*/
/*diakhiri titik koma*/
MENDEFINISIKAN FUNGSI
 Standar ANSI lebih menganjurkan
penggunaan cara baru.
 Penulisan parameter-parameter formal
dengan cara lama digunakan pada awal
bahasa C diciptakan dan masih banyak
yang menggunakannya sampai saat ini
untuk menjaga kompatibilitas dengan
kompiler C yang menggunakan cara lama.
Kompiler-kompiler C yang baru umumnya
mendukung dua cara penulisan ini.
MENDEFINISIKAN FUNGSI
 Berikut ini beberapa contoh penulisan
definisi fungsi yang benar:
char Ke_Besar(char C)
void Tampil_N(int N)
void Hapus_Layar()
void Hapus_Layar(void)
double Maksimum(double X, double Y)
PARAMETER FORMAL &
PARAMETER AKTUAL
 Parameter formal adalah variabel yang
ada pada daftar parameter dalam
definisi fungsi.
 Parameter aktual adalah parameter
yang dapat berupa variabel atau
konstanta maupun ungkapan yang
dipakai dalam pemanggilan fungsi.
DEKLARASI FUNGSI
 Suatu fungsi yang memberikan hasil
balik selain tipe int perlu dideklarasikan
sebelum digunakan, karena jika suatu
fungsi tidak dideklarasikan akan
dianggap fungsi tersebut memberikan
nilai balik berupa tipe int.
 Untuk alasan dokumentasi program
yang baik, sebaiknya semua fungsi yang
digunakan dideklarasikan terlebih
dahulu termasuk yang bertipe int.
DEKLARASI FUNGSI
 Beberapa kompiler C dapat diatur untuk
selalu mendeteksi semua deklarasi
fungsi-fungsi yang digunakan termasuk
yang bertipe int.
 Deklarasi fungsi ditulis sebelum fungsi
tersebut digunakan.
DEKLARASI FUNGSI
 Bentuk umum deklarasi fungsi:
tipe nama-fungsi(argumen);
 Tipe adalah tipe dari fungsi yang akan
digunakan dan harus sama dengan tipe
fungsi yang didefinisikan
/* ------------------------------------------------------------------------
Nama Program: ADP_fungsi_1_deklarasi_fungsi.cpp
Mendeklarasikan Fungsi
------------------------------------------------------------------------ */
#include <stdio.h>
#include <stdlib.h>
double Absolut(double X); //deklarasi fungsi
main()
{
float Nilai;
printf("Contoh Program Mendeklarasikan Fungsin");
printf("__________________________________n");
printf("n");
Nilai = -123.45;
printf("%7.2f nilai mutlaknya adalah %7.2fn", Nilai, Absolut(Nilai));
printf("n");
system("pause");
}
//fungsi untuk memutlakkan nilai negatip
double Absolut(double X) //definisi fungsi
{
if(X<0) X=-X;
return(X);
}
/* ------------------------------------------------------------------------
Nama Program: ADP_fungsi_1_deklarasi_fungsi.cpp
Mendeklarasikan Fungsi
------------------------------------------------------------------------ */
#include <stdio.h>
#include <stdlib.h>
//fungsi untuk memutlakkan nilai negatip
//dimana fungsi dideklarasikan terlebih dahulu
double Absolut(double X) //definisi fungsi
{
if(X<0) X=-X;
return(X);
}
main()
{
float Nilai;
printf("Contoh Program Mendeklarasikan Fungsin");
printf("__________________________________n");
printf("n");
Nilai = -123.45;
printf("%7.2f nilai mutlaknya adalah %7.2fn", Nilai, Absolut(Nilai));
printf("n");
system("pause");
}
PROTOTYPE FUNGSI
 Prototype fungsi adalah
mendeklarasikan fungsi dengan
menyebutkan argumen fungsinya.
 Pada contoh program
ADP_fungsi_1_deklarasi_fungsi.cp
p, prototype fungsi terdapat pada
bagian deklarasi fungsi dimana fungsi
double Absolut menyebutkan
argumen fungsi (double X).
HASIL BALIK FUNGSI
 Suatu fungsi dibuat untuk maksud
menyelesaikan tugas tertentu.
 Suatu fungsi dapat hanya melakukan suatu
tugas saja tanpa memberikan suatu hasil
balik atau melakukan suatu tugas dan
kemudian memberikan suatu hasil balik.
 Fungsi yang hanya melakukan suatu tugas
saja tanpa memberikan hasil balik
misalnya adalah fungsi untuk menampilkan
hasil di layar.
/* --------------------------------------------------------------------------
Nama Program: ADP_fungsi_2_hasil_balik_fungsi.cpp
Hasil Balik Fungsi
--------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Tampil_S_N(char *String, int N); //prototype fungsi
main()
{
printf("Contoh Program Hasil Balik Fungsin");
printf("_____________________________n");
printf("n");
Tampil_S_N("Bahasa Cn",3);
printf("n");
system("pause");
}
//fungsi menampilkan n kali nilai string
void Tampil_S_N(char *String, int N) //definisi fungsi
{
int I;
for(I=1;I<=N;I++) printf(String);
}
HASIL BALIK FUNGSI
 Fungsi Tampil_S_N() pada contoh di slide
sebelumnya tidak memberikan hasil balik.
Fungsi yang tidak memberikan hasil balik adalah
fungsi yang mempunyai tipe hasil void.
 Jika suatu fungsi memberikan hasil balik,
makanilai hasil balik yang diberikan oleh fungsi
dapat dilakukan oleh statemen return yang
diikuti oleh nilai hasil baliknya yang ditulis dalam
tanda kurung. Statemen return saja tanpa diikuti
oleh nilai baliknya akan mengembalikan proses
dari fungsi kebagian program yang
memanggilnya tanpa memberikan nilai hasil
baliknya.
/* --------------------------------------------------------------------------
Nama Program: ADP_fungsi_2a_hasil_balik_fungsi.cpp
Hasil Balik Fungsi
--------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Tampil_S_N(char *String, int N); //prototype fungsi
main()
{
printf("Contoh Program Hasil Balik Fungsin");
printf("_____________________________n");
printf("n");
Tampil_S_N("Bahasa Cn",3);
printf("n");
system("pause");
}
//fungsi menampilkan n kali nilai string
void Tampil_S_N(char *String, int N) //definisi fungsi
{
int I;
for(I=1;I<=N;I++) printf(String);
return;
}
HASIL BALIK FUNGSI
 Program berikut ini dimaksudkan untuk
menghitung N Faktorial (N!). Nilai N!
adalah sebesar 1 x 2 x ... x N dengan N
adalah nilai positif. Jika N bernilai negatif
atau nol,maka fungsi faktorial() akan
memberikan hasil balik nilai 0. Nilai F
adalah hasil balik yang akan diberikan oleh
fungsi untuk nilai N positif. Variabel F ini
pertama kali harus diberikan nilai awal 1.
Jika nilai F mempunyai nilai awal 0, maka
hasilnya akan selalu nol, karena bilangan
apapun dikalikan dengan 0 hasilnya 0.
/* --------------------------------------------------
Nama Program: ADP_fungsi_2b_hasil_balik_fungsi.cpp
Hasil Balik Fungsi
-------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
long int Faktorial(int N); //prototype fungsi
main()
{
int N;
long int Fak;
printf("Contoh Program Hasil Balik Fungsin");
printf("_________________________________n");
printf("n");
printf("Jumlah Faktorial: ");scanf("%d",&N);
Fak = Faktorial(N);
printf("%d faktorial = %ldn",N,Fak);
printf("n");
system("pause");
}
//fungsi menghitung N faktorial
long int Faktorial(int N) //definisi fungsi
{
int I;
long int F=1;
if(N<=0)
return(0);
for(I=2;I<=N;I++) F *=I;
return(F);
}
HASIL BALIK FUNGSI
 Program di atas memberikan nilai hasil
balik dengan tipe long int. Tipe nilai
hasil balik adalah tipe dari fungsinya,
sehingga fungsi Faktorial() ini juga
harus bertipe long int.
 Hubungan antara bagian program yang
memanggil fungsi, parameter aktual,
parameter formal, dan hasil balik dari
fungsi dapat digambarkan seperti pada
slide berikutnya.
HASIL BALIK FUNGSI
 Hasil dari fungsi Faktorial() ini,yaitu nilai
dari F akan dtierima oleh variabel Fak di
bagian program yang memanggil fungsi.
VARIABEL-VARIABEL
FUNGSI
 Variabel-variabel yang digunakan untuk
operasi fungsi mempunyai ruang lingkup
tertentu, yaitu apakah hanya berlaku di
blok statemen saja, di dalam suatu
fungsi saja ataukah di semua bagian
program.
 Terdapat tiga macam variabel, yaitu
variabel lokal, global, atau statis.
VARIABEL LOKAL
 Variabel Lokal adalah variabel yang
nama dan nilainya hanya dikenal di
suatu blok statemen tertentu saja atau di
dalam suatu fungsi.
 Variabel bersifat lokal jika dideklarasikan
di dalam blok bersangkutan.
 Variabel lokal akan dihapus dari memori
jika proses sudah meninggalkan blok
statemen dimana variabel lokal terletak.
/* ----------------------------------------------
Nama Program: ADP_fungsi_3_variabel_fungsi.cpp
Variabel Lokal Fungsi
---------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
float Tambah(float A, float B); //prototype fungsi
main()
{
float Hasil;
printf("Contoh Program Variabel Lokal Fungsin");
printf("____________________________________n");
printf("n");
Hasil = Tambah(2,3);
printf("%fn", Hasil); //Hasil variabel lokal fungsi utama
printf("n");
system("pause");
}
//fungsi menampilkan menghitung penambahan
float Tambah(float A, float B) //definisi fungsi
{
float C; //C variabel lokal fungsi Tambah
C = A + B;
return(C);
}
VARIABEL LOKAL
 Variabel C pada contoh program di atas
merupakan variabel lokal di fungsi
Tambah(). Variabel C ini tidak dikenal di
fungsi main() (fungsi utama), sehingga
variabel ini tidak dapat digunakan di
fungsi utama. Sebaliknya variabel Hasil
merupakan variabel yang sifatnya lokal
di fungsi utama dan tidak dikenal di
fungsi Tambah().
VARIABEL GLOBAL
 Varibel Global adalah variabel yang
dikenal di semua bagian-bagian tertentu
dari program. Variabel-variabel global
dapat dibuat dengan cara
mendeklarasikan di luar suatu blok
statemen atau di luar fungsi-fungsi yang
menggunakannya.
/* ----------------------------------------------
Nama Program: ADP_fungsi_3_variabel_fungsi.cpp
Variabel Global Fungsi
---------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
float Tambah(float A, float B); //prototype fungsi
float C; //C variabel global
main()
{
printf("Contoh Program Variabel Global Fungsin");
printf("_____________________________________n");
printf("n");
Tambah(2,3);
printf("%fn",C);
printf("n");
system("pause");
}
//fungsi menghitung penambahan
float Tambah(float A, float B) //definisi fungsi
{
C = A + B;
return(C);
}
VARIABEL GLOBAL
 Variabel C dideklarasikan di luar fungsi
utama dan fungsi Tambah(),sehingga
bersifat global (dikenal dan dianggap
sama) di kedua fungsi tersebut. Karena
bersifat global, maka perubahan nilai
variabel C di salah satu fungsi tersebut
berarti juga merubah nilai variabel C di
fungsi yang lainnya.
VARIABEL STATIK
 Variabel statik bersifat tetap, yaitu tidak
dihapus variabel dan nilainya selama
proses program.
 Berbeda dengan variabel lokal, yaitu
variabelnya akan dihapus setelah proses
keluar dari blok yang mendeklarasikannya,
maka variabel statik akan tetap ada dan
nilainya akan tetap dipertahankan
walaupun proses telah keluar dari bloknya.
 Variabel statik dibuat dengan
dideklarasikan menggunakan pengubah
dari (modifier) static.
/* ----------------------------------------------
Nama Program: ADP_fungsi_5_variabel_fungsi.cpp
Variabel Statik Fungsi
---------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
long int X(long int N); //prototype fungsi
main()
{
int I, N;
long int Fak;
printf("Contoh Program Variabel Statik Fungsin");
printf("________________________________n");
printf("n");
printf("Berapa Jumlah Faktorial: ");scanf("%d",&N);
printf("n");
//menghitung N faktorial
if(N<=0) Fak=0;
else
for(I=1;I<=N;I++) Fak=X(I);
printf("%d faktorial = %ldn", N, Fak);
system("pause");
}
//fungsi X
long int X(long int I) //definisi fungsi
{
static long int F=I;
F = F * I;
return(F);
}
PENGIRIMAN
PARAMETER
 Pengiriman paramater ke suatu fungsi
dapat dilakukan dengan dua cara, yaitu
pengiriman secara nilai (by value) atau
secara acuan (by reference).
 Pengiriman secara nilai yang dikirimkan
adalah nilai, sedangkan pengiriman
secara acuan yang dikirimkan adalah
alamat dari nilainya.
PENGIRIMAN SECARA
NILAI
 Pengiriman parameter secara nilai mempunyai karakteristik:
1. Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan
alamat memori letak dari datanya.
2. Fungsi yang menerima kiriman nilai ini akan menyimpannya di
alamat yang terpisah dari nilai aslinya yang digunakan oleh
bagian program yang memanggil fungsi.
3. Karena alasan nomor 2 di atas, maka perubahan nilai di fungsi
tidak akan merubah nilai asli di bagian program yang memanggil
fungsi walaupun keduanya menggunakan nama variabel yang
sama.
4. Pengirimannya searah, artinya dari bagian program yang
memanggil fungsi ke fungsi yang dipanggil.
5. Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan,
tidak hanya untuk sebuah variabel atau elemen larik atau
konstanta saja.
/* ----------------------------------------------------------------------------------------
Nama Program: ADP_fungsi_6_pengiriman_parameter_byvalue.cpp
Pengiriman Parameter Secara Nilai (by value)
---------------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Secara_Nilai(float A, float B, char C); //prototype fungsi
main()
{
char C = 'a';
float A = 25, *Alamat_A;
Alamat_A = &A;
printf("Contoh Program Pengiriman Parameter Secara Nilain");
printf("__________________________________________n");
printf("n");
Secara_Nilai(A, A/3, C);
printf("Di fungsi utama setelah memanggil fungsi Secara_Nilai: n");
printf("Nilai A adalah %f di alamat %pn", A, Alamat_A);
printf("Nilai A/3 adalah %fn", A/3);
printf("Nilai karakter C adalah %cn", C);
printf("n");
system("pause");
}
//fungsi Secara_Nilai
void Secara_Nilai(float A, float B, char C) //definisi fungsi
{
float *Alamat_A;
Alamat_A = &A;
A = 7;
printf("Di fungsi Secara_Nilai: n");
printf("Nilai A adalah %f di alamat %pn", A, Alamat_A);
printf("Nilai B adalah %fn", B);
printf("Nilai karakter C adalah %cnn", C);
}
HASIL EKSEKUSI
PROGRAM
PENGIRIMAN SECARA
NILAI
 Dari hasil program contoh di atas dapat dijelaskan sebagai berikut:
1. Parameter-parameter aktual yang dikirimkan adalah nilai datanya, yaitu untuk
variabel A, A/3 dan C sebagai berikut:
Secara_Nilai(A, A/3, C);
2. Variabel-variabel A dan C menempati memori berbeda untuk fungsi utama
yang memanggil fungsi dan yang digunakan di fungsi Secara_Nilai(). Untuk
fungsi utama, nilai variabel A disimpan di alamat 0012FF50, sedang di fungsi
Secara_Nilai(), nilai variabel A disimpan di alamat memori 0012FF38.
3. Perubahan nilai variabel A di fungsi Secara_Nilai() menjadi bernilai 7 tidak
merubah nilai variabel A di fungsi utama yang akan tetap bernilai 25.
4. Pengiriman suatu nilai merupakan pengiriman satu arah seperti terlihat
berikut ini
5. Pengiriman secara nilai dapat mengirimkan suatu ungkapan, yaitu A/3
PENGIRIMAN SECARA
ACUAN
 Pengiriman parameter secara acuan mempunyai
karakteristik:
1. Yang dikirimkan ke fungsi adalah alamat letak dari nilai
datanya, bukan nilai dari datanya.
2. Fungsi yang menerima kiriman alamat ini akan
menggunakan alamat yang sama untuk mendapatkan
nilai datanya.
3. Karena alasan nomor 2 di atas, maka perubahan nilai di
fungsi akan merubah nilai asli di bagian program yang
memanggil fungsi.
4. Pengiriman parameter secara acuan adalah pengiriman
dua arah, yaitu dari bagian program yang memanggil
fungsi ke fungsi yang dipanggil dan sebaliknya.
5. Pengiriman secara acuan tidak dapat dilakukan untuk
suatu ungkapan, hanya untuk sebuah variabel atau
elemen larik atau konstanta saja.
/* ----------------------------------------------------------------------------------------------
Nama Program: ADP_fungsi_7_pengiriman_parameter_byreference.cpp
Pengiriman Parameter Secara Acuan (by reference)
------------------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Secara_Acuan(float *A, float B, char *C); //prototype fungsi
main()
{
char C = 'a';
float A = 25, *Alamat_A;
Alamat_A = &*A;
printf("Contoh Program Pengiriman Parameter Secara Referencen");
printf("____________________________________________________n"
);
printf("n");
Secara_Acuan(&A, A/3, &C);
printf("Di fungsi utama setelah memanggil fungsi Secara_Acuan: n");
printf("Nilai A adalah %f di alamat %pn", A, Alamat_A);
printf("Nilai A/3 adalah %fn", A/3);
printf("Nilai karakter C adalah %cn", C);
printf("n");
system("pause");
}
//fungsi Secara_Acuan
void Secara_Acuan(float *A, float B, char *C)
{
float *Alamat_A;
Alamat_A = &A;
*A = 7;
printf("Di fungsi Secara_Acuan: n");
printf("Nilai A adalah %f di alamat %pn", *A, Alamat_A);
printf("Nilai B adalah %fn", B);
printf("Nilai karakter C adalah %cnn", *C);
}
HASIL EKSEKUSI
PROGRAM
PENGIRIMAN SECARA
ACUAN
 Pengiriman parameter secara acuan adalah pengiriman
alamat dari nilai datanya dan telah diketahui bahwa
alamat dari suatu nilai data dapat diperoleh dengan
menggunakan operator ‘&’ seperti tampak di parameter-
parameter aktual untuk variabel A dan C. Parameter
aktual A/3 dikirimkan secara nilai, karena pengiriman
secara acuan tidak dapat menggunakan suatu ungkapan.
Karena yang dikirimkan adalah alamatnya, maka
parameter-parameter formal di definisi fungsi harus dalam
bentuk pointer. Variabel pointer dapat dideklarasikan
dengan menuliskan nama variabelnya diawali dengan
asterik (‘*’). Hubungan antara parameter aktual dan
parameter formal adalah hubungan dua arah seperti
berikut:
PENGIRIMAN SECARA
ACUAN
 Karena hubungan dua arah ini, maka
perubahan nilai di fungsi akan
mengakibatkan perubahan nilai di bagian
program yang memanggilnya. Di contoh
program
ADP_fungsi_7_pengiriman_paramete
r_byreference.cpp, nilai di alamat
variabel A dirubah dengan nilai 7 di
fungsi Secara_Acuan(). Akibatnya nilai
variabel A di fungsi utama juga berubah
dari nilai 25 menjadi 7.
PENGIRIMAN SECARA
ACUAN
 Contoh
ADP_fungsi_7a_pengiriman_parameter_byre
ference.cpp berikut ini menunjukkan dengan jelas
bahwa perubahan nilai di fungsi untuk parameter
yang dikirimkan secara acuan akan merubah juga
nilai di bagian program yang memanggilnya. Karena
sifat dua arah ini, maka pengiriman parameter
secara acuan dapat juga dipakai sebagai pengganti
hasil balik dari fungsi. Di contoh ini, parameter aktual
C akan mengirimkan alamatnya ke fungsi Tambah().
Setelah proses dari fungsi Tambah() selesai, alamat
ini akan berisi dengan hasil proses fungsi, sehingga
dapat digunakan di bagian program yang
memanggilnya sebagai hasil yang diperoleh dari
fungsi yang dipanggil.
/* ---------------------------------------------------------------------------------------------------
Nama Program: ADP_fungsi_7a_pengiriman_parameter_byreference.cpp
Pengiriman Parameter Secara Acuan (by reference)
--------------------------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Tambah(int *A, int *B, int *C); //prototype fungsi
main()
{
int A = 2, B = 3, C;
printf("Contoh Program Pengiriman Parameter Secara Referencen");
printf("_______________________________________________n");
printf("n");
Tambah(&A, &B, &C);
printf("%d di tambah %d adalah %dn", A, B, C);
printf("n");
system("pause");
}
//fungsi Secara_Acuan
void Tambah(int *A, int *B, int *C) //definisi fungsi
{
*C = *A + *B;
return;
}
HASIL EKSEKUSI
PROGRAM
/* ---------------------------------------------------------------------------------------------------
Nama Program: ADP_fungsi_7b_pengiriman_parameter_byreference.cpp
Pengiriman Parameter Secara Acuan (by reference)
--------------------------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
int *Tambah(int *A, int *B); //prototype fungsi
main()
{
int A = 2, B = 3, *C;
printf("Contoh Program Pengiriman Parameter Secara Referencen");
printf("____________________________________________________n");
printf("n");
C = Tambah(&A, &B);
printf("%d di tambah %d adalah %dn", A, B, *C);
printf("n");
system("pause");
}
//fungsi Secara_Acuan
int *Tambah(int *A, int *B) //definisi fungsi
{
int Hasil;
Hasil = *A + *B;
return(&Hasil);
}
HASIL EKSEKUSI
PROGRAM
PENGIRIMAN SECARA
ACUAN
 Contoh program
ADP_fungsi_7a_pengiriman_parameter_byreferenc
e.cpp dapat juga dirubah dengan hasil balik dari fungsi
yang merupakan hasil balik berupa suatu pointer yang
dikirimkan dengan statemen return.
 Di fungsi Tambah(), hasil yang dikirimkan adalah
berupa alamat dari variabel Hasil. Alamat dari variabel
ini ditunjukkan oleh &Hasil. Dengan demikian, fungsi
Tambah() ini harus dideklarasikan dengan bentuk
pointer dengan cara nama dari fungsinya ditulis diawali
oleh asterik (‘*’). Di bagian program yang memanggil
fungsi, hasil dari fungsi ini juga harus diterima oleh
suatu variabel pointer, yaitu C yang sudah harus
dideklarasikan sebagai variabel pointer.
PENGIRIMAN
PARAMETER
 Dengan pengiriman secara parameter (secara
nilai atau acuan), maka variabel-variabel yang
dikirimkan tidak perlu dideklarasikan lagi di
fungsi yang menerimanya. Di contoh program
ADP_fungsi_6_pengiriman_parameter_by
value.cpp, parameter aktual A, A/3, dan C
dikirimkan dan akan diterima oleh
parameter-parameter formal A, B, dan C. Di
definisi fungsi, parameter-parameter formal
ini telah dideklarasikan yang masing-masing
bertipe float, float, dan char. Nama-nama
parameter formal dapat berbeda dengan
nama-nama parameter aktualnya.
REKURSI
 Rekursi (recursion) adalah suatu proses
dari fungsi yang memanggil dirinya
sendiri secara berulang-ulang.
 Karena proses dilakukan berulang-
ulang, maka harus ada suatu kondisi
yang mengakhiri prosesnya. Jika tidak,
maka proses tidak akan pernah berhenti
sampai memori yang digunakan tidak
dapat menampung lagi.
/* ----------------------------------------------
Nama Program: ADP_rekursi.cpp
Rekursi
---------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Terus_Tidak_Berhenti(void); //prototype fungsi
main()
{
printf("Contoh Program Rekursin");
printf("______________________n");
printf("n");
Terus_Tidak_Berhenti();
printf("n");
system("pause");
}
//fungsi menampilkan hasil terus tidak berhenti
void Terus_Tidak_Berhenti(void) //definisi fungsi
{
printf("Ctrl-Break untuk berhentin");
Terus_Tidak_Berhenti();
}
HASIL EKSEKUSI
PROGRAM
REKURSI
 Contoh program ADP_rekursi.cpp di
atas merupakan program rekursi yang
tidak akan berhenti karena tidak
mempunyai kondisi yang menghentikan
prosesnya. Proses rekursi ini
ditunuukkan oleh statemen
Terus_Tidak_Berhenti(), yaitu proses
yang memanggil fungsi dirinya sendiri
(perhatikan bahwa statemen ini berada
di dalam fungsi yang dipanggil).
/* -------------------------------------------------
Nama Program: ADP_rekursi_1.cpp
Rekursi
-------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
void Berhenti_N_Kali(int N); //prototype fungsi
main()
{
int N=3;
printf("Contoh Program Rekursin");
printf(“____________________n");
printf("n");
Berhenti_N_Kali(N);
printf("n");
system("pause");
}
//fungsi menampilkan hasil sebanyak N Kali
void Berhenti_N_Kali(int N) //definisi fungsi
{
static int I=0;
if(N<=0)return;
printf("%d kalin", ++I);
Berhenti_N_Kali(N-1);
}
HASIL EKSEKUSI
PROGRAM
REKURSI
 Proses rekursi di program
ADP_rekursi_1.cpp mempunyai kondisi
pengakhiran rekursi, yaitu jika nilai N
sudah lebih kecil atau sama dengan nol.
Setiap kali fungsi memanggil dirinya
sendiri, nilai dari N dikurangi dengan nilai
1, sehingga nilai N akhirnya akan menjadi
nol dan proses rekursi akan diakhiri,
sehingga fungsi ini akan memanggil dirinya
sendiri sebanyak N kali.
/* ------------------------------------------------
Nama Program: ADP_rekursi_2.cpp
Rekursi
------------------------------------------------ */
#include <stdio.h>
#include <stdlib.h>
long int Fak_Rekursi(int N); //prototype fungsi
main()
{
int N=5;
printf("Contoh Program Rekursin");
printf(“____________________n");
printf("n");
printf("%d faktorial = %ldn", N, Fak_Rekursi(N));
printf("n");
system("pause");
}
//fungsi rekursi menghitung N Faktorial
long int Fak_Rekursi(int N) //definisi fungsi
{
long int F;
if(N<=1)return(1);
else{
F = N * Fak_Rekursi(N-1);
return(F);
}
}
HASIL EKSEKUSI
PROGRAM
REKURSI
 Proses rekursi di program ADP_rekursi_2.cpp dapat dijelaskan sebagai
berikut:
1. Fungsi utama memanggil fungsi Fak_Rekursi() dengan mengirimkan nilai 5
untuk parameter aktual N, yang maksudnya akan dilakukan perhitungan
sebanyak 5 faktorial.
2. Jika nilai dari N pertama kali yang diberikan oleh fungsi utama bernilai
kurang atau sama dengan satu, maka hasil faktorial yang akan diberikan
adalah bernilai 1.
3. Jika nilai N pertama kali yang diberikan oleh fungsi utama lebih besar dari 1,
maka proses rekursi yang pertama adalah:
F = 5 * Fak_Rekursi(4);
Proses ini akan memanggil kembali fungsi dirinya sendiri dengan
mengirimkan nilai sebagai nilai N yang baru. Karena nilai N masih lebih
besar dari 1, maka proses rekursi ke dua akan dilakukan dengan hasilnya
adalah 4 * Fak_Rekursi(3). Untuk N adalah 3, hasil yang diperoleh oleh
rekursi adalah 3 * Fak_Rekursi(2) dan seterusnya sampai nilai N adalah 1.
Untuk nilai N sama dengan 1 ini, statemen return(1) akan mengembalikan
proses ke bagian yang memanggilnya, yaitu statemen setelah statemen F =
5 * Fak_Rekursi(N-1). Statemen return(F) kemudian baru mengembalikan
proses ke fungsi utama. Hasil akhirs nilai F dari penjelasan di atas untuk 5
faktorial dapat dituliskan seperti di slide berikut:
PUSTAKA
 Kristanto, Andri. (2009). Algoritma &
Pemrograman dengan C++ Edisi 2.
Yogyakarta. Graha Ilmu.
 Hartono, Jogiyanto, MBA., Ph.D. (2002).
Konsep Dasar Pemrograman Bahasa C.
Yogyakarta. Andi.

More Related Content

What's hot

Kelompok 2 identitas nasional
Kelompok 2   identitas nasionalKelompok 2   identitas nasional
Kelompok 2 identitas nasionaldayurikaperdana19
 
20 Pembuktian Teorema Pythagoras oleh Kelompok 1
20 Pembuktian Teorema Pythagoras oleh Kelompok 120 Pembuktian Teorema Pythagoras oleh Kelompok 1
20 Pembuktian Teorema Pythagoras oleh Kelompok 1Rahma Siska Utari
 
03 limit dan kekontinuan
03 limit dan kekontinuan03 limit dan kekontinuan
03 limit dan kekontinuanRudi Wicaksana
 
proyeksi pada bangun ruang
proyeksi pada bangun ruangproyeksi pada bangun ruang
proyeksi pada bangun ruanganggi syahputra
 
1. identitas nasional
1. identitas nasional1. identitas nasional
1. identitas nasionalMardiah Ahmad
 
Kel.4 pancasila sebagai ideologi bangsa 222
Kel.4 pancasila sebagai ideologi bangsa 222Kel.4 pancasila sebagai ideologi bangsa 222
Kel.4 pancasila sebagai ideologi bangsa 222dayurikaperdana19
 
Distribusi Normal Matematika Peminatan Kelas XII Program MIPA
Distribusi Normal Matematika Peminatan Kelas XII Program MIPADistribusi Normal Matematika Peminatan Kelas XII Program MIPA
Distribusi Normal Matematika Peminatan Kelas XII Program MIPAMuhammad Arif
 
Hamid gambar teknik proyeksi
Hamid gambar teknik proyeksiHamid gambar teknik proyeksi
Hamid gambar teknik proyeksiHamid kabete
 
Fungsi Vektor ( Kalkulus 2 )
Fungsi Vektor ( Kalkulus 2 )Fungsi Vektor ( Kalkulus 2 )
Fungsi Vektor ( Kalkulus 2 )Kelinci Coklat
 
Makalah demokrasi di indonesia
Makalah demokrasi di indonesiaMakalah demokrasi di indonesia
Makalah demokrasi di indonesiaWarnet Raha
 
Dinamika historis konstitusional, sosial politik, kultural, serta konteks k...
Dinamika historis konstitusional, sosial   politik, kultural, serta konteks k...Dinamika historis konstitusional, sosial   politik, kultural, serta konteks k...
Dinamika historis konstitusional, sosial politik, kultural, serta konteks k...idasilfia
 
Jelaskan dengan contoh landasan historis pada landasan pedidikan pacasila
Jelaskan dengan contoh landasan historis pada landasan pedidikan pacasilaJelaskan dengan contoh landasan historis pada landasan pedidikan pacasila
Jelaskan dengan contoh landasan historis pada landasan pedidikan pacasilaSusanti Susanti
 
03 tegangan regangan (2)
03   tegangan regangan (2)03   tegangan regangan (2)
03 tegangan regangan (2)tekpal14
 
Bab 8. Fungsi Transenden ( Kalkulus 1 )
Bab 8. Fungsi Transenden ( Kalkulus 1 )Bab 8. Fungsi Transenden ( Kalkulus 1 )
Bab 8. Fungsi Transenden ( Kalkulus 1 )Kelinci Coklat
 
pengantar pendidikan pancasila
pengantar pendidikan pancasilapengantar pendidikan pancasila
pengantar pendidikan pancasilaRudi Wicaksana
 
Keutamaan akhlak dan ilmu
Keutamaan akhlak dan ilmuKeutamaan akhlak dan ilmu
Keutamaan akhlak dan ilmuRatnaSafitri3
 

What's hot (20)

Kelompok 2 identitas nasional
Kelompok 2   identitas nasionalKelompok 2   identitas nasional
Kelompok 2 identitas nasional
 
Makalah ilmu politik 3 (2)
Makalah ilmu politik  3 (2)Makalah ilmu politik  3 (2)
Makalah ilmu politik 3 (2)
 
20 Pembuktian Teorema Pythagoras oleh Kelompok 1
20 Pembuktian Teorema Pythagoras oleh Kelompok 120 Pembuktian Teorema Pythagoras oleh Kelompok 1
20 Pembuktian Teorema Pythagoras oleh Kelompok 1
 
03 limit dan kekontinuan
03 limit dan kekontinuan03 limit dan kekontinuan
03 limit dan kekontinuan
 
proyeksi pada bangun ruang
proyeksi pada bangun ruangproyeksi pada bangun ruang
proyeksi pada bangun ruang
 
1. identitas nasional
1. identitas nasional1. identitas nasional
1. identitas nasional
 
Kel.4 pancasila sebagai ideologi bangsa 222
Kel.4 pancasila sebagai ideologi bangsa 222Kel.4 pancasila sebagai ideologi bangsa 222
Kel.4 pancasila sebagai ideologi bangsa 222
 
Tugas pkn implementasi
Tugas pkn implementasiTugas pkn implementasi
Tugas pkn implementasi
 
ppt nilai - nilai pancasila masa kini
ppt nilai - nilai pancasila masa kinippt nilai - nilai pancasila masa kini
ppt nilai - nilai pancasila masa kini
 
Distribusi Normal Matematika Peminatan Kelas XII Program MIPA
Distribusi Normal Matematika Peminatan Kelas XII Program MIPADistribusi Normal Matematika Peminatan Kelas XII Program MIPA
Distribusi Normal Matematika Peminatan Kelas XII Program MIPA
 
Hamid gambar teknik proyeksi
Hamid gambar teknik proyeksiHamid gambar teknik proyeksi
Hamid gambar teknik proyeksi
 
Fungsi Vektor ( Kalkulus 2 )
Fungsi Vektor ( Kalkulus 2 )Fungsi Vektor ( Kalkulus 2 )
Fungsi Vektor ( Kalkulus 2 )
 
Makalah demokrasi di indonesia
Makalah demokrasi di indonesiaMakalah demokrasi di indonesia
Makalah demokrasi di indonesia
 
Dinamika historis konstitusional, sosial politik, kultural, serta konteks k...
Dinamika historis konstitusional, sosial   politik, kultural, serta konteks k...Dinamika historis konstitusional, sosial   politik, kultural, serta konteks k...
Dinamika historis konstitusional, sosial politik, kultural, serta konteks k...
 
Jelaskan dengan contoh landasan historis pada landasan pedidikan pacasila
Jelaskan dengan contoh landasan historis pada landasan pedidikan pacasilaJelaskan dengan contoh landasan historis pada landasan pedidikan pacasila
Jelaskan dengan contoh landasan historis pada landasan pedidikan pacasila
 
03 tegangan regangan (2)
03   tegangan regangan (2)03   tegangan regangan (2)
03 tegangan regangan (2)
 
Bab 8. Fungsi Transenden ( Kalkulus 1 )
Bab 8. Fungsi Transenden ( Kalkulus 1 )Bab 8. Fungsi Transenden ( Kalkulus 1 )
Bab 8. Fungsi Transenden ( Kalkulus 1 )
 
pengantar pendidikan pancasila
pengantar pendidikan pancasilapengantar pendidikan pancasila
pengantar pendidikan pancasila
 
Keutamaan akhlak dan ilmu
Keutamaan akhlak dan ilmuKeutamaan akhlak dan ilmu
Keutamaan akhlak dan ilmu
 
Pertemuan 8 bentuk koordinat
Pertemuan 8   bentuk koordinatPertemuan 8   bentuk koordinat
Pertemuan 8 bentuk koordinat
 

Similar to 5.adp fungsi & rekursi

Similar to 5.adp fungsi & rekursi (20)

Laporan praktikum modul vi
Laporan praktikum modul viLaporan praktikum modul vi
Laporan praktikum modul vi
 
Fungsi (function)
Fungsi (function)Fungsi (function)
Fungsi (function)
 
Fungsi
FungsiFungsi
Fungsi
 
Pertemuan 11 Fungsi (Function)
Pertemuan 11 Fungsi (Function)Pertemuan 11 Fungsi (Function)
Pertemuan 11 Fungsi (Function)
 
Praktikum fix 2
Praktikum fix 2Praktikum fix 2
Praktikum fix 2
 
Ifc modul 1 (fungsi)
Ifc   modul 1 (fungsi)Ifc   modul 1 (fungsi)
Ifc modul 1 (fungsi)
 
Kbp dengan-c
Kbp dengan-cKbp dengan-c
Kbp dengan-c
 
Praktikum
PraktikumPraktikum
Praktikum
 
Ppt modul 6 fungsi
Ppt modul 6 fungsiPpt modul 6 fungsi
Ppt modul 6 fungsi
 
Penjelasan Fungsi Dalam Program Pemrograman Dasar.pptx
Penjelasan Fungsi Dalam Program Pemrograman Dasar.pptxPenjelasan Fungsi Dalam Program Pemrograman Dasar.pptx
Penjelasan Fungsi Dalam Program Pemrograman Dasar.pptx
 
07 function 2
07 function 207 function 2
07 function 2
 
TUGAS MANDIRI algoritma
TUGAS MANDIRI algoritmaTUGAS MANDIRI algoritma
TUGAS MANDIRI algoritma
 
Week 3-fungsi-header
Week 3-fungsi-headerWeek 3-fungsi-header
Week 3-fungsi-header
 
fungsi algoritma
fungsi algoritmafungsi algoritma
fungsi algoritma
 
Compiler dan Interpreter
Compiler dan InterpreterCompiler dan Interpreter
Compiler dan Interpreter
 
fungsi c++ dalam bahasa pemgroaman C++ .pptx
fungsi c++ dalam bahasa pemgroaman  C++ .pptxfungsi c++ dalam bahasa pemgroaman  C++ .pptx
fungsi c++ dalam bahasa pemgroaman C++ .pptx
 
Modul pd
Modul pdModul pd
Modul pd
 
Praktikum fungsi dasar bahasa c
Praktikum fungsi dasar bahasa cPraktikum fungsi dasar bahasa c
Praktikum fungsi dasar bahasa c
 
Ddp8
Ddp8Ddp8
Ddp8
 
Tistrukdat5
Tistrukdat5Tistrukdat5
Tistrukdat5
 

More from Hardini_HD

Hardini 3201416015 3_b
Hardini 3201416015 3_b Hardini 3201416015 3_b
Hardini 3201416015 3_b Hardini_HD
 
Class dan object
Class dan objectClass dan object
Class dan objectHardini_HD
 
Using of computer tech
Using of computer tech Using of computer tech
Using of computer tech Hardini_HD
 
Number system
Number system Number system
Number system Hardini_HD
 
Komp. dan aplikasi
Komp. dan aplikasi Komp. dan aplikasi
Komp. dan aplikasi Hardini_HD
 
Introduction to software 2
Introduction to software 2 Introduction to software 2
Introduction to software 2 Hardini_HD
 
Introduction to software1
Introduction to software1 Introduction to software1
Introduction to software1 Hardini_HD
 
Introduce to internet2
Introduce to internet2 Introduce to internet2
Introduce to internet2 Hardini_HD
 
Introduce to internet1
Introduce to internet1 Introduce to internet1
Introduce to internet1 Hardini_HD
 
Intro to e gov
Intro to e gov Intro to e gov
Intro to e gov Hardini_HD
 
Flowchart dan dfd
Flowchart dan dfd Flowchart dan dfd
Flowchart dan dfd Hardini_HD
 
Business computing
Business computing Business computing
Business computing Hardini_HD
 
Pti (8) teknologi internet dan web
Pti (8)   teknologi internet dan webPti (8)   teknologi internet dan web
Pti (8) teknologi internet dan webHardini_HD
 

More from Hardini_HD (20)

Hardini 3201416015 3_b
Hardini 3201416015 3_b Hardini 3201416015 3_b
Hardini 3201416015 3_b
 
Delphi
DelphiDelphi
Delphi
 
Class dan object
Class dan objectClass dan object
Class dan object
 
Using of computer tech
Using of computer tech Using of computer tech
Using of computer tech
 
Software
Software Software
Software
 
Number system
Number system Number system
Number system
 
Komp. dan aplikasi
Komp. dan aplikasi Komp. dan aplikasi
Komp. dan aplikasi
 
Jarkom
Jarkom Jarkom
Jarkom
 
Introduction to software 2
Introduction to software 2 Introduction to software 2
Introduction to software 2
 
Introduction to software1
Introduction to software1 Introduction to software1
Introduction to software1
 
Introduce to internet2
Introduce to internet2 Introduce to internet2
Introduce to internet2
 
Introduce to internet1
Introduce to internet1 Introduce to internet1
Introduce to internet1
 
Intro to e gov
Intro to e gov Intro to e gov
Intro to e gov
 
Internet
Internet Internet
Internet
 
Hardware
Hardware Hardware
Hardware
 
Flowchart dan dfd
Flowchart dan dfd Flowchart dan dfd
Flowchart dan dfd
 
File org
File org File org
File org
 
Data comm
Data comm Data comm
Data comm
 
Business computing
Business computing Business computing
Business computing
 
Pti (8) teknologi internet dan web
Pti (8)   teknologi internet dan webPti (8)   teknologi internet dan web
Pti (8) teknologi internet dan web
 

Recently uploaded

LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfChrodtianTian
 
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdfHARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdfkustiyantidew94
 
demontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfdemontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfIndri117648
 
Materi Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxMateri Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxc9fhbm7gzj
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxFuzaAnggriana
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxJamhuriIshak
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxHeruFebrianto3
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisNazla aulia
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxBambang440423
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxarnisariningsih98
 
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxIPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxErikaPuspita10
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxalalfardilah
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxRezaWahyuni6
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...MarwanAnugrah
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxmtsmampunbarub4
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDmawan5982
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxsudianaade137
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfSitiJulaeha820399
 

Recently uploaded (20)

LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
 
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdfHARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
 
demontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfdemontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdf
 
Materi Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxMateri Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptx
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara Inggris
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
 
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxIPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptx
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SD
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
 

5.adp fungsi & rekursi

  • 1. ALGORITMA DAN DASAR PEMROGRAMAN
  • 2. KONSEP DASAR FUNGSI  Program komputer yang dibuat untuk menjawab permasalahan umumnya berukuran sangat besar, karena itu perlu dibuat potongan-potongan program yang lebih kecil (biasa disebut modul) yang lebih mudah untuk ditangani dibanding dengan program yang terdiri dari banyak baris.  Modul program ini disebut fungsi (function).
  • 3. KONSEP DASAR FUNGSI  Pemrograman C ditulis dengan mengkombinasikan fungsi baru yang ditulis oleh pemrogram (disebut programmer-defined function) dengan fungsi yang telah tersedia di dalam pustakanya (disebut standard library).  Fungsi merupakan blok dari kode yang dirancang untuk melakukan tugas khusus.
  • 4. KONSEP DASAR FUNGSI  Tujuan pembuatan fungsi: 1. Program menjadi lebih terstruktur dengan memecah program menjadi beberapa program yang lebih kecil, yang masing-masing mempunyai tugas tertentu. 2. Mengurangi duplikasi kode atau penulisan kode yang sama yang ditulis secara berulang-ulang.
  • 5. KONSEP DASAR FUNGSI  Supaya dapat digunakan, fungsi harus dapat dipanggil dari bagian program yang membutuhkannya. Karena itu fungsi harus diberi nama dan nama ini harus didefinisikan dan dideklarasikan terlebih dahulu.  Pemanggilan fungsi bertujuan untuk mengerjakan suatu tugas tertentu yang dapat berupa tugas input/output, tugas penyeleksian, atau tugas perhitungan.
  • 6. KONSEP DASAR FUNGSI  Bagian program yang menggunakan fungsi dapat berkomunikasi dengan fungsinya lewat pengiriman parameter- parameter yang dilakukan melalui argumen-argumen fungsi.
  • 7. MENDEFINISIKAN FUNGSI  Fungsi terdiri dari dua buah komponen utama, yaitu definisi fungsi dan tubuh fungsi.  Definisi fungsi berisi tipe dari fungsi, nama fungsi, dan argumen-argumennya jika digunakan.  Tubuh fungsi berisi statemen-statemen yang akan melakukan tugas yang diberikan kepada fungsi tersebut, yang ditulis di dalam tanda kurung kurawal buka dan tutup.
  • 8. MENDEFINISIKAN FUNGSI  Bentuk umum fungsi, yaitu:
  • 9. MENDEFINISIKAN FUNGSI  Definisi fungsi ditulis sebelum tubuh fungsi tanpa diakhiri dengan titik koma.  Tipe di definisi fungsi menunjukkan tipe dari fungsi, dimana tipe dari fungsi ini tergantung dari tipe data hasil balik yang akan diberikan oleh fungsi.Jika hasil balik dari fungsi misalnya berupa nilai pecahan, maka tipe fungsi dapat dibuat float atau double atau long double.
  • 10. MENDEFINISIKAN FUNGSI  Jika fungsi tidak memberikan hasil balik, maka tipenya adalah void. Tipe dari fungsi ini dapat tidak ditulis jika tipenya adalah int atau char. Jadi, jika suatu fungsi didefinisikan tanpa menggunakan tipenya, maka akan dianggap bertipe int.  Nama dari fungsi merupakan nama yang dibentuk sendiri oleh pembuat program.
  • 11. MENDEFINISIKAN FUNGSI  Sebuah fungsi dapat memiliki satu atau lebih argumen yang ditulis dengan dipisahkan oleh koma atau suatu fungsi dapat tidak mempunyai argumen sama sekali. Jika argumen tidak digunakan, kurung buka dan kurung tutup setelah nama dari fungsi tetap harus dituliskan.  Tipe data void dapat dituliskan sebagai pengganti argumen untuk fungsi yang tidak menggunakan argumen.
  • 12. MENDEFINISIKAN FUNGSI  Argumen yang berada di definisi fungsi ini disebut dengan argumen formal atau parameter formal. Parameter- parameter formal ini dimaksudkan sebagai alat komunikasi untuk data yang dikirimkan dari bagian program yang menggunakan fungsi ke fungsi bersangkutan.
  • 13. MENDEFINISIKAN FUNGSI  Parameter-parameter formal dapat dituliskan dengan dua cara, yaitu cara baru dan cara lama.  Cara baru dilakukan dengan menuliskan parameter-parameter formal yang diawali dengan tipe datanya. Contohnya: int Fungsi_Ku(float A, int B, char C)  Contoh yang salah: int Fungsi_Ku(float A, B, char C)
  • 14. MENDEFINISIKAN FUNGSI  Cara lama untuk menuliskan parameter formal adalah dengan memecahnya menjadi dua bagian. Pertama, semua parameter formal ditulis tanpa tipe datanya. Kedua, parameter-parameter formal ini dideklarasikan terpisah dengan tipe datanya setelah definisi dari fungsi. Contoh: int Fungsi_Ku(A, B, C) float A; int B; char C; { /*tubuh fungsi*/ } /*tidak diakhiri titik koma*/ /*diakhiri titik koma*/ /*diakhiri titik koma*/ /*diakhiri titik koma*/
  • 15. MENDEFINISIKAN FUNGSI  Standar ANSI lebih menganjurkan penggunaan cara baru.  Penulisan parameter-parameter formal dengan cara lama digunakan pada awal bahasa C diciptakan dan masih banyak yang menggunakannya sampai saat ini untuk menjaga kompatibilitas dengan kompiler C yang menggunakan cara lama. Kompiler-kompiler C yang baru umumnya mendukung dua cara penulisan ini.
  • 16. MENDEFINISIKAN FUNGSI  Berikut ini beberapa contoh penulisan definisi fungsi yang benar: char Ke_Besar(char C) void Tampil_N(int N) void Hapus_Layar() void Hapus_Layar(void) double Maksimum(double X, double Y)
  • 17. PARAMETER FORMAL & PARAMETER AKTUAL  Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.  Parameter aktual adalah parameter yang dapat berupa variabel atau konstanta maupun ungkapan yang dipakai dalam pemanggilan fungsi.
  • 18. DEKLARASI FUNGSI  Suatu fungsi yang memberikan hasil balik selain tipe int perlu dideklarasikan sebelum digunakan, karena jika suatu fungsi tidak dideklarasikan akan dianggap fungsi tersebut memberikan nilai balik berupa tipe int.  Untuk alasan dokumentasi program yang baik, sebaiknya semua fungsi yang digunakan dideklarasikan terlebih dahulu termasuk yang bertipe int.
  • 19. DEKLARASI FUNGSI  Beberapa kompiler C dapat diatur untuk selalu mendeteksi semua deklarasi fungsi-fungsi yang digunakan termasuk yang bertipe int.  Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan.
  • 20. DEKLARASI FUNGSI  Bentuk umum deklarasi fungsi: tipe nama-fungsi(argumen);  Tipe adalah tipe dari fungsi yang akan digunakan dan harus sama dengan tipe fungsi yang didefinisikan
  • 21. /* ------------------------------------------------------------------------ Nama Program: ADP_fungsi_1_deklarasi_fungsi.cpp Mendeklarasikan Fungsi ------------------------------------------------------------------------ */ #include <stdio.h> #include <stdlib.h> double Absolut(double X); //deklarasi fungsi main() { float Nilai; printf("Contoh Program Mendeklarasikan Fungsin"); printf("__________________________________n"); printf("n"); Nilai = -123.45; printf("%7.2f nilai mutlaknya adalah %7.2fn", Nilai, Absolut(Nilai)); printf("n"); system("pause"); } //fungsi untuk memutlakkan nilai negatip double Absolut(double X) //definisi fungsi { if(X<0) X=-X; return(X); }
  • 22. /* ------------------------------------------------------------------------ Nama Program: ADP_fungsi_1_deklarasi_fungsi.cpp Mendeklarasikan Fungsi ------------------------------------------------------------------------ */ #include <stdio.h> #include <stdlib.h> //fungsi untuk memutlakkan nilai negatip //dimana fungsi dideklarasikan terlebih dahulu double Absolut(double X) //definisi fungsi { if(X<0) X=-X; return(X); } main() { float Nilai; printf("Contoh Program Mendeklarasikan Fungsin"); printf("__________________________________n"); printf("n"); Nilai = -123.45; printf("%7.2f nilai mutlaknya adalah %7.2fn", Nilai, Absolut(Nilai)); printf("n"); system("pause"); }
  • 23. PROTOTYPE FUNGSI  Prototype fungsi adalah mendeklarasikan fungsi dengan menyebutkan argumen fungsinya.  Pada contoh program ADP_fungsi_1_deklarasi_fungsi.cp p, prototype fungsi terdapat pada bagian deklarasi fungsi dimana fungsi double Absolut menyebutkan argumen fungsi (double X).
  • 24. HASIL BALIK FUNGSI  Suatu fungsi dibuat untuk maksud menyelesaikan tugas tertentu.  Suatu fungsi dapat hanya melakukan suatu tugas saja tanpa memberikan suatu hasil balik atau melakukan suatu tugas dan kemudian memberikan suatu hasil balik.  Fungsi yang hanya melakukan suatu tugas saja tanpa memberikan hasil balik misalnya adalah fungsi untuk menampilkan hasil di layar.
  • 25. /* -------------------------------------------------------------------------- Nama Program: ADP_fungsi_2_hasil_balik_fungsi.cpp Hasil Balik Fungsi --------------------------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Tampil_S_N(char *String, int N); //prototype fungsi main() { printf("Contoh Program Hasil Balik Fungsin"); printf("_____________________________n"); printf("n"); Tampil_S_N("Bahasa Cn",3); printf("n"); system("pause"); } //fungsi menampilkan n kali nilai string void Tampil_S_N(char *String, int N) //definisi fungsi { int I; for(I=1;I<=N;I++) printf(String); }
  • 26. HASIL BALIK FUNGSI  Fungsi Tampil_S_N() pada contoh di slide sebelumnya tidak memberikan hasil balik. Fungsi yang tidak memberikan hasil balik adalah fungsi yang mempunyai tipe hasil void.  Jika suatu fungsi memberikan hasil balik, makanilai hasil balik yang diberikan oleh fungsi dapat dilakukan oleh statemen return yang diikuti oleh nilai hasil baliknya yang ditulis dalam tanda kurung. Statemen return saja tanpa diikuti oleh nilai baliknya akan mengembalikan proses dari fungsi kebagian program yang memanggilnya tanpa memberikan nilai hasil baliknya.
  • 27. /* -------------------------------------------------------------------------- Nama Program: ADP_fungsi_2a_hasil_balik_fungsi.cpp Hasil Balik Fungsi --------------------------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Tampil_S_N(char *String, int N); //prototype fungsi main() { printf("Contoh Program Hasil Balik Fungsin"); printf("_____________________________n"); printf("n"); Tampil_S_N("Bahasa Cn",3); printf("n"); system("pause"); } //fungsi menampilkan n kali nilai string void Tampil_S_N(char *String, int N) //definisi fungsi { int I; for(I=1;I<=N;I++) printf(String); return; }
  • 28. HASIL BALIK FUNGSI  Program berikut ini dimaksudkan untuk menghitung N Faktorial (N!). Nilai N! adalah sebesar 1 x 2 x ... x N dengan N adalah nilai positif. Jika N bernilai negatif atau nol,maka fungsi faktorial() akan memberikan hasil balik nilai 0. Nilai F adalah hasil balik yang akan diberikan oleh fungsi untuk nilai N positif. Variabel F ini pertama kali harus diberikan nilai awal 1. Jika nilai F mempunyai nilai awal 0, maka hasilnya akan selalu nol, karena bilangan apapun dikalikan dengan 0 hasilnya 0.
  • 29. /* -------------------------------------------------- Nama Program: ADP_fungsi_2b_hasil_balik_fungsi.cpp Hasil Balik Fungsi -------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> long int Faktorial(int N); //prototype fungsi main() { int N; long int Fak; printf("Contoh Program Hasil Balik Fungsin"); printf("_________________________________n"); printf("n"); printf("Jumlah Faktorial: ");scanf("%d",&N); Fak = Faktorial(N); printf("%d faktorial = %ldn",N,Fak); printf("n"); system("pause"); } //fungsi menghitung N faktorial long int Faktorial(int N) //definisi fungsi { int I; long int F=1; if(N<=0) return(0); for(I=2;I<=N;I++) F *=I; return(F); }
  • 30. HASIL BALIK FUNGSI  Program di atas memberikan nilai hasil balik dengan tipe long int. Tipe nilai hasil balik adalah tipe dari fungsinya, sehingga fungsi Faktorial() ini juga harus bertipe long int.  Hubungan antara bagian program yang memanggil fungsi, parameter aktual, parameter formal, dan hasil balik dari fungsi dapat digambarkan seperti pada slide berikutnya.
  • 31. HASIL BALIK FUNGSI  Hasil dari fungsi Faktorial() ini,yaitu nilai dari F akan dtierima oleh variabel Fak di bagian program yang memanggil fungsi.
  • 32. VARIABEL-VARIABEL FUNGSI  Variabel-variabel yang digunakan untuk operasi fungsi mempunyai ruang lingkup tertentu, yaitu apakah hanya berlaku di blok statemen saja, di dalam suatu fungsi saja ataukah di semua bagian program.  Terdapat tiga macam variabel, yaitu variabel lokal, global, atau statis.
  • 33. VARIABEL LOKAL  Variabel Lokal adalah variabel yang nama dan nilainya hanya dikenal di suatu blok statemen tertentu saja atau di dalam suatu fungsi.  Variabel bersifat lokal jika dideklarasikan di dalam blok bersangkutan.  Variabel lokal akan dihapus dari memori jika proses sudah meninggalkan blok statemen dimana variabel lokal terletak.
  • 34. /* ---------------------------------------------- Nama Program: ADP_fungsi_3_variabel_fungsi.cpp Variabel Lokal Fungsi ---------------------------------------------- */ #include <stdio.h> #include <stdlib.h> float Tambah(float A, float B); //prototype fungsi main() { float Hasil; printf("Contoh Program Variabel Lokal Fungsin"); printf("____________________________________n"); printf("n"); Hasil = Tambah(2,3); printf("%fn", Hasil); //Hasil variabel lokal fungsi utama printf("n"); system("pause"); } //fungsi menampilkan menghitung penambahan float Tambah(float A, float B) //definisi fungsi { float C; //C variabel lokal fungsi Tambah C = A + B; return(C); }
  • 35. VARIABEL LOKAL  Variabel C pada contoh program di atas merupakan variabel lokal di fungsi Tambah(). Variabel C ini tidak dikenal di fungsi main() (fungsi utama), sehingga variabel ini tidak dapat digunakan di fungsi utama. Sebaliknya variabel Hasil merupakan variabel yang sifatnya lokal di fungsi utama dan tidak dikenal di fungsi Tambah().
  • 36. VARIABEL GLOBAL  Varibel Global adalah variabel yang dikenal di semua bagian-bagian tertentu dari program. Variabel-variabel global dapat dibuat dengan cara mendeklarasikan di luar suatu blok statemen atau di luar fungsi-fungsi yang menggunakannya.
  • 37. /* ---------------------------------------------- Nama Program: ADP_fungsi_3_variabel_fungsi.cpp Variabel Global Fungsi ---------------------------------------------- */ #include <stdio.h> #include <stdlib.h> float Tambah(float A, float B); //prototype fungsi float C; //C variabel global main() { printf("Contoh Program Variabel Global Fungsin"); printf("_____________________________________n"); printf("n"); Tambah(2,3); printf("%fn",C); printf("n"); system("pause"); } //fungsi menghitung penambahan float Tambah(float A, float B) //definisi fungsi { C = A + B; return(C); }
  • 38. VARIABEL GLOBAL  Variabel C dideklarasikan di luar fungsi utama dan fungsi Tambah(),sehingga bersifat global (dikenal dan dianggap sama) di kedua fungsi tersebut. Karena bersifat global, maka perubahan nilai variabel C di salah satu fungsi tersebut berarti juga merubah nilai variabel C di fungsi yang lainnya.
  • 39. VARIABEL STATIK  Variabel statik bersifat tetap, yaitu tidak dihapus variabel dan nilainya selama proses program.  Berbeda dengan variabel lokal, yaitu variabelnya akan dihapus setelah proses keluar dari blok yang mendeklarasikannya, maka variabel statik akan tetap ada dan nilainya akan tetap dipertahankan walaupun proses telah keluar dari bloknya.  Variabel statik dibuat dengan dideklarasikan menggunakan pengubah dari (modifier) static.
  • 40. /* ---------------------------------------------- Nama Program: ADP_fungsi_5_variabel_fungsi.cpp Variabel Statik Fungsi ---------------------------------------------- */ #include <stdio.h> #include <stdlib.h> long int X(long int N); //prototype fungsi main() { int I, N; long int Fak; printf("Contoh Program Variabel Statik Fungsin"); printf("________________________________n"); printf("n"); printf("Berapa Jumlah Faktorial: ");scanf("%d",&N); printf("n"); //menghitung N faktorial if(N<=0) Fak=0; else for(I=1;I<=N;I++) Fak=X(I); printf("%d faktorial = %ldn", N, Fak); system("pause"); } //fungsi X long int X(long int I) //definisi fungsi { static long int F=I; F = F * I; return(F); }
  • 41. PENGIRIMAN PARAMETER  Pengiriman paramater ke suatu fungsi dapat dilakukan dengan dua cara, yaitu pengiriman secara nilai (by value) atau secara acuan (by reference).  Pengiriman secara nilai yang dikirimkan adalah nilai, sedangkan pengiriman secara acuan yang dikirimkan adalah alamat dari nilainya.
  • 42. PENGIRIMAN SECARA NILAI  Pengiriman parameter secara nilai mempunyai karakteristik: 1. Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya. 2. Fungsi yang menerima kiriman nilai ini akan menyimpannya di alamat yang terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi. 3. Karena alasan nomor 2 di atas, maka perubahan nilai di fungsi tidak akan merubah nilai asli di bagian program yang memanggil fungsi walaupun keduanya menggunakan nama variabel yang sama. 4. Pengirimannya searah, artinya dari bagian program yang memanggil fungsi ke fungsi yang dipanggil. 5. Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel atau elemen larik atau konstanta saja.
  • 43. /* ---------------------------------------------------------------------------------------- Nama Program: ADP_fungsi_6_pengiriman_parameter_byvalue.cpp Pengiriman Parameter Secara Nilai (by value) ---------------------------------------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Secara_Nilai(float A, float B, char C); //prototype fungsi main() { char C = 'a'; float A = 25, *Alamat_A; Alamat_A = &A; printf("Contoh Program Pengiriman Parameter Secara Nilain"); printf("__________________________________________n"); printf("n"); Secara_Nilai(A, A/3, C); printf("Di fungsi utama setelah memanggil fungsi Secara_Nilai: n"); printf("Nilai A adalah %f di alamat %pn", A, Alamat_A); printf("Nilai A/3 adalah %fn", A/3); printf("Nilai karakter C adalah %cn", C); printf("n"); system("pause"); } //fungsi Secara_Nilai void Secara_Nilai(float A, float B, char C) //definisi fungsi { float *Alamat_A; Alamat_A = &A; A = 7; printf("Di fungsi Secara_Nilai: n"); printf("Nilai A adalah %f di alamat %pn", A, Alamat_A); printf("Nilai B adalah %fn", B); printf("Nilai karakter C adalah %cnn", C); }
  • 45. PENGIRIMAN SECARA NILAI  Dari hasil program contoh di atas dapat dijelaskan sebagai berikut: 1. Parameter-parameter aktual yang dikirimkan adalah nilai datanya, yaitu untuk variabel A, A/3 dan C sebagai berikut: Secara_Nilai(A, A/3, C); 2. Variabel-variabel A dan C menempati memori berbeda untuk fungsi utama yang memanggil fungsi dan yang digunakan di fungsi Secara_Nilai(). Untuk fungsi utama, nilai variabel A disimpan di alamat 0012FF50, sedang di fungsi Secara_Nilai(), nilai variabel A disimpan di alamat memori 0012FF38. 3. Perubahan nilai variabel A di fungsi Secara_Nilai() menjadi bernilai 7 tidak merubah nilai variabel A di fungsi utama yang akan tetap bernilai 25. 4. Pengiriman suatu nilai merupakan pengiriman satu arah seperti terlihat berikut ini 5. Pengiriman secara nilai dapat mengirimkan suatu ungkapan, yaitu A/3
  • 46. PENGIRIMAN SECARA ACUAN  Pengiriman parameter secara acuan mempunyai karakteristik: 1. Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai dari datanya. 2. Fungsi yang menerima kiriman alamat ini akan menggunakan alamat yang sama untuk mendapatkan nilai datanya. 3. Karena alasan nomor 2 di atas, maka perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi. 4. Pengiriman parameter secara acuan adalah pengiriman dua arah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil dan sebaliknya. 5. Pengiriman secara acuan tidak dapat dilakukan untuk suatu ungkapan, hanya untuk sebuah variabel atau elemen larik atau konstanta saja.
  • 47. /* ---------------------------------------------------------------------------------------------- Nama Program: ADP_fungsi_7_pengiriman_parameter_byreference.cpp Pengiriman Parameter Secara Acuan (by reference) ------------------------------------------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Secara_Acuan(float *A, float B, char *C); //prototype fungsi main() { char C = 'a'; float A = 25, *Alamat_A; Alamat_A = &*A; printf("Contoh Program Pengiriman Parameter Secara Referencen"); printf("____________________________________________________n" ); printf("n"); Secara_Acuan(&A, A/3, &C); printf("Di fungsi utama setelah memanggil fungsi Secara_Acuan: n"); printf("Nilai A adalah %f di alamat %pn", A, Alamat_A); printf("Nilai A/3 adalah %fn", A/3); printf("Nilai karakter C adalah %cn", C); printf("n"); system("pause"); } //fungsi Secara_Acuan void Secara_Acuan(float *A, float B, char *C) { float *Alamat_A; Alamat_A = &A; *A = 7; printf("Di fungsi Secara_Acuan: n"); printf("Nilai A adalah %f di alamat %pn", *A, Alamat_A); printf("Nilai B adalah %fn", B); printf("Nilai karakter C adalah %cnn", *C); }
  • 49. PENGIRIMAN SECARA ACUAN  Pengiriman parameter secara acuan adalah pengiriman alamat dari nilai datanya dan telah diketahui bahwa alamat dari suatu nilai data dapat diperoleh dengan menggunakan operator ‘&’ seperti tampak di parameter- parameter aktual untuk variabel A dan C. Parameter aktual A/3 dikirimkan secara nilai, karena pengiriman secara acuan tidak dapat menggunakan suatu ungkapan. Karena yang dikirimkan adalah alamatnya, maka parameter-parameter formal di definisi fungsi harus dalam bentuk pointer. Variabel pointer dapat dideklarasikan dengan menuliskan nama variabelnya diawali dengan asterik (‘*’). Hubungan antara parameter aktual dan parameter formal adalah hubungan dua arah seperti berikut:
  • 50. PENGIRIMAN SECARA ACUAN  Karena hubungan dua arah ini, maka perubahan nilai di fungsi akan mengakibatkan perubahan nilai di bagian program yang memanggilnya. Di contoh program ADP_fungsi_7_pengiriman_paramete r_byreference.cpp, nilai di alamat variabel A dirubah dengan nilai 7 di fungsi Secara_Acuan(). Akibatnya nilai variabel A di fungsi utama juga berubah dari nilai 25 menjadi 7.
  • 51. PENGIRIMAN SECARA ACUAN  Contoh ADP_fungsi_7a_pengiriman_parameter_byre ference.cpp berikut ini menunjukkan dengan jelas bahwa perubahan nilai di fungsi untuk parameter yang dikirimkan secara acuan akan merubah juga nilai di bagian program yang memanggilnya. Karena sifat dua arah ini, maka pengiriman parameter secara acuan dapat juga dipakai sebagai pengganti hasil balik dari fungsi. Di contoh ini, parameter aktual C akan mengirimkan alamatnya ke fungsi Tambah(). Setelah proses dari fungsi Tambah() selesai, alamat ini akan berisi dengan hasil proses fungsi, sehingga dapat digunakan di bagian program yang memanggilnya sebagai hasil yang diperoleh dari fungsi yang dipanggil.
  • 52. /* --------------------------------------------------------------------------------------------------- Nama Program: ADP_fungsi_7a_pengiriman_parameter_byreference.cpp Pengiriman Parameter Secara Acuan (by reference) --------------------------------------------------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Tambah(int *A, int *B, int *C); //prototype fungsi main() { int A = 2, B = 3, C; printf("Contoh Program Pengiriman Parameter Secara Referencen"); printf("_______________________________________________n"); printf("n"); Tambah(&A, &B, &C); printf("%d di tambah %d adalah %dn", A, B, C); printf("n"); system("pause"); } //fungsi Secara_Acuan void Tambah(int *A, int *B, int *C) //definisi fungsi { *C = *A + *B; return; }
  • 54. /* --------------------------------------------------------------------------------------------------- Nama Program: ADP_fungsi_7b_pengiriman_parameter_byreference.cpp Pengiriman Parameter Secara Acuan (by reference) --------------------------------------------------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> int *Tambah(int *A, int *B); //prototype fungsi main() { int A = 2, B = 3, *C; printf("Contoh Program Pengiriman Parameter Secara Referencen"); printf("____________________________________________________n"); printf("n"); C = Tambah(&A, &B); printf("%d di tambah %d adalah %dn", A, B, *C); printf("n"); system("pause"); } //fungsi Secara_Acuan int *Tambah(int *A, int *B) //definisi fungsi { int Hasil; Hasil = *A + *B; return(&Hasil); }
  • 56. PENGIRIMAN SECARA ACUAN  Contoh program ADP_fungsi_7a_pengiriman_parameter_byreferenc e.cpp dapat juga dirubah dengan hasil balik dari fungsi yang merupakan hasil balik berupa suatu pointer yang dikirimkan dengan statemen return.  Di fungsi Tambah(), hasil yang dikirimkan adalah berupa alamat dari variabel Hasil. Alamat dari variabel ini ditunjukkan oleh &Hasil. Dengan demikian, fungsi Tambah() ini harus dideklarasikan dengan bentuk pointer dengan cara nama dari fungsinya ditulis diawali oleh asterik (‘*’). Di bagian program yang memanggil fungsi, hasil dari fungsi ini juga harus diterima oleh suatu variabel pointer, yaitu C yang sudah harus dideklarasikan sebagai variabel pointer.
  • 57. PENGIRIMAN PARAMETER  Dengan pengiriman secara parameter (secara nilai atau acuan), maka variabel-variabel yang dikirimkan tidak perlu dideklarasikan lagi di fungsi yang menerimanya. Di contoh program ADP_fungsi_6_pengiriman_parameter_by value.cpp, parameter aktual A, A/3, dan C dikirimkan dan akan diterima oleh parameter-parameter formal A, B, dan C. Di definisi fungsi, parameter-parameter formal ini telah dideklarasikan yang masing-masing bertipe float, float, dan char. Nama-nama parameter formal dapat berbeda dengan nama-nama parameter aktualnya.
  • 58. REKURSI  Rekursi (recursion) adalah suatu proses dari fungsi yang memanggil dirinya sendiri secara berulang-ulang.  Karena proses dilakukan berulang- ulang, maka harus ada suatu kondisi yang mengakhiri prosesnya. Jika tidak, maka proses tidak akan pernah berhenti sampai memori yang digunakan tidak dapat menampung lagi.
  • 59. /* ---------------------------------------------- Nama Program: ADP_rekursi.cpp Rekursi ---------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Terus_Tidak_Berhenti(void); //prototype fungsi main() { printf("Contoh Program Rekursin"); printf("______________________n"); printf("n"); Terus_Tidak_Berhenti(); printf("n"); system("pause"); } //fungsi menampilkan hasil terus tidak berhenti void Terus_Tidak_Berhenti(void) //definisi fungsi { printf("Ctrl-Break untuk berhentin"); Terus_Tidak_Berhenti(); }
  • 61. REKURSI  Contoh program ADP_rekursi.cpp di atas merupakan program rekursi yang tidak akan berhenti karena tidak mempunyai kondisi yang menghentikan prosesnya. Proses rekursi ini ditunuukkan oleh statemen Terus_Tidak_Berhenti(), yaitu proses yang memanggil fungsi dirinya sendiri (perhatikan bahwa statemen ini berada di dalam fungsi yang dipanggil).
  • 62. /* ------------------------------------------------- Nama Program: ADP_rekursi_1.cpp Rekursi -------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> void Berhenti_N_Kali(int N); //prototype fungsi main() { int N=3; printf("Contoh Program Rekursin"); printf(“____________________n"); printf("n"); Berhenti_N_Kali(N); printf("n"); system("pause"); } //fungsi menampilkan hasil sebanyak N Kali void Berhenti_N_Kali(int N) //definisi fungsi { static int I=0; if(N<=0)return; printf("%d kalin", ++I); Berhenti_N_Kali(N-1); }
  • 64. REKURSI  Proses rekursi di program ADP_rekursi_1.cpp mempunyai kondisi pengakhiran rekursi, yaitu jika nilai N sudah lebih kecil atau sama dengan nol. Setiap kali fungsi memanggil dirinya sendiri, nilai dari N dikurangi dengan nilai 1, sehingga nilai N akhirnya akan menjadi nol dan proses rekursi akan diakhiri, sehingga fungsi ini akan memanggil dirinya sendiri sebanyak N kali.
  • 65. /* ------------------------------------------------ Nama Program: ADP_rekursi_2.cpp Rekursi ------------------------------------------------ */ #include <stdio.h> #include <stdlib.h> long int Fak_Rekursi(int N); //prototype fungsi main() { int N=5; printf("Contoh Program Rekursin"); printf(“____________________n"); printf("n"); printf("%d faktorial = %ldn", N, Fak_Rekursi(N)); printf("n"); system("pause"); } //fungsi rekursi menghitung N Faktorial long int Fak_Rekursi(int N) //definisi fungsi { long int F; if(N<=1)return(1); else{ F = N * Fak_Rekursi(N-1); return(F); } }
  • 67. REKURSI  Proses rekursi di program ADP_rekursi_2.cpp dapat dijelaskan sebagai berikut: 1. Fungsi utama memanggil fungsi Fak_Rekursi() dengan mengirimkan nilai 5 untuk parameter aktual N, yang maksudnya akan dilakukan perhitungan sebanyak 5 faktorial. 2. Jika nilai dari N pertama kali yang diberikan oleh fungsi utama bernilai kurang atau sama dengan satu, maka hasil faktorial yang akan diberikan adalah bernilai 1. 3. Jika nilai N pertama kali yang diberikan oleh fungsi utama lebih besar dari 1, maka proses rekursi yang pertama adalah: F = 5 * Fak_Rekursi(4); Proses ini akan memanggil kembali fungsi dirinya sendiri dengan mengirimkan nilai sebagai nilai N yang baru. Karena nilai N masih lebih besar dari 1, maka proses rekursi ke dua akan dilakukan dengan hasilnya adalah 4 * Fak_Rekursi(3). Untuk N adalah 3, hasil yang diperoleh oleh rekursi adalah 3 * Fak_Rekursi(2) dan seterusnya sampai nilai N adalah 1. Untuk nilai N sama dengan 1 ini, statemen return(1) akan mengembalikan proses ke bagian yang memanggilnya, yaitu statemen setelah statemen F = 5 * Fak_Rekursi(N-1). Statemen return(F) kemudian baru mengembalikan proses ke fungsi utama. Hasil akhirs nilai F dari penjelasan di atas untuk 5 faktorial dapat dituliskan seperti di slide berikut:
  • 68.
  • 69. PUSTAKA  Kristanto, Andri. (2009). Algoritma & Pemrograman dengan C++ Edisi 2. Yogyakarta. Graha Ilmu.  Hartono, Jogiyanto, MBA., Ph.D. (2002). Konsep Dasar Pemrograman Bahasa C. Yogyakarta. Andi.