Programming Note
Programming Note
I Wayan Sudiarta
November 4, 2012
ii
Daftar Isi
Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ucapan Terima Kasih . . . . . . . . . . . . . . . . . . . . . . . .
vii
ix
1 Pendahuluan
1.1 Konsep Pemrograman . . . . . . . . . . . . . . . . . . . .
1.2 Bahasa C dan C++ . . . . . . . . . . . . . . . . . . . . . .
1
2
3
2 Hello World!
2.1 Program Hello World . . . . . . . . . . . . . . . . . . . . .
2.2 Kompilasi Program . . . . . . . . . . . . . . . . . . . . . .
2.3 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
6
9
10
3 Konvensi Penulisan
3.1 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Bagian Komentar . . . . . . . . . . . . . . . . . . . . . . .
3.3 Bagian Program . . . . . . . . . . . . . . . . . . . . . . . .
13
13
14
15
.
.
.
.
17
17
19
21
23
.
.
.
.
.
.
.
.
25
25
25
25
27
27
28
29
29
31
31
31
35
35
35
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Operasi Matematika
5.1 Operasi Matematis Sederhana . . . . . . . . .
5.1.1 Operator sama dengan (Assignment ,=)
5.1.2 Aritmatika . . . . . . . . . . . . . . . . .
5.2 Aritmatika dengan dua operator . . . . . . . .
5.3 Operasi-operasi logika . . . . . . . . . . . . . .
5.4 Konversi Tipe . . . . . . . . . . . . . . . . . . .
5.5 operasi binari . . . . . . . . . . . . . . . . . . .
5.6 Fungsi-Fungsi Matematika . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iv
Daftar Isi
7.1.2 switch . . . . . . . .
7.2 Pengulangan . . . . . . . .
7.2.1 for . . . . . . . . . .
7.2.2 while . . . . . . . .
7.2.3 do ... while . . . . .
7.2.4 break dan continue
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
36
36
36
36
36
8 Array
39
9 Fungsi
41
10 Struktur
45
.
.
.
.
.
.
.
53
53
54
55
55
55
56
56
59
59
59
60
61
61
62
62
.
.
.
.
.
65
65
66
66
67
68
69
69
70
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Daftar Isi
71
71
72
72
75
75
76
77
77
78
78
79
79
79
80
81
81
82
83
83
84
84
87
87
88
88
91
91
92
93
97
vi
Daftar Isi
Kata Pengantar
Buku ini masih berbentuk draft. Belum sempurna, masih banyak yang
perlu diperbaiki dan dilengkapi. Harap dimaklumi karena keterbatasan dana dan waktu penulis.
Buku ini ditulis dengan tujuan supaya dapat memberikan dasar
yang cukup bagi pembaca pada khususnya mahasiswa untuk memahami secara mendasar tentang pemrograman dan dapat membuat programprogram yang bisa membantu dalam kuliah tingkat lanjut maupun penelitian. Dalam buku ini penulis berusaha menjelaskan pemrograman
C dan C++ dari tingkat dasar. Buku ini berusaha memberikan pemahaman prinsip-prinsip pemrograman sehingga pembaca dapat mengembangkan sendiri dan mempelajari bahasa pemrograman lebih lanjut.
Struktur buku ini dibentuk atau diatur sedemikian rupa sehingga
pembaca mampu dengan waktu yang tidak terlalu lama dapat mahir
membuat program komputer dengan bahasa C dan C++.
Mengapa dua bahasa ini sekaligus diajarkan? Karena bahasa C++
merupakan pengembangan dari bahasa C. Jadi penambahan pelajaran
tentang bahasa C++ tidak akan membingungkan pembaca. Di samping itu pula, cara penulisan program c++ digunakan pada program
Java. Ini penting bagi pembaca yang ingin mempelajari Java untuk
membuat aplikasi.
Pada waktu penulis pertama kali memberikan kuliah pemrograman komputer, penulis hanya mengajarkan bahasa C++. Setelah mempertimbangkan bahwa bahasa C juga digunakan di matakuliah pemrograman instrumentasi, pemrograman dengan bahasa C juga penulis
ajarkan di tahun berikutnya.
Penulis berusaha memberikan penjelasan dengan sederhana mungkin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yang
dimiliki pembaca.
Pendahuluan
Pendahuluan
Pendahuluan
Hello World!
Banyak cara yang bisa dilakukan dalam mempelajari sesuatu. Untuk menjadi seorang programer, kita perlu melakukan banyak latihanlatihan dengan melihat contoh-conoth yang kongkrit. Ada lima cara
[check cprogramming.com].
Pada bab ini kita akan mempelajari program sederhana hello world.
Program sederhana semacam ini sering digunakan untuk mengenalkan bahasa pemrograman. Situs-situs internet yang menyajikan hello world
untuk berbagai bahasa pemrograman dapa dilihat di alamat situs dibawah ini(cek internet).
http://en.wikipedia.org/wiki/Hello_world_program
http://www.helloworldexample.net/
http://www.roesler-ac.de/wolfram/hello.htm
Mungkin kita berpikir, apa sih yang kita pelajari dari program sederhana ini? jawabannya banyak! mari kita pelajari perlahan-lahan,
bagian per bagian.
Pada bab ini, kita akan mempelajari struktur, cara penulisan atau
syntax, komponen-komponen dasar dan proses kompilasi program.
Seperti kita membuat sebuah dokumen atau paper atau karya ilmiah. Semua mempunyai struktur atau pola tertentu yang sesuai dengan kaidah atau aturan yang telah ditentukan oleh organisasi atau
institusi. Kita mungkin saja membuat dokumen yang tanpa aturan
dan kita mengerti apa isinya. Tetapi, kemungkinan besar orang lain
jika membacanya akan mengalami kesulitan. Begitu pula untuk bahasa pemrograman, program yang kita buat mempunyai aturan-aturan
tersendiri sesuai dengan bahasa pemrogramannya. Aturan-aturan dalam bahas pemrograman sudah dibuat dan dirancang sedemikian rupa supaya mempermudah kita membuat program. Perintah-perintah
dalam bahasa C ataupun C++ ditranslasi ke bahasa mesin dan mempermudah komputer menjalankan sesuai dengan perintah.
Hello World!
/ Program h e l l o . c
Menampilkan t e x t Hello World ! ! !
/
# includ e<s t d i o . h>
6
7
8
9
10
11
12
i n t main ( )
{
/ / tampilkan pada layar42
p r i n t f ( Hello World ! ! ! \ n ) ;
return 0 ;
13
14
Perlu diingat bahwa nomer baris pada Listing 2.1 tidak perlu diketik. Nomer-nomer baris ini berguna untuk mempermudah menemukan baris yang perlu diperbaiki jika ada error atau kesalahan yang diinformasikan pada saat kompilasi. Penomeran juga memperjelas apa
yang dipelajari.
/ Program h e l l o . c
Menampilkan t e x t Hello World ! ! !
/
Hello World!
mungkin mengingat semua variabel, proses yang kitat gunakan sebelumnya. Maka penting sekali untuk setiap pembuatan program diikutsertakan untu kpenjelasan singkat di awal atau pun didalam program. Di samping itu, jika kita bekerja tidak sendirian dalam pembuatan program besar, komunikasi antara programer dilakukan melalui
komentar atau catatan singkat tersebut. Tanpa adanya dokumentasi yang jelas program akan mempersulit pembuatan program, karena
adanya konflik atau misinformasi. Kita perlu mengerti bahwa setiap
programer memiliki cara dan pengetikan yang sesuai dengan selera
programer. Dengan dokumentasi akan mengurangin kesalahan yang
ditimbulkan oleh penggunaan variabel, proses yang berbeda.
Di samping penggunaan /* dan */ kita juga dapat menggunakan
tanda komentar dengan dua garis miring (//). Ini berarti bahwa apapun yang dimulai dengan tanda // sampai bagian baris terakhir merupakan komentar atau catatan. Dengan kata lain, semua bagian kanan
dari // diabaikan oleh komputer. Komentar tentang program bergunaa
untuk penjelasan yang lebih singkat diabndingkan dengan /* dan */.
tanda // ini dapat disisipkan diakhir sebuah perintah sehingga programaer dapat menimformasikan apa yang penting.
Baris ke 5 mengadung sebuah preprocessor yaitu #include <stdio.h>.
Baris ini yang berawalan dengan tanda (#) yang menyatakan perintahperintah untuk preprocessor. Perintah-perintah ini bukan barisan code yang biasanya. Ini diperuntukkan bagi preprocessor dari kompiler.
Dalam perintah diatas #include <stdio.h> memberitahu preprocessor untuk memasukan stdio (pustaka untuk input output) standard file. Ini
dimasukkan karena akan digunakan di dalam program.
Jadi untuk mengakses library ini kita mendeklarasikan dengan
ekspresi ini. Ini yang sering digunakan di program C++ yang memakai
standard library.
Baris ke 8 adalah sebuah fungsi main, int main (). Baris ini merupakan awal dari definisi dari fungsi main. Fungsi main adalah titik
dimana semua program C++ memulai exsekusinya, tidak tergantung
dari tempat di dalam source code. Tidak peduli ada fungsi-fungsi yang
dideklarasikan sebelum atau sesudah itu, instruksi-instruksi yang ada
di dalam main selalu yang pertama di jalankan. Jadi sangat penting
semua program C mempunyai fungsi main.
Perintah printf("Hello World!"); Ini adalah sebuah C++ statement. printf adalah standard output pada C. Arti dari seluruh statement di atas adalah insert sebuah deretan huruf-huruf yang mana
disini berisi Hello World!.
Kompilasi Program
Baris terakhir return 0;. Perintah return menyebabkan selesainya fungsi main. Perintah return bisa diikuti dengan return code
(disini dikembalikan nilai 0). sebuah return code 0 untuk fungsi main biasanya diartikan programnya berjalan tanpa masalah. Ini yang
paling sering dipakai untuk mengakhiri program C++.
... Ini digunakan untuk menggabungkan banyak statement menjadi satu bagian. Disini semua statement menjadi bagian fungsi main.
Gambar 2.2: Proses kompilasi kode program menjadi program executable yang bisa dieksekusi.
Dua tahapan dapat dilakukan sekaligus dengan menggunakan pilihanpilihan pada kompiler. Pada bab ini kita akan membahas proses kompilasi menggunakan kompiler gcc untuk bahasa C dan g++ untuk
bahas C++ yang sudah tersedia di dalam Cygwin, MinGW dan Linux. Kompilasi menggunakan program Dev-C++, Borland C++, Code
Blocks, Turbo C++ dan Visual C++ dijelaskan di Lampiran. Kompilasi
dengan gcc atau g++ dilakukan didalam sebuah jendela terminal. Perintah perintah yang digunakan untuk kompilasi adalah sebagai berikut:
1. Kompilasi tanpa pilihan
10
Hello World!
gcc hello.c
Ini akan menghasilkan executable file / program bernama a.exe
(pada cygwin) atau a.out (pada linux). Kemudian program dijalankan dengan mengketik pada prompt$ ./a.exe atau ./a.out
.
2. Kompilasi dengan nama hasil/output
gcc hello.c -o hello.exe
Tambahan pilihan -o akan menghasilkan executable file / program bernama sesuai keinginankita, di sini bernama hello.exe.
Kemudian program dijalankan dengan mengketik pada prompt$
./hello.exe.
3. Compile dan Link terpisah
Pertama kita melakukan kompile dengan mengubah bahasa C
atau C++ ke bahasa mesin dengan perintah gcc -c.
gcc -c hello.c
Perintah ini akan menghasilkan object file bernama namafile.o,
pada perintah di atas menghasilkan hello.o. File object ini kemudian dilink dengan libary dan file-file lain (jika ada) dengan
menggunakan perintah gcc .
gcc hello.o -o hello.exe
Semua cara proses kompilasi ditunjukkan pada Gambar 2.3.
2.3 Formatting
Bahasa pemrograman C dan C++ tidak memiliki cara penulisan atau
formatting tersendiri. free-formating language. Ini berarti cara penulisan program tidak diatur, melainkan dibebaskan. yang perlu diingat
bahwa spasi, tab dan baris kosong dianggap sama atau yang dikenal
dengan nama white space. Terkecuali spasi dan white space lainnya merupakan bagian dari sebuah komentar atau string. Pemisahan
11
Formatting
/ Program h e l l o . c
Menampilkan t e x t Hello World ! ! !
/ # includ e<s t d i o . h>
i n t main ( ) { / / tampilkan pada lay ar
p r i n t f ( Hello World ! ! ! \ n ) ; return 0 ; }
/ Program h e l l o . c
Menampilkan t e x t Hello World ! ! !
/
# includ e<s t d i o . h>
int
main ( ) { / / tampilkan pada lay ar
p r i n t f ( Hello World ! ! ! \n ) ;
return 0 ;
}
Konvensi Penulisan
Bab ini membahas tentang bagaimana konvensi penulisan sehingga tidak terjadi kesalahan dalam penulisan dan mengurangi tingkat stress
jika terjadi kesalahan atau error. Sebagian konvensi sudah dijelaskan
pada bab sebelumnya. Walaupun demikian konvensi akan dijelaskan
kembali untuk memperkuat dan memperdalam.
Bab ini membahas aturan-aturan penulisan. Biasanya bab ini tidak dijelaskan dengan bab-tersendiri pada buku-buku pemrogralamn
lain. tetapi setelah melihat banyaknya kekeliruan yang dilakukan mahasiswa, maka penjelasan tentang penulisan perlu dijelaskan secara
terpisah.
Dalam penulisan kode program bahasa C++, ada tiga bagian yang
perlu dibedakan yaitu (1) bagian preprocessing atau bagian program
yang diproses terlebih dahulu sebelum memproses kodenya, (2) bagian
komentar atau catatan dan (3) bagian kode program yang sebenarnya.
3.1 Preprocessing
Perintah-perintah pada bagian preprocessing diawali dengan tanda
pagar (#).
Karena bagian perintah bukan perintah c++ cebenarnya, cara penulisannya juga berbeda. Maka kita harus ingat setiap perintah tidak
diakhiri dengan tanda titik koma (;).
kegunaan preprocessing apa? untuk memerintahkan kompiler menambahkan komponen-komponen lain seperti pustaka atau library
atau perintah memproses kode C++ sehingga sesuai dengan keinginan
kita. Kita biasanya melakukan penggantian variabel sebelum c++ di
kompilasi.
14
Konvensi Penulisan
9
10
4
5
Menghasilkan e r r o r kompilasi
6
7
15
Bagian Program
Digunakan untuk menggabung banyak perintah menjadi satu kesatuan perintah. Listing 4.1 memberikan contoh penggabungan
banyaka perintah menjadi satu set.
1
2
3
4
5
6
7
8
9
18
19
Tipe Variabel
8
Listing 4.1: Reserved identifier atau nama yang sudah digunakan oleh
kompiler
Contoh-contoh identifier yang benar: d, _nim, laju0, hitung_gaya.
Contoh-contoh identifier yang salah: harga!, 2alamat, *bintang, hitung gaji.
f l o a t suhu ;
/ / Deklarasi v a r i a b e l
2
3
4
5
6
7
8
9
10
i n t main ( )
{
int a , b , c ;
int c = 34;
float f , g , h;
char z = P ;
11
12
13
a = 2;
b = a + c;
14
15
16
f = 4.2;
g = 9.0;
17
18
19
f = f + g;
g = f /g;
20
21
h = a/b;
//
//
//
//
tipe integer
i n i s i a l i s a s i variabel
tipe f l o a t
t i p e characte r , huruf
20
22
p r i n t f ( N i l a i b = %d\n , b ) ;
p r i n t f ( N i l a i f = %f \n , f ) ;
p r i n t f ( N i l a i h = %f \n , h ) ;
23
24
25
26
return 0 ;
27
28
2
3
4
b i l b u l a t = 40;
/ / OK
b i l b u l a t = 40000; / / tid ak benar , karena l e b i h d ari 32000
Tipe data int hanya bisa menampung bilangan bulat dari angka
-32768 ... 32767. Jika kita berikan nilai pada variabel bil_bulat
yang di luar angka yang bisa ditampung, seperti bil_bulat = 40000;
akan menimbulkan kesalahan perhitungan. Oleh karena itu perlu
kita mengingat dan memastikan bahwa angka-angka yang digunakan dalam perhitungan selalu sesuai dengan apa yang bisa ditampung
oleh tipe data. Jika kita ceroboh atau tidak teliti akan menghasilkan
program yang keliru. Perlu diingat bahwa kompiler tidak mengecek
apakah variabel memiliki angka yang sesuai. Kekeliruan hanya bisa
dilihat setelah program dijalankan.
Untuk mengingat tipe-tipe data, mari kita lihat secara umum maksud tipe data. Tipe data int merupakan singkatan dari kata integer
atau bilangan bulat. Tipe data char merupakan singkatan dari kata
character atau huruf. Jadi tipe char bisa menampung sebuah huruf. Tipe data float merupakan tipe data untuk bilangan-bilangan
floating-point atau titik mengambang atau desimal (scientific number). Tipe data float bisa menampung bilangan desimal dan mempunyai nilai terkecil dan terbesar yang bisa ditampung (1.175e-38
21
dan 3.402e38). Tipe data double merupakan tipe data untuk bilangan floating-point, tetapi menggunakan ukuran memori yang dua
kali ukuran tipe data float. Bilangan terkecil dan terbesar yang bisa ditampung adalah 1.175e-308 dan 3.402e308. Tipe data yang
lain memiliki tambahan kata short, long, unsigned dan signed.
Kata short artinya pendek, yang mengindikasikan bahwa tipe data
yang dideklarasikan lebih pendek ukurannya. satu contoh, tipe data short int memiliki ukuran setengah kali ukuran tipe data int.
Begitu pula untuk kata long yang artinya panjang, mengindikasikan bahwa tipe data lebih panjang ukurannya, contoh long double
memiliki ukuran lebih besar dibandingkan dengan tipe data double.
Kata signed dan unsigned menunjukkan tipe data yang digunakan
mempunyai tanda atau tidak. Ini berguna untuk membedakan varibel
yang hanya merukan bilangan bulat positif saja. Sebgai contoh, kita
mendeklarasikan variabel umur dengan
1
unsigned i n t umur ;
Kita bisa memastikan bahwa variabel umur tidak memiliki nilai negatif.
Data types char, short, long dan int bisa bersifat signed or unsigned tergantung dari interval bilangan yang direpresentasikan. Signed
types bisa mempunyai kedua nilai positif dan negatif. Tetapi unsigned
hanya mempunyai nilai positif saja.
22
1
2
3
4
5
6
7
8
i n t main ( )
{
/ / deklarasi variabel l o c a l
f l o a t arus = 1 . 0 , r e s i s t o r = 1000;
tegangan = arus r e s i t o r ;
10
11
p r i n t f ( tegangan = %f \n , tegangan ) ;
12
13
return 0 ;
14
15
Konstanta
23
4.4 Konstanta
Menghitung besaran-besaran fisis dalam bidang fisika memerlukan
suatu konstanta-konstanta. Bahasa C dan C++ menyediakan tipe data
tambahan sehingga variabel yang kita gunakan merupakan konstanta
dan nilainya tidak dapat diubah.
Ada dua cara yang biasa digunakan untuk menandakan bahwa suatu identifier merupakan konstanta.
Cara pertama adalah pada saat deklarasi variabel ditambahkan keyword const sebelum nama tipe data seperti
1
2
Cara kedua untuk menyatakan suatu konstanta adalah dengan menggunakan fasilitas preprocessor #define sebagai contoh berikut ini.
1
2
3
4
# d e f i n e PI 3.14159
5
6
7
8
i n t main ( )
{
f l o a t sudut = 45 , b ;
b = s i n ( sudutPI / 1 8 0 . 0 )
10
11
return 0 ;
12
13
3
4
5
6
i n t main ( )
{
f l o a t sudut = 45 , b ;
24
b = s i n ( sudut 3 . 1 4 1 5 9 / 1 8 0 . 0 )
8
9
return 0 ;
10
11
Konstanta
Ada 2 Cara: 1) Dengan menggunakan preprocessor # define PI 3.14159 2)
Konstanta
Cara Pertama: Sebelum kode di kompile, semua variabel yang di definis
int main() { const float pi = 3.14159; cout << " sin(pi) = " << sin(P
Operasi Matematika
5.1 Operasi Matematis Sederhana
5.1.1 Operator sama dengan (Assignment ,=)
.
Operator = mungkin tidak asing lagi bagi kita karena operator ini
yang paling sering digunakan. Dalam pemrograman, operator = memiliki maksud tersendiri tidak seperti yang ada di bidang matematika.
Mari kita pelajari dengan menggunakan contoh dua perintah berikut
ini.
1
2
a = b;
a = a + c;
5.1.2 Aritmatika
Dalam komputasi dengan operator-operator matematis, kita perlu memperhatikan urutan operasi atau yang disebut dengan Operator precedence. Kompiler bahasa C atau C++ mengevaluasi suatu hitungan
26
Operasi Matematika
rata rata1 = ( a + b + c + d ) / 4 ;
2
3
4
5
rata rata2 = a + b + c + d / 4 ;
y = ab%c + d / 3 ;
y = axx + bx + c ;
1
2
3
4
5
h1
h2
h3
h4
h5
=
=
=
=
=
27
ax ;
z x ;
bx ;
h1 + h2 ;
h4 + c ;
Tabel 5.3: Operasi denga dua operator yang dimiliki bahasa C dan C++
Operasi
C Operator
Contoh C/C++
Artinya
Penjumlahan sama dengan
+=
a += b
a = a + b;
Pengurangan sama dengan
-=
a -= b
a = a - b;
Perkalian sama dengan
=
a
=
b
a
= a * b;
*
*
Pembagia sama dengan
/=
a /= b
a = a / b;
Sisa bagi sama dengan
%=
a %= b
a = a % b;
Tambahkan satu
++
a++ atau ++a
a = a 1;!
Kurangi satu
-a-- atau --a
a = a - a;
28
Operasi Matematika
int a = 2;
i n t b= 1 ;
f l o a t c =6.3;
c = ab ;
c = 2/a ;
c = 2.0/a;
c = a/ c ;
Untuk menghindari kesalahan dalam konversi bilangan yang dilakukan oleh kompiler, kita menggunakan tipe casting yang eksplisit.
1
2
3
4
5
6
int a = 4;
int b = 2;
float c = 6.3;
float d;
/ / casting
b = a + ( int ) c ;
operasi binari
1
2
3
4
i n t a = 5000 , b = 4000;
f l o a t c = 1 . 0E30, d = 1 . 5E12;
long i n t c ;
double f ;
5
6
7
8
9
10
11
12
/ / n i l a i ( ab ) ke luar i n t e r v a l bilangan
c = ab ;
/ / n i l a i ( c d ) o v e rf lo w
f = c d ;
/ / c a s t i n g untuk menghindari e r r o r
c = ( long i n t ) ab ;
f = ( double ) c d ;
29
30
Operasi Matematika
Contoh:
1
2
3
/ / f i l e segitiga . c
# includ e<s t d i o . h>
# includ e<math . h>
4
5
6
7
8
i n t main ( )
{
double a = 3 , b = 5 , c ; / / panjang s i s i s i s i s e g i t i g a
c = s q r t ( aa + bb ) ;
/ / panjang s i s i miringnya
p r i n t f ( panjang s i s i miringnya adalah %l f , c }
9
10
11
12
return 0 ;
13
14
Bab ini membahas tentang bagaimana menampilkan teks pada layar komputer dengan menggunakan fungsi printf() dan putchar()
dan bagaimana mendapatkan masukkan dari keyboard dengan fungsi
scanf() dan getchar()
32
Tambahan \n adalah sebuah escape sequence atau untuk menghindar atau keluar.
Selain \n, enscape sequence yang lain ditunjukkan pada Tabel ??.
Tabel 6.1: Escape sequence untuk suatu string pada fungsi
printf()
Escape Sequence Penjelasan
\n
baris baru, letakkan posisi cursor pada baris baru
\a
bunyikan bell
\b
backspace
\f
formfeed
\t
tab (8 huruf)
\
Menampilkan tanda kutip tunggal
\"
Menampilkan tanda kutip ganda
\\
Menampilkan tanda garis miring
\xaa
Menampilkan kode ASCII dalam hexadesimal
\aaa
kode ASCII dalam octal aa disini diganti dengan angka
\%
menampilkan tanda %
Nilai yang terkandung dalam suatu variabel dapat ditampilakan
pada layar komputer dengan menyisipkan tanda formating (format
specifier) pada string/kalimat dan kemudian diikuti dengan variabelnya. Cara memformat bilangan disesuaikan dengan tipe datanya.
Untuk lebih jelas, mari kita lihat dua contoh berikut ini.
1
2
3
4
p r i n t f ( P o s i s i p a r t i k e l = (%f ,% f ) , x , y ) ;
Format
i
d
u
e
E
f
x
X
c
s
p
33
Pada bab ini kita akan membahas bagaimana mengatur aliran perintahperintah yang kita berikan dengan menggunakan pernyataan if..else dan
melakukan pengulangan dengan cara for , while dan do...while .
if(kondisi) pernyataan
sebagai contoh:
if(x < 10) printf("x bernilai lebih kecil dari 10 \n");
Bentuk umum penggunaan if...else yaitu
if(kondisi) pernyataan1/perintah1
else pernyataan2/perintah2
sebagai contoh:
if(x < 10) printf("x bernilai lebih kecil dari 10 \n");
else printf("x bernilai lebih besar dari atau sama dengan 10 \n");
36
7.1.2 switch
switch(val){
case 1:
a = a +1;
break;
case 2:
a = a + 100;
break;
default:
a = 0;
}
7.2 Pengulangan
7.2.1 for
for(pernyataan1; pernyataan2; pernyataan3){
pernyataan
}
7.2.2 while
while(kondisi){
pernyataan;
}
Pengulangan
pernyataanA;
break;
pernyataanB;
}
for(pernyataan1; pernyataan2; pernyataan3){
pernyataanA;
continue;
pernyataanB;
}
37
Array
\section{Variabel Array}
Format: Tipe nama[jumlah];
Contoh: Int g[10]; // buat array dengan 10 elemen Elemen dimulai dengan in
\section{Akses Array}
Contoh: double w[6] ={0,4,5,1,3,4} //cetak isi array for(int i = 0; i<6; i
\section{Inisialisasi Array}
Format: Int g[5]={1,2,3,4,5}; // buat array 5 elemen g[0] = 1; g[9]=10;
\section{Array Multidimensi}
Format: Tipe nama[jumlah][jumlah]; // dua dimensi Tipe nama[jumlah][jumlah
Fungsi
Fungsi
Di setiap program C++, kita harus mendefinisikan /mendeklarasikan fungsi m
Fungsi Format deklarasi fungsi: Tipe NamaFungsi(deklarasi parameter) { --return sesuatu; } Tipe Tipe nilai yang di hasilkan oleh fungsi Deklarasi
Deklarasi Fungsi
Ada Dua Cara: 1) Deklarasi dan definisi sebelum fungsi main() 2) Deklarasi
Fungsi, Cara 1
#include <iostream> using namespace std; // deklarasi dan definisi double
#include <iostream> using namespace std;
Fungsi, Cara 2
double tambah(double a, double b); // deklarasi int main() { cout << tamba
#include <iostream> using namespace std;
Fungsi, Void 1
42
Fungsi
43
/* Write some statements here */
}
The old Kernighan & Ritchie style of writing function definitions is not s
Function parameters are passed through the Data Stack.
Function values are returned in registers R30, R31, R22 and R23 (from LSB
10
Struktur
46
Struktur
int b;
char c[15];
} se;
void main(void) {
/* Local structure */
struct local_structure {
char a;
int b;
long c;
} sl;
/* ............. */
}
47
i2=se[1].b;
k4=se[1].c[2];
/* same access to structure members using a pointer */
ep=&se; /* initialize the pointer with the structure address */
k1=ep->a;
i1=ep->b;
k2=ep->c[2];
++ep;
/* increment the pointer */
k3=ep->a;
i2=ep->b;
k4=ep->c[2];
}
Because some AVR devices have a small amount of RAM, in order to keep the
Example:
struct alpha {
int a,b, c;
} s={2,3};
/* define the function */
struct alpha *sum_struct(struct alpha *sp) {
/* member c=member a + member b */
sp->c=sp->a + sp->b;
/* return a pointer to the structure */
return sp;
}
void main(void) {
int i;
/* s->c=s->a + s->b */
/* i=s->c */
i=sum_struct(&s)->c;
}
Structure members can be also declared as bit fields, having a width from
Bit fields are allocated in the order of declaration starting from the lea
Example:
/* this structure will occupy 1 byte in RAM
as the bit field data type is unsigned char */
struct alpha1 {
48
Struktur
unsigned char a:1; /* bit 0 */
unsigned char b:4; /* bits 1..4 */
unsigned char c:3; /* bits 5..7 */
};
49
/* union declaration */
union alpha {
unsigned char lsb;
unsigned int word;
} data;
void main(void) {
unsigned char k;
/* define a pointer to the union */
union alpha *dp;
/* direct access to union members */
data.word=0x1234;
k=data.lsb; /* get the LSB of 0x1234 */
/* same access to union members using a pointer */
dp=&data; /* initialize the pointer with the union address */
dp->word=0x1234;
k=dp->lsb; /* get the LSB of 0x1234 */
}
Because some AVR devices have a small amount of RAM, in order to keep the
Example:
#include <stdio.h> /* printf */
union alpha {
unsigned char lsb;
unsigned int word;
} data;
/* define the function */
unsigned char low(union alpha *up) {
/* return the LSB of word */
return up->lsb;
}
void main(void) {
data.word=0x1234;
printf("the LSB of %x is %2x",data.word,low(&data));
}
50
Struktur
Union members can be also declared as bit fields, having a width from
Bit fields are allocated in the order of declaration starting from th
Example:
/* this union will occupy 1 byte in RAM
as the bit field data type is unsigned char */
union alpha1 {
unsigned char a:1; /* bit 0 */
unsigned char b:4; /* bits 0..3 */
unsigned char c:3; /* bits 0..2 */
};
/* this union will occupy 2 bytes in RAM
as the bit field data type is unsigned int */
union alpha2 {
unsigned int a:2; /* bits 0..1 */
unsigned int b:8; /* bits 0..7 */
unsigned int c:4; /* bits 0..3 */
/* bits 8..15 are not used */
};
/* this union will occupy 4 bytes in RAM
as the bit field data type is unsigned long */
union alpha3 {
unsigned long a:10; /* bits 0..9 */
unsigned long b:8; /* bits 0..7 */
unsigned long c:6; /* bits 0..5 */
/* bits 10..31 are not used */
};
51
Example:
/* The enumeration constants will be initialized as follows:
sunday=0 , monday=1 , tuesday=2 ,..., saturday=6 */
enum days {
sunday, monday, tuesday, wednesday,
thursday, friday, saturday} days_of_week;
/* The enumeration constants will be initialized as follows:
january=1 , february=2 , march=3 ,..., december=12 */
enum months {
january=1, february, march, april, may, june,
july, august, september, october, november, december}
months_of_year;
void main {
/* the variable days_of_week is initialized with
the integer value 6 */
days_of_week=saturday;
}
52
Struktur
This will improve the size and execution speed of the compiled progra
\section{Tipe Data Baru}
Defining Data Types Previous Top Next
User defined data types are declared using the typedef reserved keywo
The syntax is:
typedef <type definition> <identifier>;
The symbol name <identifier> is assigned to <type definition>.
Examples:
/* type definitions */
typedef unsigned char byte;
typedef struct {
int a;
char b[5];
} struct_type;
/* variable declarations */
byte alfa;
/* structure stored in RAM */
struct_type struct1;
/* structure stored in FLASH */
flash struct_type struct2;
/* structure stored in EEPROM */
eeprom struct_type struct3;
11
5
6
7
8
9
i n t main ( )
{
p r i n t f ( Hello C++ \n ) ;
p r i n t f ( Saya bisa membuat program dengan C ) ;
10
return 0 ;
11
12
Setelah selesai mengetik kode di atas, kemudian simpan kode tersebut ke file dengan nama dan ekstensi .c. Sebagai contoh kita beri
nama helo.c.
Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cpp
untuk pindah ke folder tempat file yang telah kita telah buat berada.
Kemudian kita kompilasi kode tersebut dengan salah satu perintah
berikut ini:
54
$ gcc namafile.c
$ gcc namafile.c -o namafile.exe
Ingat tanda $ tidak diketik melainkan hanya menunjukkan baris
perintah yang ada pada cygwin atau command prompt.
11.2 Modifikasi
Langkah selanjutnya adalah mengubah program sederhana di atas,
dengan menambahkan beberapa baris perintah. Cobalah tambahkan
baris ini satu per satu dan lihat apa yang dihasilkan dilayar setelah
program kompilasi dan dieksekusi.
Cobalah modifikasi apa saja yang anda ingin tampilkan pada layar.
55
5
6
7
8
i n t main ( )
{
int a , b = 3 , c = 2;
p r i n t f ( n i l a i a = %d \n , a ) ;
p r i n t f ( n i l a i b = %d \n , b ) ;
p r i n t f ( n i l a i c = %d \n , c ) ;
10
11
12
13
a = b + c;
14
15
p r i n t f ( n i l a i a = %d \n , a ) ;
16
17
return 0 ;
18
19
i n t 2 ap e l ;
long banyak ! ;
double d e simal ;
double d e si mal ;
double DESI mal ;
56
5
6
7
8
9
i n t main ( )
{
int a = 2 , b = 3 , c , d ;
float p = 2, q = 3, r ;
10
c
r
a
b
11
12
13
14
=
=
=
=
a/b;
p/q;
i + j;
i %4;
15
p r i n t f ( Baris
p r i n t f ( Baris
p r i n t f ( Baris
p r i n t f ( Baris
16
17
18
19
1:
2:
3:
4:
nilai
nilai
nilai
nilai
c
r
r
b
=
=
=
=
%d \n , c ) ;
%d \n , r ) ;
%f \n , r ) ;
%d , b ) ;
20
return 0 ;
21
22
Berapakah nilai c (Baris 1) dan r (Baris 2 dan 3)? Apa yang ditampilkan pada layar ketika kita kompilasi? dan ketika program dieksekusi? Mengapa nilai c tidak sama dengan r? Mengapa keluaran Baris
2 tidak sama dengan Baris 3?
11.3.4 Scanf
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini dan perhatikan baris scanf.
1
2
3
4
5
6
7
8
9
i n t main ( )
{
float x, y;
57
p r i n t f ( Masukkan n i l a i x : \ n ) ;
scanf ( %f ,&x ) ;
10
11
12
13
14
15
16
17
18
19
20
return 0 ;
21
22
12
5
6
# d e f i n e pi1 3.14159
7
8
9
10
i n t main ( )
{
co nst f l o a t pi2 = 3.14159;
11
p r i n t f ( n i l a i pi1 = %f \n , pi1 ) ;
p r i n t f ( n i l a i pi2 = %f \n , pi2 ) ;
12
13
14
return 0 ;
15
16
12.2 math.h
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
60
2
3
4
5
6
7
# d e f i n e p i 3.14159
8
9
10
11
12
13
i n t main ( )
{
f l o a t sudut = 3 8 ; / / dalam d e r a j a t
14
p r i n t f ( s i n (% f ) = %f \n , s i n ( p i sudut / 1 8 0 . 0 ) ) ;
p r i n t f ( co s (% f ) = %f \n , co s ( p i sudut / 1 8 0 . 0 ) ) ;
15
16
17
return 0 ;
18
19
12.3 Latihan-latihan
1. Buatlah program untuk mengkonversi sebuah nilai temperature
dalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan
rumus
9
TF = TC + 32
(12.1)
5
. Disini input program adalah TC dan output program adalah TF
.
2. Buatlah program yang diberikan input tiga bilangan (x, y dan
z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua
13
5
6
7
8
9
i n t main ( )
{
int i ;
int s ;
10
11
12
13
14
s = 0;
f o r ( i =1; i <=20; i ++) {
s = s + 1;
}
15
16
17
18
19
p r i n t f ( n i l a i s = %d \n , s ) ;
20
21
return 0 ;
22
23
62
13.2 while
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
9
10
11
12
i n t main ( )
{
int i , n ;
float c ;
f l o a t dx ;
float x;
13
dx = 0 . 1 ;
n=10;
14
15
16
i =1;
p r i n t f ( NO X SIN (X) \n ) ;
while ( i<n ) {
x = i dx ;
c = co s ( x ) ;
p r i n t f ( %d %f %f \n , i , x , c ) ;
17
18
19
20
21
22
23
i ++;
24
25
26
return 0 ;
27
28
13.3 do-while
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
do-while
63
1
2
3
4
5
6
7
8
9
10
11
12
i n t main ( )
{
int i , n;
float c ;
f l o a t dx ;
float x;
13
dx = 0 . 1 ;
n= 1 0 ;
14
15
16
i =1;
p r i n t f ( NO X SIN (X) \n ) ;
do {
x = i dx ;
c = co s ( x ) ;
p r i n t f ( %d %f %f \n , i , x , c ) ;
17
18
19
20
21
22
23
i ++;
} while ( i <n ) ;
24
25
26
return 0 ;
27
28
14
5
6
7
8
i n t main ( )
{
float x , y;
p r i n t f ( Masukkan n i l a i x : \ n ) ;
scanf ( %f ,&x ) ;
10
11
12
13
14
i f ( x >5.0) {
p r i n t f ( Angka l e b i h besar d ari 5 . 0 \n ) ;
}
15
16
17
18
return 0 ;
19
20
66
14.2 if else
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
i n t main ( )
{
float x, y;
p r i n t f ( Masukkan n i l a i x : \ n ) ;
scanf ( %f ,&x ) ;
10
11
12
13
14
15
return 0 ;
16
17
5
6
7
8
i n t main ( )
{
float x;
9
10
11
p r i n t f ( Masukkan n i l a i x : \ n ) ;
scanf ( %f ,&x ) ;
12
13
14
()?::
67
15
16
17
18
return 0 ;
19
20
14.4 ()?::
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
i n t main ( )
{
float x , y, z ;
p r i n t f ( Masukkan n i l a i x : \ n ) ;
scanf ( %f ,&x ) ;
10
11
12
p r i n t f ( Masukkan n i l a i y : \ n ) ;
scanf ( %f ,&y ) ;
13
14
15
z = ( x<y ) ? x : y ;
16
17
p r i n t f ( N i l a i z = %f \n , z ) ;
return 0 ;
18
19
20
Apa yang ditampilkan pada layar? Perhatikan penggunaan operator conditional (()?:). Nilai apa yang ditampilkan oleh program? lebih
besar atau lebih kecil?
68
14.5 switch
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
i n t main ( )
{
int a ;
10
11
12
switch ( a ) {
case 1 :
p r i n t f ( Pilihan
break ;
case 2 :
p r i n t f ( Pilihan
break ;
case 3 :
p r i n t f ( Pilihan
break ;
case 4 :
p r i n t f ( Pilihan
break ;
default :
p r i n t f ( Pilihan
}
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Dua\n ) ;
Tiga \n ) ;
Empat\n ) ;
Lainl a i n \n ) ;
return 0 ;
30
31
Satu\n ) ;
15
5
6
i n t jumlah ( i n t a , i n t b ) ;
7
8
i n t bagidua ( i n t a ) ;
9
10
11
12
i n t main ( )
{
int a = 3 , b = 5 , c ;
13
c = jumlah ( a , b ) ;
14
15
p r i n t f ( n i l a i a = %d \n , a ) ;
p r i n t f ( n i l a i b = %d \n , b ) ;
p r i n t f ( n i l a i jumlah ( a , b ) = %d , c ) ;
16
17
18
19
return 0 ;
20
21
22
23
24
25
26
27
28
}
i n t jumlah ( i n t a , i n t b )
{
return ( a+b ) ;
}
i n t bagidua ( i n t a )
70
29
30
31
return ( a / 2 ) ;
5
6
7
8
9
i n t main ( )
{
float a[10];
double b [ 3 ] [ 4 ] ;
10
a [0] = 7;
a [ 1 ] = 10;
a[11] = 1;
b [ 2 ] [ 3 ] = 1002;
11
12
13
14
15
printf (
printf (
printf (
printf (
16
17
18
19
20
\n , a [ 0 ] ) ;
\n , a [ 1 ] ) ;
\n , a [ 4 ] ) ;
%f \n , b [ 2 ] [ 3 ] ) ;
return 0 ;
21
22
a [ 0 ] = %f
a [ 1 ] = %f
a [ 4 ] = %f
b[2][3] =
Apa kesalahan kode di atas? apa yang tampil di layar ketika kita
kompilasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi.
Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi.
16
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
9
10
11
i n t main ( )
{
f l o a t a ; / / variabel tipe f l o a t
f l o a t p ; / / sebuah p o i n t e r t i p e f l o a t
a = 2.3;
p = &a ; / / v a r i a b e l p b e r i s i alamat v a r i a b e l a
12
p r i n t f ( %f \n , a ) ;
13
14
p = 4 . 2 ; / / k i t a ubah n i l a i v a r i a b e l a
15
16
p r i n t f ( %f \n , a ) ;
17
18
return 0 ;
19
20
72
5
6
7
8
9
10
11
12
i n t main ( )
{
i n t p , b [ 5 ] ;
b [1] = 1;
b [2] = 2;
b [3] = 3;
b [4] = 4;
13
p = b ; / / p menunjuk ke alamat b [ 0 ]
14
15
16
17
p = p + 1 ; / / p menunjuk ke alamat b [ 1 ]
18
19
20
21
p; / / kembali ke alamat b [ 0 ]
22
23
24
25
p = p + 3 ; / / p menunjuk ke alamat b [ 3 ]
26
27
28
29
return 0 ;
30
31
Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi? Pelajari operasi-operasi yang dapat dilakukan untuk pointer.
16.3 Latihan
1. Baca program C++ dibawah ini.
1
2
73
Latihan
3
4
5
6
7
v o id swap ( f l o a t , f l o a t ) ;
i n t main ( )
{
f l o a t a = 2.5 , b = 6.0;
p r i n t f ( %f
9
10
%f \n , a , b ) ;
swap(&a , &b ) ;
11
12
p r i n t f ( %f
13
14
return 0 ;
15
16
17
18
19
20
%f \n , a , b ) ;
}
v o id swap ( f l o a t x , f l o a t y )
{
float t ;
21
22
23
24
25
t = x ;
x = y ;
y = t ;
17
Pada Lab 1 ini kita akan mempelajari tentang bahasa C++ yang sederhana dan bagaimana mengkompilasi dan menjalankan program yang
kita buat. Untuk lebih mengerti proses yang akan dilakukan dalam
bahasa C++, mari kita lakukan hal-hal dibawah ini.
5
6
7
8
9
10
11
i n t main ( )
{
co ut << Hello C++ << endl ;
co ut << Saya bisa membuat program dengan C++ << endl ;
12
return 0 ;
13
14
Setelah selesai mengetik kode di atas, kemudian simpan kode tersebut ke file dengan nama dan ekstensi .cpp.
Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cpp
untuk pindah ke folder tempat file yang telah kita ketik berada.
Kemudian kita kompilasi kode tersebut dengan salah satu perintah
berikut ini:
76
1
2
3
17.2 Modifikasi
Langkah selanjutnya adalah mengubah program sederhana di atas,
dengan menambahkan beberapa baris perintah. Cobalah tambahkan
baris ini satu per satu dan lihat apa yang dihasilkan dilayar setelah
program dieksekusi.
1
2
3
4
Cobalah modifikasi apa saja yang anda ingin tampilkan pada layar.
18
5
6
7
8
9
10
i n t main ( )
{
int a , b = 3 , c (2) ;
11
12
13
14
15
a = b + c;
16
17
18
19
return 0 ;
20
21
78
i n t 2 ap e l ;
long banyak ! ;
double d e simal ;
double d e si mal ;
double DESI mal ;
2
3
4
5
6
5
6
7
8
9
10
11
i n t main ( )
{
int a = 2 , b = 3 , c ;
float i = 2, j = 3, k;
12
c = 2/3;
k = i/j;
co ut << n i l a i c = << c << endl ;
co ut << n i l a i b = << b << endl ;
13
14
15
16
17
a = i + j;
18
19
return 0 ;
20
21
19
5
6
# d e f i n e pi1 3.14159
7
8
9
10
11
12
i n t main ( )
{
co nst f l o a t pi2 = 3.14159;
13
14
15
16
return 0 ;
17
18
19.2 cmath
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
80
1
2
3
4
5
6
7
# d e f i n e p i 3.14159
8
9
10
11
12
13
i n t main ( )
{
f l o a t sudut = 3 8 ; / / dalam d e r a j a t
14
15
16
17
return 0 ;
18
19
19.3 Latihan-latihan
1. Buatlah program untuk mengkonversi sebuah nilai temperature
dalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan
rumus
9
(19.1)
TF = TC + 32
5
. Disini input program adalah TC dan output program adalah TF
.
2. Buatlah program yang diberikan input tiga bilangan (x, y dan
z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua
20
5
6
7
8
i n t jumlah ( i n t a , i n t b ) ;
9
10
11
12
i n t main ( )
{
int a = 3 , b = 5 , c ;
13
c = jumlah ( a , b ) ;
14
15
16
17
18
19
return 0 ;
20
21
22
23
24
25
26
}
i n t jumlah ( i n t a , i n t b )
{
return ( a+b ) ;
}
82
6
7
8
9
10
i n t main ( )
{
float a[10];
double b [ 3 ] [ 4 ] ;
11
a [0] = 7;
a [ 1 ] = 10;
a[11] = 1;
b [ 2 ] [ 3 ] = 1002;
12
13
14
15
16
co ut
co ut
co ut
co ut
17
18
19
20
<<
<<
<<
<<
a [ 0 ] = <<
a [ 1 ] = <<
a [ 4 ] = <<
b[2][3] =
a [ 0 ] << endl ;
a [ 1 ] << endl ;
a [ 4 ] << endl ;
<< b [ 2 ] [ 3 ] << endl ;
21
return 0 ;
22
23
Apa kesalahan kode di atas? apa yang tampil di layar ketika kita
kompilasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi.
Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi.
21
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
i n t main ( )
{
f l o a t a ; / / variabel tipe f l o a t
f l o a t p ; / / sebuah p o i n t e r t i p e f l o a t
a = 2.3;
p = &a ; / / v a r i a b e l p b e r i s i alamat v a r i a b e l a
14
15
16
p = 4 . 2 ; / / k i t a ubah n i l a i v a r i a b e l a
17
18
19
20
21
22
return 0 ;
84
5
6
7
8
9
10
11
12
13
14
i n t main ( )
{
i n t p , b [ 5 ] ;
b [1] = 1;
b [2] = 2;
b [3] = 3;
b [4] = 4;
15
p = b ; / / p menunjuk ke alamat b [ 0 ]
16
17
18
19
p = p + 1 ; / / p menunjuk ke alamat b [ 1 ]
20
21
22
23
p; / / kembali ke alamat b [ 0 ]
24
25
26
27
p = p + 3 ; / / p menunjuk ke alamat b [ 3 ]
28
29
30
31
return 0 ;
32
33
Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi? Pelajari operasi-operasi yang dapat dilakukan untuk pointer.
21.3 Latihan
1. Baca program C++ dibawah ini.
85
Latihan
# includ e<iostream>
2
3
4
5
6
7
8
9
v o id swap ( f l o a t , f l o a t ) ;
i n t main ( )
{
f l o a t a = 2.5 , b = 6.0;
10
co ut << a <<
11
12
swap(&a , &b ) ;
13
14
co ut << a <<
15
16
return 0 ;
17
18
19
20
21
22
}
v o id swap ( f l o a t x , f l o a t y )
{
float t ;
23
24
25
26
27
t = x ;
x = y ;
y = t ;
Apa
2. Buatlah program yang diberikan input tiga bilangan (x, y dan
z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua
22
5
6
7
8
9
10
11
12
13
i n t main ( )
{
char a ;
char nama [ 3 0 ] ;
char ilmuwan [ 30] ={ N , E , W , T , O , N } ;
char satuan [ 3 0 ] = n e w t o n ;
14
a = H ;
15
16
co ut
co ut
co ut
co ut
17
18
19
20
<<
<<
<<
<<
nilai
nilai
nilai
nilai
21
return 0 ;
22
23
Bagaimana mendefinisikan sebuah tipe data char? Apa yang ditampilkan pada layar?
88
22.2 String
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
i n t main ( )
{
s t r i n g kalimatUtama ;
s t r i n g kataSambung ;
s t r i n g kalimatPenting ;
14
15
16
17
18
19
20
21
return 0 ;
22
23
22.3 getline()
Kita menggunakan fungsi getline() untuk mengambil input dalam satu
baris.
1
2
3
# includ e<iostream>
# includ e<s t r i n g >
4
5
6
7
8
i n t main ( )
{
getline()
89
s t r i n g kalimat ;
co ut << masukkan sebuah kalimat : <<endl ;
9
10
11
g e t l i n e ( cin , kalimat ) ;
12
13
14
15
return 0 ;
16
17
23
s t r u c t namastruktur {
t i p e 1 nama anggota1 ;
t i p e 2 nama anggota2 ;
...
} nama variabel ;
s t r u c t mahasiswa {
s t r i n g nama ;
s t r i n g nim ;
long i n t umur ;
float tinggi ;
f l o a t be rat ;
} andi ;
/ / d e f i n i s i mahasiswa dan d e k l a r a s i andi
92
Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class
9
10
11
Contoh cara akses anggota struct dengan tanda titik dan nama anggota:
Untuk lebih jelas, kita ketik kode berikut ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/ / d e f i n i s i struktur mahasiswa
s t r u c t mahasiswa {
s t r i n g nama ;
s t r i n g nim ;
long i n t umur ;
float tinggi ;
f l o a t be rat ;
};
i n t main ( )
{
mahasiswa m;
m. nama = A l b e r t E i n s t e i n ;
m. umur = 2 5 ;
m. t i n g g i = 1 7 0 . 0 ;
24
25
26
27
return 0 ;
28
29
23.2 Class
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
Inheritance
93
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Posisi {
protected :
double x , y ;
public :
v o id P o s i s i ( double , double ) ;
double getx ( ) ;
double gety ( ) ;
};
i n t main ( )
{
Posisi a , b (2 ,3) ;
20
a = Posisi (4 ,2) ;
b = a;
co ut << n i l a i komponen x d ari a = << a . getx ( ) << endl ;
co ut << n i l a i komponen y d ari a = << a . gety ( ) << endl ;
21
22
23
24
25
return 0 ;
26
27
28
29
30
31
32
33
34
35
36
37
}
double P o s i s i : : getx ( ) {
return x ;
}
double P o s i s i : : gety ( ) {
return y ;
}
double P o s i s i : : P o s i s i ( double a , double b ) {
x = a; y = b;
}
23.3 Inheritance
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
94
Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Posisi {
protected :
double x , y ;
public :
v o id P o s i s i ( double , double ) ;
double getx ( ) ;
double gety ( ) ;
};
c l a s s Lingkaran : p u b l i c P o s i s i {
double r ;
19
Public :
v o id Lingkaran ( double , double , double ) ;
double g e t r ( ) ;
20
21
22
23
24
25
26
};
i n t main ( )
{
Lingkaran g ( 2 , 3 , 1 0 ) ;
27
28
29
30
31
return 0 ;
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
}
double P o s i s i : : getx ( ) {
return x ;
}
double P o s i s i : : gety ( ) {
return y ;
}
double P o s i s i : : P o s i s i ( double a , double b ) {
x = a; y = b;
}
double Lingkaran : : g e t r ( ) {
return r ;
}
Inheritance
49
50
51
52
95
24
/ / nama f i l e : f a c t o r i a l . cpp
# includ e<iostream>
# includ e<cmath>
4
5
6
7
8
9
10
11
12
13
14
i n t main ( )
{
long bilangan , f a c t ;
15
16
17
18
input ( bilangan ) ;
f a c t = h i t u n g f a c t o r i a l ( bilangan ) ;
output ( bilangan ) ;
19
20
return 0 ;
98
21
22
23
}
/ / D e f in isi fungsi fungsi
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
}
long h i t u n g f a c t o r i a l ( long a )
{
long f =1;
40
41
42
43
44
return f ;
45
46
g++ c O f a c t o r i a l . cpp
g++ f a c t o r i a l . o o f r a c t . exe
99
factorial.cpp maka dihasilkan factorial.o. Setelah dikompile
kita bisa membuat program dengan perintah kedua (disebut proses
linking). Nanti akan lebih jelas mengapa ini diperlukan.
Kode program di atas kita akan bagi menjadi tiga file yaitu main.cpp,
factorial.cpp dan factorial.h.
1
2
3
4
5
f i l e : f a c t o r i a l . h
/ / Deklarasi atau p ro to ty p e f ung sif u n g s i
v o id input ( long &) ;
long h i t u n g f a c t o r i a l ( long ) ;
v o id output ( long ) ;
6
7
8
9
10
11
f i l e : main . cpp
# includ e<iostream>
# includ e<cmath>
# i n c l u d e f a c t o r i a l . h
12
13
14
15
16
17
18
i n t main ( )
{
long bilangan , f a c t ;
19
input ( bilangan ) ;
f a c t = h i t u n g f a c t o r i a l ( bilangan ) ;
output ( bilangan ) ;
20
21
22
23
return 0 ;
24
25
26
27
28
29
30
31
}
f i l e : f a c t o r i a l . cpp
/ / D e f in isi fungsi fungsi
# i n c l u d e f a c t o r i a l . h
# includ e<iostream>
32
33
34
35
36
37
38
39
40
41
42
43
100
44
45
46
47
48
49
}
long h i t u n g f a c t o r i a l ( long a )
{
long f =1;
50
51
52
53
54
return f ;
55
56
Jadi di atas, file factorial.h yang juga disebut header file mengandung deklarasi/prototipe dari fungsi-fungsi atau class-class. Sedangkan factorial.cpp mengandung definisi fungsi atau class.
Cara kompile dan linking secara manual sebagai berikut:
1
2
3
101
Akan menjadi sangat tidak efisien jika ini kita lakukan secara manual.
Untuk hal ini program make bisa menolong kita untuk mengkompile
secara atomatis.
Untuk menggunkan program make kita harus membuat file dependency yang diberi nama Makefile atau makefile.
File Makefile berisi cara mengkompile dan file apa saja yang diperlukan. Sebagai contoh untuk kompile program sebelumnya file Makefile
yang sederhana sebagai berikut.
1
2
3
4
5
6
7
8
9
10
11
program : main . o f a c t o r i a l . o
g++ main . o f a c t o r i a l . o o f a c t . exe
main . o : main . cpp
g++ c main . cpp
f a c t o r i a l . o : f a c t o r i a l . cpp
g++ c f a c t o r i a l . cpp
cle an :
rm . o
make program
25
104
6
7
8
9
10
11
12
13
i n t main ( v o id )
{
double x = 5 . 0 ;
double y = g s l s f b e s s e l J 0 ( x ) ;
co ut << y ;
14
return 0 ;
15
16
Apa saja yang diperlukan untuk menggunakan library GSL? Bagaimana menggunakannya?
26
Untuk mempelajari penggunaanya, dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
106
1
2
# includ e<iostream>
# includ e<s t r i n g >
3
4
5
6
7
8
9
10
i n t main ( )
{
int n ;
f l o a t a ; / / p o i n t e r untuk a l o k a s i memory
co ut << b e r a p a jumlah array ? ;
c i n >> n ;
11
12
13
a = new f l o a t [ n ] ;
a [9] = 3;
14
15
16
delete [ ] a ;
return 0 ;
17
18
19