Rabu, 25 Mei 2016

Mengalikan Vektor (2 elemen) dengan Matriks berukuran 2x3 dan Vektor (3 elemen)



1. Identifikasi Masalah
=> Mengalikan Vektor (2 elemen) dengan Matriks berukuran 2x3 dan Vektor (3 elemen)

2. Menentukan input dan output
Input :
matrix [2] [3] = {1,2,3,3,2,1}  
vektor [3] = {2,3,4}  
vek [2] = {2,1}
Output :
Hasil perkalian matrix 2x3 dan vektor 3 elemen :
20
16

Hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3) :
40
16

3. Membuat Flowchart atau Algoritma
Algoritma Perkalian_Matrix
{ Menghitung hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3)}

Deklarasi :
matrix [2] [3] = {1,2,3,3,2,1}              : integer
vektor [3] = {2,3,4}                            : integer
vek [2] = {2,1}                                  : integer
hasil [2] ={0}                                      : integer

Deskripsi :
Write('Matrik elemen 2x3 : \n')
            for i ß 0 to 2 do then i++
                        for j ß 0 to 3 then j++
                                    hasil[i] ß hasil[i]+(matrix[i][j]*vektor[j]);
            end for
                        end for

for i ß 0 to 2 do then i++
            for j ß 0 to 3 then j++ then
                        write(hasil[i][j])
            end for
                        end for

write(‘Vektor 3 elemen: \n’)
            for j ß 0 to 3 then j++ then
                        write(vektor[i])
end for

write(‘Vektor 2 elemen : \n’)
            for i ß 0 to 2 then i++ then
                        write(vek[i])
end for

write(‘Hasil perkalian matrix 2x3 dan vektor 3 elemen : \n’)
            for i ß 0 to 2 then i++
                        write(hasil[i])
end for

write(‘Hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3) : \n’)
for i ß 0 to 2 then i++
                        hasil[i] ßhasil[i]*vek[i];
                        write(hasil[i])

end for

4. Test Menggunakan data
Input :
matrix [2] [3]:    | 1 2 3|
                           | 3 2 1|
vektor [3]        : | 2 |
                          | 3 |
                          | 4 |
vek [2]   | 2 |
              | 1 |
Output :
Hasil perkalian matrix 2x3 dan vektor 3 elemen :
20
16

Kemudian hasilnya dikalikan dengan asil perkalian vektor(elemen 2) ,
Hasil akhirnya adalah :
40
16


5. Implementasi c++

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void perkalian(int matrix[2][3],int vektor[3],int hasil[2]){
 cout<<"Matrik elemen 2x3 : \n";
 for(int i=0;i<2;i++){
  for(int j=0;j<3;j++)
   hasil[i]=hasil[i]+(matrix[i][j]*vektor[j]);
 }
}

void cetakmatrix(int hasil[][3]){
 for(int i=0;i<2;i++){
  for(int j=0;j<3;j++)
   cout<<hasil[i][j]<<" ";
   cout<<endl;
 }
}

void cetakvektor(int vektor[]){
 cout<<"Vektor 3 elemen: \n";
 for(int i=0;i<3;i++){
  cout<<vektor[i]<<endl;
 }
}

void cetakb(int vek[]){
 cout<<"Vektor 2 elemen : \n";
 for(int i=0;i<2;i++){
  cout<<vek[i]<<endl;
 }
}
void cetak(int hasil[]){
 cout<<"Hasil perkalian matrix 2x3 dan vektor 3 elemen : \n";
 for(int i=0;i<2;i++){
  cout<<hasil[i]<<endl;
 }
}

void cetaka(int vek[2],int hasil[]){
 cout<<"Hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3) : \n";
    for(int i=0;i<2;i++){
 hasil[i]=hasil[i]*vek[i];
 cout<<hasil[i]<<endl;
}
}

int main(int argc, char** argv) {
 int matrix[2][3]={1,2,3,3,2,1}, vektor[3]={2,3,4},vek[2]={2,1},hasil[2]={0};
 perkalian(matrix,vektor,hasil);
 cetakmatrix(matrix);
 cetakvektor(vektor);
 cetak(hasil);
 cetakb(vek);
 cetaka(vek,hasil);
 return 0;
}


Selasa, 24 Mei 2016

Refleksi 10

Hallo bertemu lagi dengan refleksi  10
Rabu, 18 mei 2016 adalah pertemuan ke 10 algoritma dan pemrograman. Pada pertemuan ini membahas materi tentang searching. 

1. Linear search
Diberikan contoh soal :
buatlah array 10 elemen dengan nama A yang <10
indeks 1  2  3  4  5  6  7  8  9  10
A =     2  0  7  9  4  5  6  1  8  3
kunci pencarian : 4
4=2, 4=0, 4=7, 4=9, 4=4.
data 4 berada diposisi indeks ke 5
i=1
while(i<=n){
if kp[i] then
write ("data",kp "ada pada posisi ke-",i)

2. Binary Seearch
Syarat : data sudah terurut
contoh soal :
Buatlah array dengan nama B dengan  elemen isi data maksimal 9 tetapi <10 terdiri dari bilangan acak dari kiri ke kanan.
Indeks : 1  2  3  4  5  6  7  8
       B : 1  2  4  5  6  7  8  9
kp=7
7=1, 7=2, 7=4, 7=5, 7=6, 7=7
lalu kita bandingkan dengan indeks yang ditengah
1+8/2= 4.5 =4
jadi 4 adalah indeks tengah
hitung kembali :
indeks awal+indeks akhir / 2
5+8/2 =6.5 = 6
6+8/2 =7
maka ditemukan pada indeks ke 6

sekian refleksi 10 nanti kita sambung lagi di refleksi 11 . terimakasihh 

Senin, 16 Mei 2016

Refleksi 9

Hallo bertemu lagi di refleksi 9
Tanggal 14 mei 2016 adalah pertemuan ke sembilan matakuliah Algoritma dan Pemrograman yang membahas tentang "Sorting". Dosen menjelaskan materi dan menjelaskan tata cara membuat program Bubble Sort, Selection Sort dan Insertion Sort. Kemudian setelah Dosen menjelaskan, setiap anggota kelompok di perintah untuk mengerjakan tugas sesuai yang ada di rencana kuliah dan saya kebagian mengerjakan program Selection sorting. 
Berikut cara mencari setiap bagian sorting:
1. membandingkan 2 bilangan
2. memindah elemen dari 2 bilangan
3. menggeser bilangan
4. menggunakan indeks array

       1. Bubble Sort
Metode pengurutan gelembung (bubble sort) mempunyai perilaku seperti gelembung di mana bila akan diurutkan naik, nilai yang besar akan naik (indeks besar) sementara nilai yang kecil akan turun (ke indeks yang kecil).
Sebagai ilustrasi, proses bubble sort adalah sebagai berikut :
Data awal : [8, 4, 7, 3, 1, 2, 6, 5] 8←→4, 4←→3, 3←→1
fase 1 [1, 8, 7, 4, 3, 2, 6, 5] 8←→7, 7←→4, 4←→3, 3←→2
fase 2 [1, 2, 8, 7, 4, 3, 6, 5] 8←→7, 7←→4, 4←→3
fase 3 [1, 2, 3, 8, 7, 4, 6, 5] 8←→7, 7←→4
fase 4 [1, 2, 3, 4, 8, 7, 6, 5] 8←→7, 7←→6, 6←→5
fase 5 [1, 2, 3, 4, 5, 8, 7, 6] 8←→7, 7←→6
fase 6 [1, 2, 3, 4, 5, 6, 8, 7] 8←→7
fase 7 [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]
        2. Selection Sort
Algoritma pengurutan dengan metode seleksi dapat diilustrasikan demikian. Misalkan
diberikan data awal :
[8, 4, 7, 3, 1, 2, 6, 5]
Data awal : [8, 4, 7, 3, 1, 2, 6, 5] 1 terkecil, 8←→1
fase 1 [1, 4, 7, 3, 8, 2, 6, 5] 2 terkecil, 4←→2
fase 2 [1, 2, 7, 3, 8, 4, 6, 5] 3 terkecil, 7←→3
fase 3 [1, 2, 3, 7, 8, 4, 6, 5] 4 terkecil, 7←→4
fase 4 [1, 2, 3, 4, 8, 7, 6, 5] 5 terkecil, 8←→5
fase 5 [1, 2, 3, 4, 5, 7, 6, 8] 6 terkecil, 7←→6
fase 6 [1, 2, 3, 4, 5, 6, 7, 8] 7 terkecil, tetap
fase 7 [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]
       3. Insertion Sort
Untuk menjelaskan algoritma pengurutan dengan metode penyisipan, bayangkan setumpuk kartu ada di meja, dengan nomor :
[8, 4, 7, 3, 1, 2, 6, 5]
Urutan selengkapnya adalah sebagai berikut :
Data awal : [8, 4, 7, 3, 1, 2, 6, 5]
fase 1, 4 masuk [4, 8, 7, 3, 1, 2, 6, 5]
fase 2, 7 masuk [4, 7, 8, 3, 1, 2, 6, 5]
fase 3, 3 masuk [3, 4, 7, 8, 1, 2, 6, 5]
fase 4, 1 masuk [1, 3, 4, 7, 8, 2, 6, 5]
fase 5, 2 masuk [1, 2, 3, 4, 7, 8, 6, 5]
fase 6, 6 masuk [1, 2, 3, 4, 6, 7, 8, 5]
fase 7, 5 masuk [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]

Sekian dulu  refleksi 9 nanti kita sambung lagi di refleksi 10 . 

Rencana Kuliah 3

  • SELECTION SORT 
  • INSERTION SORT
  • BUBBLE SORT
1.    1.    Identifikasi Masalah
      => melakukan penukaran data dengan tepat disebelahnya secara       terus meneru
2. Menentukan input dan output
                Input: A[i]=i, A[i+1]=j
                Output: A[i]= A[i+1], A[i+1]=A[i]
3. Membuat flowchart 
    

     















 4. Tes menggunakan data
      → input banyak data : 6
          Input data ke 1 : 9
          Input data ke 2 : 8
          Input data ke 3 : 7
          Input data ke 4 : 6
          Input data ke 5 : 5
          Input data ke 6 : 4
          Output : Data setelah diurutkan : 4 5 6 7 8 9

Hasil tersebut diperoleh dari :
For I ← 1 to n-1
If A[i]>A[i+1] then
Tukar (A[i], A[i+1])
Jika elemen kiri > elemen kanan maka kita pindahkan.
Data awal : 9 8 7 6 5 4
Step 1 : 8 9 7 6 5 4 (9>8)
Step 2 : 8 7 9 6 5 4 (9>7)
Step 3 : 8 7 6 9 5 4 (9>5)
Step 4 : 8 7 6 5 9 4 (9>4)
Step 5 : 8 7 6 5 4 9 (8>7)
Step 6 : 7 8 6 5 4 9 (8>6)
Step 7 : 7 6 8 5 4 9 (8>5)
Step 8 : 7 6 5 8 4 9 (8>4)
Step 9 : 7 6 5 4 8 9 (7>6)
Step 10 : 6 7 5 4 8 9 (7>5)
Step 11 : 6 5 7 4 8 9 (7>4)
Step 12 : 6 5 4 7 8 9 (6>5)
Step 13 : 5 6 4 7 8 9 (6>4)
Step 14 : 5 4 6 7 8 9 (5>4)
Step 15 : 4 5 6 7 8 9

    5.  Implementasi c++

#include <iostream>
using namespace std;
void baca_data(int A[], int n) {
int i;
for (i = 0; i < n; i++)
{ cout << "Data ke-" << i+1 << " : ";
cin >> A[i];
}
}
void cetak_data( int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << A[i] << " ";
cout << "\n";
}
void tukar (int *a, int *b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}
void buble_sort (int x[], int n)
{ int i, j;
for (i = 0; i<n-1; i++)
for (j = i+1; j<n; j++)
if (x[i] > x[j])
tukar(&x[i], &x[j]);
}


 main() {
//  nilai variable " nilai[100], n " disni digunakan untuk mengisi nilai parameter dalm prosedur    
int nilai[100], n;
cout << "Banyak data : ";
cin >> n;
baca_data(nilai,n);    //  pemgilan prosedur
cout<<endl;
cout<<"data awal"<<endl;
cetak_data(nilai,n);   //  pemgilan prosedur
buble_sort(nilai,n);   //  pemgilan prosedur
cout<<"data stelah diurutkan"<<endl;
cetak_data(nilai,n);   //  pemgilan prosedur

}






  • MENGGESER ELEMEN ARRAY

  • Menggeser elememn array ada dua cara yaitu dengan  menggeser ke kiri dan menggeser ke kanan
    berikut ini adalah algoritma mengeser ke kiri:

    1. Identifikasi masalah
         Menggeser element array
    2. Menentukan input dan output
         Input a, b, temp
         Output kiri
    3. Membuat flowchart
         


    4. Test menggunakan data
         | 4 | 6 |   |
         a = 4
         b = 6
         temp = a
         a = b
         b = c
         A[4] = A[3]
         A[3] = A[2]
         A[2] = A[1]

      5. implementasi c++
             
    MENGGESER KIRI
    #include <cstdlib>
    #include <iostream>
    #define maks5

    using namespace std;

    class array{
     friend ostream& operator<<(ostream&, const array&);
     friend istream& operator>>(istream&, array&);
      public:
         array();
         void cetak();
         void geser_kiri();

      private:
         char a[5];
         int posisi;
    };

    array::array(){
     for(int i=0;i<5;i++)
     a[i]='O';
    }
    void array::cetak(){
     for(int i=0;i<5;i++)
     cout<<a[i]<<" ";
    }
    ostream& operator<<(ostream& out, const array& keluar){
     for(int i=0;i<5;i++)
     out<<keluar.a[i]<<" ";
     out<<endl;
     return out;
    }

    istream& operator>>(istream& in, array& masuk){
     int posisi;
       cout<<" \t\tMenggeser elemen array ke kiri"<<endl;
     for (int posisi=1; posisi<=5; posisi++){
      cout<<endl;
     cout<<"Masukkan nilai array posisi ke "<<posisi<<"= ";
     //in>>masuk.posisi;
     if(posisi >= 0 && posisi <= 5){
     //cout<<"masukkan elemen arraynya :";
     in>>masuk.a[posisi-1];
     }
     }
     return in;
    }
    void array::geser_kiri(){
     int n=5;
     int temp=a[0];
     for(int i=0;i<n;i++)
     a[i]=a[i+1];
     a[n-1]=temp;

    }


    int main(int argc, char *argv[])
    {
     array X;
    // cout<<"Array masih kosong : "<<X;

     cin>>X;
     cout<<"Isi Array saat ini : "<<X<<endl;
     X.geser_kiri();
     cout<<endl;
     cout<<"Isi Array setelah di geser kiri : "<<X;

     return 0;

    }



    2. RAPTOR


    Jumat, 06 Mei 2016

    Diskusi Kelompok



    1.   Kapan array digunakan?
     Kita menggunakan array saat kita akan menyimpan suatu nilai dalam bentuk deretan dan membutuhkan banyak variable . Input data dapat di masukan oleh user . Array adalah sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama. Setiap data tersebut menempati lokasi atau alamat memori yang berbeda-beda kita sering menyebutnya  dengan elemen array.
    Elemen array itu kemudian dapat kita panggil  melalui indeks yang terdapat didalamnya.

    2.   Mengapa array digunakan?
    Array digunakan untuk membuat nama pada  variabel indeks,yang dapat membedakan antar  elemen satu dengan elemen lainya. Array digunakan untuk  menghitung variable yang lebih dari satu.

    3.   Apa kekurangan atau kelemahan array?
    a)      Array harus bertipe sama. Kita tidak dapat membuat  array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lainnya yang bertipe berbeda
    b)      Tidak efisien dalam penggunaan memori
    c)       Membutuhkan banyak waktu untuk koding
    d)      Dalam memory Array yang telah di pesan akan tetap terhitung walaupun tidak di isi sebuah nilai.


    e)      Nilai variable tidak dapat dirubah


    Program Menghitung Rata – rata Mahasiswa dengan Array

    1. DEV C++

    #include <iostream>
    #include <windows.h>

    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    using namespace std;
    int main(int argc, char** argv) {
                    string nama [10];
                    int i,jum=0,nilai [5];
                    int nim [9];
                    for (int i=1;i<=3;i++){
                                    cout<<"No"<<i<<endl;
                                    cout<<"Masukan Nim"<<i<<" : ";
                                    cin>>nim[i];
                                    cout<<"Masukan Nama"<<i<<" : ";
                                    cin>>nama[i];
                                    cout<<"Masukan Nilai"<<i<<" : ";
                                    cin>>nilai[i];
                   
                    }
                    system ("cls");
                    cout<<"\n"<<"No \t"<<" Nim \t" << "Nama \t"<<"Nilai \t"<<endl;
                    cout<<"------------------------------------"<<endl;
                    for(int i=1;i<=3;i++){
                                    cout<<i<<"\t"<<nim[i]<<"\t"<<nama[i]<<"\t"<<nilai[i]<<endl;

                    }
                   
                    cout<<"------------------------------------"<<endl;
                    cout<<"jumlah nilai = "<<nilai[1]+nilai[2]+nilai[3] <<"\n";
                    cout<<"rata-rata = "<<(nilai[1]+nilai[2]+nilai[3])/3<<"\n";
                    return 0;


    }



    Refleksi 8

    Hallo berjumpa lagi di refleksi 8
    Tanggal 04 maret 2016  pertemuan ke delapan matakuliah algoritma dan pemrograman yang membahas tentang kelanjutan Array Satu Dimensi. Sebelum Dosen menjelaskan materi, Dosen memberitahu hasil dari UTS kami dan membahas solal UTS. Setelah membahas soal UTS,  Dosen memberi  waktu 10 menit kepada setiap kelompok untuk membagi-bagi tugas yang mana tugas tersebut sudah di perintahkan untuk di kerjakan pada minggu akhir sebelum UTS, berarti setiap kelompok tinggal melengkapi saja. Setelah pembagian tugas, Dosen pun menjelaskan materi dan mengingatkan kembali kepada setiap kelompok untuk mulai mengerjakan Tugas Proyek.
    Sampai disini dulu refleksi 8 nanti kita sambung lagi di refleksi 9. Sekian dan  Terimakasihh