Tampilkan postingan dengan label TIK. Tampilkan semua postingan
Tampilkan postingan dengan label TIK. Tampilkan semua postingan
Senin, 23 Mei 2016
Selasa, 30 September 2014
02.21
Unknown
Konsep
basis data
Basis data menyediakan
fasilitas atau mempermudah dalam menghasilkan informasi yang digunakan
oleh pemakai untuk mendukung pengambilan keputusan.
::: Contoh penggunaan Aplikasi basis data dalam dunia bisnis
1. Bank : Pengelolaan data nasabah, akunting, semua transaksi perbankan
2. Bandara : Pengelolaan data reservasi, penjadualan
::: Contoh penggunaan Aplikasi basis data dalam dunia bisnis
1. Bank : Pengelolaan data nasabah, akunting, semua transaksi perbankan
2. Bandara : Pengelolaan data reservasi, penjadualan
3. Universitas : Pengelolaan pendaftaran,
alumni
4. Telekomunikasi : Pengelolaan
data tagihan, jumlah pulsa
5. dan lainnya
Sistem
Pemrosesan File
Gambar. Sistem pemrosesa file untuk mahasiswa
Keterangan
:
1. File mahasiswa : Mhs (npm, nama, alamat, tgl_lahir)
2. MataKul (kd_mk, nama_mk, sks) File MataKuliah : MataKul (kd_mk, nama, sks)
3. Sebelumnya, sistem yang digunakan untuk mengatasi semua permasalahan universitas, perusahaan dan lainnya, menggunakan pengelolaan data secara tradisional dengan cara menyimpan record- record pada file-file yang terpisah, yang disebut juga sistem pemrosesan file. Dimana masing-masing file diperuntukkan hanya untuk satu program aplikasi saja
1. File mahasiswa : Mhs (npm, nama, alamat, tgl_lahir)
2. MataKul (kd_mk, nama_mk, sks) File MataKuliah : MataKul (kd_mk, nama, sks)
3. Sebelumnya, sistem yang digunakan untuk mengatasi semua permasalahan universitas, perusahaan dan lainnya, menggunakan pengelolaan data secara tradisional dengan cara menyimpan record- record pada file-file yang terpisah, yang disebut juga sistem pemrosesan file. Dimana masing-masing file diperuntukkan hanya untuk satu program aplikasi saja
Kelemahan
sistem pemrosesan file
1. Timbulnya data rangkap (redundancy data) dan Ketidakkonsistensi data (Inconsistency data)
1. Timbulnya data rangkap (redundancy data) dan Ketidakkonsistensi data (Inconsistency data)
Sejumlah informasi mungkin
memiliki duplikasi dalam beberapa file. Kerangkapan data dapat menyebabkan
pemborosan tempat penyimpanan dan biaya akases yang bertambah.
Inkonsistensi data, apabila
terjadi perubahan jumlah sks mata kuliah, sedangkan perubahan hanya diperbaiki
pada file mata kuliah dan tidak diperbaiki pada file mahasiswa. maka
mengakibatkan kesalahan dalam laporan nilai mahasiswa.
2.
Kesukaran dalam Mengakses Data
3. Data
terisolir (Isolation Data)
Karena data tersebar dalam berbagai file, dan
file-file mungkin dalam format – format yang berbeda, akan sulit menuliskan
program aplikasi baru untuk mengambil data yang sesuai
4. Masalah
Pengamanan ( Security Problem )
5. Data Dependence
Apabila terjadi perubahan atau
kesalahan pada program aplikasi maka pemakai tidak dapat mengakses data
Sistem Basis Data
Pada sistem ini record-record
data disimpan pada satu tempat yakni basis data dan diantara program aplikasi
maupun pemakai terdapat DBMS (Database Management System)
DEFINISI
Data adalah
1. representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, mahasiswa, pembeli), barang, hewan, peristiwa, konsep, keadaan, dan sebagainya yang direkam dalam bentu angka, huruf, simbol, teks, gambar, bunyi atau kombinasinya
2. Adalah fakta-fakta tentang segala sesuatu yang ada di dunia nyata yang dapat direkam dan disimpan pada media komputer (McFadden et al 1999)
1. representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, mahasiswa, pembeli), barang, hewan, peristiwa, konsep, keadaan, dan sebagainya yang direkam dalam bentu angka, huruf, simbol, teks, gambar, bunyi atau kombinasinya
2. Adalah fakta-fakta tentang segala sesuatu yang ada di dunia nyata yang dapat direkam dan disimpan pada media komputer (McFadden et al 1999)
Basis
Data
adalah sekumpulan data yang terintegrasi yang diorganisasikan untuk memenuhi kebutuhan para pemakai di dalam suatu organisasi
Koleksi dari data yang terorganisisr sedemikian rupa sehingga data mudah disimpan dan dimanupulasi ( diperbarui, dicari, diolah, dihapus)
adalah sekumpulan data yang terintegrasi yang diorganisasikan untuk memenuhi kebutuhan para pemakai di dalam suatu organisasi
Koleksi dari data yang terorganisisr sedemikian rupa sehingga data mudah disimpan dan dimanupulasi ( diperbarui, dicari, diolah, dihapus)
DEFINISI
1. DBMS (Database Management System) adalah Perangkat Lunak yang menangani semua pengaksesan ke basis data
2. Sistem Basis Data terdiri dari basis data dan DBMS
1. DBMS (Database Management System) adalah Perangkat Lunak yang menangani semua pengaksesan ke basis data
2. Sistem Basis Data terdiri dari basis data dan DBMS
TUJUAN
BASIS DATA
Mengatur data/mengorganisasikan data agar diperoleh kemudahan, ketepatan, dan kecepatan dalam pengambilan kembali
Mengatur data/mengorganisasikan data agar diperoleh kemudahan, ketepatan, dan kecepatan dalam pengambilan kembali
Manfaat Basis data
1) Kecepatan dan Kemudahan (Speed)
1) Kecepatan dan Kemudahan (Speed)
2)
Kebersamaan Pemakaian (Sharability)
3)
Pemusatan Kontrol Data
4)
Efisiensi Ruang Penyimpanan (Space)
5)
Keakuratan (Accuracy)
6)
Ketersediaan (Availability)
7)
Kelengkapan (Completeness)
8)
Keamanan (Security)
9)
Kemudahan dalam Pembuatan Program Aplikasi Baru
10)
User View
Kecepatan dan Kemudahan (Speed)
Memungkinkan kita untuk dapat menyimpan dan melakukan perubahan/manipulasi terhadap data atau menampilkan kembali data tersebut dengan lebih cepat dan mudah.
Memungkinkan kita untuk dapat menyimpan dan melakukan perubahan/manipulasi terhadap data atau menampilkan kembali data tersebut dengan lebih cepat dan mudah.
Kebersamaan Pemakaian (Sharability)
Pemakai basisdata tidak terbatas, pengisian data dapat dilakukan oleh beberapa orang dalam satu lokasi.
Pemakai basisdata tidak terbatas, pengisian data dapat dilakukan oleh beberapa orang dalam satu lokasi.
Pemusatan Kontrol Data
Data yang ada menjadi terpusat pada satu tempat penyimpanan. Sehingga kita dapat mengaksesnya kapan saja.
Data yang ada menjadi terpusat pada satu tempat penyimpanan. Sehingga kita dapat mengaksesnya kapan saja.
Efisiensi Ruang Penyimpanan (Space)
Tidak adanya redundansi data sehingga efisiensi/optimalisasi penggunaan ruang penyimpanan dapat dilakukan. Penekanan jumlah redundasi data, dilakukan dengan menerapkan sejumlah pengkodean atau membuat relasi antar kelompok data yang saling berhubungan.
Tidak adanya redundansi data sehingga efisiensi/optimalisasi penggunaan ruang penyimpanan dapat dilakukan. Penekanan jumlah redundasi data, dilakukan dengan menerapkan sejumlah pengkodean atau membuat relasi antar kelompok data yang saling berhubungan.
Keakuratan (Accuracy)
Pemanfaatan pengkodean dengan batasan tertentu, yang membuat satu data menjadi unik dan berbeda dengan yang lain, sehingga ketika menyimpan data tidak akan ada data yang sama dalam penyimpanan.
Pemanfaatan pengkodean dengan batasan tertentu, yang membuat satu data menjadi unik dan berbeda dengan yang lain, sehingga ketika menyimpan data tidak akan ada data yang sama dalam penyimpanan.
Ketersediaan (Availability)
karena kepentingan pemakaian data, sebuah basis data dapat memiliki data yang disebar di banyak lokasi. Dengan pemanfaatan teknologi jaringan computer, data nasabah yang berada di suatu cabang sebuah bank dapat diakses (menjadi tersedia/availibility) di cabang lainnya.
karena kepentingan pemakaian data, sebuah basis data dapat memiliki data yang disebar di banyak lokasi. Dengan pemanfaatan teknologi jaringan computer, data nasabah yang berada di suatu cabang sebuah bank dapat diakses (menjadi tersedia/availibility) di cabang lainnya.
Keamanan (Security)
Adanya password setiap pemakai basis data. Kita juga dapat menentukan siapa saja yang boleh mengakses data penting atau data biasa
Adanya password setiap pemakai basis data. Kita juga dapat menentukan siapa saja yang boleh mengakses data penting atau data biasa
Kemudahan dalam Pembuatan Program Aplikasi Baru
Data yang disimpan dalam di eksport ke program aplikasi lain dengan menjamin terjaga/terpeliharanya data.
Data yang disimpan dalam di eksport ke program aplikasi lain dengan menjamin terjaga/terpeliharanya data.
User View
Pemakai dapat melihat langsung bentuk tampilan penginputan data, sehingga memudahkan pemakai dlm mengelola data.
Pemakai dapat melihat langsung bentuk tampilan penginputan data, sehingga memudahkan pemakai dlm mengelola data.
Penerapan Basis data
1. Kepegawaian
2. Pergudangan (inventory)
3. Akuntansi
4. Reservasi
5. Perbankan
6. Asuransi
7. Rumah Sakit
8. Produsen Barang
1. Kepegawaian
2. Pergudangan (inventory)
3. Akuntansi
4. Reservasi
5. Perbankan
6. Asuransi
7. Rumah Sakit
8. Produsen Barang
Informasi Penjualan Retail
1. pencarian jumlah penjualan
2. mencari jumlah stok yang tersedia
3. barang apa yang paling laku dijual pada bulan ini
4. laba bersih perusahaan
1. pencarian jumlah penjualan
2. mencari jumlah stok yang tersedia
3. barang apa yang paling laku dijual pada bulan ini
4. laba bersih perusahaan
Informasi Untuk Perpustakaan
1. pencarian data buku berdasarkan judul, pengarang atau kriteria lain dapat mudah dilakukan dengan basis data
2. Pencarian data peminjam yang terlambat mengembalikan juga mudah dilakukan sehingga bisa dibuat aplikasi pembuatan surat tagihan berdasarkan informasi yang tersedia
1. pencarian data buku berdasarkan judul, pengarang atau kriteria lain dapat mudah dilakukan dengan basis data
2. Pencarian data peminjam yang terlambat mengembalikan juga mudah dilakukan sehingga bisa dibuat aplikasi pembuatan surat tagihan berdasarkan informasi yang tersedia
Informasi Retail Perbankan
Dengan memanfaatkan teknologi jaringan, kemampuan basis data dapat dioptimalkan misalnya transaksi antar cabang pada sebuah perbankan secara online.
Dengan memanfaatkan teknologi jaringan, kemampuan basis data dapat dioptimalkan misalnya transaksi antar cabang pada sebuah perbankan secara online.
Operasi Dasar Basis data
1. Pembuatan basis data (create database)
2. Penghapusan basis data (drop database)
3. Pembuatan file/tabel (create table)
4. Penghapusan file/tabel (drop table)
5. Pengubahan tabel (Update …)
6. Penambahan/pengisian (Insert …)
7. Pengambilan data (Retrieve/search)
8. Penghapusan data (delete)
1. Pembuatan basis data (create database)
2. Penghapusan basis data (drop database)
3. Pembuatan file/tabel (create table)
4. Penghapusan file/tabel (drop table)
5. Pengubahan tabel (Update …)
6. Penambahan/pengisian (Insert …)
7. Pengambilan data (Retrieve/search)
8. Penghapusan data (delete)
Istilah
- Istilah Dasar Basis Data
1. Enterprise
Suatu bentuk organisasi seperti : bank, universitas, rumah sakit, pabrik, dsb. Data yang disimpan dalam basis data merupakan data operasional dari suatu enterprise.
1. Enterprise
Suatu bentuk organisasi seperti : bank, universitas, rumah sakit, pabrik, dsb. Data yang disimpan dalam basis data merupakan data operasional dari suatu enterprise.
Contoh
data operasional : data keuangan
2. Entitas
Suatu obyek yang dapat dibedakan dari lainnya yang dapat diwujudkan dalam basis data.
2. Entitas
Suatu obyek yang dapat dibedakan dari lainnya yang dapat diwujudkan dalam basis data.
Contoh
Entitas dalam lingkungan bank terdiri dari : Nasabah, Simpanan, Hipotik
Contoh
Entitas dalam lingkungan universitas terdiri dari : Mahasiswa, mata kuliah
Kumpulan
dari entitas disebut Himpunan Entitas
Contoh
: semua nasabah, semua mahasiswa
3. Atribut (Elemen Data)
3. Atribut (Elemen Data)
Karakteristik
dari suatu entitas.
Contoh
: Entitas Mahasiswa atributnya terdiri dari Npm, Nama, Alamat, Tanggal lahir.
4. Nilai Data (Data Value)
4. Nilai Data (Data Value)
Isi
data / informasi yang tercakup dalam setiap elemen data.
Contoh
Atribut Nama Mahasiswa dapat berisi Nilai Data : Diana, Lina
5. Kunci Elemen Data (Key Data Element)
5. Kunci Elemen Data (Key Data Element)
Tanda
pengenal yang secara unik mengidentifikasikan entitas dari suatu kumpulan
entitas.
Contoh Entitas Mahasiswa yang mempunyai atribut-atribut npm, nama, alamat, tanggal lahir menggunakan Kunci Elemen Data npm
6. Record Data
entitas.
Contoh Entitas Mahasiswa yang mempunyai atribut-atribut npm, nama, alamat, tanggal lahir menggunakan Kunci Elemen Data npm
6. Record Data
Kumpulan
Isi Elemen data yang saling berhubungan.
Contoh : kumpulan atribut npm, nama, alamat, tanggal lahir dari Entitas Mahasiswa berisikan : "10200123", ”Lina", "Jl. Sirsak 28 Jakarta", "8 Maret 1983".
Contoh : kumpulan atribut npm, nama, alamat, tanggal lahir dari Entitas Mahasiswa berisikan : "10200123", ”Lina", "Jl. Sirsak 28 Jakarta", "8 Maret 1983".
Selasa, 11 Maret 2014
10.00
Unknown
1. Pengertian
Algoritma Divide and Conquer merupakan algoritma yang sangat populer
di dunia Ilmu Komputer. Divide and Conquer merupakan algoritma yang
berprinsip memecah-mecah permasalahan yang terlalu besar menjadi
beberapa bagian kecil sehingga lebih mudah untuk diselesaikan.
Langkah-langkah umum algoritma Divide and Conquer :
- Divide : Membagi masalah menjadi beberapa upa-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil ( idealnya berukuran hampir sama ).
- Conquer : Memecahkan ( menyelesaikan ) masing-masing upa-masalah ( secara rekursif ).
- Combine : Menggabungkan solusi masing-masing upa-masalah sehingga membentuk solusi masalah semula.
Objek masalah yang di bagi adalah masukan (input) atau instances yang
berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada
masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the
same type) dengan karakteristik masalah asal, sehingga metode Divide
and Conquer lebih natural diungkapkan dalam skema rekursif. Sesuai
dengan karakteristik pembagian dan pemecahan masalah tersebut, maka
algoritma ini dapat berjalan baik pada persoalan yang bertipe rekursif
(perulangan dengan memanggil dirinya sendiri). Dengan demikian,
algoritma ini dapat diimplementasikan dengan cara iteratif ( perulangan
biasa ), karena pada prinsipnya iteratif hampir sama dengan rekursif.
Salah satu penggunaan algoritma ini yang paling populer adalah dalam hal
pengolahan data yang bertipe array ( elemen larik ). Mengapa ? Karena
pengolahan array pada umumnya selalu menggunakan prinsip rekursif atau
iteratif. Penggunaan secara spesifik adalah untuk mencari nilai minimal
dan maksimal serta untuk mengurutkan elemen array. Dalam hal pengurutan
ini ada empat macam algoritma pengurutan yang berdasar pada algoritma
Divide and Conquer, yaitu merge sort, insert sort, quick sort, dan
selection sort. Merge sort dan Quick sort mempunyai kompleksitas
algoritma O(n ²log n). Hal ini lebih baik jika dibandingkan dengan
pengurutan biasa dengan menggunakan algoritma brute force.
Skema Umum Algoritma Divide and Conquer :
2. Penerapan Algoritma
2.1. Pemecahan Masalah Convex Hull dengan Algoritma Divide and Conquer
Pada penyelasaian masalah pencarian Convex Hull dengan menggunakan algoritma Divide and Conquer, hal ini dapat dipandang
sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan garis besar gambaran dari algoritmanya:
sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan garis besar gambaran dari algoritmanya:
- Pertama-tama lakukan pengurutan terhadap titik-titik dari himpunan S yang diberika berdasarkan koordinat absis-X, dengan kompleksitas waktu O(n log n).
- Jika |S| ≤ 3, maka lakukan pencarian convex hull secara brute-force dengan kompleksitas waktu O(1). (Basis).
- Jika tidak, partisi himpunan titik-titik pada S menjadi 2 buah himpunan A dan B, dimana A terdiri dari setengah jumlah dari |S| dan titik dengan koordinat absix-X yang terendah dan B terdiri dari setengah dari jumlah |S| dan titik dengan koordinat absis-X terbesar.
- Secara rekursif lakukan penghitungan terhadap HA = conv(A) dan HB = conv(B).
- Lakukan penggabungan (merge) terhadap kedua hull tersebut menjadi convex hull, H, dengan menghitung da mencari upper dan lower tangents untuk HA dan HB dengan mengabaikan semua titik yang berada diantara dua buah tangen ini.
Permasalahan convex hull adalah sebuah permasalahan yang memiliki
aplikasi terapan yang cukup banyak, seperti pada permasalahan grafika
komputer, otomasi desain, pengenalan pola (pattern recognition), dan
penelitian operasi. Divide and Conquer adalah metode pemecahan masalah
yang bekerja dengan membagi masalah menjadi beberapa upa-masalah yang
lebih kecil, kemudian menyelesaikan masing-masing upa-masalah tersebut
secara independent, dan akhirnya menggabungkan solusi masing-masing
upa-masalah sehingga menjadi solusi dari masalah semula.
Algoritma Divide and Conquer merupakan salah satu solusi dalam
penyelesaian masalah convex hull. Algoritma ini ternyata memiliki
kompleksitas waktu yang cukup kecil dan efektif dalam menyelesaikan
permasalahan ini (jika dibandingkan algoritma lain). Selain itu juga,
algoritma ini dapat digeneralisasi untuk permasalahan convex hull yang
berdimensi lebih dari 3.
2.2. Persoalan Minimum dan Maksimum (MinMaks)
Persoalan : Misalnya diketahui table A yang berukuran n eleman sudah
berisi nilai integer. Kita ingin menentukan nilai minimum dan nilai
maksimum sekaligus di dalam table tersebut. Misalkan tabel A berisi
elemen-elemen sebagai berikut :
Ukuran table hasil pembagian dapat dibuat cukup kecil sehingga
mencari minimum dan maksimum dapat diselesaikan (SOLVE) secara lebih
mudah. Dalam hal ini, ukuran kecil yang dipilih adalah 1 elemen atau 2
elemen.
Algoritma MinMaks :
1. Untuk kasus n = 1 atau n = 2,
SOLVE : Jika n = 1, maka min = maks = An. Jika n = 2, maka bandingkan kedua elemen untuk menentukan min dan maks.
SOLVE : Jika n = 1, maka min = maks = An. Jika n = 2, maka bandingkan kedua elemen untuk menentukan min dan maks.
2. Untuk kasus n > 2,
- DIVIDE : Bagi dua table A secara rekursif menjadi dua bagian yang berukuran sama, yaitu bagian kiri dan bagian kanan.
- CONQUER : Terapkan algoritma Divide and Conquer untuk masing-masing bagian, dalam hal ini min dan maks dari table bagian kiri dinyatakan dalam peubah min1 dan maks1, dan min dan maks dari table bagian kanan dinyatakan dalam peubah min2 dan maks2.
- COMBINE : Bandingkan min1 dan min2 untuk menentukan min table A, serta bandingkan maks1 dan maks2 untuk menentukan maks table A.
2.3. Optimasi Konversi Bilangan Desimal Ke Biner
Salah satu cara optimasi yang bias kita lakukan adalah membagi
bilangan decimal yang hendak diubah dengan angka 8 ( bukan 2 ). Di
sinilah prinsip algoritma Divide and Conquer kita gunakan untuk
melakukan optimasi. Kita pecah-pecah angka decimal yang akan kita
gunakan dengan cara membaginya dengan angka 8 secara berulang.
Angka-angka sisa pembagian yang kita peroleh kemudian kita ubah ke dalam
bilangan biner sebelum kita gabungkan menjadi hasil jawaban.
Karena angka pembagi yang kita pakai adalah 8 (23), maka kita dapat
mengurangijumlah pembagian yang kita lakukan menjadi ± 1/3 dari jumlah
semula. Hal ini tentu saja akan sangat berpengaruh pada kinerja dan
waktu yang diperlukan oleh computer mengingat proses pembagian merupakan
salah satu proses yang cukup rumit.
Tentu saja optimasi ini harus kita bayar dengan menangani konversi
bilangan octal ke biner. Akan tetapi jika kita gunakan teknik
perbandingan ( tanpa harus melakukan konversi secara manual ), maka
proses ini akan menjadi sangat cepat dan mudah. Penerapan algoritma ini
adalah dengan menggunakan sintaks case of. Begitu juga dengan
permasalahan pemakaian memori ( kompleksitas ruang ) yang lebih besar
yang muncul akibat penggunaan algoritma rekursif. Karena pada proses
rekursif-nya kita tidak banyak menggunakan variable yang memerlukan
tempat yang begitu besar, maka hal ini bias kita abaikan. Dengan
penggunaan optimasi ini, maka seharusnya proses konversi akan lebih
cepat karena pemangkasan jumlah pembagian yang dilakukan.
Skema procedur utama Konversi dengan optimasi
Skema procedur rekursif dengan menerapkan Algoritma Divide and Conquer
Kompleksitas waktu algoritma :
T(n) = O(n/3)
dengan n menyatakan eksponen terkecil dari 2 yang mempunyai nilai 2n lebuh besar dari angka decimal
Algoritma konversi system bilangan dengan menggunakan algoritma
dengan optimasi yang menerapkan algoritma Divide and Conquer lebih
mangkus daripada algoritma konversi dengan metode pembagian sisa biasa
jika dilihat dari segi kompleksitas waktunya. Hanya saja optimasi ini
diimbangi dengan kenaikan pada kompleksitas ruangnya, meskipun
pengaruhnya tidak sebesar optimasi yang kita lakukan.
2.4. Mencari Pasangan Titik yang Jaraknya Terdekat ( Closest Pair )
Persoalan : Diberikan himpunan titik, P, yang terdiri dari n buah
titik, (xi,yi), pada bilangan 2-D. Tentukan jarak terdekat antara dua
buah titik di dalam himpunan P. Jarak dua buah titik p1 = (x1, y1) dan
p2 = (x2, y2) :
Penyelesaian dengan Algoritma Divide and Conquer :
a. Asumsi : n = 2k dan titik-titik diurut berdasarkan absis (x).
b. Algoritma Closest Pair :
- SOLVE : jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus Euclidean.
- DIVIDE : Bagi titik-titik itu ke dalam dua bagian, PLeft dan PRight, setiap bagian mempunyai jumlah titik yang sama
- CONQUER :Secara rekursif, terapkan algoritma D-and-C pada masingmasing bagian.
- Pasangan titik yang jaraknya terdekat ada tiga kemungkinan letaknya :
- Pasangan titik terdekat terdapat di bagian PLeft.
- Pasangan titik terdekat terdapat di bagian PRight.
- Pasangan titik terdekat dipisahkan oleh garis batas L, yaitu satu titik di PLeft dan satu titik di PRight.
Jika kasusnya adalah (c), maka lakukan tahap COMBINE untuk mendapatkan jarak dua titik terdekat sebagai solusi persoalan semula.
Sumber :
http://andikafisma.wordpress.com/algoritma-divide-and-conquer/
09.57
Unknown
A. Bahasa C
1. Sejarah
Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan
oleh Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan
ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut
bahasa B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah
bahasa C yang diciptakan oleh Dennis Ricthie & W. Kerninghan tahun
1972 di Bell Telephone Laboratories Inc. (Sekarang adalah AT & T
Bell Laboratories).
2. Aplikasi bahasa C
- Bahasa C pertama kali digunakan di Computer Digital Equipment Corporation PDP-11 yang menggunakan system operasi UNIX.
- Bahasa C juga digunakan untuk menyusun operasi Linux.
- Banyak bahasa pemrogaman popular seperti PHP dan Java menggunakan sintaks dasar mirip bahasa C.
3. Kelebihan dan Kekurangan Bahasa C
Kelebihan Bahasa C :
- Bahasa C tersedia hampir di semua jenis computer
- Kode bahasa C sifatnya adalah portable dan fleksible untuk semua jenis computer.
- Bahasa C hanya menyediakan sedikit kata-kata kunci, hanya terdapat 32 kata kunci.
- Proses executable program bahasa C lebih cepat.
- Dukungan pustaka yang banyak.
- C adalah bahasa yang terstruktur.
- Bahasa C termasuk bahasa tingkat menengah.
Kekurangan Bahasa C :
- Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai.
- Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
B. Bahasa Java
1. Sejarah
Java mulai dirilis pada tahun 1990 sebagai bahasa program yang
disebut Oak, kemudian Sun MycroSystem mendirikan kelompok kerja yang
terdiri atas para programmer handal untuk membuat produk dan memperluas
pasar Sun. Oak didesain pertama kali untuk personal digital assistance
yang disebut *7 yang akan dipasarkan Sun dengan fasilitas Graphical User
Interface.
Ternyata *7 tidak pernah dipasarkan dan secara kebetulan Sun
membentuk suatu perusahaan yang disebut Firstperson untuk mengembangkan
*7 dalam bentuk TV set-top boxes untuk televisi interaktif. Karena
persaingan begitu ketat akhirnya prospek TV interaktif menurun dan
akhirnya Oak tidak laku di pasaran. Akan tetapi FirstPerson dan Oak
mengalami kegagalan. bermunculan para perintis internet khususnya World
Wide Web seperti Netscape membuat software yang memungkinkan terjadinya
koneksi antara internet dengan www. Sun akhirnya menyadari bahwa Oak
memiliki kemungkinan besar untuk membuat jalur akses ke dunia web. Tidak
lamam kemudian Oak diluncurkan di Internet dengan nama baru yaitu,
Java.
Sekarang, java masih dalam taraf pengembangan dan sudah mempengaruhi
arah pemrogaman computer dan internet. Bahasa pemrogaman Java dirilis
secara gratis di Internet dan Sun memberikan lisensi penuh terhadap
implementasi Java dan segala komponennya untuk digunakan di berbagai
vendor software Internet dengan harapan supaya dapat menciptakan
standard pemrogaman web.
2. Aplikasi Bahasa Java
- Pemrograman jaringan
- Pembuatan aplikasi berbasis windows
- Program untuk membuat web
3. Kelebihan dan Kekurangan
Kelebihan Bahasa Java :
- Sederhana dan ampuh, java menyediakan sarana untuk membuat program (applet) yang berjalan pada web browser. Programmer dapat menggunakan applet kecil yang aman, dinamik, lintas platform, aktif dan siap dijalankan di jaringan.
- Aman, java dirancang dengan konsep keamanan internet.
- Berorientasi objek, java tidak diturunkan bahasa pemrogaman manapun. Java memiliki keseimbangan yang menyediakan mekanisme peng-class-an sederhana dengan model antarmuka dinamik yang intuitif hanya jika diperlukan.
- Kokoh, java membatasi programmer dengan memberi kunci supaya progamer dapat menemukan kesalahan lebih cepat saat mengembangkan program.
- Interaktif, java dirancang untuk menciptakan program jaringan yang interaktif.
- Netral terhadap berbagai arsitektur, java mampu berjalan dalam platform apapun seperti PC, UNIX, Macintosh, dll.
- Terinterpretasi dan berkinerja tinggi, java melengkapi keajaiban lintas platform yang luar biasa dengan kompilasi ke dalam representasi langsung yang disebut java code byte yang dapat diterjemahkan oleh system apapun yang memiliki java interpreter dan java virtual machine.
- Mudah dipelajari karena bersifat sederhana.
- Mendukung koneksi ke database.
Kekurangan bahasa Java :
- Java memiliki kecepatan yang kurang dari bahasa C ++.
- Implementasi J2ME tidak global. Misalnya, J2ME untuk Motorola dengan J2ME untuk Sony Ericson tidak sama. Berbeda lagi J2ME untuk Nokia. Setiap produk selalu mempunyai modul tersendiri yang dinilai aneh penerapannya dan harus di-compile dengan modul yang berbeda-beda.
- Java memakan banyak memori computer.
- Java merupakan bahasa yang kompleks dan susah dipelajari.
- Program yang dibuat oleh bahasa ini lebih lambat disbanding program yang dibuat dengan bahasa lain seperti C atau C++.
C. Bahasa Pascal
1. Sejarah
Pascal dibuat pertama kali oleh Prof. Niklaus Wirth, seorang anggota
International Federation of Information Processing (IFIP) pada tahun
1971. pascal berasal dari nama matematikawan yaitu Blaise Pascal. Pascal
digunakan untuk mengenalkan pemrograman terstruktur.
2. Aplikasi Bahasa Pascal
- Pascal dipakai sebagai landasan pembuatan kode perangkat lunak Delphi (berbasis windows).
- Pascal dipakai sebagai landasan pembuatan kode perangkat lunak Kylix (berbasis Linux).
3. Kelebihan dan kekurangan
Kelebihan bahasa Pascal :
- Tipe data standar, tipe-tipe data standar yang telah tersedia bahasa pemrogaman. Pascal memiliki tipe data standar Boolean, integer, char, real, string.
- User defined data types, programmer dapat membuat tipe data lain yang diturunkan dari tipe data standar.
- Strongly-typed, programmer harus menentukan tipe data dari suatu variable dan variable tersebut tidak dapat dipergunakan untuk menyimpan tipe data selain format yang ditentukan.
- Terstruktur, memiliki sintaks yang memungkinkan penulisan program dipecah menjadi fungsi-fungsi kecil (procedur dan function) yang dapat dipergunakan berulang-ulang.
- Sederhana dan ekspresif, memiliki struktur yang sederhana dan sangat mendekati bahasa manusia (bahasa inggris) sehingga mudah dipelajari dan dipahami.
Kekurangan bahasa Pascal :
- Versi awal Pascal kurang cocok untuk aplikasi bisnis karena dukungan basisdata yang terbatas.
- Sintaks Pascal terlalu bertele-tele.
- Tidak mendukung pemrograman berorientasi objek.
- Pascal tidak fleksibel dan banyak kekurangan yang dibutuhkan untuk membuat aplikasi yang besar.
D. Bahasa PHP
1. Sejarah
PHP adalah bahasa pemrogaman web atau scripting language yang
didesain untuk web. PHP dibuat pertama kali oleh Rasmus Lerdford untuk
menghitung jumlah pengunjung pada homepagenya pada akhir tahun 1994. PHP
terus berkembang dari PHP 1 yang ditulis ulang Rasmus dalam bahasa C
pada tahun 1995 sampai PHP 4 yang diluncurkan tanggal 22 Mei 2000.
2. Aplikasi Bahasa PHP
- PHP digunakan sebagai landasan operasi pada pemrogaman jaringan berbasis web.
- PHP digunakan juga untuk pemrogaman database.
- PHP digunakan untuk membuat aplikasi web.
3. Kelebihan dan Kekurangan
Kelebihan :
- PHP menjadi popular karena kesederhanaannya dan kemampuannya dalam menghasilkan berbagai aplikasi web seperti counter, system artikel/ CMS, e-commerce, bulletin board, dll.
- PHP adalah salah satu bahasa server-side yang didesain khusus untuk aplikasi web.
- PHP termasuk dalam Open Source Product dan telah mencapai versi 4.
- Aplikasi PHP cukup cepat dibandingkan dengan aplikasi CGI dengan Perl atau Phyton bahkan lebih cepat disbanding dengan ASP maupun Java dalam berbagai aplikasi web.
- Tersedia baik di Windows maupun Linux, walau saat ini paling efektif di web server Apache dan OS Linux.
- Sintaks mirip C dan mudah dipelajari.
- Komunitas yang ramai dan saling membantu, seperti di diskusiweb.com, phpbuilder.com, phpindo.com, dll.
- Berbagai script atau aplikasi yang gratis telah tersedia.
Kekurangan :
- Tidak detail untuk pengembangan skala besar.
- Tidak memiliki system pemrogaman berorientasi objek yang sesungguhnya.
- Tidak bisa memisahkan antara tampilan dengan logic dengan baik.
- PHP memiliki kelemahan security tertentu apabila programmer tidak jeli dalam melakukan pemrogaman dan kurang memperhatikan isu konfigurasi PHP.
- Kode PHP dapat dibaca semua orang, dan kompilasi hanya dapat dilakukan dengan tool yang mahal dari Zend.
E. Bahasa Ruby
1. Sejarah
Ruby adalah bahasa pemrogaman scripting yang berorientasi objek.
Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa
pemrogaman scripting yang ada di dunia. Ruby ditulis dengan bahasa C
dengan kemampuan dasar seperti Perl dan Phyton.
Ruby pertama kali dibuat oleh seorang programmer Jepang bernama
Yukihiro Matsumoto. Penulisan Ruby dimulai pada February 1993 dan pada
Desember 1994 dirilis versi alpha dari ruby. Pada awal perkembangan
Ruby, Yukihiro meulis Ruby sendiri sampai pada tahun 1996 terbentuk
komunitas Ruby yang banyak mengkotribusikan Ruby.
2. Aplikasi bahasa Ruby
- Implementasi besar Ruby pada JRuby dan Rubinius.
- Ruby dapat diterapkan pada teknologi Asynchronous JavaScript dan XML (AJAX).
- Ruby on Rails untuk membuat framework web.
3. Kelebihan dan Kekurangan
Kelebihan :
- Sintaks sederhana.
- Memiliki Exception Handling yang baik.
- OOP.
- Single inheritance.
- Didukung oleh OS Linux, Windows, MacOS X, OS/2, BeOs, dan Unix.
- Merupakan bahasa pemrograman scripting yang berorientasi objek.
- Memiliki garbage collector yang secara otomatis akan menghapus informasi tak terpakai dari memori.
Kelemahan :
- Multithreading. Implementasi thread di ruby masih berupa green thread, bukan native thread. Hal ini membuat aplikasi GUI (desktop) dengan background thread tidak mungkin diimplementasikan di ruby.
- Virtual Memory, ruby masih fully interpreted sehingga program ruby cenderung lebih lambat.
- Spek. saat ini spesifikasi ruby (syntax, behaviour, dll) adalah implementasi ruby yang asli dari matz.
- IDE. Saat ini kualitas IDE untuk ruby masih jauh daripada .net dan java. Tapi dengan bermunculnya IDE ruby yang dibuat dengan java.net, kondisinya agak berubah. Tapi karena ruby bahasa yang sangat dinamis, sulit untuk bisa mendapatkan informasi secara lengkap mengenai struktur sebuah program ruby secara statis.
F. Bahasa PROLOG
1. Sejarah
Prolog (Programmation en logique) adalah bahasa pemrograman logika
atau bahasa non-prosedural. Bahasa ini diciptakan oleh Alain Colmerauer
dan Robert Kowalski sekitar tahun 1972 dalam upaya untuk menciptakan
suatu bahasa pemrograman untuk aplikasi kecerdasan buatan. Bahasa ini
menjadi popular semenjak Jepang mengumumkan pada tahun 1981 bahwa jepang
akan menggunakannya sebagai basis computer “generasi kelima”.
2. Aplikasi bahasa Prolog
- Bahasa pemrograman Artificial Intellegence dan robot.
- Bahasa pemrograman computer generasi kelima.
- PROLOG banyak digunakan dalam aplikasi pembuatan bahasa alami, penulisan compiler, penambahan ilmu pada sistem pakar dan purwarupa (prototype) perangkat lunak.
- Bagus untuk menulis sistem pakar dan knowledge based system.
3. Kelebihan dan Kekurangan
Kelebihan :
- Berbeda dengan bahasa pemrograman yang lain, yang menggunakan algoritma konvensionl sebagai teknik pencariannya seperti pada Delphi, Pascal, Basic, COBOL dan bahasa pemrograman yang sejenisnya, maka prolog menggunakan teknik pencarian yang di sebut heuristik (heutistic) dengan menggunakan pohon logika.
- Melakukan komputasi rumit pada data yang kompleks.
- Mengekpresikan algoritma dengan baik.
- Mengalokasikan memori secara dinamis sehingga programmer tidak harus mendeklarasikan ukuran sebuah struktur data sebelum membuatnya.
- Mengembangkan dan memodifikasi dirinya sendiri sehingga sebuah program dapat “belajar” melalui informasi yang didapat selama program dijalankan
- PROLOG mempunyai Automated Reasoning Procedure (Prosedur Sebab-Akibat Otomatis) yang disebut Inference Engine (Inference = proses pengambilan kesimpulan) yang sudah built-in didalamnya. Akibatnya, program yang menggunakan logika sebab-akibat jadi lebih mudah ditulis dalam PROLOG.
Kekurangan :
- Pemborosan dalam pengalokasian memory sehingga program berjalan menjadi lambat
G. Bahasa Phyton
1. Sejarah
Bahasa pemrograman ini dibuat oleh Guido van Rossum dari Amsterdam,
Belanda. Pada awalnya, motivasi pembuatan bahasa pemrograman ini adalah
untuk bahasa skrip tingkat tinggi pada sistem operasi terdistribusi
Amoeba. Bahasa pemrograman ini menjadi umum digunakan untuk kalangan
engineer seluruh dunia dalam pembuatan perangkat lunaknya, bahkan
beberapa perusahaan menggunakan python sebagai pembuat perangkat lunak
komersial.
Python merupakan bahasa pemrograman yang freeware atau perangkat
bebas dalam arti sebenarnya, tidak ada batasan dalam penyalinannya atau
mendistribusikannya. Lengkap dengan source codenya, debugger dan
profiler, antarmuka yang terkandung di dalamnya untuk pelayanan
antarmuka, fungsi sistem, GUI (antarmuka pengguna grafis), dan basis
datanya. Python dapat digunakan dalam beberapa sistem operasi, seperti
kebanyakan sistem UNIX, PCs (DOS, Windows, OS/2), Macintosh, dan
lainnya. Pada kebanyakan sistem operasi linux, bahasa pemrograman ini
menjadi standarisasi untuk disertakan dalam paket distribusinya.
2. Aplikasi bahasa Phyton
- Perangkat bantu shell. Tugas-tugas sistem administrator, program baris perintah.
- Kerja bahasa ekstensi. Antarmuka untuk pustaka C/C++, kustomisasi.
- Pembuatan prototipe secara cepat/pembuatan sistem aplikasi. Prototipe yang dapat dibuang atau sesuai dengan permintaan.
- Modul berdasarkan bahasa pemrograman. Pengganti dari penulisan parser khusus.
- Antarmuka pengguna grafis. Penggunaan GUI API sederhana dan canggih.
- Pengaksesan basisdata. Penyimpanan objek tetap, antarmuka sistem SQL.
- Pemrograman terdistribusi. Penggunaan API mekanisme client/server terintegrasi.
- Skrip internet. Skrip CGI, antarmuka HTTP, Aplet WWW, dan lainnya.
3. Kelebihan dan Kekurangan
Kelebihan :
- Tidak ada tahapan kompilasi dan penyambungan (link) sehingga kecepatan perubahan pada masa pembuatan system aplikasi meningkat.
- Tidak ada deklarasi tipe sehingga program menjadi lebih sederhana, singkat, dan fleksible.
- Manajemen memori otomatis yaitu kumpulan sampah memori sehingga dapat menghindari pencatatan kode.
- Tipe data dan operasi tingkat tinggi yaitu kecepatan pembuatan system aplikasi menggunakan tipe objek yang telah ada.
- Pemrograman berorientasi objek.
- Pelekatan dan perluasan dalam C.
- Terdapat kelas, modul, eksepsi sehingga terdapat dukungan pemrograman skala besar secara modular.
- Pemuatan dinamis modul C sehingga ekstensi menjadi sederhana dan berkas biner yang kecil
- Pemuatan kembali secara dinamis modul phyton seperti memodifikasi aplikasi tanpa menghentikannya.
- Model objek universal kelas Satu.
- Konstruksi pada saat aplikasi berjalan.
- Interaktif, dinamis dan alamiah.
- Akses hingga informasi interpreter.
- Portabilitas secara luas seperti pemrograman antar platform tanpa ports.
- Kompilasi untuk portable kode byte sehingga kecepatan eksekusi bertambah dan melindungi kode sumber.
- Antarmuka terpasang untuk pelayanan keluar seperti perangkat Bantu system, GUI, persistence, database, dll.
Kekurangan :
- Beberapa penugasan terdapat diluar dari jangkauan python, seperti bahasa pemrograman dinamis lainnya, python tidak secepat atau efisien sebagai statis, tidak seperti bahasa pemrograman kompilasi seperti bahasa C.
- Disebabkan python merupakan interpreter, python bukan merupakan perangkat bantu terbaik untuk pengantar komponen performa kritis.
- Python tidak dapat digunakan sebagai dasar bahasa pemrograman implementasi untuk beberapa komponen, tetapi dapat bekerja dengan baik sebagai bagian depan skrip antarmuka untuk mereka.
- Python memberikan efisiensi dan fleksibilitas tradeoff by dengan tidak memberikannya secara menyeluruh. Python menyediakan bahasa pemrograman optimasi untuk kegunaan, bersama dengan perangkat bantu yang dibutuhkan untuk diintegrasikan dengan bahasa pemrograman lainnya.
H. Bahasa Cobol
1. Sejarah
COBOL diciptakan pada tahun 1959. Bahasa COBOL pertama kali
diperkenalkan secara resmi atau formal pada bulan Januari 1960. Versi
dari bahasa COBOL ini disebut dengan COBOL-60. Dan diperbaharui pada
tahun 1965. Bila suatu bahasa komputer tidak standar, dalam arti banyak
versinya, maka menyulitkan pemakai untuk menerapkannya, pemakai harus
menyesuaikan versi dari COBOL yang dipakai oleh komputer tertentu. Untuk
mengatasi masalah hal ini, pada tahun 1968 dan 1974 bahasa COBOL
dikembangkan dan disempurnakan lebih lanjut dan distandardisasikan
dengan nama ANSI COBOL (American National Standards Institute ). ANSI
COBOL ini yang sekarang banyak diterapkan oleh sejumlah pabrik-pabrik
komputer. Dengan adanya standardisasi, pemakai tidak terlalu sulit
menggunakan bahasa COBOL versi yang berbeda, karena inti dari bahsa ini
sama.
2. Aplikasi bahasa COBOL
- Untuk membuat aplikasi bisnis
- Untuk pengolahan data dan database
3. Kelebihan dan Kekurangan
Kelebihan :
- Program COBOL dibuat dalam instruksi bahasa inggris, sehingga lebih mudah dipelajari dan dibuat.
- Program COBOL sesuai untuk pengolahan data yang banyak diterapkan pada permaslahan .
- Program COBOL sifatnya standard, sehingga dapat dipergunakan pada komputer-komputer yang berbeda, tanpa banyak perbedaan.
- Struktur program COBOL jelas, sehingga dapat dimengerti oleh orang seperti akuntan, auditor, atau manajer-manajer yang hanya mempunayai pengetahuan pengolahan data yang sedikit.
- COBOL menyediakan fasilitas Listing Program, bilamana perlu dapat diperiksa oleh orang lain selain programer.
- Mudah didokumentasikan dan dikembangkan bilamana perlu.
- Problem Orientad Language.
Kekurangan :
- Operasi masukan dan keluaran yang masih kaku.
- Struktur penulisan program yang sangat kaku dan bertele-tele.
I. Bahasa Basic
1. Sejarah
BASIC adalah beginner all-purpose symbolic instruction code
dikembangkan tahun 1965 di Darmouth College oleh John Kemeny dan Thomas
Kurtz. Awalnya ditujukan untuk pengajaran dasar pemrogaman computer.
2. Aplikasi bahasa Basic
- Landasan pemrograman Visual Basic dan visual basic for application.
- Bahasa pemrograman pada banyak produk Microsoft seperti untuk administrasi dan otomatisasi batch skrip, windowskrip house.
- Untuk pembuatan program kid Basic, FreeBasic, dan Gambas.
3. Kelebihan dan Kekurangan
Kelebihan :
- Bahasa Basic tergolong bahasa serbaguna dan dapat digunakan di aplikasi apa saja.
Kekurangan :
- Bahasanya kurang terstruktur.
- Tidak cocok untuk membuat aplikasi besar.
- Sintaksnya penuh dengan GOTO yang menyesatkan.
- Bahasa ini merupakan bahasa yang primitif di era DOS.
A. Bahasa C++
1. Sejarah
Bahasa C++ diciptakan oleh Bjarne Stroustrup tahun 1983 di Lab Bell.
C++ merupakan bahasa pemrograman berorientasi objek menggunakan kaidah
bahasa C
2. Aplikasi bahasa C++
- Sebagai bahasa pemrograman di Windows, UNIX, Linux.
- Visual C++ dapat dibuat aplikasi apa saja seperti database.
- Bahasa untuk pembuatan system operasi, game, system kendali,pembuatan aplikasi
- Untuk membuat bahasa baru atau membuat compiler bahasa baru
- Untuk menulis komponen dan file-file pustaka bahasa lain
3. Kelebihan dan Kekurangan
Kelebihan :
- Merupakan induk dari bahasa pemrograman perl, php, phyton, visual basic, gambas, java, C#.
- Compiler bahasa C++ terdapat di semua platform.
- Untuk pengembangan visual dijejali dengan platform yang sangat banyak seperti OWL, MFC, Cocoa, QT, GTK, dll.
- Merupakan pemrograman berorientasi objek.
Kekurangan :
- Bahasa ini cukup sulit untuk dipel;ajari dan dipahami.
- Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai.
- Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
http://andikafisma.wordpress.com/kelebihan-kelemahan-dan-aplikasi-10-bahasa-pemrograman/
09.55
Unknown
Dalam istilah ilmu komputer, sebuah struktur data adalah cara
penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan
komputer sehingga data tersebut dapat digunakan secara efisien.
Dalam teknik pemrograman, 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. Setiap baris dari kumpulan kolom-kolom
tersebut dinamakan catatan (record). Lebar kolom untuk data
dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara
dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya
tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk
pengolahan database (misalnya untuk keperluan data keuangan) atau untuk
pengolah kata (word processor) yang kolomnya berubah secara dinamis. Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet), pangkal-data (database),
pengolahan kata, citra yang dipampat (dikompres), juga pemampatan
berkas dengan teknik tertentu yang memanfaatkan struktur data.
1. Larik (Array)
Larik (Bahasa Inggris: array), dalam ilmu komputer, adalah
suatu tipe data terstruktur yang dapat menyimpan banyak data dengan
suatu nama yang sama dan menempati tempat di memori yang berurutan
(kontinu) serta bertipe data sama pula.
Larik dapat diakses berdasarkan indeksnya. Indeks larik umumnya
dimulai dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan
larik biasanya dibuat dengan menggunakan perulangan (looping).
- Larik Satu Dimensi
Larik satu dimensi merupakan jenis larik dasar dan jenis larik yang
paling sering digunakan, pemakaian larik satu dimensi terutama dipakai
dalam tipe data string (terutama dalam bahasa Bahasa pemrograman C).
- Larik Dua Dimensi
Larik dua dimensi merupakan tipe larik yang lain. Larik dua dimensi
sering dipakai untuk merepresentasikan tabel dan matriks dalam
pemrograman.
Larik dalam beberapa bahasa pemrograman
- Bahasa Pascal
Larik dalam bahasa Pascal dapat didefinisikan dengan indeks awal dan indeks akhirnya.
Contoh:
program larik;
var arr: array[1..10] of integer; //larik dengan indeks awal 1 dan indeks akhir 10
begin
arr[1] := 5; //memasukkan nilai ke indeks 1
writeln(arr[i]); //mencetak angka 5
end.
var arr: array[1..10] of integer; //larik dengan indeks awal 1 dan indeks akhir 10
begin
arr[1] := 5; //memasukkan nilai ke indeks 1
writeln(arr[i]); //mencetak angka 5
end.
- Bahasa C
Larik dalam bahasa C selalu dimulai dari indeks 0. Larik dapat
didefinisikan secara statik atau dinamik. Jika didefinisikan statik,
ukuran larik akan tetap dari awal program hingga akhir program. Jika
didefinisikan dinamik, ukuran larik dapat berubah selama program
berjalan karena memesan tempat pada memori heap. Proses pemesanan tempat
pada memori disebut dengan alokasi. Sedangkan proses pembebasan memori
yang sudah dipesan disebut dengan dealokasi.
Contoh larik statik:
#include <stdio.h>
int main(){
int arr[10]; //indeks awal 0 dan indeks akhir 9
arr[0] = 5;
printf(“%d\n”, arr[0]);
}
int main(){
int arr[10]; //indeks awal 0 dan indeks akhir 9
arr[0] = 5;
printf(“%d\n”, arr[0]);
}
Contoh larik dinamik:
#include <malloc.h>
int main(){
int * arr;
arr = (int *) malloc(10 * sizeof(int)); //memesan 10 tempat pada memori
arr[0] = 5;
free(arr); //menghancurkan larik. Memori pada heap dibebaskan
arr = (int *) malloc(5 * sizeof(int)); //memesan 5 tempat baru pada memori
free(arr); //di akhir program jangan lupa untuk menghancurkan larik dinamik
}
#include <malloc.h>
int main(){
int * arr;
arr = (int *) malloc(10 * sizeof(int)); //memesan 10 tempat pada memori
arr[0] = 5;
free(arr); //menghancurkan larik. Memori pada heap dibebaskan
arr = (int *) malloc(5 * sizeof(int)); //memesan 5 tempat baru pada memori
free(arr); //di akhir program jangan lupa untuk menghancurkan larik dinamik
}
- Bahasa Java
Dalam bahasa Java tipe data larik direpresentasikan sebagai sebuah
objek khusus. Karena itu pada bahasa Java larik yang dibuat selalu
bersifat dinamik. Namun walaupun bersifat dinamik, larik pada bahasa
Java tidak perlu dihancurkan karena proes penghancuran dilakukan secara
otomatis melalui suatu prosedur yang disebut dengan Pengumpulan sampah
(Inggris: Garbage Collecting). Sama seperti bahasa C, indeks larik selalu dimulai dari 0.
Contoh:
public class larik {
public static void main(String args[]) {
int[] arr = new arr[10];
arr[0] = 5;
System.out.println(arr[0]);
}
}
public static void main(String args[]) {
int[] arr = new arr[10];
arr[0] = 5;
System.out.println(arr[0]);
}
}
- PHP
Sama seperti di JAVA larik di PHP juga merupakan sebuah object lebih tepatnya lagi map terorder. Ada dua tipe larik di PHP, indexed array (simple array) dan associated array (value array).
Di PHP, element larik bisa berupa string, Bilangan, boolean, dan semua
tipe data primitif lainnya, termasuk larik juga bisa menjadi element
larik lainnya.
Cara medefinisikan larik:
Cara medefinisikan larik:
#mendefinisikan array kosong
$larik = array();
$larik = array();
Contoh indexed array (simple array):
$jam = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
$hari = array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’);
$hari = array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’);
Contoh associated array:
$bulan = array(’1′=>’January’, ’2′=>’February’, ’3′=>’Maret’, ’4′=>’April’);
$komponenKalender = array(
‘bulan’=> array(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 , 11, 12),
‘hari’ => array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’)
);
‘bulan’=> array(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 , 11, 12),
‘hari’ => array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’)
);
2. Stack (Tumpukan)
Dalam ilmu komputer, stack atau tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out),
yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari
stack tersebut. Stack dapat diimplementasikan sebagai representasi
berkait atau kontigu (dengan tabel fix). Ciri Stack :
* Elemen TOP (puncak) diketahui
* penisipan dan penghapusan elemen selalu dilakukan di TOP
* LIFO
Pemanfaatan Stack :
* penisipan dan penghapusan elemen selalu dilakukan di TOP
* LIFO
Pemanfaatan Stack :
* Perhitungan ekspresi aritmatika (posfix)
* algoritma backtraking (runut balik)
* algoritma rekursif
Operasi Stack yang biasanya :
a. Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack
b. Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack
c. IsEmpty ()
d. IsFull ()
e. dan beberapas selektor yang lain
* algoritma backtraking (runut balik)
* algoritma rekursif
Operasi Stack yang biasanya :
a. Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack
b. Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack
c. IsEmpty ()
d. IsFull ()
e. dan beberapas selektor yang lain
3. Pohon (Tree)
Dalam ilmu komputer, sebuahPohon adalah suatu struktur data yang
digunakan secara luas yang menyerupai struktur pohon dengan sejumlah
simpul yang terhubung.
- Simpul (node)
Sebuah Simpul dapat mengandung sebuah nilai atau suatu kondisi atau
menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon itu
sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih
simpul anak (child nodes), yang berada dibawahnya dalam pohon
(menurut perjanjian, pohon berkembang ke bawah, tidak seperti yang
dilakukannya di alam). Sebuah simpul yang memiliki anak dinamakan simpul
ayah (parent node) atau simpul leluhur (ancestor node)
atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi
dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul
tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari
sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut.
- Akar (Root nodes)
Simpul yang paling atas dalam pohon adalah akar (root node).
Menjadi simpul teratas, simpul akar tidak akan memiliki orang tua. Ini
merupakan simpul di mana biasanya merupakan tempat untuk memulai operasi
dalam pohon (walaupun beberapa algoritma dimulai dengan daun dan
berakhir pada akar). Semua simpul yang lain dapat dicapai dari akar
dengan menelusuri pinggiran atau pranala. (Dalam definisi resmi, setiap
jalan adalah khas). Dalam diagram, ini secara khusus di gambar paling
atas. Di beberapa pohon, seperti heap, akar memiliki sifat khusus.
Setiap simpul dalam sebuah pohon dapat dilihat sebagai akar dari sub
pohon yang berakar pada simpul tersebut.
- Daun (Leaf nodes)
Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun (leaf node).
Sejak mereka terletak pada tingkat paling bawah, mereka tidak memiliki
anak satupun. Seringkali, daun merupakan simpul terjauh dari akar. Dalam
teori grafik, sebuah daun adalah sebuah sudut dengan tingkat 1 selain
akar (kecuali jika pohonnya hanya memiliki satu sudut; maka akarnya
adalah daunnya juga). Setiap pohon memiliki setidaknya satu daun. Dalam
pohon berdasarkan genetic programming sebuah daun (juga dibilang
terminal) adalah bagian terluar dari sebuah program pohon. Jika
dibandingkan dengan fungsinya atau simpul dalam, daun tidak memiliki
argumen. Di banyak kasus dalam daun-GP input ke programnya.
- Simpul dalam (Internal nodes)
Sebuah simpul dalam adalah semua simpul dari pohon yang memiliki anak
dan bukan merupakan daun. Beberapa pohon hanya menyimpan data didalam
simpul dalam, meskipun ini mempengaruhi dinamika penyimpanan data dalam
pohon. Sebegai contoh, dengan daun yang kosong, seseorang dapat
menyimpan sebuah pohon kosong dengan satu daun. Bagaimanapun juga dengan
daun yang dapat menyimpan data, tidak dimungkinkan untuk menyimpan
pohon kosong kecuali jika seseorang memberikan beberapa jenis penanda
data di daun yang menandakan bahwa daun tersebut seharusnya kosong
(dengan demikian pohon itu seharusnya kosong juga). Sebaliknya, beberapa
pohon hanya menyimpan data dalam daun, dan menggunakan simpul dalam
untuk menampung metadata yang lain, seperti jarak nilai dalam sub pohon
yang berakar pada simpul tersebut. Jenis pohon ini berguna untuk jarak
yang meragukan.
- Sub pohon (Subtrees)
Sebuah sub pohon adalah suatu bagian dari pohon struktur data yang
dapat dilihat sebagai sebuah pohon lain yang berdiri sendiri. Simpul
apapun dalam pohon P, bersama dengan seluruh simpul dibawahnya,
membentuk sebuah sub pohon dari P. Sub pohon yang terhubung dengan akar
merupakan keseluruhan pohon tersebut. Sub pohon yang terhubung dengan
simpul lain manapun dinamakan sub pohon asli (proper subtree).
- Penyusunan pohon
Terdapat dua jenis pohon. Sebuah pohon tidak terurut (unordered tree)
adalah sebuah pohon dalam arti struktural semata-mata, yang dapat
dikatakan memberikan sebuah simpul yang tidak memiliki susunan untuk
anak dari simpul tersebut. Sebuah pohon dengan suatu susunan ditentukan,
sebagai contoh dengan mengisi bilangan asli berbeda ke setiap anak dari
simpul tersebut, dinamakan sebuah pohon terurut (ordered tree), dan
struktur data yang dibangun didalamnya dinamakan pohon terurut struktur
data (ordered tree data structures). Sejauh ini pohon terurut
merupakan bentuk umum dari pohon struktur data. Pohon biner terurut
merupakan suatu jenis dari pohon terurut.
- Hutan
Sebuah hutan adalah sebuah himpunan yang terdiri dari pohon terurut.
Lintasan inorder, preorder, dan postorder didefinisikan secara rekursif
untuk hutan.
- inorder
1. lewati inorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. kunjungi akar dari pohon pertama.
3. lewati inorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
1. lewati inorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. kunjungi akar dari pohon pertama.
3. lewati inorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
- preorder
1. kunjungi akar dari pohon pertama.
2. lewati preorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
3. lewati preorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
1. kunjungi akar dari pohon pertama.
2. lewati preorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
3. lewati preorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
- postorder
1. lewati postorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. lewati postorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
3. kunjungi akar dari pohon pertama.
1. lewati postorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. lewati postorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
3. kunjungi akar dari pohon pertama.
- Penggambaran pohon
Ada banyak cara untuk menggambarkan pohon; pada umumnya penggambaran
mewakili simpul sebagai rekor yang dialokasikan pada heap (bedakan
dengan heap struktur data) yang mengacu pada anaknya, ayahnya, atau
keduanya, atau seperti data materi dalam array, dengan hubungan
diantaranya ditentukan oleh posisi mereka dalam array (contoh binary
heap).
- Pohon sebagai grafik
Dalam teori grafik, sebuah pohon adalah sebuah grafik asiklis yang
terhubung. Pohon yang berakar merupakan sebuah grafik dengan sudut
tunggal diluar sebagai akar. Dalam kasus ini, dua sudut apapun yang
terhubung dengan sebuah sisi mewarisi hubungan orang tua dan anak.
Sebuah grafik asiklis dengan bermacam-macam komponen yang terhubung atau
himpunan dari pohon-pohon yang berakar kadang-kadang dipanggil hutan.
- Metode traversal
Melangkah melalui materi dari pohon, dengan arti dari hubungan antara
orang tua dan anak, dinamakan menelusuri pohon, dan tindakannya adalah
sebuah jalan dari pohon. Seringkali, sebuah operasi mungkin dapat
dilakukan sebagai penunjuk ysng mengacu pada simpul khusus. Sebuah
penelusuran dimana setiap simpul ayah dikunjungi sebelum anaknya
dinamakan pre-order walk, yaitu sebuah penelusuran dimana anaknya dikunjungi sebelum ayahnya masing-masing dinamakan post-order walk.
- Operasi umum
* Menghitung seluruh materi (item)
* Pencarian untuk sebuah materi
* Menambahkan sebuah materi pada sebuah posisi tertentu dalam pohon
* Menghapus sebuah materi
* Mengeluarkan seluruh bagian dari sebuah pohon pruning
* Menambahkan seluruh bagian ke sebuah pohon grafting
* Menemukan akar untuk simpul apapun
* Pencarian untuk sebuah materi
* Menambahkan sebuah materi pada sebuah posisi tertentu dalam pohon
* Menghapus sebuah materi
* Mengeluarkan seluruh bagian dari sebuah pohon pruning
* Menambahkan seluruh bagian ke sebuah pohon grafting
* Menemukan akar untuk simpul apapun
- Penggunaan umum
* Memanipulasi data secara hierarki
* Membuat informasi mudah untuk dicari
* Memanipulasi data sorted lists
* Membuat informasi mudah untuk dicari
* Memanipulasi data sorted lists
Sumber :
http://andikafisma.wordpress.com/struktur-data/
Langganan:
Postingan (Atom)
RSS Feed
Twitter


