Kamis, 27 Februari 2014

Offline Installer untuk Adobe flash player

Buat sobat yang mau download offline installer flash player, gunakan alamat berikut:

untuk IE:
http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_14_active_x.exe

untuk Mozilla Firefox:
http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_14_plugin.exe

ganti 14 dengan versi terakhir atau versi yang ingin didownload. saat ini versi terakhir adalah versi 14. Bila nanti versi 15 sudah direlease, tinggal ganti angka14 menjadi 15.

Semoga bermanfaat.



Senin, 24 Februari 2014

How to disable and re-enable hibernation on a computer that is running Windows


To make hibernation unavailable, follow these steps:
  1. Click Start, and then type cmd in the Start Search box.
  2. In the search results list, right-click Command Prompt, and then click Run as Administrator.
  3. When you are prompted by User Account Control, click Continue.
  4. At the command prompt, type powercfg.exe /hibernate off, and then press Enter.
  5. Type exit, and then press Enter to close the Command Prompt window.
To make hibernation available, follow these steps:
  1. Click Start, and then type cmd in the Start Search box.
  2. In the search results list, right-click Command Prompt, and then click Run as Administrator.
  3. When you are prompted by User Account Control, click Continue.
  4. At the command prompt, type powercfg.exe /hibernate on, and then press Enter.
  5. Type exit, and then press Enter to close the Command Prompt window.


Sejarah Komputer



Ivan Sudirman
ivan@wiraekabhakti.co.id

Romi Satria Wahono 
romi@romisatriawahono.net



Lisensi Dokumen:
Copyright © 2003 IlmuKomputer.Com
Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.


Sejak dahulu kala, proses pengolahan data telah dilakukan oleh manusia. Manusia juga menemukan alat-alat mekanik dan elektronik untuk membantu manusia dalam penghitungan dan pengolahan data supaya bisa mendapatkan hasil lebih cepat. Komputer yang kita temui saat ini adalah suatu evolusi panjang dari penemuan-penemuan manusia sejah dahulu kala berupa alat mekanik maupun elektronik.

Saat ini komputer dan piranti pendukungnya telah masuk dalam setiap aspek kehidupan dan pekerjaan. Komputer yang ada sekarang memiliki kemampuan yang lebih dari sekedar perhitungan matematik biasa. Diantaranya adalah sistem komputer di kassa supermarket yang mampu membaca kode barang belanjaan, sentral telepon yang menangani jutaan panggilan dan komunikasi, jaringan komputer dan internet yang mennghubungkan berbagai tempat di dunia.

Bagaimanapun juga alat pengolah data dari sejak jaman purba sampai saat ini bisa kita golongkan ke dalam 4 golongan besar.
1.       Peralatan manual: yaitu peralatan pengolahan data yang sangat sederhana, dan faktor terpenting dalam pemakaian alat adalah menggunakan tenaga tangan manusia
2.       Peralatan Mekanik: yaitu peralatan yang sudah berbentuk mekanik yang digerakkan dengan tangan secara manual
3.       Peralatan Mekanik Elektronik: Peralatan mekanik yang digerakkan oleh secara otomatis oleh motor elektronik
4.       Peralatan Elektronik: Peralatan yang bekerjanya secara elektronik penuh

Tulisan ini akan memberikan gambaran tentang sejarah komputer dari masa ke masa, terutama alat pengolah data pada golongan 2, 3, dan 4. Klasifikasi komputer berdasarkan Generasi juga akan dibahas secara lengkap pada tulisan ini.





ALAT HITUNG TRADISIONAL dan KALKULATOR MEKANIK

Abacus, yang muncul sekitar 5000 tahun yang lalu di Asia kecil dan masih digunakan di beberapa tempat hingga saat ini, dapat dianggap sebagai awal mula mesin komputasi.


Alat ini memungkinkan penggunanya untuk melakukan perhitungan menggunakan biji-bijian geser yang diatur pada sebuh rak.  Para pedagang di masa itu menggunakan abacus untuk menghitung transaksi perdagangan.  Seiring dengan munculnya pensil dan kertas, terutama di Eropa, abacus kehilangan popularitasnya.

Setelah hampir 12 abad, muncul penemuan lain dalam hal mesin komputasi.  Pada tahun 1642, Blaise Pascal (1623-1662), yang pada waktu itu berumur 18 tahun, menemukan apa yang ia sebut sebagai kalkulator roda numerik (numerical wheel calculator) untuk membantu ayahnya melakukan perhitungan pajak.


Kotak persegi kuningan ini yang dinamakan Pascaline, menggunakan delapan roda putar bergerigi untuk menjumlahkan bilangan hingga delapan digit.  Alat ini merupakan alat penghitung bilangan berbasis sepuluh.  Kelemahan alat ini adalah hanya terbataas untuk melakukan penjumlahan.

Tahun 1694, seorang matematikawan dan filsuf Jerman, Gottfred Wilhem von Leibniz (1646-1716) memperbaiki Pascaline dengan membuat mesin yang dapat mengalikan.  Sama seperti pendahulunya, alat mekanik ini bekerja dengan menggunakan roda-roda gerigi.

Dengan mempelajari catatan dan gambar-gambar yang dibuat oleh Pascal, Leibniz dapat menyempurnakan alatnya.  Barulah pada tahun 1820, kalkulator mekanik mulai populer.  Charles Xavier Thomas de Colmar menemukan mesin yang dapat melakukan empat fungsi aritmatik dasar.  Kalkulator mekanik Colmar, arithometer, mempresentasikan pendekatan yang lebih praktis dalam kalkulasi karena alat tersebut dapat melakukan penjumlahan, pengurangan, perkalian, dan pembagian.  Dengan kemampuannya, arithometer banyak dipergunakan hingga masa Perang Dunia I.  Bersama-sama dengan Pascal dan Leibniz, Colmar membantu membangun era komputasi mekanikal.

Awal mula komputer yang sebenarnya dibentuk oleh seoarng profesor matematika Inggris, Charles Babbage (1791-1871).  Tahun 1812, Babbage memperhatikan kesesuaian alam antara mesin mekanik dan matematika:mesin mekanik sangat baik dalam mengerjakan tugas yang sama berulangkali tanpa kesalahan; sedang matematika membutuhkan repetisi sederhana dari suatu langkah-langkah tertenu.  Masalah tersebut kemudain berkembang hingga menempatkan mesin mekanik sebagai alat untuk menjawab kebutuhan mekanik.  Usaha Babbage yang pertama untuk menjawab masalah ini muncul pada tahun 1822 ketika ia mengusulkan suatu mesin untuk melakukan perhitungan persamaan differensil.  Mesin tersebut dinamakan Mesin Differensial.  Dengan menggunakan tenaga uap, mesin tersebut dapat menyimpan program dan dapat melakukan kalkulasi serta mencetak hasilnya secara otomatis.  Setelah bekerja dengan Mesin Differensial selama sepuluh tahun, Babbage tiba-tiba terinspirasi untuk memulai membuat komputer general-purpose yang pertama, yang disebut Analytical Engine.  Asisten Babbage, Augusta Ada King (1815-1842) memiliki peran penting dalam pembuatan mesin ini.  Ia membantu merevisi rencana, mencari pendanaan dari pemerintah Inggris, dan mengkomunikasikan spesifikasi Anlytical Engine kepada publik.  Selain itu, pemahaman Augusta yang baik tentang mesin ini memungkinkannya membuat instruksi untuk dimasukkan ke dlam mesin dan juga membuatnya menjadi programmer wanita yang pertama.  Pada tahun 1980, Departemen Pertahanan Amerika Serikat menamakan sebuah bahasa pemrograman dengan nama ADA sebagai penghormatan kepadanya.

Mesin uap Babbage, walaupun tidak pernah selesai dikerjakan, tampak sangat primitif apabila dibandingkan dengan standar masa kini.  Bagaimanapun juga, alat tersebut menggambarkan elemen dasar dari sebuah komputer modern dan juga mengungkapkan sebuah konsep penting.  Terdiri dari sekitar 50.000 komponen, desain dasar dari Analytical Engine menggunakan kartu-kartu perforasi (berlubang-lubang) yang berisi instruksi operasi bagi mesin tersebut.
Pada 1889, Herman Hollerith (1860-1929) juga menerapkan prinsip kartu perforasi untuk melakukan penghitungan.  Tugas pertamanya adalah menemukan cara yang lebih cepat untuk melakukan perhitungan bagi Biro Sensus Amerika Serikat.  Sensus sebelumnya yang dilakukan di tahun 1880 membutuhkan waktu tujuh tahun untuk menyelesaikan perhitungan.  Dengan berkembangnya populasi, Biro tersebut memperkirakan bahwa dibutuhkan waktu sepuluh tahun untuk menyelesaikan perhitungan sensus.



Hollerith menggunakan kartu perforasi untuk memasukkan data sensus yang kemudian diolah oleh alat tersebut secara mekanik.  Sebuah kartu dapat menyimpan hingga 80 variabel.  Dengan menggunakan alat tersebut, hasil sensus dapat diselesaikan dalam waktu enam minggu.  Selain memiliki keuntungan dalam bidang kecepatan, kartu tersebut berfungsi sebagai media penyimpan data.  Tingkat kesalahan perhitungan juga dpat ditekan secara drastis.  Hollerith kemudian mengembangkan alat tersebut dan menjualny ke masyarakat luas.  Ia mendirikan Tabulating Machine Company pada tahun 1896 yang kemudian menjadi International Business Machine (1924) setelah mengalami beberapa kali merger.  Perusahaan lain seperti Remington Rand and Burroghs juga memproduksi alat pembac kartu perforasi untuk usaha bisnis.  Kartu perforasi digunakan oleh kalangan bisnis dn pemerintahan untuk permrosesan data hingga tahun 1960.

Pada masa berikutnya, beberapa insinyur membuat p enemuan baru lainnya.  Vannevar Bush (18901974) membuat sebuah kalkulator untuk menyelesaikan persamaan differensial di tahun 1931.  Mesin tersebut dapat menyelesaikan persamaan differensial kompleks yang selama ini dianggap rumit oleh kalangan akademisi.  Mesin tersebut sangat besar dan berat karena ratusan gerigi dan poros yang dibutuhkan untuk melakukan perhitungan.  Pada tahun 1903, John V. Atanasoff dan Clifford Berry mencoba membuat komputer elektrik yang menerapkan aljabar Boolean pada sirkuit elektrik.  Pendekatan ini didasarkan pada hasil kerja George Boole (1815-1864) berupa sistem biner aljabar, yang menyatakan bahwa setiap persamaan matematik dapat dinyatakan sebagai benar atau salah.  Dengan mengaplikasikan kondisi benar-salah ke dalam sirkuit listrik dalam bentuk terhubung-terputus, Atanasoff dan Berry membuat komputer elektrik pertama di tahun 1940. 
Namun proyek mereka terhenti karena kehilangan sumber pendanaan.


KOMPUTER GENERASI PERTAMA

Dengan terjadinya Perang Dunia Kedua, negara-negara yang terlibat dalam perang tersebut berusaha mengembangkan komputer untuk mengeksploit potensi strategis yang dimiliki komputer.  Hal ini meningkatkan pendanaan pengembangan komputer serta mempercepat kemajuan teknik komputer.  Pada tahun 1941, Konrad Zuse, seorang insinyur Jerman membangun sebuah komputer, Z3, untuk mendesain pesawat terbang dan peluru kendali



Pihak sekutu juga membuat kemajuan lain dalam pengembangan kekuatan komputer.  Tahun 1943, pihak Inggris menyelesaikan komputer pemecah kode rahasia yang dinamakan Colossus untuk memecahkan kode-rahasia yang digunakan Jerman.  Dampak pembuatan Colossus tidak terlalu mempengaruhi perkembangan industri komputer dikarenakan dua alasan.  Pertama, colossus bukan merupakan komputer serbaguna (general-purpose computer), ia hanya didesain untuk memecahkan kode rahasia.  Kedua, keberadaan mesin ini dijaga kerahasiaannya hingga satu dekade setelah perang berakhir.



Usaha yang dilakukan oleh pihak Amerika pada saat itu menghasilkan suatu kemajuan lain.  Howard H. Aiken (1900-1973), seorang insinyur Harvard yang bekerja dengan IBM, berhasil memproduksi kalkulator elektronik untuk US Navy. Kalkulator tersebut berukuran panjang setengah lapangan bola kaki dan memiliki rentang kabel sepanjang 500 mil.  The Harvd-IBM Automatic Sequence Controlled  Calculator, atau Mark I, merupakan komputer relai elektronik.  Ia menggunakan sinyal elektromagnetik untuk menggerakkan komponen mekanik.  Mesin tersebut beropreasi dengan lambat (ia membutuhkan 3-5 detik untuk setiap perhitungan) dan tidak fleksibel (urutan kalkulasi tidak dapat diubah).  Kalkulator tersebut dapat melakukan perhitungan aritmatik dasar dan persamaan yang lebih kompleks.

Perkembangan komputer lain pada masa kini adalah Electronic Numerical Integrator and Computer (ENIAC), yang dibuat oleh kerjasama antara pemerintah Amerika Serikat dan University of Pennsylvania.  Terdiri dari 18.000 tabung vakum, 70.000 resistor, dan  5 juta titik solder, komputer tersebut merupakan mesin yang sangat besar yang mengkonsumsi daya sebesar 160kW.


Komputer ini dirancang oleh John Presper Eckert (1919-1995) dn John W. Mauchly (1907-1980), ENIAC merupakan komputer serbaguna (general purpose computer) yang bekerja 1000 kali lebih cepat dibandingkan Mark I.

Pada pertengahan 1940-an, John von Neumann (1903-1957) bergabung dengan tim University of Pennsylvania dalam usha membangun konsep desin komputer yang hingga 40 tahun mendatang masih dipakai dalam teknik komputer.  Von Neumann mendesain Electronic Discrete Variable Automatic Computer(EDVAC) pada tahun 1945 dengan sebuh memori untuk menampung baik program ataupun data.  Teknik ini memungkinkan komputer untuk berhenti pada suatu saat dan kemudian melanjutkan pekerjaannya kembali.  Kunci utama arsitektur von Neumann adalah unit pemrosesan sentral (CPU), yang memungkinkan seluruh fungsi komputer untuk dikoordinasikan melalui satu sumber tunggal.  Tahun 1951, UNIVAC I (Universal Automatic Computer I) yang dibuat oleh Remington Rand, menjadi komputer komersial pertama yang memanfaatkan model arsitektur von Neumann tersebut.




Baik Badan Sensus Amerika Serikat dan General Electric memiliki UNIVAC.  Salah satu hasil mengesankan yang dicapai oleh UNIVAC dalah keberhasilannya dalam memprediksi kemenangan Dwilight D. Eisenhower dalam pemilihan presiden tahun 1952.

Komputer Generasi pertama dikarakteristik dengan fakta bahwa instruksi operasi dibuat secara spesifik untuk suatu tugas tertentu.  Setiap komputer memiliki program kode-biner yang berbeda yang disebut “bahasa mesin” (machine language).  Hal ini menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya.

Ciri lain komputer generasi pertama adalah penggunaan tube vakum (yang membuat komputer pada masa tersebut berukuran sangat besar) dn silinder magnetik untuk penyimpanan data.


KOMPUTER GENERASI KEDUA

Pada tahun 1948, penemuan transistor sangat mempengaruhi perkembangan komputer.  Transistor menggantikan tube vakum di televisi, radio, dan komputer.  Akibatnya, ukuran mesin-mesin elektrik berkurang drastis.




Transistor mulai digunakan di dalam komputer mulai pada tahun 1956.  Penemuan lain yang berupa pengembangan memori inti-magnetik membantu pengembangan komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan lebih hemat energi dibanding para pendahulunya.  Mesin pertama yang memanfaatkan teknologi baru ini adalah superkomputer.  IBM membuat superkomputer bernama Stretch, dan Sprery-Rand membuat komputer bernama LARC.  Komputerkomputer ini, yang dikembangkan untuk laboratorium energi atom, dapat menangani sejumlah besar data, sebuah kemampuan yang sangat dibutuhkan oleh peneliti atom.  Mesin tersebut sangat mahal dan cenderung terlalu kompleks untuk kebutuhan komputasi bisnis, sehingga membatasi kepopulerannya. Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy Research and Development Center di Washington D.C.  Komputer generasi kedua menggantikan bahasa mesin dengan bahasa assembly.  Bahasa assembly adalah bahasa yang menggunakan singkatan-singakatan untuk menggantikan kode biner.

Pada awal 1960-an, mulai bermunculan komputer generasi kedua yang sukses di bidang bisnis, di universitas, dan di pemerintahan.  Komputer-komputer generasi kedua ini merupakan komputer yang sepenuhnya menggunakan transistor.  Mereka juga memiliki komponen-komponen yang dapat diasosiasikan dengan komputer pada saat ini: printer, penyimpanan dalam disket, memory, sistem operasi, dan program.



Salah satu contoh penting komputer pada masa ini adalah IBM 1401 yang diterima secaa luas di kalangan industri.  Pada tahun 1965, hampir seluruh bisnis-bisnis besar menggunakan komputer generasi kedua untuk memproses informasi keuangan.

Program yang tersimpan di dalam komputer dan bahasa pemrograman yang ada di dalamnya memberikan fleksibilitas kepada komputer.  Fleksibilitas ini meningkatkan kinerja dengan harga yang pantas bagi penggunaan bisnis.  Dengan konsep ini, komputer dapa tmencetak faktur pembelian konsumen dan kemudian menjalankan desain produk atau menghitung daftar gaji.  Beberapa bahasa pemrograman mulai bermunculan pada saat itu.  Bahasa pemrograman Common Business-Oriented Language (COBOL) dan Formula Translator (FORTRAN) mulai umum digunakan.  Bahasa pemrograman ini menggantikan kode mesin yang rumit dengan kata-kata, kalimat, dan formula matematika yang lebih mudah dipahami oleh manusia.  Hal ini memudahkan seseorang untuk memprogram dan mengatur komputer.  Berbagai macam karir baru bermunculan (programmer, analyst, dan ahli sistem komputer).  Industri piranti lunak juga mulai bermunculan dan berkembang pada masa komputer generasi kedua ini.


KOMPUTER GENERASI KETIGA

Walaupun transistor dalam banyak hal mengungguli tube vakum, namun transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak bagian-bagian internal komputer.  Batu kuarsa (quartz rock) menghilangkan masalah ini.  Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC : integrated circuit) di tahun 1958.  IC mengkombinasikan tiga komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir kuarsa.  Pada ilmuwan kemudian berhasil memasukkan lebih banyak komponen-komponen ke dalam suatu chip tunggal yang disebut semikonduktor.  Hasilnya, komputer menjadi semakin kecil karena komponenkomponen dapat dipadatkan dalam chip.  Kemajuan komputer generasi ketiga lainnya adalah penggunaan sistem operasi (operating system) yang memungkinkan mesin untuk menjalankan berbagai program yang berbeda secara serentak dengan sebuah program utama yang memonitor dan mengkoordinasi memori komputer.


KOMPUTER GENERASI KEEMPAT

Setelah IC, tujuan pengembangan menjadi lebih jelas: mengecilkan ukuran sirkuit dan komponenkomponen elektrik.  Large Scale Integration (LSI) dapat memuat ratusan komponen dalam sebuah chip.  Pada tahun 1980-an, Very Large Scale Integration (VLSI) memuat ribuan komponen dalam sebuah chip tunggal.



Ultra-Large Scale Integration (ULSI) meningkatkan jumlah tersebut menjadi jutaan.  Kemampuan untuk memasang sedemikian banyak komponen dalam suatu keping yang berukurang setengah keping uang logam mendorong turunnya harga dan ukuran komputer.  Hal tersebut juga meningkatkan daya kerja, efisiensi dan keterandalan komputer.  Chip Intel 4004 yang dibuat pada tahun 1971 membawa kemajuan pada IC dengan meletakkan seluruh komponen dari sebuah komputer (central processing unit, memori, dan kendali input/output) dalam sebuah chip yang sangat kecil.  Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang spesifik.  Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian diprogram untuk memenuhi seluruh kebutuhan yang diinginkan.  Tidak lama kemudian, setiap perangkat rumah tangga seperti microwave oven, televisi, dn mobil dengan electronic fuel injection dilengkapi dengan mikroprosesor.

Perkembangan yang demikian memungkinkan orang-orang biasa untuk menggunakan komputer biasa.  Komputer tidak lagi menjadi dominasi perusahaan-perusahaan besar atau lembaga pemerintah.  Pada pertengahan tahun 1970-an, perakit komputer menawarkan produk komputer mereka ke masyarakat umum.  Komputer-komputer ini, yang disebut minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh kalangan awam.  Piranti lunak yang paling populer pada saat itu adalah program word processing dan spreadsheet.  Pada awal 1980-an, video game seperti Atari 2600 menarik perhatian konsumen pada komputer rumahan yang lebih canggih dan dapat diprogram.




Pada tahun 1981, IBM memperkenalkan penggunaan Personal Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah.  Jumlah PC yang digunakan melonjak dari 2 juta unit di tahun 1981 menjadi 5,5 juta unit di tahun 1982.  Sepuluh tahun kemudian, 65 juta PC digunakan.  Komputer melanjutkan evolusinya menuju ukuran yang lebih kecil, dari komputer yang berada di atas meja (desktop computer) menjadi komputer yang dapat dimasukkan ke dalam tas (laptop), atau bahkan komputer yang dapat digenggam (palmtop).



IBM PC bersaing dengan Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh menjadi terkenal karena mempopulerkan sistem grafis pada komputernya, sementara saingannya masih menggunakan komputer yang berbasis teks.  Macintosh juga mempopulerkan penggunaan piranti mouse.

Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV (Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua masuk dalam golongan komputer generasi keempat.

Seiring dengan menjamurnya penggunaan komputer di tempat kerja, cara-cara baru untuk menggali potensial terus dikembangkan.  Seiring dengan bertambah kuatnya suatu komputer kecil, komputerkomputer tersebut dapat dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu dengan yang lainnya.  Komputer jaringan memungkinkan komputer tunggal untuk membentuk kerjasama elektronik untuk menyelesaikan suatu proses tugas.  Dengan menggunakan perkabelan langsung (disebut juga local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang menjadi sangat besar.


KOMPUTER GENERASI KELIMA

Mendefinisikan komputer generasi kelima menjadi cukup sulit karena tahap ini masih sangat muda. 
Contoh imajinatif komputer generasi kelima adalah komputer fiksi HAL9000 dari novel karya Arthur C. Clarke berjudul 2001:Space Odyssey. HAL menampilkan seluruh fungsi yang diinginkan dari sebuah komputer generasi kelima. Dengan kecerdasan buatan (artificial intelligence), HAL dapat cukup memiliki nalar untuk melakukan percapakan dengan manusia, menggunakan masukan visual, dan belajar dari pengalamannya sendiri.

Walaupun mungkin realisasi HAL9000 masih jauh dari kenyataan, banyak fungsi-fungsi yang dimilikinya sudah terwujud. Beberapa komputer dapat menerima instruksi secara lisan dan mampu meniru nalar manusia.  Kemampuan untuk menterjemahkan bahasa asing juga menjadi mungkin.  Fasilitas ini tampak sederhan.  Namun fasilitas tersebut menjadi jauh lebih rumit dari yang diduga ketika programmer menyadari bahwa pengertia manusia sangat bergantung pada konteks dan pengertian ketimbang sekedar menterjemahkan kata-kata secara langsung.

Banyak kemajuan di bidang desain komputer dan teknologi semkain memungkinkan pembuatan komputer generasi kelima.  Dua kemajuan rekayasa yang terutama adalah kemampuan pemrosesan paralel, yang akan menggantikan model non Neumann. Model non Neumann akan digantikan dengan sistem yang mampu mengkoordinasikan banyak CPU untuk bekerja secara serempak.  Kemajuan lain adalah teknologi superkonduktor yang memungkinkan aliran elektrik tanpa ada hambatan apapun, yang nantinya dapat mempercepat kecepatan informasi.

Jepang adalah negara yang terkenal dalam sosialisasi jargon dan proyek komputer generasi kelima. Lembaga ICOT (Institute for new Computer Technology) juga dibentuk untuk merealisasikannya. Banyak kabar yang menyatakan bahwa proyek ini telah gagal, namun beberapa informasi lain bahwa keberhasilan proyek komputer generasi kelima ini akan membawa perubahan baru paradigma komputerisasi di dunia. Kita tunggu informasi mana yang lebih valid dan membuahkan hasil. 

Belajar PHP Bagian 5

 

Membangkitkan Kenangan

Jika Anda masih juga membaca artikel bagian kelima ini, artinya Anda benar-benar tangguh dan berkemauan kuat. Perjalanan yang cukup panjang dan melelahkan pada bagian-bagian sebelumnya telah cukup banyak memberikan bekal bagi Anda untuk membangun sendiri situs-situs dinamis dengan skrip PHP.
Pada bagian keempat, Anda telah melihat betapa PHP dapat digunakan untuk mengakses basis data MySQL. PHP dapat menyimpan, mencari, memperbaiki, dan menghapus informasi yang tersimpan pada basis data MySQL dengan sangat mudah dan sederhana. Anda ternyata tidak perlu sering mengkerutkan kening Anda. Memang inilah salah satu kekuatan PHP, kemudahan koneksi dengan basis data, bukan hanya dengan basis data MySQL, tapi juga dengan banyak basis data populer lainnya.
Dalam kenyataanya, kita sering mengalami bahwa data tidak tersimpan secara rapi dalam baris dan kolom basis data, dan seringkali juga Anda harus menyimpan suatu informasi dalam model file teks ASCII. Problem utama menjadi muncul, karena ternyata Anda belum mengetahui caranya.
Ada tiga pilihan untuk menghadapi situasi ini. Pilihan pertama Anda dapat menyuruh seseorang untuk memasukkan data-data tersebut ke dalam basis data. Pilihan kedua Anda dapat mengangkat tangan sebahu dan kemudian menghela nafas panjang sembari memutuskan untuk keluar dari pekerjaan Anda sekarang. Pilihan yang lain, Anda dapat menggunakan PHP untuk menyelesaikan problem Anda.
Karena Anda telah menunjukkan ketangguhan Anda untuk belajar PHP, saya yakin pilihan ketiga yang akan Anda ambil, dan inilah isi dari bagian kelima artikel PHP? Siapa Takut!
Pada bagian akhir artikel terakhir ini, kita juga akan mempelajari mengenai pembuatan fungsi-fungsi pada skrip PHP, yang akan membantu kemalasan kita untuk menulis bagian skrip berulang-ulang. Kencangkan sabuk pengaman Anda, dan kita masuki putaran final perjalanan kita.

Ditemukan Manuskrip Tua

Seperti juga bahasa pemrograman yang lain, PHP juga dilengkapi dengan fungsi-fungsi yang lengkap untuk menulis dan membaca file dengan mudah. Mari kita buat dulu sebuah file teks yang akan kita beri nama manuskrip.txt sebagai berikut.


Beribu abad yang lalu, kami adalah ras cerdas yang hidup dan berkelana ke seluruh penjuru jagad raya ini. Ketika kami sampai pada masa di mana ras kami tidak mampu mempertahankan populasi dan menuju kepunahan, kami menciptakan sebuah program protein yang membawa kode genetik dasar ras kami. Protein ini mampu berevolusi selama ribuan abad sampai akhirnya akan membentuk ras cerdas serupa kami. Kami sebarkan program ini pada sistem-sistem planet yang mampu mendukung evolusi program kami.

Jika kalian menemukan manuskrip ini, maka itulah tanda bahwa program protein kami telah berhasil membentuk kalian menjadi ras cerdas yang menguasai jagad raya ini, seperti harapan kami.
 
Sebelum Anda dapat menggunakan PHP untuk membaca isi dari file ini, Anda harus memastikan bahwa Anda memiliki permission untuk membacanya. Pada sistem berbasis Unix/Linux, hal ini dapat diyakinkan dengan perintah:

$ chmod 744 manuskrip.txt
Kini kita buat skrip PHP sederhana untuk membaca file tersebut dan menunjukkan isi serta ukuran file:

<?php

    // baca file
    $ukuran_file = readfile("manuskrip.txt");
    
    // tampilkan ukuran file
    echo "<br>Ukuran File = $ukuran_file byte.";
    
?>
Maka hasil tampilannya kurang lebih seperti ini.



Beribu abad yang lalu, kami adalah ras cerdas yang hidup dan berkelana ke seluruh penjuru jagad raya ini. Ketika kami sampai pada masa di mana ras kami tidak mampu mempertahankan populasi dan menuju kepunahan, kami menciptakan sebuah program protein yang membawa kode genetik dasar ras kami. Protein ini mampu berevolusi selama ribuan abad sampai akhirnya akan membentuk ras cerdas serupa kami. Kami sebarkan program ini pada sistem-sistem planet yang mampu mendukung evolusi program kami. Jika kalian menemukan manuskrip ini, maka itulah tanda bahwa program protein kami telah berhasil membentuk kalian menjadi ras cerdas yang menguasai jagad raya ini, seperti harapan kami.
Ukuran File = 681 byte.
 
Fungsi readfile() ternyata hanya sederhana tugasnya; membaca file dan menampilkan isinya. Fungsi ini juga menghasilkan ukuran file yang kita tampilkan pada skrip PHP di atas melalui perintah echo.
Begitu sederhananya, sehingga mungkin kita tidak akan begitu sering menggunakan fungsi readfile(). Kita membutuhkan fungsi yang lebih berguna lagi, yang selain melakukan apa yang dapat dilakukan fungsi readfile(), dapat digunakan untuk memformat data yang dibaca. Cobalah gunakan fungsi file() yang akan menghasilkan pembacaan file dalam bentuk variabel array PHP. Setiap elemen pada variabel array tersebut mewakili satu baris dalam file yang dibaca, dan jumlah elemen variabel array yang ada akan menunjukkan jumlah baris dalam file. Skrip PHP berikut ini akan lebih memberi kejelasan.

<?php

    // tentukan nama file yang akan dibaca
    $nama_file = "manuskrip.txt";
    
    // baca file, masukkan ke array
    $isi = file($nama_file);
    
    // cari jumlah baris
    $jumlah_baris = sizeof($isi);
    
    echo "File $nama_file berisi $jumlah_baris baris.<p>";
    
    // tampilkan hasil pembacaan baris per baris dengan perulangan for
    for ($i=0; $i<$jumlah_baris; $i++)
    {
         echo "Baris ".($i+1)." : <br>";
         echo $isi[$i]."<br>";
    }
    
?>
Pada skrip PHP di atas kita menggunakan fungsi file() untuk membaca isi file yang ditunjuk oleh variabel $nama_file dan baris demi baris isi file tersebut disimpan dalam variabel array $isi. Jumlah elemen dari variabel $isi didapatkan dengan menggunakan fungsi sizeof(), dan hasilnya disimpan dalam variabel $jumlah_baris. Baris demi baris isi dari file yang tersimpan pada elemen-elemen variabel array $isi ditampilkan dengan menggunakan perulangan for.
Hasil dari skrip PHP di atas adalah sebagai berikut.



File manuskrip.txt berisi 3 baris.
Baris 1 :
Beribu abad yang lalu, kami adalah ras cerdas yang hidup dan berkelana ke seluruh penjuru jagad raya ini. Ketika kami sampai pada masa di mana ras kami tidak mampu mempertahankan populasi dan menuju kepunahan, kami menciptakan sebuah program protein yang membawa kode genetik dasar ras kami. Protein ini mampu berevolusi selama ribuan abad sampai akhirnya akan membentuk ras cerdas serupa kami. Kami sebarkan program ini pada sistem-sistem planet yang mampu mendukung evolusi program kami.
Baris 2 :

Baris 3 :
Jika kalian menemukan manuskrip ini, maka itulah tanda bahwa program protein kami telah berhasil membentuk kalian menjadi ras cerdas yang menguasai jagad raya ini, seperti harapan kami.
 

Hilang Tak Berbekas

Skrip PHP di atas, semuanya dibuat dengan asumsi dasar bahwa file yang berusaha dibaca oleh skrip PHP telah tersedia. Dalam kenyataannya bisa saja file yang dimaksud tidak belum ada. Kondisi ini dapat menyebabkan waktu Anda terbuang untuk mencari kesalahan program. Anda dapat menghindari kejadian semacam ini dengan fungsi file_exists() yang dapat digunakan untuk menguji keberadaan file dan menampilkan pesan kesalahan yang sesuai jika file tersebut tidak ditemukan. Anda dapat dimodifikasi skrip PHP sebelumnya, sehingga menjadi seperti berikut ini (perubahan ditunjukkan dengan huruf tebal).

<?php

    // tentukan nama file yang akan dibaca
    $nama_file = "manuskrip.txt";

    // cek keberadaan file
    if (file_exists($nama_file))
    {
         // baca file, masukkan ke array
         $isi = file($nama_file);

         // cari jumlah baris
         $jumlah_baris = sizeof($isi);

         echo "File $nama_file berisi $jumlah_baris baris.<p>";
         
         // tampilkan hasil pembacaan baris per baris dengan perulangan for
         for ($i=0; $i<$jumlah_baris; $i++)
         {
              echo "Baris ".($i+1)." : <br>";
              echo $isi[$i]."<br>";
         }

    }
    else
    {
    
         echo "<b>File tidak ditemukan!</b>";
         
    }

?>
Jalankan program di atas dengan sebelumnya mengganti nama file manuskrip.txt atau dengan menghapus file tersebut. Maka pesan kesalahan File tidak ditemukan! akan muncul pada browser Anda.
PHP juga menawarkan banyak fungsi yang dapat memberikan informasi lebih detil mengenai keadaan sebuah file, berikut ini di antaranya:
  • is_dir()
    Untuk mengetahui apakah file yang ditunjuk merupakan direktori atau bukan.
  • is_link()
    Untuk mengetahui apakah file yang ditunjuk merupakan file link.
  • is_executable()
    Untuk mengetahui apakah file yang ditunjuk dapat dieksekusi dari shell.
  • is_readable()
    Untuk mengetahui apakah file yang ditunjuk merupakan file yang dapat dibaca.
  • is_writable()
    Untuk mengetahui apakah file yang ditunjuk merupakan file yang dapat ditulis.
  • fileowner()
    Untuk mendapatkan id pengguna pemilik file.
  • filegroup()
    Untuk mendapatkan id group pengguna pemilik file.
  • fileperms()
    Untuk mendapatkan jenis permission dari suatu file.
  • filesize()
    Untuk mendapatkan ukuran dari suatu file.
  • filetype()
    Untuk mendapatkan jenis dari suatu file.
Fungsi-fungsi di atas sebagian besar hanya berarti pada implementasi PHP di sistem file berbasis Unix/Linux. Anda tidak akan mendapatkan hasil yang akurat jika fungsi-fungsi tersebut dijalankan pada sistem operasi lain, misalnya MS Windows 9x atau NT/2000/XP.
Anda dapat mencoba skrip berikut ini pada sistem Unix/Linux Anda. Hasilnya mungkin akan sangat berbeda jika Anda jalankan skrip ini pada sistem operasi yang lain

<?php

    // tentukan nama file yang akan dibaca
    $nama_file = "manuskrip.txt";

    // cek keberadaan file
    if (file_exists($nama_file))
    {
          echo "Nama File : <b>$nama_file</b><br>";
          
          // check apakah file merupakan direktori
          if (is_dir($nama_file))
          {
               echo "File adalah direktori.<br>";
          }

          // check apakah file merupakan link
          if (is_link($nama_file))
          {
               echo "File adalah link.<br>";
          }

          // check apakah file executable
          if (is_executable($nama_file))
          {
               echo "File sifatnya executable.<br>";
          }

          // check apakah file readable
          if (is_readable($nama_file))
          {
               echo "File sifatnya readable.<br>";
          }

          // check apakah file writable
          if (is_writable($nama_file))
          {
               echo "File sifatnya writable.<br>";
          }
          
          echo "Ukuran File : ".filesize($nama_file)."<br>";
          echo "Pemilik File : ".fileowner($nama_file)."<br>";
          echo "Group Pemilik File : ".filegroup($nama_file)."<br>";
          echo "Permission File : ".fileperms($nama_file)."<br>";
          echo "Jenis File : ".filetype($nama_file)."<br>";
    }
    else
    {
         echo "<b>File tidak ditemukan!</b>";
    }

?>
Pada sistem Unix/Linux, Anda akan mendapatkan hasil sebagai berikut:


Nama File : manuskrip.txt
File sifatnya readable.
File sifatnya writable.
Ukuran File : 681
Pemilik File : 538
Group Pemilik File : 100
Permission File : 33188
Jenis File : file

Pada sistem MS Windows 98, Anda kemungkinan akan mendapatkan hasil sebagai berikut:


Nama File : manuskrip.txt
File sifatnya readable.
File sifatnya writable.
Ukuran File : 681
Pemilik File : 0
Group Pemilik File : 0
Permission File : 33206
Jenis File : file

Inikah, Tanda-tandanya...

Sampai sejauh ini kita masih selalu membicarakan masalah pembacaan file, bagaimana dengan penulisan file? Penulisan file dalam PHP merupakan proses yang lebih kompleks dan melibatkan pointer file. Pointer file selain menandai file yang dibuka, juga memiliki informasi mengenai penanda letak/posisi dalam sebuah file yang dibuka. Proses penulisan (maupun pembacaan) dilakukan mulai pada posisi pointer file ini.
Fungsi yang akan kita gunakan untuk melakukan penulisan file adalah fungsi fopen(), yang sesungguhnya juga dapat digunakan untuk pembacaan file. Fungsi ini akan membuka sebuah pointer file, dan membutuhkan dua parameter yaitu nama file dan mode untuk file yang akan dibuka. Mode ini juga sekaligus menentukan posisi awal pointer file. Jenis-jenis mode pada fungsi fopen() adalah:
  • Mode Hanya Baca (read-only), diaktivasi dengan parameter "r". Mode ini akan menempatkan posisi pointer file pada awal file.
  • Mode Hanya Tulis (write-only), diaktivasi dengan parameter "w". Mode ini akan membuat file baru dan menempatkan posisi pointer file pada awal file. Jika file yang dibuka telah ada, maka isi dari file tersebut langsung dihapus.
  • Mode Baca-Tulis (read-write), diaktivasi dengan parameter "r+". File dibuka untuk dapat dibaca maupun ditulis. Posisi pointer file adalah pada awal file.
  • Mode Tambahkan/Append (hanya tulis), diaktivasi dengan parameter "a". Pada mode ini, posisi pointer file adalah pada akhir dari file yang akan memudahkan kita untuk menambah/menyambung data ke data yang telah ada. Jika file yang dimaksud tidak ditemukan, maka file yang baru akan langsung dibuat.
  • Mode Tambahkan/Append (baca/tulis), diaktivasi dengan parameter "a+". Pada mode ini, posisi pointer file juga pada akhir dari file yang akan memudahkan kita untuk menambah/menyambung data ke data yang telah ada. Jika file yang dimaksud tidak ditemukan, maka file yang baru akan langsung dibuat. Tambahannya, selain menambah data, kita juga dapat melakukan pembacaan file.
Untuk sistem operasi yang tidak dapat membedakan antara file biner dan file teks ASCII biasa, misalkan di keluarga MS Windows, dibutuhkan sebuah parameter lagi jika kita ingin mengakses file jenis biner, yaitu parameter "b". Parameter ini tidak berguna jika kita gunakan pada sistem operasi berbasis Unix atau Linux karena secara otomatis sistem filenya telah membedakan file biner dengan file teks ASCII.
Setelah membuka file dengan mode yang tepat, untuk melakukan penulisan ke file dapat kita gunakan fungsi fputs(). Jika kita selesai bekerja dengan file, maka kita harus menutup file tersebut dengan perintah fclose(). Contoh skrip PHP berikut ini akan menunjukkan caranya.

<?php

    // tentukan nama file
    $nama_file = "cobafile.txt";
    
    // buka file
    $kodefile = fopen($nama_file,"a");
    
    // tentukan data string
    $data = "Ini adalah transmisi sub space dari United Federation
             of Planets. Prioritas transmisi ini adalah pribadi dan
             rahasia. Jika benar demikian, apakah mungkin Anda
             menangkap transmisi ini... ha... ha... ha...!";
             
    // tuliskan data ke file
    fputs($kodefile, $data);
    
    // tutup file
    fclose($kodefile);

?>
Pada skrip PHP di atas, kita menentukan terlebih dahulu nama file yang akan dibuka. Fungsi fopen() yang kita gunakan akan membuka file tersebut dengan mode append write only dan menghasilkan sebuah pointer file yang kita simpan pada variabel $kodefile. Jadi setiap yang kita gunakan variabel $kodefile, maksudnya adalah file (dalam contoh di atas cobafile.txt), yang dibuka untuk proses append write only. Posisi pointer file akan diletakkan pada akhir dari file tersebut, untuk memastikan penambahan data tidak merusak data sebelumnya. Jika file yang dimaksud tidak ditemukan, maka PHP otomatis membuat file baru dengan nama cobafile.txt.
String data ditentukan setelah itu, kemudian dilakukan penulisan ke file dengan fungsi fputs(). Untuk memastikan penulisan dilakukan ke file yang benar, maka harus diyakinkan bahwa pointer file yang digunakan sebagai parameter dari fungsi fputs() adalah $kodefile. Parameter yang lain dari fungsi ini adalah string data yang akan ditulis, yang disimpan pada variabel $data. Terakhir, tentu saja, kita harus selalu membiasakan kerja rapi, jika kita membuka sesuatu, maka akhiri dengan menutup setelah semua aktivitas kita selesai. Membiarkan sesuatu tetap terbuka dapat mempermalukan kita, terutama jika berkaitan dengan hal-hal vital. Fungsi fclose() kita gunakan untuk menutup file yang telah kita buka sebelumnya. Parameter fungsi ini adalah pointer file, untuk memastikan kita telah menutup file yang benar.
Sekarang kita akan membuat sebuah contoh buku tamu yang bersahaja dengan ilmu yang telah kita dapatkan selama ini.

<html>
<head>
     <title>Buku Tamu Sederhana</title>
     <basefont face="Arial">
</head>

<body>

<?php

     // tentukan nama file
     $nama_file = "bukutamu.txt";
     
     // cek apakah ada form yang dikirim
     if ($simpan)
     {
          // buka file
          $kodefile = fopen($nama_file,"a");
          
          // simpan isi form
          
          fputs($kodefile, date("r",time())."<br>");

          if (trim($nama)=="") { $nama = "Mr. X"; }
          fputs($kodefile, "Nama : <b>$nama</b><br>");
          
          if (trim($e-mail)=="") { $email = "(tidak ada)"; }
          fputs($kodefile, "e-mail : <b>$email</b><br>");
          
          if (trim($komentar)=="") { $komentar = "(tidak ada)"; }
          fputs($kodefile, "Komentar : <b>$komentar</b><br>");
          
          fputs($kodefile, ".<br>");
          
          // tutup file
          fclose($kodefile);
          
     }
     
     ?>
     <font size=5>Mohon Isi Buku Tamu Ini</font>
     <form action="<?php echo $PHP_SELF; ?>"  method="POST">
     <table border=0 cellpadding=2 cellspacing=2>
     <tr>
     <td valign="top">Nama</td>
     <td>
     <input type="text" name="nama" size=50 maxlength=50>
     </td>
     </tr>
     
     <tr>
     <td>e-mail</td>
     <td valign="top">
     <input type="text" name="email" size=50 maxlength=50>
     </td>
     </tr>

     <tr>
     <td valign="top">Komentar</td>
     <td>
     <textarea name="komentar" rows="4" cols="50"></textarea>
     </td>
     </tr>

     <tr>
     <td colspan=2 align="center">
     <input type="submit" name="simpan" value="Simpan">
     </td>
     </tr>

     </table>
     </form>

     <br>
     <hr>
     <br>
     
     <?php
     
     // tampilkan isi file jika ada
     if (file_exists($nama_file))
     {
          echo "<b>Daftar Buku Tamu Yang Ada</b><p>";
          readfile($nama_file);
     }
     else
     {
          echo "File buku alamat belum ada!";
     }
     
?>

</body>
</html>
Nah, sebuah buku tamu yang sederhana namun fungsional telah berhasil kita buat dengan PHP tanpa basis data. Anda mungkin menemukan fungsi baru yaitu date() dan time(), yang berhubungan dengan waktu saat proses dilakukan. Fungsi time() (tanpa parameter) akan memberikan waktu saat fungsi ini dijalankan dihitung dari jumlah detik semenjak Epoch Unix atau tanggal 1 Januari 1970 jam 00:00:00 GMT. Untuk dapat menampilkan informasi waktu ini dengan benar, maka dibutuhkan fungsi date() yang memiliki dua parameter/argumen. Argumen pertama adalah format waktu, dan argumen lainnya adalah informasi waktu, dalam hal ini adalah hasil dari fungsi time(). Format waktu "r" menghasilkan bentuk standar RFC 822, contohnya "Thu, 25 Dec 2001 17:05:07 +0700". Format-format lain mengenai tanggal dan waktu ini akan kita bicarakan pada artikel yang terpisah.
Saat skrip PHP di atas dijalankan untuk pertama kalinya, akan muncul form isian buku alamat, dan pesan bahwa file buku alamat belum ada. Jika form diisi dan dikirim dengan tombol simpan, maka skrip secara otomatis memanggil dirinya sendiri dan menambahkan data isian form ke file teks. Jika file tidak ditemukan, maka akan dibuat file baru. Setelah melakukan penambahan data teks, maka form kembali ditampilkan, dan isi file teks buku alamat ditampilkan setelah form. Demikian seterusnya. Ternyata semudah itu, ya!?

Jelangkung, Jelangkung, Di Sini Ada Pesta Kecil!

Bagian paling akhir dari artikel ini akan membahas teknik dasar membuat fungsi dalam skrip PHP. Mengapa kita perlu fungsi? Jawabannya adalah karena sifat pemalas kita membuat adanya keengganan kita menulis kode yang sama berulang-ulang. Hidup akan lebih nyaman karena waktu penulisan kode jadi lebih lebih singkat, dan tentu saja, makin sedikit kode, jumlah kesalahan yang akan muncul juga relatif berkurang. Kening kita tidak akan terlalu banyak berkerut meneliti baris per baris kode yang salah.
Penulisan skrip dalam bentuk fungsi-fungsi terpisah akan membuat program kita lebih bersifat modular. Dengan model seperti ini, pengembangan lebih lanjut skrip kita menjadi lebih cepat dan mudah.
Sebagaian besar perintah dalam skrip PHP adalah merupakan fungsi. Fungsi-fungsi yang kita gunakan selama ini, misalnya fungsi echo(), fungsi basis data, merupakan fungsi yang telah terdefinisi sejak awal dalam PHP. Kita tinggal menggunakannya sesuai dengan tujuan fungsi.
Sebagai makhluk yang tidak pernah puas, kadang-kadang kita ingin membuat fungsi-fungsi sendiri, yang menggabungkan fungsi-fungsi yang ada menjadi sesuai dengan keinginan di hati kita yang terdalam. Kedengarannya puitis sekali.
PHP menyediakan fasilitas pembuatan fungsi sendiri, sehingga hasrat Anda untuk hidup lebih nyaman akan terpenuhi. Sulitkah? Kalau sulit, berarti Anda sedang tidak mempelajari PHP...
Bentuk dasar pendeklarasian atau pendefinisian fungsi adalah sebagai berikut:

<?php

     function jelangkung()
     {
          [perintah 1];
          [perintah 2];
          [perintah 3];
          .... dan seterusnya ...
     }

??gt;
Setelah mendefinisikan sebuah fungsi, maka kita dapat dengan mudah memanggilnya melalui skrip. Lihatlah contoh berikut ini.

<?php

     function jelangkung()
     {
          [perintah 1];
          [perintah 2];
          [perintah 3];
          .... dan seterusnya ...
     }
     
     jelangkung();

??gt;
Pada saat parser PHP menemukan perintah pemanggilan fungsi, maka kontrol eksekusi program akan beralih pada lokasi dimana fungsi tersebut didefinisikan. Setelah seluruh perintah dalam blok fungsi itu dijalankan, maka kontrol eksekusi program kembali ke lokasi tempat pemanggilan fungsi tersebut.

Menjadi Calon Kadet Starfleet

Hm... main jelangkung ternyata tidak menarik. Kembali kita ke Star Trek. Contoh berikut ini akan menjelaskan mengenai implementasi fungsi sederhana. Berikut ini adalah pertanyaan dan jawaban soal benar/salah untuk seleksi calon kadet Starfleet, kekuatan militer United Federation of Planets.

<html>
<head>
     <title>Latihan Soal Jawab Calon Kadet Starfleet</title>
     <basefont face="Arial">
</head>

<body>

<?php

     // definisikan fungsi-fungsi
     function jawaban_benar()
     {
          echo "Benar!";
     }
     
     function jawaban_salah()
     {
          echo "Salah!";
     }
     
?>
<p>
Ras yang pertama kali berjumpa dengan ras bumi adalah ras Vulcan.<br>
Jawaban : <?php jawaban_benar() ?>

<p>
Kode pesawat USS Enterprise pada Star Trek: The Original Series adalah
NCC-1701-C.<br>
Jawaban : <?php jawaban_salah() ?>

<p>
Kapal Angkasa ras Romulan (War Bird) dapat hilang dari pandangan.<br>
Jawaban : <?php jawaban_benar() ?>

<p>
Teknologi Transporter dan Replikator memiliki prinsip kerja yang sama.<br>
Jawaban : <?php jawaban_benar() ?>

<p>
Teknologi Warp yang digunakan ras Borg menggunakan Transwarp Conduit.<br>
Jawaban : <?php jawaban_benar() ?>

</body>
</html>
Berikut ini adalah hasil skrip PHP bila dijalankan.


Ras yang pertama kali berjumpa dengan ras bumi adalah ras Vulcan.
Jawaban : Benar!
Kode pesawat USS Enterprise pada Star Trek: The Original Series adalah NCC-1701-C.
Jawaban : Salah!
Kapal Angkasa ras Romulan (War Bird) dapat hilang dari pandangan.
Jawaban : Benar!
Teknologi Transporter dan Replikator memiliki prinsip kerja yang sama.
Jawaban : Benar!
Teknologi Warp yang digunakan ras Borg menggunakan Transwarp Conduit.
Jawaban : Benar!

Kita dapat memanggil sebuah fungsi sebelum didefinisikan, asal masih dalam satu skrip. Ubahlah skrip sebelumnya menjadi seperti di bawah ini. Hasil keluarannya ditanggung tidak berbeda.

<html>
<head>
     <title>Latihan Soal Jawab Calon Kadet Starfleet</title>
     <basefont face="Arial">
</head>

<body>

<p>
Ras yang pertama kali berjumpa dengan ras bumi adalah ras Vulcan.<br>
Jawaban : <?php jawaban_benar() ?>

<p>
Kode pesawat USS Enterprise pada Star Trek: The Original Series adalah
NCC-1701-C.<br>
Jawaban : <?php jawaban_salah() ?>

<p>
Kapal Angkasa ras Romulan (War Bird) dapat hilang dari pandangan.<br>
Jawaban : <?php jawaban_benar() ?>

<p>
Teknologi Transporter dan Replikator memiliki prinsip kerja yang sama.<br>
Jawaban : <?php jawaban_benar() ?>

<p>
Teknologi Warp yang digunakan ras Borg menggunakan Transwarp Conduit.<br>
Jawaban : <?php jawaban_benar() ?>

<?php

     // definisikan fungsi-fungsi
     function jawaban_benar()
     {
          echo "Benar!";
     }

     function jawaban_salah()
     {
          echo "Salah!";
     }

?>

</body>
</html>

Apa Yang Kuberikan, Apa Yang Kudapat

Fungsi-fungsi dapat pula kita berikan argumen untuk diolah di dalam fungsi, dan dapat pula kita buat agar memberikan sebuah hasil untuk diolah di luar fungsi. Contoh berikut adalah hasil modifikasi fungsi pada skrip terdahulu, sehingga fungsi-fungsi tersebut dapat memberikan sebuah hasil untuk diolah di luar fungsi.

<html>
<head>
     <title>Latihan Soal Jawab Calon Kadet Starfleet</title>
     <basefont face="Arial">
</head>

<body>

<?php

     // definisikan fungsi-fungsi
     function jawaban_benar()
     {
          $jawaban = "Benar!";
          return $jawaban;
     }

     function jawaban_salah()
     {
          $jawaban = "Salah!";
          return $jawaban;
     }

?>
<p>
Ras yang pertama kali berjumpa dengan ras bumi adalah ras Vulcan.<br>
Jawaban : <?php $hasil = jawaban_benar(); echo $hasil; ?>

<p>
Kode pesawat USS Enterprise pada Star Trek: The Original Series adalah
NCC-1701-C.<br>
Jawaban : <?php $hasil = jawaban_salah(); echo $hasil; ?>

<p>
Kapal Angkasa ras Romulan (War Bird) dapat hilang dari pandangan.<br>
Jawaban : <?php $hasil = jawaban_benar(); echo $hasil; ?>

<p>
Teknologi Transporter dan Replikator memiliki prinsip kerja yang sama.<br>
Jawaban : <?php $hasil = jawaban_benar(); echo $hasil; ?>

<p>
Teknologi Warp yang digunakan ras Borg menggunakan Transwarp Conduit.<br>
Jawaban : <?php $hasil = jawaban_benar(); echo $hasil; ?>

</body>
</html>
Terlihat perbedaan cara penanganan hasil fungsi. Pada skrip sebelumnya fungsi tidak memberikan hasil/nilai yang dapat diolah, tetapi langsung menampilkan sesuatu pada media keluaran standar (melalui perintah echo()). Karena fungsi yang telah dimodifikasi tidak dapat langsung menampilkan hasil fungsi tetapi memberikan hasil/nilai, maka sebuah variabel (dalam skrip di atas adalah $hasil) ditugaskan untuk menampung nilai yang dihasilkan oleh fungsi, sebelum ditampilkan dengan perintah echo().
Contoh berikut ini memberikan gambaran mengenai argumen/parameter fungsi.

<html>
<head>
     <title>Persamaan Luas Segitiga</title>
     <basefont face="Arial">
</head>

<body>

<?php

     // definisikan fungsi-fungsi
     function luas_segitiga($alas, $tinggi)
     {
          $jawaban = 0.5 * $alas * $tinggi;
          return $jawaban;
     }
     
     $alas_segitiga = 6;
     $tinggi_segitiga = 9;

?>
<p>
Luas Segitiga dengan<br>
- Alas : <?php echo $alas_segitiga; ?><br>
- Tinggi : <?php echo $tinggi_segitiga; ?><br>
Adalah =
<?php
    $hasil =  luas_segitiga($alas_segitiga, $tinggi_segitiga);
    echo $hasil;
?>
<br>

</body>
</html>
Fungsi luas_segitiga() yang kita buat, membutuhkan dua argumen, yaitu argumen panjang alas ($alas) dan argumen tinggi segitiga ($tinggi). Nilai kedua argumen ini diberikan pada saat pemanggilan fungsi yang disimpan dalam bentuk variabel PHP selama fungsi tersebut dieksekusi agar dapat digunakan pada proses eksekusi perintah-perintah PHP di dalam blok fungsi. Fungsi ini akan menghasilkan nilai luas segitiga yang diperoleh dari operasi matematis terhadap kedua argumen tersebut.
Setiap saat di dalam skrip PHP, kita dapat memanggil/menggunakan secara berulang-ulang fungsi-fungsi yang kita definisikan, baik yang didefinisikan dalam skrip tersebut maupun pada skrip lain yang telah diikutsertakan dengan perintah include() atau require(). Betapa sebuah berita yang baik bagi kita, karena kita tidak perlu menghabiskan waktu lagi untuk menulis beberapa bagian kode secara berulang-ulang. Anda pun bisa memiliki lebih banyak waktu untuk menonton acara TV kegemaran Anda.

Masalah Pribadi dan Masalah Umum

Kini kita akan melihat bagaimana sebuah variabel dapat dipakai oleh fungsi. Aturan dasarnya adalah:
  • Setiap variabel dalam sebuah fungsi adalah variabel lokal yang hanya berlaku di dalam fungsi itu sendiri. Variabel ini hanya bertahan dalam memori saat fungsi dieksekusi dan hilang dari memori saat fungsi selesai dieksekusi. Variabel lokal ini tidak dapat diakses dari luar fungsi.
  • Fungsi pada dasarnya tidak dapat mengakses variabel yang berada di luar fungsi tersebut.
  • Operasi terhadap argumen di dalam fungsi, tidak akan berpengaruh apa-apa terhadap variabel di luar fungsi yang digunakan sebagai argumen, bahasa dewanya, setiap argumen bersifat passed by value.
Mari kita lihat contoh skrip berikut ini.

<?php

     // berikan nilai ke sebuah variabel di luar fungsi
     $jenis_kecepatan = "impuls";
     
     // fungsi yang akan mengubah nilai variabel
     function ubah_kecepatan($nama)
     {
          $jenis_kecepatan = $nama;
          return $jenis_kecepatan;
     }
     
     // tampilkan nilai variabel sebelum pemanggilan fungsi
     echo "Sebelum pemanggilan fungsi, jenis kecepatan adalah $jenis_kecepatan.<p>";
     
     // panggil fungsi
     ubah_kecepatan("warp");
     
     echo "Setelah pemanggilan fungsi, jenis kecepatan adalah $jenis_kecepatan.";

?>
Jalankan skrip PHP di atas, dan Anda akan dapatkan hasil sebagai berikut.


Sebelum pemanggilan fungsi, jenis kecepatan adalah impuls. Setelah pemanggilan fungsi, jenis kecepatan adalah impuls.";
Perubahan nilai variabel $jenis_kecepatan di dalam fungsi tidak berpengaruh terhadap nilai variabel $jenis_kecepatan yang di luar fungsi, karena kedua variabel ini berbeda konteksnya. Variabel $jenis_kecepatan yang ada di dalam fungsi adalah variabel lokal fungsi dan tidak ada kaitannya dengan variabel $jenis_kecepatan yang berada di luar fungsi. Itu sebabnya nilai variabel $jenis_kecepatan di luar fungsi tetap tidak berubah setelah pemanggilan fungsi.
Bagaimana jika Anda ingin sekali mengubah nilai variabel di luar fungsi tapi dari dalam fungsi? Ada dua pilihan. Pilihan pertama, Anda putus asa dan tidak mau menggunakan PHP lagi, atau Anda dapat gunakan fungsi/perintah global.
Fungsi/perintah global akan membuat pengecualian dari aturan di atas, dan langsung membuat variabel yang ada pada fungsi mereferensikan variabel dengan nama sama yang ada di luar fungsi. Tidak usah bingung atas bahasa berbelit ini, langsung saja perhatikan modifikasi skrip sebelumnya.

<?php

     // berikan nilai ke sebuah variabel di luar fungsi
     $jenis_kecepatan = "impuls";

     // fungsi yang akan mengubah nilai variabel
     function ubah_kecepatan($nama)
     {
          global $jenis_kecepatan;
          $jenis_kecepatan = $nama;
          return $jenis_kecepatan;
     }

     // tampilkan nilai variabel sebelum pemanggilan fungsi
     echo "Sebelum pemanggilan fungsi, jenis kecepatan adalah $jenis_kecepatan.<p>";

     // panggil fungsi
     ubah_kecepatan("warp");

     echo "Setelah pemanggilan fungsi, jenis kecepatan adalah $jenis_kecepatan.";

?>
Kini coba Anda jalankan skrip ini lagi, niscaya Anda akan mendapatkan hasil seperti di bawah ini.


Sebelum pemanggilan fungsi, jenis kecepatan adalah impuls. Setelah pemanggilan fungsi, jenis kecepatan adalah warp.";

Kebebasan Yang Berarti

Sejauh ini, fungsi-fungsi yang Anda buat selalu tertentu jumlah argumennya. Bisa tidak ada sama sekali, atau dalam jumlah yang pasti. Bagaimana jika kita tidak dapat memastikan jumlah argumen yang kita masukkan ke sebuah fungsi? Kadang satu, dua atau sekali waktu sepuluh argumen. Bisakah PHP menangani hal ini?
Karena topik ini masuk dalam artikel, jelas jawabannya pasti "bisa". Baiklah, sekarang kita lihat caranya.
PHP 4, menyediakan fungsi-fungsi yang dapat kita gunakan untuk maksud ini, yaitu fungsi func_num_args() yang akan menghasilkan jumlah argumen yang diberikan pada sebuah fungsi, dan fungsi func_get_args() yang akan menyimpan semua argumen fungsi yang diberikan ke dalam bentuk variabel array. Kita dapat melihat implementasinya pada skrip berikut ini.

<html>
<head>
<title>Fungsi Dengan Jumlah Argumen Bebas</title>
</head>

<body>

<?php
     function awak_enterprise()
     {
          $argumen = func_get_args();
          return $argumen;
     }
     
     $nama_awak = awak_enterprise("Piccard", "Riker", "LaForge", "Worf");

     ?>
     
Berikut ini adalah nama-nama awak kapal USS Enterprise:
<ul>
     
     <?php
     
     for ($i=0; $i < sizeof($nama_awak); $i++)
     {
          echo "<li>" . $nama_awak[$i] . "\n";
     }
     
?>
</ul>
</body>

</html>
Hasil dari skrip di atas adalah:


Berikut ini adalah nama-nama awak kapal USS Enterprise:
  • Piccard
  • Riker
  • LaForge
  • Worf

Beginilah Akhirnya...

Selesai sudah perjalanan panjang kita dalam mempelajari dasar-dasar yang paling mendasar bagi pemula PHP. Dengan bekal lima bagian artikel ini, sesungguhnya Anda telah cukup siap untuk memulai sendiri membangun aplikasi atau situs dinamis dengan PHP. Tentunya, Anda harus banyak berlatih sendiri dan membaca artikel-artikel lain baik tingkat pemula, menengah maupun lanjutan/terapan. Kini Anda sadar, bahwa ternyata menggemari Star Trek dapat membantu Anda, paling tidak akan melatih Anda untuk berani mengunjungi tempat yang belum pernah dikunjungi oleh siapa pun.
Tetaplah belajar PHP, dan jangan bosan menantikan topik lain dari belajar PHP. Sampai di sini dulu .... Merdeka!*)