Web Services Development and Desktop Application

Our service available which to give the best service to our customers company for any categories development.

A Poem

There is no true love, the true love only in God!

The Magisters of Engineering

Have been graduated Huraa!

Cyber Eye

Cyber Eye is one of the community that founded by Adi Ahmad M outside campus, and have a goal to be technopreneurs in expanding knowledge and business in information technology!

We are in The Event of Programming Contest ACM 2011

This Photo taken when Event of Programming Competition ACM which implemented with online system from Widyatama University through Bina Nusantara University and some of top university in Asia to United States as the Promoter.

Informatics Research Development Lab

My Friends and as Senior was built and assembly a robots in ERD Lab.

The Committee of Advance.Inc Go to Campus Widyatama - Saung Android Bandung Workshop and Seminar

On this seminar we're discuss, to provide training about how to developing and costumizing mobile android app with eclipse development tools and also there is the introducing for the new product of Advance Android products (VANDROID)

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!





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.



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.

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.

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.

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 :


 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:


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

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
















  • 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 Materi Diktat Strategi Algoritma 
Download Contoh Kasus Lengkap Algoritma Min Max - Knapsack I/O

Rabu, 29 Januari 2014

Input Array dengan perulangan for dan searching

Input Array dengan perulangan for dan searching

Input Nilai dengan Looping 'For' (perulangan)

Input Nilai dengan Looping 'For' (perulangan)

 

Membuat Hello World dengan Bahasa C


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
//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



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

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! =)

Kamis, 24 Oktober 2013

Grafika Komputer Output Primitive : Ellips Midpoint Circle

ELLIPS
  • 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.

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
Selain itu berarti,
  •  pk > 0 maka, titik selanjutnya adalah xk+1 = x + 1, yk+1 = y - 1; dan  pk+1 = pk + 2x - 2y + 1
4. Ulangi langkah 3 sampai 4, hentikan perhitungan ketika x  > atau =  y


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=0
pk = 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
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


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 ...

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 :












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?

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
  •  Bila  Pk < 0  maka, titik selanjutnya adalah : 
         ( xk+1,  yk/nilai yk tetap ) dan  Pk+1 = Pk + 2 . dy
  • Bila tidak, titik selanjutnya adalah : 
         ( xk+1,  yk+1 )  dan Pk+1 = Pk + 2dy - 2dx
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
K=5
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 Loop(perulangan) dan perhitungan berhenti, karena sudah memenuhi x0=x1  dan/atau  y0=y1
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!