Anda di halaman 1dari 22

1

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.

Bentuk umum deklarasi array :


type nama_array[ukuran]

tipe : menyatakan tipe dasar array


ukuran : menyatakan banyaknya elemen pada array

Contoh :
int nilai[10];

hal ini menyatakan array nilai mempunyai 10 elemen, yaitu :


nilai[1], nilai[1], nilai[2], …, 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

ARRAY MULTI DIMENSI


Bahasa C mengijinkan array dengan beberapa dimensi, contoh array 2 dimensi. Array 2 dimensi
adalah sebuah daftar yang terdiri atas array-array 1 dimensi. Misalnya kita akan membuat array 2
dimensi dengan ukuran 3x5, bertipe int, maka deklarasinya adalah : int a[3] [5];

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

printf("Nilai : "); scanf("%f",&nilai[i]);

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 :

Isi variabel a adalah 5


Isi variabel x adalah
65494 Isi variabel b
adalah 5

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)

OPERASI PADA POINTER


Operasi aritmatika pada pointer hanya ada 2, yaitu penambahan dan
pengurangan. Contoh :
main()
{
int a, *p1, *p2;
clrscr();
a=5; p1=&a;
printf("\n Isi p1 sebelum ditambah adalah %5u",
p1); p1++;
printf("\n Isi p1 sesudah ditambah adalah %5u", p1);
p2=&a;
printf("\n Isi p2 sebelum dikurangi adalah %5u",
p2); p2 --;
printf("\n Isi p2 sesudah dikurangi adalah %5u",
p2); p2 = p2 + 5;
printf("\n Isi p2 sesudah ditambah dengan 5 adalah %5u", p2);
getch();
}

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

sesudah dikurangi adalah 65492


Isi p2 sesudah ditambah dengan 5 adalah

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

POINTER DAN ARRAY


Contoh :
char nama[20],
*p1; p1=nama;

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

CONTOH PROGRAM ARRAY

1. Array Satu dimensi (statis)

#include <iostream>

using namespace std;


main(){
int my_array[6] = {1,23,17,4,-5,100};

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";
}

#2. Mengakses element Array secara dinamis (dinamis)

#include <iostream>
using namespace std;

int main (){


int x [5];
cout<<"Masukkan nilai 1 :";
cin>>x[0];
cout<<"Masukkan nilai 2 :";
cin>>x[1];
cout<<"Masukkan nilai 3 :";
cin>>x[2];
cout<<"Masukkan nilai 4 :";
cin>>x[3];
cout<<"Masukkan nilai 5 :";
cin>>x[4];return 0 ;
}

Pemrograman Bahasa C
12

#3. Menampilkan element array secara (dinamis)

#include <iostream>
using namespace std;

int main (){


int x [5];
cout<<"Masukkan nilai 1 :";
cin>>x[0];
cout<<"Masukkan nilai 2 :";
cin>>x[1];
cout<<"Masukkan nilai 3 :";
cin>>x[2];
cout<<"Masukkan nilai 4 :";
cin>>x[3];
cout<<"Masukkan nilai 5 :";
cin>>x[4];
cout<<endl;
cout<<"Nilai ke-1 ="<<x[0]<<endl;
cout<<"Nilai ke-2 ="<<x[1]<<endl;
cout<<"Nilai ke-3 ="<<x[2]<<endl;
cout<<"Nilai ke-4 ="<<x[3]<<endl;
cout<<"Nilai ke-5 ="<<x[4]<<endl;
system("PAUSE");
}

#4. Array dengan perulangan (for)

#include <iostream>
using namespace std;

int main (){


int x[5],i;for(i=0;i<=4;i++)
{

cout<<"Masukkan nilai"<<i+1<<" : ";


cin>>x[i];
}return 0;
}

Pemrograman Bahasa C
13

#5. Menampilkan Array dengan perulanagan

#include <iostream>
using namespace std;

int main (){


int x[5],i;for(i=0;i<=4;i++)
{

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;
}

#6. Mengisi array dengan karakter ( @, %, &)

#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;
}

#7. Array berdimensi 1

#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;
}

#8. Array Bertipe data String

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc,char *argv[])


{
char nama [2][2][10];
int i,j;for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{

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;
}

#9. Menampilkan array

#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;

cout<< ("Isi array bilangan:n");


cout<< ("n",bilangan[0][0],bilangan[0][1]);
cout<< ("n",bilangan[1][0],bilangan[1][1]);
return 0;
}

#10. Penjumlahan matrix dua dimensi dengan array

#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<< "["<<i<<"]["<<x<<"] :";


cin>> matriks_A[i][x];
}
}
cout<<"n.__________________________________.n";
//Input data matriks B
cout<< "nData matriks B n";for(i=0; i<2; i++)
{for(x=0; x<2; x++)

cout<< "["<<i<<"]["<<x<<"] : "; cin>> matriks_B[i][x]; }}

cout<<"n.__________________________________.n";
//Output hasil penjumlahan
Matriks A + Matriks B

cout<< "nMatriks A + Matriks B:"<<endl; for(i=0; i<2; i++)

{for(x=0; x<2; x++)


{

matriks_C[i][x]=matriks_A[i][x] +matriks_B[i][x]; cout<<"t"<<matriks_C[i][x];

}
cout<<endl;
}
cout<<"n.__________________________________.n";

cout<< "nHitung lagi ? [y/t] : ";cin>>ulang;


}while(ulang!='t');

cout<< "nnTerima Kasih nn"<<endl;

getch();
}

#11. Penjumlahan Array dua Dimensi

#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");

#12. Pengurangan matriix dua dimensi dengan array

#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

cout<<endl<<" Elemenmatriks A : "<<endl;for (i=1; i<=2;i++){for (j=1;j<=2;j++){


cout<<" Elemen matrik Abaris ke-"<<i<<" kolom ke-
"<<j<<": ";
cin>>a[i][j];
}
}
cout<<endl<<" Elemenmatriks B : "<<endl;for (i=1; i<=2;i++){for (j=1;j<=2;j++){
cout<<"baris ke-"<<i<<" kolom ke-"<<j<<": ";
cin>>b[i][j];
}
}
cout<<endl;

for (i=1;i<=2;i++){for (j=1;j<=2;j++){


c[i][j]=0;for (k=1;k<=2;k++){
CC=a[i][k]*b[k][j];
c[i][j]=c[i][j]+CC;
}
}
}

cout<<"[hasil] : "<<endl;for (i=1;i<=2;i++){for (j=1;j<=2;j++){


cout<<"
}
cout<<endl;
}
getch();
}

#13. Perkalian matrix dua dimensi dengan array

#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

cout<<"masukkan nilai matriks b("<<m<<","<<n<<"):";


cin>>b[m][n];
}
}
cout<<"C:n";for(m=0;m<2;m++)
{for(n=0;n<2;n++)
{
cout<<setw(3)<<(a[m][0]*b[0][n]+ a[m][1]*b[1][n]);
}
cout<<'n';
}
system("PAUSE");return EXIT_SUCCESS;
}

#14. Matrix transpose dengan array

#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');
}

#15. Array dengan Parameter fungsi

#include <cstdlib>
#include <iostream>

using namespace std;void input_array(int bil[], int


banyak_data)
{
int i;for(i=0;i<banyak_data;i++
)
{
cout<<"Nilai
bil["<<i+1<<"] : ";
cin>>bil[i];
}
}

int jumlah_elemen(int bil[],int banyak_data)


{
int i, jumlah=0;for(i=0;i<banyak_data;i++
)
{

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;
}

#16. Array 3 dimensi

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc,char *argv[])


{
char nama [2][2][10];
int i,j;for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{

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

Anda mungkin juga menyukai