Rabu, 06 Januari 2016

PHP - Penulisan Gaya If Statement

Dalam bahasa pemrograman PHP, ada banyak cara atau gaya penulisan if statement. Beberapa gaya mungkin menjadi ciri khas seseorang, tapi beberapa gaya penulisan ini juga dapat digunakan sesuai kebutuhannya. Misal, apabila di dalamnya terdapat hanya satu percabangan maka gunakan "ini", atau saya tidak ingin melihat kode yang saya tulis berantakan (terlalu banyak kurung kurawal "{}") maka saya gunakan "itu". Di dalam tulisan ini, akan saya tulis beberapa penulisan gaya if statement yang akan saya jelaskan juga saran dalam penggunaannya. Jika penulisan yang ada masih kurang lengkap, silakan ditambahkan.

Kode merupakan mainan sehari-hari programmer sehingga mereka terbiasa dengan apa yang mereka tulis. Tapi, apakah mereka akan bisa membaca tulisan sendiri jika tidak rapih? Di dalam tulisan ini juga akan membahas sedikit tentang elegant code yang merupakan teknik untuk menulis kode dengan "elegan". Maksud dari "elegan" di sini yaitu, mudah dibaca dan memiliki kompleksitas yang baik atau dapat diartikan memiliki algoritma yang baik serta efektif sehingga tidak menghabiskan banyak waktu untuk menulis.

Normal

Penulisan "normal" ini maksudnya yaitu gaya penulisan yang paling umum dan sering digunakan. Rata-rata orang yang baru belajar PHP akan menggunakan gaya penulisan ini. Adapun penulisannya yaitu:

if (kondisi) {
  // ...
}
else {
  // ...
}
Tapi, ada beberapa yang sedikit memodifikasi gaya tersebut sehingga menjadi:

if (kondisi) {
  // ...
} else {
  // ...
}
if (kondisi)
{
  // ...
}
else {
  // ...
}
Gaya penulisan "normal" ini biasanya menjadi ciri khas seseorang. Dimana beberapa developer hanya memakai satu gaya penulisan saja. Walaupun gaya penulisan tersebut sudah cukup baik dan mudah dibaca, tapi akan kurang efektif apabila menghadapi beberapa kasus.

Pelit

Gaya penulisan ini dikhususkan untuk kasus yang hanya memiliki satu perintah apabila if statement tersebut bernilai benar ataupun salah. Dengan penulisan gaya "pelit" ini, kode menjadi "elegan" dan enak dilihat.

if ($php == true) echo "COOL!";
else echo "BAD!";
Atau bisa ditulis seperti gaya penulisan pada bahasa C seperti ini:

if ($php == true)
  echo "COOL!";
else
 
echo "BAD!";
Apabila ditambahkan satu perintah di dalam kondisi if, maka akan muncul error. Karena itu, penulisan ini hanya untuk satu perintah di dalam percabangan if.

Keren

Penulisan yang satu ini mirip dengan if statement pada bahasa pemrograman Python. Saya rasa gaya penulisan ini cukup keren. Saya sendiri menggunakan gaya penulisan ini apabila if statement yang saya tulis berada di dalam sebuah function.

if ($cond == true):
  // ...
else:
  // ...
endif;

Gila

Yang satu ini biasa disebut ordinary if. Saya sebut "gila" karena jika percabangannya banyak akan membuat kepala pening untuk mengerti maksud dari if statement tersebut.

isset($php) ? true : false;
Penulisan di atas mungkin terlihat keren dan like a pro. Tapi, jika ditulis dengan banyak cabang akan membentuk:

echo ($php <= 9 ? "satuan" : ($php <= 99 ? "puluhan" : "..."))
Bagaimana? Pusing? Karena saya pernah menulis hingga 5 cabang dengan gaya penulisan ordinary if ini, sehingga saya tahu rasanya saat ada yang ingin disunting. Membutuhkan tenaga lebih untuk menelaah kembali apa yang sebenarnya saya tulis. Sehingga, tidak disarankan apabila untuk percabangan yang lebih dari 2 cabang.

Kesimpulan

Beberapa kode di atas dapat ditulis "bebas saja". Tetapi, akan lebih indah jika kita menggunakan sesuai porsi algoritmanya. Saran saya, gunakan "keren" jika ia berada di dalam function. Gunakan "normal" bebas saja, tetapi gaya penulisan ini mungkin sedikit kuno di PHP dan jika ingin beralih ke "keren" dipersilakan. Dan jika if statement ringan (satu perintah di dalamnya) gunakan saja "pelit". Lalu, untuk ordinary if, gunakan saja untuk variable processing. Adapun kesatuan semuanya saya tulis menjadi satu:

function is_true($bool = false) {
  if (!is_bool( $bool )) $bool = false; // pelit

  // keren
  if ($bool == true):
    $bool = "Cool!";
    $cond = true;

  else:
    $bool = "Bad!";
    $cond = false;
  endif;
  return $cond;
}

$var = is_true( true );
$php = ($var == true ? "True!" : "False!"); // ordinary if
echo $php;
// return "True!"
Cukup terlihat rapi dan elegan, bukan?

Penutup

Kerapihan kode juga merupakan hal penting apabila kita di dalam sebuah tim. Dengan kode yang rapih serta mudah dibaca, rekan kita akan dengan mudah melanjutkan apa yang kita kerjakan atau paling tidak mengerti apa yang kita buat.

Kelengkapan tulisan ini mungkin masih kurang. Jika ingin menambahkan, saya dengan senang hati mempersilakan Anda. Apabila ada kesalahan di dalam tulisan ini silakan dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanya manusia biasa yang mencoba untuk menjadi penulis. Terima kasih.

Matematika - Logika Jumlah Suku pada Deret Aritmatika

Deret aritmatika merupakan salah satu materi yang paling saya sukai. Karena di dalamnya saya melakukan komputasi yang membutuhkan logika untuk mengidentifikasi masalahnya yang hasilnya terkadang "gila", hingga ratusan ribu atau bahkan jutaan. Kali ini, kita akan mencoba menggunakan logika untuk mencari jumlah suku pada deret aritmatika. Walaupun jarang ada masalah (soal) yang meminta kita untuk mencari jumlah suku. Tapi, ilmu ini sangat membantu dan mempercepat perhitungan.

Setelah melakukan percobaan-percobaan, akhirnya saya dapat membuat tulisan ini. Dan saya melakukan itu dengan cara "think like a computer". Tulisan singkat ini saya harap dapat membantu kita mempercepat pengerjaan pada masalah deret aritmatika.

Percobaan

Pada percobaan ini, saya awalnya menggunakan angka-angka kecil yang kemudian dilanjutkan ke angka yang besar.

Logika Gauss

Yang pertama, saya gunakan masalah pada "logika Gauss" (1, 2, ..., 100) untuk mencari fakta baru. Sudah jelas bahwa jumlah sukunya 100 bukan? Tentu saja karena jarak antar suku tersebut 1. Karena sudah jelas, maka dari itu saya gunakan ini terlebih dahulu.

Secara logika, untuk mencari jarak kita akan melakukan pengurangan dari bilangan terbesar ke terkecil. Sebagai contoh pada deret di atas dimana bilangan terbesar adalah 100 dan terkecil adalah 1 dengan jarak antar suku 1. Mari kita coba kurangi bilangan tersebut.

Nt - Na = 100 - 1
=> 99
Bisa kita lihat bahwa jawabannya adalah 99. Tapi, bukan kah sudah jelas bahwa jumlah sukunya 100? Oke, kalau gitu kita tambahkan 1 supaya sesuai dengan jumlah sukunya.

(Nt - Na) + 1 = 99 + 1
=> 100
Ya, akhirnya sesuai. Tapi, apakah kebenarannya sudah bisa dipastikan? Tentu saja belum. Maka dari itu kita coba ke percobaan berikutnya.

Jarak 9

Percobaan sebelumnya berjarak 1, kali ini kita coba 9. Buatlah sebuah barisan yang ringan, dalam kasus ini saya membuat 1, 10, 19, 28, 37. Sudah jelas bahwa jumlah sukunya 5. Oke, kita coba cari seperti cara di percobaan sebelumnya.

(Nt - Na) + 1 = (37 - 1) + 1
=> 36 + 1
=> 37
Apa? 37? Tentu saja salah! Lalu, bagaimana cara kita mencari logika yang benar? Lihat, ada angka 36 sebelum ditambahkan menjadi 37. 36 itu kelipatan 9, bukan? Nah, kalau begitu, kita tambahkan satu langkah sebelum kita tambahkan hasilnya dengan 1. Yaitu, bagi hasil pengurangan dengan jarak suku tersebut sebelum ditambah 1. Asumsikan bahwa "b" adalah beda atau jarak antar suku

(Nt - Na) : b = (37 - 1) : 9
=> 36 : 9
=> 4
 Nah, hasilnya sudah hampir benar. Tinggal kita tambahkan 1.

((Nt - Na) : b) + 1 = 4 + 1
=> 5
Sama, bukan? Berarti, sejauh ini, kesimpulan untuk mencari jumlah suku yaitu, suku akhir dikurangani suku awal kemudian dibagi jarak antar suku lalu ditambahkan 1. Apakah ini berlaku untuk kasus lain? Mari kita coba lakukan percobaan berikutnya.

Kasus sedikit Ekstrim

Berikutnya, kita coba dengan yang sedikit ekstrim. Saya coba buat kasus deret aritmatika dengan deret 6, 10, 14, ..., 402. Dari deretnya, bisa dilihat berjarak 4.

((Nt - Na) : b) + 1 = ((402 - 6) : 4) + 1
=> (396 : 4) + 1
=> 99 + 1
=> 100
Jumlah sukunya 100! Tapi, apakah benar itu jawabannya? Saya coba hitung dengan bahasa pemrograman. Dan jawabannya sama! Berikut kode dan keluarannya.

x = 6 # suku pertama 6
(2..100).each do |y|
# 2..100? Dimulai dari 2, karena suku 1 sudah didefinisikan x
  x += 4 # jarak antar suku 4, karena itu tambah 4 disetiap perulangan
end
Dan keluarannya adalah 100! Sehingga kebenarannya sudah dapat dibuktikan.

Kesimpulan

Dengan percobaan di atas, kita dapat menyimpulkan bahwa cara untuk mencari jumlah suku deret aritmatika dengan logika, yaitu:

((Nt - Na) : b) + 1
Keterangan:
Nt = Suku Terakhir
Na = Suku Pertama
b = Beda atau Jarak antar Suku

Penutup

Dengan melakukan percobaan, kita akan mengetahui fakta-fakta baru. Dan, kita juga akan lebih mengenal materi karena kita terjun langsung untuk menganalisa masalah pada materi tersebut.

Tulisan singkat ini saya harap dapat dijadikan bahan pembelajaran bahwa mencari rumus dapat dilakukan dengan percobaan sendiri serta dapat memberikan pemahaman bagaimana suatu rumus itu terbuat. Apabila ada kesalahan harap dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanya manusia biasa yang mencoba untuk menjadi penulis. Terima kasih.

Minggu, 03 Januari 2016

Matematika - Perbedaan antara Angka, Nomor, dan Bilangan

Banyak orang yang menganggap angka, nomor, serta bilangan adalah hal yang sama. Tapi pada kenyataannya, mereka itu berbeda dan memiliki definisi nya masing-masing. Hal yang sangat dasar ini harus kita ketahui, karena "salah tanda baca, maka berbeda arti". Seperti itu lah, maka dari itu, mari kita lihat apa perbedannya.

Bilangan

Bilangan merupakan kosa kata yang digunakan untuk menginformasikan bentuk angka. Maksudnya, dengan bilangan kita akan tahu "posisi" apa yang dimaksud. Tapi dengan angka, belum tentu kita tahu "posisi" mana yang dimaksud. Anda akan mengerti setelah membaca arti dari angka. Saya sendiri tidak mengerti bagaimana cara untuk mendefinisikan bilangan. Namun, setelah membaca pengertian angka, saya rasa Anda akan mengerti. Intinya, bilangan digunakan sebagai kosa kata, sementara angka sebagai simbol atau lambang atau tanda. Contohnya, bilangan dua.

Angka

Angka berperan sebagai simbol atau tanda atau lambang yang melambangkan bilangan. Jika bilangan yang dinyatakan adalah dua, maka angka akan melambangkan dua itu sebagai 2 (dalam latin) atau II (dalam romawi). Terlihat perbedaannya? Maksud saya dari kata "dengan angka, belum tentu kita tahu 'posisi' mana yang dimaksud" adalah ketika angka yang melambangkan tidak kita ketahui maksudnya. Misal, angka yang digunakan untuk melambangkan berasal dari simbol romawi yang belum pernah kita ketahui. Jika dengan bilangan "dua" kita telah mengetahui bahwa itu dua, lalu bagaimana jika dengan angka II? Apa itu II? Benar, bukan?

Nomor

Nomor biasanya digunakan untuk menunjuk posisi. Nomor digunakan untuk menunjuk posisi pada angka yang dimaksud dari angka-angka yang berurutan. Misal ada urutan angka 1, 2, 3, 4, dan 5. Maka, nomor 2 adalah posisi angka 2 dari urutan tersebut.

Kesimpulan

Dari data di atas, kesimpulan yang saya dapat yaitu:
  1. Bilangan merupakan kosa kata.
  2. Angka merupakan simbol/tanda/lambang untuk bilangan.
  3. Nomor digunakan untuk menunjuk angka yang berurutan.

Penutup

Itu tadi pembahasan singkat mengenai perbedaan angka, nomor, dan bilangan. Singkat saja karena hanya menjelaskan perbedaan berdasarkan definisi yang saya baca. Namun secara logika, sudah cukup masuk akal bukan?

Mungkin ada kesalahan pada tulisan ini, karena itu mohon dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanya manusia biasa yang mencoba untuk menjadi penulis. Terima kasih.

Bacaan - Persiapan untuk OSN Komputer

Sebelumnya saya telah menulis Persiapan untuk Mengikuti OSN. Dan sekarang saya menulis persiapan untuk OSN Komputer. Yang saya bahas di tulisan ini yaitu tentang apa saja materi yang diuji serta akan saya berikan tips-tips untuk persiapannya supaya matang. Apa saja sih yang harus saya pelajari? Dan soal seperti apa yang akan saya temui? Oke, mari kita lihat. Apa yang saya tulis berdasarkan silabus serta pengalaman saya. Secara garis besar, soal OSN Komputer itu menguji kemampuan anlisis serta logika kita.

Di dalam OSN Komputer itu ada tiga materi mayor, yaitu Analitika dan Logika, Matematika (Aritmatika), dan Pemrograman. Bahasa pemrograman yang diambil yaitu bahasa Pascal. Karena syntax-nya mudah dibaca serta bahasa nya mudah dipelajari. Di tingkat Kabupaten dan Provinsi mungkin kita hanya disuruh menganalisis kode yang diberikan kemudian menjawab pertanyaannya. Berbeda jika telah tingkat Nasional, kita akan menyelesaikan permasalah dengan menulis kode. Bukan mebaca kode lagi, tapi menulis kode.

Analitika

Analitika merupakan kemampuan yang harus dikuasai. Karena jika kekuatan analitika kita kuat, kita akan mudah mengerjakan soal-soal yang ada. Soal pemrograman khususnya. Soal-soal tersebut akan kita analisis atau trace untuk mendapatkan "apa sih yang kode ini lakukan?". Selain di pemrograman, analitika juga sangat penting untuk matematika. Bisa dibilang, ini lah salah satu kunci utama dalam bidang lomba OSN Komputer.

Logika

 Logika juga tidak kalah penting dari Analitika. Dua materi ini sedikit sulit "dibangunkan" dari otak kita. Menurut saya, materi logika membutuhkan percobaan serta latihan terus menurus untuk meningkatkannya. Untuk meningkatkan logika, bisa melalui mengerjakan soal-soal logika. Baca juga materi Logika Matematika (SMA kelas X).

Matematika

Matematika yang dipakai yaitu cabang Matematika Diskret. Atau bisa dibilang pengenalan terhadap komputasi. Di dalam Matematika Diskret ada teori himpunan, teori kombinatorial, permutasi, relasi, fungsi, rekursif, teori graf, dll. Tapi, tidak semuanya Matematika Diskret. Lalu, apa saja yang keluar dari Matematika secara garis besar?

Kombinatorika

Yang sangat terlihat adalah kombinatorik. Kombinatorik di sini yang paling terlihat yaitu Permutasi dan Kombinasi. Ada tiga kombinatorika yang muncul di soal OSN Komputer, yaitu tipe Perkalian, Permutasi, dan Kombinasi.

Aritmatika

Aritmatika yang ada bukan lah aritmatika sederhana seperti soal-soal yang kita temui. Ini merupakan aritmatika kembangan yang soalnya ekstrim. Karena itu, coba pelajari lagi aritmatika dari dasar dan lihat soal-soal aritmatika dari tahun lalu. Biasanya tidak beda jauh tipe soalnya, hanya diganti angkanya saja. Intinya, kita diuji dalam hal model matematis, sifat dari deret bilangan, dan model keterkaitan (graf).

Materi Lainnya

Materi lainnya yang muncul yaitu Himpunan, Operasi Modulus, Hukum Keterbagian, Peluang, Deret Fibonacci, Teori Bilangan, dan Pencacahan. Mungkin masih ada lagi yang belum saya sebutkan. Tapi, saran saya pelajari sedikit soal-soal dari OSN Matematika. Dan, coba cari materi diklat OSN Matematika untuk dipelajari.

Algoritma

Algoritma juga tidak kalah penting. Tahun 2015, Matematika 60% dan Algoritma 40%. Tapi tahun sebelumnya, Matematika 50% dan Algoritma 50%. Untuk tahun ini saya tidak tahu perbandingannya, tapi 40% itu banyak kan? Karena itu, Algoritma sangat penting. Untuk masalah Algoritma, yang terpenting adalah kemampuan deduksi. Saya juga pernah dengar metode backtracing sangat dibutuhkan. Intinya, pelajari dalam bahasa Pascal syntax-syntax dasar nya, function, procedure, looping, serta if statement. Dan jangan lupa kuasai materi rekursif, karena banyak soal yang seperti itu. Untuk materi bahasa Pascal, bisa dibaca tulisan saya yaitu  Memulai Masuk ke Dunia Pascal.

Penutup

Mungkin masih banyak materi yang belum saya sertakan dan mungkin tulisan saya kurang jelas dan lengkap. Karena itu, coba lah mencari lebih banyak sumber di mesin pencari. Karena membaca dari berbagai sumber lebih baik ketimbang dari satu sumber. Dan mungkin saja apa yang saya tulis terdapat kesalahan. Karena itu, mohon dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanya manusia biasa yang mencoba untuk menjadi penulis. Terima kasih.

Sabtu, 02 Januari 2016

Bacaan - Persiapan untuk Mengikuti OSN

OSN (Olimpiade Sains Nasional) merupakan kompetisi bergengsi bagi pelajar SMA sederajat di seluruh Indonesia. Mereka yang lolos tingkat nasional akan maju mewakili Indonesia di tingkat Internasional. OSN ada beberapa tahap dalam penyeleksiannya. Pertama, seleksi tingkat sekolah masing-masing. Lalu, seleksi tingkat Kabupaten dimana pada tingkat ini lah kompetisi dimulai. Masing-masing Kabupaten memiliki kuotanya masing-masing untuk maju ke tingkat Provinsi. Anda lolos jika mendapat peringkat 3 dan kuota untuk Kabupaten tersebut adalah 5. Jika Anda peringkat 6, maka pupus sudah karena melewati batas kuota. Kuota yang didapat tergantung pada kontribusi perwakilan tahun sebelumnya (biasanya). Setelah tingkat Provinsi, baru lah tingkat Nasional dimana lokasi penyelenggaraannya berbeda-beda setiap tahun. OSN 2016 akan diselenggarakan di Palembang. Ada tambahan untuk proses seleksi. Terima kasih untuk saudara Valerian untuk tambahannya. Adapun tambahan informasinya yaitu, untuk seleksi tingkat Provinsi ada kebijakan sendiri dari daerah masing-masing. Misal, dari DKI ada kebijakan untuk pra OSP (OSN tingkat Provinsi). Jadi, yang lolos di tingkat Kabupaten akan diseleksi di pra OSP dahulu baru maju ke OSP.

Untuk meraih kemenangan, tentu saja dibutuhkan strategi serta persiapan yang matang. Jika Anda saat ini kelas X SMA, maka Anda beruntung karena bisa mengikuti kompetisi ini dua kali. Karena Anda tidak akan diperbolehkan untuk ikut jika telah kelas XII SMA. Adapun bidang lomba untuk SMA saat ini ada Matematika, Kimia, Fisika, Biologi, Ekonomi, Geografi, Kebumian, Astronomi, serta Komputer. Jurusan IPA dapat mengikuti Matematika, Kimia, Fisika, Biologi, Astronomi, dan Komputer. Untuk jurusan IPS, dapat mengikuti Matematika, Ekonomi, Geografi, Kebumian, Astronomi, dan Komputer. Untuk lebih jelasnya jurusan apa bisa mengikuti apa, Anda bisa tanyakan ke guru nya masing-masing.

Buat Target

Untuk mendapatkan hasil optimal, buatlah target. Misal, target saya masuk 10 besar. Atau yang lebih yaitu target saya mendapat peringkat 1. Buat lah target yang tinggi agar perjuangan kita maksimal. Dengan target yang jelas, kita akan berjuang untuk menggapainya, benar?

Rencanakan

Setiap strategi tentu saja membutuhkan perencanaan yang matang agar menang. Buat lah perencanaan yang baik untuk menggapai target Anda. Misal, dalam satu bulan saya harus menguasai materi apa saja. Atau, buat perencanaan yang lebih kompleks. Seperti, kapan dimulai seleksi nya? Berapa lama waktu yang tersisa? Apa saja yang harus saya kuasai? Dalam satu hari saya harus belajar berapa lama?

Cari Silabus

Supaya yang kita rencanakan tepat sasaran, cari lah silabus dari bidang lomba yang kamu ikuti. Kalau bisa langsung dapatkan dari sumbernya. Sumbernya? Ya! Maksud dari "sumber" di sini yaitu contohnya Tim Olimpiade Komputer Indonesia (TOKI). Ambil silabus nya dari sana!

Cari Sumber Lain

Selain silabus, cari juga soal-soal tahun lalu. Karena biasanya tidak jauh berbeda. Cari sumber lain mengenai satu materi yang Anda baca. Satu sumber saja tidak cukup. Dengan membaca dari berbagai sumber, maka pengetahuan Anda akan matang.

Informasi itu Segalanya

Pengumpulan informasi yang baik sangat berpengaruh dengan persiapan yang telah Anda lakukan. Cari terus informasi yang dapat menunjang persiapan Anda. Seperti, informasi lengkap prosedur pelaksanaan OSN, informasi mengenai soal-soal yang mungkin keluar, dan sebagainya.

Bertanya

Dengan informasi yang kita dapatkan dari internet apakah itu cukup? Tentu saja belum! Cari lah orang yang telah memiliki pengalaman mengikuti OSN. Anda dapat bertanya tentang pengalamannya juga tentang soal-soal apa saja yang keluar. Bila beruntung, Anda akan dibimbing dan diberi materi untuk belajar. Terus dekati dan ambil ilmunya! Pengalaman merupakan guru terbaik, benar?

Buat Motivasi

Sering kali kita merasa jenuh. Di sini lah motivasi berperan penting. Jika merasa jenuh, cobalah buat motivasi. Misal, saya mengikuti OSN karena saya ingin orang tua saya bangga dengan saya. Motivasi tersebut merupakan motivasi terkuat yang pernah saya buat. Saya ingin menunjukkan kepada orang tua saya bahwa saya bisa dan pantas untuk mendapatkan prestasi. Atau, motivasi yang sedikit keluar jalur yaitu, saya ingin membuat "dia" terkesan. Tapi, buat lah motivasi yang dampak positif nya besar sehingga Tuhan akan menolong kita dan melancarkan perjuangan kita.

Latihan Terus

Satu atau dua kali latihan tidak akan cukup untuk membuat Anda bisa mengerjakan soal OSN. Soal OSN itu berbeda dengan soal di sekolah. Saya ambil pengalaman dari soal OSN Komputer yang pernah saya kerjakan. Berapa sisa bagi dari 20152016 dibagi 7? Nah loh, memangnya ingin dihitung manual? Tentu saja tidak! Jika kita telah melakukan latihan berkali-kali dan paham. Maka soal seperti itu akan sangat mudah dikerjakan.

Berdoa

Percuma jika kita terus menerus belajar tetapi tidak meminta kepada Tuhan. Sesuatu yang tidak mungkin akan menjadi mungkin jika kita meminta kepada Nya.

Minta Restu Orang Tua

Restu orang tua merupakan restu Nya. Karena itu, minta lah restu kepada orang tua. Jadilah orang yang terbuka kepada orang tua! Minta lah doa serta dukungannya. Dengan dukungan dari orang lain, apalagi orang tersebut adalah orang yang dekat serta kita sayangi, maka percaya lah, kekuatan kita akan terisi penuh.

Jadilah Penantang

Pernah kesal karena tidak bisa mengerjakan dan menyelesaikan suatu permasalahan atau soal? Berarti, itu merupakan sebuah tantangan untuk Anda. Anda ditantang, maka apa yang akan Anda lakukan? Tentu saja terima tantangan itu dan jadi lah penantang. Hancurkan soal itu dengan cara selesaikan menggunakan cara terbaik Anda. Tantang terus diri Anda untuk menyelesaikan berbagai macam permasalahan sulit. Bila perlu, ikuti banyak kompetisi lainnya. Karena peluang hanya ada tiga kemungkinan, yaitu 1 (pasti menang), antara 1 dan 0 (bisa menang dan bisa tidak), dan 0 (tidak mungkin menang). Ingat! Tidak ada yang tidak mungkin, berarti posisi Anda ada di antara 1 dan 0. Persiapkan yang matang sehingga peluang anda akan semakin mendekati 1 (pasti menang).

Terus Merasa Kurang

Tidak ada kata cukup untuk mendapatkan ilmu. Karena itu, terus lah merasa apa yang kita dapatkan (ilmu) itu masih kurang. Karena kurang, terus lah pelajari dan cari hal-hal baru dan yang terpenting tidak keluar jalur dari materi OSN.

Cintai Bidang Itu

Cintai lah bidang lomba yang Anda ikuti. Dengan begitu, Anda akan merasa untuk terus dekat dengannya. Terus dekati dan terus mencari informasi apapun tentangnya. Perlakukan sama seperti kita sedang mencintai seseorang. Yang pertama pasti pendekatan, benar? Kemudian Anda akan mencari semua informasi tentangnya. Cara ini terbukti ampuh untuk saya. Jadi, kenapa tidak dicoba?

Penutup

Apa yang saya tulis di atas merupakan murni pengalaman pribadi saya saat mengikuti OSN Komputer pada tahun 2015 kemarin. Walaupun hanya peringkat 7 di tingkat Kabupaten, tapi itu merupakan pengalaman yang sangat berharga. Kesalahan yang saya lakukan dalam persiapan waktu itu, saya tidak ingin Anda mengalaminya juga. Sedikit kesalahan, fatal akibatnya.

Mungkin hanya itu yang bisa saya tulis. Jika ada revisi atau pembaruan, akan segara saya sunting. Mungkin ada banyak kesalahan penulisan di dalamnya, saya mohon dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanya lah manusia biasa yang mencoba menjadi untuk menjadi penulis. Terima kasih.

Bacaan - Cara Belajar yang Tepat supaya Cepat Menguasai Materi

Cepat atau lambatnya seseorang belajar adalah faktor dari cara belajarnya. Cara belajar yang tepat akan mempercepat proses belajar. Namun, setiap orang memiliki cara belajarnya sendiri. Tapi, ada juga cara belajar atau panduan atau tips umum yang dapat digunakan oleh semua orang. Tulisan ini akan membahas mengenai cara belajar secara umum. Yang akan dibahas antara lain langkah belajar, tips-tips, serta saran dari saya.

Saya telah mempelajari bahasa pemrograman dari tahun 2010. Kurang lebih saya telah belajar macam-macam bahasa pemrograman selama 5 tahun. Kebanyakan dari waktu tersebut saya gunakan untuk belajar PHP. Tapi saya sadar bahwa cara belajar saya kurang efektif sehingga prosesnya lambat. Setelah menempuh waktu bertahun-tahun, akhirnya saya sadar, dan mengerti bagaimana cara belajar bahasa pemrograman supaya cepat bisa dan bahkan menguasainya.

Kenali

Untuk menguasai sesuatu tentu saja kita harus mengenalnya terlebih dahulu. Setelah itu, baru lah kita mulai mempelajarinya. Maksud dari "kenali" yaitu kita harus tahu sejarah singkat dari materi yang akan kita pelajari. Setelah tahu sejarah singkatnya, kita lanjutkan dengan pengenalan yang berkesan. Saya ambil contoh untuk mengenali materi bahasa pemrograman.

Setelah kita tahu sejarah dari bahasa pemrograman tersebut, kemudian kita lanjutkan ke hal-hal dasar. Hal-hal yang sangat dasar untuk mengenali bahasa pemrograman yaitu mencari tahu struktur umumnya. Lalu, cari tahu ada apa saja di dalam bahasa pemrograman tersebut. Umumnya, dalam bahasa pemrograman itu ada data types, expression, dll. Setelah tahu ada data types, expression, dsb. Kita akan mulai mencari tahu apa itu? Kemudian sedikit demi sedikit mengerti. Di dalam materi yang kita pelajari, kita akan selalu menemukan hal-hal baru. Sehingga, belajar kita akan mengikuti arus.

Bagaimana jika materi tersebut materi pelajaran sekolah? Atau materi secara umum? Caranya yaitu, pertama-tama yang kita harus cari tahu adalah sejarah singkatnya. Setelah tahu sejarah singkatnya, mulai lah cari tahu apa tujuan dari mempelajari materi tersebut? Sebagai contoh saya belajar materi barisan dan deret, tujuannya untuk mempermudah kita menjumlahkan barisan bilangan. Atau, saya belajar materi aljabar yang tujuannya untuk memecahkan masalah persamaan yang bersifat memisalkan (perandaian). Setelah mendapatkan sebuah tujuan, baru lah kita beranjak ke tahap berikutnya yaitu bentuk dasarnya. Setiap materi memiliki bentuk dasar yang kemudian dapat dibentuk menjadi bentuk yang kompleks.

Buat Perencanaan

Buat lah sebuah perencanaan belajar sehingga belajar kita bersifat kontinyu. Asumsikan materi yang kita pelajari adalah satu BAB di buku. Kemudian bagian dari materi yang kita pelajari merupakan sub-BAB. Buat sebuah target misalnya satu hari satu sub-BAB. Dan di hari berikutnya ulangi sub-BAB sebelumnya kemudian tambah dengan sub-BAB baru. Begitu seterusnya hingga sub-BAB dipelajari semua. Buat sebuah target kapan kita seharusnya selesai mempelajarinya dan siap untuk latihan. Perencanaan sangat penting! Jika tidak direncanakan, kita akan bingung untuk melakukan langkah selanjutnya.

Latihan

Apa gunanya kita belajar jika tidak melakukan latihan? Dengan latihan, kita akan cepat bisa. Setelah membaca materi dan merasa sudah bisa, mulai lah dengan latihan menyelesaikan permasalahan dengan materi yang kita pelajari. Kerjakan tantangan-tantangan permasalahan yang ada. Tentu saja dimulai dari level mudah (dasar) menuju ke level sulit. Karena jika kita tidak melakukan latihan dengan metode tantangan, kita tidak akan berkembang. Setelah bisa hal dasar, kemudian berikutnya apa? Tentu saja melangkah ke level berikutnya. Level up!

Ulangi

Kita bukan lah manusia super yang langsung bisa dalam sekali coba. Hampir setiap orang sukses di dunia ini pernah "mengulang". Maksudnya yaitu pernah gagal dan kemudian bangkit dengan cara "mengulang" mimpi yang sama namun dengan cara yang berbeda. Jika kita tidak mencoba maka kita tidak akan pernah berhasil. Intinya, jika kita tidak mengulangi materi yang kita pelajari, kita akan lupa. Ulangi beberapa kali agar materi tersebut melekat kuat di pikiran kita (otak).

Bereksperimen

Yang satu ini sebenarnya hanya untuk mereka yang benar-benar menyukai materi yang dipelajari. Biasanya mereka akan melakukan eksperimen kecil untuk menemukan fakta baru. Sebagai contoh, saya melakukan eksperimen kecil tentang barisan dan deret. Saya gunakan logika saya dan cara yang saya buat sendiri. Sehingga saya menemukan fakta-fakta baru. Dari kegiatan seperti ini lah belajar akan terasa menyenangkan. Karena kita menemukan fakta yang dihasilkan dari eksperimen kita. Berasa menjadi seorang ilmuwan yang menemukan rumus baru. Dan itu lah yang membuat kegiatan ini begitu asyik.

Buat Motivasi

Dengan motivasi, hati kita akan terus tergerak untuk melakukan sesuatu. Karena itu, buat lah motivasi yang bertujuan agar kita cepat menguasai materi yang kita pelajari. Sebagai contoh, saya punya tujuan untuk mendapatkan beasiswa kuliah ke Jepang. Karena itu, saya harus belajar dan menguasai materi-materi untuk seleksi. Seleksi dilaksanakan sebentar lagi, jadi saya harus buat perencanaan yang matang serta akurat agar lolos seleksi.

Motivasi yang juga efektif yaitu dengan efek dari lawan jenis. Posisi saya di sini pria. Saya menyukai wanita. Jadi, saya jadikan photo wanita yang dapat membuat saya termotivasi menjadi wallpaper gadget saya. Sehingga setiap kali kita ingin bermain gadget akan teringat dengan tujuan awal kita menguasai materi. Kenapa bisa seperti itu? Tentu saja tujuan kita sukses bukan? Asumsikan wallpaper tersebut adalah orang yang kita cintai. Sehingga kita akan berjuang untuk menjadi yang terbaik demi dia.

Tidak demi Uang

Usahakan kita mempelajari sesuatu bukan demi uang. Tapi, pelajari lah sesuatu dengan tujuan lain yang lebih mulai. Contohnya, tujuan saya yaitu agar saya dapat memajukan bangsa. Dengan tujuan yang positif, maka tuhan akan mempermudah jalan kita. Jika tujuan kita demi uang, saya yakin akan selalu ada halangan yang menghadang. Karena biasanya, belajar demi uang hanya lah membuat belajar kita sebagai sarat saja untuk mendapatkan uang. Pegang teguh pendirian "uang hanya lah bonus untuk saya"!

Cari Pembimbing

Maksudnya yaitu, cari lah seseorang yang telah berhasil dalam mempelajari materi tersebut. Sehingga kita bisa mendapatkan nasihatnya agar cepat menguasai materi tersebut. Karena, ia akan memberikan nasihat dari pengalaman yang ia dapat. Pengalaman merupakan guru terbaik, bukan? Selain bisa mendapat nasihat, kita juga akan dibimbing menuju jalan yang benar.

Kesimpulan

Kesimpulannya yaitu, untuk menguasai sebuah materi yang pertama-tama kita harus mengenalinya (berkenalan). Setelah itu baru lah mencari tujuan lalu pelajari dari yang dasar. Belajar kita akan optimal jika dibuat perencanaan. Setelah merasa cukup, mulai lah latihan dan ulangi hingga kita menguasainya. Kita akan lebih mengenal dan menguasai materi tersebut apabila melakukan eksperimen. Jangan lupa untuk membuat motivasi agar semangat belajar kita tidak menurun. Dan jangan pernah menjadikan uang segalanya serta cari lah pembimbing yang dapat membimbing kita ke jalan yang benar.

Penutup

Apa yang saya tulis murni pengalaman hidup saya salam 17 tahun ini. Umur tidak lah penting untuk belajar. Kebetulan saya masih muda (17 tahun), sehingga masih banyak yang bisa saya pelajari. Untuk yang merasa berumur, jangan pernah sungkan, karena ilmu itu bersifat umum. Apa yang saya tulis ini bisa saja mengandung bahasa yang tidak sesuai. Atau kurang berkenan di hati Anda. Jika ada kesalahan mohon dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanyal manusia biasa yang mencoba menjadi penulis serta membagikan pengalaman hidup saya. Terima kasih.

Jumat, 01 Januari 2016

HTML - Memulai Masuk ke Dunianya

HTML atau HyperText Markup Language merupakan bahasa markup yang sangat terkenal. Siapa yang tidak tahu HTML? HTML digunakan untuk membangun website. Selama ini kita menggunakan internet, sehingga kita sudah biasa berinteraksi dengan website. Nah, website tersebut dibangun dengan HTML. HTML diketahui mulai dirancang oleh Tim Berners-Lee pada tahun 1990. Dan sekarang, pengembangannya dilakukan oleh W3C (World Wide Web Consortium). Ada varian lain dari HTML, yaitu XHTML. Bedanya, XHTML menggunakan XML (Extensible Markup Language) sebagai bahasa utama. Maksudnya, XHTML berbeda dengan HTML karena XHTML merupakan aplikasi XML (XML Application). Adapun HTML saat ini telah mencapai HTML5 (sebelumnya HTML4). Dan W3C sendiri merekomendasikan untuk menggunakan HTML5. Kesimpulannya, HTML merupakan bahasa yang digunakan untuk mendeskripsikan suatu dokumen untuk diproses di peramban (browser).

Dalam tulisan ini, saya akan membahas mengenai pengenalan awal untuk memulai belajar HTML. Di dalam HTML, ada elements, attribute, data types, dan entities. Kenapa sangat penting untuk mengenal bagian ini? Jika Anda ingin menguasai HTML, tentu saja ini sangat penting. Berbeda dengan seseorang yang hanya "bisa". Setelah mengetahui bagian-bagian itu, kita akan berlanjut ke struktur umum HTML. Kemudian, akan saya bahas sedikit bagaimana cara kita supaya cepat menguasai HTML.

Elements

Elements atau biasa disebut tags ini merupakan hal yang harus kita ketahui. Karena dengan tag ini lah kita mendeskripsikan apa yang kita buat. Tag dalam HTML saat ini sangat banyak. Tergantung pada fungsinya. Ada tag untuk melakukan text processing seperti huruf tebal (bold). Ada juga tag untuk membuat inputan. Tapi, secara umum (dilihat dari struktur HTML) yang sering/wajib digunakan yaitu tag !doctype, html, head, title, dan body. Tag ditulis dengan memberikan simbol kurang dari (<) di awal, kemudian lebih dari (>) di akhir. Sehingga, penulisannya menjadi <tag> (tag untuk html berarti <html>). Kemudian, cara untuk menutup tag dengan memberikan garis miring (/) setelah simbol/tanda kurang dari. Maka, hasilnya akan menjadi <html>isi di dalam tag</html>. Walaupun beberapa tag tidak memerlukan ini, sebagai contoh tag untuk membuat baris baru yaitu br, tag ini hanya ditulis <br> saja.

!doctype

Tag ini digunakan di awal baris. Tujuannya yaitu untuk mendeskripsikan tipe dokumen (doctype yaitu document type) yang kita tulis. Karena yang kita tulis adalah HTML, maka ditulis seperti ini:

<!doctype html>
Kode di atas merupakan penampakan dari penggunaan HTML5.

HTML

Sebenarnya, tag ini tidak wajib ditulis setelah penulisan !doctype. Walaupun aneh jika kita tidak menulisnya, tapi sah-sah saja. Karena, di awal dokumen kita telah mendeskripsikan dokumen tersebut. Tapi, lebih baik di tulis, karena ia merupakan salah satu tag dasar yang wajib ditulis di HTML4. Penulisannya:

<html>
...
</html>

Head

Di dalam tag <html>, ada tag <head> yang fungsinya untuk meletakan informasi-informasi yang berhubungan dengan dokumen seperti tag <meta>. Di dalam tag <head> ada tag <title> yang fungsinya untuk mendeskripsikan judul dokumen. Tag ini juga merupakan tag dasar yang sangat penting. Penulisannya:

<html>
  <head>
    ...
  </head>
</html>

Title

Di dalam tag <head>, ada tag <title> yang fungsinya untuk mendeskripsikan judul/nama dokumen yang kita tulis. Jika tag <title> tidak ada, maka di judul tab browser kita akan menjadi alamat URL. Isi dari tag <title> akan muncul di tab browser kita. Penulisannya:

<html>
  <head>
      <title>Judul Halaman</title>
  </head>
</html>

Body

Nah, ini salah satu tag yang sangat penting. Di dalam tag <body> ini lah semua konten isi dokumen kita diletakkan. Posisinya ada di bawah penutup tag </head>. Namun tetap di dalam tag <html>. Penulisannya:

<html>
  <head>
      <title>Judul Halaman</title>
  </head>
  <body>
    ...
  </body>
</html>

Comments

Sama halnya dengan bahasa pemrograman lainnya. HTML juga ada tag khusus yang akan diabaikan. Yaitu tag <!-- -->. Penulisannya:

<!-- Isi Komentar yang akan Diabaikan -->
Tapi, tahu kah Anda? Tag komentar dapat digunakan di browser Internet Explorer sebagai identifier untuk mengatasi kompabilitas versi. Contohnya:

<!--[if lt IE 7]> ... <![endif]-->
Maksudnya, jika versi IE (Internet Explorer) kurang dari 7 (di bawah versi 7) maka lakukan (...). Biasanya, ini digunakan untuk memuat dokumen JavaScript tambahan untuk mengatasi masalah kompabilitas. Tulisan "lt" maksudnya lower than atau (di bawah/kurang dari).

Struktur Umum HTML

Dari tag umum yang ada di atas, maka struktur umum HTML seperti ini:

<html>
  <head>
      <title></title>
  </head>
  <body>
  </body>
</html>

Attributes

Atribut (attribute) pada HTML bermacam-macam. Ada yang secara umum atribut tersebut dapat digunakan di semua tag, tapi juga ada yang khusus. Tapi, ada juga tag yang tidak memiliki atribut. Atribut bisa dibilang sebagai pengaturan tambahan untuk suatu tag. Contoh atribut yang umum yaitu style, title, onClick, class, id, dll. Cara penggunaannya:

<tag atribut>
<!-- contoh: -->
<input required>
Beberapa atribut memiliki pengaturan bawaan. Tapi, beberapa diantaranya tidak sehingga harus diatur oleh kita. Untuk aturan yang kita tulis, disebut data type di dalam HTML. Contoh:

<input id="username">
Di dalam satu tag, kita bisa tambahkan berapa pun atribut. Seperti:

<input id="username" type="text" ...>
Tag input merupakan salah satu tag yang tidak perlu ditutup dengan garis miring (di dalam HTML5, berbeda jika di dalam HTML4).

Data Types

Seperti yang saya sebutkan sebelumnya, data type (tipe data) merupakan sesuatu yang kita tulis di dalam atribut. Bisa berbentu angka (0-9), atau huruf (a-z), atau boolean (true/false). Kita dapat memasukan apa saja ke dalam data type, biasanya script dari JavaScript juga dimasukan melalui atribut onClick, onMouseOver, dll. Bahkan, script tersebut juga ada yang ditulis di dalam atribut href untuk membuat link pada tag <a>.

Entities

Apa itu entities? Entites merupakan sebuah kode khusus yang hasil keluarannya diambil dari unicode ataupun alphanumeric. Simbol-simbol aneh yang tidak dapat kita ketik dapat kita tampilkan dengan entities. Contohnya:

&copy; <!-- Keluarannya: © -->

Langkah Belajar

Setelah membaca tulisan ini, langkah belajar berikutnya yaitu mempelajari elemen-elemen (tags) yang biasa digunakan seperti untuk membuat heading, paragraph, link, memuat gambar, dll. Setelah mengenal banyak elemen, barulah mulai pelajari atribut-atribut yang dapat digunakan. Cara tercepatnya adalah praktik dengan cara "mengotak-atik" kode yang ada. Coba ubah-ubah dan lihat hasilnya. Ambil source dari internet kemudian "otak-atik", begitulah cara tercepat supaya bisa menguasai HTML. Setelah belajar HTML, sebaiknya pelajari CSS (Cascading Style Sheet) yang digunakan untuk mendesain (mempercantik HTML). Tidak enak bukan jika yang kita lihat hanya hitam dan putih? Maka dari itu pelajari CSS setelah HTML sudah dirasa cukup kuat.

Setelah mempelajari HTML dan CSS. Apakah cukup? Tentu saja belum. Saya sarankan Anda pelajari JavaScript (ECMA Script) untuk membuat halaman website yang interaktif. Dengan CSS3 kita sudah dapat membuat animasi, namun dengan JavaScript kita dapat membuat yang lebih keren!

Penutup

Setelah mempelajari HTML, mata kita akan terbuka dan merasakan asyiknya ngoding. Banyak sekali materi yang belum kita pegang. Karena itu, jangan pernah merasa puas atas apa yang telah kita dapatkan sekarang. Karena ilmu HTML sendiri masih luas. Jika hanya "bisa", mungkin cukup. Tapi untuk menjadi professional yang menguasai HTML lebih dalam, masih sangat kurang dan perlu terus belajar. Saya juga masih belajar, jika ada kesalahan mohon dikoreksi dan dimaklumi serta dimaafkan. Saya hanyalah manusia biasa yang mencoba untuk menjadi penulis dan membagikan pengalaman. Terima kasih.