Kamis, 16 Oktober 2014

TUGAS TEKNIK KOMPILASI

Proses Kompilasi Bahasa Pemrograman C#

 

Halo ketemu lagi semuanya. Bagaimana kabar? Baik? hehe. Semoga masih diberikan kesehatan, sehat walafiat untuk kita semua. Amin :D
Sekarang kita akan sedikit belajar hal baru, membahas tentang apa yang sebenarnya terjadi saat kita melakukan proses coding dan mengompile sebuah program di C# hmm pasti banyak yang belum tahu kan, makanya sekedar kita belajar dan tahu sedikit tentang apa yang terjadi, yuk ikutin :D

Saat kita mengompilasi sebuah program yang kita gunakan menggunakan bahasa pemrograman C#, kompiler bahasa pemrograman C# akan menerjemahkan kode-kode C# kita menjadi MSIL (Microsoft Intemediate Language) yang sama seperti saat kita menulis kode menggunakan Visual Basic.Net, Visual C++.Net, dan sebagainya, sebelum kemudian menerjemahkannya kembali menjadi berkas-berkas berekstensi .exe atau .dll . Multifile Assembly dalam hal ini merupakan proses kompilasi beberapa berkas .NET yang masing-masing disebut sebagai module yang juga berisi berkas assembly manifest yang didalamnya terdapat instruksi-instruksi CIL (Common Intermediate Language) dan aneka Metadata terkait.

Konversi kode C# ke MSIL  
Lalu komponen apa yang memungkinkan kode-kode bahasa pemrograman C# dikompilasi agar kompabilitas antarbahasa keluarga .Net tetap terjaga? Komponen yang dimaksud adalah Just In Time Compiler (JITers) yang bertindak sedemikian rupa sehingga saat MSIL akan dieksekusi , CLR (Common Language Runtime) akan memanggil JITers yang akan menerjemahkan kode-kode bahasa keluarga .Net menjadi kode-kode spesifik terhadap komputer tertentu. JITers peduli terhadap komputer-komputer tertentu yang digunakan untuk menjalankan program serta sistem operasi yang digunakannya. Dalam hal ini Microsoft Corp. berani menjamin bahwa kode-kode bahasa dari pemrograman .Net akan dieksekusi lebih cepat dibandingkan dengan kode-kode yang menggunakan bahasa C/C++.
Tidak seperti bahasa C/C++ tradisional, kode bahasa C# tidak secara langsung diterjemahkan kedalam bahasa mesin. Kompiler bahasa pemrograman C# mengkonversi kode C# menjadi berkas MSIL yang dinamakan asembly. Berkas MSIL dapat dibuat menggunakan semua bahasa pemrograman yang dikembangkan diatas CLR (misalnya Visual C++, Visual J#, serta Visual Basic). Adapun diagram di bawah ini memperlihatkan bagaimana kode C# yang kita tulis dikonversi menjadi kode yang dapat dieksekusi oleh komputer.



Diagram Alir Konversi Kode C# ke Kode yang Dapat Dijalankan di Sistem Operasi
Berkas MSIL hadir dalam bentuk berkas berekstensi .exe serta .dll, tetapi alih-alih beralan langsung diatas sistem operasi Windows, mereka dieksekusi oleh CRL. CLR mengomplilasi program MSIL ke kode mesin saat diperlukan. Proses ini dinamakan kompilasi JIT (Just In Time). Kode mesin inilah yang kemudian dieksekusi secara langsung oleh komputer. Dengan membuat kode yang bersifat netral terhadap perangkat keras komputer hingga saat terakhir, maka keamanan dan portabilitas akan meningkat. Dalam hal ini proses ini secara umum tersembunyi dari pandangan pengguna. Dengan kata lain, program yang ditulis menggunakan bahasa C# dikompilasi, dieksekusi, serta didistribusikan dengan cara yang sama seperti program yang ditulis menggunakan bahasa pemrograman lainnya. Sepanjang framework .NET terinstalasi di komputer yang bersangkutan, program C# akan berjalan dengan baik seperti aplikasi yang lain. Hal ini mirip dengan JRE (Java Runtime Environment) yang memungkinkan program bahasa Java berjalan di sembarang komputer.
Selain hal diatas , Microsoft Corp. juga menyediakan suatu pustaka kelas yang dinamakan FCL(Framework Class Library). FCL ini memuat ribuan kelas yang mampu melakukan akses ke API (Application Programming Interface) untuk sistem operasi Windows (Win API), sehingga pemrogram lebih nyaman saat melakukan  pemrograman akses data, multithreading, struktur data yang bersifat umum, pemrograman jaringan dan sebagainya. Kelas-kelas dalam FCL ini juga dirancang untuk menggunakan paradigma pemrograman berorientasi objek yang sangat ketat sehingga dapat digunakan ulang secara sangat efektif dan efisien.
Karena dirancang dalam hubungannya dengan framework .NET, aplikasi yang dikembangkan menggunakan bahasa pemrograman C# sangat sesuai untuk framework .Net ini. Dalam hal ini framework .Net memiliki sejumlah pustaka kelas yang menyediakan sejumlah besar kelas yang sangat diperlukan untuk mengembangkan aplikasi, seperti fungsionalitas teks dangrafik, kelas-kelas menyimpan data di basis data, kakas (tool) untuk memanipulasi XML, metode-metode untuk melakukan akses terhadap situs web yang diperlukan, dan sebagainya. Kelompok kelas yang dimiliki framework .NET disebut dengan namespace. Namespace itulah yang merupakan kelompok kelas-kelas yang saling berhubungan, dan memiliki hubungan untuk menyelesaikan masalah tertentu. 
Mungkin di pembahasan berikutnya saya akan membahas lebih jauh tentang namespace dan contohnya, juga penjelasannya masing-masing. Jadi tetep pantengin terus ya postingan saya, hihi. Semoga ilmu yang saya bagikan dapat bermanfaat. 

Terims kasih .........<:>

Rabu, 15 Oktober 2014

TUGAS SISTEM PAKAR 1


Penyelesaian Fungsi Sigmoid 

Terdapat Data Training
contoh :














Tentukan dulu input dan target nya…!!! Input = x1 dan x2 kemudian Target = y1 dan y2

X1 = 89                Y1 =0.14 (Target yang akan di capai)
X2 = 10                Y2 =0.99 (Target yang akan di capai)

Terlebih dahulu normalisasi inputan dengan cara bilangan terkecil di bagi bilangan terbesar. Hasilnya dibawah ini :

X1 = 1                  Y1 =0.14 (Target yang akan di capai)
X2 = 0.112           Y2 =0.99 (Target yang akan di capai)


Inisialisasi :
α = 0.7
s = 1

 

V01 = 0.4
W01 = 0.2
V02 = 0.5
W02 = 0.3
V11 = 0.8
W11 = 0.6
V12 = 0.9
W12 = 0.5
V21 = 0.6
W21 = 0.4
V22 = 0.6
W22 = 0.2










Z in 1   = v01 * 1 + v11 * x1 + v21*x2
            = 0.4*1+0.8*1+0.6*0.112
            = 1.267

Z1        = 1/(1+e-1.267) = 0.780

                            Ket : tanda merah dapat di cakar secara manual
                            e =2.718            maka
                                           Z1 = 1 / (1 + (1/2.718^1.267)) = kerjakan dahulu yang bewarna biru
                                                = 1/(1+0.28)
                                                = 0.78


Z in 2   = v02*1 + v12*x1 + v22*x2
            = 0.5*1  + 0.9*1    + 0.6*0.112
            = 1.467

Z2        = 1 / (1+e-1.467) = 0.680

Y in 1  = w01*1 + w11*z1 + w21*z2
            = 0.2*1  + 0.6*0.780 + 0.4*0.680
            = 0.893

Y in 2  = w02*1 + w12*z1 + w22*z2
            = 0.3*1 + 0.5*0.780 + 0.2*0.680
            = 0.753

Y1       = 1 / (1 + e-0.893) = 0.710

Y2       =1 / (1 + e-0.753) = 0.680

d1        = (y1 – y1’) * (e-y in 1) / (1 + e-y in 1)2
            = (0.14 – 0.710) * (e-0.893) / (1 + e-0.893) = -0.105

d2        =(y2– y2’) * (e-y in 2) / (1 + e-y in 2)2
            = (0.99 – 0.680) * (e-0.753) / (1 + e-0.753) = 0.064

Dw01   = α * (d1)
            = 0.7 * (-0.105)
            = -0.075

Dw02   =α * (d2)
            = 0.7 * (0.064)
            = 0.045

Dw11   =α * (d1) * z1
            = 0.7 * (-0.105) * 0.780
            = -0.057

Dw12   = α * (d2) * z1
            = 0.7 * (0.064) * 0.780
            = 0.035

Dw21   =α * (d1) * z2
            = 0.7 * (-0.105) * 0.680
            = -0.057

Dw22   =α * (d2) * z2
            = 0.7 * (0.064) * 0.680
            = 0.037

d in 1   =d1*w11 + d2*w12
            = (-0.105) * 0.6 + (0.064) * 0.5
            = -0.031

d1        =d in 1 * e-1.267 / (1+e-1.267)2
            = 0.005

d in 2   =d1*w21 + d2*w22
            = (-0.105) * 0.4 + (0.064) * 0.2
            = -0.029

d2        =d in 2 * e-1.467/ (1+e-1.467)2
            = -0.006

Dv01    = α * (d1) = 0.7 * (0.005) = -0.0037

Dv02    = α * (d2) = 0.7 * (-0.006) = -0.0044

Dv11    = α * (d1) * x1
            = 0.7 * (0.005) * 1
            = -0.0037

Dv12    = α * (d2) * x1
            = 0.7 * (-0.006) * 1
            = -0.0044

Dv21    = α * (d1) * x2
            = 0.7 * (0.005) * 0.112
            = -0.0004

Dv22    = α * (d2) * x2
            = 0.7 * (-0.006) * 0.112
            = -0.0005

Selanjutnya menentukan nilai baru dari v dan w :

V01     = 0.4 + (-0.0037) = 0.396
V02     = 0.5 + (-0.0044) = 0.50
V11     = 0.8 + (-0.0037) = 0.80
V12     = 0.9 + (-0.0044) = 0.90
V21     = 0.4 + (-0.0004) = 0.60
V22     = 0.6 + (-0.0005) = 0.60
W01    = 0.2 + (-0.075)   = 0.03
W02    = 0.3 + (0.045)     = 0.25
W11    = 0.6 + (-0.057)   = 0.54
W12    = 0.5 + (0.045)    = 0.54
W21    = 0.4 + (-0.057)  = 0.34
W22    =0.2 + (0.037)    = 0.24



Setelah semuanya sudah di cari dengan betul maka akan di dapatkan nilai baru untuk V dan W
Karna Y1 dan Y2 dalam perhitungan di atas belum memenuhi target, maka harus di cari lagi menggunakan proses perulangan.
Karena harus menyelesaikan dengan proses perulangan maka dari itu gunakan aplikasi Ms.excel agar dapat menyelesaikan masalah tersebut tampilan nya seperti gambar berikut ini :










Target yang ingin kita cari  :

 Y1 = 0.14
 Y2 = 0.99

gambar di atas menyatakan bahwa yang bewarna merah itu Y1 = 0.195 dan yang bewarna biru itu Y2 = 0.810 ,,, berarti bahwa pengalaman untuk mencapai sebuah target dapat berhasil, karena nilai Y2 perlahan - lahan mendekati target yang diinginkan.

Semoga Bermanfaat ...!!!! ^_^

Blogger news

Benner Friends

Free Music Online
Free Music Online

free music at divine-music.info

Lencana Facebook

Cari Blog Ini

Jeffer Nada © 2008 Template by:
SkinCorner