decision support system [mkb3493] -...
TRANSCRIPT
Larik/Array
ALGORITMA DAN PEMROGRAMAN [IS6110102]
Koordinator Mata Kuliah :Fathushahib, S.Kom., M.KomTim Dosen: Yudha Saintika, S.T., M.T.I
Agenda
•Pendahuluan
•Mendeklarasikan Larik
•Cara Mengacu Elemen Larik
•Pemrosesan Larik
• Inisialisasi Larik
•Contoh Persoalan Larik
Pendahuluan
• Larik adalah struktur data di memori yang terdiri dari sekumpulanelemen bertipe sama, setiap elemen di dalam larik diacu secaralangsung melalui indeksnya.
• Misalnya sebuah larik yang bernama A dengan enam buah elemendapat dibayangkan sebagai sekumpulan kotak yang terurut (baiktersusun secara vertikal atau horizontal)
A[1], A[2], A[3], A[4], A[5], A[6]
1
2
3
4
5
6
Pendahuluan
• Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemenlarik betipe sama, maka nilai yang disimpan oleh setiap elemen jugaharus bertipe sama.
158
157
162
169
170
170
1
2
3
4
5
6
Mendeklarasikan Larik
• Larik adalah struktur data yang static, artinya jumlah elemen larikharus sudah terdefinisi di dalam program. Jumlah elemen larik tidakdapat diubah, ditambah, atau dikurangi selama pelaksanaanprogram.
DEKLARASI
NamaLarik: array[idx_awal…idx_akhir] of tipe
Mendeklarasikan Larik (2)
A. Sebagai PeubahDEKLARASI
N : array[1..100] of integer
NamaMhs : array[1..12] of string
NilUjian : array[0..74] of real
P : array[1..100] of Titik
B. Sebagai Tipe BentukanDEKLARASI
type LarikInt : array[1..100] of integer
N : LarikInt
C. Sebagai Konstantaconst Nmaks = 100
type LarikInt : array [1..Nmaks] of integer
N : LarikInt
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 i sudahterisi nilainya}
NamaMhs[i+1] {mengacu elemen ke-i+1 dari larik A, asalkan i
sudah terisi nilainya}
P[k].x {mengacu absis-x pada titik P ke-k}
Contoh-contoh memanipulasi atau menggunakan elemen larik:
A[4] 10 {mengisi elemen keempat dari larik A dengannilai 10}
NamaMhs[i] ‘Achmad’ {mengisi elemen ke-i dari larik NamaMhs
dengan string ‘Achmad’
Read(A[i]) {membaca elemen ke-i dari larik A}
Kapan Menggunakan Larik?
• Larik digunakan bila kita mempunyai sejumlah data yang sejenis danbertipe sama dan kita perlu menyimpan sementara data tersebutuntuk selanjutnya data tersebut kita proses.
• Dengan menggunakan larik kita dapat menghindari penggunaannama-nama peubah yang banyak.
Contoh Perhitungan Rata-Rata Menggunakan Larik
Sumber: Algoritma&Pemrograman, Rinaldi Munir&Leony Widya
Ukuran Efektif Larik
Meskipun kita mendefinisikan jumlah elemen larik di dalam bagiandeklarasi, seringkali kita tidak menggunakan semuanya di dalamprogram. Bila larik A didefinisikan 100 elemen, mungkin tidak seratuselemen tersebut yang dipakai. Mungkin saja hanya 15, 40, atau 70elemen. Banyaknya larik yang dipakai disebut sebagai ukuran efektiflarik.
Pemrosesan larik
• Elemen larik tersusun secara beruntun, sehingga elemen-elemen larikdiproses secara beruntun melalui indeksnya yang terurut
Misalkan larik A berukuran N elemen (N sudah terdefinisi nilainya), makaskema umum algoritma dalam memproses larik A adalah:i1
While i≤N do
pemrosesan terhadap A[i]
i i+1
end while
{i > Nmaks}
Atau
for i 1 to N do
pemrosesan terhadap A[i]
end for
Menginisialisasi Larik
a. Menginisialisasi elemen-elemen larik dengan nilai 0
ALGORITMA
read(N)
for i1 to N do
A[i] 0
end for
0
0
0
0
0
0
1
2
3
4
5
6
Menginisialisasi Larik
b. Menginisialisasi setiap elemen larik ke-i dengan nilai i
ALGORITMA
read(N)
for i1 to N do
A[i] i
end for1
2
3
4
5
6
1
2
3
4
5
6
Menginisialisasi Larik
c. Menginisialisasi setiap elemen larik dengan pembacaan
ALGORITMA
read(N)
for i1 to N do
read(A[i])
end for
Misalkan dibaca: 6,6,8,3,2,1
6
6
8
3
2
1
1
2
3
4
5
6
Mencetak Elemen-Elemen Larik
Untuk mencetak elemen-elemen larik, maka kita menuliskan nilai-nilai didalam setiap elemen larik ke piranti keluaran, misalnya ke layar komputer.Dalam hal ini, elemen larik dicetak satu per satu mulai untuk elemen pertamasampai elemen ke-N
PROGRAM CetakLarik
{Program untuk mencetak larik}
DEKLARASI
i: integer
A: array [1..N] of integer
ALGORITMA
read(N)
for i1 to N do
write(A[i])
end for
Mencari Nilai Maksimum Larik
• Nilai maksimum pada larik integer/real adalah elemen larik yangmempunyai nilai terbesar di antara elemen larik lainnya.
• Untuk menentukan nilai maksimum kita dapat melakukanpendekatan dengan cara menentukan nilai maksimum sementaraterlebih dahulu.
6
6
8
3
2
1
1
2
3
4
5
6
Nilai Maksimum8
Mencari Nilai Maksimum Larik
6
6
8
3
2
1
1
2
3
4
5
6
Nilai Maksimumsementara
Asumsi maks = A[1] (Nilai maksimum sementara=6)A[2] > maks? Tidak maks tidak berubahA[3] > maks? Ya maks A[3] = 8A[4] > maks? Tidak maks tidak berubahA[5] > maks? Tidak maks tidak berubahA[6] > maks? Tidak maks tidak berubahProses perbandingan selesai.
Kesimpulan: maks = 8 (nilai maksimum larik)
Bagaimana Pseudocode nya??
Pseudocode Mencari Nilai Maksimum Larik
PROGRAM CariMaksimumLarik
{Program untuk mencari elemen terbesar di dalam larikA[i..N]
DEKLARASI
A: array [1..N] of integer
i: integer
ALGORITMA
maks A[1]
read(N)
for i 2 to N do
if A[i] > maks then
maks i
end if
end for
Menyalin Larik
Diberikan sebuah larik integer A yang sudah terdefinisi elemen-elemennya. Ukuran larik adalah N elemen. Kita ingin menyalin (copy)elemen-elemen larik A ke dalam larik yang lain misalnya B.
6
6
8
3
2
1
1
2
3
4
5
6
A B
Bagaimana Pseudocode nya??
668321
Pseudocode Menyalin Larik
PROGRAM SalinLarik
{Program untuk menyalin elemen di dalam larik A ke B}
DEKLARASI
A,B: array [1..n] of integer
i: integer
ALGORITMA
read(n)
for i 1 to n do
B[i] A[i]
end for
Larik Bertipe Terstruktur
• Contoh-contoh algoritma yang dibahas sebelum ini menggunakanlarik dengan elemen yang bertipe sederhana.
• Elemen larik juga dapat bertipe terstruktur.
• Sebagai contoh, misalkan kita akan mengolah data 100 orangmahasiswa. Data setiap mahasiswa terdiri dari NIM, namamahasiswa, dan IPK. Struktur lojik dari larik Mhs ditunjukkan sepertiberikut ini:
NIM NamaMhs IPK
129801 Panji Bonar 3.04
129804 Ki Jambrong 2.80
… … …
… … …
… … …
129880 Roy Suryo 2.00
1
2
3
.
.
100
Bagaimana Deklarasi-nya??
Deklarasi Larik Bertipe Terstruktur
DEKLARASI
const Nmaks = 100
type Mahasiswa: record <NIM: string,
NamaMhs: string,
IPK: real>
type TabelMhs: array[1..Nmaks] of Mahasiswa
Mhs: TabelMhs
Cara mengacu elemen Mhs:
Mhs[2] {elemen kedua dari larik Mhs}
Mhs[2].NIM {mengacu field NIM dari elemen kedua larik}
Mhs[2].IPK {mengacu field IPK dari elemen kedua larik}
Untuk mencetak kita tidak dapat melakukan elemen larik seperti di bawah ini:
write(Mhs[i])
Namun harus seperti berikut ini:
write(Mhs[i].NIM,Mhs[i].IPK,Mhs[i].NamaMhs)
Latihan Soal
Diberikan nilai ujian n orang mahasiswa telah disimpan di dalam larikNilUjian. Kita akan menghitung nilai indeks (A/B/C/D/E) darimahasiswa tersebut dan menyimpan nilai indeks tersebut di dalamlarik Indeks. Indeks nilai ujian ditentukan sebagai berikut:
NilUjian[i] ≥ 80 Indeks Nilai = A
70 ≤ NilUjian[i] < 80 Indeks nilai = B
55 ≤ NilUjian[i] < 70 Indeks nilai = C
45 ≤ NilUjian[i] < 55 Indeks nilai = D
NilUjian[i] < 45 Indeks nilai = E
Pembahasan
PROGRAM HitungNilaiMHS
{Program Untuk menghitung nilaiMHS}
DEKLARASI
i,N: integer
NilUjian: array [1..N] of real
Indeks: array [1..N] of char
ALGORITMA
read (N)
for i1 to N do
if NilUjian[i] ≥ 80 then
Indeks[i]’A’
else
if (NilUjian[i]≥70) and (NilUjian[i]<80) then
Indeks[i]’B’
dst…..