Anda di halaman 1dari 118

Pemrograman Komputer

dengan Bahasa C dan C++


I Wayan Sudiarta
Program Studi Fisika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Mataram
November 4, 2012
ii
Buat anakku Arvin dan Istriku Tami
Daftar Isi
Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Ucapan Terima Kasih . . . . . . . . . . . . . . . . . . . . . . . . ix
1 Pendahuluan 1
1.1 Konsep Pemrograman . . . . . . . . . . . . . . . . . . . . 2
1.2 Bahasa C dan C++ . . . . . . . . . . . . . . . . . . . . . . 3
2 Hello World! 5
2.1 Program Hello World . . . . . . . . . . . . . . . . . . . . . 6
2.2 Kompilasi Program . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Konvensi Penulisan 13
3.1 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Bagian Komentar . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Bagian Program . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Identier, Penamaan dan Tipe Data 17
4.1 Identier , Nama Pengenal . . . . . . . . . . . . . . . . . 17
4.2 Tipe Variabel . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Variabel Local dan Global . . . . . . . . . . . . . . . . . . 21
4.4 Konstanta . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Operasi Matematika 25
5.1 Operasi Matematis Sederhana . . . . . . . . . . . . . . . 25
5.1.1 Operator sama dengan (Assignment ,=) . . . . . . 25
5.1.2 Aritmatika . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 Aritmatika dengan dua operator . . . . . . . . . . . . . . 27
5.3 Operasi-operasi logika . . . . . . . . . . . . . . . . . . . . 27
5.4 Konversi Tipe . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.5 operasi binari . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.6 Fungsi-Fungsi Matematika . . . . . . . . . . . . . . . . . 29
6 Fungsi Output dan Input 31
6.1 Output, Menampilkan Pada Layar . . . . . . . . . . . . . 31
6.1.1 printf() . . . . . . . . . . . . . . . . . . . . . . . 31
7 Kontrol Aliran dan Pengulangan 35
7.1 Kontrol Aliran . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1.1 if dan else . . . . . . . . . . . . . . . . . . . . . . . 35
iv Daftar Isi
7.1.2 switch . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2 Pengulangan . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.3 do ... while . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.4 break dan continue . . . . . . . . . . . . . . . . . . 36
8 Array 39
9 Fungsi 41
10 Struktur 45
11 Lab 1: Pengenalan Bahasa C 53
11.1 Penulisan Kode C . . . . . . . . . . . . . . . . . . . . . . . 53
11.2 Modikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
11.3 Lab 2: Pengenalan Variabel dan Operasi Matematis . . . 55
11.3.1 Deklarasi Variabel . . . . . . . . . . . . . . . . . . 55
11.3.2 Kesalahan Penulisan Variabel . . . . . . . . . . . . 55
11.3.3 Tipe Data Variabel . . . . . . . . . . . . . . . . . . 56
11.3.4 Scanf . . . . . . . . . . . . . . . . . . . . . . . . . . 56
12 Lab 3: Pengenalan dene dan math.h 59
12.1 Dene dan const . . . . . . . . . . . . . . . . . . . . . . . . 59
12.2 math.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
12.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . . 60
13 Lab 4: Pengenalan for, while dan do while 61
13.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
13.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
13.3 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
14 Lab 5: Pengenalan if, else dan switch 65
14.1 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
14.2 if else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
14.3 if else berantai . . . . . . . . . . . . . . . . . . . . . . . . . 66
14.4 ()?:: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
14.5 switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
15 Lab 6: Pengenalan Fungsi dan Array 69
15.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
15.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . . 70
Daftar Isi v
16 Lab 7: Pengenalan Pointer 71
16.1 Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
16.2 Pengenalan Operasi Pada Pointer . . . . . . . . . . . . . . 72
16.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
17 Lab 1: Pengenalan Bahasa C++ 75
17.1 Penulisan Kode C++ . . . . . . . . . . . . . . . . . . . . . 75
17.2 Modikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
18 Lab 2: Pengenalan Variabel dan Operasi Matematis 77
18.1 Deklarasi Variabel . . . . . . . . . . . . . . . . . . . . . . 77
18.2 Kesalahan Penulisan Variabel . . . . . . . . . . . . . . . . 78
18.3 Tipe Data Variable . . . . . . . . . . . . . . . . . . . . . . 78
19 Lab 3: Pengenalan Dene dan cmath 79
19.1 Dene dan const . . . . . . . . . . . . . . . . . . . . . . . . 79
19.2 cmath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
19.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . . 80
20 Lab 4: Pengenalan Fungsi dan Array 81
20.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
20.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . . 82
21 Lab 5: Pengenalan Pointer 83
21.1 Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
21.2 Pengenalan Operasi Pada Pointer . . . . . . . . . . . . . . 84
21.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
22 Lab 6: Pengenalan Character dan String 87
22.1 Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
22.2 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
22.3 getline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
23 Lab 7: Pengenalan Object Oriented Programming (OOP)
dengan Class 91
23.1 Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
23.2 Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
23.3 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
24 Lab 8: Menggunakan Make 97
vi Daftar Isi
25 Lab 9: Pengenalan Library GSL 103
25.1 Contoh GSL . . . . . . . . . . . . . . . . . . . . . . . . . . 104
26 Lab 10: Pengenalan Memori 105
26.1 New atau New [] . . . . . . . . . . . . . . . . . . . . . . . . 105
Kata Pengantar
Buku ini masih berbentuk draft. Belum sempurna, masih banyak yang
perlu diperbaiki dan dilengkapi. Harap dimaklumi karena keterbatas-
an dana dan waktu penulis.
Buku ini ditulis dengan tujuan supaya dapat memberikan dasar
yang cukup bagi pembaca pada khususnya mahasiswa untuk memaha-
mi secara mendasar tentang pemrograman dan dapat membuat program-
program yang bisa membantu dalam kuliah tingkat lanjut maupun pe-
nelitian. Dalam buku ini penulis berusaha menjelaskan pemrograman
C dan C++ dari tingkat dasar. Buku ini berusaha memberikan pema-
haman prinsip-prinsip pemrograman sehingga pembaca dapat meng-
embangkan sendiri dan mempelajari bahasa pemrograman lebih lan-
jut.
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 sam-
ping 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 pemrogram-
an komputer, penulis hanya mengajarkan bahasa C++. Setelah mem-
pertimbangkan bahwa bahasa C juga digunakan di matakuliah pem-
rograman instrumentasi, pemrograman dengan bahasa C juga penulis
ajarkan di tahun berikutnya.
Penulis berusaha memberikan penjelasan dengan sederhana mung-
kin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yang
dimiliki pembaca.
Ucapan Terima Kasih
Penulis bersyukur kepada Tuhan Yang Maha Esa atas kesehatan dan
kesempatan yang diberikan sehingga buku ini dapat diselesaikan. Te-
rima kasih Tuhan atas kelimpahan semangat beserta keberuntungan
yang tiada ternilai.
Penulisan buku ini tentunya tidak bisa dilakukan tanpa bantuan
banyak pihak.
Penulis berterima kasih kepada mahasiswa-mahasiswa yang meng-
ikuti kuliah pemrograman komputer yang telah memberikan banyak
pertanyaan, komentar dan saran yang membantu penyempurnaan bu-
ku ini.
Penulis berhutang budi kepada editor yang dengan sabar memban-
tu mengatasi kesulitan-kesulitan yang dialami selama penulisan buku
sehingga buku ini bisa rampung.
Penulis berterima kasih kepada istri yang selalu memberi dorongan
beserta cinta sehingga penulis selalu semangat mengerjakan buku ini
meskipun hal ini merupakan sebuah proses yang panjang.
Terima Kasih Semua.
Penulis
1
Pendahuluan
Buku pemrograman bahasa C maupun C++ sudah banyak beredar di
Indonesia, apalagi dengan Bahasa Ingris, tentunya lebih banyak lagi.
Walaupun demikian, buku-buku pemrograman berbahasa Indonesia
yang penulis temukan belum dapat memberikan dasar yang cukup ba-
gi pembaca pada khususnya mahasiswa untuk memahami secara men-
dasar tentang pemrograman. Banyak hal-hal dasar sepertinya terlu-
pakan. 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 sam-
ping itu pula, cara penulisan program c++ digunakan pada program
Java. Ini penting bagi pembaca yang ingin mempelajari Java untuk
membuat aplikasi.
Penulis berusaha memberikan penjelasan dengan sederhana mung-
kin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yang
dimiliki pembaca.
Sebelum kita melanjutkan dengan membuat program sederhana,
mari kita belajar mengerti tentang konsep dasar pemrograman, ba-
gaimana kompilasi atau membuat program dan sejarah bahasa C dan
C++.
2 Pendahuluan
1.1 Konsep Pemrograman
Mengapa membuat program? Walaupun ini merupakan pertanyaan
terlalu sederhana, tetapi pertanyaan ini perlu kita jawab sebelummem-
buat program. Secara pasti kita bisa menjawabnya karena kita me-
miliki tujuan tertentu ketika membuat program komputer. [kurang
lengkap]
Pertanyaan selanjutnya yang perlu kita pahami jawabannya ada-
lah apa itu sebuah program komputer?. suatu program dibuat ber-
tujuan untuk memerintahkan komputer untuk melakukan pekerjaan
tertentu. Dengan kata lain, suatu program komputer adalah kumpulan-
kumpulan perintah-perintah yang dapat dipahami oleh komputer. Perintah-
perintah tersebut sudah berbentuk bahasa mesin. Perintah-perintah
kepada komputer tidaklah sembarangan. Semua perintah diatur se-
suai dengan pekerjaaan yang kita inginkan dilakukan komputer. Ki-
ta dalam melakukan suatu pekerjaan, apa saja!, kita menyelesaikan-
nya langkah demi langkah dengan aturan terterntu. Prosedur atau
langkah-langkah untuk menyelesaikan pekerjaan dinamakan algori-
tma.
Dengan mengingat bahwa komputer melaksanakan perintah kita
sesuai dengan apa yang tertulis, bukan yang tersirat. Komputer meng-
erjakan hanya perintah yang diberikan tidak lebih dan tidak kurang.
Komputer bekerja apa adanya. Jika kita bayangkan komputer adalah
pekerja kita dan programer adalah manajer. Manager selalu membe-
rikan perintah kepada bawahannya untuk melakukan sesuatu.
Pemrograman bisa diartikan sama dengan memberi perintah kepa-
da pekerja, dengan perbedaan bahwa komputer tidak memberikan to-
leransi pada hal-hal yang kurang jelas. Komputer harus diperintahk-
an dengan langkah-langkah yang jelas dan akurat dan detil. [Nan-
ti kita pelajari maksudnya dengan menggunakan contoh-contoh dan
latiahn-latihan]. Jika komputer diberikan kurang sediki dari yang di-
maksudkan, keluaran yang kita inginkan tidak akan terwujud. Perlu
diingat memberikan perintah-perintah sedetil mungkin. Oleh kare-
na itu kita perlu mempelajari perintah-perintah yang dapat dipahami
oleh komputer.
Di samping perintah, kita jufa harus memperhatikan kemampuan
yang dimiliki komputer, baik dari segi kecepatan, memori, proses per-
hitungan dan lain-lain. Kesalahan-kesalah sering terjadi karena kita
mengabaikan bahwa komputer memiliki keterbatasan. Kita harus me-
nyesuaikan perintah-perintah supaya tidak melewati batas kemampu-
Bahasa C dan C++ 3
an komputer. Kita juga harus menghilangkan ekspektasi bahwa kom-
puterakan memahaminya.
Yang perlu kita lakukan sebelum kita memahami lebih lanjut ten-
tang pemrograman adalah mengubah cara kita berpikir tentang kom-
puter dan perintah-perintahnya (atau program). Komputer tidak pin-
tar, melainkan perintah-perintah tersebut yang membuat komputer
dapat bekerja.
Perlu diingat bahwa komputer hanya menerima bentuk perintah
tertentu saja. Seperti robot yang belum bisa berpikir dengan sendiri-
nya.
Bahasa C dan C++ menjembatani antara progrmer dan komputer.
Analogi Belajar memasak.
Mari ktia gunakan satu contoh: Jika disediakan bahan-bahan se-
bagai berikut: (1) air, gula, teh, dan alat gelas, sendok, kompor dan
kocor?
Bagaimana membuat segelas teh panas?
1.2 Bahasa C dan C++
Bahasa pemrograman dapat dikategorikan menjadi bahasa tingkat ren-
dah (low level language) dan bahasa tingkat tinggi (high level). Pem-
bagian ini tergantung apakah bahasa yang digunakan lebih dipahami
oleh pengguna atau mesin komputer. Dari segi istilah high level la-
nguage jauh lebih kompleks dibanding dengan low level.
Bahasa pemrograman C dan C++ merupakan high level langua-
ge bahasa tingkat tinggi yang berarti bahasa yang lebih bisa dime-
ngerti oleh pengguna dibandingkan dengan bahasa seperti asymbly
yang tingkat rendah yang lebih mudah dimengerti oleh mesin kom-
puter. Bahasa high level harus diterjemahkan ke bahasa mesin atau
dikompilasi sehingga dapat dilaksanakan oleh komputer. Oleh karena
itu biasanya bahasa high level memiliki ukuran yang besar dan lebih
lambat. Tapi dari segi pengguna pembuatan program dengan baha-
sa high level jauh lebih cepat dibandingkan low level. Untuk aplikasi
program yang besar dan kompleks, pemrogram dengan low level akan
mengalami kesulita dalam pembuatannya.
Sedikit sejarah bahasa C dan C++.
Bahasa C++ merupakan bahasa C dengan tambahan fasilitas pem-
rograman berbasis objek. Sebernarnya tidak hanya itu bahasa C++
merupakan penyempurnaan bahasa C dengan fasilitas-fasilitas baru
yang mempermudah pemrograman. Ini sangat berguna untuk pem-
4 Pendahuluan
buatan program-program besar seperti sistem operasi windows, linux
dan aplikasi-aplikasi besar lainnya.
Bahasa C atau C++ berada diantara kedua. dapat mengakses ba-
hasa mesin dan menggunakan syntax bahasa high level.
Mengapa memilih bahasa pemrograman C dan C++. karena digu-
nakan banyak. membuat os linux, windows. stabil, matur
pemrograman instrumentasi
bagi yang ingin menambah pendalaman tentang bahasa C++ dapat
melihat tutorial C++
http://www.cplusplus.com/doc/tutorial/
http://www.cprogramming.com/
2
Hello World!
Banyak cara yang bisa dilakukan dalam mempelajari sesuatu. Un-
tuk menjadi seorang programer, kita perlu melakukan banyak latihan-
latihan 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 mengenalk-
an bahasa pemrograman. Situs-situs internet yang menyajikan hello world
untuk berbagai bahasa pemrograman dapa dilihat di alamat situs di-
bawah 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 se-
derhana 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 il-
miah. Semua mempunyai struktur atau pola tertentu yang sesuai de-
ngan 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 baha-
sa pemrograman, program yang kita buat mempunyai aturan-aturan
tersendiri sesuai dengan bahasa pemrogramannya. Aturan-aturan da-
lam bahas pemrograman sudah dibuat dan dirancang sedemikian ru-
pa supaya mempermudah kita membuat program. Perintah-perintah
dalam bahasa C ataupun C++ ditranslasi ke bahasa mesin dan mem-
permudah komputer menjalankan sesuai dengan perintah.
6 Hello World!
Mungkin yang penting perlu kita perhatikan adalah kita harus
mentaati aturan-aturan tersebut. Jika tidak program yang kita bu-
at tidak akan bisa dikompilasi artinya kode yang kita ketik tidak bisa
dijadikan bahasa mesin atau program. Maka penting untuk dipahami
aturan-aturan yang digunakan, tentunya pada buku ini kita mempe-
lajari baasa C dan C++.
Hal lain yang perlu diingat adalah komputer hanya mengerjakan
apa yang diperintahkan tidak lebih dan tidak kurang. Jadi kita harus
memperhatikan apakah proses yang diperintahkan sudah komplit dan
akurat.
Disamping itu pula, kita juga harus mengerti kelemahan-kelemahan
perintah-perintah yang diberikan. Jika tidak, akan menimbulkan er-
ror atau kesalahan yang mungkin tidak yang kita inginkan. Kita per-
lu memperhatikan kondisi-kondisi atau daerah di mana perintah akan
dilakukan sesuai dengan semestinya. Perlu memperhatikan keterba-
tasan yang dimiliki oleh komputer
2.1 Program Hello World
Untuk memahami secara garis besar bagaimana bahasa C, mari kita
perhatikan program hello world pada Listing 2.1. Walaupun pro-
gram ini sederhana, penjelasan pada bab ini perlu dimengerti sebe-
lum memahami topik-topik pada bab-bab berikutnya. Ini merupakan
dasar dari semua program selanjutnya. Kita perlu memperhatikan
komponen-komponen apa yang menjadi bagian utama sebuah bahasa
pemrigraman C.
1 / Program hel l o . c
2 Menampilkan t ext Hello World ! ! !
3 /
4
5 #i ncl ude<st di o . h>
6
7
8 i nt main ( )
9 {
10 / / tampilkan pada layar42
11 pr i nt f ( Hello World ! ! ! \ n ) ;
12
13 return 0;
14 }
Listing 2.1: Program Hello World
Program Hello World 7
Perlu diingat bahwa nomer baris pada Listing 2.1 tidak perlu dike-
tik. Nomer-nomer baris ini berguna untuk mempermudah menemuk-
an baris yang perlu diperbaiki jika ada error atau kesalahan yang di-
informasikan pada saat kompilasi. Penomeran juga memperjelas apa
yang dipelajari.
Gambar 2.1: Komponen dasar sebuah program C atau C++
Sekarang mari kita perhatikan baris demi baris pada program Lis-
ting 2.1. Perlu diingat setiap bagian program ditambahkan, disertakan
atau dimasukkan sesuai dengan kegunaan.
Bagian pertama adalah baris 1 sampai baris 3, bagian yang dibatasi
oleh dua pembatas /
*
dan
*
/,
1 / Program hel l o . c
2 Menampilkan t ext Hello World ! ! !
3 /
Listing 2.2: Program Hello World
merupakan sebuah komentar atau catatan untuk programer. Semua
tulisan apa saja di antara dua pembatas /
*
dan
*
/ dianggap kompiler
sebagai komentar dan tidak diproses atau diabaikan sehingga tidak
mempengaruhi linerja program. komentar atau catatan ini bukan di-
tujukan untuk mesin komputer, melainkan untuk pengguna supaya
lebih jelas. Catatan singkat biasa digunakan untuk menjelaskan ten-
tang program, cara kerja, varaibel yang digunakan dan hal-hal lain
yang dianggap penting. Jika kita bayangkan beberapa waktu kedepan
setelah kita membuat program, kita ingin memperbaiki atau menggu-
nakan atau mengubah program, tentunya kita tidak akan bisa mela-
kukannya tanpa ada penjelasan isi program. Perlu diingat bahwa kita
8 Hello World!
mungkin mengingat semua variabel, proses yang kitat gunakan sebe-
lumnya. Maka penting sekali untuk setiap pembuatan program dii-
kutsertakan untu kpenjelasan singkat di awal atau pun didalam pro-
gram. Di samping itu, jika kita bekerja tidak sendirian dalam pembu-
atan program besar, komunikasi antara programer dilakukan melalui
komentar atau catatan singkat tersebut. Tanpa adanya dokumenta-
si yang jelas program akan mempersulit pembuatan program, karena
adanya konik 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 apa-
pun yang dimulai dengan tanda // sampai bagian baris terakhir meru-
pakan 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 progra-
maer dapat menimformasikan apa yang penting.
Baris ke 5 mengadung sebuah preprocessor yaitu #include <stdio.h>.
Baris ini yang berawalan dengan tanda (#) yang menyatakan perintah-
perintah untuk preprocessor. Perintah-perintah ini bukan barisan co-
de yang biasanya. Ini diperuntukkan bagi preprocessor dari kompiler.
Dalam perintah diatas #include <stdio.h> memberitahu preprocessor un-
tuk memasukan stdio (pustaka untuk input output) standard le. 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 me-
rupakan awal dari denisi 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 sebelumatau 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++ sta-
tement. printf adalah standard output pada C. Arti dari seluruh sta-
tement di atas adalah insert sebuah deretan huruf-huruf yang mana
disini berisi Hello World!.
Kompilasi Program 9
Baris terakhir return 0;. Perintah return menyebabkan selesa-
inya fungsi main. Perintah return bisa diikuti dengan return code
(disini dikembalikan nilai 0). sebuah return code 0 untuk fungsi ma-
in biasanya diartikan programnya berjalan tanpa masalah. Ini yang
paling sering dipakai untuk mengakhiri program C++.
... Ini digunakan untuk menggabungkan banyak statement menja-
di satu bagian. Disini semua statement menjadi bagian fungsi main.
2.2 Kompilasi Program
Setelah kode program dengan bahasa C atau C++ ditulis, proses kom-
pilasi kemudian dilakukan dengan menggunakan kompiler. Cara kom-
pilasi tergantung pada kompiler yang digunakan. Untuk mengubah
kode program menjadi sebuah program yang bisa dieksekusi, ada dua
tahapan, compile dan link, yang dilakukan seperti ditunjukkan pada
Gambar 2.2.
Gambar 2.2: Proses kompilasi kode program menjadi program execu-
table yang bisa dieksekusi.
Dua tahapan dapat dilakukan sekaligus dengan menggunakan pilihan-
pilihan pada kompiler. Pada bab ini kita akan membahas proses kom-
pilasi menggunakan kompiler gcc untuk bahasa C dan g++ untuk
bahas C++ yang sudah tersedia di dalam Cygwin, MinGW dan Li-
nux. 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. Per-
intah perintah yang digunakan untuk kompilasi adalah sebagai beri-
kut:
1. Kompilasi tanpa pilihan
10 Hello World!
gcc hello.c
Ini akan menghasilkan executable le / program bernama a.exe
(pada cygwin) atau a.out (pada linux). Kemudian program dija-
lankan 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 le / pro-
gram 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 le bernama namale.o,
pada perintah di atas menghasilkan hello.o. File object ini ke-
mudian dilink dengan libary dan le-le 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 penu-
lisan 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 lain-
nya merupakan bagian dari sebuah komentar atau string. Pemisahan
Formatting 11
Gambar 2.3: Jendela terminal Cygwin untuk kompilasi kode program.
antara perintah yang satu dengan yang lain, bahasa C dan C++ meng-
gunakan tanda titik koma ;.
Jadi dua kode dibawah ini (Listing 2.3 dan Listing 2.4).menghasilkan
hal yang sama seperti Listing 2.1.
1 / Program hel l o . c
2 Menampilkan t ext Hello World ! ! !
3 / #i ncl ude<st di o . h>
4 i nt main ( ) { / / tampilkan pada l ayar
5 pr i nt f ( Hello World ! ! ! \ n ) ; return 0; }
Listing 2.3: Program Hello World
1 / Program hel l o . c
2 Menampilkan t ext Hello World ! ! !
3 /
4 #i ncl ude<st di o . h>
5 i nt
6 main ( ) { / / tampilkan pada l ayar
7 pr i nt f ( Hello World ! ! ! \n ) ;
8 return 0;
9 }
Listing 2.4: Program Hello World
Bentuk atau format digunakan untuk mempermudah membaca struk-
tur program.
3
Konvensi Penulisan
Bab ini membahas tentang bagaimana konvensi penulisan sehingga ti-
dak 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 ti-
dak dijelaskan dengan bab-tersendiri pada buku-buku pemrogralamn
lain. tetapi setelah melihat banyaknya kekeliruan yang dilakukan ma-
hasiswa, 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 pe-
nulisannya juga berbeda. Maka kita harus ingat setiap perintah tidak
diakhiri dengan tanda titik koma (;).
kegunaan preprocessing apa? untuk memerintahkan kompiler me-
nambahkan 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
3.2 Bagian Komentar
Komentar atau catatan-catatan yang penting bagi programer ditulis
dengan menggunakan dua tanda batas /
*
(di awal) dan
*
/ (di
akhir). Sebagai contoh pada Listing 3.1.
1
2 / Catatan penggunaan program ( sebuah komentar satu bari s ) /
3
4 / Catatan penggunaan program
5 sebuah contoh komentar beberapa bari s
6 /
7
8 / / Catatan penggunaan program ( sebuah komentar satu bari s )
9
10 a = 5; / / percepatan dalam satuan m/ s 2
Listing 3.1: Contoh penulisan komentar menggunakan /* */
Komentar untuk satu baris saja dapat menggunakan // untuk
mengawali komentar seperti contoh pada Listing 3.1. Tanda // da-
pat diletakkan di mana saja dan semua tulisan di bagian kanan tanda
ini merupakan komentar. Komentar dengan cara ini berguna untuk
menyisipkan catatan-catatan pendek pada kode sehingga program bi-
sa lebih dipahami.
Penggunaan tanda komentar yang bersarang tidak bisa digunak-
an. Dengan kata lain, tanda komentar diletakkan di dalam tanda ko-
mentar tidak diperbolehkan. Sebagai contoh Listing 3.2 yang menun-
jukkan komentar bersarang, dan jika dikompilasi akan menghasilkan
error. Kompiler hanya melihat tanda awal (\
*
) dan tanda akhir (
*
\)
saja. Tanda \
*
di antara tanda \
*
. . . .
*
\ akan dianggap ko-
mentar. Sehingga akan menimbulkan kekeliruan.
1
2 / Penggunaan komentar yang ti dak diperbolehkan
3
4 / komentar di dalam komentar /
5
6 Menghasilkan error kompilasi
7 /
Listing 3.2: Penggunakan /* */ yang salah
Bagian Program 15
3.3 Bagian Program
Tanda-tanda penting yang perlu diingat dalam penulisan perintah-
perintah dengan bahasa C++ adalah
1. Tanda titik koma (;)
Tanda ; digunakan untuk memisahkan perintah-perintah. Se-
hingga diakhir dari satu perintah harus ada tanda ; . Jika tan-
da ini tidak ada akan terjadi kekeliruan. Ingat dalam c++ tanda
spasi, tab atau baris kosong dianggap sama atau disebut white
space.
2. Tanda koma (,)
Tanda koma digunakan untuk memisahkan variabel-variabel pa-
da saat initialisasi atau deklarasi, input suatu fungsi, dan pemi-
sahan nilai-nilai awal untuk variabel.
3. Tanda kurun biasa, ( )
Digunakan untuk sebuah fungsi dan seperti halnya untuk memi-
sahkan hitungan yang harus dilakukan terlebih dahulu.
4. Tanda kurung kurawa, { }
Digunakan untuk menggabung banyak perintah menjadi satu ke-
satuan perintah. Listing 4.1 memberikan contoh penggabungan
banyaka perintah menjadi satu set.
1 / / Jika satu perintah yang dilakukan
2 while ( a < 100) a = a + 2;
3
4 / / Jika banyak perintah
5 while ( a < 100)
6 {
7 a = a + 2;
8 pr i nt f ( ni l ai a = %d , a) ;
9 }
Listing 3.3: Penggunakan { }
4
Identier, Penamaan dan Tipe
Data
Dalam pemrograman kita perlu menggunakan suatu variabel, fungsi,
dan prosedur. Setiap variabel, fungsi dan prosedur memiliki nama
tersendiri sehingga kita dapat memanggilnya atau menyebutkannya.
Sebuah perintah memerlukan sebuah pengenal yang mana komputer
mengetahui apa maksudnya.
Pemberian nama atau identier untuk variabel, fungsi dan prose-
dur di dalam bahasa C dan C++ mempunyai aturan tersendiri. Bab
ini membahas bagaimana memberikan nama sehingga sesuai dengan
aturan bahasa C atau C++.
4.1 Identier , Nama Pengenal
Sebuah identier merupakan sebuah nama pengenal suatu variabel,
fungsi, label, dan object yang lain. Dalam bahasa C dan C++ memiliki
aturan tertentu tentang bagaimana memberikan sebuah nama atau
identier. Aturan-aturan pemberian identier adalah sebagai berikut:
1. Sebuah identier dapat terkandung huruf-huruf, huruf kecil (a...z)
atau huruf besar (A...Z), angka (0...9) dan tanda garis-bawah
( _ ). Spasi dan tanda-tanda lain ( :,;.!#\$%&?@()-
*
/\{}[]="|<>
+) tidak boleh dipergunakan.
2. Sebuah nama harus dimulai dengan huruf atau garis bawah. Ang-
ka tidak boleh digunakan untuk memulainya.
3. Huruf besar dan kecil dibedakan.
4. Nama bisa mempunyai jumlah karakter yang banyak, tetapi ha-
nya 31 huruf pertama yang dikenal oleh kompiler (standar ANSI
18 Identier, Penamaan dan Tipe Data
C).
5. Tidak boleh memakai reserved words (kata-kata yang sudah
mempunyai arti di dalam bahasa C dan C++).
Sebuah identier atau nama pengenal yang benar untuk bahasa C
dan C++ adalah sebuah deretan satu atau lebih huruf-huruf, angka-
angka atau garis bawah (_). Tidak boleh menggunakan operator hi-
tung (+-/
*
%) dan karakter-karakter khusus (:;#@\$& dan titik).
Nama variabel tidak boleh berisi spasi. Hanya huruf-huruf, angka-
angka dan satu garis bawah yang benar. Sebagai aturan tambahan,
identier harus dimulai dengan huruf dan bisa juga dengan garis ba-
wah (_). Angka tidak bisa mengawali sebuah variabel. Tanda garis ba-
wah (_) sebagai awal suatu identier biasanya digunakan untuk vari-
abel, fungsi dan prosedur yang digunakan oleh kompiler. Penggunaan
tanda garis bawah untuk huruf awal identier sebaiknya dikurangi.
Bahasa pemrograman C dan C++ membedakan huruf besar dan hu-
ruf kecil, sebagai contoh kecepatan dan Kecepatan merupak-
an dua variabel/identier yang berbeda. Sehingga perlu diperhatik-
an nama-nama yang kita berikan. Penamaan huruf besar dan kecil
walaupun tidak ada aturannya, programer biasanya memilih menggu-
nakan huruf kecil untuk variabel-variabel dan huruf besar untuk sua-
tu konstanta, seperti suhu dan PI. Programer biasanya memisahkan
kata-kata dalam satu identier/variabel dengan huruf besar atau garis
bawah, sebagai contoh, tinggiBadan atau tinggi_badan.
Panjang nama variabel boleh berapa saja, tetapi hanya 31 karakte-
r/huruf pertama yang dikenal oleh kompiler.
Beberapa nama-nama variabel atau fungsi yang sudah digunakan
oleh bahasa C dan C++ atau reserved keywords. Untuk menghindari
konik (agar kompiler tidak kebingungan dalam menentukan maksud
kode program) maka perlu kita memperhatikan nama-nama atau iden-
tier yang sudah digunakan oleh kompiler C atau C++ sehingga tidak
digunakan lagi. Reserved keywords yang ada dalam bahasa C dan C++
adalah sebagai berikut
1 asm, auto , bool , break , case , catch , char , cl ass , const ,
2 const cast , continue , def aul t , del ete , do , double , dynamic cast ,
3 el se , enum, e xpl i c i t , export , extern , f al se , f l oat , f or , f ri end ,
4 goto , i f , i nl i ne , i nt , long , mutable , namespace , new, operator ,
5 pri vate , protected , publ i c , regi st er , r ei nt er pr et c ast , return ,
6 short , signed , si zeof , st at i c , s t at i c c as t , struct , switch ,
7 template , thi s , throw , true , try , typedef , typeid , typename ,
Tipe Variabel 19
8 union , unsigned , using , vi rt ual , void , vol at i l e , wchar t , while
Listing 4.1: Reserved identier atau nama yang sudah digunakan oleh
kompiler
Contoh-contoh identier yang benar: d, _nim, laju0, hitung_gaya.
Contoh-contoh identier yang salah: harga!, 2alamat,
*
bintang, hitung gaji.
4.2 Tipe Variabel
Untuk melakukan suatu komputasi, kita memerlukan variabel-variabel
untuk menampung nilai yang dihitung. Sebelum menggunakan sua-
tu variabel, terlebih dahulu variabel tersebut dideklarasikan sehingga
kompiler mengenali variabel tersebut. Deklarasi sebuah variabel dila-
kukan dengan menuliskan nama tipe data dan kemudian nama varia-
bel seperti kode program
1 f l o at suhu;
yang mendeklarasikan variabel suhu dengan tipe data oat (oating
point)(lihat Tabel 4.1.
Listing 4.2 merupakan sebuah contoh program dengan deklarasi
tipe data int,float dan char.
1 / / Deklarasi vari abel
2
3 #i ncl ude<st di o . h>
4
5 i nt main ( )
6 {
7 i nt a , b , c ; / / t i pe i nteger
8 i nt c = 34; / / i ni s i al i s as i vari abel
9 f l o at f , g , h; / / t i pe f l o at
10 char z = P ; / / t i pe character , huruf
11
12 a = 2;
13 b = a + c ;
14
15 f = 4. 2;
16 g = 9. 0;
17
18 f = f + g ;
19 g = f / g ;
20
21 h = a / b ;
20 Identier, Penamaan dan Tipe Data
22
23 pr i nt f ( Ni l ai b = %d\n , b) ;
24 pr i nt f ( Ni l ai f = %f \n , f ) ;
25 pr i nt f ( Ni l ai h = %f \n , h) ;
26
27 return 0;
28 }
Listing 4.2: Program menggunakan variabel untuk kalkulasi,
deklarasi, assignmen, dan kalkulasi, konversi data
Tipe-tipe data yang dikenal dalam bahasa C dan C++ tergantung
pada kompiler yang digunakan. Secara umum tipe-tipe yang biasa
digunakan ditampilkan pada Tabel 4.1. Yang perlu diperhatikan di
dalam Tabel 4.1 adalah ukuran data dan nilai-nilai yang bisa ditam-
pung oleh suatu tipe data. Perhitungan akan mengalami kesalahan
jika angka yang digunakan di luar dari apa yang bisa ditampung oleh
tipe data. Sebagai contoh, kita deklarasikan variabel bil_bulat de-
ngan tipe data int,
1 i nt bi l bul at ;
2
3 bi l bul at = 40; / / OK
4 bi l bul at = 40000; / / ti dak benar , karena l ebi h dari 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 digunak-
an 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 mak-
sud 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 hu-
ruf. Tipe data float merupakan tipe data untuk bilangan-bilangan
oating-point atau titik mengambang atau desimal (scientic num-
ber). Tipe data float bisa menampung bilangan desimal dan mem-
punyai nilai terkecil dan terbesar yang bisa ditampung (1.175e-38
Variabel Local dan Global 21
dan 3.402e38). Tipe data double merupakan tipe data untuk bi-
langan oating-point, tetapi menggunakan ukuran memori yang dua
kali ukuran tipe data float. Bilangan terkecil dan terbesar yang bi-
sa 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 da-
ta short int memiliki ukuran setengah kali ukuran tipe data int.
Begitu pula untuk kata long yang artinya panjang, mengindikasik-
an 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 nt umur ;
Kita bisa memastikan bahwa variabel umur tidak memiliki nilai nega-
tif.
Data types char, short, long dan int bisa bersifat signed or unsig-
ned tergantung dari interval bilangan yang direpresentasikan. Signed
types bisa mempunyai kedua nilai positif dan negatif. Tetapi unsigned
hanya mempunyai nilai positif saja.
4.3 Variabel Local dan Global
Dalam bahasa pemrograman, dikenal variable yang bersifat lokal dan
global. Variabel local maksudnya bahwa variabel tersebut hanya di-
kenal pada daerah local atau pada suatu fungsi tertentu. Fungsi lain
tidak akan mengenali variabel local pada fungsi lain. variabel-variabel
local dideklarasikan hanya di wilayah atau daerah fungsi tersebut dan
dikenal hanya pada wilayah tersebut. Sehingga kita bisa mendeklara-
sikan variabel dengan identier yang sama pada fungsi lain.
Variabel global mkasudnya adalah variabel yang dikenal diseluruh
program. Jadi semua fungsi pada program mengenali dan dapat meng-
akses variabel tersebut. Sehingga perlu pemakaian variabel global
perlu diperhatikan karena semua fungsi-fungsi dapat memanipulasi
data yang ada pada variabel tersebut. Variabel global dideklarasikan
diluar fungsi-fungsi dan funsi main() sebagai contoh berikut ini.
22 Identier, Penamaan dan Tipe Data
Tabel 4.1: Tipe data yang dimili-
ki bahasa C dan C++
Tipe Data Ukuran (Byte) Nilai yang bisa ditampung
char 1 -128 ... 127
unsigned char 1 0 ... 255
signed char 1 -128 ... 127
int 2 -32768 ... 32767
short int 1 -32768 ... 32767
unsigned int 2 0 ... 65535
signed int 2 -32768 ... 32767
long int 4 -2147483648 ... 2147483647
unsigned long int 4 0 ... 4294967295
signed long int 4 -2147483648 ... 2147483647
oat 4 3.4e-38 ... 3.402e38
double 8 1.175e-308 ... 1.17e308
long double 10 3.65e-4951 ... 1.18e4932
void 0 tidak bernilai
1 #i ncl ude<st di o . h>
2 / / dekl arasi vari abel gl obal
3 f l o at tegangan;
4
5 i nt main ( )
6 {
7 / / dekl arasi vari abel l o c al
8 f l o at arus = 1. 0 , r e s i s t o r = 1000;
9
10 tegangan = arus r e s i t o r ;
11
12 pr i nt f ( tegangan = %f \n , tegangan) ;
13
14 return 0;
15 }
Variabel tegangan adalah merupakan variabel global dan arus
dan resistor adalah variabel local.
Konstanta 23
4.4 Konstanta
Menghitung besaran-besaran sis dalam bidang sika 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 su-
atu identier merupakan konstanta.
Cara pertama adalah pada saat deklarasi variabel ditambahkan ke-
yword const sebelum nama tipe data seperti
1 const f l o at PI = 3. 14159, KECEPATANSUARA = 343;
2 const char pri ntout [ ] = I ni konstanta st ri ng ;
Cara kedua untuk menyatakan suatu konstanta adalah dengan meng-
gunakan fasilitas preprocessor #define sebagai contoh berikut ini.
1 #i ncl ude<st di o . h>
2 #i ncl ude<math. h>
3
4 #def i ne PI 3.14159
5
6 i nt main ( )
7 {
8 f l o at sudut = 45, b ;
9
10 b = si n ( sudutPI / 180. 0)
11
12 return 0;
13 }
Preprocessor #define artinya sebelum kode program dikompilasi,
semua identier yang namanya ada setelah #difine diganti dengan
nilai atau teks setelah nama identier. Sebagai contoh pada listing di
atas, sebelum kompilasi kode program, semua keyword PI digantin
dengan angka 3.14159. Atau dengan kata lain kode program diatas
sama dengan kode program berikut ini.
1 #i ncl ude<st di o . h>
2 #i ncl ude<math. h>
3
4 i nt main ( )
5 {
6 f l o at sudut = 45, b ;
24 Identier, Penamaan dan Tipe Data
7
8 b = si n ( sudut 3. 14159/ 180. 0)
9
10 return 0;
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
Cara Kedua: Disini kita mendeklarasikan sebuah variabel yang bernilai
#include<iostream> #include<cmath> using namespace std; # define PI 3
Library untuk fungsi-fungsi Matematika
int main() { const float pi = 3.14159; cout << " sin(pi) = " << sin(P
5
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 = memi-
liki maksud tersendiri tidak seperti yang ada di bidang matematika.
Mari kita pelajari dengan menggunakan contoh dua perintah berikut
ini.
1 a = b ;
2 a = a + c ;
Contoh perintah pertama a = b; mempunyai arti dalam bahasa
pemrograman yaitu nilai yang ada di variabel b dicopy ke varia-
bel a. Hal ini berbeda dengan prinsip matematika yang mana operasi
= bersifat dua arah. Sedangkan untuk bahasa pemrograman, operator
= bersifat satu arah saja, dari kanan ke kiri. Oleh karena itu, perintah
a = a c;+ dapat dilakukan di dalam pemrograman yang artinya bah-
wa nilai a dan c dijumlahkan terlebih dahulu dan kemudian hasilnya
dimasukkan ke variabel a. Jadi tidak terjadi masalah dari segi kom-
putasi. Perlu diingat bahwa ini merupakan proses mengkopi nilai dari
memori satu ke dalam memori yang lain.
5.1.2 Aritmatika
Dalamkomputasi dengan operator-operator matematis, kita perlu mem-
perhatikan urutan operasi atau yang disebut dengan Operator prece-
dence. Kompiler bahasa C atau C++ mengevaluasi suatu hitungan
26 Operasi Matematika
Tabel 5.1: Operasi aritmatika yang dimiliki bahasa C dan C++
Operasi C Operator Matematis Bahasa C/C++
Penjumlahan + c = a + b c = a + b;
Pengurangan - c = a b c = a - b;
perkalian * c = a b c = a
*
b
pembagian / c = a/b c = a/b
Sisa Bagi % c = a mod b c = a%b
sesuai dengan aturan sesuai dengan operator precedence. Urutan ope-
rasi biasanya hampir sama dengan operasi matematika.
Tabel 5.2: Operator precedence, urutan operasi yang dilakukan, dari
atas ke bawah
Operasi C Operator Urutan evaluasi
perkalian
*
Dievaluasi pertama. Jika ada beberapa operasi,
pembagian / dievaluasi dari kiri ke kanan
Sisa Bagi %
Penjumlahan + Jika ada beberapa operasi,
Pengurangan - dievaluasi dari kiri ke kanan
1 rata rata1 = ( a + b + c + d) / 4 ;
2
3 / / ti dak sama dengan
4
5 rata rata2 = a + b + c + d / 4;
Tanda kurung diperlukan karena pembagian memiliki urutan yang
lebih tinggi higher precedence dibandingkan dengan penjumlahan.
1 y = ab%c + d / 3;
yang dilakukan pertama adalah a*b kemudian hasilnya di sisa bagi
terus kemudian ditambahkan dengan hasil d dibagi 3.
1 y = axx + bx + c ;
Proses yang sebenarnya dilakukan oleh program adalah
Aritmatika dengan dua operator 27
1 h1 = ax ;
2 h2 = zx ;
3 h3 = bx ;
4 h4 = h1 + h2;
5 h5 = h4 + c ;
5.2 Aritmatika dengan dua operator
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;
5.3 Operasi-operasi logika
Tabel 5.4: Operasi logika yang dimiliki bahasa C dan C++
Operasi C Operator Bahasa C/C++
Tidak ! !a
Sama dengan = == a == b
Tidak sama dengan = != a != b
Lebih besar dari > > a > b
Lebih besar dari atau sama dengan >= a >= b
Lebih kecil dari < < a < b
Lebih kecil dari atau sama dengan <= a <= b
28 Operasi Matematika
5.4 Konversi Tipe
Jika dalam sebuah ekspresi ada beberapa konstanta dan variabel yang
tipenya berbeda, dalam perhitungan kompiler c dan C++ akan menya-
makan tipenya. Kompiker C dan C++ akan mengubah setiap operan
menjadi tipe lebih besar. Hal ini dikerjakan pada setiap operasi satu
per satu.
Aturan-aturan konversi:
1. If either of the operands is of type oat then the other operand is
converted to the same type.
2. If either of the operands is of type long int or unsigned long int
then the other operand is converted to the same type.
3. Otherwise, if either of the operands is of type int or unsigned int
then the other operand is converted to the same type.
4. Thus char type or unsigned char type gets the lowest priority.
1 i nt a = 2;
2 i nt b= 1;
3 f l o at c =6. 3;
4 c = ab ;
5 c = 2/ a ;
6 c = 2. 0/ a ;
7 c = a / c ;
Untuk menghindari kesalahan dalam konversi bilangan yang dila-
kukan oleh kompiler, kita menggunakan tipe casting yang eksplisit.
1 i nt a = 4;
2 i nt b = 2;
3 f l o at c = 6. 3;
4 f l o at d ;
5 / / casti ng
6 b = a + ( i nt ) c ;
Type casting dapat juga digunakan untuk menghindari overow
atau underow, atau bilangan ke luar jangkauan tipe data, ketika ope-
rasi perkalian dan pembagian dua bilangan.
operasi binari 29
1 i nt a = 5000, b = 4000;
2 f l o at c = 1. 0E30, d = 1. 5E12;
3 long i nt c ;
4 double f ;
5
6 / / ni l ai ( ab) ke l uar i nt erval bilangan
7 c = ab ;
8 / / ni l ai ( c d) overf l ow
9 f = cd ;
10 / / casti ng untuk menghindari error
11 c = ( long i nt ) ab ;
12 f = ( double ) c d ;
5.5 operasi binari
[akan diisi]
5.6 Fungsi-Fungsi Matematika
Fungsi-fungsi library math.h.
Tabel 5.5: Operasi logika yang dimiliki bahasa C dan C++
f(x) Bahasa C/C++
sin(x) double sin( double x)
cos(x) double cos(double x)
tan(x) double tan( double x)
max(a,b)
min(a,b)
exp(x) double exp(double x)
x
y
double pow(double x,double y)
sqrt(x) double sqrt(double x)
acos(x) double acos(double x)
atan(x) double atan(double x)
sinh(x) double sinh( double x)
cosh(x) double cosh(double x)
tanh(x) double tanh( double x)
Pada saat kompilasi dengan tambahan -lm.
30 Operasi Matematika
Contoh:
1 / / f i l e segi t i ga . c
2 #i ncl ude<st di o . h>
3 #i ncl ude<math. h>
4
5 i nt main ( )
6 {
7 double a = 3 , b = 5 , c ; / / panjang s i s i s i s i segi t i ga
8
9 c = sqrt ( aa + bb) ;
10 / / panjang s i s i miringnya
11 pr i nt f ( panjang s i s i miringnya adalah %l f , c }
12
13 return 0;
14 }
Perintah yang digunakan untuk kompilasi adalah
gcc segitiga.c -lm -o segitiga.exe
.
6
Fungsi Output dan Input
Bab ini membahas tentang bagaimana menampilkan teks pada la-
yar komputer dengan menggunakan fungsi printf() dan putchar()
dan bagaimana mendapatkan masukkan dari keyboard dengan fungsi
scanf() dan getchar()
6.1 Output, Menampilkan Pada Layar
6.1.1 printf()
Untuk menampilkan teks pada layar komputer untuk bahasa pemro-
graman C, kita menggunakan fungsi printf() yang sudah disediak-
an oleh kompiler di pustaka (library) stdio.h. Untuk menggunakan
fasilitas stdio.h kita harus memasukkan protopipe yang terdapat di
stdio.h. Kita memberitahu kompiler untuk menambahkan pustaka (li-
brary) stdio.h dengan perintah #include pada saat preprocessing.
1 #i ncl ude<st di o . h>
Bentuk penulisan fungsi printf() adalah sebagai berikut.
1 voi d pr i nt f ( char st r , arg1 , arg2 , . . . )
2 / / contoh :
3 pr i nt f ( . . . . st ri ng / kalimat . . . . %f %d , var1 , var2 ) ;
Untuk memulai baris baru, tambahan \n digunakan seperti beri-
kut ini.
1 pr i nt f ( I ni bari s pertama \n Baris kedua \n Baris keti ga ) ;
32 Fungsi Output dan Input
Tambahan \n adalah sebuah escape sequence atau untuk menghin-
dar atau keluar.
Selain \n, enscape sequence yang lain ditunjukkan pada Tabel ??.
Tabel 6.1: Escape sequence un-
tuk 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
specier) pada string/kalimat dan kemudian diikuti dengan variabel-
nya. Cara memformat bilangan disesuaikan dengan tipe datanya.
Untuk lebih jelas, mari kita lihat dua contoh berikut ini.
1
2 pr i nt f ( Ni l ai parameter alpha = %f , alpha ) ;
3
4 pr i nt f ( Posi si part i kel = (%f ,%f ) , x , y ) ;
Secara garis besar format specier harus dimulai dengan tanda %
dan diikuti dengan huruf yang menyatakan bentuk dari output. Se-
perti contoh "%f" menunjukkan bahwa output berbentuk bilangan o-
ating point (untuk tipe data oat). Format specier yang lain dapat
dilihat pada Table 6.2.
Output, Menampilkan Pada Layar 33
Tabel 6.2: Format string
Format Penjelasan
i signed decimal integer
d signed decimal integer
u unsigned decimal integer
e untuk oat, dengan bentuk [-]d.dddddd e[-]dd
E untuk oat, dengan bentuk [-]d.dddddd E[-]dd
f untuk oat, dengan bentuk [-]ddd.dddddd
x unsigned hexadecimal integer dengan huruf kecil
X unsigned hexadecimal integer dengan huruf besar
c untuk satu huruf
s untuk string
p untuk string
7
Kontrol Aliran dan Pengulangan
Pada bab ini kita akan membahas bagaimana mengatur aliran perintah-
perintah yang kita berikan dengan menggunakan pernyataan if..else dan
melakukan pengulangan dengan cara for , while dan do...while .
7.1 Kontrol Aliran
7.1.1 if dan else
Bentuk umum penggunaan if yaitu
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 Kontrol Aliran dan Pengulangan
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;
}
7.2.3 do ... while
do{
pernyataan;
}while(kondisi)
7.2.4 break dan continue
for(pernyataan1; pernyataan2; pernyataan3){
Pengulangan 37
pernyataanA;
break;
pernyataanB;
}
for(pernyataan1; pernyataan2; pernyataan3){
pernyataanA;
continue;
pernyataanB;
}
8
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
\section{Array sebagai input fungsi}
Contoh: void cetaknilai(int a[],int n) { for(int i = 0; i<n; i++){ cout <<
Array sebagai input fungsi
Contoh: void cetaknilai(int a[][4],int n) { for(int i = 0; i<n; i++){ for(
\section{String dibuat dengan array char}
Contoh: int main() { char nama[20] = "Einstein"; cout << "nama : " << nama
9
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
double seratus(void); // deklarasi int main() { cout << seratus; } // defi
#include <iostream> using namespace std;
Fungsi, Void 2
void cetakgaris(void); // deklarasi int main() { cetakgaris(); } // defini
42 Fungsi
Dua Cara Input/masukan Fungsi
Cara 1) Input menggunakan nilai Seperti sebelumnya: double tambah(dou
#include <iostream> using namespace std;
Fungsi
void limakali(double &x); // deklarasi int main() { double a = 2; lim
#include <iostream> using namespace std;
Fungsi
void tukar(double &x, double &y); // deklarasi int main() { double a
#include <iostream> using namespace std;
Fungsi, Variabel global
double x=2; // global variabel x void limakalix(void); // deklarasi i
Kita bisa mendeklarasikan banyak fungsi dengan nama fungsi yang sama
Fungsi, Overloaded
Fungsi, Inline
Keyword inline digunakan untuk menambahkan kode fungsi itu dimanapun
Functions Previous Top Next
You may use function prototypes to declare a function.
These declarations include information about the function parameters.
Example:
int alfa(char par1, int par2, long par3);
The actual function definition may be written somewhere else as:
int alfa(char par1, int par2, long par3) {
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
Structures are user-defined collections of named members.
The structure members can be any of the supported data types, arrays of th
Structures are defined using the struct reserved keyword.
The syntax is:
[<memory attribute>] struct [<structure tag-name>] {
[<type> <variable-name>[,<variable-name>, ...]];
[<type> [<bitfield-id>]:<width>[,[<bitfield-id>]:<width>, ...]];
...
} [<structure variables>];
Example:
/
*
Global structure located in RAM
*
/
struct ram_structure {
char a,b;
int c;
char d[30],e[10];
char
*
pp;
} sr;
/
*
Global constant structure located in FLASH
*
/
flash struct flash_structure {
int a;
char b[30], c[10];
} sf;
/
*
Global structure located in EEPROM
*
/
eeprom struct eeprom_structure {
char a;
46 Struktur
int b;
char c[15];
} se;
void main(void) {
/
*
Local structure
*
/
struct local_structure {
char a;
int b;
long c;
} sl;
/
*
.............
*
/
}
The space allocated to the structure in memory is equal to sum of the
Structures can be grouped in unidimmensional arrays.
Example how to initialize and access an global structure array stored
/
*
Global structure array located in EEPROM
*
/
eeprom struct eeprom_structure {
char a;
int b;
char c[15];
} se[2]={{a,25,"Hello"},
{b,50,"world"}};
void main(void) {
char k1,k2,k3,k4;
int i1, i2;
/
*
define a pointer to the structure
*
/
struct eeprom_structure eeprom
*
ep;
/
*
direct access to structure members
*
/
k1=se[0].a;
i1=se[0].b;
k2=se[0].c[2];
k3=se[1].a;
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
*
/
};
/
*
this structure will occupy 2 bytes in RAM
as the bit field data type is unsigned int
*
/
struct alpha2 {
unsigned int a:2; /
*
bits 0..1
*
/
unsigned int b:8; /
*
bits 2..9
*
/
unsigned int c:4; /
*
bits 10..13
*
/
/
*
bits 14..15 are not used
*
/
};
/
*
this structure will occupy 4 bytes in RAM
as the bit field data type is unsigned long
*
/
struct alpha3 {
unsigned long a:10; /
*
bits 0..9
*
/
unsigned long b:8; /
*
bits 10..17
*
/
unsigned long c:6; /
*
bits 18..23
*
/
/
*
bits 24..31 are not used
*
/
};
Unions Previous Top Next
Unions are user-defined collections of named members that share the s
The union members can be any of the supported data types, arrays of t
Unions are defined using the union reserved keyword.
The syntax is:
[<memory attribute>] [<storage modifier>] union [<union tag-name>] {
[<type> <variable-name>[,<variable-name>, ...]];
[<type> <bitfield-id>:<width>[,<bitfield-id>:<width>, ...]];
...
} [<union variables>];
The space allocated to the union in memory is equal to the size of th
Union members can be accessed in the same way as structure members. E
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
*
/
};
Enumerations Previous Top Next
The enumeration data type can be used in order to provide mnemonic id
The enum keyword is used for this purpose.
The syntax is:
[<memory attribute>] [<storage modifier>] enum [<enum tag-name>] {
[<constant-name[[=constant-initializer], constant-name, ...]>]}
[<enum variables>];
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;
}
Enumerations can be stored in RAM, EEPROM or FLASH.
The eeprom or __eeprom memory attributes must be used to specify enumerati
Example:
eeprom enum days {
sunday, monday, tuesday, wednesday,
thursday, friday, saturday} days_of_week;
The flash or __flash memory attributes must be used to specify enumeration
Example:
flash enum months {
january, february, march, april, may, june,
july, august, september, october, november,
december}
months_of_year;
It is recommended to treat enumerations as having 8 bit char data type, by
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
Lab 1: Pengenalan Bahasa C
Pada Lab 1 ini kita akan mempelajari tentang bahasa C yang seder-
hana terutama tentang bagaimana mengkompilasi dan menjalankan
program yang kita buat. Untuk lebih mengerti proses yang akan dila-
kukan dalam bahasa C, mari kita lakukan hal-hal dibawah ini.
11.1 Penulisan Kode C
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 pr i nt f ( Hello C++ \n ) ;
9 pr i nt f ( Saya bi sa membuat program dengan C ) ;
10
11 return 0;
12 }
Setelah selesai mengetik kode di atas, kemudian simpan kode ter-
sebut ke le 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 le yang telah kita telah buat berada.
Kemudian kita kompilasi kode tersebut dengan salah satu perintah
berikut ini:
54 Lab 1: Pengenalan Bahasa C
$ 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 Modikasi
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.
printf(" ini tab a\t b \t c");
printf(" ini baris baru a\n b \n c \n");
printf(" ini garis miring \\ \" ");
Cobalah modikasi apa saja yang anda ingin tampilkan pada layar.
Lab 2: Pengenalan Variabel dan Operasi Matematis 55
11.3 Lab 2: Pengenalan Variabel dan Operasi
Matematis
11.3.1 Deklarasi Variabel
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 i nt a , b = 3 , c = 2;
9
10 pr i nt f ( ni l ai a = %d \n , a) ;
11 pr i nt f ( ni l ai b = %d \n , b) ;
12 pr i nt f ( ni l ai c = %d \n , c ) ;
13
14 a = b + c ;
15
16 pr i nt f ( ni l ai a = %d \n , a) ;
17
18 return 0;
19 }
Berapakah nilai a, b dan c?
11.3.2 Kesalahan Penulisan Variabel
Tambahkan kode berikut ini pada kode di atas dan catat apa kesalahan
yang muncul pada waktu kita kompilasi kode.
1
2 i nt 2apel ;
3 long banyak ! ;
4 double desimal ;
5 double desi mal ;
6 double DESI mal ;
56 Lab 1: Pengenalan Bahasa C
11.3.3 Tipe Data Variabel
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 i nt a = 2 , b = 3 , c , d ;
9 f l o at p = 2 , q = 3 , r ;
10
11 c = a / b ;
12 r = p / q ;
13 a = i + j ;
14 b = i %4;
15
16 pr i nt f ( Baris 1: ni l ai c = %d \n , c ) ;
17 pr i nt f ( Baris 2: ni l ai r = %d \n , r ) ;
18 pr i nt f ( Baris 3: ni l ai r = %f \n , r ) ;
19 pr i nt f ( Baris 4: ni l ai b = %d , b) ;
20
21 return 0;
22 }
Berapakah nilai c (Baris 1) dan r (Baris 2 dan 3)? Apa yang ditam-
pilkan pada layar ketika kita kompilasi? dan ketika program diekse-
kusi? 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 be-
berapa baris kode c++ berikut ini dan perhatikan baris scanf.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at x , y ;
9
Lab 2: Pengenalan Variabel dan Operasi Matematis 57
10 pr i nt f ( Masukkan ni l ai x : \n ) ;
11 scanf ( %f ,&x ) ;
12
13 pr i nt f ( Ni l ai yang Anda masukkan adalah %f \n , x ) ;
14
15 pr i nt f ( Masukkan dua ni l ai x dan y : \n ) ;
16 scanf ( %f %f ,&x , &y ) ;
17
18 pr i nt f ( Ni l ai yang Anda masukkan adalah %f dan %f \n , x , y ) ;
19 pr i nt f ( Perkalian antara x dan y menghasilkan %f \n , xy ) ;
20
21 return 0;
22 }
Perhatikan baris yang mengadung fungsi scanf. Mengapa kita
menggunakan simbol &? Apa yang terjadi jika tanda format %f di-
ganti dengan %d pada fungsi scanf? Mengapa hasil yang dilihat pada
layar berbeda dengan apa yang dimasukkan?
12
Lab 3: Pengenalan dene dan
math.h
12.1 Dene dan const
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 #def i ne pi1 3.14159
7
8 i nt main ( )
9 {
10 const f l o at pi2 = 3. 14159;
11
12 pr i nt f ( ni l ai pi1 = %f \n , pi1 ) ;
13 pr i nt f ( ni l ai pi2 = %f \n , pi2 ) ;
14
15 return 0;
16 }
Apa perbedaan pi1 dan pi2?
12.2 math.h
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
60 Lab 3: Pengenalan dene dan math.h
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5 #i ncl ude<math. h>
6
7 #def i ne pi 3.14159
8
9 using namespace std ;
10
11 i nt main ( )
12 {
13 f l o at sudut = 38; / / dalam deraj at
14
15 pr i nt f ( si n(%f ) = %f \n , si n ( pi sudut / 180. 0) ) ;
16 pr i nt f ( cos(%f ) = %f \n , cos ( pi sudut / 180. 0) ) ;
17
18 return 0;
19 }
Berapa nilai sin(38) dan cos(38)?
Tambahkan fungsi-fungsi matematis lainnya.
12.3 Latihan-latihan
1. Buatlah program untuk mengkonversi sebuah nilai temperature
dalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan
rumus
T
F
=
9
5
T
C
+ 32 (12.1)
. 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
rumus: s = (x + y + z) = 3 dan p =
3

xyz. Disini input program


adalah x, y dan z, dan output program adalah s dan p.
13
Lab 4: Pengenalan for, while dan
do while
13.1 for
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 i nt i ;
9 i nt s ;
10
11 f or ( i =1; i <=20; i ++) {
12 pr i nt f ( ni l ai i = %d \n , i ) ;
13 }
14
15 s = 0;
16 f or ( i =1; i <=20; i ++) {
17 s = s + 1;
18 }
19
20 pr i nt f ( ni l ai s = %d \n , s ) ;
21
22 return 0;
23 }
Apa yang ditampilkan pada layar? berapakah nilai s? Mengapa
nilai s demikian? Jika menggunakan rumus deret aritmatika atau de-
62 Lab 4: Pengenalan for, while dan do while
ngan kalkulator, hitunglah nilai s. Bandingkan hasilnya.
13.2 while
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5 #i ncl ude<math. h>
6
7 i nt main ( )
8 {
9 i nt i , n;
10 f l o at c ;
11 f l o at dx ;
12 f l o at x ;
13
14 dx = 0. 1;
15 n=10;
16
17 i =1;
18 pr i nt f ( NO X SIN(X) \n ) ;
19 while ( i <n) {
20 x = i dx ;
21 c = cos ( x ) ;
22 pr i nt f ( %d %f %f \n , i , x , c ) ;
23
24 i ++;
25 }
26
27 return 0;
28 }
Apakah yang dilakukan oleh program C di atas? Apa kegunaan
baris i=1; dan i++;?
13.3 do-while
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
do-while 63
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5 #i ncl ude<math. h>
6
7 i nt main ( )
8 {
9 i nt i , n;
10 f l o at c ;
11 f l o at dx ;
12 f l o at x ;
13
14 dx = 0. 1;
15 n= 10;
16
17 i =1;
18 pr i nt f ( NO X SIN(X) \n ) ;
19 do{
20 x = i dx ;
21 c = cos ( x ) ;
22 pr i nt f ( %d %f %f \n , i , x , c ) ;
23
24 i ++;
25 }while ( i <n) ;
26
27 return 0;
28 }
Apakah yang ditampilkan dilayar? apakah sama dengan hasil yang
diperoleh dengan menggunakan while saja? Perhatikan perbedaan
penggunaan while dan do...while di atas? Jika kita ganti baris
n=10; menjadi n=0; pada kedua contoh kode menggunakan while
dan do...while, apa yang ditampilkan pada layar? Apa perbedaan-
nya antara kedua program tersebut?
14
Lab 5: Pengenalan if, else dan
switch
14.1 if
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at x , y ;
9
10 pr i nt f ( Masukkan ni l ai x : \n ) ;
11 scanf ( %f ,&x ) ;
12
13 i f ( x<5.0) pr i nt f ( Angka l ebi h ke c i l dari 5. 0 \n ) ;
14
15 i f ( x>5.0) {
16 pr i nt f ( Angka l ebi h besar dari 5. 0 \n ) ;
17 }
18
19 return 0;
20 }
Apa yang ditampilkan pada layar? Apa perbedaan dua fungsi if di
atas?
66 Lab 5: Pengenalan if, else dan switch
14.2 if else
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at x , y ;
9
10 pr i nt f ( Masukkan ni l ai x : \n ) ;
11 scanf ( %f ,&x ) ;
12
13 i f ( x<5.0) pr i nt f ( Angka l ebi h ke c i l dari 5. 0 \n ) ;
14 el se pr i nt f ( Angka l ebi h dari / sama dengan 5. 0 \n ) ;
15
16 return 0;
17 }
Apa yang ditampilkan pada layar? Perhatikan penggunaan else.
Apa perbedaan penggunaan if pada program sebelumnya?
14.3 if else berantai
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at x ;
9
10 pr i nt f ( Masukkan ni l ai x : \n ) ;
11 scanf ( %f ,&x ) ;
12
13 i f ( x<5.0) pr i nt f ( Angka l ebi h ke c i l dari 5. 0 \n ) ;
14 el se i f ( x<10.0) pr i nt f ( Angka l ebi h besar dari 5. 0 dan l ebi h
ke c i l dari 10. 0 \n ) ;
()?:: 67
15 el se i f ( x<100.0) pr i nt f ( Angka l ebi h besar dari 10. 0 dan
l ebi h ke c i l dari 100.0 \n ) ;
16 el se i f ( x<1000.0) pr i nt f ( Angka l ebi h besar dari 100.0 dan
l ebi h ke c i l dari 1000.0 \n ) ;
17 el se pr i nt f ( Angka l ebi h besar dari 1000.0\n ) ;
18
19 return 0;
20 }
Apa yang ditampilkan pada layar? Perhatikan penggunaan else.
Apa perbedaan penggunaan if pada program sebelumnya?
14.4 ()?::
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at x , y , z ;
9
10 pr i nt f ( Masukkan ni l ai x : \n ) ;
11 scanf ( %f ,&x ) ;
12
13 pr i nt f ( Masukkan ni l ai y : \n ) ;
14 scanf ( %f ,&y ) ;
15
16 z = ( x<y ) ? x : y ;
17
18 pr i nt f ( Ni l ai z = %f \n , z ) ;
19 return 0;
20 }
Apa yang ditampilkan pada layar? Perhatikan penggunaan opera-
tor conditional (()?:). Nilai apa yang ditampilkan oleh program? lebih
besar atau lebih kecil?
68 Lab 5: Pengenalan if, else dan switch
14.5 switch
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 i nt a ;
9
10 pr i nt f ( Masukkan bilangan bul at antara 1 sampai 10: \n ) ;
11 scanf ( %d ,&a) ;
12
13 switch ( a) {
14 case 1:
15 pr i nt f ( Pi l i han Satu\n ) ;
16 break ;
17 case 2:
18 pr i nt f ( Pi l i han Dua\n ) ;
19 break ;
20 case 3:
21 pr i nt f ( Pi l i han Tiga\n ) ;
22 break ;
23 case 4:
24 pr i nt f ( Pi l i han Empat\n ) ;
25 break ;
26 def aul t :
27 pr i nt f ( Pi l i han Lainl ai n \n) ;
28 }
29
30 return 0;
31 }
Apa yang ditampilkan pada layar? Perhatikan penggunaan switch.
15
Lab 6: Pengenalan Fungsi dan
Array
15.1 Fungsi
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt jumlah( i nt a , i nt b) ;
7
8 i nt bagidua ( i nt a) ;
9
10 i nt main ( )
11 {
12 i nt a = 3 , b = 5 , c ;
13
14 c = jumlah( a , b) ;
15
16 pr i nt f ( ni l ai a = %d \n , a) ;
17 pr i nt f ( ni l ai b = %d \n , b) ;
18 pr i nt f ( ni l ai jumlah( a , b) = %d , c ) ;
19
20 return 0;
21 }
22
23 i nt jumlah( i nt a , i nt b)
24 {
25 return ( a+b) ;
26 }
27
28 i nt bagidua ( i nt a)
70 Lab 6: Pengenalan Fungsi dan Array
29 {
30 return ( a / 2) ;
31 }
Jelaskan apa saja yang diperlukan untuk mendenisikan sebuah
fungsi? dan apa kegunaan fungsi jumlah dan bagidua?
15.2 Pengenalan Array
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at a [ 10] ;
9 double b [ 3 ] [ 4 ] ;
10
11 a[ 0] = 7;
12 a[ 1] = 10;
13 a[ 11] = 1;
14 b [ 2] [ 3] = 1002;
15
16 pr i nt f ( a[ 0] = %f \n , a [ 0 ] ) ;
17 pr i nt f ( a[ 1] = %f \n , a [ 1 ] ) ;
18 pr i nt f ( a[ 4] = %f \n , a [ 4 ] ) ;
19 pr i nt f ( b [ 2] [ 3] = %f \n , b [ 2 ] [ 3 ] ) ;
20
21 return 0;
22 }
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
Lab 7: Pengenalan Pointer
16.1 Pointer
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 f l o at a ; / / vari abel t i pe f l o at
9 f l o at p ; / / sebuah poi nter t i pe f l o at
10 a = 2. 3;
11 p = &a ; / / vari abel p be r i s i alamat vari abel a
12
13 pr i nt f ( %f \n , a) ;
14
15 p = 4. 2; / / ki ta ubah ni l ai vari abel a
16
17 pr i nt f ( %f \n , a) ;
18
19 return 0;
20 }
Dengan menggunakan kode ini jelaskan apa saja yang diperlukan
untuk mendenisikan sebuah pointer? dan bagaimana mengunakan
pointer?
72 Lab 7: Pengenalan Pointer
16.2 Pengenalan Operasi Pada Pointer
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<st di o . h>
5
6 i nt main ( )
7 {
8 i nt p , b [ 5 ] ;
9 b[ 1] = 1;
10 b[ 2] = 2;
11 b[ 3] = 3;
12 b[ 4] = 4;
13
14 p = b ; / / p menunjuk ke alamat b[ 0]
15
16 pr i nt f ( ni l ai yang ditunj uk ol eh p = %d\n , p) ;
17
18 p = p + 1; / / p menunjuk ke alamat b[ 1]
19
20 pr i nt f ( ni l ai yang ditunj uk ol eh p = %d\n , p) ;
21
22 p; / / kembali ke alamat b[ 0]
23
24 pr i nt f ( ni l ai yang ditunj uk ol eh p = %d\n , p) ;
25
26 p = p + 3; / / p menunjuk ke alamat b[ 3]
27
28 pr i nt f ( ni l ai yang ditunj uk ol eh p = %d\n , p) ;
29
30 return 0;
31 }
Apa yang ditampilkan pada layar setelah kita dapat mengkompila-
si? Pelajari operasi-operasi yang dapat dilakukan untuk pointer.
16.3 Latihan
1. Baca program C++ dibawah ini.
1 #i ncl ude<st di o . h>
2
Latihan 73
3 voi d swap( f l o at , f l o at ) ;
4
5 i nt main ( )
6 {
7 f l o at a = 2. 5 , b = 6. 0;
8
9 pr i nt f ( %f %f \n , a , b) ;
10
11 swap(&a , &b) ;
12
13 pr i nt f ( %f %f \n , a , b) ;
14
15 return 0;
16 }
17
18 voi d swap( f l o at x , f l o at y )
19 {
20 f l o at t ;
21
22 t = x ;
23 x = y ;
24 y = t ;
25 }
Apa yang dilakukan oleh fungsi swap?
2. Buatlah program yang diberikan input tiga bilangan (x, y dan
z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua
rumus: s = (x + y + z)/3 dan p =
3

xyz. Disini input program


adalah x, y dan z, dan output program adalah s dan p.
17
Lab 1: Pengenalan Bahasa C++
Pada Lab 1 ini kita akan mempelajari tentang bahasa C++ yang seder-
hana 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.
17.1 Penulisan Kode C++
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt main ( )
9 {
10 cout << Hello C++ << endl ;
11 cout << Saya bi sa membuat program dengan C++ << endl ;
12
13 return 0;
14 }
Setelah selesai mengetik kode di atas, kemudian simpan kode ter-
sebut ke le dengan nama dan ekstensi .cpp.
Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cpp
untuk pindah ke folder tempat le yang telah kita ketik berada.
Kemudian kita kompilasi kode tersebut dengan salah satu perintah
berikut ini:
76 Lab 1: Pengenalan Bahasa C++
1
2 $ g++ nama. cpp
3 $ g++ nama. cpp o nama. exe
Ingat tanda $ tidak diketik melainkan hanya menunjukkan baris
perintah pada cygwin atau command prompt.
17.2 Modikasi
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 cout << i ni tab a\ t b \ t c << endl ;
3 cout << i ni bari s baru a\n b \n c \n << endl ;
4 cout << i ni gari s miring \\ \ << endl ;
Cobalah modikasi apa saja yang anda ingin tampilkan pada layar.
18
Lab 2: Pengenalan Variabel dan
Operasi Matematis
18.1 Deklarasi Variabel
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt main ( )
9 {
10 i nt a , b = 3 , c ( 2) ;
11
12 cout << ni l ai a = << a << endl ;
13 cout << ni l ai b = << b << endl ;
14 cout << ni l ai c = << c << endl ;
15
16 a = b + c ;
17
18 cout << ni l ai a = << a << endl ;
19
20 return 0;
21 }
Berapakah nilai a, b dan c?
78 Lab 2: Pengenalan Variabel dan Operasi Matematis
18.2 Kesalahan Penulisan Variabel
Tambahkan kode berikut ini dan catat apa kesalahan yang muncul
pada waktu kita kompilasi kode.
1
2 i nt 2apel ;
3 long banyak ! ;
4 double desimal ;
5 double desi mal ;
6 double DESI mal ;
18.3 Tipe Data Variable
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt main ( )
9 {
10 i nt a = 2 , b = 3 , c ;
11 f l o at i = 2 , j = 3 , k;
12
13 c = 2/ 3;
14 k = i / j ;
15 cout << ni l ai c = << c << endl ;
16 cout << ni l ai b = << b << endl ;
17
18 a = i + j ;
19
20 return 0;
21 }
Berapakah nilai c dan k? Apa yang ditampilkan pada layar ketika
kita kompilasi? dan ketika program dieksekusi? Mengapa nilai c tidak
sama dengan k?
19
Lab 3: Pengenalan Dene dan
cmath
19.1 Dene dan const
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 #def i ne pi1 3.14159
7
8 using namespace std ;
9
10 i nt main ( )
11 {
12 const f l o at pi2 = 3. 14159;
13
14 cout << ni l ai pi1 = << pi1 << endl ;
15 cout << ni l ai pi2 = << pi2 << endl ;
16
17 return 0;
18 }
Apa perbedaan pi1 dan pi2?
19.2 cmath
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
80 Lab 3: Pengenalan Dene dan cmath
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5 #i ncl ude<cmath>
6
7 #def i ne pi 3.14159
8
9 using namespace std ;
10
11 i nt main ( )
12 {
13 f l o at sudut = 38; / / dalam deraj at
14
15 cout << si n ( << sudut << ) = << si n ( pi sudut / 180. 0) <<
endl ;
16 cout << cos ( << sudut << ) = << cos ( pi sudut / 180. 0) <<
endl ;
17
18 return 0;
19 }
Berapa nilai sin(38) dan cos(38)?
Tambahkan fungsi-fungsi matematis lainnya.
19.3 Latihan-latihan
1. Buatlah program untuk mengkonversi sebuah nilai temperature
dalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan
rumus
T
F
=
9
5
T
C
+ 32 (19.1)
. 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
rumus: s = (x + y + z) = 3 dan p =
3

xyz. Disini input program


adalah x, y dan z, dan output program adalah s dan p.
20
Lab 4: Pengenalan Fungsi dan
Array
20.1 Fungsi
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt jumlah( i nt a , i nt b) ;
9
10 i nt main ( )
11 {
12 i nt a = 3 , b = 5 , c ;
13
14 c = jumlah( a , b) ;
15
16 cout << ni l ai a = << pi1 << endl ;
17 cout << ni l ai b = << pi2 << endl ;
18 cout << ni l ai jumlah( a , b) = << c << endl ;
19
20 return 0;
21 }
22
23 i nt jumlah( i nt a , i nt b)
24 {
25 return ( a+b) ;
26 }
82 Lab 4: Pengenalan Fungsi dan Array
Jelaskan apa saja yang diperlukan untuk mendenisikan sebuah
fungsi? dan apa kegunaan fungsi jumlah?
20.2 Pengenalan Array
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5 using namespace std ;
6
7 i nt main ( )
8 {
9 f l o at a [ 10] ;
10 double b [ 3 ] [ 4 ] ;
11
12 a[ 0] = 7;
13 a[ 1] = 10;
14 a[ 11] = 1;
15 b [ 2] [ 3] = 1002;
16
17 cout << a[ 0] = << a[ 0] << endl ;
18 cout << a[ 1] = << a[ 1] << endl ;
19 cout << a[ 4] = << a[ 4] << endl ;
20 cout << b [ 2] [ 3] = << b [ 2] [ 3] << endl ;
21
22 return 0;
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
Lab 5: Pengenalan Pointer
21.1 Pointer
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt main ( )
9 {
10 f l o at a ; / / vari abel t i pe f l o at
11 f l o at p ; / / sebuah poi nter t i pe f l o at
12 a = 2. 3;
13 p = &a ; / / vari abel p be r i s i alamat vari abel a
14
15 cout << a << endl ;
16
17 p = 4. 2; / / ki ta ubah ni l ai vari abel a
18
19 cout << a << endl ;
20 }
21 return 0;
22 }
Dengan menggunakan kode ini jelaskan apa saja yang diperlukan
untuk mendenisikan sebuah pointer? dan bagaimana mengunakan
pointer?
84 Lab 5: Pengenalan Pointer
21.2 Pengenalan Operasi Pada Pointer
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt main ( )
9 {
10 i nt p , b [ 5 ] ;
11 b[ 1] = 1;
12 b[ 2] = 2;
13 b[ 3] = 3;
14 b[ 4] = 4;
15
16 p = b ; / / p menunjuk ke alamat b[ 0]
17
18 cout << ni l ai yang ditunj uk ol eh p = << p << endl ;
19
20 p = p + 1; / / p menunjuk ke alamat b[ 1]
21
22 cout << ni l ai yang ditunj uk ol eh p = << p << endl ;
23
24 p; / / kembali ke alamat b[ 0]
25
26 cout << ni l ai yang ditunj uk ol eh p = << p << endl ;
27
28 p = p + 3; / / p menunjuk ke alamat b[ 3]
29
30 cout << ni l ai yang ditunj uk ol eh p = << p << endl ;
31
32 return 0;
33 }
Apa yang ditampilkan pada layar setelah kita dapat mengkompila-
si? Pelajari operasi-operasi yang dapat dilakukan untuk pointer.
21.3 Latihan
1. Baca program C++ dibawah ini.
Latihan 85
1 #i ncl ude<iostream>
2
3 using namespace std ;
4
5 voi d swap( f l o at , f l o at ) ;
6
7 i nt main ( )
8 {
9 f l o at a = 2. 5 , b = 6. 0;
10
11 cout << a << << b << endl ;
12
13 swap(&a , &b) ;
14
15 cout << a << << b << endl ;
16
17 return 0;
18 }
19
20 voi d swap( f l o at x , f l o at y )
21 {
22 f l o at t ;
23
24 t = x ;
25 x = y ;
26 y = t ;
27 }
Apa
2. Buatlah program yang diberikan input tiga bilangan (x, y dan
z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua
rumus: s = (x + y + z)/3 dan p =
3

xyz. Disini input program


adalah x, y dan z, dan output program adalah s dan p.
22
Lab 6: Pengenalan Character dan
String
22.1 Character
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 i nt main ( )
9 {
10 char a ;
11 char nama[ 30] ;
12 char ilmuwan[ 30] ={ N , E , W , T , O , N } ;
13 char satuan[ 30] = ne wt o n ;
14
15 a = H ;
16
17 cout << ni l ai a = << a << endl ;
18 cout << ni l ai nama = << nama << endl ;
19 cout << ni l ai ilmuwan = << ilmuwan << endl ;
20 cout << ni l ai satuan = << satuan << endl ;
21
22 return 0;
23 }
Bagaimana mendenisikan sebuah tipe data char? Apa yang di-
tampilkan pada layar?
88 Lab 6: Pengenalan Character dan String
22.2 String
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5 #i ncl ude<stri ng>
6
7 using namespace std ;
8
9 i nt main ( )
10 {
11 st ri ng kalimatUtama ;
12 st ri ng kataSambung;
13 st ri ng kalimatPenting ;
14
15 kalimatUtama = Saya past i bi sa C++ ;
16 kataSambung = karena ;
17 kalimatPenting = C++ mudah ;
18 kalimatUtama += kataSambung + kalimatPenting ;
19
20 cout << kalimatUtama << endl ;
21
22 return 0;
23 }
Bagaimana mendenisikan sebuah string? dan bagaimana meng-
gunakannya?
22.3 getline()
Kita menggunakan fungsi getline() untuk mengambil input dalam satu
baris.
1
2 #i ncl ude<iostream>
3 #i ncl ude<stri ng>
4
5 using namespace std ;
6
7 i nt main ( )
8 {
getline() 89
9 st ri ng kalimat ;
10 cout << masukkan sebuah kalimat : <<endl ;
11
12 get l i ne ( cin , kalimat ) ;
13
14 cout << kal i mat anda adalah : \ n << kalimat ;
15
16 return 0;
17 }
Jadi yang perlu diingat adalah cara pemakaian getline(cin, kalimat).
Modikasi kode ini untuk keperluan anda.
23
Lab 7: Pengenalan Object
Oriented Programming (OOP)
dengan Class
23.1 Struct
Sebelum kita mempelajari tentang OOP, kita perlu mengenal terlebih
dahulu tentang struktur data dengan menggunakan struct.
Struktur data (data structure) adalah sebuah grup/gabungan ele-
men data menjadi satu dalam satu nama. Dengan kata lain kita men-
denisikan tipe data yang baru. Elemen data dinamakan anggota
struktur. Anggota bisa bertipe apa saja dan berbeda dan ukuran ber-
beda.
Untuk membuat struktur data kita menggunakan kata kunci atau
keyword struct dengan format sebagai berikut:
1 st ruct namastruktur{
2 ti pe1 nama anggota1 ;
3 ti pe2 nama anggota2 ;
4 . . .
5 } nama variabel ;
Sebagai contoh data mahasiswa berikut ini.
1
2 st ruct mahasiswa {
3 st ri ng nama;
4 st ri ng nim;
5 long i nt umur ;
6 f l o at t i nggi ;
7 f l o at berat ;
8 } andi ; / / de f i ni s i mahasiswa dan dekl arasi andi
92 Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class
9
10 / / dekl arasi vari abel bel l a
11 mahasiswa bel l a ;
Contoh cara akses anggota struct dengan tanda titik dan nama ang-
gota:
Untuk lebih jelas, kita ketik kode berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5 #i ncl ude<stri ng>
6
7 using namespace std ;
8
9 / / de f i ni s i struktur mahasiswa
10 st ruct mahasiswa {
11 st ri ng nama;
12 st ri ng nim;
13 long i nt umur ;
14 f l o at t i nggi ;
15 f l o at berat ;
16 } ;
17
18 i nt main ( )
19 {
20 mahasiswa m;
21 m. nama = Al be r t Ei ns t e i n ;
22 m. umur = 25;
23 m. t i nggi = 170. 0;
24
25 cout << nama = << m. nama << endl ;
26 cout << umur = << m. umur ;
27
28 return 0;
29 }
Hal-hal apa saja yang diperlukan untuk membentuk struktur data?
23.2 Class
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
Inheritance 93
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 c l ass Posi si {
9 protected :
10 double x , y ;
11 publ i c :
12 voi d Posi si ( double , double ) ;
13 double getx ( ) ;
14 double gety ( ) ;
15 } ;
16
17 i nt main ( )
18 {
19 Posi si a , b( 2 , 3) ;
20
21 a = Posi si ( 4 , 2) ;
22 b = a ;
23 cout << ni l ai komponen x dari a = << a . getx ( ) << endl ;
24 cout << ni l ai komponen y dari a = << a . gety ( ) << endl ;
25
26 return 0;
27 }
28
29 double Posi si : : getx ( ) {
30 return x ;
31 }
32 double Posi si : : gety ( ) {
33 return y ;
34 }
35 double Posi si : : Posi si ( double a , double b) {
36 x = a ; y = b ;
37 }
Bagaimana mendenisikan sebuah tipe data baru dengan class?
Bagaimana penggunaannya?
23.3 Inheritance
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
94 Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude<iostream>
5
6 using namespace std ;
7
8 c l ass Posi si {
9 protected :
10 double x , y ;
11 publ i c :
12 voi d Posi si ( double , double ) ;
13 double getx ( ) ;
14 double gety ( ) ;
15 } ;
16
17 c l ass Lingkaran : publ i c Posi si {
18 double r ;
19
20 Publ i c :
21 voi d Lingkaran ( double , double , double ) ;
22 double getr ( ) ;
23 } ;
24 i nt main ( )
25 {
26 Lingkaran g( 2 , 3 , 10) ;
27
28 cout << ni l ai komponen x dari g = << g . getx ( ) << endl ;
29 cout << ni l ai komponen y dari g = << g . gety ( ) << endl ;
30 cout << ni l ai j ar i j ar i r dari g = << g . getr ( ) << endl ;
31
32 return 0;
33 }
34
35 double Posi si : : getx ( ) {
36 return x ;
37 }
38 double Posi si : : gety ( ) {
39 return y ;
40 }
41 double Posi si : : Posi si ( double a , double b) {
42 x = a ; y = b ;
43 }
44
45 double Lingkaran : : getr ( ) {
46 return r ;
47 }
48
Inheritance 95
49 double Lingkaran : : Lingkaran ( double a , double
50 b , double c ) {
51 x = a ; y = b ; r = c ;
52 }
Bagaimana mendenisikan sebuah tipe data baru yang merupakan
penurunan dari tipe data yang lain? dan bagaimana menggunakan-
nya? Mengapa konsep inheritance berguna? keuntungannya apa?
24
Lab 8: Menggunakan Make
Dalam membuat program, terutama untuk program yang besar, kita
perlu membagi kode program tersebut menjadi banyak fungsi-fungsi
atau class-class yang selanjutnya disimpan dalam le/berkas yang ber-
beda. Ini dilakukan agar kode program yang kita buat bisa lebih ma-
nageable (lebih mudah diedit, dikoreksi dan dikompile). Sebagai con-
toh jika kita menulis sebuah buku, apakah kita menulis buku ini da-
lam sebuah le? Tentunya ini bisa dilakukan! Tetapi, alangkah lebih
baik jika kita bagi le tersebut menjadi beberapa le sesuai dengan
bab atau chapter. Jadi setiap kita bekerja kita membuka satu le yang
ukurannya jauh lebih kecil dibandingkan sebuah le untuk satu buku.
Begitu pula sebuah program, kita bisa lebih mudah mengerjakannya
jika membagi kode program menjadi beberapa le.
Untuk lebih jelas, kita bisa lihat contoh kode program dibawah ini.
1 / / nama f i l e : f ac t o r i al . cpp
2 #i ncl ude<iostream>
3 #i ncl ude<cmath>
4
5 using namespace std ;
6
7 / / Deklarasi atau prototype f ungsif ungsi
8 voi d input ( long &) ;
9 long hi t ung f ac t or i al ( long ) ;
10 voi d output ( long ) ;
11
12 i nt main ( )
13 {
14 long bilangan , f ac t ;
15
16 input ( bilangan ) ;
17 f ac t = hi t ung f ac t or i al ( bilangan ) ;
18 output ( bilangan ) ;
19
20 return 0;
98 Lab 8: Menggunakan Make
21 }
22
23 / / Def i ni si f ungsi f ungsi
24
25 voi d input ( long &a)
26 {
27 cout <<Masukkan bilangan bul at : <<endl ;
28 ci n >> a ;
29 }
30
31 voi d output ( long a)
32 {
33 cout << Faktori al bilangan i ni adalah << a << endl ;
34
35 }
36
37 long hi t ung f ac t or i al ( long a)
38 {
39 long f =1;
40
41 f or ( long i = 1; i <=a ; i ++) {
42 f = i ;
43 }
44
45 return f ;
46 }
Kode program di atas bisa secara langsung dikompile dengan
1 g++ O f ac t o r i al . cpp o f ac t . exe
Disini cara kompile ditambahkan -O (o besar, bukan angka nol)
untuk membuat program yang dihasilkan lebih cepat.
Sebenarnya cara kompile diatas melakukan dua proses sekaligus.
Kita bisa membuat object le terlebih dahulu dan kemudian membuat
program le. Seperti contoh di bawah ini.
1 g++ c O f ac t o r i al . cpp
2
3 g++ f ac t o r i al . o o f r ac t . exe
Perintah pertama kita menggunakan tambahan -c pada ++
*
untuk menkompile
ke object atau tanpa membuat program (proses compile). File yang di-
hasilkan berakhiran .o (atau object le). Karena nama lenya adalah
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 le yaitu main.cpp,
factorial.cpp dan factorial.h.
1 f i l e : f ac t o r i al . h
2 / / Deklarasi atau prototype f ungsif ungsi
3 voi d input ( long &) ;
4 long hi t ung f ac t or i al ( long ) ;
5 voi d output ( long ) ;
6
7
8 f i l e : main . cpp
9 #i ncl ude<iostream>
10 #i ncl ude<cmath>
11 #i ncl ude f ac t o r i al . h
12
13 using namespace std ;
14
15
16 i nt main ( )
17 {
18 long bilangan , f ac t ;
19
20 input ( bilangan ) ;
21 f ac t = hi t ung f ac t or i al ( bilangan ) ;
22 output ( bilangan ) ;
23
24 return 0;
25 }
26
27 f i l e : f ac t o r i al . cpp
28
29 / / Def i ni si f ungsi f ungsi
30 #i ncl ude f ac t o r i al . h
31 #i ncl ude<iostream>
32
33 using namespace std ;
34
35 voi d input ( long &a)
36 {
37 cout <<Masukkan bilangan bul at : <<endl ;
38 ci n >> a ;
39 }
40
41 voi d output ( long a)
42 {
43 cout << Faktori al bilangan i ni adalah << a << endl ;
100 Lab 8: Menggunakan Make
44
45 }
46
47 long hi t ung f ac t or i al ( long a)
48 {
49 long f =1;
50
51 f or ( long i = 1; i <=a ; i ++) {
52 f = i ;
53 }
54
55 return f ;
56 }
Jadi di atas, le factorial.h yang juga disebut header le meng-
andung deklarasi/prototipe dari fungsi-fungsi atau class-class. Sedangk-
an factorial.cpp mengandung denisi fungsi atau class.
Cara kompile dan linking secara manual sebagai berikut:
1 g++ c O main . cpp
2 g++ c O f ac t o r i al . cpp
3 g++ main . o f ac t o r i al . o o f ac t . exe
Perintah pertama dan kedua di atas dilakukan untuk mengkompile
dua le bagian kode program. Kemudian dua object le digabungkan
(atau linking) menjadi sebuah program.
Keuntungan dengan memecah le menjadi beberapa le adalah le-
bih mudah mengkompile program karena kita hanya perlu mengkom-
pile le yang diedit saja. Object le yang lain tidak berubah jadi ti-
dak perlu dikompile lagi. Sebagai contoh, umpamanya jika kita hanya
mengedit le main.cpp maka untuk menkompile program cukup kita
melakukan dua perintah diatas, mengkompile kode cpp dan menla-
kukan linking.
1 g++ c O main . cpp
2 g++ main . o f ac t o r i al . o o f ac t . exe
Bisa dibayangkan jika kita mempunyai jumlah le yang banyak,
proses kompile akan jauh lebih cepat dengan mengkompile satu atau
beberapa le saja daripada semua le lagi.
Jika kita mempunyai sejumlah le dengan akhiran .cpp maka kita
harus menggunakan perintah kompile sebanyak jumlah le tersebut.
101
Akan menjadi sangat tidak esien 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 le depen-
dency yang diberi nama Makele atau makele.
File Makefile berisi cara mengkompile dan le apa saja yang di-
perlukan. Sebagai contoh untuk kompile program sebelumnya le Makefile
yang sederhana sebagai berikut.
1 program : main . o f ac t o r i al . o
2 g++ main . o f ac t o r i al . o o f ac t . exe
3
4 main . o : main . cpp
5 g++ c main . cpp
6
7 f ac t o r i al . o : f ac t o r i al . cpp
8 g++ c f ac t o r i al . cpp
9
10 cl ean :
11 rm . o
Baris pertama di le Makefile di atas terdiri dari nama/keyword
untuk sebuah project yang akan dibuat/dikerjakan. Setelah nama/ke-
yword ini diikuti tanda : , dan diikuti dengan nama-nama le yang
diperlukan dalam membuat project tersebut. Setelah baris ini diikuti
dengan baris perintah atau cara mengkompile/membuat project. Se-
telah itu kita membuat main.o. Dan seterusnya. Dua baris terakhir
digunakan untuk mendelete semua object le jika sudah tidak diper-
lukan lagi. Penting diingat bahwa untuk baris perintah/cara membuat
dicorongkan kedalam menggunakan tombol tab.
Setelah le Makefile dibuat, kita bisa menjalakan make untuk
memproses Makele dengan perintah:
1 make program
Perintah ini menunjukkan kita melakukan/memproses nama/ke-
yword project program.
Jika kita hanya memproses project pada baris pertama kita bisa
langsung menggunakan make saja tanpa nama project/keyword.
Jika kita ingin mendelete semua object le, kita menggunakan per-
intah make clean.
25
Lab 9: Pengenalan Library GSL
GSL (GNU Scientic Library) merupakan library ini sangat penting
untuk pemrograman pada khususnya untuk komputasi numerik. Oleh
karena itu ini sangat berguna untuk sikawan yang memerlukan per-
hitungan yang menggunakan operasi-operasi dan fungsi-fungsi yang
tidak ada pada library cmath. Library GSL mempunyai banyak hal
yang bisa digunakan untuk memecahkan banyak permasalahan di Fi-
sika.
Sebagai contoh, hal-hal yang terkandung pada GSL library seperti
berikut ini:
1. Complex Numbers
2. Roots of Polynomials
3. Special Functions
4. Vectors and Matrices
5. Permutations ,Sorting
6. Linear Algebra, Eigensystems
7. Fast Fourier Transforms
Dan Banyak lagi fasilitas yang tersedia pada GSL.
GSL dapat diperoleh gratis dengan mengunduh di http://www.gnu.org/software/gsl/.
Library ini sudah tersedia di Cygwin. Terutama jika kita meng-
instal semua software yang ada pada Cygwin. Kita bisa instal GSL
dengan memilih semua pada pilihan lib dan math pada saat instalasi
Cygwin.
Untuk mengenal bagaimana cara penggunaan GSL, perhatikan con-
toh berikut ini:
104 Lab 9: Pengenalan Library GSL
25.1 Contoh GSL
Dengan menggunakan notepad atau notepad++ atau nedit ketik be-
berapa baris kode c++ berikut ini.
1
2 / t ul i s komentar tentang kode anda di s i ni /
3
4 #i ncl ude <iostream>
5 #i ncl ude <gsl / g s l s f be s s e l . h>
6
7 using namespace std ;
8
9 i nt main ( voi d )
10 {
11 double x = 5. 0;
12 double y = gs l s f be s s e l J0 ( x ) ;
13 cout << y ;
14
15 return 0;
16 }
Apa saja yang diperlukan untuk menggunakan library GSL? Bagai-
mana menggunakannya?
26
Lab 10: Pengenalan Memori
Ada dua jenis memori yang bisa dialokasikan sesuai dengan deklara-
sinya: memori statis dan dinamis.
Sebagai contoh memori statis adalah dalam membuat suatu ar-
ray, kita mendeklarasi dengan float s[100];. Dengan deklarasi
ini, komputer mengalokasikan memori untuk menampung 100 vari-
bel yang bertipe data oat. Besarnya array s tidak bisa diubah atau
statis. Jadi jika kita menggunakan metode ini kita harus menyiapkan
jumlah array yang cukup. Jika kurang akan terjadi error atau kesa-
lahan karena lokasi memori tidak ada.
Sedangkan memori dinamis, besarnya memori yang dipakai dapat
diubah sesuai kebutuhan. Jika kita memiliki array yang besarnya/u-
kurannya bisa berubah kita perlu mengunakan array dinamik. Cara-
nya dengan menggunakan operator new dan new [].
26.1 New atau New []
Untuk menggunakan operator new, kita perlu menambahkan #include<new>.
Dan untuk alokasi memori, kita memerlukan sebuah pointer dan de-
ngan cara pointer = new tipe[jumlahnya];. Setelah selesai meng-
gunakan memori atau jika kita tidak memerlukan lagi alokasi memori,
kita perlu mendelete array itu agar memori bisa digunakan untuk hal
yang lain. Maka pada akhir program biasanya ada operator delete.
Cara penggunaan delete adalah
1 del et e poi nter ; / / untuk satu elemen
2 del et e [ ] poi nter ; / / untuk array
Untuk mempelajari penggunaanya, dengan menggunakan note-
pad atau notepad++ atau nedit ketik beberapa baris kode c++ beri-
kut ini.
106 Lab 10: Pengenalan Memori
1 #i ncl ude<iostream>
2 #i ncl ude<stri ng>
3
4 using namespace std ;
5
6 i nt main ( )
7 {
8 i nt n;
9 f l o at a ; / / poi nter untuk al okasi memory
10
11 cout << ber apa jumlah array ? ;
12 ci n >> n;
13
14 a = new f l o at [ n ] ;
15 a[ 9] = 3;
16
17 del et e [ ] a ;
18 return 0;
19 }
Jelaskan apa saja yang diperlukan untuk membuat array dinamis?