Pertemuan Enam Dan Tujuh [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

KONSEP ARRAY



Elin Haerani, ST, M.Kom



Array (Larik) 











Array yaitu yang berbaris-baris atau berderetderet. Dalam pemrograman : deretan data yang mempunyai jenis atau tipe data yang sama. Nama Array mewakili deret data dia miliki. 



Contoh: A:array[1..5] of integer 



A adalah nama array



Definisi Array 







Adalah sebuah peubah (variabel) yang mempunyai struktur data yang dapat menyimpan lebih dari satu nilai yang sejenis (tipe data yang sama), setiap elemen diacu melalui indeksnya. Elemen array tersusun di memori secara berurutan (sekuensial), oleh sebab itu indeks array(larik) haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter.



Elemen Array I n d e k s



A



I n d e k s



A



1 2



1 2



158



3



3



162



4



4



170



5



5



163



Elemen Array kosong A[1], A[2], A[3], A[4], A[5]



157



Elemen Array yg sudah disi nilai



Variabel array vs variabel biasa Variabel array



Variabel biasa



Dapat menyimpan lebih dari satu nilai yg sejenis



Hanya dapat menyimpan satu nilai walaupun sejenis



Contoh: Deklarasi: A:array[1..5] of integer



Contoh : Deklarasi: A1 : integer A2 : integer A3 : integer A4 : integer A5 : integer



Deklarasi Array  







Sesuatu yang akan digunakan/dipakai dalam suatu program terlebih harus dideklarasikan Array (Larik) adalah struktur(susunan) data yg statis, artinya elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen larik tidak dapat diubah (ditambah/dikurangi) selama pelaksanaan program (program running). Mendeklarasikan larik di dalam bagian deklarasi berarti :  



mendefinisikan banyaknya elemen larik (memesan tempat di memori) mendefinisikan tipe elemen larik (menetapkan tipe nilai yg dapat disimpan oleh larik (array).--> tipe data dapat berupa : tipe dasar/sederhana (integer, real, char, string, Boolean), tipe bentukan (tipe terstruktur :record)



Deklarasi Array -next 







Array dari tipe data dasar : DEKLARASI : A : array[1.50] of integer NamaMhs : array[1..10] of string NilaiUjian : array[1..75} of real Sebagai tipe bentukan : membuat/medefinisikan tipe dasar dengan nama sebuah tipe baru DEKLARASI : Type LarikInt : array[1..100] of integer { nama tipe baru} A:LarikInt {A adalah sebuah variable (peubah) array dg 100 elemen dan bertipe integer}



Deklarasi Array -next 



Sebagai sebuah konstanta : Mendefinisikan ukuran array (larik) sebagai sebuah konstanta DEKLARASI: Const max= 10 N: array[1..max] of real I: integer



ALGORITMA : For i:=1 to max do read(n[i]) Endfor



Deklarasi Array -next 



Sebagai tipe bentukan terstruktur (RECORD) : Tipe yang berbentuk rekaman (record), rekaman disusun oleh satu atau lebih field. Setiap field menyimpan data dari tipe dasar tertentu. DEKLARASI : 



Const NMaks = 100 Type Mahasiswa : record< NIM : integer NAMA : String IPK : real > Type tabmhs : array[1..maks] of mahasiswa Mhs : TabMhs



Penulisan elemen mhs : Mhs[2] {elemen kedua dari array mhs} Mhs[2].NIM {mengacu field NIM dari elemen kedua dari array Mhs} Mhs[2].IPK {mengacu field IPK dari elemen kedua dari array Mhs} Pengsian Nilai per field : Mhs[i].NIM  102131002 Mhs{i].NAMA  ‘BUDI UTOMO’ Mhs[i].IPK  3.6 Menampilkan hasil per field : Output([Mhs[i].NIM, Mhs[i].NAMA, Mhs[i].IPK)



Acuan Elemen Array(Larik) 



Elemen Array diacu melalui indeksnya, Nilai Indeks harus terdefinisi. 



 







A[4]  mengacu elemen ke 4 dari larik A NamaMhs[2]  mengacu elemen ke 2 dari larik namaMhs A[i]  mencau elemen ke-I dari larik A, asalkan nilai I sudah terdefinisi.



Memanipulasi elemen array (larik) :   



A[4]  10 NamaMhs[i]  ‘Achmad’ Read(A[i]) If A[i] < 10 then A[i]  A[i] + 10 Else .……



Pemrosesan Array (Larik)  



Elemen array diproses secara beruntun melalu indeks yang terurut mulai dari elemen pertama sampai elemen terakhir. Skema umum pemrosesan array: PROGRAM ProsesArray DEKLARASI: Const max= 10 Type LarikInt : array[1..max] of integer



A : LarikInt I: integer



{indeks Array}



ALGORITMA : For i:=1 to max do pemrosesan terhadap A[i]) Endfor 



Pemrosesan  pengisian nilai, pembacaan, penulisan, komputasi, dan manipulasi lainnya.



Pengisian Elemen Array (Larik) : 



Secara Lansung : 



Contoh  A[i]  10  Inisialisasi : For I  1 to n do A[i]  I Endfor







Dengan pembacaan (dari keyboard) : 



Contoh : For I  1 to n do read(A[i]) Endfor



Ukuran efektif Array (Larik) 











Jumlah elemen larik sudah ditentukan (statis), tapi belum tentu semua digunakan/dipakai Jumlah elemen yang dipakai itulah yang disebut dengan ukuran/jumlah efektif array. Ukuran efektif dapat dicatat di dalam peubah (variabel) tertentu, misalnya n.



tiga cara untuk menentukan jumlah elemen efektif dari array(Larik) : 1.



2.



3.



Jika Jumlah elemen efektif ditentukan di awal Jika Jumkah elemen efektif diketahui di akhir pembacaan Jika Jumlah elemen efektif baru diketahui di akhir pembacaan (variasi dari versi 2)



Jumlah elemen efektif ditentukan di awal Procedure BacaLarik(Output A : LarikInt, input n : integer) {Mengisi elemen-elemen larik A[1..n] dengan pembacaan} {K. Awal : n adalah jumlah elemen efektif larik, nilainya terdefinisi} { K. Akhir : setelah pembacaan, seluruh elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan (keyboard)}



DEKLARASI i : integer {pencatat indeks larik } ALGORITMA for i  1 to n do read(A[i]) endfor



Jumlah elemen efektif diketahui di akhir pembacaan 



Setiap kali selesai pembacaan satu buah elemen, akan dilakukan konfirmasi apakah masih ada lagi elemen larik yang akan dimasukkan, seperti statement di bawah ini :



Write(‘Lagi? (y/t)’) JIka jawabnya ‘y’ maka pembacaan dilanjutkan, jika ‘t’ maka proses pembacaan dihentikan. Jumlah elemen yang dibaca di catat di dalam suatu variabel (peubah) Procedure BacaLarik2(Output A: Larikint, Output n: integer) {K. Awal : sembarang} {K. Akhir : sebanyak n buah elemen larik A berisi nilai-nilai yang dibaca; n berisi jumlah elemen larik yang diisi} DEKLARASI Jawab : char ALGORITMA N0 Repeat nn+1



Read(A[n]) Write(‘Lagi? (y/t)’) Read(jawab) Until jawab = ‘t’



Jumlah elemen efektif baru diketahui di akhir pembacaan (variasi dari versi 2) 



Proses pembacaan dianggap selesai jika nilai yang dibaca adalah suatu tanda, misalnya 9999.



Procedure BacaLarik3(output A, LArikint, output n : integr) {mengisi elemen-elemen larik A[1..n] dg cara pembacaan. Akhir pembacaan ditandai jika nilai yang dibaca adalah 9999} {K.Awal : sembarang } K. Akhit : sebanyak n buah elemen larik A berisi nilai-nilai yang dibaca; n berisi jumlah larik yang diisi.}



DEKLARASI x : integer {menyimpan sementara nilai yang di baca} ALGORITMA n0 read(x) while x  9999 do n  n +1 A[n]  x read(x) endwhile {x = 9999}



Menghitung Nilai Rata-rata 



Data yang sudah disimpan di dalam Larik, selanjutnya data tersebut dapat dimanipulasi



Procedure hitungRataRata(input A:Larikint, input n:integer) DEKLARASI I : integer Jumlah : real ALGORITMA I  1 {dimulai dari elemen pertama} Jumlah  0 {jumlah total nilai mula mula} For i  1 to n do jumlah  jumlah + A[i] Endfor U  jumlah/n



Notasi Algoritma – hitung rata rata PROGRAM Rerata DEKLARASI const NMaks = 100 type LarikInt : array[1..NMaks] of integer A : LArikInt n : integer u : integer { nilai rata-rata } procedure BacaLarik1(output A : Larikint, input n :integer) { mengisi elemen larik A[1..n] dengan pembacaan }



procedure HitungRataRata(input A : LArikint, input n : integer. Output u : real) {menghitung nilai rata-rata larik A}



ALGORITMA read(n) {tentukan jumlah elemen larik yang akan digunakan } BacaLarik1(A, n) HitungRataRata(A, n, u) write(u)



Kapan menggunakan Larik (array): 











Untuk menyimpan sejumlah data yang bertipe sama. Untuk menghindari penggunaan nama-nama peubah(variabel) yang banyak. Agar penulisan program lebih efisien dalam penulisan kode programnya.



latihan 







Buatlah algoritma untuk menghitung nilai-nilai rata-rata dari data yang tersimpan pada elemen array(larik) yang bertipe integer. Konversikan algoritma tersebut ke dalam bahasa java.



ARRAY KONSTAN :   



  



Nilai yang terkandung di dalam sebuah array dapat bernilai konstan, artinya nilai-nilai tersebut tidak dapat diubah. mendeklarasikan array bersangkutan dengan kata kunci CONST. Bentuk umumnya adalah sbb: Const NamaArray : array[IndekAwal..IndekAkhir] of tipe_data = (nilai1, nilai2, ...);



Bentuk umum array konstan Const NamaArray : array[IndekAwal..IndekAkhir] of tipe_data = (nilai1, nilai2, ...) Contoh : Const



A: array[1..5] of char = (‘A’, ‘B’, ‘C’, ‘D’, ‘E’)’



Array A di atas bersifat konstan, maka nilai yang ada tidak digantikan dengan nilai lainnya. Contoh : A[1]  ‘V’ { SALAH, Karena elemen A[1] selalu bernilai ‘A’} A[2]  ‘W’ {SALAH, Karena elemen A[2] selalu bernilai ‘B’} A[3]  ‘X’ { SALAH, Karena elemen A[3] selalu bernilai ‘C’} A[4]  ‘Y’ {SALAH, Karena elemen A[4] selalu bernilai ‘D’} A[5]  ‘Z’ { SALAH, Karena elemen A[5] selalu bernilai ‘E’}



Algoritma penggunaan Array konstan Program ArrayKonstan DEKLARASI : Const BULAN : array[1..12] of string = (‘Januari’, ‘Februari’, ‘Maret’, ‘April’, ‘Mei’, ‘Juni’, ‘Juli’, ‘Agustus’, ‘September’, ‘Oktober’, ‘Nopember’, ‘Desember’) noBulan : integer; ALGORITMA : read(noBulan) write(BULAN[noBulan]);



MENCARI NILAI MAKSIMUM ARRAY : Nilai maksimum pada sebuah variabel Array adalah elemen array yang mempunyai nilai terbesar diantara elemen array lainnya. A



158



1



157



162



2



169



3



172



4



155



5



170



6



163



7



8 Nilai maksimum adalah : 172 ada pada elemen A[5] Kalau elemen larik sudah terurut baik secara ascending maupun descending, maka nilai maksimum langsung bisa diperoleh : Ascending  pada elemen terakhir, Descending  pada elemen pertama Permasalahan muncul bila nilai elemen array tesusun secara acak, maka untuk mencari nilai maksimumnya harus mengunjungi seluruh elemen array.



Tiga versi algoritma untuk mencari nilai maksimum Cara 1 : 1. Mengasumsikan nilai maksimum sementara (maks) adalah yang sangat kecil (misal: -9999). 2. Selanjutnya array dikunjungi mulai dari elemen pertama, 3. setiap kali mengunjungi elemen array, bandingkan elemen tersebut dengan nilai maksimum sementara. 4. Jika elemen array yang sedang dintinjau lebih besar dari nilai maksimum sementara, maka (maks) diganti dengan elemen tersebut. 5. pada akhir kunjungan (setelah seluruh elemen array dikunjungi), nilai maksimum semntara menjadi nilai maksimum sebenarnya.



Ilustrasi untuk maks : -999 A `



158



157



162



1



2



3



169



172



4



155



5



6



170



163



7



8



Asumsi : maks = -9999 (nilai maksimum sementara) A[1] > maks? Ya A[2] >maks? Tidak A[3] > maks? Ya A[4] > maks? Ya A[5] >maks? Ya A[6] > maks? tidak A[7] > maks? tidak A[8] >maks? Tidak



       



maks  A[1] (maks=158) maks tidak berubah maks  A[3] (maks=162) maks  A[4] (maks=169) maks  A[5] (maks=172) maks tidak berubah maks tidak berubah maks tidak berubah



(proses pembandingan selesai) Didapat : maks = 172 (nilai maksimum array yang ditemukan)



Algoritma untuk maks = -999 Program NilaiMaksimum DEKLARASI : Const N = 8 A : array[1..N] of integer = (158, 157, 162, 169, 172, 155, 170, 163) I, maks : integer ALGORITMA : Maks  -9999 {nilai maksimum sementara} For i  1 to N do If A[i] > maks then Maks A[i] endif endfor Write(maks)



Cara 2: Mencari nilai Maksimal 1. Nilai maksimum sementara diinisialisasikan dengan elemen pertama array. 2. selanjutnya, arrray dikunjungi mulai dari elemen kedua 3. setiap kali mengunjungi elemen array, bandingkan elemen tersebut dengan nilai maksimum sementara. 4. jika elemen array yang sedang dintinjau lebih besar dari nilai maksimum sementara, maka (maks) diganti dengan elemen tersebut. 5. pada akhir kunjungan (setelah seluruh elemen array dikunjungi), nilai maksimum sementara menjadi nilai maksimum sebenarnya.



Ilustrasi untuk maks : elemen pertama A `



158



157



162



1



2



3



169



172



4



155



5



6



170



163



7



8



Asumsi : maks = A[1] (nilai maksimum sementara, maks=158) A[2] >maks? Tidak A[3] > maks? Ya A[4] > maks? Ya A[5] >maks? Ya A[6] > maks? tidak A[7] > maks? tidak A[8] >maks? Tidak



      



maks tidak berubah maks  A[3] (maks=162) maks  A[4] (maks=169) maks  A[5] (maks=172) maks tidak berubah maks tidak berubah maks tidak berubah



(proses pembandingan selesai) Didapat : maks = 172 (nilai maksimum array yang ditemukan)



Algoritma untuk maks = Elemen pertama Program NilaiMaksumum DEKLARASI : Const N = 8 A : array[1..N] of integer = (158, 157, 162, 169, 172, 155, 170, 163) I, maks : integer ALGORITMA : Maks  A[1] {nilai maksimum sementara} For i  2 to N do If A[i] > maks then Maks A[i] endif endfor Write(maks)



Cara 3: Mencari nilai Maksimal 



Mencari nilai maksimal berdasarkan nomor indeks array.



Algoritma : idxMaks  1 for I  2 to n do if A[i] > A[idxMaks] then idxMak  I endif endfor



Mencari Nilai Minimum Array (Larik) 







Mencari elemen larik yang mempunyai nilai terkecil di antara elemen larik lainnya. Konsepnya sama dengan Mencari nilai maksimum array



Latihan 







Buatlah algoritma untuk mencari nilai terbesar dari data yang sudah tersimpan pada elemen array, dimana nilai yang tersimpan pada elemen array tersebut di baca dari inputan eksternal (keyboard). Konversikan algoritma di atas ke dalam Bahasa Java



Menyalin Larik (Array) A `



158



1



157



2



162



3



169



172



4



5



155



6



170



7



163



8



B ` 1



2



3



4



5



6



7



8



Algoritma Menyalin Larik Program Salin DEKLARASI: Const maks=100 A:array[1..maks] of integer B:array[1..maks] of integer I,n : integer ALGORITMA: Read(n) {menentukan jumlah elemen yang akan digunakan} {membaca nilai dari inputan eksternal (keyboard)} For I  1 to n do read(A[i]) Endfor {menyalin Larik A ke Larik B} for I  1 to n do B[i]  A[i] endfor



{Menampilkan nilai elemen array B setelah dilakukan penaylinan dari elemen array A} For I  1 to n do write(B[i]) endfor



Menguji kesamaan dua buah Larik 











Dilakukan dengan membandingkan setiap elemen yang berpadanan pada ke dua larik tersebut Jika ditemukan satu saja elemen yang tidak sama, maka dapat dipastikan dua buah larik tersebut tidak sama. Apabila semua elemen dari larik itu sama, maka dapat dikatakan dua buah larik itu sama.



Menguji kesamaan dua buah Larik - next



A `



B `



123



130



140



1



2



3



123



1



130



2



140



3



160



4



160



4



180



5



180



5



Algoritma menguji kesamaan larik Program uji DEKLARASI Const maks=5 A:array[1..maks] of integer=(123,130,140,160,180) B:array[1..maks] of integer=(123,130,140,160,180) I : integer Sama : boolean ALGORITMA: I 1 Sama  true While (I ≤ maks) and (sama) do if A[i] = B[i] then I  I + 1 {tinjau elemen berikutnya} else sama false endif Endwhile { I > maks or sama=false } {tampilkan hasil} If sama  true then write(‘dua larik sama’) Else write(‘dua larik berbeda’) endif



ARRAY DUA DIMENSI (MATRIKS)



Pengertian array dua dimensi : 







Array dua dimensi dapat dipandang sebagai gabungan array satu dimensi. Ilustrasi :Pandanglah tiga buah array satu dimensi yang dibuat dengan: A1[4], A2[4], A3[4] : dengan tipe data yang sama



ARRAY DUA DIMENSI (MATRIKS)-next 



Ketiga buah array satu dimensi di atas, dapat digabung menjadi satu, sehingga terbentuk sebuah array yang disebut array dua dimensi, yang dapat diilustrasikan sebagai berikut :







Dari ilustrasi diatas, terlihat array tersebut terdiri dari 3 baris, dan 4 kolom, dan jumlah elemennya = 3 x 4 = 12 elemen, karena terdiri dari baris (row) dan kolom (column) maka arrray dua dimensi sering disebut MATRIX. Karena sudah menjadi satu buah array, maka nama array hanya satu buah, Misalnya A[3] [4] yang maksudnya adalah terdiri barisnya ada 3, dan kolomnya ada 4.







Bentuk Umum Array Dua Dimensi



Array konstan untuk array dua dimensi (matriks)



Cotoh:  Array Dua Dimensi dengan matriks : 3 x 5, dengan tipe data integer dan char :



Mengisi Elemen Array Dua Dimensi (MATRIKS) Diketahui array dua dimensi : A : array[1..3, 1..4] of integer







Untuk keperluan praktis dan keragaman, indeks untuk baris dan kolom menggunakan variabel.







Misal : i untuk baris dan J untuk kolom







Algoritmanya : I 2 J3 A[i, j]  17



Isi Elemen Matriks per baris atau per kolom



Pengisian semua elemen Matriks



secara baris perbaris :



Algoritmanya : N 1 I1 While (i