Selasa, 24 Mei 2016

Perkalian matriks 2x3 dengan vektor 3


Algoritma perkalian matrik 2x3 dengan vektor 3

1. Identifikasi Masalah
    cara mengalikan matrik 2x3 dengan vektor 3
2. Menentukan Input dan Output
    input  : matrik[2][3]={3,2,4,1,4,2}
                vektor[3]={3,1,4}.
   output : hasil[2]={27,15}
3. Membuat Algoritma/Flowchart
    Procedur perkalian matrik { memasukan nilai input, kemudian diproses untuk menghasilkan output perkalian matrik dengan vektor}
     Deklarasi 
     p,q = integer {input/output}

     matrik, vektor : integer
     Deskripsi
     for p<- 1 to 2 do
         for q<- 1 to 3 do
               ([p,q]=([p,q]+a[p,q]*b[p,q])
               end for
         end for
    end


4.Mengimplementasikan dengan bahasa C++
#include <iostream>

using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void kali(int matrik[2][3],int vektor[3],int hasil[2]){
cout<<"matrik : \n";
for(int p=0;p<2;p++){
for(int q=0;q<3;q++)
hasil[p]=hasil[p]+(matrik[p][q]*vektor[q]);
}
}
void cetakm(int hasil[][3]){
for(int p=0;p<2;p++){
for(int q=0;q<3;q++)
   cout<<hasil[p][q]<<" ";
   cout<<endl;
   }
}
void cetakv(int vektor[]){
cout<<"vektor : \n"
for(int p=0;p<3;p++)
cout<<vektor[p]<<endl;
 }
}


void cetak(int hasil[]){
 cout<<"hasil trakhir : \n";
 for(int p=0;p<2;p++){
  cout<<hasil[p]<<endl;
 }
}
int main(int argc, char** argv) {
 int matrik[2][3]={3,2,4,1,4,2}, vektor[3]={3,1,4},hasil[2]={0};
 kali(matrik,vektor,hasil);
 cetakm(matrik);
 cetakv(vektor);
 cetak(hasil);
 return 0;

}


5.Menguji coba dengan data

6.Melakukan De-Bugging
MATRIK
             q=1  q=2  q=3
A p=1|   3      2     4  |
    p=2|   1      4     2  |
VEKTOR
           q=1
B  p=1|  3 |
    p=2|  1 |
    p=3| 4 |
cara perkalian
C = |A11.B11+A12.B21+A13.B13|
       |A21.B11+A22.B21+A23.B31|
jadi
       | 3x3 + 2x1 + 4x4 |
       | 1x3 + 4x1 + 2x4 |
hasil akhirnya
       | 27 |
       | 15 |



 Matrik terdiri dari ordo 2x3 dan vektor terdiri dari 3. pertama kita masukan angka dalam array yg kita buat untuk di kalikan matrik dan vektor. cara pengerjaannya sama dengan cara pengerjaan di atas tadi saat uji coba. kemudian output sama dengan uji coba kita.

Selamat mencoba kawan, semoga berhasil.

Senin, 16 Mei 2016

Selection Sort

Berikut ini adalah materi dari SEARCING AND SORTING. Program yang dibuat yaitu tentang Sorting Data Secara Manual Dengan Metode Selection Sort

SELECTION SORT


Selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan. Dengan kata lain, selection sort adalah membandingkan elemen yang pertama dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian ditukar.

Dalam pengurutan data di dalam struktur data sangat penting. Baik data yang beripe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun). Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak    : 5 1 12 -5 16 2 12 14
Ascending    : -5 1 2 5 12 12 14 16
Descending    : 16 14 12 12 5 2 1 -5

Untuk sorting ascending (menaik)
elemen yang paling kecil di antara elemen-elemen yang belum urut,  disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut.
Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.
Selection Sort memiliki kelebihan dalam kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu.
Algoritma ini bekerja sebagai berikut:
1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
2. Menukarkan nilai ini dengan elemen pertama list
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua. Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.

contoh simulasi algoritma selection sort sbb :
jika kita memiliki elemen array sbb :  {5, 1, 12, -5, 16, 2, 12, 14}



Berikut adalah ilustrasi dari konsep selection sort:
5 1 12 -5 16 2 12 14

[5] 1 12 [-5] 16 2 12 14     ---> yang select adalah 5 dan -5, kemudian ditukar 
-5 1 12 5 16 2 12 14          ---> setelah 5 dengan -5 ditukar
-5 1 [12] 5 16 [2] 12 14     ---> select 12 dan 2
-5 1 2 5 16 12 12 14          ---> setelah 12 dengan 2 ditukar
-5 1 2 5 [16] [12] 12 14     ---> select 16 dan 12
-5 1 2 5 12 16 12 14          ---> setelah 16 dengan 12 di tukar
-5 1 2 5 12 [16] [12] 14     ---> select 16 dan 12
-5 1 2 5 12 12 16 14          ---> setelah 16 dengan 12
-5 1 2 5 12 12 [16] [14]     ---> select 16 dan 14
-5 1 2 5 12 12 14 16          ---> setelah 16 dengan 14 ditukar

Berikut ini penjelasan menggunakan 5 kaidah penyusunan algoritma :
1. Mengerti masalah
    mengurutkan deret bilangan secara ascending
2. Menentukan input dan outputnya
    input : 5 1 12 -5 16 2 12 14
    output : -5 1 2 5 12 12 14 16
3. Menyusun algoritma dan flowchart
    hasilnya :
    4. Mengimplementaasikan dengan c++


hasilnya  :

       5. Menguji coba dengan data :
    Setelah diuji coba program nya berjalan.
Sorting Data Secara Manual Dengan Metode Bubble Sort klik disini
Sorting Data Secara Manual Dengan Metode Insertion Sort  klik disini

Alhamdulillah....selamat mencoba gan semoga sukses ^_^

Sabtu, 14 Mei 2016

Ebook How to Solve it by Computer

5. 1 Algorithm The Two-Way Merge.

E-Book (How To Solve It By Computer) = Algorithm 5.1 The Two-Way Merge.


Algoritma :
        if a[m]<b[n] then a[m+1]:=b[n+1]:=a[m];
            i:=1;
            j:=1;
            nm:= n+m;
       for k:= 1 to nm dobegin {merge next element }
            if a[i]<b[j] thenbeginc[k]:=a[i];
                 i:=i+1end elsebeginc[k]:=b[j];
                 j:=j+1end
       end

Program dengan C++ :

#include <iostream>
#include <cstdlib>
using namespace std;

int data[100];

void mergeSort(int awal, int mid, int akhir){
         cout<<endl;
int temp[100], tempAwal = awal, tempMid = mid, i = 0;

while(tempAwal < mid&& tempMid < akhir){
        if(data[tempAwal] < data[tempMid])
               temp[i] = data[tempAwal],tempAwal++;
        else
              temp[i] = data[tempMid],tempMid++;
              i++;
}
while(tempAwal < mid) //kalau masih ada yang sisa
         temp[i] = data[tempAwal],tempAwal++,i++;
         while(tempMid < akhir)
         temp[i] = data[tempMid],tempMid++,i++;
for(int j=0,k=awal;j<i,k<akhir;j++,k++) //mengembalikan ke array semula, tapi
cout<<data[k]<<' '<<temp[j]<<endl, data[k] = temp[j]; //sudah urut
}

void merge(int awal, int akhir) //membagi data secara rekursif{
      if(akhir-awal != 1){
          int mid = (awal+akhir)/2;
          merge(awal, mid);
          merge(mid, akhir);
          mergeSort(awal, mid, akhir);
      }
}

int main(){
    int n;
   cout<<"Masukan banya data = ";cin>>n;
   cout<<"Masukan data yang akan di susun = ";
   for(int i=0;i<n;i++)
   cin>>data[i];
   merge(0,n);
   for(int i=0;i<n;i++)
        cout<<data[i]<<' ';

return 0;
}

5.2 Algorithm Sorting By Selection.

 E-Book (How To Solve It By Computer) = Algorithm 5.2 Sorting By Selection.

Algoritma:

Selection Sort

Algoritma ini mudah diterjemahkan ke dalam program computer tetapi memiliki kekurangan yaitu sort dengan menggunakan metode Seleksi membutuhkan ruang di memori untuk meyimpan 2 daftar lengkap.
Jika memiliki satu daftar nama dan meletakkan dalam urutan berdasarkan huruf bisa menggunakan pemdekatan umum sebagai berikut :
Temukan atau cari nama yang pertama kali datang dalam urutan huruf dan tulis di sheet kedua
Tandai nama yang keluar dari daftar asli
 Lanjutkan perputaran ini sampai semua nama di daftar semula telah di coret dan ditulis di daftar kedua dimana di bagian daftar yang kedua ini nama-nama sudah terurut berdasarkan huruf.
Program C++ :


#include <iostream.h>
#include <conio.h>

int data[100],data2[100];
int n;

void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j–)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<”bubble sort selesai!”<<endl;
}

void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<<endl;
}

void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<”selection sort selesai!”<<endl;
}

void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j–;
}
data[j+1] = temp;
}
cout<<”insertion sort selesai!”<<endl;
}

void QuickSort(int L, int R) //the best sort i’ve ever had
{
int i, j;
int mid;

i = L;
j = R;
mid = data[(L+R) / 2];

do
{
while (data[i] < mid) i++;
while (data[j] > mid) j–;

if (i <= j)
{
tukar(i,j);
i++;
j–;
};
} while (i < j);

if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}

void Input()
{
cout<<”Masukkan jumlah data = “; cin>>n;
for(int i=0;i<n;i++)
{
cout<<”Masukkan data ke-”<<(i+1)<<” = “; cin>>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<”Data : “<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<” “;
}
cout<<endl;
}

void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<”Data sudah teracak!”<<endl;
}

void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<”Program Sorting Komplit!!!”<<endl;
cout<<”*********************************************”<<endl;
cout<<” 1. Input Data”<<endl;
cout<<” 2. Bubble Sort”<<endl;
cout<<” 3. Exchange Sort”<<endl;
cout<<” 4. Selection Sort”<<endl;
cout<<” 5. Insertion Sort”<<endl;
cout<<” 6. Quick Sort”<<endl;
cout<<” 7. Tampilkan Data”<<endl;
cout<<” 8. Acak Data”<<endl;
cout<<” 9. Exit”<<endl;
cout<<” Pilihan Anda = “; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<”quick sort selesai!”<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}

5. 3 Algorithm Sorting By Exchange.
silahkan buka klik disini

5.4 Algorithm Sorting By Insertion.
silahkan buka klik disini

5. 7 Algorithm Binary Search.
silahkan buka klik disini

Rencana Kuliah minggu ke-9

Rencana kuliah minggu ke-9 adalah:
1. Bubble sort

Procedure Bubble_Sort (input/output x : larik, input n : byte)
Deklarasi

larik = array [1..100] of integer
i, a : byte k : larik
j, bantu : integer
Deskripsi

for i <-- 1 to n-1 do
for j <-- i+1 to n do
if x[i] > x[j] then
tukar(x[i], x[j])
endif
endfor
endfor

C++ :

outputnya :

2. Algoritma Selectoin Sort

Procedure minimum(input A : larik; dari, n : integer; output tempat : integer)
{ mencari tempat di mana elemen terkecil ditemukan}
Deklarasi
i, min : integer
Deskripsi
min <-- A[dari];
tempat <-- dari;
for i <-- dari+1 to n do
if A[i] < min then
min Ã… A[i];
tempat <-- i;
endif
endfor


c++:
 Raptor :


3. Insertion Sort
 silahkan klik disini

PPT Pertemuan 9

Kasus 8.1 linear Sort
 Algoritma Linear Search

function pencarianLinier(input aray : larik; kunci, ukuran : integer) : integer
Deklarasi

ketemu : boolean
i, n : integer
Deskripsi

ketemu <-  false;
n <-- 1 while ((n < ukuran) and (not ketemu)) do
if (aray[n] = kunci) then
ketemu <- true { data ketemu }
i <- n { pada posisi ke-i }
endif
else n <-  n+1 { cek data berikutnya }
 endwhile
if ketemu then pencarianLinier <- i { data ketemu pada posisi ke-i }
else pencarianLinier <- -1 { data tidak ketemu }
 endif
end

c++ :
 Raptor :



8.2 Binary Search

Algoritma:
function pencarianBiner(input aray : larik; kunci, low, high : integer) : integer
Deklarasi

ketemu : boolean
i, middle : integer
Deskripsi

ketemu <-- false while (low <= high) and (not ketemu) do
middle<-- (low+high) div 2 if (kunci = aray[middle]) then ketemu <-- true { data pencarian = data di tengah }
else if (kunci < aray[middle]) then high<-- middle – 1 {data akan dicari lagi di sebelah kiri}
else low<-- middle + 1 {data akan dicari lagi di sebelah kanan}
endif
endwhile
if ketemu then pencarianBiner := middle
else pencarianBiner := -1;
endif

c++ :


 output:


8.3 Bubble sort
Algoritma:


Procedure Bubble_Sort (input/output x : larik, input n : byte)
Deklarasi

larik = array [1..100] of integer
i, a : byte k : larik
j, bantu : integer
Deskripsi

for i <-- 1 to n-1 do
for j <-- i+1 to n do
if x[i] > x[j] then
tukar(x[i], x[j])
endif
endfor
endfor

Program dev c++ nya


output :

Kasus 8.4--8.5 klik disini
kasus 8.6--8.7 klik disini

Refleksi minggu ke 2

Refleksi Pertemuan ke 2 Assalamu'alaikum w. wb., Selamat berjumpa lagi teman-teman, baik saya disini akan menuliskan tentang refl...