Algoritma menggunakan larik untuk menyimpan nilai ujian dari indeks 1 sampai N, menghitung rata-rata nilai ujian dengan membandingkan jumlah nilai ujian dengan jumlah siswa, kemudian menampilkan hasil perhitungan rata-rata di layar.
2. Sub Topik
1. Konsep Larik
2. Deklarasi Larik
3. Cara Mengacu Larik
4. Pemrosesan Larik
3. Tujuan
Tujuan Instruksional Umum :
Mahasiswa diharapkan mampu membuat algoritma
dengan larik
Tujuan Instruksional Khusus :
Mahasiswa mampu memahami konsep larik
Mahasiswa mampu membuat deklarasi larik dan
mengacu larik
Mahasiswa mampu membuat algoritma untuk
pemrosesan larik
4. Konsep Larik
Larik adalah struktur data yang menyimpan sekumpulan
elemen yang bertipe sama, setiap elemen diakses langsung
melalui indeksnya
Larik adalah struktur data yang statik, artinya jumlah elemen
larik harus sudah diketahui sebelum program dieksekusi
Jumlah larik tidak dapat diubah selama pelaksanaan program
Indeks larik haruslah tipe data yang memiliki keterurutan
misalnya integer atau karakter
• Sebuah larik A dengan 8 buah elemen dibayangkan
sebagai sekumpulan kotak yang terurut
• Tiap kotak pada larik diberi indeks 1, 2, 3, …, 8
• Setiap elemen larik ditulis dengan notasi :
A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8]
• Angka didalam tanda siku menyatakan indeks larik
Setiap elemen larik menyimpan sebuah nilai, misalnya A[1] =
158
5. Deklarasi Larik
Mendeklarasikan larik berarti :
• Mendefinisikan banyaknya elemen larik (ukuran larik)
• Mendefinisikan tipe elemen larik
Contoh pendeklarasian larik
1. Sebagai Peubah
Misalkan :
A adalah larik yang berukuran 50 buah elemen yang
bertipe integer. Indeks larik dimulai dari 1.
NamaMhs adalah larik yang berukuran 10 buah elemen
yang bertipe string. Indeks larik dimulai dari 1.
NilUjian adalah peubah larik yang berukuran 75 buah
elemen yang bertipe real. Indeks larik dimulai dari 0.
Cara mendefinisikannya :
A : array[1..50] of integer
NamaMhs : array[1..10] of string
NilUjian : array[0..74] of real
6. 2. Sebagai Tipe Bentukan
Misalkan LarikInt didefinisikan sebagai nama sebuah
peubah tipe baru untuk larik yang bertipe integer.
Ukuran larik adalah 100 buah elemen. Sedangkan A
adalah sebuah peubah yang bertipe LarikInt.
Cara mendefinisikannya :
type LarikInt : array[1..100] of integer
A: LarikInt
3. Mendefinisikan ukuran larik sebagai sebuah konstanta
Misalkan LarikInt didefinisikan sebagai nama sebuah
peubah tipe baru untuk larik yang bertipe integer.
Ukuran larik adalah 100 buah elemen yang dinyatakan
sebagai konstanta. Sedangkan A adalah sebuah peubah
yang bertipe LarikInt.
Cara mendefinisikannya :
const Nmaks = 100
type LarikInt : array[1..Nmaks] of integer
A: LarikInt
7. Cara Mengacu Larik
Elemen larik diacu melalui indeksnya
Nilai indeks harus terdefinisi
Contoh cara mengacu elemen larik :
A[4] {mengacu elemen keempat dari larik A}
NamaMhs[2] {mengacu elemen kedua dari larik NamaMhs}
A[i] {mengacu elemen ke-i dari larik A, asalkan nilai
i sudah terdefinisi}
NamaMhs[i+1] {asalkan nilai I sudah terdefinisi}
Contoh manipulasi atau penggunaan larik :
A[4] 10 {mengisi elemen keempat dari larik A
dengan nilai 10}
NamaMhs[i] ‘Achmad’ {mengisi elemen ke-i dari larik amaMhs
dengan string ‘Achmad’}
input(A[i])
8. Pemrosesan Larik
Elemen larik tersusun secara beruntun, sehingga
elemennya diproses secara beruntun melalui indeksnya
yang terurut
Pemrosesan dimulai dari elemen pertama larik sampai
elemen terakhir dicapai, yaitu elemen dengan indeks
terbesar
Skema pemrosesan yang tepat untuk larik adalah
menggunakan WHILE
Skema umum algoritma memproses larik adalah skema
mengunjungi (traversal) larik
Jumlah elemen larik sudah diketahui di awal proses,
sehingga struktur FOR juga bisa digunakan
9. Contoh :
ALGORITMA PemrosesanLarik
{ Skema pemrosesan larik secara beruntun }
DEKLARASI
const Nmaks = 100
type LarikInt : array[1..Nmaks] of integer
A : LarikInt
i : integer
DESKRIPSI:
for i 1 to Nmaks do
{pemrosesan terhadap A[i]}
endfor
10. Ukuran Efektif Larik
Ukuran efektif larik adalah banyaknya elemen larik yang
dipakai
Ukuran ini dicatat didalam nama peubah tertentu,
misalnya n
Contoh :
DEKLARASI
const Nmaks = 100
type LarikInt : array[1..Nmaks] of integer
A : LarikInt
n : integer
11. Inisialisasi Larik
1. Menginisialisasi elemen-elemen larik dengan nilai 0
PROCEDURE InisDengan0 (output A : LarikInt, input n : integer)
{ Menginisialisasi setiap elemen larik A[1..n] dengan nol }
{ K. Awal : n adalah jumlah elemen efektif larik, nilainya terdefinisi }
{ K. Akhir : seluruh elemen larik A bernilai 0 }
DEKLARASI
i integer
DESKRIPSI
for i 1 to n do
A[i] 0
endfor
12. 2. Menginisialisasi setiap elemen larik ke-i dengan nilai i
PROCEDURE InisDengan (output A : LarikInt, input n : integer)
{ Menginisialisasi setiap elemen A[i] dengan nilai i = 1, 2, …, n}
{ K. Awal : n adalah jumlah elemen efektif larik, nilainya terdefinisi }
{ K. Akhir : A[1] = 1, A[2] = 2, …, A[n] = n }
DEKLARASI
i integer
DESKRIPSI
for i 1 to n do
A[i] i
endfor
13. Pengisian Elemen Larik
1. Jumlah elemen efektif ditentukan di awal
PROCEDURE BacaLarik1(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 }
DEKLARASI
i integer
DESKRIPSI
for i 1 to n do
input(A[i])
endfor
14. 2. Jumlah elemen efektif baru diketahui di akhir pembacaan
(versi 1)
PROCEDURE BacaLarik2(output A : LarikInt, input n : integer)
{ Mengisi elemen-elemen larik A[1..n] dengan pembacaan }
{ 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
DESKRIPSI
n 0
repeat
n n + 1
input(A[n])
output(‘Lagi?(y/t)’)
input(jawab)
until (jawab = ‘t’)
15. 3. Jumlah elemen efektif baru diketahui di akhir pembacaan
(versi 2)
PROCEDURE BacaLarik3(output A : LarikInt, input n : integer)
{ Mengisi elemen-elemen larik A[1..n] dengan pembacaan }
{ K. Awal : sembarang }
{ K. Akhir : sebanyak n buah elemen larik A berisi nilai-nilai yang dibaca; n
berisi jumlah elemen larik yang diisi }
DEKLARASI
x : integer
DESKRIPSI
n 0
input(x)
while x ≠ 9999 do
n n + 1
A[n] x
input(x)
endwhile
16. Mencetak Elemen Larik
Isi elemen larik dicetak ke piranti dengan pernyataan write
Elemen larik dicetak satu per satu mulai dari elemen
pertama sampai elemen ke-n
PROCEDURE CetakLarik(input A : LarikInt, input n : integer)
{ Mencetak elemen-elemen larik A[1..n] }
{ K. Awal : n berisi jumlah elemen larik yang dipakai. Elemen-elemen larik
A sudah terdefinisi }
{ K. Akhir : elemen-elemen larik A tercetak }
DEKLARASI
i integer
DESKRIPSI
for i 1 to n do
output(A[i])
endfor
17. Mencari Nilai Maksimum
1. Versi 1
PROCEDURE CariMaks1(input A : LarikInt, input n : integer, output
maks : integer)
{ Mencari elemen terbesar didalam larik A[1..n] }
{ K. Awal : n sudah berisi ukuran efektif larik; seluruh elemen larik A[1..n]
sudah terdefinisi nilainya }
{ K. Akhir : maks berisi elemen larik yang bernilai maksimum }
DEKLARASI
i integer
DESKRIPSI
maks -9999
for i 1 to n do
if A[i] > maks then
maks (A[i])
endif
endfor
18. 2. Versi 2
PROCEDURE CariMaks2(input A : LarikInt, input n : integer, output
maks : integer)
{ Mencari elemen terbesar didalam larik A[1..n] }
{ K. Awal : n sudah berisi ukuran efektif larik; seluruh elemen larik A[1..n]
sudah terdefinisi nilainya }
{ K. Akhir : maks berisi elemen larik yang bernilai maksimum }
DEKLARASI
i integer
DESKRIPSI
maks A[1]
for i 2 to n do
if A[i] > maks then
maks (A[i])
endif
endfor
19. 3. Versi 3
PROCEDURE CariMaks3(input A : LarikInt, input n : integer, output
IdxMaks : integer)
{ Mencari elemen terbesar didalam larik A[1..n] }
{ K. Awal : n sudah berisi ukuran efektif larik; seluruh elemen larik
A[1..n] sudah terdefinisi nilainya }
{ K. Akhir : IdxMaks berisi indeks elemen larik yang bernilai
maksimum }
DEKLARASI
i integer
DESKRIPSI
IdxMaks 1
for i 2 to n do
if A[i] > A[IdxMaks] then
IdxMaks i
endif
endfor
20. Mencari Nilai Minimum
1. Versi 1 : Nilai minimum awal = 9999
PROCEDURE CariMin1(input A : LarikInt, input n : integer, output min :
integer)
{ Mencari elemen terkecil didalam larik A[1..n] }
{ K. Awal : n sudah berisi ukuran efektif larik; seluruh elemen larik
A[1..n] sudah terdefinisi nilainya }
{ K. Akhir : min berisi elemen larik yang bernilai minimum }
DEKLARASI
i integer
DESKRIPSI
min 9999
for i 1 to n do
if A[i] < min then
min (A[i])
endif
endfor
21. 2. Versi 2 : Nilai minimum awal = elemen pertama larik
PROCEDURE CariMin2(input A : LarikInt, input n : integer, output min :
integer)
{ Mencari elemen terkecil didalam larik A[1..n] }
{ K. Awal : n sudah berisi ukuran efektif larik; seluruh elemen larik
A[1..n] sudah terdefinisi nilainya }
{ K. Akhir : min berisi elemen larik yang bernilai minimum }
DEKLARASI
i integer
DESKRIPSI
min A[1]
for i 2 to n do
if A[i] < min then
min (A[i])
endif
endfor
22. 3. Versi 3 : Mencari indeks elemen larik yang bernilai
minimum
PROCEDURE CariMin3(input A : LarikInt, input n : integer, output
IdxMin : integer)
{ Mencari indeks elemen larik bernilai terkecil didalam larik A[1..n] }
{ K. Awal : n sudah berisi ukuran efektif larik; seluruh elemen larik
A[1..n] sudah terdefinisi nilainya }
{ K. Akhir : IdxMin berisi indeks elemen larik yang bernilai
minimum }
DEKLARASI
i integer
DESKRIPSI
IdxMin 1
for i 2 to n do
if A[i] < A[IdxMin] then
IdxMin i
endif
endfor
23. Mencari Nilai Tertentu
PROCEDURE CariX_1(input A : LarikInt, input n : integer, input x : integer,
output idx : integer)
{ Mencari posisi x didalam larik A[1..n] }
{ K. Awal : x dan elemen-elemen larik A[1..n] sudah terdefinisi nilainya }
{ K. Akhir : idx berisi indeks elemen larik A yang bernilai x. Jika x tidak
ditemukan, idx berisi dengan nilai 0 }
DEKLARASI
i integer
DESKRIPSI
i 1
while (i < n) and (A[i] ≠ x) do
i i + 1
endwhile
if A[i] = x then
idx i
else
idx 0
endif
24. Contoh Soal
Kasus :
Buatlah algoritma dengan larik yang menyatakan nilai
ujian, mulai indeks 1 sampai N, dan menghitung nilai
rata-rata ujian, kemudian menampilkannya di layar!
25. Pseudocode :
ALGORITMA Rata_Nilai;
{ Menghitung rata-rata nilai ujian dalam larik}
DEKLARASI
N, i, jumlah : integer;
rata : real;
Nilai : array [1..100] of integer;
DESKRIPSI:
input(N)
{ Membaca nilai ujian dan menyimpan di larik }
for i 1 to N do
input(Nilai[i])
endfor
26. { menjumlahkan nilai ujian dalam larik }
jumlah 0
for i 1 to N do
jumlah jumlah + Nilai[i}
endfor
{ menghitung dan mencetak rata-rata }
rata jumlah / N
output(rata)
27. Rangkuman
Larik digunakan jika mempunyai sejumlah data yang bertipe
sama, dan perlu disimpan sementara, untuk kemudian data
tersebut dimanipulasi
Larik digunakan untuk menghindari penggunaan nama-
nama peubah yang banyak
Instruksi pembacaan/penulisan seluruh elemen larik cukup
ditulis satu kali saja didalam sebuah konstruksi pengulangan
28. Latihan Soal
Kasus 1:
Buatlah algoritma untuk mengisi elemen larik dan
menampilkan elemen larik tetapi hanya yang bernilai
genap!
Kasus 2:
Buatlah algoritma untuk mengisi elemen larik dan
menampilkan elemen larik tetapi hanya yang kelipatan 5
atau yang kelipatan 3!
29. REFERENSI
1. Budi Sutedjo, Michael A.N. 2000. “Algoritma dan Teknik
Pemrograman”. Yogyakarta: ANDI OFFSET.
2. Fathul Wahid. 2004. “Dasar-Dasar Algoritma dan
Pemrograman”. Yogyakarta: ANDI OFFSET.
3. Rinaldi Munir, Leoni Lidya. 2002. “Algoritma &
Pemrograman Dalam Bahasa Pascal dan C Buku 1”.
Bandung: Informatika.
4. Rinaldi Munir, Leoni Lidya. 2002. “Algoritma &
Pemrograman Dalam Bahasa Pascal dan C Buku 2”.
Bandung: Informatika.