Disusun oleh: Iwan Binanto © 2007
Mengkompilasi Source Code C++ dengan g++. Untuk mengubah source code menjadi sebuah program, kita membutuhkan sebuah alat yang disebut dengan compiler. Cara memanggil compiler GNU C++: g++
nama_file.cpp
–o
nama_file_program
Dengan pemanggilan seperti di atas, kita memerintahkan compiler GNU C++ untuk membuat sebuah file executable (yang dapat langsung dipanggil dari prompt) dengan nama nama_file_program. Jika parameter –o tidak disertakan, maka akan diproduksi secara otomatis sebuah file executable yang dinamai dengan a.out. Pembuatan atau pengembangan program secara garis besar meliputi : • Menulis source code. • Mengkompilasi source code. • Me-link hasil kompilasi. ! Men-test program. Beberapa bugs (kesalahan) akan menyebabkan kompilasi menjadi gagal atau menyebabkan proses link menjadi gagal, dan di antaranya akan muncul ketika sedang menjalankan program tersebut. Apapun bugs (kesalahan) yang ditemukan, kita harus memperbaikinya. Itu berarti kita harus meng-edit ulang source code, mengkompilasi ulang, me-link ulang, dan men-test ulang program tersebut. Perputaran ini digambarkan sebagai berikut:
Gambar 1: Langkah-langkah pengembangan program.
1
Disusun oleh: Iwan Binanto © 2007
Program Pertama. Pada kesempatan ini kita mencoba untuk membuat sebuah program sederhana yang akan menampilkan pesan “Programku yang pertama” di layar monitor. Bagaimana cara program ini berjalan tidak perlu dipikirkan dulu. Yang penting kita membuat programnya dulu. Pertama-tama yang akan kita lakukan adalah menulis source codenya. Di bawah ini adalah source code dari program kita yang pertama. /* /* /* /* /* /* /*
1*/ 2*/ 3*/ 4*/ 5*/ 6*/ 7*/
#include
int main() { cout << “Programku yang pertama\n”; return 0; }
Silahkan diketikkan di text editor yang sudah dipilih. Kemudian beri nama source code ini dengan nama pertama.cpp. Atau jika kita memakai text editor vi, maka kita langsung dapat memberi nama. Contoh: vi pertama.cpp
[enter]
Kita langsung masuk ke editor vi, kemudian ketik source code di atas tanpa nomornomor yang di sebelah kiri. Setelah selesai, tekan tombol Esc dan ketikkan :wq; yang berarti menyuruh vi untuk menyimpan file tersebut dan langsung keluar dari vi. Karakter “<<” di baris ke-5 merupakan karakter yang dihasilkan oleh keyboard dengan menekan tombol Shift dan koma (tombol “lebih kecil dari”) sebanyak 2 kali. Baris ke5 berakhir dengan karakter titik koma (;). Jangan sampai karakter-karakter tersebut tidak diketikkan. Untuk mengkompilasi dan me-link source code tersebut, gunakan GNU compiler under Linux, dengan cara: g++ pertama.cpp –o pertama
Jika terdapat kesalahan (error) ketika kompilasi, silahkan untuk memeriksa lagi source code dengan teliti dan periksalah apakah ada perbedaan dengan source code di atas. Coba perhatikan sekali lagi. Jika tidak terdapat kesalahan, cobalah untuk menjalankan program tersebut dengan cara mengetikkan di prompt : ./pertama
Seharusnya ada tampilan di layar monitor, tepatnya satu baris di bawah perintah yang barusan kita ketikkan: Programku yang pertama
Cobalah untuk mengganti kalimat “Programku yang pertama” dengan kalimat lain dan amatilah apa yang terjadi dan apa perbedaannya. Berikut ini langkah-langkah pembuatan program “Programku yang pertama”:
2
Disusun oleh: Iwan Binanto © 2007
1. 2. 3. 4. 5.
Pilih text editor dan buat file untuk source code. Masukkan source code yang ada di atas ke text editor. Simpan file dan keluar dari text editor. Ketikkan perintah kompilasi. Jalankan program yang sudah dikompilasi dan di –link jika tidak ada kesalahan.
Kesalahan Kompilasi. Kesalahan kompilasi disebabkan oleh banyak faktor. Biasanya terjadi karena salah ketik atau ada tanda baca yang lupa diketikkan. Compiler yang baik akan memberitahu kita tentang kesalahan yang kita buat dan menunjukkan kepada kita di baris keberapa kesalahan itu terjadi. Untuk lebih jelasnya, coba kita ketikkan source code program di bawah ini (tentu saja tanpa nomor-nomor yang berada di sebelah kiri): /* /* /* /* /* /*
1*/ #include 2*/ 3*/ int main() 4*/ { 5*/ cout << “Programku yang pertama\n”; 6*/ return 0;
Cobalah untuk mengkompilasi source code di atas. Compiler GNU yang kita gunakan akan memberitahu kepada kita dengan menampilkan pesan (yang kurang lebih) sebagai berikut: ./pertama.cpp : Infunction ‘int main()’: ./pertama.cpp :7:parse error at end of input Kesalahan ini memberitahu kepada kita pada baris keberapa kesalahan ini terjadi, dan pesan kesalahan di atas menunjukkan kepada kita bahwa kesalahan terjadi di baris ke-7. Karena apa? Karena pada baris ke-7 seharusnya ada tanda tutup dari sebuah fungsi, yaitu kurung kurawal tutup (}). Cobalah sengaja membuat kesalahan ketik atau yang lainnya. Amatilah apa yang terjadi dan apa pesan yang disampaikan kepada kita.
Analisis Program. Setelah berhasil menjalankan program di atas, ada baiknya kita lihat cara kerja program tersebut. Marilah kita perhatikan source code pertama.cpp: /* /* /* /* /* /* /*
1*/ 2*/ 3*/ 4*/ 5*/ 6*/ 7*/
#include int main() { cout << “Programku yang pertama\n”; return 0; }
Di baris 1 terdapat simbol “#” yang akan bekerja pertama kali ketika compiler berjalan. Simbol “#” akan dieksekusi lebih dulu sebelum compiler berjalan. Yang menyeleksi karakter-karakter sebelum compiler berjalan disebut dengan preprocessor. Preprocessor bekerja sebelum compiler bekerja setiap kali diminta. Preprocessor menterjemahkan setiap baris yang dimulai dengan karakter “#” ke dalam perintah-perintah spesial, yang menjadikan kode-kode yang kita ketikkan siap untuk dikompilasi.
3
Disusun oleh: Iwan Binanto © 2007
include merupakan preprocessor yang seakan-akan berkata: “Cari file ini dan bawa kesini untuk dibaca …”. Tanda kurung lancip (< dan >) memberi tahu kepada preprocessor untuk mencari di semua tempat yang biasa ditempati file tersebut. Jika compiler berjalan dengan baik maka hal ini akan menyebabkan preprocessor mencari file iostream.h di direktori yang biasa menyimpan file-file .h untuk compiler. File iostream.h (input output stream) digunakan oleh cout yang berfungsi menampilkan sesuatu ke layar monitor. Baris ke-3 adalah permulaan program dengan sebuah fungsi (function) dengan nama main(). Setiap program C++ mempunyai fungsi ini. Fungsi adalah sebuah blok kode yang menjalankan atau melakukan satu atau lebih aksi. Biasanya fungsi dipanggil oleh fungsi yang laina, tetapi fungsi main() akan dipanggil secara otomatis oleh sistem operasi. Fungsi main(), seperti fungsi-fungsi pada umumnya, harus menyebutkan type nilai yang akan dikembalikan. Type nilai yang dikembalikan untuk main()dalam pertama.cpp adalah int, yang berarti bahwa fungsi ini akan mengembalikan nilai integer ke sistem operasi ketika sudah selesai. Dalam kasus ini main() mengembalikan nilai 0, seperti tertulis di baris 6. Semua fungsi dimulai dengan kurung kurawal buka ({) dan diakhiri dengan kurung kurawal tutup (}). Pada fungsi main() di atas ditunjukkan di baris 4 dan 7. Semua yang berada di antara kurung kurawal tersebut merupakan bagian dari fungsi. Proses utama ada di baris ke-5. Fungsi main()berakhir di baris ke-7 dengan kurung kurawal tutup (}).
Sedikit Tentang “cout”. “cout” berfungsi untuk menampilkan suatu karakter ke layar monitor, dengan cara menuliskan “cout” diikuti dengan tanda “<<” dan kemudian kumpulan karakter yang akan ditampilkan, diapit dengan tanda petik ganda (“). Contoh: cout << “Programku yang pertama\n”
“\n” berarti menyuruh program kita untuk berganti baris. Perintah ini dapat diganti dengan “endl” (dibaca: end-el bukan end-satu; yang berarti end line) sehingga source code di atas menjadi: cout << “Programku yang pertama” << endl;
Berikut ini tabel karakter (escape character) yang sering dipakai pada “cout”.
Karakter
Deskripsi
\n
Baris baru
\t
Tab (Tabulasi)
\b
Backspace
\”
Mencetak quotation mark
\’
Mencetak single quote (apostrope)
\?
Mencetak question mark
\\
Mencetak BackSlash
4
Disusun oleh: Iwan Binanto © 2007
Komentar. Ketika kita menulis sebuah program, maka pada waktu itu kita benar-benar tahu apa yang kita tulis dan inginkan untuk dibuat. Tetapi setelah beberapa bulan dan kemudian, kita buka kembali source code program kita, apa yang terjadi? Biasanya kita menjadi bingung dan tidak tahu apa yang sudah pernah kita buat. Oleh karena itu diperlukan catatan-catatan yang dapat mengingatkan kita pada langkah-langkah program yang pernah kita susun itu. Bagaimana caranya? Caranya adalah dengan memberi komentar pada baris-baris yang dirasa memerlukan. Bagaimana membuatnya? Pada C++, komentar dimulai dengan karakter double slash (“//”) atau dengan slash-star (“/*”) yang ditutup dengan star-slash (“*/”). Ini berarti setiap dimulai dengan “/*” harus ada “*/” sebagai penutupnya. Contohnya seperti pada source code yang terdahulu kita beri komentar untuk nomor barisnya.
Sedikit Tentang “cin”. “cin” dapat dianggap merupakan pasangan dari “cout”, karena “cin” merupakan sebuah perintah untuk mengambil suatu karakter yang di-input-kan oleh pemakai, dengan cara (penulisan di source code program) menuliskan “cin” diikuti dengan tanda “>>” dan kemudian nama variabel yang akan dimuati nilai input dari pemakai. Contoh: cin >> a
Berarti variabel “a” akan dimuati (diisi) dengan nilai yang di-input-kan oleh pemakai. Secara otomatis baris akan berganti sehingga tidak perlu ada perintah “\n” atau “endl”. Perhatikan baik-baik perbedaan penggunaan tanda “<<” dan “>>”. Untuk “cout” memakai “<<” sedangkan “cin” memakai “>>”. Jangan sampai terbalik, atau jangan disamakan.
Gambaran Umum Tentang “cout” dan “cin”. Berikut ini merupakan gambaran dari fungsi “cout” dan “cin” di komputer kita.
Gambar A.2. Gambaran umum tentang “cout” dan “cin”.
5
Disusun oleh: Iwan Binanto © 2007
Lebih lanjut tentang GNU Compiler. Ketika kita ragu-ragu untuk mengkompilasi sesuatu, lebih baik jika kita memeriksa atau membaca petunjuk-petunjuk (dokumentasi) yang disertakan oleh GNU Compiler. Kita dapat memanggil dokumentasi GNU Compiler dengan cara: man g++
atau info g++
Pilihan-pilihan (option) parameter yang akan digunakan oleh GNU Compiler adalah sebagai berikut: Option
Arti
(tidak ada yang digunakan)
Mengkompilasi dan me-link program secara biasa dan akan menghasilkan sebuah file executable default, yaitu dengan nama a.out.
-c
Mengkompilasi, tidak me-link; sehingga menghasilkan file berekstensi .o
-D macro=value
Mendefinisikan makro di program sebagai sebuah nilai.
-E
Preprocess, tidak dikompilasi ataupun dilink; output dikirim ke layar monitor.
-g
Menyertakan informasi debugging di dalam file executable.
-I dir
Menyertakan dir sebagai direktori untuk mencari file-file include (di dalam program tertulis di antara tanda “<” dan “>”); jika direktorinya banyak, dipisahkan dengan “;”
-L dir
Menyertakan dir sebagai direktori untuk mencari file-file library (digunakan oleh linker untuk mencari referensi eksternal); jika direktorinya banyak, dipisahkan dengan “;”
-l library
Menyertakan library ketika me-link.
-O
Optimisasi.
-o file_name
Menyimpan file executable dengan nama file_name.
-W all
Meng-enable-kan peringatan untuk semua kode program yang akan dihindari.
-w
Disable semua pesan-pesan peringatan.
dalam
Kita dapat menggunakan satu atau lebih pilihan parameter untuk mengkompilasi source code program kita. Hal ini tergantung pada kebutuhan kita. Perlu diperhatikan bahwa
6
Disusun oleh: Iwan Binanto © 2007
pemakaian huruf besar dan huruf kecil sangat dibedakan (case sensitive). Ada sedikit tips untuk pemakaian GNU Compiler ini: 1. Lebih baik jika kita selalu memakai paramater –o file_name supaya kita dapat mengenali dan mengingat program mana yang sudah kita jadikan executable. 2. Secara default, setiap pesan kesalahan akan muncul di layar monitor. Jika program yang kita kompilasi tidak terlalu besar, maka mungkin pesan-pesan kesalahan kompilasi masih dapat termuat di layar monitor. Tetapi jika pesan kesalahannya sudah demikian banyak dan layar monitor sudah tidak mencukupi lagi, maka yang dapat kita lihat hanya bagian-bagian terakhirnya saja. Untuk mengatasi hal ini maka sebaiknya pesan kesalahan tersebut dituliskan di sebuah file. Caranya dengan mengetikkan perintah: g++ pertama.cpp –o pertama > pertama.lst
Nama file untuk menampung pesan kesalahan tersebut dapat dibuat sekehendak hati. Dalam contoh di atas, penulis membuat nama “pertama.lst”. 3. Jika kita ingin membuat sebuah file library, yaitu file yang dapat disertakan di dalam program tertentu, maka pada waktu mengkompilasi program, kita sertakan saja parameter –c supaya program kita menjadi berekstensi .o, sehingga jika tidak ada perubahan dalam program kita, maka kita tidak perlu mengkompilasi ulang program kita. 4. Dan seperti biasanya, tip terbesar tool-tool Linux termasuk juga GNU Compiler ini adalah dengan membaca manual atau dokumentasinya. Juga berusaha untuk selalu mencoba dan belajar dari kesalahan.
7