Sabtu, 28 Mei 2016

Diktat bab 10



1. Identifikasi masalah
    "Program modifikasi struktur data dari algoritma 9.1. dan algoritma 9.2. sehingga sesuai dengan  tabel di bawah ini dengan menggunakan link list.#include <iostream>"
2. Menentukan input dan output
    input   = 
    output =
3. Membuat algoritma atau flowchart
    Algoritma = "Program modifikasilah struktur data dari algoritma 9.1. dan algoritma 9.2. sehingga sesuai dengan tabel di bawah ini dengan menggunakan linklist.#include <iostream>"
    Prosedur   = Buat_berikut_list()
    Deklarasi  = 
                         Nama[20]   = karakter
                         Nim[10]     =  karakter
                         Nilai           = integer
    Deskripsi  =
    while when lagi=='Y' then lagi=='y'
    while (cetak !=NULL)
    if when cetak->Nilai>=0 and cetak->Nilai<20
       E
       else if when cetak->Nilai>=20 and cetak->Nilai<40
       D
       else if when cetak->Nilai>=40 and cetak->Nilai<60
      C
       else if when cetak->Nilai>=60 and cetak->Nilai<80
      B
      else
      A
      cetak=cetak->berikut
    end if
    end while
    end while
4. Test menggunakan data
     input   =
     output =
5. Implementasi dengan C++
#include <conio.h>
#include <windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
class Mhs{
public:
void Buat_berikut_list();
char Nama[20];
char Nim[10];
int Nilai;
Mhs *berikut;
};
void Mhs::Buat_berikut_list(){
Mhs *Ptr_Kepala = NULL;
Mhs *Ptr_Baru;
char lagi;
do{
Ptr_Baru= new Mhs;
cout<<"\nNama Mahasiswa : ";
cin>>Ptr_Baru->Nama;
cout<<"Nim Mahasiswa : ";
cin>>Ptr_Baru->Nim;
cout<<"Nilai Mahasiswa : ";
cin>>Ptr_Baru->Nilai;
Ptr_Baru->berikut=Ptr_Kepala;
Ptr_Kepala=Ptr_Baru;
cout<<"Tambah (y/t) : ";
cin>>lagi;
} while (lagi=='Y' || lagi=='y');
system("cls");
cout<<"\nAnda telah memasukkan data : "<<endl;
Mhs *cetak= Ptr_Kepala;
cout<<"Nama \t\t Nim \t\t Nilai Angka \t\t Nilai Huruf"<<endl;
while (cetak !=NULL){
cout<<cetak->Nama<<" \t\t"<<cetak->Nim<<" \t\t"<<cetak->Nilai<<" \t\t";
if (cetak->Nilai>=0&&cetak->Nilai<20)
cout<<"E"<<endl;
else if(cetak->Nilai>=20&&cetak->Nilai<40)
cout<<"D"<<endl;
else if(cetak->Nilai>=40&&cetak->Nilai<60)
cout<<"C"<<endl;
else if(cetak->Nilai>=60&&cetak->Nilai<80)
cout<<"B"<<endl;
else
cout<<"A"<<endl;
cetak=cetak->berikut;
}
}
int main(int argc, char** argv) {
Mhs *simpul;
simpul->Buat_berikut_list();
getch();

}

Rabu, 25 Mei 2016

Perkalian vektor (2 elemen) dengan matriks berukuran 2x3 dan vektor (3 elemen)



1.      Identifikasi masalah

Mengalikan vektor 2 elemen dan matrik 2 x 3 sekaligus vektor 3 elemenn.

2.      Menentukan input dan output

     input   : matrik[2][3]={1,2,3,2,3,4}.

                    vektor[3]={1,2,3}.
                    vek[2]={1,2,}     output : hasil[2].

3.       Membuat flowchart/ Algoritma

     Deklarasi :
     matrik[2][3] = {1,2,3,2,3,4} <- integer
    vektor[2]        = {1,2,3} <- integer
    vek[2]              = {1,2} <- integer
    hasil[2]           = {0} <- integer
   Deklarasi :
   for i<-0 to i<-2 do
          for j<-0 to j<-3 do
                 hasil[i]=hasil[i]+(matrik [i][j]*vektor[j]);
                 write hasil[i];
        end for
endfor
for i<-0 toi<-2 do
  hasil[i]=hasil[i]*vek[i];
  write hasil[i];
endfor
end

4. Test Menggunakan Data.

data vektor(2 elemen), matrik(ordo 2x3) dan vektor(3 elemen)
           j=0                       j=0  j=1  j=2                        j=0
A i=0|1|             B i=0| 1       2      3  |           C i=0| 1 |
    i=1|2|                 i=1| 2       3      4  |              i=1 | 2 |
                                                                             i=2 | 3 |
Perkalian antara matrik B sama vektor C
             j=0  j=1  j=2                            j=0
D i=0|  1       4     9 |     =        D i=0| 14|
    i=1 |  2      6     12|    =             i=1 |20|
Setelah dapat hasil dari matrik B sama vektor C maka di kalikan lagi dengan vektor A
             j=0                    j=0                          j=0
D i=0|14|       A i=0| 1 |      =       E i=0|14|
     i=1|20|           i=1| 2 |      =           i=1 |20|

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 kali(int matrik[2][3],int vektor[3],int hasil[2]){
 cout<<"matrik 2x3 : \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<<"vektor 3 elemen : \n";
 for(int i=0;i<3;i++){
  cout<<vektor[i]<<endl;
 }
}

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

void cetaka(int vek[2],int hasil[]){
 cout<<"hasil akhir : \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 matrik[2][3]={1,2,3,2,3,4}, vektor[3]={1,2,3},vek[2]={1,2},hasil[2]={0};
 kali(matrik,vektor,hasil);
 cetakm(matrik);
 cetakv(vektor);
 cetak(hasil);
 cetakb(vek);
cetaka(vek,hasil);
return 0;
}
 
6.esekusi

Selasa, 24 Mei 2016

REFLEKSI MINGGU 11

Rabu, 25 Mei 2016 adalah pertemuan ke 11 mata kuliah algoritma pemrograman. Pada pertemuan ini mempelajari tentang Array 2 dimensi. Pada pertemuan ini dosen meminta mahasiswa untuk memahami materi tersebut dan dusen memberikan soal untuk di diskusikan bersama. Hasil diskusi hari ini adalah :
1. Membuat matriks perkalian dengan jumlah baris 8 dan kolom 10 dengan nama matriks A.
        j=1  j=2  j=3  j=4  j=5  j=6  j=7  j=8  j=9  j=10
        1      2     3     4     5     6     7     8     9     10 => n
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8 => m
Maka diperoleh rumus :
   8          10
V   i=1   V  j=1  = i*j
for (i=1; i<=8; i++)
for (j=1; j<=10; j++)
A[i,j] = i*j

2. Matriks A B 2*3 dengan rentang angka -9 sd 9
      j=1 j=2 j=3
A = 1     2    3
     a11  a12  a13
      4     5    6
    a21  a22  a23

    j=1 j=2 j=3
B= 4    5    6
   b11 b12 b13 
     7   8  9
   b21 b22 b23

C = a11+b11  a12+b12  a13+b13
      a21+b21  a22+b22  a23+a23
   2          3
V   a=1 V  b=1
for(i=1; i<=2; i++){
for (j=1; j<=3; j++){
C[i,j] = (A[i,j]+B[i,j])

3. Matriks A 2*3 dan Matriks B 3*2
A= -1   1   2           B= 2   4
      3  -2   4                1   -2
                                  3   -1
C= a11.b11+a12.b21+a13.b31
     a21.b12+a22.b22+a23.b32

k=1; k<=3;k++
   2         2        3
V   i=1 V  j=1 V  k=1
a i k*b k j
total=0
i=1+2+3
i=1
total=total+i
c i j dimulaidari 0
c i j = c i j + a i k * b k j

Selasa, 17 Mei 2016

REFLEKSI MINGGU 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

Senin, 16 Mei 2016

MENGURUTKAN DATA DENGAN METODE BUBBLE SHORT



LANGKAH :

1.      Mengerti masalah/identifikasi masalah
→ Mengurutkan data dengan metode bubble short

2.      Menentukan input output yang dikehendaki
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
Pindahkan (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 dengan 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() {
int nilai[100], n;
cout << "Banyak data : ";
cin >> n;
baca_data(nilai,n);
cout<<endl;
cout<<"data awal"<<endl;
cetak_data(nilai,n);
buble_sort(nilai,n);
cout<<"data stelah diurutkan"<<endl;
cetak_data(nilai,n);
}

6.      Eksekusi 

output didapat dari proses pertukaran tempat yang menggunakan variabel penampung.

Program ini telah saya selesaikan dalam waktu  3 jam 45 menit.

UNTUK METODE SELECTION BISA DILIHAT DI : 
UNTUK METODE INSECTION BISA DILIHAT DI :