• Tidak ada hasil yang ditemukan

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

N/A
N/A
Protected

Academic year: 2021

Membagikan "Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan"

Copied!
11
0
0

Teks penuh

(1)

Fungsi (Function)

Pendahuluan

Fungsi (function) adalah sub modul atau sub program yang dibuat untuk menyelesaikan hal tertentu. Fungsi memiliki nama dan dalam ANSI/C, diimplementasi untuk hal-hal yang khusus dan dapat dipanggil berkali-kali (berulang) dalam program. Penggunaan fungsi dalam program mempermudah proses pengembangan aplikasi dan mempermudah proses perawatan program.

Objektif

 Memperkenalkan cara mendeklarasi fungsi (function)

 Menjelaskan cara memanggil fungsi (function) dalam program  Memperkenalkan konsep called-by value dan called-by reference

 Memperkenalkan beberapa fungsi yang berkaitan dengan manipulasi string

Bahan Bacaan

(2)

Pendeklarasian Fungsi (Function)

Cara Mendeklarasi Fungsi

Fungsi ada yang mengirim nilai setelah semua pernyataan dalam fungsi selesai dieksekusi dan ada pula yang tidak mengirim nilai. Fungsi yang bertipe void adalah fungsi yang tidak mengirim nilai, sedangkan fungsi yang bertipe selain void disebut dengan fungsi yang bernilai (fungsi yang mengirim nilai setelah semua pernyataan di dalam fungsi selesai dieksekusi). Cara mendeklarasi sebuah fungsi adalah:

tipe nama_fungsi(parameter) {

pernyataan; }

Tipe dari sebuah fungsi dapat berupa void, int, float, double, long, struct dan lain-lain. Fungsi yang bertipe void tidak akan mengirimkan nilai setelah fungsi selesai dieksekusi, sedangkan fungsi yang tidak bertipe void akan mengirimkan sebuah nilai ketika fungsi selesai dieksekusi. Pengiriman nilai oleh fungsi dilakukan menggunakan pernyataan return.

Contoh 1:

float celcius_to_fahreinheit(float celcius) {

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

(3)

Pendeklarasian Fungsi Lanjutan

Perhatikan fungsi penjumlahan berikut ini:

int penjumlahan(int operan1, int operan2) {

return (operan1 + operan2); }

Fungsi penjumlahan di atas memiliki 2 buah parameter yaitu operan1 dan operan2 yang kedua-duanya bertipe int. Fungsi penjumlahan itu sendiri juga bertipe int. Maksud dari sebuah fungsi bertipe int adalah ketika fungsi tersebut dipanggil dalam program maka fungsi tersebut akan mengirimkan kembali sebuah nilai integer kepada pernyataan dimana fungsi tersebut dipanggil.

Perhatikan contoh pemanggilan fungsi penjumlahan 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)

Fungsi Bertipe

void

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

Perhatikan bahwa fungsi judul_tabel tidak memiliki nilai (tidak bernilai). Hal ini ditunjukkan pada bagian tipe dari fungsi yang bernilai void. Kemudian, perhatikan pula bahwa tidak ada pernyataan return pada bagian akhir fungsi. Selain itu, perhatikan pula bahwa fungsi judul_tabel tidak memiliki parameter. Hal ini terlihat pada bagian tanda kurung buka dan tutup setelah nama fungsi.

Cara pemanggilan fungsi tersebut sama saja seperti pada contoh sebelumnya, hanya saja pada saat fungsi tersebut dipanggil, tidak ada variabel yang menampung nilai dari fungsi, atau dengan kata lain, pernyataan pemanggilan fungsi tidak menggunakan pernyataan assignment yang menggunakan tanda =.

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

judul_tabel(); /* pemanggilan fungsi */

return 1; }

(5)

Konsep Called-by Value

Called-by Value

Pengiriman nilai parameter secara called-by value dilakukan dengan mengkopikan nilai yang dikirim kepada parameter fungsi. Perhatikan fungsi penjumlahan sebelumnya. Pada saat fungsi tersebut dipanggil nilai a dan b di-copy secara berurutan kepada parameter operan1 dan operan2. Apabila terjadi nilai operan1 atau

operan2 berubah maka nilai dari variabel a dan b tidak akan terpengaruh. Perhatikan contoh berikut ini: #include <stdio.h>

int penjumlahan(int, int); /* prototype fungsi*/ 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 Called-by Value (Lanjutan)

Pembahasan Program Sebelumnya:

Pada saat program dijalankan, compiler akan mengalokasikan memori untuk a, b dan c. Variabel a bernilai 2 dan variabel b bernilai 6. Sementara, variabel c belum memiliki nilai.

2

6 ?

a

b c

Penyataan c = penjumlahan(a, b);

membuat compiler untuk mengalokasi dua variabel lokal tambahan yaitu operan1 dan operan2 dan kemudian, mengkopi nilai a dan b kepada kedua variabel lokal itu.

2 6 operan 1 operan 2

Perubahan nilai variabel operan1 pada pernyataan operan1 = operan1 + 2;

tidak akan mempengaruhi nilai variabel a yang dideklarasi secara global pada fungsi main()karena nilai variabel a telah di-copy ke variabel lokal operan1. Hasil dari program di atas bila dijalankan adalah:

Hasil penjumlahan a + b = 10 a = 2

(7)

Konsep Called-by Reference

Called-by Reference

Maksud dari pengiriman parameter secara called-by reference adalah pengiriman alamat dari suatu variabel kepada parameter fungsi yang bertipe pointer. Pemberian alamat kepada parameter dapat mengakibatkan perubahan nilai pada variabel yang alamatnya dikirimkan. Perhatikan contoh berikut ini:

#include <stdio.h>

int penjumlahan(int *, int *); /* prototype fungsi */ 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 Called-by Reference (Lanjutan)

Pada saat program sebelumnya dijalankan, compiler akan mengalokasikan tiga tempat dalam memori masing-masing-masing untuk variabel a, b dan c. Variabel a bernilai 2 dan variabel b bernilai 6, sementara variabel c belum memiliki nilai.

2

6 ?

a

b c

pernyataan c = penjumlahan(&a, &b); Akan memberikan alamat dari variable a dan b kepada pointer pa dan pb.

2 6

a b

pa pb

Pernyataan dereferencin *pb = *pb - 3;

mengakibatkan nilai variabel b berubah menjadi 3 dan hasil penjumlahan bernilai 5. Keluaran dari program di atas bila dijalankan adalah:

Hasil penjumlahan a + b = 5 a = 2

(9)

Fungsi yang Berkaitan dengan String

char * strcpy(char * s, char * source) Mengkopi 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:

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

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

}

Implementasi versi 2:

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

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

return dest; }

(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

Sedangkan untuk variabel pendidikan, pendapatan, jenis kelamin, status perkawinan, dan riwayat penyakit tidak memiliki pengaruh yang signifikan terhadap kepemilikan

Maka berdasarkan hal tersebut dapat disimpulkan bahwa tugas akhir ini terbukti mampu membuat, merancang dan menguji media pembelajaran olahraga bola voli berbasis

Ekonomi Jambi telah mampu tumbuh secara berkualitas, yang ditopang dengan peningkatan investasi dalam dan luar negeri, belanja Pemerintah Pusat dan Pemerintah

Disini, walaupun Khaled membuat prasyarat pembaca sebagai pengawalan namun itu tampak kontradiktif, dimana pernyataan- pernyataannya memberikan ruang interpretasi al-Qur’an

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

Pemanfaatan mikroorganisme dalam bidang teknologi semakin banyak digunakan misalnya dalam menghasilkan berbagai produk seperti bahan pangan, industri, pertanian,

program unggulan dalam rangka pengendalian inflasi Kota Jambi pada masa yang akan datang..  Inflasi: perubahan secara umum atas

Hasil analisis menunjukkan kualitas massa batuan dan tingkat kestabilan lereng berdasarkan nilai SMR untuk scanline I, VII dan IX sangat baik dengan kondisi