Senin, 19 Desember 2011

Elemen Dasar HTML


Heading
Heading biasa digunakan untuk membuat judul pada halaman web. Tag yang digunakan adalah <Hn> dengan nilai n antara 1 sampai dengan 6. Semakin besar nilai n maka semakin kecil huruf yang tercetak. Default heading adalah rata kiri. Jika kita ingin membuat heading rata tengah maka tambahkan atribut ALIGN dengan nilai center atau right untuk rata kanan.

Paragraph
Untuk membuat paragraph pada halaman web anda gunakanlah tag <p>….</p>. Sama seperti heading, kita dapat mengatur perataan paragraph dengan menambahkan atribut align di dalam tag <p>.

Garis Horizontal
Untuk membuat garis horizontal dalam halaman web, gunakanlah tag <HR>. tag <HR> memiliki atribut Align, Width, Size, Color dan Noshade.

Baris Baru
Untuk membuat baris baru gunakanlah tag <BR>

Komentar
Komentar biasanya digunakan untuk memberikan penjelasan atau keterangan tentang dokumen yang kita buat. Untuk membuat komentar pada program gunakanlah tag <!—di sini komentar ditulis-->. Kalimat yang berada dalam tag tsb tidak akan dieksekusi oleh browser
Continue reading...

Perbedaan CMS Gratis dan CMS Komersial


Jika Anda mencari sebuah CMS (Content Management System) di Internet, maka Anda akan diberikan banyak sekali pilihan. Seperti Joomla, WordPress, dan Drupal adalah sebagian dari CMS Gratis (Open Source) yang populer. Masih banyak CMS Gratis lainnya yang bisa Anda gunakan. Selain CMS gratis, juga banyak CMS Komersial yang bisa digunakan untuk perusahaan, toko online, web portal, web pendidikan, dll.

Diantara CMS Gratis dan CMS Komersial tersebut, manakah yang terbaik untuk digunakan? Sangat susah untuk menentukan mana yang terbaik, semua tergantung pada jenis website yang akan dibuat, untuk apa website tersebut dibuat, dan berapa budget yang tersedia untuk membuat website tersebut.

Sebelum Anda menentukan menggunakan CMS Gratis atau CMS Komersial untuk website Anda, ketahui dulu apa perbedaan dari kedua jenis CMS tersebut.

CMS Gratis (Open Source)
CMS Gratis tersedia secara gratis di Internet, yang bisa di-download dan dirubah kode script-nya. Karena bersifat gratis, pengembangannya berasal dari para developer yang secara sukarela berkontribusi dalam perbaikan dan peningkatkan performanya. Biasanya perkembangan CMS Gratis lebih cepat daripada CMS Komersial.

Kelebihan CMS Gratis :
Proses installasi yang cepat dan gratis, kecuali pembayaran untuk sewa domain dan hosting.
Pengujian performa dan stabilitas-nya lebih cepat (belum tentu lebih baik) karena pengguna dan pengembang banyak.
Biasanya banyak dukungan Technical Support di forum atau blog tutorial.

Kekurangan CMS Gratis :
Sistem Keamanan tidak sebaik CMS Komersial, karena sifatnya yang Open Source atau kode script bisa dilihat dan bisa dipelajari oleh siapa saja.
Jumlah pengembang yang banyak menimbulkan kemungkinan besar terjadi kerusakan (crash) pada sistem, karena tiap web developer memiliki kebiasaan yang berbeda dalam mengembangkan suatu aplikasi web.
Karena siapa saja boleh berpartisipasi untuk pengembangan, maka tidak semuanya profesional. Sehingga sering muncul masalah karena pemrograman tidak kompeten.
Pilihan menu setting yang sangat rumit dan dibutuhkan kemampuan bahasa pemrograman untuk meng-integrasi tiap-tiap aplikasi.

CMS Komersial
Pada dasarnya CMS Komersial hampir sama dengan CMS Gratis, yaitu sama-sama memiliki kemampuan untuk mengelola konten web. Hanya pada CMS Komersial akses pada kode script dibatasi. Bahkan pada beberapa Perusahaan Web Developer, tidak bisa mengakses kode script, atau harga untuk bisa mengakses kode script sangat mahal. Dalam arti bahwa klien membeli hak penuh atas kode script yang telah dibuat.

Kelebihan CMS Komersial :
Sistem Keamanan lebih baik dari CMS Gratis karena kode script tidak bisa di akses, atau hanya klien yang bisa melihat kode script tersebut.
Kemungkinan terjadi crash pada aplikasi lebih kecil karena aplikasi dibuat oleh developer yang sama.
Pengembangan lebih kompeten karena ditangani oleh developer yang profesional.
Bagi klien, tidak rumit dan tidak dibutuhkan kemampuan bahasa pemrograman karena biasanya CMS Komersial dibuat se-sederhana mungkin (users friendly) sesuai dengan kebutuhan klien.

Kekurangan CMS Komersial :
Proses pembuatan yang lama dan biasanya harganya mahal, karena pihak developer membangun dari nol.
Performa dan stabilitas-nya butuh waktu lama untuk pengujian.
Technical Support biasanya dikenai biaya tambahan.
Continue reading...

Belajar HTML5 Dasar - Pengenalan Tag-tag HTML5 baru


Logo HTML5

Tahun 2011 merupakan tahunnya HTML5, setelah Internet Explorer 9 rilis beberapa bulan lalu, maka semua browser utama (IE, Firefox, Safari, Chrome dan Opera) telah mendukung HTML5 dan CSS3. Ya walaupun belum semua fungsi HTML5 & CSS3 didukung spenuhnya, tetapi tahun ini merupakan lahirnya HTML5. Jadi tunggu apa lagi, Anda masih pakai XHTML? atau mungkin malah HTML4? mulailah belajar HTML5, ada banyak tag2 baru yang sangat menarik. Disini saya akan mengajari tag-tag yang baru saja dan yang paling banyak digunakan dalam melayout sebuah website.
Sebelum anda meneruskan membaca artikel ini, saya sarankan anda paham mengenai dasar-dasar HTML dan dasar-dasar CSS terlebih dahulu. Karena disini saya hanya akan menerangkan tag-tag yang baru di HTML5, maka saya asumsikan Anda sudah tahu tag-tag yang lama.
Oke, sebelumnya kita nanti akan membuat sebuah website dengan HTML5 yang layoutnya / wireframe nya kira-kira seperti ini:
Nah dengan wireframe seperti itu nanti kira-kira kita akan menggunakan tag berikut ini:
Struktur Wireframe Website
Oke ada banyak tag yang baru yah, mari kita mulai saja, siapkan teks editor Anda dan kita buat deklarasi HTML5 beserta <head> nya:
Struktur Wireframe Website HTML5
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Drop Down Menu</title>
<head>
<body>
  Isi web disini
</body>
</html>
Sip, lebih simpel kan, kalau dulu jaman XHTML kita perlu mendeklarasikan transitional, atau strict, sekarang cukup <!DOCTYPE html>. Nah untuk isinya saya akan memberitahu tag-tag yang baru, nanti setiap kode berikutnya Anda masukkan didalam <body>, yang ada tulisan Isi web disini.

<header>

Tag pertama kita adalah <header>, sesuai namanya tag ini ditempatkan diatas pada bagian awal website. Kalau dulu kita pakai <div id="header"> sekarang kita menggantinya dengan<header>. Tetapi <header> tidak harus melulu dipaling atas web, kita bisa memiliki beberapa<header>, misal didalam artikel (kita akan bahas ini nanti dibagian article).
Nah, didalam <header> ini bisa kita isi macam-macam, misal logo, navigasi, heading dan lain-lain. Bahkan diisi <div> pun tidak masalah.

<hgroup>

Weittss <hgroup>, apa lagi ini? Oke gampangnya jika kita memiliki satu atau lebih dari satu heading berurutan <h1> - <h6> maka kita bisa mengelompokkannya dengan <hgroup>. Biasanya digunakan apabila kita memiliki judul dan ada sub judul, atau untuk judul web kemudian kita memiliki slogan. Tapi kalau headingnya cuma satu ya nggak usah dikasih <hgroup>. Oke daripada pusing langsung saja lihat contohnya ya:
<header id="main-header">
  <hgroup>
    <h1>Ini Website HTML5 pertama saya</h1>
    <h2>Dan juga yang terakhir karena saya bingung</h2>
  </hgroup>
Oke, kalau sudah lihat contohnya paham kan, sip nanti kita masih akan menambahkan sesuatu kedalam <header>.

<nav>

Nah, dari namanya sudah kelihatan kalau ini fungsinya untuk menampilkan navigasi pada website Anda. Ya kalau dulu kita pakai <ul><li> untuk membuat navigasi menu, nah sekarang kita pakai... ummm.. ya sama pakai <ul><li> juga, tetapi kita bungkus dengan <nav>. Nah langsung saja kita lihat contoh kodenya:
<nav id="main-nav">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
Sip, sama kan? Yang perlu diingat bahwa <nav> digunakan untuk ngelink kehalaman-halaman utama dari website atau bagian dari halaman itu sendiri. Kalau untuk paging, Social Networking atau list-list yang lain yang menggunakan <ul> nggak perlu dikasih <nav>.

<section>, <article> dan <time>

Sesuai namanya <article> digunakan untuk membungkus teks artikel atau teks utama dalam halaman web kita. Kita boleh punya banyak tag <article>, misal saja komentar, nah setiap komentar kita bungkus pakai <article> atau forum dan lain sebagainya. Apabila kita memiliki list atau daftar <article>, misal blog, maka kita perlu membungkusnya dengan <section> jika ada elemen lain yang bukan <article> dan menerangkan tentang <article> tersebut. Bingung? Langsung kecontoh:
<section>
  <h1>Artikel Terbaru</h1>
  <article>Isi Teks Artikel 1</article>
  <article>Isi Teks Artikel 2</article>
  <article>Isi Teks Artikel 3</article>
</section>
Jadi karena diantara kelompok-kelompok <article> ada tag <h1> maka kita tetap perlu membungkusnya dengan <section>.
<section> tidak boleh diberi style, tidak boleh sebagai container layout. Tetap gunakan <div> apabila ingin melayout.
Nah, berijutnya adalah <time>, sesuai namanya, digunakan untuk menunjukan waktu, biasanya digunakan untuk menunjukkan waktu publish artikel, komentar, forum dan lain sebagainya. <time>memiliki atribut datetime yang berisi waktu bisa dalam format yyyy-mm-dd atau jam seperti 19:00. Hal ini digunakan agar mesin pencari dapat mengenali waktu dalam format standar meskipun kita menulisnya tidak dalam format standar. Contoh:
<p>Ditulis oleh Dhimas pada <time datetime="2011-11-23">Senin Pahing, 23 November 2011</time></p>
Mudah kan? oke kita akan lanjut ke tag berikutnya
Oh iya, gosip mengatakan bahwa <time> akan dibuang dari HTML5 nggak tau mau diganti apa, tetapi menurut saya tag <time> cukup bagus dan tidak perlu digantikan

<figure> dan <figcaption>

<figure> digunakan sebagai pembungkus untuk tag <img>. Tetapi tidak selalu semua tag<img> kita bungkus dengan <figure>, hanya gambar-gambar yang utama saja atau gambar-gambar yang ingin kita beri label. Nah kita memberi labelnya dengan <figcaption>. Oke langsung saja lihat contoh kodenya:
<figure>
  <img src="foto.jpg" alt="Foto Artis">
  <figcaption>Ini adalah foto artis yang saya ambil di kali</figcaption>
</figure>
Kira-kira kodenya seperti itu, kita tinggal menstylenya dengan CSS saja sesuai keinginan kita. Oh iya kita bisa memasang tag <a><strong><em> didalam <figcaption>

<aside>

Nah ini nih tag yang saya sendiri masih bingung penggunaannya, karena tiap website contoh penggunaan <aside> berbeda-beda. Oke kalau dilihat dari sejarahnya <aside> itu awalnya namanya <sidebar> tetapi kemudian diganti menjadi <aside>. Nah <aside> merupakan tag yang berisi konten yang berhubungan dengan konten utama dalam halaman web, oke berarti bisa disimpulan bahwa <aside> digunakan sebagai sidebar pada website. Nah permasalahannya setiap sidebar misal wordpress, pasti didalamnya terdapat konten-konten lagi, kalau di wordpress biasanya widget. Nah terus kode nya seperti apa? Ada 3 kemungkinan, yang pertama:
<aside id="sidebar">
  <aside>
    Ini Widget Pertama
  </aside>
  <aside>
    Ini Widget Kedua
  </aside>
  <aside>
    Ini Widget Ketiga
  </aside>
</aside>
Atau yang kedua:
<aside id="sidebar">
  <div>
    Ini Widget Pertama
  </div>
  <div>
    Ini Widget Kedua
  </div>
  <div>
    Ini Widget Ketiga
  </div>
</aside>
Atau yang ketiga:
<div id="sidebar">
  <aside>
    Ini Widget Pertama
  </aside>
  <aside>
    Ini Widget Kedua
  </aside>
  <aside>
    Ini Widget Ketiga
  </aside>
</aside>
Nah yang mana yang bener? <aside> didalamnya <aside> atau didalamnya <div>, atau<div> didalamnya <aside>? Tidak ada dokumentasi yang pasti yang mana yang benar, tetapi saya cenderung menggunakan yang ketiga, karena tingkatan <div> lebih luas atau lebih tinggi levelnya daripada <aside>. Tetapi ya terserah Anda, karena semua website yang sudah menggunakan HTML5 menggunakan ketiga cara tersebut.

<footer>

Yang terakhir adalah <footer>, sesuai namanya <footer> diletakkan dibagian bawah website, tetapi kita tidak hanya menggunakannya diakhir website saja. Sama seperti <header>dimana kita menggunakan <footer> dibagian akhir <article>. Jadi intinya <footer>sama dengan <header>, hanya saja <footer> diakhir sedangkan <header> diawal. Berikut ini contoh sederhana penggunaan footer diakhir website:
<footer>
  <p>Copyright 2011, Dhimas Ronggobramantyo</p>

Tag-tag lainnya

Sip, gampang kan? eits jangan senang dulu, itu tadi semua contoh tag-tag yang sering kita gunakan, masih banyak lagi tag-tag lainnya yang lebih ajaib seperti <canvas><audio>,<video><summary><progress><datalist> masih banyak lagi, lupa saya apa aja.
Tetapi yang utama dan penting-penting ya itu tadi yang sudah saya sebutin. Untuk yang lainnya kapan-kapan kalau sempat saya buat artikel tersendiri, selamat mencoba, jika ada yang salah silahkan didiskusikan di komentar dibawah.
[Update] 2011-11-09 11:00:00

Agar HTML5 jalan di IE8, IE7 dan IE6

Ada yang kelupaan kemarin, bagaimana agar HTML5 jalan di IE8, IE7 dan IE6? mengingat bahwa hanya Internet Explorer 9 saja yang support HTML5. Anda bisa menggunakan Javascript untuk melakukannya, ada 2 yang menurut saya bagus yaitu Modernizr dan HTML5 Shiv. Saya akan memberitahu yang HTML5 Shiv saja karena scriptnya lebih cepat dan mudah. Tetapi jika Anda ingin agar browser IE lama support CSS3 maka gunakan modernizr. Oke didalam header pasang saja kode seperti ini:
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

Continue reading...

Senin, 21 November 2011

CLASS


Pemrograman C++ memerlukan pemahaman yang memadai untuk menterjemahkan
desain ke dalam bentuk implementasi, terutama untuk desain yang menggunakan
abstraksi class. Fokus pembahasan pada aspek pembentukan obyek  (construction)
sebuah class, dan proses sebaliknya pada saat obyek tersebut sudah tidak digunakan
lagi (destruction).

D E K L A R A S I D A N D E F I N I S I  
Deklarasi dan definisi adalah langkah awal dalam setiap penulisan program tidak
terkecuali dalam bahasa C++. Deklarasi dan definisi diperlukan untuk semua tipe data
termasuk tipe data bentukan user (user-defined type).
Bentuk sederhana deklarasi class adalah sebagai berikut,
class C { }; atau
struct C { };
dalam bahasa C++ struct dan class mempunyai pengertian yang sama. Deklarasi class
dengan struct mempunyai anggota dengan akses public kecuali jika dinyatakan lain.
struct C
{
int i;
void f();
}
class C
{

public:
int i;
void f();
}
Kedua deklarasi tersebut mempunyai arti yang sama. Hal ini adalah pilihan desain yang
diambil oleh desainer C++ (Bjarne Stroustrup) untuk menggunakan C sebagai basis C++
ketimbang membuat bahasa yang sama sekali baru. Tentunya ada konsekuensi atas
pilihan desain ini, salah satu contoh adalah kompatibilitas terhadap bahasa C. Dalam
bahasa C deklarasi,
struct C { … };
menyatakan C sebagai nama tag. Nama tag berbeda dengan nama tipe, sehingga C
(nama tag) tidak dapat dipergunakan dalam deklarasi yang membutuhkan C sebagai
suatu tipe obyek. Kedua contoh deklarasi berikut ini tidak valid dalam bahasa C,
C c;        /* error, C adalah nama tag */
C *pc;    /* error, C adalah nama tag */
Dalam bahasa C, kedua deklarasi tersebut harus ditulis sebagai berikut,
struct C c;
struct C *pc;
atau menggunakan typedef sebagai berikut,
struct C { … };
typedef struct C C;
C c;

C *pc;
C++ memperlakukan nama class, C sebagai nama tag sekaligus nama tipe dan dapat
dipergunakan dalam deklarasi. Kata class tetap dapat dipergunakan dalam deklarasi,
seperti contoh berikut ini,
class C c;
Dengan demikian C++ tidak membedakan nama tag dengan nama class, paling tidak
dari sudut pandang pemrogram  (programmer), dan tetap menerima deklarasi  structure
seperti dalam bahasa C. Kompatibilitas C++ terhadap tidak sebatas perbedaan nama tag
dan nama tipe, karena standar C++ masih perlu mendefinisikan tipe POD (Plain Old
Data). POD type mempunyai banyak persamaan dengan structure dalam C. Standar C++
mendefinisikan POD type sebagai obyek suatu class yang tidak mempunyai userdefined
constructor, anggota protected maupun private, tidak punya base class, dan tidak
memiliki fungsi virtual. Dalam desain suatu aplikasi terdiri atas banyak class, dan
masing-masing class tidak berdiri sendiri melainkan saling bergantung atau
berhubungan satu sama lain. Salah satu contoh hubungan tersebut adalah hubungan
antara satu class dengan satu atau lebih  base class  atau  parent class. Jika class C
mempunyai base class B, dikenal dengan inheritance, maka deklarasi class menjadi,
class C : public B {}; atau
class C : protected B {}; atau
class C : private B {};
akses terhadap anggota base class B dapat bersifat public, protected, maupun
private,atau disebut dengan istilah  public,  protected  atau  private inheritance. Class C
disebut dengan istilah derived class. Jika tidak dinyatakan bentuk akses secara eksplisit,
seperti dalam deklarasi berikut

class C : B
maka interpretasinya adalah private inheritance (default), tetapi jika menggunakan struct
maka tetap merupakan public inheritance. Jika desainer class C tersebut menginginkan
hubungan  multiple inheritance  (MI) terhadap class B dan A, maka deklarasi class C
menjadi,
class C : public B, public A { };
Sebuah class, seperti halnya class C mempunyai anggota berupa data maupun fungsi
(member function). Isi class tersebut berada diantara tanda kurung { } dan dipilah-pilah
sesuai dengan batasan akses yang ditentukan perancang (desainer) class tersebut.
class C : public B
{
public:
(explicit) C()(:member-initializer);
C(const C& );
C& operator=(const C&);
(virtual)~C();
statement lain
(protected: statement)
(private: statement)
};

selengkapnya. . . . . .
Continue reading...

STRUCTURE


Structure (struktur) adalah kumpulan elemen-elemen data yang digabungkan menjadi 
satu kesatuan. Masing-masing elemen data tersebut dikenal dengan sebutan field. Field 
data tersebut dapat memiliki tipe data yang sama ataupun berbeda. Walaupun fieldfield tersebut berada dalam satu kesatuan, masing-masing field tersebut tetap dapat 
diakses secara individual. 

Field-field tersebut digabungkan menjadi satu dengan tujuan untuk kemudahan dalam 
operasinya. Misalnya Anda ingin mencatat data-data mahasiswa dan pelajar dalam 
sebuah program, Untuk membedakannya Anda dapat membuat sebuah record 
mahasiswa yang terdiri dari field nim, nama, alamat dan ipk serta sebuah record pelajar 
yang terdiri dari field-field nama, nonurut, alamat dan jumnilai. Dengan demikian akan 
lebih  mudah untuk membedakan keduanya. 

Untuk menggunakan struktur, tulis nama struktur beserta dengan fieldnya yang
dipisahkan dengan tanda titik (“  . “).
Continue reading...

STACK


Definisi Stack  
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First  Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.  



Pada gambar diatas, jika kita ingin mengambil sesuatu dari tumpukan maka kita harus 
mengambil benda paling atas dahulu, yakni compo.

Misalnya jika VCD langsung diambil, compo akan jatuh. Prinsip stack ini bias diterapkan dalam pemrograman. Di C++, ada dua cara penerapan prinsip stack, yakni dengan  array  dan  linked list. 
Setidaknya stack haruslah memiliki operasi-operasi sebagai berikut.  
Push          Untuk menambahkan item pada tumpukan paling atas  
Pop           Untuk mengambil item teratas 
Clear         Untuk mengosongkan stack  
IsEmpty     Untuk memeriksa apakah stack kosong  

IsFull         Untuk memeriksa apakah stack sudah penuh  

Dalam bab ini penjelasan mengenai stack akan menggunakan kelas stack. Kelima operasi stack diatas akan dideklarasikan secara abstrak dalam kelas ini, sedangkan kelas turunan dari stack akan mengimplementasikan operasi-operasi tersebut.  


Stack dengan Array  
Sesuai dengan sifat stack, pengambilan / penghapusan delemen dalam stack harus dimulai dari elemen teratas.


Operasi-operasi pada Stcak dengan Array :
Konstruktor  
Fungsi ini membuat sebuah stack baru yang masih kosong. Konsepnya adalah bahwa Top menunjukkan elemen stack teratas. Jika Top bernilai -1, berarti tumpukan kosong. 


IsFul 
Fungsi ini memeriksa apakah stack yang ada sudah penuh. Stack penuh jika stack penuh jika puncak stack terdapat tepat dibawah jumlah maksimum yang dapat ditampung stack atau dengan kata lain Top = MAX_STACK -1.  

Push  
Fungsi ini menambahkan sebuah elemen ke dalam stack dan tidak bias dilakukan lagi jika stack sudah penuh.  

IsEmpty  
Fungsi menentukan apakah stack kosong atau tidak. Tanda bahwa stack kosong adalah Top bernilai kurang dari nol.  mfachrz@gmail.com


Pop  
Fungsi ini mengambil elemen teratas dari stack dengan syarat stack tidak boleh kosong.  

Clear  
Fungsi ini mengosongkan stack dengan cara mengeset Top dengan -1. Jika Top bernilai 


Double Stack dengan Array  
Metode ini adalah teknik khusus yang dikembangkan untuk menghemat pemakaian memori dalam pembuatan dua stack dengan array. Intinya adalah penggunaan hanya sebuah array untuk menampung dua stack.  
Tampak jelas bahwa sebuah array dapat dibagi untuk dua stack, stack 1 bergerak ke atas dan stack 2 bergerak ke bawah. Jika Top1 (elemen teratas dari Stack 1) bertemu dengan Top 2 (elemen teratas dari Stack 2) maka double stack telah penuh.  
Implementasi double stack dengan array adalah dengan memanfaatkan operasi-operasi yang tidak berbeda jauh dengan operasi single stack dengan array. 

Operasi-operasi Double Stack Array :
Konstruktor   
Fungsi ini membuat stack baru yang masih kosong. Top[0] diset dengan -1 dan Top[1] diset dengan MAX_STACK.  

IsFull 
Fungsi ini memeriksa apakah double stack sudah penuh. Stack dianggap penuh jika Top[0] dan Top[1] bersentuhan sehingga stack tida memiliki ruang kosong. Dengan kata lain, (Top[0] + 1) > Top[1].  

kurang dari nol maka stack dianggap kosong


Push  
Fungsi ini memasukkan sebuah elemen ke salah satu stack.  

IsEmpty  
Fungsi memeriksa apakah stack pertama atau stack kedua kosong. Stack pertama dianggap kosong jika puncak stack bernilai kurang dari nol, sedangkan stack kedua dianggap kosong jika puncak stack sama atau melebihi MAX_STACK.  

Pop  
Fungsi ini mengeluarkan elemen teratas dari salah satu stack  

Clear  
Fungsi ini mengosongkan salah satu stack.  


Stack dengan Single Linked List  
Selain implementasi stack dengan array seperti telah dijelasnkan sebelumnya, ada cara  lain untuk mengimplementasi stack dalam C++, yakni dengan single linked list. 
Keunggulannya dibandingkan array tebtu saja adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori. Misalnya saja pada stack dengan array disediakan tempat untuk stack berisi 150 elemen, sementara ketika dipakai oleh user stack hanya diisi 50 elemen, maka telah terjadi pemborosan memori untuk sisa 100 elemen, yang tak terpakai. Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack. Oleh karena itu pula dalam stack dengan linked list tidak ada istilah full, sebab biasanya program tidak menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh pembuatnya). Namun demikian sebenarnya stack ini pun memiliki batas kapasitas, yakni dibatasi oleh jumlah memori yang tersedia.

Operasi-operasi  untuk Stack dengan Linked List :  
Konstruktor  
Fungsi ini membuat stack baru yang kosong. Stack adalah kosong jika Top tidak menunjuk apa pun (bernilai NULL). 

IsEmpty  
Fungsi memeriksa apakah stack yang adamasih kosong.  

Push  
Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip dengan insert dalam single linked list biasa.  

Pop  
Fungsi ini mengeluarkan elemen teratas dari stack.  

Clear  
Fungsi ini akan menghapus stack yang ada.    
Continue reading...

LINKED LIST


Single Linked List
Apabila setiap Anda ingin menambahkan data, Anda selalu menggunakan variabel
pointer yang baru, Anda akan membutuhkan banyak sekali pointer. Oleh karena itu,
ada baiknya jika Anda hanya menggunakan satu variabel pointer saja untuk
menyimpan banyak data dengan metode yang kita sebut Linked List. Jika
diterjemahkan, ini berarti satu daftar isi yang saling berhubungan. Untuk lebih jelasnya,
perhatikan gambar di bawah ini:



Pembuatan Single Linked List dapat menggunakan 2 metode:
· LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
· FIFO (First In First Out), aplikasinya : Queue (Antrean)
LIFO ( Last In First Out)

Lifo adalah suatu metode pembuatan Linked List di mana data yang masuk paling akhir
adalah data yang keluar paling awal. Hal ini dapat di analogikan (dalam kehidupan
sehari-hari) dengan saat Anda menumpuk barang seperti digambarkan dibawah ini.
Pembuatan sebuah simpul dalam suatu linked list seperti digambarkan dibawah ii,
disebutkan istilah INSERT, Jika linked list dibuat dengan metode LIFO, terjadi
penambahan / Insert simpul di belakang.


FIFO (Fisrt In Fisrt Out)
FIFO adalah suatu metode pembuatan Linked List di mana data yang masuk paling
awal adalah data yang keluar paling awal juga. Hal ini dapat di analogikan (dalam
kehidupan sehari-hari), misalnya saat sekelompok orang yang datang (ENQUEUE)
mengantri hendak membeli tiket di loket.
Jika linked list dibuat dengan metode FIFO, terjadi penambahan / Insert simpul
didepan.

Operasi Pada Single Linked List :
Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
Procedure dan Function Linked List Lainnya
Selain fungsi insert di atas, pada linked list juga terdapat fungsi-fungsi lainnya. Di
bawah ini diberikan fungsi-fungsi umum dalam aplikasi linked list.

Konstruktor
Fungsi ini membuat sebuah linked list yang baru dan masih kosong.

IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.

Find First
Fungsi ini mencari elemen pertama dari linked list


Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now.

Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu
dikembalikan oleh fungsi.

Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.

Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah
elemen pertama dari linked list (head), head akan berpindah ke elemen berikut.

Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen
sesudahnya.

Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda
ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya,data-data uang dialokasikan ke memori pada program sebelumnya akan tetap
tertiinggal di dalam memori.


Double Linked List
Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak
satu arah saja, maju/ mundur, atau kanan/kiri sehingga pencarian data pada single
linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan
tersebut, anda dapat menggunakan metode double linked list. Linked list ini dikenal
dengan nama Linked list berpointer Ganda atau Double Linked List.  
Operasi –operasi pada Double Linked List

Insert Tail
Fungsi insert tail berguna untuk menambah simpul di belakang (sebelah kanan) pada
sebuah linked list.

Insert Head
Sesuai dengan namanya, fungsi Insert Head berguna untuk menambah simpul di depan
(sebelah kiri). Fungsi ini tidak berada jauh dengan fungsi Insert Tail yang telah
dijelaskan sebelumnya.

Delete Tail
Fungsi Delete Tail berguna untuk menghapus simpul dari belakang. Fungsi ini
merupakan kebalikan dari fungsi Insert Tail yang menambah simpul dibelakang. Fungsi
Delete Tail akan mengarahkan Now kepada Tail dan kemudian memanggil fungsi
Delete Now.

Delete Head
Fungsi Delete Head merupakan kebalikan dari fungsi Delete Tail yang menghapus
simpul dari belakang, sedangkan Delete Head akan menghapus simpul dari depan
(sebelah kiri). Fungsi Delete Head akan mengarahkan Now kepada Head dan
kemudianm memanggil fungsi Delete Now.

Delete Now
Fungsi Delete Now berguna untuk menghapus simpul pada posisi yang sedang
ditunjuk oleh Now.

Circular Double Linked List
Ini adalah double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya
menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu
lingkaran.

Operasi-operasi pada Circular Double Linked List :
Insert Tail
Fungsi insert Tail berguna untuk menambah simpul di belakang (sebelah kanan) pada
sebuah circular double linked list.

Insert Head
Sesuai dengan namanya, fungsi Insert Head berguna untuk menambah simpul di depan
(sebelah kiri). Fungsi ini tidak berbeda jauh dengan fungsi Insert tail yang telah
dijelaskan sebelumnya.

Delete Tail
Fungsi Delete Tail berguna untuk menghapus simpul dari belakang. Fungsi ini
kebalikan dari fungsi Insert Tail yang menambah simpul dibelakang.


Delete Head
Fungsi Delete Head merupakan kebalikan dari fungsi Delete Tail yang menghapus
simbul dari belakang. Delete Head akan menghapus simpul dari depan (sebelah kiri).

Delete Now
Fungsi Delete Now, sesuai dengan namanya, berguna untuk menghapus simpul pada
posisi yang diinginkan.
Continue reading...

Minggu, 20 November 2011

array


Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data 
yang sama. Elemen-elemen array tersusun secara sekuensial dalam memori komputer. 
Array dapat berupa satu dimensi, dua dimensi, tiga dimensi ataupun banyak dimensi 
(multi dimensi). 

2.1. Array Satu Dimensi 
Array Satu dimensi tidak lain adalah kumpulan elemen-elemen identik yang tersusun 
dalam satu baris. Elemen-elemen tersebut memiliki tipe data yang sama, tetapi isi dari 
elemen tersebut boleh berbeda.  

Bentuk umum: 
<tipe data> NamaArray[n] = {elemen0, elemen1, elemen2,.....,n};  
n = jumlah elemen

Array Dua Dimensi 
Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan 
dari array satu dimensi. Jika  array satu dimensi hanya terdiri dari sebuah baris dan 
beberapa kolom elemen, maka  array dua dimensi terdiri dari beberapa baris dan 
beberapa kolom elemen yang bertipe sama

Bentuk umum: 
<tipe data> NamaArray [m][n]; 
Atau 
<tipe data> NamaArray [m][n] = { {a,b,..z},{1,2,...,n-1} }; 

Contoh: 
double matrix[4][4]; 
bool papan[2][2] = { {true,false},{true,false} }; 
Pendeklarasian array dua dimensi hampir sama dengan pendeklarasian array satu 
dimensi, kecuali bahwa array dua dimensi terdapat dua jumlah elemen yang terdapat di 
dalam kurung siku dan keduanya boleh tidak sama. 
Elemen array dua dimensi diakses dengan menuliskan kedua indeks elemennya dalam 
kurung siku seperti pada contoh berikut: 
//papan nama memiliki 2 baris dan 5 kolom 
bool papan[2][5]; 
papan[0][0] = true; 
papan[0][4] = false; 
papan[1][2] = true; 
papan[1][4] = false;Bentuk umum: 
<tipe data> NamaArray [m][n]; 
Atau 
<tipe data> NamaArray [m][n] = { {a,b,..z},{1,2,...,n-1} }; 

Contoh: 
double matrix[4][4]; 
bool papan[2][2] = { {true,false},{true,false} }; 
Pendeklarasian array dua dimensi hampir sama dengan pendeklarasian array satu 
dimensi, kecuali bahwa array dua dimensi terdapat dua jumlah elemen yang terdapat di 
dalam kurung siku dan keduanya boleh tidak sama. 
Elemen array dua dimensi diakses dengan menuliskan kedua indeks elemennya dalam 
kurung siku seperti pada contoh berikut: 
//papan nama memiliki 2 baris dan 5 kolom 
bool papan[2][5]; 
papan[0][0] = true; 
papan[0][4] = false; 
papan[1][2] = true; 
papan[1][4] = false;


Continue reading...
 

Dyah Sharaswati Copyright © 2009 Cosmetic Girl Designed by Ipietoon | In Collaboration with FIFA
and web hosting