Rabu, 28 Oktober 2015

PEMETAAN ARRAY

SOAL :
1.  Jelaskan konsep Pemetaan array ke storage
v   Dimensi satu
v   Dimensi banyak
2. Jelaskan contoh kasus Array dalam matriks dan    Pembentukan matriks dengan menggunakan array
PEMETAAN ARRAY DIMENSI SATU KE
STORAGE
            Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
  1. Kesederhanaan dari akses elemen
  2. Mudah untuk ditelusuri
  3. Efisiensi dari utilitasi storage
  4. Mudah dikembangkan
            Umumnya tidaklah mungkin untuk mengoptimalkan keempat faktor tersebut sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1.
Untuk menghitung alamat (address) awal dari elemen NOPEG(I),
diperlukan untuk mengetahui 2 hal yakni :
  1.  Address awal dari ruang storage yang dialokasikan bagi array tersebut.
  2. Ukuran dari masing-masing elemen array.
Address awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan :
bahwa masing-masing elemen dari array menduduki S byte. Maka, address awal dari
elemen ke-I adalah :
B + (I-1) * S
            Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array Z(4:10), maka address awal dari Z(6) adalah :
B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah :
B + (I -(-2)) * S
Maka secara umum, untuk array :
ARRAY(L:U)
elemen ARRAY(I) mempunyai address awal
B + (U-L) *
PEMETAAN KE STORAGE TERHADAP ARRAY DIMENSI BANYAK
Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.
Contoh Kasus penggunaan matrik dalam array
program matrik_transpose;
Uses Wincrt;
Var A: Array [1..5,1..5] of integer;
i,j,baris,kolom :integer;
Begin
Clrscr;
Write('Masukkan Jumlah Baris : ');Readln(baris);
Write('Masukkan Jumlah Kolom : ');Readln(kolom);
Writeln;
Gotoxy(1,5);Write('A= ');
for i := 1 to baris do
for j := 1 to kolom do
begin
Gotoxy(j*5,i*2+3);
Readln(A[i,j]);
end;
Gotoxy(30,5);Write('AT=');
for i := 1 to kolom do
for j := 1 to baris do
begin
Gotoxy(j*5+30,i*2+3);
Write(A[j,i]);
end;
end.
MATRIK
Matrik adalah struktur data di dalam memeori utama, dimana setiap elemennya memiliki dua indeks ( biasa disebut baris dan kolom). Karena ada dua indeks maka disebut larik dua dimensi, sedangkan baris dan kolom hanyalah digunakan untuk memudahkan pengertian tentang struktur logik. Karena matrik adalah sebuah larik maka konsep umum dari larik (array) berlaku untuk matrik , yaitu :
1. Kumpulan elemen bertipe sama, tipe elemeen matrik dapat berupa tipe data dasar  ( integer, char, real, bolean dan string ), ataupun tipe data tersruktur seperti record.

2. Setiap elemen dapat di akses secara acak (random)
3. Merupakan struktur data yang statis, artinya jumlah elemen sudah ditentukan lebih dulu dalam deklarasikan dan tidak dapat di ubah selama pelaksanaan program.
Struktur matrik praktis untuk dipakai untuk pengaksesan cepat karena langsung melalui indeksnya akan tetapi memakan banyak ruang memori. Misalkan matriks 100 x 100 membutuhkan 10.000 x ukuran integer ( 2 byte).
PENYIMPANAN MATRIK DALAM MEMORI
Walaupun matriks dianggap larik dua dimensi, tetapi kenyataan dalam memori tetap sebagai deret yang berurutan.





Sabtu, 10 Oktober 2015

QUIS

                                  
      1.            Buatlah contoh kasus array / larik beserta algoritmanya !

Uses Wincrt;
Var A: Array [1..10,1..10] of integer;
i,j,baris,kolom :integer;
Begin
Clrscr;
Write('Masukkan Jumlah Baris : ');Readln(baris);
Write('Masukkan Jumlah Kolom : ');Readln(kolom);
Writeln;
Gotoxy(1,2);Write('A= ');
for i := 1 to baris do
for j := 1 to kolom do
begin
Gotoxy(j*5,i*2+3);
Readln(A[i,j]);
end;
Gotoxy(20,5);Write('AT=');
for i := 1 to kolom do
for j := 1 to baris do
begin
Gotoxy(j*5+20,i*2+3);
Write(A[j,i]);
end;

end.

v  ALGORITMA
                                                      1.            Start / mulai.
                                                      2.            Var A, i, j, baris, dan kolom.
                                                      3.            Input : masukkan jumlah baris dan kolom.
                                                      4.            Print Go to xy untuk bentuk matrik biasa (‘A= ‘) , ß for I := 1 to baris do dan  for j := 1 to kolom do.
                                                      5.            Print Go to xy untuk matrik biasa A ß(j*5, i * 2+3)
                                                      6.            Print Go to xy untuk (‘AT = ‘) ß for I := 1 to baris do dan  for j := 1 to kolom do.
                                                      7.            Print Go to xy untuk matrik AT ß (j*5 + 20, i*2+3);
                                                      8.            End / selesai.

      2.            Buatlah contoh kasus record beserta algoritmanya !
program contoh_record;
uses wincrt;
type pegawai = record
Nama                 : string[20];
Alamat               : string[20];
Agama                : string[8];
Jenis_Kelamin        : string[12];
Nip                  : string[25];
Golongan             : string[10];
Jabatan              : string[10];
end;
var recPgw           : pegawai;
Begin
     writeln('^_^ DATA KEPEGAWAIAN ^_^');
     writeln;
     writeln('========================');
     write(' Nama                      : '); readln(recPgw.nama);
     write(' Alamat                    : '); readln(recPgw.alamat);
     write(' Agama                     : '); readln(recPgw.agama);
     write(' Jenis_Kelamin             : '); readln(recPgw.jenis_kelamin);
     write(' Nip                       : '); readln(recPgw.nip);
     write(' Golongan                  : '); readln(recPgw.golongan);
     write(' Jabatan                   : '); readln(recPgw.jabatan);

     clrscr;
     writeln('^_^ DATA KEPEGAWAIAN YANG ANDA INPUTKAN ^_^');
     writeln('===========================================');
     writeln(' Nama                      : ', recPgw.nama);
     writeln(' Alamat                    : ', recPgw.alamat);
     writeln(' Agama                     : ', recPgw.agama);
     writeln(' Jenis_Kelamin             : ', recPgw.jenis_kelamin);
     writeln(' Nip                       : ', recPgw.nip);
     writeln(' Golongan                  : ', recPgw.golongan);
     writeln(' Jabatan                   : ', recPgw.jabatan);

     readln;
end.

ALGORITMA
a.                  Mulai/star
b.                 Type type pegawai = record
Nama , Alamat, Agama, Jenis_Kelamin, Nip, Golongan, Jabatan : string.
c.                  Var nama,alamat,agama,jenis kelamin,nip,golongan,jabatan
d.                 Input:  nama, alamat, agama, jenis kelamin, nip, golongan, jabatan
e.                  Print / Cetak  nama, alamat agama, jenis kelamin, nip, golongan, jabatan
f.                  Selesai.


      3.            Buatlah sebuah program penggabungan array dan record beserta algoritmanya !

Program contoh_record_array;
uses wincrt;
type tb_brg=record
kb:string;
nb:string;
hb:string;
end;
var
brg:array[1..10] of tb_brg;
a,b,ke:integer;
tukar:tb_brg;
pilih:char;
posisi:array[1..10] of integer;

begin
pilih:='y';
while ((pilih='y') or (pilih='Y')) do
begin
ke:=ke+1;
writeln;
writeln('  Masukan Jenis Barang ke ',ke,' :   ');
writeln('===============================');
write('Masukan Kode Barang  : ');readln(brg[ke].kb);
write('Masukan Nama Barang  : ');readln(brg[ke].nb);
write('Masukan Harga Barang : ');readln(brg[ke].hb);
writeln('===============================');
write('Tambah Barang yang Lain ? y/t: ');readln(pilih);
end;
     clrscr;
     for a:=1 to ke do
     begin
     writeln;
     writeln('               Tabel Barang                 ');
     writeln('--------------------------------------------');
     writeln('no    |   Kode   |   Barang   |    Harga   |');
     writeln('========================================');
     for a:=1 to ke do
     writeln(a:6,'|',brg[a].kb:10,'|',brg[a].nb:12,'|',brg[a].hb:12,'|');
     writeln('--------------------------------------------');
     writeln;

     end;
     end.

v  ALGORITMA

a.       Mulai/start
b.      type tb_brg=record, kb, nb,hb:string;
c.       var barang,a,b,ke,tukar,pilih,posisi.
d.      input masukkan kode,nama barang, harga barang,pilih
e.       Print / cetak kode,nama barang, harga barang (ke :=ke +1).
f.       for a:=1 to ke do
g.      Print pemilihan ß pilih= ‘y’ atau pilih =’t’
h.      End / selesai.

      4.            Jelaskan materi array dan record.
v  ARRAY

Array adalah suatu alokasi beberapa tempat di memori yang tersimpan secara berurutan yang digunakan untuk menyimpan beberapa nilai dengan tipe data yang homogen. Ukuran atau jumlah elemen maksimum array telah diketahui dari awal yaitu ketika array dibuat. Sekali ukuran array ditentukan maka tidak dapat diubah. Ukuran array adalah bilangan bulat positif. Array harus diberi nama sebagai identifikasi. Cara mengaksesnya adalah dengan menyebutkan nama array dan indeksnya. Indeks array dimulai dari 0 sampai dengan n-1 (n adalah ukuran array).
Operasi terhadap elemen array dilakukan dengan pengaksesan langsung. Artinya nilai di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi posisi lain. Dua operasi paling dasar terhadap satu elemen array adalah penyimpanan nilai elemen ke posisi tertentu di array dan pengambilan nilai elemen dari posisi tertentu di array. Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array. Contohnya
· NilaiMhs[7] =80, berarti menyimpan nilai 80 ke posisi ke-7 dari array NilaiMhs.
· Nama = Mahasiswa[20], berarti mengambil nilai elemen posisi ke-20 dari array Mahasiswa dan menyimpan nilai tersebut ke variabel yang bernama “Nama”.

Keunggulan array adalah sebagai berikut :
      1.            Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.
      2.            Jika telah berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen elemen tetangga, baik elemen pendahulu atau elemen penerus.

Kelemahan array adalah sebagai berikut :

      1.            Array mempunyai fleksibilitas rendah, karena array mempunyai batasan harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain.
      2.            Kebanyakan bahasa pemrograman mengimplementasikan array dengan ukuran statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis ini bersifat tidak efisien dalam penggunaan memori.

v  RECORD
Tipe data record merupakan tipe data terstruktur. Dalam penggunakan tipe data record dapat dikumpulkan beberapa item data yang masing- masing mempunyai tipe data berbeda- beda. Record dapat berisi beberapa field untuk sebuah subyek tertentu.