C++ | Struct
..
DJ-Deny Jackrose
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<iostream>
using namespace std;
int main(){
cout<<"DJ-Deny Jackrose \n";
system("pause");
}
penjelasan :
Pada baris 1 #include<iostream> compiler akan mencari file iostream.h, pada compiler-compiler modern tak perlu lagi menuliskan iostream seperti ini : #include<iostream.h>, tapi untuk beberapa header seperti conio harus ditulis #include<conio.h>.
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 :
....
"DJ-Deny Jackrose \n";
.....
"... \n" : \n ini sama fungsinya seperti "...<<endl;" atau "....<<'\n';" yang membedakan \n ini ditaruh di dalam sebuah kalimat contoh :
......
"Ngetes \n doang \n\n";
......
Latihan 2 : Meminta User memasukkan angka
#include<iostream>
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<<'\n';
cout<<"dan Hasilnya adalah : "<<a+b;
system("Pause");
}
penjelasan :
cin>>a; berfungsi agar program meminta masukkan dari user.
cout<<'\n'... , '\n' digunakan untuk menambah baris.Untuk lebih memahami latihan-latihan yang ada di thread ini sebaiknya langsung dipraktikkan. Dan berikut daftar latihan yang ada di thread ini :
Page 1:
Latihan 1 : Hello Video Games Indonesia
Latihan 2 : Meminta User memasukkan angka
Latihan 3 : Membuat kalimat dengan string
Latihan 4 : Membuat Kalimat dengan Char
Latihan 5 : Menggunakan fungsi logika "if"
Latihan 6 : Pengulangan dengan 'for', 'while' dan 'do while'
Latihan 7 : Membuat sebuah fungsi
Latihan 8 : Sedikit pembahasan tentang 'pointer' dan 'conio.h'
Page 2:
Latihan 9 : Menggunakan variabel 'static'
Latihan 10 : Struktur kondisi dengan 'switch()'
Latihan 11 : Menggunakan 'iomanip.h'
Latihan 12 : Membuat bilangan random
Latihan 13 : Lebih jauh dengan string
Latihan 14 : Operator Ternary
Latihan 15 : Operator Bitwise
Page 3:
Latihan 16 : For bersarang
Latihan 17 : File Header 'cstring'
Latihan 18 : Tipe Data Bentukan
Latihan 19 : While dan Do-While Bersarang
Latihan 20 : Statemen Peloncatan : Break, dan Continue
Latihan 21 : Statemen Peloncatan : Goto
Page 4:
Latihan 22 : Pointer
Latihan 23 : NULL dan Const Pointer
Latihan 24 : Pointer Aritmetika
Latihan 25 : New dan Delete Pointer
Latihan 26 : Memory Leak
Latihan 27 : Membuat Ascending Angka
Latihan 28 : Ascending Angka dengan cara lain
Latihan 29 : Membuat Descending Angka
Latihan 30 : "Say Hello" dengan C
Latihan 31 : Mencari Nilai Minimum dan Maksimum
Page 5:
Latihan 32 : Konstanta Array
Page 6:
Latihan 33 : Mengenal Float dan Double
Latihan 34 : typedef untuk Array
Latihan 35 : Akar Pangkat dengan sqrt
Page 7:
Latihan 36 : Menghitung Jumlah Karakter
Latihan 37 : Membesarkan dan Mengecilkan String
Latihan 38 : getch() dan getche()
Latihan 39 : Membersihkan Layar
Latihan 40 : Membuat Sebuah File Text
Page 8:
Latihan 41 : Menambahkan dan Mengecek Text
Latihan 42 : Bilangan Random dengan srand()
Page 10:
Latihan 43 : Tak Hanya void dan int
Latihan 44 : Memanggil Source Code (.cpp) Yang Lain
Page 11:
Latihan 45 : Perkalian Matriks
Latihan 46 : Invers Matriks Ordo 2x2
Page 12:
Latihan 47 : Memanggil Sebuah File
Latihan 48 : Awal-awal Membuat Kelas
Latihan 49 : Pointer pada Objek Class
Latihan 50 : Static Data Member
Daftar Latihan Spesial:
Latihan Spesial : Selamat Ulang Tahun - page 8
Latihan Spesial II : Menyeleksi Gambar - page 11
Latihan Spesial III : Tekan Kotaknya - page 12
sebagai permulaan nih :
Latihan 1 : Hello Video Games Indonesia
#include<iostream>
using namespace std;
int main(){
cout<<"DJ-Deny Jackrose \n";
system("pause");
}
penjelasan :
Pada baris 1 #include<iostream> compiler akan mencari file iostream.h, pada compiler-compiler modern tak perlu lagi menuliskan iostream seperti ini : #include<iostream.h>, tapi untuk beberapa header seperti conio harus ditulis #include<conio.h>.
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 :
....
"DJ-Deny Jackrose \n";
.....
"... \n" : \n ini sama fungsinya seperti "...<<endl;" atau "....<<'\n';" yang membedakan \n ini ditaruh di dalam sebuah kalimat contoh :
......
"Ngetes \n doang \n\n";
......
Latihan 2 : Meminta User memasukkan angka
#include<iostream>
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<<'\n';
cout<<"dan Hasilnya adalah : "<<a+b;
system("Pause");
}
penjelasan :
cin>>a; berfungsi agar program meminta masukkan dari user.
cout<<'\n'... , '\n' digunakan untuk menambah baris.Untuk lebih memahami latihan-latihan yang ada di thread ini sebaiknya langsung dipraktikkan. Dan berikut daftar latihan yang ada di thread ini :
Page 1:
Latihan 1 : Hello Video Games Indonesia
Latihan 2 : Meminta User memasukkan angka
Latihan 3 : Membuat kalimat dengan string
Latihan 4 : Membuat Kalimat dengan Char
Latihan 5 : Menggunakan fungsi logika "if"
Latihan 6 : Pengulangan dengan 'for', 'while' dan 'do while'
Latihan 7 : Membuat sebuah fungsi
Latihan 8 : Sedikit pembahasan tentang 'pointer' dan 'conio.h'
Page 2:
Latihan 9 : Menggunakan variabel 'static'
Latihan 10 : Struktur kondisi dengan 'switch()'
Latihan 11 : Menggunakan 'iomanip.h'
Latihan 12 : Membuat bilangan random
Latihan 13 : Lebih jauh dengan string
Latihan 14 : Operator Ternary
Latihan 15 : Operator Bitwise
Page 3:
Latihan 16 : For bersarang
Latihan 17 : File Header 'cstring'
Latihan 18 : Tipe Data Bentukan
Latihan 19 : While dan Do-While Bersarang
Latihan 20 : Statemen Peloncatan : Break, dan Continue
Latihan 21 : Statemen Peloncatan : Goto
Page 4:
Latihan 22 : Pointer
Latihan 23 : NULL dan Const Pointer
Latihan 24 : Pointer Aritmetika
Latihan 25 : New dan Delete Pointer
Latihan 26 : Memory Leak
Latihan 27 : Membuat Ascending Angka
Latihan 28 : Ascending Angka dengan cara lain
Latihan 29 : Membuat Descending Angka
Latihan 30 : "Say Hello" dengan C
Latihan 31 : Mencari Nilai Minimum dan Maksimum
Page 5:
Latihan 32 : Konstanta Array
Page 6:
Latihan 33 : Mengenal Float dan Double
Latihan 34 : typedef untuk Array
Latihan 35 : Akar Pangkat dengan sqrt
Page 7:
Latihan 36 : Menghitung Jumlah Karakter
Latihan 37 : Membesarkan dan Mengecilkan String
Latihan 38 : getch() dan getche()
Latihan 39 : Membersihkan Layar
Latihan 40 : Membuat Sebuah File Text
Page 8:
Latihan 41 : Menambahkan dan Mengecek Text
Latihan 42 : Bilangan Random dengan srand()
Page 10:
Latihan 43 : Tak Hanya void dan int
Latihan 44 : Memanggil Source Code (.cpp) Yang Lain
Page 11:
Latihan 45 : Perkalian Matriks
Latihan 46 : Invers Matriks Ordo 2x2
Page 12:
Latihan 47 : Memanggil Sebuah File
Latihan 48 : Awal-awal Membuat Kelas
Latihan 49 : Pointer pada Objek Class
Latihan 50 : Static Data Member
Daftar Latihan Spesial:
Latihan Spesial : Selamat Ulang Tahun - page 8
Latihan Spesial II : Menyeleksi Gambar - page 11
Latihan Spesial III : Tekan Kotaknya - page 12
krofz
14-02-2008, 02:43 PM
kalian juga bisa menggunakan "endl" untuk menambah baris contoh :
.....
cout<<"Hello VGI "<<endl
.....
atau
.... cout<<"Hello VGI "<<'\n';
Latihan 3 : Membuat kalimat dengan string
#include<iostream>
using namespace std;
int main(){
string kalimat = "Contoh kalimat ke ";
int a;
for(a=0;a<10;a++){
cout<<kalimat<<a<<endl;
}
system("Pause");
}
penjelasan :
string : digunakan untuk menyimpan data berupa kalimat sedangkan kalau int digunakan untuk menyimpan data berupa bilangan bulat (0,1 dst...).
for : digunakan untuk suatu kondisi, dari contoh diatas dapat diketahui... seperti berikut : bila a = 0 dan a<10 (lebih kecil 10) maka a akan bertambah dan diikuti dengan menampilkan string kalimat dan nilai a ..... cout<<kalimat<<a;.CMIIW...
.....
cout<<"Hello VGI "<<endl
.....
atau
.... cout<<"Hello VGI "<<'\n';
Latihan 3 : Membuat kalimat dengan string
#include<iostream>
using namespace std;
int main(){
string kalimat = "Contoh kalimat ke ";
int a;
for(a=0;a<10;a++){
cout<<kalimat<<a<<endl;
}
system("Pause");
}
penjelasan :
string : digunakan untuk menyimpan data berupa kalimat sedangkan kalau int digunakan untuk menyimpan data berupa bilangan bulat (0,1 dst...).
for : digunakan untuk suatu kondisi, dari contoh diatas dapat diketahui... seperti berikut : bila a = 0 dan a<10 (lebih kecil 10) maka a akan bertambah dan diikuti dengan menampilkan string kalimat dan nilai a ..... cout<<kalimat<<a;.CMIIW...
DJ-Deny Jackrose
wah mantap bro tutornya, btw for bukannya untuk perulangan yah O.o jadi kita ngulang sebanyak kondisi yang kita kasih
DJ-Deny Jackrose
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<iostream>
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<<kata<<'\n'<<Kata<<'\n';
cout<<KATA<<'\n';
system("pause");
}
Ok... kita bedah satu-satu...... :
char kata : baris ini membuat variable kata dengan tipe data char (karakter) pada bagian ini kita hanya diperbolehkan membuat satu karakter dan diapit oleh tanda petik satu 'A'..... contoh : 'A', 'Z', '1' dst.
char* Kata : pada tipe data char terdapat pointer (*) dengan pointer ini kita diperbolehkan membuat kalimat yang cukup panjang.
char KATA[25] : dan kalau baris ini variable KATA memiliki array dan kalau kita memasukkan / menginisialisasi lebih dari jumlah array tersebut maka compiler akan..... menunjukkan pesan errorPerlu diketahui dalam bahasa C++, merupakan bahasa yang case sensitive sehingga penulisan variabel Kata, kata, KATA, kAta,.... dst itu dianggap berbeda satu sama lain.....
bagi yang belum punya IDE-nya atau compilernya (DEV-C++ versi 4.9.9.2) dapat didownload di sini..
http://download1us.softpedia.com/dl/8753bc3a090435ea40e3b232710f6b4e/47b50429/100081023/software/portable/programming/Dev-CppPortable_4.9.9.2_Revision_4.paf.exe
CMIIW
Latihan 4 : Membuat Kalimat dengan Char
Kalau sebelumnya membuat kalimat dengan 'string'.... sekarang menggunakan char..
#include<iostream>
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<<kata<<'\n'<<Kata<<'\n';
cout<<KATA<<'\n';
system("pause");
}
Ok... kita bedah satu-satu...... :
char kata : baris ini membuat variable kata dengan tipe data char (karakter) pada bagian ini kita hanya diperbolehkan membuat satu karakter dan diapit oleh tanda petik satu 'A'..... contoh : 'A', 'Z', '1' dst.
char* Kata : pada tipe data char terdapat pointer (*) dengan pointer ini kita diperbolehkan membuat kalimat yang cukup panjang.
char KATA[25] : dan kalau baris ini variable KATA memiliki array dan kalau kita memasukkan / menginisialisasi lebih dari jumlah array tersebut maka compiler akan..... menunjukkan pesan errorPerlu diketahui dalam bahasa C++, merupakan bahasa yang case sensitive sehingga penulisan variabel Kata, kata, KATA, kAta,.... dst itu dianggap berbeda satu sama lain.....
bagi yang belum punya IDE-nya atau compilernya (DEV-C++ versi 4.9.9.2) dapat didownload di sini..
http://download1us.softpedia.com/dl/8753bc3a090435ea40e3b232710f6b4e/47b50429/100081023/software/portable/programming/Dev-CppPortable_4.9.9.2_Revision_4.paf.exe
CMIIW
DJ-Deny Jackrose
Sekarang kita menggunakan fungsi logika... yaitu....if...
Latihan 5 : Menggunakan fungsi logika "if"
#include<iostream>
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<<s<<'\n';
}else if(a=="b"){
cout<<s<<'\n';
}else if(a=="c"){
cout<<b<<'\n';
}else if(a=="d"){
cout<<s<<'\n';
}else{
cout<<"TIDAK ADA DALAM DAFTAR\n";
}
system("pause");
}
Ok, penjelasannya :
string a, b="Benar", s="Salah"; : Sebelumnya kita membuat .. suatu tipe data.
Pada baris selanjutnya kita melakukan keluaran berupa kalimat.
Sebelum melakukan fungsi logika if kita diminta dahulu memasukkan perintah agar perintah if dapat dijalankan dengan benar.
if(a=="a"){... : pada baris ini jika masukkannya adalah "a" maka program akan mengeluarkan output berupa variabel s yang mengandung kalimat "Salah.
Jika logika pertama tidak terpenuhi atau user memasukkan kata "c" maka program akan mencari baris selanjutnya dengan menutup terlebih dahulu fungsi if sebelumnya if(...){....}else if(..){... perintah yang digunakan adalah "else" tambahan "if" digunakan jika masih terdapat logika yang digunakan.
Latihan 5 : Menggunakan fungsi logika "if"
#include<iostream>
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<<s<<'\n';
}else if(a=="b"){
cout<<s<<'\n';
}else if(a=="c"){
cout<<b<<'\n';
}else if(a=="d"){
cout<<s<<'\n';
}else{
cout<<"TIDAK ADA DALAM DAFTAR\n";
}
system("pause");
}
Ok, penjelasannya :
string a, b="Benar", s="Salah"; : Sebelumnya kita membuat .. suatu tipe data.
Pada baris selanjutnya kita melakukan keluaran berupa kalimat.
Sebelum melakukan fungsi logika if kita diminta dahulu memasukkan perintah agar perintah if dapat dijalankan dengan benar.
if(a=="a"){... : pada baris ini jika masukkannya adalah "a" maka program akan mengeluarkan output berupa variabel s yang mengandung kalimat "Salah.
Jika logika pertama tidak terpenuhi atau user memasukkan kata "c" maka program akan mencari baris selanjutnya dengan menutup terlebih dahulu fungsi if sebelumnya if(...){....}else if(..){... perintah yang digunakan adalah "else" tambahan "if" digunakan jika masih terdapat logika yang digunakan.
DJ-Deny Jackrose
Latihan 6 : Pengulangan dengan 'for', 'while' dan 'do while'
#include<iostream>
using namespace std;
int main(){
int A=10;
for(int a=1;a<5;a++){
cout<<"Nilai a = "<<a<<endl;
}
while(A>0){
cout<<A<<", ";
A--;
}
cout<<endl;
do{
cout<<"Masukkan angka (0 untuk mengakhiri): ";
cin >>g;
cout<<"Kau memasukkan: "<<g<<'\n';
}while(g!=0);
system("pause");
}
Penjelasan :
for : Sebelumnya sudah dijelaskan tentang kegunaan pengulangan for (walaupun salah hehehe... ^^) jadi kita langsung ke...
while : While memiliki fungsi yang sama dengan for hanya saja penulisannya yang berbeda penulisan pengulangan while adalah sebagai berikut :
.....
while(kondisi){
statemen / pernyataan yang akan dilakukan......;
}
......
Sedangkan do while, merupakan pengulangan yang akan terus terulang sampai suatu kondisi terpenuhi...
.......
do{.....
.....
}while(kondisi untuk mengakhiri);
.......
kalau kurang jelas boleh tanya dan kalau ada yang salah mohon maaf.... hehehe ^^
#include<iostream>
using namespace std;
int main(){
int A=10;
for(int a=1;a<5;a++){
cout<<"Nilai a = "<<a<<endl;
}
while(A>0){
cout<<A<<", ";
A--;
}
cout<<endl;
do{
cout<<"Masukkan angka (0 untuk mengakhiri): ";
cin >>g;
cout<<"Kau memasukkan: "<<g<<'\n';
}while(g!=0);
system("pause");
}
Penjelasan :
for : Sebelumnya sudah dijelaskan tentang kegunaan pengulangan for (walaupun salah hehehe... ^^) jadi kita langsung ke...
while : While memiliki fungsi yang sama dengan for hanya saja penulisannya yang berbeda penulisan pengulangan while adalah sebagai berikut :
.....
while(kondisi){
statemen / pernyataan yang akan dilakukan......;
}
......
Sedangkan do while, merupakan pengulangan yang akan terus terulang sampai suatu kondisi terpenuhi...
.......
do{.....
.....
}while(kondisi untuk mengakhiri);
.......
kalau kurang jelas boleh tanya dan kalau ada yang salah mohon maaf.... hehehe ^^
DJ-Deny Jackrose
Latihan 7 : Membuat sebuah fungsi
#include <iostream>
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 : "<<x<<endl;
cin.get();
}
penjelesan :
Dari contoh code tersebut selain fungsi utama (int main()) terdapat fungsi yang lain yaitu fungsi tambah (int tambah()).
Di dalam fungsi tersebut terdapat perhitungan sederhana yaitu r=a,b,c. Sebelum melakukan perhitungan deklarasikan dahulu variabel-variabel tersebut seperti 'int r'.
Pada baris 'return (r)' dapat ditulis dengan 'return r'.
Lalu didalam fungsi utama terdapat variabel 'x' dengan tipe data int. x tersebut mengandung fungsi 'tambah'. Jika ingin menghitung dua bilangan saja x tidak boleh seperti berikut :
.....
x=tambah(5,8);
.....
karena akan menimbulkan pesan error, seharusnya :
.....
x=tambah(5,8,0);
.....
CMIIW
#include <iostream>
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 : "<<x<<endl;
cin.get();
}
penjelesan :
Dari contoh code tersebut selain fungsi utama (int main()) terdapat fungsi yang lain yaitu fungsi tambah (int tambah()).
Di dalam fungsi tersebut terdapat perhitungan sederhana yaitu r=a,b,c. Sebelum melakukan perhitungan deklarasikan dahulu variabel-variabel tersebut seperti 'int r'.
Pada baris 'return (r)' dapat ditulis dengan 'return r'.
Lalu didalam fungsi utama terdapat variabel 'x' dengan tipe data int. x tersebut mengandung fungsi 'tambah'. Jika ingin menghitung dua bilangan saja x tidak boleh seperti berikut :
.....
x=tambah(5,8);
.....
karena akan menimbulkan pesan error, seharusnya :
.....
x=tambah(5,8,0);
.....
CMIIW
michaelrawi
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 ...
Ajarin MFC juga good idea kl bisa :D. Penasaran jg sama MFC sih, cuma kayanya ribet ;D ...
krofz
@michaelrawi : gw cuman tau pointer kaya gini nih.....
Latihan 8 : Sedikit pembahasan tentang 'pointer' dan 'conio.h'
#include <iostream>
#include<conio.h>
using namespace std;
int main (){
int y,z;
int *x;
x=&y;
*x=10;
cout<<"Hasil : "<<y<<endl;
cout<<"Hasil : "<<x<<endl;
getch();
}
hasil yang akan diperoleh dari program tersebut :
Hasil : 10
Hasil : 0x22ff74
_
penjelasan :
conio.h : berfungsi agar kita dapat menggunakan perintah " ...getch();"
sebelumnya deklarasikan dahulu x-nya dengan int * x (ada tanda pointer).
x=&y : Artinya bawah nilai x sama dengan nilai y (masih default / 0 ).
untuk "Hasil : 0x22ff74" itu tergantung nilai x-nya, menggunakan memori dimana.Sorry gw ngk bisa jelasin lagi, masalahnya gw juga ngk ngerti maksud nya ^^......
CMIIW
Latihan 8 : Sedikit pembahasan tentang 'pointer' dan 'conio.h'
#include <iostream>
#include<conio.h>
using namespace std;
int main (){
int y,z;
int *x;
x=&y;
*x=10;
cout<<"Hasil : "<<y<<endl;
cout<<"Hasil : "<<x<<endl;
getch();
}
hasil yang akan diperoleh dari program tersebut :
Hasil : 10
Hasil : 0x22ff74
_
penjelasan :
conio.h : berfungsi agar kita dapat menggunakan perintah " ...getch();"
sebelumnya deklarasikan dahulu x-nya dengan int * x (ada tanda pointer).
x=&y : Artinya bawah nilai x sama dengan nilai y (masih default / 0 ).
untuk "Hasil : 0x22ff74" itu tergantung nilai x-nya, menggunakan memori dimana.Sorry gw ngk bisa jelasin lagi, masalahnya gw juga ngk ngerti maksud nya ^^......
CMIIW
lalilulelo
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...^^
-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
@krofz
nambahin aja, kalo mau cetak isi dari variabel y pake x kek gini
cout<<(*x)<<endl;
kalo u pake cout<<x; yang dicetak itu alamat dari pointer itu sendiri, jadi dengan pointer, kita bisa mengakses variabel lain ( mengubah nilai , dsb ) tanpa melalui variabel itu sendiri
jadi kalo u bilang kek gini
*x=50;
cout<<y<<endl;
nanti yang kecetak 50 ^^
nambahin aja, kalo mau cetak isi dari variabel y pake x kek gini
cout<<(*x)<<endl;
kalo u pake cout<<x; yang dicetak itu alamat dari pointer itu sendiri, jadi dengan pointer, kita bisa mengakses variabel lain ( mengubah nilai , dsb ) tanpa melalui variabel itu sendiri
jadi kalo u bilang kek gini
*x=50;
cout<<y<<endl;
nanti yang kecetak 50 ^^
krofz
@validator : Oh.. 'Suhu' mohon bimbingan dan petunjuknya..... :gomen:
Dan untuk kakak-kakak yang lain juga mohon bimbingannya...
:gomen:
Latihan 9 : Menggunakan variabel 'static'
#include<iostream>
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<<endl<<x<<endl;
cout<<y<<endl;
cout<<z<<endl;
x=contoh2(); //memanggil fungsi contoh2
y=contoh2(); //memanggil untuk kedua kali
z=contoh2(); //memanggil untuk ketiga kai
cout<<endl<<x<<endl;
cout<<y<<endl;
cout<<z<<endl;
system("pause");
}
Penjelasan :
Dari contoh code tersebut terdapat 2 fungsi selain fungsi utama
Fungsi pertama (int contoh1()) mengandung variabel biasa.
Fungsi kedua mengandung variabel 'static'. Penambahan kata kunci static agar nilai variabel tersebut jika telah diinisialisasi / dimasukkan nilai maka nilainya akan tersimpan,....
Dan untuk kakak-kakak yang lain juga mohon bimbingannya...
:gomen:
Latihan 9 : Menggunakan variabel 'static'
#include<iostream>
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<<endl<<x<<endl;
cout<<y<<endl;
cout<<z<<endl;
x=contoh2(); //memanggil fungsi contoh2
y=contoh2(); //memanggil untuk kedua kali
z=contoh2(); //memanggil untuk ketiga kai
cout<<endl<<x<<endl;
cout<<y<<endl;
cout<<z<<endl;
system("pause");
}
Penjelasan :
Dari contoh code tersebut terdapat 2 fungsi selain fungsi utama
Fungsi pertama (int contoh1()) mengandung variabel biasa.
Fungsi kedua mengandung variabel 'static'. Penambahan kata kunci static agar nilai variabel tersebut jika telah diinisialisasi / dimasukkan nilai maka nilainya akan tersimpan,....
krofz
Latihan 10 : Struktur kondisi dengan 'switch()'
Sebelumnya untuk melakukan pengecekkan kondisi kita menggunakan 'if' sekarang kita akan menggunakan switch.
#include <iostream>
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 : ......;
}
......
Sebelumnya untuk melakukan pengecekkan kondisi kita menggunakan 'if' sekarang kita akan menggunakan switch.
#include <iostream>
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 <iostream>
#include <iomanip.h>
using namespace std;
int main(){
string T =" kalimat";
char S='-';
cout<<setw(10)<<setfill('-')<<S<<endl;
cout<<setw(20)<<setfill('+')<<S<<endl;
cout<<setw(25)<<endl;
cout<<setfill('A')<<T<<endl;
system("pause");
}
Penjelasan :
setw(10) : Perintah ini digunakan agar saat proses keluaran (cout<<..) mendapat spasi sebanyak 10 (setw(10)).
setfill('-') : Perintah ini perlu digabungkan dengan setw(), dan kegunaan perintah ini adalah agar spasi dari setw() diganti dengan karakter yang ada di setfill().
#include <iostream>
#include <iomanip.h>
using namespace std;
int main(){
string T =" kalimat";
char S='-';
cout<<setw(10)<<setfill('-')<<S<<endl;
cout<<setw(20)<<setfill('+')<<S<<endl;
cout<<setw(25)<<endl;
cout<<setfill('A')<<T<<endl;
system("pause");
}
Penjelasan :
setw(10) : Perintah ini digunakan agar saat proses keluaran (cout<<..) mendapat spasi sebanyak 10 (setw(10)).
setfill('-') : Perintah ini perlu digabungkan dengan setw(), dan kegunaan perintah ini adalah agar spasi dari setw() diganti dengan karakter yang ada di setfill().
krofz
22-02-2008, 02:01 PM
Latihan 12 : Membuat bilangan random
#include <iostream>
using namespace std;
void mulai();
void lagi();
string ma="Masukkan Angka : ";
int j,makr,x;
void mulai(){
cout<<ma; cin>>makr;
j=rand()%makr;
cout<<"Angka randomnya : "<<j<<endl<<endl;
lagi();
}
void lagi(){
cout<<"\nIngin lagi ? \n(jika Iya masukkan bilangan selain nol) : ";
cin>>x;
cout<<endl;
if(x==0)
exit(0);
else
mulai();
}
int main(){
mulai();
}
Penjelasan :
void mulai(); void lagi(); : Sebelum kita mengisi fungsi void mulai / void lagi, terlebih dahulu kita deklarasikan.
void mulai() : Berisi sebuah variabel yang akan dirandomkan, yaitu j. Karena default-nya adalah 0 maka perhitungan dimulai dari nol - sampai makr.
lagi(); : Setelah mengeluarkan hasil perhitungan, maka perintah selanjutnya adalah masuk ke fungsi 'void lagi()' yang berisi pertanyaan apakah ingin menghitung nilai random lagi..?
Pada fungsi utama (int main()) hanya memiliki tugas memanggil fungsi mulai();.
#include <iostream>
using namespace std;
void mulai();
void lagi();
string ma="Masukkan Angka : ";
int j,makr,x;
void mulai(){
cout<<ma; cin>>makr;
j=rand()%makr;
cout<<"Angka randomnya : "<<j<<endl<<endl;
lagi();
}
void lagi(){
cout<<"\nIngin lagi ? \n(jika Iya masukkan bilangan selain nol) : ";
cin>>x;
cout<<endl;
if(x==0)
exit(0);
else
mulai();
}
int main(){
mulai();
}
Penjelasan :
void mulai(); void lagi(); : Sebelum kita mengisi fungsi void mulai / void lagi, terlebih dahulu kita deklarasikan.
void mulai() : Berisi sebuah variabel yang akan dirandomkan, yaitu j. Karena default-nya adalah 0 maka perhitungan dimulai dari nol - sampai makr.
lagi(); : Setelah mengeluarkan hasil perhitungan, maka perintah selanjutnya adalah masuk ke fungsi 'void lagi()' yang berisi pertanyaan apakah ingin menghitung nilai random lagi..?
Pada fungsi utama (int main()) hanya memiliki tugas memanggil fungsi mulai();.
krofz
23-02-2008, 10:20 AM
Latihan 13 : Lebih jauh dengan string
#include <iostream>
#include <string>
#include <sstream>
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 : <string> untuk dapat menggunakan perintah getline, <sstream> 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<<angka;
//hasil : 200
CMIIW
#include <iostream>
#include <string>
#include <sstream>
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 : <string> untuk dapat menggunakan perintah getline, <sstream> 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<<angka;
//hasil : 200
CMIIW
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<iostream>
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 = "<<a<<endl;
system("pause");
}
Penjelasan :
Logika dari program diatas adalah jika nilai a < 0 (ekspresi 1) dan benar maka ekspresi dua akan dijalankan yaitu mengalikan nilai a dengan -, tapi jika salah (nilai a lebih besar dari 0 (a>0)) maka ekspresi 3 akan dijalankan yaitu nilai a itu sendiri.
Operator ini memiliki konsep sama seperti suatu percabangan atau pemilihan terhadap kondisi tertentu. Bentuk umumnya :
ekspresi 1 ? ekspresi 2 : ekspresi 3;
#include<iostream>
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 = "<<a<<endl;
system("pause");
}
Penjelasan :
Logika dari program diatas adalah jika nilai a < 0 (ekspresi 1) dan benar maka ekspresi dua akan dijalankan yaitu mengalikan nilai a dengan -, tapi jika salah (nilai a lebih besar dari 0 (a>0)) maka ekspresi 3 akan dijalankan yaitu nilai a itu sendiri.
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<iostream>
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 : "<<x<<endl;
cout<<"Nilai y : "<<y<<endl;
cout<<"\nContoh operator bitwise <<\n";
cout<<"Nilai z : "<<z<<endl;
cout<<"Nilai zz : "<<zz<<endl;
system("pause");
}
Penjelasan :
x=x>>1; : Nilai awal x adalah 255 atau 1111.1111 (8 bit) dalam biner , digeser ke kanan sebanyak 1 kali menjadi 0111.1111 atau 127 (desimal).
y=y>>3; : Untuk y sama seperti x tapi disini digeser sebanyak 3 kali, awal : 1111.1111 menjadi 0001.1111.
Untuk variabel z dan zz yang berbeda adalah pergesarannya saja, yaitu ke kiri. Pada variabel zz, awal : 10.1101 menjadi 1.0110.1000 atau 350.
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<iostream>
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 : "<<x<<endl;
cout<<"Nilai y : "<<y<<endl;
cout<<"\nContoh operator bitwise <<\n";
cout<<"Nilai z : "<<z<<endl;
cout<<"Nilai zz : "<<zz<<endl;
system("pause");
}
Penjelasan :
x=x>>1; : Nilai awal x adalah 255 atau 1111.1111 (8 bit) dalam biner , digeser ke kanan sebanyak 1 kali menjadi 0111.1111 atau 127 (desimal).
y=y>>3; : Untuk y sama seperti x tapi disini digeser sebanyak 3 kali, awal : 1111.1111 menjadi 0001.1111.
Untuk variabel z dan zz yang berbeda adalah pergesarannya saja, yaitu ke kiri. Pada variabel zz, awal : 10.1101 menjadi 1.0110.1000 atau 350.
lalilulelo
28-02-2008, 08:47 PM
wah tambah lama tambah mantep aja neh tutorial-nya...
nice work bro...
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<iostream>
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<<endl;
}
for(x;x>=0;x--){
y=1;
for(y;y<=x;y++){
cout<<'X';
}
cout<<endl;
}
}else{
cout<<"\nTerlalu besar!\n\n";
}
system("pause");
}
Penjelasan :
Logika dari program diatas adalah untuk x=1 dan x lebih kecil atau sama dengan z, maka x akan bertambah dan statemen didalamnya akan dijalankan. Statemennya berupa pengulangan lagi. Didalam pengulangan tersebut terdapat y=1; dan pernyataan ini sangat diperlukan karena jika tidak maka pengulangan hanya terjadi pada pengulangan x mungkin disebabkan karena nilai y sebelumnya adalah 0 (default)
dan dalam pengulangan for y harus true.
Latihan 16 : For bersarang
#include<iostream>
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<<endl;
}
for(x;x>=0;x--){
y=1;
for(y;y<=x;y++){
cout<<'X';
}
cout<<endl;
}
}else{
cout<<"\nTerlalu besar!\n\n";
}
system("pause");
}
Penjelasan :
Logika dari program diatas adalah untuk x=1 dan x lebih kecil atau sama dengan z, maka x akan bertambah dan statemen didalamnya akan dijalankan. Statemennya berupa pengulangan lagi. Didalam pengulangan tersebut terdapat y=1; dan pernyataan ini sangat diperlukan karena jika tidak maka pengulangan hanya terjadi pada pengulangan x mungkin disebabkan karena nilai y sebelumnya adalah 0 (default)
dan dalam pengulangan for y harus true.
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<iostream>
#include<cstring>
using namespace std;
int main(){
char* A1;
char* A2;
char* A3;
A1="Contoh Duplikasi String";
A2=strdup(A1);
strcpy(A3,A1);
cout<<A2<<endl<<endl;
cout<<A3<<endl<<endl;
A1=strchr(A2,'t');
cout<<A1<<endl<<endl;
A2=strstr(A1,"Duplikasi");
cout<<A2<<endl<<endl;
strrev(A1);
cout<<A1<<endl<<endl;
system("pause");
}
Penjelasan :
A2=strdup(A1) : Melakukan proses duplikat untuk A2.
strcpy(A3,A1) : Melakukan proses copy dari A1 untuk A3.
A1=strchr(A2,'t') : Melakukan proses copy tapi dimulai dari karakter t (huruf kecil).
A2=strstr(A1,"Duplikasi") : Melakukan proses copy dimulai dengan string Duplikasi , perlu diperhatikan antara huruf besar dan huruf kecil.
strrev(A1) : Melakukan proses reverse (membalikkan) string.Catatan : Sebagian besar dari latihan-latihan ini saya ambil dari buku yang berjudul "Pemrograman C++ : Mudah dan Cepat Menjadi Master C++ dengan Mengungkap Rahasia-rahasia Pemrograman dalam C++" penulis "Budi Raharjo", dan penerbit Informatika.
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<iostream>
#include<cstring>
using namespace std;
int main(){
char* A1;
char* A2;
char* A3;
A1="Contoh Duplikasi String";
A2=strdup(A1);
strcpy(A3,A1);
cout<<A2<<endl<<endl;
cout<<A3<<endl<<endl;
A1=strchr(A2,'t');
cout<<A1<<endl<<endl;
A2=strstr(A1,"Duplikasi");
cout<<A2<<endl<<endl;
strrev(A1);
cout<<A1<<endl<<endl;
system("pause");
}
Penjelasan :
A2=strdup(A1) : Melakukan proses duplikat untuk A2.
strcpy(A3,A1) : Melakukan proses copy dari A1 untuk A3.
A1=strchr(A2,'t') : Melakukan proses copy tapi dimulai dari karakter t (huruf kecil).
A2=strstr(A1,"Duplikasi") : Melakukan proses copy dimulai dengan string Duplikasi , perlu diperhatikan antara huruf besar dan huruf kecil.
strrev(A1) : Melakukan proses reverse (membalikkan) string.Catatan : Sebagian besar dari latihan-latihan ini saya ambil dari buku yang berjudul "Pemrograman C++ : Mudah dan Cepat Menjadi Master C++ dengan Mengungkap Rahasia-rahasia Pemrograman dalam C++" penulis "Budi Raharjo", dan penerbit Informatika.
krofz
09-03-2008, 12:43 PM
Latihan 18 : Tipe Data Bentukan
/*
Tipe data Bentukan
*/
#include<iostream>
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<<nm<<A.nama<<endl;
cout<<nl<<A.nilai<<endl;
cout<<hf<<A.huruf<<endl;
cout<<endl;
}
void mrdB(){
B.nama="Bagus";
B.nilai=78;
B.huruf='B';
cout<<nm<<B.nama<<endl;
cout<<nl<<B.nilai<<endl;
cout<<hf<<B.huruf<<endl;
cout<<endl;
}
void mrdC(){
C.nama="Charles";
C.nilai=90;
C.huruf='A';
cout<<nm<<C.nama<<endl;
cout<<nl<<C.nilai<<endl;
cout<<hf<<C.huruf<<endl;
cout<<endl;
}
//Fungsi utama
int main(){
mrdA();
mrdB();
mrdC();
system("pause");
}
/*Penjelasan :
Tipe data bentukan dapat dibuat dengan perintah
'struct'. Tipe ini berguna untuk Menyimpan variabel-variabel
yang memiliki tipe sama atau berbeda.
----------------
struct Murid(){
....
}A,B;
Murid C;
----------------
Untuk membuat variabel agar dapat memanggil atau menggunakan
tipe-tipe data di dalam struct.
----------------
A.nama="....";
----------------
Untuk mengisi nilai variabel tersebut dengan menggunakan variabel
yang terdapat dalam struct.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
Tipe data Bentukan
*/
#include<iostream>
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<<nm<<A.nama<<endl;
cout<<nl<<A.nilai<<endl;
cout<<hf<<A.huruf<<endl;
cout<<endl;
}
void mrdB(){
B.nama="Bagus";
B.nilai=78;
B.huruf='B';
cout<<nm<<B.nama<<endl;
cout<<nl<<B.nilai<<endl;
cout<<hf<<B.huruf<<endl;
cout<<endl;
}
void mrdC(){
C.nama="Charles";
C.nilai=90;
C.huruf='A';
cout<<nm<<C.nama<<endl;
cout<<nl<<C.nilai<<endl;
cout<<hf<<C.huruf<<endl;
cout<<endl;
}
//Fungsi utama
int main(){
mrdA();
mrdB();
mrdC();
system("pause");
}
/*Penjelasan :
Tipe data bentukan dapat dibuat dengan perintah
'struct'. Tipe ini berguna untuk Menyimpan variabel-variabel
yang memiliki tipe sama atau berbeda.
----------------
struct Murid(){
....
}A,B;
Murid C;
----------------
Untuk membuat variabel agar dapat memanggil atau menggunakan
tipe-tipe data di dalam struct.
----------------
A.nama="....";
----------------
Untuk mengisi nilai variabel tersebut dengan menggunakan variabel
yang terdapat dalam struct.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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<iostream>
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<<kal;
cin>>c;
if(c<=14){
while(a<=c){
b=1;
a++;
while(b<=a){
cout<<'X';
b++;
}
cout<<endl;
}
while(a>=2){
b=1;
a--;
while(b<=a){
cout<<'X';
b++;
}
cout<<endl;
}
}else{
cout<<tb;
}
}
//Fungsi untuk do while bersarang
void nestdowhile(){
cout<<kal;
cin>>c;
if(c<=14){
do{
b=1;
a++;
do{
cout<<'X';
b++;
}while(b<=a);
cout<<endl;
}while(a<=c);
do{
b=1;
a--;
do{
cout<<'X';
b++;
}while(b<=a);
cout<<endl;
}while(a>=2);
}else{
cout<<tb;
}
}
//Fungsi utama
int main(){
int x;
cout<<"Pilihlah Pengulangan bersarang berikut ini : \n";
cout<<"1. Pengulangan bersarang while\n";
cout<<"2. Pengulangan bersarang do while\n";
cout<<"Masukkan pilihan : ";
cin>>x;
if(x==1)
nestwhile();
else if(x==2)
nestdowhile();
else
cout<<endl<<"Maaf tidak ada dalam daftar\n\n";
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).
*/
/*
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<iostream>
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<<kal;
cin>>c;
if(c<=14){
while(a<=c){
b=1;
a++;
while(b<=a){
cout<<'X';
b++;
}
cout<<endl;
}
while(a>=2){
b=1;
a--;
while(b<=a){
cout<<'X';
b++;
}
cout<<endl;
}
}else{
cout<<tb;
}
}
//Fungsi untuk do while bersarang
void nestdowhile(){
cout<<kal;
cin>>c;
if(c<=14){
do{
b=1;
a++;
do{
cout<<'X';
b++;
}while(b<=a);
cout<<endl;
}while(a<=c);
do{
b=1;
a--;
do{
cout<<'X';
b++;
}while(b<=a);
cout<<endl;
}while(a>=2);
}else{
cout<<tb;
}
}
//Fungsi utama
int main(){
int x;
cout<<"Pilihlah Pengulangan bersarang berikut ini : \n";
cout<<"1. Pengulangan bersarang while\n";
cout<<"2. Pengulangan bersarang do while\n";
cout<<"Masukkan pilihan : ";
cin>>x;
if(x==1)
nestwhile();
else if(x==2)
nestdowhile();
else
cout<<endl<<"Maaf tidak ada dalam daftar\n\n";
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<iostream>
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<<s<<'\n';
}else if(a=="c"){
cout<<b<<'\n';
}else{
cout<<"TIDAK ADA DALAM DAFTAR\n";
}
system("pause");
}
/*Penjelasan :
jika statemen yang akan dihasilkan sama dapat menggunakan
operator || (or) dan jika kondisi yang harus dipehuni
ada dua syarat dapat menggunakan && (and), contoh :
-------------
if((x>10) && (y>10)){
z=5;
}
-------------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
#include<iostream>
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<<s<<'\n';
}else if(a=="c"){
cout<<b<<'\n';
}else{
cout<<"TIDAK ADA DALAM DAFTAR\n";
}
system("pause");
}
/*Penjelasan :
jika statemen yang akan dihasilkan sama dapat menggunakan
operator || (or) dan jika kondisi yang harus dipehuni
ada dua syarat dapat menggunakan && (and), contoh :
-------------
if((x>10) && (y>10)){
z=5;
}
-------------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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<iostream>
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).
*/
/*
Statemen Peloncatan : Break, dan Continue
*/
#include<iostream>
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<iostream>
using namespace std;
int main(){
int x=1,z=1;
y:
if(x<10){
cout<<"Nilai x = "<<x<<endl;
x++;
goto y;
}
system("pause");
}
/*Penjelasan :
'goto' untuk meloncat ke tempat yang telah ditentukan.
'y:' disini disebut dengan label, dan jika dijalankan
program tersebut mirip dengan pengulangan.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
Statemen Peloncatan : Goto
*/
#include<iostream>
using namespace std;
int main(){
int x=1,z=1;
y:
if(x<10){
cout<<"Nilai x = "<<x<<endl;
x++;
goto y;
}
system("pause");
}
/*Penjelasan :
'goto' untuk meloncat ke tempat yang telah ditentukan.
'y:' disini disebut dengan label, dan jika dijalankan
program tersebut mirip dengan pengulangan.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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.
- 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<iostream>
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) = "<<x;
cout<<"\n\nNilai dari y (y) = "<<y;
cout<<"\nAlamat dari y (&y) = "<<&y;
cout<<"\n\nAlamat dari z (&z) = "<<&z;
cout<<endl;
//modifikasi nilai
*x=500;
cout<<"\nNilai dari y = "<<y;
cout<<endl;
system("pause");
}
/*Penjelasan :
Pembahasan tentang pointer mungkin sudah disinggung
sebelumnya, tapi nggak apa-apa sekalian ini sebagai refreshing atau
penyegaran kembali tentang pointer.
Tujuan dari pointer adalah untuk memanipulasi
memori, namun hati-hati dalam menggunakan
pointer karena pointer sangat berbahaya.
Setiap variabel yang dideklarasikan pasti
memiliki alamat di memory. Alamat ini ditentukan
oleh Sistem (Sistem Operasi) secara acak, sehingga
alamat setiap variabel berbeda-beda.
Tapi dengan pointer memungkinkan 2 atau lebih variabel
menempati alamat yang sama dalam memori, sehingga
jika alamat tersebut berisi nilai atau data maka
2 atau lebih variabel tersebut memiliki nilai atau data
yang sama pula.
untuk membuat sebuah pointer pada variabel cukup
menambahkan tanda asterisk (*) setelah tipe data
pada baris keluaran terakhir yaitu "Nilai dari y =" akan keluar
nilai sebesar 500, ini terjadi karena x (*x) telah memasukkan
nilai ke alamat yang sama yang ditempati juga oleh y.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
Pointer
*/
#include<iostream>
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) = "<<x;
cout<<"\n\nNilai dari y (y) = "<<y;
cout<<"\nAlamat dari y (&y) = "<<&y;
cout<<"\n\nAlamat dari z (&z) = "<<&z;
cout<<endl;
//modifikasi nilai
*x=500;
cout<<"\nNilai dari y = "<<y;
cout<<endl;
system("pause");
}
/*Penjelasan :
Pembahasan tentang pointer mungkin sudah disinggung
sebelumnya, tapi nggak apa-apa sekalian ini sebagai refreshing atau
penyegaran kembali tentang pointer.
Tujuan dari pointer adalah untuk memanipulasi
memori, namun hati-hati dalam menggunakan
pointer karena pointer sangat berbahaya.
Setiap variabel yang dideklarasikan pasti
memiliki alamat di memory. Alamat ini ditentukan
oleh Sistem (Sistem Operasi) secara acak, sehingga
alamat setiap variabel berbeda-beda.
Tapi dengan pointer memungkinkan 2 atau lebih variabel
menempati alamat yang sama dalam memori, sehingga
jika alamat tersebut berisi nilai atau data maka
2 atau lebih variabel tersebut memiliki nilai atau data
yang sama pula.
untuk membuat sebuah pointer pada variabel cukup
menambahkan tanda asterisk (*) setelah tipe data
pada baris keluaran terakhir yaitu "Nilai dari y =" akan keluar
nilai sebesar 500, ini terjadi karena x (*x) telah memasukkan
nilai ke alamat yang sama yang ditempati juga oleh y.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
krofz
23-03-2008, 10:14 AM
Latihan 23 : NULL dan Const Pointer
/*
NULL Pointer dan Const Pointer
*/
#include<iostream>
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 : "<<nullP<<endl;
//inisialisasi yang dilarang
//*constP2=300;
cout<<"Nilai Pointer constP2 bernilai Konstan : "<<*constP2<<endl;
//constP1=&y;
cout<<"Alamat Pointer constP1 bernilai Konstan : "<<constP1<<endl;
cout<<endl;
system("pause");
}
/*Penjelasan :
'NULL Pointer' tidak akan menunjukan ke alamat manapun,
dan NULL ini sangat berguna jika kita membuat sebuah
pointer dan belum menentukan ke alamat mana pointer
itu akan menunjuk.
'int * const Var' berarti alamat dari pointer tersebut
tidak dapat di ubah atau Read-Only, tetapi tetap dapat
melakukan inisialisasi nilai, contoh :
------------
*var=300;
------------
'const int * Var' berarti pointer tersebut memiliki nilai
yang konstan, maksudnya adalah pointer tersebut tidak
dapat melakukan inisialisasi nilai, contoh :
------------
int y;
const int *var=&y;
*var=500;
------------
tetapi alamat variabel yang dituju tetap dapat mengubah
nilai-nya, contoh :
------------
int x,y;
const int *var=&y;
y=150;
y=250;
var=&x;
var=&y;
------------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
NULL Pointer dan Const Pointer
*/
#include<iostream>
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 : "<<nullP<<endl;
//inisialisasi yang dilarang
//*constP2=300;
cout<<"Nilai Pointer constP2 bernilai Konstan : "<<*constP2<<endl;
//constP1=&y;
cout<<"Alamat Pointer constP1 bernilai Konstan : "<<constP1<<endl;
cout<<endl;
system("pause");
}
/*Penjelasan :
'NULL Pointer' tidak akan menunjukan ke alamat manapun,
dan NULL ini sangat berguna jika kita membuat sebuah
pointer dan belum menentukan ke alamat mana pointer
itu akan menunjuk.
'int * const Var' berarti alamat dari pointer tersebut
tidak dapat di ubah atau Read-Only, tetapi tetap dapat
melakukan inisialisasi nilai, contoh :
------------
*var=300;
------------
'const int * Var' berarti pointer tersebut memiliki nilai
yang konstan, maksudnya adalah pointer tersebut tidak
dapat melakukan inisialisasi nilai, contoh :
------------
int y;
const int *var=&y;
*var=500;
------------
tetapi alamat variabel yang dituju tetap dapat mengubah
nilai-nya, contoh :
------------
int x,y;
const int *var=&y;
y=150;
y=250;
var=&x;
var=&y;
------------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
krofz
30-03-2008, 02:55 PM
Latihan 24 : Pointer Aritmetika
/*
Pointer Aritmetika
*/
#include<iostream>
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<<endl<<endl;
//untuk tipe data int
cout<<"Untuk Tipe Data Int\n"; p=&x[0];
cout<<"Rp. "<<*p;
P=&A[5];
cout<<*P; p=p+1;
cout<<*p<<*P;
cout<<*p<<endl<<endl;
system("pause");
}
/*Penjelasan :
Pointer Aritmetika adalah pointer
yang dapat menempati alamat array dalam
sebuah variabel.
Pointer Aritmetika hanya dapat melakukan
penjumlahan dan pengurangan dalam alamat Array
dan tidak mendukung operator selain penjumlahan
dan pengurangan.
P=&A[5]; : Selalu ingat bahwa indek Array selalu
diawali oleh 0. sehingga untuk memanggil karakter
yang ke 6 alamatnya adalah [5].
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
Sorry kalau kurang jelas atau salah.
/*
Pointer Aritmetika
*/
#include<iostream>
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<<endl<<endl;
//untuk tipe data int
cout<<"Untuk Tipe Data Int\n"; p=&x[0];
cout<<"Rp. "<<*p;
P=&A[5];
cout<<*P; p=p+1;
cout<<*p<<*P;
cout<<*p<<endl<<endl;
system("pause");
}
/*Penjelasan :
Pointer Aritmetika adalah pointer
yang dapat menempati alamat array dalam
sebuah variabel.
Pointer Aritmetika hanya dapat melakukan
penjumlahan dan pengurangan dalam alamat Array
dan tidak mendukung operator selain penjumlahan
dan pengurangan.
P=&A[5]; : Selalu ingat bahwa indek Array selalu
diawali oleh 0. sehingga untuk memanggil karakter
yang ke 6 alamatnya adalah [5].
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
Sorry kalau kurang jelas atau salah.
krofz
06-04-2008, 02:34 PM
Latihan 25 : New dan Delete Pointer
/*
New dan Delete Pointer
*/
#include<iostream>
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<<x<<"\n\n";
//membuat alamat baru senjumlah nilai n
x=new int[n];
cout<<x<<" \n\n";
for(a=0;a<n;a++)
{
x+=1;
//menampilkan alamat-alamat pointer x
cout<<"Alamat baru ke-"<<a+1<<" : ";
cout<<x<<endl;
}
x-=3;
cout<<"\nMemilih alamat baru ke-2\n";
cout<<x<<" \n\n\n";
delete[] x;
//memasukkan nilai ke setiap alamat
for(a=0;a<n;a++)
{
*x=(a+2)*5;
cout<<"Nilai dari alamat baru ke-"<<a+1<<" : ";
cout<<*x<<endl;
//statemen berikut berfungsi agar pointer x
//berpindah ke alamat selanjutnya
x+=1;
}
delete[] x;
system("pause");
}
/*Penjelasan :
Jika jumlah n sama dengan 5 berarti pointer
akan membuat ruang sebanyak 5 buah, sesuai dengan :
-------------
x=new int[n];
-------------
Melakukan pengulangan untuk mencetak nilai alamat-alamat
baru dari pointer x. Setelah itu :
-------------
x-=3;
-------------
Menggeser alamat baru x yang berada di dalam memori sejumlah
3, setelah pointer x berada di alamat ke-5 di dalam
memori. Jika kita menggeser 6 setelah digeser 3,
kemungkinan program akan error saat dijalankan.
delete disini berfungsi untuk mendealokasikan memori
pointer agar tidak terjadi memory leak.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
New dan Delete Pointer
*/
#include<iostream>
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<<x<<"\n\n";
//membuat alamat baru senjumlah nilai n
x=new int[n];
cout<<x<<" \n\n";
for(a=0;a<n;a++)
{
x+=1;
//menampilkan alamat-alamat pointer x
cout<<"Alamat baru ke-"<<a+1<<" : ";
cout<<x<<endl;
}
x-=3;
cout<<"\nMemilih alamat baru ke-2\n";
cout<<x<<" \n\n\n";
delete[] x;
//memasukkan nilai ke setiap alamat
for(a=0;a<n;a++)
{
*x=(a+2)*5;
cout<<"Nilai dari alamat baru ke-"<<a+1<<" : ";
cout<<*x<<endl;
//statemen berikut berfungsi agar pointer x
//berpindah ke alamat selanjutnya
x+=1;
}
delete[] x;
system("pause");
}
/*Penjelasan :
Jika jumlah n sama dengan 5 berarti pointer
akan membuat ruang sebanyak 5 buah, sesuai dengan :
-------------
x=new int[n];
-------------
Melakukan pengulangan untuk mencetak nilai alamat-alamat
baru dari pointer x. Setelah itu :
-------------
x-=3;
-------------
Menggeser alamat baru x yang berada di dalam memori sejumlah
3, setelah pointer x berada di alamat ke-5 di dalam
memori. Jika kita menggeser 6 setelah digeser 3,
kemungkinan program akan error saat dijalankan.
delete disini berfungsi untuk mendealokasikan memori
pointer agar tidak terjadi memory leak.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
krofz
06-04-2008, 02:37 PM
Latihan 26 : Memory Leak
/*
Memory Leak
*/
#include<iostream>
using namespace std;
int main()
{
//menyiapkan variabel yang akan dibutuhkan
int *x;
cout<<"Alamat Pertama : "<<x<<endl;
x=new int;
*x=225;
cout<<"Alamat baru : "<<x;
cout<<"\nNilai x : "<<*x<<endl;
//menampilkan variabel yang telah didealokasikan
delete x;
cout<<"Nilai setelah didealokasikan : "<<*x<<"\n\n";
system("pause");
}
/*Penjelasan :
Memory Leak adalah kejadian jika alamat baru yang
digunakan berisi nilai yang sudah tidak lagi dibutuhkan
tetapi sudah tidak dapat dimanipulasi lagi.
Kalau pada bahasa C menggunakan free(), contoh:
------------
free(x)
------------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
Memory Leak
*/
#include<iostream>
using namespace std;
int main()
{
//menyiapkan variabel yang akan dibutuhkan
int *x;
cout<<"Alamat Pertama : "<<x<<endl;
x=new int;
*x=225;
cout<<"Alamat baru : "<<x;
cout<<"\nNilai x : "<<*x<<endl;
//menampilkan variabel yang telah didealokasikan
delete x;
cout<<"Nilai setelah didealokasikan : "<<*x<<"\n\n";
system("pause");
}
/*Penjelasan :
Memory Leak adalah kejadian jika alamat baru yang
digunakan berisi nilai yang sudah tidak lagi dibutuhkan
tetapi sudah tidak dapat dimanipulasi lagi.
Kalau pada bahasa C menggunakan free(), contoh:
------------
free(x)
------------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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<iostream>
#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<n;x++)
{
cout<<"Bilangan ke-"<<x+1<<" = ";
cin>>data[x];
}
cout<<"\nSebelum diurutkan :\n";
for(x=0;x<n;x++)
{
if(x<n-1)
{
cout<<data[x];
cout<<", ";
}else{
cout<<"dan "<<data[x]<<".";
}
}
cout<<"\n\nAscending nya (dari kecil ke besar)\n";
//Melakukan metode Bubble Sort
//atau metode Gelembung
for(x=1;x<n;x++)
{
//jika n=5 (misal) maka y=4
//karena dalam array indek pertamanya adalah 0
for(y=n-1;y>=x;y--)
{
if(data[y-1]>data[y])
{
//melakukan perpindahan nilai
pindah=data[y-1];
data[y-1]=data[y];
data[y]=pindah;
}
}
}
for(i=0;i<n;i++)
{
if(i<n-1)
{
cout<<data[i]<<", ";
}else{
cout<<"dan "<<data[i]<<'.';
}
}
cout<<"\n\n";
}else{
//jika user memasukkan lebih dari max
cout<<"Maaf terlalu besar\n\n";
}
system("pause");
}
/*Penjelasan :
Sebelumnya kita meminta user untuk memasukkan dahulu
nilai-nilai yang akan diurutkan. Pada bagian ini
hanya untuk membuat program kita tidak monoton (dapat
juga tidak dibuat).
Saat melakukan metode gelembung (bubble sort), kita
perlu 3 variabel, pertama variabel yang nilainya akan
dibandingkan dengan variabel kedua dan ketiga adalah tempat
untuk menampung nilai variabel tersebut agar tidak terganti
atau terbuang.
Untuk melakukan metode gelembung diperlukan for bersarang.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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<iostream>
#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<n;x++)
{
cout<<"Bilangan ke-"<<x+1<<" = ";
cin>>data[x];
}
cout<<"\nSebelum diurutkan :\n";
for(x=0;x<n;x++)
{
if(x<n-1)
{
cout<<data[x];
cout<<", ";
}else{
cout<<"dan "<<data[x]<<".";
}
}
cout<<"\n\nAscending nya (dari kecil ke besar)\n";
//Melakukan metode Bubble Sort
//atau metode Gelembung
for(x=1;x<n;x++)
{
//jika n=5 (misal) maka y=4
//karena dalam array indek pertamanya adalah 0
for(y=n-1;y>=x;y--)
{
if(data[y-1]>data[y])
{
//melakukan perpindahan nilai
pindah=data[y-1];
data[y-1]=data[y];
data[y]=pindah;
}
}
}
for(i=0;i<n;i++)
{
if(i<n-1)
{
cout<<data[i]<<", ";
}else{
cout<<"dan "<<data[i]<<'.';
}
}
cout<<"\n\n";
}else{
//jika user memasukkan lebih dari max
cout<<"Maaf terlalu besar\n\n";
}
system("pause");
}
/*Penjelasan :
Sebelumnya kita meminta user untuk memasukkan dahulu
nilai-nilai yang akan diurutkan. Pada bagian ini
hanya untuk membuat program kita tidak monoton (dapat
juga tidak dibuat).
Saat melakukan metode gelembung (bubble sort), kita
perlu 3 variabel, pertama variabel yang nilainya akan
dibandingkan dengan variabel kedua dan ketiga adalah tempat
untuk menampung nilai variabel tersebut agar tidak terganti
atau terbuang.
Untuk melakukan metode gelembung diperlukan for bersarang.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
krofz
20-04-2008, 03:10 PM
Latihan 28 : Ascending Angka dengan cara lain
/*
Ascending Angka dengan cara lain
*/
#include<iostream>
#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["<<max<<"] = {";
for(y=0;y<x;y++)
{
if(y<x-1)
{
cout<<data1[y]<<", ";
}else{
cout<<data1[y]<<'}';
}
}
cout<<"\ndata2["<<max<<"] = {";
for(y=0;y<x;y++)
{
if(y<x-1)
{
cout<<data2[y]<<", ";
}else{
cout<<data2[y]<<'}';
}
}
cout<<"\n\nProgram tidak memiliki banyak kesempatan untuk mengurutkan\n\n";
//program hanya melakukan pengecekan sebanyak x
for(y=0;y<x;y++)
{
if(data1[y-1]>data1[y])
{
pindah1=data1[y-1];
data1[y-1]=data1[y];
data1[y]=pindah1;
}
if(data2[y-1]>data2[y])
{
//urutan data ke 2
pindah2=data2[y-1];
data2[y-1]=data2[y];
data2[y]=pindah2;
}
}
//proses untuk menampilkan data
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data1[i]<<", ";
}else{
cout<<"dan "<<data1[i]<<'.';
}
}
cout<<endl;
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data2[i]<<", ";
}else{
cout<<"dan "<<data2[i]<<'.';
}
}
cout<<"\n\n";
x=25;
cout<<"Program memiliki banyak kesempatan untuk mengurutkan\n\n";
for(y=0;y<x;y++)
{
if(data1[y-1]>data1[y])
{
pindah1=data1[y-1];
data1[y-1]=data1[y];
data1[y]=pindah1;
}
if(data2[y-1]>data2[y])
{
//urutan data ke 2
pindah2=data2[y-1];
data2[y-1]=data2[y];
data2[y]=pindah2;
}
//agar dapat terus berulang
if(y==9)
{
x=x-1;
y=0;
}
}
//proses untuk menampilkan data
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data1[i]<<", ";
}else{
cout<<"dan "<<data1[i]<<'.';
}
}
cout<<endl;
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data2[i]<<", ";
}else{
cout<<"dan "<<data2[i]<<'.';
}
}
cout<<endl;
system("pause");
}
/*Penjelasan :
Kalau sebelumnya menggunakan for bersarang sekarang hanya
menggunakan for saja. Cara ini hanya sebagai referensi
bagaimana program melakukan pengecekan terus menerus
agar kondisi yang dihasilkan dapat sesuai harapan.
Walaupun kodenya sedikit panjang dan belum dibuat
sederhana, semoga banyak membantu.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
Kode diatas terlihat bertumpuk di fungsi main(), Anda dapat membagi - bagi kode tersebut ke dalam fungsi-fungsi sederhana.
/*
Ascending Angka dengan cara lain
*/
#include<iostream>
#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["<<max<<"] = {";
for(y=0;y<x;y++)
{
if(y<x-1)
{
cout<<data1[y]<<", ";
}else{
cout<<data1[y]<<'}';
}
}
cout<<"\ndata2["<<max<<"] = {";
for(y=0;y<x;y++)
{
if(y<x-1)
{
cout<<data2[y]<<", ";
}else{
cout<<data2[y]<<'}';
}
}
cout<<"\n\nProgram tidak memiliki banyak kesempatan untuk mengurutkan\n\n";
//program hanya melakukan pengecekan sebanyak x
for(y=0;y<x;y++)
{
if(data1[y-1]>data1[y])
{
pindah1=data1[y-1];
data1[y-1]=data1[y];
data1[y]=pindah1;
}
if(data2[y-1]>data2[y])
{
//urutan data ke 2
pindah2=data2[y-1];
data2[y-1]=data2[y];
data2[y]=pindah2;
}
}
//proses untuk menampilkan data
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data1[i]<<", ";
}else{
cout<<"dan "<<data1[i]<<'.';
}
}
cout<<endl;
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data2[i]<<", ";
}else{
cout<<"dan "<<data2[i]<<'.';
}
}
cout<<"\n\n";
x=25;
cout<<"Program memiliki banyak kesempatan untuk mengurutkan\n\n";
for(y=0;y<x;y++)
{
if(data1[y-1]>data1[y])
{
pindah1=data1[y-1];
data1[y-1]=data1[y];
data1[y]=pindah1;
}
if(data2[y-1]>data2[y])
{
//urutan data ke 2
pindah2=data2[y-1];
data2[y-1]=data2[y];
data2[y]=pindah2;
}
//agar dapat terus berulang
if(y==9)
{
x=x-1;
y=0;
}
}
//proses untuk menampilkan data
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data1[i]<<", ";
}else{
cout<<"dan "<<data1[i]<<'.';
}
}
cout<<endl;
for(i=0;i<x;i++)
{
if(i<x-1)
{
cout<<data2[i]<<", ";
}else{
cout<<"dan "<<data2[i]<<'.';
}
}
cout<<endl;
system("pause");
}
/*Penjelasan :
Kalau sebelumnya menggunakan for bersarang sekarang hanya
menggunakan for saja. Cara ini hanya sebagai referensi
bagaimana program melakukan pengecekan terus menerus
agar kondisi yang dihasilkan dapat sesuai harapan.
Walaupun kodenya sedikit panjang dan belum dibuat
sederhana, semoga banyak membantu.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
Kode diatas terlihat bertumpuk di fungsi main(), Anda dapat membagi - bagi kode tersebut ke dalam fungsi-fungsi sederhana.
krofz
27-04-2008, 01:55 PM
Latihan 29 : Membuat Descending Angka
/*
Membuat Descending Angka
*/
#include<iostream>
#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<n;x++)
{
cout<<"Bilangan ke-"<<x+1<<" = ";
cin>>data[x];
}
cout<<"\nSebelum diurutkan :\n";
for(x=0;x<n;x++)
{
if(x<n-1)
{
cout<<data[x];
cout<<", ";
}else{
cout<<"dan "<<data[x]<<".";
}
}
cout<<"\n\nDescending-nya (dari besar ke kecil)\n";
for(x=1;x<n;x++)
{
for(y=n-1;y>=x;y--)
{
if(data[y-1]<data[y])
{
pindah=data[y-1];
data[y-1]=data[y];
data[y]=pindah;
}
}
}
for(i=0;i<n;i++)
{
if(i<n-1)
{
cout<<data[i]<<", ";
}else{
cout<<"dan "<<data[i]<<'.';
}
}
cout<<"\n\n";
}else{
cout<<"Maaf terlalu besar\n\n";
}
system("pause");
}
/*Penjelasan :
Sama seperti Ascending Angka sebelum yang berbeda
disini hanya tinggal diganti operator pada baris berikut :
-----------
if(data[y-1]>data[y])
{....}
-----------
Menjadi :
-----------
if(data[y-1]<data[y])
{....}
-----------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
Membuat Descending Angka
*/
#include<iostream>
#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<n;x++)
{
cout<<"Bilangan ke-"<<x+1<<" = ";
cin>>data[x];
}
cout<<"\nSebelum diurutkan :\n";
for(x=0;x<n;x++)
{
if(x<n-1)
{
cout<<data[x];
cout<<", ";
}else{
cout<<"dan "<<data[x]<<".";
}
}
cout<<"\n\nDescending-nya (dari besar ke kecil)\n";
for(x=1;x<n;x++)
{
for(y=n-1;y>=x;y--)
{
if(data[y-1]<data[y])
{
pindah=data[y-1];
data[y-1]=data[y];
data[y]=pindah;
}
}
}
for(i=0;i<n;i++)
{
if(i<n-1)
{
cout<<data[i]<<", ";
}else{
cout<<"dan "<<data[i]<<'.';
}
}
cout<<"\n\n";
}else{
cout<<"Maaf terlalu besar\n\n";
}
system("pause");
}
/*Penjelasan :
Sama seperti Ascending Angka sebelum yang berbeda
disini hanya tinggal diganti operator pada baris berikut :
-----------
if(data[y-1]>data[y])
{....}
-----------
Menjadi :
-----------
if(data[y-1]<data[y])
{....}
-----------
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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<stdio.h>
#include<conio.h>
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).
IDE / Compiler C++ modern tidak hanya dapat menerjemahkan bahasa C++ tapi juga bahasa pendahulunya yaitu bahasa C, berikut ini contoh dari bahasa C :
#include<stdio.h>
#include<conio.h>
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<iostream>
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]<min)
min=a[i];
if(a[i]>mak)
mak=a[i];
}
cout<<"Nilai minimum : "<<min;
cout<<"\nNilai maksimum : "<<mak<<"\n\n";
system("pause");
}
/*Penjelasan :
Yang perlu diperhatikan adalah jumlah bilangan dalam array
terse but, contoh :
------------
int b[5]={100,200,300,400};
------------
dalam array tersebut hanya terdapat 4 bilangan sehingga
dapat dipastikan nilai minimumnya adalah 0.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
/*
Mencari Nilai Minimum dan Maksimum
*/
#include<iostream>
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]<min)
min=a[i];
if(a[i]>mak)
mak=a[i];
}
cout<<"Nilai minimum : "<<min;
cout<<"\nNilai maksimum : "<<mak<<"\n\n";
system("pause");
}
/*Penjelasan :
Yang perlu diperhatikan adalah jumlah bilangan dalam array
terse but, contoh :
------------
int b[5]={100,200,300,400};
------------
dalam array tersebut hanya terdapat 4 bilangan sehingga
dapat dipastikan nilai minimumnya adalah 0.
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com).
*/
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.
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
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
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
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.
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<iostream>
using namespace std;
int main()
{
const int x[5]={10,20,30,40,50};
for(int a;a<5;a++){
cout<<"x["<<a<<"] = "<<x[a];
cout<<endl;
}
//x[1]=10;
//tidak diperbolehkan oleh kompiler!
system("pause");
}
/*
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com (http://www.videogamesindonesia.com)).
*/
Array juga dapat bersifat konstan. Berikut contoh programnya :
#include<iostream>
using namespace std;
int main()
{
const int x[5]={10,20,30,40,50};
for(int a;a<5;a++){
cout<<"x["<<a<<"] = "<<x[a];
cout<<endl;
}
//x[1]=10;
//tidak diperbolehkan oleh kompiler!
system("pause");
}
/*
Code by Krofz the member of Video Games Indonesia (www.videogamesindonesia.com (http://www.videogamesindonesia.com)).
*/
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<iostream>
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 = "<<x;
cout<<"\nNilai y = "<<y<<"\n\n";
system("pause");
}
Karena float hanya dapat menampung 6 digit presisi, maka hasil yang diperoleh / output yang diberikan akan menampilkan 6 nilai dibelakang koma. Sekarang coba ganti baris berikut :
...
cout.precision(8);
...
Menjadi :
...
cout.precision(12);
...
atau nilai keluaran presisi yang lebih tinggi dan lihat hasil output float.
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<iostream>
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 = "<<x;
cout<<"\nNilai y = "<<y<<"\n\n";
system("pause");
}
Karena float hanya dapat menampung 6 digit presisi, maka hasil yang diperoleh / output yang diberikan akan menampilkan 6 nilai dibelakang koma. Sekarang coba ganti baris berikut :
...
cout.precision(8);
...
Menjadi :
...
cout.precision(12);
...
atau nilai keluaran presisi yang lebih tinggi dan lihat hasil output float.
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.
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;i<adq1->RowsAffected;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....
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;i<adq1->RowsAffected;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<iostream>
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["<<c<<"] = "<<A[c]<<endl;
}
cout<<"\n\n";
//keluaran untuk B
for(c=0;c<6;c++){
cout<<"B["<<c<<"] = "<<B[c]<<endl;
}
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];
...
Dengan menggunakan typedef, array akan menjadi tipe data bentukan seperti halnya struktur dan enumerasi.
#include<iostream>
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["<<c<<"] = "<<A[c]<<endl;
}
cout<<"\n\n";
//keluaran untuk B
for(c=0;c<6;c++){
cout<<"B["<<c<<"] = "<<B[c]<<endl;
}
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 <cmath> dan nama fungsinya adalah sqrt.
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int x;
double y;
cout<<"Masukkan Nilai x = ";
cin>>x;
y=sqrt(x);
cout<<"\n\nAkar dari "<<x<<" = "<<y;
y=x*x;
cout<<"\nPangkat 2 dari "<<x<<" = "<<y<<"\n\n";
system("pause");
}
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 <cmath> dan nama fungsinya adalah sqrt.
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int x;
double y;
cout<<"Masukkan Nilai x = ";
cin>>x;
y=sqrt(x);
cout<<"\n\nAkar dari "<<x<<" = "<<y;
y=x*x;
cout<<"\nPangkat 2 dari "<<x<<" = "<<y<<"\n\n";
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<iostream>
#include<cmath>
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 "<<x<<" = "<<y1;
y2=sqrt(x);
//hasil dalam bilangan bulat
cout<<"\n\nAkar dari "<<x<<" = "<<y2;
//pangkat 2 menggunakan perkalian biasa
//y bertipe double
z1=y1*y1;
cout<<"\nPangkat 2 dari "<<y1<<" = "<<z1<<"\n\n";
//y bertipe integer
z2=y2*y2;
cout<<"\nPangkat 2 dari "<<y2<<" = "<<z2<<"\n\n";
//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 "<<y1<<" = "<<z1<<"\n\n";
system("pause");
}
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<iostream>
#include<cmath>
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 "<<x<<" = "<<y1;
y2=sqrt(x);
//hasil dalam bilangan bulat
cout<<"\n\nAkar dari "<<x<<" = "<<y2;
//pangkat 2 menggunakan perkalian biasa
//y bertipe double
z1=y1*y1;
cout<<"\nPangkat 2 dari "<<y1<<" = "<<z1<<"\n\n";
//y bertipe integer
z2=y2*y2;
cout<<"\nPangkat 2 dari "<<y2<<" = "<<z2<<"\n\n";
//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 "<<y1<<" = "<<z1<<"\n\n";
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: ...
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<iostream>
#include<string>
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 : "<<a;
//proses terakhir
cout<<"\n\n";
system("pause");
return 0;
}
Latihan 36 : Menghitung Jumlah Karakter
Untuk menghitung jumlah karakter pada suatu string / kalimat kita dapat menggunakan fungsi strlen(). Berikut contohnya :
#include<iostream>
#include<string>
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 : "<<a;
//proses terakhir
cout<<"\n\n";
system("pause");
return 0;
}
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..
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<iostream>
#include<string>
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 = "<<a;
//Mengecilkan string
strlwr(a);
cout<<"\nKalau hurufnya kecil semua = "<<a;
//proses terakhir
cout<<"\n\n";
system("pause");
return 0;
}
Untuk membesarkan string kita gunakan strupr(variabel), dan untuk mengecilkannya kita gunakan strlwr(variabel).
#include<iostream>
#include<string>
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 = "<<a;
//Mengecilkan string
strlwr(a);
cout<<"\nKalau hurufnya kecil semua = "<<a;
//proses terakhir
cout<<"\n\n";
system("pause");
return 0;
}
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<iostream>
#include<string>
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 = "<<a;
//Mengecilkan string
strlwr(a);
cout<<"\nKalau hurufnya kecil semua = "<<a;
//proses terakhir
cout<<"\n\n";
system("pause");
}
tapi kalo suka pake int daripada void sih sebenarnya gk terlalu masalah...mungkin ada error tapi gk banyak kejadian pemicunya.
Latihan 37 : Membesarkan dan Mengecilkan String
Untuk membesarkan string kita gunakan strupr(variabel), dan untuk mengecilkannya kita gunakan strlwr(variabel).
#include<iostream>
#include<string>
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 = "<<a;
//Mengecilkan string
strlwr(a);
cout<<"\nKalau hurufnya kecil semua = "<<a;
//proses terakhir
cout<<"\n\n";
system("pause");
}
tapi kalo suka pake int daripada void sih sebenarnya gk terlalu masalah...mungkin ada error tapi gk banyak kejadian pemicunya.
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 <iostream>
#include <conio.h>
#include <string>
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<<kalimat;
//penggunaan getch()
karakter = getch();
cout<<kalimat2<<karakter;
if(karakter == 'b' || karakter == 'B'){
cout<<"\nJawaban yang Anda masukkan BENAR";
}else{
cout<<"\nMaaf, coba lagi";
}
//penggunaan getcher()
cout<<"\n\n"<<kalimat;
karakter = getche();
cout<<kalimat2<<karakter;
if(karakter == 'b' || karakter == 'B'){
cout<<"\nJawaban yang Anda masukkan BENAR";
}else{
cout<<"\nMaaf, coba lagi";
}
cout<<"\n\n";
system("pause");
return 0;
}
Jika menggunakan percabangan swicth() bentuknya seperti berikut:
....
karakter = getche()
switch(karakter){
case 'a' :;
case 'A' :cout<<"Huruf a/A tertekan";break;
case 'B' :;
case 'b' :cout<<"Huruf b/B tertekan";break;
default : cout<<"Selain huruf a/A dan b/B;break;
}
.....
jika hanya menuliskan case 'a'.... maka saat user memasukkan huruf A maka default akan terseleksi.
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 <iostream>
#include <conio.h>
#include <string>
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<<kalimat;
//penggunaan getch()
karakter = getch();
cout<<kalimat2<<karakter;
if(karakter == 'b' || karakter == 'B'){
cout<<"\nJawaban yang Anda masukkan BENAR";
}else{
cout<<"\nMaaf, coba lagi";
}
//penggunaan getcher()
cout<<"\n\n"<<kalimat;
karakter = getche();
cout<<kalimat2<<karakter;
if(karakter == 'b' || karakter == 'B'){
cout<<"\nJawaban yang Anda masukkan BENAR";
}else{
cout<<"\nMaaf, coba lagi";
}
cout<<"\n\n";
system("pause");
return 0;
}
Jika menggunakan percabangan swicth() bentuknya seperti berikut:
....
karakter = getche()
switch(karakter){
case 'a' :;
case 'A' :cout<<"Huruf a/A tertekan";break;
case 'B' :;
case 'b' :cout<<"Huruf b/B tertekan";break;
default : cout<<"Selain huruf a/A dan b/B;break;
}
.....
jika hanya menuliskan case 'a'.... maka saat user memasukkan huruf A maka default akan terseleksi.
krofz
13-07-2008, 03:40 PM
Latihan 39 : Membersihkan Layar
Untuk membersihkan layar dapat menggunakan perintah 'system("pause")' dengan memanggil file header <iomanip>.
#include<stdio.h>
#include<iomanip>
int main(int argc, char *argv[]){
int x, y;
for(x=0;x<20;x++){
system("cls");
for(y=0;y<x;y++){
//membuat agar teks semakin kekanan
printf(" ");
}
printf("Teks berjalan");
}
printf("\n\n");
system("pause");
return 0;
}
Untuk membersihkan layar dapat menggunakan perintah 'system("pause")' dengan memanggil file header <iomanip>.
#include<stdio.h>
#include<iomanip>
int main(int argc, char *argv[]){
int x, y;
for(x=0;x<20;x++){
system("cls");
for(y=0;y<x;y++){
//membuat agar teks semakin kekanan
printf(" ");
}
printf("Teks berjalan");
}
printf("\n\n");
system("pause");
return 0;
}
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
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 <fstream>. Berikut kodenya:
#include <iostream>
#include <fstream>
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.
Latihan 40 : Membuat Sebuah File Text
Untuk membuatnya dapat menggunakan 'ofstream' dengan memanggil file header <fstream>. Berikut kodenya:
#include <iostream>
#include <fstream>
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
@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
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<iostream>
#include<conio.h>
#include<fstream>
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;
}
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<iostream>
#include<conio.h>
#include<fstream>
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 <SDL.h>
#include <SDL_image.h>
#include <string>
//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)
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 <SDL.h>
#include <SDL_image.h>
#include <string>
//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..
@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 <iostream>
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 : "<<y<<endl;
}
}
cout<<"\n\n";
system("pause");
return 0;
}
hasil yang diperoleh akan seperti berikut:
http://img511.imageshack.us/img511/497/infopostingku07ec9.th.png (http://img511.imageshack.us/my.php?image=infopostingku07ec9.png)
Jika kita menutup program dan menjalankannya lalu memasukkan lagi bilangan yang sama (dalam hal ini 10, 10, dst..), maka akan didapatkan hasil yang sama pula. Seperti berikut:
http://img511.imageshack.us/img511/6271/infopostingku06xf6.th.png (http://img511.imageshack.us/my.php?image=infopostingku06xf6.png)
Jadi kita perlu sedikit modifikasi kode, dan modifikasi seperti kode berikut:
/*
Bilangan Random dengan srand()
*/
#include <iostream>
/*
jika time tidak dikenali pada
srand((unsigned)time(NULL))
*/
#include <time.h>
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 : "<<y<<endl;
}
}
//proses terakhir
printf("\n\n");
system("pause");
return 0;
}
Jangan tanya kenapa karena gw juga ngk tau fungsinya srand((unsigned)time(NULL)); http://www.videogamesindonesia.com/forum/images/icons/icon10.gif. Tapi yang pasti kita mendapat program yang menghasilkan nilai yang berbeda dari sebelumnya.
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 <iostream>
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 : "<<y<<endl;
}
}
cout<<"\n\n";
system("pause");
return 0;
}
hasil yang diperoleh akan seperti berikut:
http://img511.imageshack.us/img511/497/infopostingku07ec9.th.png (http://img511.imageshack.us/my.php?image=infopostingku07ec9.png)
Jika kita menutup program dan menjalankannya lalu memasukkan lagi bilangan yang sama (dalam hal ini 10, 10, dst..), maka akan didapatkan hasil yang sama pula. Seperti berikut:
http://img511.imageshack.us/img511/6271/infopostingku06xf6.th.png (http://img511.imageshack.us/my.php?image=infopostingku06xf6.png)
Jadi kita perlu sedikit modifikasi kode, dan modifikasi seperti kode berikut:
/*
Bilangan Random dengan srand()
*/
#include <iostream>
/*
jika time tidak dikenali pada
srand((unsigned)time(NULL))
*/
#include <time.h>
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 : "<<y<<endl;
}
}
//proses terakhir
printf("\n\n");
system("pause");
return 0;
}
Jangan tanya kenapa karena gw juga ngk tau fungsinya srand((unsigned)time(NULL)); http://www.videogamesindonesia.com/forum/images/icons/icon10.gif. Tapi yang pasti kita mendapat program yang menghasilkan nilai yang berbeda dari sebelumnya.
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:
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?)
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.
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?
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 :)
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:
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...
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 <iostream.h>
#include <conio.h>
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
mohon pencerahannya tentang fungsi 'if'
saya make borland c++ waktu bikinnya, bukan dev C++, jadi masi bingung..
#include <iostream.h>
#include <conio.h>
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 <iostream.h>
#include <conio.h>
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?
mohon pencerahannya tentang fungsi 'if'
saya make borland c++ waktu bikinnya, bukan dev C++, jadi masi bingung..
#include <iostream.h>
#include <conio.h>
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 <iostream.h>
#include <conio.h>
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
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 <iostream.h>
#include <conio.h>
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 <iostream.h>
#include <conio.h>
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()
tq bwt kk veedragon & strikers atas jawabannya ^^ ehehe
:tepuk2:
#include <iostream.h>
#include <conio.h>
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 <string> dulu kayaknya...
fendyg
12-09-2008, 12:39 PM
harus #include <string> dulu kayaknya...
yay ^^ thx kk veedragon, akhirnya bisa :love:
#include <iostream.h>
#include <conio.h>
#include <string>
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";
}
yay ^^ thx kk veedragon, akhirnya bisa :love:
#include <iostream.h>
#include <conio.h>
#include <string>
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 <string>
tadi pagi buru2 sblm kerja soalnya...
hehhehe...
ni jg lg sibuk..
baru baca lg skrg
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 <iostream>
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<<kalimat();
cin>>a;
/*
jika user bandel masukkin yang diminta >;)
apalagi sampe mau masukkin bilangan negatif
*/
if ((a>10)||(a<=0))
{
cout<<kalimatError();
}
else
{
cout<<"\n"<<a<<"! = "<<a;
//biar outputnya rame hehehe..
for (int c=a-1;c>0;c--)
{
cout<<" x "<<c;
}
cout<<" = "<<faktorial(a);
}
//proses akhir (Happy Ending)
cout<<"\n\n";
system("pause");
return 0;
}
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 <iostream>
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<<kalimat();
cin>>a;
/*
jika user bandel masukkin yang diminta >;)
apalagi sampe mau masukkin bilangan negatif
*/
if ((a>10)||(a<=0))
{
cout<<kalimatError();
}
else
{
cout<<"\n"<<a<<"! = "<<a;
//biar outputnya rame hehehe..
for (int c=a-1;c>0;c--)
{
cout<<" x "<<c;
}
cout<<" = "<<faktorial(a);
}
//proses akhir (Happy Ending)
cout<<"\n\n";
system("pause");
return 0;
}
krofz
05-10-2008, 05:13 PM
Latihan 44 : Memanggil Source Code (.cpp) Yang Lain
Kalau biasanya di baris #include selalu <iostream> atau <conio.h>, 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 <iostream>
//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 = "<<volumeKotak(10,10,10)<<"\n\n";
cout<<"Volume kubus = "<<volumeKotak(10)<<"\n\n";
cout<<"Luas Segitiga = "<<luasSegitiga(10,10)<<"\n\n";
cout<<"Luas Segitiga = "<<luasSegitiga(10)<<"\n\n";
//proses akhir (Happy Ending)
cout<<"\n\n";
system("pause");
return 0;
}
Jika kita memanggil fungsi, contoh luasSegitiga dengan "luasSegitiga();" maka kompiler menampilkan pesan kesalahan, seperti berikut:
http://img386.imageshack.us/img386/2233/salahpanggilfungsiqn8.png (http://imageshack.us)
Kalau biasanya di baris #include selalu <iostream> atau <conio.h>, 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 <iostream>
//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 = "<<volumeKotak(10,10,10)<<"\n\n";
cout<<"Volume kubus = "<<volumeKotak(10)<<"\n\n";
cout<<"Luas Segitiga = "<<luasSegitiga(10,10)<<"\n\n";
cout<<"Luas Segitiga = "<<luasSegitiga(10)<<"\n\n";
//proses akhir (Happy Ending)
cout<<"\n\n";
system("pause");
return 0;
}
Jika kita memanggil fungsi, contoh luasSegitiga dengan "luasSegitiga();" maka kompiler menampilkan pesan kesalahan, seperti berikut:
http://img386.imageshack.us/img386/2233/salahpanggilfungsiqn8.png (http://imageshack.us)
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:
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?
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 @_@
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
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 <iostream>
/*
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<JA;a++)
{
cout<<"[ ";
for (int b=0;b<JA;b++)
{
cout<<tampung[a][b];
if (b<(JA-1))
{
cout<<", ";
}
}
cout<<" ]\n";
}
}
int main(int argc, char *argv[])
{
int a,b,c;
/*
jika pada array biasa, seperti berikut:
int A[5] = {5,5,5,5,5};
Sedangkan inisialisasi pada array multidimensi
seperti berikut:
*/
int A[JA][JA] = {{1,0,3},{2,1,4},{0,3,5}};
/*
Jika ada array dengan bentuk berikut:
int B[3][5];
bukan berarti jumlah data yang ditampung
sebanyak 8 melainkan sebanyak 15. Jumlah tersebut
didapat dari setiap array pertama ([3]) yang memiliki
5 buah array ([5]).
Seperti buku yang selalu saya baca :D
[3], berarti terdapat 3 buah Bab,
[5], berarti setiap babnya terdapat 5 subbab lagi.
*/
int B[JA][JA] = {{3,1,2},
{5,0,4},
{1,2,1}
};
/*
Dibuat defaultnya 0 (nol)
agar saat proses berikut:
C[a][b]+=A[a][c]*B[c][b];
Tidak terjadi masalah.
*/
int C[JA][JA] = {{0,0,0},
{0,0,0},
{0,0,0}
};
for (a=0;a<JA;a++)
{
for (b=0;b<JA;b++)
{
for (c=0;c<JA;c++)
{
/*
melakukan perkalian A dan B
lalu ditampung oleh C
*/
C[a][b]+=A[a][c]*B[c][b];
}
}
}
//menampilkan nilai-nilai pada array
cout<<"A = \n";
tampilin_array(A);
cout<<"\nB = \n";
tampilin_array(B);
cout<<"\nHasil perkalian A dan B\n";
tampilin_array(C);
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
Proses perkaliannya didalam pengulangan:
http://img55.imageshack.us/img55/1232/perkalianmatrik02ja2.jpg (http://imageshack.us)
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 <iostream>
/*
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<JA;a++)
{
cout<<"[ ";
for (int b=0;b<JA;b++)
{
cout<<tampung[a][b];
if (b<(JA-1))
{
cout<<", ";
}
}
cout<<" ]\n";
}
}
int main(int argc, char *argv[])
{
int a,b,c;
/*
jika pada array biasa, seperti berikut:
int A[5] = {5,5,5,5,5};
Sedangkan inisialisasi pada array multidimensi
seperti berikut:
*/
int A[JA][JA] = {{1,0,3},{2,1,4},{0,3,5}};
/*
Jika ada array dengan bentuk berikut:
int B[3][5];
bukan berarti jumlah data yang ditampung
sebanyak 8 melainkan sebanyak 15. Jumlah tersebut
didapat dari setiap array pertama ([3]) yang memiliki
5 buah array ([5]).
Seperti buku yang selalu saya baca :D
[3], berarti terdapat 3 buah Bab,
[5], berarti setiap babnya terdapat 5 subbab lagi.
*/
int B[JA][JA] = {{3,1,2},
{5,0,4},
{1,2,1}
};
/*
Dibuat defaultnya 0 (nol)
agar saat proses berikut:
C[a][b]+=A[a][c]*B[c][b];
Tidak terjadi masalah.
*/
int C[JA][JA] = {{0,0,0},
{0,0,0},
{0,0,0}
};
for (a=0;a<JA;a++)
{
for (b=0;b<JA;b++)
{
for (c=0;c<JA;c++)
{
/*
melakukan perkalian A dan B
lalu ditampung oleh C
*/
C[a][b]+=A[a][c]*B[c][b];
}
}
}
//menampilkan nilai-nilai pada array
cout<<"A = \n";
tampilin_array(A);
cout<<"\nB = \n";
tampilin_array(B);
cout<<"\nHasil perkalian A dan B\n";
tampilin_array(C);
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
Proses perkaliannya didalam pengulangan:
http://img55.imageshack.us/img55/1232/perkalianmatrik02ja2.jpg (http://imageshack.us)
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 <iostream>
#include <iomanip>
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<<setw(5)<<setfill(' ')<<tampung[a][b];
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["<<a<<"]["<<b<<"] = ";
cin>>A[a][b];
}
}
cout<<endl;
}
//fungsi utama
int main(int argc, char *argv[])
{
//meminta user memasukkan nilai untuk array
masukin_nilai();
cout.precision(3); //buat ngatur presisi
cout<<"Nilai sebelum diInvers\nA = \n";
tampilin_array(A);
diInvers();
cout<<"\nNilai sesudah diInvers\nA(-1) = \n";
tampilin_array(A);
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
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 <iostream>
#include <iomanip>
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<<setw(5)<<setfill(' ')<<tampung[a][b];
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["<<a<<"]["<<b<<"] = ";
cin>>A[a][b];
}
}
cout<<endl;
}
//fungsi utama
int main(int argc, char *argv[])
{
//meminta user memasukkan nilai untuk array
masukin_nilai();
cout.precision(3); //buat ngatur presisi
cout<<"Nilai sebelum diInvers\nA = \n";
tampilin_array(A);
diInvers();
cout<<"\nNilai sesudah diInvers\nA(-1) = \n";
tampilin_array(A);
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
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
" 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"
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 <SDL.h>
#include <SDL_image.h>
#include <string>
//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
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 <SDL.h>
#include <SDL_image.h>
#include <string>
//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 <iostream>
#include <fstream>
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<<Kalimat<<endl;
//baris kedua
getline(Panggil,Kalimat);
cout<<Kalimat;
//menutup file
Panggil.close();
}
else
{
/*
Pesan kalau file yang dipanggil ngk ada.
Bagian ini bisa dibuat sesuai keinginan, misalnya
menanyakan user apakah file-nya ingin dibuat atau tidak
(lihat latihan membuat File).
*/
cout<<"Filenya ngk ada Bro!";
}
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
Pastikan file yang dituju terdapat satu direktori dengan program dan memiliki 2 baris atau lebih, jika hanya terdapat satu baris dapat menggunakan fungsi "fail()" untuk memeriksa setiap baris atau pada baris tertentu.
Sehingga dapat seperti berikut:
....
//baris kedua
getline(Panggil,Kalimat);
if(Panggil.fail())
{
kalimat = "Error";
}
cout<<Kalimat;
....
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 <iostream>
#include <fstream>
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<<Kalimat<<endl;
//baris kedua
getline(Panggil,Kalimat);
cout<<Kalimat;
//menutup file
Panggil.close();
}
else
{
/*
Pesan kalau file yang dipanggil ngk ada.
Bagian ini bisa dibuat sesuai keinginan, misalnya
menanyakan user apakah file-nya ingin dibuat atau tidak
(lihat latihan membuat File).
*/
cout<<"Filenya ngk ada Bro!";
}
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
Pastikan file yang dituju terdapat satu direktori dengan program dan memiliki 2 baris atau lebih, jika hanya terdapat satu baris dapat menggunakan fungsi "fail()" untuk memeriksa setiap baris atau pada baris tertentu.
Sehingga dapat seperti berikut:
....
//baris kedua
getline(Panggil,Kalimat);
if(Panggil.fail())
{
kalimat = "Error";
}
cout<<Kalimat;
....
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 <iostream>
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<<"("<<x<<", "<<y<<")";
}
int main()
{
titik B;
A.ganti(5,5);
A.tampil();
B.tampil();
//Happy Ending
cout<<"\n\n";
system("pause");
return 0;
}
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 <iostream>
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<<"("<<x<<", "<<y<<")";
}
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 <stdio.h>
#include <conio.h>
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 <stdio.h>
#include <conio.h>
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 <stdio.h>
#include <conio.h>
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;
}
Seperti halnya variabel biasa variabel dengan tipe data class juga dapat menggunakan pointer, tapi sebelumnya kita lihat dulu kode berikut:
#include <stdio.h>
#include <conio.h>
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 <stdio.h>
#include <conio.h>
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 <stdio.h>
#include <conio.h>
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 <stdio.h>
#include <conio.h>
#include <string>
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/)
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 <stdio.h>
#include <conio.h>
#include <string>
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<stdio.h>
#include<conio.h>
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 .
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<stdio.h>
#include<conio.h>
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 <iostream> 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<stdio.h>
#include<conio.h>
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;c<n;c++){
printf("Masukkan nilai = ");
scanf("%f",&data[c]);
total+=data[c];
if( data[c]>maks) maks = data[c];
//khusus nilai mininum kita harus mengambil data
//pertama kali
if( c==0 || data[c]<min) min = 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;c<n;c++){
total+=data[c];
if( data[c]>maks) maks = data[c];
if( data[c]<min) min = 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....
Kalau untuk n-nya ngk usah dijadiin float. Terus system kayanya ngk bisa dipake de kalau ngk manggil file header <iostream> 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<stdio.h>
#include<conio.h>
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;c<n;c++){
printf("Masukkan nilai = ");
scanf("%f",&data[c]);
total+=data[c];
if( data[c]>maks) maks = data[c];
//khusus nilai mininum kita harus mengambil data
//pertama kali
if( c==0 || data[c]<min) min = 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;c<n;c++){
total+=data[c];
if( data[c]>maks) maks = data[c];
if( data[c]<min) min = 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 <SDL.h>
#include <SDL_image.h>
#include <string>
//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;c<banyakKotak;c++)
{
//mengambil posisi mouse dengan 'eventKu.motion.x' untuk
//mengambil x dan 'eventKu.motion.y' untuk y
kotakKu[c].ditekan(eventKu.motion.x,eventKu.motion.y);
}
}
}
}
//mengisi (Fill) kotak (Rectangle) layar atau mengisi layar
//dengan warna Putih (255,255,255). Kalau pengen tau kombinasi
//warna lainnya buka aja program editing gambar yang ada 'pick color'-nya
//atau kira-kira aja :D semakin kecil nilainya semakin gelap
SDL_FillRect( layar, &layar->clip_rect, SDL_MapRGB(layar->format,255,255,255));
//langsung mengisi nilai kotak dengan:
// - posisi X = 0,
// - posisi Y = tinggi_layar - 40,
// - lebar (width) = lebar_layar alias selayar,
// - tinggi (height) = 40.
SDL_Rect kotakSkor = {0,tinggi_layar-40,lebar_layar,40};
//mengisi dengan warna hitam
SDL_FillRect(layar, &kotakSkor, SDL_MapRGB(layar->format,0,0,0));
kotakSkor.w = (score*lebar_layar-4)/1000;
kotakSkor.x+=2;
kotakSkor.y+=2;
//mengisi dengan warna abu-abu
SDL_FillRect(layar, &kotakSkor, SDL_MapRGB(layar->format,150,150,150));
//menampilkan kotak sebanyak 'banyakKotak'
for( int c=0;c<banyakKotak;c++)
{
kotakKu[c].tampil();
}
//meng-update layar
if (SDL_Flip(layar)==-1)
{
return 1;
}
/*
melakukan penundaan selama 10 milidetik
*/
SDL_Delay(10);
}
//Happy Ending
SDL_Quit();
return 0;
}
/*
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
*/
Setelah tombol ditekan:
...
case SDL_MOUSEBUTTONDOWN:
if( eventKu.button.button == SDL_BUTTON_LEFT)
{
...
Bagian terpenting dalam pemeriksaan kotak sudah ditekan atau belum, ada dikode berikut:
...
if( !tekan &&
_X > kotak.x && _X < (kotak.x+kotak.w) &&
_Y > kotak.y && _Y < (kotak.y+kotak.h))
...
Nilai _X dan _Y diambil dari koordinat kursor mouse berada. Jika digambarkan akan seperti berikut:
http://img188.imageshack.us/img188/4962/kotak1.png (http://img188.imageshack.us/i/kotak1.png/)
Kalau hanya memeriksa "( _X > kotak.x )", maka pointer pada gambar diatas yang koordinat X-nya 120 akan terlihat seperti menekan tombol padahal terlihat jauh berada dari kotak. Maka untuk mengatasinya ditambah "( _X < (kotak.x+kotak.w) )", sehingga membuat koordinat mouse harus diantara kotak pada sumbu X. Begitu pula dengan Y harus dibuat seperti pemeriksaan sumbu X.
Kode ini memang lebih simpel karena prosesnya tidak perlu memanggil file gambar, sehingga tidak perlu fungsi memanggil gambar seperti pada Latihan Spesial sebelumnya. Dan juga hanya perlu 2 file .dll dan tanpa gambar, yaitu SDL.dll dan zlib1.dll. Hasil kompilasi program ini cuma 10 KB! tapi file .dll-nya lumayan sih gede :p .
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 <SDL.h>
#include <SDL_image.h>
#include <string>
//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;c<banyakKotak;c++)
{
//mengambil posisi mouse dengan 'eventKu.motion.x' untuk
//mengambil x dan 'eventKu.motion.y' untuk y
kotakKu[c].ditekan(eventKu.motion.x,eventKu.motion.y);
}
}
}
}
//mengisi (Fill) kotak (Rectangle) layar atau mengisi layar
//dengan warna Putih (255,255,255). Kalau pengen tau kombinasi
//warna lainnya buka aja program editing gambar yang ada 'pick color'-nya
//atau kira-kira aja :D semakin kecil nilainya semakin gelap
SDL_FillRect( layar, &layar->clip_rect, SDL_MapRGB(layar->format,255,255,255));
//langsung mengisi nilai kotak dengan:
// - posisi X = 0,
// - posisi Y = tinggi_layar - 40,
// - lebar (width) = lebar_layar alias selayar,
// - tinggi (height) = 40.
SDL_Rect kotakSkor = {0,tinggi_layar-40,lebar_layar,40};
//mengisi dengan warna hitam
SDL_FillRect(layar, &kotakSkor, SDL_MapRGB(layar->format,0,0,0));
kotakSkor.w = (score*lebar_layar-4)/1000;
kotakSkor.x+=2;
kotakSkor.y+=2;
//mengisi dengan warna abu-abu
SDL_FillRect(layar, &kotakSkor, SDL_MapRGB(layar->format,150,150,150));
//menampilkan kotak sebanyak 'banyakKotak'
for( int c=0;c<banyakKotak;c++)
{
kotakKu[c].tampil();
}
//meng-update layar
if (SDL_Flip(layar)==-1)
{
return 1;
}
/*
melakukan penundaan selama 10 milidetik
*/
SDL_Delay(10);
}
//Happy Ending
SDL_Quit();
return 0;
}
/*
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
*/
Setelah tombol ditekan:
...
case SDL_MOUSEBUTTONDOWN:
if( eventKu.button.button == SDL_BUTTON_LEFT)
{
...
Bagian terpenting dalam pemeriksaan kotak sudah ditekan atau belum, ada dikode berikut:
...
if( !tekan &&
_X > kotak.x && _X < (kotak.x+kotak.w) &&
_Y > kotak.y && _Y < (kotak.y+kotak.h))
...
Nilai _X dan _Y diambil dari koordinat kursor mouse berada. Jika digambarkan akan seperti berikut:
http://img188.imageshack.us/img188/4962/kotak1.png (http://img188.imageshack.us/i/kotak1.png/)
Kalau hanya memeriksa "( _X > kotak.x )", maka pointer pada gambar diatas yang koordinat X-nya 120 akan terlihat seperti menekan tombol padahal terlihat jauh berada dari kotak. Maka untuk mengatasinya ditambah "( _X < (kotak.x+kotak.w) )", sehingga membuat koordinat mouse harus diantara kotak pada sumbu X. Begitu pula dengan Y harus dibuat seperti pemeriksaan sumbu X.
Kode ini memang lebih simpel karena prosesnya tidak perlu memanggil file gambar, sehingga tidak perlu fungsi memanggil gambar seperti pada Latihan Spesial sebelumnya. Dan juga hanya perlu 2 file .dll dan tanpa gambar, yaitu SDL.dll dan zlib1.dll. Hasil kompilasi program ini cuma 10 KB! tapi file .dll-nya lumayan sih gede :p .
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:
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
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
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 <iostream.h>
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<<endl<<" Loading . . . ."<<x<<" % ";
system("cls");
}
}
void namaStaff()
{
char namaS[20];
{
cout<<"Masukan nama staff : ";
cin>>namaS;
system ("cls");
cout<<"STAFF - "<<namaS<<endl<<endl;
}
}
void pilProdi()
{
cout<<"============= PILIH PRODI ==============\n"<<endl;
cout<<" 1. Program Studi Matematika "<<endl;
cout<<" 2. Program Studi B.Indonesia "<<endl;
cout<<" 3. Program Studi B.Inggris "<<endl;
cout<<" 4. Keluar program"<<endl;
cout<<endl;
cout<<"masukan pilihan : ";
}
void cetakMenu()
{
cout<<"========================================\n"<<endl;
cout<<" 1. isi data "<<endl;
cout<<" 2. hitung biaya administrasi"<<endl;
cout<<" 3. cetak data"<<endl;
cout<<" 4. keluar"<<endl;
cout<<endl;
cout<<"masukan pilihan : ";
}
int index(char noSiswa[3])
{
int hasil = -1;
for (int a=0;a<counter;a++)
{
if (strcmp(swa[a].noSiswa,noSiswa) == 0)
hasil = a;
}
return hasil;
}
void Prodi()
{
char golongan;
if (golongan==1)
{
cout<<"Matematika";
}
else
if (golongan==2)
{
cout<<"B.Indonesia";
}
else
if (golongan==3)
{
cout<<"B.Inggris";
}
}
void bayar(char noSiswa[3])
{
int in;
float hasil = 0;
in = index(noSiswa);
if (in<0)
{
cout<<"No Siswa salah "<<in;
}
else
{
hasil = (swa[in].bulan * 75000);
cout<<"========================================\n";
cout<<"nama : "<<swa[in].nama<<endl;
cout<<"biaya total : Rp ";
printf("%0.3f",hasil);
}
}
void isiDataSwa(int n)
{
cout<<endl<<"Nama : ";
cin.getline(swa[n].nama,20);
cout<<endl<<"TTL : ";
cin.getline(swa[n].ttl,30);
cout<<endl<<"Alamat : ";
cin.getline(swa[n].alamat,40);
cout<<endl<<"Asal Sekolah : ";
cin.getline(swa[n].asalSekolah,30);
cout<<endl<<"No siswa : ";
cin>>swa[n].noSiswa;
cout<<endl<<"Lama Kursus : ";
cin>>swa[n].bulan;
cout<<endl<<"Gol : ";
cin>>swa[n].gol;
getchar();
}
void cetakDataSwa()
{
if (counter==0)
{
cout<<endl<<"data masih kosong"<<endl;
}
else
{
for (int t=0;t<counter;t++)
{
cout<<endl<<"NO -----["<<t+1<<"]-----";
cout<<endl<<"nama : "<<swa[t].nama<<endl;
cout<<endl<<"TTL : "<<swa[t].ttl<<endl;
cout<<endl<<"Alamat : "<<swa[t].alamat<<endl;
cout<<endl<<"Asal Sekolah : "<<swa[t].asalSekolah<<endl;
cout<<endl<<"No Siswa : "<<swa[t].noSiswa<<endl;
cout<<endl<<"Lama Kursus : "<<swa[t].bulan<<endl;
cout<<endl<<"gol : "<<swa[t].gol<<endl;
cout<<endl<<"biaya : "<<bayar<<endl;
}
getchar();
getchar();
}
}
void cetakMenu2()
{
int pilihan;
char noSiswaSwa[3];
do
{
cetakMenu();
cin>>pilihan;
getchar();
if (pilihan==1)
{
cout<< "isi data Siswa"<<endl;
isiDataSwa(counter);
counter++;
}
else
if (pilihan==2)
{
cout<<"masukan No siswa : ";
cin>>noSiswaSwa;
bayar(noSiswaSwa);
cout<<endl;
}
else
if (pilihan==3)
{
cout<< "Lihat data "<<endl;
cetakDataSwa();
}
else
if (pilihan==4)
{
pilProdi();
}
else
{
cout<<"pilihan tidak ada"<<endl;
}
}
while (pilihan != 4 );
}
int main()
{
int pilihan;
loading();
namaStaff();
pilProdi();
do
{
cin>>pilihan;
getchar();
switch (pilihan)
{
case 1 :
cout<<"======= Program Studi Matematika ======="<<endl;
cetakMenu2();
break;
case 2 :
cout<<"======= Program Studi B.Indonesia ======="<<endl;
cetakMenu2();
break;
case 3 :
cout<<"======= Program Studi B.Inggris ======="<<endl;
cetakMenu2();
break;
case 4 :
cout<<"Tutup Program"<<endl;
}
}while (pilihan !=4);
return 0;
}
yg pengen saya tanyain :
pas kita pilih prodi di fungsi main, gmn caranya biar bisa nongol di cetakDataSwa(yg garis bawah) dengan ngmbil inputannya dari prodi..
tolong ya om.. :ohyay:
udah mentok saya :ohfiuh:
saya lgi ada PP nih..
#include <iostream.h>
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<<endl<<" Loading . . . ."<<x<<" % ";
system("cls");
}
}
void namaStaff()
{
char namaS[20];
{
cout<<"Masukan nama staff : ";
cin>>namaS;
system ("cls");
cout<<"STAFF - "<<namaS<<endl<<endl;
}
}
void pilProdi()
{
cout<<"============= PILIH PRODI ==============\n"<<endl;
cout<<" 1. Program Studi Matematika "<<endl;
cout<<" 2. Program Studi B.Indonesia "<<endl;
cout<<" 3. Program Studi B.Inggris "<<endl;
cout<<" 4. Keluar program"<<endl;
cout<<endl;
cout<<"masukan pilihan : ";
}
void cetakMenu()
{
cout<<"========================================\n"<<endl;
cout<<" 1. isi data "<<endl;
cout<<" 2. hitung biaya administrasi"<<endl;
cout<<" 3. cetak data"<<endl;
cout<<" 4. keluar"<<endl;
cout<<endl;
cout<<"masukan pilihan : ";
}
int index(char noSiswa[3])
{
int hasil = -1;
for (int a=0;a<counter;a++)
{
if (strcmp(swa[a].noSiswa,noSiswa) == 0)
hasil = a;
}
return hasil;
}
void Prodi()
{
char golongan;
if (golongan==1)
{
cout<<"Matematika";
}
else
if (golongan==2)
{
cout<<"B.Indonesia";
}
else
if (golongan==3)
{
cout<<"B.Inggris";
}
}
void bayar(char noSiswa[3])
{
int in;
float hasil = 0;
in = index(noSiswa);
if (in<0)
{
cout<<"No Siswa salah "<<in;
}
else
{
hasil = (swa[in].bulan * 75000);
cout<<"========================================\n";
cout<<"nama : "<<swa[in].nama<<endl;
cout<<"biaya total : Rp ";
printf("%0.3f",hasil);
}
}
void isiDataSwa(int n)
{
cout<<endl<<"Nama : ";
cin.getline(swa[n].nama,20);
cout<<endl<<"TTL : ";
cin.getline(swa[n].ttl,30);
cout<<endl<<"Alamat : ";
cin.getline(swa[n].alamat,40);
cout<<endl<<"Asal Sekolah : ";
cin.getline(swa[n].asalSekolah,30);
cout<<endl<<"No siswa : ";
cin>>swa[n].noSiswa;
cout<<endl<<"Lama Kursus : ";
cin>>swa[n].bulan;
cout<<endl<<"Gol : ";
cin>>swa[n].gol;
getchar();
}
void cetakDataSwa()
{
if (counter==0)
{
cout<<endl<<"data masih kosong"<<endl;
}
else
{
for (int t=0;t<counter;t++)
{
cout<<endl<<"NO -----["<<t+1<<"]-----";
cout<<endl<<"nama : "<<swa[t].nama<<endl;
cout<<endl<<"TTL : "<<swa[t].ttl<<endl;
cout<<endl<<"Alamat : "<<swa[t].alamat<<endl;
cout<<endl<<"Asal Sekolah : "<<swa[t].asalSekolah<<endl;
cout<<endl<<"No Siswa : "<<swa[t].noSiswa<<endl;
cout<<endl<<"Lama Kursus : "<<swa[t].bulan<<endl;
cout<<endl<<"gol : "<<swa[t].gol<<endl;
cout<<endl<<"biaya : "<<bayar<<endl;
}
getchar();
getchar();
}
}
void cetakMenu2()
{
int pilihan;
char noSiswaSwa[3];
do
{
cetakMenu();
cin>>pilihan;
getchar();
if (pilihan==1)
{
cout<< "isi data Siswa"<<endl;
isiDataSwa(counter);
counter++;
}
else
if (pilihan==2)
{
cout<<"masukan No siswa : ";
cin>>noSiswaSwa;
bayar(noSiswaSwa);
cout<<endl;
}
else
if (pilihan==3)
{
cout<< "Lihat data "<<endl;
cetakDataSwa();
}
else
if (pilihan==4)
{
pilProdi();
}
else
{
cout<<"pilihan tidak ada"<<endl;
}
}
while (pilihan != 4 );
}
int main()
{
int pilihan;
loading();
namaStaff();
pilProdi();
do
{
cin>>pilihan;
getchar();
switch (pilihan)
{
case 1 :
cout<<"======= Program Studi Matematika ======="<<endl;
cetakMenu2();
break;
case 2 :
cout<<"======= Program Studi B.Indonesia ======="<<endl;
cetakMenu2();
break;
case 3 :
cout<<"======= Program Studi B.Inggris ======="<<endl;
cetakMenu2();
break;
case 4 :
cout<<"Tutup Program"<<endl;
}
}while (pilihan !=4);
return 0;
}
yg pengen saya tanyain :
pas kita pilih prodi di fungsi main, gmn caranya biar bisa nongol di cetakDataSwa(yg garis bawah) dengan ngmbil inputannya dari prodi..
tolong ya om.. :ohyay:
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<<endl<<"gol : "<<swa[t].gol<<endl; ) supaya yg keluar bukan angka 1-3 tapi (Matematika, B.Indonesia,B.Inggris)
klo itu tinggal diginiin aja
di cetakDataSwa
(cout<<endl<<"gol : "<<swa[t].gol<<endl;
diganti
cout<<endl<<"gol : ";Prodi(swa[t].gol);cout<<endl;
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<<endl<<"biaya : "<<bayar<<endl;
apa maksudnya mau panggil bayar untuk hitung biaya kayak gini
cout<<endl<<"biaya : ";bayar(swa[t].noSiswa);cout<<endl;
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.
loe pengennya gimana? (tafsiran gw)
loe pengen panggil fungsi prodi di (cout<<endl<<"gol : "<<swa[t].gol<<endl; ) supaya yg keluar bukan angka 1-3 tapi (Matematika, B.Indonesia,B.Inggris)
klo itu tinggal diginiin aja
di cetakDataSwa
(cout<<endl<<"gol : "<<swa[t].gol<<endl;
diganti
cout<<endl<<"gol : ";Prodi(swa[t].gol);cout<<endl;
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<<endl<<"biaya : "<<bayar<<endl;
apa maksudnya mau panggil bayar untuk hitung biaya kayak gini
cout<<endl<<"biaya : ";bayar(swa[t].noSiswa);cout<<endl;
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..
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.
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:
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...
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..
donlot dmn krofz??
bagi donk..
reggie
18-12-2009, 05:52 AM
coba baca:
teach yourself C++ in 21 days. mayan bagus itu
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:
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 ...
^_^
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<stdlib.h>
#include<stdio.h>
#include<conio.h>
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<baris;c++){
printf("[ ");
for(int d=0;d<kolum;d++){
if( barKe == c && kolKe == d) printf("X, ");
else{
switch( selesai)
{
case 0: printf("%d, ",matrikA[c][d]); break;
default: printf("%d, ",matrikB[c][d]);
}
}
}
printf(" ]\n");
}
printf("\nMasukkan nilai untuk X = ");
switch( selesai)
{
case 0: scanf("%d",&matrikA[barKe][kolKe]); break;
default: scanf("%d",&matrikB[barKe][kolKe]);
}
system("cls");
kolKe++;
if( kolKe >= kolum){
kolKe = 0;
barKe++;
if( barKe >= baris){
barKe = 0;
selesai++;
}
}
}
for( int c=0;c<baris;c++){
printf("[ ");
for( int d=0;d<kolum;d++){
printf("%d, ",matrikA[c][d]);
}
printf("]\t+\t[ ");
for( int e=0;e<kolum;e++){
printf("%d, ", matrikB[c][e]);
}
printf("]\t=\t[ ");
for( int f=0;f<kolum;f++){
printf("%d, ", matrikA[c][f]+matrikB[c][f]);
}
printf("]\n");
}
//semuanya berjalan dengan baik
//Happy Ending
printf("\n\nTeken apa aja buat udahan");
getch();
return 0;
}
semoga kodenya bener, nggak bikin ribet... dan ngehang.. Ada yang mau nambahin atau benerin? Soalnya kodenya terlihat tidak efektif dan efisien hahaha..... perasaan doang kali.
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<stdlib.h>
#include<stdio.h>
#include<conio.h>
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<baris;c++){
printf("[ ");
for(int d=0;d<kolum;d++){
if( barKe == c && kolKe == d) printf("X, ");
else{
switch( selesai)
{
case 0: printf("%d, ",matrikA[c][d]); break;
default: printf("%d, ",matrikB[c][d]);
}
}
}
printf(" ]\n");
}
printf("\nMasukkan nilai untuk X = ");
switch( selesai)
{
case 0: scanf("%d",&matrikA[barKe][kolKe]); break;
default: scanf("%d",&matrikB[barKe][kolKe]);
}
system("cls");
kolKe++;
if( kolKe >= kolum){
kolKe = 0;
barKe++;
if( barKe >= baris){
barKe = 0;
selesai++;
}
}
}
for( int c=0;c<baris;c++){
printf("[ ");
for( int d=0;d<kolum;d++){
printf("%d, ",matrikA[c][d]);
}
printf("]\t+\t[ ");
for( int e=0;e<kolum;e++){
printf("%d, ", matrikB[c][e]);
}
printf("]\t=\t[ ");
for( int f=0;f<kolum;f++){
printf("%d, ", matrikA[c][f]+matrikB[c][f]);
}
printf("]\n");
}
//semuanya berjalan dengan baik
//Happy Ending
printf("\n\nTeken apa aja buat udahan");
getch();
return 0;
}
semoga kodenya bener, nggak bikin ribet... dan ngehang.. Ada yang mau nambahin atau benerin? Soalnya kodenya terlihat tidak efektif dan efisien hahaha..... perasaan doang kali.
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:
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 <iostream>
using namespace std;
int main()
{
// Output \t itu tab
cout<<"-----------------"<<endl;
cout<<"x\ty\tz"<<endl;
cout<<"-----------------"<<endl;
// Pengulangan untuk x dilakukan dari 0 sampai 20
for(int x=0;x<=20;x++)
{
// Pengulangan untuk y dilakukan dari 0 sampai 20
for(int y=0;y<=20;y++)
{
/* jika 20 dikurangi x dan y lebih besar
* atau minimal sama dengan 0
* maka tampilkan dilayar
*/
if(20-x-y>=0)
{
cout<<x<<"\t"<<y<<"\t"<<20-x-y<<endl;
}
}
}
cout<<endl<<endl;
system("Pause");
}
Hasil
http://i.imagehost.org/0922/jumlah1.jpg (http://i.imagehost.org/view/0922/jumlah1)
http://f.imagehost.org/0118/jumlah2.jpg (http://f.imagehost.org/view/0118/jumlah2)
2. Liat code di bawah
btw penjelasan gw dibaca pelan2x yah sampe ngerti logika yg gw terapin.
soal penulisan variable yg gw pake emank gw sengaja panjang kayak gitu, biar lebih enak liatnya buat pemula. klo loe buat sendiri jgn ditiru pemakaian variable kayak gitu. Kan gw cuman niat bagi konsep doang.
Banyak yg bisa disingkat, tapi karena gw liat usia loe masih 16 thn jadi gw giniin dolo aja biar gampang ngertinya :)
#include <iostream>
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:"<<endl<<endl;
// pengulangan utama untuk mencari angka yg termasuk bilangan prima
for(int angka_yg_ditest = 1 ; angka_yg_ditest<30 ; angka_yg_ditest++)
{
// mereset counter ini
penghitung_jumlah_pembagian = 0;
/* Pengulangan bagian untuk mengetest apakah angka yg ditest
* bilangan prima atau bukan
*/
for(int angka_tester = 1 ; angka_tester<30 ; angka_tester++)
{
/* modulo ini untuk meliat nilai sisa dari pembagian,
* jika nilai sisa 0 berarti bulat
*/
if(angka_yg_ditest%angka_tester == 0)
{
penghitung_jumlah_pembagian++;
}
}
/* Setelah ditest didalam pengulangan bagian, sekarang harus dicheck apakah
* penghitung_jumlah_pembagian nilainya dua
*/
if(penghitung_jumlah_pembagian == jumlah_pembagian_yg_diharapkan)
{
// Output bila kondisi terpenenuhi
cout<<angka_yg_ditest<<" ";
}
}
cout<<endl<<endl;
system("Pause");
}
Hasil
http://f.imagehost.org/0066/bilprima.jpg (http://f.imagehost.org/view/0066/bilprima)
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 <iostream>
using namespace std;
int main()
{
// Output \t itu tab
cout<<"-----------------"<<endl;
cout<<"x\ty\tz"<<endl;
cout<<"-----------------"<<endl;
// Pengulangan untuk x dilakukan dari 0 sampai 20
for(int x=0;x<=20;x++)
{
// Pengulangan untuk y dilakukan dari 0 sampai 20
for(int y=0;y<=20;y++)
{
/* jika 20 dikurangi x dan y lebih besar
* atau minimal sama dengan 0
* maka tampilkan dilayar
*/
if(20-x-y>=0)
{
cout<<x<<"\t"<<y<<"\t"<<20-x-y<<endl;
}
}
}
cout<<endl<<endl;
system("Pause");
}
Hasil
http://i.imagehost.org/0922/jumlah1.jpg (http://i.imagehost.org/view/0922/jumlah1)
http://f.imagehost.org/0118/jumlah2.jpg (http://f.imagehost.org/view/0118/jumlah2)
2. Liat code di bawah
btw penjelasan gw dibaca pelan2x yah sampe ngerti logika yg gw terapin.
soal penulisan variable yg gw pake emank gw sengaja panjang kayak gitu, biar lebih enak liatnya buat pemula. klo loe buat sendiri jgn ditiru pemakaian variable kayak gitu. Kan gw cuman niat bagi konsep doang.
Banyak yg bisa disingkat, tapi karena gw liat usia loe masih 16 thn jadi gw giniin dolo aja biar gampang ngertinya :)
#include <iostream>
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:"<<endl<<endl;
// pengulangan utama untuk mencari angka yg termasuk bilangan prima
for(int angka_yg_ditest = 1 ; angka_yg_ditest<30 ; angka_yg_ditest++)
{
// mereset counter ini
penghitung_jumlah_pembagian = 0;
/* Pengulangan bagian untuk mengetest apakah angka yg ditest
* bilangan prima atau bukan
*/
for(int angka_tester = 1 ; angka_tester<30 ; angka_tester++)
{
/* modulo ini untuk meliat nilai sisa dari pembagian,
* jika nilai sisa 0 berarti bulat
*/
if(angka_yg_ditest%angka_tester == 0)
{
penghitung_jumlah_pembagian++;
}
}
/* Setelah ditest didalam pengulangan bagian, sekarang harus dicheck apakah
* penghitung_jumlah_pembagian nilainya dua
*/
if(penghitung_jumlah_pembagian == jumlah_pembagian_yg_diharapkan)
{
// Output bila kondisi terpenenuhi
cout<<angka_yg_ditest<<" ";
}
}
cout<<endl<<endl;
system("Pause");
}
Hasil
http://f.imagehost.org/0066/bilprima.jpg (http://f.imagehost.org/view/0066/bilprima)
awell
21-01-2010, 06:55 AM
makasih banget ya bro!!!
:ohlove::ohlove:
: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<MAX; a++){
for(int b=0;b<MAX;b++){
for(int c=0;c<MAX;c++){
if( (a + b + c) == MAX){
printf("%d\t%d\t%d\n",a,b,c);
}
}
}
}
....
sorry nomor 2 ngk bisa dijawab maklum... ilmunya masih cetek (aku).. :p
....
const int MAX = 20;
for(int a=0;a<MAX; a++){
for(int b=0;b<MAX;b++){
for(int c=0;c<MAX;c++){
if( (a + b + c) == MAX){
printf("%d\t%d\t%d\n",a,b,c);
}
}
}
}
....
sorry nomor 2 ngk bisa dijawab maklum... ilmunya masih cetek (aku).. :p
DemonRush
21-01-2010, 09:45 PM
^atas gw:
heuehue merendah loe, males buatin aja :D :D
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:
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 <mscorlib.dll>
using namespace System;
int main()
{
Console::WriteLine("Hello, world!");
return 0;
}
.NET juga bisa dipanggil dari C++ kalau mau :p
#using <mscorlib.dll>
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 <fstream>
#include <string>
#include <iostream>
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<<kalimat<<"\n\nKata yang ingin dicari : ";
cin>>find;
bool cocok = true;
for(std::string::iterator iKalimat = kalimat.begin(),
iFind = find.begin();iKalimat<kalimat.end();++iKalimat)
{
if(*iFind != *iKalimat || !cocok){
if( *iKalimat == ' ') cout<<" ";
else cout<<"-";
iFind = find.begin();
}
else{
std::string::iterator sKata;
sKata = iKalimat;
while(iFind <find.end()){
if( *iFind != *sKata) cocok = false;
++iFind;
++sKata;
}
if( cocok){
iFind = find.begin();
while(iFind<find.end()){
cout<<*iKalimat;
++iFind;
++iKalimat;
}
iFind = find.begin();
}
if( *iKalimat == ' ') cout<<" ";
else cout<<"-";
}
cocok = true;
}
cout<<"\n\n";
system("pause");
return 0;
}
// - krofz
#include <fstream>
#include <string>
#include <iostream>
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<<kalimat<<"\n\nKata yang ingin dicari : ";
cin>>find;
bool cocok = true;
for(std::string::iterator iKalimat = kalimat.begin(),
iFind = find.begin();iKalimat<kalimat.end();++iKalimat)
{
if(*iFind != *iKalimat || !cocok){
if( *iKalimat == ' ') cout<<" ";
else cout<<"-";
iFind = find.begin();
}
else{
std::string::iterator sKata;
sKata = iKalimat;
while(iFind <find.end()){
if( *iFind != *sKata) cocok = false;
++iFind;
++sKata;
}
if( cocok){
iFind = find.begin();
while(iFind<find.end()){
cout<<*iKalimat;
++iFind;
++iKalimat;
}
iFind = find.begin();
}
if( *iKalimat == ' ') cout<<" ";
else cout<<"-";
}
cocok = true;
}
cout<<"\n\n";
system("pause");
return 0;
}
// - krofz
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/AVvXsEgaa9YOxDCOyNomjJMn-RybQEx3rEDXoETzeuB6pdUFwtGIg_BPiEY0jKNJGsBvkHHtdAR3sTzrHQSrgLH9qR5gZLSWvQNVuhZSRBmQuIv7RvkT0gVTTPzh4I9XHbDzVkLAov7kta5zAU1o/s400/50_01.MenghitungCepat.png
Link : http://www.ziddu.com/download/14907902/50_01_MenghitungCepat.7z.html
Size : 564.03 KB
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaa9YOxDCOyNomjJMn-RybQEx3rEDXoETzeuB6pdUFwtGIg_BPiEY0jKNJGsBvkHHtdAR3sTzrHQSrgLH9qR5gZLSWvQNVuhZSRBmQuIv7RvkT0gVTTPzh4I9XHbDzVkLAov7kta5zAU1o/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;
}
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;
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:
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:
Sumber : http://www.videogamesindonesia.com/
Comments