P01 Pengenalan Pemrograman C++ di Linux Modul Praktikum FI2283 Pemrograman dan Simulasi Fisika Versi 2013.09.06 Catatan. Perhatikan berkas (atau file) apa yang harus anda buat dalam setiap tugas. Setiap kali praktikum buat folder baru dengan nama YYYYMMDD-NN di mana YYYY adalah tahun, MM bulan, DD hari, dan NN nomor praktikum. Untuk hari Senin, 9 September 2013 yang merupakan praktikum pertama, setiap pengguna menyimpan berkas-berkasnya dalam folder 20130909-01 di bawah folder Documents (untuk ini tanyakan jelasnya pada asisten praktikum Anda). Bila berkas Anda tidak ditemukan maka nilai praktikum hanya dari angka kehadirannya saja. 1 Program pertama hello.cpp 2 2 Arti pilihan -o saat kompilasi program 2 3 Melewatkan argumen saat program dipanggil 3 4 Peran spasi pada argumen program 4 5 Menampilkan semua argumen program 4 6 Contoh penggunaan instruksi if 4 7 Program tambah.cpp 5 8 Program add.cpp 6 9 Program subst.cpp 7 10 Perkenalan argumen dan pipe 7 1
1 Program pertama hello.cpp Perhatikan kode lengkap berikut ini cout << "Hello C++!" << endl; Salin kode tersebut dengan menggunakan piranti lunak penyunting teks yang umumnya tersedia dalam sistem operasi Linux, seperti Vi atau Vim, Kate, Joe, Emacs, KWrite, atau lainnya. Simpan dengan nama hello.cpp dan kemudian kompilasi dengan cara g++ hello.cpp -o hello dan jalankan dengan mengetikkan.\hello Apakah hasil yang muncul pada konsol? Tugas 1. Modifikasi kode di atas dan simpan dengan nama berkas hello2.cpp sehingga dapat memberikan keluaran seperti berikut ini Selamat praktikum FI2283, <Nama Anda>. setelah dipanggil, di mana ganti <Nama Anda> dengan rangkaian karakter yang merepresentasikan nama Anda sebagai peserta praktikum FI2283. 2 Arti pilihan -o saat kompilasi program Kembali gunakan program hello.cpp yang telah dibuat sebelumnya, kompilasi program tersebut dengan cara yang berbeda, yaitu g++ hello.cpp 2
Berkas apakah yang muncul dan bagiamana sekarang Anda menjalankan program hasil kompilasi tersebut? Tugas 2. Kompilasi program hello.cpp semula sehingga saat dijalankan, perintah yang harus diberikan pada konsol adalah./myhello Tuliskan cara melakukan kompilasi tersebut dalam berkas laporan.txt. Berkas ini nanti akan diperiksa oleh asisten. 3 Melewatkan argumen saat program dipanggil Salin kode berikut ini if(argc > 1) { cout << "Selamat praktikum, "; cout << argv[1] << endl; dan simpan dalam berkas dengan nama nama.cpp, lalu kompilasi sehingga dapat dipanggil dengan cara./nama "Nama-Depan Nama-Belakang" Tugas 3. Lakukan pemanggilan dengan menggunakan jumlah kata yang lebih banyak dengan keseluruhan kalimat masih diapit oleh tanda petik ganda buka dan tutup. Tuliskan perintah yang dipanggil dan hasilnya kembali dalam berkas laporan.txt. 4 Peran spasi pada argumen program Tugas 4. Kembali gunakan hasil kompilasi program nama.cpp dan lakukan pemanggilan dengan cara 3
./nama "Nama-Depan Nama-Belakang"./nama Nama-Depan Nama-Belakang Jelaskan perbedaan hasilnya dalam berkas laporan.txt. 5 Menampilkan semua argumen program Ketik kode berikut dalam suatu program dengan nama arg-list.cpp for(int i = 0; i < argc; i++) { cout << argv[i] << endl; Kompilasi sehingga diperoleh perintah arg-list. Tugas 5. Gunakan hasil kompilasi program arg-list.cpp dan lakukan pemanggilan dengan cara./arg-list./arg-list "Selamat pagi"./arg-list Selamat pagi./arg-list 1 2 3 Apa kabar Jelaskan apa tujuan program tersebut serta jelaskan perbedaan hasilnya dalam berkas laporan.txt. 6 Contoh penggunaan instruksi if Ketik kode berikut dalam suatu program dengan nama ifnama.cpp 4
cout << endl; if(argc < 2) { cout << "Tolong masukkan nama Anda."; cout << endl; else { cout << "Selamat praktikum, "; for(int i = 1; i < argc; i++) { cout << argv[i] << " "; cout << "." << endl; cout << endl; dan kompilasi sehingga diperoleh perintah ifnama. Tugas 6. Eksekusi program yang telah dibuat dengan cara./ifnama dan ulangi dengan cara./ifnama Limana Kapau Nissa Munaakah di mana kata-kata di atas dapat Anda ganti sesukanya :-). Jelaskan apa fungsi program tersebut dan bagian mana program yang dijalankan saat dipanggil dengan cara pertama dan bagian mana yang dijalankan saat dipanggil dengan cara kedua. Tuliskan jawaban Anda dalam berkas laporan.txt. 7 Program tambah.cpp Program tambah.cpp adalah contoh program dengan kontrol jumlah argumen dan informasi apa parameter yang harus lewatkan. #include <stdlib.h> 5
if(argc < 2) { cout << "Calculate sum of number sequence."; cout << endl; cout << "Usage: tambah x1 x2 x3 [..]" << endl; else { double sx = 0; for(int i = 1; i < argc; i++) { sx = sx + atof(argv[i]); for(int i = 1; i < argc; i++) { cout << (argv[i]); if(i < argc - 1) { cout << " + "; cout << " = " << sx << endl; Tugas 7. Salin dan kompilasi kode tersebut menjadi perintah tambah dan jalankan dengan cara./tambah 1 2 3 4 5 Angka-angka di atas dapat Anda ubah semaunya. Laporkan cara Anda memanggil program dan hasilnya dalam berkas laporan.txt. 8 Program add.cpp #include <stdlib.h> if(argc < 2) { cout << "Calculate sum of two integers"; cout << endl; cout << "Usage: add i1 i2" << endl; else { double x1 = atof(argv[1]); double x2 = atof(argv[2]); 6
double sx = x1 + x2; cout << sx << endl; Tugas 8. Dalam laporan.txt tuliskan bagaimana Anda melakukan kompilasi program add.cpp dan jelaskan cara-cara memanggil yang masih memberikan hasil yang relevan dengan hasilnya. 9 Program subst.cpp Tugas 9. Modifikasi program add.cpp sehingga dapat menghitung selisih dua variabel saat dipanggil dari konsol dengan cara./subst 100.3 40.2 sehingga memberikan hasil 60.1 di mana contoh angkanya dapat Anda ubah-ubah. Simpan program tersebut dengan nama subst.cpp. 10 Perkenalan argumen dan pipe Salin kode berikut dalam berkas dengan nama addintp.cpp /* addintp.cpp Add integers and use of pipe S. Viridi <dudung@gmail.com> 20130906 */ #include <stdlib.h> #include <unistd.h> 7
/* URI http://stackoverflow.com/questions/2564503 /how-do-i-check-if-my-program-has-data-piped-into-it [20130906] URI http://linux.die.net/man/3/isatty [20130906] URI http://www.rtems.com/ml/rtems-users/2011/march /msg00102.html [20130906] */ // Check whether there is pipe from other program bool ispipe =!isatty(stdin_fileno); // Checek whether there is (are) argument(s) bool isargs = (argc > 1); // Default message char msg[] = "Usage: [addintp i1 i2] addintp i3 i4"; if(ispipe &&!isargs) { cout << msg << endl; else if(!ispipe && isargs){ if(argc > 2) { int i1 = atoi(argv[1]); int i2 = atoi(argv[2]); cout << i1 + i2 << endl; else { cout << msg << endl; else if(ispipe && isargs){ if(argc > 2) { int i0; cin >> i0; int i1 = atoi(argv[1]); int i2 = atoi(argv[2]); cout << i0 + i1 + i2 << endl; else { cout << msg << endl; else { cout << msg << endl; 8
Tugas 10. Jalankan program tersebut dengan menggunakan dua buah bilangan dan laporkan hasilnya dalam laporan.txt../addintp./addintp 1 3./addintp 1 3./addintp 10./addintp 1 3./addintp 10 5 Jelaskan pula dalam laporan.txt apa fungsi dari program tersebut. Keluaran praktikum 1. hello.cpp, hello2.cpp, nama.cpp, arg-list.cpp, ifname.cpp, tambah.cpp, add.cpp, subst.cpp, dan addintp.cpp 2. laporan.txt yang berisikan jawaban dari Tugas 2, 3, 4, 5, 6, 7, 8, dan 10 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. 1 1 Sparisoma Viridi <dudung@gmail.com>,.., 2013 9
. 10