topik 11 array

29
Topik 11 Larik/Array Algoritma & Struktur Data PS. Manajemen Informatika

Upload: i-komang-agustino

Post on 22-May-2015

566 views

Category:

Education


0 download

DESCRIPTION

Algoritma dan Struktur Data

TRANSCRIPT

Page 1: Topik 11 Array

Topik 11Larik/Array

Algoritma & Struktur Data

PS. Manajemen Informatika

Page 2: Topik 11 Array

Sub Topik

1. Konsep Larik

2. Deklarasi Larik

3. Cara Mengacu Larik

4. Pemrosesan Larik

Page 3: Topik 11 Array

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

Page 4: Topik 11 Array

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

Page 5: Topik 11 Array

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

Page 6: Topik 11 Array

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

Page 7: Topik 11 Array

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])

Page 8: Topik 11 Array

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

Page 9: Topik 11 Array

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

Page 10: Topik 11 Array

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

Page 11: Topik 11 Array

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

Page 12: Topik 11 Array

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

Page 13: Topik 11 Array

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

Page 14: Topik 11 Array

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’)

Page 15: Topik 11 Array

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

Page 16: Topik 11 Array

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

Page 17: Topik 11 Array

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

Page 18: Topik 11 Array

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

Page 19: Topik 11 Array

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

Page 20: Topik 11 Array

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

Page 21: Topik 11 Array

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

Page 22: Topik 11 Array

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

Page 23: Topik 11 Array

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

Page 24: Topik 11 Array

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!

Page 25: Topik 11 Array

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

Page 26: Topik 11 Array

{ 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)

Page 27: Topik 11 Array

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

Page 28: Topik 11 Array

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!

Page 29: Topik 11 Array

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.