Selasa, 10 Mei 2011

SORTING


Pengurutan (Shorting)

1.      Pendahuluan
Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan dan susunan tertentu. Masalah pengurutan dapat ditulis sebagai berikut:
Diberikan larik L dengan n elemen yang sudah terdefinisi elemen-elemennya. Urutan larik tersebut sehingga tersusun secara menaik (ascending):
L[1] ≤ L[2] ≤ L[3] ≤....≤ L[n]

Atau secara menurun (descending):
L[1] ≥ L[2] ≥ L[3] ≥ ....≥ L[n]

Data yang diurut dapat berupa data bertipe dasar atau tipe terstruktur (record). Jika data bertipe terstruktur, maka harus dispesifikasikan berdasarkan field apa data tersebut diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai field kunci.
Algoritma yang sering ditemukan dalam literatur-literatur komputer antara lain: Bubble Sort, Selection Sort (Maximum Sort dan Minimum Sort), Insertion Sort, Heap Sort, Shell Sort, Quick Sort, Merge Shorte, Radix Sort, tree sort. Dalam modul ini tidak akan membahas semua algoritma pengurutan tersebut, tetapi hanya tiga buah algoritma pengurutan yang sederhana saja, yaitu:
1)      Metode Pengurutan Apung (Bubble Sort),
2)      Metode Pengurutan Seleksi (Selection Sort),
3)      Metode Pengurutan Sisip (Shell Sort)

2.      Tujuan Instruksional Umum
Mahasiswa dapat mengerti dan memahami algoritma pengurutan (sorting)

3.      Tujuan Instruksional Khusus
  • Memahami dan menguasai algoritma pengurutan dasar dengan menggunakan metode pengurutan Apung (Bubble Sort) dan konsep penerapannya dalam memecahkan masalah pemrograman
  • Memahami dan menguasai algoritma pengurutan dasar dengan menggunakan Metode Pengurutan Seleksi (Selection Sort) dan konsep penerapannya dalam memecahkan masalah pemrograman
  • Memahami dan menguasai algoritma pengurutan dasar dengan menggunakan Metode Pengurutan Sisip (Shell Sort) dan konsep penerapannya dalam memecahkan masalah pemrograman

4.      Kegiatan Praktikum
.4.1.      Kegiatan Praktikum 1
§  Uraian dan contoh
4.1.1 Algoritma Pengurutan Apung (Bubble Sort)
              Prinsip pengapungan digunakan pada pengurutan apung. Apabila kita menginginkan larik terurut menaik, maka elemen larik yang berharga paling kecil ” diapungkan”, artinya diangkat ke ”atas” (atau ke ujung kiri larik) melalui proses pertukaran. Pengapungan ini dilakukan sebanyak n-1 langkah (satu langkah tersebut juga satu kali pass) dengan n adalah ukuran larik. Pada akhir setiap langkah ke-i, larik [1..n] akan terdiri atas dua bagian yaitu bagian yang sudah terurut, yaitu L[1..i], dan bagian yang belum terurut, L[i+1..n]. Setelah langkah terakhir, diperoleh larik L[1..n] yang terurut menaik. Lihat gambar.1:
1
i   i+1            n
Sudah terurut
Belum terurut
              Gambar.1 Bagian larik yang terurut pada metode pengurutan apung    

Prosedur  pengurutan apung (Bubble Sort) agar larik L terurut menaik adalah sebagai berikut:
Procedure bubblesort(var L:larikint; n:integer);

Var
     i       : integer ;
    k       : integer ;
    temp : integer ;

begin
    for   i := 1 to n-1 do
       for  k := n downto  i+1 do
           if L[ k ] < L [ k-1 ] then
                 temp := L[ k ];
                 L[ k ]:= L[ k-1];
                 L[ k-1]:= temp;
 End;
Prosedur pengurutan apung (Bubble Sort) dengan memanfaatkan prosedur Tukar, sebagai berikut :
Procedure bubblesort_naik(var L : larikint ;  n : integer);

Var
     i       : integer ;
    k       : integer ;
   
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;

begin
    for   i := 1 to n-1 do
       for  k := n downto  i+1 do
           if L[ k ] < L [ k-1 ] then
    Tukar (L [k], L[k-1]);
 End;

Prosedur  pengurutan apung (Bubble Sort) agar larik L terurut menurun adalah sebagai berikut:
Procedure bubblesort_turun(var L : larikint ;  n : integer);

Var
     i       : integer ;
    k       : integer ;
   
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;

begin
    for   i := 1 to n-1 do
       for  k := n downto  1 do
           if L[ k ] < L [ k-1 ] then
    Tukar (L [k], L[k-1]);
 End;






Contoh 4.1: program pengurutan bublesort dengan larik terurut menaik!


program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,k,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

   procedure bublesort;
   begin
        for i:=1 to N-1 do
        begin
             for k :=N downto i+1 do
             begin
                  if L[k] < L[k-1] then
                  begin
                       temp :=L[k];
                       L[k] := L[k-1];
                       L[k-1] :=temp;
                  end;
             end;
        end;
   end;

begin
     input;
     writeln;
     bublesort;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.

§  Latihan 1
1.      Buatlah program pengurutan bublesort dengan pemilihan larik terurut menaik (ascending) dan menurun (descending)!











.4.2.      Kegiatan Praktikum 2
§  Uraian dan contoh
                  Algoritma Pengurutan Seleksi (Selection Sort)
            Pengurutan Seleksi (Selection Sort) adalah memilih elemen maksimum/minimum dari larik, lalu menempatkan elemen maksimum/minimum itu pada awal atau akhir larik (elemen terujung) (Lihat gambar 2). Selanjutkan elemen terujung tersebut “diisolasi” dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa, yaitu memilih elemen maksimum/minimum berikutnya dan mempertukarkannya dengan elemen terujung larik sisa. Proses memilih nilai maksimum/minimum dilakukan pada setiap pass. Jika larik berukuran n, maka jumlah pass adalah n-1.
        Sebelum :
1
n
Belum terurut

        Sesudah :
1
N
Belum terurut


terurut

Ada dua varian algoritma pengurutan seleksi ditinjau dari pemilihan elemen maksimum/minimum, yaitu :
1)      Algoritma pengurutan seleksi-maksimum, yaitu memilih elemen maksimum sebagai basis pengurutan.

Prosedur pengurutan seleksi – maksimum untuk pengurutan menaik, sebagai berikut:
Procedure selectionsortmax_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
     maks : integer ;
     temp : integer ;
begin
     for  i := n downto 2 do
           imaks := 1;
           maks := L[1];
           for  j := 2 to i do
                if  L[ j ] > maks then
                    imaks   := j ;
                    maks    := L[ j ] ;
begin
                    temp    := L[ i ] ;
                    L[ i ] := maks ;
                    L[imaks] := temp ;
End;
End;
   
Prosedur pengurutan seleksi – maksimum untuk pengurutan menaik tanpa peubah maks, sebagai berikut:

Procedure selectionsortmax_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
     temp : integer ;
begin
     for  i := n down to 2 do
           imaks := 1;
           for  j := 2 to i do
                if  L[ j ] > L[imaks] then
                    imaks   := j ;
 begin
                    temp := L[ i ] ;
                    L[ i ] := L[imaks] ;
                    L[imaks] := temp ;
End;
End;

Prosedur pengurutan seleksi – maksimum dengan memanfaatkan prosedur Tukar, sebagai berikut :
Procedure selectionsortmax_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
      procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
begin
     for  i := n down to 2 do
           imaks := 1;
           for  j := 2 to i do
                if  L[ j ] > L[imaks] then
                    imaks   := j ;
                    tukar (L[imaks], L[i]);
End;

Prosedur  pengurutan seleksi – maksimum agar larik L terurut menurun adalah sebagai berikut:
Procedure selectionsortmax_turun(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
    
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
   
begin
     for  i := 1 to n-1 do
           imaks := i;
           for  j := i+1 to n do
                if  L[ j ] > L[imaks] then
                    imaks   := j ;   
                    tukar (L[imaks], L[i]);
End;



Contoh 4.2 program pengurutan seleksi maksimum dengan terurut menaik;
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,imaks,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

  Procedure selectionsortmax_naik;

begin
     for  i := n downto 2 do
          begin
           imaks := 1;
           for  j := 2 to i do
           begin
                if  L[ j ] > L[imaks] then
                imaks   := j ;
                begin
                    temp := L[ i ] ;
                    L[ i ] := L[imaks] ;
                    L[imaks] := temp ;
end;
end;
end;
end;

begin
     input;
     writeln;
     selectionsortmax_naik;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


2)      Algoritma pengurutan seleksi-minimum, yaitu memilih elemen minimum sebagai basis pengurutan.
                 
Prosedur pengurutan seleksi – minimum dengan agar larik Lterurut menaik, sebagai berikut :
Procedure selectionsortmin_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imin integer ;
    
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
   
begin
     for  i := 1 to n-1 do
           imin := i;
           for  j := i + 1 to n do
                if  L[ j ] < L[imin] then
                    imin   := j ;
                    tukar (L[imin], L[i]);
End;

Prosedur  pengurutan seleksi – minimum agar larik L terurut menurun adalah sebagai berikut:
Procedure selectionsortmin_turun(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imin: integer ;
    
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
   
begin
     for  i := n downto 2 do
           imin := 1;
           for  j := 2 to i do
                if  L[ j ] < L[imin] then
                    imin   := j ;
                    tukar (L[imaks], L[i]);
End;

              
                                    Contoh 4.3 : program pengurutan seleksi-minimum dengan terurut menurun!
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,imin,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

  Procedure selectionsortmin_turun;

begin
    
     for  i := n downto 2 do
     begin
           imin := 1;
           for  j := 2 to i do
           begin
                if  L[ j ] < L[imin] then
                    imin   := j ;

                begin
                    temp := L[ i ] ;
                    L[ i ] := L[imin] ;
                    L[imin] := temp ;
end;
end;
end;
end;

begin
     input;
     writeln;
     selectionsortmin_turun;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


§  Latihan 2

1.      buatlah program pengurutan seleksi-minimum dengan terurut menaik!



.4.3.      Kegiatan Praktikum 3
§  Uraian dan contoh
Algoritma Pengurutan Sisipan (Insertion Sort)
Pengurutan sisip (insertion Sort) adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan menyisir larik. Selama penyisiran dilakukan pergeseran elemen larik. Metode pengurutan sisip cocok untuk persoalan menyisipkan elemen baru kepada sekumpulan elemen yang sudah terurut.

                        Prosedur Pengurutan Sisip Untuk Pengurutan Menaik :
                       
Procedure insertionsort_naik (var L: larikint; n:integer);
Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          y := L[ i ] ;
           j := i – 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          if  y < L [ j ]
              L [ j+1] := L [ j ] ;
              j := j-1;
          else
               ketemu := true ;
        L [ j+1] := y;
End;  

                        Prosedur Pengurutan Sisip Untuk Pengurutan Menurun :
Procedure insertionsort_turun (var L: larikint; n:integer);

Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          y := L[ i ] ;
           j := i – 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          if  y > L [ j ]
               L [ j+1] := L [ j ] ;
              j := j-1;
          else
               ketemu := true ;
        L [ j+1] := y;
End;  

§  Latihan 3
1.      Buatlah program pengurutan insertionsort dengan pemilihan larik terurut menaik (ascending)

2.      Buatlah program pengurutan insertionsort dengan pemilihan larik terurut menurun (descending)

5.      Kunci Jawaban latihan

1.1      
program bubbleshort;
uses wincrt;

var L : array [1..100] of integer ;
i,K,N,temp:integer;
pilih:char;

begin
begin
        writeln ('Data sebelum diurutkan');
        write('masukkan data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;        

write('hasil ditampilkan secara ascending atau discending(a/d)?');readln(pilih);
if (pilih='a') OR (pilih='A') then
begin
        for i:=1 to N-1 do
        begin
             for k :=N downto i+1 do
             begin
                  if L[k] < L[k-1] then
                  begin
                       temp :=L[k];
                       L[k] := L[k-1];
                       L[k-1] :=temp;
                  end;
             end;
        end;
   end;

if (pilih= 'd') or (pilih='D') then
begin
        for i:=1 to N-1 do
        begin
             for k :=N downto i+1 do
             begin
                  if L[k] > L[k-1] then
                  begin
                       temp :=L[k];
                       L[k] := L[k-1];
                       L[k-1] :=temp;
                  end;
             end;
        end;
   end;

writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


2.1

          program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,imin,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyak data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

  Procedure selectionsortmin_naik;
begin
     for  i := 1 to n-1 do
          begin
           imin := i;
          begin
           for  j := i+1 to n do
                if  L[ j ] < L[imin] then
                imin   := j ;
                begin
                    temp := L[ i ] ;
                    L[ i ] := L[imin] ;
                    L[imin] := temp ;
end;
end;
end;

begin
     input;
     writeln;
     selectionsortmin_naik;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


3.1
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,y,n : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

 Procedure insertionsort_naik;

Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          begin
          y := L[ i ] ;
           j := i - 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          begin
          if  y < L [ j ] then
               begin
               L [ j+1] := L [ j ];
              j := j-1;
              end
          else
               ketemu := true ;
        L [ j+1] := y;
End;
end;
end;
begin
     input;
     writeln;
     insertionsort_naik;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


3.2
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,y,n : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

 Procedure insertionsort_turun;

Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          begin
          y := L[ i ] ;
           j := i - 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          begin
          if  y > L [ j ] then
               begin
               L [ j+1] := L [ j ];
              j := j-1;
              end
          else
               ketemu := true ;
        L [ j+1] := y;
End;
end;
end;
begin
     input;
     writeln;
     insertionsort_turun;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


Rabu, 04 Mei 2011

Searching

STRUKTUR DATA MODUL 3 SEARCHING

bagaimana macam – macam algoritma pencarian antara lain: Sequensial Searching dan Binary Searching Search algoritma adalah algoritm,a yang menerima argumen a dan mencoba untuk mencari record yang mana key-nya adalah a. Algoritma bisa mengembalikan nilai record, atau pointer ke record. Record sendiri adalah tipe data yang terdiri atas kumpulan variabel yang dapat berbeda tipenya. Setiap variabel disebut field. Sequensial Search
 
Pencarian (searching) merupakan proses fundamental dalam pengelolaan data. Proses pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan). Search algoritma adalah algoritm,a yang menerima argument a dan mencoba untuk mencari record yang mana key-nya adalah a. Algoritma bisa mengembalikan nilai record, atau pointer ke record. Record sendiri adalah tipe data yang terdiri atas kumpulan variabel yang dapat berbeda tipenya. Setiap variabel disebut field. Sequensial Search (penelusuran sequensial) yaitu proses mengunjungi melalui suatu pohon dengan cara setiap simpul di kunjungi hanya satu kali yang disebut tree transversal / kunjungan pohon. Sedangkan Binary Search adalah penelusuran pohon biner dimana data yang dimasukkan atau yang suadah ada diurutkan terlebih dahulu.
Data dapat di simpan secara temporer dalam memori utama atau di simpan secara permanen di dalam memori sekunder (tape atau disk). Di dalam memori utama, struktur penyimpanan data yang umum adalah berupa larik atau tabel (array), sedangkan di dalam memori sekunder berupa arsip (file). Aktivitas yang berkaitan dengan pengolahan data ini sering di dahului dengan proses pencarian. Sebagai contoh, untuk mengubah (update) data tertentu, langkah pertama yang harus dilakukan adalah mencari keberadaaan data tersebut di dalam kumpulannya. Aktivitas yang awal sama juga dilakukan pada proses penambahan (insert) datayang baru. Proses penambahan data dimulai dengan mencari apakah data yang ditambahkan sudah terdapat di dalam kumpulan. Jika sudah dan mengasumsikan tidak boleh ada duplikasi data maka data tersebut tidak perlu ditambahkan, tetapi jika belum ada, maka tambahkan.
Algoritma pencarian yang akan dibicarakan dimulai dengan algoritma pencarian yang paling sederhana yaitu pencarian beruntun atau Sequential Search sampai pada algoritma pencarian yang lebih maju yaitu pencarian bagi dua (Binary Search)

Metode Pencarian Bagi Dua (Binary Search)

Pencarian pada data yang terurut menunjukkan kinerja yang lebih baik dari pada pencarian pada data yang belum terurut. Data yang terurut banyak ditemukan di dalam kehidupan sehari – hari. Misalnya data karyawan diurut berdasarkan nomor induknya dari nomor terkecil sampai terbesar. Data mahasiswa diurut berdasarkan NIM (Nomor Induk Mahasiswa) dan sebagainya.
Terdapat metode pencarian pada data terurut yang paling ringkas (efficient) yaitu metode pencarian bagi dua atau pencarian biner (binary seach). Metode ini digunakan untuk kebutuhan mencari dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode pencarian bagi dua. Data yang disimpan di dalam array (larik) haruslah sudah terurut. Untuk memudahkan pembahasan, selanjutnya kita memisalkan elemen array (larik) sudah terurut menurun. Dalam proses pencarian, kita memerlukan dua buah indeks larik yaitu indeks terkecil dan indeks terbesar. Kita menyebut indeks terkecil sebagai indeks ujung kiri array (larik) dan indeks terbesar sebagai ujung kanan array (larik). Istilah kiri dan kanan dinyatakan dengan membayangkan elemen larik terentang horizontal.

Perkalian Dua Buah Matriks

Bahasa Pemograman Perkalian Dua Buah Matriks

Algo Matrik 2 Dimensi Blogspot. Implementasi Matrik Dalam Bahasa Pemrograman Dapat Kita Lakukan Dengan Menggunakan Array Misalkan Terdapat Matrik A22 Yang Elemenelemenya Adalah Bilangan Bulat Maka Deklarasi Matrik A Pada Visual Basic Dapat Dilakukan Seperti Berikut Program Untuk Mengalikan Dua Buah Matriks Dalam Perkalian Matriks Yang Sangat Penting Diperhatikan Adalah Jumlah Kolom Matriks A Harus Sama Dengan Jumlah Baris Matriks B Uses Crt Var Afkarray11001100 Of Integer
Tugs Pendahuluan Modul 5 Coky DshakinG. Buat Algoritma Untuk Menghitung Hasil Perkalian Antara Dua Buah Matriks Masukan Nilainilai Dalam Dua Buah Matriks Keluaran Hasil Perkalian Dua Buah Matriks Jawab Algoritma Hitunghasilkaliduamatriks User Memasukkan Nilai Nilai Matriks Baris Demi Baris Dan Kolom Demi Array Atau Larik 2 Dimensi Dalam Bahasa C Merupakan Tipe Data String Sebab Bahasa C Merupakan Bahasa Pemrograman Yang Primitif Dan Hanya Mempunyai Tipe Data Karakter Char Posted In
bahasah 

logika dan algoritma menghitung perkalian matriks:


  1. Deklarasikan variable i untuk iterasi, j untuk iterasi, k untuk iterasi, bar_a untuk jumlah baris pada matriks A, kol_a untuk jumlah kolom pada matriks A, bar_b untuk jumlah baris pada matriks B, kol_b untuk jumlah kolom pada matriks B, mat_a dengan tipe array of integer untuk menampung nilai matriks A, mat_b dengan tipe array of integer untuk menampung nilai matriks B, mat_c dengan tipe array of integer untuk menampung hasil perkalian kedua matriks.



  2. Masukkan jumlah baris pada matriks A lalu nyatakan ke variable bar_a, jumlah kolom pada matriks A lalu nyatakan ke variable kol_a, jumlah baris pada matriks B lalu nyatakan ke variable bar_b, serta jumlah kolom pada matriks B lalu nyatakan ke variable kol_b.



  3. Bila nilai pada bar_a tidak sama dengan nilai pada kol_b atau nilai pada kol_a tidak sama dengan nilai pada bar_b maka cetak “Kolom A = Baris B & Baris A = Kolom B!!!” dan kembali ke langkah 2, namun bila tidak maka lakukan langkah 4 s/d 41.



  4. Cetak “ Nilai matriks A ” untuk membedakan nilai yang akan dimasukkan adalah nilai pada matriks A, bukan nilai pada matriks B.



  5. Isi variable i dengan 0.



  6. Selama nilai pada i kurang dari jumlah baris pada matriks A lakukan langkah 7 s/d 11.



  7. Isi variable j dengan 0.



  8. Selama j kurang dari jumlah kolom pada matriks A lakukan langkah 9 s/d 10.



  9. Masukkan nilai matriks pada indeks ke-i ke-j dan nyatakan ke mat_a[i][j].



  10. Tambahkan nilai pada variable j dengan 1.



  11. Tambahkan nilai pada variabel i dengan 1.



  12. Cetak “ Nilai matriks B untuk membedakan nilai yang akan dimasukkan adalah nilai pada matriks B, bukan nilai pada matriks A.



  13. Isi variable j dengan 0.



  14. Selama nilai pada j kurang dari jumlah baris pada matriks B lakukan langkah 15 s/d 19.



  15. Isi variable k dengan 0.



  16. Selama k kurang dari jumlah kolom pada matriks B lakukan langkah 17 s/d 18.



  17. Masukkan nilai matriks pada indeks ke-j ke-k dan nyatakan ke mat_b[j][k].



  18. Tambahkan nilai pada variable k dengan 1.



  19. Tambahkan nilai pada variabel j dengan 1.



  20. Isi variabel i dengan 0.



  21. Selama i kurang dari jumlah baris pada matriks A lakukan langkah 22 s/d 30.



  22. Isi variabel k dengan 0.



  23. Selama nilai pada k kurang dari jumlah kolom pada matriks B lakukan langkah 24 s/d 29.



  24. Isi mat_c pada indeks ke-i ke-k dengan 0.



  25. Isi j dengan 0.



  26. Selama j kurang dari jumlah baris pada matriks B lakukan langkah 27 s/d 28.



  27. Tambahkan nilai pada matriks_c indeks ke-i ke-k dengan hasil kali dari nilai pada mat_a pada indeks ke-i ke-j dengan nilai pada mat_b pada indeks ke-j ke-k kemudian nyatakan ke mat_c pada indeks ke-j ke-k.



  28. Tambahkan nilai pada j dengan 1.



  29. Tambahkan nilai pada k dengan 1.




  30. Tambahkan nilai pada i dengan 1



  31. Isi i dengan 0.



  32. Selama nilai i kurang dari jumlah baris pada matriks A lakukan langkah 33 s/d 37.



  33. Isi k dengan 0.



  34. Selama nilai k kurang dari jumlah kolom pada matriks B lakukan langkah 35 s/d 36.



  35. Cetak nilai pada mat_c indeks ke-i ke-k.



  36. Tambahkan nilai pada variabel k dengan 1.



  37. Tambahkan nilai pada variabel i dengan 1.



  38. Tanya apakah user masih ingin mengalikan dua buah matriks.



  39. Bila jawabannya iya, maka kembali ke langkah ke-2.



  40. Bila jawabannya tidak, maka program dapat langsung diakhiri.



  41. Namun jika bukan keduanya, tanyalah kembali (kembali ke langkah 38).

Tugas Algoritma

matriks Program Penjumlahan 2 buah Matriks dengan PascalMatriks adalah suatu kumpulan besaran (variabel dan konstanta) yang dapat dirujuk melalui indeknya, yang menyatakan posisinya dalam representasi umum yang digunakan, yaitu sebuah tabel persegipanjang. Matriks merupakan suatu cara visualisasi variabel yang merupakan kumpulan dari angka-angka atau variabel lain, misalnya vektor. Dengan representasi matriks, perhitungan dapat dilakukan dengan lebih terstruktur. Pemanfaatannya misalnya dalam menjelaskan persamaan linier, transformasi koordinat, dan lainnya. Matriks seperti halnya variabel biasa dapat dimanipulasi, seperti dikalikan, dijumlah, dikurangkan dan didekomposisikan. setelah mengerti apa itu matriks, maka pada latihan pemrograman kali ini yaitu membuat program untuk penjumlahan matriks dengan ordo bebas menggunakan pascal, adapun source code lengkapnya adalah sebagai berikut :
Program Menjumlahkan_2Buah_Matriks;
Uses Crt;
Var B,K,Br,Kl,C,L : Byte;
M1,M2,M3  : Array[1..10,1..10] of Byte;
Begin
Clrscr;
Gotoxy(10,5);Write(‘***** Menjumlahkan Dua Buah Matriks*****’);
Gotoxy(10,7);Write(‘Jumlah Ordo Matriksnya =   x   ‘);
Gotoxy(35,7);Readln(B);
Gotoxy(39,7);Readln(K);
Gotoxy(10,9);write(‘Masukkan Matriks Ke Satu’);
L:=10;
For br := 1 to b do
Begin
c := 15;
For kl :=1 to k do
Begin
gotoxy(c,l);readln(m1[br,kl]);
c := c + 2;
end;
l := l + 1;
end;
Gotoxy(10,14);write(‘Masukkan Matriks Ke Dua’);
l:=15;
For br := 1 to b do
Begin
C := 15;
For kl := 1 to k do
Begin
Gotoxy(c,l);readln(m2[br,kl]);
C := c + 2;
end;
L := L + 1;
end;
Gotoxy(10,18);write(‘Maka Hasil Penjumlahan Matriks’);
L:=20;
For br := 1 to b do
Begin
C:=15;
For kl := 1 to k do
Begin
M3[br,kl] := M1[br,kl] + M2[br,kl];
Gotoxy(c,l);Write(m3[br,kl]);
C := c + 2;
end;
L := L + 1;
end;
Readln;
End.

Tugas Algo ( Program konversi mata Uang )

menampilkan hasil berbentuk tulisan , dari inputan berupa bilangan.
program nya :
program cetak_nilai_uang;
var
uang : integer ;
begin
writeln('program konversi bilangan');
writeln('===================');
writeln;
write('nilai uang yang ingin di konversi :');readln(uang);
if uang div 100 > 0 then begin
write(uang div 100 , 'ratus');
uang := uang mod 100;
end
else if uang div 10 > 0 ) and (uang > 20) then begin
write(uang div 10, 'puluh');
uang := uang mod 10;
end
else if (uang < 20) and (uang > 10 ) then begin
write('uang mod 10 ,'belas rupiah');
uang := uang mod 10;
else write(uang ,'rupiah');
end.


contoh hasil :

Sabtu, 30 April 2011

BPAP Jabar

kenangan yang indah di Hotel Bumi Asih jaya Bandung bersama teman2 baru ku,rasa2nya ingin ku ulang kembali.....
teman I MISS U....