Selasa, 07 Juni 2011

Makalah Pajak Restoran


KATA PENGANTAR
Puji syukur saya ucapkan atas Tuhan Yang Maha Esa karena dengan rahmat dan karunia-NYA saya masih diberi kesempatan untuk menyelesaikan makalah ini. Tidak lupa saya ucapkan kepada Dosen  yang telah membimbing saya agar dapat mengerti tentang bagaimana cara kami menyusun Makalah ini, Dan juga kepada teman–teman yang telah memberikan dukungan dalam menyelesaikan makalah ini
Makalah ini disusun dengan tujuan dapat memperluas ilmu dan wawasan mengenai PERPAJAKAN DALAM LINGKUP RESTORAN dan bahan masalah disajikan berdasarkan pengamatan dari berbagai sumber baik yang berasal dari bahan yang diterima oleh dosen pengajar maupun yang diambil dari website online dari Internet yang juga mengupas masalah yang sama dengan teknik penulisan yang berbeda. Penulis juga bersyukur karena diberikan waktu dan kesempatan untuk mengkaji masalah ini dan penulis menyadari bahwa dalam penulisan ini masih banyak kekurangan, oleh sebab itu penulis sangat mengharapkan kritik dan saran yang membangun.
Dan semoga dengan selesainya makalah ini dapat memberikan wawasan yang lebih luas dan bermaafaat bagi pembaca dan teman- teman,Amin.



BAB I
PENDAHULUAN
1.      A. Latar Belakang
1.1 Pengertian Pajak dan Pajak Daerah
Menurut rochmat sumitro (1988:12) : ”Pajak adalah iuran rakyat pada kas negara berdasarkan Undang-Undang (yang dapat di paksakan) dengan tidak mendapat jasa timbal (kontra prestasi) yang langsung dapat di tunjukkan dan yang di gunakan untuk membayar pengeluaran umum”.
“Dapat di paksakan” mempunyai arti,apabila utang pajak tidak di bayar,utang tersebut di tagih dengan kekerasan, seperti surat paksa, sita, lelang dan sandera.
Dengan demikian, ciri-ciri yang melekat pada pengertian pajak adalah sebagai berikut
a. pajak di pungut berdasarkan Undang-Undang
b. jasa timbal tidak di tunjukkan secara langsung
c. pajak di pungut oleh pemerintah, baik pemerintah pusat maupun
pemerintah daerah.
d. dapat di paksakan (bersifat yuridis)
Menurut Brotodiharjo,R (1982:2) : “Pajak adalah iuran rakyat kepada negara (yang dapat di paksakan) yang terutang oleh wajib pajak membayarnya berdasarkan peraturan-peraturan,dengan tidak mendapat prestasi kembali yang langsung dapat di tunjuk dan yang dapat di gunakan untuk membiayai pengeluaran umum berhubungan dengan tugas negara untuk menyelenggarakan pemerintah”.
1.2. Pajak Daerah
Menurut Tony Marsyahrul (2004:5) : “Pajak daerah adalah pajak yang di kelolah oleh pemerintah daerah (baik pemerintah daerah TK.I maupun pemerintah daerah TK.II) dan hasil di pergunakan untuk membiayai pengeluaran rutin dan pembangunan daerah (APBD)”.
Menurut Mardiasmo, (2002:5) : “Pajak adalah iuran wajib yang dilakukan oleh orang pribadi atau badan kepada daerah tanpa imbalan langsung yang seimbang yang dapat di paksakan berdasarkan peraturan perundang-undangan yang berlaku di gunakan untuk membiayai penyelenggarakan pemerintah daerah dan pembangunan daerah”.
2.1 Jenis-Jenis Pajak Daerah Dan Karakteristik Pajak Daerah
* Jenis-Jenis Pajak Daerah
Berdasarkan Undang-Undang No.34 Tahun 2000 jenis-jenis pajak daerah adalah sebagai berikut :
a.Pajak Hotel
b.pajak Restoran
c.Pajak Hiburan
d.Pajak Reklame
Selanjutnya sebagian dasar pemungutan atas jasa-jasa pajak tersebut, Pemerintah Daerah telah mengeluarkan beberapa peraturan daerah sebagai berikut :
- Peraturan Daerah No. 26 Tahun 2002 tentang Pajak Hotel
- Peraturan Daerah No. 26 Tahun 2002 tentang Pajak Reklame
- Peraturan Daerah No. 28 Tahun 2002 tentang Pajak Hiburan
- Peraturan Daerah No. 29 Tahun 2002 tentang Pajak Restoran
2.2.Karakteristik Pajak Daerah
a. Pajak Hotel
Menurut peraturan daerah No. 26 tentang Pajak Hotel (2002:1) : “pajak hotel di sebut pajak daerah pungutan daerah atas penyelenggaraan hotel”. Hotel adalah : “Bangunan yang khusus disediakan bagi orang untuk dapat menginap/istirahat, memperoleh pelayanan atau fasilitas lainnya dengan di pungut bayaran, termasuk bangunan yang lainnya yang mengatur,di kelolah dan dimiliki oleh pihak yang sama kecuali untuk pertokoan dan perkantoran”. Pengusaha hotel ialah : “Perorangan atau badan yang menyelenggarakan usaha hotel untuk dan atas namanya sendiri atau untuk dan atas nama pihak lain yang menjadi tanggungannya”.
Objek pajak adalah : “Setiap pelayanan yang disediakan dengan pembayaran di hotel, Objek pajak berupa :
1.Fasilitas penginapan seperti gubuk pariwisata (cottage), Hotel,wisma,losmen dan rumah penginapan termasuk rumah kost dengan jumlah kamar 15 atau lebih menyediakan fasilitas seperti rumah penginapan.
2.Pelayanan penunjang antara lain : Telepon, faksimilie, teleks, foto copy, layanan cuci, setrika, taksi dan pengangkut lainnya disediakan atau dikelolah hotel.
3.Fasilitas Olahraga dan hiburan
Subjek pajak hotel adalah orang pribadi atau badan yang melakukan pembayaran atas pelayanan hotel. Wajib pajak hotel adalah : “Pengusaha hotel”. Dasar pengenaan adalah : “Jumlah pembayaran yang dilakukan kepada hotel dan tarif pajak ditetapkan sebesar 10%, Masa pajak I (satu) bulan takwim, jangka waktu lamanya pajak terutang dalam masa pajak pada saat pelayanan di hotel.
b. Pajak Restoran
Menurut Peraturan Daerah No. 29 tentang Pajak Restoran (2002:1) : “pajak restoran yang di sebut pajak adalah pungutan daerah atas pelayanan restoran. Restoran atau rumah makan adalah : “Tempat menyantap makanan dan atau minuman yang disediakan dengan dipungut bayaran,tidak termasuk usaha jasa boga atau catering.
Objek Pajak yaitu setiap pelayanan yang disediakan dengan pembayaran di restoran. Subjek pajak orang pribadi atau badan yang melakukan pembayaran atas pelayanan restoran, Wajib pajak rastoran yaitu Pengusaha restoran dan tarif pajak di tetapkan sebesar 10% (sepuluh persen).
c.Pajak Hiburan
Menurut Peraturan Daerah No.28 tentang Pajak Hiburan (2002:1) : “Pajak Hiburan atau di sebut pajak adalah pajak hiburan di Kabupaten Musi Banyuasin. Hiburan ialah “semua jenis pertunjukan permainan dengan nama dan bentuk apapun yang di tonton atau di nikmati oleh setiap orang dengan dipungut bayaran di Kabupaten Musi Banyuasin.
Objek Pajak Semua Penyelenggaraan Hiburan berupa :
1.Penyelenggara pertunjukan film di bioskop dengan tarif pajak sebesar 31%
2.Pertunjukan kesenian tradisional, Pertunjukan sirkus, Pemeran seni, Pameran busana dengan tarif pajak 10%.
3.Pergelaran Musik dan tarif ditetapkan sebesar 15%
4.Karaoke ditetapkan sebesar 20%
5.Permainan Bilyar ditetapkan sebesar 20%
6.Pertandingan Olahraga ditetapkan sabesar 10%
Subjek pajak hiburan orang pribadi atau badan yang menonton atau menikmati hiburan, Wajib pakak hiburan orang pribadi atau badan penyelenggara hiburan.
d. Pajak Reklame
Menurut Peraturan Daerah No.27 Tentang Pajak Reklame (2002:1) : “Pajak reklame yang selanjutnya disebut pajak adalah pungutan daerah atas penyelenggaraan reklame. Reklame yaitu benda, alat, media yang menurut bentuk susunan dan corak raganya untuk tujuan komersial di pergunakan untuk memperkenalkan,mengajukan atau memujikan suatu barang, jasa atau orang yang di tempatkan atau di dengar dari suatu tempat oleh umum kecuali yang di lakukan oleh pemerintah.
Objek Pajak ialah penyelenggara reklame seperti :
1. Reklame Kain
2. Reklame Melekat, Stiker
3. Reklame Berjalan termasuk pajak kendaraan
4. Reklame Udara
5. Reklame Suara
6. Reklame Film/Slide
7. Reklame Peragaan
Subjek Pajak Reklame adalah : “Orang pribadi atau badan yang menyelenggarakan atau memesan reklame.Tarif pajak ditetapkan sebesar 25%.

2.3. Landasan Hukum Dan Tata Cara Pemungutan Pajak Daerah
2.3.1. Dasar Hukum
Undang-Undang Dasar 1945 Pasal 23 Ayat (2) : “Segala Pajak Untuk Keperluan Negara Berdasarkan Undang-Undang”.
Dasar hukum pemungutan pajak daerah dan retribusi daerah adalah : “Undang-Undang No.18 Tahun 1997 Tentang Pajak Daerah Dan Retribusi Daerah sebagaimana telah di ubah terakhir dengan Undang-Undang No.34 Tahun 2000.
2.3.2. Tata Cara Pemungutan Pajak Daerah
Pedoman tata cara pemungutan pajak daerah diatur Keputusan Menteri Dalam Negeri No.170 Tahun 1997 dan Keputusan Menteri Dalam Negeri No. 43 Tahun 1999 Tentang Sistem Dan Prosedur Administrasi Pajak Daerah.
2.4. Sistem Dan Prosedur Administrasi Pajak Daerah
2.4.1 Pendaftaran Dan Pendataan
1. Kegiatan pendaftaran dan pendataan untuk wajib pajak baru dengan cara penetapan kepala daerah (Official Assessment) terdiri dari :
a. Pendaftaran
b. Pendataan
c. Formulir / kartu dan daftar
2. Kegiatan Pendaftaran Dengan Cara Dibayar Sendiri (Self Assesment) terdiri dari ;
a. Menyiapkan formulir pendaftaran
b. Menyerahkan formulir pendaftaran kepada wajib pakak setelah dicatat dalam daftar formulir pendaftaran.
c. Menerima dan memeriksa kelengkapan formulir pendaftaran yang telah di isi oleh wajib pajak dan atau yang diberi kuasa.
d. Formulir / kartu dan daftar.
3. Kegiatan pendataan dengan cara dibayar sendiri (Self Assesment) untuk wajib pajak yang sudah memiliki NPWPD terdiri dari :
a. Menyerahkan formulir pendataan
b. Menerima dan memeriksa kelengkapan formulir pendataan (SPTPD) yang telah di isi oleh wajib pajak atau yang diberi kuasa.
c. Mencatat data pajak daerah dalam kartu data ke dalam daftar SPTPD (Surat Pemberitahuan Pajak Daerah) wajib pajak self assessment.
d. Formulir dan daftar SPTPD.
2.4.2. Penetapan
1. Kegiatan penetapan dengan cara di bayar sendiri (self assesment) terdiri dari :
a. Setelah wajib pajak membayar pajak terutang berdasarkan SPTPD di catat dalam kartu data.
b. Membuat nota perhitungan pajak atas dasar kartu data dan hasil pemeriksaan atau keterangan lain, Dengan cara menghitung jumlah pajak terutang dan jumlah kredit pajak yang diperhitungkan dalam kartu data.
c. Jika pajak terutang kurang atau tidak dibayar maka di terbitkan surat ketetapan pajak daerah kurang bayar (SKPDKB).
d. jika tidak terdapat selisih antara kurang dan kredit, Maka diterbitkan surat ketetapan pajak daerah nihil (SKPDN).
e. Jika terdapat tambahan objek pajak yang sama selesai akibat di temukannya data baru, Maka diterbitkan surat ketetapan pajak daerah kurang bayar tambahan (SKPDKBT).
f. Jika terdapat kelebihan pembayaran pajak terutang, Maka di terbitkan surat ketetapan pajak daerah lebih bayar (SKPDLB)
g. Setelah pembuatan nota perhitungan pajak selesai, Selanjutnya menyerahkan kembali kartu data kepada unit kerja pendataan.
h. Menerbitkan daftar SKPDKB,SKPDKBT,SKPDLB,dan SKPDN atas dasar surat etetapan pajak daerah tersebut.
i. Surat ketetapan ditandatangani oleh kepalah unit kerja penetapan.
j. Menyerahkan copy daftar surat ketetapan di atas kepala unit kerja penagihan,unit kerja perencanaan dan pengendalian operasional.
k. Menyerahka kepada wajib pajak berupa SKPDKB, SKPDKBT, SKPDN kemudian wajib pajak menandatangani masing-masing tanda terima dan mengembalikannya.
l. Jumlah pajak terutang dalam SKPDKB dikenakan sanksi administrasi berupa kenaikan sebesar 100% dari pokok pajak.
m. Apabila SKPDKB,SKPDKBT,SKPDN yang direrbitkan tidak atau kurang bayar setelah lewat waktu paling lama 30 hari sejak SKPDKB,SKPDKBT,SKPDN diterima, Dapat memberikan sanksi administrasi berupa bunga 2% tiap bulan dengan menerbitkan STPD (surat tagihan pajak daerah).
2. Formulir dan daftar / buku
a. Formulir kartu data
b. Daftar surat ketetapan
2.4.3. Kegiatan Penyetoran
1. Kegitan penyetoran melalui bendaharawan khusus penerima (BKP) terdiri dari :
a. BKP menerima setoran disertai surat ketetapan pajak daerah dengan media SSPD (Surat Setoran Pajak daerah).
b. Setelah SSPD tersebut di cap, Aslinya disertai SKPD dikembalikan ke wajib pajak yang bersangkutan.
c. Berdasarkan SSPD yang telah di cap, Dicatat dan dijumlahkan dalam buku pembantu penerimaan sejenis melalui BKP dan selanjutnya dibukukan dalam buku kas umum.
d. BKP menyetor uang ke kas daerah secara harian yang disertai bukti setoran Bank.
e. BKP secara periodikal (bulanan) menyiapkan laporan realisasi penerimaan dan penyetoran uang yang di tandatangani oleh Kepala Dinas Pendapatan Daerah.
f. mendistribusikan
2. Kegiatan Penyetoran Melalui Kas Daerah terdiri dari :
a. Kas daerah menerima uang dari wajib pajak disertai dengan media surat ketetapan dan media penyetoran SSPD dan bukti setoran Bank.
b. Selanjutnya setelah SSPD ditandatangani dan di cap oleh pejabat kas daerah, Maka lembar pertama dari SSPD dan bukti setoran Bank diserahkan kembali ke wajib pajak.
c. 2 (Dua) lembar tembusan SSPD diberikan oleh kas daerah ke BKP Dipenda yang dilampiri bukti setoran Bank.
d. BKP setelah menerima media penyetoran yang di cap oleh kas daerah dicatat dan dijumlahkan dalam buku pembantu penerimaan sejenis melalui kas daerah dan selanjutnya dibukukan dalam buku kas umum.
e. BKP secara periodikal (bulanan) membuat laporan realisasi penerimaan dan penyetoran uang yang ditandatangani oleh Kadipenda.
f. Mendistribusikan
2.5. Angsuran Dan Penundaan Pembayaran
2.5.1 Angsuran pembayaran
a. Kegiatan yang dilaksanakan terdiri dari :
- Menerima surat per mohonan angsuran dari wajib pajak
- Mengadakan penelitian untuk di jadikan bahan dalam persetujuan perjanjian angsuran oleh kadipenda.
- Membuat surat perjanjian angsuran / penolakan angsuran ditandatangani oleh kadipenda dan apabila permohonan di setujui selanjutnya dibuatkan daftar perjanjian angsuran.
- Menyerahkan surat perjanjian angsuran / penolakan angsuran kepada wajib pajak dan daftar surat perjanjian angsuran kepada unit lain-lain yang terkait.
b. Fo rmulir Dan Buku / Daftar
- Formulir SSPD
- Buku / Daftar
- Buku registrasi permohonan angsuran
- Daftar surat perjanjian angsuran
2.5.2 Kegiatan Penundaan pembayaran
a. Kegiatan yang dilaksanakan
1. Dipenda melalui unit kerja penetapan menerima surat permohonan penundaan pembayaran oleh Kadipenda.
2. Mengadakan penelitian untuk dijadikan bahan dalam pemberian persetujuan penundaan pembayaran oleh Kadipenda.
3. Membuat surat persetujaun penundaan pembayaran / penolakan penundaan pembayaran yang ditandatangani oleh Kadipenda apabila permohonan di setujui dibuatkan sistem persetujuan penundaan.
4. Menyerahkan surat persetujuan penundaan pembayaran kepada wajib pajak dan daftar persetujuan penundaan kepada unit-unit yang te rkait.
b. Formulir Dan Buku / Daftar
1. Formulir surat permohonan penundaan pembayaran
2. Buku / Daftar
a. Buku registrasi
b. Daftar persetujuan penundaan pembayaran
2.6. Pelaporan
Kegiatan yang dilaksanakan :
1. Membuat daftar penetapan, Penerimaan dan tunggakan
2. Membuat daftar tunggakan per wajib pajak
3. Membuat laporan realisasi penerimaan pajak daerah
4. Mengajukan laporan realisasi penerimaan pendapatan daerah pada Kadipenda
5. Mengajukan laporan realisasi penerimaan pendapatan asli daerah kapada kepala, Unit kerja pengelolaan pendapatan daerah lainnya dan perencanaan, Pengendalian operasional.
6. Membuat daftar realisasi setoran masa pada akhir periode.
7.Mengajukan daftar realisasi setoran masa (Self Assessment)
8. Menyerahkan daftar realisasi setoran masa (Self Assessment)
2.7. Penagihan
1. Penagihan dengan surat teguran
2. Penagihan dengan surat paksa
3. Penagihan dengan surat perintah melaksanakan penyitaan
4. Pengumuman lelang dan pelaksanaan lelang
5. Pencabutan penyitaan dan pengumuman lelang
6. kegiatan penagihan dengan surat perintah penagihan seketika dan sekaligus (SPPS dan S)
2.8. Kegiatan Pembetulan, Pembatalan, Pengurangan ketetapan dan penghapusan atau pengurangan sanksi administrasi.
2.8.1. Tahapan Kegiatan
a. Menerima surat permohonan pembetulan pembatalan, Pengurangan ketetapan dan penghapusan atau pengurangan sanksi administrasi dari wajib pajak.
b.Meneliti kelengkapan permohonan pembetulan, Pembatalan, Pengurangan ketetapan dan penghapusan atau pengurangan sanksi administrasi wajib pajak setelah dilakukan penelitian dan bila perlu dilakukan pemeriksaan, Dibuat laporan hasil penelitian.
2. Formulir Dan Buku Yang Diperlukan
- Tahapan Kegiatan
a. Menerima surat permohonan pengembalian kelebihan pembayaran pajak, Melakukan pemeriksaan dan membuat laporan pemeriksaan ditandatangani oleh petugas dari wajib pajak.
b. Mencatat ke kartu data selanjutnya diserahkan kapada unit kerja penghitungan untuk dilakukan penghitungan penetapan kelebihan pembayaran pajak.
c. Memperhitungkan dengan hutang / tunggakan pajak yang lain
d. Setelah perhitungan dengan hutang pajak yang lain ternyata kelebihan pembayaran pajak kurang / sama dengan hutang pajak lainnya tersebut maka wajib pajak menerima bukti pemindahbukuan sebagai bukti pembayaran / kompensasi dengan pajak terutang dimaksud, Karenanya SKPDLB tidak diterbitkan.
e. Apabila hutang pajak di perhitungkan di kompensasi dengan kelebihan pembayaran pajak ternyata lebih, Maka wajib pajak akan menerima bukti pemindahbukuan dan sebagai bukti pembayaran / kompensasi dari SKPDLB harus di terbitkan.
f. Setelah menerima SKPDLB dari unit kerja penetapan dan di proses untuk penerbitan.
1. berdasarkan dan melihat makin banyaknya Restoran dan makanan siap saji maka terinspirasi untuk mengkaji penelitian mengenai penerapan PERPAJAKAN DALAM LINGKUP RESTORAN dimana pajak restoran adalah salah satu pajak daerah yang di bebankan kepada pemilik restoran sebagai kewajiban pajaknya , sosialisasi dan pembinaan yang dibebankan kepada pemilik restoran diangap masih minim dan menjadi acuan untuk bahan penelitian ini.
2. Restoran adalah Objek pajak yang masih belum dikenal masyarakat mengenai pajaknya dan dasar pengenaan Pajaknya (DPP) dimana restoran termasuk golongan pajak Konsumsi ( restaurant meal tax)
B. Identifikasi Masalah                             
Pengenalan restoran & pajak restoran dan bagaimana pemilik restoran bisa memungut pajak restorannya.
C.Tujuan Penelitian
Menjawab pertanyaan umum (masyarakat umum khususnya pengusaha restoran) mengenai pajak restoran dan bagaimana pemilik restoran bisa memungut pajak restorannya serta Dasar Pengenaan Pajak (DPP) restoran itu.
D. Batasan masalah
Dari Identifikasi masalah sebelumnya penelitian ini tidak mengkaji seluruh faktor yang mempengaruhi pajak restoran, namun hanya sebatas ruang lingkup restoran , pengenalan restoran dalam lingkup perpajakan sertan Dasar Pengenaan Pajak Restoran itu.
E. Rumusan Masalah
1. Apakah dasar Hukum Pajak restoran dan seberapa besar lingkup yang dikenai pajak restoran sebagai objek pajak sendiri.
2. seberapa banyak restoran tahu (pengusaha restoran) perpajakan dalam lingkup pajak restoran.
3. pengembangan masalah dari objek pajak, subjek pajak, dan perhitungan pajak Restoran.
F. Manfaat Penelitian
1. Bagi Penulis yaitu menambah wawasan penulis dalam mengenal ilmu perpajakan
2. Bagi Universitas lambung Mangkurat yaitu untuk menambah referensi bagi perpustakaan Universitas lambung Mangkurat
G. Metode Pengolahan Data
Penulisan makalah ini memakai metode :
Ø Penelitian Kepustakaan (Library Research)
Metode riset yang dilakukan diperpustakaan dengan mempelajari buku-buku yang tersedia serta mempelajari literatur-literatur yang ada hubungannya dengan masalah yang dibahas.
BAB II
TIJAUAN PUSTAKA
Penelitian ini mengambil bahan dari beberapa penelitian sejenis dan sebagian besar bahan tinjauan pustaka terambil dari website online dan makalah publik yang ada di Internet.
Adapun kajian pustaka yang dijadikan acuan penelitian adalah ;
1. JSI Konsultan Solusi
http :// solusiakuntansi.com/j powered by
JOOMLA ! generated : 21 april 2009:17:53
2. CIREBON.go.id
Website resmi milik pemerintahan Cirebon
3. DINAS PENDAPATAN DAERAH
Pemenrintah Kabupaten Bogor.( Website)
BAB III
HASIL PENELITIAN DAN PEMBAHASAN

A. Pengertian restoran dan Hukum dalam Perpajakan
Ñ Dasar Hukum.
1. Undang-undang No.34 Tahun 2000 tentang perubahan atas UU No.18 Tahun 1997 tentang Pajak Daerah dan Restitusi Daerah
2. Peraturan Pemerintah No.65 Tahun 2001 tentang Pajak Daerah.
Ñ Pengertian Restoran
Restoran adalah tempat menyantap makanan dan minuman yang disedikan dengan dipungut bayaran, tidak termasuk usaha jasa boga atau catering
B. Objek Pajak dan tidak termasuk Objek Pajak.
Ñ Objek Pajak
Restoran adalah Pelayanan yang disedikan restoran dengan pembayaran.Yang termasuk objek pajak restoran adalah rumah makan, café, bar dan sejenisnya. Pelayanan di restoran atau rumah makan meliputi penjualan makanan dan/atau minuman di restoran /rumah makan, termasuk penyediaan penjualan makanan/minuman yang diantar/ dibawa pulang.
Ñ Bukan atau tidak termasuk Objek Pajak.
Pajak restoran adalah pelayanan usaha jasa boga atau catering.
Berdasarkan penjelasan diatas,maka dapat disampaikan bahwa:
1. Atas penyerahan makanan dan minuman oleh pengusaha restoran atau rumah makan baik yang dikonsumsi ditempat maupun dibawa pulang (take away) merupakan objek pengenaan pajak daerah.
2.Dalam hal pengusaha restoran juga….
2. Dalam hal pengusaha restoran juga melakukan usaha catering, maka penyerahan makanan dan minuman untuk usaha catering dikenakan PPN.
Ciri- ciri umum usaha catering, (bukan Objek Pajak) antar lain :
ü Tidak disantap di restoran
ü Penyediaan makanan dan minuman untuk kegiatan seperti :
§ Resepsi
§ Perayaan
§ Dan kegiatan lainnya
ü Menyediakan peralatan dan petugasnya.
Pengusaha restoran yang juga melakukan usaha catering disarankan melakukan pembukuan yang terpisah untuk usaha restoran dengan usaha keteringnya.
C. SUBJEK PAJAK dan TARIP PAJAK RESTORAN
Subjek Pajak adalah orang pribadi atau Badan yang melakukan pembayaran kepada restoran. Dengan demikian setiap konsumen, selain membayar tarip restoran, wajib pula membayar Pajak restoran sebesar 10 % dari tarip restoran kepada Pengusaha restoran.
Wajib Pajak adalah pengusaha restoran, yang harus menyetor Pajak restoran yang dibayar oleh konsumen kepada Dinas Pendapatan atau Bank Daerah selaku Kas Daerah.
Masa pajak restoran adalah jangka waktu yang lamanya 1(satu) bulan takwin
D. DASAR PENGENAAN, TARIP DAN CARA PERHITUNGAN
1) Dasar pengenaan dan Tarip Pajak Dasar pengenaan Pajak Adalah jumlah pembayaran yang diberikan konsumen kepada restoran :
Masa pajak adalah jangka waktu lamanya satu (1) bulan takwim.
2) Cara perhitungan :
ü TARIP PAJAK X CARA PENGENAAN
ü Tarip Pajak : 10%
ü Dasar pengenaan = Jumlah pembayaran yang dilakukan konsumen kepada restoran (omzet)
CONTOH PERHITUNGAN PAJAK RESTORAN
a.1. Sebuah restoran menyediakan makanan dan minuman di tempat, sekaligus melayani pesanan. Berdasarkan laporan Perusahaan, selama satu (1) bulan restoran tersebut memperoleh pendapatan dari konsumen yang makan di restorannya sebesar Rp. 64.000.000,- dan dari pesanan (dus) sebesar Rp. 15.000.000,-
Berapakah Pajak restoran yang harus dibayar oleh restoran tersebut?
Jawab :
Cara perhitungan pajak :
TARIP PAJAK x CARA PENGENAAN
Tarip pajak 10 %
Dasar pengenaan pajak = omzet x tarip pajak =
Rp. 64.000.000.- + Rp. 15.000.000,- = Rp. 79.000.000,-
= Rp. 79.000.000,- x 10%
=Rp. 7.900.000,-
BAB IV
DAFTAR PUSTAKA

Ø JSI KONSULTAN SOLUSI
http : // solusiakutansi.com/j
21 april , 2009, 17;53
Ø CIREBON.go.Id
Website resmi milik pemerintah Cirebon
Ø DINAS PENDAPATAN DAERAH
Pemerintah Kabupaten
Bogor(website)

Jumat, 03 Juni 2011

STREAM

 http://blachack.blogspot.com/2010/02/stream-io-lanjut.html

stream dan class-class stream yang lain.
Pada akhir pembahasan, diharapkan pembaca dapat :
1. Tahu tipe-tipe stream yang umum digunakan
2. Menggunakan class File dan methodnya
. Karakter dan Stream byte
. Input dan Output Streams
. Node dan Filter Streams
3. Menggunakan class-class Input/Output yang berbeda
. Reader
. Writer
. InputStream
. OutputStream
4. Memahami konsep dari stream chaining
5. Mendefinisikan serialisasi
6. Memahami penggunaan dari kata kunci transient
7. Menulis dan membaca dari sebuah object stream

1 Tipe-Tipe Stream yang Umum Digunakan
1 Stream Karakter dan Byte
Seperti yang telah disebutkan sebelumnya, secara umum ada dua tipe dari stream, yaitu
stream karakter dan byte. Kita hanya mengulang perbedaan mendasar antara
keduanya. Stream byte adalah abstraksi file atau alat untuk data biner sedangkan
stream karakter adalah untuk karakter Unicode.
Class InputStream adalah abstraksi class root untuk semua input stream byte sedangkan
class OutputStream adalah class root abstraksi dari semua output stream byte. Untuk
stream karakter, superclasss yang sesuai dari semua class-class secara berturut-turut
adalah class Reader dan the Writer. Kedua class-class ini adalah abstraksi class-class
untuk membaca dan menulis stream karakter.
2 Input dan Output Stream
Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau
menulis stream.Walaupun ini sudah cukup nyata, Anda diperbolehkan untuk membaca
dari input stream tapi tidak menulisnya. Di lain pihak, Anda diperbolehkan untuk menulis
output streams tapi tidak membacanya.
Class InputStream dan class Reader adalah superclass-superclass dari semua input
stream. Class OutputStream dan class Writer adalah class-class root dari semua output
stream.
Input stream juga dikenal sebagai stream sumber (source stream) sejak kita
memperoleh informasi dari stream ini. sementara itu output stream disebut juga stream
hasil(sink stream).
3 Node dan Stream Filter
Kini package java.io membedakan antara node dan stream filter. Sebuah stream node
adalah sebuah stream dengan fungsi dasar berupa fungsi membaca atau menulis dari
sebuah lokasi khusus seperti pada disk atau dari jaringan. Tipe-tipe dari stream node
terdiri atas file, memory dan jalur data. Stream filter, di lain pihak, diletakkan pada layer
stream node diantara threads atau proses untuk menyediakan fungsi tambahan yang
tidak dapat ditemukan dalam stream node oleh stream node itu sendiri. Penambahan
lapisan pada sebuah stream node disebut dengan stream chaining.
Sesi ini berturut-turut mempunyai sebuah tujuan dari class-class stream yang berbeda.
Untuk melengkapi daftar dari class-class ini, lihatlah pada dokumentasi Java's API.
2 Class File
Walaupun class File bukan merupakan class stream, ini sesuatu yag penting bahwa kita
mempelajari ini sejak class-class stream merupakan file-file yang telah dimanipulasi.
Class adalah sebuah perwakilan dari abstraksi dari file-file nyata dan nama path
direktori.
Untuk meng-instantiate sebuah object File, Anda dapat menggunakan constructor
berikut ini:
Sebuah Constructor File
File(String pathname)
Instantiate sebuah object File dengan nama path khusus sebagai nama filenya. Nama
filenya mungkin salah satu menjadi penuh( sebagai contoh, isi dengan path yang
lengkap) atau mungkin terdiri atas namafile itu sendiri dan diasumsikan menjadi diisi
dalam direktori tersebut.
Class File menyediakan beberapa method untuk memanipulasi file dan direktori. Berikut
ini beberapa dari method-method tersebut.
Method-method File
public String getName()
Mengembalikan nilai nama file atau nama direktori dari object File ini.
public boolean exists()
Menguji apakah sebuah file atau sebuah direktori masih ada atau tidak
public long length()
Mengembalikan nilai ukuran dari file.
public long lastModified()
Mengembalikan nilai tanggal dalam milidetik ketika file terakhir kali dimodifikasi.
public boolean canRead()
Mengembalikan nilai true jika dijinkan untuk membaca dari file. Sebaliknya, nilai
pengembaliannya bernilai false.
public boolean canWrite()
mengembalikan nilai true jika diijinkan untuk menulis ke sebuah file. Sebaliknya, nilai
pengembaliannya bernilai false.
public boolean isFile()
Menguji apakah object ini berupa sebuah file, yaitu persepsi normal kita tentang apa itu
sebuah file (bukan sebuah direktori) atau bukan.
public boolean isDirectory()
menguji apakah object ini adalah sebuah direktori atau bukan.
public String[] list()
Method-method File
Mengembalikan nilai daftar file dan subdirektori yang ada dalam object ini. Object ini
haruslah berupa sebuah direktori.
public void mkdir()
Membuat sebuah direktori yang merupakan abstraksi nama path ini.
public void delete()
Membuang file atau direktori yang sebenarnya diwakili oleh object File tersebut.
Table 1.2a: method-method File
Mari kita melihat bagaimana method ini bekerja berdasarkan contoh berikut ini :
import java.io.*;
public class FileInfoClass {
public static void main(String args[]) {
String fileName = args[0];
File fn = new File(fileName);
System.out.println("Name: " + fn.getName());
if (!fn.exists()) {
System.out.println(fileName + " does not exists.");
/* membuat sebuah temporary directory . */
System.out.println("Creating temp directory...");
fileName = "temp";
fn = new File(fileName);
fn.mkdir();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
System.out.println("Deleting temp directory...");
fn.delete();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
return;
}
System.out.println(fileName + " is a " +
(fn.isFile()? "file." :"directory."));
if (fn.isDirectory()) {
String content[] = fn.list();
System.out.println("The content of this directory:");
for (int i = 0; i < content.length; i++) {
System.out.println(content[i]);
}
}
if (!fn.canRead()) {
System.out.println(fileName + " is not readable.");
return;
}
System.out.println(fileName + " is " + fn.length() +
" bytes long.");
System.out.println(fileName + " is " + fn.lastModified()
+ " bytes long.");
if (!fn.canWrite()) {
J.E.N.I.
Pengenalan Pemrograman 2 5
System.out.println(fileName + " is not writable.");
}
}
}
3 Class Reader
Bagian ini menggambarkan stream karakter yang digunakan untuk membaca.
1 Method Reader
Class Reader terdiri atas beberapa method untuk membaca karakter. berikut ini adalah
beberapa method class :
Method Reader
public int read(-) throws IOException
Sebuah method overload, yang mana memiliki tiga versi. Membaca karakter, segala
karakter array atau sebuah porsi untuk sebuah karakter array.
public int read() - membaca sebuah karakter tunggal.
public int read(char[] cbuf)- Membaca karakter dan menyimpannya dalam
karakter array cbuf.
public abstract int read(char[] cbuf, int offset, int length)- Membaca
karakter sejumlah panjang karakter tertentu dan menyimpannya dalam karakter cbuf
dimulai pada tanda offset khusus yang telah ditentukan.
public abstract void close() throws IOException
Menutup Stream ini. Memanggil method Reader yang lain setelah menutup stream akan
menyebabkan suatu IOException dijalankan.
public void mark(int readAheadLimit) throws IOException
Menandai posisi tertentu pada stream. Setelah menandai, panggil untuk melakukan
reset() kemudian stream akan mencoba mengatur posisinya kembali pada titik ini.
Tidak semua stream input karakter mendukung operasi ini.
public boolean markSupported()
mengindikasikan apakah sebuah stream mendukung operasi pemberian tanda (mark)
atau tidak Tidak didukung oleh default. Seharusnya bersifat overid subclass.
public void reset() throws IOException
Reposisi stream ke posisi akhir stream yang telah ditandai
2 Class Node Reader
Berikut ini adalah beberapa dasar class Reader:
Class-class Node Reader
FileReader
Untuk membaca file-file karakter.
CharArrayReader
Mengimplementasikan suatu karakter buffer yang dapat dibaca.
StringReader
Untuk membaca dari sebuah sumber string.
PipedReader
Digunakan untuk pasangan (dengan sebuah PipedWriter yang sesuai) oleh dua urutan
yang ingin berkomunikasi. Salah satu dari urutan tersebut membaca karakter dari
sumber tertentu.
3 Class-Class Filter Reader
Untuk menambah fungsi ke class-class dasar Reader, Anda dapat menggunakan class
stream filter. Berikut ini adalah beberapa dari class-class tersebut :
Class-Class Filter Reader
BufferedReader
mengizinkan penyimpanan sementara karakteryang bertujuan untuk menyediakan
fasilitas pembacaan karakter, arrays, dan bais yang lebih efisien.
FilterReader
Untuk membaca stream karakter yang telah terfilter.
InputStreamReader
Menkonversi pembacaan byte ke bentuk karakter.
LineNumberReader
Sebuah subclass dari class BufferedReader yang dapat menjaga memori penyimpanan
untuk nomor baris.
PushbackReader
Sebuah subclass dari class FilterReader yang memungkinkan karakter dikembalikan
atau tidak terbaca oleh stream.
4 Class-Class Writer
Pada pembahasan ini menjelaskan tentang stream karakter yang digunakan untuk
menulis.
1 Writer Method
Class Writer terdiri atas beberapa method untuk menulis karakter. Berikut ini adalah
beberapa method class :
Method Writer
public void write(-) throws IOException
Sebuah method overloading dalam lima versi:
public void write(int c) � Menulis sebuah karakter tunggal yang diwakili oleh
pemberian nilai integer.
public void write(char[] cbuf) � Menulis isi dari karakter array cbuf.
public abstract void write(char[] cbuf, int offset, int length) � Menulis
sejumlah length karakter dari aaray cbuf, dimulai pada offset tertentu.
public void write(String str) � Menulis string string.
public void write(String str, int offset, int length) � Menulis sejumlah
length karakter dari string str, dimulai pada offset tertentu.
public abstract void close() throws IOException
Menutup stream ini setelah flushing beberapa karaktr yang tidak tertulis. Invocation
method lain setelah menutup stream ini akan menyebabkan terjadinya IOException.
public abstract void flush()
Mengganti stream(yaitu karakter yang disimpan dalam buffer dengan segera ditulis ke
tujuan yang dimaksud).
2 Node Writer Classes
Berikut ini beberapa dasar class Writer:
Node Writer Classes
FileWriter
Untuk menulis karakter ke sebuah file.
CharArrayWriter
Menggunakan karakter penyangga yang dapat dituliskan juga.
StringWriter
Untuk menulis source string
PipedWriter
Node Writer Classes
Digunakan dengan berpasangan(dengan menghubungkan PipedReader) oleh dua thread
yang ingin berkomunikasi. Satu dari thread ini menulis karakter ke stream ini.
Table 1.4.2: Node Writer classes
3 Filter Writer Classes
Untuk menambah fungsionalitas ke dasar class Writer, Anda dapat menggunakan class
stream filter.Terdapat beberapa class-class:
Filter Writer Classes
BufferedWriter
Menyediakan penyangga karakter bertujuan untuk menyediakan efisiensi penulisan
karakter, array, dan garis.
FilterWriter
Untuk menulis stream karakter yang difilter.
OutputStreamWriter
Mengkodekan karakter yang ditulis ke dalam byte.
PrintWriter
Mencetak representasi yang diformat dari object ke dala stream text-output.
5 Contoh Dasar Reader/Writer
Contoh penggantian menggunakan class FileReader dan FileWriter. Dalam contoh ini,
program membaca dari file yang khusus oleh user dan mengkopi isi dari file ke file lain.
import java.io.*;
class CopyFile {
void copy(String input, String output) {
FileReader reader;
FileWriter writer;
int data;
try {
reader = new FileReader(input);
writer = new FileWriter(output);
while ((data = reader.read()) != -1) {
writer.write(data);
}
reader.close();
writer.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile cf = new CopyFile();
cf.copy(inputFile, outputFile);
}
}
Cobalah program tersebut sendiri dan amatilah apa ang terjadi pada file yang
dimanipulasi.
6 Merubah Contoh Reader/Writer
Contoh pengganti hampir sama dengan contoh sebelumnya tetapi lebih efisien.
Walaupun membaca dan menulis ke stream sekali saja, karakter membaca yang
pertama disimpan dalam buffer sebelum penulisan karakter baris per baris. Program
menggunakan teknik dari perangkaian stream dimana clas FileReader dan FileWriter
didekorasi dengan class BufferedReader dan BufferedWriter, berurutan.
import java.io.*;
class CopyFile {
void copy(String input, String output) {
BufferedReader reader;
BufferedWriter writer;
String data;
try {
reader = new BufferedReader(new FileReader(input));
writer = new BufferedWriter(new FileWriter(output));
while ((data = reader.readLine()) != null) {
writer.write(data, 0, data.length());
}
reader.close();
writer.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile cf = new CopyFile();
cf.copy(inputFile, outputFile);
}
}
Bandingkan kode ini dengan sebelumnya. Apakah hasil dari menjalankan program ini?
7 Class InputStream
Bagian ini memberikan gambaran perbedaan stream byte yang digunakan membaca.
1 Method InputStream
Class InputStream terdiri atas beberapa method untuk membaca byte. Beberapa method
class:
Method InputStream
public int read(-) throws IOException
Method overloaded, juga memiliki tiga versi seperti class Reader tersebut.
public abstract int read() - Membaca byte selanjutnya dari data dari stream ini.
public int read(byte[] bBuf)- Membaca sejumlah byte dan menyimpannya dalam
byta array bBuf.
public abstract int read(char[] cbuf, int offset, int length)- Membaca
panjang sejumlah length byte dan menyimpannya dalam array byte bBuf dimulai dari
offset tertentu.
public abstract void close() throws IOException
Menutup stream in. Memanggil method InputStream yang lain setelah menutup
streamnya akan menyebabkan sebuah IOException dijalankan.
public void mark(int readAheadLimit) throws IOException
Menandai posisi tertentu dalam stream. Setelah menandainya, panggil untuk
menjalankan fungsi reset() akan mencoba untuk mengatur posisi streamnya pada titik
tertentu kembali. Tidak semua stream input-byte mendukung operasi ini.
public boolean markSupported()
Mengindikasikan apakah suatu stream mendukung operasi pemberian tanda (mark) dan
reset. Yang tidak didukung secara default. Seharusnya diubah menjadi overide oleh
subclass.
public void reset() throws IOException
Merubah posisi stream pada posisi akhir yang diberi tanda (mark)
2 Class-Class Node InputStream
Berikut ini merupakan beberapaclass-class dasar InputStream :
Class-class Node InputStream
FileInputStream
Untuk membaca baris byte dari sebuah file
BufferedArrayInputStream
Class-class Node InputStream
Mengimplementasikan sebua penimpan sementara yang terdiri atas data byte, yang
mungkin dpat dibaca dari streamnya.
PipedInputStream
Seharusnya terhubung ke sebuah PipedOutputStream. Stream ini secara khusus
digunakan oleh dua urutan yang didalamnya satu dari urutan tersebut membaca data
dari sumber ini sementara urutan yang lain menulis ke PipedOutputStream tujuan.
3 Class-class Filter InputStream
Untuk menambah fungsi ke class dasar InputStream, Anda dapat menggunakan class
stream filter. Berikut ini adalah beberapa dari class-class tersebut :
Class-class Filter InputStream
BufferedInputStream
Sebuah subclass dari FilterInputStream yang memungkinkan penyimpanan input
sementara untuk menyediakan pembacaan byte yang lebih efisien.
FilterInputStream
Untuk membaca byte stream yang telah terfilter, yang mungkin memindahkan source
dasar dari data sepanjang proses dan menyediakan fungsi tambahan.
ObjectInputStream
Digunakan untuk serialisasi object. Deserialisasi object dan data primitif yang telah
tertulis sebelumnya menggunakan sebuahObjectOutputStream.
DataInputStream
Sebuah subclass dari FilterInputStream yang memerintahkan sebuah aplikasi membaca
data primitif Java dari sebuah input stream dasar dalam sebuah Mesin yang berjalan
secara bebas(machine-independent way).
LineNumberInputStream
Sebuah subclass FilterInputStream yang memungkinkan pemeriksaan posisi dari nomor
baris tertentu.
PushbackInputStream
Sebuah subclass dari class FilterInputStream yang memungkinkan byte diproses balik
atau tidak dibaca ke bentuk sreamnya.
8 Class-Class OutputStream
Pada pembahasan ini memberikan sebuah pandangan tentang byte stream yang berbeda
yang digunakan dalam proses penulisan.
1 Method OutputStream
Class OutputStream terdiri atas beberapa method untuk menulis data byte. Berikut ini
adalah beberapa dari class methodnya :
Method OutputStream
public void write(-) throws IOException
Sebuah method overloaded untuk menulis bentuk byte ke bentuk stream. Ada tiga versi
:
public abstract void write(int b) � Menulis nilai byte khusus b ke bentuk output
stream nya.
public void write(byte[] bBuf) � Menulis isi dari array byte bBuf ke bentuk stream
nya.
public void write(byte[] bBuf, int offset, int length) � Menulis sejumlah
length byte dari array bBuf ke bentuk streamnya, dimulai pada offset khusus ke
streamnya.
public abstract void close() throws IOException
Menutup stream ini dan mengeluarkan beberapa sumber dari sistem digabungkan
dengan streamnya. Penggunaan method lain setelah memanggil method ini akan
menyebabkan sebuahIOException dijalankan.
public abstract void flush()
Mengganti stream (sebagai contoh, data byte tersimpan dalam buffer akan segera
ditulis dalam tujuan yang diamksud).
2 Class-Class Node OutputStream
Berikut ini adalah beberapa dari class dasar OutputStream :
Clas-class Node OutputStream
FileOutputStream
Untuk menulis byte ke sebuah file.
BufferedArrayOutputStream
Mengimplementasikan sebuah penyimpan sementara berupa byte, yang mana mungkin
akan dituliskan ke bentuk streamnya.
PipedOutputStream
Clas-class Node OutputStream
Seharusnya tersambung ke sebuah PipedInputStream. Stream ini secara khusus
digunakan oleh dua urutan dimana didalamnya satu dari urutan tersebut menulis data
ke bentuk streamnya sementara urutan yang lain membaca dari PipedInputStream
tujuan.
3 Class-Class Filter OutputStream
Untuk menambah fungsi ke class dasar OutputStream, Anda dapat menggunakan class
stream filter.berikut ini beberapa dari class tersebut :
Class-Class Filter OutputStream
BufferedOutputStream
Sebuah subclass dari FilterOutputStream yang memungkinkan penyimpanan output
sementara untuk proses penulisan byte yang lebih efisien. Memungkinkan penulisan
byte ke bentuk dasar output stream tanpa menyebabkan diperlukannya pemanggilan
dasar sistem untuk setiap penulisan byte.
FilterOutputStream
Untuk menulis stream byte yang telah difilter, yang mana mungkin dipindahkan ke
source dasar dari data sepanjang proses dan menyediakan fungsi tambahan.
ObjectOutputStream
Digunakan untuk serialisasi object. Serialisasi object dan data primitif untuk sebuah
OutputStream.
DataOutputStream
Sebuah subclass dari FilterOutputStream yang menjalankan aplikasi penulisan data
primitif ke output stream dasar ke dalam sebuah mesin yang bebas berjalan (machineindependent
way).
PrintStream
Sebuah subclass dari FilterOutputStream yang menyediakan kemampuan untuk
mencetak representasi dari nilai data yang bermacam-macam dengan tepat.
9 Contoh Dasar InputStream/OutputStream
Contoh berikut ini menggunakan class FileInputStream dan FileOutputStream untuk
membaca dari sebuah file khusus dan mengcopy isi dari file ini ke file yang lain.
import java.io.*;
class CopyFile {
void copy(String input, String output) {
FileInputStream inputStr;
FileOutputStream outputStr;
int data;
try {
inputStr = new FileInputStream(input);
outputStr = new FileOutputStream(output);
while ((data = inputStr.read()) != -1) {
outputStr.write(data);
}
inputStr.close();
outputStr.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile cf = new CopyFile();
cf.copy(inputFile, outputFile);
}
}
10 Contoh Modifikasi
InputStream/OutputStream
Contoh berikutnya menggunakan class PushbackInputStream yang memanfaatkan
sebuah object FileInputStream dan class PrintStream.
import java.io.*;
class CopyFile {
void copy(String input) {
PushbackInputStream inputStr;
PrintStream outputStr;
int data;
try {
inputStr = new PushbackInputStream(new
FileInputStream(input));
outputStr = new PrintStream(System.out);
while ((data = inputStr.read()) != -1) {
outputStr.println("read data: " + (char) data);
inputStr.unread(data);
data = inputStr.read();
outputStr.println("unread data: " + (char) data);
}
inputStr.close();
outputStr.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
CopyFile cf = new CopyFile();
cf.copy(inputFile);
}
}
Uji kode ini pada sebuah file yang mengandung sedikit baris atau karakter.
11 Serialisasi
Java Virtual Machine (JVM) mendukung kemampuan untuk membaca atau menulis
sebuah object ke bentuk stream. kemampuan ini disebut dengan serialisasi, proses
"flattening" sebuah object sehingga data tersebut dapat disimpan ke beberapa
penyimpanan permanen atau dilewatkan ke object lain melalui class OutputStream.
Ketika menulis sebuah object, ini merupakan hal yang penting bahwa keadaan tersebut
sudah tertulis dan telah diserialisasi dari setiap objectnya dapat dibangun kembali
sebagaimana dtaa tersebut dibaca. Menyimpan sebuah objectke beberapa tipe
penyimpanan permanen yang dikenal sebagai persistence.
Stream yang digunakan untuk deserialisasi dan serialisasi secara berurutan adalah class
ObjectInputStream dan ObjectOutputStream .
Untuk memungkinkan sebuah object diserialisasi (sebagai contoh dapat disimpan dan
diurutkan), Class tersebut harus mengimplementasikan interface yang dapat
diserialisasi. Class ini seharusnya juga menyediakan default constructor atau sebuah
constructor tanpa argumen. Satu hal yang baik mengenai kemampuan untuk melakukan
serialisasiyang dapat diturunkan, yang berarti kita tidak memiliki implementasi
serialisasi pada setiap class. Ini berarti mengurangi pekrjaan untuk programmer. Anda
hanya dapat mengimplementasikan serialisasi sekali sepanjang hirarki class.
1 Kata Kunci transient
Ketika suatu object diserialisasi, tempat hanya disediakan untuk data object. Method dan
Constructor bukan merupakan bagian dari stream serialisasi. Ada beberapa object yang
tidak diserialisasi kaena data yang diwakilinya berubah secara konstan. Beberapa contoh
dari setiap object adalah object FileInputStream dan Object Thread. Sebuah
NotSerializableException dijalankan jika operasi serialisasi gagal karena beberapa
alasan.
Jangan berputus asa. Sebuah class yang mengandung object yang tidak diserialisasi
dapat tetap diserialisasi jika penunjuk ke object non-serialisasi ditandai dengan
katakunci transient. Pertimbangkan contoh berikut ini :
class MyClass implements Serializable {
transient Thread thread; //try removing transient
int data;
/* beberapa data yang lain*/
}
Kata kunci transient mencagah data dari proses serialisasi. Object instantiasi dari class
ini sekarang dapat ditulis ke sebuah OutputStream.
2 Serialisasi: Menulis Suatu Object Stream
Untuk menulis object ke sebuah stream, Anda perlu menggunakan
classObjectOutputStream class dan methodnya yaitu method writeObject. Method
writeObject memiliki tanda sebagai berikut :
public final void writeObject(Object obj) throws IOException
dimana obj adalah object yang ditulis ke stream.
Contoh dibawah ini menuliskan sebuah object Boolean ke sebuah ObjectOutputStream.
Class Boolean mengimplementasikan interface yang dapat di Serialisasi. Selanjutnya,
Instantiasi object dari class ini dapat ditulis ke dan dibaca dari sebuah stream.
import java.io.*;
public class SerializeBoolean {
SerializeBoolean() {
Boolean booleanData = new Boolean("true");
try {
FileOutputStream fos = new
FileOutputStream("boolean.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(booleanData);
oos.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
SerializeBoolean sb = new SerializeBoolean();
}
3 Deserialisasi: Membaca Sebuah Object Stream
Untuk membaca sebuah object dari sebuah stream, Anda perlu menggunakan class
ObjectInputStream dan methodnya yaitu method readObject. Method readObject
memiliki tanda sebagai berikut :
public final Object readObject()
throws IOException, ClassNotFoundException
dimana obj adalah object yang dibaca dari stream. tipe Object dikembalikan harus
melalui proses typecast ke nama class yang sesuai sebelum method pada class tersebut
dapat dieksekusi.
Contoh dibawah ini membaca sebuah object Boolean dari sebuah ObjectInputStream. Ini
merupakan kesinambungan dari contoh sebelumnya pada serialisasi.
import java.io.*;
public class UnserializeBoolean {
UnserializeBoolean() {
Boolean booleanData = null;
try {
FileInputStream fis = new
FileInputStream("boolean.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
booleanData = (Boolean) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
J.E.N.I.
Pengenalan Pemrograman 2 18
}
System.out.println("Unserialized Boolean from " +
"boolean.ser");
System.out.println("Boolean data: " + booleanData);
System.out.println("Compare data with true: " +
booleanData.equals(new Boolean("true")));
}
public static void main(String args[]) {
UnserializeBoolean usb = new UnserializeBoolean();
}
}


Rabu, 18 Mei 2011

Array 2 Dimensi

Pada Array 2 Dimensi :
Terdiri lebih dari 1 baris dan 1 kolom, berisi beberapa data yang semuanya memiliki tipe data yang sama
Terdiri dari baris dan kolom
Tipe-data nama-array[jumlah baris][jumlah kolom]

tipe-data : tipe data dari elemen array
nama-array : nama dari variabel array
jumlah baris : jumlah baris elemen array
jumlah kolom : jumlah kolom elemen array

Inisialisasi Array 2 Dimensi

Inisialisasi bisa dilakukan saat variabel dideklarasikan
Untuk Array 1 Dimensi, pemberian nilai dengan tanda ‘{ }’
Dengan Array 2 Dimensi sama saja, hanya ada tambahan tanda ‘{ }’ untuk masing-masing barisnya
Bisa saja tidak seluruh elemen diinisialisasi
Contoh :
    int data[2][3] = { {3,2,3}, {3,4} }

int data[2][3] = {{10, 20, 30}, {40, 50, 60}};
Untuk mempermudah penulisan dan pembacaan, inisialisasi dapat dilakukan dengan penulisan berikut :
    int data[2][3] = {{10, 20, 30},
                    {40, 50, 60}};
Khusus untuk array 2 dimensi bertipe char, inisialisasi dapat dilakukan dengan cara-cara berikut :
    char nama[2][6] = {{‘m’, ’a’, ’r’, ’k’},
                        {‘k’, ’e’, ’v’, ’I’, ’n’}};

    char nama[2][6] = {“mark”,
                        “kevin”};

Pengaksesan Array 2 Dimensi
Urutan pengaksesan tidak harus baris-per-baris, tapi bisa kolom-per-kolom sesuai kebutuhan
#include <stdio.h>

void main() {
    int data[2][3] = {{10, 20, 30},
                    {40, 50, 60}};

    for(int b=0; b<2; b++) {
        for(int k=0; k<3; k++) {
            printf("%d ", data[b][k]);
        }
        printf("\n");
    }
}


#include <stdio.h>

void main() {
    int data[2][3] = {{10, 20, 30},
                    {40, 50, 60}};
    for(int k=0; k<3; k++) {
        for(int b=0; b<2; b++) {
            printf("%d ", data[b][k]);
        }
        printf("\n");
    }

Operasi Pada Array 2 Dimensi

Array 2 dimensi sering disebut matriks
Karena itu, operasi pada array 2 dimensi pada umumnya adalah operasi matriks, seperti menjumlahkan, mengurangkan, dan mengkalikan dua matriks, inverse matriks, transpose matriks dan sebagainya

Untuk menyalin isi matriks ke matriks lainnya harus menyalin setiap elemen (baris dan kolom)

    int  data[2][3] = {{1,2,3}, {2,2,2}};
    int salinan[2][3];
    salinan = data;     Proses ini salah !!


}



Selasa, 10 Mei 2011

SORTING


Pengurutan (Shorting)

1.      Pendahuluan
Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan dan susunan tertentu. Masalah pengurutan dapat ditulis sebagai berikut:
Diberikan larik L dengan n elemen yang sudah terdefinisi elemen-elemennya. Urutan larik tersebut sehingga tersusun secara menaik (ascending):
L[1] ≤ L[2] ≤ L[3] ≤....≤ L[n]

Atau secara menurun (descending):
L[1] ≥ L[2] ≥ L[3] ≥ ....≥ L[n]

Data yang diurut dapat berupa data bertipe dasar atau tipe terstruktur (record). Jika data bertipe terstruktur, maka harus dispesifikasikan berdasarkan field apa data tersebut diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai field kunci.
Algoritma yang sering ditemukan dalam literatur-literatur komputer antara lain: Bubble Sort, Selection Sort (Maximum Sort dan Minimum Sort), Insertion Sort, Heap Sort, Shell Sort, Quick Sort, Merge Shorte, Radix Sort, tree sort. Dalam modul ini tidak akan membahas semua algoritma pengurutan tersebut, tetapi hanya tiga buah algoritma pengurutan yang sederhana saja, yaitu:
1)      Metode Pengurutan Apung (Bubble Sort),
2)      Metode Pengurutan Seleksi (Selection Sort),
3)      Metode Pengurutan Sisip (Shell Sort)

2.      Tujuan Instruksional Umum
Mahasiswa dapat mengerti dan memahami algoritma pengurutan (sorting)

3.      Tujuan Instruksional Khusus
  • Memahami dan menguasai algoritma pengurutan dasar dengan menggunakan metode pengurutan Apung (Bubble Sort) dan konsep penerapannya dalam memecahkan masalah pemrograman
  • Memahami dan menguasai algoritma pengurutan dasar dengan menggunakan Metode Pengurutan Seleksi (Selection Sort) dan konsep penerapannya dalam memecahkan masalah pemrograman
  • Memahami dan menguasai algoritma pengurutan dasar dengan menggunakan Metode Pengurutan Sisip (Shell Sort) dan konsep penerapannya dalam memecahkan masalah pemrograman

4.      Kegiatan Praktikum
.4.1.      Kegiatan Praktikum 1
§  Uraian dan contoh
4.1.1 Algoritma Pengurutan Apung (Bubble Sort)
              Prinsip pengapungan digunakan pada pengurutan apung. Apabila kita menginginkan larik terurut menaik, maka elemen larik yang berharga paling kecil ” diapungkan”, artinya diangkat ke ”atas” (atau ke ujung kiri larik) melalui proses pertukaran. Pengapungan ini dilakukan sebanyak n-1 langkah (satu langkah tersebut juga satu kali pass) dengan n adalah ukuran larik. Pada akhir setiap langkah ke-i, larik [1..n] akan terdiri atas dua bagian yaitu bagian yang sudah terurut, yaitu L[1..i], dan bagian yang belum terurut, L[i+1..n]. Setelah langkah terakhir, diperoleh larik L[1..n] yang terurut menaik. Lihat gambar.1:
1
i   i+1            n
Sudah terurut
Belum terurut
              Gambar.1 Bagian larik yang terurut pada metode pengurutan apung    

Prosedur  pengurutan apung (Bubble Sort) agar larik L terurut menaik adalah sebagai berikut:
Procedure bubblesort(var L:larikint; n:integer);

Var
     i       : integer ;
    k       : integer ;
    temp : integer ;

begin
    for   i := 1 to n-1 do
       for  k := n downto  i+1 do
           if L[ k ] < L [ k-1 ] then
                 temp := L[ k ];
                 L[ k ]:= L[ k-1];
                 L[ k-1]:= temp;
 End;
Prosedur pengurutan apung (Bubble Sort) dengan memanfaatkan prosedur Tukar, sebagai berikut :
Procedure bubblesort_naik(var L : larikint ;  n : integer);

Var
     i       : integer ;
    k       : integer ;
   
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;

begin
    for   i := 1 to n-1 do
       for  k := n downto  i+1 do
           if L[ k ] < L [ k-1 ] then
    Tukar (L [k], L[k-1]);
 End;

Prosedur  pengurutan apung (Bubble Sort) agar larik L terurut menurun adalah sebagai berikut:
Procedure bubblesort_turun(var L : larikint ;  n : integer);

Var
     i       : integer ;
    k       : integer ;
   
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;

begin
    for   i := 1 to n-1 do
       for  k := n downto  1 do
           if L[ k ] < L [ k-1 ] then
    Tukar (L [k], L[k-1]);
 End;






Contoh 4.1: program pengurutan bublesort dengan larik terurut menaik!


program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,k,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

   procedure bublesort;
   begin
        for i:=1 to N-1 do
        begin
             for k :=N downto i+1 do
             begin
                  if L[k] < L[k-1] then
                  begin
                       temp :=L[k];
                       L[k] := L[k-1];
                       L[k-1] :=temp;
                  end;
             end;
        end;
   end;

begin
     input;
     writeln;
     bublesort;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.

§  Latihan 1
1.      Buatlah program pengurutan bublesort dengan pemilihan larik terurut menaik (ascending) dan menurun (descending)!











.4.2.      Kegiatan Praktikum 2
§  Uraian dan contoh
                  Algoritma Pengurutan Seleksi (Selection Sort)
            Pengurutan Seleksi (Selection Sort) adalah memilih elemen maksimum/minimum dari larik, lalu menempatkan elemen maksimum/minimum itu pada awal atau akhir larik (elemen terujung) (Lihat gambar 2). Selanjutkan elemen terujung tersebut “diisolasi” dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa, yaitu memilih elemen maksimum/minimum berikutnya dan mempertukarkannya dengan elemen terujung larik sisa. Proses memilih nilai maksimum/minimum dilakukan pada setiap pass. Jika larik berukuran n, maka jumlah pass adalah n-1.
        Sebelum :
1
n
Belum terurut

        Sesudah :
1
N
Belum terurut


terurut

Ada dua varian algoritma pengurutan seleksi ditinjau dari pemilihan elemen maksimum/minimum, yaitu :
1)      Algoritma pengurutan seleksi-maksimum, yaitu memilih elemen maksimum sebagai basis pengurutan.

Prosedur pengurutan seleksi – maksimum untuk pengurutan menaik, sebagai berikut:
Procedure selectionsortmax_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
     maks : integer ;
     temp : integer ;
begin
     for  i := n downto 2 do
           imaks := 1;
           maks := L[1];
           for  j := 2 to i do
                if  L[ j ] > maks then
                    imaks   := j ;
                    maks    := L[ j ] ;
begin
                    temp    := L[ i ] ;
                    L[ i ] := maks ;
                    L[imaks] := temp ;
End;
End;
   
Prosedur pengurutan seleksi – maksimum untuk pengurutan menaik tanpa peubah maks, sebagai berikut:

Procedure selectionsortmax_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
     temp : integer ;
begin
     for  i := n down to 2 do
           imaks := 1;
           for  j := 2 to i do
                if  L[ j ] > L[imaks] then
                    imaks   := j ;
 begin
                    temp := L[ i ] ;
                    L[ i ] := L[imaks] ;
                    L[imaks] := temp ;
End;
End;

Prosedur pengurutan seleksi – maksimum dengan memanfaatkan prosedur Tukar, sebagai berikut :
Procedure selectionsortmax_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
      procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
begin
     for  i := n down to 2 do
           imaks := 1;
           for  j := 2 to i do
                if  L[ j ] > L[imaks] then
                    imaks   := j ;
                    tukar (L[imaks], L[i]);
End;

Prosedur  pengurutan seleksi – maksimum agar larik L terurut menurun adalah sebagai berikut:
Procedure selectionsortmax_turun(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imaks: integer ;
    
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
   
begin
     for  i := 1 to n-1 do
           imaks := i;
           for  j := i+1 to n do
                if  L[ j ] > L[imaks] then
                    imaks   := j ;   
                    tukar (L[imaks], L[i]);
End;



Contoh 4.2 program pengurutan seleksi maksimum dengan terurut menaik;
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,imaks,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

  Procedure selectionsortmax_naik;

begin
     for  i := n downto 2 do
          begin
           imaks := 1;
           for  j := 2 to i do
           begin
                if  L[ j ] > L[imaks] then
                imaks   := j ;
                begin
                    temp := L[ i ] ;
                    L[ i ] := L[imaks] ;
                    L[imaks] := temp ;
end;
end;
end;
end;

begin
     input;
     writeln;
     selectionsortmax_naik;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


2)      Algoritma pengurutan seleksi-minimum, yaitu memilih elemen minimum sebagai basis pengurutan.
                 
Prosedur pengurutan seleksi – minimum dengan agar larik Lterurut menaik, sebagai berikut :
Procedure selectionsortmin_naik(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imin integer ;
    
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
   
begin
     for  i := 1 to n-1 do
           imin := i;
           for  j := i + 1 to n do
                if  L[ j ] < L[imin] then
                    imin   := j ;
                    tukar (L[imin], L[i]);
End;

Prosedur  pengurutan seleksi – minimum agar larik L terurut menurun adalah sebagai berikut:
Procedure selectionsortmin_turun(var L : larikint ; n : integer );
Var
     i : integer ;
     j : integer ;
     imin: integer ;
    
    procedure tukar (var a : integer ; b : integer);
    var
        temp : integer ;
     begin
         temp := a ;
         a := b ;
         b := temp ;
      end ;
   
begin
     for  i := n downto 2 do
           imin := 1;
           for  j := 2 to i do
                if  L[ j ] < L[imin] then
                    imin   := j ;
                    tukar (L[imaks], L[i]);
End;

              
                                    Contoh 4.3 : program pengurutan seleksi-minimum dengan terurut menurun!
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,imin,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

  Procedure selectionsortmin_turun;

begin
    
     for  i := n downto 2 do
     begin
           imin := 1;
           for  j := 2 to i do
           begin
                if  L[ j ] < L[imin] then
                    imin   := j ;

                begin
                    temp := L[ i ] ;
                    L[ i ] := L[imin] ;
                    L[imin] := temp ;
end;
end;
end;
end;

begin
     input;
     writeln;
     selectionsortmin_turun;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


§  Latihan 2

1.      buatlah program pengurutan seleksi-minimum dengan terurut menaik!



.4.3.      Kegiatan Praktikum 3
§  Uraian dan contoh
Algoritma Pengurutan Sisipan (Insertion Sort)
Pengurutan sisip (insertion Sort) adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan menyisir larik. Selama penyisiran dilakukan pergeseran elemen larik. Metode pengurutan sisip cocok untuk persoalan menyisipkan elemen baru kepada sekumpulan elemen yang sudah terurut.

                        Prosedur Pengurutan Sisip Untuk Pengurutan Menaik :
                       
Procedure insertionsort_naik (var L: larikint; n:integer);
Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          y := L[ i ] ;
           j := i – 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          if  y < L [ j ]
              L [ j+1] := L [ j ] ;
              j := j-1;
          else
               ketemu := true ;
        L [ j+1] := y;
End;  

                        Prosedur Pengurutan Sisip Untuk Pengurutan Menurun :
Procedure insertionsort_turun (var L: larikint; n:integer);

Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          y := L[ i ] ;
           j := i – 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          if  y > L [ j ]
               L [ j+1] := L [ j ] ;
              j := j-1;
          else
               ketemu := true ;
        L [ j+1] := y;
End;  

§  Latihan 3
1.      Buatlah program pengurutan insertionsort dengan pemilihan larik terurut menaik (ascending)

2.      Buatlah program pengurutan insertionsort dengan pemilihan larik terurut menurun (descending)

5.      Kunci Jawaban latihan

1.1      
program bubbleshort;
uses wincrt;

var L : array [1..100] of integer ;
i,K,N,temp:integer;
pilih:char;

begin
begin
        writeln ('Data sebelum diurutkan');
        write('masukkan data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;        

write('hasil ditampilkan secara ascending atau discending(a/d)?');readln(pilih);
if (pilih='a') OR (pilih='A') then
begin
        for i:=1 to N-1 do
        begin
             for k :=N downto i+1 do
             begin
                  if L[k] < L[k-1] then
                  begin
                       temp :=L[k];
                       L[k] := L[k-1];
                       L[k-1] :=temp;
                  end;
             end;
        end;
   end;

if (pilih= 'd') or (pilih='D') then
begin
        for i:=1 to N-1 do
        begin
             for k :=N downto i+1 do
             begin
                  if L[k] > L[k-1] then
                  begin
                       temp :=L[k];
                       L[k] := L[k-1];
                       L[k-1] :=temp;
                  end;
             end;
        end;
   end;

writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


2.1

          program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,imin,n,temp : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyak data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

  Procedure selectionsortmin_naik;
begin
     for  i := 1 to n-1 do
          begin
           imin := i;
          begin
           for  j := i+1 to n do
                if  L[ j ] < L[imin] then
                imin   := j ;
                begin
                    temp := L[ i ] ;
                    L[ i ] := L[imin] ;
                    L[imin] := temp ;
end;
end;
end;

begin
     input;
     writeln;
     selectionsortmin_naik;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


3.1
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,y,n : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

 Procedure insertionsort_naik;

Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          begin
          y := L[ i ] ;
           j := i - 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          begin
          if  y < L [ j ] then
               begin
               L [ j+1] := L [ j ];
              j := j-1;
              end
          else
               ketemu := true ;
        L [ j+1] := y;
End;
end;
end;
begin
     input;
     writeln;
     insertionsort_naik;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.


3.2
program urut;
uses wincrt;
var
   L: array [1..100] of integer;
   i,j,y,n : integer;

   procedure input;
   begin
        writeln ('Data sebelum diurutkan');
        write('masukkan banyaknya data= '); readln(n);
        for i:=1 to N do
        begin
             write('L[' ,i, ']= ');readln (L[i]) ;
        end;
   end;

 Procedure insertionsort_turun;

Var
     i : integer ;
     j : integer ;
    y : integer ;
    ketemu : boolean ;

begin
     for i := 2 to n do
          begin
          y := L[ i ] ;
           j := i - 1 ;
           ketemu := false ;
     while (j >= 1) and (not ketemu) do
          begin
          if  y > L [ j ] then
               begin
               L [ j+1] := L [ j ];
              j := j-1;
              end
          else
               ketemu := true ;
        L [ j+1] := y;
End;
end;
end;
begin
     input;
     writeln;
     insertionsort_turun;
     writeln ('Data setelah diurutkan ');
     for i:=1 to N do
     begin
          writeln ('L[' ,i, '] = ',L[i]);
     end;
     writeln;
end.