KOMPAS.com — Ternyata, masih banyak siswa-siswi yang baru saja menyelesaikan ujian nasional dan berencana melanjutkan pendidikannya ke perguruan tinggi cenderung memilih program studi hanya berdasarkan tren, teman dekat, bahkan ada yang hanya menuruti keinginan orangtuanya untuk memilih sebuah program studi.
Berdasarkan pantauan Kompas.com melalui wawancara singkat dengan 10 pelajar di Jakarta, Kamis (29/4/2010), faktor yang menjadi penentu pemilihan program studi itu masih didominasi oleh tiga hal. Pertama, pemilihan menurut referensi orangtua. Kedua, pilihan didasarkan pada tren terkini, baik itu perguruan tinggi ternama maupun program studi yang memang sedang banyak dibutuhkan.
Sementara itu, faktor ketiga adalah faktor teman. Pemilihan ini hanya berdasarkan keinginan untuk tetap dekat dengan teman-teman karib atau sahabat yang memilih perguruan tinggi atau program studi tertentu.
"Saya pun mengakui, memang, tidak banyak yang benar-benar memilih perguruan tinggi sesuai bakat dan minatnya. Sampai saat ini pun kita belum menjadikan tes bakat dan minat sebagai langkah awal memilih perguruan tinggi, padahal itu sangat penting karena kebutuhan di dunia kerja akan selalu berubah," tutur Sudino Lim, CEO Inti College Indonesia, Kamis (29/4/2010) di Jakarta.
Menurut data survei tenaga kerja nasional yang dikeluarkan oleh Badan Perencanaan Nasional (Bappenas) tahun 2009 lalu, tingginya jumlah pengangguran di Indonesia saat ini sangat mengkhawatirkan. Data tersebut mengungkapkan, dari 21,2 juta orang Indonesia yang masuk dalam angkatan kerja, sebanyak 4,1 juta atau sekitar 22,2 persen adalah pengangguran.
Yang lebih mengkhawatirkan lagi, tingkat pengangguran terbuka itu didominasi oleh lulusan diploma dan universitas dengan kisaran angka di atas 2 juta orang. Merekalah yang kerap disebut dengan "pengangguran akademik" akibat "salah" memilih jurusan.
"Rata-rata anak-anak di luar negeri itu sudah lebih mandiri. Pengetahuan mereka dan kebutuhan mereka akan literasi mencari jurusan lebih terbuka. Seminar-seminar karier yang penting di sini kurang betul diikuti dan justru sering dilupakan orangtua siswa," ujar Lim.
Selasa, 18 Mei 2010
Kapan Seharusnya Tes Minat dan Bakat?
JAKARTA, KOMPAS.com - Tes bakat dan minat siswa sebelum memilih jurusan penting dilakukan jika siswa tidak mengetahui potensi yang dimilikinya dan akan diarahkan ke mana kelak masa depannya.
Ketika si anak belum tahu apa yang diinginkan, hobinya apa, minatnya apa, bahkan cita-citanya, tes minat dan bakat itu penting untuk dia.
-- Roslina Verauli
"Apalagi sekarang ini jurusan atau bidang studi di perkuliahan semakin luas sesuai tuntutan zaman dan cenderung menawarkan keahlian yang bukan saja teori melainkan juga praktis. Maka, ketika si anak belum tahu apa yang dia inginkan, hobinya sebetulnya apa, minatnya apa, bahkan cita-citanya, tes minat dan bakat itu penting untuk dia," ujar psikolog anak dari Universitas Indonesia (UI), Roslina Verauli, kepada Kompas.com di Jakarta, Senin (3/6/2010).
Tes minat dan bakat selama ini, ujar Roslina, cenderung mengarah pada tes kecerdasan akademis, yang mengarahkan anak pada pilihan kemampuan akademiknya. Sementara itu, lanjut dia, bidang-bidang studi atau jurusan yang ada sekarang semakin banyak dan berkembang.
"Tes bakat itu akan melihat kemampuan atau potensi kecerdasan umum si anak, berupa kemampuan berpikir logis atau nalar, itu semua akan terukur. Nah, nanti, dari kemampuan penalaran itu bisa diukur lagi, apakah kemampuan nalar si anak itu lebih mengarah ke visual atau abstrak, apakah kelebihannya pada kemampuan matematika atau sosial?" ujar Roslina.
Roslina menambahkan, dari tes minat-bakat itu kemudian juga bisa terukur kemampuan-kemampuan khusus si anak. Semisal, kata dia, ternyata si anak memiliki kelebihan khusus di bidang-bidang yang bersifat administratif atau sebaliknya yang membutuhkan kreatifitas tinggi.
"Nanti akan muncul gambaran profil si anak yang bisa disesuaikan dengan kepribadiannya dan kemudian akan digabungkan kedua-duanya, semisal apakah si anak berkepribadian introvert atau extrovert, apakah si anak lebih suka bekerja sendiri atau lebih senang bekerja dengan orang lain, si anak cenderung menyukai rutinitas atau fleksibilitas. Dari penggabungan-pengabungan potensi umum dan khusus itulah bisa diperkirakan peminatan anak ini akan ke mana," ujar Roslina.
Intinya, ujar dia, setiap orang adalah the right person yang punya potensi unik masing-masing. Hanya, ada yang kemudian menjadi sukses atau tidak sukses.
"Semua keputusan akhirnya akan dikembalikan pada si anak. Sukses itu karena kebetulan dalam perkembangannya si anak berada dalam kondisi yang disebut dengan the right place," ujar Roslina.
Roslina menambahkan, sebetulnya bukan di Indonesia saja ada anggapan bahwa anak merupakan "perpanjangan" dari keberhasilan orang tuanya. Banyak orang tua di luar negeri pun berharap, bahwa kelak, ambisi-ambisi mereka yang belum tercapai bisa terealisasi lewat si anak.
"Untuk itu perlu dipastikan, bahwa si anak bisa mendapatkan the right place. Yaitu tempat di mana si anak dapat berkembang potensinya sesuai bakat dan minatnya. Perlu dicamkan para orang tua, bahwa kecerdasan minat atau bakat belum tentu sama antara mereka dan anaknya, maka, jika dipaksakan, hasilnya bisa ditebak sendiri," timpal Roslina.
Ketika si anak belum tahu apa yang diinginkan, hobinya apa, minatnya apa, bahkan cita-citanya, tes minat dan bakat itu penting untuk dia.
-- Roslina Verauli
"Apalagi sekarang ini jurusan atau bidang studi di perkuliahan semakin luas sesuai tuntutan zaman dan cenderung menawarkan keahlian yang bukan saja teori melainkan juga praktis. Maka, ketika si anak belum tahu apa yang dia inginkan, hobinya sebetulnya apa, minatnya apa, bahkan cita-citanya, tes minat dan bakat itu penting untuk dia," ujar psikolog anak dari Universitas Indonesia (UI), Roslina Verauli, kepada Kompas.com di Jakarta, Senin (3/6/2010).
Tes minat dan bakat selama ini, ujar Roslina, cenderung mengarah pada tes kecerdasan akademis, yang mengarahkan anak pada pilihan kemampuan akademiknya. Sementara itu, lanjut dia, bidang-bidang studi atau jurusan yang ada sekarang semakin banyak dan berkembang.
"Tes bakat itu akan melihat kemampuan atau potensi kecerdasan umum si anak, berupa kemampuan berpikir logis atau nalar, itu semua akan terukur. Nah, nanti, dari kemampuan penalaran itu bisa diukur lagi, apakah kemampuan nalar si anak itu lebih mengarah ke visual atau abstrak, apakah kelebihannya pada kemampuan matematika atau sosial?" ujar Roslina.
Roslina menambahkan, dari tes minat-bakat itu kemudian juga bisa terukur kemampuan-kemampuan khusus si anak. Semisal, kata dia, ternyata si anak memiliki kelebihan khusus di bidang-bidang yang bersifat administratif atau sebaliknya yang membutuhkan kreatifitas tinggi.
"Nanti akan muncul gambaran profil si anak yang bisa disesuaikan dengan kepribadiannya dan kemudian akan digabungkan kedua-duanya, semisal apakah si anak berkepribadian introvert atau extrovert, apakah si anak lebih suka bekerja sendiri atau lebih senang bekerja dengan orang lain, si anak cenderung menyukai rutinitas atau fleksibilitas. Dari penggabungan-pengabungan potensi umum dan khusus itulah bisa diperkirakan peminatan anak ini akan ke mana," ujar Roslina.
Intinya, ujar dia, setiap orang adalah the right person yang punya potensi unik masing-masing. Hanya, ada yang kemudian menjadi sukses atau tidak sukses.
"Semua keputusan akhirnya akan dikembalikan pada si anak. Sukses itu karena kebetulan dalam perkembangannya si anak berada dalam kondisi yang disebut dengan the right place," ujar Roslina.
Roslina menambahkan, sebetulnya bukan di Indonesia saja ada anggapan bahwa anak merupakan "perpanjangan" dari keberhasilan orang tuanya. Banyak orang tua di luar negeri pun berharap, bahwa kelak, ambisi-ambisi mereka yang belum tercapai bisa terealisasi lewat si anak.
"Untuk itu perlu dipastikan, bahwa si anak bisa mendapatkan the right place. Yaitu tempat di mana si anak dapat berkembang potensinya sesuai bakat dan minatnya. Perlu dicamkan para orang tua, bahwa kecerdasan minat atau bakat belum tentu sama antara mereka dan anaknya, maka, jika dipaksakan, hasilnya bisa ditebak sendiri," timpal Roslina.
Ragam Gula di Sekitar Kita
Ada banyak jenis gula yang bisa jadi penambah rasa manis. Berikut beberapa di antaranya:
- Gula pasir atau gula putih
Bisa diperoleh dari tebu atau bit. Gula pasir hanya mengandung satu jenis gula, yaitu sukrosa, yang merupakan gula kristal. Gula pasir adalah bahan baku pembuatan permen, selai, dan jeli. Ketiganya disebut makanan berkadar sukrosa tinggi.
- Gula merah
Dibuat dari pemekatan nira bunga kelapa, aren, atau siwalan. Kandungan gula merah adalah sukrosa 50 persen, glukosa, dan fruktosa.
- Gula alkohol
Disebut demikian karena dalam struktur kimianya mengandung banyak gugus hidroksi (-OH). Gula alkohol juga merupakan bahan pembuat permen. Umumnya nilai kalori gula alkohol lebih rendah daripada gula pasri, tapi jika dikonsumsi terlalu berlebihan dapat menimbulkan efek laksatif atau sering buang air besar.
- Sorbitol dan manitol
Berasal dari glukosa dan manosa. Kemanisan sorbitol hanya 60 persen dari sukrosa, sedangkan manitol 50 persen. Sorbitol merupakan gula alami pada jagung, sehingga disebut gula jagung. Sifat gula jagung tidak tahan panas. Karena itu, kemanisannya akan berkurang saat digunakan untuk mengolah masakan di atas api.
- Aspartam
Kemanisannya 200 kali sukrosa, sehingga penggunaannya sedikit sekali. Aspartam terbuat dari dua jenis asam amino (protein), yaitu fenilalanin dan asam aspartat. Gula ini sebaiknya tidak digunakan pada suhu tinggi karena asam aminonya akan rusak.
- Sakarin
Merupakan pemanis nonnutrisi yang memiliki kemaniasn 300-400 kali sukrosa. Kemampuan sakarin untuk membentuk larutan pekat dan kemanisannya sangat tinggi, sehingga cenderung pahit.
- Siklamat
Pemanis buatan yang sering digunakan untuk membuat permen karet atau es krim. Menurut beberapa studi, khususnya sakarin dan siklamat merupakan senyawa yang bersifat karsinogenik (pemicu kanker).
- Gula stevia
Diperoleh dari ekstrak daun Stevia rebaudiana dan merupakan pemanis tidak berkalori alami, sehingga aman dikonsumsi. Sayangnya, gula stevia meninggalkan rasa pahit, meski dapat berkurang dengan meningkatnya kemurnian.
- Madu
Ini adalah sirop alami yang berasal dari sari bunga dan diisap oleh lebah yang kemudian disimpan di sarangnya. Madu cukup menyehatkan dengan kandungan gizi cukup kompleks seperti karbohidrat, protein asam amino, vitamin, dan mineral, serta mudah diserap oleh sel-sel dan jaringan tubuh. Komposisi madu terdiri atas 34 persen glukosa, 41 persen fruktosa, 2,4 persen sukrosa, dan 18,3 persen air. Unsur gula madu yang utama adalah fruktosa.
- Gula buah
Buah-buahan yang manis mengandung fruktosa. Konsumsi berlebihan juga dapat meningkatkan kadar gula darah. (GHS/dee)
- Gula pasir atau gula putih
Bisa diperoleh dari tebu atau bit. Gula pasir hanya mengandung satu jenis gula, yaitu sukrosa, yang merupakan gula kristal. Gula pasir adalah bahan baku pembuatan permen, selai, dan jeli. Ketiganya disebut makanan berkadar sukrosa tinggi.
- Gula merah
Dibuat dari pemekatan nira bunga kelapa, aren, atau siwalan. Kandungan gula merah adalah sukrosa 50 persen, glukosa, dan fruktosa.
- Gula alkohol
Disebut demikian karena dalam struktur kimianya mengandung banyak gugus hidroksi (-OH). Gula alkohol juga merupakan bahan pembuat permen. Umumnya nilai kalori gula alkohol lebih rendah daripada gula pasri, tapi jika dikonsumsi terlalu berlebihan dapat menimbulkan efek laksatif atau sering buang air besar.
- Sorbitol dan manitol
Berasal dari glukosa dan manosa. Kemanisan sorbitol hanya 60 persen dari sukrosa, sedangkan manitol 50 persen. Sorbitol merupakan gula alami pada jagung, sehingga disebut gula jagung. Sifat gula jagung tidak tahan panas. Karena itu, kemanisannya akan berkurang saat digunakan untuk mengolah masakan di atas api.
- Aspartam
Kemanisannya 200 kali sukrosa, sehingga penggunaannya sedikit sekali. Aspartam terbuat dari dua jenis asam amino (protein), yaitu fenilalanin dan asam aspartat. Gula ini sebaiknya tidak digunakan pada suhu tinggi karena asam aminonya akan rusak.
- Sakarin
Merupakan pemanis nonnutrisi yang memiliki kemaniasn 300-400 kali sukrosa. Kemampuan sakarin untuk membentuk larutan pekat dan kemanisannya sangat tinggi, sehingga cenderung pahit.
- Siklamat
Pemanis buatan yang sering digunakan untuk membuat permen karet atau es krim. Menurut beberapa studi, khususnya sakarin dan siklamat merupakan senyawa yang bersifat karsinogenik (pemicu kanker).
- Gula stevia
Diperoleh dari ekstrak daun Stevia rebaudiana dan merupakan pemanis tidak berkalori alami, sehingga aman dikonsumsi. Sayangnya, gula stevia meninggalkan rasa pahit, meski dapat berkurang dengan meningkatnya kemurnian.
- Madu
Ini adalah sirop alami yang berasal dari sari bunga dan diisap oleh lebah yang kemudian disimpan di sarangnya. Madu cukup menyehatkan dengan kandungan gizi cukup kompleks seperti karbohidrat, protein asam amino, vitamin, dan mineral, serta mudah diserap oleh sel-sel dan jaringan tubuh. Komposisi madu terdiri atas 34 persen glukosa, 41 persen fruktosa, 2,4 persen sukrosa, dan 18,3 persen air. Unsur gula madu yang utama adalah fruktosa.
- Gula buah
Buah-buahan yang manis mengandung fruktosa. Konsumsi berlebihan juga dapat meningkatkan kadar gula darah. (GHS/dee)
Kamis, 15 April 2010
Graph dalam struktur data
April 16, 2010
Struktur Data Graph
Struktur data yang berbentuk network/jaringan, hubungan antar elemen adalah many-to-many Keterhubungan dan jarak tidak langsung antara dua kota = data keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Penerapan struktur data linear atau hirarkis pada masalah graph dapat dilakukan tetapi kurang efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straight forward) dilakukan pada strukturnya sendiri. 1.
Struktur Data Linear = keterhubungan sekuensial antara entitas data 2.
Struktur Data Tree = keterhubungan hirarkis 3.
Struktur Data Graph = keterhubungan tak terbatas antara entitas data. Contoh graph :
Informasi topologi jaringan dan keterhubungan antar
Graph terdiri dari himpunan verteks (node) dan himpunan sisi (edge, arc). Verteks menyatakan entitas-entitas data dan sisi menyatakan keterhubungan antara verteks. Notasi matematis graph G adalah :
G = (V, E)
Sebuah sisi antara verteks x dan y ditulis {x, y}. Subgraph : graph yang merupakan suatu subset (bagian) graph yang connected Graph H = (V1, E1) disebut subgraph dari graph G jika V1 adalah himpunan bagian dari V dan E1 himpunan bagian dari E.
Jenis Graph
a. Directed Graph (Digraph)
Jika sisi-sisi graph hanya berlaku satu arah. Misalnya : {x,y} yaitu arah x ke y, bukan dari y ke x; x disebut origin dan y disebut terminus. Secara notasi sisi digraph ditulis sebagai vektor (x, y).
Contoh Digraph G = {V, E} :
V = {A, B, C, D, E, F, G, H, I,J, K, L, M} E = {(A,B),(A,C), (A,D), (A,F), (B,C), (B,H), (C,E), (C,G), (C,H), (C,I), (D,E), (D,F), (D,G), (D,K), (D,L), (E,F), (G,I), (G,K), (H,I), (I,J), (I,M), (J,K), (J,M), (L,K), (L,M)}.
b. Graph Tak Berarah (Undirected Graph atau Undigraph)
Setiap sisi {x, y} berlaku pada kedua arah: baik x ke y maupun y ke x. Secara grafis sisi pada undigraph tidak memiliki mata panah dan secara notasional menggunakan kurung kurawal.
Contoh Undigraph G = {V, E}
V = {A, B, C, D, E, F, G, H, I,J, K, L, M} E = { {A,B},{A,C}, {A,D}, {A,F}, {B,C}, {B,H}, {C,E}, {C,G}, {C,H}, {C,I}, {D,E}, {D,F}, {D,G}, {D,K}, {D,L}, {E,F}, {G,I}, {G,K}, {H,I}, {I,J}, {I,M}, {J,K}, {J,M}, {L,K}, {L,M}}. Khusus graph, undigraph bisa sebagai digraph (panah di kedua ujung edge berlawanan) Struktur data linear maupun hirarkis adalah juga graph. Node-node pada struktur linear ataupun hirarkis adalah verteks-verteks dalam
ngertian graph dengan sisi-sisinya menyusun node-node tersebut secara linear atau hirarkis. Struktur data linear adalah juga tree dengan pencabangan pada setiap node hanya satu atau tidak ada. Linear 1-way linked list (digraph), linear 2-way linked list (undigraph).
Posted in Uncategorized | Leave a Comment »
Struktur Data Graph
Struktur data yang berbentuk network/jaringan, hubungan antar elemen adalah many-to-many Keterhubungan dan jarak tidak langsung antara dua kota = data keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Penerapan struktur data linear atau hirarkis pada masalah graph dapat dilakukan tetapi kurang efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straight forward) dilakukan pada strukturnya sendiri. 1.
Struktur Data Linear = keterhubungan sekuensial antara entitas data 2.
Struktur Data Tree = keterhubungan hirarkis 3.
Struktur Data Graph = keterhubungan tak terbatas antara entitas data. Contoh graph :
Informasi topologi jaringan dan keterhubungan antar
Graph terdiri dari himpunan verteks (node) dan himpunan sisi (edge, arc). Verteks menyatakan entitas-entitas data dan sisi menyatakan keterhubungan antara verteks. Notasi matematis graph G adalah :
G = (V, E)
Sebuah sisi antara verteks x dan y ditulis {x, y}. Subgraph : graph yang merupakan suatu subset (bagian) graph yang connected Graph H = (V1, E1) disebut subgraph dari graph G jika V1 adalah himpunan bagian dari V dan E1 himpunan bagian dari E.
Jenis Graph
a. Directed Graph (Digraph)
Jika sisi-sisi graph hanya berlaku satu arah. Misalnya : {x,y} yaitu arah x ke y, bukan dari y ke x; x disebut origin dan y disebut terminus. Secara notasi sisi digraph ditulis sebagai vektor (x, y).
Contoh Digraph G = {V, E} :
V = {A, B, C, D, E, F, G, H, I,J, K, L, M} E = {(A,B),(A,C), (A,D), (A,F), (B,C), (B,H), (C,E), (C,G), (C,H), (C,I), (D,E), (D,F), (D,G), (D,K), (D,L), (E,F), (G,I), (G,K), (H,I), (I,J), (I,M), (J,K), (J,M), (L,K), (L,M)}.
b. Graph Tak Berarah (Undirected Graph atau Undigraph)
Setiap sisi {x, y} berlaku pada kedua arah: baik x ke y maupun y ke x. Secara grafis sisi pada undigraph tidak memiliki mata panah dan secara notasional menggunakan kurung kurawal.
Contoh Undigraph G = {V, E}
V = {A, B, C, D, E, F, G, H, I,J, K, L, M} E = { {A,B},{A,C}, {A,D}, {A,F}, {B,C}, {B,H}, {C,E}, {C,G}, {C,H}, {C,I}, {D,E}, {D,F}, {D,G}, {D,K}, {D,L}, {E,F}, {G,I}, {G,K}, {H,I}, {I,J}, {I,M}, {J,K}, {J,M}, {L,K}, {L,M}}. Khusus graph, undigraph bisa sebagai digraph (panah di kedua ujung edge berlawanan) Struktur data linear maupun hirarkis adalah juga graph. Node-node pada struktur linear ataupun hirarkis adalah verteks-verteks dalam
ngertian graph dengan sisi-sisinya menyusun node-node tersebut secara linear atau hirarkis. Struktur data linear adalah juga tree dengan pencabangan pada setiap node hanya satu atau tidak ada. Linear 1-way linked list (digraph), linear 2-way linked list (undigraph).
Posted in Uncategorized | Leave a Comment »
Kembangkan kecerdasan spiritual anda
Kriteria ibadah puasa Ramadan yang berkualitas adalah yang puasanya dilandasi keimananan dan kesadaran.Pengamalnya dapatlah digolongkan sebagai orang yang mempunyai kecerdasan spiritual (spiritual intellgence) yang tinggi.
Spirirtual intellgence merupakan temuan riset terbaru dibidang kecerdasan, melengkapi temuan-temuan sebelumnya, yakni kecerdasan intelektual (intellgence quotient/IQ dan kecerdasan emosial ( emotional intellgence/EQ).
Publikasi hasil penelitian yang dilakukan oleh Daniel Goleman (seorang psikolog) menggambarkan bahwa, kecerdasan emosial yaitu kesadaran dan kemampuan untuk menangani perasaan (emosi) ternyata lebih menentukan keberhasilan dan kebahagian seseorang daripada kecerdasan intelektual.
Dalam perkembangannya, temuan jenis “Q” ketiga, yakni kecerdasan spiritual (SQ) yang sering disebut Danah Zohar dan Ian Marshall ( ahli psikologi ) sebagai puncak kecerdasan ( ultimate intellgence). Jika IQ berdasarkan nalar, rasio intelektual, sementara EQ pada emosi maka SQ disandarkan pada jiwa-hati.
Kecerdasan spiritual (SQ) hanya berada pada prototipe manusia yang bersih secara spiritual, dilandasi jiwa yang damai dan tenang (annafsul-muthmainnah)yang bisa menjalin kontak spiritual dengan Rab (Tuhan)-nya.Dengan annafsul-muthmainnah,maka sifat kikir dan tamak berubah menjadi sifat rela berkorban.
Sifat tidak jujur,maksiat dan korup berubah menjadi sifat wajar dan penuh pengabdian.
Sifat pemarah, rihati mementingkan diri sendiri berganti menjadi sifat sabar, kasih sayang, toleransi dan menjunjung tinggi nilai-nilai kemanusiaan. Sifat sombong berubah menjadi sifat berbudi luhur.
Apabila kesadaran spiritual telah mencapai taraf demikian maka nafsu suci seseorang akan mendapatkan panggilan Allah, seperti termaktub dalam Q.S. Al Fajr 8 (27,28,29,30). “Hai jiwa yang tenang, Kembalilah pada Tuhanmu dengan hati yang puas lagi diridhai-Nya. Maka masuklah kedalam jamaah hamba-hamba-Ku dan masuklah kedalam surga-Ku”
An Nafsul-Muthmainnah yang telah dapat mengalahkan nafsul-ammarah, seperti dalam Q.S Yusuf 12 (53) dan nafsul-lawwamah Q.S.Al Qiyamah 75 (2) berarti jiwa yang tenang menerima segala kabar gembira (basyiran) ataupun kabar yang menakutkan (nadziran) yang telah mencapai makrifat dapat melaksanakan perintah ibadah puasa sebagaimana sabda Nabi Muhammad SAW. Manshaama romadhoona imanan waktisaban ghufiralahu mataqaddama mindambihi.
Spirirtual intellgence merupakan temuan riset terbaru dibidang kecerdasan, melengkapi temuan-temuan sebelumnya, yakni kecerdasan intelektual (intellgence quotient/IQ dan kecerdasan emosial ( emotional intellgence/EQ).
Publikasi hasil penelitian yang dilakukan oleh Daniel Goleman (seorang psikolog) menggambarkan bahwa, kecerdasan emosial yaitu kesadaran dan kemampuan untuk menangani perasaan (emosi) ternyata lebih menentukan keberhasilan dan kebahagian seseorang daripada kecerdasan intelektual.
Dalam perkembangannya, temuan jenis “Q” ketiga, yakni kecerdasan spiritual (SQ) yang sering disebut Danah Zohar dan Ian Marshall ( ahli psikologi ) sebagai puncak kecerdasan ( ultimate intellgence). Jika IQ berdasarkan nalar, rasio intelektual, sementara EQ pada emosi maka SQ disandarkan pada jiwa-hati.
Kecerdasan spiritual (SQ) hanya berada pada prototipe manusia yang bersih secara spiritual, dilandasi jiwa yang damai dan tenang (annafsul-muthmainnah)yang bisa menjalin kontak spiritual dengan Rab (Tuhan)-nya.Dengan annafsul-muthmainnah,maka sifat kikir dan tamak berubah menjadi sifat rela berkorban.
Sifat tidak jujur,maksiat dan korup berubah menjadi sifat wajar dan penuh pengabdian.
Sifat pemarah, rihati mementingkan diri sendiri berganti menjadi sifat sabar, kasih sayang, toleransi dan menjunjung tinggi nilai-nilai kemanusiaan. Sifat sombong berubah menjadi sifat berbudi luhur.
Apabila kesadaran spiritual telah mencapai taraf demikian maka nafsu suci seseorang akan mendapatkan panggilan Allah, seperti termaktub dalam Q.S. Al Fajr 8 (27,28,29,30). “Hai jiwa yang tenang, Kembalilah pada Tuhanmu dengan hati yang puas lagi diridhai-Nya. Maka masuklah kedalam jamaah hamba-hamba-Ku dan masuklah kedalam surga-Ku”
An Nafsul-Muthmainnah yang telah dapat mengalahkan nafsul-ammarah, seperti dalam Q.S Yusuf 12 (53) dan nafsul-lawwamah Q.S.Al Qiyamah 75 (2) berarti jiwa yang tenang menerima segala kabar gembira (basyiran) ataupun kabar yang menakutkan (nadziran) yang telah mencapai makrifat dapat melaksanakan perintah ibadah puasa sebagaimana sabda Nabi Muhammad SAW. Manshaama romadhoona imanan waktisaban ghufiralahu mataqaddama mindambihi.
Selasa, 13 April 2010
Data Flow Diagram
Data Flow Diagram (DFD) adalah suatu diagram yang menggunakan notasi-notasi untuk menggambarkan arus dari data sistem, yang penggunaannya sangat membantu untuk memahami sistem secara logika, tersruktur dan jelas.
DFD merupakan alat bantu dalam menggambarkan atau menjelaskan sistem yang sedang berjalan logis.
[sunting] Latar belakang
Suatu yang lazim bahwa ketika menggambarkan sebuah sistem kontekstual data flow diagram yang akan pertama kali muncul adalah interaksi antara sistem dan entitas luar. DFD didisain untuk menunjukkan sebuah sistem yang terbagi-bagi menjadi suatu bagian sub-sistem yang lebih kecil adan untuk menggarisbawahi arus data antara kedua hal yang tersebut diatas. Diagram ini lalu “dikembangkan” untuk melihat lebih rinci sehingga dapat terlihat model-model yang terdapat di dalamnya.
http://infolab.stanford.edu/~ullman/fcdb/ito/er.gif
quequ
ueue (antrian) adalah barisan elemen yang apabila elemen ditambah maka
penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen
dilakukan di elemen paling depan (front). Oleh karena itu, queue bersifat FIFO (first in
first out).
Contoh :
Depan=1
Belakang=4
5
6
7
9
Operasi-operasi dasar dari sebuah queue adalah :
1. Enqueue : proses penambahan elemen di posisi belakang
2. Dequeue : proses pengambilan elemen di posisi depan
Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan
terhadap sebuah queue yaitu :
1. Operasi pemeriksaan queue kosong (fungsi kosong)
2. Operasi pemeriksaan queue penuh (fungsi penuh).
3. Operasi inisialisasi queue (fungsi inisialisasi)
Adapun presentasi queue dapat dilakukan dengan 2 cara yaitu :
1. Dengan menggunakan array statis
Operasi-operasi yang dapat dilakukan dalam queue yang menggunakan representasi
array statis adalah :
1.1. Pendeklarasian sebuah queue
Setiap queue memiliki elemen-elemen (field) berupa posisi depan, posisi
belakang, elemen antrian, dan maksimal elemennya.
Adapun pendeklarasian queue dalam bahasa C adalah :
#define maks 5
struct TQueue{
int depan,belakang;
int maks_queue;
int antrian[maks];
};
TQueue Q,Queue,Q2;//deklarasi variable bertipe TQueue
1.2. Inisialisasi Queue
Inisialisasi queue adalah proses pemberian nilai 0 untuk field depan dan
belakang dari queue dan juga pemberian nilai maks ke maks_queue yang
menunjukan banyaknya maksimal data dalam queue.
Karena dalam bahasa C elemen sebuah array dimulai dengan 0 maka proses
inisialisasi nilai depan dan belakang bukan 0 tetapi -1 sehingga ketika ada proses
penambahan elemen (enqueue) akan bernilai 0 sehingga elemen tersebut akan
disimpan dalam elemen antrian pada posisi 0.
Implementasi fungsi inisialisasi queue dalam bahasa C adalah
void inisialisasi(TQueue *Q)
{
Q->maks_queue=maks;
Q->depan=-1;
Q->belakang=-1;
}
Cara pemanggilannya adalah :
Inisialisasi(&Q);
penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen
dilakukan di elemen paling depan (front). Oleh karena itu, queue bersifat FIFO (first in
first out).
Contoh :
Depan=1
Belakang=4
5
6
7
9
Operasi-operasi dasar dari sebuah queue adalah :
1. Enqueue : proses penambahan elemen di posisi belakang
2. Dequeue : proses pengambilan elemen di posisi depan
Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan
terhadap sebuah queue yaitu :
1. Operasi pemeriksaan queue kosong (fungsi kosong)
2. Operasi pemeriksaan queue penuh (fungsi penuh).
3. Operasi inisialisasi queue (fungsi inisialisasi)
Adapun presentasi queue dapat dilakukan dengan 2 cara yaitu :
1. Dengan menggunakan array statis
Operasi-operasi yang dapat dilakukan dalam queue yang menggunakan representasi
array statis adalah :
1.1. Pendeklarasian sebuah queue
Setiap queue memiliki elemen-elemen (field) berupa posisi depan, posisi
belakang, elemen antrian, dan maksimal elemennya.
Adapun pendeklarasian queue dalam bahasa C adalah :
#define maks 5
struct TQueue{
int depan,belakang;
int maks_queue;
int antrian[maks];
};
TQueue Q,Queue,Q2;//deklarasi variable bertipe TQueue
1.2. Inisialisasi Queue
Inisialisasi queue adalah proses pemberian nilai 0 untuk field depan dan
belakang dari queue dan juga pemberian nilai maks ke maks_queue yang
menunjukan banyaknya maksimal data dalam queue.
Karena dalam bahasa C elemen sebuah array dimulai dengan 0 maka proses
inisialisasi nilai depan dan belakang bukan 0 tetapi -1 sehingga ketika ada proses
penambahan elemen (enqueue) akan bernilai 0 sehingga elemen tersebut akan
disimpan dalam elemen antrian pada posisi 0.
Implementasi fungsi inisialisasi queue dalam bahasa C adalah
void inisialisasi(TQueue *Q)
{
Q->maks_queue=maks;
Q->depan=-1;
Q->belakang=-1;
}
Cara pemanggilannya adalah :
Inisialisasi(&Q);
Array berdimensi banyak
ARRAY BERDIMENSI DUA
Array berdimensi satu dapat disimpan pada sebuah array berdimensi dua.
Pendeklarasian array berdimensi dua adalah sebagai berikut :
int data_lulus[4][3];
Nilai 4 untuk menyatakan banyaknya baris dan 3 menyatakan banyaknya kolom. Gambar
10.1 memberikan ilustrasi untuk memudahkan pemahaman tentang array berdimensi dua.
80 540 1032
15 83 301
8 12 15
10 129 257
int data_lulus[4][3];
Gambar 10.1 Array berdimensi dua
Sama halnya pada array berdimensi satu, data array aka ditempatkan pada memori
yang berurutan. Perhatikan Gambar 10.2.
80 540 1032 15 83 301 80
Gambar 10.2 Model penyimpanan array dimensi dua pada memori
0 1 2
0
1
2
3
indeks kedua
(kolom)
indeks pertama
(baris)
Mengakses Elemen Array Berdimensi Dua
Array seperti data_lulus dapat diakses dalam bentuk data_lulus[indeks pertama, indeks
kedua] :
(1) data_lulus[0][1] = 540;
merupakan instruksi untuk memberikan nilai 540 ke array data_lulus untuk indeks
pertama = 0 dan indeks kedua bernilai 1.
(2) printf(“%d”,data_lulus[2][0]);
merupakan perintah untuk menampilkan elemen yang memiliki indeks pertama = 2 dan
indeks kedua = 0.
Perhatikan contoh potongan program di bawah ini.
/* Memberikan data ke array */
data_lulus[0][0] = 80;
data_lulus[0][1] = 540;
data_lulus[0][2] = 1032;
INT HURUF_A[8][8] = {
{ 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0 }
};
atau bisa juga ditulis sebagai berikut :
int huruf_A[8][8] =
{ 0, 1, 1, 1, 1, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0};
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF9_8_Q10rW_0Ys4sjHWgyLUm18kaKpG5Tiw2iv_jEbr-bHXSWLhFk6svCjYkCvq4CLssvKN2vhBZufB1ABsDfCjzlrs2R8SPjSmfo_iccJaxLbdbfK_UMBRtoHFqiLhcVrobgwJBqWUw/s400/array5.jpg
Array berdimensi satu dapat disimpan pada sebuah array berdimensi dua.
Pendeklarasian array berdimensi dua adalah sebagai berikut :
int data_lulus[4][3];
Nilai 4 untuk menyatakan banyaknya baris dan 3 menyatakan banyaknya kolom. Gambar
10.1 memberikan ilustrasi untuk memudahkan pemahaman tentang array berdimensi dua.
80 540 1032
15 83 301
8 12 15
10 129 257
int data_lulus[4][3];
Gambar 10.1 Array berdimensi dua
Sama halnya pada array berdimensi satu, data array aka ditempatkan pada memori
yang berurutan. Perhatikan Gambar 10.2.
80 540 1032 15 83 301 80
Gambar 10.2 Model penyimpanan array dimensi dua pada memori
0 1 2
0
1
2
3
indeks kedua
(kolom)
indeks pertama
(baris)
Mengakses Elemen Array Berdimensi Dua
Array seperti data_lulus dapat diakses dalam bentuk data_lulus[indeks pertama, indeks
kedua] :
(1) data_lulus[0][1] = 540;
merupakan instruksi untuk memberikan nilai 540 ke array data_lulus untuk indeks
pertama = 0 dan indeks kedua bernilai 1.
(2) printf(“%d”,data_lulus[2][0]);
merupakan perintah untuk menampilkan elemen yang memiliki indeks pertama = 2 dan
indeks kedua = 0.
Perhatikan contoh potongan program di bawah ini.
/* Memberikan data ke array */
data_lulus[0][0] = 80;
data_lulus[0][1] = 540;
data_lulus[0][2] = 1032;
INT HURUF_A[8][8] = {
{ 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0 }
};
atau bisa juga ditulis sebagai berikut :
int huruf_A[8][8] =
{ 0, 1, 1, 1, 1, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0};
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF9_8_Q10rW_0Ys4sjHWgyLUm18kaKpG5Tiw2iv_jEbr-bHXSWLhFk6svCjYkCvq4CLssvKN2vhBZufB1ABsDfCjzlrs2R8SPjSmfo_iccJaxLbdbfK_UMBRtoHFqiLhcVrobgwJBqWUw/s400/array5.jpg
Senin, 12 April 2010
Contoh penerapan stack dalam kehidupan sehari – hari
Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan buku, ketika mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu persatu dari buku yang paling atas dari tumpukan buku tersebut.
Beberapa contoh ilustrasi yang dapat menggambarkan tumpukan dan cara beroperasinya adalah tumpukan sate, tumpukan Compact Disk (CD), dan lain-lain. Sate misalnya, si pembuat sate menusukan (memasukan) daging sate ke tusukan satu per satu dari ujung tusukan (ujung yang runcing) menuju/mendekati batas pangkal, jika telah dimasak, maka si pemakan sate akan mengeluarkan (memakan) sate satu persatu dari ujung (yang akhir-akhir dimasukan si pembuat, itulah yang awal-awal dimakan). Demikian juga dengan tumpukan CD, orang akan mengambil CD dari tumpukan teratas yang mana merupakan yang terakhir dimasukan di dalam tumpukan.
Fungsi dalam Stack:
* Fungsi init: fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang masih kosong.
* Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
* Fungsi empty: digunakan untuk mengetahui stack kosong atau tidak.
* Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap kosong apabila puncak stack berada pada posisi -1.
* Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam Linked List menggunakan method addLast
* Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada posisi nilai top dan menurunkan nilai top. Jika dalam Linked List menggunakan method removeLast
Possibly related posts: (automatically generated)
* Ada 2 operasi dasar yang didefinisikan pada stack,
* Definisi B-Tree dalam Struktur data
* INTEGRASI SISTEM INFORMASI
* Burung Berkicau
This entry was posted on March 25, 2010 at 1:32 am and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Beberapa contoh ilustrasi yang dapat menggambarkan tumpukan dan cara beroperasinya adalah tumpukan sate, tumpukan Compact Disk (CD), dan lain-lain. Sate misalnya, si pembuat sate menusukan (memasukan) daging sate ke tusukan satu per satu dari ujung tusukan (ujung yang runcing) menuju/mendekati batas pangkal, jika telah dimasak, maka si pemakan sate akan mengeluarkan (memakan) sate satu persatu dari ujung (yang akhir-akhir dimasukan si pembuat, itulah yang awal-awal dimakan). Demikian juga dengan tumpukan CD, orang akan mengambil CD dari tumpukan teratas yang mana merupakan yang terakhir dimasukan di dalam tumpukan.
Fungsi dalam Stack:
* Fungsi init: fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang masih kosong.
* Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
* Fungsi empty: digunakan untuk mengetahui stack kosong atau tidak.
* Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap kosong apabila puncak stack berada pada posisi -1.
* Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam Linked List menggunakan method addLast
* Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada posisi nilai top dan menurunkan nilai top. Jika dalam Linked List menggunakan method removeLast
Possibly related posts: (automatically generated)
* Ada 2 operasi dasar yang didefinisikan pada stack,
* Definisi B-Tree dalam Struktur data
* INTEGRASI SISTEM INFORMASI
* Burung Berkicau
This entry was posted on March 25, 2010 at 1:32 am and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Antrian dalam Struktur data
Queue (Antrian) adalah list linier yang :
1. Elemen yang pertama kali masuk antrian akan keluar pertama kalinya
2. Dikenali elemen pertama (Front) dan elemen terakhirnya (Tail)
3. Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai berikut :
a) Penyisipan selalu dilakukan setelah elemen terakhir
b) Penghapusan selalu dilakukan pada elemen pertama
4. Satu elemen dengan elemen lain dapat diakses melalui informasi Next
5. Antrian dapat dibuat dengan menggunakan: Linier Array dan Circular Array
Front dan tail selalu bergerak maju/naik sehingga
1. Bila tail telah mencapai elemen terakhir array, antrian dianggap penuh walau sebenarnya mungkin elemen-elemen awal antrian telah dihapus (dikosongkan).
2. Bila front dan tail mencapai nilai yang sama berarti antrian dalam keadaan kosong maka front dan tail dapat diinisialisasi kembali ke kondisi semula.
Deklarasi queue menggunakan singly linked list:
Type
TData=…;
TKey= …;
PNode=^Node;
Node=record
Key:TKey;
Data:TData;
Next:PNode;
End;
Queue=record
Count:integer;
Front,tail:PNode;
End;
Opersi-operasi di QUEUE
1. InitQ(Q)menciptakan Qdengan queue kosong
Procedure InitQ(var Q:Queue);
Begin
Q.count:=0;
Q.front:=nil;
Q.tail:=nilai;
End;
2. AddQ(Q,x) menambah elemen x ke rear queue
Procedure AddQ(var Q:Queue; p:PNode);
{sama dengan insert last, yang elemen last-nya disimpan}
Begin
Q.tail^.next:=p;
Q.tail:=p;
If Q,front=nil then q.front:=Q.tail; {elemen pertama dan satu-satunya dari queue}
Q.count:=Q.count+1;
End;
3. RemoveQ(Q,x) menghilangkan elemen pada front dari queue Q
Procedure removeQ(var Q:Queue; var k:TKey; d:TData);
{sama dengan delete first}
Var p:PNode;
Begin
If (Q.frontNil) then
Begin
P:=Q.Front;
Q.front:=Q.front^.Next;
If Q.front=nil then Q.tail:=nil; {elemen satu2nya dihapus}
K:=p^.key;
D:=p^.data;
Q.Count:=Q.count-1;
Dispose(p);
End;
End;
4. Front(Q) mengirim elemen front dari queue
Function frontQ (Q:queue):listPtr;
Begin
FrontQ:=Q.front;
End;
5. IsEmptyQ(Q) yang mengembalikan true if Q kosong else false
Function isEmpityQ(Q:queue):Boolean;
Begin
isEmptyQ:=(S.front=nil);
end;
6. HowManyIn(Q) mengirimkan jumlah elemen di Queue
Function howManyInQ(Q:queue):integer;
Begin
howManyInQ:=Q.count;
End;
Possibly related posts: (automatically generated)
* PENGERTIAN SISTEM 1. DEFINISI SISTEM
* antrian / queue
* Antrian (QUEUE)
* CONTOH ANTRIAN
This entry was posted on March 11, 2010 at 1:41 am and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
1. Elemen yang pertama kali masuk antrian akan keluar pertama kalinya
2. Dikenali elemen pertama (Front) dan elemen terakhirnya (Tail)
3. Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai berikut :
a) Penyisipan selalu dilakukan setelah elemen terakhir
b) Penghapusan selalu dilakukan pada elemen pertama
4. Satu elemen dengan elemen lain dapat diakses melalui informasi Next
5. Antrian dapat dibuat dengan menggunakan: Linier Array dan Circular Array
Front dan tail selalu bergerak maju/naik sehingga
1. Bila tail telah mencapai elemen terakhir array, antrian dianggap penuh walau sebenarnya mungkin elemen-elemen awal antrian telah dihapus (dikosongkan).
2. Bila front dan tail mencapai nilai yang sama berarti antrian dalam keadaan kosong maka front dan tail dapat diinisialisasi kembali ke kondisi semula.
Deklarasi queue menggunakan singly linked list:
Type
TData=…;
TKey= …;
PNode=^Node;
Node=record
Key:TKey;
Data:TData;
Next:PNode;
End;
Queue=record
Count:integer;
Front,tail:PNode;
End;
Opersi-operasi di QUEUE
1. InitQ(Q)menciptakan Qdengan queue kosong
Procedure InitQ(var Q:Queue);
Begin
Q.count:=0;
Q.front:=nil;
Q.tail:=nilai;
End;
2. AddQ(Q,x) menambah elemen x ke rear queue
Procedure AddQ(var Q:Queue; p:PNode);
{sama dengan insert last, yang elemen last-nya disimpan}
Begin
Q.tail^.next:=p;
Q.tail:=p;
If Q,front=nil then q.front:=Q.tail; {elemen pertama dan satu-satunya dari queue}
Q.count:=Q.count+1;
End;
3. RemoveQ(Q,x) menghilangkan elemen pada front dari queue Q
Procedure removeQ(var Q:Queue; var k:TKey; d:TData);
{sama dengan delete first}
Var p:PNode;
Begin
If (Q.frontNil) then
Begin
P:=Q.Front;
Q.front:=Q.front^.Next;
If Q.front=nil then Q.tail:=nil; {elemen satu2nya dihapus}
K:=p^.key;
D:=p^.data;
Q.Count:=Q.count-1;
Dispose(p);
End;
End;
4. Front(Q) mengirim elemen front dari queue
Function frontQ (Q:queue):listPtr;
Begin
FrontQ:=Q.front;
End;
5. IsEmptyQ(Q) yang mengembalikan true if Q kosong else false
Function isEmpityQ(Q:queue):Boolean;
Begin
isEmptyQ:=(S.front=nil);
end;
6. HowManyIn(Q) mengirimkan jumlah elemen di Queue
Function howManyInQ(Q:queue):integer;
Begin
howManyInQ:=Q.count;
End;
Possibly related posts: (automatically generated)
* PENGERTIAN SISTEM 1. DEFINISI SISTEM
* antrian / queue
* Antrian (QUEUE)
* CONTOH ANTRIAN
This entry was posted on March 11, 2010 at 1:41 am and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Kamis, 08 April 2010
Komponen Sistem Informasi
Sistem informasi merupakan sebuah susunan yang terdiri dari beberapa komponen seperti orang, aktivitas, data, perangkat keras, perangkat lunak, dan jaringan yang terintegrasi yang berfungsi untuk mendukung dan meningkatkan operasi sehari-hari sebuah bisnis, juga menyediakan kebutuhan informasi untuk pemecahan masalah dan pengambilan keputusan oleh manajer.
1. Orang (People)
Semua pihak yang bertanggung jawab dalam hal penyokong atau sponsor sistem informasi (system owner), pengguna sistem (system users), perancang sistem (system designer) dan pengembang sistem informasi (sistem development).
2. Aktivitas
Sekumpulan aturan atau tahapan-tahapan untuk membuat, memakai, memproses dan mengolah sistem informasi ataupun hasil keluaran dari sistem informasi tersebut.
3. Data
Secara konseptual, data adalah deskripsi tentang benda, kejadian, aktivitas, dan transaksi yang tidak mempunyai makna dan tidak berpengaruh langsung secara langsung kepada pemakainya atau disebut juga sebagai sekumpulan fakta mentah dalam isolasi.
4. Perangkat Keras (hardware)
Mencakup piranti-piranti fisik seperti komputer, printer, monitor, harddisk, DLL.
5. Perangkat Lunak (sotfware)
Sekumpulan instruksi-instruksi atau perintah-perintah yang memungkinkan perangkat keras bisa digunakan untuk memproses data, atau sering disebut sebagai program.
6. Jaringan (network)
Sistem penghubung yang memungkinkan suatu sumber dipakai secara bersama-sama, baik pada waktu dan tempat bersamaan ataupun berbeda
1. Orang (People)
Semua pihak yang bertanggung jawab dalam hal penyokong atau sponsor sistem informasi (system owner), pengguna sistem (system users), perancang sistem (system designer) dan pengembang sistem informasi (sistem development).
2. Aktivitas
Sekumpulan aturan atau tahapan-tahapan untuk membuat, memakai, memproses dan mengolah sistem informasi ataupun hasil keluaran dari sistem informasi tersebut.
3. Data
Secara konseptual, data adalah deskripsi tentang benda, kejadian, aktivitas, dan transaksi yang tidak mempunyai makna dan tidak berpengaruh langsung secara langsung kepada pemakainya atau disebut juga sebagai sekumpulan fakta mentah dalam isolasi.
4. Perangkat Keras (hardware)
Mencakup piranti-piranti fisik seperti komputer, printer, monitor, harddisk, DLL.
5. Perangkat Lunak (sotfware)
Sekumpulan instruksi-instruksi atau perintah-perintah yang memungkinkan perangkat keras bisa digunakan untuk memproses data, atau sering disebut sebagai program.
6. Jaringan (network)
Sistem penghubung yang memungkinkan suatu sumber dipakai secara bersama-sama, baik pada waktu dan tempat bersamaan ataupun berbeda
stack
a. Definisi Stack
STACK ( tumpukan ) merupakan struktur data yang seolah – oleh terlihat seperti data yang terusun secara tumpuk dimana ada data yang terletak diatas data yang lainnya .
b. Stack dengan Array
Stack menggunakan array pengambil / penghapusan dielemen dalam stack yang dilaukan dengan memulainya dari elemen teratas
c. Double Stack dengan Array
Merupakan metode khusus yang dikembangkan untuk menghemat pemakaian memori dalam pembuatan dua stack dengan array . intinya adalah penggunaan hanya sebuah array untuk menampung dua buah stack.
d. Stack dengan Single Linked List
Menggunakan Single Lingked List dalam pembuatan stack mempunyai keunggulan dibandingkan dengan array yaitu dapat digunakan alokasi memori yang dinamis sehingga menhindari pemborosan memori.(http://sad1n1Rom. .blogspot.com/)
Metode untuk menyimpan pohon biner
Pohon biner dapat dikonstruksi dari bahasa pemrograman primitif dalam berbagai cara. Dalam bahasa yang menggunakan records dan referensi, pohon biner secara khas dikonstruksi dengan mengambil sebuah struktur simpul pohon yang memuat beberapa data dan referensi ke anak kiri dan anak kanan. Kadang-kadang itu juga memuat sebuah referensi ke ayahnya yang khas. Jika sebuah simpul mempunyai kurang dari dua anak, beberapa penunjuk anak dapat diatur kedalam nilai nol khusus, atau ke sebuah simpul sentinel.
Pohon biner dapat juga disimpan sebagai struktur data implisit dalam array, dan jika pohon tersebut merupakan sebuah pohon biner lengkap, metode ini tidak boros tempat. Dalam penyusunan yang rapat ini, jika sebuah simpul memiliki indeks i, anaknya dapat ditemukan pada indeks ke-2i+1 dan 2i+2, meskipun ayahnya (jika ada) ditemukan pada indeks lantai((i-1)/2) (asumsikan akarnya memiliki indeks kosong). Metode ini menguntungkan dari banyak penyimpanan yang rapat dan memiliki referensi lokal yang lebih baik, tersitimewa selama sebuah preorder traversal. Bagaimanapun juga, ini terlalu mahal untuk perkembangannya dan boros tempat sebanding dengan 2h - n untuk sebuah pohon dengan tinggi h dengan nsimpul.
Sebuah pohon biner lengkap kecil disimpan dalam array
Dalam bahasa dengan tagged union seperti ML, sebuah simpul pohon seringkali sebuah tagged union dari dua jenis simpul, dimana yang satu merupakan data dari 3-tupel, anak kiri, dan anak kanan, dan yang lain dimana sebuah daun, yang tidak memuat data dan fungsi seperti nilai nol dalam bahasa dengan penunjuk (pointers)
Senin, 05 April 2010
Apakah Itu Fungsi Dan Pengertian Query ?
Jika anda telah membuat tabel-tabel dan telah memasukkan banyak data dalam tabel tersebut, suatu ketika Anda menginginkan untuk mengetahui/mencari data tertentu. Hal ini dapat anda lakukan dengan membuka tabel, menelusuri data satu per satu, lalu membuat tabel baru untuk menyimpannya.
Akan tetapi cara seperti ini sangat tidak efisien. Untuk kebutuhan tersebut, akan jauh lebih mudah jika anda menggunakan queryuntuk memenuhi permintaan data kita Pada dasarnya, query adalah merupakan bahasa untuk melakukan manipulasi terhadap database, yang telah distandarkan dan lebih dikenal dengan nama Structured Query Language (SQL). Query dibedakan menjadi 2, yaitu :
1. Untuk membuat/mendefinisikan obyek-obyek database seperti membuat tabel, relasi dan sebagainya. Biasanya disebut dengan Data Definition Language (DDL)
2. Untuk memanipulasi data, yang biasanya dikenal dengan Data Manipulation Language (DML). Manipulasi data bisa berupa:
a. Menambah, mengubah atau menghapus data.
b. Pengambilan informasi yang diperlukan dari database, yang mana datanya diambil dari tabel maupun dari query sebelumnya
Akan tetapi cara seperti ini sangat tidak efisien. Untuk kebutuhan tersebut, akan jauh lebih mudah jika anda menggunakan queryuntuk memenuhi permintaan data kita Pada dasarnya, query adalah merupakan bahasa untuk melakukan manipulasi terhadap database, yang telah distandarkan dan lebih dikenal dengan nama Structured Query Language (SQL). Query dibedakan menjadi 2, yaitu :
1. Untuk membuat/mendefinisikan obyek-obyek database seperti membuat tabel, relasi dan sebagainya. Biasanya disebut dengan Data Definition Language (DDL)
2. Untuk memanipulasi data, yang biasanya dikenal dengan Data Manipulation Language (DML). Manipulasi data bisa berupa:
a. Menambah, mengubah atau menghapus data.
b. Pengambilan informasi yang diperlukan dari database, yang mana datanya diambil dari tabel maupun dari query sebelumnya
SQL
Bentuk umum SQL:
SELECT [ALL|DISTINCT]
nama_kolom_kolom_tabel
[INTO nama_tabel]
[FROM nama_nama_tabel]
[WHERE predikat]
[GROUP BY ekspresi]
[ORDER BY nama+kolom_tabel]
SELECT [ALL|DISTINCT]
nama_kolom_kolom_tabel
[INTO nama_tabel]
[FROM nama_nama_tabel]
[WHERE predikat]
[GROUP BY ekspresi]
[ORDER BY nama+kolom_tabel]
struktur data
Telah diketahui bahwa secara fisik data dalam bentuk kumpulan bit dan direkam dengan basis track didalam media penyimpan eksternal. Dalam prakteknya, untuk kemudahan dalam mengakses data, data disusun dalam suatu struktur logis yang menjelaskan bahwa:
* 1. Kumpulan tabel menyusun basis data,
* 2. Tabel tersusun atas sejumlah record,
* 3. Sebuah record mengandung sejumlah field, dan
* 4. Sebuah field disimpan dalam bentuk kumpulan bit.
Pengertian masing-masing istilah diatas adalah seperti berikut:
a. Field (medan) menyatakan data terkecil yang memiliki makna. Istilah lain untuk field yaitu elemen data, kolom item, dan atribut. Contoh field yaitu nama seseorang, jumlah barang yang dibeli, dan tanggal lahir seseorang.
b. Record (rekaman) menyatakan kumpulan dari sejumlah elemen data yang saling terkait. Sebagai contoh, nama, alamat, tanggal lahir, dan jenis kelamin dari seseorang menyusun sebuah record. Istilah lain yang juga menyatakan record yaitu tupel dan baris.
c. Tabel menghimpun sejumlah record. Sebagai contoh, data pribadi dari semua pegawai disimpan dalam sebuah tabel.
d. Basis data (database) adalah suatu pengorganisasian sekumpulan data yang saling terkait sehingga memudahkan aktivitas untuk memperoleh informasi. Sebagai contoh, basis data akademis mengandung tabel-tabel yang berhubungan dengan data mahasiswa, data jurusan, data mata kuliah, data pengambilan mata kuliah pada suatu semester, dan nilai yang diperoleh mahasiswa.
* 1. Kumpulan tabel menyusun basis data,
* 2. Tabel tersusun atas sejumlah record,
* 3. Sebuah record mengandung sejumlah field, dan
* 4. Sebuah field disimpan dalam bentuk kumpulan bit.
Pengertian masing-masing istilah diatas adalah seperti berikut:
a. Field (medan) menyatakan data terkecil yang memiliki makna. Istilah lain untuk field yaitu elemen data, kolom item, dan atribut. Contoh field yaitu nama seseorang, jumlah barang yang dibeli, dan tanggal lahir seseorang.
b. Record (rekaman) menyatakan kumpulan dari sejumlah elemen data yang saling terkait. Sebagai contoh, nama, alamat, tanggal lahir, dan jenis kelamin dari seseorang menyusun sebuah record. Istilah lain yang juga menyatakan record yaitu tupel dan baris.
c. Tabel menghimpun sejumlah record. Sebagai contoh, data pribadi dari semua pegawai disimpan dalam sebuah tabel.
d. Basis data (database) adalah suatu pengorganisasian sekumpulan data yang saling terkait sehingga memudahkan aktivitas untuk memperoleh informasi. Sebagai contoh, basis data akademis mengandung tabel-tabel yang berhubungan dengan data mahasiswa, data jurusan, data mata kuliah, data pengambilan mata kuliah pada suatu semester, dan nilai yang diperoleh mahasiswa.
Selasa, 30 Maret 2010
Pengertian Data Dan Informasi
a. Data adalah deskripsi dari sesuatu dan kejadian yang kita hadapi
(data is the description of things and events that we face).
b. Data bisnis (business data) adalah deskripsi organisasi tentang sesuatu
(resources) dan kejadian (transactions) yang terjadi
(business data is an organization's description of things (resources)
and events (transactions) that it faces).
c. Data adalah kenyataan yang menggambarkan suatu kejadian-kejadian dan
kesatuan nyata. Kejadian (event) adalah sesuatu yang terjadi pada saat
tertentu. Sebagai contoh, dalam dunia bisnis kejadian-kejadian nyata
yang sering terjadi adalah perubahan dari suatu nilai yang disebut
dengan transaksi. Misalnya penjualan adalah transaksi perubahan nilai
barang menjadi nilai uang atau nilai piutang dagang. Kesatuan nyata
(fact and entity) adalah berupa suatu obyek nyata seperti tempat, benda
dan orang yang betul-betul ada dan terjadi.
Sumber dari informasi adalah data. Data merupakan bentuk jamak dari
bentuk tunggal data-item. Data merupakan bentuk yang belum dapat
memberikan manfaat yang besar bagi penerimanya, sehingga perlu suatu
model yang nantinya akan dikelompokkan dan diproses untuk menghasilkan
informasi.
(data is the description of things and events that we face).
b. Data bisnis (business data) adalah deskripsi organisasi tentang sesuatu
(resources) dan kejadian (transactions) yang terjadi
(business data is an organization's description of things (resources)
and events (transactions) that it faces).
c. Data adalah kenyataan yang menggambarkan suatu kejadian-kejadian dan
kesatuan nyata. Kejadian (event) adalah sesuatu yang terjadi pada saat
tertentu. Sebagai contoh, dalam dunia bisnis kejadian-kejadian nyata
yang sering terjadi adalah perubahan dari suatu nilai yang disebut
dengan transaksi. Misalnya penjualan adalah transaksi perubahan nilai
barang menjadi nilai uang atau nilai piutang dagang. Kesatuan nyata
(fact and entity) adalah berupa suatu obyek nyata seperti tempat, benda
dan orang yang betul-betul ada dan terjadi.
Sumber dari informasi adalah data. Data merupakan bentuk jamak dari
bentuk tunggal data-item. Data merupakan bentuk yang belum dapat
memberikan manfaat yang besar bagi penerimanya, sehingga perlu suatu
model yang nantinya akan dikelompokkan dan diproses untuk menghasilkan
informasi.
Keuntungan Fungsi
1. Dapat melakukan pendekatan top-down dan divide-and-conquer:
2. Top-down: penelusuran program mudah
3. Divide-and-conquer: program besar dapat dipisah menjadi program-program kecil.
4. Kode program menjadi lebih pendek, mudah dibaca, dan mudah dipahami
5. Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai dengan koordinasi yang mudah.
6. Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan sederhana Kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
7. Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan
8. Fungsi – fungsi menjadikan program mempunyai struktur yang jelas.
9. Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi – fungsi, maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah dimengerti.
10. Fungsi -fungsi digunakan untuk menghindari penulisan program yang sama yang ditulis secara berulang – ulang. Langkah – langkah tersebut dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah – langkah ini tidak perlu selalu menuliskannya, tidak cukup memanggil fungsi tersebut.
11. Mempermudah dokumentasi.
12. Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
2. Top-down: penelusuran program mudah
3. Divide-and-conquer: program besar dapat dipisah menjadi program-program kecil.
4. Kode program menjadi lebih pendek, mudah dibaca, dan mudah dipahami
5. Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai dengan koordinasi yang mudah.
6. Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan sederhana Kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
7. Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan
8. Fungsi – fungsi menjadikan program mempunyai struktur yang jelas.
9. Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi – fungsi, maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah dimengerti.
10. Fungsi -fungsi digunakan untuk menghindari penulisan program yang sama yang ditulis secara berulang – ulang. Langkah – langkah tersebut dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah – langkah ini tidak perlu selalu menuliskannya, tidak cukup memanggil fungsi tersebut.
11. Mempermudah dokumentasi.
12. Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
Modular programming pada C
Modular programming pada C
Bahasa C sangat mendukung modular programming . Sejak awal bahasa C sudah membagi program-programnya menjadi modul-modul (bagian-bagian). Modul pada bahasa C dikenal dengan nama fungsi (function). Bahasa C terdiri dari fungsi-fungsi, baik yang langsung dideklarasikan dalam program ataupun dipisah di dalam header file. Fungsi yang selalu ada pada program C adalah fungsi main
Function
Fungsi/function adalah suatu kumpulan instruksi/perintah/program yang dikelompokkan menjadi satu, letaknya terpisah dari program yang menggunakan fungsi tersebut, memiliki nama tertentu yang unik, dan digunakan untuk mengerjakan suatu tujuan tertentu. Dalam bahasa pemrograman lain fungsi dapat disebut sebagai subrutin (basic, VB) atau procedure (pascal, Delphi)
Bahasa C sangat mendukung modular programming . Sejak awal bahasa C sudah membagi program-programnya menjadi modul-modul (bagian-bagian). Modul pada bahasa C dikenal dengan nama fungsi (function). Bahasa C terdiri dari fungsi-fungsi, baik yang langsung dideklarasikan dalam program ataupun dipisah di dalam header file. Fungsi yang selalu ada pada program C adalah fungsi main
Function
Fungsi/function adalah suatu kumpulan instruksi/perintah/program yang dikelompokkan menjadi satu, letaknya terpisah dari program yang menggunakan fungsi tersebut, memiliki nama tertentu yang unik, dan digunakan untuk mengerjakan suatu tujuan tertentu. Dalam bahasa pemrograman lain fungsi dapat disebut sebagai subrutin (basic, VB) atau procedure (pascal, Delphi)
Rabu, 24 Maret 2010
Kelebihan C++
C++ itu kan pada dasarnya bahasa C juga, nah kemampuan C yang utama itu adalah seperti :
Ø mampu mengakses komponen hardware komputer dengan syntax yang lebih manusiawi dibanding Assembly bahasa Standard-nya.
Ø ANSI bisa dipakai diberbagai platform
Ø kecepatan program jika dibanding dengan program yang sama buatan bahasa lain, relatif lebih cepat…
Naaah,,,,,
kelebihan C++ mencakup semua kelebihan C namun dengan tambahan seperti misalnya yang utama penanganan kompleksitas dengan OOP
Ø mampu mengakses komponen hardware komputer dengan syntax yang lebih manusiawi dibanding Assembly bahasa Standard-nya.
Ø ANSI bisa dipakai diberbagai platform
Ø kecepatan program jika dibanding dengan program yang sama buatan bahasa lain, relatif lebih cepat…
Naaah,,,,,
kelebihan C++ mencakup semua kelebihan C namun dengan tambahan seperti misalnya yang utama penanganan kompleksitas dengan OOP
Kekurangan C++
Salah satu kelemahan C++ adalah kurangnya library built in, sehingga untuk proses-proses tertentu kita harus membuat sebuah program nearly built from scratch, atau dari dasar sekali. Terlebih lagi bahasa C++ dewasa ini kurang begitu popular karena kita masih memikirkan pemrograman dari sisi mesin ketimbang memikirkan probis (proses bisnis) yang seharusnya menjadi tujuan kita.
macam – macam bahasa pemprograman
1. Bahasa Pemrograman PERL
Perl adalah bahasa pemrograman untuk mesin dengan sistem operasi Unix (SunOS, Linux, BSD, HP-UX), juga tersedia untuk sistem operasi seperti DOS, Windows, PowerPC, BeOS, VMS, EBCDIC, dan PocketPC.
PERL merupakan bahasa pemograman yang mirip bahasa pemograman C.
2. Bahasa Pemrograman CFM
Cfm dibuat menggunakan tag ColdFusion dengan software Adobe ColdFusion / BlueDragon / Coldfusion Studio.
Syntax coldfusion berbasis html.
3. Bahasa Pemrograman Javascript
Javascript adalah bahasa scripting yang handal yang berjalan pada sisi client.
JavaScript merupakan sebuah bahasa scripting yang dikembangkan oleh Netscape.
Untuk menjalankan script yang ditulis dengan JavaScript kita membutuhkan JavaScript-enabled browser yaitu browser yang mampu menjalankan JavaScript.
4. Bahasa Pemrograman CSS
Cascading Style Sheets (CSS) adalah suatu bahasa stylesheet yang digunakan untuk mengatur tampilan suatu dokumen yang ditulis dalam bahasa markup.
Penggunaan yang paling umum dari CSS adalah untuk memformat halaman web yang ditulis dengan HTML dan XHTML.
Walaupun demikian, bahasanya sendiri dapat dipergunakan untuk semua jenis dokumen XML termasuk SVG dan XUL.
Spesifikasi CSS diatur oleh World Wide Web Consortium (W3C).
Perl adalah bahasa pemrograman untuk mesin dengan sistem operasi Unix (SunOS, Linux, BSD, HP-UX), juga tersedia untuk sistem operasi seperti DOS, Windows, PowerPC, BeOS, VMS, EBCDIC, dan PocketPC.
PERL merupakan bahasa pemograman yang mirip bahasa pemograman C.
2. Bahasa Pemrograman CFM
Cfm dibuat menggunakan tag ColdFusion dengan software Adobe ColdFusion / BlueDragon / Coldfusion Studio.
Syntax coldfusion berbasis html.
3. Bahasa Pemrograman Javascript
Javascript adalah bahasa scripting yang handal yang berjalan pada sisi client.
JavaScript merupakan sebuah bahasa scripting yang dikembangkan oleh Netscape.
Untuk menjalankan script yang ditulis dengan JavaScript kita membutuhkan JavaScript-enabled browser yaitu browser yang mampu menjalankan JavaScript.
4. Bahasa Pemrograman CSS
Cascading Style Sheets (CSS) adalah suatu bahasa stylesheet yang digunakan untuk mengatur tampilan suatu dokumen yang ditulis dalam bahasa markup.
Penggunaan yang paling umum dari CSS adalah untuk memformat halaman web yang ditulis dengan HTML dan XHTML.
Walaupun demikian, bahasanya sendiri dapat dipergunakan untuk semua jenis dokumen XML termasuk SVG dan XUL.
Spesifikasi CSS diatur oleh World Wide Web Consortium (W3C).
Senin, 22 Maret 2010
CHARACTER
Character merupakan type data primitif yang merepresentasikan suatu nilai / data dalam format huruf alphabetic, numerik, dan symbolik, spasi, dan bentuk – bentuk yang telah terdaftar dalam ASCII (American Standard Code for Information Interchange). Type data character itu sendiri memunyai 2 ragam type data lagi; signed char / char dan unsigned char.
Perbedaannya adalah :
Type data byte range
signed char 1 -128 -> +127
unsigned char 1 0 -> +255
Dalam bahasa pemrograman C
Dalam pemrograman C, type data character dikenal sebagai type data char. Cara pengaksesannya adalah sebagai berikut :
char x = ‘f’;
scanf(“%c”,&x);
printf(“%c”,x);
Perbedaannya adalah :
Type data byte range
signed char 1 -128 -> +127
unsigned char 1 0 -> +255
Dalam bahasa pemrograman C
Dalam pemrograman C, type data character dikenal sebagai type data char. Cara pengaksesannya adalah sebagai berikut :
char x = ‘f’;
scanf(“%c”,&x);
printf(“%c”,x);
Mengisi Binary TREE
Setiap node dalam binary tree memiliki sebuah String yang harus dicetak. Peraturan yang harus
ditaati adalah sebagai berikut:
• Isi node root selalu dicetak pada baris pertama, dan dimulai pada awal baris.
• Setiap node yang isinya dicetak harus diikuti oleh isi subtree kirinya, lalu diikuti oleh isi subtree
kanannya. Isi node anak kiri dan anak kanan selalu dicetak dengan jarak indentasi 5 karakter ke
kanan dibandingkan parent-nya.
• Sebuah subtree kosong dinyatakan dengan mencetak string “[NULL]”.
• Harus ada tepat satu baris yang dilongkap antara setiap baris yang berisi isi node.
• Harus terbentuk garis yang menghubungkan sebuah node dengan kedua anak kiri dan kanannya
dengan menggunakan untaian karakter garis tegaklurus (‘|’), strip (‘-’), dan simbol plus (‘+’).
Agar lebih jelas, lihat contoh di bawah.
Sebagai contoh, perhatikan gambar binary tree berikut:
Program yang anda buat harus bisa mencetak isi tree ini sesuai dengan ketentuan-ketentuan di atas,
ditaati adalah sebagai berikut:
• Isi node root selalu dicetak pada baris pertama, dan dimulai pada awal baris.
• Setiap node yang isinya dicetak harus diikuti oleh isi subtree kirinya, lalu diikuti oleh isi subtree
kanannya. Isi node anak kiri dan anak kanan selalu dicetak dengan jarak indentasi 5 karakter ke
kanan dibandingkan parent-nya.
• Sebuah subtree kosong dinyatakan dengan mencetak string “[NULL]”.
• Harus ada tepat satu baris yang dilongkap antara setiap baris yang berisi isi node.
• Harus terbentuk garis yang menghubungkan sebuah node dengan kedua anak kiri dan kanannya
dengan menggunakan untaian karakter garis tegaklurus (‘|’), strip (‘-’), dan simbol plus (‘+’).
Agar lebih jelas, lihat contoh di bawah.
Sebagai contoh, perhatikan gambar binary tree berikut:
Program yang anda buat harus bisa mencetak isi tree ini sesuai dengan ketentuan-ketentuan di atas,
Fungsi algoritma
engan algoritma, kita dapat mengatasi masalah dari yang sederhana sampai yang kompleks sekalipun. Namun, seorang user harus mampu membuat suatu program dengan menggunakan bahasa yang difahami oleh komputer. Sebelum disajikan dalam bentuk bahasa pemrogaman, sebaiknya kita membuat diagram alir (Flow Chart) dan Pseudocode. Hal ini dimaksudkan agar dapat mempermudah kerja atau mempermudah dalam membuat program. Selain itu, algoritma dapat mengatasi masalah logika dan masalah matematika dengan cara berurutan, tetapi kadang-kadang algoritma tidak selalu berurutan, hal ini dikenal dengan proses percabangan.
C. Kriteria Program Algoritma dalam Bidang Komputer
Pada dasarnya, komputer adalah mesin digital, artinya komputer hanya bisa mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (biasanya dilambangkan dengan 0). Dengan kata lain, kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrogaman komputer. Bahasa pemrogaman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin. Karena bahasa mesin sangat susah, maka muncul ide untuk melambangkan untaian sandi 0 dan 1 dengan singkatan kata yang lebih mudah difahami manusia biasa disebut dengan mnemonic code. Bahasa pemrogaman yang menggunakan singkatan kata ini disebut bahasa assembly.
Program algoritma harus komplit, nyata, dan jelas. Meskipun tugas algoritma tidak menghasilkan solusi, tetapi proses harus berakhir hal ini disebut dengan semi algorithm (prosedur akan berjalan terus atau biasa disebut dengan perulangan). Intinya kita tidak boleh menambah masalah, akan tetapi kita harus mampu menyelesaikan masalah untuk mendapat hasil yang tepat. Adapun contoh algoritma seperti dalam menghitung luas lingkaran dari masukan berupa jari-jari lingkaran. Rumus lingkaran adalah L=?*R*R
Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:
1. Masukkan R
2. Pi ? 3,14
3. L ? Pi*R*R
4. Tulis L
Perhatikan tanda ? pada baris kedua dan ketiga. Tanda ini berarti nilai di sebelah kanan diberikan pada operan di sebelah kiri. Sebagai contoh, untuk baris kedua, nilai 3,14 diberikan pada variabel Pi. Berikutnya, nilai Pi*R*R diberikan pada variable L. Baris terakhir menuliskan luas lingkaran tersebut.
Seperti yang dikemukakan di atas, bahwa algoritma ada yang tidak berurutan dan biasa di sebut dengan pengulangan. Adapun contohnya yaitu dalam penghitungan rata-rata dari sekumpulan data yang dimasukkan pengguna.
Berikut ini adalah algoritma untuk menghitung rata-rata data yang dimasukkan pengguna:
1. Masukkan N
2. i?1
3. j?0
4. Selama (i<=N) kerjakan baris 4 sampai dengan 7 5. Masukkan dt 6. i?i+1 7. j?j+dt 8. Rata?j/N 9. Tulis rata Baris pertama meminta pengguna memasukkan N, yaitu jumlah data. Pada baris kedua, variabel I, yang berguna sebagai pencacah banyaknya data yang telah dimasukkan pegguna, bernilai 1. Pada baris ketiga, variabel j, yang digunakan untuk menyimpan hasil penjumlahan data, diberi nilai 0. Baris keempat memberikan perintah untuk mengulangi baris keempat sampai dengan baris ketujuh selama I kurang dari sama dengan N. Dengan kata lain, setelahi lebih besar dari N, baris kedelapan yang dijalankan. Baris kelima meminta masukkan data yang ke-i. Baris keenam menambah variabel I dengan 1. Perhatikan arti dari perintah i?i+1 adalah nilai i ditambah dengan 1 kemudian hasilnya disimpan pada variabel i kembali. Baris ketujuh menambah variabel j dengan data yang dimasukkan pengguna. Sebagaimana dijelaskan di atas, variabel j digunakan untuk menyimpan hasil penjumlahan semua data, jadi untuk setiap masukan data, nilai variabel j harus ditambah dengan dt. Baris kedelapan menghitung rata-rata dengan cara membagi hasil penjumlahan dengan banyaknya data. Baris terakhir menuliskan rata-rata tersebut. Tetapi banyak pemrogram yang sudah berpengalaman tidak pernah menuliskan algoritma di atas kertas lagi.. Artinya dia menuliskan algoritma itu di daalam kepalanya.
C. Kriteria Program Algoritma dalam Bidang Komputer
Pada dasarnya, komputer adalah mesin digital, artinya komputer hanya bisa mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (biasanya dilambangkan dengan 0). Dengan kata lain, kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrogaman komputer. Bahasa pemrogaman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin. Karena bahasa mesin sangat susah, maka muncul ide untuk melambangkan untaian sandi 0 dan 1 dengan singkatan kata yang lebih mudah difahami manusia biasa disebut dengan mnemonic code. Bahasa pemrogaman yang menggunakan singkatan kata ini disebut bahasa assembly.
Program algoritma harus komplit, nyata, dan jelas. Meskipun tugas algoritma tidak menghasilkan solusi, tetapi proses harus berakhir hal ini disebut dengan semi algorithm (prosedur akan berjalan terus atau biasa disebut dengan perulangan). Intinya kita tidak boleh menambah masalah, akan tetapi kita harus mampu menyelesaikan masalah untuk mendapat hasil yang tepat. Adapun contoh algoritma seperti dalam menghitung luas lingkaran dari masukan berupa jari-jari lingkaran. Rumus lingkaran adalah L=?*R*R
Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:
1. Masukkan R
2. Pi ? 3,14
3. L ? Pi*R*R
4. Tulis L
Perhatikan tanda ? pada baris kedua dan ketiga. Tanda ini berarti nilai di sebelah kanan diberikan pada operan di sebelah kiri. Sebagai contoh, untuk baris kedua, nilai 3,14 diberikan pada variabel Pi. Berikutnya, nilai Pi*R*R diberikan pada variable L. Baris terakhir menuliskan luas lingkaran tersebut.
Seperti yang dikemukakan di atas, bahwa algoritma ada yang tidak berurutan dan biasa di sebut dengan pengulangan. Adapun contohnya yaitu dalam penghitungan rata-rata dari sekumpulan data yang dimasukkan pengguna.
Berikut ini adalah algoritma untuk menghitung rata-rata data yang dimasukkan pengguna:
1. Masukkan N
2. i?1
3. j?0
4. Selama (i<=N) kerjakan baris 4 sampai dengan 7 5. Masukkan dt 6. i?i+1 7. j?j+dt 8. Rata?j/N 9. Tulis rata Baris pertama meminta pengguna memasukkan N, yaitu jumlah data. Pada baris kedua, variabel I, yang berguna sebagai pencacah banyaknya data yang telah dimasukkan pegguna, bernilai 1. Pada baris ketiga, variabel j, yang digunakan untuk menyimpan hasil penjumlahan data, diberi nilai 0. Baris keempat memberikan perintah untuk mengulangi baris keempat sampai dengan baris ketujuh selama I kurang dari sama dengan N. Dengan kata lain, setelahi lebih besar dari N, baris kedelapan yang dijalankan. Baris kelima meminta masukkan data yang ke-i. Baris keenam menambah variabel I dengan 1. Perhatikan arti dari perintah i?i+1 adalah nilai i ditambah dengan 1 kemudian hasilnya disimpan pada variabel i kembali. Baris ketujuh menambah variabel j dengan data yang dimasukkan pengguna. Sebagaimana dijelaskan di atas, variabel j digunakan untuk menyimpan hasil penjumlahan semua data, jadi untuk setiap masukan data, nilai variabel j harus ditambah dengan dt. Baris kedelapan menghitung rata-rata dengan cara membagi hasil penjumlahan dengan banyaknya data. Baris terakhir menuliskan rata-rata tersebut. Tetapi banyak pemrogram yang sudah berpengalaman tidak pernah menuliskan algoritma di atas kertas lagi.. Artinya dia menuliskan algoritma itu di daalam kepalanya.
Fungsi algoritma
engan algoritma, kita dapat mengatasi masalah dari yang sederhana sampai yang kompleks sekalipun. Namun, seorang user harus mampu membuat suatu program dengan menggunakan bahasa yang difahami oleh komputer. Sebelum disajikan dalam bentuk bahasa pemrogaman, sebaiknya kita membuat diagram alir (Flow Chart) dan Pseudocode. Hal ini dimaksudkan agar dapat mempermudah kerja atau mempermudah dalam membuat program. Selain itu, algoritma dapat mengatasi masalah logika dan masalah matematika dengan cara berurutan, tetapi kadang-kadang algoritma tidak selalu berurutan, hal ini dikenal dengan proses percabangan.
C. Kriteria Program Algoritma dalam Bidang Komputer
Pada dasarnya, komputer adalah mesin digital, artinya komputer hanya bisa mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (biasanya dilambangkan dengan 0). Dengan kata lain, kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrogaman komputer. Bahasa pemrogaman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin. Karena bahasa mesin sangat susah, maka muncul ide untuk melambangkan untaian sandi 0 dan 1 dengan singkatan kata yang lebih mudah difahami manusia biasa disebut dengan mnemonic code. Bahasa pemrogaman yang menggunakan singkatan kata ini disebut bahasa assembly.
Program algoritma harus komplit, nyata, dan jelas. Meskipun tugas algoritma tidak menghasilkan solusi, tetapi proses harus berakhir hal ini disebut dengan semi algorithm (prosedur akan berjalan terus atau biasa disebut dengan perulangan). Intinya kita tidak boleh menambah masalah, akan tetapi kita harus mampu menyelesaikan masalah untuk mendapat hasil yang tepat. Adapun contoh algoritma seperti dalam menghitung luas lingkaran dari masukan berupa jari-jari lingkaran. Rumus lingkaran adalah L=?*R*R
Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:
1. Masukkan R
2. Pi ? 3,14
3. L ? Pi*R*R
4. Tulis L
Perhatikan tanda ? pada baris kedua dan ketiga. Tanda ini berarti nilai di sebelah kanan diberikan pada operan di sebelah kiri. Sebagai contoh, untuk baris kedua, nilai 3,14 diberikan pada variabel Pi. Berikutnya, nilai Pi*R*R diberikan pada variable L. Baris terakhir menuliskan luas lingkaran tersebut.
Seperti yang dikemukakan di atas, bahwa algoritma ada yang tidak berurutan dan biasa di sebut dengan pengulangan. Adapun contohnya yaitu dalam penghitungan rata-rata dari sekumpulan data yang dimasukkan pengguna.
Berikut ini adalah algoritma untuk menghitung rata-rata data yang dimasukkan pengguna:
1. Masukkan N
2. i?1
3. j?0
4. Selama (i<=N) kerjakan baris 4 sampai dengan 7 5. Masukkan dt 6. i?i+1 7. j?j+dt 8. Rata?j/N 9. Tulis rata Baris pertama meminta pengguna memasukkan N, yaitu jumlah data. Pada baris kedua, variabel I, yang berguna sebagai pencacah banyaknya data yang telah dimasukkan pegguna, bernilai 1. Pada baris ketiga, variabel j, yang digunakan untuk menyimpan hasil penjumlahan data, diberi nilai 0. Baris keempat memberikan perintah untuk mengulangi baris keempat sampai dengan baris ketujuh selama I kurang dari sama dengan N. Dengan kata lain, setelahi lebih besar dari N, baris kedelapan yang dijalankan. Baris kelima meminta masukkan data yang ke-i. Baris keenam menambah variabel I dengan 1. Perhatikan arti dari perintah i?i+1 adalah nilai i ditambah dengan 1 kemudian hasilnya disimpan pada variabel i kembali. Baris ketujuh menambah variabel j dengan data yang dimasukkan pengguna. Sebagaimana dijelaskan di atas, variabel j digunakan untuk menyimpan hasil penjumlahan semua data, jadi untuk setiap masukan data, nilai variabel j harus ditambah dengan dt. Baris kedelapan menghitung rata-rata dengan cara membagi hasil penjumlahan dengan banyaknya data. Baris terakhir menuliskan rata-rata tersebut. Tetapi banyak pemrogram yang sudah berpengalaman tidak pernah menuliskan algoritma di atas kertas lagi.. Artinya dia menuliskan algoritma itu di daalam kepalanya.
C. Kriteria Program Algoritma dalam Bidang Komputer
Pada dasarnya, komputer adalah mesin digital, artinya komputer hanya bisa mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (biasanya dilambangkan dengan 0). Dengan kata lain, kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrogaman komputer. Bahasa pemrogaman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin. Karena bahasa mesin sangat susah, maka muncul ide untuk melambangkan untaian sandi 0 dan 1 dengan singkatan kata yang lebih mudah difahami manusia biasa disebut dengan mnemonic code. Bahasa pemrogaman yang menggunakan singkatan kata ini disebut bahasa assembly.
Program algoritma harus komplit, nyata, dan jelas. Meskipun tugas algoritma tidak menghasilkan solusi, tetapi proses harus berakhir hal ini disebut dengan semi algorithm (prosedur akan berjalan terus atau biasa disebut dengan perulangan). Intinya kita tidak boleh menambah masalah, akan tetapi kita harus mampu menyelesaikan masalah untuk mendapat hasil yang tepat. Adapun contoh algoritma seperti dalam menghitung luas lingkaran dari masukan berupa jari-jari lingkaran. Rumus lingkaran adalah L=?*R*R
Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:
1. Masukkan R
2. Pi ? 3,14
3. L ? Pi*R*R
4. Tulis L
Perhatikan tanda ? pada baris kedua dan ketiga. Tanda ini berarti nilai di sebelah kanan diberikan pada operan di sebelah kiri. Sebagai contoh, untuk baris kedua, nilai 3,14 diberikan pada variabel Pi. Berikutnya, nilai Pi*R*R diberikan pada variable L. Baris terakhir menuliskan luas lingkaran tersebut.
Seperti yang dikemukakan di atas, bahwa algoritma ada yang tidak berurutan dan biasa di sebut dengan pengulangan. Adapun contohnya yaitu dalam penghitungan rata-rata dari sekumpulan data yang dimasukkan pengguna.
Berikut ini adalah algoritma untuk menghitung rata-rata data yang dimasukkan pengguna:
1. Masukkan N
2. i?1
3. j?0
4. Selama (i<=N) kerjakan baris 4 sampai dengan 7 5. Masukkan dt 6. i?i+1 7. j?j+dt 8. Rata?j/N 9. Tulis rata Baris pertama meminta pengguna memasukkan N, yaitu jumlah data. Pada baris kedua, variabel I, yang berguna sebagai pencacah banyaknya data yang telah dimasukkan pegguna, bernilai 1. Pada baris ketiga, variabel j, yang digunakan untuk menyimpan hasil penjumlahan data, diberi nilai 0. Baris keempat memberikan perintah untuk mengulangi baris keempat sampai dengan baris ketujuh selama I kurang dari sama dengan N. Dengan kata lain, setelahi lebih besar dari N, baris kedelapan yang dijalankan. Baris kelima meminta masukkan data yang ke-i. Baris keenam menambah variabel I dengan 1. Perhatikan arti dari perintah i?i+1 adalah nilai i ditambah dengan 1 kemudian hasilnya disimpan pada variabel i kembali. Baris ketujuh menambah variabel j dengan data yang dimasukkan pengguna. Sebagaimana dijelaskan di atas, variabel j digunakan untuk menyimpan hasil penjumlahan semua data, jadi untuk setiap masukan data, nilai variabel j harus ditambah dengan dt. Baris kedelapan menghitung rata-rata dengan cara membagi hasil penjumlahan dengan banyaknya data. Baris terakhir menuliskan rata-rata tersebut. Tetapi banyak pemrogram yang sudah berpengalaman tidak pernah menuliskan algoritma di atas kertas lagi.. Artinya dia menuliskan algoritma itu di daalam kepalanya.
Algoritma Sorting
Algoritma adalah kumpulan langkah sistematis untukmemperoleh hasil yang diinginkan1. Sebelum sebuahalgoritma dijalankan, biasanya ada suatu kondisi awal(initial state)yang harus dipenuhi. Kemudian, langkah-langkah ini diproses hingga mencapai suatukondisi akhir (final state).Salah satu contoh dari algoritma adalah Sorting(pengurutan).
Definisi Sorting
Sorting didefinisikan sebagai pengurutan sejumlahdata berdasarkan nilai kunci tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar (ascending) atau sebaliknya (descending).Algoritma Sorting termasuk salah satu contoh yangkaya akan solusi. Dalam makalah ini, hanya akandibahas lima algoritma sorting yang populer dipakai didunia informatika. Lima algoritma tersebut adalah:
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Merge Sort, dan
5. Quick Sort.
Bubble Sort
Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah seperti“gelembung air” untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal(proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan “pesanan”,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untukmengoperasikan elemennya.
Algoritma Bubble Sort
Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1,TN, maka:
1. Lakukan traversal untuk membandingkan
dua elemen berdekatan. Traversal ini
dilakukan dari belakang.
2. Jika elemen pada TN-1 > TN , maka lakukan
pertukaran (swap). Jika tidak, lanjutkan ke
proses traversal berikutnya sampai bertemu
dengan bagian struktur data yang telah
diurutkan.
3. Ulangi langkah di atas untuk struktur data
yang tersisa.
Selection Sort
Algoritma sorting sederhana yang lain adalahSelection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.
Algoritma Selection Sort
Algoritma selection sort dapat dirangkum sebagaiberikut:
1 Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka temukan nilai yang paling maksimum.
2 Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang belum diurutkan.
3. Ulangi langkah di atas untuk bagian struktur datayang tersisa.
Insertion Sort
Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yangtelah di-sorting dan bagian yang belum
Algoritma Insertion Sort
Algoritma Insertion Sort dapat dirangkum sebagai berikut:
1. Simpan nilai Ti kedalam variabel sementara, dengan i = 1.
2. Bandingkan nilainya dengan elemen sebelumnya.
3. Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1).
4. Lakukan terus poin ke-tiga, sampai Ti-1 ≤ Ti.
5. Jika Ti-1 ≤ Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya.
6. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu).
Merge Sort
Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebihberarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelumkemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut,
1. Sebuah list yang kecil membutuhkan langkahyang lebih sedikit untuk pengurutan daripadasebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yanglebih sedikit daripada membentuk sebuah listterurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali traversal untukmasing-masing list jika keduanya sudahterurut.
Algoritma Merge Sort
Algoritma Merge Sort sederhananya, dapat ditulis berikut:
1. Bagi list yang tak terurut menjadi dua samapanjang atau salah satunya lebih panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.
Quick Sort
Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer.
Algoritma Quick Sort
Algoritma ini terdiri dari 4 langkah utama:
1. Jika struktur data terdiri dari 1 atau 0 elemenyang harus diurutkan, kembalikan strukturdata itu apa adanya.
2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros). (Biasanyaelemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian – satudengan elemen-elemen yang lebih besar
daripada pivot point, dan yang lainnya denganelemen-elemen yang lebih kecil dari pada pivot point.
4. Ulangi algoritma secara rekursif terhadapkedua paruh struktur data.
KESIMPULAN
Algoritma yang mudah dalam hal implementasi adalahBubble Sort, Selection Sort, dan Insertion Sort.Ketiganya memiliki kompleksitas O(n2). Di antaraalgoritma ini, yang paling effisien adalah InsertionSort. Algoritma yang lebih mangkus adalah MergeSort dan Quick Sort dengan kompleksitasnya adalah O(n log n). Adapun yang paling mangkus dari limaalgoritma ini adalah Quick Sort.
Definisi Sorting
Sorting didefinisikan sebagai pengurutan sejumlahdata berdasarkan nilai kunci tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar (ascending) atau sebaliknya (descending).Algoritma Sorting termasuk salah satu contoh yangkaya akan solusi. Dalam makalah ini, hanya akandibahas lima algoritma sorting yang populer dipakai didunia informatika. Lima algoritma tersebut adalah:
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Merge Sort, dan
5. Quick Sort.
Bubble Sort
Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah seperti“gelembung air” untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal(proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan “pesanan”,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untukmengoperasikan elemennya.
Algoritma Bubble Sort
Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1,TN, maka:
1. Lakukan traversal untuk membandingkan
dua elemen berdekatan. Traversal ini
dilakukan dari belakang.
2. Jika elemen pada TN-1 > TN , maka lakukan
pertukaran (swap). Jika tidak, lanjutkan ke
proses traversal berikutnya sampai bertemu
dengan bagian struktur data yang telah
diurutkan.
3. Ulangi langkah di atas untuk struktur data
yang tersisa.
Selection Sort
Algoritma sorting sederhana yang lain adalahSelection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.
Algoritma Selection Sort
Algoritma selection sort dapat dirangkum sebagaiberikut:
1 Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka temukan nilai yang paling maksimum.
2 Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang belum diurutkan.
3. Ulangi langkah di atas untuk bagian struktur datayang tersisa.
Insertion Sort
Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yangtelah di-sorting dan bagian yang belum
Algoritma Insertion Sort
Algoritma Insertion Sort dapat dirangkum sebagai berikut:
1. Simpan nilai Ti kedalam variabel sementara, dengan i = 1.
2. Bandingkan nilainya dengan elemen sebelumnya.
3. Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1).
4. Lakukan terus poin ke-tiga, sampai Ti-1 ≤ Ti.
5. Jika Ti-1 ≤ Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya.
6. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu).
Merge Sort
Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebihberarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelumkemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut,
1. Sebuah list yang kecil membutuhkan langkahyang lebih sedikit untuk pengurutan daripadasebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yanglebih sedikit daripada membentuk sebuah listterurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali traversal untukmasing-masing list jika keduanya sudahterurut.
Algoritma Merge Sort
Algoritma Merge Sort sederhananya, dapat ditulis berikut:
1. Bagi list yang tak terurut menjadi dua samapanjang atau salah satunya lebih panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.
Quick Sort
Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer.
Algoritma Quick Sort
Algoritma ini terdiri dari 4 langkah utama:
1. Jika struktur data terdiri dari 1 atau 0 elemenyang harus diurutkan, kembalikan strukturdata itu apa adanya.
2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros). (Biasanyaelemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian – satudengan elemen-elemen yang lebih besar
daripada pivot point, dan yang lainnya denganelemen-elemen yang lebih kecil dari pada pivot point.
4. Ulangi algoritma secara rekursif terhadapkedua paruh struktur data.
KESIMPULAN
Algoritma yang mudah dalam hal implementasi adalahBubble Sort, Selection Sort, dan Insertion Sort.Ketiganya memiliki kompleksitas O(n2). Di antaraalgoritma ini, yang paling effisien adalah InsertionSort. Algoritma yang lebih mangkus adalah MergeSort dan Quick Sort dengan kompleksitasnya adalah O(n log n). Adapun yang paling mangkus dari limaalgoritma ini adalah Quick Sort.
Algoritma Sorting
Algoritma adalah kumpulan langkah sistematis untukmemperoleh hasil yang diinginkan1. Sebelum sebuahalgoritma dijalankan, biasanya ada suatu kondisi awal(initial state)yang harus dipenuhi. Kemudian, langkah-langkah ini diproses hingga mencapai suatukondisi akhir (final state).Salah satu contoh dari algoritma adalah Sorting(pengurutan).
Definisi Sorting
Sorting didefinisikan sebagai pengurutan sejumlahdata berdasarkan nilai kunci tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar (ascending) atau sebaliknya (descending).Algoritma Sorting termasuk salah satu contoh yangkaya akan solusi. Dalam makalah ini, hanya akandibahas lima algoritma sorting yang populer dipakai didunia informatika. Lima algoritma tersebut adalah:
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Merge Sort, dan
5. Quick Sort.
Bubble Sort
Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah seperti“gelembung air” untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal(proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan “pesanan”,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untukmengoperasikan elemennya.
Algoritma Bubble Sort
Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1,TN, maka:
1. Lakukan traversal untuk membandingkan
dua elemen berdekatan. Traversal ini
dilakukan dari belakang.
2. Jika elemen pada TN-1 > TN , maka lakukan
pertukaran (swap). Jika tidak, lanjutkan ke
proses traversal berikutnya sampai bertemu
dengan bagian struktur data yang telah
diurutkan.
3. Ulangi langkah di atas untuk struktur data
yang tersisa.
Selection Sort
Algoritma sorting sederhana yang lain adalahSelection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.
Algoritma Selection Sort
Algoritma selection sort dapat dirangkum sebagaiberikut:
1 Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka temukan nilai yang paling maksimum.
2 Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang belum diurutkan.
3. Ulangi langkah di atas untuk bagian struktur datayang tersisa.
Insertion Sort
Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yangtelah di-sorting dan bagian yang belum
Algoritma Insertion Sort
Algoritma Insertion Sort dapat dirangkum sebagai berikut:
1. Simpan nilai Ti kedalam variabel sementara, dengan i = 1.
2. Bandingkan nilainya dengan elemen sebelumnya.
3. Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1).
4. Lakukan terus poin ke-tiga, sampai Ti-1 ≤ Ti.
5. Jika Ti-1 ≤ Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya.
6. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu).
Merge Sort
Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebihberarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelumkemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut,
1. Sebuah list yang kecil membutuhkan langkahyang lebih sedikit untuk pengurutan daripadasebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yanglebih sedikit daripada membentuk sebuah listterurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali traversal untukmasing-masing list jika keduanya sudahterurut.
Algoritma Merge Sort
Algoritma Merge Sort sederhananya, dapat ditulis berikut:
1. Bagi list yang tak terurut menjadi dua samapanjang atau salah satunya lebih panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.
Quick Sort
Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer.
Algoritma Quick Sort
Algoritma ini terdiri dari 4 langkah utama:
1. Jika struktur data terdiri dari 1 atau 0 elemenyang harus diurutkan, kembalikan strukturdata itu apa adanya.
2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros). (Biasanyaelemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian – satudengan elemen-elemen yang lebih besar
daripada pivot point, dan yang lainnya denganelemen-elemen yang lebih kecil dari pada pivot point.
4. Ulangi algoritma secara rekursif terhadapkedua paruh struktur data.
KESIMPULAN
Algoritma yang mudah dalam hal implementasi adalahBubble Sort, Selection Sort, dan Insertion Sort.Ketiganya memiliki kompleksitas O(n2). Di antaraalgoritma ini, yang paling effisien adalah InsertionSort. Algoritma yang lebih mangkus adalah MergeSort dan Quick Sort dengan kompleksitasnya adalah O(n log n). Adapun yang paling mangkus dari limaalgoritma ini adalah Quick Sort.
Definisi Sorting
Sorting didefinisikan sebagai pengurutan sejumlahdata berdasarkan nilai kunci tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar (ascending) atau sebaliknya (descending).Algoritma Sorting termasuk salah satu contoh yangkaya akan solusi. Dalam makalah ini, hanya akandibahas lima algoritma sorting yang populer dipakai didunia informatika. Lima algoritma tersebut adalah:
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Merge Sort, dan
5. Quick Sort.
Bubble Sort
Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah seperti“gelembung air” untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal(proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan “pesanan”,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untukmengoperasikan elemennya.
Algoritma Bubble Sort
Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1,TN, maka:
1. Lakukan traversal untuk membandingkan
dua elemen berdekatan. Traversal ini
dilakukan dari belakang.
2. Jika elemen pada TN-1 > TN , maka lakukan
pertukaran (swap). Jika tidak, lanjutkan ke
proses traversal berikutnya sampai bertemu
dengan bagian struktur data yang telah
diurutkan.
3. Ulangi langkah di atas untuk struktur data
yang tersisa.
Selection Sort
Algoritma sorting sederhana yang lain adalahSelection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.
Algoritma Selection Sort
Algoritma selection sort dapat dirangkum sebagaiberikut:
1 Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka temukan nilai yang paling maksimum.
2 Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang belum diurutkan.
3. Ulangi langkah di atas untuk bagian struktur datayang tersisa.
Insertion Sort
Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yangtelah di-sorting dan bagian yang belum
Algoritma Insertion Sort
Algoritma Insertion Sort dapat dirangkum sebagai berikut:
1. Simpan nilai Ti kedalam variabel sementara, dengan i = 1.
2. Bandingkan nilainya dengan elemen sebelumnya.
3. Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1).
4. Lakukan terus poin ke-tiga, sampai Ti-1 ≤ Ti.
5. Jika Ti-1 ≤ Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya.
6. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu).
Merge Sort
Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebihberarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelumkemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut,
1. Sebuah list yang kecil membutuhkan langkahyang lebih sedikit untuk pengurutan daripadasebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yanglebih sedikit daripada membentuk sebuah listterurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali traversal untukmasing-masing list jika keduanya sudahterurut.
Algoritma Merge Sort
Algoritma Merge Sort sederhananya, dapat ditulis berikut:
1. Bagi list yang tak terurut menjadi dua samapanjang atau salah satunya lebih panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.
Quick Sort
Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer.
Algoritma Quick Sort
Algoritma ini terdiri dari 4 langkah utama:
1. Jika struktur data terdiri dari 1 atau 0 elemenyang harus diurutkan, kembalikan strukturdata itu apa adanya.
2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros). (Biasanyaelemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian – satudengan elemen-elemen yang lebih besar
daripada pivot point, dan yang lainnya denganelemen-elemen yang lebih kecil dari pada pivot point.
4. Ulangi algoritma secara rekursif terhadapkedua paruh struktur data.
KESIMPULAN
Algoritma yang mudah dalam hal implementasi adalahBubble Sort, Selection Sort, dan Insertion Sort.Ketiganya memiliki kompleksitas O(n2). Di antaraalgoritma ini, yang paling effisien adalah InsertionSort. Algoritma yang lebih mangkus adalah MergeSort dan Quick Sort dengan kompleksitasnya adalah O(n log n). Adapun yang paling mangkus dari limaalgoritma ini adalah Quick Sort.
Pengertian overloading
Overloading Merupakan Suatu Function yang memiliki parameter , dan function tersebut dapat memiliki nama function yang sama dengan yang lainnya dengan syarat jumlah parameter mesti berbeda
atau bisa kita bilang Situasi di mana beberapa rutin dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter dan/utau jenis return value.
lebih Jelasnya Overloading secara singkat :
* Nama Method Boleh Sama , Tapi Jumlah Parameter Mesti berbeda
* Nilai Yang Di Return Harus memiliki Tipe yang sama
Sample Overloading pada function TaxCalc pada C#.Net :
public static double TaxCalc(double pamt1, double prate1, double pamt2,
double prate2)
{
double taxamt;
Console.WriteLine(“Using method with 4 arguments”);
taxamt = (pamt1 * prate1) + (pamt2 * prate2);
return taxamt;
} // *** TaxCalc ***
// This method only takes two arguments: an amount and a rate
public static double TaxCalc(double pamt1, double prate1)
{
double taxamt;
Console.WriteLine(“Using method with 2 arguments”);
taxamt = pamt1 * prate1;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument: an amount
public static double TaxCalc(double pamt)
{
double taxrate = 0.15;
double taxamt = 0;
Console.WriteLine(“Using method with 1 argument”);
taxamt = pamt * taxrate;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument as well but it differs
// from the above in the argument type.
public static double TaxCalc(string whichtable)
{
double taxrate = 0;
Console.WriteLine(“Calling the method with 1 string argument”);
if (whichtable == “TaxTable1″)
taxrate = 0.15;
return taxrate;
}
Overriding Merupakan Suatu Keadaan Dimana kelas anak dapat mengubah atau bisa kita bilang memodifikasi atau memperluas data dan method pada kelas induk
Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induk nya
contoh Overriding pada C#.Net
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Because ShapesClass.Area is abstract, failing to override
// the Area method would result in a compilation error.
public override int Area()
{
return x * y;
atau bisa kita bilang Situasi di mana beberapa rutin dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter dan/utau jenis return value.
lebih Jelasnya Overloading secara singkat :
* Nama Method Boleh Sama , Tapi Jumlah Parameter Mesti berbeda
* Nilai Yang Di Return Harus memiliki Tipe yang sama
Sample Overloading pada function TaxCalc pada C#.Net :
public static double TaxCalc(double pamt1, double prate1, double pamt2,
double prate2)
{
double taxamt;
Console.WriteLine(“Using method with 4 arguments”);
taxamt = (pamt1 * prate1) + (pamt2 * prate2);
return taxamt;
} // *** TaxCalc ***
// This method only takes two arguments: an amount and a rate
public static double TaxCalc(double pamt1, double prate1)
{
double taxamt;
Console.WriteLine(“Using method with 2 arguments”);
taxamt = pamt1 * prate1;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument: an amount
public static double TaxCalc(double pamt)
{
double taxrate = 0.15;
double taxamt = 0;
Console.WriteLine(“Using method with 1 argument”);
taxamt = pamt * taxrate;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument as well but it differs
// from the above in the argument type.
public static double TaxCalc(string whichtable)
{
double taxrate = 0;
Console.WriteLine(“Calling the method with 1 string argument”);
if (whichtable == “TaxTable1″)
taxrate = 0.15;
return taxrate;
}
Overriding Merupakan Suatu Keadaan Dimana kelas anak dapat mengubah atau bisa kita bilang memodifikasi atau memperluas data dan method pada kelas induk
Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induk nya
contoh Overriding pada C#.Net
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Because ShapesClass.Area is abstract, failing to override
// the Area method would result in a compilation error.
public override int Area()
{
return x * y;
Pengertian Class
Definisi dari class dan object
*
Class adalah blueprint, atau prototype, yang mendefinisikan variable dan method-method pada seluruh object tertentu
*
Object adalah sekumpulan software yang terdiri dari variable dan method-method terkait.
Keuntungan dari pewarisan
* Keuntungan dari pewarisan adalah pemrogram atau programmer dapat menciptakan class baru dari class yang sudah ada, sehingga tidak perlu menuliskan code dari nol ataupun pengulangannya, namun tetap bisa menambahkan attribute dan atau method unik dari class itu sendiri.
Perbedaan antar override dengan overload
Override
1. Mendefinisikan method dengan nama sama pada class yang berbeda.
2. Konsep dapat di manfaatkan dalam beberapa kasus inheritance, di mana menginginkan penamaan method dengan nama sama namunberbeda dalam impelementasinya.
Overload
*
Class adalah blueprint, atau prototype, yang mendefinisikan variable dan method-method pada seluruh object tertentu
*
Object adalah sekumpulan software yang terdiri dari variable dan method-method terkait.
Keuntungan dari pewarisan
* Keuntungan dari pewarisan adalah pemrogram atau programmer dapat menciptakan class baru dari class yang sudah ada, sehingga tidak perlu menuliskan code dari nol ataupun pengulangannya, namun tetap bisa menambahkan attribute dan atau method unik dari class itu sendiri.
Perbedaan antar override dengan overload
Override
1. Mendefinisikan method dengan nama sama pada class yang berbeda.
2. Konsep dapat di manfaatkan dalam beberapa kasus inheritance, di mana menginginkan penamaan method dengan nama sama namunberbeda dalam impelementasinya.
Overload
Pengertian Epkasulasi
Enkapsulasi = Pembungkusan , maksudnya di sini semua objek yang kita definisikan / bisa juga informasi kita sembunyikan di dalam enkapsulasi tersebut agar tidak dapat dibaca oleh kelas lain yang tidak berhak membacanya. maksudnya secara lebih jelas agar memastikan agar object hanya dapat di ubah oleh object yang mendapat ijin untuk mengubahnya , bila tidak memiliki ijin maka tidak dapat mengubahnya atau membacanya.
Polymorphism = Memiliki Banyak Bentuk.
Contoh Polymorphism
public class BaseClass
{
public void DoWork() { }
public int WorkField;
public int WorkProperty
{
get { return 0; }
}
}
public class DerivedClass : BaseClass
{
public new void DoWork() { }
public new int WorkField;
public new int WorkProperty
{
get { return 0; }
}
}
Inheritance = Pewarisan , Mewariskan objek yang dimiliki ke pada objek yang diturunkan , bersifat menyeluruh.
Kelas yang mewariskan biasa di sebut super class / class induk
Kelas yang diwariskan biasa di sebut sub class / kelas anak
Secara lebih singkat begini :
A sebagai Ayah memiliki Anak bernama B , A berkulit Hitam maka B akan berkulit Hitam jg .
Ini merupakan inheritance terhadap A kepada B , dan inheritance bukan hanya dapat 1x diwariskan , tetapi dapat lebih dari 1x. seperti berikut :
A sebagai Ayah memiliki Anak bernama B , A berkulit Hitam maka B akan berkulit Hitam jg . dan B pun memiliki anak C maka C pun akan berkulit hitam
Keuntungan dari inheritance :
- Tidak perlu mendefinisikan Variabel Bila membutuhkan , Cukup menurunkan dari class induk
- Memudahkan dan Mempercepat pemprogramman , mengurangi Code
Sample inheritance dalam C#.Net
public class A
{
public A() { }
}
public class B : A
{
public B() { }
Polymorphism = Memiliki Banyak Bentuk.
Contoh Polymorphism
public class BaseClass
{
public void DoWork() { }
public int WorkField;
public int WorkProperty
{
get { return 0; }
}
}
public class DerivedClass : BaseClass
{
public new void DoWork() { }
public new int WorkField;
public new int WorkProperty
{
get { return 0; }
}
}
Inheritance = Pewarisan , Mewariskan objek yang dimiliki ke pada objek yang diturunkan , bersifat menyeluruh.
Kelas yang mewariskan biasa di sebut super class / class induk
Kelas yang diwariskan biasa di sebut sub class / kelas anak
Secara lebih singkat begini :
A sebagai Ayah memiliki Anak bernama B , A berkulit Hitam maka B akan berkulit Hitam jg .
Ini merupakan inheritance terhadap A kepada B , dan inheritance bukan hanya dapat 1x diwariskan , tetapi dapat lebih dari 1x. seperti berikut :
A sebagai Ayah memiliki Anak bernama B , A berkulit Hitam maka B akan berkulit Hitam jg . dan B pun memiliki anak C maka C pun akan berkulit hitam
Keuntungan dari inheritance :
- Tidak perlu mendefinisikan Variabel Bila membutuhkan , Cukup menurunkan dari class induk
- Memudahkan dan Mempercepat pemprogramman , mengurangi Code
Sample inheritance dalam C#.Net
public class A
{
public A() { }
}
public class B : A
{
public B() { }
Membuat aplikasi ANtrian dalam suatu perusahaan
PT Angin Ribut memerlukan sebuah aplikasi inventory yang dapat dijalankan secara multi-user. Dari 10 orang programer yang mengajukan diri, Anda lah yang terpilih untuk membuat aplikasi tersebut. Setelah mentraktir teman-teman Anda untuk merayakan hari bersejarah tersebut, Anda duduk di depan komputer dan bertanya, mulai dari mana ya?
Bagi Anda yang baru pertama kali membuat program untuk sebuah perusahaan, tentunya situasi yang Anda hadapi saat ini berbeda dibandingkan membuat program untuk tugas kuliah atau skripsi. Perbedaannya tidak semata-mata dari kompleksitas, tetapi lebih merujuk pada tanggung-jawab dan bagaimana memberikan aplikasi yang baik untuk perusahaan.
Hal pertama yang perlu diingat, sebuah perusahaan seharusnya memiliki jaringan komputer yang berpotensi menjadi semakin besar dan luas, sehingga aplikasi untuk perusahaan dapat berkembang menjadi besar baik dalam kaitannya dengan pengguna atau kode program.
Aplikasi yang dibuat untuk perusahaan mutlak harus stabil dan dapat menangani dengan baik kesalahan yang mungkin terjadi, mengingat operasi bisnis perusahaan tergantung pada aplikasi tersebut.
Client Server
Kita akan membahas client server yang tentunya harus Anda pertimbangkan untuk membuat aplikasi perusahaan. Pada model client server umumnya, client akan melakukan request langsung kepada server. Client bertanggung jawab menangani input dari pengguna, sementara server bertanggung jawab menangani permintaan operasi database.
Aplikasi client server tidak selalu harus merujuk pada dua komputer dimana satu komputer berlaku sebagai server dan komputer lainnya sebagai client. Anda dapat melakukan development dengan menggunakan satu komputer.
Kenyataannya, hanya dengan melakukan pemrograman untuk satu komponen object yang memanggil object yang lain, sudah menggambarkan satu contoh dari teknologi client server.
Perancangan aplikasi client server harus mempertimbangkan hal-hal sebagai berikut:
1. Banyaknya client didalam sistem.
2. Apakah sistem menggunakan lebih dari satu DBMS.
3. Kebutuhan update aplikasi di masa mendatang.
Terdapat dua pendekatan arsitektur aplikasi client server, yaitu two-tier (2-tier) dan n-tier.
Two-tier
Tier dapat diartikan sebagai tingkatan. Konsep tier menjelaskan arsitektur aplikasi secara logical ketimbang secara physical. Arsitektur two-tier menerangkan aplikasi yang dirancang digunakan oleh satu atau lebih client yang terkoneksi pada server database.
Contoh two-tier yang paling sederhana adalah saat seluruh client yang terkoneksi menjalankan aplikasi yang sama dan mengakses satu database.
Secara sederhana, konsep two-tier dapat digambarkan sebagai berikut.
Pada two-tier konvensional, aplikasi pada sisi client umumnya menangani beberapa business logic. Contoh business logic dari sebuah aplikasi client server yaitu sekumpulan komponen object yang memiliki fungsi tertentu. Pada lingkungan jaringan, business logic ini menempati dan dijalankan pada masing-masing komputer client.
Dari penjelasan diatas, aplikasi dengan arsitektur two-tier seperti digambarkan diatas bisa jadi cukup sederhana untuk diterapkan, tetapi dapat menjadi masalah yang cukup sulit dan memakan waktu, biaya dan tenaga jika tiba saatnya untuk melakukan update aplikasi. Mengapa demikian?
Karena penerapan business logic pada two-tier yang digambarkan diatas harus dijalankan pada masing-masing komputer client, sehingga jika dilakukan update aplikasi, maka pada seluruh komputer client yang terkait harus dilakukan proses update.
Anda dapat menghindari permasalahan ini dengan melakukan sentralisasi business logic pada server. Teknologi DBMS seperti pada Microsoft SQL Server menyediakan fasilitas stored procedure untuk menyimpan business logic.
Dengan demikian, masing-masing client tidak lagi melakukan proses business logic pada dirinya, tetapi memanggil stored procedure untuk melakukan business logic, kemudian business logic akan menjalankan operasi database yang diminta.
Dengan cara ini, saat Anda ingin melakukan update business logic, cukup dengan melakukan update pada stored procedure yang terletak pada server database, maka perubahan business logic telah berlaku secara keseluruhan sistem.
Perubahan business logic ini berlaku transparan pada client, dalam artian client hanya perlu mengetahui nama dari procedure yang ada, tidak perlu merisaukan kode program yang terdapat pada procedure tersebut.
Solusi ini cukup menenangkan dan menghindari Anda dari kerja lembur selama dua malam untuk mengupdate seluruh komputer client pada sistem, yang mana Anda harus melakukannya setelah jam pulang kantor pada saat tidak ada lagi yang menggunakan komputer, selain Anda tentunya.
N-tier
Stored procedure ternyata tidak mencukupi untuk sistem dimana database disimpan pada lebih dari satu server, karena bisa jadi terdapat client yang tidak dapat mengakses procedure tersebut. Mungkin Anda bertanya, apa perlunya menyimpan database lebih dari satu server?
Tentu saja Anda juga menginginkan perusahaan yang menggunakan aplikasi Anda dapat berkembang, bukan? Penggunaan lebih dari satu database sangat memungkinkan saat sebuah perusahaan telah memiliki divisi yang cukup besar dimana harus memiliki database tersendiri.
Dalam kasus penggunaan lebih dari satu server database, Anda perlu mengimplementasikan strategi development yang berbeda, pendekatan yang baik adalah dengan menggunakan model n-tier.
Huruf “n” pada n-tier menunjukkan variabel numerik yang dapat berisi angka sebanyak apapun, misalnya 3-tier, 4-tier dan seterusnya. Karena itu sebuah aplikasi n-tier memiliki 3 atau lebih tingkatan logical, umumnya aplikasi n-tier saat ini menggunakan 3-tier.
Untuk menggambarkannya, Anda dapat membayangkan skema disain aplikasi two-tier yang mengimplementasikan business logic pada stored procedure seperti yang telah diterangkan diatas, kemudian melakukan improvisasi disain dengan menambahkan sebuah tingkatan (tier) sebagai middle tier sebagai business object, arsitektur inilah yang dikenal dengan 3-tier.
Perbedaan nyata dengan 2-tier adalah, business object pada 3-tier terpisah dari aplikasi client dan elemen database. Sehingga dapat digambarkan bahwa sistem 3-tier secara umum terbentuk dari tingkatan client, business dan database.
Untuk membayangkan penerapan 3-tier dalam kehidupan sehari-hari yang mungkin paling sering Anda temui adalah penerapan Internet ataupun Intranet.
Pada aplikasi Internet/Intranet, terdapat client yang menjalankan browser dan meminta informasi dari middle-tier yang berupa HTTP Server. Middle-tier akan meminta data pada server database, kemudian mengirimkannya kembali kepada HTTP Server. HTTP Server akan mengirimkan kepada browser dalam bentuk page/halaman web.
Diagramnya terlihat seperti dibawah ini:
Sebuah sistem 3-tier menyediakan support multi-user yang stabil, bahkan saat pada client menjalankan aplikasi yang berbeda, juga dapat mendayagunakan beberapa database yang digunakan secara bersamaan.
Dalam pembahasan berikut ini, akan dijelaskan contoh kasus penerapan 3-tier. Bayangkan sebuah sistem 3-tier, yang terdiri dari client, business dan database. Sistem tersebut harus melakukan kalkulasi gaji karyawan berdasarkan pajak dan peraturan lainnya yang dapat berubah dari tahun ke tahun.
Pada tahun ini, terdapat perubahan peraturan pajak yang harus diterapkan pada sistem, pada tingkatan mana Anda harus melakukan update? Anda hanya perlu melakukan update pada tingkatan business object, yang ada karena arsitektur 3-tier ini.
Satu hal yang harus terus diingat sebagai konsep dasar, bahwa pengertian arsitektur 2-tier maupun 3-tier adalah secara logical dan bukan secara physical. Sehingga pada sebuah sistem kecil Anda dapat menjalankan business logic dan database pada komputer yang sama.
Tetapi pada sistem yang besar, Anda mungkin memerlukan beberapa komputer untuk menjalankan baik tingkatan business ataupun database.
Keuntungan Dan Kerugian n-tier
Diantara keuntungan-keuntungan yang dapat diperoleh dari arsitektur n-tier (atau 3-tier pada umumnya), yang terutama adalah:
1. Kemudahan perubahan business logic di masa yang akan datang.
2. Business logic yang mudah diimplementasi dan dipelihara.
3. Aplikasi client dapat mengakses berbagai tipe DBMS yang berbeda-beda secara transparan.
Apakah terdapat kerugian n-tier? Mungkin lebih tepat dikatakan sebagai konsekuensinya, yaitu sistem n-tier relatif mahal untuk development dan instalasinya.
Hal ini dikarenakan perencanaan software pada 3-tier bisa jadi sangat kompleks. Bahkan pada awal tahap perencanaan, Anda telah harus mempertimbangkan potensi pengembangan perusahaan pada masa yang akan datang.
Kompleksitas dalam hal ini meliputi seluruh aspek, baik infrastruktur maupun pembuatan software secara keseluruhan. Sementara dalam suatu perusahaan, semakin besar perubahan sistem yang dilakukan, maka akan semakin memerlukan adaptasi yang semakin luas ruang lingkupnya. Karena itu secara otomatis memerlukan rentang waktu relatif lebih lama.
Terutama jika sistem 3-tier tersebut akan menggantikan sistem yang telah lama digunakan, terdapat cukup banyak tantangan untuk sosialisasi sistem yang baru. Dalam hal ini, interaksi dan komunikasi dengan pengguna sistem secara keseluruhan sangat diperlukan.
Karena itu terdapat dua sisi yang harus Anda temukan titik imbangnya, antara keuntungan-keuntungan yang dapat diraih oleh arsitektur aplikasi n-tier berbanding dengan biaya, tenaga dan waktu yang diperlukan untuk development dan implementasinya.
Keuntungan Dan Kerugian 2-tier
Karena berbagai faktor, jika konsekuensi arsitektur aplikasi n-tier masih terlalu besar dibandingkan dengan keuntungan-keuntungannya, maka Anda dapat mempertimbangkan arsitektur aplikasi 2-tier.
Berlawanan dengan n-tier, sistem 2-tier relatif lebih sederhana untuk didevelop dan diimplementasikan, dibandingkan dengan sistem 3-tier. Sehingga untuk kasus-kasus tertentu, contohnya untuk bisnis kecil, sistem 2-tier lebih cocok untuk diterapkan.
Teknologi Pendukung
Konsep arsitektur tanpa teknologi pendukung tidak akan dapat diterapkan. Termasuk dalam arsitektur 2-tier dan n-tier. Beberapa contoh teknologi yang umum dipergunakan untuk mendukung 2-ter dan n-tier:
1. Component Object.
Umumnya merupakan model object oriented dimana dapat dipergunakan oleh aplikasi yang berbeda dan penggunaan ulang komponen. Contohnya adalah COM/DCOM. Aplikasi yang ditulis dengan bahasa pemrograman yang berbeda dapat saling berkomunikasi dengan menggunakan Component Object.
Component Object itu sendiri dapat ditulis dengan bahasa pemrograman yang berbeda-beda. Pada prinsipnya komponen tersebut terdiri dari class yang memiliki sekumpulan method.
2. Microsoft Transaction Server.
MTS atau Microsoft Transaction Server merupakan software yang dikembangkan oleh Microsoft untuk keperluan monitoring transaksi pada aplikasi terdistribusi. MTS beroperasi pada middle-tier dan menyediakan control transaksi.
Sebagai contoh, jika Anda mengembangkan sistem 3-tier yang mana menempatkan business object pada middle-tier, maka Anda dapat membuat ActiveX DLL sebagai business objectnya, dan melakukan instalasi didalam lingkungan MTS pada middle-tier.
MTS akan bertanggung-jawab dalam menangani akses multi-client pada busines object tersebut. MTS menyediakan fasilitas seperti transaksi rollback, commit dan deadlock pada middle-tier.
3. HTTP/Web Server.
Untuk aplikasi n-tier pada aplikasi Internet/Intranet, Anda mutlak memerlukan Web Server. Terdapat cukup banyak web server yang umum digunakan seperti Apache Web Server atau Internet Information Server (IIS).
Anda dapat menggunakan web server sebagai middle-tier untuk menangani permintaan dari browser komputer client.
4. Microsoft Message Queue Server.
MMQS atau Microsoft Message Queue Server merupakan teknologi yang dikembangkan oleh Microsoft yang berjalan pada middle-tier dan berfungsi untuk mengelola antrian permintaan.
Hal ini dilatarbelakangi karena didalam jaringan yang besar, tidak semua komputer yang terkoneksi berfungsi pada saat yang diperlukan, sehingga diperlukan sebuah aplikasi yang dapat mengelola antrian request dari client dan response dari server yang akan dikirimkan lagi ketika komputer tujuan telah berfungsi.
Bahkan jika Anda menggunakan banyak server dan keseluruhan server sedang dalam kondisi down, MMQS akan menyimpan semua request hingga beberapa atau semua server kembali online.
Satu keuntungannya lagi, jika client-client meminta request yang melebihi kapasitas sebuah server, maka MMQS dapat menyimpannya untuk kemudian mendelegasikannya pada server yang tidak sibuk. Untuk kebutuhan ini diperlukan aplikasi pada server yang berfungsi sebagai listener atau referral.
5. Database Management System.
Database Management System atau dikenal dengan singkatan DBMS merupakan sumber penyimpanan data dan tentu saja memegang peranan vital dalam keseluruhan sistem.
Untuk arsitektur 2-tier dan n-tier, diperlukan aplikasi DBMS yang mampu bekerja pada lingkungan tersebut, beberapa contohnya adalah MySQL, Microsoft SQL Server dan Oracle.
Jika pada DBMS yang dipergunakan terdapat fasilitas stored procedure, maka dimungkinkan untuk menyimpan business logic didalam stored procedure yang akan diakses oleh client.
Conceptual Model
Tahap disain untuk merancang aplikasi untuk perusahaan bisa jadi merupakan pekerjaan yang rumit dan harus berhati-hati. Sehingga sangat disarankan Anda mencurahkan waktu yang cukup pada tahap disain.
Pendekatan terbaik untuk melakukan disain adalah dengan membagi aplikasi kedalam unit-unit kecil yang disebut modul. Pada awalnya Anda dapat membuat modul standalone yang dapat dipanggil oleh modul lainnya dan dapat digunakan berulang kali (reused) pada project yang lain.
Hal ini akan mempermudah pekerjaan Anda dan menghindari duplikasi pengkodean yang tidak perlu, serta menghemat waktu kerja Anda.
Pada tahap disain ini juga, Anda perlu mengenal apa yang dinamakan dengan conceptual model, yang juga dikenal dengan sebutan service model atau application model.
Pada implementasi siste 3-tier, dikenal tingkatan sebagai berikut:
1. User service/Presentation tier.
Saat Anda melakukan perancangan pada tahap awal, presentation tier merupakan tingkatan yang mengijinkan pengguna berkomunikasi dengan aplikasi.
2. Business service/Application server tier.
Digunakan untuk melakukan implementasi business logic.
3. Data service/Data source tier.
Tingkatan terakhir ini berfungsi untuk mengelola permintaan operasi data.
Mengenal Ruang Lingkup
Keberhasilan membuat aplikasi perusahaan juga sangat tergantung pada informasi yang Anda dapatkan mengenai perusahaan yang bersangkutan. Pengertian perusahaan tidak selalu mengacu pada PT Angin Ribut seperti pada contoh, tetapi bisa jadi organisasi seperti sekolah, universitas, atau bahkan pemerintah.
Yang pasti, aplikasi tersebut memiliki nilai guna yang besar bagi customer maupun perusahaan yang bersangkutan, mengenal business rule perusahaan yang bersangkutan merupakan kata lain dari mengenal “medan tempur”, dimana masing-masing perusahaan memiliki orientasi yang bisa jadi berbeda. Sehingga sisi komunikasi yang baik pun harus dimiliki untuk menghindari kesalahan interpetasi.
Menciptakan komunikasi yang baik dengan user yang secara langsung akan menggunakan aplikasi Anda juga akan sangat membantu pemahaman dan kesulitan yang dialami, sehingga pemecahan atau solusinya akan lebih mudah ditemukan dan diimplementasikan dalam aplikasi Anda.
Bagi Anda yang baru pertama kali membuat program untuk sebuah perusahaan, tentunya situasi yang Anda hadapi saat ini berbeda dibandingkan membuat program untuk tugas kuliah atau skripsi. Perbedaannya tidak semata-mata dari kompleksitas, tetapi lebih merujuk pada tanggung-jawab dan bagaimana memberikan aplikasi yang baik untuk perusahaan.
Hal pertama yang perlu diingat, sebuah perusahaan seharusnya memiliki jaringan komputer yang berpotensi menjadi semakin besar dan luas, sehingga aplikasi untuk perusahaan dapat berkembang menjadi besar baik dalam kaitannya dengan pengguna atau kode program.
Aplikasi yang dibuat untuk perusahaan mutlak harus stabil dan dapat menangani dengan baik kesalahan yang mungkin terjadi, mengingat operasi bisnis perusahaan tergantung pada aplikasi tersebut.
Client Server
Kita akan membahas client server yang tentunya harus Anda pertimbangkan untuk membuat aplikasi perusahaan. Pada model client server umumnya, client akan melakukan request langsung kepada server. Client bertanggung jawab menangani input dari pengguna, sementara server bertanggung jawab menangani permintaan operasi database.
Aplikasi client server tidak selalu harus merujuk pada dua komputer dimana satu komputer berlaku sebagai server dan komputer lainnya sebagai client. Anda dapat melakukan development dengan menggunakan satu komputer.
Kenyataannya, hanya dengan melakukan pemrograman untuk satu komponen object yang memanggil object yang lain, sudah menggambarkan satu contoh dari teknologi client server.
Perancangan aplikasi client server harus mempertimbangkan hal-hal sebagai berikut:
1. Banyaknya client didalam sistem.
2. Apakah sistem menggunakan lebih dari satu DBMS.
3. Kebutuhan update aplikasi di masa mendatang.
Terdapat dua pendekatan arsitektur aplikasi client server, yaitu two-tier (2-tier) dan n-tier.
Two-tier
Tier dapat diartikan sebagai tingkatan. Konsep tier menjelaskan arsitektur aplikasi secara logical ketimbang secara physical. Arsitektur two-tier menerangkan aplikasi yang dirancang digunakan oleh satu atau lebih client yang terkoneksi pada server database.
Contoh two-tier yang paling sederhana adalah saat seluruh client yang terkoneksi menjalankan aplikasi yang sama dan mengakses satu database.
Secara sederhana, konsep two-tier dapat digambarkan sebagai berikut.
Pada two-tier konvensional, aplikasi pada sisi client umumnya menangani beberapa business logic. Contoh business logic dari sebuah aplikasi client server yaitu sekumpulan komponen object yang memiliki fungsi tertentu. Pada lingkungan jaringan, business logic ini menempati dan dijalankan pada masing-masing komputer client.
Dari penjelasan diatas, aplikasi dengan arsitektur two-tier seperti digambarkan diatas bisa jadi cukup sederhana untuk diterapkan, tetapi dapat menjadi masalah yang cukup sulit dan memakan waktu, biaya dan tenaga jika tiba saatnya untuk melakukan update aplikasi. Mengapa demikian?
Karena penerapan business logic pada two-tier yang digambarkan diatas harus dijalankan pada masing-masing komputer client, sehingga jika dilakukan update aplikasi, maka pada seluruh komputer client yang terkait harus dilakukan proses update.
Anda dapat menghindari permasalahan ini dengan melakukan sentralisasi business logic pada server. Teknologi DBMS seperti pada Microsoft SQL Server menyediakan fasilitas stored procedure untuk menyimpan business logic.
Dengan demikian, masing-masing client tidak lagi melakukan proses business logic pada dirinya, tetapi memanggil stored procedure untuk melakukan business logic, kemudian business logic akan menjalankan operasi database yang diminta.
Dengan cara ini, saat Anda ingin melakukan update business logic, cukup dengan melakukan update pada stored procedure yang terletak pada server database, maka perubahan business logic telah berlaku secara keseluruhan sistem.
Perubahan business logic ini berlaku transparan pada client, dalam artian client hanya perlu mengetahui nama dari procedure yang ada, tidak perlu merisaukan kode program yang terdapat pada procedure tersebut.
Solusi ini cukup menenangkan dan menghindari Anda dari kerja lembur selama dua malam untuk mengupdate seluruh komputer client pada sistem, yang mana Anda harus melakukannya setelah jam pulang kantor pada saat tidak ada lagi yang menggunakan komputer, selain Anda tentunya.
N-tier
Stored procedure ternyata tidak mencukupi untuk sistem dimana database disimpan pada lebih dari satu server, karena bisa jadi terdapat client yang tidak dapat mengakses procedure tersebut. Mungkin Anda bertanya, apa perlunya menyimpan database lebih dari satu server?
Tentu saja Anda juga menginginkan perusahaan yang menggunakan aplikasi Anda dapat berkembang, bukan? Penggunaan lebih dari satu database sangat memungkinkan saat sebuah perusahaan telah memiliki divisi yang cukup besar dimana harus memiliki database tersendiri.
Dalam kasus penggunaan lebih dari satu server database, Anda perlu mengimplementasikan strategi development yang berbeda, pendekatan yang baik adalah dengan menggunakan model n-tier.
Huruf “n” pada n-tier menunjukkan variabel numerik yang dapat berisi angka sebanyak apapun, misalnya 3-tier, 4-tier dan seterusnya. Karena itu sebuah aplikasi n-tier memiliki 3 atau lebih tingkatan logical, umumnya aplikasi n-tier saat ini menggunakan 3-tier.
Untuk menggambarkannya, Anda dapat membayangkan skema disain aplikasi two-tier yang mengimplementasikan business logic pada stored procedure seperti yang telah diterangkan diatas, kemudian melakukan improvisasi disain dengan menambahkan sebuah tingkatan (tier) sebagai middle tier sebagai business object, arsitektur inilah yang dikenal dengan 3-tier.
Perbedaan nyata dengan 2-tier adalah, business object pada 3-tier terpisah dari aplikasi client dan elemen database. Sehingga dapat digambarkan bahwa sistem 3-tier secara umum terbentuk dari tingkatan client, business dan database.
Untuk membayangkan penerapan 3-tier dalam kehidupan sehari-hari yang mungkin paling sering Anda temui adalah penerapan Internet ataupun Intranet.
Pada aplikasi Internet/Intranet, terdapat client yang menjalankan browser dan meminta informasi dari middle-tier yang berupa HTTP Server. Middle-tier akan meminta data pada server database, kemudian mengirimkannya kembali kepada HTTP Server. HTTP Server akan mengirimkan kepada browser dalam bentuk page/halaman web.
Diagramnya terlihat seperti dibawah ini:
Sebuah sistem 3-tier menyediakan support multi-user yang stabil, bahkan saat pada client menjalankan aplikasi yang berbeda, juga dapat mendayagunakan beberapa database yang digunakan secara bersamaan.
Dalam pembahasan berikut ini, akan dijelaskan contoh kasus penerapan 3-tier. Bayangkan sebuah sistem 3-tier, yang terdiri dari client, business dan database. Sistem tersebut harus melakukan kalkulasi gaji karyawan berdasarkan pajak dan peraturan lainnya yang dapat berubah dari tahun ke tahun.
Pada tahun ini, terdapat perubahan peraturan pajak yang harus diterapkan pada sistem, pada tingkatan mana Anda harus melakukan update? Anda hanya perlu melakukan update pada tingkatan business object, yang ada karena arsitektur 3-tier ini.
Satu hal yang harus terus diingat sebagai konsep dasar, bahwa pengertian arsitektur 2-tier maupun 3-tier adalah secara logical dan bukan secara physical. Sehingga pada sebuah sistem kecil Anda dapat menjalankan business logic dan database pada komputer yang sama.
Tetapi pada sistem yang besar, Anda mungkin memerlukan beberapa komputer untuk menjalankan baik tingkatan business ataupun database.
Keuntungan Dan Kerugian n-tier
Diantara keuntungan-keuntungan yang dapat diperoleh dari arsitektur n-tier (atau 3-tier pada umumnya), yang terutama adalah:
1. Kemudahan perubahan business logic di masa yang akan datang.
2. Business logic yang mudah diimplementasi dan dipelihara.
3. Aplikasi client dapat mengakses berbagai tipe DBMS yang berbeda-beda secara transparan.
Apakah terdapat kerugian n-tier? Mungkin lebih tepat dikatakan sebagai konsekuensinya, yaitu sistem n-tier relatif mahal untuk development dan instalasinya.
Hal ini dikarenakan perencanaan software pada 3-tier bisa jadi sangat kompleks. Bahkan pada awal tahap perencanaan, Anda telah harus mempertimbangkan potensi pengembangan perusahaan pada masa yang akan datang.
Kompleksitas dalam hal ini meliputi seluruh aspek, baik infrastruktur maupun pembuatan software secara keseluruhan. Sementara dalam suatu perusahaan, semakin besar perubahan sistem yang dilakukan, maka akan semakin memerlukan adaptasi yang semakin luas ruang lingkupnya. Karena itu secara otomatis memerlukan rentang waktu relatif lebih lama.
Terutama jika sistem 3-tier tersebut akan menggantikan sistem yang telah lama digunakan, terdapat cukup banyak tantangan untuk sosialisasi sistem yang baru. Dalam hal ini, interaksi dan komunikasi dengan pengguna sistem secara keseluruhan sangat diperlukan.
Karena itu terdapat dua sisi yang harus Anda temukan titik imbangnya, antara keuntungan-keuntungan yang dapat diraih oleh arsitektur aplikasi n-tier berbanding dengan biaya, tenaga dan waktu yang diperlukan untuk development dan implementasinya.
Keuntungan Dan Kerugian 2-tier
Karena berbagai faktor, jika konsekuensi arsitektur aplikasi n-tier masih terlalu besar dibandingkan dengan keuntungan-keuntungannya, maka Anda dapat mempertimbangkan arsitektur aplikasi 2-tier.
Berlawanan dengan n-tier, sistem 2-tier relatif lebih sederhana untuk didevelop dan diimplementasikan, dibandingkan dengan sistem 3-tier. Sehingga untuk kasus-kasus tertentu, contohnya untuk bisnis kecil, sistem 2-tier lebih cocok untuk diterapkan.
Teknologi Pendukung
Konsep arsitektur tanpa teknologi pendukung tidak akan dapat diterapkan. Termasuk dalam arsitektur 2-tier dan n-tier. Beberapa contoh teknologi yang umum dipergunakan untuk mendukung 2-ter dan n-tier:
1. Component Object.
Umumnya merupakan model object oriented dimana dapat dipergunakan oleh aplikasi yang berbeda dan penggunaan ulang komponen. Contohnya adalah COM/DCOM. Aplikasi yang ditulis dengan bahasa pemrograman yang berbeda dapat saling berkomunikasi dengan menggunakan Component Object.
Component Object itu sendiri dapat ditulis dengan bahasa pemrograman yang berbeda-beda. Pada prinsipnya komponen tersebut terdiri dari class yang memiliki sekumpulan method.
2. Microsoft Transaction Server.
MTS atau Microsoft Transaction Server merupakan software yang dikembangkan oleh Microsoft untuk keperluan monitoring transaksi pada aplikasi terdistribusi. MTS beroperasi pada middle-tier dan menyediakan control transaksi.
Sebagai contoh, jika Anda mengembangkan sistem 3-tier yang mana menempatkan business object pada middle-tier, maka Anda dapat membuat ActiveX DLL sebagai business objectnya, dan melakukan instalasi didalam lingkungan MTS pada middle-tier.
MTS akan bertanggung-jawab dalam menangani akses multi-client pada busines object tersebut. MTS menyediakan fasilitas seperti transaksi rollback, commit dan deadlock pada middle-tier.
3. HTTP/Web Server.
Untuk aplikasi n-tier pada aplikasi Internet/Intranet, Anda mutlak memerlukan Web Server. Terdapat cukup banyak web server yang umum digunakan seperti Apache Web Server atau Internet Information Server (IIS).
Anda dapat menggunakan web server sebagai middle-tier untuk menangani permintaan dari browser komputer client.
4. Microsoft Message Queue Server.
MMQS atau Microsoft Message Queue Server merupakan teknologi yang dikembangkan oleh Microsoft yang berjalan pada middle-tier dan berfungsi untuk mengelola antrian permintaan.
Hal ini dilatarbelakangi karena didalam jaringan yang besar, tidak semua komputer yang terkoneksi berfungsi pada saat yang diperlukan, sehingga diperlukan sebuah aplikasi yang dapat mengelola antrian request dari client dan response dari server yang akan dikirimkan lagi ketika komputer tujuan telah berfungsi.
Bahkan jika Anda menggunakan banyak server dan keseluruhan server sedang dalam kondisi down, MMQS akan menyimpan semua request hingga beberapa atau semua server kembali online.
Satu keuntungannya lagi, jika client-client meminta request yang melebihi kapasitas sebuah server, maka MMQS dapat menyimpannya untuk kemudian mendelegasikannya pada server yang tidak sibuk. Untuk kebutuhan ini diperlukan aplikasi pada server yang berfungsi sebagai listener atau referral.
5. Database Management System.
Database Management System atau dikenal dengan singkatan DBMS merupakan sumber penyimpanan data dan tentu saja memegang peranan vital dalam keseluruhan sistem.
Untuk arsitektur 2-tier dan n-tier, diperlukan aplikasi DBMS yang mampu bekerja pada lingkungan tersebut, beberapa contohnya adalah MySQL, Microsoft SQL Server dan Oracle.
Jika pada DBMS yang dipergunakan terdapat fasilitas stored procedure, maka dimungkinkan untuk menyimpan business logic didalam stored procedure yang akan diakses oleh client.
Conceptual Model
Tahap disain untuk merancang aplikasi untuk perusahaan bisa jadi merupakan pekerjaan yang rumit dan harus berhati-hati. Sehingga sangat disarankan Anda mencurahkan waktu yang cukup pada tahap disain.
Pendekatan terbaik untuk melakukan disain adalah dengan membagi aplikasi kedalam unit-unit kecil yang disebut modul. Pada awalnya Anda dapat membuat modul standalone yang dapat dipanggil oleh modul lainnya dan dapat digunakan berulang kali (reused) pada project yang lain.
Hal ini akan mempermudah pekerjaan Anda dan menghindari duplikasi pengkodean yang tidak perlu, serta menghemat waktu kerja Anda.
Pada tahap disain ini juga, Anda perlu mengenal apa yang dinamakan dengan conceptual model, yang juga dikenal dengan sebutan service model atau application model.
Pada implementasi siste 3-tier, dikenal tingkatan sebagai berikut:
1. User service/Presentation tier.
Saat Anda melakukan perancangan pada tahap awal, presentation tier merupakan tingkatan yang mengijinkan pengguna berkomunikasi dengan aplikasi.
2. Business service/Application server tier.
Digunakan untuk melakukan implementasi business logic.
3. Data service/Data source tier.
Tingkatan terakhir ini berfungsi untuk mengelola permintaan operasi data.
Mengenal Ruang Lingkup
Keberhasilan membuat aplikasi perusahaan juga sangat tergantung pada informasi yang Anda dapatkan mengenai perusahaan yang bersangkutan. Pengertian perusahaan tidak selalu mengacu pada PT Angin Ribut seperti pada contoh, tetapi bisa jadi organisasi seperti sekolah, universitas, atau bahkan pemerintah.
Yang pasti, aplikasi tersebut memiliki nilai guna yang besar bagi customer maupun perusahaan yang bersangkutan, mengenal business rule perusahaan yang bersangkutan merupakan kata lain dari mengenal “medan tempur”, dimana masing-masing perusahaan memiliki orientasi yang bisa jadi berbeda. Sehingga sisi komunikasi yang baik pun harus dimiliki untuk menghindari kesalahan interpetasi.
Menciptakan komunikasi yang baik dengan user yang secara langsung akan menggunakan aplikasi Anda juga akan sangat membantu pemahaman dan kesulitan yang dialami, sehingga pemecahan atau solusinya akan lebih mudah ditemukan dan diimplementasikan dalam aplikasi Anda.
STACK
Secara bahasa, Stack berarti tumpukan. Jika dikaitkan dengan struktur data, Stack berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan.
Secara ilustrasi, stack dapat digambarkan dengan gambar di samping.
“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan.
Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal dalam struktur data dengan nama prinsip LIFO (Last In First Out).
Di dalam pengembangannya, stack dapat dikelompokkan menjadi dua bagian. Dua bagian tersebut yaitu Single Stack dan Double Stack.
Single Stack
Single Stack atau Stack Tunggal adalah stack yang hanya terdiri dari satu koleksi. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus dilakukan bertahap dari indeks TOP-nya.
Di dalam proses single stack terdapat tiga macam proses utama, yaitu :
- Inisialisasi
- PUSH (Insert, Masuk, Simpan, Tulis)
- POP (Delete, Keluar, Ambil, Baca, Hapus)
Secara ilustrasi, stack dapat digambarkan dengan gambar di samping.
“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan.
Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal dalam struktur data dengan nama prinsip LIFO (Last In First Out).
Di dalam pengembangannya, stack dapat dikelompokkan menjadi dua bagian. Dua bagian tersebut yaitu Single Stack dan Double Stack.
Single Stack
Single Stack atau Stack Tunggal adalah stack yang hanya terdiri dari satu koleksi. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus dilakukan bertahap dari indeks TOP-nya.
Di dalam proses single stack terdapat tiga macam proses utama, yaitu :
- Inisialisasi
- PUSH (Insert, Masuk, Simpan, Tulis)
- POP (Delete, Keluar, Ambil, Baca, Hapus)
Array dan Range
1.Array dimensi satu dan banyak
Sebuah array dimensi satu yang misalnya kita beri nama nilai , dapat kita bayangkan berbentuk seperti gambar dibawah ini
Nilai ( 1 ) Nilai ( 2 ) Nilai ( 3 ) – - – Nilai ( n )
Subscript atau indeks dari elemen array menyatakan posisi, elemen pada urutan dalam array tersebut.
Notasi yang digunakan bagi elemen array biasanya adalah nama array dilengkapi dengan subscript. Harga minimum dari subscript dari array disebut batas bawah ( lower bound ), sedangkan harga maksimumnya disebut dengan batas atas ( upper bound ).
Array dimensi banyak ( multi dimensional array ) didefenisikan sebagai sebuah array yang elemennya berupa array juga. Untuk itu diperlukan dua buah subscript, ddimana subscript yang pertama digunakan untuk menyatakan posisi baris sedangkan subscript yang kedua digunakan untuk posisi kolom.
Seperti halnya pada array berdimensi satu, pada array berdimensi dua batas bawah untuk subscript I maupun J dapat diambil secara umum.
Yang dimaksud dengan cross section suatun array berdimensi dua adalah pengambilan salah satu subscript, misalnya subscript baris untuk tetap( konstan ), sedangkan subscriptnya yang satu lagi kita ubah-ubah sepanjang rangenya, dimana notasi yang umum digunakan adalah notasi * ( asterisk ) bagi subscript yang berubah-ubah nilaianya tersebut.
Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom ataun kolom menjadi baris dari suatu array.
Contoh :
Transpose dari array berorder A x V adalah array berorder V x A
2. Deklarasi Array dalam bahasa pemprograman
a. Deklarasi array 1 dimensi
Bentuk umum dari deklarasi tipe array adalah :
type pengenal = array [tipe_index] of tipe;
dengan pengenal : nama tipe data
tipe_index : tipe data untuk nomor index
tipe : tipe data komponen
Parameter tipe_index menentukan banyaknya komponen array tersebut. Berikut contoh dari deklarasi :
type vek = array [1…..100] of integer;
menunjukkan bahwa vek adalah nama-pengenal/variabel yang berupa array yang komponennya bertipe integer dan banyaknya 100 buah.
Deklarasi yang demikian ini disebut deklarasi array dimensi satu, yang disebut vektor.
2.deklarasi array 2 dimensi
type tabel = array [1..3, 1..4] of real;
tabel(3,4)
artinya terdapat variabel yang bernama tabel yang di deklarasikan sebagai array dimensi dua dengan jumlah maksimal barisnya = 3 dan kolom = 4; serta tipe komponen datanyaadalah real.
c. Deklarasi array 3 Dimensi
type tabel = array [1..3, 1..4] of real;
tabel(3,4)
artinya terdapat variabel yang bernama tabel yang di deklarasikan sebagai array dimensi dua dengan jumlah maksimal barisnya = 3 dan kolom = 4; serta tipe komponen datanyaadalah real.
3. Pemetaan Array ke Storage
Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalammemori. Skema penyajian dapat dievaluasi berdasarkan
4 karakteristik, yakni:
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
Umumnya tidaklah mungkin untuk mengoptimalkan keempat faktor tersebut
sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemenNOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuksetiap I = 1, 2, 3,…, N-1. Untuk menghitung alamat (address) awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni:
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
Address awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan
bahwa masing-masing elemen dari array menduduki S byte. Maka, address awal dari elemenke-I adalah:
B + (I-1) * S
Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari
array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array Z(4:10),
maka address awal dari Z(6) adalah:
B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah:
B + (I -(-2)) * S
Maka secara umum, untuk array:
ARRAY(L:U),
elemen ARRAY(I) mempunyai address awal
B + (U-L) *
4.TRINGULAR ARRAY (ARRAY SEGITIGA)
Akan kita tinjau beberapa aspek pelinearan suatu array yang khusus, yakni tringular array. Tringular array dapat merupakan upper tringular (seluruh elemen di bawah diagonal utama = 0) ataupun lower tringular (seluruh elemen di atas diagonal utama = 0).
Dalam array lower triangular dengan N baris, jumlah maksimum elemen 0 pada
baris ke-I adalah 1, karenanya total elemen 0, tidak lebih dari:
N
Σ I = N ( N+1) / 2
I =I
Rumus ini berlaku pula untuk array upper tringular dengan N baris. Kalau N besar,
alangkah baiknya kalau elemen nol tidak usah kita simpan dalam memori. Suatu pendekatanterhadap problema ini adalah dengan pelinearan array, dan dengan hanya menyimpanbagian array yang tidak nol.
Misalkan kita menyimpan array upper tringular T secara baris dalam array satu dimensi
S, dengan batas subscript I sampai N(N+I)/2. Elemen T(1,1) disimpan sebagai S(1), elemenT(1,2) sebagai S(2) dan seterusnya, sehingga elemen T(1,N) disimpan sebagai S(N). Maka elemen T(2,2) disimpan sebagai S(N+1) (karena T(2,1) = 0). Terakhir sekali, elemenT(N,N) akan disimpan sebagai S(N(N+1)/2).
Kadang-kadang suatu program menggunakan lebih dari satu array tringular. Untuk
itu kita dapat menyimpan 2 array sekaligus. Misalnya array A upper triangular berorder Nx N dan array B lower triangular berorder (N-1) x (N-1). Mereka dapat kita simpan
sebagai array C berorder N x N. Di sini C(l,J) = A(l,J) untuk I = J. Sekarang apabila array A upper tringular berorder N x N sedangkan array B lower tringular, juga berorder N x N, maka array C yang mengandung keduanya harus berorder N x (N+1). Di sini elemen A(I,J) disimpan sebagai C(I,J+1) untuk I = J.
5.Definisi RECORD
Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai
type. Satuan data tersebut sering disebut sebagai field dari record. Field dipanggil dengan
menggunakan namanya masing-masing. Suatu field dapat terdiri atas beberapa subfield.
Sebagai Contoh, data personalia dari seorang pegawai suatu perusahaan di Amerika Serikat,merupakan sebuah record yang dapat terdiri dari berbagai field, dan subfield seperti berikut ini:
1. NOMOR-JAMINAN-SOSIAL
2. NAMA, yang terdiri atas:
NAMA-BELAKANG
NAMA-DEPAN
NAMA-TENGAH
3. ALAMAT, terdiri atas:
JALAN
NOMOR RUMAH
NAMA-JALAN
KOTA
NEGARA-BAGIAN
KODE-POS
4. MENIKAH
dan sebagainya lagi.
Pada record tersebut di atas, satuan data seperti NAMA BELAKANG ataupun KOTA
merupakan tipe data string, sedangkan data lain seperti GAJI POKOK, TUNJANGAN
JABATAN dan berbagai data yang akan diolah secara matematis akan disimpan dengan
tipe data numerik, bisa integer maupun real. Data MENIKAH bisa digunakan tipe data
boolean atau logikal.
Seperti telah kita paparkan terdahulu, array berbeda dengan record, yakni array bersifat
homogen (terdiri dari tipe data yang sama), dan komponen array tidak memiliki nama
sendiri, dan hanya diberi identifikasi oleh posisi mereka di dalam array. Penggunaan
keduanya di dalam program juga berbeda, jika penggunaan array pada umumnya akan
disimpan di memori utama komputer (bersifat sementara), sedangkan record biasanya
digunakan dalam filing yang akan disimpan di memori sekunder komputer, seperti hard
disk, disket, dan lainnya.
Sebuah record memberi informasi tentang berbagai kondisi dari obyek padapermasalahan yang nyata sehari-hari. Setiap field memberi uraian tentang satu atribut dari
obyeknya. Sebuah record biasanya diberi identifikasi oleh key-nya. Key atau kunci adalah
salah satu atau lebih field yang dipilih untuk tujuan penyampaian informasi yang terjadi
di dalam record yang bersangkutan.
Koleksi dari record yang sama struktur fieldnya disebut suatu file atau berkas. Jadi, koleksi
dari record semua pegawai perusahaan membentuk sebuah file personalia. Pada umumnya
record disimpan membentuk file, dalam urutan sesuai dengan nilai dari key masing-masing.
Di dalam suatu file PERSONALIA, field NOMOR JAMINAN SOSIAL dari seorang pegawai
dapat digunakan sebagai key. Di dalam bahasa pemrograman tingkat tinggi, record dapat
dinyatakan sebagai struktur data (COBOL dan PL/1) dapat diadakan spesifikasi tentang
nama record, field dan subfield yang bersangkutan.
Sebuah array dimensi satu yang misalnya kita beri nama nilai , dapat kita bayangkan berbentuk seperti gambar dibawah ini
Nilai ( 1 ) Nilai ( 2 ) Nilai ( 3 ) – - – Nilai ( n )
Subscript atau indeks dari elemen array menyatakan posisi, elemen pada urutan dalam array tersebut.
Notasi yang digunakan bagi elemen array biasanya adalah nama array dilengkapi dengan subscript. Harga minimum dari subscript dari array disebut batas bawah ( lower bound ), sedangkan harga maksimumnya disebut dengan batas atas ( upper bound ).
Array dimensi banyak ( multi dimensional array ) didefenisikan sebagai sebuah array yang elemennya berupa array juga. Untuk itu diperlukan dua buah subscript, ddimana subscript yang pertama digunakan untuk menyatakan posisi baris sedangkan subscript yang kedua digunakan untuk posisi kolom.
Seperti halnya pada array berdimensi satu, pada array berdimensi dua batas bawah untuk subscript I maupun J dapat diambil secara umum.
Yang dimaksud dengan cross section suatun array berdimensi dua adalah pengambilan salah satu subscript, misalnya subscript baris untuk tetap( konstan ), sedangkan subscriptnya yang satu lagi kita ubah-ubah sepanjang rangenya, dimana notasi yang umum digunakan adalah notasi * ( asterisk ) bagi subscript yang berubah-ubah nilaianya tersebut.
Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom ataun kolom menjadi baris dari suatu array.
Contoh :
Transpose dari array berorder A x V adalah array berorder V x A
2. Deklarasi Array dalam bahasa pemprograman
a. Deklarasi array 1 dimensi
Bentuk umum dari deklarasi tipe array adalah :
type pengenal = array [tipe_index] of tipe;
dengan pengenal : nama tipe data
tipe_index : tipe data untuk nomor index
tipe : tipe data komponen
Parameter tipe_index menentukan banyaknya komponen array tersebut. Berikut contoh dari deklarasi :
type vek = array [1…..100] of integer;
menunjukkan bahwa vek adalah nama-pengenal/variabel yang berupa array yang komponennya bertipe integer dan banyaknya 100 buah.
Deklarasi yang demikian ini disebut deklarasi array dimensi satu, yang disebut vektor.
2.deklarasi array 2 dimensi
type tabel = array [1..3, 1..4] of real;
tabel(3,4)
artinya terdapat variabel yang bernama tabel yang di deklarasikan sebagai array dimensi dua dengan jumlah maksimal barisnya = 3 dan kolom = 4; serta tipe komponen datanyaadalah real.
c. Deklarasi array 3 Dimensi
type tabel = array [1..3, 1..4] of real;
tabel(3,4)
artinya terdapat variabel yang bernama tabel yang di deklarasikan sebagai array dimensi dua dengan jumlah maksimal barisnya = 3 dan kolom = 4; serta tipe komponen datanyaadalah real.
3. Pemetaan Array ke Storage
Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalammemori. Skema penyajian dapat dievaluasi berdasarkan
4 karakteristik, yakni:
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
Umumnya tidaklah mungkin untuk mengoptimalkan keempat faktor tersebut
sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemenNOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuksetiap I = 1, 2, 3,…, N-1. Untuk menghitung alamat (address) awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni:
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
Address awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan
bahwa masing-masing elemen dari array menduduki S byte. Maka, address awal dari elemenke-I adalah:
B + (I-1) * S
Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari
array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array Z(4:10),
maka address awal dari Z(6) adalah:
B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah:
B + (I -(-2)) * S
Maka secara umum, untuk array:
ARRAY(L:U),
elemen ARRAY(I) mempunyai address awal
B + (U-L) *
4.TRINGULAR ARRAY (ARRAY SEGITIGA)
Akan kita tinjau beberapa aspek pelinearan suatu array yang khusus, yakni tringular array. Tringular array dapat merupakan upper tringular (seluruh elemen di bawah diagonal utama = 0) ataupun lower tringular (seluruh elemen di atas diagonal utama = 0).
Dalam array lower triangular dengan N baris, jumlah maksimum elemen 0 pada
baris ke-I adalah 1, karenanya total elemen 0, tidak lebih dari:
N
Σ I = N ( N+1) / 2
I =I
Rumus ini berlaku pula untuk array upper tringular dengan N baris. Kalau N besar,
alangkah baiknya kalau elemen nol tidak usah kita simpan dalam memori. Suatu pendekatanterhadap problema ini adalah dengan pelinearan array, dan dengan hanya menyimpanbagian array yang tidak nol.
Misalkan kita menyimpan array upper tringular T secara baris dalam array satu dimensi
S, dengan batas subscript I sampai N(N+I)/2. Elemen T(1,1) disimpan sebagai S(1), elemenT(1,2) sebagai S(2) dan seterusnya, sehingga elemen T(1,N) disimpan sebagai S(N). Maka elemen T(2,2) disimpan sebagai S(N+1) (karena T(2,1) = 0). Terakhir sekali, elemenT(N,N) akan disimpan sebagai S(N(N+1)/2).
Kadang-kadang suatu program menggunakan lebih dari satu array tringular. Untuk
itu kita dapat menyimpan 2 array sekaligus. Misalnya array A upper triangular berorder Nx N dan array B lower triangular berorder (N-1) x (N-1). Mereka dapat kita simpan
sebagai array C berorder N x N. Di sini C(l,J) = A(l,J) untuk I = J. Sekarang apabila array A upper tringular berorder N x N sedangkan array B lower tringular, juga berorder N x N, maka array C yang mengandung keduanya harus berorder N x (N+1). Di sini elemen A(I,J) disimpan sebagai C(I,J+1) untuk I = J.
5.Definisi RECORD
Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai
type. Satuan data tersebut sering disebut sebagai field dari record. Field dipanggil dengan
menggunakan namanya masing-masing. Suatu field dapat terdiri atas beberapa subfield.
Sebagai Contoh, data personalia dari seorang pegawai suatu perusahaan di Amerika Serikat,merupakan sebuah record yang dapat terdiri dari berbagai field, dan subfield seperti berikut ini:
1. NOMOR-JAMINAN-SOSIAL
2. NAMA, yang terdiri atas:
NAMA-BELAKANG
NAMA-DEPAN
NAMA-TENGAH
3. ALAMAT, terdiri atas:
JALAN
NOMOR RUMAH
NAMA-JALAN
KOTA
NEGARA-BAGIAN
KODE-POS
4. MENIKAH
dan sebagainya lagi.
Pada record tersebut di atas, satuan data seperti NAMA BELAKANG ataupun KOTA
merupakan tipe data string, sedangkan data lain seperti GAJI POKOK, TUNJANGAN
JABATAN dan berbagai data yang akan diolah secara matematis akan disimpan dengan
tipe data numerik, bisa integer maupun real. Data MENIKAH bisa digunakan tipe data
boolean atau logikal.
Seperti telah kita paparkan terdahulu, array berbeda dengan record, yakni array bersifat
homogen (terdiri dari tipe data yang sama), dan komponen array tidak memiliki nama
sendiri, dan hanya diberi identifikasi oleh posisi mereka di dalam array. Penggunaan
keduanya di dalam program juga berbeda, jika penggunaan array pada umumnya akan
disimpan di memori utama komputer (bersifat sementara), sedangkan record biasanya
digunakan dalam filing yang akan disimpan di memori sekunder komputer, seperti hard
disk, disket, dan lainnya.
Sebuah record memberi informasi tentang berbagai kondisi dari obyek padapermasalahan yang nyata sehari-hari. Setiap field memberi uraian tentang satu atribut dari
obyeknya. Sebuah record biasanya diberi identifikasi oleh key-nya. Key atau kunci adalah
salah satu atau lebih field yang dipilih untuk tujuan penyampaian informasi yang terjadi
di dalam record yang bersangkutan.
Koleksi dari record yang sama struktur fieldnya disebut suatu file atau berkas. Jadi, koleksi
dari record semua pegawai perusahaan membentuk sebuah file personalia. Pada umumnya
record disimpan membentuk file, dalam urutan sesuai dengan nilai dari key masing-masing.
Di dalam suatu file PERSONALIA, field NOMOR JAMINAN SOSIAL dari seorang pegawai
dapat digunakan sebagai key. Di dalam bahasa pemrograman tingkat tinggi, record dapat
dinyatakan sebagai struktur data (COBOL dan PL/1) dapat diadakan spesifikasi tentang
nama record, field dan subfield yang bersangkutan.
JENIS – JENIS DATA
A. Definisi data
Beberapa definisi tentang data dari sudut pandang yang berbeda – beda:
• Menurut berbagai kamus bahasa Inggris-Indonesia, data diterjemahkan sebagai istilah yang berasal dari kata “datum” yang berarti fakta atau bahan-bahan keterangan.
• Dari sudut pandang bisnis, data bisnis (business data) adalah deskripsi organisasi tentang sesuatu(resources) dan kejadian (transactions) yang terjadi (business data is an organization’s description of things (resources)and events (transactions) that it faces).
• Data adalah deskripsi dari sesuatu dan kejadian yang kita hadapi.
• Data adalah kenyataan yang menggambarkan suatu kejadian-kejadian dan kesatuan nyata. Kejadian adalah sesuatu yang terjadi pada saat tertentu. Kesatuan nyata adalah berupa suatu objek nyata seperti tempat, benda dan orang yang betul-betul ada dan terjadi.
B. Tipe data
Secara sederhana tipe data dapat didefinisikan dengan istilah tempat untuk menentukan pemberian nilai terhadap suatu variabel sesuai atau tidak dengan nilai yang diberikan oleh user. Dalam versi lain tipe data juga diartikan sebagai batasan terhadap fungsi tanda pengenal terhadap semua nilai yang diterima. logika yang dapat kita berikan adalah ketika kita menempatkan tanda pengenal harga hanya mengenal angka, maka ketika kita memberikan nilai berupa string maka secara otomatis data tersebut akan ditolak karena nilai tersebut tidak dikenali oleh tipe data yang diberikan.
1 Tipe Data Numeric Integer
Tipe data integer merupakan tipe data bilangan bulat yang hanya mengenal bilangan decimal. Dimana tipe data Integer tidak mengenal pecahan
Bentuk Umum
Var
Nil1:integer;
Begin
Nil1:=5000;
2.2.2 Tipe Data Real
Tipe data numeric real adalah tipe data dari suatu tanda pengenal selain mengenal bilangan bulat utuh tipe data ini juga mengenal nilai angka yang mengenal pecahan.
Bentuk Umum
Var
Nil:real;
Begin
Nil1:=20,5;
2. Tipe Data String
Tipe data string merupakan salah satu jens tipe data selain mengenal angak disini tipe data dapat juga mengenla data berupa huruf maupun tanda baca.
Bentuk umum
Var
Nama:string;
Begin
Nama:=’Anton’;
2.2.4 Tipe Data Char
Secara fungsi tipe data char sama dengan tipe data string tetapi dari segi kapsitas ruang diperoleh tipe data char jauh lebih sedikit karena hanya mengenal 1 karakter.
3. Deklarasi data
Dalam setiap penulisan bahasa pemograman deklarasi sangat digunakan apabila dalam penulisan program dibutuhkan indentifier atau tanda pengenal. Indentifier pada umumnya di buat oleh progremmmer yang digunakan untuk mewakili nilai dari suatu object.
Indentifier yang dikenal dalam Delphi adalah label, konstanta, tipe, fungsi, procedure maupun variabel.
a. Deklarasi Konstanta
Deklarasi konstanta adalah tanda pengenal dalam Delphi yang mempunyai nilai yang sudah tetap. Definisi konstanta diawali dengan kata baku Const diikuti dengan kumpulan indentifier yang diberi sebuah nilai.
Contoh
procedure TForm2.etertulisChange(Sender: TObject);
const
nil1:=’30000′;
begin
end;
b. Deklarasi Variabel
Deklarasi variabel adalah tanda pengenal dalam Delphi yang mempunyai nilai yang mana nilai tersebut akan terus berubah selama proses berjalan. Definisi variabel diawali dengan kata baku Var diikuti dengan kumpulan identifier yang diikuti dengan tipe data yang dibutuhkan.
Contoh
procedure TForm2.EpraktekKeyPress(Sender: TObject; var Key: Char);
var
praktek,nil2,nil1 :real;
begin
if (key = #13) then
begin
nil1 := strtofloat(ehtulis.Text);
praktek:= strtofloat(epraktek.Text);
nil2:= 0.4 * praktek;
ehpraktek.Text := floattostr(nil2);
form2.ActiveControl := cmi;
emurni.Text := floattostr(nil1 + nil2);
if nil1 > 60 then
egrade.Text := ‘Lulus’
else
egrade.Text := ‘Gagal’
end;
4. Pemetaan organisasi
6 Fase proses pemetaaan organisasi : :
1. Pengumpulan data dan analisis
2. Perancangan basis data secara konseptual
3. Pemilihan DBMS
4. Perancangan basis data secara logika (data model mapping)
5. Perancangan basis data secara fisik
6. Implementasi Sistem basis data.
Beberapa definisi tentang data dari sudut pandang yang berbeda – beda:
• Menurut berbagai kamus bahasa Inggris-Indonesia, data diterjemahkan sebagai istilah yang berasal dari kata “datum” yang berarti fakta atau bahan-bahan keterangan.
• Dari sudut pandang bisnis, data bisnis (business data) adalah deskripsi organisasi tentang sesuatu(resources) dan kejadian (transactions) yang terjadi (business data is an organization’s description of things (resources)and events (transactions) that it faces).
• Data adalah deskripsi dari sesuatu dan kejadian yang kita hadapi.
• Data adalah kenyataan yang menggambarkan suatu kejadian-kejadian dan kesatuan nyata. Kejadian adalah sesuatu yang terjadi pada saat tertentu. Kesatuan nyata adalah berupa suatu objek nyata seperti tempat, benda dan orang yang betul-betul ada dan terjadi.
B. Tipe data
Secara sederhana tipe data dapat didefinisikan dengan istilah tempat untuk menentukan pemberian nilai terhadap suatu variabel sesuai atau tidak dengan nilai yang diberikan oleh user. Dalam versi lain tipe data juga diartikan sebagai batasan terhadap fungsi tanda pengenal terhadap semua nilai yang diterima. logika yang dapat kita berikan adalah ketika kita menempatkan tanda pengenal harga hanya mengenal angka, maka ketika kita memberikan nilai berupa string maka secara otomatis data tersebut akan ditolak karena nilai tersebut tidak dikenali oleh tipe data yang diberikan.
1 Tipe Data Numeric Integer
Tipe data integer merupakan tipe data bilangan bulat yang hanya mengenal bilangan decimal. Dimana tipe data Integer tidak mengenal pecahan
Bentuk Umum
Var
Nil1:integer;
Begin
Nil1:=5000;
2.2.2 Tipe Data Real
Tipe data numeric real adalah tipe data dari suatu tanda pengenal selain mengenal bilangan bulat utuh tipe data ini juga mengenal nilai angka yang mengenal pecahan.
Bentuk Umum
Var
Nil:real;
Begin
Nil1:=20,5;
2. Tipe Data String
Tipe data string merupakan salah satu jens tipe data selain mengenal angak disini tipe data dapat juga mengenla data berupa huruf maupun tanda baca.
Bentuk umum
Var
Nama:string;
Begin
Nama:=’Anton’;
2.2.4 Tipe Data Char
Secara fungsi tipe data char sama dengan tipe data string tetapi dari segi kapsitas ruang diperoleh tipe data char jauh lebih sedikit karena hanya mengenal 1 karakter.
3. Deklarasi data
Dalam setiap penulisan bahasa pemograman deklarasi sangat digunakan apabila dalam penulisan program dibutuhkan indentifier atau tanda pengenal. Indentifier pada umumnya di buat oleh progremmmer yang digunakan untuk mewakili nilai dari suatu object.
Indentifier yang dikenal dalam Delphi adalah label, konstanta, tipe, fungsi, procedure maupun variabel.
a. Deklarasi Konstanta
Deklarasi konstanta adalah tanda pengenal dalam Delphi yang mempunyai nilai yang sudah tetap. Definisi konstanta diawali dengan kata baku Const diikuti dengan kumpulan indentifier yang diberi sebuah nilai.
Contoh
procedure TForm2.etertulisChange(Sender: TObject);
const
nil1:=’30000′;
begin
end;
b. Deklarasi Variabel
Deklarasi variabel adalah tanda pengenal dalam Delphi yang mempunyai nilai yang mana nilai tersebut akan terus berubah selama proses berjalan. Definisi variabel diawali dengan kata baku Var diikuti dengan kumpulan identifier yang diikuti dengan tipe data yang dibutuhkan.
Contoh
procedure TForm2.EpraktekKeyPress(Sender: TObject; var Key: Char);
var
praktek,nil2,nil1 :real;
begin
if (key = #13) then
begin
nil1 := strtofloat(ehtulis.Text);
praktek:= strtofloat(epraktek.Text);
nil2:= 0.4 * praktek;
ehpraktek.Text := floattostr(nil2);
form2.ActiveControl := cmi;
emurni.Text := floattostr(nil1 + nil2);
if nil1 > 60 then
egrade.Text := ‘Lulus’
else
egrade.Text := ‘Gagal’
end;
4. Pemetaan organisasi
6 Fase proses pemetaaan organisasi : :
1. Pengumpulan data dan analisis
2. Perancangan basis data secara konseptual
3. Pemilihan DBMS
4. Perancangan basis data secara logika (data model mapping)
5. Perancangan basis data secara fisik
6. Implementasi Sistem basis data.
Langganan:
Postingan (Atom)