Selasa, 30 Agustus 2011

Tutorial Sniffing

Nama Kelompok :

I Made Indra Purnawan (080010001)
I Made Wira Dharma (080010243)
I Ketut Alit Surya Dinata (080010244)
I Kadek Suradira Wijaya (080010676)


Tutorial Sniffing
Sniffing adalah kegiatan menyadap dan/atau menginspeksi paket data menggunakan sniffer software atau hardware di internet. Kegiatan ini sering disebut sebagai serangan sekuriti pasif dengan cara membaca data yang berkeliaran di internet, dan memfilter khusus untuk host tujuan tertentu.

Tutorial Sniffing dengan Wireshark
Wireshark /Ethereal merupakan salah satu dari sekian banyak tools Network Analyzer yang banyak digunakan oleh Network administrator untuk menganalisa kinerja jaringannya dan juga merupakan tools andalan Vaksinis (teknisi Vaksincom). Wireshark banyak disukai karena interfacenya yang menggunakan Graphical User Interface (GUI) atau tampilan grafis. Wireshark mampu menangkap paket-paket data/informasi yang berseliweran dalam jaringan yang kita “intip”. Semua jenis paket informasi dalam berbagai format protokol pun akan dengan mudah ditangkap dan dianalisa. Tools ini tersedia di berbagai versi OS, seperti Windows, Linux, Macintosh, dll.

1. Installasi Wireshark:
• Pada terminal ketikkan perintah :
sudo apt-get install wireshark

2. Jalankan wireshark dengan perintah :
• Sudo su
• Sudo wireshark

Dapat dilihat pada gambar di bawah ini :

Jika pada saat wireshark pertama kali dijalankan muncul error message seperti di bawah ini :

Maka ada pengaturan yang harus kita ubah pada file init.lua yang terletak pada file system di directory usr/share/wireshark
Lakukan langkah-langkah di bawah ini :
-Buka file init.lua
-ganti nilai disable_lua menjadi true, kemudian save perubahan dengan menekan ctrl+s.
-close file init.lua dan jalankan kembali wireshark, maka error message tidak akan tampil lagi.

Dapat dilihat pada gambar di bawah ini :

Selanjutnya kita dapat menggunakan wireshark untuk melakukan sniffing.
3. Pilih interface yang akan digunakan.
Pada proses sniffing ini, kami menggunakan interface eth0

Setelah memilih interfaces, wireshark langsung mengcapture/merekam semua paket data jaringan dan menampilkannya pada layar.

4. Untuk mengakhiri proses capture paket data jaringan, klik pada tombol yang ditunjukkan oleh panah berikut.

5. Ketikkan http pada kolom filter, untuk menampilkan paket data jaringan yang memiliki protocol http.
Langkah selanjutnya, yaitu mencari paket data yang memiliki info bertype POST, kemudian klik Line-based text data. Pada langkah ini biasanya akan terlihat username dan password dari user yang melakukan login pada suatu website.
Terlihat seperti gambar di bawah ini :


6. Untuk melihat informasi lebih detail dari paket data jaringan di atas, dapat dilakukan dengan klik kanan pada paket data jaringan tersebut, kemudian pilih Follow TCP Stream.
Dapat dilihat pada gambar di bawah ini :

Tutorial Sniffing dengan Ettercap dan Wireshark
Ettercap adalah sebuah alat yang dibuat oleh Alberto Ornaghi (AloR) dan Marco Valleri (NaGa) dan pada dasarnya adalah sebuah perlengkapan untuk man in the middle attacks pada LAN. Ettercap merupakan salah satu tools yang dapat digunakan untuk melakukan sniffing. Ettercap dapat diinstall pada operating system windows maupun linux. Pada linux back track khususnya ettercap sudah ada sejak operating system terinstall.
Untuk mendapatkan password dan username saat melakukan sniffing ,kita harus memastikan agar paket data yang berupa username dan password dari target dapat masuk ke computer kita, sehingga kita harus melakukan sniffing sebelum target memasukan password dan username akunnya. sehingga ketika sang target sudah masuk kedalam suatu situs yang ingin kita sniffing akunnya kita harus memutus koneksinya , agar dia melakukan login ulang sehingga akunnya kita dapat dalam proses sniffing yang kita lakukan. Untuk memutuskan koneksi ini kita dapat melakukannya dengan aplikasi atau tools seperti netcut pada windows, akan tetapi pada linux ada yang namanya tuxcut . tuxcut ini fungsinya seperti netcut ,dan tuxcut mempunyai kelebihan untuk memproteksi dirinya dari netcut lainnya

1. Installasi Ettercap :
•Pada terminal ketikkan perintah :
sudo apt-get install ettercap
perintah di atas untuk menginstall ettercap berbasis CLI (Command Line Interfaces), untuk ettercap berbasis GUI ketikkan perintah di bawah ini :
sudo apt-get install ettercap-gtk

untuk melihat petunjuk lebih lengkap mengenai cara penggunaan ettercap, ketikkan perintah :
man ettercap
atau
ettercap –help

berikut ini daftar perintah yang terdapat pada ettercap :

Sniffing and Attack options:
-M, –mitm perform a mitm attack
-o, –only-mitm don’t sniff, only perform the mitm attack
-B, –bridge use bridged sniff (needs 2 ifaces)
-p, –nopromisc do not put the iface in promisc mode
-u, –unoffensive do not forward packets
-r, –read read data from pcapfile
-f, –pcapfilter set the pcap filter
-R, –reversed use reversed TARGET matching
-t, –proto
sniff only this proto (default is all)

User Interface Type:
-T, –text use text only GUI
-q, –quiet do not display packet contents
-s, –script issue these commands to the GUI
-C, –curses use curses GUI
-G, –gtk use GTK+ GUI
-D, –daemon daemonize ettercap (no GUI)

Logging options:
-w, –write write sniffed data to pcapfile
-L, –log log all the traffic to this
-l, –log-info log only passive infos to this
-m, –log-msg log all the messages to this
-c, –compress use gzip compression on log files

Visualization options:
-d, –dns resolves ip addresses into hostnames
-V, –visual
set the visualization format
-e, –regex visualize only packets matching this regex
-E, –ext-headers print extended header for every pck
-Q, –superquiet do not display user and password

General options:
-i, –iface use this network interface
-I, –iflist show all the network interfaces
-n, –netmask force this on iface
-P, –plugin
launch this
-F, –filter load the filter (content filter)
-z, –silent do not perform the initial ARP scan
-j, –load-hosts load the hosts list from
-k, –save-hosts save the hosts list to
-W, –wep-key use this wep key to decrypt wifi packets
-a, –config use the alterative config file

Standard options:
-U, –update updates the databases from ettercap website
-v, –version prints the version and exit
-h, –help this help screen

2. Untuk mengcapture paket data jaringan pada ettercap berbasis CLI,kami menggunakan perintah :
Sudo –i
Perintah di atas agar masuk dalam mode root

Perintah selanjutnya :
ettercap –i eth1 –T –M arp /192.168.1.113/ // -w testsniffing4.cap

eth1 merupakan interface dari wlan0 yang terbaca sebagai eth1 pada wireless card laptop yang kami gunakan.

Dapat dilihat pada gambar di bawah ini :

Setelah mengetikkan perintah di atas,proses capture paket data jaringan akan berjalan.

Untuk menghentikan proses capture paket data jaringan, tekan ctrl+c
Terlihat seperti gambar di bawah ini :

3. Langkah selanjutnya adalah menganalisa hasil capture paket data jaringan dari ettercap tadi dengan menggunakan wireshark.
Lakukan langkah-langkah di bawah ini :
- Buka terminal, ketikkan perintah : sudo –i
- Jalankan wireshark, ketikkan perintah : sudo wireshark
- Klik open previously captured file
- cari file hasil capture tadi pada directory root, kemudian klik open

- pada kolom filter, ketikkan http
- cari paket data yang infonya bertype POST
- Klik Line-based text data
Maka akan tampil seperti di bawah ini :

Untuk mengetahui informasi lebih detail yang terdapat pada paket data jaringan di atas, klik kanan pada paket data tersebut, kemudian pilih follow TCP Stream
Maka akan tampil seperti gambar di bawah ini :

Untuk sniffing selanjutnya, kami menggunakan ip target : 192.168.1.122
Terlihat pada gambar di bawah ini :

Setelah mengetikkan perintah di atas, proses capture paket data jaringan akan berjalan.
Capture paket data jaringan dapat dihentikan dengan menekan ctrl+c
Terlihat pada gambar di bawah ini :

Lakukan analisa pada hasil paket data jaringan seperti pada langkah no. 3 di atas
Hasilnya dapat dilihat pada gambar – gambar di bawah ini :




Referensi :
http://jaringankomputer.wordpress.com/2009/07/11/meng-capture-menggunakan-wireshark/
http://rungga.blogspot.com/2011/06/tutorial-ettercap.html
http://arkusada.blogspot.com/
http://guruu.tk/?p=263
http://www.backtrack-linux.org/forums/beginners-forum/39291-fatal-mitm-attacks-cant-used-unconfigured-interfaces.html
http://www.backtrack-linux.org/forums/experts-forum/1447-clarification-needed-ettercap-command-line-usage.html
http://forum.s-t-d.org/viewtopic.php?id=2594


NB : Postingan ini hanya bertujuan untuk sarana pembelajaran saja bukan untuk disalahgunakan. jadi bila terjadi apapun bukan tanggung jawab pemosting.

Selasa, 23 Agustus 2011

Tutorial Footprinting Dengan Nmap

Nama Kelompok :

I Made Indra Purnawan (080010001)
I Made Wira Dharma (080010243)
I Ketut Alit Surya Dinata (080010244)
I Kadek Suradira Wijaya (080010676)


Tutorial Footprinting dengan Nmap



1. Jika dalam Ubuntu sudah terinstal nmap dan ingin menginstal nmap dengan tipe file tar.gz maka nmap harus diuninstall dengan perintah sudoapt-get remove nmap dengan hasil sebagai berikut:




2. Setelah ter-unistall, Lakukan penginstalan build-esential yang berguna untuk mengekstrak file tar.gz dengan perintah sudo apt-get install build-essential dengan hasil sebagai berikut :





Jika Anda menggunakan ubuntu versi 11 ke atas, maka tidak perlu menginstall build-essential lagi, karena sudah terdapat dalam sistem ubuntu versi 11 ke atas.

3. Setelah ter-install build-essential selesai download file nmap.tar.gz di http;//nmap.org/download.html. pada percobaan ini digunakan nmap_5.00.orig.tar.gz, lalu untuk memudahkan proses extraksi file tersebut pindahkan ke home folder dan melakukan langkah extrak melalui terminal dengan perintahtar xvjf nmap-5.51.tar.bz2

Dapat dilihat pada gambar di bawah ini :









Setelah terekstrak lakukan langkah configure dengan perintah :
cd nmap-5.51
./configure

Atau seperti gambar dibawah :





Setelah terconfigure maka ketik perintah: make



Setelah proses make berjalan ketikan perintah sudo su untuk masuk ke root, lalu lakukan langkah penginstallan nmap dengan ketikan perintah make install
Seperti pada gambar di bawah ini :



Setelah melakukan make install maka akan tampil, bahwa nmap telah terinstall dengan sukses seperti pada gambar berikut:



4.Setelah nmap teristall kita bisa melakukan proses scan pertama dengan mengetahui IP address dari domain yang ingin kita scan atau mengetahui informasi yang dimiliki domain tersebut dengan ketik perintah host nama domain
Seperti ditunjukan pada gambar berikut :



Dengan alamat ip tersebut kita bisa melakukan scan untuk mengetahui lebih lanjut mengenai web target kita. Sebelum memulai, untuk mengetahui fasilitas apa yang tersedia dari Nmap. Untuk itu dengan melihat option yang tersedia. Untuk mengetahui option yang tersedia dari Nmap, cukup memanggil Helpnya dengan perintah; nmap –h
Contoh:
A. Mengetahui informasi yang dimiliki www.mastergomaster.com
Dengan perintah : nmap –sS –O –P0
mastergomaster.com
bisa mengetahui port yang dipakai, status menyala atau tidak, ip adressnya,servis dan lain-lain seperti ditunjukan pada gambar. Tapi sebelumnya kita harus masuk ke root terlebih dahulu dengan perintah; sudo -i .selanjutnya baru-lah menggunakan perintah scan nmap



B. Mengetahui informasi yang dimiliki www.kedaibola.comDengan perintah : nmap –sS –O –P0 www.kedaibola.com bisa mengetahui port yang dipakai, status menyala atau tidak, ip adressnya,servis dan lain-lain seperti ditunjukan pada gambar :



C. Mengetahui informasi yang dimiliki www.tabloid.com Dengan perintah ; nmap –sS –O –P0 www.tabloid.com seperti ditunjukan gambar dibawah :



D. Untuk mengetahui informasi www.scanme.nmap.org dengan cara yang sedikit berbeda yaitu dengan perintah nmap –A –T4 www.scanme.nmap.org dimana arti dari –A disini adalah untuk memeriksa system operasi dan versi,pemeriksaan skrip.dan traceroute; -T4 untuk eksekusi lebih cepat ;dan dua buah nama host target.dengan hasil yang diberikan sebagai berikut:



5. Selanjutnya kita bisa juga mengetahui informasi-informasi lain yang dimiliki target dengan perintah whois domain atau IP targetatau bisa melalui website di www. netcraft.com . contoh penggunaan whois adalah;
Catatan : Dalam gambar dibawah sudah diedit karena mendapatkan informasi yang sangat panjang jadi hasilnya sedikit diubah,dan diambil yang penting-pentingnya saja.
a. Untuk mengetahui informasi www.mastergomaster.com



b. Untuk mengetahui informasi www.kedaibola.com



c. Untuk mengetahui informasi www.tabloid.com



d. Untuk mengetahui informasi www.scanme.com



Dari ke-4 contoh diatas dapat dirangkum dengan table dibawah ini yaitu :









Lebih Jauh tentang Jenis Port Scanning pada Nmap
Setiap pengelola sistem memiliki strategi pengamanan yang berbeda-beda.Untuk itu cara-cara yang telah dijelaskan di atas mungkin tidak selalu dapat diterapkan.Nmap sendiri memberikan beberapa teknik port scanning untuk menghadapi “medan” tempur yang berbeda-beda.Untuk itu terkadang dibutuhkan latihan dan kreatifitas yang tinggi bagi Anda yang ingin menembus sistem pertahanan lawan tanpa diketahui pemiliknya (Oops, kami tidak menyarankan apalagi memprovokasi Anda lho). Diatas telah diperkenalkan beberapa option dari Nmap yang merupakan teknik scan. Berikut ini teknik scan lanjutan yang dapat Anda manfaatkan sesuai dengan medan tempur yang ada:

a. TCP connect scan -sT
Jenis scan ini terhubung ke port host target dan menyelesaikan three-way handshake (SYN, SYN/ACK dan ACK) Scan ini mudah terdeteksi oleh pengelola host target.

b. TCP SYN Scan -sS
Teknik ini dikenal sebagai half-opening scanning karena suatu koneksi penuh tidak sampai terbentuk. Suatu paket SYN dikirimkan ke port host target. Bila SYN/ACK diterima dari port host target, maka Anda dapat mengambil kesimpulan bahwa port tersebut dalam status listening. Jika RST/ACK Anda terima, biasanya menunjukkan bahwa port tersebut tidak listening. Suatu RST/ACK akan dikirim oleh mesin yang melakukan scanning sehingga koneksi penuh tidak akan terbentuk. Teknik ini bersifat siluman dibandingkan dengan TCP koneksi penuh dan tidak akan tercatat pada log host target.

c. TCP FIN scan –sF
Teknik ini mengirimkan suatu paket FIN ke port host target. Berdasarkan RFC 793, host target akan mengirim balik suatu RST untuk setiap port yang tertutup. Teknik ini hanya dapat dipakai pada stack TCP/IP berbasis Unix.

d. TCP Xmas tree scan -sX
Teknik ini mengirimkan suatu paket FIN, URG dan PUSH ke port host target. Berdasarkan RFC 793, host target akan mengembalikan suatu RST untuk semua port yang tertutup.

e. TCP Null scan -sN
Teknik ini membuat off semua flag. Berdasarkan RFC 793, host target akan mengirim balik suatu RST untuk semua port yang tertutup.

f. TCP ACK scan -sA
Teknik ini digunakan untuk memetakan set aturan firewall. Hal ini sangat membantu Anda dalam menentukan apakah firewall yang dipergunakan adalah simple packet filter yang membolehkan hanya koneksi penuh saja (koneksi dengan bit set ACK) atau suatu firewall yang menjalankan advance packet filtering.

g. TCP Windows scan -sW
Teknik ini dapat mendeteksi port-port terbuka maupun terfilter/tidak terfilter pada sistem-sistem tertentu seperti pada AIX dan Free BSD sehubungan dengan anomali dari ukuran windows TCPnya.

h. TCP RPC Scan -sR
Teknik ini spesifik hanya pada sistem Unix dan digunakan untuk mendeteksi dan mengidentifikasi port RPC dan program serta nomor versi yang berhubungan dengannya

i. UDP Scan -sU
Teknik ini mengirimkan suatu paket UDP ke port host target. Bila port host target memberikan response pesan berupa “ICMP port unreachable” artinya port ini tertutup. Sebaliknya bila tidak menerima pesan tersebut, Anda dapat menyimpulkan bahwa port tersebut terbuka.Karena UDP dikenal sebagai connectionless protocol, maka akurasi teknik ini sangat bergantung pada banyak hal sehubungan dengan penggunaan jaringan dan sistem reources lainnya.
Apapun teknik port scan yang akan Anda pergunakan, Anda perlu berhati-hati dalam menggunakan terhadap host target. Tindakan Anda melakukan port scanning ke host target yang bukan wewenang Anda dapat saja menimbulkan reaksi yang mungkin tidak Anda duga sebelumnya dari pengelola host target seperti serangan balik, pemblokiran terhadap acount oleh ISP dan sebagainya. Jadi sebaiknya Anda menguji coba pada sistem Anda sendiri.

Enam status port yang dikenali Nmap

open
Sebuah aplikasi secara aktif menerima koneksi paket TCP atau UDP pada port ini.Menemukan port terbuka ini seringkali merupakan tujuan utama scanning port.Orang dengan pikiran keamanan (security-minded) tahu bahwa setiap port terbuka merupakan celah untuk serangan.Penyerang dan pen-testers ingin mengeksploitasi port terbuka, namun administrator berusaha menutup atau melindungi mereka dengan firewall tanpa mengganggu user yang berhak. Port terbuka juga menarik bagi scan bukan keamanan karena mereka memberitahu layanan yang dapat digunakan pada jaringan.

closed
Port tertutup dapat diakses (ia menerima dan menanggapi paket probe Nmap), namun tidak ada aplikasi yang mendengarkan padanya. Mereka bermanfaat dengan menunjukkan bahwa host up pada alamat IP tersebut (host discovery, atau ping scanning), dan sebagai bagian deteksi SO. Oleh karena port tertutup dapat dijangkau, bermanfaat untuk mencoba scan di waktu yang lain jikalau port tersebut terbuka. Administrator mungkin perlu mempertimbangkan untuk memblok port tersebut dengan firewall. Lalu mereka akan muncul dalam status filtered, yang akan didiskusikan.

filtered
Nmap tidak dapat menentukan apakah port terbuka karena packet filtering mencegah probenya mencapai port. Filter ini dapat dilakukan oleh device firewall, aturan pada router, atau software firewall pada host. Port ini membuat penyerang frustrasi karena mereka memberikan sedikit informasi. Terkadang mereka menanggapi dengan pesan kesalahan ICMP misalnya tipe 3 kode 13 (tujuan tidak dapat dicapai: komunikasi dilarang secara administratif), namun yang lebih umum adalah filter yang hanya men-drop probe tanpa memberi tanggapan. Hal ini memaksa Nmap berusaha beberapa kali untuk memastikan probe tidak di-drop akibat jaringan yang padat. Hal ini sangat memperlambat proses scan.

unfiltered
Status unfiltered berarti bahwa port dapat diakses, namun Nmap tidak dapat menentukan apakah ia open atau closed. Hanya scan ACK, yang digunakan untuk mengetahui aturan firewall, menggolongkan port ke dalam status ini. Pemeriksaan port unfiltered dengan tipe pemeriksaan lain seperti Window scan, SYN scan, atau FIN scan, dapat membantu mengetahui apakah port terbuka.

open|filtered
Nmap menganggap port dalam status ini bila ia tidak dapat menentukan apakah port open atau filtered. Hal ini terjadi untuk jenis pemeriksaan ketika port terbuka tidak memberi respon. Tidak adanya tanggapan dapat pula berarti bahwa packet filter men-drop probe atau respon yang diberikan. Sehingga Nmap tidak dapat mengetahui dengan tepat apakah port terbuka atau difilter. Scan UDP, IP protocol, FIN, NULL, dan Xmas mengklasifikasikan port dengan cara ini.

closed|filtered
Status ini digunakan ketika Nmap tidak dapat menentukan apakah port tertutup atau di-filter.Ia hanya digunakan pada scan idle ID IP.

Selasa, 23 Juni 2009

RANGKUMAN KULIAH ALGORITMA II

1.Struktur Data dan Algoritma.

Algoritma adalah urutan langkah logis untuk memecahkan masalah. Dan Struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.

2. Materi yang Dipelajari dalam Mata Kuliah Algoritma dan Struktur Data II, antara lain :

Array
Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Elemen-elemen array tersusun secara sekuensial dalam memori computer. Terdapat beberapa jenis array, yaitu : Array satu dimensi, array dua dimensi, tiga dimensi ataupun multi dimensi.
- Array Satu Dimensi
Array satu dimensi adalah kumpulan elemen-elemen identik yang tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data yang sama, tapi isi dari elemen tersebut boleh berbeda.

Bentuk umumnya :
<tipe data>NamaArray[n] = {elemen0,elemen1,elemen2,....n}

n = jumlah elemen.

- Array Dua Dimensi
Array dua dimensi adalah array yang terdiri dari beberapa baris dan beberapa kolom elemen yang bertipe sama. Array dua dimensi sering digambarkan sebagai sebuah matriks.

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


Pointer
Terdapat beberapa definisi Pointer, antara lain :
- Penunjuk
- Biasanya digunakan dalam mengakses elemen array
- Pengiriman argument pada fungsi(struct).
- Pengiriman array dan string pada fungsi.
- Manipulasi memory (alamat dimana data tersimpan).
- Untuk membuat Linked List.

Bentuk Umum :
<tipe data>namaVariabel;
Contoh :
Int*px;

Variabel px merupakan pointer. Tipe data int berarti alamat memori yang ditunjuk oleh px dimaksudkan untuk berisi data bertipe int.


Structure
Structure 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, tetapi tetap berada dalam satu kesatuan dan dapat diakses secara individual.

Bentuk umum :
Struct namastruct
{
<tipe data> field1;
<tipe data> field2;
<tipe data> field3;
};
Contoh :
Struct mahasiswa
{
char nim[12];
char nama[25];
char alamat[45];
float ipk;
};

Linked List
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemenya terdiri dari dua bagian.

Bentuk umum :
Typedef struct telmlist
{
Infotype info;
Address next;
}elmtlist;

Infotype: sebuah tipe terdefinisi yang menyimpan onformasi sebuah elemen list.
Next : address dari elemen berikutnya.

Linked List dapat dibagi menjadi dua jenis,yaitu :
- Single Linked List, adalah susunan berupa untaian yang berisi sebuah variable pointer, dan bersifat satu arah.
Pembuatan single linked list menggunakan dua metode :
- LIFO (Last IN First Out), aplikasinya : Stack.
- FIFO (First IN First Out), aplikasinya : Queue.

- Double Linked List, adalah linked list yang berpointer ganda dan bersifat mullti arah.

Stack
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO, benda terakhir yang masuk dalam stack akan menjadi benda yang pertama dikeluarkan dari stack. Operasi-operasi yang terdapat dalam stack, antara lain :
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
Retrieve Untuk mendapatkan nilai dari item teratas.

Queue
Queue berarti antrian. Queue merupakan salah satu contoh aplikasi pembuatan double linked list. Operasi-operasi yang terdapat dalam Queue, sebagai berikut :
- EnQueue Memasukkan data ke dalam antrian.
- DeQueue Mengeluarkan data terdepan dari antrian.
- Clear Menghapus seluruh antrian.
- IsEmpty Memeriksa apakah antrian kosong.
- IsFull Memeriksa apakah antrian penuh.

Tree
Tree merupakan kumpulan node/simpul dengan elemen khusus yang disebut Root. Node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lain (disebut subtree ). Istilah-istilah umum dalam Tree :
- Jenis-Jenis Tree :
• Binary Tree.
• Full Binary Tree.
• Complete Binary Tree.
• Skewed Binary tree.

3. Kesimpulan
Algoritma adalah urutan langkah logis untuk memecahkan masalah. Dan Struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.
Materi yang terdapat dalam mata kuliah algoritma dan struktur data II meliputi : Array, Pointer, Structure, Linked list,stack, Queue, dan Tree.
Array adalah Struktur data yang memiliki banyak elemen di dalamnya, dengan masing-masing elemen memiliki tipe data yang sama.
Pointer adalah type data khusus yang berfungsi menampung bilangan tertentu yang menunjuk pada lokasi memori tertentu. Structure adalah kumpulan elemen-elemen data yang digabungkan menjadi satu kesatuan. Linked list adalah list yang didesain dengan cara mendefinisikan sebuah elemen yang memiliki hubungan atau link dengan elemen lain yang dihubungkan dengan elemen yang lain lagi. Stack adalah list yang besifat LIFO. Queue adalah struktur list dengan sifat FIFO, cara kerjanya seperti antrian manusia. Tree : suatu struktur data yang setiap elemen terhubung sedemikian rupa sehingga berbentuk seperti pohon.

4. Kesan dan Pesan Kepada Pengajar
Kesan : materi yang disampaikan jelas dan mudah dimengerti ditambah dengan cerita-cerita lucu dari Pak Dody membuat suasana kelas menjadi lebih hidup dan membuat rasa ngantuk hilang seketika.
Pesan : -

Kamis, 04 Juni 2009

Tugas Praktek Algo

I Made Wira Dharma
080010243
P081


POINTER

Dikutip dari :mas-devid.blogspot.com

Pengertian Pointer

Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.



Operator Pointer

Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *.
Operator &


Operator & merupakan operator alamat. Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address of". Contoh :

ted = &andy;

Penulisan tersebut berarti akan memberikan variable ted alamat dari variable andy. Karena variabel andy diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :

andy = 25;

fred = andy;

ted = &andy;


Operator *

Operator * merupakan operator reference. Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti "value pointed by". Contoh :

beth = *ted;

(dapat dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25, karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.


Ekspresi dibawah ini semuanya benar, perhatikan :

andy = 25;

&andy = 1776;

ted = 1776;

*ted = 25;




Ekspresi pertama merupakan assignation bahwa andy = 25;. Kedua, menggunakan operator alamat (address/derefence operator (&)), sehingga akan mengembalikan alamat dari variabel andy. Ketiga bernilai benar karena assignation untuk ted adalah ted = &andy;. Keempat menggunakan reference operator (*) yang berarti nilai yang ada pada alamat yang ditunjuk oleh ted, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai benar :

*ted = andy;



Deklarasi Pointer

Seperti halnya variabel lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Bentuk umum deklarasi pointer adalah :

\



Dimana Tipe_data
merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer-nya. Contoh :

1. Mensubstitusikan address sebuah variabel ke pointer dengan memakai address operator &

int x;
int *ptr;
ptr = &x;

2. Mensubstitusikan address awal sebuah array ke pointer

char t[5];
char *ptr;
ptr = t;

3. Mensubstitusikan address salah satu elemen array dengan address operator

char t[5] ;
char *ptr;
ptr = &t[3];

4. Mensubstitusikan address awal character string ke pointer char

char *ptr;
ptr = "jakarta"

5. Mensubstitusikan NULL pada pointer. NULL ada pointer kosong, menunjukkan suatu status dimana pointer itu belum diinisialisasikan dengan sebuah address tertentu.

6. Memakai fungsi MALLOC.




LINKED LIST


Dikutip dari : http://hatma.info/download/struktur_data/
linked%20list%20VS%20array.doc.


Pengertian Linked list :
• sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian
• struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.

X
Y
Null

Bentuk Umum :
Infotype sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list
Next address dari elemen berikutnya (suksesor)
Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi :
Sebelum digunakan harus dideklarasikan terlebih dahulu :
Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :
Beberapa Definisi :
1. List l adalah list kosong, jika First(L) = Nil
2. Elemen terakhir dikenali, dengan salah satu cara adalah karena
Next(Last) = Nil
Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nil Null
Single Linked List

Pada gambar di atas tampak bahwa sebuah data terletak pada sebuah lokasi memori area. Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List (NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya Linked List pada titik akhirnya akan menunjuk ke NULL).
Pembuatan Single Linked List dapat menggunakan 2 metode:
• LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
• FIFO (First In First Out), aplikasinya : Queue (Antrean)
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, dapat menggunakan metode double linked list. Linked list ini dikenal dengan nama Linked list berpointer Ganda atau Double Linked List.
Circular Double Linked List
Merupakan double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran.
Operasi-Operasi yang ada pada Linked List
• Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
• 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 yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.
A. STACK DENGAN SINGLE LINKED LIST
Selain implementasi stack dengan array seperti telah dijelaskan sebelumnya, stack daat diimplementasikan dengan single linked list. Keunggulannya dibandingkan array adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori.
Misalnya 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.
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
• 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.

B. QUEUE DENGAN DOUBLE LINKED LIST
Selain menggunakan array, queue juga dapat dibuat dengan linked list. Metode linked list yang digunakan adalah double linked list.
Operasi-operasi Queue dengan Double Linked List
• IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau tidak. Jika benar berarti queue masih kosong.
• IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.
• EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan tail mula-mula meunjukkan ke NULL).
• DeQueue
Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).

Stack Dengan Linked List Stack Dengan Array operasi : create() procedure create;
begin
top := nil ;
end;
procedure create;
begin
top := 0;
end;
operasi : empty() function empty : boolean;
begin
empty := false ;
if top = nil then empty := true ;
end;
function empty : boolean;
begin
empty := false ;
if top = 0 then empty := true ;
end;
operasi : full() tidak ada istilah full pada stack.
program tidak menentukan jumlah elemen stack yang mungkin ada. kecuali dibatasi oleh pembuat program dan jumlah memory yang tersedia. tempat akan sesuai dengan banyaknya elemen yang mengisi stack.
function full : boolean;
begin
full := false ;
if top = max then full := true ;
end;
operasi : push() procedure push (elemen : typedata) ;
var now:point ;
begin
now(now) ;
now^.isi := elemen ;
if empty then
now^.next := nil ;
else
now^.next := top ;
top := now ;
end;
procedure push (elemen : typedata) ;
begin
if not full then
begin
top := top + 1 ;
stack [top] := elemen ;
end;
end;
operasi : pop() procedure pop (var elemen : typedata) ;
var now:point ;
begin
if not empty then
begin
elemen := now^.isi ;
now := top ;
top := top^.next ;
dispose(now) ;
end;
end;
procedure pop (elemen : typedata) ;
begin
if not empty then
begin
elemen := stack [top] ;
top := top – 1 ;
end;
end;
operasi : clear procedure clear ;
var trash : typedata ;
begin
while not empty do pop(trash) ;
end;
procedure clear ;
begin
top := 0 ;
end;



__Sorting Source Code__

#include <iostream.h>
#include <conio.h>

int data[100],data2[100];
int n;

void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j--)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<"bubble sort selesai!"<<endl;
}

void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<"exchange sort selesai!"<<endl;
}

void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<"selection sort selesai!"<<endl;
}

void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
cout<<"insertion sort selesai!"<<endl;
}

void QuickSort(int L, int R) //the best sort i've ever had :)
{
int i, j;
int mid;

i = L;
j = R;
mid = data[(L+R) / 2];

do
{
while (data[i] < mid) i++;
while (data[j] > mid) j--;

if (i <= j)
{
tukar(i,j);
i++;
j--;
};
} while (i < j);

if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}


void Input()
{
cout<<"Masukkan jumlah data = "; cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke-"<<(i+1)<<" = "; cin>>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<"Data : "<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}

void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<"Data sudah teracak!"<<endl;
}

void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<"Program Sorting Komplit!!!"<<endl;
cout<<"*********************************************"<<endl;
cout<<" 1. Input Data"<<endl;
cout<<" 2. Bubble Sort"<<endl;
cout<<" 3. Exchange Sort"<<endl;
cout<<" 4. Selection Sort"<<endl;
cout<<" 5. Insertion Sort"<<endl;
cout<<" 6. Quick Sort"<<endl;
cout<<" 7. Tampilkan Data"<<endl;
cout<<" 8. Acak Data"<<endl;
cout<<" 9. Exit"<<endl;
cout<<" Pilihan Anda = "; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<"quick sort selesai!"<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}



source code program Sequential
Yang datanya telah diinputkan di source code.

#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int data[8] = {8,10,6,-2,10,7,1,100};
int cari,index;
int ketemu=0;
cout<<"masukkan data yang ingin dicari = ";
cin>>cari;
for(int i=0;i<8;i++)
{
if(data[i] == cari)
{
ketemu=1;
index = i;
break;
}
}
if(ketemu == 1)
{
cout<<"Data ada!"<<endl;
cout<<"Data terletak di index ke - "<<index;
}
else cout<<"Data Tidak ada!"<<endl;
getch();
}

source code program Sequential
Yang datanya telah diinputkan dari user.

#include<iostream.h>
#include<conio.h>

void main()
{
clrscr();
int data[100],n;
int cari,index;
int ketemu=0;

cout<<"Masukkan jumlah data : "; cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke-"<<(i+1)<<" = "; cin>>data[i];

}
cout<<"Masukkan data yang ingin di cari = ";
cin>>cari;

for(int i=1;i<=100;i++)
{
if(data[i]==cari)
{
ketemu=1;
index=i;
break;
}
}

if(ketemu==1)
{
cout<<"Data ada !"<<endl;
cout<<"Data terletak di index ke-"<<index;
}
else cout<<"Data Tidak ada !"<<endl;
getch();
}

source code program Binary Searching

#include<iostream.h>
#include<conio.h>

int data[10] = {1,3,4,7,12,25,40,65,78,90}; //variabel global

int binary_search(int cari)
{
int l,r,m;
int n = 10;
l = 0;
r = n-1;
int ketemu = 0;
while(l<=r && ketemu==0)
{
m = (l+r)/2;
if( data[m] == cari )
ketemu = 1;
else
if (cari < data[m])
r = m-1;
else l = m+1;
}
if(ketemu == 1) return 1; else return 0;
}

void main()
{
clrscr();
int cari,hasil;
cout<<"masukkan data yang ingin dicari = ";
cin>>cari;
hasil = binary_search(cari);
if(hasil == 1)
{
cout<<"Data ada!"<<endl;
}
else
if(hasil == 0)
cout<<"Data Tidak ada!"<<endl;
getch();
}

Algoritma Sorting
ada beberapa Algoritma Sorting, yaitu :
1.Insertion Sort
Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu.
Anggaplah anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling
kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja,sebutlah meja
ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian
kita mempunyai meja yang lain,meja kedua, dimana kartu yang diurutkan akan diletakkan.Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama
dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan
dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang
sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu
pada meja pertama telah diletakkan berurutan pada meja kedua.
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi
dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja
kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan
kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah
diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang
tersisa pada bagian array yang belum diurutkan.

2.Selection Sort
Jika anda diminta untuk membuat algoritma sorting tersendiri, anda mungkin akan
menemukan sebuah algoritma yang mirip dengan selection sort. Layaknya insertion
sort, algoritma ini sangat rapat dan mudah untuk diimplementasikan. Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket kartu. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending. Pada awalnya, kartu tersebut akan disusun secara linier pada sebuah meja dari kiri ke kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudian tukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan kartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi langkah–langkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dan dapat digeser dengan kartu yang bernilai lebih rendah.Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi

3.Merge Sort
Sebelum mendalami algoritma merge sort, mari kita mengetahui garis besar dari
konsep divide and conquer karena merge sort mengadaptasi pola tersebut.
Pola Divide and Conquer
Beberapa algoritma mengimplementasikan konsep rekursi untuk menyelesaikan
permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah,
kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan
utama.
Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah.
- Divide
Memilah masalah menjadi sub masalah
- Conquer
Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut
cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan
lebih efektif
- Kombinasi
Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju
penyelesaian atas permasalahan utama

4.Quicksort
Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini juga
berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini
hanya mengikuti langkah – langkah sebagai berikut :
1. Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r]
dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q]
dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan
elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada
elemen q merupakan salah satu bagian dari prosedur pemisahan.
2. Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif
Pada algoritma quicksort, langkah ”kombinasi” tidak di lakukan karena telah terjadi
pengurutan elemen – elemen pada sub-array

Algoritma Binary Search

Binary Search adalah algoritma pencarian yang lebih efisien daripada algorima Sequential Search. Hal ini dikarenakan algoritma ini tidak perlu menjelajahi setiap elemen dari tabel. Kerugiannya adalah algoritma ini hanya bisa digunakan pada tabel
yang elemennya sudah terurut baik menaik maupun menurun.Pada intinya, algoritma ini menggunakan prinsip divide and conquer, dimana sebuah masalah atau tujuan diselesaikan dengan cara mempartisi masalah menjadi bagian yang lebih kecil. Algoritma ini membagi sebuah tabel menjadi dua dan memproses satu bagian dari tabel itu saja.
Algoritma ini bekerja dengan cara memilih record dengan indeks tengah dari tabel
dan membandingkannya dengan record yang hendak dicari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi dua dan bagian tabel yang bersesuaian akan diproses kembali secara
rekursif.

Rabu, 13 Mei 2009

Artikel HTML

<meta equiv="Content-Type" content="text/html; charset=utf-8">

Hypertext markup language

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas


HTML (HyperText Markup Language)

Ekstensi berkas

.html, .htm

Jenis MIME

text/html

Type code

TEXT

Uniform Type Identifier

public.html

Dikembangkan oleh

World Wide Web Consortium

Jenis format

Markup language

Pengembangan dari

SGML

Dikembangkan menjadi

XHTML

Standar

W3C HTML 4.01
W3C HTML 3.2

HyperText Markup Language (HTML) 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).

Versi terakhir dari HTML adalah HTML 4.01, meskipun saat ini telah berkembang XHTML yang merupakan pengembangan dari HTML.

Pendahuluan

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: TAMPIL TEBAL. Tanda digunakan untuk mengaktifkan instruksi cetak tebal, diikuti oleh teks yang ingin ditebalkan, dan diakhiri dengan tanda untuk menonaktifkan cetak tebal tersebut.

Markup/Tanda

Secara garis besar, terdapat 4 jenis elemen dari HTML:

  • structural. tanda yang menentukan level atau tingkatan dari sebuah teks 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, boldface 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, Wikipedia akan menampilkan Wikipedia sebagai sebuah hyperlink ke URL tertentu),
  • Elemen widget yang membuat objek-objek lain seperti tombol (

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 dari standar HTML

  • HTML 2.0 â (RFC 1866) disetujui sebagai standar 22 September 1995,
  • HTML 3.2 â 14 Januari 1996,
  • HTML 4.0 â 18 Desember 1997,
  • HTML 4.01 (minor fixes) â 24 Desember 1999,
  • ISO/IEC 15445:2000 ("ISO HTML", berdasar pada HTML 4.01 Strict) â 15 Mei 2000.

Senin, 29 Desember 2008

TIPS DAN TRIK MERAWAT LAPTOP

Laptop atau Notebook bukanlagi barang yang masuk kategori barang mewah dengan semakin membanjirnya produk-produk laptop baik yang produksi pabrikan resmi atau yang berupa “laptop kanibal” dengan harga yang bervariasi pula tergantung kantong kita tentunya.
Banyak dari kita yang mungkin hanya bisa mengoperasikan laptop tapi kurang mengetahui bagaimana agar laptop bisa terawat dengan baik dan berumur panjang.
Berikut beberapa tips merawat laptop yang bisa Anda praktekkan

Membersihkan “Keyboard”
Keyboar laptop gampang sekali kotor, entah karena jari tangan yang berminyak, abu rokok, remah-remah roti, atau debu. Ambil kuas dan sapukan ke sela-sela tombol untuk mengeluarkan kotoran, atau gunakan vacuum cleaner portabel untuk menyedot debu yang ada. Bersihkan permukaan tombol kibor dengan kain yang dibasahi cairan pembersih kaca. Gunakan proteksi pelindung kibor untuk mencegah kotoran.

Mengelap Layar
Jangan sembarangan menggunakan cairan pembersih pada layar, pakailah pembersih kaca. Semprotkan pada kain halus atau katun, lalu poles layar monitor. Jangan menyemprotkan langsung pada layar, karena bisa menyebabkan pemukaan LCD (Liquid Crystal Display) menjadi belang. Bersihkan secara searah, misalnya dari atas ke bawah atau dari kiri ke kanan, serta jangan menekannya terlalu keras.

Hindari Panas Matahari
Jangan meninggalkan notebook di dalam mobil yang diparkir di bawah sinar matahari. Panas yang berlebihan di dalam mobil bisa menyebabkan kerusakan komponen-komponen notebook.

Menghindari Goresan
Amankan benda-benda tajam dari sekitar notebook. Taruh lapisan pelindung di atas kibor sebelum Anda menutup case, agar layar tak tergores. Apabila Anda hendak bepergian, masukkan notebook pada wadah/tas yang telah tersedia.

Case Cemerlang
Tangan yang kotor dan berminyak juga menjadi penyebab case tidak lagi mengilat. Pakai deterjen nonzat alkalin dicampur air untuk membersihkannya. Bisa pula dengan pembersih multiguna untuk peranti elektronik, yang biasanya berupa busa. Semprotkan pada kain lap lembut, lalu gosok secara perlahan permukaan case.

Menyimpan notebook
Bila Anda akan menyimpan notebook dalam waktu lama, sebaiknya lepaskan baterai dan simpan dalam tempat yang sejuk dan kering, serta bersirkulasi udara cukup baik. Taruh silikon gel untuk menghindari jamur. Begitu ingin menggunakannya kembali, setrum baterai dengan cara mengisi dan mengosongkan sepenuhnya sebanyak tiga kali berturut-turut.

Hindari Medan Magnet
Untuk melindungi data yang ada di dalam hard disk, jangan letakkan peranti yang mengandung medan magnet/elektromagnet kuat di sekitar notebook. Peranti-peranti penghasil medan magnet, misalnya, spiker yang tidak berpelindung (unshielded speaker system) atau telepon selular. Sekiranya Anda ingin mengakses Internet menggunakan fasilitas infrared pada ponsel, letakkan ponsel dalam jarak sekitar 15 cm dari notebook.

Jangan Sembarangan Mendownload Software Gratis Dari Internet.
Terlebih lagi misalnya software yang seolah-olah sebagai suatu antivirus. Gunakan software-software yang telah Anda dapatkan dari paket laptop yang Anda beli. Risiko virus bisa merusak ke dalam laptop Anda jika Anda sembarangan menggunakan software dari internet. Jika Anda tetap ingin menggunakan software hasil download, maka pastikan sudah Anda scan software tersebut dengan antivirus yang Anda miliki.

Jangan Letakkan Laptop di Lantai.
Ketika laptop Anda di lantai, maka risiko laptop terinjak kaki orang, anak Anda, atau binatang peliharaan akan sangat besar. Anak kecil akan mengira laptop Anda mainan dan binatang peliharaan Anda bisa saja merusak bagian-bagian tertentu dari laptop. Selain itu laptop yang diletakkan di lantai akan cepat kotor oleh debu.

Tancapkan ke Stabilizer Listrik Laptop Anda.
Jika Anda sedang bekerja di laptop dengan menggunakan listrik (tanpa baterai), maka sebaiknya gunakan stabilizer yang bisa mencegah terjadinya tegangan listrik yang tidak stabil ke laptop Anda.

Jangan Letakkan Benda Apapun di Antara Keyboard dan Layar Laptop.
Seringkali penulis jumpai seseorang yang menggunakan laptop, kemudian meletakkan kertas-kertas di atas keyboard laptop, kemudian menutup laptopnya. Hal ini sangat berbahaya, karena risiko layar tergores menjadi besar. Tentunya Anda tidak ingin mengganti layar laptop gara-gara tergores bukan?

Jangan Letakkan Laptop Anda pada Permukaan yang Terlalu Empuk.
Misalnya laptop Anda letakkan pada sofa yang sangat empuk, sehingga laptop menjadi terlihat agak tenggelam di dalam sofa. Ini adalah sangat berbahaya, karena dapat menghambat keluarnya panas dari dalam laptop dan menjadikan laptop Anda kepanasan.

Berhati-hatilah Ketika Membawa Laptop Anda di Dalam Tas.
Jangan gunakan sembarang tas untuk membawa laptop Anda. Gunakan tas yang memang digunakan untuk laptop sehingga benda-benda lainnya tidak akan menggores bagian-bagian tertentu pada laptop.

Jangan Pernah Minum atau Makan atau Meletakkan Minuman yang Mengandung Cairan di Sekitar Laptop.
Ini sangatlah berbahaya, karena laptop sangat peka terhadap cairan yang mengenai laptop, misalnya saja cairan yang masuk ke dalam keyboard.

Jangan Pernah Berusaha untuk Membongkar Laptop Anda Sendiri.

Wira Dharma Blog © 2008. Design by :Yanku Templates Sponsored by: Tutorial87 Commentcute
This template is brought to you by : allblogtools.com Blogger Templates