• Tidak ada hasil yang ditemukan

Jenis Dan JENIS Dan ARRY

N/A
N/A
Protected

Academic year: 2018

Membagikan "Jenis Dan JENIS Dan ARRY"

Copied!
18
0
0

Teks penuh

(1)

Jenis-Jenis Array

OLEH:

I PUTU ARY PRADNYA PUTRA NIM: 14102202

PROGRAM STUDI SISTEM KOMPUTER

STMIK STIKOM INDONESIA

DENPASAR

(2)

Kata pengantar

Dengan mengucapkan puji syukur kepada Tuhan Yang Maha Esa yang telah melimpahkan segala rahmat dan karunia-Nya, sehingga dapat mengerjakan makalah ini dengan baik dan lancar. Saya berharap makalah ini dapat memberikan motivasi kepada para pembaca untuk lebih giat mempelajarinya.

Saya juga meminta maaf yang sebesar-besarnya apabila ada kekurangan, kesalahan bahkan kata-kata yang tidak berkenan di hati dan disisi lain saya sangat mengharapkan ada masukan baik kritik maupun saran dari saudara. Sehingga penyusun dapat memperbaiki apa yang jadi kekurangan kami karena tidak ada manusia yang sempurna kecuali Tuhan Yang Maha Esa. Akhir kata saya mengharapkan makalah ini banyak manfaatnya bagi saya sendiri khususnya maupun semua pihak pada umumnya.

Batubulan, Oktober 2015

(3)

BAB: I Pendahuluan

1.1 LATAR BELAKANG

Dengan adanya kemajuan Tekhnologi di dunia ini akal pikiran manusia semakin mahir dalam menciptakan sesuatu yang bermanfaat bagi kehidupan mereka, salah satunya dalam pembuatan program – program yang sangat membantu mereka dalam menyelesaikan pekerjaan mereka dengan cepat, baik dan memuaskan.Maka dari itu penulis menyusun makalah mengenai array, queue, record dan stack merupakan salah satu bagian dari

kemajuan zaman yang betul betul terlihat manfaatnya. Array bisa juga disebut sebagai salah satu program yang terlahir dari dunia tekhnologi lewat pola pikir manusia yang bermanfaat untuk menyelesaikan suatu penghitungan.

1.2 MAKSUD DAN TUJUAN

Maksud dan tujuan penulis dalam penyusunan makalah ini sebagi penambah informasi bagi penulis yang di outputkan lewat tulisan yang terdapat pada makalah ini dan berharap penulis memberikan informasi dipenyusunan makalah ini yang isinya tentang array yang sangat jelas bagi pembaca. Dengan mengetahui tentang array maka penulis maupun pembaca dapat menambah pengetahuan ilmu yang menyangkut dalam dunia tekhnologi pemograman.

1.3 RUMUSAN MASALAH

Sesuai dengan mata kuliah ini “ Struktur Data ” untuk menambah ilmu pengetahuan mahasiswa. Rumusan masalah dari materi Array ini sebagai berikut :

1. Apa saja yang termasuk Materi dalam mata kuliah Array? 2. Bagaimana penjelasan tentang materi Array ?

3. Apa saja jenis-jenis Array?

4. Bagaimana bahasa penulisan Array di pemograman?

1.4 METODE PENULISAN

(4)

BAB : II Pembahasan

2.1 PENGERTIAN ARRAY

Array atau larik di definisikan sebagai pemesanan alokasi memory berurutan.definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian. Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.

2.2 KARAKTERISTIK ARRAY

· Mempunyai batasan dari pemesanan alokasi memori (bersifat statis). · Mempunyai tipe data sama (bersifat homogen).

· Dapat diakses secara acak.

2.2.1 DEKLARASI ARRAY

Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu : · Type data array

· Nama variable array · Subkrip / index array.

Contoh deklarasi dari array adalah sebagai berikut :

int A[5] ; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer.

2.2.2 JENIS ARRAY

ARRAY DIMENSI SATU

Deklarasi : Type_Data Nama_Variabel [index]

(5)

(Index Array) i = 1

Ket:

· = Perkalian dari index sebelumnya (untuk array dua dan tiga dimensi). Pemetaan (mapping) array dimensi satu ke storage

Rumus : @A[i] = B + (i – 1) * L

Dimana : @A[i] : Posisi array yang dicari B : Posisi awal index di memori computer i : Subkrip atau index array yang di cari L : Ukuran atau besar memori suatu tipe data

ARRAY DIMENSI DUA

Deklarasi : Type_Data Nama_Variabel [index1] [index2] Menentukan jumlah elemen dalam array dimensi dua :

n

(Index Array) i = 1

Ket:

· = Perkalian dari statemen sebelumnya

Pemetaan (mapping) array dimensi dua ke storage terbagi dua cara pandang (representasi) yang berbeda yaitu :

1) Secara kolom per kolom (coloumn major order / CMO) @M[i][j] = M[0][0] + {(j – 1) * K + (i – 1)} * L 2) Secara baris per baris (row major order / RMO)

@M[i][j] = M[0][0] + {(i – 1) * N + (j – 1)} * L

Keterangan :

@M[i][j] = Posisi array yang di cari, M[0][0 = Posisi alamat awal index array, i = Baris, j = Kolom, L = Ukuran memory type data, K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris.

(6)

Adalah suatu array yang setiap elemennya merupakan tipe data array juga yang merupakan array dimensi dua.

Contoh :

Penyajian data mengenai banyaknya mahasiswa dari 20 perguruan tinggi di Jakarta, berdasarkan tingkat (1 sampai 5), dan jenis kelamin (pria atau wanita). Misalkan array tersebut dinamakan MHS. Ambil subskrip pertama, tingkat = 1, 2, ..., 5; subskrip kedua, jenis kelamin (pria = 1, wanita = 2), dan subskrip ketiga, perguruan tinggi adalah K = 1, 2, ..., 20. Jadi MHS(4,2,17) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi 17.

ARRAY DIMENSI BANYAK

ARRAY atau Larik dapat juga berdimensi lebih dari satu yang disebut dengan larik dimensi banyak, yang dapat berdimensi dua, dimensi tiga dan seterusnya.

Larik dimensi 2 mewakili suatu bentuk table atau matrik, yaitu index yang pertama dapat menunjukkan baris dan index kedua dapat menunjukkan kolom dari table atau metric.

Bentuk Umum :

Nama_larik = array [tipe index1] of array [tipe index2] of tipe larik Atau

Nama_larik = array [tipe index1, tipe index2] of tipe larik

2.3 PENGURUTAN ARRAY

Pengurutan atau sorting adalah proses yang paling sering di lakukan dalam pengolahan data.pengurutan di bedakan menjadi dua, yaitu :

a. Pengurutan internal

Pengurutan dilakukan terhadap sekumpulan data di media memory internal komputer dimana data dapat di akses elemennya secara langsung.

b. Pengurutan eksternal

Pengurutan data di memory sekunder. Biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori utama.

(7)

A. 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 berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen tetangga, baik elemen pendahulu atau elemen penerus

3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga,maka penggunaan penyimpanannya sangat efisien.

B. Kelemahan array adalah sebagai berikut :

Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array mempunyai batasan sebagai berikut :

1. Array 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 statik yang sulit diubah ukurannya di waktu eksekusi.

Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis : · Tidak efisien dalam penggunaan memori.

· Menyiakan banyak waktu komputasi.

· Pada suatu aplikasi, representasi statis tidak dimungkinkan.

2.5 ARRAY DALAM BEBERAPA BAHASA PEMOGRAMAN

Bahasa Pascal

Larik dalam bahasa Pascal dapat didefinisikan dengan indeks awal dan indeks akhirnya.

Contoh:

program larik;

var arr: array[1..10] of integer; //larik dengan indeks awal 1 dan indeks akhir 10 begin

arr[1] := 5; //memasukkan nilai ke indeks 1 writeln(arr[i]); //mencetak angka 5

(8)

Bahasa C

Larik dalam bahasa C selalu dimulai dari indeks 0. Larik dapat didefinisikan secara statik atau dinamik. Jika didefinisikan statik, ukuran larik akan tetap dari awal program hingga akhir program. Jika didefinisikan dinamik, ukuran larik dapat berubah selama program berjalan karena memesan tempat pada memori heap. Proses pemesanan tempat pada memori disebut dengan alokasi. Sedangkan proses pembebasan memori yang sudah dipesan disebut dengan dealokasi.

Contoh larik statik:

#include <stdio.h> int main(){

int arr[10]; //indeks awal 0 dan indeks akhir 9 arr[0] = 5;

arr = (int *) malloc(10 * sizeof(int)); //memesan 10 tempat pada memori arr[0] = 5;

free(arr); //menghancurkan larik. Memori pada heap dibebaskan

arr = (int *) malloc(5 * sizeof(int)); //memesan 5 tempat baru pada memori

free(arr); //di akhir program jangan lupa untuk menghancurkan larik dinamik

}

Bahasa Java

Dalam bahasa Java tipe data larik direpresentasikan sebagai sebuah objek khusus. Karena itu pada bahasa Java larik yang dibuat selalu bersifat dinamik. Namun walaupun bersifat dinamik, larik pada bahasa Java tidak perlu dihancurkan karena proes penghancuran dilakukan secara otomatis melalui suatu prosedur yang disebut dengan Pengumpulan

sampah (Inggris: Garbage Collecting).

Sama seperti bahasa C, indeks larik selalu dimulai dari 0.

(9)

public class larik {

public static void main(String args[]) { int[] arr = new arr[10];

Sama seperti di JAVA larik di PHP juga merupakan sebuah object lebih tepatnya lagi map terorder. Ada dua tipe larik di PHP, indexed array (simple array) dan associated array (key=>value array). Di PHP, element larik bisa berupa string, Bilangan, boolean, dan semua tipe data primitive lainnya, termasuk larik juga bisa menjadi element larik lainnya.

Cara medefinisikan larik:

#mendefinisikan array kosong $larik = array();

Contoh indexed array (simple array):

$jam = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);

$hari = array('senin', 'selasa', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu');

Contoh associated array:

$bulan = array('1'=>'January', '2'=>'February', '3'=>'Maret', '4'=>'April');

$komponenKalender = array(

'bulan'=> array(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 , 11, 12),

'hari' => array('senin', 'selasa', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu') );

(10)

//deklarasi

int matrixa[3][3],matrixb[3][3],matrixc[3][3]; int i,j;

char opr;

//input nilai matriks ke-1 dari baris dan kolom for(i=1;i<=2;i++){

for(j=1;j<=2;j++){

cout<<"Masukkan matriks(1) nilai baris ke-"<<i<<" kolom ke-"<<j<<" : ";cin>>matrixa[i][j];

//input nilai matriks ke-2 dari baris dan kolom for(i=1;i<=2;i++){

for(j=1;j<=2;j++){

(11)

}

cout<<endl; }

//Input Operator

cout<<"Pilih Operator +,- :";cin>>opr; //switching operator

for(i=1;i<=2;i++){ for(j=1;j<=2;j++){ switch(opr){

case '+' : matrixc[i][j] = matrixa[i][j] + matrixb[i][j]; break;

case '-' : matrixc[i][j] = matrixa[i][j] - matrixb[i][j]; break;

default:

cout<<"keyword yang anda masukkan salah/tidak terdaftar"; }

//Output Hasil matriks dari Operator cout<<matrixc[i][j]<<"\t";

}

cout<<endl; }

getch(); return 0;

#include <iostream.h>

#include <conio.h>

main (){

int matrikA[2][3],matrikB[3][3],has[2][3];

int i,j;

(12)

cout<<"\nMasukkan matrik A\n";

cout<<"=====================================\n";

for(i=0;i<2;i++){

for(j=0;j<3;j++){

cout<<"Input baris "<<i+1<<" kolom "<<j+1<<" : ";

cin>>matrikA[i][j];

}

cout<<endl;

}

for(i=0;i<2;i++){

for(j=0;j<3;j++){

cout<<matrikA[i][j]<<"\t";

}

cout<<endl;}

cout<<"\nMasukkan matrik B\n";

cout<<"=====================================\n";

for(i=0;i<3;i++){

for(j=0;j<3;j++){

cout<<"Input baris "<<i+1<<" kolom "<<j+1<<" : ";

cin>>matrikB[i][j];

}

cout<<endl;

(13)

cout<<endl;

for(i=0;i<3;i++){

for(j=0;j<3;j++){

cout<<matrikB[i][j]<<"\t";

}

cout<<endl;

}

for(i=0;i<2;i++)

{

for(j=0;j<3;j++)

{

has[i][j]=matrikA[i][0]*matrikB[0][j]+matrikA[i][1]*matrikB[1][j]+matrikA[i] [2]*matrikB[2][j];

}

}

cout<<endl;

cout<<"\nHasil :";

for(i=0;i<2;i++){

for(j=0;j<3;j++){

cout<<"\t\t"<<has[i][j];

}

(14)

}

getch ();}

2.7 PEMETAAN ARRAY KE STORAGE

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

(15)

elemen ARRAY(I) mempunyai address awal B + (U-L) * S

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.

Misalkan B adalah base-location dari array RATE tersebut, dan masing-masing elemen dari array berukuran S. Address awal dari elemen RATE(I,J) adalah :

B + (I-1) * 6 * S + (J-1) * S

karena ada I-1 baris, masing-masing dengan panjang 6 * S, sebelum baris elemen RATE(I,J) terletak, dan terdapat J- 1 elemen, masing-masing dengan panjang S sebelum elemen RATE(I,J) pada baris ke-I. Jadi, pada contoh di atas RATE(2,4) mempunyai address awal :

B+ (2-1) * 6 * S + (4-1) * S = B + 9 * S

Secara umum elemen ARRAY(I,J) dari array yang didefinisikan sebagai ARRAY(L1:U1, L2 : U2) mempunyai address awal :

B + (I-L1) * (U2 -L2+ 1) * S + (J-L2) * S

Terdapat 2 baris (I-L1, 0 – (-2)) sebelum baris nol, yang masing-masing panjangnya 3* S(U2-L2+1 = 6-4+1) dan terdapat 2 elemen (J-L2 = 6-4) pada baris ke nol sebelum elemen Z (0,6). Jadi address awal dari Z(0,6) adalah :

B + 2 * 3 * S + 2 * S = B + 8 * S

Alternatif lain untuk melinearkan array dimensi dua adalah dengan menyimpan

elemen dalam column major order, yakni pertama kali menyimpan kolom pertama, lalu kolom kedua, kolom ketiga dan seterusnya.

(16)

ARRAY(I,J) dari array yang didefinisikan sebagai ARRAY(L1:U1,L2 :U2), menggunakan address awal :

B + (J-L2) * (U1-L1 +1) * S + (I-L1) * S

Misalkan array A berorder 50 x 225. Hendak dihitung jumlah / total elemennya. Kalau dipergunakan column-major storage, dapat kita buat,

dalam COBOL.

Dalam Pascal dapat kita tulis : Total := 0;

for j = 1 to 225 do for i = 1 to 50 do total := total + a[I,j];

Kalau dipergunakan row-major storage, kita dapat tulis dalam COBOL sebagai berikut : COMPUTE TOTAL = 0.

dan dalam Pascal dapat ditulis total:=0;

for i := 1 to 50 do for j := 1 to 225 do total := total + a[i,j];

(17)

Struktur data merupakan salah satu bahan dasar pembuatan program. Pemakaian struktur data yang tepat di dalam proses pemrograman, akan menghasilkan algoritma yang jelas dan tepat sehingga menjadikan program secara keseluruhan lebih sederhana.

Array merupakan bagian dari struktur data yaitu termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai pemesanan alokasi memory sementara pada komputer. Apabila kita membuat program dengan data yang sudah kita ketahui batasnyamaka kita menggunakan Array (type data statis), namun apabila datanya belum kita ketahui batasnya maka gunakan pointer (type data dinamis).

3.2 KRITIK DAN SARAN

Penulis menyadari tentang penyusunan makalah, tentu masih banyak kesalahan dan kekurangannya, kerena terbatasnya pengetahuan dan kurangnya rujukan atau referensi yang ada hubungannya dengan judul makalah ini.

Penulis banyak berharap para pembaca yang budiman memberikan kritik dan saran yang membangun kepada penulis demi sempurnanya makalah ini dan dan penulisan makalah di kesempatan-kesempatan berikutnya. Semoga makalah ini berguna bagi penulis pada khususnya juga para pembaca yang budiman pada umumnya.

(18)

 http://www.w3schools.com/php/php_arrays.asp

 http://www.w3schools.com/php/php_arrays_multi.asp

 http://www.nulis-ilmu.com/2014/10/jenis-jenis-array-pada-php.html  https://id.wikipedia.org/wiki/Larik

Referensi

Dokumen terkait

Selain itu, terlihat bahwa kualitas akrual meningkat sesudah konvergensi IFRS.Hipotesis kedua yang menyatakan bahwa adanya perbedaan persistensi laba antara periode

Sebagai salah satu wujud eksistensinya sebuah organisasi jurnalistik dan intelektual, SUMA menerbitkan majalah SUARA MAHASISWA, Majalah Universitas Indonesia, yang terbit setiap

SAKSI DARI PIHAK TERKAIT: RUDI HARTONO Tahu nomor berapa pasangannya, lupa saya, Pak. HAKIM ANGGOTA: AHMAD

Hal ini didasari oleh tujuan penelitian ini yang hendak menganalisis pengaruh faktor-faktor kemampuan tenaga penjualan, kualitas hubungan bisnis dengan outlet,

Sebagai wujud implementasi amanat kebijakan peraturan perundang-undangan dan kebutuhan pembangunan untuk menuntaskan permasalahan yang dihadapai sebagai kelanjutan

Penelitian terhadap ketepatan pasien dalam penggunaan kombinasi anti tukak peptik dengan antasida yaitu ketepatan waktu pemberian obat pada pasien tukak peptik di

1) tidak bertentangan dengan materi pokok yang diatur dalam batang tubuh. 2) tidak memperluas, mempersempit atau menambah pengertian norma yang ada dalam batang tubuh. 3) tidak

Dari penelitian yang dilakukan diperoleh hasil belajar siswa yang menggunakan model pembelajaran kooperatif berbasis Multiple Intelligences masuk dalam kategori hasil belajar