ARRAY
Array adalah deretan variabel yang berjenis sama dan mempunyai nama sama. Pada bahasa C,
array mempunyai lokasi yang bersebelahan. Alamat terkecil menunjuk ke elemen pertama dan
alamat terbesar menunjuk ke alamat terakhir. Sebuah elemen pada array diakses melalui
indeksnya.
Contoh :
int nilai[10];
Untuk array 1 dimensi, rumus ukuran total array dalam satuan byte adalah :
byte total = ukuran dari tipe dasar * banyaknya elemen
Contoh :
int nilai[10]; byte total = 2 * 10 = 20 byte
(variabel bertipe int memerlukan tempat sebesar 2 byte.)
Bahasa C tidak melakukan pengecekan batas array, artinya Anda dapat memproses array
meskipun sudah melewati elemen terakhirnya, Jika hal ini terjadi pada saat Anda mengisi array,
berarti tanpa sadar Anda telah mengisi variabel yang terletak bersebelahan dengan array tersebut.
Contoh :
main()
{
int i;
int a[10];
clrscr();
for(i=1; i<=99; i++)
{
a[i] = i*2;
printf("\n a[%2d] = %3d", i,a[i]);
}
getch();
}
Pada contoh di atas, pengulangan dilakukan sebanyak 99 kali (dari 1 sampai 99), padahal array a
hanya mempunyai 10 elemen. Sebagai pemogram Anda harus yakin bahwa array yang Anda buat
dapat mencukupi kebutuhan. Bahasa C memang tidak mengecek batas array, tidak seperi bahasa
yang lain. Alasannya karena bahasa C dirancang untuk menggantikan bahasa assembly dan
diharapkan agar prosesnya lebih cepat.
Pemrograman Bahasa C
2
Deklarasi array pada bahasa C tidak sama dengan bahasa-bahasa lain. Biasanya setiap dimensi
dipisahkan oleh tanda koma, tetapi bahasa C meletakan setiap dimensi di dalam kurung siku.
Contoh :
main()
{
int i,j;
int b[3] [5];
clrscr();
for(i=1; i<=3; i++)
{
for(j=1; j<=5; j++)
{
b[i] [j] = i*j;
printf("%3d", b[i] [j]);
}
printf("\n");
}
getch();
}
Array 2 dimensi disimpan di dalam matriks yang tersusun menjadi baris dan kolom. Index
pertama menunjukkan barisnya dan index kedua menunjukkan kolomnya. Ukuran array di dalam
memori yaitu : total byte = baris * kolom * ukuran dari tipe. Untuk array di atas total byte =
3*5*2 = 30 byte
ARRAY STRING
Array string sama dengan array karakter 2 dimensi. Indeks pertama menunjukkan banyaknya
string dan indeks kedua menunjukkan panjang maksimum string.
Contoh :
char nama[10] [25]
nama terdiri dari 10 elemen dengan panjang maksimum 25 karakter. Untuk membaca data string,
Anda dapat memakai fungsi gets(). Misalnya, Anda ingin membaca nama ketiga, maka
gets(nama[3]);
Contoh :
main()
{
char nama[10] [25];
float nilai[10], jumlah,
rata; int data,i;
clrscr();
printf("Banyaknya data : ");
scanf("%d",&data); for (i=1; i<=data; i++)
{
printf("Nama Mahasiswa : "); scanf("%s",&nama[i]);
Pemrograman Bahasa C
3
Pemrograman Bahasa C
4
jumlah += nilai[i];
}
clrscr();
printf("\nDaftar Nilai Ujian Bahasa C");
printf("\n==================================");
printf("\nNama Mahasiswa Nilai");
printf("\n================================
==");
for (i=1; i<=data; i++)
{
printf("\n %-25s %5.1f", nama[i], nilai[i]);
}
printf("\n================================
==");
rata= jumlah / data;
printf("\nRata-rata adalah %5.2f ",
rata); getch();
}
INISIALISASI ARRAY
Bentuk umum : tipe nama_array [ukuran1, ukuran2, …, ukuran n] = {daftar nilai};
Daftar nilai berisi konstanta yang sesuai dengan tipe array. Setiap konstanta dipisahkan oleh tanda
koma. Konstanta pertama akan mengisi elemen pertama, konstanta kedua untuk elemen kedua dan
seterusnya.
Misal : int i[10] = {12,45,67,34,2,5,60,7,19,21};
POINTER
Pointer adalah sebuah variabel yang berisi alamat dari variabel lain
A B
20 17
1004 1005
Perhatikan gambar di atas, variabel A berada di alamat 1004 , variabel B di 1005 dan seterusnya.
1004 ini adalah alamatnya, sedangkan 20 adalah isinya.
Operator Pointer
Ada 2 operator pointer :
1. Operator &
Bersifat unary (hanya memerlukan satu operan). Operator ini menghasilkan alamat dan
operannya. Contoh : x = &a, jika kita mengacu pada gambar di atas, maka isi variabel x adalah
1004.
2. Operator *
Operator * dan operator & bersifat saling komplemen. Operator * juga bersifat unary dan
menghasilkan nilai yang berada pada sebuah alamat..
Pemrograman Bahasa C
5
Contoh:
#include<stdio.h>
main()
{
Pemrograman Bahasa C
6
int a, *x,
b; clrscr();
a=5; x=&a; b=*x;
printf("\n Isi variabel a adalah %4d",
a); printf("\n Isi variabel x adalah
%4u", x); printf("\n Isi variabel b
adalah %4d", b); getch();
}
Hasil :
Keterangan :
Variabel a berisi 5
Variabel x berisi alamat dari variabel a. Karena variabel x berisi alamat dari variabel yang
bertipe int, maka deklarasi variabel x adalah int *x. Tanda * di depan x menyatakan variabel
x berisi alamat, sedangkan int menyatakan variabel x berisi alamat dari variabel int. Jika
variabel x berisi alamat dari variabel yang bertipe float, maka deklarasinya adalah float *x
Variabel b berisi nilai yang ditunjuk oleh x, yaitu 5. Jadi a=b
Alamat dapat dicetak dengan format %u sebab alamat adalah bilangan bulat tanpa tanda
(unsigned integer)
Hasil :
Isi p1 sebelum ditambah adalah
65494 Isi p1 sesudah ditambah
adalah 65496 Isi p2 sebelum
dikurangi adalah 65494 Isi p2
Pemrograman Bahasa C
7
65502 Keterangan :
Pemrograman Bahasa C
8
Variabel a bertipe int, variabel p1 dan p2 adalah pointer yang menunjuk ke variabel int
Pernyataan p1 ++ menyebabkan p1 bertambah dengan 2 sebab variabel integer berukuran 2
byte juga dengan p2-- akan berkurang 2
Pernyataan p2=p2+5 menunjuk ke 5 elemen berikutnya sesuai dengan tipe int
Variabel p1 berisi alamat dari elemen pertama dari variabel nama. Didalam bahasa C, nama array
tanpa index sama dengan alamat dari awal array. Pernyataan p1=nama sama dengan
p1=&nama[1]
Pernyataan p2=str[4] artinya p2 akan menunjuk elemen ke empat dari nama, cara lainnya adalah :
p1=nama;
p2=*(p1+4);
Array dapat ditunjuk dengan index-nya dan dengan alamat. Penunjukan dengan alamat akan
lebih cepat daripada penunjukan dengan index-nya. Biasanya program C lebih mementingkan
kecepatan sehingga dipilih penggunaan alamat.
Contoh :
/* menggunakan index array */
main()
{
char
str[80]; int
i; clrscr();
printf("Masukkan string dalam huruf besar : ");
gets(str); printf("String dalam huruf kecil : ");
for(i=0; str[i]; i++)
printf("%c",tolower(str[i])); getch();
}
/* menggunakan pointer
*/ #include <stdio.h>
#include <ctype.h>
main()
{
char str[80], *p;
clrscr();
printf("Masukkan string dalam huruf besar : ");
gets(str); printf("String dalam huruf kecil : ");
p=str;
while (*p)
printf("%c",tolower(*p++)); getch();
}
POINTER DAN STRING
Nama array tanpa index adalah pointer ke elemen pertama dari array. Fungsi string yang
mempunyai parameter berupa string hanya mengirimkan alamatnya bukan stringnya sendiri.
Contoh :
Pemrograman Bahasa C
9
#include
<stdio.h> main()
{
Pemrograman Bahasa C
10
char
s[80];
char *p;
int i;
clrscr();
printf("Masukkan dua buah kalimat : ");
gets(s); for (i=0; s[i] && s[i] != '.'; i++);
p=&s[i+1];
printf("Kalimat keduanya adalah :
\n"); printf(p);
getch();
}
Keterangan :
Pada pengulangan FOR akan berhenti jika pada string tersebut ditemukan karakter titik atau
null
Pernyataan p=&s[i+1], akan menunjuk ke karakter sesudah titik atau null. Misalnya karakter
kelima adalah titik, maka p akan menunjuk ke karakter ke enam. Pernyataan tersebut dapat
diganti dengan p=&s[i]+1
ARRAY POINTER
Pernyataan int *x[10] mendeklarasikan array x yang berisi pointer integer. Untuk mengisi
elemen keempat dengan alamat dari variabel a yang bertipe int, pakailah :
x[4] =&a, sedangkan untuk memperoleh isi variabel a adalah : *x[4]
Contoh :
main()
{
char *menu[] = {
"Nasi Goreng + Telur Mata Sapi\n",
"Bistik Ayam\n",
"Soto Ayam
Madura\n", "Gado-
gado\n"
};
int no_menu;
clrscr();
printf("Masukkan menu pilihan Anda (1-4) : ");
scanf("%d",&no_menu); printf("\nMenu yang Anda minta adalah :
\n"); printf("%s",menu[no_menu-1]);
getch();
}
Pemrograman Bahasa C
11
#include <iostream>
cout<<"Data ke-1 =
"<<my_array[0]<<"n";
cout<<"Data ke-2 =
"<<my_array[1]<<"n";
cout<<"Data ke-3 =
"<<my_array[2]<<"n";
cout<<"Data ke-4 =
"<<my_array[3]<<"n";
cout<<"Data ke-5 =
"<<my_array[4]<<"n";
cout<<"Data ke-6 =
"<<my_array[5]<<"n";
}
#include <iostream>
using namespace std;
Pemrograman Bahasa C
12
#include <iostream>
using namespace std;
#include <iostream>
using namespace std;
Pemrograman Bahasa C
13
#include <iostream>
using namespace std;
cout<<"Masukkan
nilai "<<i+1<<" : ";
cin>>x[i];
}
cout<<endl;for(i=0;i<=4;i++)
{
cout<<"Nilai ke-"<<i+1<<" = "<<x[i]<<endl;
}
cout<<endl;return 0;
}
#include <iostream>
using namespace std;
int main(){
int i;
char
nama[5]={'A','d','@','m',''};
char nama2[5]="Ad@m";
cout<<"Array per Karakter= ";for(i=0;i<=4;i++)
{
cout<<nama[i];
}
cout<<endl;
cout<<"Array string ="<<nama2<<endl<<endl;return 0;
}
#include <iostream>
#include <cstdlib>
Pemrograman Bahasa C
14
#include <iomanip>
using namespace std;
int main (){
float nilai[10];
int x,y;
cout<<"Mau berapa data
[1..10] : ";
cin>>y;for(x=0;x<y;x++)
{
cout<<"Nilai ke-
"<<x+1<<" : ";
cin>>nilai[x];
}
cout<<endl;
cout<<setiosflags(ios::fi
xed);for(x=0;x<y;x++)
{
cout<<"Nilai ke-
"<<setprecision(2)<<x+1<<" :"<<nilai[x]<<endl;
}
cout<<endl;return 0;
}
#include <cstdlib>
#include <iostream>
cout<<"nama["<<i+1<<"][
"<<j+1<<"] : ";
cin>>nama[i][j];
}
cout<<endl;
}for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{
cout<<"nama["<<i+1<<"][
Pemrograman Bahasa C
15
"<<j+1<<"] : ";
cin>>nama[i][j];
}
}
cout<<endl;
system("PAUSE");return EXIT_SUCCESS;
}
#include <iostream>
using namespace std;
int main(void)
{
int bilangan[2][2];
bilangan[0][0] = 100;
bilangan[0][1] = 101;
bilangan[1][0] = 110;
bilangan[1][1] = 111;
#include<iostream>
#include<conio.h>
using namespace std;
int i,x;
int matriks_A[2][2],
matriks_B[2][2],
matriks_C[2][2];
char ulang;
main()
{
cout<< "nPenjumlahan 2 MatriksOrdo 2x2 nn";do{//Input data matriks A
cout<< "nData matriks A n";for(i=0; i<2; i++)
{ for(x=0; x<2; x++)
Pemrograman Bahasa C
16
cout<<"n.__________________________________.n";
//Output hasil penjumlahan
Matriks A + Matriks B
}
cout<<endl;
}
cout<<"n.__________________________________.n";
getch();
}
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc,char *argv[])
{
int a[2][2];
int b[2][2];
int c[2][2];
int i,j;
Pemrograman Bahasa C
17
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{
cout<<"a["<<i+1<<"]["<<j+1<<"] : ";
cin>>a[i][j];
}
cout<<endl;
}
cout<<endl;for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{
cout<<"b["<<i+1<<"]["<<j+1<<"] : ";
cin>>b[i][j];
}
cout<<endl;
}
cout<<endl;
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{
cout<<"c["<<i+1<<"]["<<j+1<<"] : "
<<c[i][j]<<endl;
}
cout<<endl;
}
cout<<endl;
system("PAUSE");
#include <iostream>
#include <conio.h>
using namespace std;
int main(void)
{
double
a[10][10],b[10][10],c[10][10];
int CC,i,j,k;
Pemrograman Bahasa C
18
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char
*argv[])
{
int a[2][2],b[2][2],m,n;for(m=0;m<2;m++)
{for(n=0;n<2;n++)
{
cout<<"masukkan nilai
matriks a("<<m<<","<<n<<"):";
cin>>a[m][n];
}
}for(m=0;m<2;m++)
{for(n=0;n<2;n++)
{
Pemrograman Bahasa C
19
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
main(){
int A[10][10],b,c,baris,kolom;
char pil;do{
cout<<" ==========PROGRAM TRANSPOSE MATRIKS=========
"<<endl;
cout<<"Jumlah Baris : ";
cin>>baris;
cout<<"Jumlah Kolom : ";
cin>>kolom;
cout<<endl;for (b=0;b<baris;b++)
{for (c=0;c<kolom;c++)
{
cout<<"Matriks
["<<b+1<<","<<c+1<<"] = ";
cin>>A[b][c];
}
}
cout<<endl<<endl;
cout<<"Matriks Pertama :"<<endl<<endl;for (b=0;b<baris;b++)
{for (c=0;c<kolom;c++)
{
cout<<" "<<A[b][c]<<" ";
}
cout<<endl<<endl;
}
cout<<" Matriks Transpose :"<<endl<<endl;for (b=0;b<kolom;b++)
Pemrograman Bahasa C
20
{for (c=0;c<baris;c++)
{
cout<<" "<<A[c][b]<<" ";
}
cout<<endl;
cout<<endl;
}
getch();
cout<<" Ingin Mengulang Program? (Y/N) : ";
cin>>pil;
}while(pil=='Y'||pil=='y');
}
#include <cstdlib>
#include <iostream>
jumlah=jumlah+bil[i];
}return jumlah;
}
int main()
{
int bil[100]; //maksimalelemen
int banyak_data;
int jumlah;
cout<<" Masukkan banyakelemen yang diinginkan : ";
cin>>banyak_data;
cout<<endl;
Pemrograman Bahasa C
21
//memanggil void
input_array
input_array(bil,banyak_data);
//memanggl fungsijumlah_elemen
jumlah=jumlah_elemen(bil,banyak_data);
cout<<endl;
cout<<"Hasil penjumlahanelemen = "<<jumlah<<endl<<endl;return 0;
}
#include <cstdlib>
#include <iostream>
cout<<"nama["<<i+1<<"]["<<j+1<<"] : ";
cin>>nama[i][j];
}
cout<<endl;
}for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{
cout<<"nama["<<i+1<<"]["<<j+1<<"] : ";
cin>>nama[i][j];
}
}
cout<<endl;
system("PAUSE");return EXIT_SUCCESS;
}
Kesimpulan
Array merupakan variabel yang dapat menyimpan banyak data yang bertipe sama
Pemrograman Bahasa C
22
Sekian dari "Contoh Program sederhana ,C& C++ array 1,2,dan multi dimensi" semoga bermanfaat
sebagi refrensi dan sumber belajar dari teman-teman yang sedang belajar bahasa pemrograman c++.
Jika ada yang kurang jelas atau yang ingin di tanyakan silahkan tinggal komentar pada kolom
komentar.
Pemrograman Bahasa C