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 ();
}
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();
}
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();
}
61
}
getch();
}
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;
}
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
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 () ;
}
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;
}
68
3. Latihan
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
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();
}
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 :
76
Tampilan program diatas adalah :
77
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;
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 ();
}
80
b. Membuat Fungsi Sendiri
1) Deklarasi Fungsi
Bentuk deklarasi sebuah fungsi adalah sebagai berikut [1] :
Tipe_fungsi nama_fungsi (parameter_fungsi)
{
Statement;
Statement;
…
}
81
{clrscr();
printf ("Nama Universitas :\n");
kampus (); // memanggil fungsi kampus
getch();
}
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);
}
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 :
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);
}
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();
}
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()
}
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
89
Daftar Pustaka
90