pertemuan alpro kali ini membahas tentang materi Array dua dimensi , kasus matriks
diawal jam pertemuan dosen seperti biasa menyuruh mahasiswa untuk membaca materi terlebh dahulu lalu dosen memberikan contoh soal. salah satu dari mahasiswa disuruh untuk maju kedepan kelas untuk menjawab.
diakhir jam pertemuan dosen memberikan tugas unuk upload diblog masing-masing tentang tugas mengalikan vektor (2 elemen) dengan matriks berukuran 2x3 dan vektor (3 elemen) melalui 6 tahap (seperti biasa) . tugas tersebut dipos terkhir jam 21.00 hari ini 24 mei 2016.
tugas tersebut saya juga akan mencari referensi di internet
Selasa, 24 Mei 2016
Perkalian Matrik dengan vektor
- Masalah :
- Analisis :
mengecek baris atau kolom yang jumlahnya sama antara matrik yang ingin dikalikan.
mengalikan matriks dengan vektor syarat jumlah kolom matrik a sama dengan baris vektor b.
hasil akan dihitung dengan perkalian baris matrik satu dengan kolom matrik satunya
- Algoritma :
procedur kali matrik (input/output i,j,matrik vektor)
Deklarasi : i,j(integer)
Deskripsi :
for i<- 1 to 2 do
for j<- 1 to 3 do
([i,j]=([i,j]+a[i,j]*b[i,j])
end for
end for
end
- Program dev c++ :
#include <iostream>
#include <iostream>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
void kali(int matrik[2][3],int vektor[3],int hasil[2]){
cout<<"Matrik : \n";
for(int i=0;i<2;i++){
for(int j=0;j<3;j++)
hasil[i]=hasil[i]+(matrik[i][j]*vektor[j]);
}
}
void cetakm(int hasil[][3]){
for(int i=0;i<2;i++){
for(int j=0;j<3;j++)
cout<<hasil[i][j]<<" ";
cout<<endl;
}
}
void cetakv(int vektor[]){
cout<<"\nVektor : \n";
for(int i=0;i<3;i++){
cout<<vektor[i]<<endl;
}
}
void cetak(int hasil[]){
cout<<"\nHasil Terakhir : \n";
for(int i=0;i<2;i++){
cout<<hasil[i]<<endl;
}
}
int main(int argc, char** argv) {
int matrik[2][3]={3,4,1,5,6,7}, vektor[3]={3,2,4},hasil[2]={0};
kali(matrik,vektor,hasil);
cetakm(matrik);
cetakv(vektor);
cetak(hasil);
return 0;
}
- Output nya :
- Uji coba :
Jumat, 20 Mei 2016
Refleksi minggu ke sepuluh
Pada pertemuan ke-10 masih membahahas mengenai macam-macam sorting dan algoritma penyelesaiannya. Dan tambahannya yaitu membahas mengenai searching. Sorting dan searching adalah sesuatu yang berkaitan, dimana sorting di gunakan untuk mengurutkan data sedangkan searching di gunakan untuk mencari data. Jadi jika data yang ada sudah urut itu akan mempermudah dan menghemat waktu dalam pencarian data.
How To Solve per 9
1. 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;
}
2. 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 :
1. Temukan atau cari nama yang pertama kali datang dalam urutan huruf dan tulis di sheet kedua
2. Tandai nama yang keluar dari daftar asli
3. 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);
}
3. Algorithm 5.3 Sorting By Exchange.
Soal
Diberikan urutan yang tidak beraturan dari kumpulan nilai n gunakan urutan dengan emnggunakan sorting by exchange
Penyelesaian :
Bubble Sort (Gelembung) merupakan metode pertukaran yang alur logikanya mirip dengan gelembung yaitu dengan cara membandingkan indeks Array yang pertama dengan indeks Array berikutnya secara terus menerus dan bergantian. Namun cara ini kurang efektif karena meskipun data sudah terurut proses perulangan yang terjadi akan terus berlangsung sampai batas perulangan itu berakhir. Ini adalah contoh alur alogaritmanya dalam kode program.
for (c=0; c<7; c++)
{ for (x=0; x<7; x++)
{if (menu[x]menu[x+1])
{term=menu[x];
menu[x]=menu[x+1];
menu[x+1]=term;
}
else {
menu[x]=menu[x];
}}}
Selection Sort (Maksimum/Minimum) merupakan metode pertukaran yang mencari nilai Maksimum/Minimum sekelompok data array yang nantinya nilai yang paling ujung akan diisolasikan dan tidak disertakan pada proses selanjutnya. Perhatikan contoh code berikut ini.
for(y=0; y<9; y++)
{max=0;
for (x=1; x<=b; x++)
{ if (A[x]>A[max])
{
max=x;
} }
if (A[max]>A[b])
{ term=A[b];
A[b]=A[max];
A[max]=term;
b--;
} else
{
b--;
}}
Insertion Sort (Sisip) meripakan metode pengurutan dengan cara menyisipkan nilai pada array pada posisi yang tepat. Untuk lebih jelasnya silakan lihat code dibawah ini.
for (k=1; k<9; k++)
{
term=L[k];
j=k-1;
while (term<=L[j])
{
L[j+1]=L[j];
j--;
}
if ((term >= L[j]) || (j=1))
{
L[j+1]=term;
}
else
{
L[j+1]=L[j];
L[j]=term;
}
4. Algorithm 5.4 Sorting By Insertion.
Algoritma :
1. Membangun sebuah array [1 .. n] elemen n.
2. Menemukan minimum dan meletakkannya di tempat untuk bertindak sebagai sentinel :
3. Sementara masih ada unsur-unsur yang akan dimasukkan di bagian memerintahkan melakukan
a. Pilih x elemen berikutnya untuk dimasukkan
b. Sementara x kurang dari sebelumnya unsur melakukan
c. Insert x pada posisi saat ini
for i:=2 to n do
begin {search for x's position then insert it}
j:=1; x:=a[i];
while x>a[j] do j:=j+1
for k:= i down to j+1 do a[k]:= a[k-1];
a[j]:=x
end
Program C++ :
#include <iostream.h>
void main(){
int data[100];
int a,b,c,d,x;
int temp;
cout<<"PROGRAM SORTING DATA "<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"Masukkan jumlah data : ? ";cin>>x;
for(d=1;d<=x;d++)
{
cout<<"Data ke-"<<d<<" = ";cin>>data[d];
}
cout<<"\nData Sebelum Diurutkan \n";
for(d=1;d<=x;d++){
cout<<"\t"<<data[d];
}
for(a=0;a<x;a++){
for(b=0;b<x;b++)
if(data[b]>= data[b+1])
{
temp=data[b];
data[b]=data[b+1];
data[b+1]=temp;
}
}
cout<<"\n\nData setelah diurutkan :\n";
for(c=0;c<x;c++)
cout<<"\t"<<data[c];
cout<<"\n\n---------------------------------------------"<<endl
}
system("PAUSE");
return EXIT_SUCCESS;
}
Senin, 16 Mei 2016
Mengurutkan deret dengan Motode Bubble Sort
- Analisis

Bubble sorting adalah penggurutan dengan memindahkan data paling kiri dan dibandingkan dengan data disebelah kannannya.
Dan ketika data kiri lebih besar dari data yang di sebelah kanan maka data tersebut akan di pindah atau di tukar.
- input dan output
Input : data sejumlah n yang tidak urut
- Algoritma
- Flowchart
- Dev c++
Program INSERTION Sallahudin
Program SELECTTION Aji sentosa
Refeksi minggu ke sembilan
Pertemuan ke-9 ane kuliah malem gan, karna pagi nya pak dosen marah dan kuliah di gantikan mlm itu. ini materi yang dibahas mengenai sorting. Sorting yaitu menyusun elemen – elemen dengan urutan tertentu, naik atau turun. Terdapat 3 metode dalam sorting, yaitu bubble sort (nilai yang besar akan naik, sedangkan nilai yang kecil akan turun), selection sort (mencari nilai data terbesar atau terkecil dan kemudian menempatkannya pada posisi yang sebenarnya), dan insertion sort (dengan menyisipkan).
Contoh sorting selection sort :
Contoh sorting selection sort :
20 | 35 | 18 | 8 | 14 | 41 | 3 | 39A[1] —- tukar —- A[7]3 | 35 | 18 | 8 | 14 | 41 | 20 | 39A[2] —- tukar —- A[4]3 | 8 | 18 | 35 | 14 | 41 | 20 | 393 | 8 | 14 | 35 | 18 | 41 | 20 | 393 | 8 | 14 | 18 | 35 | 41 | 20 | 393 | 8 | 14 | 18 | 20 | 41 | 35 | 393 | 8 | 14 | 18 | 20 | 35 | 41 | 393 | 8 | 14 | 18 | 20 | 35 | 39 | 41
Jumat, 13 Mei 2016
Bab 9 Diktat
Workshop Pemrograman
1. Buatlah algoritma dan program untuk mengalikan matriks dengan vektor. Vektor adalah
matriks berdimensi satu (bisa matriks baris maupun matriks kolom). Implementasikan
matriks dengan array berdimensi dua, dan vektor dengan menggunakan matriks
berdimensi satu.
a. Buat contoh matriks sembarang, misal berordo 2x2 :
b. Buat contoh vektor :
c. Kalikan matriks poin a dan vektor poin b elemen demi elemen. Jangan menuliskan hasil
akhir saja, tapi tuliskan pula perkalian (dan penjumlahan) setiap elemen.
d. Identifikasilah dan kelompokkan setiap langkah dengan variabel perulangan !
e. Tulis lengkap algoritma yang anda peroleh :
Dev c++ :
2. Diberikan suatu matriks berordo n. Buatlah algoritma dan program untuk mencetak
matriks identitas berodo n.
Dev c++ :
3. Buatlah algoritma dan program untuk menghasilkan transpose suatu matriks.
Dev c++ :
4. Buatlah algoritma dan program mengalikan matriks dengan suatu skalar (konstanta).
Dev c++ :
5. Buatlah algoritma dan program invers matriks berordo dua. Lalu kalikan matriks asal
dengan matriks inversnya untuk mengecek apakah hasil kalinya merupakan matriks
identitas atau bukan.
a. Buat contoh matriks sembarang, berordo 2x2 :
b. Hitung determinan matriks di atas
c. Tulis matriks adjoin dari poin a
d. Hitung invers matriks berordo 2x2 :
Dev c++ :
Langganan:
Postingan (Atom)









