• Tidak ada hasil yang ditemukan

BAB 12 SORTING ______________________________________ 80

F. Merge Sort

If A[j]>A[j+i] Then Begin Ganti(A[j],A[j+i]); Inc(baca);

End;

D. Selection Sort

Algoritma utamanya adalah sebagai berikut : baca:=0;

For i:= 1 To m-1 Do Begin

tempat:=i;

For j:= i+1 To m Do If A[tempat]>A[j] Then tempat:=j;

Ganti(A[i],A[tempat]);

Inc(baca);

End;

E. Insert Sort

Algoritma utamanya adalah sebagai berikut : baca:=0;

For i:= 2 To m Do Begin G:=A[i];

j:=i-1;

A[0]:=G;

While G<A[j] Do Begin A[j+1]:=A[j]; Dec(j); Inc(baca);

End;

A[j+1]:=G; End;

F. Merge Sort

Algoritma utamanya Begin i:=awal; k:=awal;

j:=tengah+1; Repeat

If A[i]<A[j] Then

Begin B[k]:=A[i]; Inc(i);

End Else

Begin B[k]:=A[j]; Inc(j);

End;

Inc(k); Inc(baca);

Until (i>tengah) Or (j>akhir); If i>tengah Then For t:= j To akhir Do

Begin

B[k+t-j]:=A[t]; End

Else End;

For t:= i To tengah Do Begin

B[k+t-i]:=A[t]; End;

Soal Latihan

1. Jelaskan Alur logika (dengan disertai contoh data) metode sorting data di atas?

2. Buatlah program pascal untuk mengurutkan data dengan metode sorting data di atas!

BAB 13

MATRIKS

A. Definisi Matriks

Matrik merupakan sekumpulan informasi yang setiap individu elemenya diacu dengan menggunakan dua buah indeks (baris dan kolom).

Dua buah indeks menunjukkan dimensi matriks Elemen dari Tipe terstruktur seperti larik dapat distrukturkan lagi titik sebuah larik yang setiap elemennya adalah larik lagi disebut matriks dalam kurung matriks matriks sudah dikenal secara luas dalam berbagai bidang ilmu terutama dalam bidang matematika titik matriks identitas adalah contoh matriks yang dikenal secara umum karena diagonalnya bernilai 1 sedangkan elemen lainnya nol.

Sebuah sistem persamaan lanjar yang terdiri dari empat persamaan berikut :

Dapat ditulis dalam bentuk persamaan matriks Ax=b yang dalam hal ini A adalah matriks koefisien dari ruas kiri persamaan, x adalah matriks kolom peubah dan b adalah matrik kolom ruas kanan persamaan :

Masih banyak lagi penggunaan matriks dalam matematika seperti matriks transformasi, matriks permutasi, dan sebagainya. Tetapi matriks tidak hanya dikenal dalam matematik. Matriks juga digunakan luas pada bidang seperti ekonomi, teknik dan lain-lain.

B. Mendeklarasikan Matriks

Sebelum matriks digunakan untuk menyimpan data, terlebih dahulu matriks harus dideklarasikan.

Mendeklarasikan matriks artinya menentukan nama matriks, tipe data dan elemen – elemannya, dan ukurannya. Pendeklarasian matriks di dalam teks algoritma didalam bagian DEKLARASI. Kata kunci yang dipakai untuk matriks tetap array.

Ada beberapa cara mendeklarasikan matriks:

1. Sebagai nama peubah.

Contoh :

DEKLARASI

M: array[1..5,1..4] of integer 2. Sebagai tipe bentukan

Contoh :

DEKLARASI

Type Mat: array[1..5,1..4] of integer

3. Mendefeniksikan ukuran maksimum matriks sebagai sebuah konstanta

Contoh :

DEKLARASI

constNbarisMaks=20{jumlah baris maksimum}

constNkolomMaks=20{jumlah kolom maksimum}

M: array[1..NbarisMaks,1..NkolomMaks] of integer

Contoh Algoritma Matriks

Procedure BacaMatriks1(var M: MatriksInt;Nbar,Nkol :integer):

(mengisi elemen matriks M[1..NbarisMaks,1..NkolomMaks]

dari papan ketik) Var

i: integer: {indeks baris}

j: integer: {indeks kolom}

begin

for i := 1 to Nbar do begin

write („Ketikkan elemen M[„,i,‟,j,‟,]:‟):

readln (M[i,j]);

end;

end;

end;

{seluruh elemen matriks M sudah berisi nilai yang dibaca dari papan ketik}

Contoh pemanggilan prosedur diatas : Writln(„Memasukkan data ukuran matriks:‟);

Write(„Berapa jumlah baris(1-20)?‟);readln(p);

Write(„Berapa jumlah kolom(1-20)?‟);readln(q);

BacaMatriks (M,p,q);

C. Mencetak Matriks PSEUDO-CODE

Procedure CetakMatriks(input M: MatriksInt, inputNbar,Nkol: integer)

{Mencetak elemen –elemen matriks M[1..Nbar,1..Nkol] ke layar}

DEKLARASI

i:integer{indeks baris}

j:integer{indeks kolom}

ALGORITMA:

for i 1 toNbar do for j 1 toNkol do

write{M[i,j]}

end for end for

{seluruh elemen matriks M tercetak di layar.}

Procedure TulisMatriks(input M: MatriksInt, inputNbar,Nkol: integer) :

{Mencetak elemen matriks M[1..Nbar,1..Nkol] ke layar}

var

i:integer{indeks baris}

j:integer{indeks kolom}

begin

for i := 1 toNbar do begin

for j := 1 toNkol do begin

write{M[i,j],‟ „};

end;

writein: ( pindahkan kursor ke awal baris berikutnya )

end;

end;

{seluruh elemen matriks tertulis di layar.}

D. Menjumlahkan Dua Buah Matriks PSEUDO-CODE

Procedure JumlahDuaMatriks(input A,B: MatriksInt, inputNbar,

Nkol: integer, output C:MatriksInt)

{Menjumlahkan matriks A dan B, yaitu A+B=C}

Procedure TulisMatriks(input M: MatriksInt, inputNbar,Nkol: integer) :

{Mencetak elemen matriks M[1..Nbar,1..Nkol] ke layar}

var

i:integer{indeks baris}

j:integer{indeks kolom}

begin

for i := 1 toNbar do begin

for j := 1 toNkol do begin

C[i,j] :=A[i , j ] + B[i , j ] ; end;

end;

end;

{matriks C berisi hasil penjumlahan A dan B}

E. Latihan BAB 13

1. Rancanglah algoritma untuk mencetak elemen diagonal dari matriks.

2. Rancanglah algoritma transpose matriks, mengubah baris I menjadi elemen kolom

BAB 14

CONTOH SOAL DAN PENYELESAIAN

Soal

Misalkan sebuah string s telah berisi rangkaian karakter. Tulislah prosedur dalam bahasa Pascal dan bahasa C/C++ untuk membalikkan susunan karakter di dalam s. Misalnya jika s berisi string „sate‟, maka hasil pembalikan s adalah string „etas‟

Penyelesaian

String adalah sebuah larik karakter . Prinsip algoritma untuk masalah ini adalah mempertukarkan elemen

“depan” dengan elemen “ belakang”. Jadi kita mulai memindai dari depan (i) dan dari belakang (j) , setiap kali pemindaian kita pertukarkan elemennya. Pada mulanya i=1 dan j=lenghts(s). Setiap kali memindai larik , i dinaikkan satu dan j dikurangi 1.

PASCAL :

Procedure Balikkan(var s : string) ;

{Membalikkan susunan karakter di dalam string s}

{* DEKLARASI*}

i :=1+1 ;

/ * Membalikkan susunan karakter di dalam string s */

{

/* DEKLARASI */

Persoalan Membaca Data Dari Arsip

Misalkan N buah titik – titik (x,y) di simpan didalam sebuah arsip teks. Susunan data di dalam arsip tersebut adalah sebagai berikut : baris pertama berisi nilai N, sedangkan baris – baris berikutnya berisi setiap titik, setiap baris terdiri dari nilai x dan nilai y, masing – masing nilai dipisahkan oleh spasi.Sebagai contoh, misalkan arsip titik.txt sudah berisi datayang telah disusun sesuai dengan format yang dispesifikasikan di atas:

misalnya baris pertama adalah titik (6,5), baris kedua titik (7,2), dan seterusnya

Tulislah dua buah prosedur, masing – masing dalam

bahasa Pascal dan bahasa C, prosedur pertama membaca data dari arsip danmenyimpan titik – titik kedalam larik P, sedangkan prosedur kedua mencerminkan setiap titik didalam larik terhadap sumbu y ( dengan pencerminan ini maka titik (a,b) menjadi (-a,b), Titik –titik hasil pencerminan disimpan didalam larik Q.

PENYELESAIAN

type LarikTitik = array [1..Nmaks] of Titik;

Prosedur membaca data dari arsip :

Procedure BacaTitikDariArsip (NamaArsip : string[12];

Var P: LarikTitik;var N : integer)

{ Membaca data titik – titik dari arsip NamaArsip, dan menyimpannya ke dalam larik P yang bertipe LarikTitik. N akan berisi banyaknya titik}

{ * DEKLARASI *}

for i := 1 to N do begin

read ( Fin, P[ i ] . x, P[ i ] . y );

end;

end;

Prosedure pencerminan titik terhadap sumbu – y:

procedure PencerminanSumbu_Y( P : LarikTitik; N ; integer ; var Q : LarikTitik)

{Mencerminkan titik- titik di dalam larik P[ 1.. N] terhadap sumbu –y, Hasil pencerminan disimpan didalam larik Q. } { * DEKLARASI *}

Var i: integer ;

{ * ALGORITMA: *}

begin

for i:=1 to N do begin

Q[ i] . x := - P[ i ] . x;

Q[ i] . y := - P[ i ] . y;

end;

end;

DAFTAR PUSTAKA

, Bahasa Pemrograman Pascal, Universitas

Sebelas Maret, Surakartka,

http://miwan.ueuo.com/materi/Pascal.pdf, Diakses 15 September 2010

Fachrie Lantera, Kompleksitas Algoritma Quick Sort, http://www.informatika.org/~rinaldi/Matdis/2008 -2009/Makalah2008/Makalah0809-019.pdf, Diakses 25 September 2010

Hendarsyah Decky, Kumpulan Program Pascal, http://ilmukomputer.com, Diakses tanggal 20 September 2010

Kadir A, 2002, Pemrograman Pascal Buku 1, Penerbit Andi, Yogyakarta. Kadir A, 2002, Pemrograman Pascal Buku 2, Penerbit Andi, Yogyakarta. Jogiyanto HM, 2002, Turbo Pascal Versi 5.0, Penerbit Andi, Yogyakarta.

Ryan Rheinadi , Analisis Algoritma Bubble Sort, http://webmail.informatika.org/~rinaldi/Matdis/2 009-2010/Makalah0910/MakalahStrukdis0910-032.pdf, Diakses 25 September 2010

Sahid, 2004, Pemrograman Komputer dengan Turbo Pascal versi Windows 1.5 (Edisi Revisi), Lab.

Komputer Jurdik Matematika FMIPA UNY

TENTANG PENULIS

Debora Exaudi Sirait,S.Si.,M.Si lahir pada tanggal 01 Agustus 1993, anak ke-4 dari ke-4 bersaudara. Lulusan S1 program studi Matematika Universitas Sumatera Utara dengan masa studi 3.5 tahun. Lulusan S2 program studi Matematika Universitas Sumatera Utara tahun 2017. Mendapatkan Beasiswa PPA dan BCA selama program sarjana.

Piagam Penghargaan dari LPPM Universitas HKBP Nommensen Pematangsiantar sebagai pemenang Penelitian Kompetitif Nasional (Penelitian Dosen Pemula) tahun 2020. Pengalaman kerja sebagai Kepala Sekolah SD Swasta Kartini Handayani Kota Pematangsiantar dan Dosen Tetap Prodi Matematika FMIPA Universitas HKBP Nommensen Pematangsiantar sampai sekarang.