Showing posts with label Contoh Program. Show all posts
Showing posts with label Contoh Program. Show all posts

Monday, August 8, 2011

Moving Letters

Animasi ini dibuat berdasarkan ide dasar yang disampaikan oleh rekan Artana.



Pada contoh animasi ini, teman-teman belajar bagaimana bekerja dengan tipe data string. Di dalam contoh program yang diberikan, saya sudah memberikan komentar secukupnya dan juga beberapa pertanyaan. Jika teman-teman bisa menjawab pertanyaan tersebut, berarti teman-teman sudah mengerti maksud dari program yang saya buat.

Selamat Belajar ...

Download

NB: Pada contoh program yang teman-teman download, terdapat dua buah files. File yang berupa pdf dan file yang berupa .c. Alasan saya adalah karena saya membuat program ini pada sistem operasi Linux, sehingga jika teman-teman membuka file ini di Windows, kemungkinan teman-teman harus merapikan lagi source code yang ada sebelum bisa dibaca dengan baik.

Monday, April 4, 2011

Simple Rattle Snake

Saya yakin banyak diantara kita pernah tahu aplikasi permainan rattle snake. Pada permainan ini, pemain akan mengontrol jalannya seekor ular untuk memakan “makanan” yang telah disediakan dan pada setiap kali makan, panjang dari ular akan bertambah. Nah pada pembahasan kali ini, kita akan belajar bersama-sama bagaimana membuat program yang mirip dengan rattle snake. Kita akan membuat program mulai dari yang sederhana sampai dengan yang lumayan kompleks. Program yang kompleks adalah pengembangan dari program yang sederhana sehingga teman-teman diharapkan mempelajari program yang sederhana baru kemudian program yang kompleks.

Berikut ini adalah beberapa skenario program yang telah dibuat:

1. Pada program yang pertama, fokus kita adalah membuat bagaimana agar ular bisa berjalan mengikuti rute tertentu. Misal menuju ke kanan, kemudian ke bawah, kemudian ke kiri, kemudian ke atas, begitu seterusnya (lihat source code: ular1)


2. Pada program kedua, fokus kita adalah membuat ular untuk berjalan secara acak. Idenya adalah setiap kali ular mencapai batas atas, bawah, kanan atau kiri, ular harus memilih arah selanjutnya secara acak (lihat source code: ular2)


3. Pada program ketiga, fokus kita adalah bagaimana mengembangkan program kedua, sehingga ular yang ada bukan saja satu ekor melainkan dua ekor. Dengan memahami program yang telah ada, teman-teman bisa saja membuat agar ular yang berjalan bisa lebih dari dua (lihat source code: ular3)




INFO : di Tokokatong sudah tersedia contoh pembuatan "Rattle Snake" menggunakan teknik Array, yang memungkinkan kita membuat "ular" yang lebih menarik.

Friday, March 19, 2010

Membuat Fungsi Berbentuk Template

Perhatikan contoh fungsi berikut :


int getNilaiTerkecil(int a, int b)
{
int hasil = b;
if (a<b)
{
hasil = a;
}
return hasil;
}

fungsi diatas digunakan untuk memilih nilai terkecil diantara dua nilai, a dan b. Jika a lebih kecil dari b maka nilai kembalian dari fungsi ini adalah a sebaliknya yang dikembalikan adalah nilai b.

Dari pendeklarasian fungsi tersebut, kita dapat melihat bahwa fungsi ini hanya bisa digunakan untuk tipe bilangan int, karena kedua parameternya, a & b, memiliki tipe int. Jika kita menggunakan tipe data yang lain, maka akan terjadi kesalahan kalkulasi.

int nilai_a = 5;
int nilai_b = 7;
int hasil = getNilaiTerkecil(nilai_a, nilai_b);
cout << hasil ; // akan tertampil 5

double nilai_a2 = 5.2;
double nilai_b2 = 7;
double hasil2 = getNilaiTerkecil(nilai_a2, nilai_b2);
cout << hasil2 ; // akan tertampil 5 <-- SALAH

salah satu teknik yang bisa kita pakai sebagai solusi dari masalah diatas adalah dengan membuat lagi sebuah fungsi baru dengan nama yang sama namun menggunakan parameter bertipe : double

double getNilaiTerkecil(double a, double b)
{
double hasil = b;
if (a<b)
{
hasil = a;
}
return hasil;
}

Kelemahan cara ini menurut saya, ukuran baris di dalam program kita menjadi lebih banyak. karena kita harus menuliskan ulang fungsi yang sama, namun yang diganti hanyalah bagian tipe data.

Untuk membuat program yang lebih ramping dan mampu menyelesaikan masalah diatas, kita bisa menggunakan template. Dengan menggunakan template, tipe data yang hendak dipakai bisa ditentukan oleh kita saat pemanggilan fungsi tersebut :

int nilai_a = 5;
int nilai_b = 7;
int hasil = getNilaiTerkecil<int>(nilai_a, nilai_b);
cout << hasil ; // akan tertampil 5

double nilai_a2 = 5.2;
double nilai_b2 = 7;
double hasil2 = getNilaiTerkecil<double>(nilai_a2, nilai_b2);
cout << hasil2 ; // akan tertampil 5.2 <-- BENAR

Berikut ini adalah bentuk fungsi getNilaiTerkecil(), jika dituliskan dalam bentuk template :

template <typename TIPEDATA>
TIPEDATA getNilaiTerkecil(TIPEDATA a, TIPEDATA b)
{
TIPEDATA hasil = b;
if (a<b)
{
hasil = a;
}
return hasil;
}

kata 'typename' bisa juga diganti dengan 'class'. Tidak ada beda, apakah kita menggunakan 'typename' atau menggunakan 'class'. Namun umumnya jika TIPEDATA yang akan dipakai adalah berupa class, maka yang digunakan adalah 'class' bukan 'typename'.

Saturday, March 13, 2010

Pustaka Cppindonesia Ver 1.3


Penambahan :
  1. fungsi setCursor() : digunakan untuk mengatur ukuran, menampilkan atau menghilangkan kursor
  2. fungsi setColour() : digunakan untuk mengatur warna tulisan
  3. fungsi getColourXY(KOLOM,BARIS) : digunakan untuk memperoleh informasi warna pada posisi KOLOM,BARIS




Friday, March 12, 2010

Membuat Tabel / Kotak Dengan Pustaka Cplusplusindonesia


Berikut ini adalah gambar sebuah kotak yang bisa dibuat menggunakan Pustaka Cpluplusindonesia.


Kotak tersebut terdiri dari 6 bentuk dasar :



Semua bentuk dasar ini memiliki kode dalam bilangan desimal. Untuk mengetahui kode-kode tersebut fungsi showASCII() dengan parameter TABEL (Parameter lain yang tersedia adalah : HURUF_BESAR, HURUF_KECIL, dan ANGKA) bisa digunakan.

Cplusplusindonesia cpp;
cpp.showASCII("TABEL");

Perintah diatas akan menampilkan :



Tampak dari hasil yang tertampil, hubungan antara bentuk dasar dengan kode desimal.

Dengan pengetahuan ini, kita bisa menggunakan fungsi putCharAtXY() untuk menampilkan bentuk dasar dari sebuah kode desimal.

cpp.putCharAtXY(10,15,186);

Perintah diatas akan menampilkan bentuk dasar dari kode desimal 186, garis double vertikal, pada posisi KOLOM = 10 dan BARIS = 15.

Berikut ini adalah source code lengkap untuk membuat KOTAK diatas :
#include <iostream>
#include "cppindonesia.h"
using namespace std;

int main()
{
Cppindonesia cpp;

cpp.putCharAtXY(10,10,205); //horisontal
cpp.putCharAtXY(11,10,205);
cpp.putCharAtXY(12,10,205);

cpp.putCharAtXY(10,12,205); //horisontal
cpp.putCharAtXY(11,12,205);
cpp.putCharAtXY(12,12,205);

cpp.putCharAtXY(9,11,186); //vertikal
cpp.putCharAtXY(13,11,186);

cpp.putCharAtXY(13,10,187); //pojok kanan atas
cpp.putCharAtXY(9,10,201); //pojok kiri atas
cpp.putCharAtXY(9,12,200); //pojok kiri bawah
cpp.putCharAtXY(13,12,188); //pojok kanan bawah

cin.get();
return 0;
}

Thursday, March 11, 2010

Pustaka Cppindonesia Ver 1.2

Perubahan dari Ver 1.1 :
1. Perbaikan komentar pada cppindonesia.h : Penambahan Contoh penggunaan setiap fungsi

Penambahan :
1. Fungsi putCharXY() : Mencetak Karakter/Simbol pada posisi X, Y
2. Fungsi showASCII() : digunakan untuk menampilkan semua daftar ASCII yang diinginkan

Demo sederhana penggunaan Pustaka Versi ini :



Pada video diatas, Window bisa digerakan dengan cara di DRAG.

Download Source Code (Sebaiknya menggunakan IDE QT-Creator).

Thursday, March 4, 2010

Pemrograman Dengan Mouse

Pada tulisan kali ini akan diperkenalkan sebuah PUSTAKA yang dibuat oleh Cplusplusindonesia untuk menyimpan semua fungsi yang sudah pernah dibahas. Dengan adanya pustaka ini, program kita akan menjadi lebih rapih, karena fungsi-fungsi yang sering kita pakai sudah dipindahkan ke dalam pustaka ini. Nama dari pustaka ini adalah "cppindonesia" sehingga untuk menggunakan pustaka ini cukup menambahkan perintah berikut pada source code kita :

#include "cppindonesia.h"

Pada versinya yang pertama, sudah terdapat beberapa fungsi yang bisa digunakan. Beberapa diantaranya sudah kita pakai pada contoh program sebelumnya seperti gotoxy(), kbhit(), dll. Terdapat juga beberapa fungsi tambahan yang berhubungan dengan penggunaan Mouse. Silahkan membuka file cppindonesia.h untuk melihat semua daftar fungsi yang sudah diimplementasikan lengkap dengan penjelasannya.

Berikut ini adalah program kecil yang mendemokan penggunakan pustaka ini :




Pustaka "cppindonesia" terdiri dari 2 (dua) file penting dan diletakan dalam direktori pustaka pada project yang bisa didownload :

1. cppindonesia.h : Berisi informasi prototype semua fungsi (merupakan teks file)
2. libcppindonesia.a : Berisi implementasi prototype (bukan teks file)

Untuk mempermudah mencoba penggunaan dari pustaka ini, disarankan untuk menggunakan IDE QtCreator karena project yang didownload adalah project yang dibuat menggunakan IDE ini. Bagi teman-teman yang menggunakan IDE lain, perlu dicari bagaimana caranya mengabungkan file pustaka (*.a) yang tersedia dengan program yang akan dibuat.

Petunjuk penting untuk menjalankan project :
  1. Extractlah paket yang didownload, misalkan di : D:\Cppindonesia\Pustaka
  2. Jalankan Qt-Creator
  3. Pilih menu : File -> Open File or Project, masuk ke D:\Cppindonesia\Pustaka, kemudian bukalah file project : usepustaka.pro
  4. Pada sisi kiri dari project yang dibuka, bukalah file usepustaka.pro
  5. Pada file usepustaka.pro, kita akan menemukan baris seperti berikut : LIBS += "C:\Users\braveheart\Documents\QtCreatorProjects\usepustaka\pustaka\libcppindonesia.a" dan INCLUDEPATH += "C:\Users\braveheart\Documents\QtCreatorProjects\usepustaka\pustaka"
  6. Ubahlah baris tersebut menjadi : LIBS += "D:\Cppindonesia\Pustaka\pustaka\libcppindonesia.a" dan INCLUDEPATH += "D:\Cppindonesia\Pustaka\pustaka"
  7. Jalankan project




Saturday, February 13, 2010

Game Sederhana

Pada 3 (tiga) tulisan sebelumnya, sudah diperkenalkan teknik sederhana untuk membuat Animasi. Teknik ini bisa dikembangkan lagi untuk membuat Animasi yang lebih menarik atau bisa juga dikembangkan untuk membuat sebuah game sederhana.

Pada source code yang disertakan bersama tulisan ini, teman-teman akan menemukan sebuah contoh game tembak-tembakan sederhana. Untuk bisa membuat game ini, pengetahuan yang sudah diperkenalkan pada tulisan sebelumnya sangat dibutuhkan dan juga diperlukan fungsi yang bisa mengenali penekanan tombol PANAH dan SPASI, untuk itu telah dilakukan modifikasi pada fungsi kbhit() dan getch().

Berikut ini adalah cuplikan singkat tampilan dari game yang dibuat :




Terdapat 3 buah informasi yang ditampilkan pada layar :
  1. Arah Senjata : Jika kita menekan tombol PANAH KANAN, arah senjata akan menampilkan KANAN begitu juga saat menekan PANAH KIRI, arah senjata akan menampilkan KIRI.
  2. Tembak : Jika kita menekan tombol SPASI, akan ditampilkan tulisan IYA dan jika peluru sudah mencapai BATAS ATAS akan ditampilkan tulisan TIDAK.
  3. Kena : Berisi informasi terjadinya tabrakan antara PELURU dan TARGET / SASARAN.

Thursday, February 11, 2010

Animasi - Teknik Mendekteksi Tabrakan

Sampai tulisan ini dibuat, sudah terdapat 2 (dua) buah seri belajar membuat animasi sebelumnya, animasi maju mundur, dan animasi maju mundur 2 yang merupakan dasar dari tulisan ini, sehingga sangat disarankan untuk teman-teman membaca & memahami dulu kedua seri tersebut.

Pada tulisan kali ini, kita akan belajar bagaimana mendeteksi terjadinya tabrakan antara dua objek, dua tulisan. Pengetahuan ini sangat membantu kita untuk membuat animasi teks yang lebih menarik lagi.

Berikut ini adalah contoh output dari source code yang tersedia.




Perhatikan, informasi tabrakan yang ditampilkan. Jumlah tabrakan akan meningkat jika tulisan "CPP" bertabrakan dengan karakter "x".

Thursday, February 4, 2010

Animasi Tulisan Maju-Mundur 2

Program ini adalah pengembangan dari program sebelumnya. Bagi yang baru belajar, disarankan untuk melihat dulu program sebelumnya untuk memahami konsep dasar. Seperti yang sudah dijelaskan sebelumnya, animasi ini menggunakan konsep sederhana "TULIS" dan "HAPUS", pada program kali ini saya perkenalkan juga teknik menghapus menggunakan kombinasi perintah cout.width() dan cout.fill() dan cout<<"".





Wednesday, February 3, 2010

Animasi Tulisan Maju-Mundur

Animasi tulisan Maju-Mundur adalah animasi sederhana membuat tulisan bergerak maju dan saat mencapai posisi tertentu tulisan tersebut akan bergerak mundur, begitu seterusnya. Program akan berakhir jika pemakai menekan tombol 'x'.





Program ini bisa dibuat dengan mudah menggunakan Turbo / Borland C++ for Dos, karena telah tersedia fungsi-fungsi yang cukup mudah untuk digunakan seperti GOTOXY, DELAY, KBHIT dan GETCH.
  1. delay(): digunakan untuk menunda proses eksekusi selama beberapa millisecond
  2. gotoxy(): digunakan untuk menempatkan kursor pada posisi KOLOM dan BARIS
  3. kbhit(): digunakan untuk mendeteksi terjadinya penekanan tombol. Jika terdapat tombol yang ditekan maka fungsi ini akan mengembalikan nilai TRUE sebaliknya FALSE
  4. getch(): digunakan untuk mengambil informasi tombol yang terakhir kali ditekan.

Yang perlu dilakukan hanyalah menggunakan pusataka, conio.h & dos.h.

#include <conio.h>
#include <dos.h>

Akan tetapi ketika kita menggunakan IDE lain yang tidak tersedia kedua pustaka diatas atau tidak terdapat fungsi yang diinginkan, maka proses pembuatan program ini akan menjadi sulit.

Program kali ini akan dikhususkan untuk teman-teman yang menggunakan sistem operasi Windows yang tidak menggunakan IDE Turbo / Borland C++ for DOS, karena kita akan menggunakan pustaka windows.h untuk membuat keempat fungsi diatas, setelah itu menggunakan fungsi buatan kita ini untuk membuat animasi Tulisan Maju-Mundur.


Saturday, January 16, 2010

Mari Berlatih Bahasa C++ (Bagian 4)

program ini merupakan tambahan dari program Simple Database yang sebelumnya. Terdapat dua kemampuan baru yang ditambahkan pada program ini, mendambahkan data ke file dan membaca data dari file. Berikut ini adalah tambahan menu dari program sebelumnya :

File yang diciptakan adalah file csv (file teks) dan dapat dibuka serta diedit menggunakan openoffice atau microsoft exel. Semua fields data seperti Nama, nomor induk, dan alamat secara otomatis terpisah pada kolom yang berbeda.


Sebagai latihan, cobalah menyelesaikan beberapa masalah berikut :
  1. Untuk saat ini nama file teks telah ditentukan, simpleDB.csv. Cobalah memodifikasi program ini supaya user bisa juga menentukan sendiri nama file yang diinginkan.
  2. Jika anda memilih menu buka dari file, maka data yang sebelumnya ada didalam memori akan diganti dengan data baru yang diambil dari file. Cobalah modifikasi program ini supaya data yang sudah ada di memori tidak dihapus tetapi ditambahkan dengan data dari file.
  3. Cobalah tambahkan sebuah menu lagi untuk menghapus data. Mula2 user akan ditanya data mana yang akan dihapus (misal berdasarkan Nomor Induk), jika data ini ada maka data ini dihapus, namun jika data ini tidak ada maka akan muncul pesan "Data yang ingin dihapus tidak ditemukan".


Sunday, December 27, 2009

Program Database Sederhana

Program ini menunjukkan bagaimana menggunakan class, pointer, vector, input-output untuk membuat program pendaftaran mahasiswa.

Berikut ini adalah tampilan utama dari program ini :


Jika user memilih '1' maka akan tertampil :


Jika user memilih '2' maka tertampil :


Jika memilih '3' maka akan tertampil :


Jika memilih '4' program akan berakhir.






Saturday, October 31, 2009

Membangkitkan Bilangan Acak

Terdapat dua fungsi yang dibutuhkan untuk membangkitkan bilangan acak srand() dan rand(). Fungsi srand() dibutuhkan untuk menentukan "bibit" dari bilangan acak yang akan dibangkitkan. Sama seperti kalau kita menanam tumbuhan, bibit yang berbeda tentu akan menghasilkan tambuhan dewasa yang berbeda pula. Sedangkan fungsi rand() digunakan untuk menampilkan bilangan acak yang dihasilkan dari "bibit" yang diberikan ke fungsi srand().

Bentuk umum dari fungsi srand() adalah:

srand(bibit);


Sebagai Contoh:

srand(4);


Bentuk umum dari fungsi rand() adalah:

rand() % n;


Bilangan acak yang dihasilkan oleh fungsi rand() adalah dari 0 s/d (n-1).


Sebagai contoh:
rand() % 10;


Perintah di atas akan menghasilkan bilangan antara 0 s/d 9.

Seperti yang sudah dijelaskan sebelumnya, jika kita menggunakan "bibit" yang sama maka hasil yang diperoleh dari bibit ini pastilah sama. Untuk membuktikan, cobalah menjalankan program berikut berkali-kali dan perhatikan tampilan dilayar:

#include<iostream>
using namespace std;

int main()
{
srand(5);
int data = rand() % 10;
cout << data << endl; cin.get(); }


Agar bisa membangkitkan bilangan yang benar-benar acak, kita harus memberikan "bibit" yang berbeda-beda pula kepada fungsi srand(). Salah satu cara yang bisa dilakukan adalah memberikan "bibit" menggunakan fungsi time(), seperti berikut:


srand(time(NULL));


Sekarang, cobalah jalankan program berikut beberapa kali, dan perhatikan keluaran yang ditampilkan ke layar.


#include<iostream>
using namespace std;

int main()
{
srand(time(NULL));
int data = rand() % 10;
cout << data << endl; cin.get(); }


Fungsi rand() umumnya digunakan untuk membangkitkan bilangan acak yang bertipe bilangan bulat. Cobalah mencari solusi bagaimana membuat bilangan acak "pecahan" antara 0 dan 1 ?

Friday, October 30, 2009

Menampilkan Tabel ASCII

Perhatikan program berikut:



#include <iostream>
using namespace std;

int main()
{
int data = 48;
for(int i=0;i<=9;i++) {
cout << char(data+i) << " ";
}
cout << endl;
}


Program diatas akan menampilkan angka dari 0 s/d 9. Ide dibalik program sederhana di atas adalah menampilkan informasi yang bernilai desimal (48 s/d 57) dalam bentuk karakter ke layar.


Representasi desimal dalam bentuk karakter bisa dilihat pada tabel ASCII.

Program berikut akan menampilkan semua isi tabel ASCII.



#include <iostream>
using namespace std;

int main()
{
for(int i=0;i<=255;i++) {
cout << char(i) << " ";
if(i%15==0) {
cout << endl;
}
}
cout << endl;
}

Tuesday, October 6, 2009

Mari Berlatih Bahasa C++ (Bagian 3)

Tugas kali ini merupakan pengembangan dari tugas sebelumnya, Input Kalimat, dengan penekanan pada pembuatan fungsi. Disarankan teman-teman untuk membaca artikel tentang fungsi, pengenalan bahasa C++ (bagian 7).


Saran:
Jangan melihat dulu source code. Cobalah membaca lagi petunjuk tugas dan menjalankan contoh program yang disediakan. Jika sudah selesai atau mengalami masalah dalam menyelesaikan tugas ini, silahkan membuka source code.



Sunday, October 4, 2009

Mari Berlatih Bahasa C++ (Bagian 2)

Saat bekerja dengan ARRAY, hal yang perlu diperhatikan adalah jangan sampai memberikan data ke dalam ARRAY melebihi kapasitas yang disediakan. Jika hal ini dilanggar maka masalah yang dihadapi adalah buffer overflow. Tujuan dari tugas kali ini adalah membuat suatu sistem “Input Kalimat” di mana user hanya bisa menyimpan data ke dalam ARRAY sebanyak tempat yang sudah ditentukan sebelumnya.

Saran:
Jangan melihat dulu source code. Cobalah membaca lagi petunjuk tugas dan menjalankan contoh program yang disediakan. Jika sudah selesai atau mengalami masalah dalam menyelesaikan tugas ini, silahkan membuka source code.



Mari Berlatih Bahasa C++ (Bagian 1)

Program membalikan kata adalah salah satu tugas yang saya dapatkan di lab, ketika mulai belajar C/C++. Tugas ini sangat bagus untuk mengetahui sebaik mana pengetahuan kita tentang ARRAY, dalam hal ini STRING. Untuk bisa menyelesaikan tugas ini, pemahaman tentang VARIABEL, PERULANGAN dan INPUT-OUPUT dengan C++ sangat dibutuhkan.

Saran:
Jangan melihat dulu source code. Cobalah membaca lagi petunjuk tugas dan menjalankan contoh program yang disediakan. Jika sudah selesai atau mengalami masalah dalam menyelesaikan tugas ini, silahkan membuka source code.

Friday, October 2, 2009

Mari Berlatih Bahasa C++

Tulisan tentang “Mari Belatih Bahasa C++” adalah seri belajar bahasa pemrograman C++ dari awal yang ditujukkan untuk teman-teman yang baru belajar pemrograman. Harapannya adalah dengan mengikuti seri ini, teman-teman akan belajar menggunakan pengetahuan yang sudah dipelajari di bangku kuliah atau pelajari lewat materi yang disediakan di website ini, untuk menyelesaikan persoalan mulai dari yang tingkat dasar sampai dengan tingkat lanjut. Dengan berlatih, mudah-mudahan kemampuan pemrograman teman-teman akan bisa semakin baik.

Wednesday, September 30, 2009

Animasi Sederhana Menggerakan Karakter


Gambar di atas adalah tampilan dari program ini. Program ini dibuat menggunakan perintah C dan bisa dijalankan dengan menggunakan Turbo C 3.0.

C++ adalah pengembangan dari bahasa C sendiri dengan penambahan kemampuan OOP, sehingga dengan memahami program ini terutama memahami logika pemrogramannya akan sangat membantu kita belajar pemrograman C++.

Saat program ini dijalankan, terdapat 4 (empat) pilihan yang bisa dipakai untuk menggerakan objek (berupa gambar bintang).
  • Jika menekan tombol w, objek akan digerakan ke atas
  • jika menekan tombol s, objek akan digerakan ke bawah
  • jika menekan tombol d, objek akan digerakan ke kanan
  • jika menekan tombol a, objek akand digerakan ke kiri

Penjelasan Alogritma