Struktur Data - Pertemuan 2. " ARRAY DAN POINTER " ARRAY Array adalah sekumpulan variable yang bertipe data sama yang dibedakan ...

ARRAY DAN POINTER




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: