View
571
Download
0
Category
Preview:
DESCRIPTION
Algoritma dan Struktur Data
Citation preview
Topik 11Larik/Array
Algoritma & Struktur Data
PS. Manajemen Informatika
Sub Topik
1. Konsep Larik
2. Deklarasi Larik
3. Cara Mengacu Larik
4. Pemrosesan Larik
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
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
Deklarasi Larik
Mendeklarasikan larik berarti :• Mendefinisikan banyaknya elemen larik (ukuran larik)• Mendefinisikan tipe elemen larik
Contoh pendeklarasian larik
1. Sebagai PeubahMisalkan :
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 integerNamaMhs : array[1..10] of stringNilUjian : array[0..74] of real
2. Sebagai Tipe BentukanMisalkan 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 integerA: LarikInt
3. Mendefinisikan ukuran larik sebagai sebuah konstantaMisalkan 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 = 100type LarikInt : array[1..Nmaks] of integerA: LarikInt
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])
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
Contoh :
ALGORITMA PemrosesanLarik{ Skema pemrosesan larik secara beruntun }
DEKLARASIconst Nmaks = 100type LarikInt : array[1..Nmaks] of integerA : LarikInti : integer
DESKRIPSI:for i 1 to Nmaks do
{pemrosesan terhadap A[i]}endfor
Ukuran Efektif Larik
Ukuran efektif larik adalah banyaknya elemen larik yang dipakai
Ukuran ini dicatat didalam nama peubah tertentu, misalnya n
Contoh :
DEKLARASIconst Nmaks = 100type LarikInt : array[1..Nmaks] of integerA : LarikIntn : integer
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 }
DEKLARASIi integer
DESKRIPSIfor i 1 to n do
A[i] 0endfor
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 }
DEKLARASIi integer
DESKRIPSIfor i 1 to n do
A[i] iendfor
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 }
DEKLARASIi integer
DESKRIPSIfor i 1 to n do
input(A[i])endfor
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 }
DEKLARASIjawab : char
DESKRIPSIn 0repeat
n n + 1input(A[n])output(‘Lagi?(y/t)’)input(jawab)
until (jawab = ‘t’)
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 }
DEKLARASIx : integer
DESKRIPSIn 0input(x)while x ≠ 9999 do
n n + 1A[n] xinput(x)
endwhile
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 }
DEKLARASIi integer
DESKRIPSIfor i 1 to n do
output(A[i])endfor
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 }
DEKLARASIi integer
DESKRIPSImaks -9999for i 1 to n do
if A[i] > maks thenmaks (A[i])
endifendfor
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 }
DEKLARASIi integer
DESKRIPSImaks A[1]for i 2 to n do
if A[i] > maks thenmaks (A[i])
endifendfor
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 }
DEKLARASIi integer
DESKRIPSIIdxMaks 1for i 2 to n do
if A[i] > A[IdxMaks] thenIdxMaks i
endifendfor
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 }
DEKLARASIi integer
DESKRIPSImin 9999for i 1 to n do
if A[i] < min thenmin (A[i])
endifendfor
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 }
DEKLARASIi integer
DESKRIPSImin A[1]for i 2 to n do
if A[i] < min thenmin (A[i])
endifendfor
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 }
DEKLARASIi integer
DESKRIPSIIdxMin 1for i 2 to n do
if A[i] < A[IdxMin] thenIdxMin i
endifendfor
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 }
DEKLARASIi integer
DESKRIPSIi 1while (i < n) and (A[i] ≠ x) do
i i + 1endwhileif A[i] = x then
idx ielse
idx 0endif
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!
Pseudocode :
ALGORITMA Rata_Nilai;{ Menghitung rata-rata nilai ujian dalam larik}
DEKLARASIN, 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
{ menjumlahkan nilai ujian dalam larik }jumlah 0for i 1 to N do
jumlah jumlah + Nilai[i}endfor
{ menghitung dan mencetak rata-rata }rata jumlah / Noutput(rata)
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
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!
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.
Recommended