FUNGSI DALAM BAHASA C

dokumen-dokumen yang mirip
FUNGSI DALAM BAHASA C

BAB 6 FUNGSI TUJUAN PRAKTIKUM

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

Mengenal Subroutine pada Pemrograman C Dian Wirdasari

Fungsi, Parameter, Rekursi

Algoritma Pemrograman 2B (Pemrograman C++)

2 BEBERAPA FUNGSI PUSTAKA DALAM BAHASA C

Scope Variable. Sebuah variabel di dalam sebuah fungsi memiliki jangkauan tertentu. Skop variabel terdiri dari:

/* File program : tukar1.c Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */

FUNGSI & PROSEDUR. Pertemuan ke-12 dan 13

BAB V FUNGSI Tujuan : 5.1 Dasar Fungsi

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

A. TUJUAN 1. Memecah program dalam fungsi fungsi yang sederhana. 2. Menjelaskan tentang pemrograman terstruktur.

Fungsi 2 DASAR PEMROGRAMAN

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Konsep Pemrograman. Bab 8. Fungsi 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi : Passing Parameter by Value & Semester 3

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

MAKALAH POINTER PADA BAHASA C

Fungsi DASAR PEMROGRAMAN

# Finally: ELEVEN Function Parameter by Value and by Reference

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

MODUL 5 SUBPROGRAM / FUNGSI

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

BAB 6. FUNGSI. Tujuan penggunaan fungsi : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode program.

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Fungsi DASAR PEMROGRAMAN

Function nama dipisahkan

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

Fungsi : Dasar Fungsi

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

# SEVEN PROCUDURE & FUNCTION

Algoritma & Pemrograman #8. by antonius rachmat c, s.kom, m.cs

Fungsi Lanjut DASAR PEMROGRAMAN

Tipe Data, Variabel, Input/Output

FUNGSI II. Variabel Statis. Sifat variabel statis: Sintaks: static tipe_data nama_variabel; Contoh: static int angka;

FUNGSI. tipe Tipe nilai yang dihasilkan oleh fungsi. Jika tidak dinyatakan, hasil fungsi dianggap bilangan bulat (int)

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

Fungsi 1 DASAR PEMROGRAMAN

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Achmad Solichin.

Kurikulum Qt. { Basic OOP } Chapter 4. Function

PRAKTIKUM 7 FUNGSI 1

Kurikulum Qt. Chapter 4 Function. Fungsi

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

BAHASA PEMROGRAMAN C LANGUAGE

Chapter 1 KONSEP DASAR C

Algoritme dan Pemrograman

Algoritma Pemrograman. Fery Updi,M.Kom

Pemrograman Dasar C. Minggu 6

OPERASI PERNYATAAN KONDISI

Fungsi (II) Parameter pada fungsi Jenis variabel pada fungsi

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Algoritme dan Pemrograman

Bahasa C-M6 By Jamilah, Skom 1

Tipe Data dan Operator

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

FUNCTIONS. Function adalah satu blok instruksi yang akan dieksekusi ketika dipanggil dari bagian lain dalam suatu program.

10.1 DASAR FUNGSI PADA BAHASA C

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Minggu ke-11 Fungsi (Function)

2. Uraian Materi. a. Pengertian Fungsi

Algoritma & Pemrograman #9. by antonius rachmat c, s.kom, m.cs

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi Penggolongan Variabel dan Semester 3

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

Kisi- kisi UTS- P. Kisi- kisi UTS- T

Algoritma Pemrograman. Fery Updi,M.Kom

P 4 Bab 3 : Dasar Pemrograman C

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

Pertemuan 06. Dasar Pemrograman Komputer [TKL-4002] 2010

POINTER DASAR PEMROGRAMAN

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

A. TUJUAN 1. Mengetahui perbedaan antara variabel lokal, eksternal, statis dan register

STRUKTUR KENDALI PERCABANGAN

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

PEMROGRAMAN BERORIENTASI OBJEK

Struktur Program Bahasa C

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Algoritme dan Pemrograman

PENGENALAN BAHASA C DAN C++

BAB VIII POINTER. Tujuan :

Array LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

BAB I. LARIK (ARRAY) Array (larik) ialah penampung sejumlah data sejenis (homogen) yang menggunakan satu identifier (pengenal).

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

Proses Perulangan (Looping) DASAR PROGRAMMING 1

Pendahuluan Pemrograman Mikrokontroler

Tipe Data Dasar. Data bisa dinyatakan dalam bentuk konstanta atau variabel.

IT234 - Algoritma dan Struktur Data. Ramos Somya

SIFAT - SIFAT DAN MANFAAT FUNGSI

BAB III PERINTAH INPUT OUTPUT

Array Dimensi Satu. Pendahuluan. Slamet Kurniawan, S.Kom


Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

Transkripsi:

FUNGSI DALAM BAHASA C

FUNGSI DALAM BAHASA C KELOMPOK 6 EKA FITRI YANI (52411343) M FIRAS AUFAR (54411196) OCTAVIANA (5A412139) OKKY MAHENDRA (55411442) UNIVERSITAS GUNADARMA 2012 KATA PENGANTAR Segala puji bagi Tuhan Yang Maha Esa karena berkat rahmat dan hidayah-nya kami dapat menyelasaikan makalah ini tepat waktu dan dengan sebaik-baiknya. Makalah ini disusun agar pembaca dapat memperluas ilmu tentang Fungsi pada Bahasa Pemrograman C yang kami sajikan berdasarkan pengamatan dari beberapa sumber. Penyusun sangat berterima kasih kepada semua pihak yang telah membantu menyelesaikan makalah ini. Semoga makalah ini dapat bermanfaat dan memberikan wawasan yang lebih luas kepada pembaca. Walaupun makalah ini memiliki kelebihan dan kekurangan, penyusun mohon kepada pembaca untuk memberi saran dan kritik yang bersifat membangun. Depok, 19 Desember 2012 Penyusun ii DAFTAR ISI Kata Pengantar ii Daftar Isi iii FUNGSI DALAM BAHASA C A. Pengertian Fungsi 1 B. Mendefinisikan Fungsi 1

C. Deklarasi Fungsi 2 D. Parameter Formal dan Parameter Aktual 3 E. Ruang Lingkup Variabel 4 a. Variabel Lokal 4 b. Variabel Global 5 c. Variabel Register 6 d. Variabel Statik 7 F. Pengiriman Parameter 7 a. Pengiriman Parameter Secara Nilai (Call by Value) 7 b. Pengiriman parameter secara acuan (Call by reference) 9 c. Pengiriman Parameter Berupa Larik 10 G. Rekursi 11 H. Contoh Program Function 13

Daftar Pustaka 19 iii FUNGSI DALAM BAHASA C A. PENGERTIAN FUNGSI Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program-program C yang terstruktur. Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi pustaka dan fungsi yang didefinisikan atau dibuat oleh programmer. B. MENDEFINISIKAN FUNGSI Suatu fungsi secara umum mempunyai dua buah komponen utama, yaitu definisi fungsi dan tubuh fungsi. Definisi fungsi berisi dengan tipe dari fungsi, nama dari fungsi dan argumenargumennya jika digunakan. Tubuh fungsi berisi dengan statemen-statemen yang akan melakukan tugas yang akan diberikan kepada fungsi yang bersangkutan. Bentuk umum dari fungsi : tipe_fungsi namafungsi(argumen1,argumen2,...) Definisi fungsi {...... Badan fungsi... } Definisi fungsi ditulis sebelum tubuh fungsi tanpa diakhiri dengan titik koma. Tipe di definisi fungsi menunjukkan tipe dari fungsi. Tipe dari fungsi tergantung dari tipe data hasil balik yang akan diberikan oleh fungsi. Misalnya hasil balik dari fungsi berupa nilai numerik pecahan, maka tipe dari fungsi dapat dibuat float atau double atau long double tergantung pada 1 ketepatan yang diinginkan. Jika fungsi tidak memberikan nilai balik, maka tipenya adalah void. Tipe dari fungsi ini tidak dapat ditulis jika tipenya adalah char atau int. Jika suatu fungsi didefinisikan tanpa menggunakan tipenya, maka akan dianggap bertipe integer. Contoh definisi fungsi dengan menggunakan argumen atau parameter : int Fungsi (float A, int B, char C) Hal-hal yang perlu diperhatikan dalam penggunaan fungsi: a) Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan nilai keluaran bertipe integer. b) Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan pendefinisian penentu tipe fungsi. c) Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke dalam tipe void d) Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan return. e) Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya. C. DEKLARASI FUNGSI

Suatu fungsi yang memberikan hasil balik selain tipe integer perlu dideklarasikan sebelum digunakan. Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan. Bentuk umum dari deklarasi fungsi : tipe nama_fungsi( argumen1, argumen2,... ); Jika bagian dari program yang menggunakan fungsi diletakkan sebelum definisi fungsi, maka deklarasi fungsi diperlukan. Akan tetapi jika bagian program yang menggunakan fungsi terletak setelah definisi dari fungsi, maka deklarasi fungsi boleh tidak dapat dituliskan. Jika suatu fungsi memberikan hasil balik, maka nilai hasil balik yang diberikan oleh fungsi dapat dilakukan oleh statement return yang diikuti oleh nilai hasil baliknya yang ditulis tanda kurung. Contoh : return(f); Contoh program : #include #include 2 int faktorial (int N); /*prototype fungsi*/ int main() { int N; int fak; printf ("berapa faktorial? ");scanf ("%d", &N); fak = faktorial (N); printf ("%d faktorial = %d\n", N, fak); getch(); } int faktorial (int N) /*definisi fungsi*/ { int I; int F=1; if (N<=0) return (0); for (I=2;I<=N;I++) F *= I; return(f); } Output : D. PARAMETER FORMAL DAN PARAMETER AKTUAL Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Parameter Aktual adalah variabel (parameter) yang dipakai dalam 3 pemanggilan fungsi. Dalam contoh program pertambahan di atas parameter formal terdapat pada pendefinisian fungsi. Contoh program : #include #include int persegi(int s) /* Parameter formal */ { int L; L=s*s; return (L); } main() { int Luas; Luas = persegi(5); /* Parameter aktual */ printf ("Luas : %d ", Luas); getch(); } E. RUANG LINGKUP VARIABEL Terdapat tiga macam bentuk variabel yang mempunyai ruang lingkup berbeda, yaitu variabel lokal, variabel global, variabel register dan variabel statik. a. Variabel Lokal Merupakan variabel yang namanya dan nilainya hanya dikenal di suatu blok statemen tertentu saja atau di dalam suatu fungsi. Variabel lokal akan dihapus dari memori jika proses sudah meninggalkan blok statemen letak variabel lokalnya. Sifat-sifat variabel lokal : a) Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika proses eksekusi terhadap fungsi berakhir. 4 b) Hanya dikenal oleh fungsi tempat variabel dideklarasikan c) Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya random). d) Dideklarasikan dengan menambahkan kata auto

(opsional). b. Variabel Global Variabel global (eksternal) adalah variabel yang dideklarasikan di luar fungsi. Sifat-sifat variabel global : a) Dikenal (dapat diakses) oleh semua fungsi. b) Jika tidak diberi nilai awal secara otomatis berisi nilai nol. c) Dideklarasikan dengan menambahkan kata extern (opsional). Contoh program : #include #include int a = 10; /* Variabel Global */ int b = 20; int c = 30; void lokal(int a,int b,int c); main() { int d; printf("ini adalah variabel global\n a=%d\n b=%d\n c=%d\n", a,b,c); d = a+b; printf("nilai d: %d\n", d); lokal(a,b,c); getch(); } void lokal (int a,int b,int c) { 5 a=1; /* Variabel Lokal */ b=2; c=3; int d= a+b; printf("ini adalah variabel lokal\n a=%d\n b=%d\n c=%d\n", a,b,c); printf ("nilai d = %d", d); getch(); } Output : c. Variabel Register Variabel Register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori RAM. Sifat-sifat variabel register : a) Hanya dapat diterapkan pada variabel lokal yang bertipe int dan char. b) Digunakan untuk mengendalikan proses perulangan (looping). c) Proses perulangan akan lebih cepat karena variabel register memiliki kecepatan yang lebih tinggi dibandingkan variabel biasa. d) Dideklarasikan dengan menambahkan kata register. Contoh Program : #include int pangkat(register int a, register int b){ register int hasil; hasil = 1; for (;b;b ){ hasil *=a; 6 } return hasil; } main(){ printf( 2^6 = %d\n,pangkat(2,6)); return 0; } Output : d. Variabel Statik Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variabel lokal (internal) dan variabel global (eksternal). Sifat-sifat variabel statis : a) Jika bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi tempat variabel dideklarasikan. b) Jika bersifat eksternal (global), maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada program yang sama. c) Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah berakhir. d) Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil pertama kali. e) Jika tidak diberi nilai awal secara otomatis berisi nilai nol. f) Dideklarasikan dengan menambahkan kata static. F. PENGIRIMAN PARAMETER

a. Pengiriman Parameter Secara Nilai (Call by Value) Yang dikirim adalah nilai dari datanya, bukan alamat memori letak datanya. Perubahan nilai di fungsi tidak akan merubah nilai asli di bagian program yang memanggil fungsi walaupun 7 keduanya menggunakan nama variabel yang sama. Merupakan pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil. Contoh program : #include void Secara_Nilai(float A, float B, char C); main() { char C='a'; float A = 25, *Alamat_A; Alamat_A=&A; Secara_Nilai(A,A/3,C); printf( Di fungsi utama setelah memanggil fungsi Secara_Nilai:\n ); printf( Nilai A adalah %f di alamat %p\n, A, Alamat_A); printf( Nilai A/3 adalah %f\n, A/3); printf( Nilai karakter C adalah %c\n, C); } void Secara_Nilai(float A, float B, char C); { float *Alamat_A; Alamat_A=&A; A=7; printf( Di fungsi Secara_Nilai:\n ); printf( Nilai A adalah 5f di alamat %p\n,a,alamat_a); printf( Nilai B adalah %f\n,b); printf( Nilai karakter C adalah %c\n\n,c); } Output : Di fungsi Secara_Nilai: Nilai A adalah 7.000000 di alamat FFCA Nilai B adalah 8.333333 8 Nilai karakter C adalah a. Di fungsi utama setelah memanggil Secara_Nilai;, Nilai A adalah 25.000000 di alamat FFD8, Nilai A/3 adalah 8.333333, Nilai karakter C adalah a Keterangan : Parameter-parameter nyata yang dikirimkan adalah datanya, yaitu untuk variabel A, A/3, dan C sebagai berikut : Secara_Nilai(A, A/3, C); Variabel A dan C menempati memori yang berbeda untuk fungsi utama yang memanggil fungsi dan yang digunakan di fungsi Secara_Nilai(). Untuk fungsi utama, variabel A disimpan di alamat FFD8, sedangkan di fungsi Secara_Nilai() nilai variabel A disimpan dalam alamat memori FFCA. Perubahan nilai variabel A di fungsi Secara_Nilai() menjadi bernilai 7 tidak merubah nilai variabel A ini di fungsi utama yang akan tetap bernilai 25. Pengiriman suatu nilai merupakan pengiriman satu arah sebagai berikut : Secara_Nilai(A, A/3, C); void Secara_Nilai(float A,float B, Char C) Pengiriman secara nilai dapat mengirimkan suatu ungkapan, yaitu A/3. b. Pengiriman parameter secara acuan (Call by reference) Yang dikirim adalah alamat memori letak datanya, bukan nilai dari datanya. Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi. Merupakan pengiriman dua arah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil dan sebaliknya. Contoh di bawah ini akan menunjukkan 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 nyata C akan mengirimkan alamatnya ke fungsi Tambah( ). Setelah proses di Tambah( ) selesai, alamat ini akan berisi dengan hasil proses fungsi, sehingga dapat digunakan dibagian program yang memanggilnya sebagai hasil yang diperoleh dari fungsi yang dipanggil. Contoh program : #include stdio.h #include conio.h void tukar(int *px, int *py); void main() 9 { int a,b; clrscr(); a = 15; b = 10; printf( Nilai sebelum pemanggilan fungsi\n ); printf( a = %i b = %i\n\n, a, b); tukar(&a,&b); /* parameter alamat a dan alamat b */ printf( Nilai setelah pemanggilan fungsi\n ); printf( a = %i b = %i\n\n, a, b); getch(); } void tukar(int *px, int *py) { int z; /* variabel sementara */ z = *px; *px = *py; *py = z; printf( Nilai di akhir fungsi tukar()\n ); printf( *px = %i *py = %i\n\n, *px, *py); } Output : c. Pengiriman Parameter Berupa Larik Pengiriman parameter berupa larik (yang dibahas larik dimensi satu) sebenarnya merupakan pengiriman secara acuan, karena sebenarnya yang dikirimkan adalah alamat dari elemen pertama lariknya, bukan seluruh nilai- nilai elemennya. Alamat elemen pertama dari larik dapat ditunjukkan oleh nama lariknya yang tidak ditulis dalam indeksnya. Bentuk ini akan tampak sebagai argumen di parameter nyata untuk bagian yang memanggil fungsi. 10 Contoh program : #include void Cetak_Mundur(char S[]); main() { char S[]= Ini string ; Cetak_Mundur(S); } void Cetak_Mundur(char S[]) { int I,N; for(n=0; S[N];N++); for (I=N-1;I>=0;I-- ) printf( %c,s[i]); printf( \n ); } Output : gnirts ini G. REKURSI Rekursi adalah suatu proses dari fungsi yang memanggil dirinya sendiri secaraberulangulang. Contoh program : #include < stdio.h > long int Fak_Rekursif ( int N );/* prototype fungsi */ main() { int N ; N = 5; printf( %d faktorial = %ld\n, N, Fak_Rekursif(N)); } 11 long int Fak_Rekursif ( int N )/* definisi fungsi */ { long int F; if ( N <= 1 ) return( 1 ) ; else { F = N * Fak_Rekursif( N 1); return(f); } } Output : 5 faktorial = 120 Penjelasan : Fungsi utama memanggil fungsi Fak_Rekursif dengan mengirimkan nilai 5 untuk parameter nyata N, yang maksudnya akan dilakukan perhitungan sebanyak 5 faktorial. 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. Jika N pertama kali yang diberikan oleh fungsi utama lebih besar dari 1,maka proses rekursi akan dilakukan. Misalnya nilai N adalah 5, maka proses rekursi yang pertama adalah : F=5*Fak_Rekursif(4); Proses ini akan memanggil kembali fungsi dirinya sendiri dengan mengirimkan nilai 4 sebagai nilai N yang baru. Karena nilai N masih lebih besar dari 1, maka proses rekursi yang kedua akan dilakukan dengan hasil adalah 4*Fak_Rekursif(3). Begitu selanjutnya sampai nilai N adalah 1. Untuk nilai N =1 ini, statemen return(1) akan mengembalikan proses ke bagian yang memanggilnya, yaitu statemen setelah statemen F=5*Fak_Rekursif(N-1). Statemen return(f) kemudian baru akan mengembalikan proses ke fungsi utama. 12

H. CONTOH PROGRAM FUNCTION Contoh Program ke-1 : #include #include #include int jumlah; void bakso() { int b; printf("masukkan jumlah pesanan anda : ");scanf("%d",&b); jumlah = b*7000; printf("total harga bakso pesanan anda = %d ", jumlah); } void mie_ayam() { int my; printf("masukkan jumlah pesanan anda : ");scanf("%d",&my); jumlah = my*6000; printf("total harga mie ayam pesanan anda = %d ", jumlah); } void soto_ayam() { int soto; printf("masukkan jumlah pesanan anda : ");scanf("%d",&soto); jumlah = soto*8000; printf("total harga soto ayam pesanan anda = %d ", jumlah); } void menu_makan() { int x; printf("pilih Makanan\n"); 13 printf(" 1. BAKSO\n 2. MIE AYAM\n 3. SOTO AYAM\n"); printf("masukkan Pilihan Anda : "); scanf("%d", &x); if (x==1){bakso();} else if (x==2) {mie_ayam();} else if (x==3) {soto_ayam();} else {printf("anda memasukkan yg tidak ada di pilihan");} } void estehmanis(); void jusjeruk(); void jusalpukat(); void menu_minum() { int y; printf("\n\npilih Minuman\n"); printf(" 1. ES TEH MANIS\n 2. JUS JERUK\n 3. JUS ALPUKAT\n"); printf("masukkan Pilihan Anda : "); scanf("%d", &y); if (y==1){estehmanis();} else if (y==2) {jusjeruk();} else if (y==3) {jusalpukat();} else {printf("anda memasukkan yang tidak ada di pilihan");} } void estehmanis() { int stm; printf("masukkan jumlah pesanan anda : ");scanf("%d",&stm); jumlah = stm*2000; printf("total harga es teh manis pesanan anda = %d ", jumlah); } void jusjeruk() { int jusjer; 14 printf("masukkan jumlah pesanan anda : ");scanf("%d",&jusjer); jumlah = jusjer*3000; printf("total harga jus jeruk pesanan anda = %d ", jumlah); } void jusalpukat() { int alpukat; printf("masukkan jumlah pesanan anda : ");scanf("%d",&alpukat); jumlah = alpukat*5000; printf("total harga jus alpukat pesanan anda = %d ", jumlah); } main() { menu_makan(); menu_minum(); getch(); } Output 15 Contoh Program ke-2 : #include "stdio.h" #include "conio.h" long int Fak_Rekursif ( int N )/* definisi fungsi */ { long int F; if ( N <= 1 ) return( 1 ) ; else { F = N * Fak_Rekursif( N - 1); return(f); } } int dectobin(int n){ if (n>0){ dectobin(n/2); printf("%d", n & 1); } return n; } void Cetak_Mundur(char S[]) { int I,N; for(n=0; S[N];N++); for (I=N-1;I>=0;I--) printf("%c",s[i]); printf("\n"); } int pil; int N; int fak; int n; char S[40]; char x; void main() { x='y'; do { clrscr(); printf ("======== Menu =========\n"); printf ("1. Faktorial\n"); printf ("2. Konversi Desimal Ke Biner\n"); printf ("3. String Terbalik\n"); 16 printf ("Masukkan pilihan Anda : "); scanf ("%d",&pil); switch (pil) { case 1: { printf ("\nmasukkan nilai N : "); scanf ("%d", &N); fak = Fak_Rekursif(N); printf("\n%d faktorial = %ld\n", N, fak);} printf ("\ningin kembali ke menu awal (y/t)?"); x = getch(); break; case 2: { printf ("\nmasukkan bilangan desimal : "); scanf ("%d", &n); printf ("\nbiner dari %d adalah ",n); dectobin(n); } printf ("\n\ningin kembali ke menu awal (y/t)?"); x = getch(); break; case 3: { printf ("\nmasukkan Nilai String : "); scanf ("%s",&s); printf ("\nstring terbalik dari %s adalah ",S); Cetak_Mundur(S); } printf ("\ningin kembali ke menu awal (y/t)?"); x = getch(); break; } } while(x=='y'); } 17 Output 18 DAFTAR PUSTAKA

Rachmat, Antonius.2010."Algoritma dan Pemrograman dengan Bahasa C".Yogyakarta : ANDI. http://www.ilab.gunadarma.ac.id/modul/newpta2011-2012/ap3%20cobol&c/m6.pdf http://blog.sunan-ampel.ac.id/ahmadlubab/files/2012/06/solichin-bahasac-07.pdf 19