Perkenalan Pemrograman C++

27
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

description

Slide Matakuliah FI2283 Pemrograman dan Simulasi Fisika

Transcript of Perkenalan Pemrograman C++

Page 1: Perkenalan Pemrograman C++

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

Page 2: Perkenalan Pemrograman C++

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

Page 3: Perkenalan Pemrograman C++

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

Page 4: Perkenalan Pemrograman C++

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

Page 5: Perkenalan Pemrograman C++

Kompilasi dan jalankan program

◮ Kompilasi

> g++ hello.cpp -o hello

◮ Jalankan

> hello

◮ Hasilnya

> Hello world!

5 / 27

Page 6: Perkenalan Pemrograman C++

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

Page 7: Perkenalan Pemrograman C++

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

Page 8: Perkenalan Pemrograman C++

Operator

◮ +, penjumlahan

◮ -, pengurangan

◮ *, perkalian

◮ /, pembagian

◮ %, sisa

◮ =, pengisian nilai (assignment)

◮ <, <=, >, >=, pembandingan

8 / 27

Page 9: Perkenalan Pemrograman C++

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

Page 10: Perkenalan Pemrograman C++

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

Page 11: Perkenalan Pemrograman C++

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

Page 12: Perkenalan Pemrograman C++

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

Page 13: Perkenalan Pemrograman C++

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

Page 14: Perkenalan Pemrograman C++

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

Page 15: Perkenalan Pemrograman C++

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

Page 16: Perkenalan Pemrograman C++

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

Page 17: Perkenalan Pemrograman C++

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

Page 18: Perkenalan Pemrograman C++

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

Page 19: Perkenalan Pemrograman C++

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

Page 20: Perkenalan Pemrograman C++

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

Page 21: Perkenalan Pemrograman C++

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

Page 22: Perkenalan Pemrograman C++

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

Page 23: Perkenalan Pemrograman C++

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

Page 24: Perkenalan Pemrograman C++

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

Page 25: Perkenalan Pemrograman C++

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

Page 26: Perkenalan Pemrograman C++

Diagram alir

Mulai

Baca x

x % 2

Sisa 0?

x genap x ganjil

Selesai

tidak

ya

26 / 27

Page 27: Perkenalan Pemrograman C++

Diagram alir (cont.)

◮ Apakah fungsi diagram alir pada halaman sebelumnya?

27 / 27