Anda di halaman 1dari 13

PRAKTIKUM 5

FUNGSI

5.1 Tujuan
1. Menjelaskan cara pemanggilan fungsi.
2. Menjelaskan jenis variabel fungsi berdasarkan kelas penyimpanan.
3. Menjelaskan cara membuat beberapa fungsi dalam sebuah program.

5.2 Landasan Teori


1. Pemanggilan dengan Nilai dan Pemanggilan dengan Referensi
Pemanggilan dengan nilai (call by value) merupakan cara yang dipakai untuk
seluruh fungsi buatan yang telah dibahas pada praktikum sebelumnya. Pada
pemanggilan dengan nilai, nilai dari parameter aktual akan disalin ke parameter
formal. Dengan cara ini nilai parameter aktual tidak bisa dirubah sekalipun nilai
parameter formal berubah. Untuk lebih jelasnya lihat pada fungsi tukar() pada
contoh berikut ini.
/* File program : tukar1.c
Untuk melihat pengaruh pemanggilan nilai pada fungsi
untuk penukaran dua data */
#include <stdio.h>
void tukar (int, int);
main()
{
int a = 88, b = 77;
printf("Nilai sebelum pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
tukar(a,b);
printf("\n Nilai setelah pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
}
void tukar(int x, int y)
LABORATORIUM KOMPUTER DAN MULTIMEDIA
FAKULTAS TEKNIK
UNIVERSITAS JEMBER
{
z = x; x = y;
y = z;
printf("\n Nilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", x, y);
}
Tampak bahwa sekeluarnya dari pemanggilan fungsi tukar(), variabel a dan b
(yang dilewatkan ke fungsi tukar() tidak berubah, walaupun pada fungsi tukar()
telah terjadi penukaran antara parameter x dan y . Karena x hanyalah salinan dari
a dan y adalah salinan dari b. Pada saat pemanggilan fungsi, maka :
1. x bernilai 88 (nilai a)
2. y bernilai 77 (nilai b)
Pemanggilan dengan referensi (call by reference) merupakan upaya untuk
melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat dipakai
untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan
dilakukan di dalam fungsi. Sebagai contoh perhatikan program tukar2.c yang
merupakan modifikasi dari tukar1.c. Perubahan yang pertama terletak dalam
definisi fungsi, yang kini berupa
void tukar(int *px, int *py)
{
int z;
z = *px;
*px = *py;
*py = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", *px, *py);
}
Adapun perubahan dalam parameter aktualnya menjadi :
tukar(&a,&b); //alamat a dan alamat b
Dalam deklarasi parameter:
int *px, int *py
LABORATORIUM KOMPUTER DAN MULTIMEDIA
FAKULTAS TEKNIK
UNIVERSITAS JEMBER
menyatakan bahwa px dan py adalah suatu variabel pointer. Yang dimaksudkan
sebagai variabel pointer adalah suatu variabel yang menunjuk ke variabel lain.
Lebih jelasnya, variabel pointer berisi alamat dari variabel lain.
Adapun pada pemanggilan fungsi, &a dan &b masing-masing berarti "alamat a"
dan "alamat b". Dengan pemanggilan seperti ini, hubungan antara variabel pointer
px dan py dengan variabel a dan b adalah seperti ditunjukkan pada gambar di
bawah ini Dalam hal ini, px dikatakan menunjuk variabel a dan py menunjuk
variabel b.
/* File program : tukar2.c
Untuk melihat pengaruh pemanggilan nilai pada fungsi
untuk penukaran dua data */
#include <stdio.h>
void tukar (int *px, int *py); //prototype fungsi
main()
{
int a = 88, b = 77;
printf("Nilai sebelum pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
tukar(&a,&b); //alamat a dan alamat b
printf("\n Nilai setelah pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
}
void tukar(int *px, int *py)
{
int z;
z = *px;
*px = *py;
*py = z;
printf("\n Nilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", *px, *py);
}

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
2. Jenis Variabel berdasarkan Kelas Penyimpanan
Suatu variabel, di samping dapat digolongkan berdasarkan jenis/tipe data juga
dapat diklasifikasikan berdasarkan kelas penyimpanan (storage class).
Penggolongan berdasarkan kelas penyimpanan berupa :
 Variabel Lokal
Variabel lokal adalah variabel yang dideklarasikan dalam fungsi, dengan sifat :
a. secara otomatis diciptakan ketika fungsi dipanggil dan akan sirna (lenyap)
ketika eksekusi terhadap fungsi berakhir.
b. Hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan.
c. Tidak ada inisialisasi secara otomatis (saat variabel diciptakan, nilainya tak
menentu).
Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis.
Variabel yang termasuk dalam golongan ini bisa dideklarasikan dengan
menambahkan kata kuci auto di depan tipe-data variabel. Kata kunci ini bersifat
opsional, biasanya disertakan sebagai penjelas saja. Contoh variabel lokal
ditunjukkan seperti di bawah ini.
void fung_x(void)
{
int x;
.
.
.
}
Pada fung_x(), deklarasi
int x;
dapat ditulis menjadi
auto int x;
 Variabel Eksternal
Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi, dengan
sifat :
a. dapat diakses oleh semua fungsi.
LABORATORIUM KOMPUTER DAN MULTIMEDIA
FAKULTAS TEKNIK
UNIVERSITAS JEMBER
b. kalau tak diberi nilai, secara otomatis diinisialisasi dengan nilai sama dengan
nol.
Variabel eksternal haruslah dideklarasikan sebelum definisi fungsi yang akan
mempergunakannya. Untuk memperjelas bahwa suatu variabel dalam fungsi
merupakan variabel eksternal, di dalam fungsi yang menggunakannya dapat
mendeklarasikan variabel itu kembali dengan menambahkan kata kunci extern di
depan tipe data variabel. Kalau dalam suatu program terdapat suatu variabel
eksternal, suatu fungsi bisa saja menggunakan nama variabel yang sama dengan
variabel eksternal, namun diperlakukan sebagai variabel lokal.
 variabel statis.
 variabel register.

3. Menciptakan Sejumlah Fungsi


Pada C, semua fungsi bersifat sederajat. Suatu fungsi tidak dapat didefinisikan di
dalam fungsi yang lain. Akan tetapi suatu fungsi diperbolehkan memanggil fungsi
yang lain, dan tidak tergantung kepada peletakan definisi fungsi pada program.
Komunikasi antara fungsi dalam C ditunjukkan dalam gambar 5.1. Gambar
tersebut menjelaskan jika suatu fungsi katakanlah fungsi_a() memanggil
fungsi_b(), maka bisa saja fungsi_b() memanggil fungsi_a(). Contoh program
yang melibatkan fungsi yang memanggil fungsi yang lain ada pada program
kom_fung.c, yaitu fungsi_1() dipanggil dalam main(), sedangkan fungsi_2()
dipanggil oleh fungsi_1().

Gambar 5.1 Komunikasi antara fungsi dalam C

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
5.3 Alat dan Bahan
Berikut adalah alat dan bahan yang digunakan pada saat praktikum:
1. PC.
2. Software Dev C++.
3. Software Microsoft Visio.

5.4 Langkah Kerja


Berikut adalah prosedur langkah kerja yang dilakukan pada saat praktikum:
1. Menyiapkan PC yang sudah ter-instal Microsoft Visio dan Dev C++.
2. Membuka software Microsoft Visio dan membuat flowchart.
3. Mengimplementasikan flowchart yang dibuat ke dalam bahasa C dengan Dev
C++.
4. Membuat script sesuai dengan tugas dalam program Dev C++.
5. Meng-compile dan run script yang telah dibuat.
6. Membuat Kesimpulan.

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
5.5 Data Percobaan
5.5.1 Tugas 1
5.5.1.1 Flowchart

Mulai

Int x1, x2, pil, pil2,c

Masukan pil

Switch(pil)

c = (a >= b) ? a : b ;
c = (a <= b) ? a : b ;

Tulis c

Selesai

Gambar 5.1 Flowchart tugas 1

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
5.5.1.2 Listing Program
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int besar(int a, int b);
void kecil(int a, int b);
int c;
int main(void)
{
int x1,x2, pil, pil2;
mulai:
printf("1. Mencari Angka Terbesar \n");
printf("2. Mencari Angka Terkecil \n");
printf("0. Keluar \n");
printf("pilihan Anda : ");
scanf("%d", &pil);
switch (pil)
{
case 1:
a:
printf("masukkan angka pertama> ");
scanf("%d",&x1);
printf("masukkan angka kedua> ");
scanf("%d",&x2);
besar(x1,x2);
printf("1. Hitung Lagi \n");
printf("2. Kembali Ke Menu \n");
printf("Pilihan Anda : ");
if(pil2==1)
goto a;
if(pil2==2)

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
goto mulai;
break;
case 2:
b:
printf("masukan angka pertama> ");
scanf("%d",&x1);
printf("masukan angka kedua> ");
scanf("%d",&x2);
kecil(x1,x2);
printf("1. Hitung Lagi \n");
printf("2. Kembali Ke Menu \n");
printf("Pilihan Anda : ");
scanf("%d", &pil2);
if(pil2==1)
goto b;
if(pil2==2)
goto mulai;
break;
case 0:
exit;
break;
default:
break;
}

return (0);
}
int besar(int a, int b)
{
c = (a >= b) ? a : b ;
printf("Angka yang lebih Besar Adalah : %d \n", c);

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
return c;
}
void kecil(int a, int b)
{
c = (a <= b) ? a : b ;
printf("Angka yang lebih kecil adalah %d \n", c);
return ;
getch();
}

5.5.1.3 Keluaran Program

Gambar 5.2 Keluaran Program Tugas 1

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
5.5.2 Tugas 2
5.5.2.1 Flowchart

Mulai

Float x, luas, keliling

Masukan x

float F(float x){return 3.14159*x*x;}


float G(float x){return 3.14159*2*x;}

luas=F(x);
keliling=G(x);

Tulis luas, keliling

Selesai

Gambar 5.3 Flowchart Tugas 2

LABORATORIUM KOMPUTER DAN MULTIMEDIA


FAKULTAS TEKNIK
UNIVERSITAS JEMBER
5.5.2.2 Listing Program
#include <stdio.h>
#include <conio.h>

float F(float x){


return 3.14159*x*x;
}
float G(float x){
return 3.14159*2*x;
}
main(){
float x, luas, keliling;
printf("Masukan jari-jarinya = "); scanf("%f", &x);
luas=F(x);
keliling=G(x);
printf("f(%.2f)= %.2f \n",x,luas);
printf("f(%.2f)= %.2f \n",x,keliling);
getch();
}
5.5.2.3 Keluaran Program

Gambar 5.4 Keluaran Program Tugas 2


LABORATORIUM KOMPUTER DAN MULTIMEDIA
FAKULTAS TEKNIK
UNIVERSITAS JEMBER
LABORATORIUM KOMPUTER DAN MULTIMEDIA
FAKULTAS TEKNIK
UNIVERSITAS JEMBER