BAB 8 Array-1 [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

ALGORITMA DAN PEMROGRAMAN JOBSHEET 8 : ARRAY



Mata Kuliah : Algoritma dan Pemrograman Dosen



: Mardiyono, S. Kom., M. Sc



Disusun oleh : Nama



: Fadhil Ariezky Cahyatyo



NIM



: 3.34.20.4.07



PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2020/2021



BAB VIII LARIK (ARRAY)



8.1 Tujuan Instruksional Khusus (TIK)



Setelah Menyelesaikan bab ini mahasiswa dapat : 1) Menjelaskan tentang pengertian larik ( array ) dan cara pendefinisiannya. 2) Mendeklarasikan dan mengakses elemen larik, 3) Membuat program yang melibatkan permasalahan-permasalahan yang membutuhkan penanganan tipe data menggunakan larik. 8.2 Pendahuluan Sebuah peubah hanya mampu menyimpan satu nilai terakhir yang dimasukkan dalam peubah tersebut, suatu misal kita memasukkan nilai ke dalam suatu peubah sepeluh kali maka hanya nilai ke sepuluh saja yang tersimpan dalam peubah sedang data yang dimasukkan sebelumnya tertumbuk (over) dengan nilai selanjutnya. Untuk lebih jelasnya perhatikan contoh berikut ini : For cacah  1 to 10 Read(data) Endfor



Potongan algoritma di atas dapat dilihat bahwa pengulangan pemasukan data ke peubah data terjadi sepuluh kali, akan tetapi hanya nilai yang terakhir saja yang tersimpan. Dalam kenyataannya kadang kita harus memanipulasi beberapa atau sekumpulan data dengan tipe yang sama, misalnya hasil ujian 100 mahasiswa, data daftar barang di toko atau supermarket, daftar nama pegawai dan lain sebagainya. Dalam kegiatan pemrograman, sekumpulan data bertipe sama perlu disimpan sementara dalam memori komputer bila sewaktu-waktu data tersebut akan dimanipulasi. Misalnya kita ingin menghitung kumpulan data bilangan guna mencari nilai rata-ratanya dengan rumus : rata  rata 



(a1  a 2  ......  a n ) n   a1 n 1



Tipe Data Array



79



Bila kumpulan data tersebut disimpan dalam memori secara berurutan maka dalam mengaksesnya diacu melalui nomor indeks datanya. Indeks menyatakan posisi data relatif di dalam kumpulannya. Struktur penyimpanan data yang demikian dinamakan dengan larik (array). 8.3 Larik Dalam beberapa literatur, array sering disebut atau diterjemahkan sebagai larik. Array merupakan koleksi data dengan setiap elemen data menggunakan nama yang sama dan masing-masing lemen data bertipe sama. Setiap elemen array dapat diakses dan dibedakan melalui indeks array. Adapun array sendiri digolongkan menjadi : 1) array berdimensi satu, 2) array berdimensi dua, 3) array berdimensi banyak, dan 4) array tak berukuran. 8.3.1. Array berdimensi satu



a. Bentuk umum deklarasi array berdimensi



b. Mengakses elemen array :



satu nama_array: array [ukuran] of tipe



nilai_tes[0]



dengan : tipe



: untuk menyatakan jenis elemen array ( misal char, integer, real)



ukuran : untuk menyatakan jumlah maksimal elemen array. Contoh : Nilai_tes : array[1..50] of integer deklarasi diatas menyatakan bahwa array nilai_tes mengandung 50 elemen bertipe integer.



tipe float



nilai_tes[1] nilai_tes[2]



total 5 elemen



nilai_tes[3] float nilai_tes[5]



nilai_tes[4]



Gambar 8.1 Array berdimensi satu



Catatan: Tipe Data Array



80



Elemen array akan disimpan dalam memori secara berurutan dengan indeks pertama 0 ( nol ), elemen kedua nomor indeksnya 1 (satu), dan seterusnya. Sedangkan untuk mengaksesnya adalah dengan menggunakan nomor indeks tersebut. c. Inisialisasi array berdimensi satu Contoh : Const jum_hari : array of integer[12] = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) contoh di atas merupakan instruksi untuk mendeklarasikan konstanta array jum_hari dan sekaligus melakukan inisialisasi ( pemberian nilai ) pada masing-masing elemen array. Adapun perintah untuk mengakses data array diatas adalah : jum_hari[0] bernilai 31 jum_hari[1] bernilai 28 jum_hari[2] bernilai 31 dan seterusnya.



8.3.2. Array berdimensi dua a. Bentuk umum deklarasi array berdimensi dua nama_array:array[ukuran1] of [ukuran2] of tipe dengan : tipe ukuran1,ukuran2



: untuk menyatakan jenis elemen array ( misal char, int, real) : untuk menyatakan jumlah maksimal elemen array.



Tabel 8.1 Tabel data jumlah siswa kelas 1 : Kelas



Tahun I



Tahun II



Tahun III



IK 1A IK 1B



24 22



24



22



22



20



IK 1C



23



21



20



IK 1D



24



23



22



Tipe Data Array



81



b. Pengaksesan elemen array : Data tersimpan dalam array berdimensi dua :



0



0



1



2



24



24



22



1



22



22



20



2



23



21



20



3



24



23



22



indeks ke-2 ( tahun) data_siswa = array[1..4, 1..3] of integer



indeks ke-1 ( kelas)



Gambar 8.2 Array berdimensi dua Cara mengakses array berdimensi dua adalah dengan bentuk berikut : data_siswa[no_indeks ukuran1,no_indeks ukuran2]



c. Inisialisasi array berdimensi dua Contoh inisialisasi array berdimensi dua : Conts data_siswa : array[1..4,1..3] of integer = ( 24, 24, 22, 22, 22, 20, 23, 21, 20, 24, 23, 22 )



Pengaksesan data array di atas dapat dilakukan dengan perintah sebagai berikut : data_siswa[0,0] bernilai 24 data_siswa[0,1] bernilai 24 data_siswa[0,2] bernilai 22 data_siswa[1,0] bernilai 22 dan seterusnya.



Tipe Data Array



82



8.3.3. Array berdimensi banyak Dalam permasalahan khusus memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk umum pendeklarasian array berdimensi banyak adalah sebagai berikut : nama_array : array[ukuran1] of [ukuran2] of ….of [ukuran n] of tipe



dengan : tipe



: :



ukuran1,2..n



:



untuk menyatakan jenis elemen array ( misal char, int, real) untuk menyatakan jumlah maksimal elemen array.



Contoh deklarasi: data_matrik : array[1..2, 1..4, 1..4] of integer



Deklarasi berarti kita mendefinisikan data_matrik sebagai peubah bertipe array berdimensi tiga dengan jumlah elemen data 32 ( 2 x 4 x 4) buah.



contoh inisialisasi array berdimensi banyak : const data_matrik : array[1..2,1..3, 1..4] of integer = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24);



Tipe Data Array



83



Pengaksesan data array di atas dapat dilakukan dengan perintah sebagai berikut : data_matrik[0,0,0] bernilai 1 data_matrik[0,0,1] bernilai 5 data_ matrik [0,0,2] bernilai 9 dan seterusnya.



8.4 Studi Kasus 8.4.1 Contoh Kasus kasus 1 : Buatlah algoritma untuk menentukan rata-rata nilai tes siswa, dimana nilai yang dimasukkan disimpan dalam peubah ( variabel) bertipe array : Algoritma rerata {* ------------------------------------------------------------------------------------------ * * Contoh pemakaian array berdimensi satu untuk menghitung rata-rata nilai siswa * *------------------------------------------------------------------------------------------- *} Deklarasi Cacah :integer total_nilai, rerata : real nilai_tes : array[1..10] of real



{ deklarasi array }



Deskripsi {* pemasukan data nilai tes *} for cacah  1 to 10 (“Nilai tes ke-‘,cacah+1,’ : ‘) read(nilai_tes[cacah]) endfor total_nilai  0 {*menghitung jumlah dari seluruh nilai tes *} for cacah  1 to 10 total_nilai  total_nilai + nilai_tes[cacah] Endfor {*menghitung rata-rata nilai tes *} rerata  total_nilai / 10 (‘Nilai rata-rata = ‘,rerata)



Tipe Data Array



84



Translasi ke dalam bahasa Pascal : program rerata; {* ------------------------------------------------------------------------------------------ * * Contoh pemakaian array berdimensi satu untuk menghitung rata-rata nilai siswa * *------------------------------------------------------------------------------------------- *} Uses crt; {Deklarasi} Var Cacah



:integer;



total_nilai, rerata : real; nilai_tes



: array[1..10] of real;



{ deklarasi array }



{Deskripsi} Begin Clrscr; {* pemasukan data nilai tes *} for cacah := 1 to 10 do Begin (“Nilai tes ke-‘,cacah+1,’ : ‘); read(nilai_tes[cacah]); End; total_nilai := 0 {*menghitung jumlah dari seluruh nilai tes *} for cacah := 1 to 10 do total_nilai := total_nilai + nilai_tes[cacah]; {*menghitung rata-rata nilai tes *} rerata := total_nilai / 10; ln(‘Nilai rata-rata = ‘,rerata);readln; End.



Kasus 2 : Buatlah algoritma untuk menentukan jumlah hari dari bulan dalam setahun, dimana jumlah hari dari bulan dalam satu tahun diinisialisasi terlebih dahulu. Jawab : Algoritma jumlah_hari {* ------------------------------------------------- * * contoh inisialisasi array berdimensi satu



*



* Untuk memperoleh jumlah hari suatu bulan * *---------------------------------------------------*} Deklarasi



Tipe Data Array



85



Conts jum_hari : array[1..12] of integer =( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ) var bulan, tahun, jhari : integer Deskripsi write(‘=================================================================’) write(‘



Menentukan jumlah hari dari bulan



‘)



write(‘--------------------------------------------------------------------------------‘) write(‘ 1 = JANUARI



2 = FEBRUARI



write(‘ 5 = MEI



6 = JUNI



write(‘9 = SEPTEMBER 10 = OKTOBER



3 = MARET 7 = JULI 11 = NOVEMBER



4 = APRIL ‘) 8 = AGUSTUS ‘) 12 = DESEMBER’)



write(‘=================================================================’) write(‘Masukkan bulan ( 1..12) : ‘) read(bulan) write(‘Masukkan tahun



: ‘)



read(tahun) if (bulan = 2) then if ((tahun mod 4 =0) AND ( tahun mod 100 0)) jhari29 else jhari28 endif else jharijum_hari[bulan-1] write(‘jumlah hari bulan ‘,bulan,’ tahun ‘,tahun,’ = ‘, jhari)



Translasi ke dalam bahasa Pascal : Program jumlah_hari; {* ------------------------------------------------- * * contoh inisialisasi array berdimensi satu



*



* Untuk memperoleh jumlah hari suatu bulan * *---------------------------------------------------*} {Deklarasi} Uses crt; Conts jum_hari : array[1..12] of integer =( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); var bulan, tahun, jhari : integer; {Deskripsi} Begin



Tipe Data Array



86



Clrscr; writeln(‘=================================================================’); writeln (‘



Menentukan jumlah hari dari bulan



‘);



writeln (‘--------------------------------------------------------------------------------‘); writeln (‘ 1 = JANUARI writeln (‘ 5 = MEI



2 = FEBRUARI



3 = MARET



6 = JUNI



writeln (‘9 = SEPTEMBER 10 = OKTOBER



7 = JULI 11 = NOVEMBER



4 = APRIL ‘); 8 = AGUSTUS ‘); 12 = DESEMBER’);



writeln (‘=================================================================’); write(‘Masukkan bulan ( 1..12) : ‘);read(bulan); write(‘Masukkan tahun



: ‘);read(tahun);



if (bulan = 2) then Begin if ((tahun mod 4 =0) AND ( tahun mod 100 0)) Jhari := 29 Else Jhari := 28; end else Jhari := jum_hari[bulan-1]; writeln(‘jumlah hari bulan ‘,bulan,’ tahun ‘,tahun,’ = ‘, jhari);readln; End.



Kasus 3 : Buatlah algoritma untuk penjumlahan dua buah matrik : Algoritma Jumlah_matrik {* ------------------------------------------------- * * contoh penggunaan array berdimensi dua



*



* Untuk menjumlahkan dua buah array



*



*---------------------------------------------------*} Deklarasi conts maks_kolom = 5 maks_baris = 5 jum_kolom, jum_baris : integer mat1:array[1..maks_baris,1..maks_kolom] of integer /*deklarasi array dimensi 2*/ mat2:array[1..maks_baris,1..maks_kolom] of integer mat_hasil:array[1..maks_baris,1..maks_kolom] of integer procedure entri_data_matrik(ouput matriks[1..maks_baris,1..maks_kolom]; input jum_baris, jum_kolom:integer) Deklarasi



Tipe Data Array



87



i, j : integer Deskripsi for I  1 to jum_baris for j  1 to jum_kolom write(‘Data baris ‘,i+1,’ kolom ‘, j+1) read(matriks[i,j] endfor endfor procedure jumlah_dua_matrik(input matriks1[1..maks_baris,1..maks_kolom] , matriks2[1..maks_baris,1..maks_kolom], jum_baris, jum_kolom : integer; ouput mat_hasil [1..maks_baris,1..maks_kolom] ) Deklarasi i, j : integer Deskripsi for I  1 to jum_baris for j  1 to jum_kolom mat_hasil[i,j]=matriks1[i][j] + matriks2[i][j] endfor endfor procedure tampil_data_matrik(input jum_kolom : integer)



matriks1[1..maks_baris,1..maks_kolom],



jum_baris,



Deklarasi i, j : integer Deskripsi for I  1 to jum_baris for j  1 to jum_kolom write(matriks[i,j]) write(‘ ‘) endfor endfor Deskripsi write(“=================================================================”) write(“



Operasi penjumlah dua buah matrik



”)



write(“--------------------------------------------------------------------------------”) write(“Banyak baris dari elemen matrik ( 1…’,maks_baris,’) : ’) read(jum_baris) write(“Banyak kolom dari elemen matrik ( 1…’,maks_kolom,’) : ’) read(jum_kolom)



Tipe Data Array



88



write(‘Data Matrik 1’) entri_data_matrik(mat1, jum_baris, jum_kolom) write(‘Data Matrik 2\’) entri_data_matrik(mat2, jum_baris, jum_kolom) write(‘Penjumlahan Dua Matrik’) jumlah_dua_matrik(mat1, mat2, jum_baris, jum_kolom, mat_hasil) write(“\nPenampilan hasil jumlahan Dua Matrik\n”) tampil_data_matrik(mat_hasil, jum_baris, jum_kolom)



8.4.2 Soal-Soal 1. Berikan ulasan terhadap program jumlah matriks, tentang model array yang dipakai, proses pelewatan array sebagai parameter dan kinerja program tersebut. 2. Buatlah program yang dapat digunakan mengalikan atau mengurangkan dua buah matrik. 3. suatu array dalam fungsi main() dideklarasikan sebagai berikut : static int grafik[8] = {10, 5, 8, 12, 15, 20, 25, 30 }; berdasarkan array diatas, buatlah program yang menghasilkan tampilan sebagai berikut



: 10 5 8 12 15 20 25 30



| | | | | | | |



********** ***** ******** ************ *************** ******************** ************************* ******************************



8.4.3 Jawaban



1. Model array yang dipakai pada program jumlah matriks adalah tipe array dua dimensi. Proses pelewatan array pada program tersebut adalah mila-mula data array pada variabel i di-looping terlebih dahulu, lalu baru data pada variabel di-looping setelah variabel j atau biasa disebut array bersarang



2. Program mengalikan dan mengurangkan dua buah matriks dengan bahasa python  Program mengurangkan dua buah matriks Tipe Data Array



89







Program mengurangkan dua buah matriks



3. Program berdasarkan array Tipe Data Array



90



8.5 Kesimpulan Kadang dalam proses pemrograman kita harus memanipulasi sejumlah atau sekumpulan nilai dalam suatu peubah. Peubah biasa hanya mampu menyimpan nilai terakhir yang dimasukkan dalam peubah tersebut, jadi jika diinginkan nilai yang pernah dimasukkan tetap tersimpan dalam memori maka data tersebut harus disimpan dalam peubah bertipe larik atau array. Karena tipe ini memungkinkan sejumlah nilai dapat tersimpan dalam suatu peubah. untuk mengakses larik atau array adalah dengan menyebutkan nama peubah diikuti nomor indeksnya, bila lariknya bertipe lebih dari satu dimensi, maka untuk mengaksesnya sama seperti cara sebelumnya tetapi ditambah dengan nomor indeks ukuran ke dua dan seterusnya.



Tipe Data Array



91