Sabtu, 12 April 2014

Tugas SPK Program Linear Maksimasi

Soal :


Suatu perusahaan akan memproduksi 2 jenis produk yaitu lemari dan kursi. Untuk memproduksi 2 produk tersebut di butuhkan 2 kegiatan yaitu proses perakitan dan pengecatan. Perusahaan menyediakan waktu 56 jam untuk proses perakitan dan 60 jam untuk proses pengecatan. Untuk produksi 1 unit lemari diperlukan waktu 8 jam perakitan dan 5 jam pengecatan. Untuk produksi 1 unit kursi diperlukan 7 jam perakitan dan 12 jam pengecatan. Jika masing masing produk adalan Rp. 200 ribu untuk lemari dan 100 ribu untuk kursi. Tentukan solusi optimal agar mendapatkan untuk masimal.

Penyelesaian :

A. Pembentukan Fungsi Tujuan da Fungsi Kendala

    Lemari X
    Kursi   Y

 Produk
Perakitan
Pengecatan
Harga/unit
Lemari (x)
8 Jam
5 Jam
 200  
Kursi    (y)
7 Jam
12 Jam
100 
Waktu yang disediakan
56 Jam
60 Jam


    Fungsi Tujuan :
    Z = 200x + 100y

    Fungsi Kendala : 
   (I)  8x + 7y ≤ 56
   (II) 5x + 12y ≤ 60 

B. Menentukan Titik Potong
    Untuk Persamaan (I)
    Jika x = 0                                    Jika y = 0                                             
      8x + 7y = 56                               8x + 7y = 56                               
      8(0) + 7y = 56                            8x + 7(0) = 56                          
                7y = 56                             8x = 56                                             
                  y = 56/7                            x = 56/8                                            
                  y = 8                                  x = 7                                               
    Titik Potong { 0,8}                    Titik Potong { 7,0}

    Untuk Persamaan (II)
    Jika x = 0                                    Jika y = 0
    5x + 12y = 60                             5x + 12y = 60
    5(0) + 12y = 60                          5x + 12(0) = 60
              12 y = 60/12                     5x = 60
                  y = 60                            x = 60/5
                  y = 5                              x = 12
    Titik Potong {0,5}                    Titik Potong {12,0}


C. Gambar Grafiknya sebagai berikut :



 D. Mencari nilai B dengan melakukan Eliminasi :

       5x + 12y = 60
       5x + 12(3,3) = 60
       5x +  39,6    = 60
       5x = 60 - 39,6
       5x = 20,4
         x = 20,4/5
         x = 4,08

Hasil nilai B { 4,08 , 3,3}


E. Penentuan Solusi 
    Untuk Titik A { 0,8 }
    Z = 200x + 100y
    Z = 200(0) + 100(8)
    Z = 0 + 800  
    Z = 800

    Untuk Titik B { 4,08 , 3,3 } 
     Z = 200x + 100y
     Z = 200(4,08) + 100(3,3)
     Z = 816 + 330  
     Z = 1146                   

     Untuk Titik C { 7,0 }
     Z = 200x + 100y
     Z = 200(7) + 100(0) 
     Z = 1400 + 0
     Z = 1400 


Maka dapat disimpulkan nilai maksimum ada di titik B { 4,08 , 3,3 } yaitu 1146

Rabu, 26 Februari 2014

Klasifikasi Sistem Pendukung Keputusan (Desicion Support System)




Institutional vs adhoc


Donovan dan Madnick (1977) menunjukkan bahwa arti DSS dapat diklasifikasikan sebagai "institutional" atau "ad hoc" tergantung pada karakteristik tertentu dari keputusan yang didukung. DSS yang berhubungan dengan keputusan yang bersifat berulang dianggap institutional, sedangkan ad hoc DSS berhugungan dengan keputusan spesifik yang biasanya tidak terantisipasi sebelumnya. Menurut Donovan dan Madnick (1977), DSS institutional yang paling sesuai untuk aplikasi pengendalian operasional, sedangkan ad hoc yang paling sesuai dengan aplikasi perencanaan strategis.

Personal support, group support, atau organizational support

Hackathorn dan Keen [1981], membedakan sistem berbasis komputer dalam 3 kategori: individual, group dan organisasi.

Organizational DSS adalah sistem pendukung keputusan yang difokuskan pada tugas-tugas organisatori atau kegiatan yang melibatkan banyak proses dan pelaku, misalnya:

1. Mengembangkan Rencana Pemasaran
2. Anggaran Biaya Negara,

dimana kegiatan individual harus berjalan harmonis dan saling mendukung dengan individu yang lain. Komputer dipakai sebagai jembatan untuk komunikasi dan koordinasi disamping juga untuk membantu memecahkan masalah.



GSS v. Individual DSS


Watson [1990]: Kombinasi dari komputer dan teknologi informasi, yang dirancang untuk koordinasi dan mendistribusikan pengambilan keputusan melalui area fungsional dan layer-layer hirarkie sehingga pengambilan keputusan dapat sejalan dengan tujuan dari organisasi .

Carter [1992]: DSS yang dipakai oleh individu atau kelompok, dalam banyak workstation dalam lebih dari 1 unit organisasi yang membuat banyak keputusan yang otonom tapi saling terkait.

Sehingga secara umum, karakter dari ODSS adalah:


1. Fokus dari ODSS adalah tugas-tugas organisasi atau keputusan yang mempengaruhi banyak unit organisasi atau perusahaan
2. ODSS beroperasi dalam lintas layer hirarkie
3. ODSS melibatkan sistem berbasis komputer dan teknologi komunikasi.


Ada beberapa perbedaan antara ODSS dengan DSS yang standar


1. Case management
Case management digunakan untuk membantu user yang ingin menjalankan suatu model beberapa kali untuk pengambilan keputusan yang serupa. Case didefinisikan sebagai skenario khusus dari suatu model. Case meliputi spesifikasi dari semua input data yang digunakan dalam skenario tsb. CMS (Case Management System) melakukan 3 hal utama:



1. Berperilaku seperti sistem akuntansi untuk skenario yang dibuat oleh user, menfasilitasi pembuatan, penugasan, penyalinan, dokumentasi dan katalog dari case model.

2. Meyediakan cara yang mudah untuk memodifikasi data input dari suatu model untuk suatu skenario. Dimana perbedaan penggunaan input akan menghasilkan output yang berbeda untuk skenario yang sama.

3. Dapat memberikan perbandingan output untuk beberapa skenario yang telah dijalankan,



2. DSS aksesibel untuk banyak user pada banyak lokasi melalui Lan atau WAN


Custom made vs vendor ready made


Jika semula upaya penggunaan teknologi informasi selalu identik dengan pengembangan aplikasi dari awal yang tentunya membutuhkan waktu, saat ini konsumen cenderung untuk memilih menggunakan aplikasi-aplikasi yang telah tersedia di pasaran yang sesuai dengan kebutuhannya. Hal ini diharapkan akan dapat meminimalkan biaya dan waktu yang dibutuhkan dalam implementasi teknologi informasi.


Terdapat beberapa jenis DSS berdasarkan klasifikasi diantaranya yaitu custom made dan juga ready made :


Pengertian Custom-made yaitu
· membuat sebuah pesanan sesuai dengan spesifikasi pelanggan atau individu
· membuat khusus untuk sebuah tujuan tertentu
· suatu sistem yang dibuat sesuai dengan spesifikasi masing-masing
· suatu sistem yang dikembangkan hanya untuk memenuhi kebutuhan spesifik dari satu instansi atau industri tertentu.


Beberapa ciri Custom-made System :
· butuh waktu yang relatif lama untuk pengembangan
· pengembangan dari awal
· spesifik hanya untuk industri tertentu
· setiap unit memiliki option pengembangan sendiri-sendiri dan sulit diintegrasikan
 

Pengertian Ready-made yaitu
· aplikasi telah tersedia dan siap pakai
· suatu sistem informasi yang dikembangkan oleh vendor tertentu untuk memenuhi kebutuhan dari berbagai macam proses bisnis


Beberapa ciri Ready-made System :
· aplikasi telah tersedia
· hanya diperlukan modifikasi dalam pengembangannya
· dokumentasi adalah bagian dari aplikasi
· aplikasi telah didesain secara terintegrasi
· waktu pengembangan dan implementasi relatif lebih cepat
· efisiensi dalam pemanfaatan SDM, pengguna hanya difokuskan untuk operasi dan pemeliharaan aplikasi saja
· biaya relatif lebih mahal karena sebagian besar proses pengembangan dilakukan oleh pihak vendor




SIKLUS HIDUP SISTEM (WATERFALL APPROACH)



Siklus hidup system adalah proses evolusioner yang diikuti dalam menerapkan system atau subsistem informasi berbasis komputer. Siklus hidup system terdiri dari serangkaian tugas yang erat yang mengikuti langkah-langkah pendekatan system. Karena tugas-tugas tersebut mengikuti suatu pola yang teratur dan dilakukan top-down, sering disebut sebagai pendekatan air terjun (waterfall approach) bagi pengembangan dan penggunaan system.


Pengelolaan Siklus Hidup


Siklus hidup system yang pertama dikelola oleh manajer unit jasa informasi, dibantu oleh manajer dari analis system, pemrograman dan operasi.


q Tanggung jawab eksekutif


Ketika system memiliki nilai strategis atau mempengaruhi seluruh organisasi, direktur utama atau komite eksekutif mungkin memutuskan untuk mengawasi proyek pengembangannya.


q Komite Pengarah SIM


Banyak perusahaan membuat komite khusus, dibawah tingkat komite eksekutif, yang bertanggung jawab atas pengawasan seluruh proyek system, yakni komite pengarah. Tujuan komite tersebut memberikan petunjuk, pengarahan, dan pengendalian yang berkesinambungan terhadap penggunaan sumber daya komputer perusahaan. Komite pengarah SIM melaksanakan tiga fungsi utama:


· Menetapkan kebijakan yang memastikan dukungan komputer untuk mencapai tujuan strategis perusahaan.


· Menjadi pengendali keuangan dengan bertindak sebagai badan yang berwenang memberi persetujuan bagi semua permintaan dana yang berhubungan dengan komputer


· Menyelesaikan pertentangan yang timbul sehubungan dengan prioritas penggunaan komputer.


q Kepemimpinan proyek


Tim proyek meliputi semua orang yang ikut serta dalam pengembangan system berbasis komputer. Sebuah tim terdiri dari pemakai, spesialis informasi, dan juga auditor internal. Auditor memastikan bahwa rancangan system memenuhi persyaratan


tertentu dalam hal akurasi, pengendalian, keamanan dan dapat di audit. Tim proyek tidak berkelanjutan dan biasanya dibubarkan ketika penerapan system selesai.




Tahap-tahap Siklus Hidup Sistem



A. Tahap Perencanaan


Keuntungan yang dapat diperoleh dari merencanakan suatu proyek CBIS:


· Menentukan lingkup proyek


· Mengenali berbagai area permasalahan potensial


· Mengatur urutan tugas


· Memberikan dasar untuk pengendalian


Langkah-langkah dalam tahap perencanaan:


1. Menyadari masalah
2. Mendefinisikan masalah
3. Menentukan tujuan system
4. Identifikasi Kendala/Batasan system
5. Membuat studi kelayakan
6. Usulan penelitian system
7. Menyetujui atau menolak penelitian proyek
8. Menetapkan mekanisme pengendalian




Memantau kemajuan proyek

Setelah jadwal proyek ditetapkan, jadwal itu harus didokumentasikan dalam bentuk yang memudahkan pengendalian. Berbagai teknik dokumentasi dapat digunakan, termasuk berbagai jenis table, grafik, dan diagram.






B. Tahap Analisis

Analis sistem adalah penelitian atas system yang telah ada dengan tujuan untuk merancang system baru atau diperbarui. Langkah-langkah dalam tahap analisis:

1. Mengumumkan Penelitian Sistem
2. Mengorganisasikan tim proyek
3. Mendefinisikan kebutuhan informasi
4. Mendefinisikan Kriteria Kinerja Sistem
5. Menyiapkan usulan rancangan
6. Menyetujui atau menolak Rancangan Proyek

C. Tahap Perancangan
Rancangan system adalah penentuan proses dan data yang diperlukan oleh system baru. Jika system itu berbasis komputer, rancangan dapat menyertakan spesifikasi jenis peralatan yang akan digunakan. Langkah-langkah dalam tahap perancangan:


1. Merancang system yang terinci
2. Mengidentifikasi berbagai alternatif konfigurasi sistem
3. Mengevaluasi berbagai alternatif konfigurasi system
4. Memilih Konfigurasi terbaik
5. Menyiapkan usulan penerapan
6. Menyetujui atau menolak Penerapan sistem



D. Tahap Implementasi


Implementasi menerapkan kegiatan dan mengintegrasikan sumber daya fisik dan konseptual yang menghasilkan suatu system bekerja. Langkah-langkah dalam tahap Implementasi:
1. Merencanakan penerapan
2. Mengumumkan penerapan
3. mendapatkan sumber daya perangkat keras
4. Mendapatkan sumber daya perangkat lunak
5. Menyiapkan database
6. Menyiapkan fasilitas fisik
7. Mendidik Peserta dan pemakai
8. Menyiapkan usulan cutover
9. Menyetujui atau menolak masuk ke system yang baru
10. Masuk ke system yang baru (cutover)


F Percontohan (Pilot)
Sistem percobaan yang diterapkan dalam satu subset dari keseluruhan operasi, seperti pada kantor atau daerah tertentu. Jika percontohan ini sukses, system akan diterapkan pada operasi selebihnya, dengan menggunakan salah satu dari tiga pendekatan cutover lainnya

F Serentak (Immediate)
Beralih dari system lama ke system baru pada saat yang ditentukan. Pendekatan ini layak pada system yang kecil, karena permasalahan waktu semakin besar jika skala operasi meningkat.


G Bertahap(Phased)
Sistem baru digunakan berdasarkan bagian per bagian pada suatu waktu. Cutover bertahap lebih popular untuk system berskala besar.


H Paralel(Parallel)
Sistem lama dipertahankan sampai system baru telah diperiksa secara menyeluruh. Pendekatan ini memberikan pengamanan yang paling baik terhadap kegagalan tetapi yang paling mahal karena kedua sumber daya harus dipertahankan.

Artikel Mengenai Sistem Pendukung Keputusan

Sistem Pendukung Keputusan
Sistem informasi  komputer yang dipergunakan untuk memecahkan permasalahan spsesifik, mampu berkomunikasi dalam memecahkan masalah semiterstruktur. Informasi dihasilkan dalam bentuk laporan periodik dan khusus, output dari model matematika dan sistem pakar serta menggunakan beberapa jenis grafik. Komunikasi dilakukan pada saat berbagai kelompok manajer terlibat dalam pemecahan masalah.
Sistem pendukung keputusan
Gambar Sistem pendukung keputusan
Perangkat Lunak > menghasilkan laporan periodik ( yang disiapkan sesuai jadwal ) dan laporan khusus ( yang disiapkan sebagai jawaban atas kebutuhan informasi yang tak terduga )
Model matematika > menghasilkan informasi sebagai hasil dari simulasi yang melibatkan satu atau beberapa komponen dari sistem fisik perusahaan atau berbagai aspek operasinya.
Perangkat Lunak Group Decision Support System >  memungkinkan beberapa pemecah masalah bekerja sama dan saling berkomunikasi untuk memperoleh solusi.
OTOMATIS KANTOR
OK > sistem informasi  komputer yang mencakup semua sistem elektronik baik formal maupun informal, sistem formal ialah sistem yang bersifat  prosedural dengan menggunakan dokumentasi, tulisan maupun uraian, sedangkan sistem  informal ialah sistem tidak terencana sehingga tanpa dukungan dokumentasi tetapi cukup dengan lisan. Otomatis kantor berkaitan dengan komunikasi informasi didalam maupun diluar perusahaan, dan kebanyakan dipergunakan oleh orang yang bekerja didalam kantor ( pegawai administrasi, karyawan, sekretaris, profesional, manajer ).
Sistem otomatis kantor
Gambar Sistem otomatis kantor
Informasi dikumpulkan dari sistem fisik perusahaan pada bagian bawah, sedangkan informasi berfungsi sebagai input bagi aplikasi otomatis kantor berbasis komputer seperti pengolah kata, surat elektronik dan konferensi komputer serta memungkinkan pemecah masalah saling berkomunikasi dengan menggunakan komputer mereka masing - masing.
SISTEM PAKAR
Sistem Pakar memiliki potensi untuk memperluas kemampuan pemecahan masalah manajer melebihi kemampuan normalnya. Sistem pakar terdiri dari empat bagian utama : User interface Penggunaan input dan output multimedia yang sekarang mendapatkan perhatian dari pengembang sistem sebagai cara untuk meningkatkan komunikasi antar komputer dan pemakai., Knowledge base menggunakan metode - metode pemecahan masalah dan menggunakan formula untuk mengekspresikan logika masalah, Inference engine menggunakan penalaran menyerupai manusia didalam memformulasikan isi daripada Knowledge base, dan Development engine berisi tentang bahasa pemrograman untuk pengembangan sistem pakar.
Sistem pakar
Gambar Sistem pakar
Sistem pakar terdiri dari empat bagian antara lain User interface yang memungkinkan pemakai berinteraksi dengan sistem pakar. Knowledge base menyimpan akumulasi pengetahuan dari masalah tertentu yang akan diselesaikan. Inference engine menyediakan kemamapuan penalaran yang menafsirkan isi knowlegde base. Pakar dan analisis sistem menggunakan development engine untuk menciptakan sistem pakar.

Selasa, 12 November 2013

Algoritma DDA,Bresenham,c++

TITIK DAN GARIS
Persamaan Garis
y = mx + b       Persamaan garis menurut koordinat Cartesian adalahdimana m adalah slope/kemiringan garis yang dibentuk dari dua titik, yaitu (x1,y1) dan (x2,y2).Untuk penambahan x sepanjang garis yaitu dx akan mendapatkan penambahan y sebesar : dy mdx
Atribut
Atribut dasar untuk garis lurus adalah type (tipe), width (tebal) dan color (warna). Dalam beberapa paket aplikasi grafik, garis ditampilkan dengan menggunakan pilihan pen atau brush . Berikut ini dibicarakan bagaimanafungsi garis dapat mengakomodasi bermacam-macam spesifikasi atribut.
Tipe Garis
Garis mempunyai beberapa linetype (tipe garis) diantaranya solid line (garis tebal), dashed line (garis putus), dan dotted line (garis titik-titik).Algoritma pembentukan garis dilengkapi dengan pengaturan panjang dan jarak yang menampilkan bagian solid sepanjang garis.
  • Garis putus dibuat dengan memberikan nilai jarak dengan bagian solid yang sama.
  • Garis titik–titik dapat ditampilkan dengan memberikan jarak yang lebih besar dari bagain solid.
  • Prosedur yang serupa digunakan pula untuk membuat bermacam-macam tipe garis. Untuk mengatur atribut dalam program aplikasi PHIGS menggunakan fungsi: setLinetype (lt)
Di mana parameter it menunjukkan integer positif dengan nilai 1,2,3,4 untuk membuat garis solid, dashed, dotted atau dotted dash. nilai lain untuk parametergaris dapat digunakan untuk menampilkan berbagai macam pola dot dashed. Ketika parameter linetype diatur dalam aplikasi PHIGS, perintah line drawing membuat garis dengan tipe garis tersebut.
Algoritma Pembentukan Garis
Algoritma pembentukan garis menggunakan 3 algoritma :
ALGORITMA GARIS DDA
Digital Diferensial Analyser (DDA) adalah algoritma pembentukan garis berdasarkan perhitungan dx maupun dy, menggunakan rumus dy mdx. Garis dibuat menggunakan dua endpoint, yaitu titik awal dan titik akhir. Setiap koordinat titik yang membentuk garis diperoleh dari perhitungan, kemudian dikonversikan menjadi nilai integer.
Langkah-langkah membentuk garis menurut algoritma DDA adalah :
1.     Tentukan dua titik yang akan dihubungkan dalam pembentukan garis
2.     Tentukan titik awal yaitu dan titik akhir .
3.     Hitung dx x1x0 dan dy y1 – y0
4.     Tentukan step = max( |dx| , |dy| )
5.     Hitung penambahan koordinat pixel XInc dxstep dan YInc dy step
6.     Koordinat selanjutnya (x+XIncy+yInc)
7.     Posisi pada layar ditentukan dengan pembulatan nilai koordinat tersebut
8.     Ulangi nomor 6 dan 7 untuk menentukan posisi pixel berikutnya. sampai x=x1dan y=y1.
(Source code)
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
//—————————————————————————
 
#include <vcl.h>
 
#pragma hdrstop
 
#include “Unit1.h”
 
#include “math.h”
 
#include “stdlib.h”
 
//—————————————————————————
 
#pragma package(smart_init)
 
#pragma resource “*.dfm”
 
TForm1 *Form1;
 
int x1,x2,y1,y2;
 
int tergambar;
 
//—————————————————————————
 
__fastcall TForm1::TForm1(TComponent* Owner)
 
: TForm(Owner)
 
{
 
}
 
//—————————————————————————
 
void __fastcall TForm1::FormActivate(TObject *Sender)
 
{
 
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
 
TMouseButton Button, TShiftState Shift, int X, int Y)
 
{
 
tergambar=true;
 
x1=X;
 
y1=Y;
 
Edit1->Text=(IntToStr(X)+”,”+IntToStr(Y));
 
}
 
//—————————————————————————
 
void __fastcall TForm1::BARUClick(TObject *Sender)
 
{
 
tergambar=false;
 
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
 
ListBox1->Items->Clear();
 
}
 
//—————————————————————————
 
void __fastcall TForm1::CLOSEClick(TObject *Sender)
 
{
 
Close();
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
 
TShiftState Shift, int X, int Y)
 
{
 
{
 
BARUClick(Sender);
 
tergambar=false;
 
x2=X;
 
y2=Y;
 
Edit2->Text=(IntToStr(X)+”,”+IntToStr(Y));
 
//ListBox1->Items->Add(IntToStr(X)+”,”+IntToStr(Y));
 
if(RadioGroup1->ItemIndex==0)
 
{DDA(x1,y1,x2,y2);}
 
}
 
}
 
//—————————————————————————
 
//—————————————————————————
 
void __fastcall TForm1::DDA(int xa,int ya,int xb,int yb)
 
{ int dx, dy,step,k ;
 
float Xincrement,Yincrement,x,y;
 
xa=10;ya=10;xb=17;yb=16;
 
dx = xb-xa;
 
dy = yb-ya;
 
x=(float)xa;
 
y=(float)ya;
 
if (abs(dx)>abs(dy))
 
{ step = (abs(dx));}
 
else
 
{ step = (abs(dy)); };
 
Xincrement=(float)dx/step;
 
Yincrement=(float)dy/step;
 
Image1->Canvas->Pixels[int (x)][int (y)]=clBlack;
 
judul(x,y);
 
for (k=0;k<=step;k++)
 
{
 
x+=Xincrement;
 
y+=Yincrement;
 
Image1->Canvas->Pixels[int(x)][int(y)]=clBlack;
 
tampil(x,y,k);
 
}
 
}
 
//——————————————————–
 
void __fastcall TForm1::judul(float x,float y)
 
{
 
char tampilX[20], tampilY[20];
 
//int xt=200, yt=15, kt=2;
 
_gcvt(x,4,tampilX);
 
_gcvt(y,4,tampilY);
 
String a = “k x y (x bulat,y bulat)”;
 
ListBox1->Items->Add(a);
 
String b=tampilX;
 
String c=tampilY;
 
_gcvt(x,2,tampilX);
 
_gcvt(y,2,tampilY);
 
String d=tampilX;
 
String e=tampilY;
 
ListBox1->Items->Add(” “+b+” “+c+” “+d+” “+e);
 
}
 
//—————————————————————-
 
void __fastcall TForm1::tampil(float x, float y, int k)
 
{
 
char tampilX[20],tampilY[20],tampilK[20];
 
//int xt=200, yt=15;
 
k += 2;
 
_gcvt(x,4,tampilX);
 
_gcvt(y,4,tampilY);
 
String a=tampilX;
 
String b=tampilY;
 
_gcvt(x,2,tampilX);
 
_gcvt(y,2,tampilY);
 
_gcvt(k-3,10,tampilK);
 
String c=tampilK;
 
String d=tampilX;
 
String e=tampilY;
 
ListBox1->Items->Add(c+” “+a+” “+b+” “+d+” “+e);
 
}


(output program)
ALGORITMA GARIS BRESSENHAM
Prosedur untuk menggambar kembali garis dengan membulatkan nilai x atau y ke bilangan integer memerlukan waktu. serta variabel x,y maupun m memerlukan bilangan real karena kemiringan merupakan nilai pecahan.Bressenham mengembangkan algoritma klasik yang lebih menarik, karena hanya menggunakan perhitungan matematik dengan bantuan bilangan integer. Dengan demikian tidak perlu membulatkan nilai posisi pixel setiap waktu. Langkah-langkahnya adalah sebagai berikut:
1.     Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2.     Tentukan salah satu titik disebelah kiri sebagai titik awal (x0,y0) dan titik lainnya sebagai titik akhir (x1,y1)
3.     Hitung dx, dy, 2dx dan 2dy-2dx
4.     Hitung parameter P0 = 2dy – dx
5.     Untuk setiap xk sepanjang garis dimulai dengan k=0
§  Bila Pk < 0 maka titik selanjutnya adalah (xk+1, yk) dan Pk+1=Pk+2dy
§  Bila tidak maka titik selanjutnya adalah (xk+1, yk+1) dan Pk+1=Pk+2dy-2dx
6.     Ulangi nomor 5 untuk menentukan posisi pixel selanjutnya sampai x=x1 dan y=y1
(Source code)
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
//—————————————————————————
 
#include &lt;vcl.h&gt;
 
#pragma hdrstop
 
#include “Unit1.h”
 
#include “math.h”
 
#include “stdlib.h”
 
//—————————————————————————
 
#pragma package(smart_init)
 
#pragma resource “*.dfm”
 
TForm1 *Form1;
 
int x1,x2,y1,y2;
 
int tergambar;
 
//—————————————————————————
 
__fastcall TForm1::TForm1(TComponent* Owner)
 
: TForm(Owner)
 
{
 
}
 
//—————————————————————————
 
void __fastcall TForm1::FormActivate(TObject *Sender)
 
{
 
Image1-&gt;Canvas-&gt;Rectangle(0,0,Image1-&gt;Width,Image1-&gt;Height);
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
 
TMouseButton Button, TShiftState Shift, int X, int Y)
 
{
 
tergambar=true;
 
x1=X;
 
y1=Y;
 
Edit1-&gt;Text=(IntToStr(X)+”,”+IntToStr(Y));
 
}
 
//—————————————————————————
 
void __fastcall TForm1::BARUClick(TObject *Sender)
 
{
 
tergambar=false;
 
Image1-&gt;Canvas-&gt;Rectangle(0,0,Image1-&gt;Width,Image1-&gt;Height);
 
ListBox1-&gt;Items-&gt;Clear();
 
}
 
//—————————————————————————
 
void __fastcall TForm1::CLOSEClick(TObject *Sender)
 
{
 
Close();
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
 
TShiftState Shift, int X, int Y)
 
{
 
{
 
BARUClick(Sender);
 
tergambar=false;
 
x2=X;
 
y2=Y;
 
Edit2-&gt;Text=(IntToStr(X)+”,”+IntToStr(Y));
 
//ListBox1-&gt;Items-&gt;Add(IntToStr(X)+”,”+IntToStr(Y));
 
if(RadioGroup1-&gt;ItemIndex==0)
 
{Bressenham(x1,y1,x2,y2);}
 
}
 
}
 
//—————————————————————————
 
//—————————————————————————
 
void __fastcall TForm1::Bressenham(int xa, int ya, int xb, int yb)
 
{
 
int dx, dy, p, twoDy, twoDyDx, xEnd;
 
float x,y;
 
int k;
 
k=0;
 
dx=abs(xb-xa);
 
dy=abs(yb-ya);
 
p=2*dy-dx;
 
twoDy=2*dy;
 
twoDyDx=2*(dy-dx);
 
if(xa&gt;xb)
 
{x=xb; y=yb; xEnd=xa;}
 
else
 
{x=xa; y=ya; xEnd=xb;}
 
Image1-&gt;Canvas-&gt;Pixels[int (x)][int (y)]=clBlack;
 
judul(x,y);
 
while(x&lt;xEnd)
 
{x++; k++;
 
if(p&lt;0)
 
{
 
p+=twoDy;
 
}
 
else
 
{
 
y++;
 
p+=twoDyDx;
 
}
 
Image1-&gt;Canvas-&gt;Pixels[int (x)][int (y)]=clBlack;
 
tampil(x,y,k);
 
}
 
}
 
//——————————————————–
 
void __fastcall TForm1::judul(float x,float y)
 
{
 
char tampilX[20], tampilY[20];
 
//int xt=200, yt=15, kt=2;
 
_gcvt(x,4,tampilX);
 
_gcvt(y,4,tampilY);
 
String a = “k x y (x bulat,y bulat)”;
 
ListBox1-&gt;Items-&gt;Add(a);
 
String b=tampilX;
 
String c=tampilY;
 
_gcvt(x,2,tampilX);
 
_gcvt(y,2,tampilY);
 
String d=tampilX;
 
String e=tampilY;
 
ListBox1-&gt;Items-&gt;Add(” “+b+” “+c+” “+d+” “+e);
 
}
 
//—————————————————————-
 
void __fastcall TForm1::tampil(float x, float y, int k)
 
{
 
char tampilX[20],tampilY[20],tampilK[20];
 
//int xt=200, yt=15;
 
k += 2;
 
_gcvt(x,4,tampilX);
 
_gcvt(y,4,tampilY);
 
String a=tampilX;
 
String b=tampilY;
 
_gcvt(x,2,tampilX);
 
_gcvt(y,2,tampilY);
 
_gcvt(k-3,10,tampilK);
 
String c=tampilK;
 
String d=tampilX;
 
String e=tampilY;
 
ListBox1-&gt;Items-&gt;Add(c+” “+a+” “+b+” “+d+” “+e);
 
}
(tampilan output)
ALORITMA GARIS C++
Algoritma garis C++ adalah pembentukan garis dengan memanfaatkan fungsi yang disediakan oleh C++. Dalam C++, fungsi yang digunakan untuk pembentukan garis dengan menggunakan pasangan fungsi MoveTo dan LineTo. MoveTo digunakan untuk mengubah posisi gambar dari X ke Y. LineTo digunakan untuk menggambar garis pada canvas dengan pen dimana garis dimulai dari titik X menuju Y.
(Source code)
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
//—————————————————————————
 
#include &lt;vcl.h&gt;
 
#pragma hdrstop
 
#include “Unit1.h”
 
//—————————————————————————
 
#pragma package(smart_init)
 
#pragma resource “*.dfm”
 
TForm1 *Form1;
 
int X1,X2,Y1,Y2;
 
int tergambar;
 
//—————————————————————————
 
__fastcall TForm1::TForm1(TComponent* Owner)
 
: TForm(Owner)
 
{
 
}
 
void __fastcall TForm1::FormActivate(TObject *Sender)
 
{
 
Image1-&gt;Canvas-&gt;Rectangle(0,0,Image1-&gt;Width,Image1-&gt;Height);
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Button2Click(TObject *Sender)
 
{
 
Close();
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
 
tergambar=false;
 
Image1-&gt;Canvas-&gt;Rectangle(0,0,Image1-&gt;Width,Image1
 
-&gt;Height);
 
}
 
//—————————————————————————
 
//—————————————————————————
 
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
 
TShiftState Shift, int X, int Y)
 
{
 
tergambar=true; X1=X; Y1=Y;
 
}
 
//—————————————————————————
 
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
 
TShiftState Shift, int X, int Y)
 
{
 
{
 
Button1Click(Sender);
 
tergambar=false;
 
X2=X; Y2=Y;
 
if (RadioGroup1-&gt;ItemIndex==0)
 
{
 
Image1-&gt;Canvas-&gt;MoveTo(X1,Y1);
 
Image1-&gt;Canvas-&gt;LineTo(X2,Y2);
 
}
 
};
 
}
 
//—————————————————————————