Upload
others
View
30
Download
0
Embed Size (px)
Citation preview
LAPORAN RESMI
PRAKTIKUM ALGORITMA PEMROGRAMAN
MODUL V
“ARRAY”
Disusun Oleh :
LABORATORIUM COMMON COMPUTING
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2012
TGL. PRAKTIKUM : 06 November 2012
NAMA : Gabriel Juan Evangeli NRP : 120411100102
KELOMPOK : D1
DOSEN : Arik Kurniawati
TELAH DISETUJUI TANGGAL : ...........................................
ASISTEN PRAKTIKUM
SHOHIB (1004111000101)
BAB I
PENDAHULUAN
1.1 Latar Belakang
Mengatasi masalah ketika kita menemukan permasalaahn yang
membtutuhkan sejumlah data yang harus disimpan tetapi memiliki tipe
yang sama, berdasarkan modul – modul sebelumnya bahwa pemrograman
tersebut sangat tidak efektif. Misalkan apabila kita ingin menyimpan
sejumlah 100 data yang bertipe sama dan kita perlu menyimpan sementara,
untuk kemudian dipanggil sewaktu – waktu dan setelah itu digunakan
untuk diproses di algoritma selanjutnya, maka tidak mungkin kita akan
menggunakan 100 buah peubah yang sama.
Untuk itu dalam modul ini akan dibahas mengenai, pemrograman
yang berstruktur array. Array menrupakan pemrograman yang berguna
untuk menyimpan beberapa data yang bertipe sama, disimpan sementara,
dan kita dapat memanggil nilai tersebut untuk kemudian diproses pada
algoritma selanjutnya. Dengan menggunakan array, praktikan dapat
mengetahui fungsi dan keguunaan array untuk memudahkan dan
mempersingkat ketika coding program.
1.2 Tujuan
Tujuan mahasiswa mengikuti praktikum Algortima Pemrograman Modul
IV ini adalah :
1. Mengetahui dan mampu menerapkan pemrograman arrray yang
ada dalam algoritma. Salah satunya yang berjalan dalam pascal.
2. Mengetahui dan mampu menerapkan beberapa teknik
pemrograman array yang digunakan untuk menyimpan nilai
3. Mengetahui teknik kerja yang berbeda dari beberapa struktur
pemrograman array satu dimensi dengan array dua dimensi.
4. Mengetahui dan mampu menerapkan perbedaan penggunaan array
satu dimensi (larik) dan array dua dimensi (matriks).
5. Mengetahui manfaat penggunaan larik maupun matriks.
BAB II
DASAR TEORI
2.1 Teori
Larik 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.
Gambar 5.1. memperlihatkan struktur deklarasi Larik di dalam Bahasa Pascal.
Gambar 5.1. Struktur Deklarasi Bahasa Pascal Untuk Larik
Cara mengacu elemen larik : NamaLarik[indeks]
Larik dapat berupa larik satu dimensi ataupun lebih dari satu dimensi. Matriks
merupakan contoh larik yang memiliki dimensi lebih dari satu. Struktur
penyimpanan matriks di dalam memori utama yang setiap individu elemennya
diakses dengan menggunakan dua buah indeks (yang biasanya dikonotasikan
dengan baris dan kolom). Karena matriks sebenarnya adalah larik, konsep
umum dari larik juga berlaku untuk matriks, yaitu:
Kumpulan elemen yang bertipe sama dapat berupa tipe dasar ( integer,
real,boolean,char, dan string), atau tipe terstruktur seperti record.
Setiap elemen data dapat diakses secara langsung jika indeksnya
(baris dan kolom ) diketahui.
(* DEKLARASI *)
var
NamaLarik : array[1..JumlahElemen] of TipeElemen;
Merupakan struktu data yang statik, artinya jumlah elemennya sudah
dideklarasikan terlebih dahulu di dalam bagian DEKLARASI dan
tidak bisa diubah selama pelaksanaan program
Elemen matriks diakses melalui indeks baris dan indeks kolomnya, Jika indeks
baris dinyatakan dengan i dan indeks kolom dinyatakan dengan j, maka notasi
algoritmik untuk mangakses elemen pada baris i dan kolom j adalah
nama_matriks[i,j]
BAB III
TUGAS PENDAHULUAN
Kerjakan tugas – tugas di bawah ini sebelum praktikum dimulai.
1. Sebutkan dan jelaskan keuntungan – keuntungan penggunaan larik dan
matriks!
Jawab:
Keuntungan penggunaan larik dan matriks
Menghemat penggunaan banyak variable
Menghindari penggunaan variable yang banyak
Lebih praktis menggunakan larik dan matriks bila dibandingkan
dengan menggunakan program tanpa larik maupun matriks
Struktur yang lebih praktis,dengan pengaksesan cepat karena
langsung mengakses melalui indeksnnya
2. Kapankah sebaiknya larik dan matriks digunakan Jelaskan!
Jawab:
Kapan penggunaan larik dan matriks
Larik
o Larik digunakan bila sejumlah data yang banyak bertipe
sama
o Menyimpan sejumlah data yang besar tersebut kemudian
mengolahnya
o Data yang telah disimpan dapat diakses bila kita
memerlukannya untuk diproses
Matriks:Penggunaan yang sama dengan larik karena matrik
merupakan konsep yang berasal dari larik
o Kumpulan elemen yang bertipe sama.
o Setiap elemen yang kita butuhkan untuk diakses langsung
melalui indeks baris dan kolom , kemudian diproses seuai
kebutuhan kita.
o Struktur yang praktis dan bersifat statis, yang setiap
anggotanya dideklarasikan terlebih dahulu, sebelum
program diolah.
3. Buat algoritma untuk nilai min, kuartil bawah, kuartil tengah, kuartil atas da n
nilai max dari sejumlah bilangan bulat yang dimasukkan melalui piranti
masukkan.
Contoh :
Jumlah bilangan yang dimasukkan: 11
Bilangan ke-1: 75
Bilangan ke-2: 60
Bilangan ke-3: 70
Bilangan ke-4: 55
Bilangan ke-5: 85
Bilangan ke-6: 65
Bilangan ke-7: 80
Bilangan ke-8: 90
Bilangan ke-9: 50
Bilangan ke-10: 95
Bilangan ke-11: 100
Nilai Min :50
Kuartil Bawah :60
Kuartil Tengah:75
Kuartil Atas :90
Nilai Max :100
Jawab:
Algoritma, Coding, Running
Algoritma:
program kuartilminmak {mencari nilai min, kuartil bawah, tengah dan
atas, serta nilai maks }
DEKLARASI
type int : array [1..100] of real {tipe bentukan untuk menentukan
sejumlah larik}
procedure diurutkan(output x,y : real) {untuk mengurutkan / pengurutan
}
DEKLARASI
simpan : real
DESKRIPSI
simpan ← x
x ← y
y ←simpan
procedure tampung(output x:int input n: integer) {menampung sejumlah
data}
DEKLARASI
i,j : integer
DESKRIPSI
for i←1 to n-1 do {menampung sejumlah data}
for j←1 to n-i do
if x[j] > x[j+1] then
diurutkan(x[j],x[j+1])
procedure ganjil(output x:int input n: integer) {bila data yang dicari
nilai min, kuartil(bawah,tengah,atas), max),mak merupakan data
ganjil}
DEKLARASI
q1,q2,q3:integer
DESKRIPSI
q1 ←(n+1) div 4
q2 ←(n+1) div 2
q3 ←(3*(n+1)) div 4
write('Kuartil bawah : ',x[q1]:2:2)
writeln
write('Kuartil tengah : ',x[q2]:2:2)
writeln
write('Kuartil atas : ',x[q3]:2:2)
writeln
procedure genap(output x:int input n: integer) {bila data yang dicari
nilai min, kuartil(bawah,tengah,atas), max),mak merupakan data
genap}
DEKLARASI
q1,q2,q3:integer
median:real
DESKRIPSI
q1 ←(n+2) div 4
q2←n div 2
median ←((x[q2])+(x[q2+1])) / 2
q3 ←(3*n+2) div 4
write('Kuartil bawah : ',x[q1]:2:2)
writeln
write('Kuartil tengah : ',median:2:2)
writeln
write('Kuartil atas : ',x[q3]:2:2)
writeln
{PROGRAM UTAMA}
DEKLARASI
n,i : integer
data : int
DESKRIPSI
write('Jumlah bilangan yang dimasukkan : ')
readln(n)
for i←1 to n do
begin
write('Bilangan ke-',i,' = ')
readln(data[i])
endfor
tampung(data,n){memanggil upa program pengurutan }
writeln
write('Nilai Min =', data[1]:0:0)
writeln
if n mod 2 = 1 then ganjil(data,n)
else genap(data,n)
writeln ('Nilai Max =',data[n]:0:0)
Coding:
program kuartilminmak;
uses wincrt;
type
int = array [1..100] of real;
procedure diurutkan(var x,y : real);
var simpan : real;
begin
simpan := x;
x := y;
y := simpan;
end;
procedure tampung(var x:int ; n: integer);
var i,j : integer;
begin
for i:=1 to n-1 do
for j:=1 to n- i do
if x[j] > x[j+1] then
diurutkan(x[j],x[j+1]);
end;
procedure ganjil(var x:int ; n: integer);
var q1,q2,q3:integer;
begin
q1 :=(n+1) div 4;
q2 :=(n+1) div 2;
q3 :=(3*(n+1)) div 4;
write('Kuartil bawah : ',x[q1]:2:2);
writeln;
write('Kuartil tengah : ',x[q2]:2:2);
writeln;
write('Kuartil atas : ',x[q3]:2:2);
writeln;
end;
procedure genap(var x:int ; n: integer);
var q1,q2,q3:integer;
median:real;
begin
q1 :=(n+2) div 4;
q2 :=n div 2;
median:= ((x[q2])+(x[q2+1])) / 2;
q3 :=(3*n+2) div 4;
write('Kuartil bawah : ',x[q1]:2:2);
writeln;
write('Kuartil tengah : ',median:2:2);
writeln;
write('Kuartil atas : ',x[q3]:2:2);
writeln;
end;
var
n,i : integer;data : int;
begin
write('Jumlah bilangan yang dimasukkan : ');
readln(n);
for i:= 1 to n do
begin
write('Bilangan ke-',i,' : ');
readln(data[i]);
end;
tampung(data,n);
writeln;
write('Nilai Min :', data[1]:0:0);
writeln;
if n mod 2 = 1 then ganjil(data,n)
else genap(data,n);
writeln ('Nilai Max :',data[n]:0:0);
end.
Running:
4. Buat algoritma untuk menghitung hasil perkalian antara dua buah matriks.
Masukkan :nilai – nilai dalam dua buah matriks
Keluaran :hasil perkalian dua buah matriks
Jawab : Algoritma , Coding, Running
Algoritma:
program perkalian2Matriks {MENGALIKAN 2 BUAH MATRIKS}
DEKLARASI
type
z: array [1..50,1..50] of integer
DEKLARASI
a,b,c : z
i,j,k,x,y,p : integer
DESKRIPSI
writeln('Ordo matrik A') {mengisi ukuran matriks A}
write('Baris : ') readln(x)
write('Kolom : ') readln(y)
writeln
writeln
writeln('Ukuran matrix B') {mengisi ukuran matriks B}
writeln('Baris : ',y)
write('Kolom : ') readln(p)
for i←1 to x do
for j←1 to y do
write('Anggota A[',i,',',j,'] : ') {mengisi ANGGOTA matriks A}
readln(a[i,j])
endfor
writeln
for i←1 to y do
for j←1 to x do
begin
write('Anggota B[',i,',',j,'] : ') {mengisi ANGGOTA matriks A}
readln(b[i,j])
endfor
for i←1 to x do {cara mengalikan Matriks A dengan Matriks B}
for j←1 to p do
for k←1 to y do
c[i,j] ← c[i,j] + a[i,k]*b[k,j];
writeln
writeln
writeln('Hasil perkalian Matriks A dengan Matriks B = ')
Writeln
for i←1 to x do { Hasil perkalian Matriks A dengan Matriks B }
begin
for j←1 to p do
write(c[i,j],' ');
writeln
endfor
writeln
Coding:
program perkalian2Matriks;
uses wincrt;
type
z= array [1..50,1..50] of integer;
var
a,b,c : z;
i,j,k,x,y,p : integer;
begin
writeln('Ordo matrik A');
write('Baris : '); readln(x);
write('Kolom : '); readln(y);
writeln;
writeln;
writeln('Ukuran matrix B');
writeln('Baris : ',y);
write('Kolom : '); readln(p);
clrscr;
for i:=1 to x do
for j:=1 to y do
begin
write('Anggota A[',i,',',j,'] : ');
readln(a[i,j]);
end;
writeln;
for i:=1 to y do
for j:=1 to p do
begin
write('Anggota B[',i,',',j,'] : ');
readln(b[i,j]);
end;
for i:=1 to x do
for j:=1 to p do
for k:=1 to y do
c[i,j] := c[i,j] + a[i,k]*b[k,j];
writeln;
writeln;
writeln('Hasil perkalian Matriks A dengan Matriks B = ');
Writeln;
for i:=1 to x do
begin
for j:=1 to p do
write(c[i,j],' ');
writeln;
end;
writeln;
end.
Running:
BAB IV
IMPLEMENTASI
4.1 Kegiatan Praktikum
1. Buat program untuk tugas prepraktikum 3!
Jawaban :
Coding :
program kuartilminmak;
type
int = array [1..100] of real;
procedure diurutkan(var x,y : real);
var simpan : real;
begin
simpan := x;
x := y;
y := simpan;
end;
procedure tampung(var x:int ; n: integer);
var i,j : integer;
begin
for i:=1 to n-1 do
for j:=1 to n- i do
if x[j] > x[j+1] then
diurutkan(x[j],x[j+1]);
end;
procedure ganjil(var x:int ; n: integer);
var q1,q2,q3:integer;
begin
q1 :=(n+1) div 4;
q2 :=(n+1) div 2;
q3 :=(3*(n+1)) div 4;
write('Kuartil bawah : ',x[q1]:2:2);
writeln;
write('Kuartil tengah : ',x[q2]:2:2);
writeln;
write('Kuartil atas : ',x[q3]:2:2);
writeln;
end;
procedure genap(var x:int ; n: integer);
var q1,q2,q3:integer;
median:real;
begin
q1 :=(n+2) div 4;
q2 :=n div 2;
median:= ((x[q2])+(x[q2+1])) / 2;
q3 :=(3*n+2) div 4;
write('Kuartil bawah : ',x[q1]:2:2);
writeln;
write('Kuartil tengah : ',median:2:2);
writeln;
write('Kuartil atas : ',x[q3]:2:2);
writeln;
end;
var
n,i : integer;data : int;
begin
write('Jumlah bilangan yang dimasukkan : ');
readln(n);
for i:= 1 to n do
begin
write('Bilangan ke-',i,' : ');
readln(data[i]);
end;
tampung(data,n);
writeln;
write('Nilai Min :', data[1]:0:0);
writeln;
if n mod 2 = 1 then ganjil(data,n)
else genap(data,n);
writeln ('Nilai Max :',data[n]:0:0);
end.
Running :
2. Buat program untuk tugas prepratikum no.4!
Jawaban :
Coding :
program perkalian2Matriks;
uses wincrt;
type
z= array [1..50,1..50] of integer;
var
a,b,c : z;
i,j,k,x,y,p : integer;
begin
writeln('Ordo matrik A');
write('Baris : '); readln(x);
write('Kolom : '); readln(y);
writeln;
writeln;
writeln('Ukuran matrix B');
writeln('Baris : ',y);
write('Kolom : '); readln(p);
clrscr;
for i:=1 to x do
for j:=1 to y do
begin
write('Anggota A[',i,',',j,'] : ');
readln(a[i,j]);
end;
writeln;
for i:=1 to y do
for j:=1 to p do
begin
write('Anggota B[',i,',',j,'] : ');
readln(b[i,j]);
end;
for i:=1 to x do
for j:=1 to p do
for k:=1 to y do
c[i,j] := c[i,j] + a[i,k]*b[k,j];
writeln;
writeln;
writeln('Hasil perkalian Matriks A dengan Matriks B = ');
Writeln;
for i:=1 to x do
begin
for j:=1 to p do
write(c[i,j],' ');
writeln;
end;
writeln;
end.
Running:
4.2 Tugas Akhir
Buatlah algoritma dan terjemahkan dalam Bahasa Pascal untuk operasi
invers matriks ordo N!
Jawaban :
Algoritma:
program inversmatriks
type matriks←array [1..50,1..50] of real
DEKLARASI
n,i,j,b,l: integer
a:matriks
DESKRIPSI
writeln ('Program Pencarian Invers Matriks Menggunakan Matriks
Identitas')
writeln ('Masukkan ordo matrik (N x N)')
write ('N : ') readln (n)
for i←1 to n do
write ('Masukkan elemen matriks baris ke-',i)
for j←1 to n do
write ('Matriks m(',i,',',j,') = ') readln (a[i,j])
endfor
endfor
for i←1 to n do
write ('Elemen matriks yang dimasukkan baris ke-',i)
for j←1 to n do
write ('Matriks m(',i,',',j,')= ',a[i,j]:0:0,' ')
endfor
for j←n+1 to n+n do
i←j-n
a[i,j]←1
endfor
for j←n+1 to n+n do
begin
if (i<>j-n) then a[i,j]:=0
endfor
for i←1 to n do
for j:=1 to n+n do
if i<>j then a[i,j]:=a[i,j]/a[i,i];
endif
for j:=1 to n+n do
if i=j then a[i,i]←1;
endif
for l←1 to n do
if i<>l then
for j←i+1 to n+n do
a[l,j]←a[l,j]-(a[i,j]*a[l,i]);
endfor
endif
endfor
for b←1 to n do
if i<>b then
a[b,i]←0
endif
endfor
endfor
writeln
writeln('Maka invers dari matrik adalah :')
for i←1 to n do
begin
for j←n+1 to n+n do
write (' m(',i,',',i,') ',a[i,j]:0:2)
endfor
endfor
Coding :
program inversmatriks;
type matriks=array [1..50,1..50] of real;
var
n,i,j,b,l: integer;
a:matriks;
begin
writeln ('Program Pencarian Invers Matriks Menggunakan Matriks
Identitas');
writeln;
writeln ('Masukkan ordo matrik (N x N)');
write ('N : '); readln (n);
writeln;
for i:=1 to n do
begin
write ('Masukkan elemen matriks baris ke-',i);
writeln;
writeln;
for j:=1 to n do
begin
write ('Matriks m(',i,',',j,') = '); readln (a[i,j]);
end;
end;
writeln;
for i:=1 to n do
begin
write ('Elemen matriks yang dimasukkan baris ke-',i);
writeln;
writeln;
for j:=1 to n do
write ('Matriks m(',i,',',j,')= ',a[i,j]:0:0,' ');
writeln;
end;
for j:=n+1 to n+n do
begin
i:=j-n;
a[i,j]:=1;
end;
for j:=n+1 to n+n do
begin
if (i<>j-n) then a[i,j]:=0;
end;
for i:=1 to n do
begin
for j:=1 to n+n do
begin
if i<>j then a[i,j]:=a[i,j]/a[i,i];
end;
for j:=1 to n+n do
begin
if i=j then a[i,i]:=1;
end;
for l:=1 to n do
begin
if i<>l then
begin
for j:=i+1 to n+n do
begin
a[l,j]:=a[l,j]-(a[i,j]*a[l,i]);
end;
end;
end;
for b:=1 to n do
begin
if i<>b then
begin
a[b,i]:=0;
end;
end;
end;
writeln;
writeln('Maka invers dari matrik adalah :');
for i:=1 to n do
begin
for j:=n+1 to n+n do
write (' m(',i,',',i,') ',a[i,j]:0:2);
writeln;
end;
end.
Running :
4.3 Tugas Tambahan
Buatlah algoritma dan terjemahkan dalam Bahasa Pascal untuk operasi
transpose matriks ordo N!
Algoritma:
program matriks_transpose
type matriktranspose = array [1..10,1..10] of integer;
DEKLARASI
n,m,i,j: integer
a:matriktranspose
writeln ('Program Pencarian TRANSPOSE Matriks ')
writeln ('Masukkan ordo matrik (baris ).') readln (n)
writeln ('Masukkan ordo matrik (kolom ).') readln (m)
for i←1 to n do
for j←1 to m do
write ('masukkan elemen matrik a(',i,',',j,') : ')readln (a[i,j])
endfor
endfor
writeln('MATRIKS ASAL')
for i←1 to n do
for j←1 to m do
write(a[i,j])
endfor
endfor
writeln('MATRIKS TRANPOSENYA')
for i←1 to m do
for j←1 to n do
write (a[j,i])
endfor
endfor
Coding :
program matriks_transpose;
type matriktranspose = array [1..10,1..10] of integer;
var
n,m,i,j: integer;
a:matriktranspose;
begin
writeln ('Program Pencarian TRANSPOSE Matriks ');
writeln;
writeln ('Masukkan ordo matrik (baris ).'); readln (n);
writeln ('Masukkan ordo matrik (kolom ).'); readln (m);
for i:=1 to n do
begin
for j:=1 to m do
begin
write ('masukkan elemen matrik a(',i,',',j,') : ');readln (a[i,j]);
end;
end;
writeln;
writeln('MATRIKS ASAL');
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]);
end;
writeln;
end;
writeln;
writeln('MATRIKS TRANPOSENYA');
for i:=1 to m do
begin
for j:=1 to n do
begin
write (a[j,i]);
end;
writeln;
end;
end.
Running :
BAB V
PENUTUP
5.1 Kesimpulan
Dari materi dan implementasi diatas dapat disimpulkan bahwa
pemrograman menggunakan larik ataupun matriks sangat berguna untuk
pemrograman yang memiliki sejumlah data yang bertipe sama, tetapi kita
perlu menyimpannya, untuk selanjutnya diproses. Selama pelaksanaan
program , larik maupun matriks tetap menyimpan nilai. Dengan ini, kita
dapat menggunakan larik dan matriks yang telah menyimpan nilai
tersebut, sewaktu –waktu yang artinya kita dapat memproses nilai – nilai
tersebut pada bagian algoritma selanjutnya. Keuntungan menggunakan
larik ataupun matriks adalah bahwa larik ataupun matriks, kita dapat
menggunakan larik atupun matriks untuk menghindari penggunaan nama
peubah yang banyak.
5.2 Saran
Untuk mas Shohib selaku Asisten Praktikum, untuk tetap menambah
durasi praktikum.