Algoritma Pemrograman

advertisement
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
Download