ARRAY (LARIK) Altien Jonathan Rindengan, S.Si., M.Kom. Pendahuluan Sebuah variabel hanya menyimpan sebuah nilai, tidak dapat menyimpan beberapa buah nilai yang bertipe sejenis Dalam pemrograman, mengolah sekumpulan data bertipe sama, misal : hasil ujian 100 mhs, tabel harga barang di supermarket, dll. Setiap elemen data bertipe sama, dibedakan dengan mengunakan indeks (subscript) Misal, data nilai mahasiswa dilambangkan x, maka nilai mahasiswa yang ke-i, dilambangkan xi Pendahuluan Dalam pemrograman, sekumpulan data ini disimpan sementara dalam memori komputer untuk sewaktuwaktu dimanipulasi Struktur penyimpanan data ini dinamakan array/ larik Atau : tabel, vektor, atau variabel majemuk (satu variabel mempunyai banyak elemen) Apakah Array itu? Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama Setiap elemen diakses langsung melalui indeksnya Indeks array harus tipe data yang menyatakan keterurutan, misal : integer atau karakter Keterurutan secara horisontal atau vertikal Apakah Array itu? …. Misal array A dengan 8 elemen dinotasikan : A[1], A[2],A[3], A[4], A[5],A[6], A[7], A[8] 1 2 3 4 5 6 7 8 A 158 157 167 150 172 161 155 180 Deklarasi Array Deklarasi array berarti : Mendefinisikan bayaknya elemen array (ukuran array) Mendefinisikan tipe elemen array Jumlah elemen harus sudah diketahui sebelum program dieksekusi Jumlah elemen tidak dapat diubah selama pelaksanaan program Mendefinisikan banyaknya elemen array berarti memesan sejumlah tempat di memori Mendefinisikan tipe array berarti menetapkan tipe nilai yang dapat disimpan oleh array, mis : integer, real, char, string, dll Deklarasi Array …. Notasi deklarasi array : NamaArray : array [1..n] of tipe elemen Contoh Deklarasi array : Sebagai A variabel : : array [1..100] of integer NMhs : array [1..12] of string NUjian : array[0 .. 74] of real (100 elemen, indeks dimulai dari 1) (12 elemen, indeks dimulai dari 1) (74 elemen, indeks dimulai dari 0) Deklarasi Array …. Sebagai tipe bentukan : Misalkan LarikInt didefinisikan sebagai nama tipe baru untuk array yang bertipe integer. Ukuran array 100 elemen . Misal dideklarasikan variabel A yang bertipe LarikInt. type LarikInt : array[1..100] of integer A : LarikInt Cara mengacu elemen array Elemen array diacu melalui indeksnya dimana nilai indeksnya harus terdefinisi. Contoh : A[4] {mengacu elemen keempat dari array A} NMhs[2] {mengacu elemen kedua dari array NMhs} A[i] {mengacu elemen ke-i dari array A, asalkan nilai i sudah terdefinisi} NMhs[i+1] {mengacu elemen ke-i+1 dari array NMhs, asalkan nilai i sudah terdefinisi} Pemrosesan Array Memproses array artinya mengunjungi setiap elemen array dan memanipulasi nilai didalamnya Kunjungan dimulai dari elemen pertama, berturutturut sampai terakhir Skema umum algoritma pemrosesan array (menggunakan struktur pengulangan while do) Pemrosesan Array …. PROGRAM pemrosesan_array DEKLARASI A: array [1..100] of integer i: integer {indeks array} ALGORITMA i=1 {inisialisasi, mulai dari elemen pertama} while i<=100 do pemrosesan terhadap A[i] i=i+1 endwhile (i>100) program array1; uses crt; var A: array [1..100] of integer; i,n,jumlah: integer; rataan : real; begin clrscr; write('Banyaknya data : ');readln(n); i:=1; jumlah:=0; while i<=n do begin write('Nilai data ke-',i,' : ');readln(A[i]); jumlah:=jumlah+A[i]; i:=i+1; end; writeln ('Penjumlahan datanya : ',jumlah); rataan:=jumlah/n; writeln ('Rata-rata : ',rataan:0:2); readln; writeln('Data ke-2 adalah ',A[2]); write('Data ke ');readln(i); writeln(A[i]); readln; end. program array1a; uses crt; var A: array [1..100] of integer; i,n,jumlah: integer; begin clrscr; write('Banyaknya data : ');readln(n); i:=1; jumlah:=0; while i<=n do begin write('Nilai data ke-',i,' : ');readln(A[i]); i:=i+1; end; for i:=1 to n do jumlah := jumlah+A[2*i]; writeln('Penjumlahan datanya : ', jumlah); readln; end. Mencari nilai maksimum dari elemen array Dengan array dapat dicari nilai maksimum dari data yang dientry dalam bentuk array Nilai maksimum adalah elemen dengan nilai terbesar pada array Jika bukan dalam bentuk array, hal ini tidak dapat dilakukan program array1b; uses crt; var A: array [1..100] of integer; i,n,maks: integer; begin clrscr; write('Banyaknya data : ');readln(n); i:=1; while i<=n do begin write('Nilai data ke-',i,' : ');readln(A[i]); i:=i+1; end; maks:=A[1]; for i:=2 to n do begin if A[i] > maks then maks:=A[i]; end; writeln('Data terbesar adalah : ', maks); readln; end. Array 2 dimensi Selain array 1 dimensi yang berbentuk vector, juga dikenal array 2 dimensi yang berbentuk matriks. Secara umum array 2 dimensi dideklarasikan dengan bentuk: type NamaArray = array[I,J] of tipeelemen; dimana I dan J menyatakan jangkauan array, mulai dari indeks terkecil sampai dengan yang terbesar Array 2 dimensi ….. Misalnya jika kita ingin membuat matrik A berukuran 2 baris dan 3 kolom, maka matriks tersebut dapat disimpan dalam array 2 dimensi yang didefinisikan sebagai: MatA : array[1..2,1..3] of integer; Array 2 dimensi ….. Jika perulangan for digunakan untuk mengontrol proses pembacaan dan pencetakan biasanya digunakan satu statement for untuk mengontrol setiap array. Setiap statement for digunakan untuk membangkitkan nilai sebuah indeks. Sebagai contoh: var tabel:array[1..40,1..5] of real; for i:= 1 to 40 do for j:=1 to 5 do read(tabel[i,j]); Array 2 dimensi ….. Dari contoh diatas dapat dijelaskan bahwa: tabel adalah array dimensi dua atau matriks dengan 40 baris dan 5 kolom (200 elemen). statement read akan dikerjakan 200 kali, masingmasing 5 kali untuk setiap eksekusi perulangan luar. indeks j akan bernilai 1,2,3,4 dan 5 untuk setiap nilai i karena j sebagai perulangan dalam. program array3; uses crt; var tabel: array[1..3,1..2] of byte; i,j:byte; begin clrscr; tabel[1,1] := 5; tabel[1,2] := 25; tabel[2,1] := 200; tabel[2,2] := 22; tabel[3,1] := 75; tabel[3,2] := 50; for i:=1 to 3 do begin for j:= 1 to 2 do write(tabel[i,j]:6); writeln; end; readln; end. Bekerja dengan 2 Array Dua array dapat dioperasikan sekaligus Misal : Nilai ujian n mahasiswa disimpan pada array NilUjian Nilai mutu disimpan pada array Indeks program array4; uses crt; const Nmaks = 200; var NilUjian : array [1..Nmaks] of real; Indeks : array [1..Nmaks] of char; i,n : integer; begin clrscr; write('Banyaknya mahasiswa : ');readln(n); for i:=1 to n do readln(NilUjian[i]); for i:= 1 to n do if NilUjian[i]>=80 then Indeks[i]:='A' else if NilUjian[i]>=70 then Indeks[i]:='B' else if NilUjian[i]>=55 then Indeks[i]:='C' else if NilUjian[i]>=45 then Indeks[i]:='D' else Indeks[i]:='E'; writeln; for i:=1 to n do writeln(i,' ',NilUjian[i]:0:2,' ',Indeks[i]); readln; end.