
| |||||
| ||||||||||||
| |
| ||
| jon to or Senior Member Join Date: Oct 2003 Location: otrokojom Posts: 919 | Sedikit tambahan diingatkan dari old pal o' mine: Soal pilihan bahasa pemrograman, di samping soal teknis, bisa atau tidak dalam melakukan sesuatu tugas (grafik/performance), juga ada hal lain. Memilih bahasa pemrograman bukan hanya masalah sintaks, atau baris perintah, tapi juga pola berpikir, konsep memrogram. Seperti banyak orang mengambil konsep Object-Oriented (OO) karena lebih mudah dalam memodel simulasi dunia yang kompleks. Kenapa banyak orang content dengan C/C++? Karena banyak orang merasa nyaman dengan kemampuannya (dan akal2an teknisnya) untuk menerjemahkan konsep-konsep pemrograman yang benar terutama hubungannya dengan OO. Belum ditambah performance dan library-library yang tersedia dalam bahasa ini. Ngga heran kan... Buat yang ingin menggunakan OO dengan rasa lain, mungkin lebih sederhana/simpel, bisa mencoba bahasa2 lain seperti Java atau Delphi (gunakan secara OO). Yang penting bisa mengakomodasi kebutuhan untuk membuat game dan sesuai pertimbangan topik 2, game for fun. Bila mereka yang lebih terbiasa dengan bahasa prosedural juga bisa memilih bahasa-bahasa lain, atau kalau di C++ itu adalah C. Demikian, pilihan bahasa pemorgraman tergantung dari poin-poin di atas plus kemampuannya dalam menerjemahkan konsep ke code. Hal ini terutama dalam arsitektur kompleks yang nampak ruwet dalam tahap ini. __________________ \m/ | |
| In the last lesson we saw how to create simple variables and store user input in them. Now we will look into arrays. An array is simply a list of variables of the same type. Lets say your program required you to keep track of 100 integers, in which case you would have to create 100 integers by typing up each one, one by one... Needless to say that would take quite a while, but with arrays you can cut the typing down to one single line! Lets see how it works: |
#include |
| Here we have the same sample program from the previous lesson, except I replaced the three integers with a single array made up of three integers. "int myArray[3];" creates an array of three integers. Each integer inside this array will have a corresponding number, starting at 0. So in this case the three integers are myArray[0], myArray[1], and myArray[2]. Since 0 counts, there is not myArray[3]! Everything else is exactly the same. You can also use arrays to store a string of text by creating an array of characters. Here you would make the array the max size of characters you want plus one, since strings must end the null character (null mean nothing, not 0, just nothing). We will look more into strings in a latter lesson though. |
| |
| 2D arrays work just like normal arrays except they have two numbers per variable. In order to declare one you would add an extra pair of brackets (int my2dArray[3][3]). Here is a graphical representation of a 2D array: |
XXX |
| These will come in handy when you are programming graphics and animations, lets see an example program: |
#include |
| Ignore the for loops for now, we will look into those in the loops lesson. This program simply assigns a value to each element in myArray and then displays each one. As you can see there is not much difference between using normal arrays and 2d arrays. |
| |
| Functions are used to define a block of code, unlike the loops we discussed earlier, functions can be called from any place in your program so that you do not have to repeat the same code over and over again. Here is a basic function at work: |
#include |
| Here we create a function called addNumbers, which returns an integer. main() collects the data from the user and then sends it to addNumbers(), notice how I declared the integers in both main() and addNumbers. This is because the ones in main() are local variables which cannot be touched by other functions. The parameters for addNumbers() does not have to be the same as the variables containing the values being sent to addNumbers(). Once addNumbers() is called, it takes the values given to it by main() and returns the sum of them to the function that called it, which in this case is main(). Also notice how addNumbers() goes before main(). If you flip them around it will error out. If a function is being called by a function that apears before it in your source file, it must be declared at before it is called. Here is an example of this: |
#include |
| |
| If you just finished reading the lessons listed before this one, you should check Tic-Tac-Toe in the "Example Games" section just to be sure you really understand whats going on. Now lets look more into making an object move across the screen. Here is some example code: |
#include |
| Most of the code should look familliar aside from the new header file and the rand() function. cstdlib contains the rand() function which is used to generate random numbers. In this case, it is used to change the direction of the circle. Lets break down the code. main() get Allegro ready for action and then goes into a while loop which doesnt stop until the player presses ESC. moveCircle() will add or subtract to x and y depending on the direction the circle is going in (which is stored in dir). If the circle has hit the top, bottom, or side of the screen, it will change direction. dir = rand() % 4 +1; gives dir a random value between 1 and 4. rand() % 4 would return a random number between 0 and 3 ( 1 - 4) so we add 1 so we get a number between 1 and 4. If you wanted a number between 3 and 4 the code would be rand() % 2 + 3, since rand() % 2 would return either 0 or 1 so we would have to add 3. There will be more on the rand() function later. Afterwards, a black circle is drawn in order to cover up the old one, and then a green circle is drawn in the new position. Fairly simple isn't it? But there is one problem with the example, which is the flickering! Needless to say a flickering video game would be quite annoying... Lets fix this. |
| |
| The answer to all the flickering? Double buffering. What this means is that instead of drawing straight to the screen, we will draw to a temporary bitmap and then have one call to a function which will draw it to the screen. Since this will reduce the amount of times the screen is being accessed, the animation should run smoother. Here is how its done: |
#include |
| There you have it, the flickering is no more! Here we create a bitmap called buffer and using create_bitmap() we make it the same size as the screen. After this, anywhere you would have normally used screen, use buffer instead ( circlefill ( buffer, tempX, tempY, 20, makecol( 0, 0, 0)); ). Once everything has been drawn, copy the buffer onto the screen and there you have it! |
| |
Gambar 1.0: Form awal
Lalu ubah jadi kayak gini
Gambar: 2.0: Form yg telah di permak
(Tau kan cara buat form kayak gitu???)
Ni caranya kalo kalian lupa/ga tw.
Klik text1, trus di properti kalian hapus properti text, lakuin perlakuan yg sama ama text2 dan 3.
Trus cara ngrubah Command1 adalah pada properti Caption kalian hapus trus ganti pake tanda +, lakuin langkah yang sama untuk Command2 dan Command3.
Udah jadi kan kayak form di gambar 2.0
.
Oke kita lanjut ke penulisan code.
Klik 2 x pada Command1, dan ketik code di bawah ini di antara
Private Sub Command1_Click() dan End Sub
Kayak ini bos..
Private Sub Command1_Click()
hasil = Val(Text1) + Val(Text2)
Text3 = hasil
End Sub
Nah selesai deh untuk penjumlahan, kalian bisa coba jalankan program dan masukin angka di text1 dan text2 lalu tekan Command1. Benerkan hasilnya ??!!
Lakuin hal yang serupa pada Command2, klik 2 x trus kita hanya perlu mengubah tanda + menjadi * pada code programnya.
Kayak gini
Private Sub Command2_Click()
hasil = Val(Text1) * Val(Text2)
Text3 = hasil
End Sub
(Gampang kan, buat program ini gak susah kok)
Pada Command3 kita juga rubah tanda + menjadi -, beres deh..
Kayak gini
Private Sub Command3_Click()
hasil = Val(Text1) - Val(Text2)
Text3 = hasil
End Sub
PendahuluanDalam perjalanan perkembangan suatu generasi teknologi menjadi lebih mantap dan berdaya guna tinggi, membutuhkan adanya pengembangan dasar pengetahuan dan dilakukannya berbagai macam riset atau penelitian yang bersifat eksperimental. Penelitian atau riset ini akan memberikan jawaban terhadap pertanyaan mendasar seperti : teori-teori apa saja yang masih secara praktis masih relevan untuk kemudian dikembangkan atau teori mana saja yang sama sekali tidak bisa digunakan lagi? Teori yang bermanfaat adalah teori yang dianggap mampu menjembatani penggabungan pengendali fuzzy dengan sistem kendali konvensional atau algoritma kendali modern seperti jaringan neural, algoritma genetik, dan lain sebagainya.Pada generasi pertama teknologi fuzzy, terdapat beberapa kendala yang ditemui untuk mengembangkan pada industri-industri atau sistem kendali yang telah ada. Saat itu belum ada metodologi yang sistematik tentang aplikasi pengendali fuzzy, penentuan rancang bangun yang tepat, analisa permasalahan, dan bagaimana pengaruh perubahan parameter sistem terhadap kualitas unjuk kerja sistem. Jadi tidak bisa diharapkan suatu rancang bangun yang universal dan strategi optimasi fuzzy dapat segera digunakan secara praktis. Saat ini logika fuzzy telah berhasil menerobos kendala-kendala yang dulu pernah ditemui dan segera menjadi basis teknologi tinggi. Penerapan teori logika ini dianggap mampu menciptakan sebuah revolusi dalam teknologi. Sebagai contoh, mulai tahun 90-an para manufaktur industri yang bergerak di bidang Distributed Control System (DCSs), Programmable Controllers (PLCs), dan Microcontrollers (MCUs) telah menyatukan sistem logika fuzzy pada barang produksi mereka dan memiliki prospek ekonomi yang baik. Sebuah perusahaan mikroprosesor terkemuka, Motorolla, dalam sebuah jurnal teknologi, pernah menyatakan "… bahwa logika fuzzy pada masa-masa mendatang akan memainkan peranan penting pada sistem kendali dijital "(1). Pada saat yang bersamaan, pertumbuhan yang luar biasa terjadi pada industri perangkat lunak yangmenawarkan kemudahan penggunaan logika fuzzy dan penerapannya pada setiap aspek kehidupan sehari-hari. Perusahaan Jerman Siemens yang bergerak diberbagai bidang teknik seperti otomatisasi industri, pembangkit tenaga, semikonduktor, jaringan komunikasi publik dan pribadi, otomotif dan sistem transportasi, sistem audio dan video, dan lain sebagainya, beberapa tahun belakangan ini telah membentuk kelompok riset khusus tentang fuzzy. Tujuannya untuk melakukan penelitian dan pengembangan yang sistematik tentang logika fuzzy pada setiap aspek teknologi (4). Ada dua alasan utama yang mendasari pengembangan teknologi berbasis sistem fuzzy:
Kendali Perkembangan Teknologi Sistem FuzzyKeberhasilan penerapan teknologi fuzzy seperti yang telah dibeberkan pada bagian pembahasan sebelumnya, dapat direalisasikan jika terdapat penelitian dan strategi pengembangan riset dan desain oleh sebuah industri untuk menemukan teknik terbaik untuk produknya. Hal tersebut tentunya tidak terlepas dari kesulitan-kesulitan yang ditemui dalam menggunakan dan pengembangan teknologi ini. Secara garis besar beberapa kesulitan yang ditemui oleh industri-industri elektronika adalah sebagai berikut (4):
Perusahaan elektrik Omron selain menjual produknya, kini mereka juga tengah mengembangkan metode pendidikan dan pelatihan teknik logika fuzzy. Asisten manajer Omron FA System Div..Jim Krill berkatta," …, Educating potential customers about the benefits of fuzzy logic and where it can be applied is impotant for proper development of this technology." Jadi cara terbaik untuk mencapai teknologi ini menurutnya adalah melalui program pelatihan, seminar, dan pemakaian piranti lunak simulasi sistem fuzzy yang efektif (1). Hingga kini software pengembangan logika fuzzy sudah tidak terhitung banyaknya, mulai dari simulasi sistem yang sederhana hingga seistem yang sangat kompleks dan rumit. Masing-masing menawarkan berbagai kelebihan dan kemudahan pemakaian seperti : User friendly editor, sistem on-line dan off-line debugging, compilers untuk setiap bahasa pemrograman termasuk bahasa rakitan mikrokontroler, tampilan 3D dan berbagai macam proyek simulasi yang bisa dilakukan (4). Kendali Fuzzy, Klasifikasi Fuzzy, dan Diagnosis FuzzyAplikasi yang menggunakan logika fuzzy, selalu identik dengan pengendalian fuzzy. Walaupun sebenarnya aplikasi itu tergolong dalam klasifikasi fuzzy atau diagnosis fuzzy. Kejadian ini bukanlah masalah yang dominan dan pelik dalam sistem fuzzy, karena istilah "fuzzy" sebenarnya sudah kabur dan sering disamakan dengan istilah-istilah yang ada pada teori himpunan fuzzy, topologi fuzzy, atau dalam pengertian yang lebih sempit lagi sering disebut sebagai approximate reasoning dalam logika keputusan. Dengan cara pandang yang sama sistem kendali fuzzy sering sekali dinyatakan sebagai bagian teori himpunan fuzzy yang digunakan pada aplikasi-aplikasi dalam bentuk sistem lingkar tertutup. Namun tujuan utama tulisan ini adalah membedakan antara sistem kendali fuzzy dengan sistem klasifikasi fuzzy dan sistem diagnosis fuzzy. Pada ruang lingkup yang lebih luas lagi, masih ada sistem lainnya yang cukup sukses digunakan seperti sistem pakar fuzzy, sistem analisa data fuzzy, sistem pengolahan citra fuzzy, dan berbagai ragam aplikasi sistem fuzzy yang sudah ada.Pada dasarnya penggunaan istilah klasifikasi dan diagnosis bukanlah merupakan penamaan yang baku, karena keduanya mempunyai pengertian atau makna yang hampir sama dan batas-batas perbedaannya juga tidak begitu jelas. Namun yang teramat penting adalah kedua istilah tadi menunjukkan perbedaan antara kedua sistem aplikasi berbasis logika fuzzy. Sistem fuzzy secara umum dapat dilihat pada Gambar 1. Pada gambar tersebut terdapat blok proses, sistem fuzzy, dan sistem pengembangan (development system). Pihak developer diletakkan paling atas pada gambar ini. Selain itu, terdapat dua operator, yaitu seorang yang bertanggung jawab atas masukan untuk sistem fuzzy dan keluaran dari proses, dan seorang lagi bertugas mambawa masukan ke dalam proses dan menentukan keluaran dari sistem fuzzy. Operator ini sebenarnya tidak mesti seorang operator manusia, biasanya sistem fuzzy atau non-fuzzy yang berfungsi mengantarkan masukan atau keluaran sinyal proses. Dari gambar ini dapat diturunkan beberapa sistem sistem fuzzy, seperti pengendali fuzzy, klasifikator fuzzy, dan sistem pendiagnosaan fuzzy. Contoh dari sistem klasifikasi fuzzy adalah mesin cuci fuzzy. Beberapa variabel/parameter mesin cuci ditentukan berdasarkan jumlah dan jenis pakaian. Keluaran atau informasi dari sistem klasifikasi ini digunakan untuk menentukan jenis spin-dry serta lembut atau kasar gesekan pakaian yang optimal. Contoh ke dua dari sistem fuzzy ini adalah sistem transmisi otomatik fuzzy. Sistem ini menggunakan beberapa sensor yang ditaruh pada sistem ABS, sistem power steering, sistem kendali motor, dan bagian penting lainnya. Selama kendaraan berjalan, sistem ini akan terus memantau dan menilai kondisi mobil tersebut, seperti beban kendaraan, kondisi mobil pada saat melewati jalan yang menanjak atau menurun dan kondisi-kondisi lainnya. Pada Gambar 3, gambar operator manusia pada kiri dan kanan sistem klasifikasi fuzzy, biasanya merupakan suatu sistem khusus yang bertugas memberikan informasi yang diperlukan untuk kemudian di proses. Bidang aplikasi sistem diagnosis ini biasanya suatu proses yang besar dan kompleks, sehingga sangat sulit dianalisa menggunakan algoritma eksak dan dimodelkan dengan model matematika biasa. Pada permulaan persiapan sistem, jumlah aturan yang digunakan ini biasanya sangat banyak. Namun pada tahap akhir, jumlah aturan akan lebih sedikit dan mudah dibaca. Ini merupakan sifat sistem pakar fuzzy, seperti yang dikatakan oleh Prof. Zadeh, bahwa sistem pakar fuzzy akan menggunakan aturan-aturan yang lebih sedikit dibandingkan sistem pakar konvensional sehingga mudah dibaca dan membantu menghindarkan inkonsistensi dan inkomplit sistem pengendali (4). Contoh dari sistem pakar fuzzy ini adalah proyek diagnosa kebocoran-H2 pada sistem pendingin high-performance generator. Salah satu contoh aturan sistem diagnostik ini adalah : "Jika konsumsi H2 tinggi dan daya yang tersedia rendah dan suhu gas rendah dan tekanan H2 generator tidak rendah/menurun, maka tingkatkan konsumsi H2 (untuk menurunkan temperatur)" Yang perlu diperhatikan pada sistem diagnostik ini adalah, tidak berlakunya proses defuzzifikasi, karena sistem ini hanya menghasilkan sifat keluaran berupa aproksimasi linguistik yang merupakan suatu pernyataan atau jawaban yang mudah dipahami oleh operator. KesimpulanTeknologi sistem fuzzy telah berkembang cukup jauh, dan memberikan berbagai keuntungan dan perbaikan unjuk kerja pada sistem kendali yang pernah ada. Perkembangan sistem ini menuntut mutu sumber daya manusia yang berpendidikan, seperti ilmuwan dan enjineer yang ahli di bidang teknik sistem fuzzy dan tidak lepas dari kondisi pendidikan dan kelengkapan alat-alat yang mendukung pengembangan teknologi ini.Di bidang aplikasi fuzzy, tidak hanya terdapat sistem kendali fuzzy, melainkan juga ada klasifikasi fuzzy dan diagnosis fuzzy. Jadi sistem fuzzy pada keadaan riil, mempunyai ragam metode dan strategi pengembangan yang dapat diterapkan pada masalah-masalah kendali saat ini. Sumber Pustaka
|