Algoritma Pemrograman Pertemuan Ke-10 (Larik) :: Noor Ifada :: 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
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: DEKLARASI NamaLarik : array[1..jumlahelemen] of TipeElemen Deklarasi dalam Pascal: (* DEKLARASI *) NamaLarik : array[1..jumlahelemen] of TipeElemen; Cara mengacu elemen larik: NamaLarik[indeks] S1 Teknik Informatika-Unijoyo 4
Beberapa contoh mendefinisikan larik di dalam bagian Deklarasi dengan tipe yang bermacam-macam: DEKLARASI 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 (* DEKLARASI *) 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
Mengisi Elemen Larik dari Piranti Masukan 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 } DEKLARASI k : integer { pencatat indeks larik } DESKRIPSI: for k 1 to N do read(a[k]) endfor S1 Teknik Informatika-Unijoyo 6
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]) end; end; S1 Teknik Informatika-Unijoyo 7
Menulis Elemen Larik ke Piranti Keluaran 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 } DEKLARASI k : integer { pencatat indeks larik } DESKRIPSI: for k 1 to N do write(a[k]) endfor S1 Teknik Informatika-Unijoyo 8
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]); end; 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
Contoh Algoritma dan Program Tanpa Menggunakan Larik ALGORITMA TANPA_LARIK DEKLARASI I, X : integer DESKRIPSI: { Baca 5 buah nilai integer, simpan di X } for I 1 to 5 do read(x) endfor { 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) end; writeln; writeln( Hasil keluaran : ); for I := 1 to 5 do writeln( Bilangan ke-,i, :,X); end. S1 Teknik Informatika-Unijoyo 11
Bila algoritma dijalankan dengan runtunan nilai X yang dibaca dari piranti masukan adalah 20, 30, 40, 50, 60 maka keluaran algoritma TANPA_LARIK_1 adalah 60 60 60 60 60 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: 50). Nilai yang terakhir inilah yang dicetak ke piranti keluaran pada setiap kali pengulangan S1 Teknik Informatika-Unijoyo 12
Oleh sebab itu perlu penggunaan larik. Untuk menyelesaikan permasalahan di atas maka menggunakan larik X yang berukuran 5 elemen, setiap elemen bertipe integer S1 Teknik Informatika-Unijoyo 13
Contoh Algoritma dan Program Dengan Menggunakan Larik ALGORITMA DENGAN_LARIK DEKLARASI 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]) endfor { Cetak nilai X[I] ke piranti keluaran, I=1, 2,..., 5 } for I 1 to 6 do write(x[i]) endfor 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]) end; writeln; writeln( Hasil keluaran : ); for I := 1 to 5 do writeln( Bilangan ke-,i, :,X[I]); end. S1 Teknik Informatika-Unijoyo 14
Bila algoritma dijalankan dengan runtunan nilai X yang dibaca dari piranti masukan adalah sebagai berikut 20, 30, 40, 50, 60 maka keluaran algoritma DENGAN_LARIK_1 adalah: 20 30 40 50 60 S1 Teknik Informatika-Unijoyo 15
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 16
ALGORITMA RATA_RATA_NILAI DEKLARASI (* 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) DEKLARASI k : integer { pencatat indeks larik } DESKRIPSI: for k 1 to N do read(a[k]) endfor procedure HitungRatarata(input A : LarikInt, input N : integer, output u : real) DEKLARASI (* 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] endfor 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 17
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]) end; end; 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; end; 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 18
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 tiaptiap 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 19
Daftar Pustaka Jogiyanto HM [1989]. Turbo Pascal, Andi Offset, Yogyakarta. Noor Ifada, ST [2005]. Diktat Matakuliah Algoritma Pemrograman, Hibah Kompetisi A1, Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Penerbit Informatika, Bandung. S1 Teknik Informatika-Unijoyo 20