
Struktur Data - Pertemuan 2.
" ARRAY DAN POINTER "
ARRAY
Array adalah sekumpulan variable yang bertipe data sama yang
dibedakan oleh indeks. Suatu Array mempunyai jumlah komponen yang banyaknya
tetap. Banyaknya komponen dalam suatu larik ditunjukan oleh suatu indek untuk
membedakan variabel yang satu dengan variabel yang lainnya. Dalam bahasa C,
index dari array dimulai dengan 0 (zero).
Variabel array dalam Borland C++, dapat digolongkan menjadi
Dua buah dimensi:
· Array Satu
Dimensi
· Array Dua
Dimensi
1. Array Satu Dimensi
Sebelum digunakan, variabel array perlu dideklarasikan
terlebih dahulu. Cara mendeklarasikan variabel array sama seperti deklarasi
variabel yang lainnya, hanya saja diikuti oleh suatu indek yang menunjukan
jumlah maksimum data yang disediakan.
Bentuk Umum pendeklarasian array :
Tipe-Data Nama_Variabel[Ukuran];
Keterangan :
Type Data : Untuk
menyatakan type data yang digunakan.
Ukuran :
Untuk menyatakan jumlah maksimum elemen array.
Contoh penulisannya : int IPK[5];
Contoh Program Array Satu Dimensi :
#include <constream.h>
int x, nilai[3]; // variabel nilai
menggunakan array
float rata;
void main()
{
rata = 0;
clrscr();
cout<<"Menghitung
Nilai Rata-Rata"<<endl<<endl;
for(x=0;x<3;x++)
{
cout<<"Masukan Nilai :
";cin>>nilai[x];
rata+=nilai[x];
}
cout<<"\nRata-Rata :
"<<rata/3;
getch();
}
2. Array Dua Dimensi
Array dimensi dua tersusun dalam bentuk baris dan kolom,
dimana indeks pertama menunjukan baris dan indeks kedua menunjukan kolom. Array
dimensi dua dapat digunakan seperti pendatan penjualan, pendataan nilai dan
lain sebagainya.
Bentuk Umum pendeklarasian array :
Tipe-Data Nama_Variabel[index-1][index-2];
Keterangan :
Type Data : Untuk
menyatakan type data yang digunakan.
Index-1 :
Untuk menyatakan jumlah baris
Index-2 :
Untuk menyatakan jumlah kolom
Contoh Penulisannya : int penjualan[3][3]
Inisialisasi Array
Inisialisasi adalah memberikan nilai awal terhadap suatu
variabel. Bentuk pendefinisian suatu array dapat dilihat dari contoh berikut :
Tipe_data nama_array[jml_elemen] = { nilai array };
Contoh Penulisannya : float nilai [2][3]={{3,5,7},{2,4,6}}
Contoh Program Array Dua Dimensi :
#include"constream.h"
struct barang {
char kode;
char nama[10];
}data[5];
char ulang;
long nilai[5][6],b,x[3],tmp; //pada
variable nilain digunakan array 2 dimensi
void main()
{
textcolor(BLACK);
textbackground(WHITE);
do
{
clrscr();
gotoxy(20,1);cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
gotoxy(21,2);cout<<"DATA PENJUALAN
PERALATAN RUMAH TANGGA";
gotoxy(33,3);cout<<"TOKO
FURNITURE";
gotoxy(20,4);cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n\n";
cout<<"
ÉÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍ»
\n";
cout<<" º No º Kode º Nama Barang
º Harga º Jumlah º
Total º Diskon º Bayar
º \n";
cout<<"
ÌÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍ͹
\n";
cout<<" º 1. º º º º º º º º \n";
cout<<" º 2. º º º º º º º º \n";
cout<<" º 3. º º º º º º º º \n";
cout<<" º 4. º º º º º º º º \n";
cout<<"
ÈÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍͼ
\n\n\n";
cout<<"
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍ» \n";
cout<<" º Barang Termahal º º Kode : R=Rak Buku \n";
cout<<"
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍ͹
L=Lemari \n";
cout<<" º Barang Termurah º º K=Kursi \n";
cout<<"
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍ͹ M=Meja \n";
cout<<" º Barang Terlaris º º E=Ember
\n";
cout<<"
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍͼ S=Sapu \n";
for(b=1;b<=4;b++)
{
ulang:
gotoxy(10,8+b);cout<<" ";
gotoxy(10,8+b);cin>> data[b].kode;
if (data[b].kode == 'R' || data[b].kode == 'r'
){nilai[b][1]=50000; gotoxy(17,8+b); cout<<"Rak Buku";}
else if (data[b].kode == 'L' || data[b].kode
== 'l' ){nilai[b][1]=90000; gotoxy(17,8+b); cout<<"Lemari";}
else if (data[b].kode == 'K' || data[b].kode
== 'k' ){nilai[b][1]=30000; gotoxy(17,8+b); cout<<"Kursi";}
else if (data[b].kode == 'M' ||
data[b].kode == 'm' ){nilai[b][1]=60000; gotoxy(17,8+b);
cout<<"Meja";}
else if (data[b].kode == 'E' || data[b].kode
== 'e' ){nilai[b][1]=3000; gotoxy(17,8+b); cout<<"Ember";}
else if (data[b].kode == 'S' ||
data[b].kode == 's' ){nilai[b][1]=4000; gotoxy(17,8+b);
cout<<"Sapu";}
else goto ulang;
gotoxy(33,8+b);cout<< nilai[b][1]; //harga
gotoxy(44,8+b);cin>> nilai[b][2]; //jumlah
nilai[b][3]=nilai[b][1]*nilai[b][2]; //total
gotoxy(51,8+b);cout<< nilai[b][3];
if(nilai[b][2] >=3){nilai[b][4]=0.1*nilai[b][3];} //diskon
else nilai[b][4]=0.05*nilai[b][3];
gotoxy(61,8+b);cout<< nilai[b][4];
nilai[b][5]=nilai[b][3]-nilai[b][4];
//bayar
gotoxy(70,8+b);cout<< nilai[b][5];
}
//barang Termahal Termurah Terlaris
x[0]=nilai[1][1];
x[1]=nilai[1][1];
x[2]=nilai[1][1];
tmp=nilai[1][2];
for (b=1;b<=4;b++)
{
if (x[0]<nilai[b][1]){x[0]=nilai[b][1];}
if (x[1]>nilai[b][1]){x[1]=nilai[b][1];}
if (tmp<nilai[b][2]){tmp=nilai[b][2]; x[2]=nilai[b][1];}
}
for(b=0;b<3;b++)
{
if(x[b]==50000){gotoxy(23,17+(b*2));cout<<"Rak Buku";}
else
if(x[b]==90000){gotoxy(23,17+(b*2));cout<<"Lemari";}
else if(x[b]==30000){gotoxy(23,17+(b*2));cout<<"Kursi";}
else if(x[b]==60000){gotoxy(23,17+(b*2));cout<<"Meja";}
else if(x[b]==3000){gotoxy(23,17+(b*2));cout<<"Ember";}
else if(x[b]==4000){gotoxy(23,17+(b*2));cout<<"Sapu";}
}
gotoxy(18,24);cout<<"APAKAH ANDA INGIN
MENGULANG ? [Y/N] "; cin>>ulang;
}while(ulang== 'Y' || ulang == 'y');
}
POINTER
Pointer (variabel penunjuk) adalah suatu variabel yang
berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari
obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah
variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk
ke variabel kedua.
Operator Pointer ada dua, yaitu :
- Operator &
Operator & bersifat unary (hanya memerlukan satu operand
saja).
Operator & menghasilkan alamat dari operandnya.
- Operator *
Operator * bersifat unary (hanya memerlukan satu operand
saja).
Operator * menghasilkan nilai yang berada pada sebuah
alamat.
Deklarasi Pointer
Seperti halnya variabel yang lain, variabel pointer juga
harus dideklarasikan terlebih dahulu sebelum digunakan.
Bentuk Umum : Tipe_data *nama_pointer;
Contoh Program :
#include <constream.h>
int *px;
char *sh;
void main()
{
int x, y; /* x dan y bertipe int
*/
int *px; /* px pointer yang
menunjuk objek */
clrscr();
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout<<“Alamat x =”<<&x
<<\n”;
cout<<“Isi px = \n”, px);
cout<<“Isi x = \n”, x);
cout<<“Nilai yang ditunjuk
oleh px = \n”, *px);
cout<<“Nilai y = \n”, y);
getch();
}
Operasi Pointer
·
Operasi Penugasan
Suatu variable pointer seperti halnya variable yang lain,
juga bisa mengalami operasi penugasan. Nilai dari suatu variable pointer dapat
disalin ke variable pointer yang lain.
Contoh Program :
#include <constream.h>
void main()
{
float *x1,y, *x2;
clrscr();
y = 13.45;
x1 = &y; /* Alamat dari y disalin
ke variabel x1 */
x2 = x1; /* Isi variabel x1
disalin ke variabel x2 */
cout<<"Nilai variabel y
= "<<y<< " ada di
alamat "<< x1<<"\n";
cout<<"Nilai variabel y
= "<<y<< " ada di
alamat "<< x2<<"\n";
getch();
}
·
Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi
aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah
operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai
menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu
juga operasi pengurangan.
Contoh Program :
#include <constream.h>
void main()
{
int nilai[3], *penunjuk;
clrscr();
nilai[0] = 125;
nilai[1] = 345;
nilai[2] = 750;
penunjuk = &nilai[0];
cout<<"Nilai
"<<*penunjuk <<" ada di alamat memori "
<<penunjuk<<"\n";
cout<<"Nilai
"<<*(penunjuk+1) <<" ada di alamat memori "
<<penunjuk+1<<"\n";
cout<<"Nilai
"<<*(penunjuk+2) <<" ada di alamat memori "
<<penunjuk+2<<"\n";
getch();
}
·
Operasi Logika
Suatu pointer juga dapat dikenai operasi logika.
Contoh Program :
#include<constream.h>
void main()
{
int a = 100, b = 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
cout<<"nilai pa=
"<<pa<< " nilai pb=
"<<pb<<"\n";
if(pa < pb)
cout<<"pa menunjuk ke
memori lebih rendah dari pb\n";
if(pa == pb)
cout<<"pa menunjuk ke
memori yang sama dengan pb\n";
if(pa > pb)
cout<<"pa menunjuk ke
memori lebih tinggi dari pb\n";
getch();
}
0 komentar: