Jumat, 24 Oktober 2008

PEMROGRAMAN PROSEDURAL DAN (OOP)

Pemrograman beroreantasi objek '''


Pemrograman berorientasi objek''' (bahasa Inggris) object-oriented programming''''' disingkat '''OOP''') merupakan [[paradigma pemrograman]] yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam ''kelas-kelas'' atau ''objek-objek''. Bandingkan dengan logika [[pemrograman terstruktur]]. Setiap objek dapat menerima [[pesan]], memproses data, dan mengirim pesan ke objek lainnya. Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam [[teknik piranti lunak]] skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat. Pemrograman orientasi-objek menekankan konsep berikut:
• Objek - membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
• Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut
• Inheritas- Mengatur polimorfisme dan enskapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
• Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut(terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya.
Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek -objek yang ada karena setiap objek memiliki job descriptionnya sendiri.
Pemrograman procedural l Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti Algoritma adalah proses yang procedural. Definisi Prosedural menurut Kamus Besar Bahasal Indonesia :
Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas.l Metode langkah demi langkah secara eksak dalam memecahkan suatul masalah. Procedural dan UPP Bahasa-bahasa tingkat tinggi sepertil Cobol, Basic, Pascal, Fortran dan C mendukung kegiatan pemrograman procedural, karena itu mereka dinamakan juga bahasa procedural. Selain paradigmal pemrograman procedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming). Paradigma pemrograman ini merupakan trend baru dan sangat populr akhir-akhir ini.

CONTOH PROGRAM ARRAY DALAM C++

ARRAY

Contoh array

Di dalam C++ tidak ada tipe variabel untuk memasukkan sejumlah karakter string. Untuk itu digunakan array dari tipe char.
Contoh, array berikut ini (atau karakter string):
char jenny [20];dapat menampung karakter sampai 20 karakter


Contoh program array dimensi :
/*Program :array.cpp*/
#include
Void printArray(int [] [3]);
Main() {
int matrik1[2] [3] ={ {1,2,2}, {4,5,6} },
matrik2[2] [3] ={ {1,2,3,4,5,} },
matrik3[2] [3] ={ {1,2}, {4} },
printArray(matrik1) ;
printArray(matrik2) ;
printArray(matrik3) ;
return 0;
}

MACAM-MACAM PENGURUTAN (SORT)

MACAM-MACA PENGURUTAN (SORT)
Tulisan ini membahas program visualisasi metode pengurutan dasar: bubble sort, selection sort dan insertion sort. Tujuannya adalah memperlihatkan perubahan posisi data dan menghitung secara tepat jumlah perbandingan dan pertukaran data selama proses pengurutan berlangsung. Di luar algoritma-algoritma yang dibahas ada puluhan algoritma lain yang pada dasarnya dari algoritma-algoritma yang akan dibahas berikut ini:
a. Bubble Sort
Ide dari algoritma ini sangat menarik. Setiap pasangan data: x[j] dengan x[j-1], untuk semua i=1,...,n-1 harus memenuhi keterurutan, yaitu x[j] > x[j-1]. Apabila tidak memenuhi maka posisi kedua data harus ditukar. Misalnya oleh bubble-sort dilakukan dari kanan ke kiri serta di dalam sejumlah iterasi.
Pada iterasi ke-i, pemeriksaan tsb. dilakukan pula dalam loop-for sbb.
for (j=n-1; j > i; j--) {
if (x[j] < x[j-1]) {
tmp = x[j];x[j] = x[j-1];x[j-1] = tmp;
}
}
Loop-for tersebut akan menggeser bilangan terkecil ke posisi i. Loop-for dilakukan hanya sampai ke i karena pada iterasi ke-i data dalam x[0], x[1], ..., x[i-1] merupakan yang paling kecil dan sudah terurut hasil pengeseran yang dilakukan setiap loop sebelumnya. Oleh sebab itu iterasi hanya dilakukan untuk harga i=0, 1, ..., n-2 atau sampai tidak terjadi penukaran dalam suatu iterasi.
void BubbleSort() {
ch = true;for (i=0; i < n-2 && ch; i++) {
ch = false;for (j=n-1; j > i; j--) {
if (x[j] < x[j-1]) {
tmp = x[j];x[j] = x[j-1];x[j-1] = tmp; ch = true;
}
}
}
}

Contoh untuk mengurutkan data 34,43,65,90
Pada iterasi i=0:j=13: tukar 56-37 menjadi 34,43,65,90
j=12: tidak ada penukaran 34,43,65,23,90 j= 3: tukar 65-23 menjadi 34,43,23,65,90
j= 2: tukar 43-23 menjadi 34,23,43,65,90j= 1: tukar 34-23 menjadi 23,34,43,65,90

Jika Bobble Sort dalam setiap iterasi melakukan loop-for penukaran ke satu arah, Shaker Sort (suatu variant dari Bubble Sort) melakukan loop-for penukaran dengan arah bolak-balik dengan batas loop-for kiri dan kanan semakin menyempit.
b. Shell Sort
Algoritma ini bisa dipandang sebagai modifikasi dari algoritma Insertion Sort, lebih tepatnya memanfaatkan kondisi-kondisi positif dari Insertion Sort. Walaupun Insertion Sort dalam kondisi normal merupakan algoritma O(n2), algoritma ini memiliki keuntungan-keuntungan sbb.:
o Insertion Sort bisa sangat efisien untuk data dalam kondisi hampir terurut.
o Karena Insertion Sort sangat sederhana, maka overhead cost untuk proses-proses tambahannya pun amat kecil sehingga untuk jumlah data n yang kecil masih bisa lebih cepat dari algoritma O(n log n).
Dengan suatu bilangan integer positif D, maka setiap X[i], X[i+D], X[i+2D, ..., dimasukkan dalam satu subset yang sama dari D subset yang ada. Pengurutan a'la Insertion Sort dilakukan pada masing-masing subset. Jika D=1 maka yang terjadi adalah Insertion Sort murni.
Sejumlah harga D: D1, D2, ..., Dh, di mana D1 > D2 > ... > Dh = 1, masing-masing diaplikasikan dengan cara di atas berturut-turut mulai dari yang terbesar hingga yang terkecil maka akhirnya terjadi hal-hal sebagai berikut:
o Saat D berharga besar maka terjadi sejumlah insertion sort pada subset-subset yang masing-masing dengan data berjumlah sedikit (n/D). Dengan demikian mendekati kondisi positif Insertion Sort kedua.
o Untuk D yang kecil ukuran subset membesar namun akibat proses pada D sebelumnya dapat menyebabkan data sebagian terurut, dan ini adalah mendekati kondisi positif Insertion Sort pertama.
Kompleksitas dari algoritma ini secara worse case adalah dengan waktu O(n2) tetapi dengan pemilihan harga-harga D yang tepat dapat menghasilkan kompleksitas waktu yang kurang dari itu. Namun sejumlah literatur berdasarkan pengukuran eksperimental mendapatkan average case dengan waktu O(n1.25).
c. Quick Sort
Ide dari algoritma ini adalah secara rekursif membagi (atau mempartisi) data set ke dalam dua sub data set; kita sebut sub data set kiri dan sub data set kanan. Partisi ini dilakukan dengan kriteria:
o digunakan salah satu data sebagai pivot value
o sub data set kiri adalah data yang berharga <= pivot value
o sub data set kanan adalah data yang berharga > pivot value
Jika data set berada dalam array X berindeks dari l sampai dengan r maka pembagian ini mempertukarkan sejumlah isi array sehingga sub data set kiri berada dalam array yang sama berindeks l sampai dengan t-1 dan sub data set kanan berada dalam array berindeks t+1 sampai dengan r. X[t] sendiri ditempati oleh pivot.
Setelah dilakukan pembagian tersebut maka algoritma Quick Sort diaplikasikan untuk masing-masing sub data set tsb dan seterusnya secara rekursif hingga terbentuk sub data set yang tidak dapat dibagi lagi yaitu jika hanya berisi satu sel (l = r).
Bagian yang paling tricky adalah pada pembagian data set, kita sebut fungsi tersebut adalah Partition(l,r) yang menghasilkan t yaitu posisi pivotnya. Maka, algoritma Quick Sort adala sebagai berikut.

void QuickSort(int l,int r) {
if (l < r) {
t = Partition(l,r);QuickSort(l,t-1);QuickSort(t+1,r);
}
}
Proses Partisi diserahkan kepada anda untuk mempelajarinya sendiri. Dalam beberapa literatur terdapat variant-varuant yang pada dasarnya terjadi karena perbedaan cara menentukan harga pivot: bisa data pertama (X[l]), data terakhir (X[r]) atau data ditengah (X[(l+r)/2]) data set).
Kompleksitas algoritma Quick Sort adalah bergantung pada hasil partisi tersebut. Kondisi best case adalah jika dalam setiap partisi tidak dilakukan operasi pertukaran tempat dan pivot tepat berada ditengah subset (O(n)). Kondisi average case adalah jika partisi menghasilkan sub data set yang balance (o(n log n)). Kondisi worse case adalah jika partisi menghasilkan sub data set kosong dan yang lain besar (o(n2). Walaupun demikian, algoritma ini cenderung untuk average case.

Rabu, 24 September 2008

ASCII

KODE ASCII

Kode Standar Amerika untuk Pertukaran Informasi
atau ASCII (American Standard Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal, contohnya 124 adalah untuk karakter "|". Ia selalu digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII sebenarnya memiliki komposisi bilangan biner sebanyak 8 bit. Dimulai dari 00000000 hingga 11111111. Total kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan Desimal.

Kode ASCII Standard

Berikut ini adalah penjelasan tentang Kode ASCII Standard…Kode ini merepresentasikan angka, huruf serta tombol standar, Enter, Escape, Backspace dan Space. Selain itu juga terdapat karakter-karakter yang tidak terdapat pada keyboard, yang dapat diaktifkan dengan melakukan penekanan tombol kombinasi “Alt” dan angka yang dimaksud, sebagai contoh tombol kombinasi “Alt” dan angka “127″ akan menghasilkan karakter grafis.

Karakter dasar lain juga digunakan untuk komunikasi, seperti yang Anda ketahui bersama, karakter tersebut adalah “ACK” dan “ENQ”. Pada saat akan dilakukan komunikasi pada jaringan dengan protokol Ethernet, maka bentuk komunikasi yang terjadi adalah komputer akan mengirimkan “ACK” (Acknowledge) pada komputer lain yang akan berkomunikasi, jika komputer lain merespon, maka komputer tersebut akan membalasnya dengan mengirim “ENQ” (Enquiry).




1. Berkenalan dengan Barcode.
Mungkin tanpa disadari setiap hari kita akan menemui barcode, misalnya pada produk makanan, obat, barang konsumer yang kita miliki, tiket pesawat, kartu mahasiswa, bahkan sampai di sampul surat yang kita terima (biasanya dari luar negeri) pun kita temui barcode, oleh karenanya artikel ini akan mengulas apa dan bagaimana barcode itu. Barcode pada dasarnya adalah susunan garis vertikal hitam dan putih dengan ketebalan yang berbeda, sangat sederhana tetapi sangat berguna, dengan kegunaan untuk menyimpan data-data spesifik misalnya kode produksi, tanggal kadaluwarsa, nomor
2. Jenis-Jenis Barcode.

2.1 Code 39 / 3 of 9
Code 39 dapat mengkodekan karakter alphanumeric yaitu angka desimal dan huruf besar serta tambahan karakter spesial - . * $ / % + Satu karakter dalam Code 39 terdiri dari 9 elemen yaitu 5 bar (garis vertikal hitam) dan 4 spasi (garis vertikal putih) yang disusun bergantian antara bar dan spasi. 3 dari 9 elemen tersebut memiliki ketebalan lebih tebal dari yang lainnya oleh karenanya kode ini biasa disebut juga code 3 of 9, 3 elemen yang lebih tebal tersebut terdiri dari 2 bar dan 1 spasi. Elemen yang lebar mewakili digit biner 1 dan elemen yang sempit mewakili digit biner 0. Tabel karakter code 39 beserta nilai karakternya tercantum dibawah ini.
Gb1

KARAKTER SET
Karakter ASCII
Digit Biner
Nilai Karakter
B
S
B
S
B
S
B
S
B
0
0
0
0
1
1
0
1
0
1
0
1
1
0
0
1
0
0
0
0
1
1
2
0
0
1
1
0
0
0
0
1
2
3
1
0
1
1
0
0
0
0
0
3
4
0
0
0
1
1
0
0
0
1
4
5
1
0
0
1
1
0
0
0
0
5
6
0
0
1
1
1
0
0
0
0
6
7
0
0
0
1
0
0
1
0
1
7
8
1
0
0
1
0
0
1
0
1
8
9
0
0
1
1
0
0
1
0
0
9
A
1
0
0
0
0
1
0
0
1
10
B
0
0
1
0
0
1
0
0
1
11
C
1
0
1
0
0
1
0
0
0
12
D
0
0
0
0
1
1
0
0
1
13
E
1
0
0
0
1
1
0
0
0
14
F
0
0
1
0
1
1
0
0
0
15
G
0
0
0
0
0
1
1
0
1
16
H
1
0
0
0
0
1
1
0
0
17
I
0
0
1
0
0
1
1
0
0
18
J
0
0
0
0
1
1
1
0
0
19
K
1
0
0
0
0
0
0
1
1
20
L
0
0
1
0
0
0
0
1
1
21
M
1
0
1
0
0
0
0
1
0
22
N
0
0
0
0
1
0
0
1
1
23
O
1
0
0
0
1
0
0
1
0
24
P
0
0
1
0
1
0
0
1
0
25
Q
0
0
0
0
0
0
1
1
1
26
R
1
0
0
0
0
0
1
1
0
27
S
0
0
1
0
0
0
1
1
0
28
T
0
0
0
0
1
0
1
1
0
29
U
1
1
0
0
0
0
0
0
1
30
V
0
1
1
0
0
0
0
0
1
31
W
1
1
1
0
0
0
0
0
0
32
X
0
1
0
0
1
0
0
0
1
33
Y
1
1
0
0
1
0
0
0
0
34
Z
0
1
1
0
1
0
0
0
0
35
-
0
1
0
0
0
0
1
0
1
36
.
1
1
0
0
0
0
1
0
0
37
SPACE
0
1
1
0
0
0
1
0
0
38
*
0
1
0
0
1
0
1
0
0
-
$
0
1
0
1
0
1
0
0
0
39
/
0
1
0
1
0
0
0
1
0
40
+
0
1
0
0
0
1
0
1
0
41
%
0
0
0
1
0
1
0
1
0
42
Gambar 1

identitas dengan mudah dan murah, walaupun teknologi semacam itu terus berkembang dengan ditemukannya media magnetic, rfid,

Stuktur Barcode Code 39 adalah sebagai berikut
Gb.2
QZ
SC
ICG
C1
ICG
C2
ICG
...
CN
ICG
CC
ICG
PC
QZ

Gambar 2


electronics tags, serial eeprom (seperti pada smart card), barcode terus bertahan dan masih memiliki kelebihan-kelebihan tertentu yaitu ,yang paling utama, murah dan mudah, sebab media yang digunakan adalah kertas dan tinta, sedangkan untuk membaca barcode ada begitu banyak pilihan di pasaran dengan harga yang relatif murah mulai dari yang berbentuk pena(wand), slot, scanner, sampai ke CCD dan bahkan kita dapat membuatnya sendiri. Jenis barcode sangatlah banyak mulai dari yang tradisional yaitu 1 dimensi sampai dengan barcode yang multi dimensi, dalam artikel ini akan dibahas barcode 1 dimensi dan dibatasi pada jenis-jenis yang populer digunakan tetapi dapat memberi pengertian dan gambaran yang jelas mengenai barcode.

dimana : X : Ketebalan elemen yang sempit (minimum 0.19mm). QZ : Quiet Zone atau Start-Stop Margin dengan ketebalan minimum 6mm atau 10 kali X SC : Start Character (karakter *) ICG : Inter Character Gap dengan ketebalan 1 kali X C1 ..CN : Character ke 1 s/d character ke N. CC : Check Character PC : Stop Character (karakter *) Untuk dapat membedakan garis vertikal lebar dan sempit maka perbandingan ketebalan antara garis vertikal lebar dan sempit minimum 2:1, dimana perbandingan 3:1 akan lebih baik. Lebar keseluruhan barcode dapat dirumuskan sebagai berikut :
Gb3
L = N(3RX+7X) + (6RX+13X) + (3RX+7X) + (M1 + M2)

I

II

III

IV


Gambar 3

Mengenal dan mempelajari Barcode - Halaman 1


dimana :

L : Lebar keseluruhan barcode
N : Jumlah karakter
R : Perbandingan garis vertikal lebar dan sempit
X : Ketebalan garis vertikal sempit
I : Lebar N karakter plus N inter character gap
II : Lebar start dan stop character plus 1 inter character gap antara start character dan character pertama
III : Lebar Check Character plus 1 inter charcater gap
IV : Lebar 2 kali quiet zone (M1 (start margin) + M2 (stop margin)).

Check character adalah sisa dari jumlah seluruh nilai karakter dibagi dengan 43, sebagai contoh :

Message : CODE 39
Karakter : C O D E SPACE 3 9
Nilai karakter : 12 24 13 14 38 3 9
Jumlah : 12+24+13+14+38+3+9=113 113/43 = 2 sisa 27 27 adalah nilai dari karakter R, maka

Message + check character : CODE 39R

Contoh barcode code 39 Gb4

Keterangan :
- Karakter $ / + % mengkodekan karakter ASCII-nya sendiri jika diikuti oleh digit, atau spasi, atau dirinya sendiri ($ / + %), atau salah satu dari tiga spesial karakter yang lain (- . *), atau stop character. ·
- %X , %Y, %Z mengkodekan karakter ASCII DEL.

2.3 Interleaved 2 of 5 (ITF)

ITF barcode hanya dapat mengkodekan angka saja dan sering digunakan pada produk-produk yang memiliki kemasan dengan permukaan yang tidak rata (misalnya corugated box), hal ini disebabkan struktur dan cara pengkodean ITF yang unik.

Setiap karakter pada ITF barcode dikodekan dengan 5 elemen yaitu 2 elemen tebal dan 3 elemen sempit, dimana elemen tebal mewakili digit biner 1 sedangkan elemen tipis mewakili digit biner 0 dengan perbandingan ketebalan antara elemen tebal dengan elemen tipis 2:1 s/d 3:1.

Keunikan dari ITF adalah pengkodean karakternya apakah menggunakan bar ataukah menggunakan spasi tergantung pada posisi sesuai dengan namanya interleaved, atau lebih jelasnya sebagai berikut : Karakter pertama dikodekan menggunakan bar setelah start character, sedangkan karakter kedua dikodekan menggunakan spasi secara interleaved pada karakter pertama, karena