User Interface

User interface atau disingkat dengan UI adalah tampilan yang menjadi jembatan antara manusia dan mesin dalam hal ini yang saya bahas adalah mesin komputer. User interface membantu manusia (user) dalam mengoperasikan mesin seperti yang sudah ditentukan oleh manusia yang merancang mesin tersebut (programmer).

Saya menyebut user interface adalah sebuah karya seni. Seperti sungai nil yang sejuk dan subur  diantara tandus dan membosankannya gurun di Mesir. Yah, programming itu seperti gurun pasirnya dan user interface itu seperti sungai nil.

Pada proses pembuatan aplikasi berskala besar, tugas dari programmer dan designer dibedakan dengan jelas. Tapi untuk saya, membuat user interface adalah hiburan. Yah, walaupun sekarang saya masih melongo takjub melihat user interface yang keren-keren. Jujur saya akui, sampai sekarang juga saya masih berkutat dengan mempelajari warna. Sangat dasar dan jauh dari expert, tapi bukankah yang keren dari ilmu adalah proses belajarnya. Kadang saya bingung sama jalan pikiran saya, karena terlalu banyak pertanyaan yang muncul dan belum mau beranjak kalau belum terpecahkan. Mungkin inilah yang membuat saya lambat belajar.

Pada tulisan selanjutnya akan saya bahas tentang apa yang saya pelajari dari "warna". tunggu yaaaaa...

Struktur Data Part 2 - Pointer

Pembaca yang budiman, di point ini saya berhenti cukup lama. Susah memahami secara mendalam tentang apa itu pointer. Padahal sederhananya begini, pointer itu sebenarnya adalah variabel, tapi variabel yang secara tidak langsung menunjuk pada address dari variabel yang lain.

Ada 2 macam operator pointer, yaitu:
  1. Operator deference(&)
  2. Operator reference(*) 
Pada saat kita memberi nilai pada sebuah variabel, nilai itu ditempatkan dalam sebuah alamat(address) memori. Pada dasarnya kita tidak harus menentukan dimana variabel dan nilainya itu ditempatkan, karena sudah diatur oleh compiler c++.  Tapi sisi negatifnya kita jadi tidak mengetahui dimana variabel tersebut disimpan (pada alamat memori tertentu).
1. Operator deference

Untuk mengatasi masalah tersebut (mengetahui alamat memori) kita dapat menggunakan operator pointer deference yaitu dengan menempatkan tanda address of atau "&" didepan sebuah variabel.

2. Operator reference

Sebaliknya, untuk mengetahui nilai variabel yang disimpan pada alamat memori tertentu kita dapat menggunaka operator reference. yaitu dengan menambahkan tanda asterisk (*) pada depan variabel yang berisi nilai alamat memori.

Contoh dari kedua operator pointer tersebut dapat dilihat dari kode berikut ini:

perhatikan penggunaan tanda & dan * sebagai operator pointer



Hasil dari kode tersebut adalah:

hasil run compile dan run dari kode diatas

Pendeklarasian pointer dapat dilakukan dalam konstanta dan variabel.

1. Deklarasi Pointer pada Konstanta = `Type data` * const `nama_konstanta`

2. Deklarasi Pointer pada Variabel= `Type data` * `nama_variabel`


Struktur Data Part 1 - Konsep dasar struktur data

Pada tulisan sebelumnya saya udah curhat kenapa saya mulai lagi belajar dari awal. Setelah mencari informasi dari berbagai sumber, akhirnya saya memutuskan yang harus saya kuasai untuk menapaki jalan terjal menjadi programmer adalah dengan belajar struktur data.

 Kenapa harus struktur data?
Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai dengan efisien. Kata kunci efisien yang menurut kamus besar bahasa indonesia berarti "tepat atau sesuai untuk mengerjakan (menghasilkan) sesuatu (dng tidak membuang-buang waktu, tenaga, biaya)" sangat saya sukai, karena saya adalah seorang pemalas. Pemakaian struktur data yang benar pasti memudahkan algoritma dan membuat program lebih efisien dan sederhana. Karena saya sangat malas, saya suka kata-kata itu (mudah, efisien, dan sederhana)

Programmer itu harus menghasilkan sesuatu dengan tepat, cepat,dan mudah. Bukan berniat menggampangkan pekerjaan programmer, maksud saya adalah semua orang mungkin bisa mengerjakan programming stuff dengan cara apapun. Akan tetapi yang namanya programmer harus mengerjakan sesuatu dengan "the most efficience possible steps". Istilahnya kalau cut the rope itu bintangnya tiga lah ya.

Saya tidak keberatan menghabiskan banyak waktu untuk membaca materi struktur data, karena saya memerlukan kesibukan di dalam KRL serpong-tanah abang yang sangat sumpek.
Selanjutnya kita akan masuk ke materi struktur data, yaitu:
1. Konsep dasar struktur data.

"Data itu apa sih?" data adalah representasi dari fakta di dunia nyata yang disimpan atau direpresentasikan dalam tulisan, suara, gambar, sinyal, atau simbol. Cara kita ngatur data-data itulah yang disebut dengan struktur data.

Struktur data dibagi menjadi 2, yaitu:
    • Struktur data sederhana (array dan record)
    • Struktur data majemuk yang juga dibagi dua,yaitu linier (Stack, Queue, Linked list) dan non linier (graph dan pohon biner)
source:onlinefungags.com
Untuk struktur data tersebut akan dibahas pada part selanjutnya dan membentuk struktur-struktur data pada contoh diatas, kita membutuhkan beberapa pengetahuan dasar tentang Konstanta, variabel, dan tipe data, procedure, function, dan pointer. 
2. Konstanta dan Variabel
Dalam membuat program seringkali kita menggunakan angka atau string secara berulang-ulang.untuk memudahkannya kita boleh menggantinya dengan konstanta atau variabel.

Konstanta dan variabel itu sebenarnya hampir sama, bedanya adalah:
Konstanta
Variabel
Bersifat tetap
Bersifat dinamis
Nilai sudah dideklarasikan di awal program
Nilai tidak dideklarasikan di awal program
Variable mempunyai aturan dalam pendeklarasiannya, yaitu:
    • Nama variabel harus diawali dengan huruf.
    • Tidak boleh menggunakan spasi pada satu nama variabel. Spasi bisa diganti dengan karakter underscore (_).
    • Nama variabel tidak boleh mengandung karakter-karakter khusus, seperti : .,+, -, *, /, <, >, &, (, ) dan lain-lain.
    • Nama variabel tidak boleh menggunakan kata-kata kunci d bahasa pemrograman

Konstanta mempunyai aturan yang sama dengan variabel dalam pendeklarasiannya, akan tetapi mempunyai sedikit perbedaan yaitu diawali dengan keyword const atau #define.
contoh perbedaan konstanta dan variabel
3. Tipe Data

Selanjutnya saya mempelajari tentang tipe data. Dapat dilihat pada contoh variabel dan konstanta di atas, bahwa penulisan konstanta atau variabel didahului dengan pendeklarasian tipe data (pada kasus ini integer). Pemakaian data yang tepat membuat program yang kita buat efektif. Tipe data digolongkan menjadi beberapa jenis, yaitu: 
  1. numeric : integer, shortinteger
  2. real : double, float
  3. logika : boolean
  4. karakter : string, char, varchar
       

Buat apa sih C++?

"Kenapa harus belajar cplusplus?"

Pertanyaan itu terngiang di benak saya semenjak kuliah. Sama sekali ga asik lho padahal. Soalnya saya dulu masuk teknik komputer karena lihat website yang keren. Kok pas masuk kuliah saya malah diajarin algoritma, struktur data, osi layer, bytecode, assembly, dan tentu saja cplusplus. Mentok-mentok belajar delphi yang menurut saya ga menarik karena ga dinamis dan tampilannya kaku. Itu bikin saya frustasi.
Akhirnya seadanya saya ikut kuliah demi kuliah. Dengan hasil yang seadanya pula tentunya, karena lebih banyak nyonteknya.
source:pando.com
Singkat cerita saya lulus, dan diterima di perusahaan multinasional yang cukup ternama, dan anehnya saya masuk divisi marketing. Sangat jauh dari apa yang saya minati. Tapi karena ibu saya sangat bangga saya bekerja disitu akhirnya saya bertahan sampai 4 tahun ini. Karena kurang meminati pekerjaan saya dan kebanyakan nganggur di kantor, akhirnya saya mencoba belajar untuk jadi keren (programming). Yah, saya masih berpikir jadi programmer itu keren. Saya belajar php, html, javascript, java, csharp, dotnet, android, objective-c dan banyak lagi. Saya coba bikin aplikasi yang berguna ditempat kerja saya, dan berhasil.

Tapi saya merasa ada yang kurang. Banyak sekali pertanyaan muncul. Ya karena saya cuma pake tutorial-tutorial di internet atau buku. Saya cuma jadi programmer kacangan. Kalau ada kesusahan, ya tinggal browsing dan masalah beres. Programmer itu ga kayak gini, batin saya akhir-akhir ini.

Saya harus tau seluk beluknya, saya harus mahir. Dan setelah saya buka kembali lembaran-lembaran materi kuliah, saya merasa malu sama diri saya sendiri. Dulu saya punya banyak kesempatan belajar, kenapa baru sekarang punya niat. Di usia yang hampir menginjak 27 tahun saya baru pengen belajar. Kuliah lagi? Tentu saja tidak, saya punya prioritas alokasi budget, tentu saja keluarga kecil saya.

source:www.instituteofopinion.com
Akhirnya hari ini saya beranikan diri memulai belajar sendiri. Mungkin terlambat untuk jadi programmer handal, tp kalau saya jadikan ini sebagai hobi kan ga masalah to? Hehe...
source:gamatika.fmipa.ugm.ac.id/

Hari ini saya memulai belajar struktur data dan tools untuk mempelajarinya saya gunakan cplusplus. Mulai hari ini, ijinkan saya untuk membagi tentang apa yang saya pelajari. Ya kalo ga ada yang baca paling tidak bisa jadi dokumentasi pribadi saya, dan bisa jadi warisan untuk anak saya nanti.