slide01-pengenalan c++.pdf
DESCRIPTION
Pengenalan C++TRANSCRIPT
FI2283 Pemrograman dan Simulasi Fisika:Perkenalan Pemrograman C++
Sparisoma Viridi dan Suprijadi
Laboratorium Komputasi Lanjut, Prodi Fisika, Institut Teknologi Bandung
9125, 3 September 2013, 13.00-14.00
1 / 27
C++ 1
◮ C++ adalah bahasa pemrograman yang dapat dipergunakansecara luas untuk berbagai keperluan
◮ C++ lebih baik dari bahasa C dalam sistem pemrograman
◮ C++ mendukung abstraksi data, pemrograman berorientasiobyek, dan pemrograman generik
1Stroustrup, 1997, h. 212 / 27
Program
◮ Program adalah kumpulan instruksi yang berurutan, yangditulis untuk melaksanakan suatu hal spesifik denganmenggunakan komputer 2
◮ Apakah kumpulan instruksi berikut dapat disebut program?
CARI_RUANG 9125
MASUK_RUANG 9125
CARI_TEMPAT_DUDUK
DUDUK
..
◮ Ya, tetapi instruksi berurutan di atas bukanlah suatu programkomputer
2Wikipedia, oldid=568334620, Versi 13 Agustus 2013 09:43 UTC3 / 27
Program ”Hello world!”
◮ Ketikkan program berikut ini dengan text editor seperti Joe,Emacs, Kate, KWrite, atau vi editor
/*
Nama program: hello.cpp
Tanggal : 20130903
Penulis : Sparisoma V.
Fungsi : Menampilkan tulisan "Hello world!"
*/
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
cout << "Hello world!" << endl;
return 0;
}
4 / 27
Kompilasi dan jalankan program
◮ Kompilasi
> g++ hello.cpp -o hello
◮ Jalankan
> hello
◮ Hasilnya
> Hello world!
5 / 27
Jenis variabel
◮ bool, dapat bernilai true (benar) atau false (salah)
◮ char, misalnya ’a’, ’A’, ’-’, ’8’, ’ !’
◮ int, misalnya 1, 2, 43, -343
◮ double, misalnya 13.34, -0.34, 1.5E-4, -1.2442302E3
6 / 27
Identifier
◮ Tersusun dari rangkaian huruf dan angka (alphanumeric) dankarakter garis bawah ’ ’
◮ Karakter pertama harus huruf
◮ Huruf kecil dan besar terbedakan
◮ Contoh yang diperbolehkan: x2min, x2 min, x2min,
X2 MIN, X2Min, x2 Min
◮ Contoh yang tidak diperbolehkan: 2xmin, 1y, oxfx, x
min, a avg, x!min, #xmin, xmin%, x*min
◮ Dapatkah dijelaskan mengapa tidak diperbolehkan?
7 / 27
Operator
◮ +, penjumlahan
◮ -, pengurangan
◮ *, perkalian
◮ /, pembagian
◮ %, sisa
◮ =, pengisian nilai (assignment)
◮ <, <=, >, >=, pembandingan
8 / 27
Pernyataan matematika dan contoh kodenya
◮ Pernyataan matematika dalam bentuk:y = x
2− 10x +
√
x − 1
◮ Kode program:y = x*x - 10 * x + sqrt(x - 1);
◮ Terdapat fungsi-fungsi yang telah disediakan seperti pow(),log(), sqrt(), ..
◮ Contoh di atas hanya sebagai ilustrasi awal
9 / 27
Baris dan blok instruksi
◮ Suatu baris instruksi diakhir dengan karakter titik koma ’;’
double z = 2.5E1 * x - 3.5;
◮ Hal-hal setara dapat dipisahkan dengan karakter koma ’,’dalam satu baris instruksi
double z = 2.5E1, y = -31.5, z = 0;
◮ Blok instruksi diawali dengan karakter ’{’ dan diakhir ’}’
for(int i = 1; i < 3; i++) {
int j = i * 3 + 1;
}
10 / 27
Komentar
◮ Baris komentar diawali dengan rangkaian karakter ’//’
// Menghitung luas
double A = p * l;
◮ Komentar beberapa baris diawali dengan rangkaian karakter’/*’ dan diakhiri dengan ’*/’
/*
p adalah panjang
l adalah lebar
A adalah luas
*/
double A = p * l;
11 / 27
Program tanpa komentar
◮ Perhatikan kode program di bawah ini
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
double a = 1.0;
double b = 25.0;
double c = 4;
double D = b * b - 4 * a * c;
double x1 = (-b + sqrt(D)) / (2 * a);
double x2 = (-b - sqrt(D)) / (2 * a);
cout << x1 << " " << x2 << endl;
return 0;
}
◮ Apakah dapat ditebak fungsinya?
12 / 27
Fungsi
◮ Fungsi merupakan bagian prosedural dari pemrograman C++
◮ Fungsi dapat menerima argumen masukan dan dapatmengembalikan nilai keluaran
◮ Program utama sendiri merupakan suatu fungsi
int main(int argc, char ** argv) {
\\ Isi dari fungsi ’program utama’
return 0;
}
13 / 27
Contoh fungsi
◮ Perhatikan kode berikut ini
double akar1(double a, double b, double c) {
double D = b * b - 4 * a * c;
double x = (-b + sqrt(D)) / (2 * a);
return x;
}
◮ Apakah dapat dituliskan fungsi akar2()?◮ Bagaimana hasilnya bila dipanggil dalam program utama
seperti berikut ini?
cout << akar1(1.0, 5.0, 4.0) << endl;
cout << akar2(1.0, 5.0, 4.0) << endl;
14 / 27
Kata-kata cadangan
◮ Kata-kata cadangan (reserved keywords) adalah kata-katayang tidak boleh digunakan sebagai identifier karena telahmemiliki arti khusus dalam C++
◮ Sebagain kata-kata tersebut digunakan dapat perintah yangumum sehingga akan terbiasa, sebagian lainnya kadang punjarang digunakan
15 / 27
Reserved keywords
and, and\_eq, asm, auto, bitand, bitor, bool, break, case,
catch, char, class, compl, const, const\_cast, continue,
default, delete, do, double, dynamic\_cast, else, enum,
explicit, export, extern, false, float, for, friend, goto,
if, inline, int, long, mutable, namespace, new, not, not\_eq,
operator, or, or\_eq, private, protected, public, register,
reinterpret\_cast, return, short, signed, sizeof, static,
static\_cast, struct, switch, template, this, throw, true,
try, typedef, typeid, typename, union, unsigned, using,
virtual, void, volatile, wchar\_t, while, xor, xor\_eq
16 / 27
Pustaka
◮ Terdapat beberapa pustaka standar C++ yang dapatdigunakan
◮ Dipanggil di awal program, misalnya seperti di bawah ini
#include <iostream>
#include <fstream>
#include <math.h>
◮ Pustaka buatan sendiri dibedakan cara memanggilnya
#include "akar.h"
#include "regresi.h"
17 / 27
Contoh penggunaan pustaka
◮ Perhatikan kode berikut ini
#include <iostream>
#include <math.h>
const double PI = 3.141529;
int main(int argc, char **argv) {
double t = 0.0;
double f = 10.0;
double omega = 2 * PI
double phi_0 = 0.5 * PI
double A = 1.0;
double x = A * sin(omega * t + phi_0);
std::cout << "x = " << endl;
return 0;
}
◮ Apakah hasilnya?
18 / 27
Argumen program utama
◮ Pada program utama terdapat identifier argc dan argv yangmasing-masing berjenis int dan char**
int main(int argc, char **argv) {
return 0;
}
◮ Identifier pertama berfungsi menentukan jumlah argumenyang diberikan saat program dipanggil, sedangkan argumenkedua menampung nilai-nilai argumen tersebut dalam bentukarray karakter
19 / 27
Argumen program utama (cont.)
◮ Bila suatu program dipanggil dengan cara
> myprogram 1 a "Apa kabar?" blabla -1.4E-31
◮ Terdapat enam buah argumen atau nilai identifier argc = 6
◮ Nilai identifier argv[0] = "myprogram"
◮ Nilai identifier argv[1] = "1"
◮ Nilai identifier argv[2] = "a"
◮ Nilai identifier argv[3] = "Apa kabar?"
◮ Nilai identifier argv[4] = "blabla"
◮ Nilai identifier argv[5] = "-1.4E-31"
20 / 27
Contoh program dengan argumen
/*
args.cpp
Menampilkan argumen yang dipanggil
20130903
Sparisoma Viridi <[email protected]>
Compile: g++ args.cpp -o args
*/
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
for(int i = 0; i < argc; i++) {
cout << argv[i] << endl;
}
return 0;
}
21 / 27
Contoh program dengan argumen (cont.)
◮ Dipanggil dengan
> args 1 "bla bla" apa akbar 1E-3 -1.5303 e
◮ Hasilnya adalah
./args
1
bla bla
apa
akbar
1E-3
-1.5303
e
◮ Mengapa kata apa dan akbar berbeda baris ditampilkannya?
22 / 27
Program bandingkan
◮ Perhatikan kode berikut ini
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char **argv) {
if(argc < 3) return 0;
double x = atof(argv[1]);
double y = atof(argv[2]);
if(x > y) {
cout << x << " lebih dari " << y << endl;
} else if (x < y) {
cout << x << " kurang dari " << y << endl;
} else {
cout << x << " sama dengan " << y << endl;
}
return 0;
}
23 / 27
Program bandingkan (cont.)
◮ Cara pemanggilan dan hasilnya adalah seperti berikut ini
> bandingkan 1 1
1 sama dengan 1
> bandingkan 1 -3.3
1 lebih dari -3.3
> bandingkan -205.1 4E-3
-205.1 kurang dari 0.004
> bandingkan -232
>
◮ Mengapa pada saat dipanggil dengan cara terakhir tidak adahasilnya? Dapatkah menjelaskan bagian mana dalam programyang berperan untuk menangani ini?
24 / 27
Latihan
◮ Koreksilah program berikut ini
\*
Program coba-coba
#include <iostream
using namespace std
int main(int argc, char **argv {
int a = 10
int b = 1.5;
cout << "a = << a << end;
double c = sin(b);
return
◮ Petunjuk: terdapat 10 hal yang harus ditambahkan
25 / 27
Diagram alir
Mulai
Baca x
x % 2
Sisa 0?
x genap x ganjil
Selesai
tidak
ya
26 / 27
Diagram alir (cont.)
◮ Apakah fungsi diagram alir pada halaman sebelumnya?
27 / 27