Tampilkan postingan dengan label amik nurmal. Tampilkan semua postingan
Tampilkan postingan dengan label amik nurmal. Tampilkan semua postingan

Jumat, 21 Desember 2012

Letak Geografi dan Sejarah Singkat Sulawesi Tengah

Propinsi Sulawesi Tengah terletak diantara 2022' Lintang Utara dan 3048' Lintang Selatan, serta 119022' dan 124022' Bujur timur. Batas-batas wilayahnya:  
·         Sebelah Utara          : Laut Sulawesi dan Propinsi Gorontalo
·         Sebelah Timur          : Propinsi Maluku
·         Sebelah Selatan        : Propinsi Sulawesi Selatan dan Propinsi Sulawesi Tenggara
·         Sebelah Barat           : Selat Makasar  
  Luas wilayah Sulawesi Tengah 68.059,71 km2, secara administratip Sulawesi Tengah dibagi dalam Kabupaten, 1 Kotamadya dengan 81 Kecamatan serta 1430 desa/kelurahan definitif dan 10 Unit Pemukiman Transmigrasi (UPT).
Berdasarkan elevasi (ketinggian dari permukaan laut), dataran di Propinsi Sulawesi Tengah terdiri dari:
 
      0   -   100    m           = 20,2 %
   101  -   500    m           = 27,2 %
   501  -   1000  m           = 26,7 %
   1001 m keatas              = 25,9 %  



Jarak antara Ibu Kota Propinsi ke Daerah Tingkat II:    
  1. Palu – Banggai Kepulauan        : 710 km
  2. Palu – Luwuk                           : 610
  3. Palu – Morowali                       : 400
  4. Palu – Poso                              : 222
  5. Palu – Donggala                       : 36
  6. Palu – Parimo                           : 65
  7. Palu – Tolitoli                           : 443
  8. Palu – Buol                               : 493  
  Sulawesi Tengah merupakan propinsi terbesar di pulau Sulawesi, dengan luas wilayah daratan 68.033 km2  yang mencakup semenanjung bagian timur dan sebagian semenanjung bagian utara serta kepulauan Togian di Teluk Tomini dan Kepulauan Banggai di Teluk Tolo, dengan luas wilayah laut adalah 189.480 km2.
Sulawesi  Tengah  yang terletak di bagian barat kepulauan Maluku dan bagian selatan Philipina membuat pelabuhan di daerah ini sebagai persinggahan kapal-kapal Portugis dan Spanyol lebih dari 500 tahun yang lampau. Dalam perjalanannya mengelilingi dunia Francis Drake, dengan kapalnya "The Golden Hind" singgah di salah satu pulau kecil di pantai timur propinsi ini selama sebulan pada bulan Januari 1580. Meskipun tidak ada catatan sejarah, kemungkinan besar pelaut-pelaut Portugal dan Spanyol menginjak kakinya di negeri ini yang terbukti dengan masih ada pengaruh Eropa terhadap bentuk pakaian masyarakat hingga dewasa ini.
Setelah dikuasi oleh Belanda pada tahun 1905 Sulawesi Tengah dibagi menjadi beberapa Kerajaan kecil, dibawah kekuasaan Raja yang memiliki wewenang penuh.
Belanda membagi Sulawesi Tengah menjadi tiga daerah yaitu wilayah barat yang kini dikenal dengan kabupaten Donggala dan Buol Tolitoli dibawah kekuasaan Gubernur yang berkedudukan di Ujung Pandang. Di bagian tengah yang membujur di Donggala kawasan timur dan bagian selatan Poso berada dibawah pengawasan Residen di Manado, bagian timur dikendalikan dari Baubau.
  Pada tahun 1919 Raja-raja yang masih berkuasa dibawah kekuasaan Belanda menandatangani suatu perjanjian yang disebut " Korte Verklaring Renewcame" memperbaharui persekutuan mereka dan seluruh daerah Sulawesi Tengah dibawah kekuasaan residen di Sulawesi Utara.
Setelah perang dunia kedua wilayah yang merupakan propinsi Sulawesi Tengah dewasa ini dibagi menjadi beberapa bagian dan sub bagian hingga pada tahun 1964 terbentuk menjadi propinsi tersendiri yang terpisah dari Sulawesi Utara yang bergabung sejak 1960.
  Akhirnya tanggal 13 April 1964 diangkatlah Gubernur tersendiri untuk propinsi ini yang hingga saat ini tanggal tersebut tetap diperingati sebagai hari ulang tahun propinsi ini.

Sejarah Singkat KAbupaten Banggai

  Tepatnya pada tanggal 3 November 1999 Gubernur Sulawesi Tengah (Brigjen Purn. H.B. Palidju) atas nama Menteri Dalam Negeri meresmikan berdirinya Kabupaten Banggai Kepulauan yang sebelumnya masih bernaung bergabung dalam Kabupaten Banggai. Kabupaten Banggai Kepulauan menjadi satu kabupaten otonom berdasarkan Undang-Undang Nomor 51 Tahun 1999 tentang Pembentukan Kabupaten Buol, Kabupaten Morowali dan Kabupaten Banggai Kepulauan.
Secara historis wilayah Kabupaten Banggai dan Banggai Kepulauan mulanya adalah bagian dari Kerajaan Banggai yang sudah dikenal sejak abad 13 Masehi sebagaimana termuat dalam buku Negara Kertagama yang ditulis oleh Pujangga Besar Empu Prapanca pada tahun Saka 1478 atau 1365 Masehi. Kerajaan Banggai, awalnya hanya meliputi wilayah Banggai Kepulauan, namun kemudian oleh Adi Cokro yang bergelar Mumbu Doi Jawa disatukan dengan Wilayah Banggai Darat. Adik Cokro yang merupakan panglima perang dari Kerajaan Ternate yang menikah dengan seorang Putri Portugis kemudian melahirkan putra bernama Mandapar. Mandapar inilah yang dikenal sebagai Raja Banggai Pertama yang dilantik pada tahun 1600 oleh Sultan Said Berkad Syam dari Kerajaan Ternate. Raja Mandapar yang bergelar Mumbu Doi Godong ini memimpin Banggai sampai tahun 1625

  Adapun sisa peninggalan Kerajaan Banggai yang dibangun pada abad ke XVI yang masih dapat ditemui hingga saat ini yaitu Keraton Kerajaan Banggai yang ada di Kota Banggai. Pada masa pemerintahan Raja Syukuran Amir, ibukota Kerajaan Banggai yang semula berada di Banggai Kepulauan dipindahkan ke Banggai Darat (Luwuk). Untuk penyelenggaraan pemerintahan diwilayah Banggai Laut ditempatkan pejabat yang disebut Bun Kaken sedang untuk Banggai Darat disebut Ken Kariken. Wilayah Banggai Darat dan Banggai Laut kemudian berdasarkan Undang-Undang Nomor 23 tentang Pembentukan Daerah Tingkat II di Sulawesi Tengah menjadi Satu Kabupaten Otonom yang dikenal sebagai Kabupaten Banggai dengan ibukota Luwuk.
==========
  Kabupaten Banggai merupakan salah satu kabupaten di Sulawesi tengah yang terletak dibagian pantai timur Pulau Sulawesi. Kabupaten Banggai dengan ibukota Luwuk secara geografis terletak pada posisi 0° 30'-02° 20' LS dan 122° 10' - 124° 20' BT. dengan batas wilayah sebelah utara Teluk Tomini, sebelah barat berbatasan dengan kabupaten Poso, sebelah selatan berbatasan dengan Teluk Tolo dan sebelah timur berbatasan dengan laut  Banda.
   Dari ibukota Propinsi Palu menuju ibukota Kabupaten Banggai Luwuk dapat ditempuh melalui jalan darat maupun udara. Jalan darat dapat memakai sarana perhubungan kendaraan umum bus-bus kecil, atau dengan kendaraan carteran. Palu - Luwuk dengan jarak sekitar 350 km. Transportasi udara dari ibukota Propinsi Palu dilayani oleh pesawat kecil (Twin otter/ Cassa) dengan waktu tempuh 1.5 jam. Penerbangan Palu - Luwuk secara regular setiap hari sekali. Dari Luwuk ke Pulau Peleng dilayani oleh ferry secara reguler sekali setiap hari. Sedangkan Luwuk- Pulau Banggai dilayani oleh perahu motor kayu yang jauh lebih kecil. Pelayaran Luwuk - Banggai dilakukan secara reguler dan singgah di beberapa ibukota kecarnatan dengan waktu tempuh antara 8 - 12 jam. Untuk mencapai pulau-pulau yang ada disekitar Pulau Peleng dan Pulau Banggai jalan satu-satunya adalah menggunakan perahu carteran.
  Kabupaten Banggai menjadi salah satu dari 25 kabupaten yang menerima penghargaan Parasamya Purnakarya Nugraha dari Pemerintah Indonesia 27 tahun lalu. Saat itu Kabupaten Banggai dianggap berprestasi karena mampu menyumbang 50 persen Iuran Pembangunan Daerah (Ipeda) bagi Provinsi Sulawesi Tengah.Iini. Kebanggaan masyarakat di daerah yang hanya berkepadatan penduduk 28 jiwa tiap kilometer perseginya ini bertambah karena kabupaten Banggai mampu menjadi penghasil beras nomor dua setelah Kabupaten Donggala di Sulawesi Tengah.
Monsu'ani Tano ternyata menjadi cara yang ampuh dalam memotivasi masyarakat Banggai untuk membangun daerahnya sendiri. Gemar menanam, makna dari istilah tersebut, telah menjadi gerakan yang mendapat tempat di hati masyarakat Banggai. Buktinya, dalam lima tahun ke belakang, pertanian telah menjadi pemasok terbesar kegiatan ekonomi daerah ini. Tahun 2000 misalnya, 54,4 persen (Rp 465,4 milyar) kegiatan ekonomi berasal dari sektor pertanian. Dan produksi beras menjadi primadona.
  Dengan produktivitas rata-rata 3,0 ton per hektar, Kabupaten Banggai menghasilkan padi sebanyak 69.693 ton tahun 2000. Dibandingkan tahun sebelumnya, angka ini menurun drastis hingga 29 persen. Sementara untuk tahun 2001, kabupaten ini juga mengalami kesulitan untuk mempertahankan produksi. Bulan Juli 2001 terjadi banjir akibat gelombang tsunami yang merendam dan merusak 43,5 hektar sawah di Kecamatan Batui. Banjir ini juga melanda Kecamatan Toili yang selama ini menjadi sentra penghasil beras Kabupaten Banggai.
Di samping tanaman bahan pangan, hasil perkebunan rakyat seperti kelapa, kakao, dan jambu mete misalnya, turut memberikan andil yang berarti bagi roda perekonomian Banggai. Di antara delapan kecamatan yang ada, Kecamatan Bunta menjadi sentra tanaman kelapa dan kakao. Sementara itu, jambu mete dan sebagian kakao dihasilkan oleh Kecamatan Batui. Sumbangan kelapa sendiri tidak kecil. Nilainya mencapai 9,1 juta dollar AS melalui ekspor 13.222 ton minyak kelapa. Ini belum termasuk ekspor bungkil kopra sebanyak 5.700 ton dan kopra 700 ton.
Hasil hutan pun tak kalah perannya bagi pertumbuhan ekonomi Banggai. Setidaknya berdasarkan angka hingga Agustus 2001 dari Iuran Hasil Hutan (IHH) diperoleh Rp 1,5 milyar dan dari Dana Reboisasi 453.915 dollar AS. Pemasukan itu berasal dari hasil kayu rimba logs dan selebihnya dari rotan, damar, kulit japari dan kemiri.
  Saat ini Pertaminta terus-menerus berupaya menggali cadangan gas yang tersimpan di bumi Banggai. Tahun 2003 lalu Pertamina menemukan gas dengan kapasitas 34 MMSCFD (juta kaki kubik per hari) dan 160 BCPD (barrel kondensat per hari) dari hasil pemboran sumur Donggi (DNG #1) di desa Kamiwangi, Kecamatan Toili, Kabupaten Banggai Sulawesi Tengah.
Sumur yang mulai ditajak tanggal 14 Agustus 2001 dan berhasil diselesaikan pada tanggal 4 September 2001 dengan kedalaman akhir 2502 MBLB (meter bawah lantai bor) diantaranya telah dilakukan uji kandung lapisan (UKL). Interval kedalaman 1705 - 1710 M dan menghasilkan 14 MMSCFGD + 50 BCPD. Sedang interval kedalaman 1620 - 1630 M menghasilkan 20 MMSCFGD + 110 BCPD. Kondensat yang dihasikan dari kedua lapisan tersebut mempunyai derajat API sebesar 54 derajat. Selanjutnya untuk membuktikan potensi cadangan gas di komplek Donggi maupun Blok Matindok Sulawesi Tengah akan dilakukan studi geologi dan geofisika terpadu yang melibatkan ahli eksplorasi, ahli reservoir dan ahli gas.

Cara Mereset Printer HP deskJet D2400-D2466

Apakah Anda pernah Punya masalah dengan printer, dan HP D2400 ? Sebagian besar printer HP masalah utamanya adalah tinta yang kebanyakan diisi di cartridgenya. disamping itu bisa juga terjadi kalau kontak-kontak pada rumah cartridge tercemar tinta, menyebabkan titik-titik kontak itu akan saling terhubung satu sama lainnya (korslet). Kedua penyebab ini mengakibatkan lampu printer kelap-kelip.Khusus pada Printer HP D2400, ternyata dia juga perlu tindakan RESET sebagaimana pada printer jenis lain, misal canon dan Epson.
Sesuai dengan yang saya peroleh dari blog tetangga, katanya cara Mereset Printer HP D2400 cuma beda-beda tipis dengan mereset printer jenis lain.

Langkah-langkahnya dapat saya berikan di sini :
  1. Matikan printer HP D2400 RESETTER, dan lepaskan kabel powernya.
  2. setelah itu dalam keadaankabel tidak terhubung, tekan-tahan tombol power dan printer HP D2400 dan colok (plug) lagi kabel power.
  3. maka tombol power pada printer HP D2400 RESETTER akan hidup dan hijau.
  4. Kemudian tekan tombol power sekali lagi.
  5. ketika tombol dilepas lampu powernya mati.
  6. Proses Reset Printer selesai.
  7. sekarang coba lagi printer HP D2400
Printer Canon iP 1980 dan iP 1880 memang tidak di jual lagi di pasaran, namun penggunaan printer jenis ini masih terus digunakan sampai saat ini karena tergolong printer yang Awet. Namun terkadang Printer Canon 1880 ini mengalami tangki pembuangan tinta yang penuh atau waste ink absorber full yang mengharuskan kita mereset printer ini. Berbeda dengan iP 1980 yang gampang direset dengan program resetter GeneralTool, Printer Canon 1880 ini sebenarnya bisa direset dengan program tersebut, namun sering terjadi error di monitor pc Anda karena program ini mengganggu system vga. Bagi pemula sebaiknya menggunakan software resetter iPTool saja. Silakan anda download software Resetter (iPTool 1.1.5) untuk tipe printer Canon: IP1200, IP1300, IP1600, IP1700, IP1800, IP1880, IP2200, IP2500. [Download disini]. Untuk type ipTool 0.9.2 seperti gambar diatas silahkan [Download Disini]. Jalankan program iPTool.exe Lihat menu Reset Counters, pada submenu Ink Counter silakan klik “Reset Black”, lalu muncul kotak dialog silakan anda pilih yes, lakukan hal yang sama pada “Reset Color”. Lihat menu dibawahnya yaitu Waste Ink Counter, silakan klik “Reset Main”, lalu muncul kotak dialog, pilih saja yes. Lakukan hal yang sama pada “Reset Platen”. Lihat menu EEPROM Operations lalu klik “Reset”, kemudian muncul kotak dialog pilih saja yes. Selesai, klik Exit. Sumber: http://blog.autada.com/2012/09/cara-reset-printer-canon-ip-1880.html Copyright by www.autada.com Terima kasih sudah menyebarluaskan aritkel ini
Printer Canon iP 1980 dan iP 1880 memang tidak di jual lagi di pasaran, namun penggunaan printer jenis ini masih terus digunakan sampai saat ini karena tergolong printer yang Awet. Namun terkadang Printer Canon 1880 ini mengalami tangki pembuangan tinta yang penuh atau waste ink absorber full yang mengharuskan kita mereset printer ini. Berbeda dengan iP 1980 yang gampang direset dengan program resetter GeneralTool, Printer Canon 1880 ini sebenarnya bisa direset dengan program tersebut, namun sering terjadi error di monitor pc Anda karena program ini mengganggu system vga. Bagi pemula sebaiknya menggunakan software resetter iPTool saja. Silakan anda download software Resetter (iPTool 1.1.5) untuk tipe printer Canon: IP1200, IP1300, IP1600, IP1700, IP1800, IP1880, IP2200, IP2500. [Download disini]. Untuk type ipTool 0.9.2 seperti gambar diatas silahkan [Download Disini]. Jalankan program iPTool.exe Lihat menu Reset Counters, pada submenu Ink Counter silakan klik “Reset Black”, lalu muncul kotak dialog silakan anda pilih yes, lakukan hal yang sama pada “Reset Color”. Lihat menu dibawahnya yaitu Waste Ink Counter, silakan klik “Reset Main”, lalu muncul kotak dialog, pilih saja yes. Lakukan hal yang sama pada “Reset Platen”. Lihat menu EEPROM Operations lalu klik “Reset”, kemudian muncul kotak dialog pilih saja yes. Selesai, klik Exit. Sumber: http://blog.autada.com/2012/09/cara-reset-printer-canon-ip-1880.html Copyright by www.autada.com Terima kasih sudah menyebarluaskan aritkel ini
Printer Canon iP 1980 dan iP 1880 memang tidak di jual lagi di pasaran, namun penggunaan printer jenis ini masih terus digunakan sampai saat ini karena tergolong printer yang Awet. Namun terkadang Printer Canon 1880 ini mengalami tangki pembuangan tinta yang penuh atau waste ink absorber full yang mengharuskan kita mereset printer ini. Berbeda dengan iP 1980 yang gampang direset dengan program resetter GeneralTool, Printer Canon 1880 ini sebenarnya bisa direset dengan program tersebut, namun sering terjadi error di monitor pc Anda karena program ini mengganggu system vga. Bagi pemula sebaiknya menggunakan software resetter iPTool saja. Silakan anda download software Resetter (iPTool 1.1.5) untuk tipe printer Canon: IP1200, IP1300, IP1600, IP1700, IP1800, IP1880, IP2200, IP2500. [Download disini]. Untuk type ipTool 0.9.2 seperti gambar diatas silahkan [Download Disini]. Jalankan program iPTool.exe Lihat menu Reset Counters, pada submenu Ink Counter silakan klik “Reset Black”, lalu muncul kotak dialog silakan anda pilih yes, lakukan hal yang sama pada “Reset Color”. Lihat menu dibawahnya yaitu Waste Ink Counter, silakan klik “Reset Main”, lalu muncul kotak dialog, pilih saja yes. Lakukan hal yang sama pada “Reset Platen”. Lihat menu EEPROM Operations lalu klik “Reset”, kemudian muncul kotak dialog pilih saja yes. Selesai, klik Exit. Sumber: http://blog.autada.com/2012/09/cara-reset-printer-canon-ip-1880.html Copyright by www.autada.com Terima kasih sudah menyebarluaskan aritkel ini
Printer Canon iP 1980 dan iP 1880 memang tidak di jual lagi di pasaran, namun penggunaan printer jenis ini masih terus digunakan sampai saat ini karena tergolong printer yang Awet. Namun terkadang Printer Canon 1880 ini mengalami tangki pembuangan tinta yang penuh atau waste ink absorber full yang mengharuskan kita mereset printer ini. Berbeda dengan iP 1980 yang gampang direset dengan program resetter GeneralTool, Printer Canon 1880 ini sebenarnya bisa direset dengan program tersebut, namun sering terjadi error di monitor pc Anda karena program ini mengganggu system vga. Bagi pemula sebaiknya menggunakan software resetter iPTool saja. Silakan anda download software Resetter (iPTool 1.1.5) untuk tipe printer Canon: IP1200, IP1300, IP1600, IP1700, IP1800, IP1880, IP2200, IP2500. [Download disini]. Untuk type ipTool 0.9.2 seperti gambar diatas silahkan [Download Disini]. Jalankan program iPTool.exe Lihat menu Reset Counters, pada submenu Ink Counter silakan klik “Reset Black”, lalu muncul kotak dialog silakan anda pilih yes, lakukan hal yang sama pada “Reset Color”. Lihat menu dibawahnya yaitu Waste Ink Counter, silakan klik “Reset Main”, lalu muncul kotak dialog, pilih saja yes. Lakukan hal yang sama pada “Reset Platen”. Lihat menu EEPROM Operations lalu klik “Reset”, kemudian muncul kotak dialog pilih saja yes. Selesai, klik Exit. Sumber: http://blog.autada.com/2012/09/cara-reset-printer-canon-ip-1880.html Copyright by www.autada.com Terima kasih sudah menyebarluaskan aritkel ini

Cara Mereset Printer Canon IP1980

Bagi Anda yang mempunyai Printer Canon IP 1980, mungkin suatu saat akan mengalami pinter yang Anda pakai tidak bisa langsung mencetak dokumen, lampu indikator berkelap-kelip dan muncul pesan “The ink absorber is almost full”.

Solusi sementara yang mungkin Anda lakukan adalah menekan tombol RESUME seperti yang diperintahkan dalam pesan tersebut. Untuk sementara Anda bisa mencetak dokumen, tetapi kejadian ini terus berulang dan bahkan mungkin sampai printer tersebut hanya menampilkan lampu indikator yang nge-blink saja, tidak bisa ngeprint sama sekali.
Kondisi tersebut sebenarnya umum terjadi pada printer inkjet. Pada printer tersebut terdapat tempat pembuangan tinta atau biasa disebut waste ink tank, didalam tempat pembuangan ini terdapat bahan semacam busa (ink absorber) untuk menyerap tinta buangan dari Catridge, misalnya ketika printer melakukan proses cleaning head.
Untuk mencegah melubernya tinta buangan tersebut, maka pihak pabrikan membuat semacam counter yang akan menghitung jumlah print out dari printer, ketika telah mencapai batas tertentu itulah kondisi “waste ink tank full” atau “ink absorber is full” terjadi dan biasa ditandai dengan indikator LED yang kelap-kelip.
Untuk mengatasi hal tersebut Anda bisa melakukan dengan cara mereset printer secara manual atau dengan menggunakan tool resetter printer. Kekurangan dari mereset printer secara manual yaitu ketika listrik mati akan terjadi lagi kondisi “ ink absorber full” atau semacamnya dan printer harus di-reset kembali.
Dalam artikel ini saya akan coba berbagi pengalaman tentang cara mereset Canon IP1980 secara total dengan cara manual dan dilanjutkan dengan menggunakan tool resetter sehingga printer bisa normal kembali.
Cara Reset Canon IP1980 Secara Total
  1. Download terlebih dahulu General Tool Canon IP1900 series, Anda bisa mendownloadnya disini
  2. Matikan Printer, lalu lepaskan kabel power
  3. Sambil menekan tombol ON pasang kembali kabel power
  4. Masih tetap menekan tombol ON, tekan 2x tombol RESUME
  5. Lepaskan kedua tombol.
  6. Dalam tahap ini printer dalam kondisi temporary reset dan untuk meresetnya secara total, jalankan aplikasi General Tool Canon IP1900 yang telah Anda download.
  7. Tunggu sejenak sampai program mendeteksi adanya printer seperti terlihat pada gambar dibawah.
  8. Setelah printer terdeteksi, centang pilihan EEPROM Clear dan klik tombol Test Pattern 1
  9. Masukan kertas kosong karena printer akan segera melakukan print test.
  10. Setelah printer selesai ngeprint, klik tombol Main dan Platen kemudian klik tombol Quit untuk keluar.
Sekarang Anda telah melakukan reset  Canon IP1980 secara total. Untuk mencobanya silahkan matikan printer kemudian nyalakan lagi, klo Anda berhasil maka printer akan kembali normal dan bisa dipake untuk ngeprint kembali tanpa terganggu pesan error seperti diatas.

Jumat, 09 Desember 2011

REKURSI DAN ITERATIF

REKURSI DAN
ITERATIF
Struktur data pascal
Pengertian rekursi
 Suatu proses yang bisa memanggil
dirinya sendiri.
 Rekursi biasanya digunakan secara
iteratif yaitu melakukan pengulangan
operasi sampai jumlah pengulangan
yang diinginkan.

Contoh Rekursif sekaligus iteratif
 Program Perpangakatan
 Program Factorial
 Program Deret Fibonacci
Contoh Pada Perpangkatan
 Dalam mencari pangkat suatu nilai
diperlukan inputan :
• Berapa bilangan yang akan di
pangkatkan
• Berapa nilai pangkatnya
Contoh : AX
A=5 bilangan yang akan di pangkatkan
X=4 nilaipangakatnya
54=625
Program Pangkat
program pangkat;
uses crt;
var A,x,i,hasil:integer;
begin
writeln('masukkan bilangan yang akan di
pangkatkan');readln(A);
writeln('masukkan bilangan pangkat');readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln('hasil dari ',A,' pangkat ',x,' adalah ',hasil);
readln;
end.
Contoh Program deret Fibonacci
 Deret terdiri atas :
1,1,2,3,5,8,13,…
Dicari deret sampai suku ke-n (jadi
ada inputan untuk sampai suku ke
berapa yang diinginkan)

Program deret fibonacci
program fibonacci;
uses crt;
Var fibo: array [1..10] of integer;
A,i,hasil:integer;
begin
clrscr;
write('masukkan suku keberapa dalam deret fibonacci :');readln(A);
if (A=1) or (A=2) then hasil:=1 else
begin
fibo[1]:=1; fibo[2]:=1;
for i:=3 to A do
begin
fibo[i]:=fibo[i-1]+fibo[i-2];
hasil:=fibo[i];
end;
end;
writeln;
for i:=1 to A do
write(fibo[i],' ');
writeln;
writeln('Suku Ke-',A,' dari deret fibonacci adalah ',hasil);
readln;
end.
Contoh Pada Factorial
 Dalam mencari factorial diperlukan
bilangan untuk di factorial.
 Misal A! dengan A=4
Maka 4! Adalah :4.3.2.1=24

Selasa, 29 November 2011

Klasifikasi, Jenis dan Macam Data - Pembagian Data Dalam Ilmu Eksak Sains Statistik / Statistika

A. Jenis Data Menurut Cara Memperolehnya

1. Data Primer
Data primer adalah secara langsung diambil dari objek / obyek penelitian oleh peneliti perorangan maupun organisasi. Contoh : Mewawancarai langsung penonton bioskop 21 untuk meneliti preferensi konsumen bioskop.

2. Data Sekunder
Data sekunder adalah data yang didapat tidak secara langsung dari objek penelitian. Peneliti mendapatkan data yang sudah jadi yang dikumpulkan oleh pihak lain dengan berbagai cara atau metode baik secara komersial maupun non komersial. Contohnya adalah pada peneliti yang menggunakan data statistik hasil riset dari surat kabar atau majalah.

B. Macam-Macam Data Berdasarkan Sumber Data

1. Data Internal
Data internal adalah data yang menggambarkan situasi dan kondisi pada suatu organisasi secara internal. Misal : data keuangan, data pegawai, data produksi, dsb.

2. Data Eksternal
Data eksternal adalah data yang menggambarkan situasi serta kondisi yang ada di luar organisasi. Contohnya adalah data jumlah penggunaan suatu produk pada konsumen, tingkat preferensi pelanggan, persebaran penduduk, dan lain sebagainya.

C. Klasifikasi Dara Berdasarkan Jenis Datanya

1. Data Kuantitatif
Data kuantitatif adalah data yang dipaparkan dalam bentuk angka-angka. Misalnya adalah jumlah pembeli saat hari raya idul adha, tinggi badan siswa kelas 3 ips 2, dan lain-lain.

2. Data Kualitatif
Data kualitatif adalah data yang disajikan dalam bentuk kata-kata yang mengandung makna. Contohnya seperti persepsi konsumen terhadap botol air minum dalam kemasan, anggapan para ahli terhadap psikopat dan lain-lain.

D. Pembagian Jenis Data Berdasarkan Sifat Data

1. Data Diskrit
Data diskrit adalah data yang nilainya adalah bilangan asli. Contohnya adalah berat badan ibu-ibu pkk sumber ayu, nilai rupiah dari waktu ke waktu, dan lain-sebagainya.

2. Data Kontinyu
Data kontinyu adalah data yang nilainya ada pada suatu interval tertentu atau berada pada nilai yang satu ke nilai yang lainnya. Contohnya penggunaan kata sekitar, kurang lebih, kira-kira, dan sebagainya. Dinas pertanian daerah mengimpor bahan baku pabrik pupuk kurang lebih 850 ton.

E. Jenis-jenis Data Menurut Waktu Pengumpulannya

1. Data Cross Section
Data cross-section adalah data yang menunjukkan titik waktu tertentu. Contohnya laporan keuangan per 31 desember 2006, data pelanggan PT. angin ribut bulan mei 2004, dan lain sebagainya.

2. Data Time Series / Berkala
Data berkala adalah data yang datanya menggambarkan sesuatu dari waktu ke waktu atau periode secara historis. Contoh data time series adalah data perkembangan nilai tukar dollar amerika terhadap euro eropa dari tahun 2004 sampai 2006, jumlah pengikut jamaah nurdin m. top dan doktor azahari dari bulan ke bulan, dll.

klasifikasi data

1. menurut jenisnya
a. Data kualitatif : tidak berupa angka
b. Data kuantitatif : berupa angka

2. menurut sifatnya
a. Diskrit : dapat dihitung / rata-rata
b. Kontinyu : nilai dalam interval waktu

3. menurut sumbernya
a. Data internal : menggambarkan keadaan perusahaan
b. Data eksternal : menggambarkan keadaan di luar perusahaan

4. menurut cara memperolehnya
a. data primer : diolah sendiri
b. data sekunder : diolah oleh pihak lain

5. menurut waktu pengumpulannya
a. Data cross-section : pada waktu tertentu
b. Data Time series (berkala) : historis, dari waktu ke waktu

*) info penting dalam pengolahan data. karena, data yang tidak akurat hanya membuang waktu dan tenaga. bahkan untuk mendengarkannya saja sudah wasting time. data yang tidak akurat akan menghasilkan perencanaan yang tidak akurat, pengendalian yang tidak efektif, dan evaluasi yang tidak mengenai sasaran.

Sabtu, 26 November 2011

pengertian array dan record

ARRAY
Suatu array adalah sebuah struktur data
yang terdiri atas banyak variabel dengan
tipe data sama, dimana masing-masing
elemen variabel mempunyai nilai indeks.
Setiap elemen array mampu untuk
menyimpan satu jenis data (yaitu:
variabel).Cara Pendefinisian
• contoh type
A = array [1..6] of integer;
• Secara logika pendefinisian array di atas
merupakan sekumpulan kotak , dimana tiap
kotak mempunyai nilai indeks integer 1, 2, 3, ...,6
tiap elemen array ditandai dengan:
A[1], A[2], A[3], A[4], A[5], A[6]
untuk mengisi elemen array misal A[1]:=4;.Sifat Array
Array merupakan struktur data yang statis, yaitu
jumlah elemen yang ada harus ditentukan
terlebih dahulu dan tak bisa di ubah saat
program berjalan.

Record
Record adalah sebuah tipe data yang mengumpulkan beberapa item data di mana masing-masing tipe data dari item data ini berbeda-beda. Masing-masing item data ini bisa disebut dengan field.
Mendeklarasikan Record
Masih ingat kuliah mengenai tipe data? Dalam Pascal, semua variabel harus dideklarasikan sebelum bisa dipakai. Sebagai contoh, kitaingin memakai variabel dengan nama Nama untuk dimasukkan nilai nama-nama mahasiswa. Kita akan mendefinisikannya menjadi:var Nama: String[80];
Dari kode di atas kita memberitahukan ke Pascal bahwa kita akan memakai variabel Nama yang tipe datanya string dan kita alokasikan panjang stringnya 80 karakter.
Nah, dalam Pascal, kita dimungkinkan untuk memiliki judul tipe data yang kita definisikan sendiri. Misalkan kita ingin mengganti judul tipe data integer dengan bilanganBulat. Dalam Pascal, kita definisikan ini dengan:
type bilanganBulat = integer;
Perhatikan beda pendefinisian variabel dan pendefinisian type. Untuk pendefinisian variabel kita menggunakan titik dua (:), sedangkan pendefinisian type kita menggunakan sama dengan (=).
Untuk mendeklarasikan record, kita memakai reserved word record, diikuti dengan daftar field dan diakhiri dengan end. Berikut adalah contoh dari deklarasi sebuah record.
type recMhs = record;
nama : string[80];
NPM : string[8];
nilai : integer;
end;
Untuk bisa memakai record ini, kita mendeklarasikan record ke dalam variabel seperti ini:
var recordMahasiswa: recMhs;
Menggunakan Record
Menggunakan/ mengakses nilai field dari record adalah menggunakan nama variabel yang sudah dideklarasikan, diikuti dengan tanda titik (.) dan nama field. Dari contoh di atas, apabila kita ingin mengakses nilai field nama dari record recordMahasiswa, kode dalam Pascal adalah sebagai berikut:record
Mahasiswa.nama:=’mark anthony’;

Klasifikasi, Jenis dan Macam Data - Pembagian Data Dalam Ilmu Eksak Sains Statistik / Statistika

A. Jenis Data Menurut Cara Memperolehnya

1. Data Primer
Data primer adalah secara langsung diambil dari objek / obyek penelitian oleh peneliti perorangan maupun organisasi. Contoh : Mewawancarai langsung penonton bioskop 21 untuk meneliti preferensi konsumen bioskop.

2. Data Sekunder
Data sekunder adalah data yang didapat tidak secara langsung dari objek penelitian. Peneliti mendapatkan data yang sudah jadi yang dikumpulkan oleh pihak lain dengan berbagai cara atau metode baik secara komersial maupun non komersial. Contohnya adalah pada peneliti yang menggunakan data statistik hasil riset dari surat kabar atau majalah.

B. Macam-Macam Data Berdasarkan Sumber Data

1. Data Internal
Data internal adalah data yang menggambarkan situasi dan kondisi pada suatu organisasi secara internal. Misal : data keuangan, data pegawai, data produksi, dsb.

2. Data Eksternal
Data eksternal adalah data yang menggambarkan situasi serta kondisi yang ada di luar organisasi. Contohnya adalah data jumlah penggunaan suatu produk pada konsumen, tingkat preferensi pelanggan, persebaran penduduk, dan lain sebagainya.

C. Klasifikasi Dara Berdasarkan Jenis Datanya

1. Data Kuantitatif
Data kuantitatif adalah data yang dipaparkan dalam bentuk angka-angka. Misalnya adalah jumlah pembeli saat hari raya idul adha, tinggi badan siswa kelas 3 ips 2, dan lain-lain.

2. Data Kualitatif
Data kualitatif adalah data yang disajikan dalam bentuk kata-kata yang mengandung makna. Contohnya seperti persepsi konsumen terhadap botol air minum dalam kemasan, anggapan para ahli terhadap psikopat dan lain-lain.

D. Pembagian Jenis Data Berdasarkan Sifat Data

1. Data Diskrit
Data diskrit adalah data yang nilainya adalah bilangan asli. Contohnya adalah berat badan ibu-ibu pkk sumber ayu, nilai rupiah dari waktu ke waktu, dan lain-sebagainya.

2. Data Kontinyu
Data kontinyu adalah data yang nilainya ada pada suatu interval tertentu atau berada pada nilai yang satu ke nilai yang lainnya. Contohnya penggunaan kata sekitar, kurang lebih, kira-kira, dan sebagainya. Dinas pertanian daerah mengimpor bahan baku pabrik pupuk kurang lebih 850 ton.

E. Jenis-jenis Data Menurut Waktu Pengumpulannya

1. Data Cross Section
Data cross-section adalah data yang menunjukkan titik waktu tertentu. Contohnya laporan keuangan per 31 desember 2006, data pelanggan PT. angin ribut bulan mei 2004, dan lain sebagainya.

2. Data Time Series / Berkala
Data berkala adalah data yang datanya menggambarkan sesuatu dari waktu ke waktu atau periode secara historis. Contoh data time series adalah data perkembangan nilai tukar dollar amerika terhadap euro eropa dari tahun 2004 sampai 2006, jumlah pengikut jamaah nurdin m. top dan doktor azahari dari bulan ke bulan, dll.

Rabu, 23 November 2011

PASCAL

Bab 4 Array PASCAL

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, boolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponennya mempunyai nilai dengan tipe data tersebut.

Contoh:
Var
Untai : array[1..50] of Integer;
Pada contoh Array dengan nama untai telah dideklarasikan dengan tipe integer, dengan jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas harus bertipe integer.

Contoh Program :
Program Contoh_Array_Input;
Uses WinCrt;
Var
Bilangan : array[1..5] of Integer;
Begin
ClrScr;
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai variabel bilangan ke 3 =',Bilangan[3]);
Readln;
End.


Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini :

Program Contoh_Deklarasi_Array_Beragam;
Uses WinCrt;
Var
NPM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
Begin
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NPM =');Readln(NPM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NPM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.



Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :
Nama : Array [1..50] of String[20];
Type
Angka = String[20];
Var
Nama : Array [1..50] of Angka;
Begin
.
.
End.

Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange, tetapi tidak bisa real.
Contoh:
Var
Nilai : Array[1..10] of Integer;
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array tersebut dapat dideklarasikan dengan type seperti berikut ini :

Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;
atau :
Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;
atau :
Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;
atau :
Const
Atas =1;
Bawah = 5;
type
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;

I. Deklarasi Type Indeks Skalar
Indeks dari larik dapat berupa tipe skalar.
Contoh. :
Program Deklarasi_Indeks_Array_Skalar;
Uses WinCrt;
Var
Jum : Array[(jan,feb,mar,apr,mei)] of Integer;
Begin
Jum[jan]:=25;
Jum[feb]:=45;
Jum[mar]:=21;
Jum[apr]:=23;
Jum[mei]:=50;
Writeln('Jumlah nilai bulan maret =',Jum[mar]);
Readln;
End.

dapat juga ditulis :
type
Bln = (jan,feb,mar,apr,mei);
Var
Jum : Array[bln] of Integer;
atau :
type
Bln =(jan,feb,mar,apr,mei);
Var
Jum : Array[jan..mei] of Integer;


II. Deklarasi Konstanta Array
Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const).
Contoh Program :
Program Contoh_Deklarasi_Array_Konstan;
Uses WinCrt;
Const
Tetap : Array[1..4] of Integer=(7,10,21,20);
Var
i : Integer;
Begin
For i:= 1 to 4 Do
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]);
Readln;
End.

konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut.
Contoh Program :
Program Contoh_Konstan_Array_Char_;
Uses WinCrt;
Const
Huruf : Array[0..5] of Char=('A','B','C','D','E','F');
Var
i : Integer;
Begin
For i:= 0 to 5 Do
Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]);
Readln;
End.


Konstanta array dapat juga berupa string seperti berikut ini.
Contoh Program :
Program Constanta_Array_String;
Uses WinCrt;
Type
A = Array [1..5] of String;
Const
Nama : A = ('basic','pascal','cobol','paradox','dbase');
Var
i : Integer;
Begin
For i:= 1 to 5 Do
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]);
readln;
end.

Dalam pascal string merupakan array dari elemen- elemen karakter seperti berikut :
Contoh Program :
Program String_Adalah_Array_Tipe_Char;
Uses WinCrt;
Var
Nama : string;
i : Integer;
Begin
Nama:='Turbo Pascal';
For i:= 1 to Length(nama) Do
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]);
Readln;
End.



contoh program bilangan prima dengan menggunakan bantuan array.
Contoh program :
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses WinCrt;
Var
Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.



Contoh pengurutan data dengan metode buble sort, yaitu dengan cara penukaran, dapat dilihat pada contoh dibawah ini :
Contoh Program :
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort;
Uses WinCrt;
Var
nil1 : Array[1..100] of Integer;
n,i,j,dum : Integer;
Begin
ClrScr;
Write('mau isi berapa data acak (integer) ='); readln(n);
For i := 1 to n Do
Begin
Write('Data Ke ',i,':');Readln(nil1[i]);
End;
{* penyapuan proses}
for i:= 1 to n-1 do
begin
for j:= i to n do
begin
if nil1[j]
begin
dum:=nil1[j];
nil1[j]:=nil1[i];
nil1[i]:=dum;
end;
end;
end;
writeln;
writeln('Hasil Sortir');
for i := 1 to n do
write(nil1[i]:3);
readln;
end.


III. Array Dua Dimensi
Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
1 2
1 2 3
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini .

Contoh Program:
Program Deklarasi_Array_Dua_Dimensi;
Uses WinCrt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel[1,1]:=1;
Tabel[1,2]:=2;
Tabel[2,1]:=3;
Tabel[2,2]:=4;
Tabel[3,1]:=5;
Tabel[3,2]:=6;
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]);
End;
End;
Readln;
End.




IV. Alternatif Deklarasi Array Dua Dimensi.
Ada beberapa cara dalam mendeklarasikan array dua dimensi, beberapa cara tersebut dapat dilihat dibawah ini :
Contoh :
Var
Tabel : Array[1..3] of Array[1..2] of Byte;
atau :
Type
Matrik = Array[1..3,1..2] of Byte;
Var
Tabel : Matrik;
atau :
Type
Baris = 1..3;
Kolom = 1..2;
Matrik = Array[Baris,Kolom] of Byte;
Var
Tabel : Matrik;
atau :
Type
Baris = 1..3;
Kolom=1..2;
Matrik= Array[Baris] of Array[Kolom] of Byte;
Var
Tabel : Matrik;

Dibawah ini akan diberikan listing program penggunaan array dua dimensi dalam aplikasi penjumlahan matrik :
Contoh Prorgam:


Program Penjumlahan_Matrik;
Uses WinCrt;
Var
Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
{ input matrik ke satu }
Writeln(' Elemen matrik satu');
For i := 1 to 3 Do
Begin
For j := 1 to 2 Do
Begin
Write('Elemen baris -',i,' Kolom -',j,'= ');
Readln(matrik1[i,j]);
End;
End;
{input matrik ke dua}
Writeln('input elemen matrik dua');
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write('Elemen baris -',i,' kolom -',j,'= ');
Readln(matrik2[i,j]);
End;
End;
{proses penjumlahan tiap elemen}
For i := 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];
End;
End;
{proses cetak hasil}
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write(Hasil[i,j]:6);
End;
Writeln;
End;
Readln;
End.


V. Array Sebagai Parameter
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara acuan (by reference) ke procedure atau ke function. Procedure yang menggunakan parameter berupa array harus dideklarasikan di dalam judul procedure yang menyebutkan parameternya bertipe array.

Contoh Program :
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure;
Uses WinCrt;
Const
Garis ='---------------------------------------------------';
Type
Untai = Array[1..10] of String[15];
Bulat = Array[1..10] of Integer;
Huruf = Array[1..10] of Char;
Var
i,Banyak : Integer;
Procedure Proses(Nama:Untai;Nilai:Bulat);
Var
Ket : String;
Abjad : Char;
Begin
Writeln(Garis);
Writeln('Nama Nilai Abjad Keterangan');
Writeln(Garis);
For i := 1 to Banyak Do
Begin
If Nilai[i] > 90 Then
Begin
Abjad:='A';
Ket :='Istimewa';
End;
If (Nilai[i]<90) And (Nilai[i]>70) Then
Begin
Abjad:='B';
Ket :='Memuaskan';
End;
If (Nilai[i]<70) And (Nilai[i]>60) Then
Begin
Abjad:='C';
Ket :='Cukup';
End;
If (Nilai[i]<60) And (Nilai[i]>45) Then
Begin
Abjad:='D';
Ket :='Kurang';
End;
If Nilai[i]< 45 Then
Begin
Abjad:='E';
Ket :='Sangat kurang';
End;
Writeln(Nama[i]:15,' ',Nilai[i]:4,' ',Abjad,' ',Ket:15);
End;
Writeln(Garis);
End;
Procedure Masuk_Data;
Var
Nama : Untai;
Nilai : Bulat;
Begin
Write('Banyak data =');Readln(Banyak);
For i:= 1 to Banyak Do
Begin
ClrScr;
Writeln('Data ke - ',i);
Write('Nama =');readln(Nama[i]);
Write('Nilai =');readln(Nilai[i]);
End;
Proses(Nama,Nilai);
End;
{modul Utama}
Begin
Masuk_Data;
Readln;
End.

STRUKTUR DATA

STRUKTUR DATA


KULIAH STRUKTUR DATA


MATRIKS

Matriks adalah sekumpulan informasi yang setiap individu elemennya terdefinisi berdasarkan dua buah indeks (yang biasanya dikonotasikan dengan baris dan kolom).
Setiap elemen matriks dapat diakses secara langsung jika kedua indeks diketahui, dan indeksnya harus bertype yang mempunyai keterurutan (suksesor), misalnya integer.
Matriks adalah struktur data dengan memori internal. Struktur ini praktis untuk dipakai tetapi memakan memori! (Matriks integer 100 x 100 memakan 10000 x tempat penyimpanan integer.)
Sering dikatakan bahwa matriks adalah tabel atau array berdimensi 2. Tetapi patut diperhatikan, bahwa pengertian "dimensi 2", "baris dan kolom" adalah dalam pemikiran kita. Pengaturan letak elemen matriks dalam memori komputer selalu tetap sebagai deretan sel "linier". Pengertian 2 dimensi ini hanya untuk mempermudah pemrogram dalam mendesain programnya. Maka matriks adalah salah satu contoh struktur data "lojik".
Contoh : untuk matriks 3x4 sebagai berikut:

Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut :
a. Per baris
1 2 3 4 5 6 7 8 9 10 1112
b. Per kolom
1 5 9 2 6 10 3 7 11 4 8 12

Banyaknya baris dan banyaknya kolom biasanya disebut sebagai ukuran matriks.
Contoh: matriks berukuran 4 x 5 artinya mempunyai baris sebanyak 4 dan kolom sebanyak 5, sehingga dapat menyimpan 20 elemen. Ada beberapa bahasa pemrograman yang meminta ukuran matriks pada pendefinisiannya, ada yang meminta penomoran minimum dan maksimum dari baris dan kolom. Pada notasi algoritmik yang kita pakai, Cara kedua yang akan dipakai, sebab ukuran matriks dapat dideduksi dari penomorannya.

Matriks adalah struktur data yang "statik", yaitu ukuran maksimum memorinya ditentukan dari awal. Batas indeks baris dan kolom harus terdefinisi dengan pasti saat dideklarasi dan tak dapat diubah-ubah. Seringkali dalam persoalan semacam ini, kita memesan memori secara "berlebihan" untuk alasan terjaminnya memori yang tersedia, dan hanya memakai sebagian saja. Biasanya memori yang dipakai (selanjutnya disebut efektif) adalah yang "kiri atas" seperti ilustrasi sebagai berikut, dimana pada saat deklarasi, memori maksimum yang disediakan adalah 10x10, dan hanya akan dipakai untuk 3X4.
Jika bahasa yang menangani matriks tidak menentukan spesifikasi inisialisasi nilai pada saat memori dialokasi, maka:
1 1 1
2 2 2
3 3 3
4 4 4






1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
9
10

"Linierisasi" per baris akan menghasilkan nilai :
{1,1,1,?,?,?,?,?,?,?},{2,2,2,?,?,?,?,?,?,?},{3,3,3,?,?,?,?,?,?,?},{4,4,4,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?}

Sedangkan linierisasi per kolom akan menghasilkan nilai :
{1,2,3,4,?,?,?,?,?,?),{1,2,3,4,?,?,?,?,?,?),{1,2,3,4,?,?,?,?,?,?),{1,2,3,4,?,?,?,?,?,?),{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?},{?,?,?,?,?,?,?,?,?,?}, {?,?,?,?,?,?,?,?,?,?}

Akibat dari "linierisasi" yang tergantung kepada bahasa pemrograman tersebut, dan pemakaian memori yang "hanya sebagian" dari keseluruhan memori yang dipesan, maka passing parameter sebuah matriks dapat menimbulkan kesalahan.

Misalnya sebuah fungsi atau prosedur mempunyai parameter formal sebuah matriks dengan dimensi 6x6, dan bahasanya akan mengolah per kolom Jika parameter aktual adalah sebuah matriks berukuran 3x4 dengan nilai
1 2 3 4
5 6 7 8
9 10 11 12

Maka ketika nilai ditampung dalam prosedur berparameter formal matriks 6x6, dengan traversal i dan j untuk iε [1..3], jε[1..4] akan di proses dengan beberapa nilai tak terdefinisi yaitu {1,5,9,10,3,7,8,12,?,?,?,?}, seperti digambarkan sebagai berikut :
1 10 8 ? ? ?
5 3 12 ? ? ?
9 7 ? ? ? ?
2 11 ? ? ? ?
6 4 ? ? ? ?

Maka, sebaiknya jika merancang prosedur atau fungsi yang mempunyai parameter, ukuran parameter formal harus sama dengan parameter aktual.
Beberapa bahasa, misalnya bahasa Fortran, menyediakan fasilitas "adjustable dimension", yaitu ukuran parameter formal matriks belum ditentukan dimensinya, dan baru ditentukan saat parameter aktual diberikan. Fasilitas ini mengurangi kesalahan yang terjadi.

Beberapa contoh matriks dan isinya:

1. MatNamaHari [1..7,1..3] : Nama hari ke 1 s/d 7 dalam 3 bahasa (Indonesia, Inggris, Prancis) :
1 =INDONESIA 2 = INGGRIS 3 = PRANCIS
1 Senin Monday Lundi
2 Selasa Tuesday Mardi
3 Rabu Wednesday Mercredi
4 Kamis Thursday Jeudi
5 Jum'at Friday Vendredi
6 Sabtu Saturday Samedi
7 Minggu Sunday Dimanche

2. A [1..5,1..5] : Matriks bilangan real
1 2 3 4 5
1 12.1 7.0 8.9 0.7 6.6
2 0.0 1.6 2.1 45.9 55.0
3 6.1 8.0 0.0 3.1 21.9
4 9.0 1.0 2.7 22.1 6.2
5 5.0 0.8 0.8 2.0 8.1

3. MatFrek [`A'..'E',1..7] : Matriks frekuensi kemunculan huruf `A' s/d `E' pada hasil pemeriksaan 7 pita karakter

1 2 3 4 5 6 7
`A' 12 71 82 0 62 30 11
`B' 0 1 2 45 5 3 10
`C' 6 8 0 3 21 3 6
`D' 9 1 2 22 6 9 7
`E' 5 0 0 2 8 45 23
4. MatSurvey [1..4,1..7] : Matriks hasil survey pada titik koordinat,. Mat(i,j)adalah hasil pengukuran pada titik koordinat i,j
1 2 3 4
1 <24,5> <24, 5> <30,5> <25,5>
2 <23,56> <3,6> <40,5> <2,2>
3 <22,73> <7,3> <60,6> <8,3>
4 <21,56> <8,5> <9,8> <7,4>
5 <23,56> <12,50> <3,36> <30,6>
6 <20,0> < 2,56> <5,46> <20,99>
7 <30,0> < 9,0> <15,0> <27,0>

5. MatSat [1..4,1..4] : Matriks satuan
1 2 3 4
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
6. MatSym [1..6,1..6] : Matriks simetris
1 2 3 4 5 6
1 1 0 10 0 4 33
2 0 12 0 0 3 4
3 10 0 11 0 4 3
4 0 0 0 1 0 2
5 4 3 4 0 8 1
6 33 4 3 2 1 0

Contoh Pemakaian matriks:
- matriks banyak digunakan dalam komputasi numerik untuk representasi dalam finite element
- seperti penggunaan matriks dalam matematika. Perhitungan "biasa" terhadap matriks : penjumlahan, perkalian dua matriks, menentukan determinan,
menginvers sebuah matriks, memeriksa apakah sebuah matriks : simetris, matriks satuan. Hanya saja dalam algoritma, semua "perhitungan" itu menjadi tidak primitif, harus diprogram
- dalam perhitungan ilmiah di mana suatu sistem diwakili oleh matriks (elemen hingga dalam teknik sipil dan mesin)
- dalam persoalan pemrograman linier dan operational research.
- dalam persoalan algoritmik : untuk menyimpan informasi yang cirinya ditentukan oleh 2 komponen (yang nantinya diterjemahkan dalam baris dan kolom) dan diakses langsung.
Contoh : merepresentasi "cell" pada sebuah spreadsheet, merepresentasi "ruangan" pada sebuah gedung bertingkat,...

Notasi algoritmik dari matriks :
NamaMatriks (indeks1,indeks2)
Domain :
- Domain matriks sesuai dengan pendefinisian indeks
- Domain isi matriks sesuai dengan jenis matriks
Konstanta :
- Konstanta untuk seluruh matriks tidak terdefinisi,
- Konstanta hanya terdefinisi jika indeks dari matriks terdefinisi

IMPLEMENTASI Fisik 1 :
Karena sering dipakai, type primitif yang namanya matrix sudah dianggap ada, seperti halnya type dasar array. Hanya saja kalau type array ditentukan oleh satu indeks, maka type matrix mampu menangani 2 indeks, yang diinterpretasikan oleh pemrogram seperti baris dan kolom.

Contoh (lihat Gambar): Perhatikanlah "semantik" dari setiap pendefinisian berikut :
MatFrek : matrix ['A'..'E',1..7] of integer
Sebuah matriks yang merepresentasi frekuensi huruf 'A' s/d 'E', untuk 7 buah teks. Maka MatFrek(i,j) berarti Frekuensi huruf ke-i untuk teks ke-j

A: matrix [1..5,1..5] of real
Sebuah matriks seperti dalam matematika biasa

NamaHari: matrix [1..7,1..3] of string
Untuk matriks nama hari pada contoh-1 yang merepresentasi nama-nama ke 7 (tujuh) buah hari ([1..7]) dalam 3 (tiga) bahasa ([1..3]). Maka NamaHari[i,j] berarti Hari ke-i dalam bahasa ke-j

Untuk matriks yang merepresentasi hasil survey pada setiap titik koordinat pengamatan. Koordinat yang diukur adalah (1,1) s/d (4,7).dengan definisi
type Data :
MatSurvey: matrix [1..4,1..7] of Data
Maka, MatSurvey(i,j) berarti hasil Data pengukuran temperatur dan kecepatan angin pada grid kartesian (i,j)
Cara mengacu : melalui indeks
MatHari(i,j) , jika i dan j terdefinisi
TabNamaHari(1,7)
MatSurvey(3,5) untuk mengacu satu data survey
MatSurvey(3,5).Temp untuk mengacu data temperatur

IMPLEMENTASI Fisik 2 : Struktur fisik adalah tabel dari tabel (array of array)
Type dasar yang namanya matrix tidak ada, maka dibentuk dari type array. Maka matriks adalah array dari array.

MatFrek : array ['A'..'E'] of array [1..7] of integer
Sebuah matriks yang merepresentasi frekuensi huruf 'A' s/d 'E', untuk 7 buah teks. Maka MatFrek(i,j) berarti Frekuensi huruf ke-i untuk teks ke-j ditulis sebagai :
MatFrek(i,j)

A: array [1..5] of array [1..5] of integer
Sebuah matriks seperti dalam matematika ditulis sebagai :
A(i,j)

NamaHari: array [1..7] of array [1..3] of string
Sebuah matriks yang merepresentasi nama-nama ke 7 hari ([1..7]) dalam tiga bahasa ([1..3]), maka NamaHari(i,j) berarti Hari ke-i dalam bahasa ke-j ditulis sebagai :
NamaHari (i,j)

DataGeo : type
MatSurvey: array [1..4] of array [1..7] of DataGeo
Sebuah matriks yang merepresentasi hasil survey pada setiap titik koordinat pengamatan. Koordinat yang diukur adalah (1,1) s/d (7,4). Maka, MatSurvey(i,j) berarti hasil Data pengukuran temperatur dan kecepatan angin pada grid kartesian (i,j) ditulis sebagai MatSurvey(i,j)
Sedangkan untuk mengacu kepada data kecepatan angin : Matsurvey(i,j).Temp

Beberapa catatan mengenai matriks :
• Struktur matriks adalah struktur internal yang statis dan kontigu
• Alokasi memori sebuah matriks berukuran N x M selalu dilakukan sekaligus. Dari ruang memori berukuran N x M tsb, mungkin hanya "sebagian" yang dipakai.

IL/4_Adtmatri.doc/ADT MATRIKS 06/16/03 9:24 AM
Purchase@SoftInterface.com
Karena itu ada pengertian :
• Definisi ruang memori seluruh matriks
• Memori yang secara efektif dipakai oleh sebuah matriks tertentu
• Nilai yang disimpan dalam sebuah matriks dapat disimpan di dalam ruang memori dipesan.
• Matriks dapat menimbulkan persoalan dalam passing parameter. Karena itu sebaiknya parameter aktual dan parameter formal sama ukuran memorinya.

Perluasan dari matriks dua "dimensi" :
• Beberapa bahasa memungkinkan deklarasi variabel dengan lebih dari dua "dimensi" yaitu "indeks". Tidak disarankan untuk merancang struktur data internal dengan dimensi lebih dari 3!
• Pelajarilah fasilitas dari bahasa Pascal dan C untuk deklarasi, inisialisasi dan memproses matriks berdimensi 3 atau lebih amati perbedaannya jika ada.




ADT MATRIKS Dalam Bahasa Algoritmik

{ Definisi ABSTRACT DATA TYPE MATRIKS }
{ ************ HUBUNGAN DENGAN ADT LAIN ******************}
{ Tidak ada}
{ Alokasi elemen matriks selalu dilakukan sekaligus }
{ Definisi TYPE MATRIKS dengan indeks integer}
{ Ukuran minimum dan maksimum baris dan kolom }
type indeks : integer { indeks baris, kolom }
constant BrsMin : indeks =1
constant BrsMax : indeks =100
constant KolMin : indeks =1
constant KolMax : indeks =100
type el_type : integer
type MATRIKS :
< Mem : matrix(BrsMin..BrsMax,KolMin..KolMax) of el_type NbrsEff : integer {banyaknya/ukuran baris yg terdefinisi } NkolEff : integer {banyaknya/ukuran kolom yg terdefinisi } >
{ Invarian ADT : Matriks "kosong" : NbrsEff=0 dan NkolEff=0}
{ NbrsEff ≥ 1 dan NkolEff ≥ 1 }
{ Memori matriks yang dipakai selalu di "ujung kiri atas" }
{ ********************** Definisi METHOD **********************}
{ DEFINISI PROTOTIP PRIMITIF }
{ ** Konstruktor membentuk MATRIKS *}
procedure MakeMAT (NB:integer NK:integer)
{Membentuk sebuah MATRIKS "kosong" berukuran NB x NK di "ujung kiri" memori }
{ I.S. NB dan NK adalah valid untuk memori matriks yang dibuat }
{F.S. sebuah matriks sesuai dengan def di atas terbentuk }
{ ** Selektor "DUNIA MATRIKS ****}
function IdxBrsMin → indeks
{ Mengirimkan indeks Baris minimum Matriks apapun}
function IdxKolMin → indeks
{ Mengirimkan indeks Kolom minimum Matriks apapun }
function IdxBrsMax → indeks
{ Mengirimkan indeks Baris maksimum Matriks apapun }
function IdxKolMax → indeks
{ Mengirimkan indeks Kolom maksimum Matriks apapun }
function IsIdxValid (i,j: indeks) → boolean
{ Mengirimkan true jika I,j adalah indeks yang valid}

{ Untuk sebuah matriks M yang terdefinisi : }
function FirstIdxBrs (M: Matriks) → indeks
{ Mengirimkan indeks baris terkecil M}
function FirstIdxKol(M: Matriks) → indeks
{ Mengirimkan indeks kolom terkecil M}
function LastIdxBrs (M: Matriks) → indeks
{ Mengirimkan indeks baris terbesar M}
function LastIdxKol (M: Matriks) → indeks
{ Mengirimkan indeks kolom terbesar M}
function GetNBrsEff (M: Matriks) → integer
{ Mengirimkan Banyaknya Baris efektif M}
function GetNKolEff → integer
{ Mengirimkan Banyaknya Kolom efektif M}
function IsIdxEff (M: Matriks, i,j: indeks) → boolean
{ Mengirimkan true jika i,j adalah indeks efektif bagi M}
function GetElmt(M: Matriks, i,j : indeks) → el_type
{ Mengirimkan Elemen M dg nomor baris i dan nomor kolom j}
function GetElmtDiagonal(M: Matriks, i : indeks) → el_type
{ Mengirimkan Elemen M(i,i)}
{*** Operasi mengubah nilai elemen matriks: Set / Assign }
procedure SetBrsEff (Input/Output M: Matriks, Input NB : integer)
{I.S. M sudah terdefinisi }
{F.S. Nilai M.BrsEff diisi dengan NB, }
procedure SetKolEff (Input/Output M: Matriks, Input NK : integer)
{I.S. M sudah terdefinisi }
{F.S. Nilai M.NKolEff diisi dengan NK }
procedure SetEl (Input/Output M: Matriks, Input i,j : integer
input X : el_type)
{I.S. M sudah terdefinisi }
{F.S. M(i,j) bernilai X }
{Proses: Mengisi M(i,j) dengan X }

{ ****** Assignment MATRIKS *}
Procedure (Input Min: MATRIKS, Output MHsl: MATRIKS)
{ Melakukan assignment MHsl ← Min }

{ ******* KELOMPOK BACA/TULIS
procedure BacaMATRIKS (Output M: MATRIKS, Input NB,NK : integer)
{ I.S. IsIdxValid(NB,NK) }
{ F.S. M terdefinisi nilai elemen efektifnya, dan berukuran NB x NK }
{ Melakukan MakeMatriks(M,NB,NK) dan mengisi nilai efektifnya}
{ dari pembacaan dengan traversal per baris}
procedure TulisMATRIKS (Input M: MATRIKS)
{ I.S. M terdefinisi }
{ F.S. Sama dengan I.S, dan nilai M(i,j) ditulis ke layar}
{ Menulis Nilai setiap indeks dan elemen M ke layar }
{ dengan traversal per baris }
{ KELOMPOK OPERASI ARITMATIKA TERHADAP TYPE }
function "+" (M1,M2: MATRIKS) → MATRIKS
{ Precond : M1 berukuran sama dengan M2}
{ Mengirim hasil penjumlahan matriks: M1 + M2 }
function "-" (M1,M2: MATRIKS) → MATRIKS
{ Precond : M berukuran sama dengan M}
{ Mengirim hasil pengurangan matriks: salinan M1 ­ M2 }
function "*" (M1,M2: MATRIKS) → MATRIKS
{ Precond : Ukuran Baris efektif M = Ukuran kolom efektif M}
{ Mengirim hasil perkalian matriks: salinan M1 * M2}
function "*" (M: MATRIKS, X: integer) → MATRIKS
{ Mengirim hasil perkalian setiap elemen M dengan X}
procedure "*" (M: MATRIKS, K : integer)
{ Mengalikan setiap elemen M dengan K}

{ ** Kelompok operasi relasional terhadap MATRIKS }
function "="(M1,M2: MATRIKS) → boolean
{ Mengirimkan true jika M1 = M2, }
{ yaitu NBElmt(M1) = NBElmt(M2) dan }
{ untuk setiap i,j yang merupakan indeks baris dan kolom}
{ M1(i,j) = M2(i,j) }
function StrongEQ (M1,M2: MATRIKS) → boolean
{ Mengirimkan true jika M1 "strongly equal" M2, }
{ yaitu FirstIdx(M1) = FirstIdx(M2) dan LastIdx(M1)=LastIdx(M2) dan }
{ untuk setiap i,j yang merupakan indeks baris dan kolom}
{ M1(i,j) = M2(i,j) }
function NEQ(M1,M2: MATRIKS) → boolean
{ Mengirimkan true jika not strongEQ(M1,M2) }

function EQSize(M1,M2: MATRIKS) → boolean
{ Mengirimkan true jika ukuran efektif matriks M1 sama dengan}
{ ukuran efektif M2 }
{ yaitu GetBrsEff(M1) = GetNBrsEff (M2) }
{ dan GetNKolEff (M1) = GetNKolEff (M2) }
function "<"(M1,M2: MATRIKS) → boolean
{ Mengirimkan true jika ukutan efektif M1 < Ukuran efektif M2}

{ *** Operasi lain ****}
function NBElmt(M:Matriks) → integer
{ Mengirimkan banyaknya elemen M }
{ ** Kelompok Test terhadap MATRIKS}
function IsBujurSangkar(M:Matriks) → boolean
{Mengirimkan true jika M adalah matriks dg ukuran baris dan kolom
sama}
function IsSymetri (M:Matriks) → boolean
{ Mengirimkan true jika M adalah matriks simetri : IsBujurSangkar(M)
dan untuk setiap elemen M, M(i,j)=M(j,i)}
function IsSatuan(M:Matriks) → boolean
{ Mengirimkan true jika M adalah matriks satuan: IsBujurSangkar(M)
dan Setiap elemen diagonal M bernilai 1 dan elemen yang bukan
diagonal bernilai 0 }
function IsSparse(M:Matriks) → boolean
{ Mengirimkan true jika M adalah matriks sparse: mariks "jarang"
dengan definisi : hanya maksimal 5% dari memori matriks yang efektif
bukan bernilai 0 }
function Invers1(M:Matriks) → MATRIKS
{ Menghasilkan salinan M dg setiap elemen "diinvers" }
{ yaitu dinegasikan}
function Invers(M:Matriks) → MATRIKS
{ Menghasilkan salinan M dg setiap elemen "diinvers" }
{ yaitu di-invers sesuai dengan aturan inversi matriks}
function Determinan → real
{ Menghitung nilai determinan M}
procedure traversalBrs (Input M : MATRIKS)
{ Melakukan traversal terhadap M, per baris}
{ I.S. M terdefinisi}
{F.S. setiap elemen M diproses dengan Proses P(el_type) yang
terdefinisi }
procedure traversalKol (Input M : MATRIKS)
{ Melakukan traversal terhadap M, per kolom per kolom}
{ I.S. M terdefinisi}
{F.S. setiap elemen M diproses dengan Proses P P(el_type) yang
terdefinisi }
procedure Invers1(Input/Output M : MATRIKS)
{ I.S. M terdefinisi }
{ F.S. M diinvers, yaitu setiap elemennya dinegasikan }
procedure Invers(Input/Output M : MATRIKS)
{ I.S. M terdefinisi }
{ F.S. M "di-invers", yaitu diproses sesuai dengan aturan invers
matriks }
procedure Transpose (Input/Output M : MATRIKS)
{ I.S. M terdefinisi, dan IsBujursangkar(M) }
{ F.S. M "di-transpose", yaitu setiap elemen M(i,j) ditukar nilainya
dengan elemen M(j,i)}




STRUKTUR DATA1

KULIAH STRUKTUR DATA

H A R I : S E N I N
PENGAMPU : EDI SUHARTO, ST
KUSHARTANTYA

MATERI MELIPUTI ANTARA LAIN :
1. Pengantar: Pengertian tentang struktur data secara umum. Mengulang sekilas tentang tipe-tipe data.
2. Tipe Bentukan
3. Matriks
4. Stack : Memahami cara kerja dan kegunaan Stack dengan materi Operasi dasar; Contoh Kegunaan; Implementasi.
5. Queue : Memahami cara kerja dan kegunaan Queue dengan materi Operasi dasar; Contoh Kegunaan; Implementasi.
6. Linked List : Memahami struktur data Linked List, operasi-operasi pada linked list antara lain penyisipan, penambahan dan penghapusan. Dapat mengimplementasikan linked list.
Single Linear linked list; Double Linear Linked List; Single Circular Linked List; Double Circular Linked List.
7. Tree (Pohon): Memahami definisi dan terminologi mengenai tree secara umum. Mengenali cara melakukan operasi untuk tiap-tiap elemen pada tree.

Komponen Penilaian :
• Tugas-Tugas, Praktikum 20 %
• Ujian Tengah semester 40 %
• Ujian Akhir Semester 40 %

Ketiga komponen tsb harus ada dan lengkap, jika salah satu komponen tidak ada atau tidak lengkap maka nilai akhir tidak akan diberikan.
Semua mhs yang mengulang harus mengikuti kuliah. Bagi yang perbaikan boleh tidak mengikuti kuliah bagian I (sampai dengan ujian tengah semester) tetapi tetap harus tetap mengerjakan tugas-tugas yang diberikan.
Referensi:
Inggriani Liem: Kuliah Struktur Data, Bandung ITB
Larry Nyhoff, Sanford Leestma: Advanced Programming in Pascal with Data Structures. Macmillan Publishing Company New York.
Nell Dale, Susan C. Lilly: Pascal Plus Data Structures, Algorithms, and Advanced Programming. D.C. Heath and Company.
P Insap Santoso: Struktur Data dengan Turbo Pascal.







1. PENGANTAR

Pengertian Struktur Data
Struktur data adalah cara menyimpan merepresentasikan data di dalam komputer agar dapat digunakan secara efisien.
Sedangkan data sendiri adalah representasi dari fakta dunia nyata. Yaitu fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbul.

Secara garis besar type data dapat dikategorikan menjadi :
1. Type data sederhana
a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya String
Sedangkan
2. Struktur Data meliputi
a. Struktur data sederhana misalnya array (larik), record (rekaman)
b. Struktur data majemuk
• Yang Linier : Stack, Queue, List dan Multilist
• Yang Non Linier : Pohon Biner, Graph.

Mengapa struktur data perlu dipelajari ? Karena dengan pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang ”baku” yang biasanya digunakan di bidang informatika adalah :
a. Stack
b. Queue
c. List Linier dan variasinya (Single, Double)
d. Tree (Pohon)
e. Graph

Tipe data dapat dikaji dari sisi kelas maupun level abstraksinya. Dilihat dari kompleksitasnya terdapat dua klas tipe data
1. Tipe data atomik: tipe data yang dipandang sebagai satu kesatuan tunggal dan tidak dapat dipecah-pecah lagi (non decomposible entity). Contoh : integer, char, float/real.
2. Tipe data berstruktur: tipe data yang dipandang sebagai satu kesatuan tunggal dan dapat dipecah-pecah lagi (decomposible entity). Contoh : Array, Record dll.






2. TIPE BENTUKAN

Tipe dasar sudah cukup untuk dapat dipakai memproses sebagian besar data yang ada, namun tipe dasar tidak cukup untuk memproses banyak data, apalagi data yang memiliki struktur tertentu.
Untuk menyelesaikan persoalan pengolahan data tertentu, suatu tipe data baru dapat dibentuk berdasarkan tipe data dasar (primitif).

Tipe Enum
Tipe enum adalah suatu tipe yang elemennya didefinisikan sendiri satu per satu. Dalam representasinya sebenarnya tipe enum ini adalah sebuah integer yang diberi nama. Dalam Pascal tipe ini didefinisikan dengan cara menyebut elemen-elemennya:
type
hari = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);
warna = (merah, kuning hijau);

Tipe enum tidak bisa dibaca (dengan readln) atau ditulis (dengan writeln), tipe jenis ini hanya bisa diberi nilai dengan assignment.

Tipe Enumerasi
Tipe enumerasi adalah tipe yang elemen -elemennya bisa disebutkan satu persatu (bisa dicacah), integer, enum, dan karakter adalah contoh tipe enumerasi. Tipe real tidak bisa dicacah satu persatu, tipe string juga tidak bisa dicacah satu per satu.

Subtipe Integer
Integer memiliki range tertentu sesuai dengan jumlah bit yang dipakai oleh integer. Terkadang dalam kasus tertentu hanya diperlukan subrange (sebagian range) integer, misalnya untuk mengolah data jam yang berbasis 60 (seksadesimal), yang diperlukan hanyalah angka dari 0 sampai 59, angka di luar itu sifatnya tidak valid. Subtipe integer didefinisikan dengan menyebutkan range untuk tipe tersebut.
Type jam = 1..12;
menit = 0..59;
detik = 0..59;
Pengecekan run time dan compile time
Perhatikan bahwa jika Anda memiliki variabel m dengan tipe menit, lalu melakukan hal ini:
m:= 61;
maka kompilator akan menolak program karena ada pemeriksaan pada waktu kompilasi yang mencegah m diisi selain 0 sampai 59. Namun jika dalam program dilakukan hal ini:
readln(m);
maka kompilator tidak akan menolak jika pengguna memasukkan angka selain 0 sampai 59, dengan kata lain, kompilator hanya melakukan pengecekan waktu kompilasi (compile time), tapi tidak waktu eksekusi (run time).
Cara yang benar untuk membaca tipe menit agar masuk ke m adalah dengan membaca integer ke dalam variabel lain dan memeriksa hasil pembacaan, seperti ini:
var i:integer;
m: menit;
begin
repeat
readln(i);
until (i>=0) and (i<=59);
m:=i; (* bilangan yang dimasukkan ke m pasti sudah valid*)
end.

Tipe SET (himpunan)
Tipe himpunan adalah tipe yang bisa menerima himpunan nilai yang masing-masing elemennya adalah tipe enumerasi. Perhatikan: tidak semua bahasa pemrograman prosedural memiliki tipe SET.
Deklarasi tipe himpunan adalah:
type
hari = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);
setkar = set of char;
harihari = set of hari;

Operasi yang tersedia untuk himpunan meliputi: gabungan (union), irisan (intersection), dan pengurangan elemen himpunan, serta pengecekan keanggotaan.
Tipe set tidak bisa dibaca dan ditulis secara langsung menggunakan read/readln/write/writeln.
Tipe Komposisi (Record)
Suatu tipe bisa disusun dari beberapa tipe, misalnya tipe mahasiswa bisa disusun dari tipe string untuk nama, tipe real untuk nilai, dan tipe integer untuk nomor urutnya. Deklarasi tipe komposisi dalam Pascal adalah:
type mahasiswa = record
nama:string;
urut: integer;
nilai:real;
end;
var mhs: mahasiswa;

Cara mengakses elemen tipe adalah dengan titik, misalnya:
writeln(mhs.nama);
Atau dengan blok with :
with mhs do
begin
writeln(nama);
end;

Jika bagian dari tipe bentukan merupakan tipe dasar yang bisa langsung dibaca atau tulis maka elemen tersebut bisa langsung dibaca atau ditulis, namun bagian tipe yang tidak bisa dibaca dan ditulis langsung tetap harus diperlakukan khusus.



Tabel Berdimensi Satu (Array)
Jenis variabel yang telah diberikan hanya bisa digunakan untuk menyimpan sebuah nilai saja. Dalam banyak kasus kita perlu menyimpan banyak nilai yang serupa untuk diproses, misalnya data nilai mahasiswa dalam suatu kelas untuk dihitung rata-ratanya.
Tabel adalah tipe data yang dapat menampung sejumlah data dengan tipe sejenis, jumlah data yang dapat disimpan dibatasi oleh kemampuan kompilator dan komputer. Deklarasi tabel integer yang terdiri dari 100 elemen adalah:
var
tabint : array [1..100] of integer;
Dengan deklarasi semacam itu sebuah tabel yang terdiri dari 100 elemen integer dibentuk, dan dapat diakses melalui indeksnya (antara 1 sampai 100, inklusif). Untuk mengakses elemen tabel ke-n gunakan sintaks: tabint[n].
Tabel dapat diproses menggunakan loop (biasanya loop for, karena indeks tabel sudah jelas), contoh berikut akan menjumlahkan seluruh elemen tabel integer yang dideklarasikan di atas (jumlah dan I bertipe integer):
jumlah:=0;
for i:=1 to 100 do jumlah:=jumlah+tabint[i];
writeln('Jumlah elemen tabel adalah:', jumlah);

String sebagai Array of Character
String sebenarnya adalah tabel berdimensi satu dengan elemennya berupa karakter, indeks ke-0 tabel berisi panjang string saat ini, dan indeks ke 1 dan seterusnya berisi data karakter yang ada pada string. Pada string seperti ini:
s := 'hello';
maka s[1] = 'h', s[2]='e', dst. Sedangkan ord(s[0]) akan berisi panjang string yaitu 5. Pengaksesan panjang string melalui elemen ke-0 tidak disarankan, karena tergantung pada implementasi Pascal, elemen string sebaiknya hanya diakses mulai dari elemen 1 sampai panjang string.

Tabel Berindeks Banyak (Tabel Multi Dimensi)
Terkadang kita perlu memiliki tabel dengan dimensi lebih dari satu. Matriks merupakan salah satu contoh table dengan banyak dimensi (tabel multi dimensi). Tabel multi dimensi dipandang oleh semua bahasa yang mengenal tipe data tabel satu dimensi, karena tabel dua dimensi bisa dipandang sebagai tabel dari tabel.
Dalam Pascal, tipe tabel multi dimensi dapat dideklarasikan seperti ini:
var
matriks : array [1..4, 1..4] of integer;

Pengaksesan elemen tabel dilakukan mirip seperti peng-aksesan tabel satu dimensi:
matriks[baris, kolom]:=nilai;
Pemrosesan tabel multi dimensi umumnya dilakukan dengan nested loop. Hal yang perlu diperhatikan dalam pemrosesan tabel dengan loop adalah bahwa indeks tabel tidak boleh lebih dari yang sudah dideklarasikan.

Sabtu, 24 September 2011

struktur data materi kuliah

•Strukturdata adalah merepresentasikan data pada memory secara logika dan meng-karakterisasikan setiap variabel dalam program secara eksplisit ataupun implisit, Untuk operasi yang dibolehkan/berlaku pada object data tersebut. •Struktur data diperlukan dalam perencanaan Algoritma dan penyusunan program sebagai dasar teknik dari Database. Data dan Algoritma •Tipe data adalah macam/isi data pada suatu variable dlm bhs pemograman, dpt berupa integer,real,karakter,boolean dan pointer atau disebut juga tipe data tunggal, sedangkan tipe data majemuk adalah string.•Array dan record termasuk strutur data sederhana.•Struktur data majemuk terdiri dari struktur data linier dan non linier. Struktur Data linier •Array : matrik dimensi satu dan dua bersifat statis. •Stack (tumpukan) , termasuk array dimensi satu. •Queue (antrian),ada yg linier dan circular termasuk array dimensi satu. •Dequeue (doble ended queue), termasuk array dimensi satu. •Matrix, array dimensi dua. •Linked List ( lis berkait) bersifat dinamis, terdiri dari : •Linier Single Linked List dan Doble Linked List. •Circular Single Linked List (multi Linked List) dan Doble Linked List(operasinya Insert dan Delete) Tipe Data Integer •Sebuah intege disajikan dalam memory dengan rumusan :•N <= 2n-1–1, N adl jumlah bit dalam memory satu bit sebagai sign.•Tipe byte ukuran memory = 1 byte range nilai 0 –255•Tipe shortin ukr mem 1 byte(komp 8 bit), -128 -127•Tipe integer ukr mem 2 byte(komp 16 bit),-32768 –32767.•Tipe word, 2 byte, 0 –65535•Tipe longint,4 byte(komp 32 bit), -2147483648 –2147483647.•Hasil suatu proses aritmatika diluar jangkauan akan terjadi overflow.•Operasi pembagian : Div hasilnya integer•Operasi dari sisa pembagian :Mod hasilnya integer.•Varnilai : byte;Beginnilai := 255;----------------------------END Tipe Data Real •Bilangan real dalam memory memakai sistem floating point yang terdiri dari mantisa(pecah) dan indek (eksponen) atau karakter dirumuskan : •X = M * Re, M pecahan , R radix dan e eksponen. Tipe Data Boolean •Mempunyai nilai true dan false, operatornya : and,or ,not •Deklarasi : •Var nilai :boolean; Begin nilai := true; --------------- end Tipe Data karakter •Ditulis diantara tanda petik meliputi numerik,alfabet dan spesial karakter. •Deklarasi: Var karakter : char; Begin karakter := ‘*” end Operasi string •Len(string) menghitung panjang string •Concate(s1,s2) •Substr(s,i,j), i posisi karakter, j jumlah karakter. •Insert(s1,s2,j), karakter pertama s2menggantikan posisi ke j dari s1. •Delete(s,i,j) hapus sepanjang j mulai dari posisi ke i. Tipe Data Pointer •Variable yg berisi address di memory (RAM) dimana data disimpan, bukan berisi data ,deklarasinya diberi tanda ^. •Deklarasi : type tipestring = string(40); pointerstring = ^tipestring; •Var posisi := pointerstring; •begin posisi^ := ‘Gunadarma end Tipe Data Native •Tipe data yang tersedia dalam bahasa pemograman.•Level Abstraksi dari tipe data :•Tipe Data Abstrak, tipe data sebagai hasil dari imajinasi.•Tipe data virtual , tipe data yang ada dalam vitualprosessor.•Misal : dalam bhs pemograman. Level Abstraksi dari tipe data •Tipe data physical , adalah tipe data yang secara pisik ada dalam Min Processor.•Hubungan struktur data :•Set, hubungan antar elemen karena termasuk dalam satu set , urutan elemen tidak penting. Misal s1= [ a,b,c] , s2= [c,b,a] 􀃆s1= s2•Linier, struktur elemen mempunyai hubungan one to one,mis : Array, Linked List. •Tree/ hirarki, struktur elemennya mempunyai hubngan one to many •Graph / Network, struktur yang elemenya mempunyai hubungan many to many.