• Tidak ada hasil yang ditemukan

Minggu ke-11 Fungsi (Function)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Minggu ke-11 Fungsi (Function)"

Copied!
11
0
0

Teks penuh

(1)

Pendahuluan

Memahami konsep fungsi (function) yang biasa dikenal sebagai sub modul atau sub program. Function berguna dalam pengembangan prosedural dan pemecahan permasalahan. Dalam C, function diimplementasi untuk hal-hal yang khusus dan dipakai berkali-kali dalam program. Function didefinisikan sebagai objek tersendiri yang tidak boleh bersarang. Penggunaan function dapat mempermudah pengembangan program dan modifikasi.

Objektif

Memperkenalkan cara pendeklarasian function

Menjelaskan cara pemanggilan function

Konsep call by value dan call by reference

Pengenalan beberapa fungsi string

Bahan Bacaan

Buku pegangan atau buku-buku lain yang menjelaskan tentang topik ini.

Minggu ke-11

Fungsi (Function)

(2)

Pendeklarasian Function

Deklarasi Fungsi (Function)

Fungsi ada yang bernilai dan ada pula yang tidak bernilai. Sebuah fungsi bertipe void merupakan fungsi yang tidak bernilai. Sedangkan fungsi yang bertipe selain void dapat disebut sebagai fungsi bernilai. Cara deklarasi fungsi adalah sebagai berikut:

Tipe dari suatu fungsi dapat berupa void, int, float, double, long, struct dan lain-lain. Sebuah fungsi

bertipe void tidak akan mengirimkan nilai apabila fungsi tersebut selesai dieksekusi, sebaliknya fungsi yang bertipe selain void akan mengirimkan nilai apabila fungsi tersebut selesai dieksekusi. Pengiriman nilai

menggunakan statemen return. Contoh 1:

float celciusToFahreinheit(float celcius) {

return ((celcius * 9/5) + 32); }

tipe nama_fungsi(daftar parameter) {

statement }

(3)

Pendeklarasian Function (Lanjutan)

Perhatikan pemanggilan fungsi penjumlahan berikut ini:

int penjumlahan(int operan1, int operan2) {

return (operan1 + operan2); }

Contoh di atas memperlihatkan bahwa fungsi penjumlahan memiliki 2 buah parameter yaitu a dan b yang kedua-duanya bertipe int. Begitu juga dengan fungsi penjumlahan itu sendiri, juga bertipe int. Maksud dari penjumlahan bertipe int adalah apabila fungsi penjumlahan ini dipanggil maka fungsi ini akan memberikan sebuah nilai integer kepada statement yang memanggilnya.

Perhatikan pemanggilan fungsi penjumlahan tersebut dalam program.

#include <stdio.h> int main(void) { int a, b, c;

printf("Penjumlahan dua bilangan bulat\n"); printf("a = "); scanf("%d", &a);

printf("b = "); scanf("%d", &b); c = penjumlahan(a, b);

printf("Hasil penjumlahan a + b = %d\n", c); return 1;

(4)

Function bertipe void

Contoh 2: void judulTabel() { printf("---\n"); printf(" No. U r a i a n\n"); printf("---\n"); }

Perhatikan bahwa fungsi di atas tidak bernilai. Hal ini ditunjukkan dari tipe data fungsi yaitu void. Kemudian perhatikan pula bahwa pada bagian paling bawah dari implementasi fungsi tersebut statement

return tidak dipergunakan. Selain itu, lihat pula bahwa fungsi judulTabel juga tidak memiliki parameter.

Hal ini ditunjukkan dari tanda kurung buka dan kurung tutup langsung setelah nama fungsi.

Cara pemanggilan fungsi tersebut sama saja seperti pada contoh sebelumnya, hanya saja pada saat pemanggilan fungsi ini, statemennya berdiri sendiri.

#include <stdio.h> int main(void) { int i;

judulTabel(); /* pemanggilan fungsi */

return 1; }

(5)

Konsep Call by Value

Called by Value

Pengiriman nilai parameter secara called by value selalu dilakukan dengan mengkopikan nilai yang dikirim kepada parameter dalam fungsi. Pada contoh sebelumnya pada fungsi penjumlahan, pada saat fungsi tersebut dipanggil nilai a dan b dicopikan kepada masing-masing parameter operan1 dan operan2, sehingga apabila terjadi perubahan kepada nilai operan1 atau operan2, nilai variabel a dan b tidak akan terpengaruh. Perhatikan contoh berikut ini:

#include <stdio.h>

int penjumlahan(int, int); /* function prototype */ int main(void) { int a = 2, b = 6, c; c = penjumlahan(a, b); printf("Hasil penjumlahan a + b = %d\n", c); printf("a = %d\n", a); printf("b = %d\n", b); return 1; }

int penjumlahan(int operan1, int operan2) { operan1 = operan1 + 2;

return (operan1 + operan2); }

(6)

Konsep Call by Value (Lanjutan)

Pembahasan Program Sebelumnya:

Pada saat program tersebut dijalankan, compiler akan mengalokasikan 3 tempat masing-masing-masing kepada a, b dan c. Variabel a bernilai 2 dan variabel b bernilai 6.

2

6 ?

a

b c

statement c = penjumlahan(a, b); mengakibatkan compiler membuat 2 variabel lokal operan1 dan operan2 dan mengkopi nilai a dan b tersebut kepada kedua variabel lokal itu.

2 6 operan 1 operan 2

Perubahan nilai operan1 pada statemen operan1 = operan1 + 2;

tidak akan mengubah nilai a yang dideklarasi secara global pada fungsi main(). Hasil dari program di atas bila dijalankan adalah:

10 2 6

(7)

Konsep Call by Reference

Called by Reference

Pengiriman nilai parameter secara called by reference adalah pengiriman alamat dari suatu variabel kepada parameter berupa pointer ke suatu tipe data. Pemberian alamat kepada parameter ini dapat mengakibatkan perubahan nilai dari variabel yang alamatnya dikirimkan. Perhatikan contoh berikut ini:

#include <stdio.h>

int penjumlahan(int *, int *); /* function prototype */ int main(void) { int a = 2, b = 6, c; c = penjumlahan(&a, &b); printf("Hasil penjumlahan a + b = %d\n", c); printf("a = %d\n", a); printf("b = %d\n", b); return 1; }

int penjumlahan(int * pa, int * pb) { *pb = *pb - 3;

return (*pa + *pb); }

(8)

Konsep Call by Reference (Lanjutan)

Pembahasan Program Sebelumnya:

Pada saat program tersebut dijalankan, compiler akan mengalokasikan 3 tempat masing-masing-masing kepada a, b dan c. Variabel a bernilai 2 dan variabel b bernilai 6.

2

6 ?

a

b c

statement c = penjumlahan(&a, &b); mengakibatkan compiler memberikan alamat dari variable a dan b dan diberikan kepada pointer pa dan pb.

2 6

a b

pa pb

Statemen dereferencing *pb = *pb - 3; mengakibatkan nilai variabel b berubah menjadi 3 sehingga hasil penjumlahan menjadi 5. Hasil dari program di atas bila dijalankan adalah:

5 2 3

(9)

Function String

Beberapa Fungsi Berkaitan Dengan String char * strcpy(char * s, char * source)

Mengkopi string source ke s termasuk '\0' char * strcat(char * s, char * source)

Menyambung string source ke s int strcmp(char * s1, char * s2)

Membandingkan string s1 dengan s2

Bernilai negatif bila s1 < s2 Berniali 0 bila s1 = s2

Bernilai positif bila S1 > s2

(10)

Contoh Implementasi Fungsi strcpy

Implementasi versi 1:

Implementasi versi 2:

char *strcpy(char *dest, *source) {

while ((*dest++ = *source++) !="\0"); return dest;

}

char *strcpy(char *dest, *source) {

while (*dest++ = *source++) ; return dest;

}

Diskusikan

(11)

Contoh Implementasi Fungsi strcat

Contoh Implementasi fungsi strcat: Contoh manipulasi string:

char *strcat(char *first, char *second) { char *p; p =first; while (*p++) ; --p; while (*p++ = *second++) ; return first; }

char strA[80] = "Sebuah string untuk tujuan demo"; char strB[80];

int main(void) {

char *pA; /* sebuah pointer ke character */ char *pB; /* sebuah pointer ke character */ puts(strA); /* print string A */

pA = strA; /* pointer pA tunjuk ke string A */ puts(pA); /* tampilkan yang ditunjuk pA */ pB = strB; /* pointe pB tunjuk ke string B */ putchar('\n'); /* buat baris baru */

/* selama *pA tidak '\0' tidak null */ while(*pA != '\0')

{

*pB++ = *pA++; }

*pB = '\0'; /* beri null string kepada strB */ puts(strB); /* print string B */

return EXIT_SUCCESS; }

Referensi

Dokumen terkait

TIDAK ADA Caleg perempuan Partai Persatuan Nahdlatul Ummah Indonesia.. TIDAK ADA Caleg perempuan PNI Marhaenisme TIDAK ADA Caleg perempuan Partai Patriot TIDAK ADA

Tujuan penelitian ini adalah untuk mengetahui: (1) Pengaruh burnout terhadap prestasi belajar (2) Pengaruh beban belajar terhadap burnout (3) Pengaruh dukungan sosial

Pengawasan dan pengendalian elaksanaan Rencana Tapak Kawasan Obyek Wisata Gua Lawa guna menjamin tercapainya maksud dan tujuan Rencana sebagaimana dimaksud

Telah terpenuhinya pendanaan dan pembiayaan Pengabdian kepada Masyarakat yang harus terpenuhi oleh Wakil Rektor II Kadiri Kediri yang sesuai dengan yang telah

Kompetensi Dasar IPK Indikator Soal Level Kognitif Bentuk soal Nomor soal Sko r 3.1.1 Mengidentifikasi interaksi sosial dalam ruang dan pengaruhnya terhadap kehidupan

Hasil penelitian mengindikasikan bahwa variabel interaksi dengan teman dan interaksi dengan dosen tidak signifikan terhadap dependen, sedangkan variabel keterlibatan

Dipergunakan hanya di lingkungan akademik Universitas Indonesia HISTOGRAM Histogram merupakan grafik distribusi frekuensi Histogram digunakan

Massively Multiplayer Online First- person shooter games (MMOFPS) Game online jenis ini mengambil sudut pandang orang pertama sehingga seolah-olah pemain berada dalam