1. BAB VII PEMROGRAMAN ARRAY DAN STRING
Pertemuan Minggu IX dan X
Alokasi Waktu
:
4 Jam Pertemuan
Standar Kompetensi
:
Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C
Kompetensi Dasar
:
Memahami program komputer yang menggunakan struktur Larik (Array)
Indikator
:
Mahasiswa dapat memahami struktur program bahasa C yang mengandung Array
:
Mahasiswa dapat membuat program dengan melibatkan struktur Array
Pada pemrograman yang sesungguhnya terkada kita membutuhkan suatu blok data yang mempunyai
karakteristik yang sama. Seperti di ilustrasikan tentang konsep variable dengan menganalogikan
penamaan alamat pada sebuah kamar hotel, array di analogikan pada aktifitas pemesanan beberapa kamar
hotel yang akan kita isi sesuai dengan kebutuhan si pemesan. Pada konsep pemrograman bahasa C array
didefinisikan sebagai berikut:
Tipe data nama_array [panjang_array]
Tipe data merupakan batasan dari variable tentang format data apa yang dapat dimanipulasi untuk
variable tersebut, nama_array merupakan nama variable yang dijadikan sebagai bentuk array, dan
panjang_array adalah jumlah maksimum data yang dapat di tamping dalam variable array tersebut.
Berikut adalah contoh format penulisan variable array
int nim [10]
char nama [30]
Pada contoh int nim [10] diartikan sebagai sebuah variable dengan nama nim yang bertipe integer dengan
kemampuan maksimum data yang dapat ditampung sebesar 10 digit. Demikian juga untuk contoh char
nama [30] mengindikasikan bahwa variable array nama bertipe char yang mampu menampung data
sebanyak 30 character (huruf). Hal yang perlu diperhatikan bahwa penulisan batas maksimum daya tamping
sebuah array di tulis dengan tanda kurung kotak [ ].
Pemrograman Array dibagi menjadi dua kelempok besar yaitu array satu dimensi dan array multi dimensi.
Pada pembahasan kali ini hanya akan di dibahas lebih mendalam tentang array 1 dimensi dan array 2
dimensi.
7.1. ARRAY 1 DIMENSI
Seperti dicontohkan pada penulisan variable array diatas, contoh tersebut mengacu pada sintak atau aturan
penulisan untuk array 1 dimensi. Dimana array tersebut hanya berbentuk 1 kolom atau pun baris. Berikut
adalah ilustrasi dari penerapan array 1 dimensi
Contoh 7.1
#include <stdio.h>
#include <conio.h>
/* Program menghitung nilai rata-rata */
main()
{
1
2. int n1, n2, n3, n4, n5;
float rata;
printf("Masukan nilai untuk n1, n2, n3, n4 dan n5n");
scanf("%d %d %d %d %d", &n1, &n2, &n3, &n4, &n5);
rata = (n1+n2+n3+n4+n5) / 5;
printf("Nilai rata-ratanya = %f ",rata);
getch();
}
Pada program contoh 7.1 diatas mengilustrasikan bahwa untuk dapat membuat rata-rata nilai dari sekian
data kita harus menyiapkan sekian variable sesuai dengan jumlah data yang akan kita kalkulasi, tentu hal
ini tidak akan menjadi masalah jika data yang akan kita hitung dalam rentang satuan, bagaimana jika data
yang akan kita kalkulasi sebanyak 100 bahkan 1000 buah data, tentu saja program pada contoh 7.1
menjadi tidak sangat efektif. Array salah satunya digunakan untuk mengelola blok data sehingga lebih
mudah dalam memanfaatkannya. Contoh 7.2 berikut akan mengilustrasikan manfaat penggunaan array
untuk memperbaiki efektifitas dari program contoh 7.1
Contoh 7.2
#include <stdio.h>
#include <conio.h>
/* Program menghitung nilai rata-rata dengan array*/
main()
{
int n[10];
int data, i,sum;
float rata;
printf("Berapa data yang akan Anda hitung ");
scanf("%d",&data);
sum =0;
for (i=0; i<data; i++)
{
printf("data ke-%d ",i+1);
scanf("%d",&n[i]);
sum = sum + n[i];
}
rata = sum/data;
printf("Nilai rata-ratanya = %.2f",rata);
getch();
}
Pada contoh 7.2 terlihat bahwa pemrograman array terkait erat dengan teknik pemrograman looping.
Penggunaan Teknik looping disini diperuntukan untuk menjalankan proses pemasukan (inisialisasi) data
secara otomatis terkait dengan jumlah data yang aka dikalkulasi secara dinamis. Pada contoh 7.2 Teknik
looping yang digunakan adalah dengan menggunakan struktur for akan tetapi pada dasarnya bisa diganti
dengan teknik looping yang lain. Cara kerja Struktur array adalah sebagai berikut:
1. Ketika pengguna memasukan angka kedalam program, angka tersebut ditangkap oleh variable
data yang bertipe integer.
2. Kemudian program berlanjut mengesekusi baris berikutnya yaitu menginisialisasi (pemberian
nilai awal) pada variable sum dengan nilai nol (0).
2
3. 3. Program berlanjut ke struktur looping dimana proses looping akan dimulai dari angka ke 0 dan
berakhir pada nilai yang dikandung pada variable data dengan proses penambahan angka 1 setiap
perputaran looping yang ditandai dengan pernyataan i++. Proses looping akan berhenti ketika nilai
yang terkadung dalam variable i sudah lebih besar atau sama dengan nilai yang terkandung dalam
variable data.
7.2. ARRAY 2 DIMENSI
Struktur array 2 dimensi mengisyaratkan bahwa susunan data yang dibentuk menyerupai table yaitu akan
terdiri dari baris dan kolom. Pada konsep pemrograman bahasa C array 2 dimensi didefinisikan sebagai
berikut:
Tipe data nama_array [panjang_baris] [panjang_kolom]
Array 2 dimensi termasuk dalam kategori array multidimensi, lebih jauh tentang array multidimensi pada
penjabarannya kita dapat membuat array 3 dimensi, 4 dimensi dst, array multidimensi didefinisikan
sebagai berikut:
Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3]
array 3 dimesi
Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3][dimensi 4] array 4 dimesi
Pada pokok bahasan ini akan lebih ditekankan pada array dua dimensi yang akan diilustrasikan dengan
pemrograman matrik. Contoh program dibawah ini akan menampilkan susunan angka yang berbentuk
baris dan kolom.
Contoh 7.3
#include <stdio.h>
#include <conio.h>
main(void)
{
int t, i, num[3][4];
for(t=0; t<3; ++t)
for(i=0; i<4; ++i)
num[t][i] = (t*4)+i+1;
/* now print them out */
for(t=0; t<3; ++t)
{
for(i=0; i<4; ++i)
printf("%3d", num[t][i]);
printf("n");
}
getch();
}
Ketika di jalankan maka output dari program adalah sebagai berikut:
Gambar 7.1
Output program array 2 dimensi
3
4. Pada gambar 7.1 menampilkan susunan angka yang berpola, dalam gambar tersebut dapat terlihat susunan
table yang terdiri dari bari dan kolom. Berikut adalah ilustrasi dari hasil keluaran program diatas
1
2
3
4
Baris 1
5
6
7
8
Baris 2
9
10
11
12
Baris 3
Kol 1 Kol 2 Kol 3 Kol 4
Program contoh 7.3 mengilustrasikan pembuatan table yang terdiri dari 3 baris dan 4 kolom.
Pendeklarasian variable num[3][4] mengyatakan bahwa keluaran akan dibentuk kedalam table 3 x 4.
Sebagai catatan bahwa array 2 dimensi mempunyai default nilai koordinat untuk kiri atas adalah (0,0)
yang berarti bahwa table dimulau dari baris ke 0 dan kolom ke 0. Proses pembentukan tampilan adalah
sebagai berikut:
1. Looping dimulai pada baris ke 0 yang dinyatakan dengan nilai t=0, dalam ini terjadi proses
looping dimulai pada loop terluar yaitu pada loop for(t=0; t<3; ++t).
2. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan for(i=0; i<4; ++i). pada
loop kedua ini I dimulai dengan angka 0 yang menyatakan kolom ke 0. Sampai pada tahap ini
program sudah memegang nilai indeks yaitu di 0,0.
3. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]).
Pernyataan tersebut merupakan sutau perintah untuk menampilkan angka sesuai dengan hasil
perhitungan pada pernyataan num[t][i] = (t*4)+i+1. num[t][i] adalah variable bertipe array 2 dimensi yang
akan menampatkan angka dari hasil perhitungan susai dengan nomor indeksnya. Pada
perhitungan awal variable num[t][i] bernilai 1 (satu) yang mempunyai indeks di (0,0) (lihat gambar
7.1). posisi tersebut menyatakan bahwa nilai 1 berada pada baris ke 0 dan kolom ke 0.
4. Setelah mencetak angka 1 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop
for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses
looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,1), sehingga
nilai 2 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada
posisi baris ke nol dan kolom 1.
5. Setelah mencetak angka 2 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop
for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 1 menjadi i=2. Proses
looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,2), sehingga
nilai 3 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada
posisi baris ke nol dan kolom 2. Proses looping pada baris ke 0 akan berakhir setelah i bernilai 3
atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir
6. Setelah baris pertama terpenuhi yaitu baris ke 0, maka proses looping akan melompat ke loop
yang terluar yaitu loop for(t=0; t<3; ++t). pada bagian ini proses looping akan berlanjut pada variable
t (lihat keterangan no 1), variable t yang semula bernilai 0 akan berubah menjadi 1 melalui proses
increament ++t. pada proses ini pengeksekusian program hanya melakukan proses increament nilai
t selajutnya program secara sequence mengeksekusi baris berikutnya yaitu pada loop for(i=0; i<4;
++i).
7. Pada tahap ini proses looping akan terjadi pada loop for(i=0; i<4; ++i), pada tahap kedua ini variable I
akan mengalai proses dari awal dengan I bernilai 0. Hanya saja pada tahap ini program memegang
4
5. indeks dengan nilai (1,0), yang merujuk pada t=1 yang menyatakan baris ke 1, dan I=0 yang
menyatakan kolom ke 0.
8. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i])
(lihat keterangan no 3). Pada perhitungan ini variable num[t][i] bernilai 5 (lima) yang mempunyai
indeks di (1,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 5 berada pada baris ke
1 dan kolom ke 0.
9. Setelah mencetak angka 5 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop
for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses
looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (1,1), sehingga
nilai 6 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada
posisi baris ke 1 dan kolom ke 1. Proses looping pada baris ke 1 akan berakhir setelah i bernilai 3
atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir
10. Proses akan kembali seperti pada keterangan no. 6 yang akan merubah harga t dari 1 menjadi 2.
Proses di looping terluar akan berakhir ketiga harga berlogika kurang dari 3 (t<3) atau t bernilai 2.
7.3. STRING
String merupakan tipe data bentukan dari tipe data dasar yaitu char. Tipe char hanya mengijinkan untuk
pembacaan 1 huruf (character), dengan memanfaatkan array maka kita dapat menampung beberapa
karakter yang membentuk suatu kesatuan kata atau bahkan kalimat dengan menggunakan tipe data char,
berikut sintaks penulisan tipe bentukan string dalam bahasa C.
char nama[20];
char alamat[50];
dalam pembuatan variable string aturan umum dalam pembuatan variable yaitu mencantumkan tipe data
di depan variable masih tetap berlaku, hanya saja setelah nama variable harus diikuti tanda kurung kotak
dengan disertai angka didalamnya. Sebagai contoh dua varibel diatas mengandung arti bahwa variable
nama dengan tipe char dapat menampung character/huruf sebanyak 20, demikian juga dengan variable
alamat yang mempunyai tipe char dengan huruf maksimal yang dapat ditampung sebanyak 50 huruf.
Terdapat Beberapa aturan yang perlu dicermati dalam melakukan inisialisasi awal pada variable string,
aturan dalam melakukan inisialisasi awal tersebut diantaranya sebagai berikut:
char saying[ ] = "This is a string."
2. char str[40] = "Feddy Setio Pribadi"
1.
Inisialisasi dengan kurung kotak kosong
Inisialisasi dengan kurung kotak terdifinisi
Contoh 7.4.
#include <stdio.h>
#include <conio.h>
int main(void)
{
char nama[80], alamat[80];
puts("Ketikan Nama Anda Lalu Tekan Enter");
puts("nLalu Ketikan Alamat Anda kemudian tekan Enter");
gets(nama);
gets(alamat);
printf("nNama Anda %s dengan Alamat %s",nama,alamat);
5
6. getch();
}
String mempunyai kajian tersendiri dalam pemrograman, C menyediakan library (string.h) yang berisi
tentang fungsi-fungsi untuk melakukan manipulasi terhadap string. Berikut adalah contoh program yang
menyajikan proses manipulasi yang dapat dilakukan pada string
Contoh 7.5.
#include <stdio.h>
#include <string.h>
#include <conio.h>
main()
{
char s1[80], s2[80];
puts("Ketikan Sebuah Kata Lalu Tekan Enter");
puts("nKetikan Sebuah Kata kemudian tekan Enter");
gets(s1);
gets(s2);
printf("lengths: %d %dn", strlen(s1), strlen(s2));
if(!strcmp(s1, s2)) printf("The strings are equaln");
strcat(s1, s2);
printf ("%sn", s1);
strcpy(s1, "This is a test.n");
printf(s1);
if(strchr("hello", 'e')) printf("e is in hellon");
if(strstr("hi there", "hi")) printf("found hi");
getch();
}
Pada contoh 7.5 perhatikan sintaks program pada bagian include, fungsi-fungsi manipulasi string seperti
strlen, strcmp, strcpy, strcat, dll terkandung dalam library <string.h>, oleh karena itu ketika kita akan melakukan
manipulasi string dengan fungsi-fungsi tersebut maka terlebih dahulu kita harus menyertakan #include
<string.h> pada bagain deklarsai library.
Pengayaan
Latihan 7.1
#include <stdio.h>
#include <conio.h>
main()
{
char str1[] = "To be or not to be";
char str2[] = ",that is the question";
6
7. int count = 0; /* Stores the string length */
while (str1[count] != '0') /* Increment count till we reach the string */
count++; /* terminating character. */
printf("nThe length of the string "%s" is %d characters.", str1, count);
count = 0; /* Reset to zero for next string */
while (str2[count] != '0') /* Count characters in second string */
count++;
printf("nThe length of the string "%s" is %d characters.n", str2, count);
getch();
}
Latihan 7.2
#include <conio.h>
#include <stdio.h>
void misteri(char *s);
main()
{
char string[] ="naufal";
printf("Sebelum proses %sn",string);
misteri(string);
printf("Setelah proses %s",string);
getch();
}
void misteri(char *s)
{
while (*s != '0')
{
if (*s >= 'a' && *s <= 'z')
*s -=32;
s++;
}
}
7