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 *) var 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; var 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; var A : LarikInt; procedure BacaLarik(var A : LarikInt; N : integer); var k : integer; begin for k:=1 to N do begin 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; var A : LarikInt; procedure TulisLarik(A : LarikInt; N : integer); var k : integer; begin 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 PROGRAM TANPA_LARIK; var I, X : integer; 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 begin writeln(‘Masukkan 5 buah bilangan integer ! ’); for I := 1 to 5 do begin 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; var I : integer; X : array[1..5] of integer; begin writeln(‘Masukkan 5 buah bilangan integer ! ’); for I := 1 to 5 do begin 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; var A : LarikInt; N : integer; R : real; procedure BacaLarik(var A : LarikInt; N : integer); var k : integer; begin for k:=1 to N do begin write(‘Masukkan elemen ke-‘,k,’ : ‘);readln(A[k]) end; end; procedure HitungRatarata(A:LarikInt;N:integer;var u:real); var k : integer; jumlah : real; begin k := 1 ; jumlah := 0; for k := 1 to N do jumlah := jumlah+A[k]; u := jumlah/N; end; begin 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