Anda di halaman 1dari 40

BAB VI

ARRAY

Tujuan :
1. Menjelaskan tentang array berdimensi satu
2. Menjelaskan tentang array berdimensi dua
3. Menjelaskan tentang array berdimensi banyak
4. Menjelaskan tentang inisialisasi array tak berukuran.
5. Menjelaskan array sebagai parameter fungsi

Dalam beberapa literatur, array sering disebut (diterjemahkan) sebagai larik. Array
adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang
menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut dengan
elemen-elemen array. Letak urutan dari elemen-elemen array ditunjukkan oleh suatu
subscript atau indeks.
Array bisa berupa array berdimensi satu, dua, tiga atau lebih. Array berdimensi
satu (one-dimensional array) mewakili bentuk suatu vektor. Array berdimensi dua (two-
dimensional array) mewakili bentuk dari suatu matriks atau table
. Array berdimensi tiga (three-dimensional array) mewakili bentuk suatu ruang.

6.1 Array Berdimensi Satu


6.1.1 Mendeklarasikan Array Berdimensi Satu
Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :

tipe_data nama_var[ukuran];

dengan :
tipe_data : untuk menyatakan tipe dari elemen array, misalnya int, char, float.
nama_var : nama variabel array
ukuran : untuk menyatakan jumlah maksimal elemen array.

91
92

Contoh pendeklarasian array :

float nilai_tes[5];

menyatakan bahwa array nilai_tes mengandung 5 elemen bertipe float.

6.1.2 Mengakses Elemen Array Berdimensi Satu


Pada C, data array akan disimpan dalam memori yang berurutan. Elemen pertama
mempunyai indeks bernilai 0. Jika variabel nilai_tes dideklarasikan sebagai array dengan
5 elemen, maka elemen pertama memiliki indeks sama dengan 0, dan elemen terakhir
memiliki indeks 4. Gambar 6.1 di bawah ini menjelaskan urutan komponen dalam array.

nilai_tes[0] tipe float

nilai_tes[1]

nilai_tes[2] total 5 elemen

nilai_tes[3]

nilai_tes[4]

float nilai_tes[5]

Gambar 6.1 Array berdimensi satu

Bentuk umum pengaksesan array adalah sbb :

nama_var[indeks]

sehingga, untuk array nilai_tes, maka :


nilai_tes[0] elemen pertama dari nilai_tes
nilai_tes[4] elemen ke-5 dari nilai_tes
Contoh :

nilai_tes[0] = 70; /* contoh 1 */


scanf(“%f”, &nilai_tes[2]); /* contoh 2 */
93

Contoh pertama merupakan pemberian nilai 70 ke nilai_tes[0]. Sedangkan contoh 2


merupakan perintah untuk membaca data bilangan dari keyboard dan diberikan ke
nilai_tes[2]. Pada contoh 2 ini

&nilai_tes[2]

berarti “alamat dari nilai_tes[2]”. Perlu diingat bahwa scanf() memerlukan argumen
berupa alamat dari variabel yang digunakan untuk menyimpan nilai masukan.
Selengkapnya perhatikan contoh program di bawah ini

/* File program : nilai_tes.c


Pemakaian array utk menyimpan sejumlah nilai tes */

#include <stdio.h>
#define MAKS 5

main()
{
int i;
float total = 0, rata;
float nilai_tes[MAKS]; /* deklarasi array */

for(i=0; i < MAKS; i++) /* pemasukan data nilai_tes */


{
printf("Nilai tes ke-%d : ", i+1);
scanf("%f", &nilai_tes[i]);
/* menghitung jumlah seluruh nilai */
total = total + nilai_tes[i];
}
rata = total / MAKS; /* hitung nilai rata-rata */

/* cetak nilai rata-rata */


printf("\nNilai rata-rata = %g\n", rata);
}

Contoh eksekusi :

Nilai tes ke-1 : 56.5


Nilai tes ke-2 : 67.75
Nilai tes ke-3 : 80
Nilai tes ke-4 : 77
Nilai tes ke-5 : 78.5

Nilai rata-rata = 71.95


94

6.1.3 Inisialisasi Array Berdimensi Satu


Sebuah array dapat diinisialisasi sekaligus pada saat dideklarasikan. Untuk
mendeklarasikan array, nilai-nilai yang diinisialisasikan dituliskan di antara kurung
kurawal ({}) yang dipisahkan dengan koma.

/* File program : jhari.c */

#include <stdio.h>

main()
{
int bulan, tahun, jhari;
int jum_hari[12] =
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

puts("MEMPEROLEH JUMLAH HARI");


puts("PADA SUATU BULAN DAN SUATU TAHUN");
puts("--------------------------------");
printf("Masukkan bulan (1..12) : ");
scanf("%d", &bulan);
printf("Masukkan tahunnya : ");
scanf("%d", &tahun);

if(bulan == 2)
if(tahun % 4 == 0)
jhari = 29;
else
jhari = 28;
else
jhari = jum_hari[bulan-1];
printf("\nJumlah hari dalam bulan %d tahun %d adalah %d
hari\n", bulan, tahun, jhari);
}

Contoh eksekusi :

MEMPEROLEH JUMLAH HARI


PADA SUATU BULAN DAN SUATU TAHUN
--------------------------------
Masukkan bulan (1..12) : 2
Masukkan tahunnya : 1988

Jumlah hari dalam bulan 2 tahun 1988 adalah 29 hari


95

Pada program jhari.c di atas

int jum_hari[12] =
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

merupakan instruksi untuk mendeklarasikan array jum_hari yang memiliki 12 elemen


yang bersifat statis dan sekaligus melakukan inisialisasi terhadap masing-masing elemen
array.

/* File program : inisial.c */

#include <stdio.h>

main()
{
int i;
int values[] = {1,2,3,4,5,6,7,8,9};
char word[] = {'H','e','l','l','o'};

for(i = 0; i < 9; ++i )


printf("values[%d] is %d\n", i, values[i]);

printf("\n");
for(i = 0; i < 6; ++i )
printf("word[%d] is %c\n", i, word[i]);
}

Contoh eksekusi :

values[0] is 1
values[1] is 2
values[2] is 3
values[3] is 4
values[4] is 5
values[5] is 6
values[6] is 7
values[7] is 8
values[8] is 9

word[0] is H
word[1] is e
word[2] is l
word[3] is l
word[4] is o
96

Perhatikan, pada contoh inisial.c di atas, pendeklarasian nama variabel array tidak disertai
ukuran yang mengindikasikan besarnya array. Dalam kondisi seperti ini, C akan
menginisialisasi ukuran array tersebut sejumlah elemen yang diberikan di dalam kurung
kurawal pada saat proses inisialisasi. Sehingga array values terdiri atas 9 elemen dan array
word memiliki 5 elemen.

6.1.4 Beberapa Variasi dalam Mendeklarasikan Array


Ada beberapa variasi cara mendeklarasikan sebuah array (dalam hal ini yang
berdimensi satu), di antaranya adalah sebagai berikut :
int numbers[10];
int numbers[10] = { 34, 27, 16 };
int numbers[] = { 2, -3, 45, 79, -14, 5, 9, 28, -1, 0 };
char text[] = "Welcome to New Zealand.";
float radix[12] = { 134.362, 1913.248 };
double radians[1000];

6.2 Array Berdimensi Dua


Data seperti yang disajikan pada Tabel 6-1, dapat disimpan pada sebuah array
berdimensi dua. Dimensi pertama dari array digunakan untuk menyatakan kode program
kursus dan dimensi kedua untuk menyatakan tahun kursus.

Tabel 6-1. Data Kelulusan Siswa Pada Sebuah Kursus Komputer


Tahun 1998 1999 2000
Program
1. (INTRO) 80 540 1032
2. (BASIC) 15 83 301
3. (PASCAL) 8 12 15
4. (C) 10 129 257

6.2.1 Mendeklarasikan Array Berdimensi Dua


Pendeklarasian yang diperlukan untuk menyimpan data kelulusan siswa pada Tabel
6-1 adalah:
97

int data_lulus[4][3];

Nilai 3 untuk menyatakan banyaknya tahun dan 4 menyatakan banyaknya program kursus.
Gambar 6.2 memberikan ilustrasi untuk memudahkan pemahaman tentang array
berdimensi dua.

0 1 2 indeks kedua
(tahun)
0 80 540 1032
1 15 83 301
2 8 12 15
3 10 129 257
indeks pertama
(program kursus) int data_lulus[4][3];

Gambar 6.2 Array berdimensi dua

Sama halnya pada array berdimensi satu, data array aka ditempatkan pada memori
yang berurutan. Perhatikan Gambar 6.3.

80 540 1032 15 83 301 80

Gambar 6.3 Model penyimpanan array dimensi dua pada memori

6.2.2 Mengakses Elemen Array Berdimensi Dua


Array seperti data_lulus dapat diakses dalam bentuk
data_lulus[indeks pertama, indeks kedua]
Contoh :
98

(1)data_lulus[0][1] = 540;
merupakan instruksi untuk memberikan nilai 540 ke array data_lulus untuk indeks
pertama = 0 dan indeks kedua bernilai 1.
(2)printf(“%d”,data_lulus[2][0]);
merupakan perintah untuk menampilkan elemen yang memiliki indeks pertama = 2 dan
indeks kedua = 0.

0 1 2
0 540
1
2
3

data_lulus[0][1] = 540;

Gambar 6.4. Pemberian nilai ke array berdimensi dua

Perhatikan contoh program di bawah ini.

/* File program : lulus.c


Contoh pemakaian array berdimensi dua */

#include <stdio.h>

main( )
{
int tahun, kode_program;
int data_lulus[4][3] ;
99

/* Memberikan data ke array */


data_lulus[0][0] = 80;
data_lulus[0][1] = 540;
data_lulus[0][2] = 1032;

data_lulus[1][0] = 15;
data_lulus[1][1] = 83;
data_lulus[1][2] = 301;

data_lulus[2][0] = 8;
data_lulus[2][1] = 12;
data_lulus[2][2] = 15;

data_lulus[3][0] = 10;
data_lulus[3][1] = 129;
data_lulus[3][2] = 257;

/* proses utk memperoleh informasi jml siswa yg lulus */


printf("Masukkan tahun dr data yg ingin anda ketahui ");
printf("(1998..2000) : ");
scanf("%d", &tahun);
printf("Masukkan kode program kursus yang ingin anda
ketahui");
printf("(1 = INTRO, 2 = BASIC, 3 = PASCAL, 4 = C) : ");
scanf("%d", &kode_program);
printf("\nTotal kelulusan program tsb = %d\n",
data_lulus[kode_program - 1][tahun - 1998] );
}

Contoh eksekusi :

Masukkan tahun dr data yg ingin anda ketahui (1998…2000) :


2000
Masukkan kode program kursus dari data yang ingin anda
ketahui (1 = INTRO, 2 = BASIC, 3 = PASCAL, 4 = C) : 3

Total kelulusan program tsb = 15

6.2.3 Inisialisasi Array Berdimensi Dua


Gambar berikut memberikan penjelasan tentang inisialisasi yang dilakukan
terhadap array berdimensi dua :
100

0 1 1 1 1 1 0 0
0 1 0 0 0 1 0 0
0 1 0 0 0 1 0 0
1 1 1 1 1 1 1 0
1 1 0 0 0 0 1 0
1 1 0 0 0 0 1 0
1 1 0 0 0 0 1 0
0 0 0 0 0 0 0 0

Gambar 6.5 Representasi inisialisasi array berdimensi dua

Untuk itu, deklarasi dan inisialisasi yang dilakukan berupa :

int huruf_A[8][8] = {
{ 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0 }
};

atau bisa juga ditulis sebagai berikut :

int huruf_A[8][8] =
{ 0, 1, 1, 1, 1, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0
};

Contoh program berikut memenfaatkan data yang ada pada array huruf_A untuk
membentuk karakter A dengan ukuran besar. Setiap nilai satu pada array akan diganti
dengan karakter ber-ASCII 219 (DBh) dan nilai 0 akan diganti dengan karakter spasi.

/* File program : hurufA.c


101

Contoh inisialisasi array dimensi dua */

#include <stdio.h>

main()
{
int i,j;
int huruf_A[8][8] = {
{ 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0 }
};

for(i = 0; i < 8; i++)


{
for(j = 0; j < 8; j++)
if(huruf_A[i][j] !=0 )
putchar('\xDB\n');
else
putchar (' '); /* spasi */
putchar('\n');
}
}

Contoh eksekusi :

6.3. Array Berdimensi Banyak.


C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk
umum pendeklarasian array berdimensi banyak :

tipe nama_var[ukuran 1][ukuran2}…[ukuranN];


102

sebagai contoh :

int data_huruf[2][8][8];

merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga.


Sama halnya dengan array berdimensi satu atau dua, array berdimensi banyak juga
bisa diinisialisasi. Contoh inisialisasi array berdimensi tiga :

int data_huruf [2][8][8] =


{ { { 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0 }
},
{ {1, 1, 1, 1, 1, 1, 0, 0 } ,
{1, 0, 0, 0, 0, 1, 0, 0 } ,
{1, 0, 0, 0, 0, 1, 0, 0 } ,
{1, 1, 1, 1, 1, 1, 1, 0 } ,
{1, 1, 0, 0, 0, 0, 1, 0 } ,
{1, 1, 0, 0, 0, 0, 1, 0 } ,
{1, 1, 1, 1, 1, 1, 1, 0 } ,
{0, 0, 0, 0, 0, 0, 0, 0 }
} };
atau bisa juga ditulis menjadi

int data_huruf [2][8][8] =


0, 1, 1, 1, 1, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
103

1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0
};

Program berikut merupakan pengembangan dari Program 8 – 4, digunakan untuk


menampilkan dua buah huruf dengan ukuran besar.

/* File program: data_huruf.c


Contoh inisialisasi array dimensi tiga */

# include <stdio.h>

main()
{
int i, j, k;
int data_huruf[2][8][8] = {
{{ 0, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
},
{{1, 1, 1, 1, 1, 1, 0, 0 },
{1, 0, 0, 0, 0, 1, 0, 0 },
{1, 0, 0, 0, 0, 1, 0, 0 },
{1, 1, 1, 1, 1, 1, 1, 0 },
{1, 1, 0, 0, 0, 0, 1, 0 },
{1, 1, 0, 0, 0, 0, 1, 0 },
{1, 1, 1, 1, 1, 1, 1, 0 },
{0, 0, 0, 0, 0, 0, 0, 0 }
}
};

for(i = 0; i < 2; i++) /* Tampilkan huruf */


{
for(j = 0; j < 8; j++)
{
for(k = 0; k < 8; k++)
if(data_huruf[i][j][k] != 0)
putchar('\xDB');
else
putchar(' '); /* spasi */
printf("\n"); /* pindah baris */
}
104

printf("\n"); /* pindah baris */


}
}

Contoh Eksekusi :

6.4. Inisialisasi Array Tak Berukuran


Inisialisasi array yang tak berukuran dapat dilakukan untuk array berdimensi satu
atau lebih. Untuk array berrdimensi lebih dari satu, dimensi terkirilah yang boleh tak
berukuran. Dengan cara ini tabel dalam array dapat diperluas atau dikurangi tanpa
mengubah ukuran array. Sebagai contoh :
tak berukuran

int skala[] =
{ 1, 2, 4, 6, 8 };

merupakan pendeklarasian array berdimensi satu yang tak berukuran. Secara otomatis
skala[ 0 ] bernilai 1
skala[ 1 ] bernilai 2
skala[ 2 ] bernilai 4
skala[ 3 ] bernilai 6
skala[ 4 ] bernilai 8
105

Contoh lain :

char konversi[][2] =
{ ’A’, ’T’,
’E’, ’M’,
’I’, ’V’,
’O’, ’S’,
’U’, ’J’,
};

Pada contoh ini,

konversi[0][0] bernilai ’A’


konversi[0][1] bernilai ’T’
konversi[1][0] bernilai ’E’
konversi[1][1] bernilai ’M’
……..

Contoh berikut akan menyandikan suatu kalimat yang dimasukkan melalui keyboard
dengan menggunakan data yang ada pada tabel konversi. Misal, huruf A akan diganti
menjadi T, huruf T akan diganti menjadi A.

/* File program : sandi.c


contoh inisialisasi array tak berukuran */

#include <stdio.h>
#include <stdlib.h>

#define JUM_KOLOM 2
#define MAX_KAR 256

main()
{
char konversi[][JUM_KOLOM] = {
'A', 'T',
'a', 't',
'E', 'M',
'e', 'm',
'I', 'V',
'i', 'v',
'O', 'S',
'o', 's',
106

'U', 'J',
'u', 'j'
};

char kalimat[MAX_KAR], karakter;


int i = 0, j, jum_kar, jum_penyandi;

printf("Masukkan sebuah kalimat dan akhiri dengan


ENTER\n");
printf("Kemudian kalimat tsb akan saya sandikan\n");
printf("Kalimat: ");

/* Memasukkan data karakter ke array kalimat */


while((kalimat[i] = getchar()) != '\n')
i++;
jum_kar = i ;

/* sandikan dan menampilkan ke layar */


printf("\nHasil setelah disandikan: ");
jum_penyandi = sizeof(konversi) / JUM_KOLOM;

for(i = 0; i < jum_kar; i++)


{
karakter = kalimat [i];
for(j = 0; j < jum_penyandi; j++)
{
if(karakter == konversi[j][0])
{
karakter = konversi[j][1];
break; /* keluar dari for terdalam */
}
if(karakter == konversi[j][1])
{
karakter = konversi[j][0];
break; /* keluar dari for terdalam */
}
}
putchar (karakter);
}
printf("\n\n");
}

Contoh Eksekusi :

Masukkan sebuah kalimat dan akhiri dengan ENTER


Kemudian kalimat tsb akan saya sandikan
Kalimat : Saya belajar

Hasil setelah disandikan: Otyt bmltutr


107

Pada program diatas ,

sizeof(konversi)/JUM_KOLOM)

merupakan ungkapan untuk memperoleh banyaknya baris (ukuran dari dimensi pertama)
dalam array konversi. Dengan cara ini tabel konversi dapat diperluas tanpa perlu
memberitahu banyaknya jumlah dimensi pertama secara ekplisit.
108

6.5. Array Sebagai Parameter


Array juga dapat dilewatkan sebagai parameter fungsi. Sebagai contoh ditujukan
pada program sorting.c. Program digunakan untuk memasukkan sejumlah data, kemudian
data tersebut diurutkan naik (ascending) dan dicetak ke layar.
Untuk melakukan sorting (proses pengurutan data), cara yang dipakai yaitu metode
buble sort (suatu metode pengurutan yang paling sederhana, dan memiliki kecepatan
pengurutan yang sangat lambat).
Algoritma pada metode pengurutan ini adalah sebagai berikut :
1. Atur i bernilai 0
2. Bandingkan x[i] dengan x[j], dengan j berjalan dari i + 1 sampai dengan n-1.
3. Pada setiap pembandingan, jika x[i] > x[j], maka isi x[i] dan x[j] ditukarkan
4. Bila i < (n – 1), ulangi mulai langkah 2.

Catatan: i = indeks array


x = nama array untuk menyimpan data
n = jumlah data

Algoritma diatas berlaku untuk pengurutan menaik (ascending). Untuk pengurutan


menurun (descending), penukaran dilakukan jika x[i] < x[j].
Penjelasan proses pengurutan terhadap 5 buah data ditunjukkan pada gambar 6.6.
109

Data semula (sebelum pengurutan) adalah

50,5 30,3 20,2 25,2 31,3

Setelah pengurutan menaik (secara ascending), hasil yang diharapkan berupa

20,2 25,2 30,3 31,3 50,5

i=0 j=1 j=2 j=3 j=4

0 50.5 30.3 20.2 20.2


1 30.3 50.5 50.5 50.5
2 20.2 20.2 30.3 30.3
3 25.2 25.2 25.2 25.2
4 31.3 31.3 31.3 31.3

i=1 j=2 j=3 j=4

0 20.2 20.2 20.2


1 50.5 30.3 25.2
2 30.3 50.5 50.5
3 25.2 25.2 30.3
4 31.3 31.3 31.3

i=2 j=3 j=4

0 20.2 20.2
1 25.2 25.2
2 50.5 30.3
3 30.3 50.5
4 31.3 31.3

i=3 j=4 Hasil akhir

0 20.2 20.2
1 25.2 25.2
2 30.3 30.3
3 50.5 31.3
4 31.3 50.5
110

Gambar 6.6 Proses pengurutan data secara ascending dengan metode Buble Sort

/* File program : sorting.c */


#include <stdio.h>

#define MAKS 20

void pemasukan_data(float [], int *);


void pengurutan_data(float [], int);
void penampilan_data(float [], int);

main()
{
float data[MAKS];
int jum_data;

pemasukan_data(data, &jum_data);
pengurutan_data(data, jum_data);
penampilan_data(data, jum_data);
}

void pemasukan_data(float x[], int *pjumlah)


{
int jum, i;

printf("Jumlah data = ");


scanf("%d", &jum);

for(i=0; i<jum; i++)


{
printf("Data ke-%d : ", i+1);
scanf("%f", &x[i]);
}

*pjumlah = jum;
}

void pengurutan_data(float x[], int jumlah)


{
int i, j;
float smtr;

for(i=0; i<jumlah-1; i++)


for(j=i+1; j<jumlah; j++)
if(x[i] > x[j]) /* penukaran data */
111

{
smtr = x[i];
x[i] = x[j];
} x[j] = smtr;

void penampilan_data(float x[], int jumlah)


{
int i;

printf("\nData setelah diurutkan :\n\n");


for (i=0; i<jumlah; i++)
printf("Data ke-%d : %g\n", i+1, x[i]);
}

Contoh Eksekusi :

Jumlah data = 5
Data ke-1 : 50.5
Data ke-2 : 30.3
Data ke-3 : 20.2
Data ke-4 : 25.2
Data ke-5 : 31.3
Data setelah diurutkan

Data ke-1 : 20.2


Data ke-2 : 25.2
Data ke-3 : 30.3
Data ke-4 : 31.3
Data ke-5 : 50.5

Pada fungsi main( );


float data[MAKS];
merupakan instruksi untuk mendeklarasikan array data dengan elemen bertipe float dan
jumlahnya sebanyak MAKS elemen.
pemasukan_data(data, &jum_data);
merupakan instruksi untuk memanggil fungsi pemasukan_data ( ). Pada pemanggilan
fungsi, data merupakan array. Yang perlu diperhatikan, parameter array ditulis tanpa
diawali dengan &, sekalipun tujuan dari pemanggilan fungsi yaitu untuk mengisikan
data ke array. Sebab nama array tanpa kurung siku dalam parameter fungsi berarti
”alamat dari elemen indeks ke-0 dari array tsb”.
112

Sedangkan &jum_data berarti ”alamat dari jum_data”. Tanda & harus disertakan
sebab variabel jum_data akan diisi oleh fungsi pemasukan_data ().
pengurutan_data(data, jum_data);
Merupakan instruksi untuk menjalankan fungsi pengurutan _data (), dalam hal ini
data dilewatkan ke fungsi dengan referensi (memberikan alamat array), karena
memang hal ini merupakan cara satu-satunya untuk melewatkan array. Sedangkan
jumlah data dilewatkan ke fungsi dalam bentuk nilai (pemanggilan dengan nilai).
penampilan_data(data,jum_data);
Merupakan instruksi untuk memanggil fungsipenampilan_data().

Pada fungsi untuk pemasukan data, pengurutan data maupun penampilan data,

data[i]

menyatakan elemen data ke-i.

Beberapa hal tambahan yang perlu diketahui:


Untuk menyatakan alamat dari suatu elemen array, bentuk umumnya adalah

&nama_array[indeks]

Misalnya,

&data[1]

menyatakan alamt dari elemen ke-1. Adapun

&data[0]

sama saja dengan:

data

Suatu array berdimensi satu dalam parameter formal dideklarasikan dengan bentuk

tipe nama_array[]

dengan di dalam tanda kurung siku tak disebutkan mengenai jumlah elemen. Jumlah
elemen dinyatakan dalam parameter tersendiri (atau dinyatakan dalam bentuk variabel
eksternal). Untuk array berdimensi lebih dari satu, kurung siku terkirilah yang kosong.
113

Kesimpulan :
• Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang
menggunakan sebuah nama yang sama.
• Nilai-nilai data di suatu array disebut dengan elemen-elemen array.
• Letak urutan dari elemen-elemen array ditunjukkan oleh suatu subscript atau indeks.
• Array bisa berupa array berdimensi satu, dua, tiga atau lebih.
• Data array akan disimpan dalam memori yang berurutan, dengan elemen pertama
mempunyai indeks yang bernilai 0.
• Sebuah array dapat diinisialisasi sekaligus pada saat dideklarasikan, caranya saat
mendeklarasikan array, nilai-nilai yang diinisialisasikan dituliskan di antara kurung
kurawal ({}) yang dipisahkan dengan koma.
• Array juga dapat dilewatkan sebagai parameter fungsi.

Latihan :
Buatlah potongan program untuk soal-soal di bawah ini

1. Deklarasikan sebuah variabel array (misalkan nama variabelnya = letters) yang


mengalokasikan untuk 10 elemen bertipe char.

2. Masukkan karakter ‘Z’ pada elemen yang ke-empat dari array letters.

3. Gunakan loop for untuk menghitung nilai akumulasi (total) dari seluruh isi sebuah
array integer (array of int, misalkan namanya = numbers) yang memliki 5 elemen.

4. Deklarasikan sebuah array multidimensi yang elemennya bertipe float (array of


float, misalkan namanya = balances) yang memiliki 3 baris dan 5 kolom.

5. Gunakan loop for untuk menghitung nilai total dari seluruh isi array balances di
atas.
114

6. Deklarasikan sebuah array karakter (array of char, mislakan namanya = words)


dan sekaligus inisialisasikan dengan nilai string =“Hello”

7. Deklarasikan sebuah array karakter (array of char, mislakan namanya = stuff)


dengan alokasi 50 elemen. Selanjutnya isikan dengan nilai string =“Welcome”
pada body programnya (bukan pada saat deklarasi)

8. Gunakan statemen printf() untuk menampilkan (di layar) isi elemen ke-tiga dari
sebuah array integer (array of int, misalkan namanya = totals)

9. Gunakan statemen printf() untuk menampilkan (di layar) string yang merupakan isi
dari sebuah array karakter (array of char, misalkan namanya = words)

10. Gunakan statemen scanf() untuk membaca string masukan dari keyboard dan
memasukkannya ke array words.

11. Tuliskan loop for untuk membaca 5 karakter (gunakan statemen scanf()) dan
memasukkannya ke dalam array words, mulai dari indeks 0.
BAB VII
STRING

Tujuan :
1. Menjelaskan tentang konsep string
2. Menjelaskan operasi I/O pada string.
3. Menjelaskan cara mengakses elemen string
4. Menjelaskan berbagai fungsi mengenai string

7.1 Konstanta dan Variabel String


String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman
untuk keperluan menampung dan memanipulasi data teks, misalnya untuk menampung
(menyimpan) suatu kalimat. Pada bahasa C, string bukanlah merupakan tipe data
tersendiri, melainkan hanyalah kumpulan dari nilai-nilai karakter yang berurutan dalam
bentuk array berdimensi satu.

7.1.1 Konstanta String


Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda,
misalnya:

“ABCDE”

Nilai string ini disimpan dalam memori secara berurutan dengan komposisi sebagai
berikut:

memori rendah memori tingi

A B C D E \0

Gambar 7.1 Komposisi penyimpanan string dalam memori

113
114

Setiap karakter akan menempati memori sebesar 1 byte. Byte terakhir otomatis
akan berisi karakter NULL (\0). Dengan mengetahui bahwa suatu string diakhiri nilai
NULL, maka akhir dari nilai suatu string akan dapat dideteksi. Sebagai sebuah array
karakter, karakter pertama dari nilai string mempunyai indeks ke-0, karakter kedua
mempunyai indeks ke-1, dan seterusnya.

7.1.2 Variabel String


Variabel string adalah variabel yang dipakai utuk menyimpan nilai string.
Misalnya :

char name[15];

merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 15


karakter (termasuk karakter NULL). Deklarasi tersebut sebenarnya tidak lain merupakan
deklarasi array bertipe char.

7.2 Inisialisasi String


Suatu variabel string dapat diinisialisasi seperti halnya array yang lain. Namun
tentu saja elemen terakhirnya haruslah berupa karakter NULL. Sebagai contoh :

char name[] = {'R','I','N', 'I',’\0’};

yang menyatakan bahwa name adalah variabel string dengan nilai awal berupa string :
“RINI” . Bentuk inisialisasi yang lebih singkat :

char name[] = “RINI”;

Pada bentuk ini, karakter NULL tidak perlu ditulis. Secara implisit akan disisipkan oleh
kompiler. Perlu diperhatikan, bila name dideklarasikan sebagai string, penugasan
(assignment) suatu string ke variabel string seperti

name = “RINI”;

adalah tidak diperkenankan. Pengisian string ke variabel string akan dibahas pada sub
bab berikutnya.
115

7.3 Input Output Data String


7.3.1 Memasukkan Data String
Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi
gets() atau scanf(). Bentuk umum pemakaiannya adalah sebagai berikut :

#include <stdio.h>
gets(nama_array);

atau

#include <stdio.h>
scanf(“%s”, nama_array);

Perhatikan : nama_array adalah variabel bertipe array of char yang akan digunakan
untuk menyimpan string masukan.
Di depan nama_array tidak perlu ada operator & (operator alamat),
karena nama_array tanpa kurung siku sudah menyatakan alamat yang
ditempati oleh elemen pertama dari array tsb.
Kalau memakai scanf(), data string masukan tidak boleh mengandung
spasi.
Di bawah ini diberikan contoh program untuk memasukkan data nama seseorang ke dalam
array bernama name.

/* File program : yourname.c


Contoh memasukkan data string dari keyboard */

#include <stdio.h>

main()
{
char name[15];

printf("Masukkan nama Anda : ");


//gets(name);
scanf(“%s”, name);

printf("\nHalo, %s. Selamat belajar string.\n", name);


}

Contoh eksekusi :

Masukkan nama Anda : SAIFUDDIN


Halo, SAIFUDDIN. Selamat belajar string.
116

Ruang yang disediakan setelah deklarasi:char name[15];

name :

Setelah data yang dimasukkan berupa :SAIFUDDIN

name : S A I F U D D I N \0
karakter NULL
byte sisa tak dipakai

Gambar 7.2 Variabel string dan data string

Pada gambar di atas nama array tanpa kurung siku (name) menyatakan alamat dari lokasi
data string. Dan dengan pemasukan data seperti di atas, lokasi memori yang terletak
sesudah lokasi yang berisi ‘N’ akan secara otomatis terisi karakter NULL (lihat gambar
7.2)
Perlu diketahui, fungsi gets() akan membaca seluruh karakter yang diketik melalui
keyboard sampai tombol ENTER ditekan. Dalam hal ini tidak ada pengecekan terhadap
batasan panjang array yang merupakan argumennya. Jika string yang dimasukkan
melebihi ukuran array, maka sisa string (panjang string masukan dikurangi ukuran array
plus karakter NULL) akan ditempatkan di lokasi sesudah bagian akhir dari array tersebut.
Tentu saja kejadian seperti ini bisa menimbulkan hal yang tidak diinginkan, misalnya
berubahnya isi variabel yang dideklarasikan sesudah array tersebut karena tertumpuki oleh
string yang dimasukkan (overwrite), atau perilaku program yang sama sekali berbeda
dengan kemauan user yang dalam hal ini pelacakan kesalahannya (debugging) sangat sulit
dilakukan, atau bahkan terjadi penghentian program secara tidak normal.
Untuk mengatasi hal itu, disarankan untuk menggunakan fungsi fgets() untuk
menggantikan fungsi gets() dalam memasukkan data string.
Bentuk umum pemakaian fgets() adalah :

#include <stdio.h>
fgets(nama_array, sizeof nama_array, stdin);

Untuk lebih jelasnya, perhatikan contoh penggunaan fungsi fgets() ini pada contoh
program untuk menghitung karakter masukan (hitkar.c) di halaman 118.
117

7.3.2 Menampilkan Isi Variabel String


Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau
printf(). Bentuk umum pemakaiannya adalah sebagai berikut :

#include <stdio.h>
puts(var_string);

atau

printf("%s",var_string);

Dalam hal ini var_string adalah sebuah variabel yang berupa sebuah array of char.
Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan
karakter '\n' di akhir string. Sedangkan fungsi printf() akan menampilkan isi variabel
string tanpa memberikan tambahan '\n'. Sehingga, agar kedua pernyataan di atas
memberikan keluaran yang sama, maka pada pernyataan printf() dirubah menjadi :

printf("%s\n", var_string);

Contoh program berikut akan menampilkan isi variabel kompiler_c, berdasarkan dua
bentuk inisialisasi string yang dibahas pada sub bab 7.3

/* File program : initstr.c


Contoh inisialisasi string */

#include <stdio.h>

void bentuk1(void);
void bentuk2(void);

main()
{
bentuk1();
bentuk2();
}

void bentuk1(void)
{
char kompiler_c[] =
{'V','i','s','u','a','l',' ','C','+','+','\0'};

puts(kompiler_c);
}
118

void bentuk2(void)
{
char kompiler_c[] = "Visual C++";
printf("%s\n", kompiler_c);
}

Contoh eksekusi :

Visual C++
Visual C++

7.4 Mengakses Elemen String


Variabel string merupakan bentuk khusus dari array bertipe char. Oleh karena itu,
elemen dari variabel string dapat diakses seperti halnya pengaksesan elemen pada array.
Program berikut menunjukkan cara mengakses elemen array untuk menghitung total
karakter dari string yang dimasukkan melalui keyboard.

/* File Program : hitkar.c


Contoh untuk menghitung banyaknya karakter dari suatu string
yang dimasukkan melalui keyboard */

#include <stdio.h>

#define MAKS 256

main()
{
int i, jumkar = 0;
char teks[MAKS];

puts("Masukkan suatu kalimat (maks 255 karakter).");


puts("Saya akan menghitung jumlah karakternya.\n");
fgets(teks, sizeof teks, stdin); //masukan dr keyboard
for(i=0; teks[i]; i++)
jumkar++;

printf("\nJumlah karakter = %d\n", jumkar);


}

Contoh eksekusi :

Masukkan satu kalimat (maks 255 karakter).


Saya akan menghitung jumlah karakternya.
119

SAYA SUKA BELAJAR BAHASA C

Jumlah karakter = 26

Perhitungan jumlah karakter dari string teks dapat dilakukan dengan memeriksa elemen
dari string dimulai dari posisi yang pertama (indeks ke-0) sampai ditemukannya karakter
NULL. Elemen yang ke-i dari teks dinyatakan dengan

teks[i]

Pemeriksaan terhadap teks[i] selama tidak berupa karakter NULL (dimulai dari indeks ke-
0) dilakukan dengan instruksi

for(i=0; teks[i]; i++)


jumkar++;

Kondisi teks[i] pada for mempunyai makna yang secara implisit berupa

teks[i] != ‘\0’;

atau “karakter yang ke-i dari teks tidak sama dengan karakter NULL”
Contoh berikut ini akan memberikan gambaran mengenai cara menyalin nilai ke suatu
variabel string.
120

/* File program : salinstr.c


Contoh menyalin suatu string */

#include <stdio.h>

#define MAKS 30

main()
{
int i;
char asal[] = “Saya menyukai bahasa C”;
char hasil[MAKS];

i=0;
while (asal[i] != ‘\0’)
{
hasil[i] = asal[i];
i++;
}
hasil[i] = ‘\0’; /* beri karakter NULL */
printf(“Isi hasil : %s\n”, hasil);
}

Contoh eksekusi :

Isi hasil : Saya menyukai bahasa C

Untuk menyalin isi variabel string keterangan ke kalimat, pernyataan yang digunakan
berupa

i=0;
while (keterangan[i] != ‘\0’)
{
kalimat[i] = keterangan[i];
i++;
}

Selama keterangan[i] tidaklah berupa karakter NULL, maka keterangan[i] disalin ke


kalimat[i]. Jelas bahwa di dalam loop while tidak terdapat penyalinan karakter NULL dari
keterangan ke kalimat. Oleh karena itu sekeluarnya dari loop while, pemberian karakter
NULL ke kalimat perlu dilakukan. Pernyataan yang digunakan berupa

kalimat[i] = ‘\0’;
121

Bentuk yang lebih singkat untuk melakukan penyalinan dari keterangan ke kalimat berupa

i=0;
while (kalimat[i] = keterangan[i])
i++;

Dengan penulisan seperti di atas, penyalinan karakter NULL juga akan dilakukan secara
otomatis. Setelah menyalin karakter NULL (karena kondisi bernilai NULL) maka
eksekusi terhadap loop akan dihentikan. Dengan demikian sekeluarnya dari loop tidak
perlu lagi ada pernyataan.

kalimat[i] = ‘\0’;

7.5 Fungsi-Fungsi Mengenai String


Berikut ini akan dibahas beberapa fungsi pustaka yang umumnya disediakan oleh
kompiler C untuk mengoperasikan suatu nilai string. Fungsi-fungsi pustaka untuk operasi
string, prototype-prototype nya berada di file judul string.h. Beberapa di antara fungsi
pustaka untuk operasi string akan dibahas di bawah ini.

7.5.1 Fungsi strcpy() untuk Menyalin Nilai String


Bentuk pemakaian :

#include <string.h>
strcpy(tujuan, asal)

Fungsi ini dipakai untuk menyalin string asal ke variabel string tujuan termasuk
karakter '\0'. Keluaran dari fungsi ini (return value) adalah string tujuan. Dalam hal ini,
variabel tujuan haruslah mempunyai ukuran yang dapat digunakan untuk menampung
seluruh karakter dari string asal. Contoh implementasinya bisa dilihat pada program
salinstr2.c di bawah ini.

/* File program :salinstr2.c


Contoh menyalin isi str2 ke str1 */

#include <stdio.h>
#include <string.h>

#define MAKS 80
122

main()
{
char str1[MAKS];
char str2[]="ABCDE";

strcpy(str1, str2); /* menyalin isi str2 ke str1 */


printf("String pertama adalah : %s\n", str1);
printf("String kedua adalah : %s\n", str2);
}

Contoh eksekusi :

String pertama adalah : ABCDE


String kedua adalah : ABCDE

7.5.2 Fungsi strlen()untuk Mengetahui Panjang Nilai String


Bentuk pemakaian :

#include <string.h>
strlen(var_string);

Fungsi ini digunakan untuk memperoleh banyaknya karakter di dalam string yang
menjadi argumennya (var_string). Keluaran dari fungsi ini adalah panjang dari
var_string. Karakter NULL tidak ikut dihitung. Contoh implementasinya bisa dilihat pada
program panjangstr.c di bawah ini.

/* File program : panjangstr.c


Contoh memperoleh panjang suatu string */

#include <stdio.h>
#include <string.h>

main()
{
char salam[] = "Halo";

printf("Panjang string = %d karakter\n", strlen(salam));


}

Contoh eksekusi :
Panjang string = 4 karakter
123

7.5.3 Fungsi strcat() untuk Menggabung Nilai String


Bentuk pemakaian :

#include <string.h>
strcat(tujuan, sumber);

Menggabungkan dua buah nilai string tidak dapat dilakukan dengan operator ‘+’,
karena operator ini bukan operator untuk operasi string. Penggabungan dua buah nilai
string dapat dilakukan dengan fungsi pustaka strcat() dengan menambahkan string sumber
ke bagian akhir dari string tujuan. Keluaran dari fungsi ini adalah string tujuan. Contoh
implementasinya bisa dilihat pada program gabungstr.c di bawah ini.

/* File program :gabungstr.c


Contoh menggabungkan isi string1 dengan string2 */
#include <stdio.h>
#include <string.h>

#define PJG 15

main()
{
char str1[PJG], str2[PJG];

strcpy(str1, “sala”); /* str1 diisi “sala” */


strcpy(str2, “tiga”); /* str2 diisi “tiga” */

strcat(str1, str2); /* tambahkan str2 ke akhir str1 */

printf(“str1 %s str2 %s\n”, str1, str2);


}

Contoh eksekusi :

str1 salatiga str2 tiga

Dalam hal ini str1 (“sala”) digabungkan dengan str2 (“tiga”) dengan hasilnya berada di
str1 (“salatiga”).
124

7.5.4 Fungsi strcmp() untuk Membandingkan Dua Nilai String


Membandingkan dua nilai string juga tidak dapat digunakan dengan operator
hubungan, karena operator tersebut tidak untuk operasi string. Membandingkan dua buah
nilai string dapat dilakukan dengan fungsi pustaka strcmp().
Contoh bentuk pemakaian fungsi :

#include <string.h>
strcmp(str1, str2);

Fungsi ini dipakai untuk membandingkan string str1 dengan string str2. Keluaran
dari fungsi ini bertipe int yang berupa nilai :
-1, jika str1 kurang dari str2
0, jika str1 sama dengan str2
1, jika str1 lebih dari str2

Pembandingan dilakukan untuk karakter pada posisi yang sama dari str1 dan str2,
dimulai dari karakter terkiri. Acuan pembandingan dari dua buah karakter didasarkan oleh
nilai ASCII-nya. Misal, karakter ‘A’ lebih kecil daripada ‘B’ dan karakter ‘B lebih kecil
daripada ‘C’. Contoh implementasinya bisa dilihat pada program bandingstr.c di bawah
ini.

/* File program :bandingstr.c


Contoh membandingkan isi dua buah string */

#include <stdio.h>
#include <string.h>

main()
{
char str1[]="HALO”;
char str2[]="Halo";
char str3[]="HALO”;

printf(“Hasil pembandingan %s dengan %s --> %d\n”,


str1, str2, strcmp(str1, str2));

printf(“Hasil pembandingan %s dengan %s --> %d\n”,


str2, str1, strcmp(str2, str1));

printf(“Hasil pembandingan %s dengan %s --> %d\n”,


str1, str3, strcmp(str1, str3));
}
125

Contoh eksekusi :

Hasil pembandingan HALO dengan Halo --> -1


Hasil pembandingan Halo dengan HALO --> 1
Hasil pembandingan HALO dengan HALO --> 0

7.5.5 Fungsi strchr() untuk Mencari Nilai Karakter dalam String


Bentuk pemakaian :

#include <string.h>
strchr(var_string, kar);

Fungsi ini dapat digunakan untuk mencari suatu nilai karakter yang berada dalam
suatu nilai string. Dalam hal ini adalah mencari karakter kar dalam string var_string.
Keluaran dari fungsi ini adalah alamat posisi dari karakter pertama pada nilai string, yang
sama dengan karakter yang dicari. Jika karakter yang dicari tidak ada dalam nilai string,
maka fungsi ini akan memberikan hasil nilai pointer kosong (null). Contoh
implementasinya bisa dilihat pada program carikar.c di bawah ini.

/* File program : carikar.c


Contoh mencari karakter dalam sebuah string */

#include <stdio.h>
#include <string.h>

main()
{
char str[]="ABcde”; /* inisialisasi string */
char *hasil1,*hasil2;
/* var bertipe pointer to char, agar bisa ditampilkan isi
dari alamat yang ditunjuk oleh hasil1 & hasil2 */

hasil1 = strchr(str, ‘B’);


hasil2 = strchr(str, ‘X’);

printf(“Dari string ABcde\n”);


printf(“Mencari karakter B = %s\n”, hasil1);
printf(“Mencari karakter X = %s\n”, hasil2);
}

Contoh eksekusi :
126

Dari string ABcde


Mencari karakter B = Bcde
Mencari karakter X = (null)

Contoh di atas menunjukkan penggunaan fungsi strchr() untuk mencari nilai karakter ‘B’
dan karakter ‘X’ dalam string ‘ABcde’. Karakter ‘B’ ada dalam nilai string yang dicari,
sehingga fungsi strchr() memberikan hasil alamat dari karakter B tersebut yang kemudian
alamat ini disimpan dalam variabel pointer hasil1. Jika variabel pointer hasil1 ini
ditampilkan dengan menggunakan kode format untuk nilai string (%s), maka mulai dari
alamat tersebut sampai dengan akhir dari nilai string yang bersangkutan akan ditampilkan,
sehingga didapatkan keluaran :

Mencari karakter B = Bcde

Sedangkan pencarian karakter ‘X’ memberikan hasil null karena karakter tersebut tidak
ditemukan dalam string ‘ABcde”, sehingga didapatkan keluaran :

Mencari karakter X = (null)

Keterangan lebih lanjut tentang pointer ini, akan dibahas pada bab VIII.

Kesimpulan :
• String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk
keperluan menampung dan memanipulasi data teks.
• Pada bahasa C, string bukanlah merupakan tipe data tersendiri, melainkan hanyalah
kumpulan dari nilai-nilai karakter yang berurutan dalam bentuk array berdimensi satu
• Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda
• Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi gets()
atau scanf().
• Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau
printf().
• Untuk mengoperasikan suatu nilai string ada beberapa fungsi pustaka yang prototype-
prototype-nya berada di file judul string.h, sehingga dalam suatu program yang di
dalamnya terdapat manipulasi string, haruslan ditambah : #include <string.h>.
127

• Beberapa fungsi untuk manipulasi string adalah sbb :


a. Fungsi strcpy() untuk menyalin nilai string
b. Fungsi strlen() untuk mengetahui panjang nilai string
c. Fungsi strcat() untuk menggabung nilai string
d. Fungsi strcmp() untuk membandingkan dua nilai string
e. Fungsi strchr() untuk mencari nilai karakter dalam string

Latihan :
Buatlah potongan program untuk soal-soal di bawah ini

1. Ketikkan sebuah kalimat melalui keyboard dengan menggunakan gets() (atau


fgets()) kemudian didapatkan keluaran berupa laporan tentang jumlah huruf kecil
dan huruf kapital dalam kalimat tsb.

2. Masukkan nama Anda, rubah ke dalam huruf besar semua, balikkan urutan
hurufnya, selanjutnya tampilkan hasilnya di layar.

3. Ketikkan sebuah kalimat, hitung dan tampilkan jumlah spasinya.

4. Ketikkan sebuah kalimat, kemudian tampilkan kalimat tsb satu kata perbaris.
Asumsikan ada satu spasi yang memisahkan setiap kata dan kalimat diakhiri
dengan sebuah tanda titik.

5. Ketikkan sebuah kalimat melalui keyboard kemudian didapatkan keluaran berupa


laporan apakah kalimat tsb palindrom ataukah bukan. Misal :
Kalimat : KASUR RUSAK
Termasuk PALINDROM

Kalimat : MAKAN MALAM


128

Bukan PALINDROM

Catatan : disebut palindrom adalah bila urutan kalimat dibalik akan menghasilkan
kalimat yang sama. Gunakan berbagai fungsi berkaitan dengan string
yang sudah dijelaskan di atas.

Anda mungkin juga menyukai