decision support system [mkb3493] -...

28
Larik/Array ALGORITMA DAN PEMROGRAMAN [IS6110102] Koordinator Mata Kuliah : Fathushahib, S.Kom., M.Kom Tim Dosen: Yudha Saintika, S.T., M.T.I

Upload: ledan

Post on 15-Jun-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Larik/Array

ALGORITMA DAN PEMROGRAMAN [IS6110102]

Koordinator Mata Kuliah :Fathushahib, S.Kom., M.KomTim Dosen: Yudha Saintika, S.T., M.T.I

Sub-Capaian Pembelajaran MK

“Mahasiswa mampu menerapkan konsep larik dalamprogram.”

Peta Capaian Pembelajaran MK

We Are Here !!!

Mid Test

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 Konvensional

Sumber: Algoritma&Pemrograman, Rinaldi Munir&Leony Widya

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…..