Memulai Pemrograman C++ Sparisoma Viridi dan Suprijadi 1 Materi kuliah • • • • • • • • Asumsi untuk peserta Program hello Komentar program Penamaan variabel Jenis-jenis variabel Struktur program Contoh program Sekilas fungsi 2 Asumsi untuk peserta • Compiler g++ telah terinstal (baik dalam OS Windows, Linux, ataupun Mac) • Penyunting teks ASCII telah terinstal (Notepad++, Kate, Kwrite, Joe, Emacs, Pico, Nano, ..) • Peserta kuliah telah pernah menggunakan console atau command prompt 3 Program hello • Program paling sederhana • Standar berbagai sistem yang menghasilkan keluaran (PC, microcontroller, gadget, ..) • Uji antarmuka dengan pengguna 4 Program hello (cont.) • Code program #include <iostream> using namespace std; int main(int argc, char *argv[]) { cout << "Hello world!" << endl; return 0; } 5 Program hello (cont.) • Kompilasi $ g++ hello.cpp • Eksekusi (Linux) $ ./a.out • Eksekusi (Windows) $ a.exe 6 Program hello (cont.) • Keluaran Hello world! 7 Program hello (cont.) • Soal 1. Bagaimana mengubah cara kompilasi apabila berkas keluaran yang dapat dieksekusi memiliki nama hello? • Soal 2. Bila nama Anda adalah X, ubahlah program hello sehingga menghasilkan keluaran Hello X, apa kabar? 8 Komentar program • Dapat hanya satu baris // Ini adalah baris komentar • Dapat terdiri dari beberapa baris /* Ini adalah blok baris-baris yang berisikan komentar */ 9 Komentar program (cont.) • Jangan malas menuliskan komentar • Tuliskan hal-hal yang dapat membantu Anda dan juga pembaca program Anda untuk mengerti kode program yang dituliskan • Umumnya programer pemula malas untuk menuliskan komentar • Beberapa saat setelah menulis program, programer dapat lupa maksudnya 10 Komentar program (cont.) • Ilustrasi pemberian komentar // Rumus akar persamaan kuadrat double D = b * b – 4 * a * c; double x1 = (-b + sqrt(D)) / (2*a); double x2 = (-b - sqrt(D)) / (2*a); • Komentar dapat diperjelas dengan // Persamaan kuadrat // y = a * x^2 + b * x + c 11 Komentar program (cont.) • Komentar yang kurang jelas // Konversi temperatur double y1 = (x / 5) * 9 + 32; double y2 = (x – 32) / 9 * 5; • Soal 3. Apakah Anda dapat menduga maksud potongan kode di atas? Bagaimanakah komentar tersebut dapat diperjelas? 12 Penamaan variabel • Dimulai dengan huruf • Setelahnya diikuti dengan huruf, angka, atau garis bawah • Huruf besar dan kecil terbedakan • Tidak boleh menggunakan reserved words • Soal 4. Dapatkah Anda menyebutkan 10 buah contoh reserved words? 13 Penamaan variabel (cont.) • Dipilih sedapat mungkin agar keterbacaan kode menjadi mudah • Manakah potongan kode di bawah ini yang lebih mudah dimengerti? Baris ini? A = a * t / 2; Ataukah baris ini? luas = alas * tinggi / 2; 14 Penamaan variabel (cont.) • Keterbacaan kode dapat ditingkatkan dengan menggunakan komentar dan pemilihan variabel yang sesuai // p: tekanan // Vi: volume awal (inisial) // Vf: volume akhir (final) // W: usaha gas pada proses isobarik W = p * (Vf – Vi); 15 Penamaan variabel (cont.) • Bandingkan dengan kode sebelumnya // x: // y: // z: // a: a = x tekanan volume awal (inisial) volume akhir (final) usaha gas pada proses isobarik * (z – y); • Manakah kode yang lebih jelas menurut Anda? 16 Penamaan variabel (cont.) • Soal 5. Sebuah benda bermassa m ditimbang dengan menggunakan neraca pegas, di mana benda tersebut tenggelam dalam fluida dengan rapat massa ρ. Buatlah potongan kode dengan menggunakan komentar dan pemilihan nama variabel yang tepat sehingga kode tersebut memiliki keterbacaan yang baik. Percepatan gravitasi di tempat tersebut adalah g. Tentukan bacaan dari neraca pegas. 17 Jenis-jenis variabel • • • • • Bilangan bulat (integer): int Bilangan riil (double): double Logika bolean (boolean): bool Karakter (character): char Kumpulan karakter (string): string 18 Jenis-jenis variabel (cont.) • Dapat didefinisikan dulu, diberi nilai kemudian double x; x = 1.602E-19; • Didefinisikan sekaligus diinisialisasi nilainya double x = 1.602E-19; • Adakah nama variabel yang lebih baik atau tepat untuk x? 19 Jenis-jenis variabel (cont.) • Contoh jenis variabel yang lain int a = -3; bool GENAP = true; char = 'A'; string nama = "Mahasiswa"; • Terdapat pula jenis variabel yang belum dibahas saat ini, misalnya: short, long, unsigned, single, .. 20 Jenis-jenis variabel (cont.) • Soal 6. Tunjukkan baris mana yang benar dan baris mana yang salah dari potongan kode di bawah ini terkait dengan jenis variabel dan nilainya. double x = 1; int y = 1.2; char z = 'ab'; string = "u"; bool = 'true'; 21 Struktur program • Judul dan keterangan terkait /* akar.cpp | Versi 20140831 Menghitung akar persamaan kuadrat Sparisoma Viridi | [email protected] Compile: g++ akar.cpp –o akar Execute: ./akar */ • Soal 7. Jelaskan maksud setiap baris kode. 22 Struktur program (cont.) • Pustaka yang digunakan #include #include #include #include #include #include <iostream> <fstream> <cstring> <cstdlib> <cmath> "simulasi.h" • Soal 8. Apakah perbedaan dari <> dan ""? 23 Struktur program (cont.) • Ruang nama (namespace) yang digunakan using namespace std; • Untuk menampilkan tulisan pada console cout << "Hello" << endl; std::cout << "Hello" << endl; • Soal 9. Seberapa efesien penggunaan ruang nama dalam contoh di atas? 24 Struktur program (cont.) • Definisi fungsi-fungsi yang dibuat void hello(void); double luas(double, double); • Soal 10. Apakah Anda dapat menebak maksud dari kedua fungsi di atas? Jelaskan. 25 Struktur program (cont.) • Program utama int main(int argc, char *argv) { // Kode dalam program utama double A = luas(1.0, 2.0); // Nilai balikan: // 0: program berjalan baik // .. nilai-nilai lain return 0; } 26 Struktur program (cont.) • Badan fungsi-fungsi sebelumnya void hello(void) { cout << "Hello" << endl; } double luas(double alas, double tinggi) double x = alas * tinggi / 2; return x; } 27 Struktur program (cont.) • Dengan demikian susunan program utuh adalah Judul dan keterangan terkait Pustaka yang digunakan Ruang nama (namespace) yang digunakan Definisi fungsi-fungsi yang dibuat Program utama Badan fungsi-fungsi sebelumnya 28 Contoh program • Perhatikan fungsi di bawah ini double akar(double a, double b, double c, int n) { double D = b*b – 4*a*c; double x = -b / (2*a); if(n == 1) { x = x + sqrt(D) / (2*a); } else { x = x - sqrt(D) / (2*a); } return x; } 29 Contoh program (cont.) • Soal 11. Pustaka apa saja yang diperlukan agar fungsi akar() dapat digunakan? • Soal 12. Buatlah suatu program utuh dengan memanfaatkan fungsi akar() tersebut, di mana nilai a, b, dan c diberikan dan program dapat menampilkan keluaran kedua akar yang dicari. 30 Sekilas fungsi • Fungsi adalah suatu bagian program yang mengerjakan satu satuan pekerjaan dan sering digunakan • Definisi jenis_variabel nama_fungsi( jenis_variabel variabel_1, jenis_variabel variabel_2, ..) { // Isi fungsi } 31 Sekilas fungsi (cont.) • Fungsi dapat mengembalikan nilai berbentuk jenis_variabel tertentu atau tidak sama sekali (void) • Nilai balikan diberikan pada akhir fungsi dengan menggunakan return 32 Sekilas fungsi (cont.) • Pisahkan antara menampilkan hasil, menyimpan data, atau proses I/O dengan proses perhitungan dalam suatu fungsi • Hal ini bertujuan agar saat kode ingin dimodifikasi, ditingkatkan kemampuannya, atau lainnnya, cukup bagian tersebut yang perlu diubah • Ilustrasi: keluaran semula ke console menjadi ke berkas (file) 33 Sekilas fungsi (cont.) • Lebih detil mengenai fungsi akan dibahas pada pertemuan berikutnya 34 Terima kasih 35