Assalamu'alaikum wr wb Dari email-email genjuro ke milis ini, saya berkesimpulan bahwa genjuro belum pernah mencoba potongan kode yang ditanyakan yah? Belajar programming tanpa mencoba sendiri mengkompile kode program di komputer sama aja dengan orang yang belajar naik sepeda, tapi mengandalkan buku teori dan nanya, tapi ga pernah nyoba naik sepeda dan merasakan jatuh dari sepeda.
Kalau kode program yang ditanyakan di email sebelumnya dan email ini udah pernah dicoba, saya yakin hal yang ditanyakan bukan seperti pertanyaannya genjuro, karena pertanyaan itu akan terjawab sendiri ketika dicoba dikompile. 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