buku pemrograman

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

Upload: paundanan69

Post on 25-Oct-2015

287 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Buku Pemrograman

Pemrograman Komputerdengan Bahasa C dan C++

I Wayan Sudiarta

Program Studi FisikaFakultas Matematika dan Ilmu Pengetahuan Alam

Universitas Mataram

November 4, 2012

Page 2: Buku Pemrograman

ii

Page 3: Buku Pemrograman

Buat anakku Arvin dan Istriku Tami

Page 4: Buku Pemrograman
Page 5: Buku Pemrograman

Daftar Isi

Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viiUcapan Terima Kasih . . . . . . . . . . . . . . . . . . . . . . . . ix

1 Pendahuluan 11.1 Konsep Pemrograman . . . . . . . . . . . . . . . . . . . . 21.2 Bahasa C dan C++ . . . . . . . . . . . . . . . . . . . . . . 3

2 Hello World! 52.1 Program Hello World . . . . . . . . . . . . . . . . . . . . . 62.2 Kompilasi Program . . . . . . . . . . . . . . . . . . . . . . 92.3 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 Konvensi Penulisan 133.1 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 Bagian Komentar . . . . . . . . . . . . . . . . . . . . . . . 143.3 Bagian Program . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Identifier, Penamaan dan Tipe Data 174.1 Identifier , Nama Pengenal . . . . . . . . . . . . . . . . . 174.2 Tipe Variabel . . . . . . . . . . . . . . . . . . . . . . . . . . 194.3 Variabel Local dan Global . . . . . . . . . . . . . . . . . . 214.4 Konstanta . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5 Operasi Matematika 255.1 Operasi Matematis Sederhana . . . . . . . . . . . . . . . 25

5.1.1 Operator sama dengan (Assignment ,=) . . . . . . 255.1.2 Aritmatika . . . . . . . . . . . . . . . . . . . . . . . 25

5.2 Aritmatika dengan dua operator . . . . . . . . . . . . . . 275.3 Operasi-operasi logika . . . . . . . . . . . . . . . . . . . . 275.4 Konversi Tipe . . . . . . . . . . . . . . . . . . . . . . . . . 285.5 operasi binari . . . . . . . . . . . . . . . . . . . . . . . . . 295.6 Fungsi-Fungsi Matematika . . . . . . . . . . . . . . . . . 29

6 Fungsi Output dan Input 316.1 Output, Menampilkan Pada Layar . . . . . . . . . . . . . 31

6.1.1 printf() . . . . . . . . . . . . . . . . . . . . . . . 31

7 Kontrol Aliran dan Pengulangan 357.1 Kontrol Aliran . . . . . . . . . . . . . . . . . . . . . . . . . 35

7.1.1 if dan else . . . . . . . . . . . . . . . . . . . . . . . 35

Page 6: Buku Pemrograman

iv Daftar Isi

7.1.2 switch . . . . . . . . . . . . . . . . . . . . . . . . . . 367.2 Pengulangan . . . . . . . . . . . . . . . . . . . . . . . . . . 36

7.2.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.2.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . 367.2.3 do ... while . . . . . . . . . . . . . . . . . . . . . . . 367.2.4 break dan continue . . . . . . . . . . . . . . . . . . 36

8 Array 39

9 Fungsi 41

10 Struktur 45

11 Lab 1: Pengenalan Bahasa C 5311.1 Penulisan Kode C . . . . . . . . . . . . . . . . . . . . . . . 5311.2 Modifikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 5411.3 Lab 2: Pengenalan Variabel dan Operasi Matematis . . . 55

11.3.1 Deklarasi Variabel . . . . . . . . . . . . . . . . . . 5511.3.2 Kesalahan Penulisan Variabel . . . . . . . . . . . . 5511.3.3 Tipe Data Variabel . . . . . . . . . . . . . . . . . . 5611.3.4 Scanf . . . . . . . . . . . . . . . . . . . . . . . . . . 56

12 Lab 3: Pengenalan define dan math.h 5912.1 Define dan const . . . . . . . . . . . . . . . . . . . . . . . . 5912.2 math.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5912.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . . 60

13 Lab 4: Pengenalan for, while dan do while 6113.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6113.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6213.3 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

14 Lab 5: Pengenalan if, else dan switch 6514.1 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.2 if else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6614.3 if else berantai . . . . . . . . . . . . . . . . . . . . . . . . . 6614.4 ()?:: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6714.5 switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

15 Lab 6: Pengenalan Fungsi dan Array 6915.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6915.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . . 70

Page 7: Buku Pemrograman

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 Modifikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Define dan cmath 79

19.1 Define 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

Page 8: Buku Pemrograman

vi Daftar Isi

25 Lab 9: Pengenalan Library GSL 10325.1 Contoh GSL . . . . . . . . . . . . . . . . . . . . . . . . . . 104

26 Lab 10: Pengenalan Memori 10526.1 New atau New [] . . . . . . . . . . . . . . . . . . . . . . . . 105

Page 9: Buku Pemrograman

Kata Pengantar

Buku ini masih berbentuk draft. Belum sempurna, masih banyak yangperlu diperbaiki dan dilengkapi. Harap dimaklumi karena keterbatas-an dana dan waktu penulis.

Buku ini ditulis dengan tujuan supaya dapat memberikan dasaryang 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 pemrogramanC 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 sehinggapembaca mampu dengan waktu yang tidak terlalu lama dapat mahirmembuat program komputer dengan bahasa C dan C++.

Mengapa dua bahasa ini sekaligus diajarkan? Karena bahasa C++merupakan pengembangan dari bahasa C. Jadi penambahan pelajarantentang bahasa C++ tidak akan membingungkan pembaca. Di sam-ping itu pula, cara penulisan program c++ digunakan pada programJava. Ini penting bagi pembaca yang ingin mempelajari Java untukmembuat 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 penulisajarkan di tahun berikutnya.

Penulis berusaha memberikan penjelasan dengan sederhana mung-kin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yangdimiliki pembaca.

Page 10: Buku Pemrograman
Page 11: Buku Pemrograman

Ucapan Terima Kasih

Penulis bersyukur kepada Tuhan Yang Maha Esa atas kesehatan dankesempatan yang diberikan sehingga buku ini dapat diselesaikan. Te-rima kasih Tuhan atas kelimpahan semangat beserta keberuntunganyang tiada ternilai.

Penulisan buku ini tentunya tidak bisa dilakukan tanpa bantuanbanyak pihak.

Penulis berterima kasih kepada mahasiswa-mahasiswa yang meng-ikuti kuliah pemrograman komputer yang telah memberikan banyakpertanyaan, 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 bukusehingga buku ini bisa rampung.

Penulis berterima kasih kepada istri yang selalu memberi doronganbeserta cinta sehingga penulis selalu semangat mengerjakan buku inimeskipun hal ini merupakan sebuah proses yang panjang.

Terima Kasih Semua.Penulis

Page 12: Buku Pemrograman
Page 13: Buku Pemrograman

1Pendahuluan

Buku pemrograman bahasa C maupun C++ sudah banyak beredar diIndonesia, apalagi dengan Bahasa Ingris, tentunya lebih banyak lagi.Walaupun demikian, buku-buku pemrograman berbahasa Indonesiayang 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-prinsippemrograman sehingga pembaca dapat mengembangkan sendiri danmempelajari bahasa pemrograman lebih lanjut.

Struktur buku ini dibentuk atau diatur sedemikian rupa sehinggapembaca mampu dengan waktu yang tidak terlalu lama dapat mahirmembuat program komputer dengan bahasa C dan C++.

Mengapa dua bahasa ini sekaligus diajarkan? Karena bahasa C++merupakan pengembangan dari bahasa C. Jadi penambahan pelajarantentang bahasa C++ tidak akan membingungkan pembaca. Di sam-ping itu pula, cara penulisan program c++ digunakan pada programJava. Ini penting bagi pembaca yang ingin mempelajari Java untukmembuat aplikasi.

Penulis berusaha memberikan penjelasan dengan sederhana mung-kin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yangdimiliki 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 danC++.

Page 14: Buku Pemrograman

2 Pendahuluan

1.1 Konsep Pemrograman

Mengapa membuat program? Walaupun ini merupakan pertanyaanterlalu sederhana, tetapi pertanyaan ini perlu kita jawab sebelum mem-buat program. Secara pasti kita bisa menjawabnya karena kita me-miliki tujuan tertentu ketika membuat program komputer. [kuranglengkap]

Pertanyaan selanjutnya yang perlu kita pahami jawabannya ada-lah ”apa itu sebuah program komputer?”. suatu program dibuat ber-tujuan untuk memerintahkan komputer untuk melakukan pekerjaantertentu. Dengan kata lain, suatu program komputer adalah kumpulan-kumpulan perintah-perintah yang dapat dipahami oleh komputer. Perintah-perintah tersebut sudah berbentuk bahasa mesin. Perintah-perintahkepada 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 ataulangkah-langkah untuk menyelesaikan pekerjaan dinamakan algori-tma.

Dengan mengingat bahwa komputer melaksanakan perintah kitasesuai 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 adalahpekerja 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 danlatiahn-latihan]. Jika komputer diberikan kurang sediki dari yang di-maksudkan, keluaran yang kita inginkan tidak akan terwujud. Perludiingat memberikan perintah-perintah sedetil mungkin. Oleh kare-na itu kita perlu mempelajari perintah-perintah yang dapat dipahamioleh komputer.

Di samping perintah, kita jufa harus memperhatikan kemampuanyang dimiliki komputer, baik dari segi kecepatan, memori, proses per-hitungan dan lain-lain. Kesalahan-kesalah sering terjadi karena kitamengabaikan bahwa komputer memiliki keterbatasan. Kita harus me-nyesuaikan perintah-perintah supaya tidak melewati batas kemampu-

Page 15: Buku Pemrograman

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 komputerdapat bekerja.

Perlu diingat bahwa komputer hanya menerima bentuk perintahtertentu 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 dankocor?

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 dipahamioleh 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 asymblyyang tingkat rendah yang lebih mudah dimengerti oleh mesin kom-puter. Bahasa high level harus diterjemahkan ke bahasa mesin ataudikompilasi sehingga dapat dilaksanakan oleh komputer. Oleh karenaitu biasanya bahasa high level memiliki ukuran yang besar dan lebihlambat. Tapi dari segi pengguna pembuatan program dengan baha-sa high level jauh lebih cepat dibandingkan low level. Untuk aplikasiprogram yang besar dan kompleks, pemrogram dengan low level akanmengalami 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 baruyang mempermudah pemrograman. Ini sangat berguna untuk pem-

Page 16: Buku Pemrograman

4 Pendahuluan

buatan program-program besar seperti sistem operasi windows, linuxdan 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 instrumentasibagi yang ingin menambah pendalaman tentang bahasa C++ dapat

melihat tutorial C++

http://www.cplusplus.com/doc/tutorial/http://www.cprogramming.com/

Page 17: Buku Pemrograman

2Hello 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 worlduntuk berbagai bahasa pemrograman dapa dilihat di alamat situs di-bawah ini(cek internet).

http://en.wikipedia.org/wiki/Hello_world_programhttp://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 atausyntax, 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 atauinstitusi. Kita mungkin saja membuat dokumen yang tanpa aturandan kita mengerti apa isinya. Tetapi, kemungkinan besar orang lainjika membacanya akan mengalami kesulitan. Begitu pula untuk baha-sa pemrograman, program yang kita buat mempunyai aturan-aturantersendiri sesuai dengan bahasa pemrogramannya. Aturan-aturan da-lam bahas pemrograman sudah dibuat dan dirancang sedemikian ru-pa supaya mempermudah kita membuat program. Perintah-perintahdalam bahasa C ataupun C++ ditranslasi ke bahasa mesin dan mem-permudah komputer menjalankan sesuai dengan perintah.

Page 18: Buku Pemrograman

6 Hello World!

Mungkin yang penting perlu kita perhatikan adalah kita harusmentaati aturan-aturan tersebut. Jika tidak program yang kita bu-at tidak akan bisa dikompilasi artinya kode yang kita ketik tidak bisadijadikan bahasa mesin atau program. Maka penting untuk dipahamiaturan-aturan yang digunakan, tentunya pada buku ini kita mempe-lajari baasa C dan C++.

Hal lain yang perlu diingat adalah komputer hanya mengerjakanapa yang diperintahkan tidak lebih dan tidak kurang. Jadi kita harusmemperhatikan apakah proses yang diperintahkan sudah komplit danakurat.

Disamping itu pula, kita juga harus mengerti kelemahan-kelemahanperintah-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 akandilakukan 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 kitaperhatikan 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 merupakandasar dari semua program selanjutnya. Kita perlu memperhatikankomponen-komponen apa yang menjadi bagian utama sebuah bahasapemrigraman C.

1 /∗ Program he l lo . c2 Menampilkan text ” Hello World ! ! ! ”3 ∗ /4

5 #include<std io . h>6

7

8 int main ( )9 {

10 / / tampilkan pada layar4211 pr in t f ( ” Hello World ! ! ! \ n” ) ;12

13 return 0;14 }

Listing 2.1: Program Hello World

Page 19: Buku Pemrograman

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 apayang 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, disertakanatau dimasukkan sesuai dengan kegunaan.

Bagian pertama adalah baris 1 sampai baris 3, bagian yang dibatasioleh dua pembatas / * dan * / ,

1 /∗ Program he l lo . c2 Menampilkan text ” Hello World ! ! ! ”3 ∗ /

Listing 2.2: Program Hello World

merupakan sebuah komentar atau catatan untuk programer. Semuatulisan apa saja di antara dua pembatas / * dan * / dianggap kompilersebagai komentar dan tidak diproses atau diabaikan sehingga tidakmempengaruhi linerja program. komentar atau catatan ini bukan di-tujukan untuk mesin komputer, melainkan untuk pengguna supayalebih jelas. Catatan singkat biasa digunakan untuk menjelaskan ten-tang program, cara kerja, varaibel yang digunakan dan hal-hal lainyang dianggap penting. Jika kita bayangkan beberapa waktu kedepansetelah 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

Page 20: Buku Pemrograman

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 melaluikomentar atau catatan singkat tersebut. Tanpa adanya dokumenta-si yang jelas program akan mempersulit pembuatan program, karenaadanya konflik atau misinformasi. Kita perlu mengerti bahwa setiapprogramer memiliki cara dan pengetikan yang sesuai dengan seleraprogramer. Dengan dokumentasi akan mengurangin kesalahan yangditimbulkan oleh penggunaan variabel, proses yang berbeda.

Di samping penggunaan / * dan * / kita juga dapat menggunakantanda 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 kanandari // diabaikan oleh komputer. Komentar tentang program bergunaauntuk 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 file. Inidimasukkan karena akan digunakan di dalam program.

Jadi untuk mengakses library ini kita mendeklarasikan denganekspresi ini. Ini yang sering digunakan di program C++ yang memakaistandard library.

Baris ke 8 adalah sebuah fungsi main, int main () . Baris ini me-rupakan awal dari definisi dari fungsi main. Fungsi main adalah titikdimana semua program C++ memulai exsekusinya, tidak tergantungdari tempat di dalam source code. Tidak peduli ada fungsi-fungsi yangdideklarasikan sebelum atau sesudah itu, instruksi-instruksi yang adadi dalam main selalu yang pertama di jalankan. Jadi sangat pentingsemua 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 manadisini berisi Hello World!.

Page 21: Buku Pemrograman

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 yangpaling 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 mengubahkode program menjadi sebuah program yang bisa dieksekusi, ada duatahapan, compile dan link, yang dilakukan seperti ditunjukkan padaGambar 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++ untukbahas C++ yang sudah tersedia di dalam Cygwin, MinGW dan Li-nux. Kompilasi menggunakan program Dev-C++, Borland C++, CodeBlocks, Turbo C++ dan Visual C++ dijelaskan di Lampiran. Kompilasidengan gcc atau g++ dilakukan didalam sebuah jendela terminal. Per-intah perintah yang digunakan untuk kompilasi adalah sebagai beri-kut:

1. Kompilasi tanpa pilihan

Page 22: Buku Pemrograman

10 Hello World!

gcc hello.c

Ini akan menghasilkan executable file / 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 file / 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 Catau C++ ke bahasa mesin dengan perintah gcc -c .

gcc -c hello.c

Perintah ini akan menghasilkan object file bernama namafile.o,pada perintah di atas menghasilkan hello.o. File object ini ke-mudian dilink dengan libary dan file-file lain (jika ada) denganmenggunakan 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 atauformatting tersendiri. free-formating language. Ini berarti cara penu-lisan program tidak diatur, melainkan dibebaskan. yang perlu diingatbahwa spasi, tab dan baris kosong dianggap sama atau yang dikenaldengan nama ”white space”. Terkecuali spasi dan white space lain-nya merupakan bagian dari sebuah komentar atau string. Pemisahan

Page 23: Buku Pemrograman

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).menghasilkanhal yang sama seperti Listing 2.1.

1 /∗ Program he l lo . c2 Menampilkan text ” Hello World ! ! ! ”3 ∗ / # include<std io . h>4 int main ( ) { / / tampilkan pada layar5 pr in t f ( ” Hello World ! ! ! \ n” ) ; return 0;}

Listing 2.3: Program Hello World

1 /∗ Program he l lo . c2 Menampilkan text ” Hello World ! ! ! ”3 ∗ /4 #include<std io . h>5 int6 main ( ) { / / tampilkan pada layar7 pr in t f ( ” Hello World ! ! ! \n” ) ;8 return 0;9 }

Listing 2.4: Program Hello World

Bentuk atau format digunakan untuk mempermudah membaca struk-tur program.

Page 24: Buku Pemrograman
Page 25: Buku Pemrograman

3Konvensi Penulisan

Bab ini membahas tentang bagaimana konvensi penulisan sehingga ti-dak terjadi kesalahan dalam penulisan dan mengurangi tingkat stressjika terjadi kesalahan atau error. Sebagian konvensi sudah dijelaskanpada bab sebelumnya. Walaupun demikian konvensi akan dijelaskankembali untuk memperkuat dan memperdalam.

Bab ini membahas aturan-aturan penulisan. Biasanya bab ini ti-dak dijelaskan dengan bab-tersendiri pada buku-buku pemrogralamnlain. tetapi setelah melihat banyaknya kekeliruan yang dilakukan ma-hasiswa, maka penjelasan tentang penulisan perlu dijelaskan secaraterpisah.

Dalam penulisan kode program bahasa C++, ada tiga bagian yangperlu dibedakan yaitu (1) bagian preprocessing atau bagian programyang diproses terlebih dahulu sebelum memproses kodenya, (2) bagiankomentar atau catatan dan (3) bagian kode program yang sebenarnya.

3.1 Preprocessing

Perintah-perintah pada bagian preprocessing diawali dengan tandapagar (#).

Karena bagian perintah bukan perintah c++ cebenarnya, cara pe-nulisannya juga berbeda. Maka kita harus ingat setiap perintah tidakdiakhiri dengan tanda titik koma (;).

kegunaan preprocessing apa? untuk memerintahkan kompiler me-nambahkan komponen-komponen lain seperti pustaka atau libraryatau perintah memproses kode C++ sehingga sesuai dengan keinginankita. Kita biasanya melakukan penggantian variabel sebelum c++ dikompilasi.

Page 26: Buku Pemrograman

14 Konvensi Penulisan

3.2 Bagian Komentar

Komentar atau catatan-catatan yang penting bagi programer ditulisdengan menggunakan dua tanda batas / * (di awal) dan * / (diakhir). Sebagai contoh pada Listing 3.1.

1

2 /∗ Catatan penggunaan program ( sebuah komentar satu baris ) ∗ /3

4 /∗ Catatan penggunaan program5 sebuah contoh komentar beberapa baris6 ∗ /7

8 / / Catatan penggunaan program ( sebuah komentar satu baris )9

10 a = 5; / / percepatan dalam satuan m/ s ˆ2

Listing 3.1: Contoh penulisan komentar menggunakan ”/* */”

Komentar untuk satu baris saja dapat menggunakan // untukmengawali komentar seperti contoh pada Listing 3.1. Tanda // da-pat diletakkan di mana saja dan semua tulisan di bagian kanan tandaini merupakan komentar. Komentar dengan cara ini berguna untukmenyisipkan 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 menghasilkanerror. 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 tidak diperbolehkan3

4 /∗ komentar di dalam komentar ∗ /5

6 Menghasilkan error kompilasi7 ∗ /

Listing 3.2: Penggunakan ”/* */” yang salah

Page 27: Buku Pemrograman

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++ tandaspasi, 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 penggabunganbanyaka perintah menjadi satu set.

1 / / Jika satu perintah yang dilakukan2 while ( a < 100) a = a + 2;3

4 / / Jika banyak perintah5 while ( a < 100)6 {7 a = a + 2;8 pr in t f ( ” n i l a i a = %d” , a ) ;9 }

Listing 3.3: Penggunakan ”{ }”

Page 28: Buku Pemrograman
Page 29: Buku Pemrograman

4Identifier, Penamaan dan Tipe

Data

Dalam pemrograman kita perlu menggunakan suatu variabel, fungsi,dan prosedur. Setiap variabel, fungsi dan prosedur memiliki namatersendiri sehingga kita dapat memanggilnya atau menyebutkannya.Sebuah perintah memerlukan sebuah ”pengenal” yang mana komputermengetahui apa maksudnya.

Pemberian nama atau identifier untuk variabel, fungsi dan prose-dur di dalam bahasa C dan C++ mempunyai aturan tersendiri. Babini membahas bagaimana memberikan nama sehingga sesuai denganaturan bahasa C atau C++.

4.1 Identifier , Nama Pengenal

Sebuah identifier merupakan sebuah nama pengenal suatu variabel,fungsi, label, dan object yang lain. Dalam bahasa C dan C++ memilikiaturan tertentu tentang bagaimana memberikan sebuah nama atauidentifier. Aturan-aturan pemberian identifier adalah sebagai berikut:

1. Sebuah identifier 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

Page 30: Buku Pemrograman

18 Identifier, Penamaan dan Tipe Data

C).

5. Tidak boleh memakai ”reserved words” (kata-kata yang sudahmempunyai arti di dalam bahasa C dan C++).

Sebuah identifier atau nama pengenal yang benar untuk bahasa Cdan 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,identifier harus dimulai dengan huruf dan bisa juga dengan garis ba-wah (_). Angka tidak bisa mengawali sebuah variabel. Tanda garis ba-wah (_) sebagai awal suatu identifier biasanya digunakan untuk vari-abel, fungsi dan prosedur yang digunakan oleh kompiler. Penggunaantanda garis bawah untuk huruf awal identifier sebaiknya dikurangi.

Bahasa pemrograman C dan C++ membedakan huruf besar dan hu-ruf kecil, sebagai contoh kecepatan dan Kecepatan merupak-an dua variabel/identifier yang berbeda. Sehingga perlu diperhatik-an nama-nama yang kita berikan. Penamaan huruf besar dan kecilwalaupun 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 memisahkankata-kata dalam satu identifier/variabel dengan huruf besar atau garisbawah, 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 digunakanoleh bahasa C dan C++ atau ”reserved keywords”. Untuk menghindarikonflik (agar kompiler tidak kebingungan dalam menentukan maksudkode program) maka perlu kita memperhatikan nama-nama atau iden-tifier yang sudah digunakan oleh kompiler C atau C++ sehingga tidakdigunakan lagi. Reserved keywords yang ada dalam bahasa C dan C++adalah sebagai berikut

1 asm, auto , bool , break , case , catch , char , c lass , const ,2 const cast , continue , default , delete , do , double , dynamic cast ,3 else , enum, e x p l i c i t , export , extern , fa lse , f l oat , for , fr iend ,4 goto , i f , in l ine , int , long , mutable , namespace , new, operator ,5 private , protected , public , reg ister , re in te rpret cast , return ,6 short , signed , s izeo f , s ta t i c , s t a t i c c a s t , struct , switch ,7 template , this , throw , true , try , typedef , typeid , typename ,

Page 31: Buku Pemrograman

Tipe Variabel 19

8 union , unsigned , using , v ir tual , void , vo la t i l e , wchar t , while

Listing 4.1: Reserved identifier atau nama yang sudah digunakan olehkompiler

Contoh-contoh identifier yang benar: d, _nim, laju0, hitung_gaya .Contoh-contoh identifier yang salah: harga!, 2alamat, * bintang, hitung gaji .

4.2 Tipe Variabel

Untuk melakukan suatu komputasi, kita memerlukan variabel-variabeluntuk menampung nilai yang dihitung. Sebelum menggunakan sua-tu variabel, terlebih dahulu variabel tersebut dideklarasikan sehinggakompiler 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 a t suhu ;

yang mendeklarasikan variabel suhu dengan tipe data float (floatingpoint)(lihat Tabel 4.1.

Listing 4.2 merupakan sebuah contoh program dengan deklarasitipe data int ,float dan char .

1 / / Deklarasi variabel2

3 #include<std io . h>4

5 int main ( )6 {7 int a , b , c ; / / t ipe integer8 int c = 34; / / i n i s i a l i s a s i variabel9 f l o a t f , g , h ; / / t ipe f l o a t

10 char z = ’P ’ ; / / t ipe character , huruf11

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 ;

Page 32: Buku Pemrograman

20 Identifier, Penamaan dan Tipe Data

22

23 pr in t f ( ” Nilai b = %d\n” , b ) ;24 pr in t f ( ” Nilai f = %f \n” , f ) ;25 pr in t f ( ” Nilai 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++ tergantungpada kompiler yang digunakan. Secara umum tipe-tipe yang biasadigunakan ditampilkan pada Tabel 4.1. Yang perlu diperhatikan didalam Tabel 4.1 adalah ukuran data dan nilai-nilai yang bisa ditam-pung oleh suatu tipe data. Perhitungan akan mengalami kesalahanjika angka yang digunakan di luar dari apa yang bisa ditampung olehtipe data. Sebagai contoh, kita deklarasikan variabel bil_bulat de-ngan tipe data int ,

1 int b i l b u l a t ;2

3 b i l b u l a t = 40; / / OK4 b i l b u l a t = 40000; / / tidak benar , karena lebih dari 32000

Tipe data int hanya bisa menampung bilangan bulat dari angka-32768 ... 32767 . Jika kita berikan nilai pada variabel bil_bulatyang di luar angka yang bisa ditampung, seperti bil_bulat = 40000;akan menimbulkan kesalahan perhitungan. Oleh karena itu perlukita mengingat dan memastikan bahwa angka-angka yang digunak-an dalam perhitungan selalu sesuai dengan apa yang bisa ditampungoleh tipe data. Jika kita ceroboh atau tidak teliti akan menghasilkanprogram yang keliru. Perlu diingat bahwa kompiler tidak mengecekapakah variabel memiliki angka yang sesuai. Kekeliruan hanya bisadilihat 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 katacharacter atau huruf. Jadi tipe char bisa menampung sebuah hu-ruf. Tipe data float merupakan tipe data untuk bilangan-bilanganfloating-point atau titik mengambang atau desimal (scientific num-ber). Tipe data float bisa menampung bilangan desimal dan mem-punyai nilai terkecil dan terbesar yang bisa ditampung (1.175e-38

Page 33: Buku Pemrograman

Variabel Local dan Global 21

dan 3.402e38 ). Tipe data double merupakan tipe data untuk bi-langan floating-point, tetapi menggunakan ukuran memori yang duakali ukuran tipe data float . Bilangan terkecil dan terbesar yang bi-sa ditampung adalah 1.175e-308 dan 3.402e308 . Tipe data yanglain memiliki tambahan kata short , long , unsigned dan signed .Kata short artinya pendek, yang mengindikasikan bahwa tipe datayang 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 doublememiliki ukuran lebih besar dibandingkan dengan tipe data double .Kata signed dan unsigned menunjukkan tipe data yang digunakanmempunyai tanda atau tidak. Ini berguna untuk membedakan varibelyang hanya merukan bilangan bulat positif saja. Sebgai contoh, kitamendeklarasikan variabel umur dengan

1 unsigned int 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. Signedtypes bisa mempunyai kedua nilai positif dan negatif. Tetapi unsignedhanya mempunyai nilai positif saja.

4.3 Variabel Local dan Global

Dalam bahasa pemrograman, dikenal variable yang bersifat lokal danglobal. Variabel local maksudnya bahwa variabel tersebut hanya di-kenal pada daerah local atau pada suatu fungsi tertentu. Fungsi laintidak akan mengenali variabel local pada fungsi lain. variabel-variabellocal dideklarasikan hanya di wilayah atau daerah fungsi tersebut dandikenal hanya pada wilayah tersebut. Sehingga kita bisa mendeklara-sikan variabel dengan identifier yang sama pada fungsi lain.

Variabel global mkasudnya adalah variabel yang dikenal diseluruhprogram. Jadi semua fungsi pada program mengenali dan dapat meng-akses variabel tersebut. Sehingga perlu pemakaian variabel globalperlu diperhatikan karena semua fungsi-fungsi dapat memanipulasidata yang ada pada variabel tersebut. Variabel global dideklarasikandiluar fungsi-fungsi dan funsi main() sebagai contoh berikut ini.

Page 34: Buku Pemrograman

22 Identifier, Penamaan dan Tipe Data

Tabel 4.1: Tipe data yang dimili-ki bahasa C dan C++

Tipe Data Ukuran (Byte) Nilai yang bisa ditampungchar 1 -128 ... 127

unsigned char 1 0 ... 255signed char 1 -128 ... 127

int 2 -32768 ... 32767short int 1 -32768 ... 32767

unsigned int 2 0 ... 65535signed int 2 -32768 ... 32767long int 4 -2147483648 ... 2147483647

unsigned long int 4 0 ... 4294967295signed long int 4 -2147483648 ... 2147483647

float 4 3.4e-38 ... 3.402e38double 8 1.175e-308 ... 1.17e308

long double 10 3.65e-4951 ... 1.18e4932void 0 tidak bernilai

1 #include<std io . h>2 / / deklarasi variabel g lobal3 f l o a t tegangan ;4

5 int main ( )6 {7 / / deklarasi variabel l o c a l8 f l o a t 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 in t f ( ” tegangan = %f \n” , tegangan ) ;13

14 return 0;15 }

Variabel tegangan adalah merupakan variabel global dan arusdan resistor adalah variabel local.

Page 35: Buku Pemrograman

Konstanta 23

4.4 Konstanta

Menghitung besaran-besaran fisis dalam bidang fisika memerlukansuatu konstanta-konstanta. Bahasa C dan C++ menyediakan tipe datatambahan sehingga variabel yang kita gunakan merupakan konstantadan nilainya tidak dapat diubah.

Ada dua cara yang biasa digunakan untuk menandakan bahwa su-atu identifier merupakan konstanta.

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke-yword const sebelum nama tipe data seperti

1 const f l o a t PI = 3.14159 , KECEPATAN SUARA = 343;2 const char printout [ ]= ” Ini konstanta str ing ” ;

Cara kedua untuk menyatakan suatu konstanta adalah dengan meng-gunakan fasilitas preprocessor #define sebagai contoh berikut ini.

1 #include<std io . h>2 #include<math . h>3

4 #def ine PI 3.141595

6 int main ( )7 {8 f l o a t sudut = 45 , b ;9

10 b = sin ( sudut∗PI /180 .0 )11

12 return 0;13 }

Preprocessor #define artinya sebelum kode program dikompilasi,semua identifier yang namanya ada setelah #difine diganti dengannilai atau teks setelah nama identifier. Sebagai contoh pada listing diatas, sebelum kompilasi kode program, semua keyword ”PI” digantindengan angka ”3.14159”. Atau dengan kata lain kode program diatassama dengan kode program berikut ini.

1 #include<std io . h>2 #include<math . h>3

4 int main ( )5 {6 f l o a t sudut = 45 , b ;

Page 36: Buku Pemrograman

24 Identifier, Penamaan dan Tipe Data

7

8 b = sin ( sudut ∗3.14159/180.0)9

10 return 0;11 }

KonstantaAda 2 Cara: 1) Dengan menggunakan preprocessor # define PI 3. 14159 2)

KonstantaCara Pertama: Sebelum kode di kompile, semua variabel yang d i definisikan

Cara Kedua: Disini kita mendeklarasikan sebuah variabel ya ng bernilai

#include<iostream> #include<cmath> using namespace std; # define PI 3.14159

Library untuk fungsi-fungsi Matematika

int main() { const float pi = 3.14159; cout << " sin(pi) = " << si n(PI)

Page 37: Buku Pemrograman

5Operasi 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 berikutini.

1 a = b ;2 a = a + c ;

Contoh perintah pertama a = b; mempunyai arti dalam bahasapemrograman 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, perintaha = a c;+ dapat dilakukan di dalam pemrograman yang artinya bah-wa nilai a dan c dijumlahkan terlebih dahulu dan kemudian hasilnyadimasukkan ke variabel a. Jadi tidak terjadi masalah dari segi kom-putasi. Perlu diingat bahwa ini merupakan proses mengkopi nilai darimemori satu ke dalam memori yang lain.

5.1.2 Aritmatika

Dalam komputasi 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

Page 38: Buku Pemrograman

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 * bpembagian / c = a/b c = a/bSisa 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, dariatas ke bawah

Operasi C Operator Urutan evaluasiperkalian * Dievaluasi pertama. Jika ada beberapa operasi,

pembagian / dievaluasi dari kiri ke kananSisa Bagi %

Penjumlahan + Jika ada beberapa operasi,Pengurangan - dievaluasi dari kiri ke kanan

1 rata rata1 = ( a + b + c + d ) / 4 ;2

3 / / tidak sama dengan4

5 rata rata2 = a + b + c + d / 4 ;

Tanda kurung diperlukan karena pembagian memiliki urutan yanglebih tinggi ” higher precedence ” dibandingkan dengan penjumlahan.

1 y = a∗b%c + d / 3 ;

yang dilakukan pertama adalah a*b kemudian hasilnya di sisa bagiterus kemudian ditambahkan dengan hasil d dibagi 3.

1 y = a∗x∗x + b∗x + c ;

Proses yang sebenarnya dilakukan oleh program adalah

Page 39: Buku Pemrograman

Aritmatika dengan dua operator 27

1 h1 = a∗x ;2 h2 = z∗x ;3 h3 = b∗x ;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++ ArtinyaPenjumlahan 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 == bTidak sama dengan 6= != a != b

Lebih besar dari > > a > bLebih besar dari atau sama dengan ≥ >= a >= b

Lebih kecil dari < < a < bLebih kecil dari atau sama dengan ≤ <= a <= b

Page 40: Buku Pemrograman

28 Operasi Matematika

5.4 Konversi Tipe

Jika dalam sebuah ekspresi ada beberapa konstanta dan variabel yangtipenya berbeda, dalam perhitungan kompiler c dan C++ akan menya-makan tipenya. Kompiker C dan C++ akan mengubah setiap operanmenjadi tipe lebih besar. Hal ini dikerjakan pada setiap operasi satuper satu.

Aturan-aturan konversi:

1. If either of the operands is of type float then the other operand isconverted to the same type.

2. If either of the operands is of type long int or unsigned long intthen the other operand is converted to the same type.

3. Otherwise, if either of the operands is of type int or unsigned intthen the other operand is converted to the same type.

4. Thus char type or unsigned char type gets the lowest priority.

1 int a = 2;2 int b= 1;3 f l o a t c =6.3 ;4 c = a∗b ;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 int a = 4;2 int b = 2;3 f l o a t c = 6 . 3 ;4 f l o a t d ;5 / / casting6 b = a + ( int ) c ;

Type casting dapat juga digunakan untuk menghindari overflowatau underflow, atau bilangan ke luar jangkauan tipe data, ketika ope-rasi perkalian dan pembagian dua bilangan.

Page 41: Buku Pemrograman

operasi binari 29

1 int a = 5000 , b = 4000;2 f l o a t c = 1.0E−30, d = 1.5E−12;3 long int c ;4 double f ;5

6 / / n i l a i ( a∗b ) ke luar interval bilangan7 c = a∗b ;8 / / n i l a i ( c∗d ) overflow9 f = c∗d ;

10 / / casting untuk menghindari error11 c = ( long int ) a∗b ;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)xy 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”.

Page 42: Buku Pemrograman

30 Operasi Matematika

Contoh:

1 / / f i l e seg i t iga . c2 #include<std io . h>3 #include<math . h>4

5 int main ( )6 {7 double a = 3 , b = 5 , c ; / / panjang s i s i−s i s i seg i t iga8

9 c = sqrt ( a∗a + b∗b ) ;10 / / panjang s i s i miringnya11 pr in t 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

.

Page 43: Buku Pemrograman

6Fungsi 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 fungsiscanf() 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 menggunakanfasilitas stdio.h kita harus memasukkan protopipe yang terdapat distdio.h. Kita memberitahu kompiler untuk menambahkan pustaka (li-brary) stdio.h dengan perintah #include pada saat preprocessing.

1 #include<std io . h>

Bentuk penulisan fungsi printf() adalah sebagai berikut.

1 void pr in t f ( char ∗ str , arg1 , arg2 , . . . )2 / / contoh :3 pr in t f ( ” . . . . s tr ing / kalimat . . . . %f %d” , var1 , var2 ) ;

Untuk memulai baris baru, tambahan \n digunakan seperti beri-kut ini.

1 pr in t f ( ” In i baris pertama \n Baris kedua \n Baris ketiga ” ) ;

Page 44: Buku Pemrograman

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 fungsiprintf()

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 ditampilakanpada layar komputer dengan menyisipkan tanda formating (formatspecifier) 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 in t f ( ” Nilai parameter alpha = %f ” , alpha ) ;3

4 pr in t f ( ” Posis i part ike l = (%f ,% f ) ” , x , y ) ;

Secara garis besar format specifier harus dimulai dengan tanda %dan diikuti dengan huruf yang menyatakan bentuk dari output. Se-perti contoh "%f" menunjukkan bahwa output berbentuk bilangan flo-ating point (untuk tipe data float). Format specifier yang lain dapatdilihat pada Table 6.2.

Page 45: Buku Pemrograman

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 float, dengan bentuk [-]d.dddddd e[-]dd’E’ untuk float, dengan bentuk [-]d.dddddd E[-]dd’f ’ untuk float, 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

Page 46: Buku Pemrograman
Page 47: Buku Pemrograman

7Kontrol Aliran dan Pengulangan

Pada bab ini kita akan membahas bagaimana mengatur aliran perintah-perintah yang kita berikan dengan menggunakan pernyataan if..else danmelakukan 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/perintah1else 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");

Page 48: Buku Pemrograman

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){

Page 49: Buku Pemrograman

Pengulangan 37

pernyataanA;

break;

pernyataanB;}

for(pernyataan1; pernyataan2; pernyataan3){

pernyataanA;

continue;

pernyataanB;

}

Page 50: Buku Pemrograman
Page 51: Buku Pemrograman

8Array

\section{Variabel Array}Format: Tipe nama[jumlah];

Contoh: Int g[10]; // buat array dengan 10 elemen Elemen dimu lai dengan indeks

\section{Akses Array}Contoh: double w[6] ={0,4,5,1,3,4} //cetak isi array for(i nt 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 nam a[jumlah][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 fungsiContoh: void cetaknilai(int a[][4],int n) { for(int i = 0; i< n; i++){ for(int

\section{String dibuat dengan array char}Contoh: int main() { char nama[20] = "Einstein"; cout << "nam a : " << nama;

Page 52: Buku Pemrograman
Page 53: Buku Pemrograman

9Fungsi

FungsiDi setiap program C++, kita harus mendefinisikan /mendekla rasikan fungsi main(),

Fungsi Format deklarasi fungsi: Tipe NamaFungsi(deklaras i parameter) { -----return sesuatu; } Tipe Tipe nilai yang di hasilkan oleh fungs i 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 d efinisi double

#include <iostream> using namespace std;

Fungsi, Cara 2

double tambah(double a, double b); // deklarasi int main() { cout << tambah(3,

#include <iostream> using namespace std;

Fungsi, Void 1

double seratus(void); // deklarasi int main() { cout << sera tus; } // definisi

#include <iostream> using namespace std;

Fungsi, Void 2

void cetakgaris(void); // deklarasi int main() { cetakgari s(); } // definisi

Page 54: Buku Pemrograman

42 Fungsi

Dua Cara Input/masukan FungsiCara 1) Input menggunakan nilai Seperti sebelumnya: double tambah(double

#include <iostream> using namespace std;

Fungsi

void limakali(double &x); // deklarasi int main() { double a = 2; limakali(a);

#include <iostream> using namespace std;

Fungsi

void tukar(double &x, double &y); // deklarasi int main() { d ouble a

#include <iostream> using namespace std;

Fungsi, Variabel global

double x=2; // global variabel x void limakalix(void); // de klarasi int

Kita bisa mendeklarasikan banyak fungsi dengan nama fungsi yang sama

Fungsi, Overloaded

Fungsi, InlineKeyword 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 els e as:

int alfa(char par1, int par2, long par3) {

Page 55: Buku Pemrograman

43

/ * Write some statements here * /

}

The old Kernighan & Ritchie style of writing function defini tions is not supported.Function parameters are passed through the Data Stack.Function values are returned in registers R30, R31, R22 and R 23 (from LSB

Page 56: Buku Pemrograman
Page 57: Buku Pemrograman

10Struktur

Structures are user-defined collections of named members.The structure members can be any of the supported data types, arrays of theseStructures 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>]:<wi dth>, ...]];...} [<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;

Page 58: Buku Pemrograman

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 arr ay 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;

Page 59: Buku Pemrograman

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 t o keep theExample:

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 fromBit fields are allocated in the order of declaration startin g from the leastExample:

/ * this structure will occupy 1 byte in RAMas the bit field data type is unsigned char * /

struct alpha1 {

Page 60: Buku Pemrograman

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 RAMas 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 RAMas 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 s hare the sameThe union members can be any of the supported data types, arra ys of theseUnions are defined using the union reserved keyword.The syntax is:

[<memory attribute>] [<storage modifier>] union [<union t ag-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 theUnion members can be accessed in the same way as structure mem bers. Example:

Page 61: Buku Pemrograman

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 t o keep theExample:

#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));}

Page 62: Buku Pemrograman

50 Struktur

Union members can be also declared as bit fields, having a wid th fromBit fields are allocated in the order of declaration startin g from theExample:

/ * this union will occupy 1 byte in RAMas 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 RAMas 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 RAMas 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 mnem onic identifiersThe enum keyword is used for this purpose.The syntax is:

[<memory attribute>] [<storage modifier>] enum [<enum tag -name>] {[<constant-name[[=constant-initializer], constant-na me, ...]>]}[<enum variables>];

Page 63: Buku Pemrograman

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 spec ify enumerationExample:

eeprom enum days {sunday, monday, tuesday, wednesday,thursday, friday, saturday} days_of_week;

The flash or __flash memory attributes must be used to specif y enumerationExample:

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 d ata type, by

Page 64: Buku Pemrograman

52 Struktur

This will improve the size and execution speed of the compile d program.

\section{Tipe Data Baru}Defining Data Types Previous Top Next

User defined data types are declared using the typedef reser ved keyword.The syntax is:

typedef <type definition> <identifier>;

The symbol name <identifier> is assigned to <type definitio n>.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;

Page 65: Buku Pemrograman

11Lab 1: Pengenalan Bahasa C

Pada Lab 1 ini kita akan mempelajari tentang bahasa C yang seder-hana terutama tentang bagaimana mengkompilasi dan menjalankanprogram 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 pr in t f ( ” Hello C++ \n” ) ;9 pr in t f ( ” Saya bisa membuat program dengan C” ) ;

10

11 return 0;12 }

Setelah selesai mengetik kode di atas, kemudian simpan kode ter-sebut ke file dengan nama dan ekstensi .c. Sebagai contoh kita berinama helo.c .

Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cppuntuk pindah ke folder tempat file yang telah kita telah buat berada.

Kemudian kita kompilasi kode tersebut dengan salah satu perintahberikut ini:

Page 66: Buku Pemrograman

54 Lab 1: Pengenalan Bahasa C

$ gcc namafile.c$ gcc namafile.c -o namafile.exe

Ingat tanda $ tidak diketik melainkan hanya menunjukkan barisperintah yang ada pada cygwin atau command prompt.

11.2 Modifikasi

Langkah selanjutnya adalah mengubah program sederhana di atas,dengan menambahkan beberapa baris perintah. Cobalah tambahkanbaris ini satu per satu dan lihat apa yang dihasilkan dilayar setelahprogram 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 modifikasi apa saja yang anda ingin tampilkan pada layar.

Page 67: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 int a , b = 3 , c = 2;9

10 pr in t f ( ” n i l a i a = %d \n” , a ) ;11 pr in t f ( ” n i l a i b = %d \n” , b ) ;12 pr in t f ( ” n i l a i c = %d \n” , c ) ;13

14 a = b + c ;15

16 pr in t f ( ” n i l a i 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 kesalahanyang muncul pada waktu kita kompilasi kode.

1

2 int 2apel ;3 long banyak ! ;4 double desi−mal ;5 double desi mal ;6 double DESI mal ;

Page 68: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 int a = 2 , b = 3 , c , d ;9 f l o a t 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 in t f ( ” Baris 1 : n i l a i c = %d \n” , c ) ;17 pr in t f ( ” Baris 2 : n i l a i r = %d \n” , r ) ;18 pr in t f ( ” Baris 3 : n i l a i r = %f \n” , r ) ;19 pr in t f ( ” Baris 4 : n i l a i 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 Baris2 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t x , y ;9

Page 69: Buku Pemrograman

Lab 2: Pengenalan Variabel dan Operasi Matematis 57

10 pr in t f ( ”Masukkan n i l a i x :\n” ) ;11 scanf ( ”%f ” ,&x ) ;12

13 pr in t f ( ” Nilai yang Anda masukkan adalah %f \n” , x ) ;14

15 pr in t f ( ”Masukkan dua n i l a i x dan y :\n” ) ;16 scanf ( ”%f %f ” ,&x , &y ) ;17

18 pr in t f ( ” Nilai yang Anda masukkan adalah %f dan %f \n” , x , y ) ;19 pr in t f ( ” Perkalian antara x dan y menghasilkan %f \n” , x∗y ) ;20

21 return 0;22 }

Perhatikan baris yang mengadung fungsi scanf . Mengapa kitamenggunakan simbol &? Apa yang terjadi jika tanda format %f di-ganti dengan %dpada fungsi scanf ? Mengapa hasil yang dilihat padalayar berbeda dengan apa yang dimasukkan?

Page 70: Buku Pemrograman
Page 71: Buku Pemrograman

12Lab 3: Pengenalan define dan

math.h

12.1 Define dan const

Dengan menggunakan notepad atau notepad++ atau nedit ketik be-berapa baris kode c++ berikut ini.

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 #def ine pi1 3.141597

8 int main ( )9 {

10 const f l o a t pi2 = 3.14159;11

12 pr in t f ( ” n i l a i pi1 = %f \n” , pi1 ) ;13 pr in t f ( ” n i l a i 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

Page 72: Buku Pemrograman

60 Lab 3: Pengenalan define dan math.h

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5 #include<math . h>6

7 #def ine pi 3.141598

9 using namespace std ;10

11 int main ( )12 {13 f l o a t sudut = 38; / / dalam derajat14

15 pr in t f ( ” sin(% f ) = %f \n” , sin ( pi∗sudut /180 .0 ) ) ;16 pr in t 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 temperaturedalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakanrumus

TF =9

5TC + 32 (12.1)

. Disini input program adalah TC dan output program adalah TF

.

2. Buatlah program yang diberikan input tiga bilangan (x, y danz) dan hitung nilai rata-rata bilangan-bilangan ini dengan duarumus: s = (x + y + z) = 3 dan p = 3

√xyz. Disini input program

adalah x, y dan z, dan output program adalah s dan p.

Page 73: Buku Pemrograman

13Lab 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 int i ;9 int s ;

10

11 f o r ( i =1; i <=20; i ++){12 pr in t f ( ” n i l a i i = %d \n” , i ) ;13 }14

15 s = 0;16 f o r ( i =1; i <=20; i ++){17 s = s + 1;18 }19

20 pr in t f ( ” n i l a i s = %d \n” , s ) ;21

22 return 0;23 }

Apa yang ditampilkan pada layar? berapakah nilai s? Mengapanilai s demikian? Jika menggunakan rumus deret aritmatika atau de-

Page 74: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5 #include<math . h>6

7 int main ( )8 {9 int i , n ;

10 f l o a t c ;11 f l o a t dx ;12 f l o a t x ;13

14 dx = 0 . 1 ;15 n=10;16

17 i =1;18 pr in t f ( ” NO X SIN(X) \n” ) ;19 while ( i<n) {20 x = i ∗dx ;21 c = cos ( x ) ;22 pr in t 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 kegunaanbaris i=1; dan i++; ?

13.3 do-while

Dengan menggunakan notepad atau notepad++ atau nedit ketik be-berapa baris kode c++ berikut ini.

Page 75: Buku Pemrograman

do-while 63

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5 #include<math . h>6

7 int main ( )8 {9 int i , n ;

10 f l o a t c ;11 f l o a t dx ;12 f l o a t x ;13

14 dx = 0 . 1 ;15 n= 10;16

17 i =1;18 pr in t f ( ” NO X SIN(X) \n” ) ;19 do{20 x = i ∗dx ;21 c = cos ( x ) ;22 pr in t 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 yangdiperoleh dengan menggunakan while saja? Perhatikan perbedaanpenggunaan while dan do...while di atas? Jika kita ganti barisn=10; menjadi n=0; pada kedua contoh kode menggunakan whiledan do...while , apa yang ditampilkan pada layar? Apa perbedaan-nya antara kedua program tersebut?

Page 76: Buku Pemrograman
Page 77: Buku Pemrograman

14Lab 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t x , y ;9

10 pr in t f ( ”Masukkan n i l a i x :\n” ) ;11 scanf ( ”%f ” ,&x ) ;12

13 i f ( x<5.0) pr in t f ( ”Angka lebih k e c i l dari 5.0 \n” ) ;14

15 i f ( x>5.0){16 pr in t f ( ”Angka lebih besar dari 5.0 \n” ) ;17 }18

19 return 0;20 }

Apa yang ditampilkan pada layar? Apa perbedaan dua fungsi if diatas?

Page 78: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t x , y ;9

10 pr in t f ( ”Masukkan n i l a i x :\n” ) ;11 scanf ( ”%f ” ,&x ) ;12

13 i f ( x<5.0) pr in t f ( ”Angka lebih k e c i l dari 5.0 \n” ) ;14 e lse pr in t f ( ”Angka lebih 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t x ;9

10 pr in t f ( ”Masukkan n i l a i x :\n” ) ;11 scanf ( ”%f ” ,&x ) ;12

13 i f ( x<5.0) pr in t f ( ”Angka lebih k e c i l dari 5.0 \n” ) ;14 e lse i f ( x<10.0) pr in t f ( ”Angka lebih besar dari 5.0 dan lebih

k e c i l dari 10.0 \n” ) ;

Page 79: Buku Pemrograman

()?:: 67

15 e lse i f ( x<100.0) pr in t f ( ”Angka lebih besar dari 10.0 danlebih k e c i l dari 100.0 \n” ) ;

16 e lse i f ( x<1000.0) pr in t f ( ”Angka lebih besar dari 100.0 danlebih k e c i l dari 1000.0 \n” ) ;

17 e lse pr in t f ( ”Angka lebih 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t x , y , z ;9

10 pr in t f ( ”Masukkan n i l a i x :\n” ) ;11 scanf ( ”%f ” ,&x ) ;12

13 pr in t f ( ”Masukkan n i l a i y :\n” ) ;14 scanf ( ”%f ” ,&y ) ;15

16 z = ( x<y ) ? x : y ;17

18 pr in t f ( ” Nilai z = %f \n” , z ) ;19 return 0;20 }

Apa yang ditampilkan pada layar? Perhatikan penggunaan opera-tor conditional (()?:). Nilai apa yang ditampilkan oleh program? lebihbesar atau lebih kecil?

Page 80: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 int a ;9

10 pr in t f ( ”Masukkan bilangan bulat antara 1 sampai 10:\n” ) ;11 scanf ( ”%d” ,&a ) ;12

13 switch ( a ) {14 case 1:15 pr in t f ( ” Pilihan Satu\n” ) ;16 break ;17 case 2:18 pr in t f ( ” Pilihan Dua\n” ) ;19 break ;20 case 3:21 pr in t f ( ” Pilihan Tiga\n” ) ;22 break ;23 case 4:24 pr in t f ( ” Pilihan Empat\n” ) ;25 break ;26 default :27 pr in t f ( ” Pilihan Lain−la in \n) ;28 }29

30 return 0;31 }

Apa yang ditampilkan pada layar? Perhatikan penggunaan switch .

Page 81: Buku Pemrograman

15Lab 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int jumlah ( int a , int b ) ;7

8 int bagidua ( int a ) ;9

10 int main ( )11 {12 int a = 3 , b = 5 , c ;13

14 c = jumlah ( a , b ) ;15

16 pr in t f ( ” n i l a i a = %d \n” , a ) ;17 pr in t f ( ” n i l a i b = %d \n” , b ) ;18 pr in t f ( ” n i l a i jumlah (a , b ) = %d” , c ) ;19

20 return 0;21 }22

23 int jumlah ( int a , int b )24 {25 return ( a+b ) ;26 }27

28 int bagidua ( int a )

Page 82: Buku Pemrograman

70 Lab 6: Pengenalan Fungsi dan Array

29 {30 return ( a / 2 ) ;31 }

Jelaskan apa saja yang diperlukan untuk mendefinisikan sebuahfungsi? 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t a [ 1 0 ] ;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 in t f ( ” a [ 0 ] = %f \n” ,a [ 0 ] ) ;17 pr in t f ( ” a [ 1 ] = %f \n” ,a [ 1 ] ) ;18 pr in t f ( ” a [ 4 ] = %f \n” ,a [ 4 ] ) ;19 pr in t 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 kitakompilasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi.Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi.

Page 83: Buku Pemrograman

16Lab 7: Pengenalan Pointer

16.1 Pointer

Dengan menggunakan notepad atau notepad++ atau nedit ketik be-berapa baris kode c++ berikut ini.

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 f l o a t a ; / / variabel t ipe f l o a t9 f l o a t ∗p ; / / sebuah pointer t ipe f l o a t

10 a = 2 . 3 ;11 p = &a ; / / variabel p b e r i s i alamat variabel a12

13 pr in t f ( ”%f \n” , a ) ;14

15 ∗p = 4 . 2 ; / / kita ubah n i l a i variabel a16

17 pr in t f ( ”%f \n” , a ) ;18

19 return 0;20 }

Dengan menggunakan kode ini jelaskan apa saja yang diperlukanuntuk mendefinisikan sebuah pointer? dan bagaimana mengunakanpointer?

Page 84: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<std io . h>5

6 int main ( )7 {8 int ∗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 in t f ( ” n i l a i yang ditunjuk oleh p = %d\n” ,∗p ) ;17

18 p = p + 1; / / p menunjuk ke alamat b [ 1 ]19

20 pr in t f ( ” n i l a i yang ditunjuk oleh p = %d\n” ,∗p ) ;21

22 p−−; / / kembali ke alamat b [ 0 ]23

24 pr in t f ( ” n i l a i yang ditunjuk oleh p = %d\n” ,∗p ) ;25

26 p = p + 3; / / p menunjuk ke alamat b [ 3 ]27

28 pr in t f ( ” n i l a i yang ditunjuk oleh 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 #include<std io . h>2

Page 85: Buku Pemrograman

Latihan 73

3 void swap ( f l o a t ∗ , f l o a t ∗ ) ;4

5 int main ( )6 {7 f l o a t a = 2.5 , b = 6 . 0 ;8

9 pr in t f ( ”%f %f \n” , a , b ) ;10

11 swap(&a , &b ) ;12

13 pr in t f ( ”%f %f \n” , a , b ) ;14

15 return 0;16 }17

18 void swap ( f l o a t ∗x , f l o a t ∗y )19 {20 f l o a t 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 danz) dan hitung nilai rata-rata bilangan-bilangan ini dengan duarumus: s = (x + y + z)/3 dan p = 3

√xyz. Disini input program

adalah x, y dan z, dan output program adalah s dan p.

Page 86: Buku Pemrograman
Page 87: Buku Pemrograman

17Lab 1: Pengenalan Bahasa C++

Pada Lab 1 ini kita akan mempelajari tentang bahasa C++ yang seder-hana dan bagaimana mengkompilasi dan menjalankan program yangkita buat. Untuk lebih mengerti proses yang akan dilakukan dalambahasa 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int main ( )9 {

10 cout << ” Hello C++” << endl ;11 cout << ” Saya bisa membuat program dengan C++” << endl ;12

13 return 0;14 }

Setelah selesai mengetik kode di atas, kemudian simpan kode ter-sebut ke file dengan nama dan ekstensi .cpp.

Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cppuntuk pindah ke folder tempat file yang telah kita ketik berada.

Kemudian kita kompilasi kode tersebut dengan salah satu perintahberikut ini:

Page 88: Buku Pemrograman

76 Lab 1: Pengenalan Bahasa C++

1

2 $ g++ nama. cpp3 $ g++ nama. cpp −o nama. exe

Ingat tanda $ tidak diketik melainkan hanya menunjukkan barisperintah pada cygwin atau command prompt.

17.2 Modifikasi

Langkah selanjutnya adalah mengubah program sederhana di atas,dengan menambahkan beberapa baris perintah. Cobalah tambahkanbaris ini satu per satu dan lihat apa yang dihasilkan dilayar setelahprogram dieksekusi.

1

2 cout <<” i n i tab a\ t b \ t c ” << endl ;3 cout <<” i n i baris baru a\n b \n c \n” << endl ;4 cout <<” i n i garis miring \\ \” ” << endl ;

Cobalah modifikasi apa saja yang anda ingin tampilkan pada layar.

Page 89: Buku Pemrograman

18Lab 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int main ( )9 {

10 int a , b = 3 , c ( 2 ) ;11

12 cout << ” n i l a i a = ” << a << endl ;13 cout << ” n i l a i b = ” << b << endl ;14 cout << ” n i l a i c = ” << c << endl ;15

16 a = b + c ;17

18 cout << ” n i l a i a = ” << a << endl ;19

20 return 0;21 }

Berapakah nilai a, b dan c?

Page 90: Buku Pemrograman

78 Lab 2: Pengenalan Variabel dan Operasi Matematis

18.2 Kesalahan Penulisan Variabel

Tambahkan kode berikut ini dan catat apa kesalahan yang munculpada waktu kita kompilasi kode.

1

2 int 2apel ;3 long banyak ! ;4 double desi−mal ;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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int main ( )9 {

10 int a = 2 , b = 3 , c ;11 f l o a t i = 2 , j = 3 , k ;12

13 c = 2 / 3 ;14 k = i / j ;15 cout << ” n i l a i c = ” << c << endl ;16 cout << ” n i l a i b = ” << b << endl ;17

18 a = i + j ;19

20 return 0;21 }

Berapakah nilai c dan k? Apa yang ditampilkan pada layar ketikakita kompilasi? dan ketika program dieksekusi? Mengapa nilai c tidaksama dengan k?

Page 91: Buku Pemrograman

19Lab 3: Pengenalan Define dan

cmath

19.1 Define dan const

Dengan menggunakan notepad atau notepad++ atau nedit ketik be-berapa baris kode c++ berikut ini.

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 #def ine pi1 3.141597

8 using namespace std ;9

10 int main ( )11 {12 const f l o a t pi2 = 3.14159;13

14 cout << ” n i l a i pi1 = ” << pi1 << endl ;15 cout << ” n i l a i 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.

Page 92: Buku Pemrograman

80 Lab 3: Pengenalan Define dan cmath

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5 #include<cmath>6

7 #def ine pi 3.141598

9 using namespace std ;10

11 int main ( )12 {13 f l o a t sudut = 38; / / dalam derajat14

15 cout << ” sin ( ” << sudut <<” ) = ” << sin ( 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 temperaturedalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakanrumus

TF =9

5TC + 32 (19.1)

. Disini input program adalah TC dan output program adalah TF

.

2. Buatlah program yang diberikan input tiga bilangan (x, y danz) dan hitung nilai rata-rata bilangan-bilangan ini dengan duarumus: s = (x + y + z) = 3 dan p = 3

√xyz. Disini input program

adalah x, y dan z, dan output program adalah s dan p.

Page 93: Buku Pemrograman

20Lab 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int jumlah ( int a , int b ) ;9

10 int main ( )11 {12 int a = 3 , b = 5 , c ;13

14 c = jumlah ( a , b ) ;15

16 cout << ” n i l a i a = ” << pi1 << endl ;17 cout << ” n i l a i b = ” << pi2 << endl ;18 cout << ” n i l a i jumlah ( a , b ) = ” << c << endl ;19

20 return 0;21 }22

23 int jumlah ( int a , int b )24 {25 return ( a+b ) ;26 }

Page 94: Buku Pemrograman

82 Lab 4: Pengenalan Fungsi dan Array

Jelaskan apa saja yang diperlukan untuk mendefinisikan sebuahfungsi? 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5 using namespace std ;6

7 int main ( )8 {9 f l o a t a [ 1 0 ] ;

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 kitakompilasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi.Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi.

Page 95: Buku Pemrograman

21Lab 5: Pengenalan Pointer

21.1 Pointer

Dengan menggunakan notepad atau notepad++ atau nedit ketik be-berapa baris kode c++ berikut ini.

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int main ( )9 {

10 f l o a t a ; / / variabel t ipe f l o a t11 f l o a t ∗p ; / / sebuah pointer t ipe f l o a t12 a = 2 . 3 ;13 p = &a ; / / variabel p b e r i s i alamat variabel a14

15 cout << a << endl ;16

17 ∗p = 4 . 2 ; / / kita ubah n i l a i variabel a18

19 cout << a << endl ;20 }21 return 0;22 }

Dengan menggunakan kode ini jelaskan apa saja yang diperlukanuntuk mendefinisikan sebuah pointer? dan bagaimana mengunakanpointer?

Page 96: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int main ( )9 {

10 int ∗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 << ” n i l a i yang ditunjuk oleh p = ” << ∗p << endl ;19

20 p = p + 1; / / p menunjuk ke alamat b [ 1 ]21

22 cout << ” n i l a i yang ditunjuk oleh p = ” << ∗p << endl ;23

24 p−−; / / kembali ke alamat b [ 0 ]25

26 cout << ” n i l a i yang ditunjuk oleh p = ” << ∗p << endl ;27

28 p = p + 3; / / p menunjuk ke alamat b [ 3 ]29

30 cout << ” n i l a i yang ditunjuk oleh 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.

Page 97: Buku Pemrograman

Latihan 85

1 #include<iostream>

2

3 using namespace std ;4

5 void swap ( f l o a t ∗ , f l o a t ∗ ) ;6

7 int main ( )8 {9 f l o a t 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 void swap ( f l o a t ∗x , f l o a t ∗y )21 {22 f l o a t t ;23

24 t = ∗x ;25 ∗x = ∗y ;26 ∗y = t ;27 }

Apa

2. Buatlah program yang diberikan input tiga bilangan (x, y danz) dan hitung nilai rata-rata bilangan-bilangan ini dengan duarumus: s = (x + y + z)/3 dan p = 3

√xyz. Disini input program

adalah x, y dan z, dan output program adalah s dan p.

Page 98: Buku Pemrograman
Page 99: Buku Pemrograman

22Lab 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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 int main ( )9 {

10 char a ;11 char nama[ 3 0 ] ;12 char ilmuwan[30]={ ’N ’ , ’E ’ , ’W’ , ’T ’ , ’O ’ , ’N ’ } ;13 char satuan [30]= n e w t o n ;14

15 a = ’H ’ ;16

17 cout << ” n i l a i a = ” << a << endl ;18 cout << ” n i l a i nama = ” << nama << endl ;19 cout << ” n i l a i ilmuwan = ” << ilmuwan << endl ;20 cout << ” n i l a i satuan = ” << satuan << endl ;21

22 return 0;23 }

Bagaimana mendefinisikan sebuah tipe data char? Apa yang di-tampilkan pada layar?

Page 100: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5 #include<string>6

7 using namespace std ;8

9 int main ( )10 {11 str ing kalimatUtama ;12 str ing kataSambung ;13 str ing kalimatPenting ;14

15 kalimatUtama = Saya past i bisa C++ ;16 kataSambung = karena ;17 kalimatPenting = C ++ mudah ;18 kalimatUtama += kataSambung + kalimatPenting ;19

20 cout << kalimatUtama << endl ;21

22 return 0;23 }

Bagaimana mendefinisikan sebuah string? dan bagaimana meng-gunakannya?

22.3 getline()

Kita menggunakan fungsi getline() untuk mengambil input dalam satubaris.

1

2 #include<iostream>

3 #include<string>4

5 using namespace std ;6

7 int main ( )8 {

Page 101: Buku Pemrograman

getline() 89

9 str ing kalimat ;10 cout << masukkan sebuah kalimat : <<endl ;11

12 ge t l ine ( cin , kalimat ) ;13

14 cout << kal imat anda adalah : \ n << kalimat ;15

16 return 0;17 }

Jadi yang perlu diingat adalah cara pemakaian getline(cin, kalimat) .Modifikasi kode ini untuk keperluan anda.

Page 102: Buku Pemrograman
Page 103: Buku Pemrograman

23Lab 7: Pengenalan Object

Oriented Programming (OOP)dengan Class

23.1 Struct

Sebelum kita mempelajari tentang OOP, kita perlu mengenal terlebihdahulu 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-definisikan tipe data yang baru. Elemen data dinamakan anggotastruktur. Anggota bisa bertipe apa saja dan berbeda dan ukuran ber-beda.

Untuk membuat struktur data kita menggunakan kata kunci ataukeyword struct dengan format sebagai berikut:

1 struct namastruktur{2 tipe1 nama anggota1 ;3 tipe2 nama anggota2 ;4 . . .5 } nama variabel ;

Sebagai contoh data mahasiswa berikut ini.

1

2 struct mahasiswa {3 str ing nama;4 str ing nim ;5 long int umur ;6 f l o a t t ingg i ;7 f l o a t berat ;8 } andi ; / / d e f i n i s i mahasiswa dan deklarasi andi

Page 104: Buku Pemrograman

92Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class

9

10 / / deklarasi variabel be l la11 mahasiswa bel la ;

Contoh cara akses anggota struct dengan tanda titik dan nama ang-gota:

Untuk lebih jelas, kita ketik kode berikut ini.

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5 #include<string>6

7 using namespace std ;8

9 / / d e f i n i s i struktur mahasiswa10 struct mahasiswa {11 str ing nama;12 str ing nim ;13 long int umur ;14 f l o a t t ingg i ;15 f l o a t berat ;16 } ;17

18 int main ( )19 {20 mahasiswa m;21 m.nama = A l b e r t E i n s t e i n ;22 m.umur = 25;23 m. t ingg i = 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.

Page 105: Buku Pemrograman

Inheritance 93

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 c lass Posis i {9 protected :

10 double x , y ;11 public :12 void Posis i ( double , double ) ;13 double getx ( ) ;14 double gety ( ) ;15 } ;16

17 int main ( )18 {19 Posis i a , b (2 ,3 ) ;20

21 a = Posis i ( 4 ,2 ) ;22 b = a ;23 cout << ” n i l a i komponen x dari a = ” << a . getx ( ) << endl ;24 cout << ” n i l a i komponen y dari a = ” << a . gety ( ) << endl ;25

26 return 0;27 }28

29 double Posis i : : getx ( ) {30 return x ;31 }32 double Posis i : : gety ( ) {33 return y ;34 }35 double Posis i : : Posis i ( double a , double b ) {36 x = a ; y = b ;37 }

Bagaimana mendefinisikan 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.

Page 106: Buku Pemrograman

94Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class

1

2 /∗ t u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include<iostream>

5

6 using namespace std ;7

8 c lass Posis i {9 protected :

10 double x , y ;11 public :12 void Posis i ( double , double ) ;13 double getx ( ) ;14 double gety ( ) ;15 } ;16

17 c lass Lingkaran : public Posis i {18 double r ;19

20 Public :21 void Lingkaran ( double , double , double ) ;22 double getr ( ) ;23 } ;24 int main ( )25 {26 Lingkaran g (2 ,3 ,10) ;27

28 cout << ” n i l a i komponen x dari g = ” << g . getx ( ) << endl ;29 cout << ” n i l a i komponen y dari g = ” << g . gety ( ) << endl ;30 cout << ” n i l a i j ar i−j a r i r dari g = ” << g . getr ( ) << endl ;31

32 return 0;33 }34

35 double Posis i : : getx ( ) {36 return x ;37 }38 double Posis i : : gety ( ) {39 return y ;40 }41 double Posis i : : Posis i ( double a , double b ) {42 x = a ; y = b ;43 }44

45 double Lingkaran : : getr ( ) {46 return r ;47 }48

Page 107: Buku Pemrograman

Inheritance 95

49 double Lingkaran : : Lingkaran ( double a , double50 b , double c ) {51 x = a ; y = b ; r = c ;52 }

Bagaimana mendefinisikan sebuah tipe data baru yang merupakanpenurunan dari tipe data yang lain? dan bagaimana menggunakan-nya? Mengapa konsep inheritance berguna? keuntungannya apa?

Page 108: Buku Pemrograman
Page 109: Buku Pemrograman

24Lab 8: Menggunakan Make

Dalam membuat program, terutama untuk program yang besar, kitaperlu membagi kode program tersebut menjadi banyak fungsi-fungsiatau class-class yang selanjutnya disimpan dalam file/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 file? Tentunya ini bisa dilakukan! Tetapi, alangkah lebihbaik jika kita bagi file tersebut menjadi beberapa file sesuai denganbab atau chapter. Jadi setiap kita bekerja kita membuka satu file yangukurannya jauh lebih kecil dibandingkan sebuah file untuk satu buku.Begitu pula sebuah program, kita bisa lebih mudah mengerjakannyajika membagi kode program menjadi beberapa file.

Untuk lebih jelas, kita bisa lihat contoh kode program dibawah ini.

1 / / nama f i l e : f a c t o r i a l . cpp2 #include<iostream>

3 #include<cmath>4

5 using namespace std ;6

7 / / Deklarasi atau prototype fungsi−fungsi8 void input ( long &) ;9 long h i tung fac to r ia l ( long ) ;

10 void output ( long ) ;11

12 int main ( )13 {14 long bilangan , fac t ;15

16 input ( bilangan ) ;17 f ac t = h i tung fac to r ia l ( bilangan ) ;18 output ( bilangan ) ;19

20 return 0;

Page 110: Buku Pemrograman

98 Lab 8: Menggunakan Make

21 }22

23 / / De f in i s i fungsi fungsi24

25 void input ( long &a )26 {27 cout <<”Masukkan bilangan bulat : ” <<endl ;28 cin >> a ;29 }30

31 void output ( long a )32 {33 cout <<” Faktorial bilangan i n i adalah ” << a << endl ;34

35 }36

37 long h i tung fac to r ia l ( long a )38 {39 long f =1;40

41 f o r ( 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 a c t o r i a l . cpp −o fac 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 file terlebih dahulu dan kemudian membuatprogram file. Seperti contoh di bawah ini.

1 g++ −c −O f a c t o r i a l . cpp2

3 g++ f a c t o r i a l . o −o f r a c t . exe

Perintah pertama kita menggunakan tambahan -c pada ++* untuk menkompileke object atau tanpa membuat program (proses compile). File yang di-hasilkan berakhiran .o (atau object file). Karena nama filenya adalah

Page 111: Buku Pemrograman

99

factorial.cpp maka dihasilkan factorial.o . Setelah dikompilekita bisa membuat program dengan perintah kedua (disebut proseslinking). Nanti akan lebih jelas mengapa ini diperlukan.

Kode program di atas kita akan bagi menjadi tiga file yaitu main.cpp ,factorial.cpp dan factorial.h .

1 −−−−−−−− f i l e : f a c t o r i a l . h −−−−−−−−−−2 / / Deklarasi atau prototype fungsi−fungsi3 void input ( long &) ;4 long h i tung fac to r ia l ( long ) ;5 void output ( long ) ;6

7

8 −−−−−−−− f i l e : main . cpp −−−−−−−−−−9 #include<iostream>

10 #include<cmath>11 #include ” f a c t o r i a l . h”12

13 using namespace std ;14

15

16 int main ( )17 {18 long bilangan , fac t ;19

20 input ( bilangan ) ;21 f ac t = h i tung fac to r ia l ( bilangan ) ;22 output ( bilangan ) ;23

24 return 0;25 }26

27 −−−−−−−− f i l e : f a c t o r i a l . cpp −−−−−−−−−−28

29 / / De f in i s i fungsi fungsi30 #include ” f a c t o r i a l . h”31 #include<iostream>

32

33 using namespace std ;34

35 void input ( long &a )36 {37 cout <<”Masukkan bilangan bulat : ” <<endl ;38 cin >> a ;39 }40

41 void output ( long a )42 {43 cout <<” Faktorial bilangan i n i adalah ” << a << endl ;

Page 112: Buku Pemrograman

100 Lab 8: Menggunakan Make

44

45 }46

47 long h i tung fac to r ia l ( long a )48 {49 long f =1;50

51 f o r ( long i = 1; i<=a ; i ++){52 f ∗= i ;53 }54

55 return f ;56 }

Jadi di atas, file factorial.h yang juga disebut header file meng-andung deklarasi/prototipe dari fungsi-fungsi atau class-class. Sedangk-an factorial.cpp mengandung definisi fungsi atau class.

Cara kompile dan linking secara manual sebagai berikut:

1 g++ −c −O main . cpp2 g++ −c −O f a c t o r i a l . cpp3 g++ main . o f a c t o r i a l . o −o fac t . exe

Perintah pertama dan kedua di atas dilakukan untuk mengkompiledua file bagian kode program. Kemudian dua object file digabungkan(atau linking) menjadi sebuah program.

Keuntungan dengan memecah file menjadi beberapa file adalah le-bih mudah mengkompile program karena kita hanya perlu mengkom-pile file yang diedit saja. Object file yang lain tidak berubah jadi ti-dak perlu dikompile lagi. Sebagai contoh, umpamanya jika kita hanyamengedit file main.cpp maka untuk menkompile program cukup kitamelakukan dua perintah diatas, mengkompile kode cpp dan menla-kukan linking.

1 g++ −c −O main . cpp2 g++ main . o f a c t o r i a l . o −o fac t . exe

Bisa dibayangkan jika kita mempunyai jumlah file yang banyak,proses kompile akan jauh lebih cepat dengan mengkompile satu ataubeberapa file saja daripada semua file lagi.

Jika kita mempunyai sejumlah file dengan akhiran .cpp maka kitaharus menggunakan perintah kompile sebanyak jumlah file tersebut.

Page 113: Buku Pemrograman

101

Akan menjadi sangat tidak efisien jika ini kita lakukan secara manual.Untuk hal ini program make bisa menolong kita untuk mengkompilesecara atomatis.

Untuk menggunkan program make kita harus membuat file depen-dency yang diberi nama Makefile atau makefile.

File Makefile berisi cara mengkompile dan file apa saja yang di-perlukan. Sebagai contoh untuk kompile program sebelumnya file Makefileyang sederhana sebagai berikut.

1 program : main . o f a c t o r i a l . o2 g++ main . o f a c t o r i a l . o −o fac t . exe3

4 main . o : main . cpp5 g++ −c main . cpp6

7 f a c t o r i a l . o : f a c t o r i a l . cpp8 g++ −c f a c t o r i a l . cpp9

10 clean :11 rm ∗ . o

Baris pertama di file Makefile di atas terdiri dari nama/keyworduntuk sebuah project yang akan dibuat/dikerjakan. Setelah nama/ke-yword ini diikuti tanda : , dan diikuti dengan nama-nama file yangdiperlukan dalam membuat project tersebut. Setelah baris ini diikutidengan baris perintah atau cara mengkompile/membuat project. Se-telah itu kita membuat main.o . Dan seterusnya. Dua baris terakhirdigunakan untuk mendelete semua object file jika sudah tidak diper-lukan lagi. Penting diingat bahwa untuk baris perintah/cara membuatdicorongkan kedalam menggunakan tombol tab.

Setelah file Makefile dibuat, kita bisa menjalakan make untukmemproses Makefile 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 bisalangsung menggunakan make saja tanpa nama project/keyword.

Jika kita ingin mendelete semua object file, kita menggunakan per-intah make clean .

Page 114: Buku Pemrograman
Page 115: Buku Pemrograman

25Lab 9: Pengenalan Library GSL

GSL (GNU Scientific Library) merupakan library ini sangat pentinguntuk pemrograman pada khususnya untuk komputasi numerik. Olehkarena itu ini sangat berguna untuk fisikawan yang memerlukan per-hitungan yang menggunakan operasi-operasi dan fungsi-fungsi yangtidak ada pada library cmath. Library GSL mempunyai banyak halyang bisa digunakan untuk memecahkan banyak permasalahan di Fi-sika.

Sebagai contoh, hal-hal yang terkandung pada GSL library sepertiberikut 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 GSLdengan memilih semua pada pilihan lib dan math pada saat instalasiCygwin.

Untuk mengenal bagaimana cara penggunaan GSL, perhatikan con-toh berikut ini:

Page 116: Buku Pemrograman

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 u l i s komentar tentang kode anda d i s i n i ∗ /3

4 #include <iostream>

5 #include <gsl / g s l s f b e s s e l . h>6

7 using namespace std ;8

9 int main ( void )10 {11 double x = 5 . 0 ;12 double y = g s l s f b e s s e l J 0 ( x ) ;13 cout << y ;14

15 return 0;16 }

Apa saja yang diperlukan untuk menggunakan library GSL? Bagai-mana menggunakannya?

Page 117: Buku Pemrograman

26Lab 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 deklarasiini, komputer mengalokasikan memori untuk menampung 100 vari-bel yang bertipe data float. Besarnya array s tidak bisa diubah ataustatis. Jadi jika kita menggunakan metode ini kita harus menyiapkanjumlah array yang cukup. Jika kurang akan terjadi error atau kesa-lahan karena lokasi memori tidak ada.

Sedangkan memori dinamis, besarnya memori yang dipakai dapatdiubah 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 halyang lain. Maka pada akhir program biasanya ada operator delete.Cara penggunaan delete adalah

1 delete pointer ; / / untuk satu elemen2 delete [ ] pointer ; / / untuk array

Untuk mempelajari penggunaanya, dengan menggunakan note-pad atau notepad++ atau nedit ketik beberapa baris kode c++ beri-kut ini.

Page 118: Buku Pemrograman

106 Lab 10: Pengenalan Memori

1 #include<iostream>

2 #include<string>3

4 using namespace std ;5

6 int main ( )7 {8 int n ;9 f l o a t ∗a ; / / pointer untuk alokasi memory

10

11 cout << berapa jumlah array ? ;12 cin >> n ;13

14 a = new f l o a t [n ] ;15 a [ 9 ] = 3;16

17 delete [ ] a ;18 return 0;19 }

Jelaskan apa saja yang diperlukan untuk membuat array dinamis?