Pemrograman Dasar - 09 Array
Pemrograman Dasar - 09 Array
1/38
Pendahuluan
2/38
Bagian 1
Konsep Array
3/38
Motivasi
4/38
Solusi?
• Sederhana, idenya adalah dengan menampung seluruh
bilangan terlebih dahulu, baru dicetak dalam urutan terbalik.
• Misalnya jika N selalu 3, kita bisa membuat 3 variabel
(misalnya a, b, c), lalu:
readln(a);
readln(b);
readln(c);
writeln(c);
writeln(b);
writeln(a);
5/38
Pengertian Array
Array
Variabel dengan satu nama, tetapi mengandung banyak nilai.
Akses nilai-nilainya dilakukan dengan indeks.
6/38
Penjelasan
7/38
Bagian 2
8/38
Deklarasi
• Karena array merupakan variabel, diperlukan deklarasi seperti
variabel lainnya.
• Format deklarasi array adalah:
<nama>: array[<nilai awal>..<nilai akhir>] of <tipe>;
• Dengan:
• <nama> adalah nama dari array (aturan penamaan sama
seperti variabel biasanya)
• <nilai awal> dan <nilai akhir> adalah rentang indeks array
yang terdefinisi (boleh saja negatif).
• <tipe> adalah tipe data dari array.
• Tentu saja, tipe data di sini bisa berupa longint, double,
string, boolean atau suatu record.
9/38
Contoh Deklarasi
Berikut ini adalah contoh deklarasi array pada Pascal:
var
tabel: array[0..100] of boolean;
frekuensi: array[-1000..1000] of longint;
10/38
Array dan Variabel
11/38
Array dan Variabel (lanj.)
12/38
Array dan Variabel (lanj.)
13/38
Array dan Variabel (lanj.)
14/38
Contoh Solusi: balik.pas
Berikut contoh solusi lengkap untuk permasalahan motivasi:
var
N, i: longint;
tabel: array[1..100] of longint;
begin
readln(N);
for i := 1 to N do begin
readln(tabel[i]);
end;
15/38
Array dan Memori
16/38
Rentang Array
17/38
Contoh Soal: Ujian Harian
Deskripsi:
• Pak Dengklek menyelenggarakan ujian harian setelah selesai
mengajarkan N ekor bebeknya mengenai konsep array.
• Setiap bebek ke-i mendapatkan nilai sebesar hi , yang
merupakan bilangan bulat.
• Untuk menentukan lulus atau tidaknya seekor bebek, nilai
bebek tersebut harus tidak kurang dari nilai rata-rata dari
seluruh bebek.
• Tentukan banyaknya bebek yang lulus ujian!
Batasan:
• 1 ≤ N ≤ 100
• 1 ≤ hi ≤ 100, untuk 1 ≤ i ≤ N
18/38
Contoh Soal: Ujian Harian (lanj.)
Format masukan:
• Baris pertama berisi sebuah bilangan bulat N.
• N baris berikutnya berisi nilai ujian bebek. Baris ke-i ini
merupakan hi .
Format keluaran:
• Sebuah baris yang menyatakan banyaknya bebek yang lulus
ujian.
19/38
Contoh Soal: Ujian Harian (lanj.)
Contoh masukan:
3
5
6
7
Contoh keluaran:
2
Penjelasan
Nilai rata-rata dari seluruh bebek adalah 6, dan terdapat 2 ekor
bebek yang nilainya tidak kurang dari 6.
20/38
Petunjuk
21/38
Contoh Solusi: lulus.pas
var
N, i, total, lulus: longint;
h: array[1..100] of longint;
begin
readln(N);
for i := 1 to N do begin
readln(h[i]);
end;
total := 0;
for i := 1 to N do begin
total := total + h[i];
end;
22/38
Contoh Solusi: lulus.pas (lanj.)
lulus := 0;
for i := 1 to N do begin
(* trik menghindari pembagian *)
if (h[i]*N >= total) then begin
lulus := lulus + 1;
end;
end;
writeln(lulus);
end.
23/38
Bagian 3
24/38
Array Dua Dimensi
25/38
Array Dua Dimensi (lanj.)
26/38
Contoh Soal:
Cokelat Bebek
Deskripsi:
• Pak Ganesh datang bertamu ke peternakan bebek Pak
Dengklek.
• Pada peternakan bebek Pak Dengklek, terdapat kandang
bebek yang tersusun atas petak-petak N baris dan N kolom.
• Pak Dengklek memberi di,j gram cokelat* ke kandang di baris
ke-i dan kolom ke-j.
• Pak Ganesh memberi gi,j gram cokelat* ke kandang di baris
ke-i dan kolom ke-j.
• Tentukan berapa gram cokelat yang diperoleh setiap bebek di
kandangnya!
Batasan:
• 1 ≤ N ≤ 100
• 0 ≤ di,j , hi,j ≤ 10, untuk 1 ≤ i, j ≤ N
*Catatan: bebek-bebek suka cokelat!
27/38
Contoh Soal:
Cokelat Bebek (lanj.)
• Sebagai contoh, misalkan N = 3.
• Kemudian berikut adalah cokelat yang diberikan Pak
Dengklek (D) dan Pak Ganesh (G ):
1 3 0 2 1 7
D = 6 2 4 G = 0 0 1
2 1 5 1 1 2
• Maka total cokelat yang didapatkan setiap kandang adalah:
3 4 7
6 2 5
3 2 7
28/38
Contoh Soal:
Cokelat Bebek (lanj.)
Format masukan:
• Baris pertama berisi sebuah bilangan bulat N.
• N baris berikutnya berisi N bilangan. Bilangan di baris ke-i
dan kolom ke-j ini adalah di,j .
• N baris sisanya berisi N bilangan. Bilangan di baris ke-i dan
kolom ke-j ini adalah gi,j .
Format keluaran:
• N baris yang berisi N bilangan. Bilangan di baris ke-i dan
kolom ke-j ini adalah total makanan yang ada di kandang
baris ke-i dan kolom ke-j.
29/38
Contoh Soal:
Cokelat Bebek (lanj.)
Contoh masukan:
3
1 3 0
6 2 4
2 1 5
2 1 7
0 0 1
1 1 2
Contoh keluaran:
3 4 7
6 2 5
3 2 7
30/38
Petunjuk
• Salah satu cara yang mudah adalah membuat tiga array dua
dimensi, masing-masing untuk menampung makanan yang
diberikan Pak Dengklek (D), Pak Ganesh (G ), dan hasil
akhirnya (hasil).
• Tentu saja hubungannya adalah hasil[i][j] = D[i][j] + G [i][j],
untuk 1 ≤ i, j ≤ N.
31/38
Solusi: cokelat.pas
32/38
Solusi: cokelat.pas (lanj.)
Kemudian baca masukan sesuai dengan format yang diberikan:
begin
readln(N);
for i := 1 to N do begin
for j := 1 to N do begin
read(D[i][j]);
end;
readln;
end;
for i := 1 to N do begin
for j := 1 to N do begin
read(G[i][j]);
end;
readln;
end;
33/38
Solusi: cokelat.pas (lanj.)
Lakukan penjumlahan, lalu cetak hasilnya:
for i := 1 to N do begin
for j := 1 to N do begin
hasil[i][j] := D[i][j] + G[i][j];
end;
end;
for i := 1 to N do begin
for j := 1 to N do begin
write(hasil[i][j]);
if (j < N) then begin
write(’ ’);
end;
end;
writeln;
end;
end.
34/38
Solusi: cokelat 2.pas
Nilai array D dan G sebenarnya tidak perlu disimpan, kita bisa
menghemat memori dengan langsung menjumlahkannya.
var
N: longint;
temp: longint;
hasil: array[1..100, 1..100] of longint;
i, j: longint;
begin
readln(N);
for i := 1 to N do begin
for j := 1 to N do begin
read(temp);
hasil[i][j] := temp;
end;
readln;
end;
35/38
Solusi: cokelat 2.pas (lanj.)
for i := 1 to N do begin
for j := 1 to N do begin
read(temp);
hasil[i][j] := hasil[i][j] + temp;
end;
readln;
end;
for i := 1 to N do begin
for j := 1 to N do begin
write(hasil[i][j]);
if (j < N) then
write(’ ’);
end;
writeln;
end;
end.
36/38
Array Multidimensi
37/38
Selanjutnya...
38/38