Algoritma Pemrograman Pertemuan Ke-11 (Larik) :: NoorIfada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Pendeklarasian Larik Mengisi Elemen Larik dari Piranti Masukan Menulis Elemen Larik ke Piranti Keluaran Kapan Larik Perlu Untuk Digunakan? S1 Teknik Informatika-Unijoyo 2 1
Pendahuluan Larik (array) adalah tipe terstruktur yang terdiri dari sejumlah elemen-elemen yang bertipe sama Banyaknya elemen dalam suatu larik ditunjukkan oleh suatu indeks yang harus merupakan tipe data yang menyatakan keterurutan, misalnya integer atau karakter (karena ia menyatakan posisi data) Tiap-tiap elemen di larik dapat diakses langsung melalui indeksnya Suatu larik memiliki jumlah elemen yang jumlahnya tetap, sehingga jumlah elemen larik tidak dapat diubah selama pelaksanaan program S1 Teknik Informatika-Unijoyo 3 Pendeklarasian Larik Untuk mendefinisikan suatu larik, yang perlu dilakukan adalah mendefinisikan banyaknya elemen larik dan mendefinisikan tipe elemen larik Deklarasi dalam Algoritma: NamaLarik : array[1..jumlahelemen] of TipeElemen Deklarasi dalam Pascal: (* *) NamaLarik : array[1..jumlahelemen] of TipeElemen; Cara mengacu elemen larik: NamaLarik[indeks] S1 Teknik Informatika-Unijoyo 4 2
Contoh Deklarasi Larik type LarikInt : array[1..100] of integer Urutan : array[1..100] of integer NamaMhs : array[ a.. j ] of string NilUjian : array[0..50] of real P : LarikInt (* *) type LarikInt = array[1..100] of integer; Urutan : array[1..100] of integer; NamaMhs : array[ a.. j ] of string[30]; NilUjian : array[0..50] of real; P : LarikInt; S1 Teknik Informatika-Unijoyo 5 Elemen larik dapat diisi nilai yang dibaca dari piranti masukan dengan perintah read procedure BacaLarik(output A : LarikInt, input N : integer) { Mengisi setiap elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan } { K.Awal : N adalah jumlah elemen efektif larik, nilainya sudah terdefinisi } { K.Akhir : setelah pembacaan, seluruh elemen larik A[1..N] berisi nilai-nilai yang dibaca dari piranti masukan } k : integer { pencatat indeks larik } DESKRIPSI: for k 1 to N do read(a[k]) Mengisi Elemen Larik dari Piranti Masukan S1 Teknik Informatika-Unijoyo 6 3
Contoh Translasi Pascal Pengisian Larik type LarikInt = array[1..100] of integer; A : LarikInt; procedure BacaLarik( A : LarikInt; N : integer); k : integer; for k:=1 to N do write( Masukkan elemen ke-,k, : ); readln(a[k]) S1 Teknik Informatika-Unijoyo 7 Isi elemen larik dapat dicetak ke piranti keluaran dengan perintah write procedure TulisLarik(input A : LarikInt, input N : integer) { Mencetak elemen larik A[1..N] ke piranti keluaran } { K.Awal: Elemen larik A[1..N] sudah terdefinisi nilainya } { K.Akhir: N buah elemen larik A tercetak nilainya } k : integer { pencatat indeks larik } DESKRIPSI: for k 1 to N do write(a[k]) Menulis Elemen Larik ke Piranti Keluaran S1 Teknik Informatika-Unijoyo 8 4
Contoh Translasi Pascal Menuliskan Isi Larik Type LarikInt = array[1..100] of integer; A : LarikInt; procedure TulisLarik(A : LarikInt; N : integer); k : integer; for k:=1 to N do write( Elemen ke-,k, :,A[k]); S1 Teknik Informatika-Unijoyo 9 Kapan Larik Perlu untuk Digunakan? Larik digunakan apabila pada program diperlukan suatu penyimpanan sementara data yang bertipe sama di dalam memori, dan untuk selanjutnya data tersebut dimanipulasi atau diterapkan oleh proses lainnya S1 Teknik Informatika-Unijoyo 10 5
Contoh: Penyelesaian Tanpa Menggunakan Larik [1] ALGORITMA TANPA_LARIK I, X : integer DESKRIPSI: { Baca 5 buah nilai integer, simpan di X } for I 1 to 5 do read(x) { Cetak setiap nilai X ke piranti keluaran } for I 1 to 5 do write(x) Endfor PROGRAM TANPA_LARIK; I, X : integer; writeln( Masukkan 5 buah bilangan integer! ); for I := 1 to 5 do write( Bilangan ke-,i, : ); readln(x) writeln; writeln( Hasil keluaran : ); for I := 1 to 5 do writeln( Bilangan ke-,i, :,X); end. S1 Teknik Informatika-Unijoyo 11 Contoh: Penyelesaian Tanpa Menggunakan Larik [2] Bila algoritma dijalankan dengan runtunan nilai X yang dibaca dari piranti masukan adalah 20, 30, 40, 50, maka keluaran algoritma TANPA_LARIK_1 adalah Nilai-nilai 20, 30, 40, dan 50 tidak tercetak karena peubah X hanya dapat menampung satu buah nilai, dan nilai yang disimpan oleh X adalah nilai yang terakhir kali diisikan (pada contoh di atas adalah ). Nilai yang terakhir inilah yang dicetak ke piranti keluaran pada setiap kali pengulangan S1 Teknik Informatika-Unijoyo 12 6
Contoh: Penyelesaian dengan Menggunakan Larik [1] ALGORITMA DENGAN_LARIK X : array[1..5] of integer I : integer DESKRIPSI: { Baca 5 buah nilai integer, simpan di X[I],I=1,2,,5 } for I 1 to 5 do read(x[i]) { Cetak nilai X[I] ke piranti keluaran, I=1, 2,..., 5 } for I 1 to 6 do write(x[i]) PROGRAM DENGAN_LARIK; I : integer; X : array[1..5] of integer; writeln( Masukkan 5 buah bilangan integer! ); for I := 1 to 5 do write( Bilangan ke-,i, : ); readln(x[i]) writeln; writeln( Hasil keluaran : ); for I := 1 to 5 do writeln( Bilangan ke-,i, :,X[I]); end. S1 Teknik Informatika-Unijoyo 13 Contoh: Penyelesaian dengan Menggunakan Larik [2] Bila algoritma dijalankan dengan runtunan nilai X yang dibaca dari piranti masukan adalah sebagai berikut 20, 30, 40, 50, maka keluaran algoritma DENGAN_LARIK_1 adalah: 20 30 40 50 S1 Teknik Informatika-Unijoyo 14 7
Contoh: Penyelesaian dengan Menggunakan Larik [3] Selama pelaksanaan program, elemen larik tetap menyimpan nilai. Hal ini bermanfaat bila ingin menggunakan nilai-nilai di dalam larik tersebut untuk proses lebih lanjut di bagian lain di dalam algoritma Contoh Lanjutan: Menghitung nilai rata-rata dari seluruh elemen larik yang dimasukkan melalui piranti masukan (dengan menggunakan prosedur) S1 Teknik Informatika-Unijoyo 15 ALGORITMA RATA_RATA_NILAI (* Program Utama *) const Nmaks = 100 { banyaknya elemen larik } type larikint : array[1..nmaks] of integer A : LarikInt N : integer { ukuran larik efektif } R : real { nilai rata-rata elemen larik } procedure BacaLarik(output A : LarikInt, input N : integer) k : integer { pencatat indeks larik } DESKRIPSI: for k 1 to N do read(a[k]) procedure HitungRatarata(input A : LarikInt, input N : integer, output u : real) (* Prosedur *) k : integer { indeks larik } jumlah : real { jumlah total seluruh nilai } DESKRIPSI: (* Prosedur *) k 1 { dimulai dari elemen pertama } jumlah 0 {jumlah total nilai mula-mula } for k 1 to N do jumlah jumlah+a[k] u jumlah/n DESKRIPSI: (* Program Utama *) read(n) { 1 N Nmaks } BacaLarik(A, N) HitungRataRata(A,N,R) write(r) { cetak nilai rata-rata } S1 Teknik Informatika-Unijoyo 16 8
PROGRAM RATA_RATA_NILAI; const Nmaks = 100; type larikint = array[1..nmaks] of integer; A : LarikInt; N : integer; R : real; procedure BacaLarik( A : LarikInt; N : integer); k : integer; for k:=1 to N do write( Masukkan elemen ke-,k, : );readln(a[k]) procedure HitungRatarata(A:LarikInt;N:integer; u:real); k : integer; jumlah : real; k := 1 ; jumlah := 0; for k := 1 to N do jumlah := jumlah+a[k]; u := jumlah/n; writeln('menghitung nilai rata-rata dengan menggunakan larik '); write('masukkan jumlah bilangan? ');readln(n);readln(n); BacaLarik(A, N); HitungRataRata(A,N,R); writeln(r); end. S1 Teknik Informatika-Unijoyo 17 Summary Larik (array) adalah tipe terstruktur yang terdiri dari sejumlah elemen-elemen yang bertipe sama Banyaknya elemen dalam suatu larik ditunjukkan oleh suatu indeks yang harus merupakan tipe data yang menyatakan keterurutan, misalnya integer atau karakter (karena ia menyatakan posisi data) dan tiap-tiap elemen di larik dapat diakses langsung melalui indeksnya Untuk mendefinisikan suatu larik, yang perlu dilakukan adalah mendefinisikan banyaknya elemen larik dan mendefinisikan tipe elemen larik Larik biasanya diperlukan ketika akan membuat program yang memperlukan penyimpanan sementara data yang bertipe sama di dalam memori S1 Teknik Informatika-Unijoyo 18 9
Daftar Pustaka Jogiyanto HM [1989]. Turbo Pascal, Yogyakarta: Andi Offset. Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman (Hibah Kompetisi A1), Bangkalan: Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika. S1 Teknik Informatika-Unijoyo 19 10