Array dan Record

ARRAY
Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.
VARIABEL ARRAY
nama_variabel[indeks]
ketentuan nama variabel arrray sama dengan nama variabel biasa.
indeks menunjukkan nomor dari variabel .
DEKLARASI VARIABEL ARRAY
BU : tipe nama_variabel[indeks];
Contoh : float bil[10];
deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.
Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :
float bil[11]
INISIALISASI ARRAY 1 DIMENSI
Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
int bil[2] = {4,1,8}
bil[0] = 4
bil[1] = 1
bil[2] = 8
AUTOMATIC ARRAY adalah Inisialisasi array dilakukan di dalam fungsi tertentu. Hanya compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Cara menginisialisasikan array dari compiler yg tidak mengikuti standar ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
int bil[2]={0,0,0};
main()
2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
main()
{
static int bil[2]={0,0,0};
.........
Pada automatic array yang tidak diinisialisasikan , elemen array akan memiliki nilai yang tidak beraturan. Bila global & static array tidak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).
Contoh :
main()
{
int y;
int hitung=0;
int x[0];
for(y=0;y<5;y++)
{
hitung+=y;
x[y]=hitung;
printf("%3d - %3d\n",y,x[y]);
}
}
OUTPUT:
0- 0
1- 1
2- 3
3- 6
4- 10
MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL
Besarnya variabel indeks dapat ditentukan dengan menggunakan
preprocessor directives #define
#define N 40
main()
{
int no[N],gaji[N],gol[N],status[N],juman[N];
Bila besari indeks akan diubah menjadi 50, cukup diganti dengan
#define N 50
ARRAY 2 DIMENSI
nama_variabel [indeks1][indeks2]
indeks1 : jumlah/nomor baris
indeks2 : jumlah/nomor kolom
Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan dari hasil perkalian indeks1 * indeks2
misal : array A[2][3] akan memiliki 2*3 = 6 elemen.
main()
{
float bil [5] [5]
.......
dapat dituliskan dengan #define
#define N 5
main()
{
float bil [N] [N]
.......
INISIALISASI ARRAY 2 DIMENSI
main()
{
float bil[2] [3] =
{ { 1,2,3}, /*baris 0*/
{ 4,5,6}, /*baris 1*/
}
elemen bil [0] [0] = 1
elemen bil [0] [1] = 2
elemen bil [0] [2] = 3
elemen bil [1] [0] = 4
elemen bil [1] [1] = 5
elemen bil [1] [2] = 6
Contoh :
main()
{
int x[3][5];
int y,z;
int hitung=0;
for(y=0;y<3;y++)
{
printf("y = %d\n",y);
for(z=0;z<5;z++)
{
hitung+=z;
x[y][z] = hitung;
printf("%/t%3d - %3d\n",z,x[y][z]);
}
}
}
OUTPUT:
y = 0
0- 0
1- 1
2- 2
3- 6
4- 10
y = 1
0- 10
1- 11
2- 13
3- 16
4- 20
y = 2
0- 20
1- 21
2- 23
3- 26
4- 30
STRING dan ARRAY
1. Pada string terdapat karakter null() di akhir string
2. String sudah pasti array, array belum tentu string
CONTOH - CONTOH :
1. array dengan pengisian input melalui keyboard
baca_input()
{
float nilai[10];
for(i=0;i<10;i++)
scanf("%d",&nilai[i]);
}
2. Fungsi yang mencetak isi array dari akhir ke awal
cetak_array()
{
float nilai[10];
for(i=9;i>=0;i--)
scanf("%3f",nilai[i]);
}
3. Menghitung rata - rata isi array nilai
rata_rata()
{
float nilai[10],jum*rata;
for(i=0,jum=0;i<=9;i++)
jum+=nilai[i];
rata=jum/i;
}
4. Mencari nilai terbesar
besar()
float temp,nilai[10];
{
for(temp=nilai[0],i=1;i<=9;i++)
if(nilai[i] > temp)
temp=nilai[i];
}
return(temp)
Deklarasi Array Satu Dimensi
Bentuk umum : tipe_var nama_var[ukuran];
Contoh :
int x[8];
Ket :X : nama variabel x
8 : Jumlah elemen dimensi pertamannya 8
int: tipe data integer
Deklarasi Array Multidimensi
Array dapat pula digunakan untuk menangani kumpulan
data yang memiliki dimensi lebih dari satu, misalnya
untuk penanganan pada matriks.
Bentuk umumnya :
tipe_var nama_var[ukuran 1][ukuran 2] ...
Contoh :
int iMatriks[2][2]={
{10, 2},
{2, 4}};
Array Subscript
Array subscript adalah nilai atau expresi (pernyataan)
dalam tanda kurung setelah nama array untuk
menunjukkan elemen array mana yang harus diakses
(indeks).
Contoh :
x[2] �� 2 = array subscript
n=10;
x[n – 8] �� n – 8 = array subscript
int x[8];
RECORD
Record dapat dikatakan sebagai suatu kumpulan data item yang masing-masing mempunyai jenis data berbeda.
Data item yang merupakan elemen record biasanya disebut dengan FIELD.
CARA MENDEKLARASIKAN RECORD
Bentuk umum deklarasi suatu variabel berjenis record adalah sbb :
TYPE identifier = RECORD
Nama_field_1 : jenis;
Nama_field_2 : jenis;
……………………..
……………………..
nama_field_n : jenis;
END;
Contoh :
1. VAR nilai : RECORD
Nilai_1 : integer;
Nilai_2 : integer;
END;
2. TYPE date = RECORD
Tanggal : 1..31;
Bulan : 1…12;
Tahun : 1900..2000;
END;
VAR event1,event2 : ARRAY [1..10] OF date;
3. TYPE account = RECORD
cust_no : integer;
cust_type : char;
cust_balance : real;
END;
VAR customer : account;
Halaman : 1
Pemrograman PASCAL : Record & Set
MEMPROSES VARIABEL BERJENIS RECORD
Perhatikan deklarasi variabel berikut :
TYPE nilai : RECORD
Nilai1 : real;
Nilai2 : real;
END;
VAR x,y : nilai;
Untuk memproses variabel x dan / atau y dilakukan dengan cara menyebutkan field designatornya, yg terdiri dari atas :
Nama_record.nama_field
Pada deklarasi diatas yang dimaksud dengan field designator-nya adalah :
x.nilai1
x.nilai2
y.nilai1
y.nilai2
Jadi jika ingin membaca variabel x atau y atau keduanya, maka bentuk statement-nya adalah :
READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2);
Selanjutnya, misal ingin dibuat program sederhana untuk menjumlahkan dua bilangan kompleks a dan b yang hasilnya disimpan di c.
Secara aljabar penjumlahan dua bilangan kompleks adalah sebagai berikut :
a = x1 + iy1
b = x2 + iy2 +
c = (x1 + x2 ) + I(y1 + y2)
Maka bentuk garis besar programnya adalah sebagai berikut :
Program contoh ;
Type bk = record
Bag_nyata : integer;
Bag_imajiner : integer;
End;
Var a,b,c : bk;
Begin
Read (a.bag_nyata, a.bag_imajiner, b.bag_nyata, b.bag_imajiner);
c.bag_nyata := a.bag_nyata + b.bag_imajiner;
c.bag_imajiner := a.bag_imajiner + b.bag_imajiner;
writeln(c.bag_nyata,’ +’,’i’,c.bag_imajiner);
End.
STATEMENT “WITH”
Selain cara yang telah disebutkan diatas, untuk memproses suatu record dapat digunakan statement WITH.
Dengan statement ini penulisannya akan lebih sederhana.
Halaman : 2
Pemrograman PASCAL : Record & Set
Bentuk Umum penulisan statement WITH ini adalah :
WITH nama_record DO statement
Perhatikan deklarasi dibawah ini :
TYPE x = RECORD
No : integer;
Kode : char;
Juml : integer;
Harga : real;
END;
VAR p,q : x;
Untuk membaca variabel p dan q di atas dengan memanfaatkan statement WITH bentuknya menjadi :
WITH p,q DO read (no, kode, juml, harga);
Bandingkan jika digunakan cara sebelumnya :
Read(p.no, p.kode, p.juml,p.harga,q.no,q.kode,q.juml,q.harga);
CONTOH :
Pernyataan seperti :
Data.npm :=‘22297566’
Data.Nama:=‘Abdul Kadir’
Data.Fakultas:=‘Teknik’
Dapat diganti dengan :
WITH Data Do
Begin
npm :=‘22297566’
Nama:=‘Abdul Kadir’
Fakultas:=‘Teknik’
end;
Apabila di dalam pernyataan WITH terdapat lebih dari satu record, haruslah pada kedua record tersebut tidak ada field dengan nama yang sama. Sebagai contoh :
Type
BarangX=RECORD
Batu:integer;
Kayu:real;
END;
BarangY=RECORD
Halaman : 3
Pemrograman PASCAL : Record & Set
Batu:string[10];
Kayu:char;
END;
Var
brg_X:barangX;
brg_Y:barangY;
Karena kedua variabel record brg_X dan brg_Y memiliki nama field yang sama, Jika misalnya kemudian dikenakan pernyataan :
WITH brg_X, brg_Y Do
Begin
writeln(batu);
writeln(kayu);
End;
dapat menyebabkan hasil tidak seperti yang diharapkan.
Record yang Bervariasi
Yaitu suatu record dengan field yang bisa berubah pada saat program berjalan. Hal yang perlu diperhatikan adalah bahwa beberapa field yang berada dalam record tidak pernah muncul dalam serempak, hanya akan ada satu field yang terpakai dalam satu saat.
Record varian akan memberikan fasilitas untuk menentukan field yang diperlukan pada saat program berjalan (RUN-TIME), berdasarkan keperluannya.
Bentuk umum Record Varian :
TYPE namarecord = RECORD
Nama_field_1 : jenis;
Nama_field_2 : jenis;
……………………..
nama_field_n : jenis;
Case Tagfield:jenis Of
nama_tagfield : (Nama_field:jenis);
nama_tagfield : (Nama_field_1, Nama_field_2:jenis);
……………………..
nama_tagfield : (Nama_field_n:jenis);
END;
Contoh :
Type status=(T,P,J);
gaji=RECORD
napeg :string[25];
nopeg :string[10];
bagian :string[15];
CASE stat :status OF
T:(gaji:integer);
P:(gajiperjam,jmlmax:integer);
J:(upahperjam,lembur:integer);
end;
Halaman : 4
Pemrograman PASCAL : Record & Set
Array tipe record
type barang=RECORD
namabrg:string[20];
jmlbrg:byte;
hargabrg:real;
total:real;
end;
var jual:array [1..10] of barang
i,j:integer;
tot1:real;
Begin
I:=1;
write(‘Nama barang :’);readln(jual[i].nmbrg);
Repeat
write(‘Jumlah barang :’);readln(jual[i].jmlbrg);
write(‘Harga barang :’);readln(jual[i].hrgbrg);
jual[i].total:=jual[i].jmlbrg* jual[i]. jual[i].hrg.brg;
inc (I);
write(‘Nama barang :’);readln(jual[i].nmbrg);
until (jual[i].nmbrg=‘0’) or (I=11);
dec(i);
clrscr;
writeln (‘------------------------------------------------------------’);
writeln (‘No nama barang jumlah harga total’);
writeln (‘------------------------------------------------------------’);
for j:=1 to I do
begin
gotoxy(1,j+3);write (j);
gotoxy(5,j+3);write(jual[i].nmbrg);
gotoxy(26,j+3);write(jual[i].jmlbrg:10);
gotoxy(37,j+3);write(jual[i].hrgbrg:10:2);
gotoxy(48,j+3);write(jual[i].total:10:2);
tot1:=tot1 + jual[j].total ;
end;
writeln (‘------------------------------------------------------------’);
writeln(‘ Total :’,tot1:10:2’);
writeln (‘------------------------------------------------------------’);
end.
Array dalam record
Type barang= RECORD
nmbrg:string[20];
jmlbrg:array[1..3]of byte;
hrgbrg:real;
total:real;
end;
var jual:barang;
tbarang, i:integer;
Begin
clrscr;
write(‘Nama Barang :’);readln(jual.nmbrg);
for i:=1to 3 do
begin
write(‘Jumlah barang ’,I,’ : ’);readln(jual.jmlbrg[i]);
tbarang:=tbarang+jual.jmlbrg[i];
end; Halaman : 5
Pemrograman PASCAL : Record & Set
write(‘Harga barang :’);readln(jual.hrgbrg);
jual.total:=tbarang*jual.hrgbrg;
writeln(‘Total Harga Barang = ‘, jual.total:10:2);
end.
SUMBER :

* http://www.google.co.id/#hl=id&q=array&meta=cr%3DcountryID&aq=f&oq=&fp=7e99b3a5df14a093
* http://www.google.co.id/#hl=id&source=hp&q=array+dan+record&btnG=Telusuri+dengan+Google&meta=cr%3DcountryID&aq=f&oq=array+dan+record&fp=7e99b3a5df14a093

Komentar

Postingan populer dari blog ini

3G ( Gold, Glory, Gospel )

Ketika Pria Meminta Bukti Cinta Dengan MAKING LOVE

Menghafal Tabel Periodik dengan Mudah