Anda di halaman 1dari 36

BAB VI

ARRAY

1. Pendahuluan
a. Deskripsi
Bab ini menyajikan tentang pengertian, cara deklarasi, dan
penggunaan array baik array berdimensi satu, array berdimensi dua,
dan array multi-dimensi. Serta disajikan contoh - contoh
penggunaannya masing - masing.
b. Tujuan Pembelajaran
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan
dapat memahami penggunaan array serta mampu mengaplikasikan
dalam menyelesaikan program yang membutuhkan penyelesaian
dengan array.

2. Teori Dasar
Array atau larik adalah tipe terstruktur yan terdiri dari
sejumlah komponen yang mempunyai tipe yang sama. Jumlah
komponen dalam sebuah array adalah tetap. Banyaknya komponen
dalam array ditunjukkan oleh indeks yang berfungsi untuk
membedakan variabel yang satu dengan variabel lainnya. Dalam
bahasa C dikenal 3 macam array yaitu :
a. Array Berdimensi Satu
Untuk mengakses setiap elemen dalam array dapat dilakukan
dengan mengakses indeksnya. Indeks setiap array default dimulai dari
nol. Adapun bentuk deklarasi array adalah [4]:

Tipe_data Nama_variabel[Ukuran]

56
Tipe data untuk menyatakan tipe data yang digunakan dan ukuran
digunakan untuk menyatakan jumlah maksimum elemen array.
Sebuah array dapat digambarkan sebagai kotak anjang yang berisi
kotak - kotak kecil di dalam kotak panjang tersebut. Contoh :

int nilai[5];
indeks [0] [1] [2] [3] [4]

50 85 90 70 95

Contoh program :
# include <stdio.h>
# include <conio.h>
void main()
{ int index, barang[10];
clrscr();
// input jumlah barang//
printf ("Masukkan jumlah Barang :\n");
for (index =0 ; index < 10; index ++)
{
printf ("Barang %i : ", index+1);
scanf ("%i", &barang[index]);
}
printf ("Jumlah barang yang telah diinput:");
for (index = 0; index < 10; index++)
{
printf ("%i", barang[index]);
}
getch ();
}

Tampilan program diatas adalah :

57
Untuk mengakses array berdimensi 1, dapat digunakan bentuk
pengaksesan sebagai berikut [1]:
Nama_array[indeks]
Contoh :
nilai [3];
nilai [1];
nilai [0]; dst
Sedangkan untuk inisialisasi suatu array dapat dilakukan dengan
bentuk :
Tipe_data nama_array[indeks] = {nilai array};
Contoh :
float nilai[5] = {75.8 78,67 87,5 90.0 65.7};
Contoh program inisiakisasi dan mengakses array :
#include <stdio.h>
#include <conio.h>
main()
{ int i, nilai [5];
nilai [0] = 10;
nilai [1] = 8;
nilai [2] = 5;
nilai [3] = 7;
nilai [4] = 8;

58
printf ("Nilai = ");
for (i = 0; i<5 ; i++)
printf ("%i ", nilai[i]);
getch();
}

Tampilan program diatas adalah :

Contoh program [1]:


# include <stdio.h>
# include <conio.h>
void main()
{ int index,nilai[5] = {89, 75, 90, 65, 95};
for (index = 0; index <5 ; index ++)
{
printf("\nNilai elemen ke %i adalah :%i", index+1, nilai[index]);
}
printf ("\n\nNilai elemen ke 3 : %i", nilai[2] );
getch();
}

Tampilan program diatas adalah :

59
b. Array Berdimensi Dua
Array dimensi dua tersusun dalam bentuk baris dan kolom,
dimana indeks pertama menunjukkan baris dan indeks kedua
menunjukkan kolom. Array dimensi dua dapat digunakan pada
pendataan penjualan, pendataan nilai, dan sebagainya.
Bentuk umum pendeklarasian array [1]:
Tipe_data Nama_variabel [indeks-1][indeks-2]
Bentuk umum pengaksesan array berdimensi dua adalah :

Nama_array [index-1][index-2]
Contoh :
Data [3][2]
Data [0][1]
Bentuk pendefenisian array berdimensi dua adalah :
Tipe_data nama_array [juml_elemen] = {nilai array};

Contoh :
Int data [2][4] = {{ 1, 2, 3, 4}, 4, 3, 2, 1};
Contoh deklarasi array pada bahasa C [5]:
#include <stdio.h>
#include <conio.h>
main()
{ int i,j, matriks [3][3];
matriks [0][0] = 10;
matriks [0][1] = 6;
matriks [0][2] = 5;
matriks [1][0] = 7;
matriks [1][1] = 9;
matriks [1][2] = 5;
matriks [2][0] = 7;
matriks [2][1] = 3;

60
matriks [2][2] = 2;
printf ("Matriks = ");
for (i = 0; i<3 ; i++)
{for (j = 0; j < 3; j++)
{printf ("%i ", matriks[i][j]); }
printf ("\n \t");
}
getch();
}

Tampilan program diatas adalah :

Contoh Program 2[4]:


#include "stdio.h"
#include "conio.h"
void main()
{ int baris, kolom, matriks[3][4];
clrscr();
// Input elemen array secara Row Major Order
printf("Input elemen Array : \n");
for(baris=0; baris<3; baris++)
{ for(kolom=0; kolom<4; kolom++)
{ printf("matriks[%i][%i] : ", baris+1, kolom+1);
scanf("%i", &matriks[baris][kolom]);
}
printf("\n");
}
// Tampilkan elemen Array secara Row Major Order
printf("Isi array : \n");
for(baris=0; baris<3; baris++)
{ for(kolom=0; kolom<4; kolom++)
{ printf("%i", matriks[baris][kolom]);
}
printf("\n");

61
}
getch();
}

Tampilan program diatas adalah :

Contoh program 2 [2]: Penjumlahan dua buah matriks


#include <stdio.h>
#include <conio.h>
#define maks 3
main()
{
int mat1[maks][maks], mat2[maks][maks], mathasil[maks][maks];
int b,k;
printf("Pengisian Matrik 1 : \n");
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf("Matrik [%d,%d] : ",b,k);
scanf("%d",&mat1[b][k]);
}

62
}
printf("Pengisian Matrik 2 : \n");
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf("Matrik [%d,%d] : ",b,k);
scanf("%d",&mat2[b][k]);
}
}
// awal operasi pertambahan matrik
for (b=0;b<maks;b++)
for (k=0;k<maks;k++)
mathasil[b][k]=mat1[b][k]+mat2[b][k];
// akhir operasi perhitungan
printf("Matrik 1 :\n") ;
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf("%6d",mat1[b][k]);
}
printf("\n");
}
printf("Matrik 2 :\n");
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf("%6d",mat2[b][k]);
}
printf("\n");
}
printf("Matrik Hasil :\n");
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{

63
printf("%6d",mathasil[b][k]);
}
printf("\n");
}
getch();
return 0;
}

Tampilan program diatas adalah :

c. Array Multi-dimensi
Array multi-dimensi merupakan array yang mempunyai ukuran
lebih dari dua. Bentuk pendeklarasian array sama saja dengan array
dimensi satu maupun array dimensi dua. Bentuk umumnya yaitu [4]:
tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];
Contoh :

64
float X[2][4][3];
Contoh program [4]:
#include “stdio.h”
#include “conio.h”
void main()
{ int i, j, k;
static int data_huruf[2][8][8] =
{ { { 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
},
{ { 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
}
};
/* Tampilkan Huruf */
for(i=0; i<2; i++)
{ for(j=0; j<8; j++)
{ for(k=0;k<8; k++)
if (data_huruf[i][j][k])
putchar(„\xDB‟);
else
putchar(“ “); /* spasi */
puts(“”);
}
puts(“”);

65
}
getch();
}

Contoh aplikasi :
¾ Pencarian data (searching) menggunakan array[5] :
#include <stdio.h>
#include <conio.h>
int main()
{
int a[20] = {0};
int i;
int n; //mengacu pada jumlah array
int target; //berisi data yang akan dicari
int ketemu; // status dari proses pencarian; 1 = ketemu, 0 = tidak
ketemu

printf("Masukkan data - data yang ingin dibuat MAX 20 data :\t");


scanf ("%i", &n);
if (n >= 20) return 0;
printf ("Masukkan data - data pada array yang akan dibuat :\n");
for (i = 0; i < n; i++)
{
printf ("data ke-%d\t :", i+1);
scanf ("%d", &a[i]);
}
for (i = 0; i < n; i++) // perulangan digunakan untuk menampilkan
seluruh elemen array
{
printf("%d",a[i]);
}
printf ("\nMasukkan angka yang akan dicari : ");
scanf ("%d", &target);

for (i = 0; i < n-1; i++) // proses pencarian dilakukan mulai dari


elemen ke-0 (pertama)
{

66
if (a[i] == target)
{
printf (" Data %d ditemukan pada urutan ke %d", target, i+1);
ketemu = 1; // variabel ketemu diberi nilai 1 untuk menunjukkan
bahwa proses pencarian berhasil
return 0 ;
}
printf ("Data tidak ditemukan");
}
getch () ;
}

Tampilan program diatas adalah [5]:

¾ Pengurutan data dengan menggunakan array (menggunakan


metode selection short.
#include <stdio.h>
#include <conio.h>
main()
{
int N = 5; //jumlah elemen array arr
int arr [5] = {63, 21, 3, 177, 8};
int i, j, k, temp, biggest;

printf ("Data elemen array arr sebelum di urutkan \n");


for (i = 0; i <= 4 ; i++);
{
printf ("%d ", arr[i]);

67
}
printf ("\n");
// Proses pengurutan data bobble Sort
for (i = 0; i <= N-2; i++)
{
biggest = 0;
for (j =0 ; j <= N-i-1; j++)
{
if (arr [j] < arr [biggest])
{
biggest = j;
}
}
temp = arr [N-1-i];
arr [N-1-i] = arr [biggest];
arr [biggest] = temp;
printf ("Loop - %d", i + 1); // Menampilkan hasil pengurutan setiap
loopnya
for (k = 0; k <=4; k++)
{
printf ("%d ", arr[k]);
}
printf ("\n");
}
printf (" Data elemen array arr setelah diurutkan\n");
for (i = 0; i <=4; i++)
{
printf ("%d ", arr[i]);
}
printf ("\n");
getch ();
return 0;
}

Tampilan program diatas adalah :

68
3. Latihan

1. Buatlah sebuah program untuk menghitung jumlah dan hasil


kali matriks A dan B sebagai berikut :
ͷ
A=[ ] B=[ ]
ͷ ͷ
2. Jumlah suara masing- masing calon pada sebuah pemilihan
walikota adalah sbb :
Calon
A B C D
Kecamatan
1 304 125 112 111
2 203 236 231 145
3 112 312 332 211
4 98 142 167 245
5 346 154 287 123

Dengan menggunakan array, buatlah program untuk


menyelesaikan pekerjaan ini :
a. Membaca dan mencetak hasil pemilihan diatas dalam bentuk
tabel

69
b. Menghitung dan mencetak jumlah suara masing - masing
calaon hasil pemilihan tersebut.
c. Tampilkan pemenang hasil pemilihan tersebut.
3. Urutkanlah bilangan berikut dengan menggunakan metode
bubble sort.
[12, 35, 27, 5, 10, 56, 98, 75)
1. Terdapat sebuah array dua dimensi yang dibuat dengan int
[3][5] dan telah diisi. Buatlah sebuah program untuk :
a. Mencetak nilai yang terbesar
b. Mencetak nilai yang terbesar dan mencetak ada berapa
buah nilai yang terbesar.
c. Mencetak nilai yang terbesar dan mencetak ada berapa
buah nilai yang terbesar, serta mencetak ada di lokasi mana
saja nilai terbesar tersebut.
d. Memeriksa apakah diantara isi array tersebut ada yang
nilainya = 50. Bila ada, maka cetak perkataan ada “ADA”
dan bila tidak ada maka cetak “TIDAK ADA”.

70
Daftar Pustaka

[1] Frieyadie. 2005. “Panduan Pemrograman C ++”. Penerbit Andi.


Yogyakarta

[2] Kurniawan Khannedy Eko. 2007. “Pemrograman C”. Teknik


Informatika. UNICOM.

[3] Sjukani Moh. 2009. “Algoritma (Algoritma & Struktur Data 1)


dengan C, C++, dan Java, Teknik - Teknik Dasar Pemrograman
Komputer”. Edisis 5. Mitra Wacana Media. Jakarta

[4] Solichin Achmad. “Pemrograman Bahasa C dengan Turbo C”.


www.ilmukomputer.com

[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman


menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta

71
BAB VII
FUNGSI

1. Pendahuluan
a. Deskripsi
Bab ini membahas tentang fungsi pustaka yaitu fungsi yang
telah tersedia dalam turbo C dan fungsi yang dapat dibuat sendiri
oleh programmer. Pada fungsi yang dapat dibuat sendiri oleh
programmer akan dijelaskan tentang cara mendeklarasikan fungsi,
jenis parameter dan variabel yang digunakan dalam bahasa C serta
cara pemanggilan fungsi. Di akhir pembahasan, akan dijelaskan
tentang fungsi rekursif. Dalam setiap pembahasan akan diberikan
contoh program yang akan membantu mahasiswa lebih memahami
tentang penggunaan fungsi.
b. Tujuan Pembahasan
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan
mampu memahami kegunaan penggunaan fungsi dalam bahasa
pemrograman dan mampu menerapkan penggunaan fungsi dalam
pemrograman bahasa C.
2. Teori Dasar
Fungsi adalah bagian dari program yang digunakan untuk
suatu tugas tertentu dan letaknya terpisah dari program utama.
Fungsi merupakan bagian utama dalam bahasa C karena program
bahasa C sendiri tersusun atas kumpulan fungsi - fungsi dam dalam
setiap program minimal terdapat satu buah fungsi yaitu fungsi main
(). Adapun kegunaan penggunaan fungsi dalam bahasa C adalah :
Program menjadi lebih terstruktur sehingga mudah untuk
dipahami dan

72
Untuk mengurangi pengulangan penulisan program yang sama.
Dalam bahasa C fungsi dibagi menjadi dua yaitu fungsi pustaka atau
fungsi yang telah tersedia dalam turbo C dan yang didefinisikan atau
dibuat oleh programmer.
a. Fungsi Pustaka dalam Bahasa C [4]
1) Fungsi Operasi String (tersimpan dalam header file
“string.h”)
9 strcpy() berfungsi untuk menyalin suatu string asal ke variable
string tujuan. Bentuk umum : strcpy(var_tujuan, string_asal);
9 strlen() Berfungsi untuk memperoleh jumlah karakter dari
suatu string. Bentuk umum : strlen(string);
9 strcat() Digunakan untuk menambahkan string sumber ke
bagian akhir dari string tujuan. Bentuk umum : strcat(tujuan,
sumber);
9 strupr() Digunakan untuk mengubah setiap huruf dari suatu
string menjadi huruf capital. Bentuk umum : strupr(string);
9 strlwr() Digunakan untuk mengubah setiap huruf dari suatu
string menjadi huruf kecil semua. Bentuk umum :
strlwr(string);
9 strcmp() Digunakan untuk membandingkan dua buah string.
Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string
kedua.
Bentuk umum : strcmp(string1, string2);

73
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "string.h"
void main()
{ char nama[20];
char nama1 [30]= "UNIVERSITAS HASANUDDIN";
char nama2 [30]= "Teknik Informatika" ;
int x;
strcpy(nama,nama1);
printf("Nama : %s", nama1);
printf("\nJumlah karakter : %i",strlen(nama));
strcat (nama2,nama1);
printf ("\n");
puts (nama2);
strupr(nama2);
printf ("\n");
puts (nama2);
printf ("\n");
strlwr (nama2);
puts (nama2);
strcmp (nama1,nama2) ;
printf("Hasil : %i", x);
getch();
}

Tampilan program diatas adalah :

74
2) Fungsi Operasi Karakter (tersimpan dalam header
“ctype.h”) [4]
9 islower() Fungsi akan menghasilkan nilai benar (bukan nol)
jika karakter merupakan huruf kecil. Bentuk umum :
islower(char);
9 isupper() Fungsi akan menghasilkan nilai benar (bukan nol)
jika karakter merupakan huruf kapital. Bentuk umum :
isupper(char);
9 isdigit() Fungsi akan menghasilkan nilai benar (bukan nol) jika
karakter merupakan sebuah digit. Bentuk umum : isdigit(char);
9 tolower() Fungsi akan mengubah huruf capital menjadi huruf
kecil. Bentuk umum : tolower(char);
9 toupper() Fungsi akan mengubah huruf kecil menjadi huruf
kapital. Bentuk umum : toupper(char);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "ctype.h"
void main()
{ char karakter;
clrscr();
printf ("Masukkan sebuah karakter : \t");
karakter = getche();
if (islower (karakter))
{ printf ("\nadalah huruf kecil");
printf ("\nHuruf kapitalnya adalah :%c",toupper(karakter));}
else if (isupper (karakter))
{ puts ("\nadalah huruf kapital");
printf ("\nHuruf kecilnya adalah :%c",tolower(karakter));}
else if (isdigit (karakter))
{ puts("\nadalah bilangan digit");
}
getch ();}

75
Tampilan program diatas adalah :

3) Fungsi Operasi Matematik (tersimpan dalam header


“math.h” dan “stdlib.h”) [4]
9 sqrt() Digunakan untuk menghitung akar dari sebuah
bilangan. Bentuk umum : sqrt(bilangan);
9 pow() Digunakan untuk menghitung pemangkatan suatu
bilangan. Bentuk umum : pow(bilangan, pangkat);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "math.h"
void main()
{ int x, y; float z;
clrscr();
printf ("Menghitung x pangkat y");
printf ("\nMasukkan Nilai x :"); scanf("%i",&x);
printf ("\nMasukkan Nilai y :"); scanf ("%i", &y);
printf ("\nx^y = %i ^ %i = %3.2f", x,y, pow(x,y));

printf ("\n\nMenghitung akar x");


printf ("\nMasukkan Nilai x :"); scanf("%i",&x);
printf ("\nAkar x adalah %2.2f",sqrt (x));
getch();
}

76
Tampilan program diatas adalah :

9 sin(), cos(), tan() Masing-masing digunakan untuk menghitung


nilai sinus, cosinus dan tangens dari suatu sudut. Bentuk
umum :
sin(sudut);
cos(sudut);
tan(sudut);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "math.h"
void main()
{
clrscr();
int sudut;
printf ("Menghitung sin, cos, dan tan\n");
printf ("Masukkan sudut :");
scanf ("%i",&sudut);
printf ("\nsin %i = %5.2f\n", sudut, sin (sudut));
printf ("cos %i = %5.2f\n", sudut, cos (sudut));
printf ("tan %i = %5.2f", sudut, tan (sudut));
getch();
}

77
Tampilan program diatas adalah :

9 atof() Digunakan untuk mengkonversi nilai string menjadi


bilangan bertipe double. Bentuk umum : atof(char x);
9 atoi() Digunakan untuk mengkonversi nilai string menjadi
bilangan bertipe integer. Bentuk umum : atoi(char x);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "stdlib.h"
void main()
{
clrscr();
char x [10]= "123";
char y [10]= "3.14";
printf ("Nilai x = %i",atoi(x));// Mengubah string menjadi integer
printf ("Nilai y = %f", atof(y));// mengubah string menjadi float
getch();
}

Tampilan program diatas adalah :

78
9 div() Digunakan untuk menghitung hasil pembagian dan sisa
pembagian. Bentuk umum : div_t div(int x, int y) Strukturnya
:
typedef struct
{ int qout; // hasil pembagian
int rem // sisa pembagian
} div_t;

Contoh program [1]:


#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
{ int x, y;
div_t hasil;
clrscr();
printf("Menghitung sisa dan hasil pembagian x dengan y\n");
printf("x = "); scanf("%i", &x);
printf("y = "); scanf("%i", &y);
hasil = div(x,y);
printf("\n\n %3i div %3i = %3i sisa %3i", x, y, hasil.quot, hasil.rem);
getch();
}

Tampilan program diatas adalah :

79
9 max() Digunakan untuk menentukan nilai maksimal dari dua
buah bilangan. Bentuk umum : max(bilangan1, bilangan2);
9 min() Digunakan untuk menentukan bilangan terkecil dari dua
buah bilangan. Bentuk umum : min(bilangan1, bilangan2);
Contoh program :
#include "conio.h"
#include "stdlib.h"
void main()
{ int a, b, c, d;
printf ("Masukkan Nilai\n");
printf ("a = "); scanf ("%i", &a);
printf ("b = "); scanf ("%i", &b);
printf ("c = "); scanf ("%i", &c);
printf ("d = "); scanf ("%i", &d);
printf ("Nilai maksimumnya adalah %i", max(max(max(a,b),c),d));
printf ("\nNilai minimumnya adalah %i", min(min(min(a,b),c),d));
getch ();
}

Tampilan program diatas adalah :

80
b. Membuat Fungsi Sendiri

1) Deklarasi Fungsi
Bentuk deklarasi sebuah fungsi adalah sebagai berikut [1] :
Tipe_fungsi nama_fungsi (parameter_fungsi)
{
Statement;
Statement;

}

Dalam penggunaan fungsi terdapat beberapa hal yang perlu untuk


diperhatikan, diantaranya :
Nama fungsi dapat ditentukan dengan bebas dengan ketentuan
tidak menggunakan spasi dan nama - nama fungsi yang
disediakan oleh turbo C.
Kalau tipe fungsi tidak disebutkan, maka akan dianggap
sebagai fungis dengan nilai keluaran bertipe integer.
Untuk fungsi yang memiliki keluaran bertipe bukan integer,
maka diperlukan pendefinisian penentu tipe fungsi.
Untuk fungsi yang tidak mempunyai nilai keluaran maka
dimasukkan ke dalam tipe void
Pernyataan yang diberikan untuk memberikan nilai akhir
fungsi berupa pernyataan return.
Suatu fungsi dapat menghasilkan nilai balik bagi fungsi
pemanggilnya.
Contoh program :
#include "stdio.h"
#include "conio.h"
kampus () // fungsi kampus
{ puts ("UNIVERSITAS HASANUDDIN");
}
void main () // program utama

81
{clrscr();
printf ("Nama Universitas :\n");
kampus (); // memanggil fungsi kampus
getch();
}

Tampilan program diatas adalah :

2) Parameter Fungsi
Dalam bahasa C terdapat 2 macam parameter fungsi yaitu [1] ;
Parameter formal yaitu variabel yang terdapat pada daftar
parameter yang berada di dalam definisi fungsi.
Parameter aktual adalah variabel yang digunakan pada
pemanggilan satu fungsi.
Terdapat dua cara untuk melewatkan parameter ke dalam fungsi,
yaitu :
Pemanggilan dengan nilai (Call by value) [2]
Call by value akan menyalin nilai dari parameter aktual ke
parameter formal. Nilai yang dikirimkan ke fungsi adalah nilai dari
datanya, bukan alamat memori letak dari datanya. Fungsi yang
menerima kiriman nilai akan menyimpannya di alamat terpisah dari
nilai aslinya yang digunakan oleh bagian program yang memanggil
fungsi. Perubahan nilai di fungsi (parameter formal) tidak akan
merubah nilai asli di bagian program yang memanggilnya. Pengiriman
parameter secara nilai adalah pengiriman searah, yaitu dari bagian

82
program yang memanggil fungsi ke fungsi yang dipanggil. Pengiriman
suatu nilai dapat dilakukan untuk suatuungkapan tidak hanya
untuk sebuah variabel, elemen array atau konstanta saja.
Contoh program :
#include "stdio.h"
#include "conio.h"
nilai (int x, int y);
void main ()
{
clrscr ();
int a = 10, b = 5;
printf ("Nilai sebelum pemanggilan fungsi");
printf ("\nNilai a = %i dan nilai b = %i", a,b);
nilai (a,b); // pemanggilan fungsi
printf ("\n\nNilai setelah pemanggilan fungsi");
printf ("\n\nNilai a = %i dan nilai b = %i", a,b);
getch();
}
nilai (int x, int y)
{
x+=5;
y+=5;
printf ("\n\nNilai setelah pemanggilan fungsi");
printf("\na = %i dan nilai b = %i",x, y);
}

Tampilan program diatas adalah :

83
Pemanggilan Secara Referensi (Call by Reference)
Pemanggilan secara Referensi merupakan upaya untuk
melewatkan alamat dari suatu variabel ke dalam fungsi. Yang
dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan
nilai datanya. Fungsi yang menerima kiriman alamat ini akan
menggunakan alamat yang sama untuk mendapatkan nilai datanya.
Perubahan nilai di fungsi akan merubah nilai asli di bagian program
yang memanggil fungsi. Pengiriman parameter secara referensi
adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke fungsi
yang dipanggil dan juga sebaliknya. Pengiriman secara acuan tidak
dapat dilakukan untuk suatu ungkapan.
Contoh program :
#include "stdio.h"
#include "conio.h"
nilai (int *x, int *y);
void main ()
{
clrscr ();
int a = 10, b = 5;
printf ("Nilai sebelum pemanggilan fungsi");
printf ("\nNilai a = %i dan nilai b = %i", a,b
nilai (&a,&b); // pemanggilan fungsi
printf ("\n\nNilai setelah pemanggilan fungsi");
printf ("\n\nNilai a = %i dan nilai b = %i", a,b);
getch();
}
nilai (int *x, int *y)
{
*x+=5;
*y+=5;
printf ("\n\nNilai setelah pemanggilan fungsi");
printf("\na = %i dan nilai b = %i",*x, *y);
}

84
Tampilan program diatas adalah :

3) Jenis Variabel pada Fungsi


a) Variabel lokal
Variabel lokal adalah variabel yang dideklarasikan di dalam
fungsi dan hanya dikenal oleh fungsi yang bersangkutan. Variabel
lokal biasa juga disebut sebagai variabel otomatis.
Contoh program
b) Variabel global /eksternal
Variabel eksternal adalah variabel yang dideklarasikan di luar
fungsi yang bersifat global yang berarti dapat digunakan bersama -
sama tanpa harus dideklarasikan berulang - ulang. Pendeklarasian
variabel eksternal diletakkan di luar fungsi main ().
Contoh program :
#include "stdio.h"
#include "conio.h"
void tampil (void);
int i = 25; /* variabel global */
void main()
{ clrscr();
printf("Nilai variabel i dalam fungsi main() adalah %i\n\n", i);
tampil();
i = i * 4; /* nilai i yang dikali 4 adalah 25 (global) bukan 10 */

85
printf("\nNilai variabel i dalam fungsi main() sekarang adalah %i\n\n",
i);
getch();
}
void tampil(void)
{ int i = 10; /* variabel lokal */
printf("Nilai variabel i dalam fungsi tampil() adalah %i\n\n", i);
}

Tampilan program diatas adalah :

c) Variabel statis
Variabel statis dapat berupa variabel lokal ataupun variabel
eksternal. Variabel statis ini bersifat :
ƒ Jika variabel bersifat lokal maka hanya dikenal oleh fungsi
tempat variabel tersebut dideklarasikan.
ƒ Jika variabel statis bersifat eksternal maka variabel dapat
dipergunakan oleh semua fungsi yang terletak pada file yang
sama di tempat variabel statis dideklarasikan.
ƒ Jika tidak ada inisialisasi maka secara otomatis akan diberikan
nilai awal nol.
d) Variabel Register [3]
Variabel Register adalah variabel yang nilainya disimpan dalam
resister dan bukan dalam memori RAM. Sifat-sifat variabel register :

86
ƒ Hanya dapat diterapkan pada variabel lokal yang bertipe int
dan char.
ƒ Digunakan untuk mengendalikan proses perulangan (looping).
ƒ Proses perulangan akan lebih cepat karena variabel register
memiliki kecepatan yang lebih tinggi dibandingkan variabel
biasa.
ƒ Dideklarasikan dengan menambahkan kata “register”.
Contoh program :
#include “stdio.h”
#include “conio.h”
void main()
{ register int x; /* variabel register */
int jumlah;
clrscr();
for(i=1; i<=100; i++)
jumlah = jumlah + I;
printf(“1+2+3+…+100 = %i\n”, jumlah);
getch();
}

Tampilan program diatas adalah :

4) Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri.
Dengan adanya rekursi, dimungkinkan untuk memanggil fungsi dari
dalam fungsi itu sendiri. Proses rekursi biasanya digunakan pada
beberapa kasus dikarenakan penerapannya akan lebih mudah
dibanding ketika hanya menggunakan bentuk perulangan biasa[5].
Namun, penggunaan rekursi juga memiliki beberapa masalah seperti

87
efisiensi memori dan kecepatan kerja ketika sebuah proses rekursi
dijalankan akan menjadi lebih lambat. Permasalahan yang lebih
sering terjadi adalah proses rekursi yang tidak kunjung berhenti,
hingga mengakibatkan komputer hang.
Contoh program:
#include “conio.h”
#include “stdio.h”
long int faktorial(int N); /* prototype fungsi faktorial */
void main()
{ int N;
printf(“Berapa factorial ? “); scanf(“%i”, &N);
printf(“Faktorial dari %i = %ld\n”, N, faktorial(N));
getch();
}
Long int faktorial(int N) /* definisi fungsi factorial */
{
if(N==0)
return(1);
else
return(N * faktorial(N - 1)); // fungsi faktorial() memanggil fungsi
factorial()
}

Tampilan program diatas adalah :

88
3. Latihan
2. Buatlah sebuah program untuk menghitung luar persegi
panjang, luas segitiga dan luas lingkaran. Buatlah pemilihan
perhitungan dengan menggunakan fungsi.
3. Buatlah program untuk menghitung harga sewa peminjaman
buku pada sebuah perpustakaan umum. Terdapat tiga jenis
buku yaitu jenis A, B, dan C. Tarif jenis buku per 3 hari adalah
:
Jenis Buku Harga sewa per 3 hari
A Rp 1500
B Rp 2000
C Rp 2500

a. Jika melebihi waktu peminjaman (3 hari) maka setiap buku


di denda sebesar Rp 500,-.
b. Buatlah program untuk menghitung pembayarannya.
c. Buatlah fungsi untuk menghitung harga sewa.
d. Buatlah fungsi untuk menghitung total pembayaran.

89
Daftar Pustaka

[1] Frieyadie. 2005. “Panduan Pemrograman C ++”. Penerbit Andi.


Yogyakarta

[2] Kurniawan Khannedy Eko. 2007. “Pemrograman C”. Teknik


Informatika. UNICOM.

[3] Sjukani Moh. 2009. “Algoritma (Algoritma & Struktur Data 1)


dengan C, C++, dan Java, Teknik - Teknik Dasar Pemrograman
Komputer”. Edisis 5. Mitra Wacana Media. Jakarta

[4] Solichin Achmad. “Pemrograman Bahasa C dengan Turbo C”.


www.ilmukomputer.com

[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman


menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta

90

Anda mungkin juga menyukai