Minggu, 21 September 2014
My PHP Glossary
1) $this atau pseudo-variabel artinya variabel '$this' berfungsi untuk referensi ketika sebuah method di panggil dari suatu objek , terutama jika sebuah objek memiliki method(fungsi).
2) simbol "::" nama kerennya Scope Resolution Operator / Paamayim Nekudotayim (hebrew)
:: merupakan simbol yang digunakan sebuah class untuk memanggil fungsi atau variable static dan konstanta. Lebih jelasnya dengan simbol ini, mesti ngerti dulu apa itu static variable dan static function.
3) isset() digunakan untuk menyatakan variabel sudah diset atau tidak. Jika variabel sudah diset makan variabel akan mengembalikan nilai true, sebaliknya akan bernilai false. Jika pada variabel di atas suda ada isinya maka yang akan tampil adalah variabel yg sudah ada isinya.
dan sebaliknya jika belum ada variabel yang sama maka” tampil variable belum terisi.
jadi intinya: ”isset berfungsi untuk mengecek apakah suatu variable sudah ada isinya atau belum. Contoh:
4) unset()merupakan kebalikan dari isset(), yaitu untuk meng-unsetvariabel, dan membebaskan memory yang sudah digunakan.
5) empty(), digunakan untuk memerikasa apakah variabel form tidak dikirim atau tidak berisi data alias kosong. berbeda denagn isset(), yang mengembalikan nilai false pada variabel yang di-unset, empty() akan mengembalikan nilai true.
Senin, 01 September 2014
Silabus Interfacing System I
Dosen : Arsyad Ramadhan Darlis S.T.,M.T
1.Pendahuluan
2.Pengenalan Arsitektur Mikrokontroler
3.Microkontroler MCS 51 & MVR
4.Komunikasi Seial & Pararel MC
5.Model Software MC MCS-51 & AVR
6.LED DRIVER
7.Motor DRIVER
CODE VISION AVR utk CODING
AVR Studio 4 untuk Download
1.Pendahuluan
2.Pengenalan Arsitektur Mikrokontroler
3.Microkontroler MCS 51 & MVR
4.Komunikasi Seial & Pararel MC
5.Model Software MC MCS-51 & AVR
6.LED DRIVER
7.Motor DRIVER
CODE VISION AVR utk CODING
AVR Studio 4 untuk Download
Selasa, 12 Agustus 2014
Program Java - Menampilkan 10 Karakter Secara Acak(Random) dg Array 2 dimensi
Silahkan berikan komentar, jika bermanfaat! Terima Kasih sudah berkunjung =)
Kamis, 10 Juli 2014
Rangkuman DFD
Kata Kerja(KK) = Proses; simbol = bulat.
Kata Benda(KB) =
1.Ext.Entity ;simbol = persegi
2.Data ; simbol = setengan persegi
Contoh DFD Sistem Penjualan Pulsa:
KK:
1.Mendaftar
2.Isi Deposit
3.Transaksi
KB:
1.Member
2.Customer
3.Saldo
Tugas3: Buat DFD Situs jualan Online!
Kata Benda(KB) =
1.Ext.Entity ;simbol = persegi
2.Data ; simbol = setengan persegi
Contoh DFD Sistem Penjualan Pulsa:
KK:
1.Mendaftar
2.Isi Deposit
3.Transaksi
KB:
1.Member
2.Customer
3.Saldo
Tugas3: Buat DFD Situs jualan Online!
Pengertian Flowmap?
Pengertian Flowmap adalah campuran peta dan flow chart,yang menunjukan pergerakan benda dari satu lokasi ke lokasi lain, seperti jumlah orang dalam migrasi, jumlah barang yang diperdagangkan, atau jumlah paket dalam jaringan. Flowmap menolong analisis dan programmer untuk memecahkan masalah ke dalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternaitf-alternatif lain dalam pengoprasian.
PEDOMAN-PEDOMAN DALAM MEMBUAT FLOWMAP
Bila seorang analis dan programmer akan membuat flowmap , ada beberapa petunjuk yang harus diperhatikan, sepeti :
1. Flowmap digambarkan dari halaman atas ke bawah dan kiri ke kanan.
2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat di mengerti oleh pembacanya.
3. Kapan aktivitas dimulai dan berakhir harus di tentukan secara jelas.
4. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
5. Lingkup dan range dari aktifitas yang sedang di gambarkan harus di telusuri dengan hati-hati.
6.Gunakan simbol-simbol flowchart yang standar.
![]() |
| Simbol-simbol Flowmap |
Nama Simbol dan keterangannya (keterangan lengkapnya ada pada gambar diatas) :
1.Dokumen : Menunjukan dokume inpt atau output untuk proses manual atau komputer.
2.Proses : Kegiatan proses yang di lakukan dengan komputerisasi.
3.Proses Manual : Kegiatan proses yang di lakukan dengan manual.
4.Garis alir : Menunjukan alir data dari atau ke proses.
5.Data store : Menunjukan penyimpanan arsip atau dokumen non komputer.
6.Database : Tempat penyimpanan data berbasis database
7.Data elektronik : Menunjukan laporan data elektronik.
Ref: Flowmap-info
Selasa, 10 Juni 2014
Doa khusus untuk Ujian (UAS/UAN)
Asalamualeikum, halo sobat blogger.. aku mau sekedar share tentang doa yang manjur untuk ujian, agar ujiannya di beri kelancaran oleh Allah swt, doa ini adalah pemberian oleh guru agama ku ketika aku masih duduk di sekolah menengah atas (smp) dan akan menghadapi UAS, Tryout dan UAN. Dan alhamdulilah aku mendapatkan hasil yang cukup memuaskan =) Oke, langsung saja... maaf sebelumnya berhubung gak tau cara menulis/ngetik huruf arab di keyboard berbahasa inggris atau sulit. Jadi, aku menuliskannya dalam bentuk huruf indonesia latin.
Bismilahi rahmanirahim...
(1)Arrahmaaanu ngalamal quraana khalaqol insanaa ngal lamahul bayan(na), asyamsu walqamaru bihusbanniw walhojmu watsajaru yasjudan/ni, la tukharriq bihi lisanaka litahzala bihi innaka ngalaina jam ngahu waquraanahu faidda koronahu fat ta'bii quraanahu tsuma inna ngalaina bayanahu balhua quraanahu majidu fii lauwhimahfud/in (dibaca tiap setelah shalat wajib 7x). (2) Ilaahii ingkunta kobilta taubati wagoparta khoubati fa'akrimni bilfahmi walhifbdi khata akhfaddo kullama samii'tu wa kulama maqorotu.. minal ngilmi wal quraaan(dibaca tiap setelah shalat maghrib 11x). (3) Yaa muHhayminu(87x). (4) Yaa Halimu yaa ngalimu yaa ngaliyu yaa ngadim (di baca pada waktu ujian dan ketika soal sedang dibagikan).
Insyallah, Allah akan mempermudah, serta melancarkan kita dalam mengingat dan berfikir apa yang sudah kita pelajari (ketika belajar). Semoga Allah mengabulkan dan mensukseskan kita semua, Amiiin.
Bismilahi rahmanirahim...
(1)Arrahmaaanu ngalamal quraana khalaqol insanaa ngal lamahul bayan(na), asyamsu walqamaru bihusbanniw walhojmu watsajaru yasjudan/ni, la tukharriq bihi lisanaka litahzala bihi innaka ngalaina jam ngahu waquraanahu faidda koronahu fat ta'bii quraanahu tsuma inna ngalaina bayanahu balhua quraanahu majidu fii lauwhimahfud/in (dibaca tiap setelah shalat wajib 7x). (2) Ilaahii ingkunta kobilta taubati wagoparta khoubati fa'akrimni bilfahmi walhifbdi khata akhfaddo kullama samii'tu wa kulama maqorotu.. minal ngilmi wal quraaan(dibaca tiap setelah shalat maghrib 11x). (3) Yaa muHhayminu(87x). (4) Yaa Halimu yaa ngalimu yaa ngaliyu yaa ngadim (di baca pada waktu ujian dan ketika soal sedang dibagikan).
Insyallah, Allah akan mempermudah, serta melancarkan kita dalam mengingat dan berfikir apa yang sudah kita pelajari (ketika belajar). Semoga Allah mengabulkan dan mensukseskan kita semua, Amiiin.
Rabu, 28 Mei 2014
Efek Mono di Campus yang Bisa Menggangu Aktifitas?
Hari demi hari.. tak terasa waktu begitu cepat berlalu, masih selalu bermimpi tentang apa yang di inginkan agar dapat diwujudkan, namun ketika sementara waktu hal itu tidak dapat di buktikan, berjuta alasan pun muncul, yang tidak dapat diterima oleh akal ini, ketika itu pula emosi bergejolak dalam diri, amat sedih dan kecewa. Terkadang hati ini seraya berkata "Ya Tuhan, berilah waktu lebih lama untuk dapat membuktikan dan membahagiakan orang-orang yang kucintai". Percepat lah.. dan mudahkan lah diri ini dalam menuntut ilmu untuk menjadi orang yang sukses di hadapan engkau dan kedua orang tua.
Doa yang dipanjatkan pada Tuhan selalu menyertaimu wahai yang tercinta (Orang tua dan calon pendamping hidup). Selagi aku sehat, maka aku akan terus berusaha, walau terkadang kegagalan selalu menghampiri dari luar perkiraan nalar ini, tapi terus bertekad untuk bangkit kembali secepatnya, dan ketika ingin bangkit itu sulit sekali, karena banyak sekali cobaan serta rintangan dari mulai kemalasan, aktifitas, serta khayalan yang tak bermanfaat, semua hal yang membuang waktu..
Sejenak meratapi, kegagalan itu, ternyata penyebabnya adalah sama, dari situ dapat disimpulkan, suatu niat tanpa manajemen waktu (disiplin waktu) yang baik, maka akan percuma. Dan juga sebaliknya, semua butuh proses dan kesabaran.. Jadi yang di butuhkan itu adalah pikirkanlah lagi tujuan itu lalu bergerak.. bangun.. kerjakan/jalankan sampai berhasil ke tujuan tersebut dan kembali berusaha untuk selalu bersyukur kepada-Nya.
Mungkin hal ini tidak akan pernah di ketahui, sampai berhasil melakukannya?
Coba..ayo coba terus.. ini merupakan upaya selangkah lebih maju dari pada yang lain, jangan ada kata tapi dan tapi lagi... ketika sudah bosan, tak masalah, jika sekali-kali pergi untuk penyegaran.. lakukan hal positif apa yang ingin dilakukan atau pergi menikmati indahnya alam dan renungkan juga betapa besar ciptaan-Nya.
Ayo.. kamu bisa!! Kurangi atau hindari bermain facebook, path, twitteran dll..
Ingatlah sudah berapa banyak uang yang di keluarkan oleh orang tua?!
Harus sampai kapan orang tua berkorban di usia yang sudah mulai dewasa ini?
Betapa sakitnya jika orang tua tahu apabila mereka telah di khianati, di beri omong kosong dan dipermainkan oleh kata-kata (janji kosong) yang manis, tapi balasan atas tindakan itu kenapa bisa demikian?
Sudah lah... jangan galau lagi.. pergilah solat memohon ampun, petunjuk dan kelancaran kepada-Nya. Lalu bertekad dalam hati, aku akan menyelesaikannya... lalu lakukan aksi pertama yaitu dengan buka file kuliah dan topik skripsi di Laptop. Baca baik-baik lagi dan kerjakan dengan konsisten #Fokus, #Future in your hands .
Doa yang dipanjatkan pada Tuhan selalu menyertaimu wahai yang tercinta (Orang tua dan calon pendamping hidup). Selagi aku sehat, maka aku akan terus berusaha, walau terkadang kegagalan selalu menghampiri dari luar perkiraan nalar ini, tapi terus bertekad untuk bangkit kembali secepatnya, dan ketika ingin bangkit itu sulit sekali, karena banyak sekali cobaan serta rintangan dari mulai kemalasan, aktifitas, serta khayalan yang tak bermanfaat, semua hal yang membuang waktu..
Sejenak meratapi, kegagalan itu, ternyata penyebabnya adalah sama, dari situ dapat disimpulkan, suatu niat tanpa manajemen waktu (disiplin waktu) yang baik, maka akan percuma. Dan juga sebaliknya, semua butuh proses dan kesabaran.. Jadi yang di butuhkan itu adalah pikirkanlah lagi tujuan itu lalu bergerak.. bangun.. kerjakan/jalankan sampai berhasil ke tujuan tersebut dan kembali berusaha untuk selalu bersyukur kepada-Nya.
Mungkin hal ini tidak akan pernah di ketahui, sampai berhasil melakukannya?
Coba..ayo coba terus.. ini merupakan upaya selangkah lebih maju dari pada yang lain, jangan ada kata tapi dan tapi lagi... ketika sudah bosan, tak masalah, jika sekali-kali pergi untuk penyegaran.. lakukan hal positif apa yang ingin dilakukan atau pergi menikmati indahnya alam dan renungkan juga betapa besar ciptaan-Nya.
Kemalasan hanya bisa dibunuh dengan bangun, lalu pergi mandi setelah itu lakukan apa yang ingin dikerjakan. Pusing karena sesuatu hanya bisa di atasi dengan cara belajar dengan orang yang paham terkait masalah itu! atau browsing dan pelajari hal-hal terkait hingga paham dan mengerti. Tumbuhkan, kumpulkan dan pupuk motivasi sebanyak mungkin agar tidak jadi korban kemalasan akibat bisikan setan.
Ayo.. kamu bisa!! Kurangi atau hindari bermain facebook, path, twitteran dll..
Ingatlah sudah berapa banyak uang yang di keluarkan oleh orang tua?!
Harus sampai kapan orang tua berkorban di usia yang sudah mulai dewasa ini?
Betapa sakitnya jika orang tua tahu apabila mereka telah di khianati, di beri omong kosong dan dipermainkan oleh kata-kata (janji kosong) yang manis, tapi balasan atas tindakan itu kenapa bisa demikian?
Sudah lah... jangan galau lagi.. pergilah solat memohon ampun, petunjuk dan kelancaran kepada-Nya. Lalu bertekad dalam hati, aku akan menyelesaikannya... lalu lakukan aksi pertama yaitu dengan buka file kuliah dan topik skripsi di Laptop. Baca baik-baik lagi dan kerjakan dengan konsisten #Fokus, #Future in your hands .
Selasa, 20 Mei 2014
UAS Pemrogramman Java-Penuh Tantangan dan Cobaan
Suatu hari di hari tenang sebelum pelaksanaan UAS, dan UAS pemrogramman di percepat jadwalnya, waktu tak terasa sudah dekat dengan ujian pemrogramman vi (java). Tapi, aku belum mampu menguasai sepenuhnya konsep,metode dan implementasi logika, serta syntak program tersebut, apa daya? mau tidak mau, aku harus belajar dan terus belajar dan berusaha agar bisa lulus ujian matakuliah ini. Hmm... tapi semua terlambat, ujian sudah terlalu dekat dan aku pun hanya mencoba berlatih sebentar dari contoh soal dan contoh kasus yang ada di internet. Tapi, sayangnya informasi contoh di internet masih banyak yang kurang jelas dan contohnya terlalu ribet untuk yang newbe , sehingga aku pun masih mengalami kebingungan dalam memahami logika programnya. Aku hanya mempelajari beberapa program saja, seperti proses penjumlahan, pengurangan, perkalian matrik dan pencarian matrik. Tapi, sungguh terlalu... prediksi ku 85% -__-' meleset, ternyata soal yang keluar adalah berbeda dengan yang sudah di pelajari di kelas, aku hanya menduga bahwa yang keluar adalah soal seperti di atas tapi ternyata bukan seperti itu, soal yang keluar adalah adopsi operasi array/matrik saja yang di modifikasi menjadi matrik multidimensi 7*7 dengan di inisialisasi terlebih dahulu dan proses program pencarian bubblesort dan juga sorting.
Huh jd curhat!
Baiklah, maksud ku gini, karena mata kuliah ini penuh tantangan dan cobaan ketika UAS nya ketat (anti contekan internet/note), oleh karena itu aku ingin mencoba membahas dan berbagi cara menyelesaikan soal tersebut, dengan cara yang mudah di mengerti oleh newbe programmer, semoga info ini juga bermanfaat buat temen-temen informatika yang sedang belajar java atau mengalami kendala yang sama dengan saya :
Contoh soal:
User Interface (UI )Program
1.Program Sorting Matrik 1Dimensi
2.Program Pindah String ke Array 1Dimensi
3.Pencarian Matrik Multidimensi 7*7 inisialisasi di awal, tampilkan matrik dan posisi yang dicari
Berikut adalah kode-kode programnya
Program1: Sorting Matrik 1D (operasi di constructor dlm 1 kls)
Kode akan di posting nanti!
Program2: Pindah string ke Array 1D (operasi di object)
Kode akan di posting nanti!
Program3: Pencarian Matrik Multidimensional (operasi di object)
Kode akan di posting nanti!
Minggu, 04 Mei 2014
Cara Menggunakan Percabangan IF/SWITCH di Pemrograman C
Pada artikel Belajar Bahasa Pemrograman C kali ini kita akan membahas tentang. Cara menggunakan perintah percabangan if dan switch pada bahasa pemrograman C. Apa saja perintah untuk percabangan dalam bahasa pemrograman C, terdapat 2 perintah yaitu if dan switch.
Sourcecode tersebut akan menghasilkan :
Nilai kurang dari atau sama dengan 5
Perintah diatas akan menghasilkan hasil yang sama dengan perintah yang
menggunakan if. parameter untuk switch dapat diisi dengan int atau char
(1 karakter), begitu pula dengan nilai untuk case dapat berupa angka
atau karakter,
Oke saya rasa cukup untuk percabangan, berikutnya akan membahas mengenai pemangkatan dan bilangan faktorial dengan menggunakan perulangan.
contoh kasus :
2 pangkat 3 = 2 * 2 * 2 = 8
3 faktorial = 1 * 2 * 3 = 6
bagaimana cara menulisnya dengan menggunakan perulangan, nanti dibahas pada artikel berikut.
Referensi: Pintar Coding
Perintah if, else:
Pada perintah if biasanya diikutkan dengan else, else disini bersifat
opsional ditulis jika dibutuhkan. berikut contoh sourcodenya untuk
menentukan nilai lebih besar dari 5 atau tidak :
Sourcecode tersebut akan menghasilkan :
Nilai kurang dari atau sama dengan 5
Sourcecode diatas dapat dibaca jika variable nilai lebih besar dari 5 maka dijalankan perintah didalam blok if, sedangkan jika nilai kurang dari atau sama dengan 5 maka dijalankan blok perintah didalam else, tanda lebih besar (">") dapat digantikan dengan operator-operator persamaan (<, >, <=, =>, ==, !=) yang sempat disinggung sebelumnya. penulisannya dan artinya pun hampir sama dengan cara penulisan matekmatika, yang sedikit berbeda mungkin adalah tidak sama dengan yaitu "!=" dan sama dengan ditulis dengan double tanda sama dengan "==".
Bagaimana mudahkan menggunakan perintah if, Mari kita praktekan dengan menyelesaikan permasalahan dari pak petani pada artikel sebelumnya, dimana pak petani ingin menentukan tanaman yang cocok untuk ditanam pada bulan tertentu. berikut hasil riset untuk periode-periode tanam :
bulan januari - bulan maret = tomat/cabai
bulan april - bulan juni = jagung
bulan juli - bulan september = wortel/kacang
bulan oktober - bulan desember = kubis
berikut contoh sourcecodenya :
Bagaimana mudahkan menggunakan perintah if, Mari kita praktekan dengan menyelesaikan permasalahan dari pak petani pada artikel sebelumnya, dimana pak petani ingin menentukan tanaman yang cocok untuk ditanam pada bulan tertentu. berikut hasil riset untuk periode-periode tanam :
bulan januari - bulan maret = tomat/cabai
bulan april - bulan juni = jagung
bulan juli - bulan september = wortel/kacang
bulan oktober - bulan desember = kubis
berikut contoh sourcecodenya :
berikut hasil dari sourcecode tersebut dari bulan 0 sampai 13 secara berturut-turut:
mungkin hari sudah malam pak petani perlu istirahat
tanaman yang cocok adalah tomat/cabai
tanaman yang cocok adalah tomat/cabai
tanaman yang cocok adalah tomat/cabai
tanaman yang cocok adalah jagung
tanaman yang cocok adalah jagung
tanaman yang cocok adalah jagung
tanaman yang cocok adalah wortel/kacang
tanaman yang cocok adalah wortel/kacang
tanaman yang cocok adalah wortel/kacang
tanaman yang cocok adalah kubis
tanaman yang cocok adalah kubis
tanaman yang cocok adalah kubis
mungkin hari sudah malam pak petani perlu istirahat
Perhatikan perintah diatas terdapat if didalam if, biasanya itu disebut dengan perintah if bersarang, terdapat operator baru lagi yaitu "&&", yang berperan sebagai "dan" yang mana kedua kondisi harus benar, jika tidak akan dianggap salah, operator ini dapat diganti dengan operator logika lain yaitu "or" ("||") yang berperan sebagai "atau" yang mana salah satu kondisi benar maka dianggap benar.
Perintah switch, case:
Selain perintah if dan else terdapat perintah switch, diperuntukan untuk kasus yang membutuhkan lebih dari satu kondisi, bagaimana cara menerapkan penggunaan perintah switch case pada kasus pak petani diatas, berikut cara penulisan sourcecodenya:
mungkin hari sudah malam pak petani perlu istirahat
tanaman yang cocok adalah tomat/cabai
tanaman yang cocok adalah tomat/cabai
tanaman yang cocok adalah tomat/cabai
tanaman yang cocok adalah jagung
tanaman yang cocok adalah jagung
tanaman yang cocok adalah jagung
tanaman yang cocok adalah wortel/kacang
tanaman yang cocok adalah wortel/kacang
tanaman yang cocok adalah wortel/kacang
tanaman yang cocok adalah kubis
tanaman yang cocok adalah kubis
tanaman yang cocok adalah kubis
mungkin hari sudah malam pak petani perlu istirahat
Perhatikan perintah diatas terdapat if didalam if, biasanya itu disebut dengan perintah if bersarang, terdapat operator baru lagi yaitu "&&", yang berperan sebagai "dan" yang mana kedua kondisi harus benar, jika tidak akan dianggap salah, operator ini dapat diganti dengan operator logika lain yaitu "or" ("||") yang berperan sebagai "atau" yang mana salah satu kondisi benar maka dianggap benar.
Perintah switch, case:
Selain perintah if dan else terdapat perintah switch, diperuntukan untuk kasus yang membutuhkan lebih dari satu kondisi, bagaimana cara menerapkan penggunaan perintah switch case pada kasus pak petani diatas, berikut cara penulisan sourcecodenya:
Oke saya rasa cukup untuk percabangan, berikutnya akan membahas mengenai pemangkatan dan bilangan faktorial dengan menggunakan perulangan.
contoh kasus :
2 pangkat 3 = 2 * 2 * 2 = 8
3 faktorial = 1 * 2 * 3 = 6
bagaimana cara menulisnya dengan menggunakan perulangan, nanti dibahas pada artikel berikut.
Referensi: Pintar Coding
Minggu, 13 April 2014
Strategi Algoritma : Divide and Conquare (Kasus Min Max, Merge Sort, Mencari Koin palsu, Knapsack I/O
Apa kabar sobat informatika, sudah lama rasanya aku jarang aktif untuk memposting artikel maupun tutorial, karena akhir-akhir ini aku sedang "ripuh" mengurus laporan kerja praktik dan mempersiapkan untuk skripsi >.<. Tapi, tetap bersukur masih bisa sempet membuka blogku ini yang udah lama kurang ke urus, seperti rumah berisikan barang usang yang dipenuhi sarang spiderman dan di huni oleh cucu-cucunya? a.k.a (artikel tdk update) hehe, Kok curhat? haduh!
okay, langsung aja deh ke pokok hal yang ingin dibahas,pada hari selasa lalu waktu bandung timur(WBT) ^^, aku di kasih tugas oleh dosen, yaitu disuruh buat algoritma dan program yang menggunakan strategi algoritma divide and conquare.
Baiklah apa itu Strategi algoritma?
Strategi algoritma merupakan kumpulan algoritma yang disusun dari berbagai macam metode (cara) untuk menyelesaikan masalah dan sudah di definisikan, di gagas, di bukukan oleh si pembuat algoritma menjadi ke banyak metode penyelesaian.
Nah disini aku ingin membahas salah satu metode yang cukup populer dan terkenal di kalangan mahasiswa informatika atau mungkin mahasiswa matematika. Yaitu, Metode Divide and Conquer dimana dulunya adalah strategi militer yang dikenal dengan nama divide ut imperes.Sekarang strategi tersebut menjadi strategi fundamental di dalam ilmu komputer.
Definisi
Divide: membagi masalah menjadi beberapa sub-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama),
Conquer: memecahkan (menyelesaikan) masing-masing sub-masalah (secara rekursif), dan
Combine: mengabungkan solusi masing-masing sub-masalah sehingga membentuk solusi masalah semula.
Obyek permasalahan yang dibagi :
masukan (input) atau instances yang berukuran n seperti:
- tabel (larik),
- matriks,
- eksponen,
- dll, bergantung pada masalahnya.
Tiap-tiap sub-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif.
Skema umum algoritma divide and conquare
Berikut adalah skema umum jika pembagian selalu menghasilkan dua sub masalah yang berukuran sama.
Gunakan T(n) = g(n), jika n <= n0 ; atau
2T(n/2) + f(n), n >n0
penyelesaian dengan metode divide & conquare:
Illustrasi Gambar 4.1
Gambar 4.2
Untuk lebih detail silakan download file dibawah ini, apabila ada kekeliruan di algoritmanya silahkan berikan kritik dan sarannya yang bersifat membangun pada kotak komentar, Trims.
Download Materi Diktat Strategi Algoritma
Download Contoh Kasus Lengkap Algoritma Min Max - Knapsack I/O
masukan (input) atau instances yang berukuran n seperti:
- tabel (larik),
- matriks,
- eksponen,
- dll, bergantung pada masalahnya.
Tiap-tiap sub-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif.
Skema umum algoritma divide and conquare
Berikut adalah skema umum jika pembagian selalu menghasilkan dua sub masalah yang berukuran sama.
Gunakan T(n) = g(n), jika n <= n0 ; atau
2T(n/2) + f(n), n >n0
penyelesaian dengan metode divide & conquare:
Illustrasi Gambar 4.1
- Ukuran tabel hasil pembagian dapat dibuat cukup kecil sehingga mencari minimum dan maksimum dapat diselesaikan (SOLVE) secara lebih mudah.
- Dalam hal ini, ukuran kecil yang dipilih adalah 1 elemen atau 2 elemen.
Gambar 4.2
Algoritma cara penyelesaian kasus Min Max dengan Divide & Conquare:
Untuk lebih detail silakan download file dibawah ini, apabila ada kekeliruan di algoritmanya silahkan berikan kritik dan sarannya yang bersifat membangun pada kotak komentar, Trims.
Download Contoh Kasus Lengkap Algoritma Min Max - Knapsack I/O
Rabu, 29 Januari 2014
Minggu, 29 Desember 2013
Algoritma dan Pemrogramman I : Definsi dan alasan mengapa membuat algoritma
Hi sobat, sekarang aku ingin sharing pembahasan mengenai algortima. Mungkin bagi orang yang masih awam menganggapnya bahwa algortima itu adalah sama dengan logaritma dan sejenisnya. Sebenarnya algoritma itu tidak sama dengan logaritma seperti yang di pikirkan kebanyakan orang awam. Disini akan aku jelaskan, apa itu algoritma menurut pengertian/definisi ku sendiri, karena di bangku kuliah dosen ku yang ngajar kuliah algoritma menyarankan, agar kita sebagai mahasiswa mampu untuk menciptakan ,mengembangkan dan mengadopsi definisi-definisi yang sudah ada menjadi sebuah pengertian/definisi baru, menjadikan definisi yang lebih baik dan mudah di pahami orang lain.
Berikut ini definisi algoritma versi saya. Mungkin, bila ada kesalahan dan kekurangan, mohon di koreksi!
Baiklah, Apa itu Algortima?
Algoritma adalah cara/metode yang dibuat untuk menyelesaikan suatu masalah secara terstruktur (ter-urut) dan sistematis.
Catatan:
Algoritma sangat erat kaitannya dengan logika matematika, urutan, tata cara penulisan (syntax) dan analisis masalah untuk problem solving.
Ruang lingkup dan syarat algoritma harus ada :
Masukan (input) --> Proses (proccess) --> keluaran (output).
Perbedaan Algoritma dan Logaritma?
Algortima metode yang dibuat untuk menyelesaikan masalah secara terurut dan sistematis. Sedangkan Logaritma adalah sebuah operasi matematika yang sifatnya merupakan kebalikan dari eksponen atau perpangkatan, dasar logaritma adalah operasi perpangkatan yang memiliki sifat-sifat/bentuk lain.
Catatan :
Dalam sebuah Algortima garis miring ("//") atau ("/*blablabla*/") berfungsi sbg komentar/penjelasan, tidak akan berpengaruh terhadap jalannya suatu algoritma maupun program. ("//") untuk single line dan ("/*blablabla*/") untuk multiple line.
Contoh Algortima:
Case1
//Title: Algoritma Taxi (algo sederhana)
1. Pergi ke tempat dimana taxi berada
2. Masuk ke dalam taxi
3. Beri supir taxi alamat tujuan anda
kasus lain, dituliskan sesuai dengan aturan/kaidah dan syntax penulisan algoritma.
Case2
Case1
//Title: Algoritma Taxi (algo sederhana)
1. Pergi ke tempat dimana taxi berada
2. Masuk ke dalam taxi
3. Beri supir taxi alamat tujuan anda
kasus lain, dituliskan sesuai dengan aturan/kaidah dan syntax penulisan algoritma.
Case2
//Title: Algoritma untuk menghitung Luas Persegi Panjang
//kamus = (Deklarasi/keterangan tipe data untuk tiap variabel)
panjang : real; //panjang diberi nilai dgn tipe data bilangan riil
lebar : real; //lebar diberi nilai dgn tipe data bilangan riil
luas : real; //luas diberi nilai dgn tipe data bilangan riil
//Algoritma
output("Menghitung Luas Persegi Panjang");
output("Masukan Panjang Persegi :");
input(panjang);
output("Masukan Lebar Persegi :");
input(lebar);
output("Masukan Panjang Persegi :");
luas = panjang*tinggi;
output("Luas Persegi Panjang Adalah :",luas);
Berikut ini, contoh algoritma untuk program konversi dari nilai biner ke logika bolean (Benar/Salah).
Case3
//Title : program_konversi_biner_boolean
//kamus (Deklarasi)
biner : bolean{benar,salah};
//Algoritma
output("Konversi Biner ke Boolean");
output("Masukan Bilangan Biner(0/1)");
input(biner);
if(biner=0) then output("salah");
else
output("salah");
endif
//kamus = (Deklarasi/keterangan tipe data untuk tiap variabel)
panjang : real; //panjang diberi nilai dgn tipe data bilangan riil
lebar : real; //lebar diberi nilai dgn tipe data bilangan riil
luas : real; //luas diberi nilai dgn tipe data bilangan riil
//Algoritma
output("Menghitung Luas Persegi Panjang");
output("Masukan Panjang Persegi :");
input(panjang);
output("Masukan Lebar Persegi :");
input(lebar);
output("Masukan Panjang Persegi :");
luas = panjang*tinggi;
output("Luas Persegi Panjang Adalah :",luas);
Berikut ini, contoh algoritma untuk program konversi dari nilai biner ke logika bolean (Benar/Salah).
Case3
//Title : program_konversi_biner_boolean
//kamus (Deklarasi)
biner : bolean{benar,salah};
//Algoritma
output("Konversi Biner ke Boolean");
output("Masukan Bilangan Biner(0/1)");
input(biner);
if(biner=0) then output("salah");
else
output("salah");
endif
Contoh Logaritma:
Exponensial --> a^b = c , jika dimasukan nilai maka 2^3 = 8
Logaritma (kebalikan perpangkatan) --> a log c = b atau 2 log 8 = ? ; maka, jawabannya adalah 3
Logaritma (kebalikan perpangkatan) --> a log c = b atau 2 log 8 = ? ; maka, jawabannya adalah 3
Mungkin singkatnya logaritma seperti itu, jika sobat lupa atau ingin tau lebih detail bisa pelajari lagi materinya, tinggal googling. Disini aku ingin lebih memfokuskan kepada penjelasan mengapa seorang calon mahasiswa ilmu komputer (programmer) harus bisa memahami dan menulis algoritma.
Alasan mengapa perlu belajar algoritma, yaitu agar dapat terbantu dalam proses pembuatan alur program menjadi lebih mudah, cepat dan terstruktur. Algoritma merupakan dasar untuk memperkuat pondasi logika seorang programmer dalam menguasai berbagai bahasa pemrogramman yang semakin update dan banyak muncul dewasa ini. Terlebih bukan bahasa pemrogramman yang bersifat terstruktur, akan tetapi sudah berorientasi objek, umumnya cukup rumit dan disegani oleh sebagian kalangan mahasiswa ilmu komputer (calon programmer).
Tips-tips belajar algoritma :
1. Pelajari aturan penulisan (syntax) sesuai kaidah algortima dan yang bisa dimengerti orang lain.
2. Analisis masalah, tipe data apa saja yang dibutuhkan dari masalah tersebut?
3. Baca sampai paham dan berlatih secara kontinyu
4. Ngulik contoh yg ada/nyoba-nyoba algoritma orang dengan sedikit modifikasi
5. Implementasi algoritma ke bahasa pemrogramman yang dikehendaki
6. Jika gagal atau error, coba terus perbaiki secara kontinyu sampai berhasil
7. Pantang menyerah!
Mumpung lagi liburan dan banyak waktu luang jadi dari pada bengong nge betein, gak tau kenapa aku ada hasrat buat nulis ini. Hmmm, Sepertinya segitu dulu, semoga bisa di buat lanjutannya! =)
Tips-tips belajar algoritma :
1. Pelajari aturan penulisan (syntax) sesuai kaidah algortima dan yang bisa dimengerti orang lain.
2. Analisis masalah, tipe data apa saja yang dibutuhkan dari masalah tersebut?
3. Baca sampai paham dan berlatih secara kontinyu
4. Ngulik contoh yg ada/nyoba-nyoba algoritma orang dengan sedikit modifikasi
5. Implementasi algoritma ke bahasa pemrogramman yang dikehendaki
6. Jika gagal atau error, coba terus perbaiki secara kontinyu sampai berhasil
7. Pantang menyerah!
Mumpung lagi liburan dan banyak waktu luang jadi dari pada bengong nge betein, gak tau kenapa aku ada hasrat buat nulis ini. Hmmm, Sepertinya segitu dulu, semoga bisa di buat lanjutannya! =)
Kamis, 24 Oktober 2013
Grafika Komputer Output Primitive : Ellips Midpoint Circle
ELLIPS
• Region 1 dan 2 dapat digunakan dengan berbagai macam cara. Pertama dimulai dari posisi (0,r) dan melangkah searah jarum jam sepanjang jalur ellips pada kuadran pertama. Pergeseran dengan unit step dalam x pada saatslope lebih besar dari 1.
- Ellips didefinisikan sebagai himpunan titik yangjumlah jarak dari 2 posisi yang tetap adalah sama untuk setiap titik.
- Persamaan Ellips dengan pusat 0,0 dan jari-jari Rx dan Ry adalah:
Algoritma Pembentukan elips
• Kuadran pertama dibagi menjadi 2 (dua) region danndengan menggunakan algoritma midpoint ellipse, plot titik untuk region pertama, kemudian koordinat akhir pada region I menjadi koordinat awal untuk region II.
• Kuadran pertama dibagi menjadi 2 (dua) region danndengan menggunakan algoritma midpoint ellipse, plot titik untuk region pertama, kemudian koordinat akhir pada region I menjadi koordinat awal untuk region II.
• Region 1 dan 2 dapat digunakan dengan berbagai macam cara. Pertama dimulai dari posisi (0,r) dan melangkah searah jarum jam sepanjang jalur ellips pada kuadran pertama. Pergeseran dengan unit step dalam x pada saatslope lebih besar dari 1.
Cara mengerjakan algoritma ellipse hampir sama langkahnya dengan lingkaran, bedannya ellipse memiliki dua jari-jari dan memiliki dua daerah, yaitu region I & II, region I harus diselesaikan terlebih dahulu sebelum lanjut mengerjakan ke region II.
Contoh soal ellips:
Studi Kasus!
Selasa, 22 Oktober 2013
Grafika Komputer Output Primitive : Lingkaran Midpoint Circle

Setelah sebelumnya membahasa algoritma DDA dan Bresenham, sekarang aku mau share tentang algoritma midpoint circle untuk lingkaran dan ellips.
Persamaan Lingkaran
• Lingkaran dapat digambarkan dengan menggunakan
persamaan koordinat rectangular tsb akan tetapi
pendekatan ini menimbulkan dua masalah yaitu :
– Persamaan tersebut mengandung perhitungan akar yang
operasinya memakan waktu.
– Timbul gap yang cukup signifikan pada lingkaran ketika
digambarkan.
Midpoint Circle Algorithm
• Untuk mengatasi masalah yang timbul dari penerapan koordinat polar maupun rectangular, Bresenham menyusun suatu algoritma pembentukan lingkaran yang hanya menggunakan aritmetika integer. Secara prinsip algoritma ini sejenis dengan algoritma penggambaran garis yang disusun oleh orang yang sama.
• Lingkaran merupakan objek yang simetris sehingga karakteristik ini dapat dimanfaatkan untuk mengurangi pekerjaan pada saat menggambar lingkaran. Lingkaran dibagi menjadi 8 oktan (lihat
gambar 3.x), misalkan kita menyusun algoritma untuk menggambarkan lingkaran di oktan pertama, maka koordinat untuk 7 oktan selanjutnya dapat ditentukan.
Midpoint Circle Algorithm
Langkah-langkah mengerjakan algortima midpoint circle
1. Input jari-jari (r) dan koordinar pusat lingkaran (xc,yc), kemudian tentukan koordinat untuk titik awal (xo,yo) = (x, r)
2. Hitung nilai awal untuk parameter keputusan Po = 1 - r
3. Untuk setiap xk, mulai dari k = 0, periksa/cek kondisi berikut :
- Jika nilai pk < 0 maka, titik selanjutnya pada lingkaran dgn pusat (0,0) adalah xk+1=x +1, nilai y tetap; dan pk+1 = pk + 2.x + 1
- pk > 0 maka, titik selanjutnya adalah xk+1 = x + 1, yk+1 = y - 1; dan pk+1 = pk + 2x - 2y + 1
Contoh 1 :
x^2 + y^2 = 100
Dari mana y = 10 ? liat tabel pada plot awal (x,y)=(x,r) = (0,10)
ternyata 100 apabila di akar kan, maka hasilnya sama dengan 10
Po = 1 - r = 1 - 10 = -9
jadi, skrng jari-jarinya sudah diketahui = 10 dan 2x = 0, 2y = 20 , pk = -9
Nah.. tinggal menghitung k, dimulai dari k=0, sampai batas yang di tentukan (x > atau = y).
Liat Algoritma midpoint circle dan Perhatikan Langkah-langkah mengerjakan algortima midpoint circle!
k=0pk = 1 - r = 1 - 10 = -9
periksa pk, pk < 0 maka,
xk+1 = 0 + 1 = 1 , nilai 10 tetap;
pk+1 = pk + 2.x + 1
= -9 + 2 .1 + 1 = -6
2x = 2
2y = 20
k=1
periksa pk, pk < 0 maka,
xk+1 = 1 + 1 = 2 , nilai 10 tetap;
pk+1 = pk + 2.x + 1
= -6 + 2 . 2 + 1 = -1
2x = 4
2y = 20
k=2
periksa pk, pk < 0 maka,
xk+1 = 2 + 1 = 3 , nilai 10 tetap;
pk+1 = pk + 2.x + 1
= -1 + 2 . 3 + 1 = 6
2x = 6
2y = 20
k=3
periksa pk, pk > 0 maka,
xk+1 = 3 + 1 = 4, yk+1 = 10 - 1 = 9
pk+1 = pk + 2x - 2y + 1
= 6 + 2 . 4 - 2 . 9 + 1 = 6 + 8 - 18 + 1 = -3
2x = 8
2y = 18
Lanjutkan sampai (x > atau = y), selesai.
Contoh 2 :
1.Diketahui titik pusat lingkaran (0,0) dan radius 8, perhitungan berdasarkan otktan dari kuadran
pertama dimana x = 0 hingga y = 0. Nilai parameter dapat ditentukan dengan Po = 1 - r (jari-jari).
Buatlah garis lingkaran dengan algoritma midpoint circle?
Penyelesaian :
koordinat titik pusat sama dengan kuadran pertama (x,y) = (x, r) = (0,8)
Po = 1 - r
= 1 - 8 = -7
k=0
pk= 1 - r = 1 - 8 = -7
periksa pk, pk < 0 maka,
xk = x + 1 = 0 + 1 = 1 , nilai y tetap 8 ;
k=1
periksa pk, pk < 0 maka,
xk = x + 1 = 1 + 1 = 2 , nilai y tetap 8 ;
pk+1 = pk + 2.x + 1
= -7 + 2 . 1 + 1 = -4
k=2
periksa pk, pk < 0 maka,
xk = x + 1 = 2 + 1 = 3 , nilai y tetap 8;
pk+1 = pk + 2.x + 1
= - 4 + 2 . 2 + 1 = 1
k=3
periksa pk, pk > 0 maka,
xk = x + 1 = 3 + 1 = 4 ; yk = y - 1 = 8 - 1 = 7
pk+1 = pk + 2x - 2y + 1
= 1 + 2.3 - 2.7 + 1 = 1 + 6 - 14 + 1= -6
k=4
periksa pk, pk < 0 maka,
xk = x + 1 = 4 + 1 = 5 , nilai y tetap 7;
pk+1 = pk + 2.x + 1
= - 6 + 2 . 4 + 1 = 3
k=5
periksa pk, pk > 0 maka,
xk = x + 1 = 5 + 1 = 6 ; yk = y - 1 = 7 - 1 = 6
pk+1 = pk + 2x - 2y + 1
= 1 + 2.5 - 2.6 + 1 = 1 + 10 - 12 + 1= 0
Proses di hentikan karena (x > atau = y).
Kode Program Lingkaran akan di suguhkan nanti.. Stay tuned!!
Latihan
Dengan menggunakan midpoint circle algortihm, buat
lingkaran berdasarkan persamaan berikut ini :
– x 2 + y 2 = 64
– x 2 + y 2 = 49
pertama dimana x = 0 hingga y = 0. Nilai parameter dapat ditentukan dengan Po = 1 - r (jari-jari).
Buatlah garis lingkaran dengan algoritma midpoint circle?
Penyelesaian :
koordinat titik pusat sama dengan kuadran pertama (x,y) = (x, r) = (0,8)
Po = 1 - r
= 1 - 8 = -7
K
|
PK
|
( xk + 1, yk + 1)
|
-
|
-
|
0,8
|
0
|
-7
|
1,8
|
1
|
-4
|
2,8
|
2
|
1
|
3,8
|
3
|
-6
|
4,7
|
4
|
3
|
5,7
|
5
|
0
|
6,6
|
k=0
pk= 1 - r = 1 - 8 = -7
periksa pk, pk < 0 maka,
xk = x + 1 = 0 + 1 = 1 , nilai y tetap 8 ;
k=1
periksa pk, pk < 0 maka,
xk = x + 1 = 1 + 1 = 2 , nilai y tetap 8 ;
pk+1 = pk + 2.x + 1
= -7 + 2 . 1 + 1 = -4
k=2
periksa pk, pk < 0 maka,
xk = x + 1 = 2 + 1 = 3 , nilai y tetap 8;
pk+1 = pk + 2.x + 1
= - 4 + 2 . 2 + 1 = 1
k=3
periksa pk, pk > 0 maka,
xk = x + 1 = 3 + 1 = 4 ; yk = y - 1 = 8 - 1 = 7
pk+1 = pk + 2x - 2y + 1
= 1 + 2.3 - 2.7 + 1 = 1 + 6 - 14 + 1= -6
k=4
periksa pk, pk < 0 maka,
xk = x + 1 = 4 + 1 = 5 , nilai y tetap 7;
pk+1 = pk + 2.x + 1
= - 6 + 2 . 4 + 1 = 3
k=5
periksa pk, pk > 0 maka,
xk = x + 1 = 5 + 1 = 6 ; yk = y - 1 = 7 - 1 = 6
pk+1 = pk + 2x - 2y + 1
= 1 + 2.5 - 2.6 + 1 = 1 + 10 - 12 + 1= 0
Proses di hentikan karena (x > atau = y).
Kode Program Lingkaran akan di suguhkan nanti.. Stay tuned!!
Latihan
Dengan menggunakan midpoint circle algortihm, buat
lingkaran berdasarkan persamaan berikut ini :
– x 2 + y 2 = 64
– x 2 + y 2 = 49
Selasa, 03 September 2013
Grafika Komputer Output Primitive : Titik, Garis DDA dan Bresenham
Grafika komputer merupakan bagian ilmu multimedia yang juga di pelajari di teknik informatika, bidang ini mempelajari bagaimana kita membuat sebuah grafis atau gambar dengan komputer atau program komputer pencipta grafis. Tapi, maksud dari menggambar disini adalah kita bukan mengedit gambar, melainkan sebagai pembuat software/aplikasi pengedit gambarnya. Semisal ada aplikasi Photoshop/Freehand,CorelDraw,AdobePremiere,Ulead,dll. Nah dengan kita belajar grafika komputer ini kita diharapkan bisa membuat sebuah aplikasi sederhana yang semacam itu(editor gambar/grafis).
Gafika komputer ini tidak hanya dipakai dalam editing desain saja, tetapi digunakan juga di bidang medis kedokteran sebagai alat pencipta gambar dari hasil scanner & pengolah foto rontegen. Di bidang militer digunakan untuk pembuatan monitor koordinat pesawat tempur dan masih banyak lagi kegunaan lainnya. Grafika komputer memiliki peran yang penting dan amat dibutuhkan dewasa ini, baru-baru ini penerapan yang sudah real nya adalah di sistem informasi geografis mapping (SIG), contohnya adalah : Google MAP & GPS MAP. Mungkin demikian sekilas pengetahuan aku tentang grafika komputer. Sekarang kita coba masuk ke pelajaran & perhitungannya, bahkan mungkin kalo aku ada waktu akan ku implementasikan dengan buat sebuah program grafis.
Memahami konsep primitif geometri titik dan garis
• memahami dan membedakan algoritma pembuatan garis
• Menganalisis algoritma pembuatan garis baik DDA
maupun bresenham
• Mengimplementasikan algoritma pembuatan garis dalam
program
• memahami dan membedakan algoritma pembuatan garis
• Menganalisis algoritma pembuatan garis baik DDA
maupun bresenham
• Mengimplementasikan algoritma pembuatan garis dalam
program
Grafis Output primitif
- Fungsi digunakan untuk menggambarkan berbagai komponen gambar
- Contoh: mobil, rumah, bunga, ...
Geometris Primitif
- Fungsi digunakan untuk menggambarkan titik, garis, segitiga, lingkaran, prisma ...
- Fungsi digunakan untuk menggambarkan titik, garis, segitiga, lingkaran, prisma ...
Dalam pembuatan titik dan garis, grafika komputer memiliki 3 metode Algoritma :
a.Algoritma Penggambaran Garis
b.Algoritma Digital Diferential Analyzer (DDA)
c.Algoritma Bresenham
A. Algoritma Penggambaran Garis:
Rumus Pers.Garis y = m . x + b
Jika diketahui dua titik (x1,y1) dan (x2,y2) maka pers.garis dapat dihitung :
m = dy/dx atau m = y2 - y1 / x2 - x1
Contoh :
Rumus Pers.Garis y = m . x + b
Jika diketahui dua titik (x1,y1) dan (x2,y2) maka pers.garis dapat dihitung :
m = dy/dx atau m = y2 - y1 / x2 - x1
Contoh :
B. Algoritma Digital Diferential Analyzer (DDA) adalah scan convertion algorithm yang didasari oleh perhitungan berikut :
Scan Convertion
dy = m . dx dan dx = dy/ m
Basic DDA Algorithm
y = m . x + c (konstanta)
m = dy/dx
Syarat:
1. Jika 0<m<1 maka,
yk+1 = yk + m
xk+1 = xk + 1
2. Jika m >1 maka,
xk+1 = xk + 1/m
yk+1 = yk + 1
Algoritma dlm pembuatan garis DDA

Langkah mengerjakan Algoritma DDA :
1.Inputkan titik awal (x1,y1) dan titik akhir (x2,y2)
2.Hitung dx dan dy dimana, dx = x2 - x1 dan dy = y2 - y1
3.Jika absolut/abs |dx| > |dy| maka, |dx| = steps/ S, selain itu S = |dy|
4.Hitung berapa nilai dari abs |dx|= ? dan abs |dy|=? , serta steps
5.Hitung x_Incrementnya = dx/s dan y_Incrementnya = dy/s
6.Hitung x1 = x + x_increment dan y1 = y + y_increment
7.Ulang langkah 5 dan 6, sampai x > y
Contoh :
1. Misal buatlah sebuah garis dg titik awal (2,3) dan titik akhirr (12,8)
2. Berapa nilai dari tiap variabel-variabel x dan y pada setiap kali langkah, hingga mencapai batas yang ditentukan?
y = m . x + c (konstanta)
m = dy/dx
Syarat:
1. Jika 0<m<1 maka,
yk+1 = yk + m
xk+1 = xk + 1
2. Jika m >1 maka,
xk+1 = xk + 1/m
yk+1 = yk + 1
Algoritma dlm pembuatan garis DDA

Langkah mengerjakan Algoritma DDA :
1.Inputkan titik awal (x1,y1) dan titik akhir (x2,y2)
2.Hitung dx dan dy dimana, dx = x2 - x1 dan dy = y2 - y1
3.Jika absolut/abs |dx| > |dy| maka, |dx| = steps/ S, selain itu S = |dy|
4.Hitung berapa nilai dari abs |dx|= ? dan abs |dy|=? , serta steps
5.Hitung x_Incrementnya = dx/s dan y_Incrementnya = dy/s
6.Hitung x1 = x + x_increment dan y1 = y + y_increment
7.Ulang langkah 5 dan 6, sampai x > y
Contoh :
1. Misal buatlah sebuah garis dg titik awal (2,3) dan titik akhirr (12,8)
2. Berapa nilai dari tiap variabel-variabel x dan y pada setiap kali langkah, hingga mencapai batas yang ditentukan?
Penyelesaian:
Diket :
Ttitik awal (2,3) dan titik akhir (12,8)
dx = x2 - x1 = 12 - 2 = 10
dy = y2 - y1 = 8 - 3 = 5
jika |dx| > |dy| maka, S = |dx| = 10 dan
|dy| = 5
X_inc = dx/s
= 10/10 = 1 (kenaikan nilai X sebelumnya)
Y_inc = dy/s
= 5/10 = 1/2 atau 0.5 (kenaikan nilai Y sebelumnya)
Untuk lebih mudahnya kita buat tabel dari variabel titik diatas!
K
|
X
|
Y
|
X_Inc
|
Y_Inc (pembulatan bil riil)
|
0
|
2
|
3
|
2
|
3
|
1
|
3
|
3,5
|
3
|
4
|
2
|
4
|
4
|
4
|
4
|
3
|
5
|
4,5
|
5
|
5
|
4
|
6
|
5
|
6
|
5
|
5
|
7
|
5,5
|
7
|
6
|
6
|
8
|
6
|
8
|
6
|
7
|
9
|
6,5
|
9
|
7
|
8
|
10
|
7
|
10
|
7
|
9
|
11
|
7,5
|
11
|
8
|
10
|
12
|
8
|
12
|
8
|
Proses pembacaan dan perhitungannya :
K=0
x = 2 ; y = 3;
K=1
xk+1 = x + x_inc
= 2 + 1 = 3
yk+1 = y + y_inc
= 3 + 0,5 = 3,5
K=2
xk+1 = x + x_inc
= 3 + 1 = 4
yk+1 = y + y_inc
= 3,5 + 0,5 = 4
(dst.. lanjutin ya :p , klo msh bingung koment ja dibawah! ).
Kesimpulan :
Pembuatan garis dengan Algoritma DDA terbilang sangat sederhana dan belum cukup sempurna hasilnya, karena nilai yang dihasilkan dari perhitungan algoritma masih berupa bilangan riil (float), sehingga output gambar garis yang akan dihasilkan oleh program pun kurang jelas jika di zoom. Jika dianalogikan misal: sebuah titik pada grafik/kurva bernilai riil x = 3 dan y = 3,5 maka akan ada plot yg tdk terisi/space sebesar 0,5 : ___ ___ ___ garis setengah sempurna berupa putus-putus/dash.
C. Algoritma Bresenham (Bresenham Algorithm)
a. Sumbu vertikal memperlihatkan posisi scan line.
b. Sumbu horizontal memperlihatkan kolom pixel
c. Pada tiap langkah, penentuan pixel selanjutnya didasari oleh parameter integer yang nilainya proporsional dengan pengurangan antara vertical separations dari dua posisi piksel dari nilai actual.
Langkah-langkah mengerjakan Algoritma Bresenham :
1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis
2. Tentukan salah satu sebagai titik awal (x0,y0) dan titik akhir (x1,y1)
3. Hitung dy = y1 - y0 dan dx = x1 - x0 , 2*dy , 2*dx
4. Hitung Hitung parameter Po = 2dy - dx
5. Untuk setiap xk sepanjang jalur garis, dimulai dengan K = 0
Langkah-langkah mengerjakan Algoritma Bresenham :
1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis
2. Tentukan salah satu sebagai titik awal (x0,y0) dan titik akhir (x1,y1)
3. Hitung dy = y1 - y0 dan dx = x1 - x0 , 2*dy , 2*dx
4. Hitung Hitung parameter Po = 2dy - dx
5. Untuk setiap xk sepanjang jalur garis, dimulai dengan K = 0
- Bila Pk < 0 maka, titik selanjutnya adalah :
- Bila tidak, titik selanjutnya adalah :
6. Ulang langkah nomor 5 untuk menentukan posisi pixel berikutnya,
hinngga x0 = x1 dan/atau y0 = y1 .
Contoh:
Diketahui 2 buah titik A (10,10) dan titik B (17,16), bila titik awal adalah A dan titik akhir adalah B, maka buatlah garis yang menghubungkan titik tersebut dengan menggunakan algoritma bresenham!
Penyelesaian :
titik awal A (10,10)
titik akhir B (17,16)
dx = x1 - x0 = 17 - 10 = 7
dy = y1 - y0 = 16 - 10 = 6
2*dy = 2*6 = 12
2*dx = 2*7 = 14
Po/pk_awal = 2dy - dx
= 12 - 7 = 5 (positive)
Periksa x0 & x1;
jika x0 < x1 ,
input x0 = 10 dan y0 = 10 (sebagai plot awal x,y)
hingga x0 = x1 dan y0 = y1, x_end = x1
Ulangi selama x0 < x_end
K
|
PK
|
( xk + 1, yk + 1)
|
-
|
-
|
10,10
|
0
|
3
|
11,11
|
1
|
1
|
12,12
|
2
|
-1
|
13,13
|
3
|
11
|
14,13
|
4
|
9
|
15,14
|
5
|
7
|
16,15
|
6
|
5
|
17,16
|
Proses pembacaan dan perhitungannya :
Ingat slalu langkah dan aturan mengerjakan bresenham diatas!
diperoleh pk_awal = 5
periksa pk, karena Pk > 0 maka, titik selanjutnya a/ pake rumus berikut :
( xk+1, yk+1 ) dan Pk+1 = Pk + 2dy - 2dx
K=0
xk+1= x + 1 = 10 + 1= 11
yk+1= y + 1 = 10 + 1= 11
pk+1 = pk + 2dy - 2dx
= 5 + 12 - 14 = 3
K=1
periksa nilai pk ato hasil dr pk sebelumnya, dimana pk = 3, Pk > 0
xk+1= x + 1 = 11 + 1= 12
yk+1= y + 1 = 11 + 1= 12
pk+1 = pk + 2dy - 2dx
= 3 + 12 - 14 = 1
K=2
periksa nilai pk ato hasil dr pk sebelumnya, dimana pk = 1, Pk > 0
xk+1= x + 1 = 12 + 1= 13
yk+1= y + 1 = 12 + 1= 13
pk+1 = pk + 2dy - 2dx
= 1 + 12 - 14 = -1 (negative)
K=3
periksa nilai pk ato hasil dr pk sebelumnya, dimana pk = -1,
karena Pk < 0 maka, titik selanjutnya a/ pake rumus berikut :
( xk+1 /nilai x bertambah 1, yk / nilai y tetap ) dan Pk+1 = Pk + 2 . dy
xk+1 = x + 1 = 13 + 1 = 14
yk (nilai y tetap, yaitu y) = 13
pk+1 = pk + 2 . dy
= -1 + 12 = 11
K=4
periksa nilai pk ato hasil dr pk sebelumnya, dimana pk = 11, Pk > 0
xk+1 = x + 1 = 14 + 1 = 15
yk+1 = y + 1 = 13 + 1 = 14
pk+1 = pk + 2dy - 2dx
= 11 + 12 - 14 = 9
periksa nilai pk ato hasil dr pk sebelumnya, dimana pk = 9, Pk > 0
xk+1 = x + 1 = 15 + 1 = 16
yk+1 = y + 1 = 14 + 1 = 15
pk+1 = pk + 2dy - 2dx
= 9 + 12 - 14 = 7
K=6
periksa nilai pk ato hasil dr pk sebelumnya, dimana pk = 7, Pk > 0
xk+1 = x + 1 = 16 + 1 = 17
yk+1 = y + 1 = 15 + 1 = 16
pk+1 = pk + 2dy - 2dx
= 7 + 12 - 14 = 5
Proses Done.. =)
Untuk implementasi, cobalah code program garis DDA berikut :
Output :
Dan sebagai latihan cobalah buat program garis bresenham, cari sumber di internet ("ambalayahh...")!
Contoh Output Bresenham :
Diatas adalah versi yg saya buat dengan Microsoft Visual Studio 2008 (vb.net 2008), selamat belajar.. Good luck!
Langganan:
Postingan (Atom)























