Larik/Array ALGORITMA DAN PEMROGRAMAN [IS ] Koordinator Mata Kuliah : Fathushahib, S.Kom., M.Kom Tim Dosen: Yudha Saintika, S.T., M.T.I
Sub-CapaianPembelajaranMK “Mahasiswa mampu menerapkan konsep larik dalam program.”
PetaPetaCapaianPembelajaranMK !!! 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 yangterdiri dari sekumpulan elemen bertipe sama, setiap elemen di dalam larik langsung melalui indeksnya. Misalnya sebuah larik yang bernama A dengan enam diacu secara buah elemen dapat dibayangkan sebagai sekumpulan kotak tersusun secara vertikal atau horizontal) A[1], A[2], A[3], A[4], A[5], A[6] yangyangterurut(baik(baik
Pendahuluan Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen larik betipe sama, maka nilai harus bertipe sama. yangyangdisimpanoleholehsetiapelemenjuga
Mendeklarasikan Larik Larik adalah struktur data yang static, artinya jumlah elemen larik harus sudah terdefinisi di dalam program. Jumlah elemen larik tidak dapatdapatdiubah,ditambah,ataudikurangiselama pelaksanaan program. DEKLARASI NamaLarik: array[idx_awal…idx_akhir] of tipe
Mendeklarasikan Larik (2) A.Sebagai Peubah DEKLARASI N NamaMhs NilUjian P :::::::: array[1..100] of integer array[1..12] of string array[0..74] of real array[1..100] of Titik B.Sebagai Tipe Bentukan DEKLARASI type LarikInt N Sebagai Konstanta : array[1..100] of integer : LarikInt C. const Nmaks = type LarikInt N 100 : array [1..Nmaks] of integer : LarikInt
Cara Mengacu Elemen Larik A[4] NamaMhs[2] A[i] {mengacu elemen keempat dari larik A} {mengacu elemen kedua dari larik NamaMhs} {mengacu elemen ke-i dari larik A, asalkan i sudah terisi nilainya} {mengacu elemen ke-i+1 dari larik A, asalkan i sudah terisi nilainya} {mengacu absis-x pada titik P ke-k} NamaMhs[i+1] P[k].x Contoh-contoh memanipulasi atau menggunakan elemen larik: A[4] 10 {mengisi elemen keempat dari larik A dengan nilai 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 dan bertipe sama dan kita perlu menyimpan sementara data tersebut untuk selanjutnya data tersebut kita proses. Dengan menggunakanlarikkitadapatdapatmenghindaripenggunaan nama-nama peubah yang banyak.
Contoh Perhitungan Rata-Rata Konvensional {Programyang membaca6buahdata,mencetaknya,danmenghitungrata u:real Sumber: Algoritma&Pemrograman, Rinaldi Munir&Leony Widya OGRAM HitungRerata_ TanpaLarik ratanya. Tanpa menggunakan larik} DEIClARASI D,r.2, X3, X4, XS, x6 : integer
i Wl ContohPerhitungan Rata-RataMenggunakanLarik ratanya. Tanpa menggunalcan larik } i: integer for i..- 1 to6do. 'll. te. 1:xCiD.-1to6do for u Sumber: Algoritma&Pemrograman, Rinaldi Munir&Leony Widya PROGRAM HitungRerata denganlarilc ( Program yang membaca 6 buah data, mencetaknya, dan menghitung DEKI..ARASI x: array(1.. 6] of integer jumlah, u: real ALGORITMA: { Baca 6 buah nilai integer, simpan di xlil, i = 1, 2,,6 } rad(x(i]) end for ( Cdak setiap nilai x[i}, i = 1, a,..., 6} { ldtung nilai rata-rata} jumlah..-o 1..-1to6do jumlah... jumlah + %(11 u }umlah/6
Ukuran Efektif Larik Meskipun kita mendefinisikan jumlah elemen larik di dalam bagian deklarasi,seringkali kitatidaktidakmenggunakansemuanyadidalamdalam program. Bila larik A didefinisikan 100 elemen, mungkin tidak seratus elemen tersebut yang dipakai. Mungkin saja hanya 15, 40, atau 70 elemen. Banyaknya larik yang dipakai disebut sebagai ukuran efektif larik.
Pemrosesan larik Elemen larik tersusun secara beruntun, sehingga elemen-elemen larik diproses secara beruntun melalui indeksnya yang terurut Misalkan larik A berukuran N elemen (N sudah terdefinisi nilainya), maka skema umum algoritma dalam memproses larik A adalah: i 1 While i≤N do pemrosesan i i+1 end while {i > Nmaks} terhadapA[i] Atau for i 1 to N do pemrosesan terhadap end for A[i]
Menginisialisasi Larik a. Menginisialisasi elemen-elemen ALGORITMA read(N) larik dengan nilai 0 i1i1 fortoN0N0 do A[i] for end
Menginisialisasi Larik b. Menginisialisasi setiap elemen larik ke-i dengan nilai i ALGORITMA read(N) i 1 A[i] for to N do i end
Menginisialisasi Larik c. Menginisialisasi setiap elemen larik dengan pembacaan ALGORITMA read(N) i1i1 fortoNdo read(A[i]) for end 1212 Misalkan dibaca: 6,6,8,3,2,
Mencetak Elemen-Elemen Larik Untuk dalam mencetak elemen-elemen larik, maka kita menuliskan nilai-nilai di setiap elemen larik ke piranti keluaran, misalnya ke layar komputer. DalamDalamhal ini, elemen larik dicetak satu per satumulai untuk elemen pertama sampai elemen ke-N PROGRAM CetakLarik {Program untuk mencetak DEKLARASI i: integer A: array [1..N] of ALGORITMA read(N) fori 1 to N do write(A[i]) end for larik} integer
8 Mencari Nilai Maksimum Larik Nilai maksimum pada larik integer/real adalah elemen mempunyai nilai terbesar di antara elemen larik lainnya. larikyang Nilai Maksimum 5656 Untukmenentukannilaimaksimumkitadapat melakukan pendekatan dengan cara menentukan nilai maksimum sementara terlebih dahulu
MencariNilai Maksimum Larik Asumsi maks = A[1] A[2] > maks? Tidak A[3] > maks? Ya A[4] > maks? Tidak A[5] > maks? Tidak A[6] > maks? Tidak Proses perbandingan (Nilai maksimum sementara=6) maks tidak berubah maks A[3] = 8 maks tidak berubah maks tidak berubah maks tidak berubah selesai Nilai Maksimum sementara Kesimpulan: maks = 8 (nilai maksimum larik) Bagaimana Pseudocode nya??
Pseudocode Mencari Nilai Maksimum Larik PROGRAM CariMaksimumLarik {Program untuk mencari elemen A[i..N] terbesardidalamlarik 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 Diberikansebuahsebuahlarik integerAyangsudahterdefinisielemen- elemennya. Ukuran larik adalah N elemen. Kita ingin menyalin(copy)(copy) elemen-elemenlarik A kedalam larik yang lain misalnya B. A B BagaimanaBagaimanaPseudocodenya??
Pseudocode MenyalinLarik PROGRAM {Program ke B} SalinLarik untukmenyalinelemendididalamlarikA DEKLARASI A,B:array[1..n] ofinteger i:integer ALGORITMA read(n) i for1tondo B[i] for A[i] end
Larik Bertipe Terstruktur Contoh-contoh algoritma yang dibahas sebelum ini menggunakan larik dengan elemen yang bertipe sederhana. Elemen larik juga dapat bertipe terstruktur. SebagaiSebagaicontoh,contoh,misalkan setiap kitaakan mengolahdatadata100orang nama seperti mahasiswa. mahasiswa, berikut ini: DatamahasiswaterdiriterdiridaridariNIM, dandanIPK.IPK.StrukturlojikdaridarilarikMhsditunjukkan NIM NamaMhs IPK Panji Bonar Ki Jambrong 2.80 … … … Roy Suryo 2.00 Bagaimana Deklarasi-nya??
Deklarasi Larik Bertipe Terstruktur DEKLARASI const Nmaks = 100 typeMahasiswa: record <NIM: string, NamaMhs: string, IPK: real> TabelMhs: array[1..Nmaks] of Mahasiswa TabelMhs type Mhs: Cara mengacu elemen Mhs: Mhs[2] Mhs[2].NIM Mhs[2].IPK {elemen kedua dari larik Mhs} {mengacu field NIM dari elemen kedua larik} {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 larik NilUjian.KitaKitaakanmenghitungnilai indeks (A/B/C/D/E)daridari mahasiswa tersebut dan menyimpan nilai indeks tersebut larik Indeks. Indeks nilai ujian ditentukan sebagai berikut: didalamdalam Indeks Nilai = A Indeks nilai = B Indeks nilai = C Indeks nilai = D Indeks nilai = E NilUjian[i] ≥ ≤ NilUjian[i] 55 ≤ NilUjian[i] 45 ≤ NilUjian[i] NilUjian[i] < 45 < 80 < 70 < 55
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 i 1 to N do if NilUjian[i] ≥ 80 then Indeks[i] ’A’ else if (NilUjian[i]≥70) and (NilUjian[i]<80) Indeks[i] ’B’ dst….. then
..A y ) U I ~ "·. z.z. c- :?:i z Lii L :z ii " e n 11NGIC1 men ~z~I~z~I C ow.ni YAQHANYE --A~"""-:.- TASHAKKUR AT GRACIASti K a = i5 -,. = SH = U · KURIA -=' ; ARIGAT01·1w : S., GOZAIMASII TA EFCHARISTO -.., ~ "~ BOLZiNMER ci