Cukup banyak mahasiswa yang merasa kesulitan dalam belajar membuat program. Bingung harus memulai dari mana. Beberapa kejadian yang sering mengganggu dalam proses ini adalah masalah terjadinya error pada saat kompilasi atau eksekusi program. Hal ini terbukti berdasarkan survei yang saya lakukan di kelas dalam 2 semester terakhir.
Error itu hal biasa dalam belajar membuat program. Sebagaimana klo kita jatuh ato nabrak ketika belajar naik sepeda. Sudah hal lumrah klo salah dalam belajar. Namanya saja belajar. Dari yang sama sekali blank, menjadi skillful. Kita bukan malaikat lho. Yang nggak wajar itu adalah tidak mengambil pelajaran dari kesalahan yang ditemukan, ato yang lebih parah adalah mengulangi kembali kesalahan serupa. Error tidak seharusnya membuat semangat belajar kita padam, terhenti di tengah jalan.
Pembaca yang budiman, disini saya akan berbagi pengalaman belajar membuat program. Jujur, saya berangkat dari nol untuk belajar programming. Bahkan 2 tahun pertama kuliah, saya masih tanpa komputer pribadi. Cuma nebeng teman, ato mampir di lab. Nggak kenal itu bahasa Pascal, bahasa C maupun C++. Tapi karena saya sudah memilih kuliah di bidang IT, ya apa boleh buat. Demi masa depan, semua tantangan harus dihadapi. Salah satunya adalah ketrampilan membuat program.
Tips yang pertama adalah tumbuhkan cinta dulu (ceile...) kepada pemrograman. Tanpa ada cinta ya jangan harap bisa punya motivasi tinggi. Cinta bisa alami, bisa dikondisikan. Sebaiknya dua-duanya kita miliki. Klo alami prosesnya butuh banyak waktu karena "trisno jalaran soko kulino". Cinta karena kebiasaan. Namanya kebiasaan itu lama. Tiada hari tanpa coding :). Namun cinta bisa juga dikondisikan. Relatif cepat. Kita harus kondisikan mindset kita bahwa tanpa menguasai programming ya tamat sudah masa depan. Mo jadi apa nanti? Lulusan IT mo kerja apa klo programming saja nggak ngeh? Ato jangan-jangan malah ke-DO duluan? :(. So, cintai dulu membuat program. Bayangkan dengan kita cinta programming, maka kita kelak akan bisa membuat program sekelas Winning Eleven, Windows Vista ato Counter Strike! Keren kan :)
Kedua, miliki akses ke komputer. Nggak harus beli. Anda masih punya sahabat karib, teman baik (ini gunanya gaul di kampus, ikut organisasi). Anda pun masih bisa pinjam komputer di lab seijin pengurusnya ato bisa juga di ruang himpunan/ asisten. Tips ketiga, terkait dengan masalah komputer, adalah praktekkan programming. Membuat program bukan pekerjaan hayalan, ngelamun, ditulis di angan-angan kemudian dijalankan. Itu mbujuk, ngawur, nggak ada dalilnya. Menguasai pemrograman harus dari mencobanya. Bukan sekedar mendengarkan kuliah di kelas (kalo nggak tidur/ ngobrol sendiri), membaca dan mengingat-ingat catatan. Pemrograman bukan sekedar pemahaman tapi juga menuntut adanya ketrampilan. Dengan mencoba sendiri langsung di depan komputer akan semakin menguatkan interaksi kita dengan programming. Semakin merasakan bahwa membuat program itu sangat menarik. Bayangkan, kita bisa menyuruh-nyuruh komputer untuk mengerjakan apa yang kita inginkan lewat pemrograman!
Yang keempat, mulailah dengan contoh yang sederhana. Jangan overlap langsung ke contoh yang relatif tingkat kesulitannya tinggi. Cukup dengan 10 baris dulu, jangan langsung yang 50 baris. Bisa pusing nantinya. Dalam kurikulum programming, mulailah dengan mengenal jenis-jenis tipe data dan coba program jenis sekuensial sederhana dulu. Lanjutkan dengan mempelajari contoh branching ato looping. Semakin sulit lagi, gabungkan looping dan branching dalam satu program. Tak ketinggalan, pelajari juga tipe data terstruktur semisal array dan struct. Syaratnya: pastikan Anda punya cukup literatur yang berisikan banyak contoh source code program. Setelah anda memahami contoh program, silahkan modifikasi source code tersebut. Pelajari dan analisa dampak yang terjadi.
Kelima, jika menemukan error, jangan panik dulu. Teliti kembali source code yang telah ditulis. Apakah sudah sesuai dengan contoh? Semua kompiler bahasa pemrograman menyediakan fasilitas error report, biasanya di bagian bawah jendel program. Disitu tertera lokasi baris terjadinya error disertai dengan penjelasan sebabnya. Syaratnya ya dikit-dikit kita harus menguasai bahasa Inggris. Bila ternyata masih belum paham maksud error-nya maka ada beberapa kemungkinan solusi: 1. tanya teman baik anda yang paham programming. 2. konsultasi ke mbah Google. 3. bawa masalah tersebut ke kampus. 4. hubungi kantor polisi terdekat (just kidding) maksudnya tulis saja ke blog ini, mungkin saya bisa mbantu :)
Keenam, atur waktu, dan buat jadwal belajar jika perlu. Namanya belajar jelas butuh waktu untuk konsentrasi, fokus. Jam bermain, ato waktu untuk agenda-agenda yang kurang ato bahkan nggak jelas kontribusinya buat masa depan ya sudah sepantasnya dikurangi. Belajar butuh pengorbanan, keluar dari zona nyaman, dari nyantai-nyantai dan asyik berleha-leha. Slot waktu belajar harus jelas. Saya anjurkan bisa rutin tiap hari belajar satu program. Tanamkan: Ini demi masa depan! Ini investasi kita yang akan dipanen 4-5 tahun ke depan. InsyaAlloh.
Ketujuh, tularkan ilmu, sekecil apapun. Orang bijak mengatakan, "Ikatlah ilmu dengan mengamalkannya". Semakin sering kita berbagi ilmu, maka ilmu kita bukannya malah berkurang akan tetapi akan semakin menancap di pikiran, semakin ahli. Orang yang ahli adalah yang bisa memahamkan orang yang sebelumnya tidak paham. Ajari teman yang merasa kesulitan. Kirim artikel-artikel praktis lewat email/ milis. Posting di blog pribadi juga OK.
Tips yang kedelapan, berbakti kepada dan minta doa restu dari orang tua. Bagaimanapun beliau lah yang berkontribusi terhadap kuliah kita. Doa beliau sangat mustajab. Jangan sampai membuat beliau kecewa. Tunjukkan hasil belajar yang positif. Dan tak lupa mohon kepada-NYA supaya dibukakan pintu kemudahan dalam menimba ilmu. Karena milik-NYA-lah ilmu dari segala sumber ilmu. Wallohu a'lam bishowab. Semoga bermanfaat. Btw, ingat-ingat ada DELAPAN (8) tipsnya. Cukup DELAPAN saja... :D
Dasar Operasi String di C++
Tipe data string (nama lain array karakter) sangat sering dipakai dalam pembuatan program, khususnya yang berkaitan dengan pengolahan data berupa kata-kata (kumpulan huruf alpha numerik). Semua bahasa pemrograman mendukung penggunaan konsep string, bahkan untuk bahasa pemrograman generasi terbaru (semisal java, delphi, VB) telah memiliki tipe data string sendiri, bukan lagi memakai array karakter. Lebih dari itu dalam konsep OOP, class string sudah dilengkapi dengan fungsi-fungsi standar yang komplit.
Dalam artikel ini saya akan membahas satu bagian kecil saja tentang string dalam bahasa C++. Kunci utama mengolah tipe data string adalah dengan memahami aturan bahwa karakter terakhir (ujung belakang) sebuah data string SELALU berisi karakter NULL (''). Aturan ini perlu kita camkan ketika akan membuat fungsi-fungsi manipulasi data string, antara lain: menghitung panjang string, menggabungkan dua buah string, mengkopi isi string, mencari data ke dalam string, memotong bagian dalam sebuah string, dst.
Contoh yang akan saya tunjukkan disini adalah program untuk menghitung panjang sebuah string. Perlu Anda ketahui bahwa sebenarnya fungsi-fungsi baku manipulasi string sebenarnya sudah difasilitasi oleh bahasa C++ dengan memakai library string.h, programmer tinggal memanggil fungsinya. Namun tujuan saya membuat contoh ini adalah lebih untuk menguatkan ketrampilan dalam coding bukan sekedar menggunakan.
Dalam library string.h sudah terdapat fungsi length() untuk mengetahui panjang sebuah string. Disini kita akan belajar membuat program yang tujuannya sama denga fungsi length() tersebut. Perhatikan source code berikut:
#include "stdio.h"
void main()
{
char namaku[30];
printf("Ketikkan Nama = "); gets(namaku);
printf("Panjang Nama Anda = ");
for(int i=0; namaku[i] != ''; i++); //loop sampai ketemu NULL
printf("%d karakter", i); //i berisi info panjang string
}
Penjelasan:
Teknik menghitung panjang string di atas adalah dengan membaca satu demi satu isi array karakternya. Selama karakter yang dibaca bukanlah karakter NULL maka i akan terus bertambah satu. Dengan demikian i-lah yang menampung info tentang jumlah karakter di dalam string. Berani mencoba? Selamat Belajar! :D
Dalam artikel ini saya akan membahas satu bagian kecil saja tentang string dalam bahasa C++. Kunci utama mengolah tipe data string adalah dengan memahami aturan bahwa karakter terakhir (ujung belakang) sebuah data string SELALU berisi karakter NULL (''). Aturan ini perlu kita camkan ketika akan membuat fungsi-fungsi manipulasi data string, antara lain: menghitung panjang string, menggabungkan dua buah string, mengkopi isi string, mencari data ke dalam string, memotong bagian dalam sebuah string, dst.
Contoh yang akan saya tunjukkan disini adalah program untuk menghitung panjang sebuah string. Perlu Anda ketahui bahwa sebenarnya fungsi-fungsi baku manipulasi string sebenarnya sudah difasilitasi oleh bahasa C++ dengan memakai library string.h, programmer tinggal memanggil fungsinya. Namun tujuan saya membuat contoh ini adalah lebih untuk menguatkan ketrampilan dalam coding bukan sekedar menggunakan.
Dalam library string.h sudah terdapat fungsi length() untuk mengetahui panjang sebuah string. Disini kita akan belajar membuat program yang tujuannya sama denga fungsi length() tersebut. Perhatikan source code berikut:
#include "stdio.h"
void main()
{
char namaku[30];
printf("Ketikkan Nama = "); gets(namaku);
printf("Panjang Nama Anda = ");
for(int i=0; namaku[i] != ''; i++); //loop sampai ketemu NULL
printf("%d karakter", i); //i berisi info panjang string
}
Penjelasan:
Teknik menghitung panjang string di atas adalah dengan membaca satu demi satu isi array karakternya. Selama karakter yang dibaca bukanlah karakter NULL maka i akan terus bertambah satu. Dengan demikian i-lah yang menampung info tentang jumlah karakter di dalam string. Berani mencoba? Selamat Belajar! :D
Mengenal Pointer di C++
Tipe data pointer merupakan salah satu fitur yang diberikan oleh bahasa C, sebagaimana bahasa Pascal juga mendukungnya. Berbeda dengan jenis tipe data umumnya, tipe data pointer berfungsi untuk menyimpan alamat memori sebuah data melalui variabelnya. Jadi isi sebuah variabel bertipe pointer adalah alamat, bukan nilai data. Sebagai contoh sederhana kita punya variabel pointer integer bernama px (cirinya diawali dengan simbol bintang):
int x, *px;
x = 10;
px = &x;
Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:
#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen
pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}
Silahkan dicoba di rumah. Any question? Selamat belajar :)
int x, *px;
x = 10;
px = &x;
Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:
#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen
pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}
Silahkan dicoba di rumah. Any question? Selamat belajar :)
Tipe Data Struct (Structure) dalam Bahasa C
Manfaat tipe data struct secara umum adalah untuk menyimpan paket (sekumpulan) data ke dalam satu buah nama variabel saja. Kumpulan data tersebut diikat sedemikian rupa menjadi satu. Kumpulan data di dalam sebuah struct bisa mempunyai tipe data dasar yang beraneka ragam. Kumpulan data dalam sebuah struct sangat dianjurkan membentuk sebuah kesatuan makna berkaitan dengan nama struct-nya. Misal, jika struct-nya bernama segitiga maka isi struct-nya antara lain: alas, tinggi, luas dan keliling. Konsep yang lebih lanjut dapat juga dalam sebuah struct terdapat struct lagi (nested struct). Contoh deklarasinya sbb:
struct mhs {
int NPM;
char nama[20];
float IPK;
} data[20];
Contoh di atas menunjukkan bahwa dibuat struct bernama "mhs" dengan isian data NPM, nama dan IPK. Sedangkan nama variabelnya adalah data. Dalam kasus tsb variabel data dibuat berupa array dengan ukuran 20. Artinya kita akan membuat array untuk menampung data struct mhs sebanyak 20. Konsep struct seringkali dikaitkan dengan array karena logikanya penyimpanan data itu tidak cukup satu item saja, tetapi lebih dari itu.
Contoh Program Sederhana:
Dalam operasi struct yang umum digunakan adalah: penambahan data, penampilan data, pencarian data, edit serta hapus data. Berikut ini contoh sederhananya yang saya sarankan untuk dimodifikasi dengan menambahkan menu program yang bisa diulang-ulang. Selamat mencoba :D
#include "stdio.h"
struct mhs
{ int npm;
float ipk;
int terhapus; //untuk menyimpan status data. bernilai 0 jika masih ada, dan 1 jika sdh dihapus
}data[3]; //array of struct dengan 3 elemen
void main()
{ int i, cari, ketemu;
printf("Isikan data\n");
for(i=0;i<3;i++)
{ printf("NPM = "); scanf("%d", &data[i].npm);
printf("IPK = "); scanf("%f", &data[i].ipk);
data[i].terhapus = 0;
};
printf("Isi data\n"); //menampilkan data
for(i=0;i<3;i++)
{ if (data[i].terhapus == 0) //tampilkan data yg belum terhapus
printf("NPM = %d\tIPK = %f\n", data[i].npm, data[i].ipk);
};
printf("Cari NPM = "); scanf("%d", &cari); ketemu = 0; //awal pencarian data
for(i=0;i<3;i++)
{ if (cari == data[i].npm)
ketemu = 1;
}
if (ketemu == 1)
printf("NPM ditemukan\n");
else
printf("NPM tidak ada\n");
printf("Cari NPM hapus = "); scanf("%d", &cari); //awal penghapusan data
for(i=0;i<3;i++) //cari dulu data yang akan dihapus. misal berdasar NPM
{ if ((cari == data[i].npm) && (data[i].terhapus == 0)) //cek juga status datanya
{ data[i].terhapus = 1; break; //sekali ketemu ubah status, keluar loop
}
}
printf("Isi data\n"); //menampilkan data setelah dihapus
for(i=0;i<3;i++)
{ if (data[i].terhapus == 0) //tampilkan data yang statusnya belum terhapus
printf("NPM = %d\tIPK = %f\n", data[i].npm, data[i].ipk);
};
printf("Cari NPM edit = "); scanf("%d", &cari); //awal edit data
for(i=0;i<3;i++) //cari dulu data yg akan di-edit. misal berdasar NPM
{ if (cari == data[i].npm && (data[i].terhapus == 0)) //cek juga status data
{ printf("Masukkan data baru:\n");
printf("NPM = "); scanf("%d", &data[i].npm);
printf("IPK = "); scanf("%f", &data[i].ipk);
data[i].terhapus = 0;
}
}
printf("Isi data\n"); //tampilkan lagi isi data yg telah berubah
for(i=0;i<3;i++)
{ if ((data[i].terhapus == 0))
printf("NPM = %d\tIPK = %f\n", data[i].npm, data[i].ipk);
};
}
NB: please, remember my last words in my last slide yesterday. Good Luck.
struct mhs {
int NPM;
char nama[20];
float IPK;
} data[20];
Contoh di atas menunjukkan bahwa dibuat struct bernama "mhs" dengan isian data NPM, nama dan IPK. Sedangkan nama variabelnya adalah data. Dalam kasus tsb variabel data dibuat berupa array dengan ukuran 20. Artinya kita akan membuat array untuk menampung data struct mhs sebanyak 20. Konsep struct seringkali dikaitkan dengan array karena logikanya penyimpanan data itu tidak cukup satu item saja, tetapi lebih dari itu.
Contoh Program Sederhana:
Dalam operasi struct yang umum digunakan adalah: penambahan data, penampilan data, pencarian data, edit serta hapus data. Berikut ini contoh sederhananya yang saya sarankan untuk dimodifikasi dengan menambahkan menu program yang bisa diulang-ulang. Selamat mencoba :D
#include "stdio.h"
struct mhs
{ int npm;
float ipk;
int terhapus; //untuk menyimpan status data. bernilai 0 jika masih ada, dan 1 jika sdh dihapus
}data[3]; //array of struct dengan 3 elemen
void main()
{ int i, cari, ketemu;
printf("Isikan data\n");
for(i=0;i<3;i++)
{ printf("NPM = "); scanf("%d", &data[i].npm);
printf("IPK = "); scanf("%f", &data[i].ipk);
data[i].terhapus = 0;
};
printf("Isi data\n"); //menampilkan data
for(i=0;i<3;i++)
{ if (data[i].terhapus == 0) //tampilkan data yg belum terhapus
printf("NPM = %d\tIPK = %f\n", data[i].npm, data[i].ipk);
};
printf("Cari NPM = "); scanf("%d", &cari); ketemu = 0; //awal pencarian data
for(i=0;i<3;i++)
{ if (cari == data[i].npm)
ketemu = 1;
}
if (ketemu == 1)
printf("NPM ditemukan\n");
else
printf("NPM tidak ada\n");
printf("Cari NPM hapus = "); scanf("%d", &cari); //awal penghapusan data
for(i=0;i<3;i++) //cari dulu data yang akan dihapus. misal berdasar NPM
{ if ((cari == data[i].npm) && (data[i].terhapus == 0)) //cek juga status datanya
{ data[i].terhapus = 1; break; //sekali ketemu ubah status, keluar loop
}
}
printf("Isi data\n"); //menampilkan data setelah dihapus
for(i=0;i<3;i++)
{ if (data[i].terhapus == 0) //tampilkan data yang statusnya belum terhapus
printf("NPM = %d\tIPK = %f\n", data[i].npm, data[i].ipk);
};
printf("Cari NPM edit = "); scanf("%d", &cari); //awal edit data
for(i=0;i<3;i++) //cari dulu data yg akan di-edit. misal berdasar NPM
{ if (cari == data[i].npm && (data[i].terhapus == 0)) //cek juga status data
{ printf("Masukkan data baru:\n");
printf("NPM = "); scanf("%d", &data[i].npm);
printf("IPK = "); scanf("%f", &data[i].ipk);
data[i].terhapus = 0;
}
}
printf("Isi data\n"); //tampilkan lagi isi data yg telah berubah
for(i=0;i<3;i++)
{ if ((data[i].terhapus == 0))
printf("NPM = %d\tIPK = %f\n", data[i].npm, data[i].ipk);
};
}
NB: please, remember my last words in my last slide yesterday. Good Luck.
Subscribe to:
Posts (Atom)