Wednesday 12 February 2014

Laporan resmi algoritma pemrograman modul 5

LAPORAN RESMI
PRAKTIKUM ALGORITMA PEMROGRAMAN (ALPRO)
MODUL V
ARRAY
TGL PRAKTIKUM        :   06 Desember 2012
NAMA                           :  Azza Devi Manzilia
NRP                               :  120411100110
KELAS/KELOMPOK     :  D/2
DOSEN PENGAMPU     :  ARIK KURNIAWATI,S.Kom.,M.kom
ASISTEN                       :  ANDI HARTONO
Disusun Oleh :


Disetujui : ....../……./………../Bangkalan


(ANDI HARTONO)
10.04.111.00020





           
LABORATORIUM COMMON COMPUTING
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2012 / 2013
BAB I
PENDAHULUAN

1.1    Latar belakang
Pembuatan koding yang panjang relatif membutuhkan variabel yang banyak. Pada dasarnya variabel yang banyak terlalu menyusahkan si pembuat untuk mengingat nama variabel yang telah di tulisnya, oleh sebab itu muncullah array yang merupakan tipe terstruktur yang terdiri dari sejumlah elemen-elemen yang bertipe sama. Adanya array dapat dimanfaatkan untuk mempermudah dalam menuliskan variabel sehingga kita lebih mudah dalam mengingatnya.

1.2    Tujuan
1.      Agar praktikan dapat mengerti dan paham tentang array
2.      Agar praktikan dapat menggunakan array


















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.
(* DEKLARASI *)
            var
            NamaLarik : array[1..JumlahELemen] of TipeElemen;
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 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.
·      Merupakan struktur 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 mengakses elemen pada baris i dan kolom j adalah nama_matriks[i,j]




























BAB III
TUGAS PENDAHULUAN

3.1    Prepraktikum
Kerjakan tugas-tugas di bawah ini sebelum praktikum dimulai.
1.        Sebutkan dan jelaskan keuntungan-keuntungan penggunaan larik dan matriks!
2.        Kapankan sebaiknya larik dan matriks digunakan? Jelaskan!
3.        Buat algoritma untuk menentukan nilai min, kuartil bawah, kuartil tengah, kuartil             atas dan nilai max dari sejumlah bilangan bulat yang dimasukkan melalui piranti masukan.
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
4.        Buat algoritma untuk menghitung hasil perkalian antara dua buah matriks
Masukan : nilai-nilai dalam dua buah matriks
Keluaran : hasil perkalian dua buah matriks
JAWABAN
1.         Larik :
ü  Larik dapat menyimpan sejumlah data yang bertipe sama, dan data tersebut akan di simpan sementara, untuk selanjutnya data tersebut kita proses dan paling mudah pengoperasiannya.
ü  Dapat menghindari penggunaan nama-nama peubah yang banyak.
ü  Instruksi pembacaan/penulisan seluruh elemen larik cukup ditulis satu kali saja di dalam sebuah konstruksi pengulangan.

Matriks:
ü  Jumlah elemennya sudah di deklarasi terlebih dahulu. Tidak dapat di ubah selama pelaksanaan program.
ü  Penyimpanan dan pemprosesan data secara beruntun atau berurutan.
2.
ü  Penggunaan larik dan matriks di gunakan pada saat kita memiliki data dalam jumlah banyak dan ingin menyimpan serta menggunakan data tersebut selama pelaksanaan program.

3.         Algoritma algoritma untuk menentukan nilai min, kuartil bawah, kuartil      tengah, kuartil atas dan nilai max
            procedure tukar(output var a,b : real)
            Deklarasi:
            bantu : real { indeks lariks}
            Bantu         a
            A            b
            B           bantu
            Endprocedure.
            Procedure urut (input var x: car ; input n: integer)
            Deklarasi:
             var i,j : integer{indeks larik}
            for i            1 to n-1 do
            for j             1 to n-i do
            end.
            Procedure ganjil(input var x:car ;output n: integer)
            Deklarasi:
            var q1,q2,q3:integer{indeks larik}
            min,max:integer
            min         n-(n-1)
            q1         (n+1) div 4
            q2        (n+1) div 2
            q3         (3*(n+1)) div 4
            max         n
            write
            end.
            proceduregenap(output var x:car ; output n: integer)
            deklarasi:
            var q1,q2,q3:integer{indeks larik}
             median:real
             min,max:integer
            min          n-(n-1)
             q1          (n+2) div 4
             q2         n div 2
             median           ((x[q2])+(x[q2+1])) / 2
             q3               (3*n+2) div 4
             max         n
            write
            end.
            Deklarasi:                    {Program utama}
            var n,i : integer   
                  data : car
            Write n
            For i          1 to n do
            Write data(i)
            End.
4. Algoritma perkalian antara dua buah matriks        
Algoritma matriks
{membuat program untuk menhitung perkalian matriks}
Deklarasi(*program utama*)
x1,xy,y2:integer
M1:array[1..80,1..80]of integer
M2:array[1..80,1..80]of integer
M3:array[1..80,1..80]of integer
Procedure mA(*prosedur matrik 1*)
Deklarasi(*variabel lokal*)
b,k:integer
Deskripsi(*prosedur ma*)
for b←1 to x1 do
for k←1 to xy do
            Write(‘masukkan data ma[‘,b,’,’,k,’]:’)
            Readln(m1[b,k])
endfor
endfor
Procedure mB(*Prosedur Matriks 2*)
DEKLARASI(*Variabel lokal *)
b,k : integer
DESKRIPSI (*Prosedur mB*)
for b ß 1 to xy do
for k ß1 to y2 do
Write(‘Masukkan data mB[‘,b,’k,’]:’)
Readln(m2[b,k])
Endfor
Endfor
Proscedure hasil(*Prosedur Hasil M3*)
DEKLARASI (*Variabel lokal*)
b,k,l : integer
DESKRIPSI (*Prosedur hasil*)
for bß 1 to x1 do
for k ß 1 to xy do
for l ß 1 to y2 do
m3[b,l]ß m3[b,l]+m1[b,k]*m2[k,l]
endfor
endfor
endfor
for b ß 1 to x1 do
for k ß 1 to y2 do
Writeln(m3[b,k],’’)
endfor
Writeln(‘’)
endfor
DESKRIPSI (*Program Utama*)
Write(‘Masukkan banyak baris matriksA : ‘)
Readln(x1)
Write(‘Masukkan baris mA dan kolom mB : ‘)
Readln(xy)
Write(‘Masukkan banyak kolom matriksB : ‘)
Readln(y2)
mA
mB
writeln(‘Hasil Perkalian: ‘)
hasil








BAB IV
IMPLEMENTASI

4.1.  Kegiatan Praktikum
Pada saat praktikum, kerjakan tugas-tugas berikut ini:
1. Buat program untuk tugas prepraktikum 3!
2. Buat program untuk tugas prepraktikum 4!
jawaban kegiatan praktikum
1.      Koding Program pengurutan angka
  Program Pengurutan_Angka;
uses wincrt;
var
a : array [1..100] of integer;
N,i,j,x : integer;
Q1, Q, Q2 : real;
begin
     write('Jumlah Bilangan yang dimasukkan : ');readln(N);
     for i:=1 to N do
         begin
              write('Bilangan ke-',i,' : ');readln(a[i]);
         end;
     for i:=1 to N-1 do
         for j:=i+1 to N do
             if a[i]>a[j] then
                begin
                     x:=a[i];
                     a[i]:=a[j];
                     a[j]:=x;
                end;
             writeln;
     for i:=1 to N do
     write (a[i],'  ');
     If N mod 2 = 0 then
        Q1 := ((a[(N div 4)]) + (a[(N div 4)+1]))/2
     else Q1:= (a[(N div 4)+1]);
     If N mod 2 = 0 then
        Q := ((a[(N div 2)]) + (a[(N div 2)+1]))/2
     else Q:= (a[(N div 2)+1]);
     If N mod 2 = 0 then
        Q2 := ((a[((N div 4)*3)]) + (a[((N div 2)*3)+1]))/2
     else Q2:= ((a[((N div 4)*3)+1]));
     writeln;
write ('Nilai Min        : ',a[1]);writeln;
write ('Kuartil Bawah    : ',Q1:0:2);writeln;
write ('Kuartil Tengah   : ',Q:0:2);writeln;
write ('Kuartil Atas     : ',Q2:0:2);writeln;
write ('Nilai Max        : ',a[N]);writeln;
end.

 

2.      koding perkalian dua matrik
program x_mtrik;
uses wincrt;
var
matrikA : array[1..2, 1..3] of integer;
matrikB : array[1..3, 1..2] of integer;
matrikC : array[1..2, 1..2] of integer;
k,l,m : integer;
begin
clrscr;
writeln('Elemen Matrik A : ');
for k:=1 to 2 do
    begin
        for m:=1 to 3 do
        begin
        write('matriks ke-',k,',',m,'=');
        readln(matrikA[k,m]);
    end;
end;
writeln;
writeln('Elemen Matrik B : ');
for m:=1 to 3 do
    begin
        for l:=1 to 2 do
        begin
        write('matriks ke-',m,',',l,'=');
        readln(matrikB[m,l]);
    end;
end;
for k:= 1 to 2 do
    begin
        for l:=1 to 2 do
        begin
        matrikC[k,l]:=0;
                for m:=1 to 3 do
                begin
                MatrikC[k,l]:=matrikC[k,l] + matrikA[k,m] * matrikB[m,l];
        end;
    end;
end;
writeln;
for k:=1 to 2 do
    begin
        for m:=1 to 3 do
        begin
        write(matrikA[k,m]:4);
    end;
    writeln;
end;
writeln('X');
for m:=1 to 3 do
    begin
        for l:=1 to 2 do
        begin
        write(matrikB[m,l]:4);
    end;
    writeln;
end;
writeln('=');
for k:=1 to 2 do
    begin
        for l:=1 to 2 do
        begin
        write(matrikC[k,l]:4);
    end;
    writeln;
end;
readln;
end.

4.2.  Tugas Akhir
Buatlah algoritma dan terjemahkan dalam Bahasa Pascal untuk operasi invers matriks ordo N!

Jawaban tugas akhir
ALGORITMA
Type
larik= array[1..3,1..3] of real
DEKLARASI
a,b,n: integer
M,M1 : larik
a1,a2,a3,a4:real
b1,b2,b3,b4,b5,b6:real
c1,c2,c3,c4,c5,c6,c7,c8,c9:real
det,inv : real
procedure tampilan1
 DESKRIPSI
 for a1 to n do
   for b1 to n do
    write(M[a,b]:3:0)
    endfor
    endfor
    endprocedure
procedure tampilan2
 DESKRIPSI
 for a1 to 2 do
   for b1 to 2 do
    write(M[a,b]:5:1)
    endfor
    endfor
    endprocedure
procedure tampilan3
 DESKRIPSI
 for a1 to 3 do
   for b1 to 3 do
    write(M1[a,b]:6:1;
    endfor
    endfor
    endprocedure
DESKRIPSI {PROGRAM UTAMA}
write('MASUKAN DATA SESUAI ORDO UNTUK PENYESUAIAN INVERS')
write('MASUKAN ORDO MATRIK (n x n)=')readln(n)
 for a1 to n do
  for b1 to n do
     write('M[',a,',',b,']=')readln(M[a,b])
    endfor
  endfor
  tampilan1
   if n=2 then
  detM[1,1]*M[2,2]-M[1,2]*M[2,1]
 write('DETERMINAN:',det)
  inv1/ det
  a1M[1,1]
  a2M[1,2]
  a3M[2,1]
  a4M[2,2]
  M[1,1]a4*inv
 M[1,2]-(a2*inv)
  M[2,1]-(a3*inv)
  M[2,2]a1*inv
  write('INVERS MATRIK')
  tampilan2
  endif
  if n=3 then
  b1M[1,1]*M[2,2]*M[3,3]
  b2M[1,2]*M[2,3]*M[3,1]
  b3M[1,3]*M[2,1]*M[3,2]
  b4M[3,1]*M[2,2]*M[1,3]
  b5M[3,2]*M[2,3]*M[1,1]
  b6M[3,3]*M[2,1]*M[1,2]
det(b1+b2+b3)-(b4+b5+b6)
writeln('DETERMINAN=',det)
inv1/det
  write('INVERS MATRIK')
c1M[2,2]*M[3,3]-M[2,3]*M[3,2]
 c2-(M[1,1]*M[3,3]-M[1,3]*M[3,1])
c3M[2,1]*M[3,2]-M[2,2]*M[3,1]
 c4-(M[1,2]*M[3,3]-M[1,3]*M[3,2])
c5M[1,1]*M[3,3]-M[3,1]*M[1,3]
 c6-(M[1,1]*M[3,2]-M[1,2]*M[3,1])
 c7M[1,2]*M[2,3]-M[1,3]*M[2,2]
 c8-(M[1,1]*M[2,3]-M[1,3]*M[2,1])
c9M[1,1]*M[2,2]-M[1,2]*M[2,1]
 M1[1,1]c1*inv
 M1[1,2]c2*inv
 M1[1,3]c3*inv
 M1[2,1]c4*inv
 M1[2,2]c5*inv
 M1[2,3]c6*inv
 M1[3,1]c7*inv
 M1[3,2]c8*inv
 M1[3,3]c9*inv
 tampilan3
  endif
end.


           
4.3.       Tugas tambahan
Buatlah program matriks transpose dengan ordo N !
Jawaban tugas tambahan
program matrik_transpose;
uses wincrt;
var
m : array [1..50,1..50] of integer;
b,k,baris,kolom: integer;
begin
writeln ('PROGRAM MATRIKS TRANSPOSE');
write ('masukkan baris : '); readln (baris);
write ('masukkan kolom : '); readln (kolom);
for b:= 1 to baris do
    begin
    for k:= 1 to kolom do
    begin
    write ('m[',b,',',k,'] :'); readln (m[b,k]);
    end;
    end;
writeln ('MATRIK');
for b:= 1 to baris do
    begin
    for k:= 1 to kolom do
    begin
    write (m[b,k]:4);
    end;
    writeln
    end;
writeln ('MATRIKS TRANSPOSE');
for b:= 1 to kolom do
    begin
    for k:= 1 to baris do
    begin
    write (m[k,b]:4);
    end;
    writeln
    end;    
end.




BAB V
PENUTUP
5.1.  Kesimpulan
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
5.2.  Saran
1.      Kepada asisten praktikum sebaiknya mnentukan berapa kelonggaran waktu yang diberikan kepada yang terlambat

2.      Untuk kegiatan praktikum sebaiknya lebih di kondisikan lagi.

No comments:

Post a Comment