Sabtu, 20 April 2013

Pengertian HTML

HTML (Hyper Text Markup Language) adalah sebuah bahasa markup yang digunakan untuk membuat sebuah halaman web dan menampilkan berbagai informasi di dalam sebuah browser Internet. Bermula dari sebuah bahasa yang sebelumnya banyak digunakan di dunia penerbitan dan percetakan yang disebut dengan SGML (Standard Generalized Markup Language), HTML adalah sebuah standar yang digunakan secara luas untuk menampilkan halaman web. HTML saat ini merupakan standar Internet yang didefinisikan dan dikendalikan penggunaannya oleh World Wide Web Consortium (W3C). 
HTML berupa kode-kode tag yang menginstruksikan browser untuk menghasilkan tampilan sesuai dengan yang diinginkan. Sebuah file yang merupakan file HTML dapat dibuka dengan menggunakan browser web seperti Mozilla Firefox atau Microsoft Internet Explorer. HTML juga dapat dikenali oleh aplikasi pembuka email ataupun dari PDA dan program lain yang memiliki kemampuan browser.
HTML dokumen tersebut mirip dengan dokumen teks biasa, hanya dalam dokumen ini sebuah teks bisa memuat instruksi yang ditandai dengan kode atau lebih dikenal dengan TAG tertentu. Sebagai contoh jika ingin membuat teks ditampilkan menjadi tebal seperti: TAMPIL TEBAL, maka penulisannya dilakukan dengan cara: <b>TAMPIL TEBAL</b>. Tanda <b> digunakan untuk mengaktifkan instruksi cetak tebal, diikuti oleh teks yang ingin ditebalkan, dan diakhiri dengan tanda </b> untuk menonaktifkan cetak tebal tersebut.
Secara garis besar, terdapat 4 jenis elemen dari HTML:

  • structural. tanda yang menentukan level atau tingkatan dari sebuah teks (contoh, <h1>Golf</h1> akan memerintahkan browser untuk menampilkan “Golf” sebagai teks tebal besar yang menunjukkan sebagai Heading 1
  • presentational. tanda yang menentukan tampilan dari sebuah teks tidak peduli dengan level dari teks tersebut (contoh, <b>boldface</b> akan menampilkan bold. Tanda presentational saat ini sudah mulai digantikan oleh CSS dan tidak direkomendasikan untuk mengatur tampilan teks,
  • hypertext. tanda yang menunjukkan pranala ke bagian dari dokumen tersebut atau pranala ke dokumen lain (contoh, <a href="http://www.ilmukita.com/">IlmuKita</a> akan menampilkan IlmuKita sebagai sebuah hyperlink ke URL tertentu),
  • Elemen widget yang membuat objek-objek lain seperti tombol (<button>), list (<li>), dan garis horizontal (<hr>).
Selain markup presentational , markup yang lin tidak menentukan bagaimana tampilan dari sebuah teks. Namun untuk saat ini, penggunaan tag HTML untuk menentukan tampilan telah dianjurkan untuk mulai ditinggalkan dan sebagai gantinya digunakan Cascading Style Sheets.

sejarah windows

Sejarah Windows
Microsoft Windows atau lebih dikenal dengan sebutan Windows adalah keluarga sistem operasi komputer pribadi yang dikembangkan oleh Microsoft yang menggunakan antarmuka dengan pengguna berbasis grafik (graphical user interface).
Sistem operasi Windows telah berevolusi dari MS-DOS, sebuah sistem operasi yang berbasis modus teks dan command-line. Windows versi pertama, Windows Graphic Environment 1.0 pertama kali diperkenalkan pada 10 November 1983, tetapi baru keluar pasar pada bulan November tahun 1985 yang dibuat untuk memenuhi kebutuhan komputer dengan tampilan bergambar. Windows 1.0 merupakan perangkat lunak 16-bit tambahan (bukan merupakan sistem operasi) yang berjalan di atas MS-DOS (dan beberapa varian dari MS-DOS), sehingga ia tidak akan dapat berjalan tanpa adanya sistem operasi DOS. Versi 2.x, versi 3.x juga sama. Beberapa versi terakhir dari Windows (dimulai dari versi 4.0 dan Windows NT 3.1) merupakan sistem operasi mandiri yang tidak lagi bergantung kepada sistem operasi MS-DOS. Microsoft Windows kemudian bisa berkembang dan dapat menguasai penggunaan sistem operasi hingga mencapai 90%.


Dimulai dari DosShell for DOS 6 buatan Microsoft dan inginnya Microsoft bersaing terhadap larisnya penjualan Apple Macintosh yang menggunakan GUI, Microsoft menciptakan Windows 1.0. Nama ini berasal dari kelatahan karyawan Microsoft yang menyebut nama aplikasi tersebut sebagai Program Windows (Jendela Program). Windows versi 2 adalah versi Windows pertama yang bisa diinstal program. Satu-satunya program yang bisa ditambahkan adalah Microsoft Word versi 1. Windows versi 3 menjanjikan aplikasi tambahan yang lebih banyak, kelengkapan penggunaan, kecantikan user interface atau antarmuka dan mudahnya konfigurasi. Windows versi 3.1 adalah versi Windows yang bisa mengoptimalisasi penggunaannya pada prosesor 32-bit Intel 80386 ke atas. Windows versi 3.11 adalah versi Windows terakhir sebelum era Start Menu. Windows 3.11 pun adalah versi Windows pertama yang mendukung networking/jaringan. Versi Hibrida dapat dijalankan tanpa MS-DOS. Versi Hibrida tersebut menginstalasi dirinya sendiri dengan DOS 7. Tidak seperti Windows versi 16-bit yang merupakan shell yang harus diinstalasi melalui DOS terlebih dahulu. Aplikasinya pun berbeda. Meskipun Windows 9X dapat menjalankan aplikasi Windows 16-bit, namun Windows 9X memiliki grade aplikasi sendiri - X86-32, Windows 9X sangat terkenal dengan BSOD (Blue Screen of Death).

Versi-versi Windows
  • 16-bit, berjalan di atas MS-DOS
  • 1985 November - Windows 1.0
  • 1987 9 Desember - Windows 2.0
  • 1990 22 Mei - Windows 3.0
  • 1992 Agustus - Windows 3.1
  • 1992 Oktober - Windows for Workgroups 3.1
  • 1993 November - Windows for Workgroups 3.11
  • Hibrida (16-bit/32-bit), berjalan tanpa MS-DOS (meski tidak sepenuhnya)
  • 1995 24 Agustus - Windows 95 (Versi: 4.00.950)
  • 1998 25 Juni - Windows 98 (Versi: 4.1.1998)
  • 1999 5 Mei - Windows 98 Second Edition (Versi: 4.1.2222)
  • 2000 19 Juni - Windows Millennium Edition (Me) (Versi: 4.9.3000)
  • Berbasis kernel Windows NT
  • 1993 Agustus - Windows NT 3.1
  • 1994 September - Windows NT 3.5
  • 995 Juni - Windows NT 3.51
  • 1996 29 Juli - Windows NT 4.0
  • 2000 17 Februari - Windows 2000 (Versi: NT 5.0.2195)
  • 2002 - Windows XP (Versi: NT 5.1.2600)
  • 2003 - Windows Server 2003 (Versi: NT 5.2.3790)
  • 2006 - Windows Vista (Versi 6.0 Build 6000)
  • 2007 - Windows Home Server (Versi 6.0.1800.24)
  • 2008 - Windows Server 2008 (Versi 6.1)
  • 2009 - Windows 7 (Versi 6.1)

• Pada tahun 1983 Microsoft mengumumkan pembangunan Windows, sebuah sistem operasi graphical user interface (GUI) untuk menggantikan operating system (MS-DOS) yang digunakan pada IBM PC sejak tahun 1981.
• Microsoft membuat sebuah model GUI, yang pertama kali dikenal sebagai Interface Manager, setelah munculnya sistem operasi Apple dengan nama Mac OS. Bill Gates sebagai pendiri Microsoft melihat prototipe Macintosh buatan Steve Jobs pertama kali pada tahun 1981, dan Microsoft bersama dengan Apple membuat beberapa perangkat lunak yang bekerja di bawah Mac seperti Word and Excel.

Windows 1.0
• Versi pertama dari Microsoft Windows adalah versi 1.0, yang dikeluarkan tahun 1985, tetapi kurang populer.
• Windows 1.0 tidak menyediakan sistem operasi yang lengkap tetapi lebih mirip dengan versi MS-DOS yang diperluas dan masih mempunyai banyak kekurangan.


Windows 2.0
• Microsoft Windows versi 2 diciptakan tahun 1987, dan lebih populer dibanding versi sebelumnya, tetapi terus mendapat saingan dari Apple.
• Sistem operasi ini mendukung aplikasi grafis buatan Microsoft, misalnya Excel dan Word for Windows karena aplikasi tersebut tidak dapat dijalankan dari MS-DOS.
• Selain itu sistem operasi windows menjadi sebuah platform untuk menjalankan aplikasi Microsoft Office dan menjadi sebuah sistem operasi GUI yang bersifat umum.

Windows 3.0
• Microsoft Windows menunjukkan kesuksesannya sejak dibuat Windows 3.0, sekitar tahun 1990.
• Dengan menambahkan pelbagai kemampuan untuk menjalankan aplikasi.
• Sistem ini juga mendukung sistem multitask dan penambahan lainnya seperti virtual memory
• Windows 3.0 dapat dijalankan pada mesin bertipe 386 dan kompatibel dengan prosesor buatan INTEL dari tipe 8086/8088 sampai ke 80286 & 80386.
• Microsoft membuat versi Windows 3.1, sebagai revisi dari versi 3.0 dengan berbagai penambahan dan mendukung multimedia

Windows NT
• Selanjutnya Microsoft melanjutkan pembuatan Windows NT oleh Dave Cutler, dan menjadi sebuah sistem operasi yang dapat dihandalkan.
• Sistem operasi ini diperkenalkan pertama kali bulan Juli 1992
• Beberapa fitur dari Windows NT juga dapat digunakan pada jaringan LAN sehingga menjadi populer

Windows NT 4.0
• Microsoft mengeluarkan Windows NT 4.0, sebagai kelanjutan dari Windows 95 yang terlebih dahulu dirilis.
• Windows NT 4.0 mempunyai 4 varian yaitu :
• Windows NT 4.0 Workstation
• Windows NT 4.0 Server
• Windows NT 4.0 Enterprise Server
• Windows NT 4.0 Terminal Server

Windows 98
• Dikeluarkan pada tanggal 25 Juni 1998, sebagai perbaikan dari Windows 95.
• Sistem operasi ini juga terintegrasi dengan Internet Explorer browser yang lebih baik
• Tahun 1999, Microsoft mengeluarkan Windows 98 Second Edition, dengan menambahkan fitur Internet Connection Sharing

Windows 2000
• Microsoft mengeluarkan Windows 2000, yang dikenal sebagai NT 5.0, pada bulan February 2000
• Windows 2000 muncul dengan empat bentuk yaitu :
• Windows 2000 Professional
• Windows 2000 Server
• Windows 2000 Advanced Server
• Windows 2000 Datacenter Server

Windows ME
• Tahun 2000, Microsoft mengenalkan Windows Me (Millennium Edition), yang merupakan perbaikan dari Windows 98
• Dengan tambahan berbagai fitur multimedia, Internet dan utility System Restore

Windows XP
• Tahun 2001, Microsoft mengeluarkan Windows XP. Perpaduan dari Windows NT/2000 dan Windows 3.1/95/98/ME .
• Berbagai jenis varian windows XP antara lain :
• "Windows XP Home Edition", untuk PC dan laptops (notebooks)
• "Windows XP Home Edition N“ (tanpa Windows Media Player )
• "Windows XP Professional Edition", untuk aplikasi bisnis
• "Windows XP Professional Edition N“ (tanpa Windows Media Player )
• Windows XP Media Center Edition (MCE) dengan penambahan fungsi audio, video, and PVR , dikeluarkan bulan November 2002 untuk desktops and notebooks
• Windows XP Media Center Edition 2003
• Windows XP Media Center Edition 2004
• Windows XP Media Center Edition 2005, dikeluarkan tanggal 12 Oktober 2004.
• Windows XP Tablet PC Edition, untuk tablet PCs (notebooks dengan touch screens)
• Windows XP Embedded, untuk menggabungkan beberapa sistem
• "Windows XP Starter Edition" untuk negara berkembang
• Windows XP Professional x64 Edition, dikeluarkan bulan April 25, 2005 yang mendukung utiliti 64-bit processors

Windows Server 2003
• Tanggal 24 April 2003, Microsoft meluncurkan Windows 2003 Server.
• Windows 2003 mempunyai enam bentuk sistem operasi yaitu :
• Small Business Server
• Web Edition
• Standard Edition
• Enterprise Edition (32 and 64-bit)
• Datacenter Edition
• Storage Server

Windows Vista
• Versi lanjutan dari Windows adalah Windows Vista, yang diperkirakan diluncurkan tahun 2006.
• Vista menambahkan fungsi grafis yang mirip dengan sistem operasi pada Apple's Mac OS X
• Versi Server selanjutnya rencananya dikenal dengan nama Vista Server, dan dijadwalkan akan diluncurkan tahun 2007 atau 2009 dengan nama kode Blackcomb.

Pengertian fiber optic

pengertian fiber optic atau serat optik adalah jenis kabel yang bahannya terbuat dari serat kaca dan mempunyai kecepatan tranfer data yang tinggi, kabel fiber optic atau serat optik umumnya digunakan oleh penyedia layanan internet (ISP) untuk terhubung ke backbone NAP (Network Access Provider)
pengertian fiber optic
Supaya lebih jelas mengenai cara kerja serat optik atau fiber optic silahkan perhatikan gambaran umum sistem transmisi fiber optik  berikut ini :
Pada komunikasi fiber optik, sinyal yang digunakan adalah dalam bentuk digital, sedangkan penyaluran sinyal melalui serat optik adalah dalam bentuk pulsa cahaya. Pulsa cahaya diperoleh dari proses memodulasi sinyal informasi dalam bentuk digital kedalam suatu komponen sumber optik. Proses ini terjadi pada arah kirim, sedangkan pada arah terima melalui detektor optik, pulsa cahaya diubah kembali dalam bentuk sinyal digital.
Bila jarak antara stasiun pengirim dengan stasiun penerima berjauhan, sinyal pulsa cahaya yang ditransmisikan akan mengalami proses pelemahan yang disebabkan adanya rugi-rugi yang timbul selama proses pengiriman sesuai dengan panjang dan jenis saluran optik yang digunakan. Untuk mengatasi hal tersebut pulsa cahaya akan diregenerasikan sesuai dengan keadaan pada saat pengiriman. Proses ini terjadi pada stasiun pengulangan.

Kelebihan Fiber Optic

Jika dibandingkan dengan kabel jenis bahan lainnya, fiber optic memiliki kelebihan, antara lain sebagai berikut :
1. Lebar jalur besar dan kemampuan dalam membawa banyak data, dapat memuat kapasitas informasi yang sangat besar dengan kecepatan transmisi mencapai gigabit-per detik dan menghantarkan informasi jarak jauh tanpa pengulangan
2. Biaya pemasangan dan pengoperasian yang rendah serta tingkat keamanan yang lebih tinggi
3. Ukuran kecil dan ringan, sehingga hemat pemakaian ruang
4. Imun, kekebalan terhadap gangguan elektromagnetik dan gangguan gelombang radio
5. Non-Penghantar, tidak ada tenaga listrik dan percikan api
6. Tidak berkarat
Itulah penjelasan mengenai pengertian fiber optic beserta beberapa kelebihannya, semoga dapat menambah ilmu pengetahuan kamu.

Apa sih Kriptografi itu ?

Apa sih Kriptografi itu ?

Posted by hadiwibowo pada Agustus 6, 2006
Maraknya pemberitaan tentang penyadapan ikut mempopulerkan kriptografi kepada masyarakat Indonesia. Walaupun kriptografi bukanlah hal baru, tetapi untuk masyarakat Indonesia kriptografi masih jarang sekali dibicarakan secara umum.
Kriptografi di Indonesia disebut persandian yaitu secara singkat dapat berarti seni melindungi data dan informasi dari pihak-pihak yang tidak dikehendaki baik saat ditransmisikan maupun saat disimpan. Di Indonesia instansi pemerintah yang secara resmi menangani kriptografi nasional adalah Lembaga Sandi Negara.
Sedangkan ilmu persandiannya disebut kriptologi yaitu ilmu yang mempelajari tentang bagaimana tehnik melindungi data dan informasi tersebut beserta seluruh ikutannya. Ilmu ini di Indonesia dapat dipelajari di Sekolah Tinggi Sandi Negara (STSN) yang merupakan satu-satunya perguruan tinggi kriptografi di Indonesia.
Aplikasi kriptologi pada kehidupan sehari-hari
Mungkin tidak disadari bahwa saat ini benda-benda teknologi dalam kehidupan sehari-hari sudah menggunakan kriptografi. Telepon seluler, kartu ATM, kartu kredit, internet, LAN, mesin absensi atau GPS dan masih banyak lagi telah ditempeli kriptografi dengan intensitas yang berbeda. Dalam mengoperasikan kriptografi jenis ini, pengguna (end-user) tidak memerlukan pengetahuan khusus tentang kriptografi, karena aplikasi kriptografinya sudah langsung dapat dipakai (tanpa terasa).
Dalam kondisi khusus, penerapan kriptografi membutuhkan operator kripto, seperti penyampaian berita rahasia dari satu tempat ke tempat lain (kurir), penyimpanan data dan informasi rahasia ke dalam database atau pengoperasian mesin-mesin khusus kripto. Operator kripto ini diperlukan karena untuk mengelola kegiatan-kegiatan khusus tersebut membutuhkan manajemen kripto dan orang-orang terpercaya yang telah mempunyai sertifikat kripto.
Aplikasi kriptografi ini dipakai sebagai pengamanan informasi yaitu untuk :
1. menjaga kerahasiaan/privacy/confidentiality informasi terhadap akses pihak-pihak yang tidak memiliki kewenangan terhadap informasi tersebut.
2. menjaga keutuhan informasi (integrity) sehingga informasi yang ditransmisikan tidak mengalami perubahan baik oleh pihak yang tidak berhak ataupun sesuatu hal lain (misalnya transmisi yang buruk).
3. memastikan identitas (otentikasi) baik orang, mesin, program ataupun kartu bahwa memang pihak yang benar-benar berhak/asli/yang dimaksud. Otentikasi dapat juga digunakan untuk menyamarkan identitas (anonimity) terhadap yang tidak berhak.
4. mencegah penyangkalan (non-repudiation) bahwa data tersebut memang benar adalah data yang dikirimkan oleh pihak pengirim. -antz-

Pengertian Kriptografi

Pengertian Kriptografi - Secara etimologi (ilmu asal usul kata), kata kriptografi berasal dari gabungan dua kata dalam bahasa Yunani yaitu “kriptos” dan “graphia”. Kata kriptos digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata graphia berarti tulisan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya.


Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

Dalam arti lain, cryptography adalah seni dan ilmu dalam mengamankan pesan. Dalam dunia kriptografi, pesan disebut plaintext atau cleartext. Proses untuk menyamarkan pesan dengan cara sedemikian rupa untuk menyembunyikan isi aslinya disebut enkripsi. Pesan yang telah dienkripsi disebut ciphertext. Proses pengembalian sebuah ciphertext ke plaintext disebut dekripsi.
Pengertian Kriptografi
Gambar Konsep Dasar dari Enkripsi dan Dekripsi
Cryptographer adalah orang yang mempraktekkan ilmu kriptografi, sedangkan cryptoanalysts adalah orang yang mempraktekkan kriptanalisis, seni dan ilmu dalam memecahkan ciphertext.
Aturan fundamental kriptografi yaitu seseorang harus mengasumsikan bahwa seorang kriptoanalis menguasai algoritma umum enkripsi yang digunakan. Dengan kata lain, kriptanalis mengetahui cara kerja algoritma enkripsi. Jumlah usaha yang diperlukan untuk menemukan, menguji, dan memasang algoritma baru yang selalu berkompromi atau berfikir untuk berkompromi dengan algoritma lama, akan menyebabkan algoritma baru itu menjadi tidak berguna untuk menjaga kerahasiaan. Sistem kriptografi atau Algoritma Kriptografi adalah sebuah algoritma kriptografi ditambah semua kemungkinan plaintext, ciphertext dan kunci.
Daftar Pustaka - Pengertian Kriptografi Definisi Kriptografi
Kurniawan J., Ir. , M.T., Kriptografi, Keamanan Internet dan Jaringan Komunikasi, Penerbit Informatika Bandung, April 2004.

Schneier B., Applied Crytography, Second Edition, John Wiley & Sons, Inc., 1996.

Dasar-Dasar Kriptografi dan Implementasinya Dengan Borland Delphi 7 – Dasar-Dasar Cryptography dan Implementasinya

Dokumen ini dibuat dengan tujuan untuk memasyarakatkan kriptografi dan meng-kriptografikan masyarakat. Karena, masih banyak kawan-kawan yang menganggap kriptografi sebagai ilmu yang sangat tinggi dan sulit dipelajari, bahkan ada yang mengkategorikan ilmu ini sebagai ilmu gaib. Saya tidak akan bilang bahwa ilmu ini mudah, dan dapat dipelajari hanya dalam waktu semalam. Tidak kawan, semua ilmu yang bagus butuh proses.
Dokumen ini tidak dibuat untuk menjadi referensi utama untuk kriptografi. Karena, kriptografi terlalu luas untuk dibukukan dalam satu buku setebal novel Lord of The Ring, apalagi dalam satu dokumen facebook seperti ini!  Lebih tepat jika dokumen ini dijadikan sebagai “penunjuk jalan” ke dunia kriptografi yang menarik dan menyenangkan dengan kemungkinan eksploitasi tanpa batas. Untuk kawan-kawan yang sudah lebih tinggi ilmu dan pengalamannya di bidang ini, dengan segala kerendahan hati, saya mohon izin dan maklum atas kesalahan yang mungkin ada di dokumen ini.
Tujuan awal dari kriptografi adalah menyembunyikan isi pesan sehingga tidak dapat terbaca oleh pihak-pihak yang tak diinginkan, tetapi masih dapat dimengerti oleh pihak yang dituju. Seiring perkembangan jaman, kriptografi banyak diterapkan di berbagai bidang, mulai dari tukar menukar informasi di perang dunia kedua, hingga dunia komputerisasi yang kita alami saat ini.
Dokumen ini, tentu saja, tidak akan membahas bagaimana pasukan Nazi mengoperasikan “Enigma”, sehingga membingungkan pihak sekutu. Dokumen ini “hanya” akan membahas kriptografi dan implementasinya di bidang IT. Implementasi yang akan ditunjukkan juga hanya implementasi dasar dan bersifat “offline”, bukan implementasi canggih seperti “email transaction”, “pay pal autorization”, “handshake cryptographic”, dll. Tapi, percayalah kawan, semua implementasi canggih itu, berdasar dari implementasi dasar ini.
Dalam dokumen ini akan dipakai istilah yang umum dipakai dalam dokumen-dokumen kriptografi. Contohnya adalah “plain text”, yaitu pesan asli yang hendak disampaikan. “Cipher text“, yang artinya pesan yang telah di-enskripsi. Dan istilah-istilah lainnya yang mungkin membingungkan, maaf bila itu terjadi.
Sesuai judulnya, dokumen ini menggunakan Borland Delphi 7 sebagai compiler kode-kode yang digunakan. Kenapa? Yap, karena saya memang paling nyaman menggunakan Delphi dengan versi tersebut untuk hal-hal yang berbau kriptografi. Anda bisa memilih menggunakan compiler lain yang paling anda sukai. Untuk library yang dijadikan referensi kriptografi, saya selalu mempercayakan kepada bang Barton, di situs : http://www.cityinthesky.co.uk/opensource/dcpcrypt.
Selain open source, alasan saya menggunakan library tersebut adalah kelengkapan dari metode kriptografi yang digunakan. Namun lagi-lagi, ini tidak mengikat. Anda bebas menggunakan library manapun yang paling cocok dengan anda, atau bila anda sudah cukup memahami alur dari algoritma suatu metoda, anda bisa menulis library sendiri.
File-file implementasi yang disertakan dalam dokumen ini merupakan source yang siap di-compile. Bagi kawan-kawan yang memiliki Borland Delphi 7 terinstall di komputernya, bisa langsung meng-klik file dengan ekstensi “dpr”. Bagi yang tidak menginstall compiler tersebut, untuk mengetahui isi kode program, bisa membuka file dengan ekstensi “pas” dengan notepad atau text editor lainnya. File “exe” juga disertakan untuk melihat implementasinya secara langsung.
Dari output yang dihasilkan, kriptografi dapat dibagi menjadi dua, yaitu kriptografi “satu-arah” dan “dua arah”. Dan dalam kriptografi “dua-arah” pun, bila dilihat dari jenis “key” yang digunakan, dapat dibagi menjadi dua, yaitu “symetric key” dan “asymetric key”. Begitulah kira-kira kerangka dari dokumen ini. Walaupun terbagi-bagi seperti itu, tidak menutup kemungkinan semua jenis kriptografi tersebut di implementasikan bersama-sama, atau yang lebih dikenal dengan metode “hybrid”. Pada akhir dokumen, akan diperlihatkan implementasi dari metode hybrid ini.
Dalam implementasinya di dunia IT, plain text yang diinput ke dalam kriptografi, bentuknya bisa bermacam-macam. Bisa file exe, dokumen, gambar, musik, dan semua file digital lainnya. Tergantung dari sang pengguna yang meng-implementasikannya. Inilah mengapa kemungkinan dalam kriptografi menjadi tak terbatas dan sangat menarik! 
////////////////////////////////////
Kriptografi Satu Arah
////////////////////////////////////
Sesuai namanya, kriptografi ini hanya bisa berjalan satu arah. Atau dengan kata lain, hanya bisa merubah plain text menjadi cipher text, tapi tidak bisa mengembalikan cipher text menjadi plain text. Kriptografi jenis ini sering disebut sebagai “hash”. Ciri khusus hash ini adalah, chiper text yang dihasilkan berbeda-beda (unik) untuk setiap plain text yang di input. Karena ciri khusus ini, hash sering kali dimanfaatkan sebagai “sidik jari” suatu file atau dokumen.
Metode hash yang umum digunakan adalah MD5, SHA1, RipeMD128. Sebenarnya masih banyak metode lainnya, tapi dalam implementasi yang akan disajikan, metode hash yang digunakan adalah ketiga metode tersebut. Implementasi bisa di download di :
http://www.mediafire.com/?4yz9vj0v8sbydf3

Dengan mengeksekusi file “exe” dari implementasi tersebut, dapat kita lihat bahwa tools ini mampu menghitung hash dari plain text dengan jenis text maupun file. Tapi, jangan coba-coba menghitung hash dari file yang berukuran >= 10 MB dengan tools ini, kecuali jika prosessor anda cukup mumpuni. Karena memang, implementasi ini dirancang dengan tidak memperhatikan optimasi pembacaan file. Silahkan anda optimasi sesuka anda. 
Dalam implementasi tersebut, kode utama terletak pada file “Unit1.pas”. File “DCPmd5.pas”, “DCPsha1.pas”, dan “DCPripemd128.pas” merupakan library dari metode yang bersangkutan yang disediakan oleh DCPCrypt. Sedangkan, file “DCPcrypt2.pas”, “DCPconst.pas”, “DCPblockciphers.pas”, dan “DCPbase64.pas” merupakan file yang “diwajibkan” oleh
DCPCrypt untuk ditaruh di folder yang sama dengan kode utama. Atau bila anda sudah menginstall Borland Delphi 7, anda bisa melihat itu semua dengan membuka file “Project1.dpr”. File yang lain bisa diabaikan, karena merupakan hasil “generate” dari compiler.
Oke, kita coba bedah “source code” dari tool ini untuk memperjelas implementasi kriptografi satu arah atau “hash” ini. Mari kita lihat pada kode utama di baris 42 sampai baris 100. Di situ dapat kita lihat tiga fungsi untuk menghitung masing-masing metode hash. Fungsi-fungsi ini dibuat sendiri oleh saya dengan berpedoman pada petunjuk pemakaian yang dianjurkan oleh DCPCrypt, yang artinya fungsi ini tidak “baku”, dan ya, anda bisa membuat versi yang berbeda sesuai dengan kebutuhan dari implementasi yang anda inginkan.
Dari ketiga fungsi tersebut, dapat kita lihat bahwa fungsi tersebut membutuhkan 1 parameter yang memiliki tipe String, dan akan mengembalikan String juga. Hal ini saya lakukan dengan pertimbangan untuk mempertahankan format awal kriptografi, dari Plain Text berbentuk string menjadi Cipher Text berbentuk string juga. Tapi sekali lagi, ini tidak baku, anda bisa mengganti parameter input menjadi tipe array dari byte misalnya, untuk membaca stream.
Lalu di baris 122 sampai baris 171 pada kode utama, dapat kita lihat proses perhitungan hash dilakukan pada saat user meng-klik tombol “Hash It”. Dapat kita lihat, jika user memilih untuk menggunakan mode “Text”, maka kodenya cukup simpel, hanya meng-assign variable “strPlain” dengan apa yang di-input oleh user. Yang sedikit “tricky” adalah jika user memilih mode “File”, atau menghitung hash dari File yang dipilih. Berbagai macam pendekatan bisa dilakukan di sini. Mengingat ketiga fungsi untuk menghitung hash tadi membutuhkan Plain Text dengan bentuk string, maka pendekatan yang saya pilih adalah merubah semua “isi” file ke dalam bentuk string, lalu meng-assign string tersebut ke dalam strPlain. Setelah variable strPlain siap, kita masukkan variable tersebut sebagai parameter di fungsi untuk menghitung hash dengan metode yang dipilih user.
Demikianlah salah satu contoh implementasi kriptografi satu arah. Implementasi ini bisa dimanfaatkan untuk mengecek ke-aslian suatu file, karena bila suatu file sudah di modifikasi, maka nilai hash akan berubah. Bila anda tertarik untuk melihat detail dari algoritma dari setiap metode, anda bisa melihatnya pada file “pas” yang bersangkutan. Atau saran saya, coba debug program tersebut, agar anda dapat “merasakan” bagaimana algoritmanya mengalir.
////////////////////////////////////
Kriptografi Dua Arah
////////////////////////////////////
Kriptografi jenis ini mungkin sering direferensikan sebagai kriptografi yang “sesungguhnya”, karena memiliki metode “encrypt” untuk merubah plain text menjadi cipher text, dan metode “decrypt” untuk mengembalikan cipher text menjadi plain text. Dalam kriptografi jenis ini, selain plain text dan cipher text, dibutuhkan parameter lainnya yang disebut “key”. Saat ini dikenal dua jenis key yang digunakan, yaitu “Symmetric Key” dan “Assymetric Key”.
Yang perlu diingat dalam proses kriptografi dua arah ini adalah, proses encrypt dan decrypt harus memiliki operasi yang saling bertolak belakang. Misal, pada proses encrypt kita menggunakan operator “+” (tambah), maka pada proses decrypt kita harus menggunakan operator “-“ (kurang). Karena itu, dalam implementasi kriptografinya proses encrypt dan decrypt dibuat menjadi dua implementasi yang berbeda, namun saling melengkapi. Untuk proses decrypt, implementasi akan meniru proses verifikasi serial sebuah software, sedangkan untuk proses encrypt, implementasi akan bertindak sebagai “keygen”-nya.
————————
Symmetric Key
————————
Yang dimaksud dengan symmetric key atau key yang simetris adalah, parameter key yang digunakan dalam proses encrypt dan decrypt, sama. Panjang dari parameter key ini pun bervariasi tergantung dari metoda yang digunakan. Dalam implementasi yang akan diberikan, metoda yang digunakan adalah RC4 dan Blowfish, dengan panjang key 128 bit atau 16 byte.
Dengan alasan tertentu, implementasi akan diberikan dan dibahas dimulai dari proses decrypt terlebih dahulu. Implementasi decrypt dapat di download pada:
http://www.mediafire.com/?iefq1v1pzvqbt9l

Sekali lagi, implementasi ini meniru verifikasi serial sebuah software, tetapi tentu saja, dibuat se-sederhana mungkin, agar proses kriptografinya lebih menonjol. Jadi, implementasi ini bersifat sebagai “penerima” pesan, kemudian mencoba men-decrypt pesan tersebut dan mem-verikasikan apakah pesan tersebut berasal dari “pengirim” pesan yang sah atau tidak.
File-file yang terdapat dalam implementasi ini, tidak jauh berbeda dengan yang berada pada implementasi kriptografi satu arah, hanya library metoda yang bersangkutan yang berubah. Kode utama, lagi-lagi terletak di “Unit1.pas”. Mari kita buka kode tersebut untuk mulai membedah implementasi ini.
Baris 33 sampai dengan 87, menunjukkan dua fungsi untuk men-decrypt dengan masing-masing metoda. Proses decrypt kedua metoda dibuat seragam dengan tujuan menghindari kebingungan, dan yang pasti bukan bentuk baku. Yang berbeda tentu saja algorithma inti masing-masing metoda yang terdapat di file *.pas masing-masing. Dikarenakan penyeragaman ini, pembahasan satu metoda bisa mewakili metoda yang satunya.
Pada baris 35 dapat kita lihat, inisialisasi konstanta key yang disiapkan untuk proses decrypt. Key dibuat dengan format array dari byte dengan lebar 16. Atau, dengan kata lain, key memiliki panjang 16 byte, atau 128 (16*8) bit. Yang perlu dicatat adalah, bahwa dalam Delphi, notasi “$” menunjukkan bahwa angka yang ditulis dalam bentuk hexadecimal. Jadi, pendeklarasian array tersebut bisa saja ditulis seperti ini :
key : array[0..15] of byte = (71,114,105,110,100,83,116,111,110,101,73,115,71,111,111,100);
Pendeklarasian array diatas menggunakan notasi desimal, dengan nilai yang sama. Lalu, mengapa dalam implementasi ditulis dengan notasi hexadecimal? I just love hex, nothing more.
Oke, mari kita lihat di baris 39 dan 40. Di situ dideklarasikan dua variable array untuk menampung input dan output dari proses decrypt ini. Karena yang dilakukan saat ini adalah proses decrypt, maka input adalah Cipher Text yang ditampung pada variable arrCipher, sedangkan output adalah Plain Text yang ditampung pada variable arrPlain. Kedua variable tersebut dibuat dengan panjang yang sama yaitu 8 byte. Hal ini perlu dicatat, karena akan berpengaruh pada penggunaan fungsi ini, kita akan sampai ke sana nanti.
Fungsi decrypt ini menerima parameter dalam bentuk String sebagai input, seperti yang terlihat pada baris 33, sedangkan variable yang di-input ke proses decrypt inti berbentuk array dari byte, seperti yang terlihat pada baris 51. Maka, baris 44 sampai 48, bertugas untuk meng-convert variable String menjadi array of byte. Ada banyak metode yang bisa digunakan untuk tugas ini, seperti misalnya mengambil nilai ASCII dari masing-masing karakter di dalam string, lalu menyimpannya ke dalam array of byte. Tetapi, dalam implementasi ini, metode yang akan digunakan adalah, mengambil setiap 2 (dua) karakter dari string, lalu ditambahkan notasi “$” di depannya untuk kemudian di rubah kedalam bentuk byte (integer) dan disimpan ke dalam array. Dan hal ini dilakukan dengan loop sebanyak 8 (0-7)putaran, karena panjang variable penampung yang ada (arrCipher) adalah 8. Karena itu, panjang String yang valid untuk di-input ke dalam fungsi ini adalah 16 (8*2) karakter, dan karakter yang ada haruslah karakter bilangan hexadecimal, yaitu 1-9 dan A-F. Mari kita ambil contoh untuk memperjelas :
Misalkan, string yang di-input adalah :
“1234567890ABCDEF”
Maka array of byte yang terbentuk adalah :
($12, $34, $56, $78, $90, $AB, $CD, $EF)
atau dalam bentuk desimal adalah :
(18, 52, 86, 120, 144, 171, 205, 239)
Semoga contoh di atas cukup jelas untuk menggambarkan “aliran” algo konversi tersebut.
Baris 49 sampai 52 merupakan kode untuk melakukan proses inti decrypt yang diwajibkan oleh library DCPCrypt ini. Dan hasil dari proses decrypt inti ini ditampung di variable arrPlain yang berbentuk array of byte. Baris 53 mempersiapkan (mengosongkan) variable strResult yang akan menampung hasil dari fungsi decrpyt ini. Jika pada input tadi kita meng-convert dari variable String ke array of byte, sekarang untuk output kita lakukan kebalikannya, merubah variable array of byte ke String. Dan itulah yang dilakukan pada baris 54 sampai 57.
Metode yang digunakan sekarang adalah mengambil setiap byte dari array, lalu men-subtitusikannya dengan karakter yang memiliki nilai ASCII yang bersangkutan, untuk kemudian ditambahkan di variable strResult. Metode ini lebih simpel dari metode sebelumnya, tetapi mari kita ambil contoh untuk lebih memperjelas :
Misalkan, dalam variable arrPlain adalah :
(71, 119, 84, 97, 109, 112, 97, 110)
maka dalam variable strResult akan terbentuk :
“GwTampan”
Semoga contoh di atas bisa memperjelas apa yang sebenarnya sudah cukup jelas. ;D
Demikianlah penjelasan tentang fungsi yang digunakan untuk melakukan decrypt. Fungsi tersebut perlu dipahami sepenuhnya jika kita ingin membuat proses encrypt yang diperlukan untuk membuat keygen dari “software” verifikasi ini. Kita akan bahas hal tersebut dalam implementasi berikutnya. Untuk saat ini, mari kita masuk pada fungsi inti dari program ini, yang dieksekusi pada saat user menekan tombol “Check”.
Fungsi tersebut, tentu saja, terletak pada baris 89 sampai 144. Terlihat banyak percabangan “if” di sana, yang mungkin membingungkan sebagian orang. Bila itu yang terjadi, dengan segala kerendahan hati, saya mohon maaf atas buruknya cara pemogramman saya. Tapi saya rasa, percabangan-percabangan ini tidak perlu dibahas semua, karena hanya untuk mengecek kesalahan-kesalahan dasar input dari user. Yang patut dibahas adalah percabangan pada baris 113. Disitu terlihat bahwa jika “Nama” yang diinput user lebih dari 8 karakter, maka yang diambil hanyalah 8 karakter pertama saja. Dan jika “Nama” yang diinput kurang dari 8 karakter, maka variable tersebut digandakan terus-menerus sampai lebih dari 8, untuk kemudian diambil 8 karakter pertamanya. Lagi-lagi, contoh untuk memperjelas :
Misalkan, nama yang diinput adalah :
“CryptographyIsSuperFun”
maka, yang diambil hanyalah :
“Cryptogr”
Dan, jika nama yang diinput adalah :
“FUN”
maka, hasilnya akan menjadi :
“FUNFUNFU”
Dengan ini, kita “memaksa” variable strName untuk tetap memiliki panjang 8 karakter, tidak peduli berapa karakter yang diinput oleh user. Kenapa? Sebelum dijawab, saya harap anda masih ingat karakteristik dari fungsi decrypt di atas tadi, input yang valid haruslah string dengan 16 karakter (ini menjelaskan percabangan pada baris 107), dan ouput yang dihasilkan adalah string dengan 8 karakter. Dan pada baris 133, terdapat “final check” yang membandingkan variable strName dengan strPlain yang merupakan hasil Decrypt dari Serial yang diinput. Otomatis, strPlain akan selalu memiliki panjang 8 karakter, karena itulah kita perlu “memaksa” strName untuk tetap memiliki panjang 8 karakter.
Sebenarnya ada sedikit “bug” yang cukup mengganggu pada implementasi ini. Yaitu, bila kita memasukkan serial dengan panjang 16 karakter, tapi karakter yang diinput bukanlah karakter hexadecimal, maka akan muncul pesan error yang kurang bagus. :D Tapi tentu saja, hal tersebut bisa diatasi dengan menambahkan percabangan yang mengecek apakah serial yang diinput merupakan karakter hexadecimal atau bukan. Anda bisa menambahkannya bila anda mau! :D :)
Yap, demikianlah salah satu contoh implementasi proses decrypt yang meniru proses verifikasi serial sebuah software. Untuk melengkapinya, yang tersisa adalah proses encrypt yang akan diterapkan pada keygen untuk verifikasi ini.
Oke, implementasi untuk proses encrypt bisa di download pada :
http://www.mediafire.com/?coc0u4o61wc6jb2

Dalam implementasi ini, jika kita mengeksekusi file “exe”, maka kita bisa meng-generate serial yang valid untuk implementasi verifikasi sebelumnya. Karena memang, implementasi ini bertindak sebagai keygen atau dengan kata lain sebagai “pengirim” pesan. Sedangkan implementasi sebelumnya bertindak sebagai “penerima” pesan.
File-file yang ada dalam implementasi ini sama dengan yang ada di implementasi verifikasi, hanya file “exe” dan “Unit1.pas” yang berbeda, karena implementasi ini menggunakan library dari metoda yang sama dengan implementasi verifikasi. Mari kita buka kode utama implementasi ini di dalam “Unit1.pas” untuk memulai pembedahan kode yang mengasyikan ini.
Yang patut diingat sebelum melakukan pembedahan adalah, bahwa proses pembuatan implementasi keygen ini saling bergantung dengan kode pada implementasi verifikasi. Dan, kita harus melihat bahwa kode keygen ini saling bertolak belakang dengan verifikasi. Yang artinya, jika verifikasi melakukan “buka”, maka keygen melakukan “tutup”, jika verifikasi melakukan “tambah”, maka keygen melakukan “kurang”, dst.
Oke, kita mulai pembedahannya. Kita bisa lihat pada baris 33 sampai 83, terdapat dua fungsi encrypt yang, tentu saja, dibuat seragam, seperti halnya pada implementasi verifikasi. Dan ya, seperti sebelumnya, pembahasan satu metoda bisa mewakili metoda yang satunya. Baris 35 menunjukkan konstanta key yang memang harus sama nilainya dengan proses decrypt, agar kedua proses tersebut saling berhubungan.
Karena proses encrypt ini bertolak belakang dengan proses decrypt, maka kita akan melakukan pembahasan secara terbalik dari bawah ke atas, sambil me-review kode verifikasi. Jadi ada baiknya, jika kita buka kode verifikasi (decrypt) dan keygen (encrypt) secara bersamaan, kecuali jika anda memang sudah hafal dan paham kode verifikasi secara keseluruhan.
Pada baris 44 sampai 48 di kode verifikasi, seperti yang telah dibahas, bahwa fungsi decrypt mengambil setiap dua karakter dari string yang di-input atau cipher text untuk kemudian merubahnya menjadi nilai hex dan menyimpannya ke dalam array of byte. Maka, agar fungsi encrypt kita menghasilkan cipher text yang valid untuk proses tersebut, kita harus melakukan fungsi sebaliknya, ya, merubah array of byte menjadi string dengan format hex. Baris 51 sampai 55 melakukan hal tersebut. Fungsi built-in Delphi “IntToHex” menghasilkan representasi hex dari integer (atau byte) yang diinput. Untuk contoh, silahkan review contoh di atas pada proses verifikasi, tetapi baca dari bawah ke atas.
Kemudian pada baris 49 sampai 52 di kode verifikasi, fungsi decrypt melakukan fungsi inti decrypt sesuai dengan metoda yang dipakai terhadap array of byte hasil konversi dari string yang di-input tadi(cipher text). Maka pada baris 47 sampai 50 di kode keygen, fungsi encrypt harus melakukan fungsi inti encrypt sesuai dengan metoda yang dipakai terhadap array of byte yang nantinya akan di konversi menjadi string output(cipher text), seperti yang telah dibahas pada paragraf sebelumnya.
Lalu pada baris 54 sampai 57 di kode verifikasi, fungsi decrypt mengkonversi lagi array of byte yang telah di “decrypt” ke dalam bentuk string, tetapi kali ini dengan cara subtitusi nilai byte dengan nilai ASCII yang bersangkutan, atau dengan kata lain melakukan konversi byte to ASCII. Maka, fungsi encrpyt kita harus melakukan kebalikannya, yap, konversi ASCII to byte. Baris 43 sampai 46 pada kode keygen menunjukkan hal tersebut, dan ya, fungsi built-in Delphi “Ord” menolong kita untuk melakukan hal tersebut. Dan lagi-lagi, untuk contoh, silahkan lihat contoh “GwTampan” di atas dari bawah ke atas.
Begitulah isi dari fungsi encrypt yang merupakan kebalikan dari fungsi decrypt. Anda bisa menutup kode verifikasi sekarang, jika anda mau. Berikutnya, mari kita bahas penggunaan dari fungsi encrypt ini, pada saat user menekan tombol “G 3 N” yang terletak pada baris 85 sampai 119.
Tidak banyak yang dilakukan dalam kode ini. Baris 97 sampai 108 melakukan hal yang sama dengan yang ada pada kode verifikasi, yaitu memaksa plain text agar tetap memiliki panjang 8 karakter, seperti yang telah dibahas sebelumnya. Dan, jika anda belum menyadarinya, untuk nama “CryptographyIsFun” dan “CryptographyIsSuck” akan menghasilkan serial yang sama, dikarenakan unsur pemaksaan ini. Lalu pada baris 109 sampai 117, kode melakukan encrypt kepada nama (plain text) yang diinput menjadi cipher text yang kemudian di-output menjadi serial.
Demikianlah keseluruhan proses implementasi dari kriptografi dengan key simetris ini. Dan oke, untuk lebih memperjelas lagi, mari kita rangkum keseluruhan proses dengan arah yang “lurus” atau dari encrypt sampai decrypt. Kali ini sang keygen akan kita sebut pengirim, dan sang verifikator akan kita sebut penerima.
Pertama, pengirim men-encrypt nama yang di-input untuk kemudian di-output menjadi serial. Lalu, pengirim mengirimkan pasangan nama dan serial ini kepada penerima. Kemudian, penerima mengecek pasangan nama dan serial yang dikirimkan dengan cara, men-decrypt serial untuk kemudian dibandingkan dengan nama. Jika cocok, maka pasangan nama dan serial tersebut valid dan memang berasal dari pengirim yang sejati, jika tidak cocok, maka pengirim tersebut palsu.
Yap, seperti itulah salah satu contoh implementasi kriptografi dua arah dengan key simetris. Mohon maaf bila penjelasannya terkesan berbelit-belit dan membingungkan, tetapi saya telah mencoba yang terbaik untuk menjelaskan hal yang memang sangat teknis ini. Dan ya, coba “rasakan” bagaimana kode ini mengalir, agar lebih mudah memahaminya.

Kamis, 11 April 2013

PEMOGRAMAN C++


PEMROGRAMAN C++
C sebagai bahasa pendahulunya C++
 C merupakan termasuk bahasa pemrograman tingkat menengah.
Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie
pada tahun 1972.
C merupakan bahasa pemrograman terstruktur yang membagi program ke dalam sejumlah blok (sub program).
Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program.
Program yang ditulis dengan C mudah sekali dipindahkan dari satu jenis mesin ke mesin lain. Hal ini karena adanya standarisasi C yaitu ANSI (American National Standards Institute) yang menjadi acuan para pembuat compiler C.
C++ diciptakan satu dekade setelah C. C++ diciptakan oleh Bjarne Stroustroup dari Laboratorium Bell, AT&T pada tahun 1983. Pada awalnya C++ diberi nama “A better C”. Nama C++ sendiri diberinama oleh Rick Mascitti. Adapun tanda ++ berasal dari operator increment pada bahasa C.

Keistimewaan C++
adalah karena bahasa ini mendukung OOP (Object Oriented Programming).
 Tujuan utama pembuatan C++ adalah untuk meningkatkan produktivitas pemrogram dalam membuat aplikasi.
 Kebanyakan pakar setuju bahwa OOP dan C++ mampu mengurangi kompleksitas terutama program yang terdiri dari 10.000 baris lebih,
bahkan dapat meningkatkan produktivitas 2x lipat dari C, Pascal dan Basic.
Object Oriented Programming (OOP)
Ide dasar OOP adalah mengkombinasikan data dan fungsi untuk mengakses data
menjadi sebuah kesatuan unit. Unit ini dikenal dengan obyek. Sebagai gambaran
untuk mempurmudah memahaminya, obyek sebenarnya dapat mencerminkan
pola kerja manusia sehari-hari. Sebuah obyek dapat diibaratkan sebagai
departemen di dalam sebuah perusahaan bisnis, misalnya departemen
-    penjualan
-    akunting
-          Personalia
Pembagian departemen dalam perusahaan merupakan upaya untuk memudahkan
pengoperasian perusahaan. Sebagai gambaran, jika Anda seorang manajer
penjualan di kantor pusat ingin mengetahui data para salesmen di kantor cabang,
apa yang Anda lakukan? Langkah yang Anda tempuh pasti bukan datang ke
kantor cabang dan mencari data-data tersebut. Untuk memudahkan tugas Anda
cukup Anda menyuruh sekretaris untuk meminta informasi. Masalah bagaimana
dan siapa yang mencarikan bukanlah urusan Anda. Analogi dengan hal itu, kalau
seseorang bermaksud menggunakan obyek, ia cukup mengirim pesan ke obyek
dan obyek itu sendiri yang akan menanganinya.
Program C++
Program C++ dapat dibuat menggunakan sebarang editor teks maupun editor sekaligus compilernya.
Program utama berekstensi (.CPP).
 Pada saat kompilasi program utama bersama dengan file header (.h) akan diterjemahkan oleh
compiler menjadi file obyek (.OBJ).
 Selanjutnya file obyek ini bersama-sama
dengan file obyek lain dan file library (.LIB) dikaitkan menjadi satu oleh linker.
Hasilnya adalah file (.EXE) executable.
Compiler C++
Compiler C++ yang telah beredar di pasaran antara lain Microsoft C/C++ dan
Visual C++. Keduanya dari Microsoft.
Sementara Borland international juga
mengeluarkan Turbo C++ dan Borland C++.
PENGENALAN PROGRAM C++
A. Hello World
Berikut ini contoh program C++ yang sederhana
#include <iostream.h>
void main()
{
cout << “Hello world.\n”;
}
Setelah dicompile dan dirun, hasilnya adalah muncul pada layar Hello World.
B. Fungsi main()
Program C++ memang tidak akan pernah lepas dari suatu fungsi/function. Hal ini karena merupakan ciri OOP.
Sebuah program C++ minimal memiliki satu fungsi yaitu main(). Fungsi ini merupakan awal program utama.
Tulisan main() merupakan nama fungsi, sedangkan bagian yang diapit dengan { dan } disebut blok (tubuh fungsi).
 Dalam hal ini { merupakan tanda awal blok dan } adalah tanda akhir blok.
Seperti halnya dalam Pascal, { dalam Pascal identik dengan
BEGIN, sedangkan } identik dengan END.
Perintah void bermakna bahwa fungsi main() tidak mengembalikan nilai/value.
C. Statement
Perintah cout << “Hello world.\n”; merupakan salah satu contoh
statement. Perintah tersebut digunakan untuk mencetak tulisan pada layar.
Setiap statement harus diakhiri dengan ;
Hal yang menjadi catatan penting di sini bahwa program C++ bersifat
Case Sensitive, artinya huruf besar dan kecil dianggap beda.
Tanda \n digunakan untuk pindah baris.
D. File Header
Pada contoh di atas, iostream.h disebut file header.
File header tersebut diperlukan agar perintah cout bisa dijalankan.
Apabila file header tersebut dihapus, maka akan terjadi error.
Untuk mengakses file header, digunakan perintah #include <file header>, atau #include “file header”.
Dalam suatu program bisa jadi melibatkan lebih dari satu file header.
Catatan:
Perintah cout << “Hello world.\n”;
dapat diganti dengan printf(“Hello world.\n”);
Akan tetapi untuk bisa menggunakan printf diperlukan file header stdio.h
E. Menghapus Layar
Dalam C++, perintah clrscr() ; digunakan untuk menghapus/membersihkan layar.
Perintah ini akan bisa dijalankan setelah ditambahkan file header conio.h
Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout << “Hello world.\n”;
}
F. Komentar
Anda dapat menambahkan komentar pada program Anda.
Berikut ini style untuk menambah komentar.
// ----------------------------------
// ini adalah komentarku yang pertama
// ----------------------------------
atau
/* ----------------------------------
ini adalah komentarku yang pertama
---------------------------------- */
G. Latihan
  1. Buatlah program seperti di bawah ini
#include <conio.h>
#include <iostream.h>
void main()
{
clrscr();
cout << “It is my first C++ program\n”;
cout << “I am sure that I will be familiar with this”;
cout << “--------------------------\n“;
}
Simpan dengan nama file PROGRAM1.CPP
a. Ubahlah salah satu huruf menjadi huruf besar pada
perintah include. Compilelah, apa hasilnya?
b. Lakukan hal yang sama untuk conio, iostream, void, main,
clrscr, cout, \n.
c. Tarik kesimpulan berdasarkan a dan b.
LAtihan - next
2. Dengan menggunakan printah cout atau printf, buatlah program C++ untuk menampilkan 3 huruf terdepan nama Anda. Misal nama Anda AGUS, maka buatlah tampilan seperti berikut:
AAAAAAAAA      GGGGGGGGG      UU            UU
AAAAAAAAA      GGGGGGGGG      UU            UU
AA            AA       GG                          UU            UU
AA            AA       GG GGGGGGG      UU            UU
AAAAAAAAA      GG GGGGGGG      UU            UU
AA            AA       GG               GG      UU             UU
AA            AA       GGGGGGGGG       UUUUUUUUU
AA            AA       GGGGGGGGG       UUUUUUUUU
Berilah sebarang komentar pada setiap baris statement.
Simpan dengan nama NAMAKU.CPP
ELEMEN DASAR C++
A. Identifier (Pengenal)
Pengenal adalah suatu nama yang biasa dipakai dalam pemrograman untuk menyatakan variabel, konstanta, tipe data, dan fungsi.
Aturan untuk penulisan identifier sama dengan aturan dalam pascal, antara lain:
- Tidak boleh dimulai dengan karakter non huruf
- Tidak boleh ada spasi
- Tidak boleh menggunakan karakter-karakter
~ ! @ # $ % ^ & * ( ) + ` - = { } [ ] : " ; ' < > ? , . / |
- Tidak boleh menggunakan reserved words yang ada dalam C++.
Elemen dasar - next
B. Tipe Data
Berikut ini tipe data yang ada dalam C++
Tipe data bilangan bulat:
- char
- int (integer)
- short (short integer)
- long (long integer)
Tipe data bilangan real:
- float (real)
- double (real double)
- long double
Tipe data - next
Selain itu terdapat juga tipe data unsigned
Tipe data bilangan bulat:
- unsigned char
- unsigned int (integer)
- unsigned short (short integer)
-          unsigned long (long integer)
Tipe data unsigned mirip dengan yang bukan unsigned. Bedanya adalah tipe data unsigned tidak mengenal bilangan negatif (nilainya selalu posisif).
Elemen dasar - next
C. Deklarasi Variabel
Seperti halnya Pascal, variabel yang digunakan dalam program harus dideklarasikan terlebih dahulu.
Pengertian deklarasi di sini yaitu mengenalkan variabel ke program dan menentukan tipe datanya.
Berikut ini contoh pendeklarasian variabel:
      int jumlah;
      float harga_satuan, variabel1;
      char saya, kamu;
D. Assignment
Proses assignment adalah proses pemberian nilai kepada suatu variabel yang telah di deklarasikan.
Berikut adalah contoh assignment:
   Jumlah = 10;
   Harga_satuan = 23.456;
   Saya = ‘B’;
   Kamu = ‘2’;
 contoh program yang menggambarkan deklarasi variabel dan assignment.
#include <iostream.h>
#include <conio.h>
void main()
{
int var1, var2, var3;
char karakter;
var1 = 10;
var2 = 5;
var3 = var1 + var2;
karakter = ‘D’;
cout << “Nilai var3 = ” << var3 << “\n”;
cout << “Nilai karakter = ” << karakter;
getch();
}
contoh berikutnya yang melibatkan tipe data real dan memformat tampilan presisi
#include "conio.h";
#include "iostream.h";
#include "iomanip.h";
void main()
{
clrscr();
double bil;
bil = 182.2182713674821746;
cout << setprecision(12);
cout << "Nilai real = " << bil;
getch();
}
Elemen dasar - next
E. Konstanta
Untuk pendeklarasian konstanta dalam C++ mirip dengan Pascal.
Sintaksnya adalah:
const tipe_data nama_konstanta = value;
Contoh:
   const float phi = 3.141592;
contoh program C++ untuk mencari luas dan keliling lingkaran dengan jari-jari 7.2
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
void main()
{
const float phi = 3.141592;
float jari_jari, keliling, luas;
jari_jari = 7.2;
luas = phi * jari_jari * jari_jari;
keliling = 2 * phi * jari_jari;
cout << setpresicion(5);
cout << “Luas lingkaran adalah ” << luas << “satuan luas \n”;
cout << “Keliling lingkaran adalah ” << keliling << “satuan
panjang \n”;
getch();
}