Sunday, March 11, 2012

TIPE DATA LARIK ( ARRAY )

TIPE DATA LARIK ( ARRAY )

    Array atau larik terdiri atas bagian-bagian komponen yang memiliki tipe data sama. Dalam penyimpanannya array selalu mempunyai jumlah komponen yang tetap yang ditunjukkan oleh indeksnya. Dimana indeks ini harus merupakan data dengan tipe ordinal artinya mempunyai urutan tertentu.

Dari penjelasan di atas, sebuah larik (array) dapat diilustrasikan sebagai berikut :

    1    2    3    4        …..            i        …..    n
X                                               

X adalah data bertipe larik dengan komponen sebanyak n

Ada 2 cara untuk mendeklarasikan larik yaitu :
1.    Sebagai tipe data baru
Type Larik=Array[1..n] of  datatype ;
Var    x : larik ;

2.    Langsung sebagai variabel       
    Var   x : Array[1..n] of datatype ;

Mengakses Data larik :

    Cara mengakses data larik adalah dengan menunjukkan :
Nama_Larik[no.indeks] ;
    Misal : x[1]   berarti kita mengakses data larik x pada no.indeks ke-1.

Keuntungan :

Menggunakan data larik  adalah bahwa kita tidak akan kehilangan nilai dari suatu data.

Kelemahan :

    Saat ditentukan suatu variable bertipe data array maka ia akan langsung mengambil  tempat pada memory penyimpanannya sesuai dengan tipe data yang digunakan pada array, baik nantinya semua komponen pada array itu digunakan ataupun tidak.

    Dalam pemrograman kadang kita menghadapi masalah saat kita akan mendeklarasikan suatu matriks dengan adanya tipe data array maka masalah itu dapat diselesaikan, yaitu dengan menggunakan array dengan dimensi dua atau lebih yang kemudian dikenal dengan array dimensi banyak.
Pendeklarasian :
      
Type
    Nama_Array = Array[tipe-indeks1,tipe-indeks2] of tipe data ;

Contoh : 

Type
Matriks = Array[1..10, 1..10] of  integer ;
Berarti matriks itu akan mempunyai dimensi (10x10), namun itu hanya batas atas dari indeks yang dipesan dalam memori penyimpanan (di atas itu tidak akan disimpan), sedangkan apabila nantinya kita hanya memasukkan jumlah baris misal 2 dan jumlah kolom 3 itu boleh saja selama tidak lebih dari 10.
Entry-entry dari matriks tersebut dapat kita panggil dengan mengetikkan

Nama_Array[indeks] ; dari contoh diatas berarti Matriks[2,3] yaitu entry dari matriks pada baris kedua kolom ketiga.
 
Contoh :

     Program Rata_rata;
     Uses crt;
     type
  larik = array[1..10] of integer;
     var
  x : larik;
  Tot, i, n : integer;
  mean : real;
   
 Begin
  clrscr;
  write('Masukkan jumlah data  : '); readln(n);
  writeln;
  Tot := 0;
  for i:= 1 to n do
  begin
    write('Masukkan Data ke-',i,' ', 'Anda : ');  readln(x[i]);
    Tot:= Tot + x[i];
  end;
  writeln;
  mean:= Tot/n;
  write('Dan hasil perhitungan meannya : ');
           writeln(mean:8:2);
            readln;
     end.

Hasil Run Program :

Masukkan jumlah data  : 5
Masukkan Data ke-1 Anda : 1
Masukkan Data ke-2 Anda : 2
Masukkan Data ke-3 Anda : 3
Masukkan Data ke-4 Anda : 4
Masukkan Data ke-5 Anda : 5
Dan hasil perhitungan meannya : 3.00


    Tipe Larik yang dijelaskan di atas merupakan Array statis, terdapat juga array yang bersifat dinamis, yang tidak perlu dideklarasikan panjangnya pada awal deklarasi.

Contoh :
var
  A, B: array of Integer;
begin
  SetLength(A, 1);
  A[0] := 1;
  B := A;
  B[0] := 2;
end;

Catatan :


Tipe data Larik (Array) ini data juga berisi tentang kumpulan record, yang biasa disebut sebagai array of record. Dapat digunakan untuk menyimpan database dalam Pascal.



Program Matriks

Program Baca_tulis_matriks ;
uses crt;
Var m,n,i,j : integer;
    x: Array[1..100,1..100] of integer;
begin
    clrscr;
    write('Baca ukuran baris Matriks :',' ');readln(m);
    write('Baca ukuran kolom matriks :',' ');readln(n);
    writeln('Matriks anda berukuran',' ',m,'x',n,' ');
     for i:=1 to m do
          for j:=1 to n do
            begin
               write('Baca nilai :',' ');readln(x[i,j]);
     end;
      writeln;
      writeln('Matriksnya :',' ');
      for i:=1 to m do
      begin
           for j:=1 to n do
                write(x[i,j]:3); writeln;
       end;
       writeln;writeln('Matriks tranposenya :',' ');
       for j:= 1 to n do
       begin
          for i:=1 to m do
                write(x[i,j]:3);writeln;
       end;writeln;
       writeln('Matriks anda berukuran',' ',n,'x',m,' ');
       readln;
end.

Hasil Run Program :

Baca ukuran baris Matriks : 2
Baca ukuran kolom matriks : 2
Matriks anda berukuran 2x2
Baca nilai : 1
Baca nilai : 2
Baca nilai : 3
Baca nilai : 4
Matriksnya :
  1  2
  3  4
Matriks tranposenya :
  1  3
  2  4
Matriks anda berukuran 2x2



TIPE DATA RECORD

    Tipe data ini merupakan perluasan dari tipe data Array, yaitu karena pada array masing-masing komponennya harus menggunakan tipe data yang sama, maka pada record hal itu tidak berlaku lagi. Artinya diperbolehkan untuk menggunakan tipe data yang berbeda pada masing-masing komponen (field) dari record tersebut.
Pendeklarasian record :

    Type
         Nama_record = record
            Field1: tipe data1 ;         
            Field2: tipe data2 ;
            …………………
            …………………
            Fieldn: tipe datan ;
        End ;
   
Contoh :
    Type    Barang = record
            Nama      : string[20] ;
            Jenis     : string [20]
Jumlah    : integer ;
        End ;

Memasukkan data ke dalam record :

    Untuk memberikan nilai dari masing-masing field maka kita harus menuliskan
Nama_record.field := (nilainya);
Misalkan : dari contoh diatas kita akan mengisikan nama barang dengan Piring, jenis barang yaitu barang pecah belah dan jumlah barang 3 lusin maka kita harus menuliskan pada program utama

        Barang.Nama := ‘Piring’ ;
        Barang.Jenis   := ‘Pecah belah’ ;
        Barang.Jumlah:=  36 ;

Nilai-nilai dari field ini akan disimpan dalam record. Untuk melihat apakah benar data yang dimasukkan telah tersimpan dalah ecord maka pada var kita deklarasikan suatu variable misal :
            X : array[1..n] of  Nama_record ; dari soal di atas yaitu
            X : array[1..n] of Barang ;

Maka apabila nanti kita lakukan pemanggilan dengan mengetikkan
        Write(Barang[i].nama),
data dari field yang tersimpan dalam record tersebut akan ditampilkan.

Contoh program :
PROGRAM DATABASE;
Uses crt;
TYPE   mahasiswa=record
            nama: array[1..20] of string;
            nim: array[1..20] of string;
            alamat: array[1..20] of string;
            ipk: array[1..20] of real;
                     end;

VAR       data1: mahasiswa;

PROCEDURE data(var mhs:mahasiswa; mhs1:mahasiswi);
Var     i,n,no:integer;
           pilih,tekan:char;
Begin
write('Masukan jumlah mahasiswa : ');readln(n);
writeln;
for i:= 1 to n do
    begin
    writeln('Masukan data mahasiswa ke - ',i);
    writeln;
    write('Nama Mahasiswa   : ');readln(mhs.nama[i]);
    write('No. Mahasiswa    : ');readln(mhs.nim[i]);
    write('Alamat Mahasiswa : ');readln(mhs.alamat[i]);
    write('IPK              : ');readln(mhs.ipk[i]);
    writeln;
    end;
writeln;
writeln('DATA MAHASISWA');
writeln;
writeln('==========================================================');
writeln('|','No':5,'Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('==========================================================');
for i:=1 to n do
    writeln('|',i:5,mhs.nama[i]:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs.ipk[i]:10:2, '|':2);
writeln('==========================================================');
writeln;
write('Ingin mencari data tertentu (y/n) ? ');readln(pilih);
writeln;
case pilih of
'y': begin
     tekan:='Y';
     while upcase(tekan)='Y' do
     begin
         clrscr;
     writeln;
     writeln('MENU PILIHAN');
     writeln;
     writeln('[1] NAMA');
     writeln('[2] NIM');
     writeln('[3] ALAMAT');
     writeln('[4] IPK');
     writeln;
     write('Pilihan anda : ');readln(no);
case no of
1: begin
   write('Masukan Nama Mahasiswa : ');readln(mhs1.nama);
   writeln;
   writeln('=========================================================');
   writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
   writeln('=========================================================');
   for i:=1 to n do
       if (mhs1.nama) = (mhs.nama[i]) then
    begin         writeln('|',mhs1.nama:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs.ipk[i]:10:2, '|':2);
          end;
   writeln('=========================================================');
   writeln;
   end;
2: begin
   write('Masukan No. Mahasiswa : ');readln(mhs1.nim);
   writeln;
   writeln('=========================================================');
   writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
   writeln('=========================================================');
    for i:=1 to n do
    if (mhs1.nim) = (mhs.nim[i]) then
        begin
        writeln('|',mhs.nama[i]:20,mhs1.nim:10,mhs.alamat[i]:20,mhs.ipk[i]:10 :2,'|':2);
        end;
writeln('==========================================================');
writeln;
end;
3: begin
write('Masukan Alamat Mahasiswa : ');readln(mhs1.alamat);
writeln;
writeln('=========================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=========================================================');
for i:=1 to n do
    if (mhs1.alamat) = (mhs.alamat[i]) then
        begin
        writeln('|',mhs.nama[i]:20,mhs.nim[i]:10,mhs1.alamat:20,mhs.ipk[i]:10 :2,'|':2);
        end;
writeln('=========================================================');
   writeln;
   end;
4: begin
   write('Masukan IPK : ');readln(mhs1.ipk);
   writeln;
   writeln('=======================================================');
   writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
   writeln('=======================================================');
   for i:=1 to n do
       if (mhs1.ipk) = (mhs.ipk[i]) then
           begin
           writeln('|',mhs.nama[i]:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs1.ipk: 10:2,'|':2);
           end;
   writeln('=======================================================');
   writeln;
   end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);
writeln;
end;end;end;end;
{====================PROGRAM UTAMA========================}
BEGIN
      clrscr;
      data(data1,data2);
      readln;
end.

Hasil Run Program :

Masukan jumlah mahasiswa : 4
Masukan data mahasiswa ke - 1
Nama Mahasiswa   : Tumpal PS
No. Mahasiswa    : 8051
Alamat Mahasiswa : KalBar
IPK              : 3.5
Masukan data mahasiswa ke - 2
Nama Mahasiswa   : Sri Sunarwati
No. Mahasiswa    : 8244
Alamat Mahasiswa : Klaten
IPK              : 3.4
Masukan data mahasiswa ke - 3
Nama Mahasiswa   : Putu Eka A
No. Mahasiswa    : 8239
Alamat Mahasiswa : Bali
IPK              : 3.3
Masukan data mahasiswa ke - 4
Nama Mahasiswa   : Timotius N
No. Mahasiswa    : 8299
Alamat Mahasiswa : Tegal
IPK              : 3.5
DATA MAHASISWA
=============================================
|   No                Nama       NIM              Alamat       IPK          |
=============================================
|    1           Tumpal PS      8051              KalBar      3.50          |
|    2       Sri Sunarwati      8244              Klaten      3.40           |
|    3          Putu Eka A      8239                Bali      3.30              |
|    4          Timotius N      8299               Tegal      3.50            |
=============================================

Ingin mencari data tertentu (y/n) ? y

MENU PILIHAN

[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK

Pilihan anda : 1
Masukan Nama Mahasiswa : Tumpal PS
==========================================
|                Nama       NIM              Alamat       IPK            |
==========================================
|           Tumpal PS      8051              KalBar      3.50          |
==========================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 2
Masukan No. Mahasiswa : 8299
=========================================
|                Nama       NIM              Alamat       IPK          |
=========================================
|          Timotius N      8299               Tegal      3.50          |
=========================================
Ingin mencari data lagi (y/n) ? y


MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 3
Masukan Alamat Mahasiswa : Bali
=========================================
|                Nama       NIM              Alamat       IPK          |
=========================================
|          Putu Eka A      8239                Bali      3.30            |
=========================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 4
Masukan IPK : 3.4

=========================================
|                Nama       NIM              Alamat       IPK          |
=========================================
|       Sri Sunarwati      8244              Klaten      3.40         |
=========================================

0 komentar:

Post a Comment

comment as you like..