Algoritma Pemrograman Pertemuan Ke-11 (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
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: 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
2
Contoh Deklarasi Larik 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
3
Contoh Translasi Pascal Pengisian Larik 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
4
Contoh Translasi Pascal Menuliskan Isi Larik
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
5
Contoh: Penyelesaian Tanpa Menggunakan Larik [1] 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
Contoh: Penyelesaian Tanpa Menggunakan Larik [2]
Bila algoritma dijalankan dengan runtunan nilai X yang dibaca dari piranti masukan adalah
maka keluaran algoritma TANPA_LARIK_1 adalah
20, 30, 40, 50, 60 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 adalah 60). 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 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
13
Contoh: Penyelesaian dengan Menggunakan Larik [2]
Bila algoritma dijalankan dengan runtunan nilai X yang dibaca dari piranti masukan adalah sebagai berikut
maka keluaran algoritma DENGAN_LARIK_1 adalah:
20, 30, 40, 50, 60 20 30 40 50 60
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 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
16
8
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
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