Friday, 24 July 2009

Melatih Jurus Kedua (1)

Setelah kita menguasai jurus 'if', sekarang kita akan belajar jurus baru yaitu namanya 'for'.

Wattau..!!!

For yang kalau diartikan 'untuk' ini adalah sebuah pengulangan (loop). Pengulangan berfungsi untuk menyederhanakan kode kita agar dilihatnya nggak panjang/ banyak baris kode (siapa bilang banyak baris kode bagus?!) dan memperkecil ukuran source code (kode sumber, itu loh file yang berisi kode2-nya). Jadi intinya penggunaan 'for' berfungsi untuk membuat program se-efisien mungkin.

Bentuk umum pengulangan for:
...
for( inisialisasi; kondisi; inisialisasi_kembali){
...
}
...


  1. Inisialisasi, berfungsi sebagai awal proses pengulangan. Biasanya diisi dengan membuat variabel sebagai penanda pengulangan telah sampai dimana. Tapi bisa juga tidak diisi.

  2. Kondisi, berfungsi sebagai pemeriksaan diakhir pengulangan, jika kondisinya sudah tidak terpenuhi lagi maka pengulangan akan selesai. Ini merupakan bagian terpenting karena kalau salah membuatnya maka akan terjadi 'infinitive loop' atau pengulangan tanpa akhir (bisa-bisa nge-hang komputernya >_<).

  3. Inisialisasi kembali, berfungsi untuk inisialisasi kembali, wew.. kata-katanya diulang-ulang.. ~_~ , tapi maksudnya yah itu.



Bingung dengan penjelasan diatas? nggak perlu pusing-pusing mikirin apalagi sampe ngingetin semaleman ( apa coba, hehehe.. ^_^ ). Yang pentingkan mengerti pola dan kegunaannya beres kan?!.

Sehingga kalau nanti ketemu kode seperti berikut:


...
#include < stdio.h >

int main(){
for( int A = 0;A < 5;A++){
printf("A = %d\n",A);
}
printf("\n\n");

int B;
for(B=0;B < 5;){
printf("B = %d\n",B);
B++;
}
printf("\n\n");

int C=5;
for(;;C--){
char D=45+C;
printf("C = %d, dan D = %c\n",C,D);
if(C < 1){
break;
}
}
printf("\n\n");

return 0;
}
...

Err.. moga- moga kodenya kebaca.. heheh. soalnya ngk tau caranya bikin spasi/hirarki kode @_@ ( itu loh jarak isi kode). Ok, setelah penjelasan diatas maka kita tidak perlu cemas, dan gelisah hehehe.. karena sudah mengerti dasarnya ^^.

"Hmm... printf itu fungsinya untuk apa yah?", printf berfungsi sama seperti halnya 'cout', printf merupakan fungsi dari library bahasa C (kakaknya C++). Dan penggunaannya harus mengikuti pola tertentu. Misal untuk menampilkan variabel bertipe int menggunakan '%d', untuk char '%c', dan string '%s', Ribet deh.. ^^ .

Ntar kita lanjutin pembahasannya...

Friday, 10 July 2009

Melatih Jurus Dasar Pertama

Untuk mewujudkan impian yang akan kita capai, *dengan diiringi musik pembawa semangat jeng... jeng.. jeng... se ilah*

yaitu membuat game dengan menggunakan bahasa pemrograman C++ kita harus menguasai terlebih dahulu beberapa jurus / kata kunci (keyword) yang umum digunakan, diantaranya 'if' dan 'for'. Tapi saat ini kita latihan 'if' terlebih dahulu.

Jurus pertama ciat!!...
if atau kalau diartikan 'jika', merupakan suatu percabangan. Percabangan yang dimaksud adalah Proses menjalankan statement / pernyataan berdasarkan kondisi tertentu. Sederhanakan? he..he..he.. Misal ada kode seperti berikut:


...
int nilaiBudi = 80;
if( nilaiBudi > 80){
std::cout<<"Budi Lulus Ujian";
}
else {
std::cout<<"Budi gagal Lulus Ujian";
}
...


Kode diatas berarti memeriksa variabel " nilaiBudi " apakah lebih besar ('>') dari 80, Jika iya maka akan tampil keluaran (output) berupa kalimat "Budi Lulus Ujian". Tapi kalau nilainya lebih kecil atau sama dengan 80 maka akan tampil output kedua yaitu kalimat "Budi gagal Lulus Ujian", wah sadis juga nih ujian mesti diatas 80 :D. Hasil yang akan diperoleh adalah kalimat Budi gagal Lulus Ujian, Kenapa? karena nilai budi harus lebih besar dari 80, misalnya 81, 82, dst.

"Bagaimana kalau nilai Budi 80 tapi tetap lulus? Apakah ditulis: if(nilaiBudi>79)?", bisa saja tapi lebih baik menggunakan operator ">=" yang berarti "Lebih besar atau sama dengan", ini contoh kodenya:

...
if( nilaiBudi >= 80){
...
}
...


"Kalau kode nya begini: if( nilaiBudi == 80){ ... }, apa yang terjadi?", ini berarti nilaiBudi harus benar-benar 80 tidak boleh kurang atau lebih jika ingin menjalankan statement yang ada dalam if.

"Ngomong-ngomong else itu apa yah?", else (indonesia: lain/selain) yaitu pernyataan jika kondisi / persyaratan-nya tidak terpenuhi.

"Kalau ada kode seperti berikut bagaimana?"

...
//memeriksa nilai Budi
if( nilai >= 80){
std::cout<<"Budi Lulus, terus dikasih Laptop";
}
else if( nilai >= 70){
std::cout<<"Budi Lulus, terus dikasih HP";
}
else if( nilai >= 50){
std::cout<<"Budi Lulus, terus dikasih Es Krim";
}
else if( nilai >= 30){
std::cout<<"Budi tetap lulus, karena ujiannya ngk sadis";
}
else{
std::cout<<"Budi gagal Lulus";
}
...


Kalau pada else tidak perlu ada kondisi / persyaratan untuk menjalankan pernyataan didalamnya jika if sebelumnya tidak terpenuhi. Sedangkan " else if " persyaratannya harus terpenuhi terlebih dahulu. Agar program kita menjadi lebih dimanis, artinya variabel nilai Budi tak selalu itu-itu aja nilainya ketika program dijalankan maka kita perlu menambahkan fungsi yang berguna untuk meminta input (masukkan) kepada user. Berikut ini contoh kodenya:

...
int nilai = 0; //nilai Ujian Budi
std::cout<<"Masukkan Nilai Budi : ";
std::cin>>nilai;

//selanjutnya memeriksa nilai Budi
if( nilai >100){
std::cout<<"Batas Nilai Ujiannya cuma sampai 100 bro";
}
else if( nilai >= 80){
std::cout<<"Budi Lulus, terus dikasih Laptop";
}
else if( nilai >= 70){
std::cout<<"Budi Lulus, terus dikasih HP";
}
else if( nilai >= 50){
std::cout<<"Budi Lulus, terus dikasih Es Krim";
}
else if( nilai >= 30){
std::cout<<"Budi tetap lulus, karena ujiannya ngk sadis";
}
else{
std::cout<<"Budi gagal Lulus";
}
...


"Bagaimana kalau kondisi-nya ada dua? Seperti nilai pertama harus diatas atau sama dengan 80 dan nilai kedua diatas / sama dengan70?", Disini kita memerlukan dua variabel untuk melakukannya dan menggunakan operator tambahan " && ". Berikut contohnya:

...
int nilaiPertama = 0, nilaiKedua = 0;
std::cout<<"Masukkan Nilai Pertama Budi : ";
std::cin>>nilaiPertama;

std::cout<<"Masukkan Nilai Kedua Budi : ";
std::cin>>nilaiKedua;

char *kalimat="";
if( !(nilaiPertama >=80 && nilaiKedua >= 70)){
kalimat = "Tidak";
}
std::cout<<"Budi "<<kalimat<<" Lulus";
...


"Wah char-nya kok ada tanda bintang (*)?", sebentar kita flashback hehehe... sebelumnya char hanya dapat menampung satu huruf / karakter (misal 'a', 'd', '1', dst) dengan * berarti variabel tersebut akan menempati memori secara dinamis (sesuai jumlah memori yang kosong) sehingga dapat menampung lebih banyak karakter yang akan membentuk kata / kalimat.

"Terus tanda seru (!) itu fungsi-nya apaan yah?", tanda seru itu berarti negasi dari pernyataan "(nilaiPertama >=80 && nilaiKedua >= 70)".

"Negasi itu apaan yah?", negasi merupakan istilah dalam logika matematika yang berarti ingkaran (itu loh lagu anak-anak, "Ingkaran besar.. ingkaran besar.. ingkaran kecil.." itu Lingkaran!) atau lawannya dari suatu pernyataan dilambangkan dengan ~. Istilah-istilah umum lainnya dalam logika matematika, yaitu Dan (^), Atau (V), Implikasi (->), dsb.

"Pernyataan? Yang mana sih?", kondisi " nilaiPertama >=80 " sebetulnya adalah sebuah pernyataan juga *dengan nada sok tau*, tidak hanya yang diakhiri titik koma (;). Jika "nilaiPertama >=80" adalah p, dan "nilaiKedua >= 70" adalah q maka logika matematikanya akan seperti ini " ~(p^q) ". Apa yang akan terjadi selanjutnya? Jika nilai pertama kurang dari 80 maka p = false karena bernilai salah, nilai dari p^q jika p false adalah false.

"Kok bisa bergitu?", ini sesuai dengan tabel kebenaran! (se ilah..) berikut tabel kebenarannya ( B/Benar mewakili True dan S/Salah mewakili False) :



























p
q
p^q
B
B
B
B
S
S
S
B
S
S
S
S


Dari tabel tersebut dapat disimpulkan bahwa dua pernyataan yang sedang dibanding dengan operator Dan (&& atau ^) harus sama-sama bernilai true. Kita kembali lagi ke kode "if( !(nilaiPertama >=80 && nilaiKedua >= 70))" jika kedua nilai tersebut memenuhi syarat maka akan dilakukan ingkaran / negasi-nya. Sehingga yang terjadi adalah nilai kondisinya false dan penambahan kata "Tidak" tidak (dibacanya aneh ngk? --' ) dimasukkan ke dalam variabel char.

Kalau masih kurang jelas dengan kode diatas silahkan download file melalui link ini, sizenya 129 KB. Mohon maaf kalau ada kesalahan dalam penulisan ^_^ .

- krofz

Sunday, 5 July 2009

IDE adalah Persiapan Sebelum Berperang

(Update : 7 Juli 2009)

Ini adalah tulisan pertamaku dalam blog ini tapi bukan yang terakhir lho.. :)

Ok, kita mulai aja seperti judul pada blog ini yaitu "Membuat Game Dengan C++" itu berarti kita akan menyentuh bagian programming dalam proses pembuatan game. Kenapa C++? Karena C++ adalah salah satu bahasa pemrograman (inggis:programming) yang sangat powerfull sama seperti Basic, Python, dll. Jika banyak bilang pemrograman itu sulit mungkin mereka belum merasakannya dari awal. Karena jika kita sudah mengerti dasarnya dan dapat membuat sebuah game mini dijamin bakal "Nagih!". Tujuan dari blog ini (mudah-mudah kesampean :D doain yah) adalah membuat sebuah game-game sederhana (niatnya sih game RTS/Real Time Strategy *siul-siul*) dengan tutorial-tutorial yang moga-moga dapat dimengerti dan dipahami hehehe.., maklum aku termasuk orang yang sulit menyampaikan maksud dan tujuan dari suatu hal (lah malah curhat @_@ ).

Persiapan
"Apa yang harus saya lakukan pertama kali?", mungkin itu pertanyaan pertama Anda jika baru ingin mengenal pemrograman. Yang harus dilakukan adalah mempunyai IDE (Integrated Development Environment, bahasa Indonesianya "Lingkungan Pengembangan Terpadu") bukan IDE pada kabel data Harddisk. IDE adalah semacam program yang dapat membantu kita membuat program, banyak yang menyebutnya sebagai compiler tapi IDE lebih kompleks karena memiliki Editor, Compiler, Linker, dan Debugger yang memiliki fungsi masing-masing (lebih lengkapnya lihat "IDE - Wikipedia").

Di situ mungkin banyak pilihan IDE untuk C++ (lihat IDE C++ di Wikipedia) yang tersedia, tapi disini penulis akan menggunakan Code::Blocks (versi 8.02) sebagai IDE-nya, karena bersifat opensource (Gratis!) mungkin hahaha.. :D .












[ GAMBAR ]

Sebelumnya penulis menggunakan Dev-C++ tapi kayanya IDE tersebut sudah berhenti dikembangkan (*sambil ngecek situs resminya*). Ok, sudah download Code::Blocks-nya? Ini linknya jika belum, http://www.codeblocks.org/downloads/ silahkan di-install seperti biasa karena prosesnya sangat mudah tinggal Next-Next-Next!... dengan beberapa opsi yang dapat diatur Lalu jalankan program tersebut.

hmm... hmm.... Bingung selanjutnya mau ngapain setelah program dijalankan? mungkin Anda bisa download materi-materi di-Internet tentang C++ melalui Goggle. Dan mungkin blog ini tidak terlalu menjelaskan secara detail teori-nya (mungkin karena yang nulis kurang paham :p ? tapi untung praktiknya bagus ;D ). Sebagai awal kita dengan C++ dan IDE Code::Blocks kita akan mencoba langkah-langkah berikut:

1. Buka program Code::Blocks, pilih File > New > File... akan terdapat tiga pilihan, yaitu file C/C++ Header, C/C++ Source, dan Empty File.


[ GAMBAR ]


2. Pilih C/C++ Source ketika muncul dialog wizard pilih C++ lalu masukkan path ( lokasi file ) kalau bingung nulis path-nya tekan objek kotak dengan gambar titik-titik (semacam Browse) untuk memudahkan penyimpanan dan jangan lupa menuliskan nama file C++-nya plus nama extensinya (.cpp). Dalam contoh ini penulis menyimpannya di My Document, contoh: C:\Documents and Settings\%username%\My Documents\namafile.cpp


[ GAMBAR ]


3. Setelah itu masukkan kode berikut: (sebaiknya dalam menulis setiap kode jangan terbiasa melakukan "Copy-Paste" jika belum hafal :D )


#include <iostream>

// tanda garis miring dua ini adalah sebuah
// komentar yang hanya dapat ditulis 1 baris

/*
Jika ingin dua baris atau lebih tanpa membuat garis
miring lagi dapat menggunakan tanda /* sebagai awal
dan diakhiri dengan tanda berikut */

// komentar tidak akan dikompilasi oleh compiler
int main(){

//membuat variabel dengan tipe data int dan nama "angka"
//data yang dapat ditampung berupa bilangan bulat
//baik positif maupun negatif seperti 100, 50, -25, -50


int angka;
angka = 10;
std::cout<<"Nilai Angka = "<<angka<<"\n\n";

//membuat variabel dengan tipe data char dan "nama karakter"
//data yang dapat ditampung berupa huruf 'a', 'b', 'c'
//atau karakter lainnya.
char karakter;
std::cin>>karakter;

//mengembalikan dengan angka 0, sistem akan
//merespon bahwa program tidak mengalami masalah
return 0;
}



4. Selanjutnya kita akan melakukan kompilasi (compile) atau proses membangun (build), dengan memilih menubar Build > Build and Run atau dapat menekan F9. Pilihan ini berfungsi agar program kita diterjemahkan kedalam kode biner lalu menjalankan pada saat selesai di-bangun (build).

[ GAMBAR ]

5. Hasil yang akan diperoleh saat program dijalankan:

[ GAMBAR ]

Penjelasan Singkat :

#include <iostream>, berarti source kode akan memanggil / menyertakan file bernama iostream. " Iostream apaan tuh? " iostream adalah file dengan ekstensi .h (iostream.h)/ header yang berisi fungsi-fungsi penting dalam urusan input output stream (makanya disingkat iostream). " Kenapa tidak ditulis #include <iostream.h> dengan menambahkan ekstensi .h?
", ini karena iostream merupakan salah satu Standar Library dalam C++. Jadi semua library / file header standar dalam C++ tidak perlu menambahkan akhiran .h.

" Dalam kode tersebut fungsi yang bagaimana yang terdapat dalam iostream? ", fungsi yang terdapat dalam namespace std, yaitu cout dan cin. Cout (baca-nya C-out) untuk proses output dan Cin (baca-nya C-in) untuk proses Input.

Selanjutnya yang dimaksud dengan int main() adalah sebuah fungsi dengan tipe data int, dalam sebuah kode C/C++ kita harus membuat fungsi ini sebagai induk dari fungsi-fungsi lainnya. Dalam C++ modern kita harus menuliskan fungsi utama ini dengan tipe data int agar sistem menangani program dengan baik

"Lho bedanya int namaVariabel; dengan int namaVariabel(){} yang ada tanda kurung ("()") dan bracket ("{}") apaan yah?" Ok, ok... kalau pada int namaVariabel yang diakhiri tanda titik koma (;) itu berarti suatu statement/pernyataan. Dalam C++ setiap pernyataan harus
diakhiri dengan ';' berbeda dengan Visual Basic jika Anda pernah melihat kode Visual Basic. Sedangkan pada int namaVariabel(){} itu berarti membuat sebuah fungsi dengan nama "namaVariabel" dan tipe data "int" dan tidak memiliki argumen.

"Tidak memiliki argumen? Maksudnya?", argumen pada fungsi berfungsi agar memproses data dengan nilai-nilai tertentu. "Argumen yang mana sih?", argumen itu yang berada dalam tanda kurung ("()"), contoh fungsi yang memiliki argumen:
...
int perkalian(int a, int b){
return a*b;
}
...

"Fungsi diatas buat apaan tuh?", fungsi tersebut akan mengalikan variabel a dan variabel b dengan bantuan operator '*', karena fungsi perkalian memilki tipe data int (bilangan bulat) maka fungsi/variabel tersebut dapat menyimpan data berupa bilangan bulat, dan penggunaan return dapat digunakan. 'return' berfungsi sebagai nilai kembalian (bukan habis belanja ... :p ).

"Memang ada fungsi tanpa nilai kembalian?", ada contohnya fungsi berikut:
...
void hanyaNampilinAngka(int a){
std::cout<<a<<" + "<<a<<" = "<<a+a;
}
...


OK, kita lanjutkan dengan kode berikut:
...
char kar;
std::cin>>kar;
...


berfungsi agar program meminta masukkan (input) ke pada user yang menjalankan program tersebut. Tujuan dari masukkan agar program tidak langsung menutup karena jika baris kode masukkan tersebut dihapus program hanya menampilkan keluaran (output) dan langsung menutup dikarenakan tugas program hanya untuk menampilkan keluaran kepada user dan tak ada statement apapun untuk menunggu program ditampilkan dilayar.

Kalau kurang jelas mengenai kodenya dapat didownload melalui link ini, sizenya cuma 136 KB kok hehehe. Tapi itu tidak termasuk IDE Code::Blocks.

Fiuh.... Panjang juga... hehehe... hari ini mungkin cukup di sini dulu... kita kendurkan dulu otot-otot yang tegang dan saatnya istirahat... karena istirahat juga bagian dari suatu latihan... *hoamm.. ngatuk, tidur dulu sebentar*

- krofz

 

back to top

back to top