Saya akan berusaha menjawab pertanyaan di email
sebelumnya dan email ini.
genjuro wrote:
apa ada yang bisa beritahu caranya bikin kalkulator
sederhana dengan
menggunakan <iostream> ? mksd gw dengan kalkulator
adalah bisa
"menerima" masukan spt 9*9 ato 3+6 dsb...
Saya anggap ini pertanyaan pertama. Apakah genjuro butuh
kode program
lengkap yang bertindak seperti kalkulator?
trus mengapa klo ditulis
fungsi spt
int triple(const int& n) {
return n * 3;
/*sebenarnya saya masih mau bertanya mengenai return
disini, apa
disini return
berfungsi untuk mengembalikan nilai ke fungsi utama,
dimana hasilnya
(keluarannya) adalah hasil kali dari n * 3 (di mana
n-nya adalah 5)?*/
}
dikatakan bisa "menerima" spt:
triple(5);
misalnya. kenapa bgt?
Pertanyaan di bagian komentar kode, tentang return:
return akan
mengembalikan nilai ke pemanggil fungsi.
Jadi jika ditulis:
int i = triple(10);
maka hasil fungsi triple(10) akan disimpan ke variabel
i. Sekarang saya
yang bertanya ke genjuro, nilai variabel i diatas
berapa?
Pertanyaan berikutnya, yang ingin ditanyakan sebenarnya
apa? Untuk
mengamati efek dari fungsi triple, ya silahkan ditulis
programnya dan
dikompile.
jadi klo mau di buatkan skrip utuhnya adalah +/- spt
ini:
#include <iostream>
using namespace std;
int triple(const int& n) {
return n* n;
}
int main() {
int x = 5;
cout << triple(5); //ngga ngerti kenapa yang
beginian dikatakan
legal...
}
Perintah cout << triple(5) artinya di c++ adalah
mengirimkan nilai dari
fungsi triple(5) ke 'stream' bernama cout dengan
memanggil fungsi
operator<< yang dimiliki oleh cout. Untuk lebih jelasnya
bisa cari di
buku tentang pemrograman C++. Salah satu yang bagus
adalah 'Thinking in
C++', tersedia gratis di internet, silahkan cari lewat
google.
ada lagi yang mo saya tanyakan, misalnya kita mau
membuat skrip (yang
memiliki struct) untuk memasukkan nama, tapi nama yang
dimasukkan
terpisah oleh spasi, apakah bisa membuatnya spt ini...?
Apakah maksud genjuro, menerima input dari getline,
tetapi yang
diinputkan memiliki spasi, seperti misalnya nama saya:
'Donny Kurnia',
begitu? Bisa aja. Pengen membuktikan? Silahkan compile
sendiri.
(sekalian anda
semua bisa melihat bagaimana maksd saya):
#include <iostream>
#include <string>
using namespace std;
struct Nama {
string nama;
};
int main() {
Nama anda;
cout << "masukkan nama anda \n";
//ini maksd saya yaitu apa bisa masukan ke struct
memakai getline ?
getline (cin, anda.nama);
cout << "selamat datang, " << anda.nama << "!\n";
}
konsep struct adalah menggabungkan beberapa variabel ke
dalam 1
'kontainer' sehingga lebih mudah diingat dan digunakan.
Konsepnya
sederhana aja. Misalkan Anda mau menyimpan atribut nama
dan usia.
Ketimbang menyimpannya di dua variabel terpisah, lebih
baik disimpan ke
satu 'struct' yang memiliki elemen nama dan usia,
sehingga lebih mudah
dipahami dan diingat kegunaannya.
pertanyaan terakhir kali ini!, jika saya mau mengubah
(memodifikasi)
sesuatu dalam struct apa bisa spt ini...?:
Wizard gandalf;
gandalf.name = "Gandalf";
gandalf.age = 99;
/*perubahan spt yang di bawah ini apakah
diperbolehkan?*/
gandalf.age = 100;
Itu tidak berbeda dengan potongan kode ini:
int age;
age = 99;
age = 100;
Anda ga percaya bahwa itu boleh, kembali silahkan
ditulis dan di-kompile.
bisa ngga klo misalnya kita mau memanggil / memasukkan
fungsi ke dalam
class, kita melakukan :
class Wizard {
string name;
int age;
public:
void read(Wizard wizard) { //apa harus dibuat saja
fungsi read()?
cout << "name: \n";
//jika dibuat jadi read() maka wizard.name
menjadi name
cin >> wizard.name;
cout << "age: \n";
//jika dibuat jadi read() maka wizard.age
menjadi age
cin >> wizard.age;
}
}
Sekarang dah masuk ke konsep class yah :)
Class merupakan pengembangan dari Struct, dimana kalau
pada Struct,
semua elemen bersifat public, pada Class ada konsep
penyembunyian elemen
(elemen bersifat private). Silahkan baca2 tentang konsep
pemrograman
berorientasi objek. Tentang fungsi read di dalam kelas,
ini disebut
sebagai method. Untuk lebih jelas mengenai konsep objek,
saya analogikan
sebagai berikut:
Seorang manusia, memiliki nama/name dan usia/age.
Seorang manusia bisa berjalan/walking.
Pada pemrograman prosedural, nama dan usia akan disimpan
ke variabel
sendiri-sendiri, lalu ada fungsi walking yang menerima
parameter nama
orang yang akan diset sedang berjalan.
Pada pemrograman objek, akan ada tipe variabel manusia,
yang memiliki
elemen/properties nama dan usia, dan memiliki method
walking. Sebuah
variabel akan bisa melakukan aksi berjalan/walking thd
dirinya sendiri.
int main() {
Wizard gandalf;
//jika harus membuat fungsi read() , hanya bisa di
panggil dengan
//gandalf.read(); ?
Jika fungsi read adalah method dari class Wizard, method
ini melekat
pada 'objek' Wizard. Jadi harus dipanggil dengan cara
gandalf.read();
read(gandalf);
}
jika seandainya di panggil dengan gandalf.read(); apa
ada yang bisa
menjelaskan mengapa jika dilakukan bgt, name bisa
mengarah ke
gandalf.name ? dan juga age menjadi gandalf.age ...
thnk u sebelumnya...
Kita liat lagi isi dari method read. (Kode Anda saya
edit agar bisa
di-kompile)
cout << "name: \n";
cin >> name;
cout << "age: \n";
cin >> age;
Karena method ini ada pada class Wizard, maka method ini
akan otomatis
menggunakan elemen name dan age dari 'objek'
bersangkutan.
Harap diingat untuk membedakan antara class dengan
objek.
class analoginya adalah tipe.
objek analoginya adalah variabel.
int i = 2;
int : tipe variabel, yaitu integer.
i : variabel bernama i bertipe int.
2 : nilai konstanta
Wizard gandalf;
Wizard : tipe class bernama Wizard
gandalf : objek yang diciptakan dari class Wizard, akan
memiliki elemen
name, age dan memiliki method read.
Pada kode diatas, ketika memanggil gandalf.read(),
method read() pada
'objek' gandalf akan membaca input pengguna dan
menyimpannya pada elemen
name dan age dari 'objek' gandalf.
Jika ada objek lain:
Wizard donny;
Memanggil method : donny.read() akan menyimpan hasilnya
pada donny.name
dan donny.age. Objek donny tidak akan bisa mengubah
elemen dari Objek
gandalf, begitupun sebaliknya. Masing-masing objek akan
berjalan
sendiri. Mereka hanya memiliki kesamaan sama-sama
diciptakan dari class
yang sama, yaitu class Wizard. Analoginya:
int i = 2;
int j = 3;
i dan j adalah variabel yang berbeda, walaupun tipenya
sama-sama int.
Saya harap penjelasan saya dapat menjawab keingintahuan
genjuro. Jangan
berhenti bertanya, tetapi tanyalah hal yang tidak bisa
terjawab oleh
praktek. Lakukan dulu praktek dari teorinya (tulis
kodenya lalu
dikompile dan dijalankan), setelah itu baru tanyakan hal
yang masih
tidak dimengerti.
Wassalamu'alaikum wr wb
--
Donny Kurnia
http://hantulab.blogspot.com
http://hantulab.multiply.com
--
Berhenti langganan:
[EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis