lain-lain




View Full Version : Latihan C++  (Khusus Pemula)


krofz
14-02-2008, 02:27 PM
ehm... kayanya banyak thread kaya gini ^^..... tapi ngk papa..... thread ini khusus membahas C++ dan kalau tanya-tanya juga boleh (moga-moga aku bisa jawab (>.<)) dan untuk kakak-kakak yang lain yang bisa jawab, jawab aja hehehehe maklum jarang online. Untuk kompilernya gw pake DEV-C++ versi 4.9.9.2, tapi sebaiknya liat page-4 (http://www.videogamesindonesia.com/forum/programming/53716-latihan-c-krofz-khusus-pemula-4.html) untuk menggunakan Code::Blocks (http://www.codeblocks.org/)

sebagai permulaan nih :
Latihan 1 : Hello Video Games Indonesia


#include

using namespace std;

int main(){
cout<<"Hello Video Games Indonesia \n";
system("pause");
}

penjelasan :
Pada baris 1 #include compiler akan mencari file iostream.h, pada compiler-compiler modern tak perlu lagi menuliskan iostream seperti ini : #include, tapi untuk beberapa header seperti conio harus ditulis #include.
Using namespace std; digunakan agar dapat mengenali perintah cout.
cout berfungsi untuk menampilkan var, angka atau kalimat yang ditulis dengan tanda " .... " (untuk kalimat).
system("Pause") berfungsi agar komputer meminta user untuk menekan tombol dan baru jendela tertutup. Jika tidak jendela akan langsung tertutup.ada tambahan pada baris :

....
"Hello Video Game Indonesia \n";
.....

"... \n" : \n ini sama fungsinya seperti "...< ......
"Ngetes \n doang \n\n";
......


Latihan 2 : Meminta User memasukkan angka


#include

using namespace std;

int a,b=5; //ini merupakan contoh variable global
int main(){
cout<<"Masukkan sebuah angka yang ingin dijumlahkan dengan 5 : ";
cin>>a;
cout<<'\n'<<"Angka yang Anda masukkan : "<>a;="" class="" code="" const="" continue="" cout<<"dan="" cout<<'\n'...="" daftar="" dan="" dari="" data="" delete="" dengan="" descending="" di="" digunakan="" dipraktikkan.="" do-while="" double="" file="" float="" for="" fungsi="" gambar="" games="" getch()="" getche()="" goto="" hanya="" hasilnya="" header="" hello"="" hello="" ii="" iii="" indonesia="" ini="" int="" invers="" iostream="" jauh="" jumlah="" kalimat="" karakter="" kelas="" kondisi="" konstanta="" kotaknya="" lain="" langsung="" latihan-latihan="" latihan="" layar="" leak="" lebih="" logika="" maksimum="" masukkan="" matriks="" memahami="" memanggil="" memasukkan="" member="" membersihkan="" membesarkan="" membuat="" meminta="" memory="" menambah="" menambahkan="" mencari="" mengecek="" mengecilkan="" mengenal="" menggunakan="" menghitung="" menyeleksi="" minimum="" new="" nilai="" null="" objek="" operator="" ordo="" pada="" page="" pangkat="" peloncatan="" pembahasan="" pengulangan="" penjelasan="" perkalian="" pointer="" program="" random="" sebaiknya="" sebuah="" sedikit="" selamat="" source="" spesial:="" spesial="" sqrt="" srand()="" statemen="" static="" string="" struktur="" system("pause");="" tahun="" tak="" tekan="" tentang="" ternary="" text="" thread="" tipe="" typedef="" ulang="" untuk="" user.="" user="" variabel="" video="" void="" while'="" while="" yang="" }="">


krofz
14-02-2008, 02:43 PM
kalian juga bisa menggunakan "endl" untuk menambah baris contoh :


.....
cout<<"Hello VGI "<

using namespace std;

int main(){
string kalimat = "Contoh kalimat ke ";
int a;
for(a=0;a<10;a++){
cout<


validator
14-02-2008, 08:59 PM
wah mantap bro tutornya, btw for bukannya untuk perulangan yah O.o jadi kita ngulang sebanyak kondisi yang kita kasih


krofz
15-02-2008, 11:14 AM
oh iya ... salah tulis (^^)... for emang buat pengulangan..... makanya diakhir latihan ada tulisan CMIIW (Call Me If I Wrong) atau mohon maaf kalau salah.... hehehe... langsung aja..

Latihan 4 : Membuat Kalimat dengan Char

Kalau sebelumnya membuat kalimat dengan 'string'.... sekarang menggunakan char..

#include

using namespace std;

//Fungsi Utama
int main(){
char kata='A';
char* Kata="Ini kalimat dibuat dengan char plus pointer";
char KATA[25]="Kalimat ini dibatasi";
cout<


krofz
15-02-2008, 11:54 AM
Sekarang kita menggunakan fungsi logika... yaitu....if...

Latihan 5 : Menggunakan fungsi logika "if"


#include

using namespace std;

int main(){
string a, b= "Benar",s="Salah";
cout<<"Jawablah pertanyaan berikut, apa nama URL baru Video Games Indonesia..??\n";
cout<<" (a) www.vgi.web.id \n"<<" (b) www.vgi.com \n";
cout<<" (c) www.videogamesindonesia.com \n"<<" (d) new.videogamesindonesia.com \n";
cin>>a;
if(a=="a"){
cout<


krofz
16-02-2008, 09:46 AM
Latihan 6 : Pengulangan dengan 'for', 'while' dan 'do while'

#include

using namespace std;

int main(){
int A=10;
for(int a=1;a<5;a++){
cout<<"Nilai a = "<0){="" }=""> A--;
}
cout<>g;="" (0="" (walaupun="" .......="" ......="" .....="" :="" <="" ^^)="" ^^<="" a<<",="" ada="" adalah="" akan="" angka="" berbeda="" berikut="" boleh="" cin="" cout<<"kau="" cout<<"masukkan="" dan="" dengan="" dijelaskan="" dilakukan......;="" do="" do{.....="" do{="" endl;="" for="" fungsi="" g<<'\n';="" hanya="" hehehe...="" hehehe="" jadi="" jelas="" kalau="" ke...="" kegunaan="" kita="" kondisi="" kurang="" langsung="" maaf....="" memasukkan:="" memiliki="" mengakhiri):="" mengakhiri);="" merupakan="" mohon="" pengulangan="" penjelasan="" penulisan="" penulisannya="" pernyataan="" saja="" salah="" sama="" sampai="" sebagai="" sebelumnya="" sedangkan="" statemen="" suatu="" sudah="" system("pause");="" tanya="" tentang="" terpenuhi...="" terulang="" terus="" untuk="" while(kondisi){="" while,="" while="" yang="" }="" }while(g!="0);" }while(kondisi="">


krofz
16-02-2008, 10:09 AM
Latihan 7 : Membuat sebuah fungsi

#include

using namespace std;

int tambah (int a, int b,int c)
{
int r;
r=a+b+c;
return (r);
}

int main (){
int x;
x=tambah(5,6,8);
cout<<"Hasil : "<


michaelrawi
16-02-2008, 11:37 AM
bos, kl udah sampe lvl advanced, ajari tutorial pointer lebih dalam ya. Dari dulu gua paling ga ngerti kl berhubungan sama pointer. ;D.

Ajarin MFC juga good idea kl bisa :D. Penasaran jg sama MFC sih, cuma kayanya ribet ;D ...


krofz
16-02-2008, 01:29 PM
@michaelrawi : gw cuman tau pointer kaya gini nih.....

Latihan 8 : Sedikit pembahasan tentang 'pointer' dan 'conio.h'


#include
#include

using namespace std;

int main (){
int y,z;
int *x;
x=&y;
*x=10;
cout<<"Hasil : "<


lalilulelo
16-02-2008, 02:33 PM
hmm setau aku pointer gunanya:
-untuk membuat dynamic allocation (alias array/class dinamis)
-passing parameter by reference (passing parameter dimana jika nilai yg dipasingkan digunakan dan dirubah akan merubah juga nilai aslinya)

selebih itu ga tau juga hehehe...^^


validator
16-02-2008, 11:53 PM
@krofz

nambahin aja, kalo mau cetak isi dari variabel y pake x kek gini


cout<<(*x)<
jadi kalo u bilang kek gini


*x=50;
cout<


krofz
18-02-2008, 12:06 PM
@validator : Oh.. 'Suhu' mohon bimbingan dan petunjuknya..... :gomen:

Dan untuk kakak-kakak yang lain juga mohon bimbingannya...
:gomen:

Latihan 9 : Menggunakan variabel 'static'

#include

using namespace std;

int Y;
int contoh1(){
int A=0;
A=A+Y;
return A;
}

int contoh2(){
static int B;
B=B+Y;
return B;
}

int main(){
int x,y,z;
cin>>Y;
x=contoh1();
y=contoh1();
z=contoh1();
cout<


krofz
20-02-2008, 12:03 PM
Latihan 10 : Struktur kondisi dengan 'switch()'
Sebelumnya untuk melakukan pengecekkan kondisi kita menggunakan 'if' sekarang kita akan menggunakan switch.


#include

using namespace std;

int main(){
int bil;
cout<<"Masukkan pilihan (1, 2,dan 3) : "; cin>>bil;
switch(bil)
{
case 1 :cout<<"Contoh pilihan 1\n";
cout<<"Pernyataan lagi\n";
break;
case 2 :cout<<"Contoh pilihan 2\n";
break;
case 3 :cout<<"Contoh pilihan 3\n";
break;
default:cout<<"Tidak ada\n";
break;
}
system("pause");
}


Penjelasan :

case 1 : artinya jika nilai yang dimasukkan adalah 1 maka pernyataan didalamnya akan keluar.
Jika diakhir pernyataan tidak diakhiri dengan break maka pernyataan selanjutnya akan keluar sampai pernyataan di dalam switch habis.
default : artinya jika nilai yang dimasukkan tidak sesuai dengan kondisi -kondisi sebelum (contoh case 1, ..) maka pernyataan didalamnya akan ditampilkan.bentuk umum penggunaan switch :

.....
switch(variabel){
case 1 : statemen / pernyataan ;
case 2 : .......;
default : ......;
}
......


krofz
21-02-2008, 12:27 PM
Latihan 11 : Menggunakan 'iomanip.h'


#include
#include

using namespace std;
int main(){
string T =" kalimat";
char S='-';
cout<


krofz
22-02-2008, 02:01 PM
Latihan 12 : Membuat bilangan random

#include

using namespace std;

void mulai();
void lagi();

string ma="Masukkan Angka : ";
int j,makr,x;

void mulai(){
cout<>makr;
j=rand()%makr;
cout<<"Angka randomnya : "<>x;="" cout<<"\ningin="" cout<


krofz
23-02-2008, 10:20 AM
Latihan 13 : Lebih jauh dengan string

#include
#include
#include

using namespace std;

int main(){
string nm;
string nml;
float harga=0;
int jumlah=0;
string jdl1 = "Latihan memasukkan string";
string jdl2 = "Latihan mengubah angka pada string ke nilai";

//judul ke 1
cout << jdl1<<"\nSiapa Nama mu ? ";
getline (cin, nm);
cout << "Hai " << nm << " Apa Kabar ?.\n";
cout << "Apa yang paling kau sukai ? ";
getline (cin, nm);
cout << "Aku juga suka " << nm << " , Serius!\n";

//judul ke 2
cout << jdl2<<"\n\nMasukkan Harga: ";
getline (cin,nml);
stringstream(nml) >> harga;
cout << "Masukkan Jumlahnya: ";
getline (cin,nml);
stringstream(nml) >>jumlah;
cout << "Jadi harga total: " << jumlah*harga << endl;
return 0;
}
Penjelasan :
Pada contoh ini terdapat 2 file header (selain iostream), yaitu : untuk dapat menggunakan perintah getline, untuk dapat menggunakan perintah stringstream.
getline(cin, var) : untuk meminta user memasukkan kalimat. Kenapa tidak menggunakan cin ? Karena cin tidak mendukung spasi jadi kemungkinan jika kita menggunakan cin dan mencoba memasukkan kalimat dengan adanya spasi maka program kita akan error.
stringstream(var) : untuk memindahkan angka yang terdapat pada string ke dalam angka. Contoh :
int angka=0;
string cnth="200";
stringstream(cnth)>>angka;
cout<


krofz
28-02-2008, 12:24 PM
Latihan 14 : Operator Ternary

Operator ini memiliki konsep sama seperti suatu percabangan atau pemilihan terhadap kondisi tertentu. Bentuk umumnya :
ekspresi 1 ? ekspresi 2 : ekspresi 3;


#include

using namespace std;

int main(){
int a;
cout<<"Nilai a tidak boleh negatif\n";
cout<<"Masukkan nilai a = "; cin>>a;
cout<<'\n';
a=(a<0)?-a:a;
cout<<"Nilai a = "<0))="" (ekspresi="" (nilai="" -,="" 0="" 1)="" 3="" :="" <="" a<


krofz
28-02-2008, 12:29 PM
Latihan 15 : Operator Bitwise

Bahasa C/C++ mendukung penuh operator operator bitwise.
Operator bitwise berguna untuk hal-hal yang berhubungan dengan bit, contohnya untuk mempermudah pemrograman yang berhubungan dengan alat. operator ini hanya dapat digunakan pada operand bertipe char dan int.

operator bitwise : & (AND), | (OR), ^(Exclusive OR / XOR), ~ (NOT) >> (Shift Right), << (Shift Left). Code ini akan menjelaskan 2 operator bitwise saja, yaitu : >>, dan <<.


#include

using namespace std;

int main(){
int x=255,y=255,z=32,zz=45;
x=x>>1;
y=y>>3;
z=z<<1;
zz=zz<<3;
cout<<"Contoh operator bitwise >>\n";
cout<<"Nilai x : "<


lalilulelo
28-02-2008, 08:47 PM
wah tambah lama tambah mantep aja neh tutorial-nya...
nice work bro...


tenshi
29-02-2008, 08:45 PM
wajib sticky nih


krofz
02-03-2008, 01:27 PM
Aku masih amatir.. baru tahu dasarnya doang (^^).

Latihan 16 : For bersarang


#include

using namespace std;

int main(){
int x,y,z;
cout<<"Masukkan bilangan (tidak boleh lebih dari 15) : ";
cin>>z;
if(z<=15){
for(x=1;x<=z;x++){
y=1;
for(y;y<=x;y++){
cout<<'X';
}
cout<="0;x--){" for(y;y<="x;y++){" for="" hanya="" harus="" ini="" iostream="" jika="" karena="" kecil="" lagi.="" lebih="" logika="" maka="" mungkin="" nilai="" pada="" pengulangan="" penjelasan="" pernyataan="" program="" sama="" sangat="" sebelumnya="" statemen="" statemennya="" system("pause");="" terdapat="" terjadi="" tersebut="" tidak="" true.<="" untuk="" x="1" y="1;" z,="" }="" }else{="">


krofz
02-03-2008, 01:33 PM
Latihan 17 : File Header 'cstring'
berikut ini beberapa perintah yang terdapat di file header cstring, yaitu :
- strcpy
- strdup
- strchr
- strstr
- strrev
Sebetulnya masih banyak tapi pas dicoba pada error nggak tau kenapa... hehehe..


#include
#include

using namespace std;

int main(){
char* A1;
char* A2;
char* A3;
A1="Contoh Duplikasi String";
A2=strdup(A1);
strcpy(A3,A1);
cout<


krofz
09-03-2008, 12:43 PM
Latihan 18 : Tipe Data Bentukan


/*

Tipe data Bentukan

*/
#include

using namespace std;

string nm="Nama : ";
string nl="Nilai : ";
string hf="Huruf : ";

struct Murid{
char* nama;
int nilai;
char huruf;
}A, B;
Murid C;

void mrdA(){
A.nama="Anton";
A.nilai=80;
A.huruf='B';
cout<


krofz
09-03-2008, 12:46 PM
Latihan 19 : While dan Do-While Bersarang


/*

While dan Do while Bersarang

Kalau sebelumnya kita udah membahas pengulangan bersarang dengan for kali ini
dengan while dan do while. Hati-hati dalam mengisi statement jika salah
pengulangan akan terjadi terus-menerus.

*/
#include

using namespace std;

int a,b,c;
string kal = "\nMasukkan angka (lebih kecil dari 15) : ";
string tb = "\nTerlalu Besar\n\n";

//Fungsi untuk while bersarang
void nestwhile(){
cout<>c;="" cin>>x;="" cout<<"1.="" cout<<"2.="" cout<<"masukkan="" cout<<"pilihlah="" cout<<'x';="" cout<="2){" while(a<="c){" while(b<="a){" while="" while\n";="" x;="" }="" }else{="" }while(a>="2);" }while(a<="c);" }while(b<="a);"> system("pause");
}

/*

Penjelasan :

Sebelumnya buat dahulu 2 fungsi selain fungsi utama
agar mempermudahkan dalam pembuatan program.

untuk 'while(a>=2)' (dapat ditulis dengan 'while(a>1)')
jika ditulis 'while(a>=0)' maka hasil yang didapat,
akan seperti berikut ini :
-------------
X
XX
XXX
XX
X


--------------
Terdapat spasi sebanyak 2 saat proses output.

dan untuk do while, pada baris while terakhir terdapat kondisi '(a>=2);'
(dapat ditulis dengan 'while(a>1)')
kondisi ini ditulis agar hasilnya seperti berikut :
--------------
X
XX
XXX
XX
X
--------------
jika ditulis '(a>=0);' maka hasilnya akan seperti berikut :
--------------
X
XX
XXX
XX
X
X
X
--------------
Karena pada pengulangan do while memungkinkan terjadi
pengulangan sebanyak 1 kali walaupun kondisinya false.
Untuk lebih mudah memahami contoh code diatas perhatikan
kondisi-kondisi dan statement yang terdapat dalam fungsi
'void nestwhile()' dan 'void nestdowhile()',
keduanya hampir sama hanya penempatannya saja.

Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).

*/


krofz
09-03-2008, 12:52 PM
Ada perbaikan nih... buat - Latihan 5 : Menggunakan fungsi logika "if" biar lebih sederhana, dan walaupun cuman dikit semoga membantu....


#include

using namespace std;

int main(){
string a, b= "Benar",s="Salah";
cout<<"Jawablah pertanyaan berikut, apa nama URL baru Video Games Indonesia..??\n";
cout<<" (a) www.vgi.web.id \n"<<" (b) www.vgi.com \n";
cout<<" (c) www.videogamesindonesia.com \n"<<" (d) new.videogamesindonesia.com \n";
cin>>a;
if(a=="a" || a=="b" || a=="d"){
cout<10)){="" *="" *penjelasan="" -------------="" :="" <="" ada="" akan="" b<<'\n';="" by="" code="" contoh="" cout<<"tidak="" cout<10)="" if(a="="c"){" indonesia="" iostream="" jika="" kondisi="" krofz="" member="" menggunakan="" of="" operator="" s<<'\n';="" sama="" statemen="" syarat="" system("pause");="" the="" video="" yang="" z="5;" ||="" }="" }else="" }else{="">


simbadda
15-03-2008, 07:15 PM
wah pas banget,,gw baru aj pengen belajar C++,,keep up the good work bro!^^


krofz
16-03-2008, 06:17 PM
Latihan 20 : Statemen Peloncatan : Break, dan Continue


/*

Statemen Peloncatan : Break, dan Continue


*/
#include

using namespace std;

//Fungsi utama
int main(){
int x=2,y=2;
while(x>1){
cout<<"AAA\n";
if(x==6) break;
x++;
}
cout<<"\nSelanjutnya\n";
while(y>1){
cout<<"Masukkan nilai Y : ";
cin>>y;
if(y<=0){
y=0;
continue;
}
}
system("pause");
}

/*Penjelasan :

Statemen Peloncatan digunakan agar jalannya program
sesuai dengan urutan yang telah kita tentukan. Statemen ini
biasanya digunakan pada sebuah pengulangan (loop) dan
struktur kondisi switch.

'break' akan menghentikan pengulangan.

'continue' akan mengulangi lagi statemen ke awal blok pengulangan
tapi perintah ini akan berhenti jika program tersebut ditulis
seperti berikut :
------------
if(y>=0){
continue;
y=0;
}
------------

Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/


krofz
16-03-2008, 06:21 PM
Latihan 21 : Statemen Peloncatan : Goto


/*

Statemen Peloncatan : Goto

*/


#include

using namespace std;

int main(){
int x=1,z=1;
y:
if(x<10){
cout<<"Nilai x = "<


simbadda
17-03-2008, 08:08 PM
bro krofz mo tanya dunk,,klo pas gw open project trus gw open file yang ".dev" pas gw compile + run tampilannya jadi blank gak ada isinya,tapi klo gw buka yang ".cpp" malah bisa kebuka normal..mohon penjelasannya..thx^^


krofz
20-03-2008, 01:31 PM
waduh... (hmm) gw sih kalau compile ngk bikin project tapi bikin source file. Jadi bisa aja kaya gini :

- Buka notepad, trus Copy-Paste code contohnya code dari sini nih.
- Savenya jangan (.txt) tapi (.cpp) terus buka pake DEV-C++
- pilih Compile, atau Compile+Run

Kalau kode nya ngk ada 'system("pause")' saat dijalanin hanya seperti muncul sekejap abis itu ketutup lagi (kecuali ada perintah cin atau semacamnya).

Tapi kalau pengen tanpa 'system("pause")' tetap ingin melihat program tersebut, karena biasanya source code itu terakhirnya ngk ada system("pause") (misal : return 0) mesti lewat DOS atau kalau di Windows itu Command Prompt ketik aja : contoh

C:\Sourceku\programku.exe

programku itu udah di compile dan udah jadi executable (.exe).

Edit:
Project itu kalau ngk salah seperti direktori jadi source file atau sumber-sumber lainnya dibungkus biar ngk acak-acakan dan biar mudah mencarinya.


krofz
23-03-2008, 10:08 AM
Latihan 22 : Pointer

/*

Pointer

*/


#include

using namespace std;

int main(){
int *x;
int y,z=0;
y=125;

// menggunakan alamat y
x=&y;

//proses output
cout<<"Nilai dari x (*x) = "<<*x;
cout<<"\nAlamat dari x (x) = "<


krofz
23-03-2008, 10:14 AM
Latihan 23 : NULL dan Const Pointer

/*

NULL Pointer dan Const Pointer

*/


#include

using namespace std;

int x,y;

int main(){
int* const constP1=&x;
const int * constP2=&y;
int* nullP;
nullP=NULL;
y=200;

//output
cout<<"NULL Pointer : "<


krofz
30-03-2008, 02:55 PM
Latihan 24 : Pointer Aritmetika

/*

Pointer Aritmetika

*/
#include

using namespace std;

int main(){
int x[2]={100,500};
int *p;
char A[6]={'A','P','K','B','R','.'};
char *P;

//untuk tipe data char
P=&A[0];
cout<<"Untuk Tipe Data Char\n"<<*P; P=P+1;
cout<<*P; P=P-1;
cout<<*P<<" "; P=P+2;
cout<<*P; P=P-2;
cout<<*P; P=P+3;
cout<<*P; P=P-3;
cout<<*P; P=P+4;
cout<<*P<


krofz
06-04-2008, 02:34 PM
Latihan 25 : New dan Delete Pointer

/*

New dan Delete Pointer

*/
#include

using namespace std;

int main()
{
//menyiapkan variabel yang akan dibutuhkan
int *x;
int *y;
int n=5,a;

//menampilkan alamat sebelum dimanipulasi
cout<<"Alamat pertama x : ";
cout< for(a=0;a cout< delete[] x;

//memasukkan nilai ke setiap alamat
for(a=0;a cout<<*x<


krofz
06-04-2008, 02:37 PM
Latihan 26 : Memory Leak

/*

Memory Leak

*/
#include

using namespace std;

int main()
{
//menyiapkan variabel yang akan dibutuhkan
int *x;
cout<<"Alamat Pertama : "<


krofz
13-04-2008, 02:58 PM
Kalau sebelumnya kita menggunakan IDE DEV-C++ (versi 4.9.9.2) sekarang dan seterusnya menggunakan IDE Code::Blocks yang berlisensi GNU/GPL.

Welcome to Code::Blocks 8.02!
"Code::Blocks is a full-featured IDE (Integrated Development Environment) aiming to make the individual developer (and the development team) work in a nice programming environment offering everything he/they would ever need from a program of that kind.
Its pluggable architecture allows you, the developer, to add any kind of functionality to the core program, through the use of plugins..."

Name : Code::Blocks
Version : Release 8.02
Author : The Code::Blocks Team
Email : info@codeblocks.org
Website : www.codeblocks.org

Latihan 27 : Membuat Ascending Angka

/*

Membuat Ascending Angka

*/
#include
#define max 10

using namespace std;

int main()
{
int data[max],i=0,x=0,y=0,n=0,pindah=0;
cout<<"Masukkan jumlah data yang akan diurutkan\n\t(tidak boleh lebih dari 9)\n";
cout<<"Silahkan masukkan : ";
cin>>n;
if(n<=max)
{
for(x=0;x cin>>data[x];
}
cout<<"\nSebelum diurutkan :\n";
for(x=0;xdata[y])="" if(i }else{
cout<<"dan "<


krofz
20-04-2008, 03:10 PM
Latihan 28 : Ascending Angka dengan cara lain


/*

Ascending Angka dengan cara lain

*/
#include
#define max 9

using namespace std;

int main()
{
//menyiapkan variabel yang akan dibutuhkan
int data1[max]={79,71,67,58,49,40,38,27,22};
int data2[max]={68,47,89,36,82,47,36,96,26};
int pindah1=0,pindah2,x=0,y=0,i=0;

x=max;
cout<<"Data sebelum diurutkan\n";
cout<<"data1["< for(y=0;y }else{
cout< for(y=0;y }else{
cout<data1[y])="" if(data2[y-1]>data2[y])="" if(i }else{
cout<<"dan "< }else{
cout<<"dan "<data1[y])="" if(data2[y-1]>data2[y])="" if(i }else{
cout<<"dan "< }else{
cout<<"dan "<


krofz
27-04-2008, 01:55 PM
Latihan 29 : Membuat Descending Angka


/*

Membuat Descending Angka

*/

#include
#define max 9

using namespace std;

int main()
{
int data[max],i=0,x=0,y=0,n=0,pindah=0;
cout<<"Masukkan jumlah data yang akan diurutkan\n\t(tidak boleh lebih dari 9)\n";
cout<<"Silahkan masukkan : ";
cin>>n;
if(n<=max)
{
for(x=0;x cin>>data[x];
}
cout<<"\nSebelum diurutkan :\n";
for(x=0;x }else{
cout<<"dan "<data[y])="" if(data[y-1]


krofz
27-04-2008, 01:59 PM
Latihan 30 : "Say Hello" dengan C

IDE / Compiler C++ modern tidak hanya dapat menerjemahkan bahasa C++ tapi juga bahasa pendahulunya yaitu bahasa C, berikut ini contoh dari bahasa C :


#include
#include


char *a="======================";

main()
{
printf(a);
printf("\n\tHello\n");
printf(a);
printf("\n\nPress any key to continue . . .");
getch();
}

/*

Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).

*/

Source Code C++ dapat berisi sintak-sintak dari bahasa C dan C++ tetapi tidak sebaliknya Sorce Code C hanya dapat berisi sintak-sintak dari bahasa C saja. Dan jangan lupa untuk menyimpannya dengan ektensi .c (C Source File).


krofz
04-05-2008, 01:09 PM
Latihan 31 : Mencari Nilai Minimum dan Maksimum

/*

Mencari Nilai Minimum dan Maksimum

*/
#include

using namespace std;

int main()
{
int a[10]={200,50,70,30,40,90,15,20,150,80};
int mak=a[0],min=a[0];
for(int i=1;i<10;i++)
{
if(a[i]mak)="" indonesia="" int="" iostream="" jumlah="" krofz="" mak<<"\n\n";="" mak="a[i];" maksimum="" member="" min)="" min;="" min="a[i];" minimum="" minimumnya="" nilai="" of="" perlu="" sehingga="" system("pause");="" terdapat="" terse="" tersebut="" the="" video="" yang="" }="">


sinclaire
05-05-2008, 12:58 PM
bro kalo gw pake compiler borland bsa jalan ga nih semuanya? gw liat page2 awal sih sama. tapi belom liat yang akhir2 ^^. maklum newbie.


Strikers
06-05-2008, 09:48 AM
bole ikut jawab ga nih? mumpung bisa jawab. (sorry ya bro krofz)

biasanya klo pake borland, suka rada beda...
(pengalaman kuliah)

klo ga salah rada beda untuk masalah string semacam
fflush(stdin) dan fpurge(stdin)
(lupa nih mana yg d borland ;D)

trus untuk pemakaian system("pause") juga. ga semua compiler bisa.
tapi klo buat bikin program yg tipe console (layar hitam kaya DOS) kaya gini gua lebi seneng pake DEVC++.

Klo skrg sih gua pake Borland C++ Builder 6. (buat bikin aplikasi d kantor)
mayan lah helpnya lengkap nih BCB6.


sinclaire
06-05-2008, 12:53 PM
bro2 minta tempat donlod borland C++ builder 6 boleh? he8. btw sopware yang bagus buat visualnya C++ apa yah?


Strikers
06-05-2008, 02:39 PM
yg buat visualnya c++ ? maksudnya apa? interface si c++ toolsnya?
ato tools buat bikin GUI (Guided User Interface) yang bahasanya menggunakan C++?

klo gua tetep pake borland c++ builder 6.
Klo linknya sih ga tau ya.
Ini uda dari jaman kuliah dapetnya. Coba googling aj de.

Lagian ini software ga gratis, kudu bayar.
Klo mo yg gratis pake DEVC++.

Klo ga ada lg sih yg gratis, pake visual studio express yg punya mikocok.
Yg ini gratis.
Tapi ga tau gmn dapetnya. Kmrn ini d kantor dapet 1 dvd doank.
Di visual studio itu ada visual C++.

Klo mo lebih gampang lg cari cd bajakannya. (saya tidak menyarankan, tapi pakailah ini sebagai opsi terakhir). :D

O ya bro krofs, mo nambahin tutorial bole ga?
gatel juga nih pengen nambah2in tutorial. :D


DemonRush
07-05-2008, 01:31 AM
dolo gw sih yg demen dari borland itu clrscr() dari conio.h nya borland.

kalo sekarang sih milih make Visual studio series, masak beli cd bajakan di indo nga ada??

kalo download kan lama...

gw sih Visual Studio dapet dari MSDN AA... jadi ya nga bayar....

btw strikers, emank perlu pake fflush(stdin) kalo pake iostream ?

hmm seingat gw sih fflush(stdin) cuman dipake kalo loe pake stdio


Strikers
07-05-2008, 08:01 AM
ga perlu sih. :D
cuman siapa tau masi demen pake stdio.h

trus cuma sekedar memberikan gambaran aj sih, klo beda compiler kadang beda juga sintaxnya.
Karna uda lama ga pake compiler laen selaen borland, jadi rada2 lupa juga d bagian mana lagi yg beda.
Gua cuma inget yg fflush dan system doank ;D


krofz
10-05-2008, 11:18 AM
terserah... mau nambahin atau ngk (^^). Masalahnya wa juga udah mulai kehabisan tutorial (T-T)...... maklum jarang coding....

Masalah Borland C++ sama C++ (general) emang ada yang beda kaya di borland bisa make clrscr() tapi di IDE kaya DEV-C++ atau Code::Blocks itu ngk bisa.


krofz
11-05-2008, 06:47 PM
Latihan 32 : Konstanta Array

Array juga dapat bersifat konstan. Berikut contoh programnya :


#include

using namespace std;

int main()
{
const int x[5]={10,20,30,40,50};
for(int a;a<5;a++){
cout<<"x["< cout<


Strikers
12-05-2008, 04:40 PM
sedang d edit......


Strikers
14-05-2008, 10:38 AM
lg d pindah ke dalam bentuk word


krofz
15-05-2008, 11:45 AM
.....
dikarenakan ini thread untuk pemula. :D
.....


Hajar aja Bro..!!! :D


.....
Klo liat dari tutorialnya, bro Krofz langsung ke arah kodingnya, ato bisa dibilang teknikalnya
.....


hehehe... wa ma yang penting codenya bisa di kompilasi (make IDE wa)...

Latihan 33 : Mengenal Float dan Double

Kalau sebelumnya kita telah terbiasa dengan tipe data int untuk menyimpan bilangan bulat sekarang kita akan menggunakan float dan double untuk menyimpan bilangan real /nyata (memiliki nilai dibelakang koma).

Memory yang diperlukan untuk :
- int sebesar 16 bit (2 byte),
- float sebesar 32 bit ( 4 byte), dan
- double sebesar 64 bit ( 8 byte).

Float dan Double digunakan untuk program-program yang bersifat ilmiah atau yang program yang membutuhkan keakuratan nilai yang tinggi. Float memiliki 6 digit presisi sedangkan double memiliki 15 digit presisi.


#include

using namespace std;

float x;
double y;

int main(int argc, char *argv[]){
x=10.5849387;
y=10.684932;
cout.precision(8);
cout<<"Nilai x = "<


sinclaire
15-05-2008, 02:11 PM
bro cara C++ ngambil data dari database gitu bisa ga? nyambungnya kyk pake sql server gitu. lalu commandnya apa yah .. hue8.


Strikers
15-05-2008, 03:34 PM
tergantung dulu pake apa toolsnya.
soalnya bisa macem2.
bisa lebih spesifik?

Klo pake BCB6 kan bisa pake ADO bisa juga pake BDE.
klo gua senengnya pake ADO.

trus juga klo mo connect database jgn lupa install drivernya dulu,
abis itu bikin ODBC connectionnya dulu.
Caranya Control Panel->Administrative Tool->DataSources(ODBC)
Abis itu add aj. Trus pilih, jenis database yg d pake apa, trus setting aj.
ga terlalu susah kok.


sinclaire
15-05-2008, 11:40 PM
pake borland C++ tapi lupa buildernya berapa ^^. ada lappie soalnya. hoe8. terus kalo misalnya pake ADO gitu masukkin command d C++ nya gimana yah? thanks


Strikers
16-05-2008, 12:06 AM
yg jelas pertama
bikin dulu ADO connectionnya (cari d TAB ADO) msal namanya
adc1
trus set koneksinya. (pilih dbasenya set username & pass)

berikutnya cari ADOQUERY (d TAB ADO) misal namanya adq1
set connectionnya jadi adc1


abis itu masuk TAB DATA ACCESS
cari datasource. kasih nama misal dts1
dah gitu set datasetnya adq1

nah untuk dapetin datanya sih cukup mudah
tinggal

.....
int i;


adq1->SQL->Text="......(query yg lu pengen)";
adq1->Active=true;
adq1->ExecSql();

//klo misalnya mo lu show satu2 datanya

for(i=0;iRowsAffected;i++)
{
ShowMessage(adq1->FieldByName("nama")->AsString());

//buat majuin ke record berikutnya
adq1->Next;
}



BTW, bener kan pake Borland C++ Builder? Bukan Borland C doank lo.
Klo iya, bikin object2 ADO d atas tinggal drag and drop aj ke form.
Klo bukan, berarti harus d tulis manual... gua blm pernah coba klo manual....


krofz
27-05-2008, 08:12 PM
Latihan 34 : typedef untuk Array

Dengan menggunakan typedef, array akan menjadi tipe data bentukan seperti halnya struktur dan enumerasi.


#include
using namespace std;

int main(int argc, char *argv[])
{
typedef int aryku[6];
aryku A, B;
int c=0;

//mengisikan nilai
for(c=0;c<6;c++){
A[c]=c*100;
B[c]=c*50;
}

//keluaran untuk A
for(c=0;c<6;c++){
cout<<"A["< }
cout<<"\n\n";

//keluaran untuk B
for(c=0;c<6;c++){
cout<<"B["< }
cout<<"\n\n";
system("pause");
}


Dengan typedef ini kita dapat membuat array yang berjumlah sama dengan cepat, dibandingkan harus menuliskannya seperti dibawah ini.

...
int A[6];
int B[6];
int C[6];
int D[6];
...


krofz
11-06-2008, 09:56 AM
Latihan 35 : Akar Pangkat dengan sqrt

Untuk menghitung pangkat suatu bilangan mungkin tidak menjadi masalah, tapi bagaimana untuk menghitung akar suatu bilangan. Mungkin akan repot, untuk itu kita gunakan saja fungsi pada file header dan nama fungsinya adalah sqrt.


#include
#include

using namespace std;

int main(){
int x;
double y;
cout<<"Masukkan Nilai x = ";
cin>>x;
y=sqrt(x);
cout<<"\n\nAkar dari "< y=x*x;
cout<<"\nPangkat 2 dari "< system("pause");
}


Strikers
11-06-2008, 12:44 PM
sedikit nambah ya
klo misalnya pake sqrt jangan lupa hasilnya d tampung ke variabel bertipe float ato double. Klo ga tar hasilnya d bulatkan ke bawah.
berikut source code untuk melihat perbandingan antara hasil dalam double dan hasil dalam integer


#include
#include

using namespace std;

int main(){
int x,y2,z2;
double y1,z1;

cout<<"Masukkan Nilai x = ";
cin>>x;

y1=sqrt(x);
//hasil dalam desimal
cout<<"\n\nAkar dari "<
y2=sqrt(x);
//hasil dalam bilangan bulat
cout<<"\n\nAkar dari "<

//pangkat 2 menggunakan perkalian biasa
//y bertipe double
z1=y1*y1;
cout<<"\nPangkat 2 dari "<
//y bertipe integer
z2=y2*y2;
cout<<"\nPangkat 2 dari "<
//pangkat 2 menggunakan pow
//pow(x,y) -> x pangkat y. x dan y harus bertipe double
z1=pow((double)y1,2.0);
cout<<"\nPangkat 2 dari "< system("pause");
}


christian_gamas
12-06-2008, 03:39 AM
hmph..... gw sdh lama gk pegang C++... terakhir pegang C++ wkt ngajar MFC dulu.... btw alur yg ada di thread ini bener2 bisa membantu utk yg baru belajar.... nice... keren....


hiroy_raind
12-06-2008, 06:55 AM
Wuaahh thx banget :nangis: ...

jujur aja, gwa sekarang semester II IT masih banyak nggak ngeh ama C++ :nangis: ...


krofz
12-06-2008, 11:51 AM
Semester 2 yah... hihih wa masih SMK (^^). ngomong-ngomong pow masih belum ngerti wa bisa dijelaskan lebih detail (>.<).

Latihan 36 : Menghitung Jumlah Karakter

Untuk menghitung jumlah karakter pada suatu string / kalimat kita dapat menggunakan fungsi strlen(). Berikut contohnya :


#include
#include

using namespace std;

int main(){
int a;

//membatasi jumlah karakter
char b[50];
cout<<"Masukkan sebuah kalimat : ";
cin.getline(b, sizeof(b));

//untuk menampung jumlah bilangan dibutuhkan tipe data untuk bilangan
a=strlen(b);
cout<<"Jumlah karakter : "<


Strikers
12-06-2008, 11:56 AM
pantes aj pake buku :lol:
tapi gpp namanya juga usaha.

gua mo rapihin tips and trick deh, ke doc.
biar enak ketiknya.
klo dah beres tar d upload.

yg depan mo gua hapus..


krofz
25-06-2008, 05:02 PM
Latihan 37 : Membesarkan dan Mengecilkan String

Untuk membesarkan string kita gunakan strupr(variabel), dan untuk mengecilkannya kita gunakan strlwr(variabel).


#include
#include

using namespace std;

int main(){
//membatasi jumlah karakter
char a[50], b[50];
cout<<"Masukkan sebuah kalimat : ";
cin.getline(b, sizeof(b));

//Melakukan peng-copy-an string
strcpy(a,b);

//Membesarkan string
strupr(a);
cout<<"\nKalau hurufnya besar semua = "<


christian_gamas
25-06-2008, 11:08 PM
masukan nih... klo bisa sebaiknya gunakan type void untuk fungsi main.... takutnya kebiasaan... karena klo udah masuk OOP kadang menimbulkan warning n kadang malah error.... (gw pernah nemuin dulu error... cuma lupa errornya apa... maklum udah 2 tahun gk pegang c++) jadi kodenya seperti ini nih, jangan lupa return nya dihapus:

Latihan 37 : Membesarkan dan Mengecilkan String

Untuk membesarkan string kita gunakan strupr(variabel), dan untuk mengecilkannya kita gunakan strlwr(variabel).


#include
#include

using namespace std;

void main(){
//membatasi jumlah karakter
char a[50], b[50];
cout<<"Masukkan sebuah kalimat : ";
cin.getline(b, sizeof(b));

//Melakukan peng-copy-an string
strcpy(a,b);

//Membesarkan string
strupr(a);
cout<<"\nKalau hurufnya besar semua = "<


krofz
29-06-2008, 03:13 PM
emang boleh pake void main().?? (di Dev-C++). terus returnnya dihapus biar apaan..??? masalahnya wa juga ngk terlalu ngerti return (>.<). Oh ya itu void jadi ngk ada return.....

Latihan 38 : getch() dan getche()

Kalau sebelumnya sudah menggunakan getch() (Latihan 8) yang digunakan untuk meminta masukkan (seperti cin). Hanya saja getch() untuk meminta masukkan sebuah karakter (sekali tekan tombol) setelah itu langsung meneruskan proses selanjutnya. Sedangkan getche() akan menampilkan karakter yang dimasukkan setelah user menekan sebuah tombol. Kedua fungsi ini memerlukan file header conio.


#include
#include
#include

using namespace std;

int main(){
string kalimat = "Hasil 2 x 2 adalah ... \n (a). 3\n (b). 4\n (c). 5\n\nJawabannya adalah : ";

string kalimat2 = "Jawaban yang Anda masukkan adalah : ";
char karakter;
cout<


krofz
13-07-2008, 03:40 PM
Latihan 39 : Membersihkan Layar

Untuk membersihkan layar dapat menggunakan perintah 'system("pause")' dengan memanggil file header .


#include
#include

int main(int argc, char *argv[]){
int x, y;
for(x=0;x<20;x++){
system("cls");
for(y=0;y


Veedragon
13-07-2008, 11:17 PM
Liat ini gw jadi inget sesuatu...

function system() itu bisa dipake buat manggil command2 di MS-DOS/Command Prompt lho! misalnya dir, md, cd, copy, del/deltree dan sebagainya :D

//misal, mau ngeliat isi direktori:
system("dir");

//masukin output command 'dir' ke dalam file tertentu (ini syntax cmd):
system("dir > file.dat"); //klo pake ini gak perlu bikin file pake iostream fstream dan sebagainya yang ribet2 :D

//bikin folder
system("md namafolder");

//delete file
system("del file.dat");

//terakhir gw bikin compiler java yang langsung bikin folder package pake C++ juga. Isinya cuman sebaris:
system("javac -d *.java");

semoga berguna :D


krofz
22-07-2008, 06:22 PM
@Veedragon: Wah, Sep banget..... Thx udah mau meramaikan (^^).

Latihan 40 : Membuat Sebuah File Text

Untuk membuatnya dapat menggunakan 'ofstream' dengan memanggil file header . Berikut kodenya:

#include
#include

using namespace std;

int main(){
//perintah ofstream untuk membuka file
ofstream teks;
teks.open("C:/tesdoang.txt");

//proses merekam
teks<<"Lagi nyoba bikin file teks dengan C++ \n";
teks<<"Ternyata ngk terlalu sulit bikin teks \n";
teks<<"dengan C++ hehehehe.";

//menutup teks
teks.close();

cout<<"\n\n";
system("pause");
return 0;
}

Hati-hati jika kita menulis data ke sebuah file karena jika file yang ditunjuk sudah ada maka kemungkinan dapat menimpa seluruh data pada file menjadi data yang telah ditentukan oleh program. Pada saat merekam jika file belum ada maka secara otomatis akan dibuat.


backalley
31-07-2008, 09:18 AM
NULL itu apa yah? --a


@strikers
pantes aj pake buku
tapi gpp namanya juga usaha.

ehh siapa yg pake buku? --a


christian_gamas
31-07-2008, 09:21 AM
NULL itu konstanta untuk menandakan bahwa variabel tersebut tidak memiliki nilai..... CMIIW.


backalley
31-07-2008, 08:17 PM
NULL itu konstanta untuk menandakan bahwa variabel tersebut tidak memiliki nilai..... CMIIW.

alias kosong tapi bukan 0 kan? :D


christian_gamas
31-07-2008, 08:20 PM
yup... bener.... berguna untuk memberikan tanda bahwa memory variable kosong... biasanay berguna saat kita ingin berkerja dengan variable pointer......


krofz
03-08-2008, 04:00 PM
ehh siapa yg pake buku? --a

Maksudnya gw yang pake buku. Ngk liat apa ada post yang menuliskan judul sebuah buku..?? hehehe...

Latihan 41 : Menambahkan dan Mengecek Text

Untuk mengecek suatu text ada atau belum dapat menggunakan perintah 'ifstream' dan untuk menambahkan text menggunakan 'ios::app' dengan bentuk:

variabel.open(sumber, ios::app);
Berikut contoh programnya :

#include
#include
#include

using namespace std;

int main(){
//ofstream untuk membuat / merubah file
ofstream tambah;

//ada sebagai penanda apa yang akan dilakukan selanjutnya
//bool menampung nilai true dan false
bool ada = true;
char pilih, sumber[50] = "C:/tesdoang.txt";

//ifstream untuk mengecek file
ifstream cek;

cek.open(sumber);
if(cek.fail()){
ada = false;
cout<<"Text belum ada\nIngin dibuat ? (Y/N) : ";
pilih = getch();
switch(pilih){
case 'y':;
case 'Y':ada=true;break;
default:;break;
}
}

if(ada==true){
tambah.open(sumber, ios::app);
cout<<"Text sudah ada dan sedang ditambahkan";
tambah<<"Lagi latihan nambahin data\n";
tambah<<"Dengan C++.\n\n";
}

//menutup teks
tambah.close();
cek.close();

//proses terakhir
cout<<"\n\n";
system("pause");
return 0;
}


krofz
21-08-2008, 01:53 PM
Latihan Spesial : Selamat Ulang Tahun

Bagi kalian yang orang tercintanya bentar lagi atau lagi ulang tahun (kaya yang nulis hehehehe.... tepatnya 22 agustus) bingung ngasih apaan? Nah mendingan kasih program yang menampilkan gambar selamat ultah. Bagaimana membuatnya? Cara membuatnya kita akan menggunakan library SDL (Simple Directmedia Layer).

Sebelum memulai memrogram siapkan dulu bahan-bahannya (karena kita akan membuat kue Ulang Tahun yang Spesial jadi bahannya juga harus Spesial), seperti berikut :

1). Code::Blocks (kalau bisa versi 8.02 biar sama, sama yang nulis :p).

2). Library SDL Main, dapat di download di Simple DirectMedia Layer (http://www.libsdl.org) atau link berikut :
Simple DirectMedia Layer (http://www.libsdl.org/download-1.2.php)
Karena disini menggunakan SO (Sistem Operasi) Windows jadi pilih yang :
Win32:
SDL-devel-1.2.8-mingw32.tar.gz

3). Library SDL Image, download di :
http://www.libsdl.org/projects/SDL_image/
dan untuk pengguna Windows, Win32:
SDL image-devel-1.2.4-VC6.zip

Buat terlebih dahulu sebuah folder dengan nama SDL, lalu buat lagi subfolder
dengan nama include dan lib. (Kalau bisa di folder CodeBlocks bikin folder SDLnya). Kaya gambar berikut:
http://img174.imageshack.us/img174/6581/infopostingku02ez1.th.png (http://img174.imageshack.us/my.php?image=infopostingku02ez1.png)

Nah, sekarang buka file SDL Main yang telah didownload, pindahkan file-file seperti berikut:

- Buka subfolder lib lalu copy seluruh file library ke ...SDL\lib\,
- Buka subfolder include lalu copy semua file header (.h) ke ...SDL\include\.

- Copy file SDL.dll ke C:\WINDOWS\SYSTEM32\, ini dilakukan karena jika program SDL yang kita buat tidak terdapat SDL.dll (atau file .dll lain yang dibutuhkan) dalam direktori yang sama dengan program maka program akan mengecek ke sistem (Windows) untuk dapat menjalankan program SDL.

Sekarang copy-kan file-file pada arsip SDL Image yang telah didownload:

- Buka subfolder lib lalu copy ke ...SDL\lib\,
- Buka subfolder include lalu copy ke ...SDL\include\.
- Copy semua file .dll (Dynamic Link Library) ke C:\WINDOWS\SYSTEM32\

Sehingga pada direktori C:\WINDOWS\SYSTEM32\ terdapat file-file seperti berikut :
http://img174.imageshack.us/img174/7392/infopostingku03kb1.th.png (http://img174.imageshack.us/my.php?image=infopostingku03kb1.png)

Buka "The Open Source, cross-platform IDE: Code::Blocks", lalu pilih File>New>Project>SDL project, pada versi 8.02 sudah tersedia SDL project. Setelah dipilih maka akan muncul wizard, ikutin aja apa maunya. Sampai diminta memilih sebuah folder yang terdapat subfolder "lib" dan "include".

Biasanya dia sudah menyediakan sebuah source code dengan nama main.cpp, hapus aja dan ketik kode (eit... kalau bisa kodenya ditulis/diketik yang biar hafal/ngerti jangan copy - paste) seperti berikut :


/*

Kode ini memerlukan file:
selamatUltah.png
dengan ukuran 640 x 480 agar hasil yang
diperoleh lebih baik, ini karena layar
program yang akan kita buat
memiliki tampilan 640x480

*/

//memanggil file header SDL
#include
#include
#include

//mengatur keperluan layar (screen)
const int lebar_layar = 640;
const int tinggi_layar = 480;
const int bpp_layar = 32;
//bpp = bit per pixel

//permukaan -permukaan yang akan digunakan
SDL_Surface *tujuhBelas = NULL;
SDL_Surface *layar = NULL;

/*
membuat fungsi yang akan memanggil
file gambar
*/
SDL_Surface *memuat(std::string namafile){
SDL_Surface *gambardimuat = NULL;
SDL_Surface *gambaroptimal = NULL;

//melakukan proses pemanggilan file
gambardimuat = IMG_Load(namafile.c_str());

/*
jika gambar yang kita panggil berada
satu folder dengan aplikasi yang kita buat,
maka akan kita optimalisasikan dengan
bpp layar aplikasi kita
*/
if(gambardimuat != NULL){

//membuat gambar menjadi lebih optimal
gambaroptimal = SDL_DisplayFormat(gambardimuat);

//membersihkan gambardimuat
SDL_FreeSurface(gambardimuat);
}

/*
nilai kembalian ini akan NULL jika
file tidak ada pada tempatnya
*/
return gambaroptimal;
}

/*
membuat fungsi yang akan menempatkan gambar atau permukaan (surface),
agar dapat ditampilkan dilayar
*/
void tempatkan(int x, int y, SDL_Surface *sumber, SDL_Surface *tujuan){
SDL_Rect batas;

//memberikan batas yang akan ditampilkan
batas.x = x;
batas.y = y;
SDL_BlitSurface(sumber, NULL, tujuan, &batas);
}

bool panggil_init(){

//inisialisasi semua subsystem SDL
if(SDL_Init(SDL_INIT_EVERYTHING)==-1){
return false;
}

//mengatur ukuran layar (screen)
layar = SDL_SetVideoMode(lebar_layar, tinggi_layar,
bpp_layar, SDL_SWSURFACE);

//jika pengaturan layar ada masalah
if(layar == NULL){
return false;
}

//memberi judul program Selamat Ulang Tahun
SDL_WM_SetCaption("Selamat Ulang Tahun",NULL);

//jika semuanya tidak ada masalah
return true;
}

/*
bersih-bersih memory biar ngk
terjadi kebocoran memory
(inggrisnya : Memory Leak (>.<))
*/
void bersih(){
//membersihkan permukaan tujuhBelas
SDL_FreeSurface(tujuhBelas);

SDL_Quit();
}

/*
jika menggunakan SDL harus ada:

...int argc, char *args[])...
atau
...int argc, char **argv)...

pada argument fungsi
*/
int main(int argc, char *args[]){

//jika ada masalah pada pemanggilan fungsi panggil_init
if(panggil_init()==false){
return 1;
}

/*
memanggil file dengan nama selamatUltah dengan
format gambar .png. Jika ingin menampilkan gambar
dengan nama yang lain dapat mengantinya sesuka hati
pada bagian memuat("") + formatnya.
*/
tujuhBelas = memuat("selamatUltah.png");
if(tujuhBelas == NULL){
return 1;
}

/*
menaruh gambar pada koordinat (0,0)
dengan x = 0, dan y = 0.

Perlu diperhatikan bahwa pada aplikasi SDL
sumbu y yang menuju ke bawah menandakan
bahwa nilainya positif, seperti gambar berikut:

-Y
| -3 (0,-3)
|
|
0 +----------- X
| 1 (0,1)
|
|
|
|
Y

Zzz..
:p gambarnya teks banget... sih....
*/
tempatkan(0,0,tujuhBelas,layar);

//meng-update layar
if(SDL_Flip(layar)==-1){
return 1;
}

/*
melakukan penundaan selama 3000 milidetik
atau sama saja dengan 3 detik
*/
SDL_Delay(3000);
bersih();
return 0;
}

Sebelum mem-build / compile kode atur dulu linkernya seperti pada gambar berikut:
http://img514.imageshack.us/img514/6424/infocodeblockshy4.th.png (http://img514.imageshack.us/my.php?image=infocodeblockshy4.png)

dan untuk gambar yang akan ditampilkan, dapat menggunakan gambar berikut :
http://img514.imageshack.us/img514/9131/selamatultahjy2.th.png (http://img514.imageshack.us/my.php?image=selamatultahjy2.png)


Strikers
25-08-2008, 11:01 PM
NULL itu apa yah? --a


@strikers


ehh siapa yg pake buku? --a

si krofz yg pake buku :D

NULL itu konstanta untuk menandakan bahwa variabel tersebut tidak memiliki nilai..... CMIIW.

kurang tepat sih klo tidak memiliki nilai, karna nilainya sendiri adalah NULL.. ;D
tapi penggunaannya emang paling kerasa klo uda maen pointer, ato ga klo uda bermain ama objek...
kita bisa mengkonstruk sesuatu yg baru (new) dengan nilai NULL..


krofz
06-09-2008, 01:02 PM
Latihan 42 : Bilangan Random dengan srand()

Kalau pada Latihan sebelumnya yaitu membuat bilangan random (Latihan 12 : Membuat Bilangan Random) (http://www.videogamesindonesia.com/forum/programming/53716-latihan-c-krofz-khusus-pemula-2.html)
dengan kode mirip seperti berikut :

/*

Membuat Bilangan Random

*/
#include
using namespace std;

int x,y;

void acak()
{
y=rand()%x;
}

int main(int argc, char *argv[])
{
bool keluar = false;

/*
proses pengulangan selama user
tidak memasukkan angka 0
*/
while (keluar == false)
{
cout<<"Masukkan bilangan yang akan dirandomkan : ";
cin>>x;
if (x==0)
{
keluar = true;
}
else
{
acak();
cout<<"Bilangannya : "<

/*
jika time tidak dikenali pada
srand((unsigned)time(NULL))
*/
#include

using namespace std;

int x,y;

void acak()
{
y=rand()%x;
}

int main(int argc,char *argv[])
{
srand((unsigned)time(NULL));

bool keluar = false;

/*
proses pengulangan selama user
tidak memasukkan angka 0
*/
while (keluar == false)
{
cout<<"Masukkan bilangan yang akan dirandomkan : ";
cin>>x;
if (x==0)
{
keluar = true;
}
else
{
acak();
cout<<"Bilangannya : "<


christian_gamas
06-09-2008, 09:54 PM
srand((unsigned)time(NULL));

iya.... fungsinya sih gw tahu..... tapi teknisnya kenapa yah kok nilainya harus NULL n diberi unsigned yah??? :hmm:


Veedragon
07-09-2008, 08:26 PM
time(NULL) itu bukannya ngambil waktu sekarang ya? (Ato dari tanggal 1 Januari 1970? )

klo casting unsigned.... mungkin karena srand cuman nerima argumen positif (gak boleh minus)?

BTW library buat nampilin gambarnya boleh juga tuh... bisa dibuat bikin game gak ya itu? :D (ada support buat BGM sama sound effect?)


Strikers
07-09-2008, 10:33 PM
klo mo gambar sih pake GLUT ato ga lgsg pake opengl


krofz
08-09-2008, 12:49 PM
<----- Begini nih kalau orang sok tahu, maen post aja tanpa ada referensi dan sebagainya...http://www.videogamesindonesia.com/forum/images/smilies/notworthy.gif

Tapi tiba2 saat tertidur nyenyak, wah dikasih tau penjelasannya (oleh seseorang berjubah tak dikenal hehehe... ngedongeng kali) kaya gini :

srand(n) berfungsi untuk menghasilkan nilai awal (seed) yang akan diolah oleh fungsi rand(). Tentu nilai awal yang diberikan harus berbeda. Maka program mengambil waktu saat program dijalankan.


bocah_edan
09-09-2008, 12:47 AM
om2....
ini programming buat apaan?

gw ga ngerti dah....
maklum newbie....
tapi gw mau tau....

kalo ngambil SI ada programming ky gini kan?


christian_gamas
09-09-2008, 04:01 AM
<----- Begini nih kalau orang sok tahu, maen post aja tanpa ada referensi dan sebagainya...http://www.videogamesindonesia.com/forum/images/smilies/notworthy.gif

Tapi tiba2 saat tertidur nyenyak, wah dikasih tau penjelasannya (oleh seseorang berjubah tak dikenal hehehe... ngedongeng kali) kaya gini :

srand(n) berfungsi untuk menghasilkan nilai awal (seed) yang akan diolah oleh fungsi rand(). Tentu nilai awal yang diberikan harus berbeda. Maka program mengambil waktu saat program dijalankan.

Ah merendah aja ngaku sok tahu.... padahal emang tahu :siul:

top banget penjelasannya bro.... dulu dosen gw gw tanyain gk bisa jawab :)


Strikers
09-09-2008, 10:12 AM
om2....
ini programming buat apaan?

gw ga ngerti dah....
maklum newbie....
tapi gw mau tau....

kalo ngambil SI ada programming ky gini kan?
harusnya sih ada.....
dasar2 programming harusnya ada.....



Ah merendah aja ngaku sok tahu.... padahal emang tahu :siul:

top banget penjelasannya bro.... dulu dosen gw gw tanyain gk bisa jawab :)

kan dia dulu bilang, klo dia menyadur dari buku :siul:
klo dosen lu sih kayanya ga baca buku :lol:


bocah_edan
09-09-2008, 08:00 PM
waktu itu gw belajar pascal, itu programming juga kan bro....?


Strikers
09-09-2008, 08:40 PM
yup itu programming ... pascal, C, java, basic, VB dan sejenisnya itu masuk programming


krofz
09-09-2008, 11:02 PM
time(NULL) itu bukannya ngambil waktu sekarang ya? (Ato dari tanggal 1 Januari 1970? )

klo casting unsigned.... mungkin karena srand cuman nerima argumen positif (gak boleh minus)?



Penjelasan bro Vee juga sudah melengkapi...


BTW library buat nampilin gambarnya boleh juga tuh... bisa dibuat bikin game gak ya itu? :D (ada support buat BGM sama sound effect?)

coba liat link berikut :

http://en.wikipedia.org/wiki/List_of_games_using_SDL
SDL:Tutorials - GPWiki (http://gpwiki.org/index.php/C:SDL_tutorials)


@Strikers: itu penjelesan 99% wa kutip dari koran PCplus (tau da edisi brp) hehehehe.... 1% bahasa wa...


fendyg
12-09-2008, 01:13 AM
kk, nanya donk, saya pemula di C++ ^^
mohon pencerahannya tentang fungsi 'if'
saya make borland c++ waktu bikinnya, bukan dev C++, jadi masi bingung..

#include
#include

int main()
{
char * hr;
clrscr();
cout << "Masukkan kode hari : " << endl;
cin >> hr;
cout << endl << "Anda mengetik :" << hr << endl;
if (hr=="a")
cout << "Hari Senin";
}
mohon dibantu, waktu saya compile pake borland c++ sih ngga ada error, tapi waktu saya input "a"
tulisan hari senin ngga keluar.. help pls.. thx b4


Veedragon
12-09-2008, 07:09 AM
kk, nanya donk, saya pemula di C++ ^^
mohon pencerahannya tentang fungsi 'if'
saya make borland c++ waktu bikinnya, bukan dev C++, jadi masi bingung..

#include
#include

int main()
{
char * hr;
clrscr();
cout << "Masukkan kode hari : " << endl;
cin >> hr;
cout << endl << "Anda mengetik :" << hr << endl;
if (hr=="a")
cout << "Hari Senin";
}
mohon dibantu, waktu saya compile pake borland c++ sih ngga ada error, tapi waktu saya input "a"
tulisan hari senin ngga keluar.. help pls.. thx b4
Bukannya variable hr itu kan data typenya char *, bukan int ato float yang bisa dicompare cuman pake ==, >, < ?
Klo char* dicomparenya harus pake gini klo gak salah:
if (strcmp(hr,"a") == 0)
mungkin klo string digituin bisa kali ya?


Strikers
12-09-2008, 08:13 AM
Bukannya variable hr itu kan data typenya char *, bukan int ato float yang bisa dicompare cuman pake ==, >, < ?
Klo char* dicomparenya harus pake gini klo gak salah:
if (strcmp(hr,"a") == 0)
mungkin klo string digituin bisa kali ya?

yup..
klo tipe data char* ga bisa d bandingkan langsung menggunakan ==,
tapi harus menggunakan fungsi strcmp() sperti yg d contohkan ma veedragon.

o ya nambahin dikit, supaya memperjelas...
fungsi strcmp sendiri nantinya mengembalikan sebuah nilai integer yg merupakan perbedaan dari kedua buah data yg d bandingkan tersebut...
klo sama dia akan mengembalikan nilai 0...
maka dari itu harus ditulis
if (strcmp(hr,"a") == 0)
:top:

klo mau gampang sih emang lebih baik menggunakan tipe data String...


#include
#include

int main()
{
String hr;
clrscr();
cout << "Masukkan kode hari : " << endl;
cin >> hr;
cout << endl << "Anda mengetik :" << hr << endl;
if (hr=="a")
cout << "Hari Senin";
}


klo gini harusnya sih jalan, tar gua coba deh d kantor....
CMIIW

moga2 bisa bantu


fendyg
12-09-2008, 08:56 AM
reply sblm brkt kul,
tq bwt kk veedragon & strikers atas jawabannya ^^ ehehe
:tepuk2:
#include
#include

int main()
{
String hr;
clrscr();
cout << "Masukkan kode hari : " << endl;
cin >> hr;
cout << endl << "Anda mengetik :" << hr << endl;
if (hr=="a")
cout << "Hari Senin";
}
cara kk veedragons terbukti berhasil, ty,

yg mo saya tanyain lg sy udah nyoba pake tipe data "string", tapi entah kenapa di borland c++ ga kebaca tipe data stringUndefined symbol 'string' in function main()


Veedragon
12-09-2008, 11:51 AM
harus #include dulu kayaknya...


fendyg
12-09-2008, 12:39 PM
harus #include dulu kayaknya...

yay ^^ thx kk veedragon, akhirnya bisa :love:
#include
#include
#include

int main()
{
std::string a;
clrscr();
cout << "Masukkan kode hari(A..G) : " << endl;
cin >> a;
cout << endl << "Anda mengetik :" << a << endl;
if (a=="a")
cout << "hari senin";
}


Strikers
12-09-2008, 03:40 PM
hehehe, maap2 lupa tulis #include
tadi pagi buru2 sblm kerja soalnya...
hehhehe...

ni jg lg sibuk..
baru baca lg skrg


krofz
21-09-2008, 04:23 PM
Latihan 43 : Tak Hanya void dan int

Kalau sebelumnya kita sudah terbiasa membuat fungsi dengan tipe data int dan void, kali ini kita akan membuat dengan tipe data lainnya. Berikut programnya :


#include

using namespace std;

//kembaliannya berupa kalimat
string kalimat()
{
return "Masukkan bilangan antara 1-10 : ";
}

//sama kaya yang diatas
char *kalimatError()
{
return "\nMaaf tidak dapat dilanjutkan";
}

//fungsi untuk menghitung nilai faktorial
long faktorial(int x)
{
long tampung=1;
for (int b=1;b<=x;b++)
{
tampung = tampung*b;
}

//kembaliannya pas nih
return tampung;
}

int main(int argc, char *argv[])
{
int a=0;
cout<;)="" ((a>10)||(a<="0))" *="" =="" apalagi="" bandel="" bilangan="" cin>>a;="" cout<<"\n"<
//biar outputnya rame hehehe..

for (int c=a-1;c>0;c--)
{
cout<<" x "<


krofz
05-10-2008, 05:13 PM
Latihan 44 : Memanggil Source Code (.cpp) Yang Lain

Kalau biasanya di baris #include selalu atau , kali ini
yang dipanggil adalah source code lainnya.

Setiap kali kita membuat sebuah program dengan C++ minimal kita harus membuat sebuah fungsi utama yaitu fungsi main.

Yang pada C++ modern harus ditulis:
int main(){
}
Jangan sampai terdapat 2 / lebih fungsi utama pada saat kita memanggil source code lainnya, karena dapat terjadi konflik.

Untuk memanggilnya cukup dengan menulis nama file tersebut berserta formatnya. Berikut contoh programnya:

Buat file Segitiga.cpp. Dan tuliskan kode berikut:
using namespace std;

//menghitung volume kotak
long luasSegitiga(int alas, int tinggi)
{
return (alas*tinggi)/2;
}

//jika parameter yang dimasukkan kurang
long luasSegitiga(int alas)
{
int tinggi;
cout<<"Tolong masukkan tinggi = ";
cin>>tinggi;
return (alas*tinggi)/2;
}

//kedua fungsi diatas merupakan contoh Overload pada fungsi

Buat sebuah folder dengan nama Kotak dan buat file baru dengan nama Volume.cpp, serta tuliskan kode berikut:
int tinggi = 0;
int panjang = 0;

using namespace std;

//menghitung volume kotak
long volumeKotak(int lebar, int panjang, int tinggi)
{
return (lebar*panjang*tinggi);
}

//jika parameter yang dimasukkan kurang
long volumeKotak(int lebar, int panjang)
{

cout<<"Tolong masukkan tinggi = ";
cin>>tinggi;
return (lebar*panjang*tinggi);
}

//sama kaya yang diatas
long volumeKotak(int lebar)
{
cout<<"Tolong masukkan panjang = ";
cin>>panjang;
cout<<"Tolong masukkan tinggi = ";
cin>>tinggi;
return (lebar*panjang*tinggi);
}

//ketiga fungsi diatas merupakan contoh Overload pada fungsi

Berikut file yang berisi fungsi utama:
#include

//memanggil file satu direktori dengan fungsi utama
#include "Segitiga.cpp"

//memanggil file dalam folder Kotak
#include "Kotak/Volume.cpp"

using namespace std;

int main(int argc, char *argv[])
{
//kita hanya tinggal memanggil fungsi tersebut :)
cout<<"Volume kubus = "<


sc20k
06-10-2008, 10:00 PM
nice bro.. membantu banget ;)


christian_gamas
10-10-2008, 06:12 AM
hmm...... C++..... ada gk yah C++ di Mac? :lol:
anyway C++ adalah bahasa pemrograman kedua ku.... :top:
salah satu bahasa pemrograman yg oke punya.....

apakah nanti TS juga akan membahas hingga tingkat OOP? :hmm:


krofz
10-10-2008, 05:30 PM
nice bro.. membantu banget ;)

sep...

@christian_gamas: TS apaan yah?


Veedragon
12-10-2008, 10:28 AM
TS = Thread Starter... yang bikin Thread

Christian Gamas: Ada kok kayaknya... coba aja obok2 Google :D

Klo OOP sih... lebih suka Java... soalnya klo C++ udah OOP itu gw males... harus pake titik dua segala @_@


krofz
12-10-2008, 04:07 PM
oh... pasti aku bahas PBO (Pemrograman Berorientasi Objek)

tapi nanti masih lama :D


class .....
//to be continued


krofz
18-10-2008, 03:39 PM
Latihan 45 : Perkalian Matriks

Untuk melakukan perkalian atau pemrosesan matriks lainnya kita dapat menggunakan Array Multidimensi, agar lebih memudahkan dalam pengolahannya.

Array Multidimensi adalah array yang terdiri dari beberapa subskrip array. Bentuk perkaliannya seperti gambar berikut:

http://img262.imageshack.us/img262/5777/perkalianmatrik01ew2.jpg (http://imageshack.us)

Berikut contoh programnya:

#include
/*
JA = Jumlah Array

membuat konstanta agar suatu saat
terjadi perubahan nilai dapat dengan mudah diganti
*/
#define JA 3

using namespace std;

//fungsi buat nampilin nilai pada array
void tampilin_array(int tampung[JA][JA])
{
for (int a=0;a


sc20k
19-10-2008, 03:22 PM
a lot of thanks :)


krofz
26-10-2008, 03:49 PM
Tambahan: Kalau make array sebaiknya udah tau berapa jumlah data yang akan digunakan, terus lakukan inisialisasi atau pemasukkan nilai.


simbadda
01-11-2008, 05:41 PM
bro krofz,bisa kasih contoh invers matriks gak?THX


krofz
04-11-2008, 05:39 PM
Latihan 46 : Invers Matriks Ordo 2x2

Berikut rumus untuk mengubah matriks A menjadi A(-1) (Invers A):

http://img206.imageshack.us/img206/692/matriksinversun7.jpg (http://img206.imageshack.us/my.php?image=matriksinversun7.jpg)

Berikut ini contoh program untuk melakukan invers pada matriks:

#include
#include

using namespace std;

/*
buat global soalnya kalau ngk
repot ngakses-nya
*/
float A[2][2] = {{0,0},{0,0}};

/*
fungsi buat melakukan invers
*/
void diInvers()
{
float a;
int b,c;
float tp[2][2]; //tp = tampung

//memperoleh nilai sesuai rumus :siul:
a = 1/((A[0][0]*A[1][1])-(A[0][1]*A[1][0]));

for(b = 0; b<2;b++){
for(c = 0; c<2; c++){
//hanya melakukan perkalian
A[b][c] = a*A[b][c];
}
}

//menampung nilai serta mengubahnya
tp[0][0] = A[1][1];
tp[0][1] = -A[0][1];
tp[1][0] = -A[1][0];
tp[1][1] = A[0][0];

for(b = 0; b<2;b++){
for(c = 0; c<2; c++){
/*
melakukan perpindahan nilai
(repot ya) :D
*/
A[b][c] = tp[b][c];
}
}
}

//fungsi buat nampilin nilai pada array
void tampilin_array(float tampung[2][2])
{
for (int a=0;a<2;a++)
{
cout<<"[ ";
for (int b=0;b<2;b++)
{
//make setw sama setfill biar keliatan rapi
cout< if (b<1)
{
cout<<", ";
}
}
cout<<" ]\n";
}
}

//fungsi buat minta user masukkin nilai
void masukin_nilai(){

//cuma pengulangan biasa buat minta duit eh... nilai deh
//jadi ingin pas pergi sekolah minta duit dulu :cry: (soalnya bentar lagi mau lulus :D)
for(int a = 0; a<2;a++){
for(int b = 0;b<2;b++){
cout<<"A["< cin>>A[a][b];
}
}
cout<


krofz
09-11-2008, 03:30 PM
Moga-moga rumusnya bener sama source code nya efisien.. :D (maklum pemula masih suka asal-asalan)


simbadda
18-11-2008, 10:48 AM
bro krofz tolong jelasin maksudnya penggunaan ini :
" int main(int argc, char *argv[]) "

THX


krofz
21-11-2008, 05:02 PM
@simbadda:
waktu ku tanya ke kk senior GDI, dia jawab kaya gini:


int main(int argc, char *argv[])

biar apaan yah?
itu fungsi main dengan dua parameter, jumlah command line parameter, dan parameternya dipisah dengan whitespace ( biasanya spasi)

contoh anda membuat program, misal contoh.exe . lalu contoh.exe ini dieksekusi lewat command prompt dengan cara begini :

Code:

C:\contoh param1 param2 param3

kita dapatkan, argc = 4
karena program contoh.exe dipanggil dengan 3 parameter, dan nama program sendiri dihitung sebagai parameter ( jadi totalnya 4).

argv[0] == "contoh"
argv[1] == "param1"
argv[2] == "param2"
argv[3] == "param3"


krofz
02-12-2008, 01:17 PM
Latihan Spesial II : Menyeleksi Gambar

http://img355.imageshack.us/img355/2884/screenshotsapi05oc9.jpg (http://img355.imageshack.us/my.php?image=screenshotsapi05oc9.jpg)

Kali ini kita akan membuat sebuah program yang menampilkan sebuah gambar seperti diatas. Namun gambar sapi yang ditampilkan tidak satu file/gambar dengan background.

Sehingga kita memerlukan minimal 2 gambar (Background dan Sapi) ,seperti berikut:

http://img372.imageshack.us/img372/2494/backgrounddg6.jpg (http://img372.imageshack.us/my.php?image=backgrounddg6.jpg)
http://img411.imageshack.us/img411/220/sapiaslixf7.jpg (http://img411.imageshack.us/my.php?image=sapiaslixf7.jpg)


Kalau kita menggunakan program atau mesin (engine) seperti pada Latihan Spesial pertama dengan menambahkan sedikit kode (seperti menambahkan permukaan dengan SDL_Surface, memanggil file, lalu menampilkannya ke layar), maka kemungkinan besar hasil yang didapat seperti gambar berikut:

http://img216.imageshack.us/img216/8186/screenshotsapi03bq6.jpg (http://img216.imageshack.us/my.php?image=screenshotsapi03bq6.jpg)


Sehingga perlu sedikit perubahan pada gambar sapi sehingga gambarnya seperti berikut:

http://img372.imageshack.us/img372/8472/sapioutline01cy0.png (http://img372.imageshack.us/my.php?image=sapioutline01cy0.png)


Karena kita tidak mau hasil yang didapat seperti gambar berikut:

http://img370.imageshack.us/img370/4314/screenshotsapi04ds1.jpg (http://img370.imageshack.us/my.php?image=screenshotsapi04ds1.jpg)


Maka untuk mencegah hasil yang seperti diatas kita perlu sedikit modifikasi/penambahan kode pada bagian-bagian tertentu.


/*

Kode ini memerlukan file:
Sapi.png
Background.jpg

*/

//memanggil file header SDL
#include
#include
#include

//mengatur keperluan layar (screen)
const int lebar_layar = 640;
const int tinggi_layar = 480;
const int bpp_layar = 32;
//bpp = bit per pixel

//permukaan -permukaan yang akan digunakan
SDL_Surface *sapi = NULL;
SDL_Surface *background = NULL;
SDL_Surface *layar = NULL;

/*
membuat fungsi yang akan memanggil
file gambar
*/
SDL_Surface *memuat(std::string namafile)
{
SDL_Surface *gambardimuat = NULL;
SDL_Surface *gambaroptimal = NULL;

//melakukan proses pemanggilan file
gambardimuat = IMG_Load(namafile.c_str());

/*
jika gambar yang kita panggil berada
satu folder dengan aplikasi yang kita buat,
maka akan kita optimalisasikan dengan
bpp layar aplikasi kita
*/
if (gambardimuat != NULL)
{

//membuat gambar menjadi lebih optimal
gambaroptimal = SDL_DisplayFormat(gambardimuat);

//membersihkan gambardimuat
SDL_FreeSurface(gambardimuat);

//=======================
//Bagian yang ditambahkan
//=======================
if (gambaroptimal != NULL)
{
//menggunakan fungsi SDL untuk menyeleksi warna dengan syarat tertentu
SDL_SetColorKey(gambaroptimal, SDL_SRCCOLORKEY,
SDL_MapRGB(gambaroptimal->format, 0, 0xFF, 0xFF));
/*
angka setelah format merupakan
kode warna untuk RGB
*/
}
}

/*
nilai kembalian ini akan NULL jika
file tidak ada pada tempatnya
*/
return gambaroptimal;
}

/*
membuat fungsi yang akan menempatkan gambar atau permukaan (surface),
agar dapat ditampilkan dilayar
*/
void tempatkan(int x, int y, SDL_Surface *sumber, SDL_Surface *tujuan)
{
SDL_Rect batas;

//memberikan batas yang akan ditampilkan
batas.x = x;
batas.y = y;
SDL_BlitSurface(sumber, NULL, tujuan, &batas);
}

bool panggil_init()
{
//inisialisasi semua subsystem SDL
if (SDL_Init(SDL_INIT_EVERYTHING)==-1)
{
return false;
}

//mengatur ukuran layar (screen)
layar = SDL_SetVideoMode(lebar_layar, tinggi_layar,
bpp_layar, SDL_SWSURFACE);

//jika pengaturan layar ada masalah
if (layar == NULL)
{
return false;
}

//memberi judul(caption) program
SDL_WM_SetCaption("Menyeleksi Gambar",NULL);

/*
memanggil file gambar. Jika ingin menampilkan gambar
dengan nama yang lain dapat mengantinya sesuka hati
pada bagian memuat("") + formatnya.
*/
background = memuat("Background.jpg");
sapi = memuat("sapi.png");

if (background == NULL)
{
return false;
}
/*
meriksa gambar sapi juga
kali aja kabur dia :D
*/
if (sapi == NULL)
{
return false;
}

//jika semuanya tidak ada masalah
return true;
}

/*
bersih-bersih memory biar ngk
terjadi kebocoran memory
(inggrisnya : Memory Leak (>.<))
*/
void bersih()
{
//membersihkan permukaan -permukaan
SDL_FreeSurface(background);
SDL_FreeSurface(sapi);

SDL_Quit();
}

/*
jika menggunakan SDL harus ada:

...int argc, char *args[])...
atau
...int argc, char **argv)...

pada argument fungsi
*/
int main(int argc, char *args[])
{
//jika ada masalah pada pemanggilan fungsi panggil_init
if (panggil_init()==false)
{
return 1;
}

/*
menaruh gambar pada koordinat (0,0)
dengan x = 0, dan y = 0.

Perlu diperhatikan bahwa pada aplikasi SDL
sumbu y yang menuju ke bawah menandakan
bahwa nilainya positif, seperti gambar berikut:

-Y
| -3 (0,-3)
|
|
0 +----------- X
| 1 (0,1)
|
|
|
|
Y

Zzz..
:p gambarnya teks banget... sih....
*/
tempatkan(0,0,background,layar);

//meletakkan gambar sapi sebanyak 3 kali
tempatkan(20,300,sapi,layar);
tempatkan(300,270, sapi, layar);
tempatkan(100,340, sapi, layar);

//meng-update layar
if (SDL_Flip(layar)==-1)
{
return 1;
}

/*
melakukan penundaan selama 3000 milidetik (3 detik)
*/
SDL_Delay(3000);

//Happy Ending
bersih();
return 0;
}



Hei.... kok sapinya ada biru-biru pada outline gambar sapi?
Untuk mendapatkan hasil yang lebih baik gunakan gambar berikut:

http://img368.imageshack.us/img368/2824/sapioutline02na4.png (http://img368.imageshack.us/my.php?image=sapioutline02na4.png)


Perhatikan bahwa ada garis hitam dibagian luar:

http://img385.imageshack.us/img385/4663/sapiinfort4.jpg (http://img385.imageshack.us/my.php?image=sapiinfort4.jpg)


Sehingga hasilnya kaya gini:

http://img372.imageshack.us/img372/3600/screenshotsapi02hv8.jpg (http://img372.imageshack.us/my.php?image=screenshotsapi02hv8.jpg)


Nah, kalau pengen banyak yah tinggal panggil fungsi tempatkan(), tapi sebaiknya jangan banyak-banyak karena dapat membebani komputer (Memory/CPU). Kayanya sapinya (yang dikandang :D) seneng tuh banyak temen , temennya sapi import lagi :p

Catatan :
Jika Anda bingung melihat latihan ini, sebaiknya Anda lihat dulu Latihan Spesial (I) page 8. Di latihan tersebut Anda akan belajar tentang:

1. Download SDL
2. Instalasi SDL
3. Membuat project SDL (di Code::Blocks)
4. Mengatur Linker SDL
5. Penulisan kode SDL untuk membuat aplikasi yang berwarna/GUI


krofz
09-12-2008, 09:21 AM
Yah, minimal kalau bisa SDL bisa bikin game kaya gameku (War of Helm) (http://www.videogamesindonesia.com/forum/game-developer-forum/60905-proyek-game-war-helm.html) :D


krofz
30-12-2008, 04:38 PM
Latihan 47 : Memanggil Sebuah File

Kalau sebelumnya membuat sebuah file di direktori tertentu (dalam hal ini C:/)
, bisa juga membuat file satu direktori dengan program dengan seperti berikut:

ofstream dibuat( "test.txt");


Berikut ini kode memanggil sebuah file:

/*

Latihan : Memanggil Sebuah File

*/
#include
#include

using namespace std;

int main()
{
/*
langsung memanggil file test.txt
di-direktori yang sama dengan program
*/
ifstream Panggil("test.txt");

//jika tidak ada masalah / file yang dipanggil ada
if ( Panggil != NULL)
{
string Kalimat;

//menyimpan baris pertama file lalu menampilkannya
getline(Panggil,Kalimat);
cout<


krofz
06-03-2009, 01:35 PM
Latihan 48 : Awal-awal Membuat Kelas

Sebetulnya aku bingung darimana dan gimana menjelaskan kelas (maklum ngk suka berteori), tapi yang pasti salah satu kelebihan bahasa C++ daripada pendahulunya (bahasa C) yaitu kemampuan untuk membungkus data-data dan fungsi-fungsi ke dalam sebuah kelas tertentu

Contoh kita akan membuat sebuah kelas titik, contoh:
...
class titik
{
//data private
int x, y;

public:
//Konstruktor (Constructor)
titik();

void ganti(int,int);
void tampil();
};
...

Sekilas membuat kelas sama seperti membuat sebuah tipe data bentukan struct. Pembuatan objeknya pun sama seperti struct, contoh:
...
struct titik{
...
}titikA;

titik titikB;

class Titik{
...
}TitikA;

Titik TitikB;
...

Secara default jika kita membuat data-data atau fungsi - funsgi dalam kelas tanpa memberi tingkat aksesnya, maka hak aksesnya adalah private. Sedangkan pada struct defaultnya adalah public. Sehingga
kode berikut:
...
class titik
{
//data private
int x, y;
...
};
...
Dapat juga ditulis:
...
private:
int x, y;

public:
...
atau
...
public:
...
private:
int x,y;
...

Konstruktor adalah fungsi khusus yang akan dijalankan secara otomatis ketika kita melakukan inisialisasi atau pembuatan suatu objek. Fungsi ini bisa berisi inisialisasi data-data pada kelas tersebut. Yang harus diperhatikan dalam membuat konstruktor adalah namanya. Namanya harus sama dengan nama kelasnya, contoh:
...
class titik
{
public:
titik(); //sama dengan nama kelasnya
...

Untuk mendefinisikan atau memimplementasikan data atau logaritma
dalam fungsi kita gunakan tanda "::" (tanpa tanda kutip), contoh:
...
//mendefinisikan konstruktor / fungsi khusus
titik::titik()
{
...
}

//Jika pada anggota tipe data fungsi adalah void
//maka saat mendefinisikan fungsi tersebut
//menggunakan void diikuti oleh nama kelas dan "::"
void titik::ganti(int xg, int xy)
{
...
}
...

Untuk memanggil fungsi atau mengakses data dalam sebuah kelas menggunakan "." (tanpa tanda kutip) sama seperti pada struct, contoh:
...
titikA.tampil();
...

Kalau ada yang kurang jelas atau salah mohon maaf yah... :D . Maklum teorinya jelek banget! :hihihi:

Berikut kode selengkapnya:
#include

using namespace std;

class titik
{
//data private
int x, y;

public:
//Konstruktor (Constructor)
titik();

//argumen pada fungsi dapat dibuat sebuah variabel
//misal:
//void ganti(int xg, int yg);
//xg = x ganti, yg = y ganti --> misalnya :p
void ganti(int,int);
void tampil();
}A;

titik::titik()
{
x = 0;
y = 0;
}

void titik::ganti(int xg, int yg)
{
x = xg;
y = yg;
}

void titik::tampil()
{
cout<<"("< }

int main()
{
titik B;

A.ganti(5,5);

A.tampil();
B.tampil();

//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}


krofz
23-05-2009, 07:28 PM
Latihan 49 : Pointer pada Objek Class

Seperti halnya variabel biasa variabel dengan tipe data class juga dapat menggunakan pointer, tapi sebelumnya kita lihat dulu kode berikut:

#include
#include

int VariabelGlobal;

void setVariabelGlobal()
{
VariabelGlobal = 10;
}

int main(int argc, char **argv)
{
setVariabelGlobal();

printf("Nilainya = %d\n\n",VariabelGlobal);

printf("\n\nPress any key to continue");
char akhiri;
akhiri = getch();
return 0;
}

Kelemahan kode diatas ( dengan nada sok tahu XD ), adalah deklarasi variabel harus sebelum fungsi atau harus urut (deklarasi baru inisialiasi), sehingga kalau ada kode seperi berikut:

...
void setVariabelGlobal()
{
VariabelGlobal = 10;
}
int VariabelGlobal;
...

Pada saat kompilasi (compile/build), maka kompiler akan menampilkan pesan error.

Karena setiap variabel memiliki nilai dan alamat (di memory), maka disinilah fungsi pointer, sehingga kita tidak perlu membuat banyak variabel global yang cenderung membuat program kita yang sudah kompleks memiliki banyak sekali potensi untuk terjadi-nya error. ( moga-moga nyambung kalimatnya :jedot: ).

Sehingga kode diatas jika menggunakan pointer dapat dirubah menjadi seperti berikut:

#include
#include

void setVariabelLokal(int *_dirubah)
{
*_dirubah = 10;
}

int main(int argc, char **argv)
{
int VariabelLokal = 0;
//parameter yang dimasukkan adalah alamat VariabelLokal
setVariabelLokal(&VariabelLokal);

printf("Nilainya = %d\n\n",VariabelLokal);

printf("\n\nPress any key to continue");
char akhiri;
akhiri = getch();
return 0;
}

Ok, kita kembali lagi ke 'class'. Pada kelas objek kelas berpointer pemanggilannya tidak menggunakan titik tapi menggunakan '->' ( kaya tanda panah ke kanan :D ). Sehingga kode seperti berikut:


#include
#include

class Tes
{
int X,Y;
public:
Tes();
void aturXdanY(int,int);
void tampilin();
};

//konstruktor
Tes::Tes()
{
X = 0;
Y = 0;
}

void Tes::aturXdanY(int _X, int _Y)
{
X = _X;
Y = _Y;
}

void Tes::tampilin()
{
printf("Nilai X = %d dan Nilai Y = %d\n",X,Y);
}

void setKelas(Tes *_tes)
{
_tes->aturXdanY(10,10);
}

void setKelas2(Tes &_tes)
{
_tes.aturXdanY(5,5);
}

int main(int argc, char **argv)
{
Tes *tesDoang;
Tes tesLagi;

//memesan memory untuk variabel tesDoang
tesDoang = new Tes();

tesDoang->tampilin();
tesLagi.tampilin();

setKelas(tesDoang);
/*
kalau untuk 'tesLagi' tidak bisa dilewatkan melalui fungsi
'void setKelas(Tes *_tes)' dengan parameter
'setKelas(tesLagi)' atau 'setKelas(&tesLagi)'.

Jangan tanya kenapa karena aku sendiri ngk tahu :sweat:
*/
setKelas2(tesLagi);

printf("\n\n");
tesDoang->tampilin();
tesLagi.tampilin();

//ngebersihin vairabel tesDoang
delete tesDoang;

printf("\n\nPress any key to continue");
char akhiri;
akhiri = getch();
return 0;
}


krofz
10-07-2009, 03:15 PM
Latihan 50 : Static Data Member

penggunaan static pada member class / variabel akan membuat variabel tersebut hanya terdapat satu sehingga penggunaannya akan dibagi-bagi kesemua objek kelas yang sama.


Ibarat cewe pasti namanya Mira, MIlik RAme-rame.... Garing Mode On


Berikut kodenya:


#include
#include
#include

class lewatJalanTol
{
//private langsung
static int jumlahKendaraan;
static std::string kdrnTerakhir;

public:
void tampilkanStatus();
void tambahkan(std::string);
};

// menetapkan nilai
int lewatJalanTol::jumlahKendaraan;
// dapat juga ditulis:
// int lewatJalanTol::jumlahKendaraan = 0;

std::string lewatJalanTol::kdrnTerakhir;

/*
Menambahkan jumlah kendaraan yang lewat
*/
void lewatJalanTol::tambahkan(std::string _last){
jumlahKendaraan++;
kdrnTerakhir = _last;
}

void lewatJalanTol::tampilkanStatus(){
printf("Jumlah kendaraan saat ini = %d\n", jumlahKendaraan);
printf("Kendaraaan terakhir = %s\n",kdrnTerakhir.c_str());
}

int main(){
lewatJalanTol Mobil;
lewatJalanTol Motor, //kebijakan baru jalan tol :D
Becak;

Mobil.tampilkanStatus();

//masing-masing lewat tol
Mobil.tambahkan("Mobil");
Motor.tambahkan("Motor");
Becak.tambahkan("Becak");

lewatJalanTol SiapaSaja;
printf("\n\n");
SiapaSaja.tampilkanStatus();

//Happy Ending
char a;
a = getch();
return 0;
}

Bisa dilihat bahwa terdapat baris:

int lewatJalanTol::jumlahKendaraan;

Yang berfungsi mendefinisikan variabel tersebut.

Kenapa tidak menggunakan static saat inisialisasi/pendefinisian-nya?
Ini karena tidak diijinkan oleh kompiler. Kalau tetep ngotot
pengen nambahkan kata static siap-siap untuk melihat error
kaya begini (error yang atas karena tidak mendifinisikan variabel):

http://img385.imageshack.us/img385/2503/staticmember.png (http://img385.imageshack.us/i/staticmember.png/)


latihan c++
06-08-2009, 07:06 AM
ka mau tanya dong !!!!

kalo soalnya gni "Buat Program yang menghasilkan nilai total dan rataan dari sebuah array yang berisi bilangan float."

trus gw bkin ky gni salah ga ????

#include
#include

main()
{
int i;
float n,x,total=0,rataan;
printf("masukan banyaknya bilangan : ");
scanf("%f",&n);

for(i=1;i<=n;i++){

printf("masukan data ke-%d : ",i);
scanf("%f",&x);
total=total+x;
rataan=total/n;
}

printf("total = %f\n",total);
printf("rataan = %f\n", rataan);
system("pause");
}

satu lagi dong ka ,kalo mau nyari nilai maks dan min gmn sih ka ???

makasih ya .


krofz
11-08-2009, 07:18 PM
Ngomong-ngomong arraynya mana yah? ^_^, tau array? moga-moga tau :D

Kalau untuk n-nya ngk usah dijadiin float. Terus system kayanya ngk bisa dipake de kalau ngk manggil file header atau IO (input output) C++. Karena ada conio pake aja getch(), kalau untuk nahan program biar ngk langsung nutup.

Kalau mau nyari nilai maksimum sama minimum dah aku buat latihannya di Latihan 31 : Mencari Nilai Minimum dan Maksimum (http://www.videogamesindonesia.com/forum/showthread.php?t=53716&page=4), kira-kira kodenya kaya gitu.

Kalau menurutku kodenya jadi begini (ples nyari maks dan min):


#include
#include

int main()
{
float data[100];
int n=0;

printf("Masukkan banyaknya data (maksimal 100) = ");
scanf("%d",&n);

if( n>100 && n<1)
printf("\n\nMaaf, data terlalu banyak atau salah coba lain kali!");
else{
//bisa juga membuat variabel data setelah kondisi if
//atau disini, dengan banyaknya 'n'.
//float data[n];

float total=0,rata2=0,maks=0,min=0;

printf("\n\n");
//selama c masih kecil dari n, minta user masukkan nilai
for( int c=0;cmaks)="" data[c] }
rata2 = (total/n);

printf("\n\nTotal = %f",total);
printf("\nRata-rata = %f",rata2);
printf("\nMaksimum = %f",maks);
printf("\nMinimum = %f",min);

//kalau diatas langsung jumlah, rata-rata, maks dan min selama
//user memasukkan data
//sekarang coba ngulang nyari jumlah, rata-rata, maks dan min.
total = 0;
rata2 = 0;
maks = 0;
min = data[0];

for(int c=0;cmaks)="" data[c] }
//apakah nilai rata2 yang ini sama dengan sebelumnya?
//pastilah :D
rata2 = (total/n);

printf("\n\nTotal = %f",total);
printf("\nRata-rata = %f",rata2);
printf("\nMaksimum = %f",maks);
printf("\nMinimum = %f",min);
}

//semuanya berjalan dengan baik
//Happy Ending
printf("\n\nTeken apa aja buat udahan");
getch();
return 0;
}


Kalau salah jangan nyalahin aku yah :D hehehehe....


krofz
20-08-2009, 03:45 PM
Latihan Spesial III : Tekan Kotaknya

http://img33.imageshack.us/img33/1716/kotak2.png (http://img33.imageshack.us/i/kotak2.png/)

Kali ini kita akan membuat program yang akan meminta user menekan tombol keyboard ataupun tombol mouse dengan menggunakan library SDL. Caranya cukup mudah hanya dengan membuat variabel dengan tipe bentukan dari SDL yaitu 'SDL_Event', contoh:


SDL_Event variabel;


Berikut ini contoh kodenya, dan juga sudah ada penjelasannya didalam kodenya tapi kalau emang kurang jelas atau kodenya ada Bug atau error beritahu aku aja :D.


/*
Latihan Spesial III : Tekan Kotaknya

*/

//memanggil file header SDL
#include
#include
#include

//mengatur keperluan layar (screen)
const int lebar_layar = 640;
const int tinggi_layar = 480;
const int bpp_layar = 32;
//bpp = bit per pixel

//cuma perlu layar aja
SDL_Surface *layar = NULL;

//variabel yang akan mengatur event/input
SDL_Event eventKu;

//membuat variabel untuk menampung banyaknya
//penekanan terhadap kotak, score-nya gitu loh
int score = 0;

//membuat Class Kotak
class Ckotak
{
//SDL_Rect adalah tipe data yang akan
//membuat rectangle (persegi empat)
SDL_Rect kotak;
bool tekan;
int red, green, blue;
void getRandom();

public:
Ckotak();
void ditekan(int,int);
void tampil();
};

//konstruktor class
Ckotak::Ckotak()
{
getRandom();
}

void Ckotak::getRandom()
{
tekan = false;

//nilai width (lebar)-nya antara
//30 - 60
kotak.w = 30+rand()%100;

//posisi x-nya antara 0 - lebar layar dikurang
//lebar kotak sendiri
kotak.x = rand()%( lebar_layar - kotak.w);

//nilai heigth (tinggi)-nya antara
//30 - 60
kotak.h = 30+rand()%100;

//posisi y-nya antara 0 - tinggi layar dikurang
//tinggi kotak
kotak.y = rand()%( tinggi_layar - kotak.h);

//mengatur nilai dari red (merah), green (hijau), dan
//blue (biru)
red = rand()%255;
green = rand()%255;
blue = rand()%255;
}

void Ckotak::ditekan(int _X, int _Y)
{
//!tekan, ini berarti jika tekan bernilai false
if( !tekan &&
_X > kotak.x && _X < (kotak.x+kotak.w) &&
_Y > kotak.y && _Y < (kotak.y+kotak.h))
{
tekan = true;
if( score < 1000) score++;
}
}

void Ckotak::tampil()
{
//ini berarti jika tekan bernilai true
if( tekan)
{
//kurangi Width, dan Height
int _kurangiW = kotak.w*5/100,
_kurangiH = kotak.h*5/100;

kotak.w -= _kurangiW;
kotak.h -= _kurangiH;

//biar terlihat mengecil
kotak.x += (_kurangiW/2);
kotak.y += (_kurangiH/2);

//jika hanya satu statement dapat langsung ditulis
//tanpa tanda '{' dan '}'
if( kotak.w < 30 || kotak.h < 30) getRandom();
}

/*
mengisi surface layar dengan posisi yang diperoleh kotak
dan juga lebar serta tinggi kotak dengan perwarnaan RGB
yang warnanya ada pada variabel 'red', 'green', 'blue' yang
nilainya dibuat acak sebelumnya jadi warnanya ngk sama dengan
yang lain.
*/
SDL_FillRect( layar, &kotak, SDL_MapRGB( layar->format,red,green,blue));
}

bool panggil_init()
{
//inisialisasi semua subsystem SDL
if (SDL_Init(SDL_INIT_EVERYTHING)==-1)
{
return false;
}

//mengatur ukuran layar (screen)
layar = SDL_SetVideoMode(lebar_layar, tinggi_layar,
bpp_layar, SDL_SWSURFACE);

//jika pengaturan layar ada masalah
if (layar == NULL)
{
return false;
}

//memberi judul(caption) program
SDL_WM_SetCaption("Tekan Kotaknya",NULL);

//jika semuanya tidak ada masalah
return true;
}

/*
jika menggunakan SDL harus ada:

...int argc, char *args[])...
atau
...int argc, char **argv)...

pada argument fungsi
*/
int main(int argc, char *args[])
{
//biar nilai randomnya selalu acak
srand((unsigned)time(NULL));

//jika ada masalah pada pemanggilan fungsi panggil_init
if (panggil_init()==false)
{
return 1;
}

const int banyakKotak = 20;
//membuat objek kotak sebanyak 'banyakKotak'
Ckotak kotakKu[banyakKotak];

bool _berakhir = false;

//selama berakhir bernilai false
//maka pengulangan terus terjadi
while( _berakhir == false)
{
//selama terjadi penekanan tombol pada peralatan input
while( SDL_PollEvent(&eventKu))
{
switch( eventKu.type)
{

//SDL_QUIT itu yang tanda 'X' di pojok kanan
//atas (kaya mau nyontreng nih :p) program, itu loh
//minimize, restore sebelahnya, jadi
//kalau tombolnya dipencet program keluar
case SDL_QUIT: _berakhir = true; break;
case SDL_KEYDOWN:
switch( eventKu.key.keysym.sym)
{

//neken tombol escape juga bisa keluar
//atau mengakhiri program
case SDLK_ESCAPE: _berakhir = true; break;
default:;
}

case SDL_MOUSEBUTTONDOWN:
if( eventKu.button.button == SDL_BUTTON_LEFT)
{
//memeriksa penekanan tombol sebanyak 'banyakKotak'
for( int c=0;cclip_rect,="" >="" <="" 'banyakkotak'="" 'eventku.motion.x'="" 'eventku.motion.y'="" 'pick="" (255,255,255).="" (di="" (fill)="" (height)="40." (http:="" (i)="" (kotak.x+kotak.w)="" (kotak.y+kotak.h))="" (rectangle)="" (sdl_flip(layar)="=-1)" (width)="lebar_layar" )",="" )="" *="" -="" ...="" .<="" .dll-nya="" .dll="" 0;="" 1.="" 10="" 120="" 1;="" 2.="" 2="" 3.="" 4.="" 40,="" 4962="" 5.="" 8.="" :="" :d="" :p="" <="" _x="" _y="" abu-abu="" ada="" aja="" akan="" alias="" anda="" aplikasi="" atau="" bagian="" banyakkotak;c++)="" begitu="" belajar="" belum,="" berada.="" berada="" berikut:="" berwarna="" bingung="" buka="" c="0;cformat,0,0,0));="" sdl_maprgb(layar->format,150,150,150));="" sdl_maprgb(layar->format,255,255,255));="" sdl_mousebuttondown:="" sdl_quit();="" sdl_rect="" sebaiknya="" sebanyak="" sebelumnya.="" sehingga="" selama="" selayar,="" semakin="" seperti="" setelah="" sih="" simpel="" spesial="" string="" sudah="" sumbu="" tanpa="" tapi="" tau="" tentang:="" terlihat="" terpenting="" tersebut="" tidak="" tinggi="" tombol="" untuk="" warna="" x-nya="" x.="" x="" y="" yaitu="" yang="" zlib1.dll.="" {="" }="">


ancolzzz
10-11-2009, 06:16 PM
bro,tny dunk,kan perintah scanf buat di borland,klo buat microsoft visualo c++ perintahnya apa ya?


krofz
19-11-2009, 11:29 AM
bro,tny dunk,kan perintah scanf buat di borland,klo buat microsoft visualo c++ perintahnya apa ya?

nggak scanf ngk bisa di visual C++? aku nggak pernah make visual C++ sih... tapi bukannya scanf itu fungsi input dari C (setauku) jadi mestinya visual C++ bisa.... :D hehehe.... kalau masih nggak bisa ganti IDE/compiler :siul:


ret4555
10-12-2009, 05:57 PM
hmm kk,, bs mnt tolong nda,,

q maw bwat mini games yg froggy across the street,,

tapi bgg logika nya antara bwat mobil nya ama kdok nya,,

saiia coba buat,, klo mobil nya sendiri tanpa kdok, mobilnya maw jalan,,

tapi kalo ada kodok nya,, kgak mau jln thu mobil,..

help me plz T.T


krofz
12-12-2009, 10:12 PM
kalau boleh tau bikinnya pake apa yah?

kalau logika... yah paling buat sih mobil bergerak dari kiri ke kanan atau sebaliknya terus pas udah mentok kiri/kanan dia balik.... dan biarin mobil/kendaraan lain berjalan seperti itu...

Yang penting disini bagaimana memeriksa tubrukan/tabrakan (collision) antara si mobil/kendaraan dengan si kodok... paling itu aja :p


kojiz
16-12-2009, 05:48 PM
om2, bole minta tolong yaa
udah mentok saya :ohfiuh:

saya lgi ada PP nih..


#include

using namespace std;

struct Tsiswa
{
char nama[20],
noSiswa[3],
ttl[30],
alamat[40],
asalSekolah[30];
int bulan, gol;
};

const int maxSwa=10;
int counter=0;
Tsiswa swa[maxSwa];

void loading()
{
for (int x=0;x<100;x+=2)
{
cout< system("cls");
}
}

void namaStaff()
{
char namaS[20];
{
cout<<"Masukan nama staff : ";
cin>>namaS;
system ("cls");
cout<<"STAFF - "< cin.getline(swa[n].nama,20);
cout< cin.getline(swa[n].ttl,30);
cout< cin.getline(swa[n].alamat,40);
cout< cin.getline(swa[n].asalSekolah,30);
cout< cin>>swa[n].noSiswa;
cout< cin>>swa[n].bulan;
cout< cin>>swa[n].gol;

getchar();
}

void cetakDataSwa()

{
if (counter==0)
{
cout< }
else
{
for (int t=0;t cout< cout< cout< cout< cout< cout< cout< cout<
}
getchar();
getchar();
}
}


void cetakMenu2()
{
int pilihan;
char noSiswaSwa[3];


do
{
cetakMenu();
cin>>pilihan;
getchar();
if (pilihan==1)
{
cout<< "isi data Siswa"<>nosiswaswa;="" cin>>pilihan;="" counter++;="" cout<<"="======" cout<<"masukan="" cout<<"pilihan="" cout<<"tutup="" cout<<="" cout<


DemonRush
17-12-2009, 03:44 AM
gw bingung nih ama pertanyaan loe, agak ambigu xD

loe pengennya gimana? (tafsiran gw)
loe pengen panggil fungsi prodi di (cout<
klo itu tinggal diginiin aja

di cetakDataSwa
(cout< diganti
cout<
trus Prodi ganti ini
void Prodi(int golongan)
{
if (golongan==1)
{
cout<<"Matematika";
}
else
if (golongan==2)
{
cout<<"B.Indonesia";
}
else
if (golongan==3)
{
cout<<"B.Inggris";
}
}

trus ini maksudnya apa ya
cout< apa maksudnya mau panggil bayar untuk hitung biaya kayak gini
cout<
btw ini bikin sendiri?

klo iya, ehm kritik dari gw, jgn marah yah soalnya menurut gw sih penting ini:

1. Jgn kebanyakan fungsi, fungsi itu layak dibuat klo bakalan sering dipake di beberapa tempat laen. trus juga hindari penamaan fungsi seperti cetakmenu2, penamaan klo bisa paleng tidak harus menjabarkan fungsi tsb

2. Pokoknya sederhana tapi terstruktur bagus, intinya berusaha klo org laen liat itu programm sekilas langsung ngerti. Diusahain jgn membuat sesuatu yg sederhana jadi rumit. loe sendiri nantinya juga bingung sendiri. ini kan masih belum apa2x nanti klo sudah kompleks programnya, bisa pusing sendiri :D

3. kayaknya loe masih bingung untuk coutnya kapan dan dimana, pokoknya gini aja klo fungsinya dipake buat itung2xan dan kemungkinan bakalan dipake ama fungsi laennya, sebisa mungkin dihindari pake cout mendingan di return aja.

4. itu yg agak ganjil menurut gw, pilProdi coutnya di sana, tapi koq cin nya dipencar, agak ga lebih baek dicampur trus di return nanti returnnya di pake di switch. contoh: switch(pilprodi());

klo ama dosen gw dibilang spagetti programmierung xD, gw dolo waktu semester 1 pernah dibilang gitu hahahahaha. btw coba contoh si krofz, dia klo buat program rapih , clean, simple.


kojiz
17-12-2009, 01:33 PM
ya ampun cuma dgituin doank trnyata :ohfiuh:

ni sbnernya tugas berkelompok om..
tpi tmn skelompok ane, 2org pda gugur, kgak prnah masuk praktikum..
jadi ane sndirian ngrjain n dah mau dket deadline...
blom lgi tugas bkin web sma bikin program javascript.. :ohkabur:
[curhat dah gw] :ohnyahaha:

tq om sarannya, ngebantu bgt.. ane bkal rapihin lgi..

si krofz kan liat dari buku, ya rapihlah..


DemonRush
17-12-2009, 03:07 PM
yg web ama javascript juga group yg sama? weh klo gitu payah juga sih, ga bisa ganti / gabung group laen Oo??


iya krofz dolonya liat buku tapi keknya sekarang pasti dah enggak lagi, kayak bagian SDLnya dia. belajar dari buku juga bagus bro, ntar codingnya rapih :D.


krofz
17-12-2009, 06:58 PM
si krofz kan liat dari buku, ya rapihlah..
Banyak-banyak practice bro... nanti juga lancar... sorry nggak bisa dijawab soalnya da dijawab thanks bro DemonRush :D


iya krofz dolonya liat buku tapi keknya sekarang pasti dah enggak lagi, kayak bagian SDLnya dia. belajar dari buku juga bagus bro, ntar codingnya rapih :D.
Kata siapa sekarang nggak liat buku :siul:, sekarang lihatnya e-book :D.... mengenai SDL udah ada bukunya (indonesia) belum yah? :mikir:


DemonRush
17-12-2009, 11:04 PM
kayaknya sih ga ada bro, peminatnya juga rasanya kurang soalnya kan banyak alternative laen juga. apalagi sekarang ada XNA yg super komplit :D :D

ga tau lagi sih tapi gw dah lama ga balik indo...


kojiz
18-12-2009, 03:56 AM
ada e-booknya toh..
donlot dmn krofz??
bagi donk..


reggie
18-12-2009, 05:52 AM
coba baca:
teach yourself C++ in 21 days. mayan bagus itu


Strikers
24-12-2009, 04:13 PM
uda lama ga kemari, makin mastah aja ni si krofz :P


christian_gamas
24-12-2009, 04:39 PM
yep.... sebenernya programming itu latihan aja... dulu gw pas masih awal juga buatnya asal n jadinya panjang n susah dimengerti...

Pas sering latihan tau deh mana yang harus dibuat jadi fungsi n mana yang nggak.... saran dari DemonRush udah bener banget tuh :top:


reggie
24-12-2009, 04:44 PM
gamas lagi keliling ya? :ngakak:


tika
29-12-2009, 03:30 PM
ka,
ak dpt tugas nih, diminta buat program operasi penjumlahan matriks pake dev-c++.....
gimana c??
masih amatirrrrrrr bgd niee ...
tQ ...
^_^


krofz
02-01-2010, 05:58 PM
ka,
ak dpt tugas nih, diminta buat program operasi penjumlahan matriks pake dev-c++.....
gimana c??
masih amatirrrrrrr bgd niee ...
tQ ...
^_^
penjumlahankan, kalo itu sih nggak perlu mikir lama2 wkwkwkwk... maunya yang gampang aja..

nih kodenya:

//sorry ngk banyak baris komentar
#include
#include
#include

int main()
{
const int baris = 2, kolum = 2;
int matrikA[baris][kolum] = {{0,0},{0,0}},
matrikB[baris][kolum] = {{0,0},{0,0}};

int selesai = 0, barKe =0, kolKe=0;
while( selesai<2){
printf("INPUT UNTUK MATRIK ");

switch( selesai)
{
case 0: printf("A\n\n"); break;
default: printf("B\n\n");
}

for( int c=0;c="kolum){" 0:="" 0;="" <="" ]\n");="" ada="" aja="" apa="" atau="" baik="" baris;c++){="" barke++;="" barke="=" bener,="" benerin?="" berjalan="" bikin="" break;="" buat="" c="" case="" conio.h="" d)="" d="0;d


awell
18-01-2010, 10:41 PM
boleh nanya ga nih bro??
buat tugas neh
mengenai deret angka bro
udah dicoba ga bisa2 :jedot::jedot:
1. Program dengan C++ untuk menampilkan semua penyelesaian dari persamaan x + y + z = 20. Dengan x, y, z bilangan bulat >=0

Contoh tampilan output :
--------------
x y z
--------------
0 0 20
0 1 19
0 2 18
...
dst

sama ini bos
2. Program dengan C++ untuk menampilkan deret angka bilangan prima sampai 30

makasih banget ya bro...
:ohlove::ohlove:


DemonRush
21-01-2010, 02:19 AM
tugas yg pertama ga jelas

x + y + z = 20 hmmm

trus outputnya koq
x y z
0 0 20

apa rumusnya ga x + y = z , z = 20?

klo x + y = z , gw dah buatin

#include

using namespace std;

int main()
{
// Output \t itu tab
cout<<"-----------------"<="0)" jadi="" jgn="" jika="" jumlah1)="" jumlah1.jpg="" jumlah2)="" jumlah2.jpg="" kan="" karena="" kayak="" klo="" konsep="" lebih="" liat="" liatnya="" loe="" logika="" maka="" masih="" minimal="" ngerti="" ngertinya="" niat="" pake="" panjang="" pelan2x="" pemakaian="" pemula.="" pengulangan="" penjelasan="" penulisan="" sama="" sampai="" sampe="" sendiri="" sengaja="" soal="" system("pause");="" tampilkan="" tapi="" terapin.="" thn="" untuk="" usia="" variable="" view="" x="" y="" yah="" yg="" {="" }="">

using namespace std;

int main()
{
// dipake untung menghitung jumlah pembagian yg sudah dilakukan
int penghitung_jumlah_pembagian = 0;

/* Angka prima kan, angka yg klo cuman klo dibagi ama
* angka itu sendiri dan satu baru bulat
*/
int jumlah_pembagian_yg_diharapkan = 2;

cout<<"Bilangan Prima dari 0 sampe 30 adalah:"< }
}
cout<


awell
21-01-2010, 06:55 AM
makasih banget ya bro!!!
:ohlove::ohlove:


krofz
21-01-2010, 08:44 PM
mungkin pertanyaan nomor 1 tuh.. output apa aja yang bila x + y + z = 20....


....
const int MAX = 20;
for(int a=0;a for(int b=0;b


DemonRush
21-01-2010, 09:45 PM
^atas gw:

heuehue merendah loe, males buatin aja :D :D


Domonkazu
20-02-2010, 08:53 AM
mangstap algorithmnya :evil6:, knp ga pake rumusx2 math aja, nih apa ga kelamaan processing timenya kalau angkanya besar :lol3:


krofz
23-02-2010, 04:48 PM
mangstap algorithmnya :evil6:, knp ga pake rumusx2 math aja, nih apa ga kelamaan processing timenya kalau angkanya besar :lol3:

Yang penting bereskan :D , "Gitu aja kok repot" <-- Indonesia banget..


*Padahal nggak tau fungsi/rumus math apa yang berguna :sedih:


Joker_007
09-04-2010, 12:23 AM
wah dah lama gak pegang C++ ...jadi kangen ni.....:psp:


DemonRush
10-04-2010, 05:07 PM
makenya .net molo sekarang xD?


ユキマル
13-04-2010, 08:20 PM
makenya .net molo sekarang xD?

.NET juga bisa dipanggil dari C++ kalau mau :p

#using

using namespace System;

int main()
{
Console::WriteLine("Hello, world!");
return 0;
}


krofz
21-05-2010, 12:24 PM
Daripada numpuk di blogku... (mang da banyakk?? hahaha)... iseng posting source code ah....:

#include
#include
#include

using std::cout;
using std::cin;

int main()
{
//find = untuk menampung kata yang akan dicari
std::string kalimat, find;
std::ifstream getFile("kalimat.txt");
if( getFile == NULL){
kalimat="Ini adalah kalimat standar yang akan dijadikan "
"bahan untuk mencoba algoritma Brute Force. "
"Jika ingin mencoba kalimat yang berbeda silahkan "
"isi atau ubah file kalimat.txt yang ada dalam satu folder "
"dengan program ini. Pastikan kalimatnya panjang agar "
"kata-kata yang akan dicari nantinya memiliki banyak "
"pilihan dibanding kalimat standar ini yang nggak jelas. "
"Akhir kata selamat mencoba dan happy coding.";
}
else{
for( int c=0;c<10;c++){
std::string temp;
getline(getFile,temp);
kalimat+=temp;
}
}
getFile.close();

cout< cin>>find;

bool cocok = true;
for(std::string::iterator iKalimat = kalimat.begin(),
iFind = find.begin();iKalimat


krofz
12-05-2011, 08:41 PM
Nih kalau ada yang kebelet pengen bikin program kuis tapi lagi males kodingnya hehehe...... ada sourcenya juga lho..... :D

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtDbXPMyShEXq8tUO91B76oYD9XzId6Vo4EzRobembI9fqXrhCIKgoBDpw7MAoAibfZeZFwXiphzHHXUs639wKO7yn6wlZ0q3cLtXAvNLfwYGE4WrWzXhWEzkCvLtNSEz-RPr8btrsO0ST/s400/50_01.MenghitungCepat.png

Link : http://www.ziddu.com/download/14907902/50_01_MenghitungCepat.7z.html
Size : 564.03 KB


krofz
26-07-2011, 01:39 AM
Salah satu teknik menukar nilai selain pake temp... :D

tapi khusus untuk int:


#include < stdio.h >

int main(int argc, char *argv[])
{

int a = 30,
b = 15;

printf("Nilai a = %d\nNilai b = %d\nsebelum ditukar", a,b);

a = a xor b;
b = a xor b;
a = a xor b;

printf("\n\n");
printf("Nilai a = %d\nNilai b = %d\nsetelah ditukar",a,b);

return 0;
}


ユキマル
26-07-2011, 12:12 PM
a = a xor b;
b = a xor b;
a = a xor b;

Di C bukannya bitwise xor pake operator ^ ? ;D
a = a^b;
b = a^b;
a = a^b;

Or even shorter...
a ^= b;
b ^= a;
a ^= b;


krofz
26-07-2011, 07:09 PM
Di C bukannya bitwise xor pake operator ^ ? ;D
a = a^b;
b = a^b;
a = a^b;

Or even shorter...
a ^= b;
b ^= a;
a ^= b;

bener bro, cara itu juga bisa... tapi ini kan C++ hehehe... *ngeles aja.... :ohdamai: