Looping pada Bahasa Rakitan (Debug)

Bahasa Assembly, 06.11.2012, T. Komputer

Bahasa pemrograman tingkat tinggi memiliki instruksi looping seperti ‘for’, ‘do – while’, dan sejenisnya. Pada bahasa rakitan, instruksi tersebut dilayani oleh register ‘c’. Misalnya kita akan mencetak huruf ‘A’ sebanyak 10 kali, maka register CX haris diisi: A

Pada program di atas ada kesalahan pada lokasi looping yaitu seharusnya di 107 tertulis 104, sehingga program akan berjalan terus tidak berhenti.

Intruksi berikut ini akan menghasilkan?

Pohon Keputusan

Mat. Diskrit, 06.11.2012, T.Komputer

Pohon keputusan banyak dimanfaatkan untuk membantu pengambil keputusan dalam menentukan alternatif-alternatif pilihan yang ada. Dalam bidang kesehatan dapat digunakan untuk meprediksi penyakit pasien berdasarkan gejala-gejala yang ada. Buka matlab, buat dua buah matriks (matriks nilai dan matriks jurusan) yang akan dicari pohon keputusannya.

nilai =

 

8 7 6

7 8 7

8 8 9

7 8 6

6 6 8

10 9 9

5 6 7

6 6 7

jurusan =

 

ipa

ips

bhs

ips

bhs

ipa

bhs

bhs

Buat nama variabel dengan instruksi:

varnames = {‘nilai ipa’ ‘nilai ips’ ‘nilai bahasa’};

Berikutnya buat pohon keputusannya:

t1 = classregtree(nilai,jurusan,’splitmin’,5,’names’,varnames);

Setelah dijalankan >> view(t1) akan muncul pohon keputusannya:

Materi Ujian Tengah Semester Metode Elemen Hingga

Metode Elemen Hingga, 05.11.2012, T. Mesin S1

Berikut ini gambaran soal UTS Metode Elemen Hingga Teknik Mesin UNISMA (bae banget ya .. J). Buat programnya dalam bahasa Matlab, jika suhu atas, bawah, kiri dan kanan dimasukan suhu, akan diketahui Matriks suhunya disertai suhu pada titik-titik dalam Mesh itu (T1, T2, T3, T4, T5 dan T6).

Coba buat dengan disertai GUI jika mampu ( .. kyk pergi haji aja J), atau secara text-based juga tidak apa-apa. UTS nanti formasi nomor suhu, besar suhu, kemungkinan berbeda-beda tiap siswa. Lihat tulisan terdahulu untuk mengerjakannya.

Membuat Logika AND di Anfis

Upload Via Word, 1.11.2012. Tk. Elektronika

And merupakan operator logika dimana masukan kiri dan masukan kanan harus berharga ‘1’ jika ingin dihasilkan keluaran = 1. Untuk mempraktekannya coba buka Matlab anda. Masukkan data di matlab:

>> dat

 

dat =

 

0 0 0

1 0 0

0 1 0

1 1 1

Kemudian ketik anfisedit

Load data dari workspace yang baru saja dibuat, rancang struktur dengan dua mf di tiap tiap masukan. Hasilnya seperti ini, dibuat dua, karena rencananya hanya aka nada dua masukan dekat ke 0 atau ke 1

Lakukan training, kemudian simpan ke file. Buka fuzzy hasil create. Uji RULEnya.

Tarik garis merah ke kenan semua (berarti masukan 1 =1 dan masukan kanan 1), maka hasil output harus satu. Sebaliknya selain itu, missal kiri 0 dan kanan 1, hasilnya harus 0.

Koneksi dua Tabel dalam Satu Form

Pemr VB 6, 30.10.2012, Tek Sipil S1

Melanjutkan materi minggu lalu, kita mencoba menambahkan satu table dalam satu Form di VB. Tambahkan satu tabel baru di Database yang telah Anda buat, misalnya tabel transaksi. Tabel ini berisi transaksi penjualan material.

Untuk latihan, isi field-field di tabel transaksi yaitu No, kode dan Total. Masukan satu record awal, misalnya pembelian barang dengan kode 001 sebesar 110000. Klik Database Tools, buat relasi antara tabel material dengan tabel transaksi. Perhatikan, kode barang pada transaksi harus terkoneksi dengan kode barang pada tabel material.

Jika sudah selesai, buka project VB yang lalu, tambahkan DBGrid dan ADODC baru untuk mengkoneksikan tabel transaksi ke form tersebut. Gunakan cara yang sama dengan materi minggu lalu.

Coba koneksikan sehingga jika dijalankan Data Grid di bawah akan berisi data transaksi. Lanjut minggu depan bagaimana mengisi kode-nya.

Mengalikan Matriks dengan Ukuran Bervariasi

Aljabar Linear, 30.10.2012, T.Komputer

Jika pada pertemuan yang lalu kita mengalikan matriks ukuran 2×3 dengan 3×2, sekarang kita akan mengalikan matriks yang ukurannya tergantung dari pengguna asalkan tidak menyalahi kaidah perkalian (jumlah kolom matriks kiri harus sama dengan jumlah baris matriks kanan). Gunakan listing berikut ini (jika mengkopi – paste, jangan lupa simbol petik ” harus diketik ulang):

  • #include<stdio.h>
  • #include<iostream.h>
    • void main()
    • {
    • int i,j,A[5][5],B[5][5],ia,ja,ib,jb,a,b,c,X[5][5];
    • //menginput matriks A
    • cout<<“Masukkan Jumlah Baris Matriks A : “;
    • cin>>ia;
    • cout<<“Masukkan Jumlah Kolom Matriks A : “;
    • cin>>ja;
    • cout<<“Masukkan Matriks A \n”;
    • for(i=0;i<ia;i++)
    • {
      • for(j=0;j<ja;j++)
      • {
        • cout<<“Masukkan Elemen Matriks ke “<<(i+1)<<“,”<<(j+1)<<” :”;
        • cin>>A[i][j];
      • }
    • }
    • //menginput matriks B
    • cout<<“Masukkan Jumlah Baris Matriks B : “;
    • cin>>ib;
    • cout<<“Masukkan Jumlah Kolom Matriks B : “;
    • cin>>jb;
    • cout<<“Masukkan Matriks A \n”;
    • for(i=0;i<ib;i++)
    • {
      • for(j=0;j<jb;j++)
      • {
        • cout<<“Masukkan Elemen Matriks ke “<<(i+1)<<“,”<<(j+1)<<” :”;
        • cin>>B[i][j];
      • }
    • }
    • //menampilkan matriks A
    • cout<<“Matriks A = \n”;
    • for(i=0;i<ia;i++)
    • {
      • for(j=0;j<ja;j++)
      • {
        • cout<<A[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
    • //menampilkan matriks B
    • cout<<“Matriks B = \n”;
    • for(i=0;i<ib;i++)
    • {
      • for(j=0;j<jb;j++)
      • {
        • cout<<B[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
    • //mentraspose matriks A
    • cout<<“Transport matriks A : “<<“\n”;
    • for(j=0;j<ja;j++)
    • {
      • for(i=0;i<ia;i++)
      • {
        • cout<<A[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
    • //Mengalikan Matriks A dengan B
    • cout<<“Hasil kali Matriks A dengan B :”<<“\n”;
    • cout<<“Ukuran Matriks = “<<ia<<“x”<<jb<<“\n”;
    • for(a=0;a<ia;a++)
    • {    for(b=0;b<jb;b++)
      • {X[a][b]=0;
      • for(c=0;c<ja;c++)
      • {
      • X[a][b]=X[a][b]+A[a][c]*B[c][b];
      • }
      • }
    • }
    • //Menampilkan Matriks X
    • for(a=0;a<ia;a++)
    • {    for(b=0;b<jb;b++)
      • {
      • cout<<X[a][b]<<” “;
      • }
      • cout<<“\n”;
    • }
    • }

Setelah dijalankan akan dihasilkan perkalian matriks dengan ukuran yang ditentukan oleh pengguna program.

Ganti Baris Pada Bahasa Rakitan (Debug)

Ganti baris pada bahasa rakitan prinsipnya adalah mencetak dua kode ASCII 0D dan 0A berturut-turut. Di sini ASCII 0A berfungsi turun satu baris, sedangkan 0D geser ke kiri satu baris. Jika kita hanya menggunakan 0A maka baris berikutnya akan maju satu digit dari yang atasnya (ada offset).

Perhatikan gambar di atas, hurub ABC akan ada offset satu ketukan tiap ganti baris, Oleh karena itu saat berganti baris kita harus tambahkan 0D agar bergeser ke kiri juga dan tidak hanya turun satu baris. Perhatikan listing berikut ini.

Perhatikan, hasilnya ABC tercetak dalam baris yang berbeda tetapi dalam kolom yang sama dan tidak ada offset ke kanan satu digit. Sengaja digunakan push dan pop sekalian belajar instruksi itu .. dan biar pusing dikit J.

Merancang Apliksai Sederhana Perhitungan Kalor dgn Matlab

Metode Elemen Hingga, 29.10.2012, Tek Mesin S1

Setelah pada pertemuan sebelumnya kita membuat aplikasi perhitungan suhu suatu bidang dua dimensi dengan console (text-based), sekarang kita coba untuk membuat aplikasi yang berbasis Graphical User Interface (GUI). Untuk mempraktekannya download gambar berikut ini.

Kemudian pada command window ketik guide. Rancang disain seperti di bawah ini:

Gunakan teknik yang telah dijelaskan pada pertemuan yang lalu untuk menghitung nilai empat suhu di tengah jika atas, bawah, kiri dan kanan diberi suhu. Jika dijalankan hasilnya kira2 seperti di bawah ini.

Graph Theory 2

Mat Diskrit, 29.10.2012, T. Komputer D3

Jika pada pertemuan yang lalu kita menggunakan graph berarah, sekarang kita coba graph yang tidak berarah. Dalam Matlab tidak jauh berbeda teknik memasukkan datanya. Tetap gunakan arah panah sebagai patokan.

Setelah memasukan matriks graphnya:

>> W=[.5 .4 .3 .4 .2 .1];

>> DG=sparse([2 1 4 4 3 5],[1 3 3 2 5 4],W)

>>view(biograph(DG,[],’ShowWeights’,’on’))

Tekan tombol Accept. Akan dihasilkan gambar graph sebagai berikut:

Sekarang mencari Matriks graph untuk mengetahui jalur terpendek:

>> graphallshortestpaths(DG)

 

ans =

 

0 1.1000 0.4000 0.7000 0.6000

0.5000 0 0.9000 1.2000 1.1000

1.2000 0.7000 0 0.3000 0.2000

0.9000 0.4000 0.3000 0 0.5000

1.0000 0.5000 0.4000 0.1000 0

Untuk yang tidak berarah:

>> UG = tril(DG + DG’)

Matriks jalur terpendeknya:

>> graphallshortestpaths(UG)

 

ans =

 

0 Inf Inf Inf Inf

0.5000 0 Inf Inf Inf

0.4000 Inf 0 Inf Inf

0.7000 0.4000 0.3000 0 Inf

0.6000 0.5000 0.2000 0.1000 0

Mengalikan Matriks (2×3) dengan (3×2)

Aljabar Linear, 25.10.2012, T.Komputer D3, Lab Hardware

Pertemuan yang lalu kita telah membuat program perkalian dua buah matriks 3×3, sekarang kita coba membuat program mengalikan dua buah matriks, yakni matriks 2×3 dengan 3×2. Untuk menerima inputan matriks dari keyboard, buka program yang lalu. Lakukan modifikasi jangkauan i dan j baik untuk matriks kiri (A) dan matriks kanan (B).

Perhatikan kode di atas hasil modifikasi dari program sebelumnya. Deklarasi variabel, tidak ada perubahan, hanya saja format matriks A, B, dan X yang berubah jangkauan matriksnya. Matriks A jumlah baris 2 dan kolom 3, sebaliknya Matriks B dengan jumlah kolom 3 dan baris 2. Jangan lupa, kalang (for) untuk menampilkan matriks A dan B juga harus dimodifikasi.

Akhirnya, setelah Matriks A dan B terbentuk, dibuat satu kalang untuk membuat matriks X hasil perkalian kedua matriks itu. Perhatikan karena hasil kali matriks (2×3) dan (3×2) haruslah berukuran (2×2) maka a dan b dijaga dari 0 sampai 1 (array dimulai dari 0). Jalankan (Ctrl-F9).

Untuk latihan, coba buat program yang mengalikan matriks berapa saja, fleksibel, tergantung masukan ukuran matriks yang akan dikalikan. Tentu saja jika tidak memenuhi syarat, program langsung memberi respon adanya kesalahan tentang ukuran matriks sebagai syarat perkalian.

Graph Theory

Discrete Mathematic, Lab of Software, 23.10.2012, Comp. Engineering D3

Graph theory is an old theory about connection between vertex and edge. It was found in eighteen century by Euler. The first case was about bridge called konisberg. So, as a exercise we try to solve the smallest path to problem below.

Open your Matlab application and try to input that problem into Matlab. In command window, firstly, we create Matrix of vertexes and edges.

  • W=[.5 .4 .3 .4 .2 .1];
  • >> DG=sparse([2 1 4 4 3 5],[1 3 3 2 5 4],W)
  • DG =
  • (2,1) 0.5000
  • (5,4) 0.1000
  • (4,2) 0.4000
  • (1,3) 0.4000
  • (4,3) 0.3000
  • (3,5) 0.2000
  • view(biograph(DG,[],’ShowWeights’,’on’))

Finaly, we get the shortest path for every node using function ‘graphallshortestpaths‘

>> graphallshortestpaths(DG)

 

ans =

 

0 1.1000 0.4000 0.7000 0.6000

0.5000 0 0.9000 1.2000 1.1000

1.2000 0.7000 0 0.3000 0.2000

0.9000 0.4000 0.3000 0 0.5000

1.0000 0.5000 0.4000 0.1000 0

What is that matrix mean? The rows are represent nodes and the columns are another nodes. For example, the shortest path from node 2 to node 5 can be seen at that matrix are the number of row 2 column 5 is 1.1. You can count by your self that the node 2 to node 5 are across node 1 and 3 with 0.5, 0.4 and 0.2 = 1.1 which the same as element (2,5).

Membuat Persamaan dengan Microsoft Equation

Lab Sainstech, 23.10.2012, T.Mesin S1.

Buat persamaan matematik dengan Microsoft Equation. Klik ‘Insert’ – pilih symbol equation:

Contoh untuk nim: 41187001120054, a=5, b=4.

Untuk membuat Matrik, pilih ‘Matrix with Bracket‘.

Hapus isi matrik yang 2 x 2 dan ganti menjadi 3 x 3.

Terakhir, untuk pangkat eksponensial:

 

 

Note: Simpan dan beri nama sesuai dengan nama masing-masing. Kirim ke email: rahmadya.trias@gmail.com

Perbandingan Sistem Kendali Kontinyu dan Digital

Buka Simulink untuk memandingkan grafik keluaran antara sistem kendali kontinyu dan dijital. Untuk membandingkan kita gunakan fungsi alih yang sama.

Pilih ‘Continuous‘ dan ‘Diskrit‘ untuk membuat fungsi alihnya.

Untuk mendapatkan ‘Mux‘ gunakan ‘searching” pada simulink. Untuk mencari fungsi alih diskritnya, gunakan command window pada Matlab dan fungsi ‘c2d‘ untuk memperoleh ‘Discrete Transfer Fcn‘.

  • >> g=tf(1,[1 4 8])
  • Transfer function:
  • 1
  • ————-
  • s^2 + 4 s + 8
  • >> h=c2d(g,0.1,’zoh’)
  • Transfer function:
  • 0.004367 z + 0.003821
  • ———————-
  • z^2 – 1.605 z + 0.6703
  • Sampling time: 0.1

Hasilnya dapat dilihat pada Scope:

Ada sedikit perbedaan pada respon, tetapi akurasinya tetap sama (Lihat Display: 0.89). Ketertinggalan diakibatkan oleh ‘Time Sampling‘ yang kecil. Waktu cuplik yang terlalu akurat mengakibatkan beban saat konversi dari D/A dan A/D. Coba naikan waktu cuplik jadi satu detik, hasilnya:

Hasilnya lebih akurat tetapi akibatnya grafik kurang presisi.

Mengalikan Matriks 3 x 3

Untuk perkalian matriks kita harus mengetahui syarat perkalian dua matriks dimana kolom matriks bagian kiri harus sama dengan baris matriks bagian kanan. Jika tidak memenuhi, program sebaiknya memberi pesan. Hasilnya pun kita harus tahu, yakni berukuran baris matriks bagian kiri dan kolom matriks bagian kanan. Misal kita akan mengalikan matriks berukuran 2×3 dengan 3×2, maka hasil matriksnya adalah 2×2. Karena kasus yang akan kita coba adalah mengalikan matriks 3×3 dengan 3×3, maka dengan mudah kita mendapatkan hasil matriks 3×3 juga. Dengan kode pada tulisan terdahulu, tambahkan di bawahnya kode berikut (jangan lupa deklarasikan int a,b, dan c terlebih dahulu).

//mengalikan matriks A x B

for(a=0;a<3;a++)

{

    for(b=0;b<3;b++)

    {

        X[a][b]=0;

        for(c=0;c<3;c++)

        {

            X[a][b]=X[a][b]+A[a][c]*B[c][b];

        }

    }

}

cout<<“Hasil Kali = \n”;

for(a=0;a<3;a++)

{

    for(b=0;b<3;b++)

    {

        cout<<X[a][b]<<” “;

    }

    cout<<” \n”;

}

Kebetulan matriks 3×3 unik, berikutnya kita akan coba mengalikan dua matriks yang ukurannya bervariasi.

Memasukan Matriks dengan Turbo/Borland C++

Sebelum masuk ke praktek mengalikan dua buah matriks, ada baiknya berlatih terlebih dahulu memasukan dua buah matriks yang akan dikalikan, misalnya matriks A dan B. Buka Turbo/Borland C++ dan ketik instruksi sebagai berikut:

  1. #include<stdio.h>
  2. #include<iostream.h>
  3. void main()
  4. {
  5. int i,j,A[3][3],B[3][3];
  6. //menginput matriks A
  7. cout<<“Masukkan Matriks A \n”;
  8. for(i=0;i<3;i++)
  9. {
    1. for(j=0;j<3;j++)
    2. {
      1. cout<<“Masukkan Elemen Matriks ke “<<(i+1)<<“,”<<(j+1)<<” :”;
      2. cin>>A[i][j];
    3. }
  10. }
  11. //menginput matriks B
  12. cout<<“Masukkan Matriks B \n”;
  13. for(i=0;i<3;i++)
  14. {
    1. for(j=0;j<3;j++)
    2. {
      1. cout<<“Masukkan Elemen Matriks ke “<<(i+1)<<“,”<<(j+1)<<” :”;
      2. cin>>B[i][j];
    3. }
  15. }
  16. //menampilkan matriks A
  17. cout<<“Matriks A = \n”;
  18. for(i=0;i<3;i++)
  19. {
    1. for(j=0;j<3;j++)
    2. {
      1. cout<<A[i][j]<<” “;
    3. }
    4. cout<<“\n”;
  20. }
  21. //menampilkan matriks B
  22. cout<<“Matriks B = \n”;
  23. for(i=0;i<3;i++)
  24. {
    1. for(j=0;j<3;j++)
    2. {
      1. cout<<A[i][j]<<” “;
    3. }
    4. cout<<“\n”;
  25. }
  26. }

Jalankan dengan menekan Ctrl-F9 atau mengklik “Debug” – “Run”.

Berikutnya akan kita coba mengalikan dua matriks tersebut.