Pemrograman Komputer dengan Bahasa C dan C++
I Wayan Sudiarta
Program Studi Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Mataram
November 4, 2012
ii
Buat anakku Arvin dan Istriku Tami
Daftar Isi Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ucapan Terima Kasih . . . . . . . . . . . . . . . . . . . . . . . .
vii ix
1 Pendahuluan 1.1 Konsep Pemrograman . . . . . . . . . . . . . . . . . . . . 1.2 Bahasa C dan C++ . . . . . . . . . . . . . . . . . . . . . .
1 2 3
2 Hello World! 2.1 Program Hello World . . . . . . . . . . . . . . . . . . . . . 2.2 Kompilasi Program . . . . . . . . . . . . . . . . . . . . . . 2.3 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 6 9 10
3 Konvensi Penulisan 3.1 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Bagian Komentar . . . . . . . . . . . . . . . . . . . . . . . 3.3 Bagian Program . . . . . . . . . . . . . . . . . . . . . . . .
13 13 14 15
4 Identifier, Penamaan dan Tipe Data 4.1 Identifier , Nama Pengenal . . . . 4.2 Tipe Variabel . . . . . . . . . . . . . 4.3 Variabel Local dan Global . . . . . 4.4 Konstanta . . . . . . . . . . . . . .
. . . .
17 17 19 21 23
. . . . . . . .
25 25 25 25 27 27 28 29 29
6 Fungsi Output dan Input 6.1 Output, Menampilkan Pada Layar . . . . . . . . . . . . . 6.1.1 printf() . . . . . . . . . . . . . . . . . . . . . . .
31 31 31
7 Kontrol Aliran dan Pengulangan 7.1 Kontrol Aliran . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 if dan else . . . . . . . . . . . . . . . . . . . . . . .
35 35 35
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
5 Operasi Matematika 5.1 Operasi Matematis Sederhana . . . . . . . . . 5.1.1 Operator sama dengan (Assignment ,=) 5.1.2 Aritmatika . . . . . . . . . . . . . . . . . 5.2 Aritmatika dengan dua operator . . . . . . . . 5.3 Operasi-operasi logika . . . . . . . . . . . . . . 5.4 Konversi Tipe . . . . . . . . . . . . . . . . . . . 5.5 operasi binari . . . . . . . . . . . . . . . . . . . 5.6 Fungsi-Fungsi Matematika . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
iv
Daftar Isi 7.1.2 switch . . . . . . . . 7.2 Pengulangan . . . . . . . . 7.2.1 for . . . . . . . . . . 7.2.2 while . . . . . . . . 7.2.3 do ... while . . . . . 7.2.4 break dan continue
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
36 36 36 36 36 36
8 Array
39
9 Fungsi
41
10 Struktur
45
11 Lab 1: Pengenalan Bahasa C 11.1 Penulisan Kode C . . . . . . . . . . . . . . . . . . . . 11.2 Modifikasi . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Lab 2: Pengenalan Variabel dan Operasi Matematis 11.3.1 Deklarasi Variabel . . . . . . . . . . . . . . . 11.3.2 Kesalahan Penulisan Variabel . . . . . . . . . 11.3.3 Tipe Data Variabel . . . . . . . . . . . . . . . 11.3.4 Scanf . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
53 53 54 55 55 55 56 56
12 Lab 3: Pengenalan define dan math.h 12.1 Define dan const . . . . . . . . . . . . . . . . . . . . . . . . 12.2 math.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . .
59 59 59 60
13 Lab 4: Pengenalan for, while dan do while 13.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61 61 62 62
14 Lab 5: Pengenalan if, else dan switch 14.1 if . . . . . . . . . . . . . . . . . . . . . 14.2 if else . . . . . . . . . . . . . . . . . . 14.3 if else berantai . . . . . . . . . . . . . 14.4 ()?:: . . . . . . . . . . . . . . . . . . . 14.5 switch . . . . . . . . . . . . . . . . . .
. . . . .
65 65 66 66 67 68
15 Lab 6: Pengenalan Fungsi dan Array 15.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . .
69 69 70
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
Daftar Isi
v
16 Lab 7: Pengenalan Pointer 16.1 Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2 Pengenalan Operasi Pada Pointer . . . . . . . . . . . . . . 16.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71 71 72 72
17 Lab 1: Pengenalan Bahasa C++ 17.1 Penulisan Kode C++ . . . . . . . . . . . . . . . . . . . . . 17.2 Modifikasi . . . . . . . . . . . . . . . . . . . . . . . . . . .
75 75 76
18 Lab 2: Pengenalan Variabel dan Operasi Matematis 18.1 Deklarasi Variabel . . . . . . . . . . . . . . . . . . . . . . 18.2 Kesalahan Penulisan Variabel . . . . . . . . . . . . . . . . 18.3 Tipe Data Variable . . . . . . . . . . . . . . . . . . . . . .
77 77 78 78
19 Lab 3: Pengenalan Define dan cmath 19.1 Define dan const . . . . . . . . . . . . . . . . . . . . . . . . 19.2 cmath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . .
79 79 79 80
20 Lab 4: Pengenalan Fungsi dan Array 20.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . .
81 81 82
21 Lab 5: Pengenalan Pointer 21.1 Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Pengenalan Operasi Pada Pointer . . . . . . . . . . . . . . 21.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83 83 84 84
22 Lab 6: Pengenalan Character dan String 22.1 Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3 getline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87 87 88 88
23 Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class 23.1 Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2 Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.3 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . .
91 91 92 93
24 Lab 8: Menggunakan Make
97
vi
Daftar Isi
25 Lab 9: Pengenalan Library GSL 103 25.1 Contoh GSL . . . . . . . . . . . . . . . . . . . . . . . . . . 104 26 Lab 10: Pengenalan Memori 105 26.1 New atau New [] . . . . . . . . . . . . . . . . . . . . . . . . 105
Kata Pengantar Buku ini masih berbentuk draft. Belum sempurna, masih banyak yang perlu diperbaiki dan dilengkapi. Harap dimaklumi karena keterbatasan dana dan waktu penulis. Buku ini ditulis dengan tujuan supaya dapat memberikan dasar yang cukup bagi pembaca pada khususnya mahasiswa untuk memahami secara mendasar tentang pemrograman dan dapat membuat programprogram yang bisa membantu dalam kuliah tingkat lanjut maupun penelitian. Dalam buku ini penulis berusaha menjelaskan pemrograman C dan C++ dari tingkat dasar. Buku ini berusaha memberikan pemahaman prinsip-prinsip pemrograman sehingga pembaca dapat mengembangkan sendiri dan mempelajari bahasa pemrograman lebih lanjut. Struktur buku ini dibentuk atau diatur sedemikian rupa sehingga pembaca mampu dengan waktu yang tidak terlalu lama dapat mahir membuat program komputer dengan bahasa C dan C++. Mengapa dua bahasa ini sekaligus diajarkan? Karena bahasa C++ merupakan pengembangan dari bahasa C. Jadi penambahan pelajaran tentang bahasa C++ tidak akan membingungkan pembaca. Di samping itu pula, cara penulisan program c++ digunakan pada program Java. Ini penting bagi pembaca yang ingin mempelajari Java untuk membuat aplikasi. Pada waktu penulis pertama kali memberikan kuliah pemrograman komputer, penulis hanya mengajarkan bahasa C++. Setelah mempertimbangkan bahwa bahasa C juga digunakan di matakuliah pemrograman instrumentasi, pemrograman dengan bahasa C juga penulis ajarkan di tahun berikutnya. Penulis berusaha memberikan penjelasan dengan sederhana mungkin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yang dimiliki pembaca.
Ucapan Terima Kasih Penulis bersyukur kepada Tuhan Yang Maha Esa atas kesehatan dan kesempatan yang diberikan sehingga buku ini dapat diselesaikan. Terima kasih Tuhan atas kelimpahan semangat beserta keberuntungan yang tiada ternilai. Penulisan buku ini tentunya tidak bisa dilakukan tanpa bantuan banyak pihak. Penulis berterima kasih kepada mahasiswa-mahasiswa yang mengikuti kuliah pemrograman komputer yang telah memberikan banyak pertanyaan, komentar dan saran yang membantu penyempurnaan buku ini. Penulis berhutang budi kepada editor yang dengan sabar membantu mengatasi kesulitan-kesulitan yang dialami selama penulisan buku sehingga buku ini bisa rampung. Penulis berterima kasih kepada istri yang selalu memberi dorongan beserta cinta sehingga penulis selalu semangat mengerjakan buku ini meskipun hal ini merupakan sebuah proses yang panjang.
Terima Kasih Semua. Penulis
1
Pendahuluan
Buku pemrograman bahasa C maupun C++ sudah banyak beredar di Indonesia, apalagi dengan Bahasa Ingris, tentunya lebih banyak lagi. Walaupun demikian, buku-buku pemrograman berbahasa Indonesia yang penulis temukan belum dapat memberikan dasar yang cukup bagi pembaca pada khususnya mahasiswa untuk memahami secara mendasar tentang pemrograman. Banyak hal-hal dasar sepertinya terlupakan. Buku ini berusaha memberikan pemahaman prinsip-prinsip pemrograman sehingga pembaca dapat mengembangkan sendiri dan mempelajari bahasa pemrograman lebih lanjut. Struktur buku ini dibentuk atau diatur sedemikian rupa sehingga pembaca mampu dengan waktu yang tidak terlalu lama dapat mahir membuat program komputer dengan bahasa C dan C++. Mengapa dua bahasa ini sekaligus diajarkan? Karena bahasa C++ merupakan pengembangan dari bahasa C. Jadi penambahan pelajaran tentang bahasa C++ tidak akan membingungkan pembaca. Di samping itu pula, cara penulisan program c++ digunakan pada program Java. Ini penting bagi pembaca yang ingin mempelajari Java untuk membuat aplikasi. Penulis berusaha memberikan penjelasan dengan sederhana mungkin tanpa ada asumsi-asumsi tentang pengetahuan pemrograman yang dimiliki pembaca. Sebelum kita melanjutkan dengan membuat program sederhana, mari kita belajar mengerti tentang konsep dasar pemrograman, bagaimana kompilasi atau membuat program dan sejarah bahasa C dan C++.
2
Pendahuluan
1.1 Konsep Pemrograman Mengapa membuat program? Walaupun ini merupakan pertanyaan terlalu sederhana, tetapi pertanyaan ini perlu kita jawab sebelum membuat program. Secara pasti kita bisa menjawabnya karena kita memiliki tujuan tertentu ketika membuat program komputer. [kurang lengkap] Pertanyaan selanjutnya yang perlu kita pahami jawabannya adalah ”apa itu sebuah program komputer?”. suatu program dibuat bertujuan untuk memerintahkan komputer untuk melakukan pekerjaan tertentu. Dengan kata lain, suatu program komputer adalah kumpulankumpulan perintah-perintah yang dapat dipahami oleh komputer. Perintahperintah tersebut sudah berbentuk bahasa mesin. Perintah-perintah kepada komputer tidaklah sembarangan. Semua perintah diatur sesuai dengan pekerjaaan yang kita inginkan dilakukan komputer. Kita dalam melakukan suatu pekerjaan, apa saja!, kita menyelesaikannya langkah demi langkah dengan aturan terterntu. Prosedur atau langkah-langkah untuk menyelesaikan pekerjaan dinamakan algoritma. Dengan mengingat bahwa komputer melaksanakan perintah kita sesuai dengan apa yang tertulis, bukan yang tersirat. Komputer mengerjakan hanya perintah yang diberikan tidak lebih dan tidak kurang. Komputer bekerja apa adanya. Jika kita bayangkan komputer adalah pekerja kita dan programer adalah manajer. Manager selalu memberikan perintah kepada bawahannya untuk melakukan sesuatu. Pemrograman bisa diartikan sama dengan memberi perintah kepada pekerja, dengan perbedaan bahwa komputer tidak memberikan toleransi pada hal-hal yang kurang jelas. Komputer harus diperintahkan dengan langkah-langkah yang jelas dan akurat dan detil. [Nanti kita pelajari maksudnya dengan menggunakan contoh-contoh dan latiahn-latihan]. Jika komputer diberikan kurang sediki dari yang dimaksudkan, keluaran yang kita inginkan tidak akan terwujud. Perlu diingat memberikan perintah-perintah sedetil mungkin. Oleh karena itu kita perlu mempelajari perintah-perintah yang dapat dipahami oleh komputer. Di samping perintah, kita jufa harus memperhatikan kemampuan yang dimiliki komputer, baik dari segi kecepatan, memori, proses perhitungan dan lain-lain. Kesalahan-kesalah sering terjadi karena kita mengabaikan bahwa komputer memiliki keterbatasan. Kita harus menyesuaikan perintah-perintah supaya tidak melewati batas kemampu-
Bahasa C dan C++
3
an komputer. Kita juga harus menghilangkan ekspektasi bahwa komputerakan memahaminya. Yang perlu kita lakukan sebelum kita memahami lebih lanjut tentang pemrograman adalah mengubah cara kita berpikir tentang komputer dan perintah-perintahnya (atau program). Komputer tidak pintar, melainkan perintah-perintah tersebut yang membuat komputer dapat bekerja. Perlu diingat bahwa komputer hanya menerima bentuk perintah tertentu saja. Seperti robot yang belum bisa berpikir dengan sendirinya. Bahasa C dan C++ menjembatani antara progrmer dan komputer. Analogi Belajar memasak. Mari ktia gunakan satu contoh: Jika disediakan bahan-bahan sebagai berikut: (1) air, gula, teh, dan alat gelas, sendok, kompor dan kocor? Bagaimana membuat segelas teh panas?
1.2 Bahasa C dan C++ Bahasa pemrograman dapat dikategorikan menjadi bahasa tingkat rendah (low level language) dan bahasa tingkat tinggi (high level). Pembagian ini tergantung apakah bahasa yang digunakan lebih dipahami oleh pengguna atau mesin komputer. Dari segi istilah high level language jauh lebih kompleks dibanding dengan low level. Bahasa pemrograman C dan C++ merupakan ”high level language” bahasa tingkat tinggi yang berarti bahasa yang lebih bisa dimengerti oleh ”pengguna” dibandingkan dengan bahasa seperti asymbly yang tingkat rendah yang lebih mudah dimengerti oleh mesin komputer. Bahasa high level harus diterjemahkan ke bahasa mesin atau dikompilasi sehingga dapat dilaksanakan oleh komputer. Oleh karena itu biasanya bahasa high level memiliki ukuran yang besar dan lebih lambat. Tapi dari segi pengguna pembuatan program dengan bahasa high level jauh lebih cepat dibandingkan low level. Untuk aplikasi program yang besar dan kompleks, pemrogram dengan low level akan mengalami kesulita dalam pembuatannya. Sedikit sejarah bahasa C dan C++. Bahasa C++ merupakan bahasa C dengan tambahan fasilitas pemrograman berbasis objek. Sebernarnya tidak hanya itu bahasa C++ merupakan penyempurnaan bahasa C dengan fasilitas-fasilitas baru yang mempermudah pemrograman. Ini sangat berguna untuk pem-
4
Pendahuluan
buatan program-program besar seperti sistem operasi windows, linux dan aplikasi-aplikasi besar lainnya. Bahasa C atau C++ berada diantara kedua. dapat mengakses bahasa mesin dan menggunakan syntax bahasa high level. Mengapa memilih bahasa pemrograman C dan C++. karena digunakan banyak. membuat os linux, windows. stabil, matur pemrograman instrumentasi bagi yang ingin menambah pendalaman tentang bahasa C++ dapat melihat tutorial C++ http://www.cplusplus.com/doc/tutorial/ http://www.cprogramming.com/
2
Hello World! Banyak cara yang bisa dilakukan dalam mempelajari sesuatu. Untuk menjadi seorang programer, kita perlu melakukan banyak latihanlatihan dengan melihat contoh-conoth yang kongkrit. Ada lima cara [check cprogramming.com]. Pada bab ini kita akan mempelajari program sederhana hello world. Program sederhana semacam ini sering digunakan untuk mengenalkan bahasa pemrograman. Situs-situs internet yang menyajikan hello world untuk berbagai bahasa pemrograman dapa dilihat di alamat situs dibawah ini(cek internet). http://en.wikipedia.org/wiki/Hello_world_program http://www.helloworldexample.net/ http://www.roesler-ac.de/wolfram/hello.htm Mungkin kita berpikir, apa sih yang kita pelajari dari program sederhana ini? jawabannya banyak! mari kita pelajari perlahan-lahan, bagian per bagian. Pada bab ini, kita akan mempelajari struktur, cara penulisan atau syntax, komponen-komponen dasar dan proses kompilasi program. Seperti kita membuat sebuah dokumen atau paper atau karya ilmiah. Semua mempunyai struktur atau pola tertentu yang sesuai dengan kaidah atau aturan yang telah ditentukan oleh organisasi atau institusi. Kita mungkin saja membuat dokumen yang tanpa aturan dan kita mengerti apa isinya. Tetapi, kemungkinan besar orang lain jika membacanya akan mengalami kesulitan. Begitu pula untuk bahasa pemrograman, program yang kita buat mempunyai aturan-aturan tersendiri sesuai dengan bahasa pemrogramannya. Aturan-aturan dalam bahas pemrograman sudah dibuat dan dirancang sedemikian rupa supaya mempermudah kita membuat program. Perintah-perintah dalam bahasa C ataupun C++ ditranslasi ke bahasa mesin dan mempermudah komputer menjalankan sesuai dengan perintah.
6
Hello World!
Mungkin yang penting perlu kita perhatikan adalah kita harus mentaati aturan-aturan tersebut. Jika tidak program yang kita buat tidak akan bisa dikompilasi artinya kode yang kita ketik tidak bisa dijadikan bahasa mesin atau program. Maka penting untuk dipahami aturan-aturan yang digunakan, tentunya pada buku ini kita mempelajari baasa C dan C++. Hal lain yang perlu diingat adalah komputer hanya mengerjakan apa yang diperintahkan tidak lebih dan tidak kurang. Jadi kita harus memperhatikan apakah proses yang diperintahkan sudah komplit dan akurat. Disamping itu pula, kita juga harus mengerti kelemahan-kelemahan perintah-perintah yang diberikan. Jika tidak, akan menimbulkan error atau kesalahan yang mungkin tidak yang kita inginkan. Kita perlu memperhatikan kondisi-kondisi atau daerah di mana perintah akan dilakukan sesuai dengan semestinya. Perlu memperhatikan keterbatasan yang dimiliki oleh komputer
2.1 Program Hello World Untuk memahami secara garis besar bagaimana bahasa C, mari kita perhatikan program hello world pada Listing 2.1. Walaupun program ini sederhana, penjelasan pada bab ini perlu dimengerti sebelum memahami topik-topik pada bab-bab berikutnya. Ini merupakan dasar dari semua program selanjutnya. Kita perlu memperhatikan komponen-komponen apa yang menjadi bagian utama sebuah bahasa pemrigraman C. 1 2 3 4 5
/ ∗ Program h e l l o . c Menampilkan t e x t ” Hello World ! ! ! ” ∗/ # includ e<s t d i o . h>
6 7 8 9 10 11 12
i n t main ( ) { / / tampilkan pada layar42 p r i n t f ( ” Hello World ! ! ! \ n” ) ; return 0 ;
13 14
}
Listing 2.1: Program Hello World
Program Hello World
7
Perlu diingat bahwa nomer baris pada Listing 2.1 tidak perlu diketik. Nomer-nomer baris ini berguna untuk mempermudah menemukan baris yang perlu diperbaiki jika ada ”error” atau kesalahan yang diinformasikan pada saat kompilasi. Penomeran juga memperjelas apa yang dipelajari.
Gambar 2.1: Komponen dasar sebuah program C atau C++ Sekarang mari kita perhatikan baris demi baris pada program Listing 2.1. Perlu diingat setiap bagian program ditambahkan, disertakan atau dimasukkan sesuai dengan kegunaan. Bagian pertama adalah baris 1 sampai baris 3, bagian yang dibatasi oleh dua pembatas /* dan */, 1 2 3
/ ∗ Program h e l l o . c Menampilkan t e x t ” Hello World ! ! ! ” ∗/
Listing 2.2: Program Hello World merupakan sebuah komentar atau catatan untuk programer. Semua tulisan apa saja di antara dua pembatas /* dan */ dianggap kompiler sebagai komentar dan tidak diproses atau diabaikan sehingga tidak mempengaruhi linerja program. komentar atau catatan ini bukan ditujukan untuk mesin komputer, melainkan untuk pengguna supaya lebih jelas. Catatan singkat biasa digunakan untuk menjelaskan tentang program, cara kerja, varaibel yang digunakan dan hal-hal lain yang dianggap penting. Jika kita bayangkan beberapa waktu kedepan setelah kita membuat program, kita ingin memperbaiki atau menggunakan atau mengubah program, tentunya kita tidak akan bisa melakukannya tanpa ada penjelasan isi program. Perlu diingat bahwa kita
8
Hello World!
mungkin mengingat semua variabel, proses yang kitat gunakan sebelumnya. Maka penting sekali untuk setiap pembuatan program diikutsertakan untu kpenjelasan singkat di awal atau pun didalam program. Di samping itu, jika kita bekerja tidak sendirian dalam pembuatan program besar, komunikasi antara programer dilakukan melalui komentar atau catatan singkat tersebut. Tanpa adanya dokumentasi yang jelas program akan mempersulit pembuatan program, karena adanya konflik atau misinformasi. Kita perlu mengerti bahwa setiap programer memiliki cara dan pengetikan yang sesuai dengan selera programer. Dengan dokumentasi akan mengurangin kesalahan yang ditimbulkan oleh penggunaan variabel, proses yang berbeda. Di samping penggunaan /* dan */ kita juga dapat menggunakan tanda komentar dengan dua garis miring (//). Ini berarti bahwa apapun yang dimulai dengan tanda // sampai bagian baris terakhir merupakan komentar atau catatan. Dengan kata lain, semua bagian kanan dari // diabaikan oleh komputer. Komentar tentang program bergunaa untuk penjelasan yang lebih singkat diabndingkan dengan /* dan */. tanda // ini dapat disisipkan diakhir sebuah perintah sehingga programaer dapat menimformasikan apa yang penting. Baris ke 5 mengadung sebuah preprocessor yaitu #include <stdio.h>. Baris ini yang berawalan dengan tanda (#) yang menyatakan perintahperintah untuk preprocessor. Perintah-perintah ini bukan barisan code yang biasanya. Ini diperuntukkan bagi preprocessor dari kompiler. Dalam perintah diatas #include <stdio.h> memberitahu preprocessor untuk memasukan stdio (pustaka untuk input output) standard file. Ini dimasukkan karena akan digunakan di dalam program. Jadi untuk mengakses library ini kita mendeklarasikan dengan ekspresi ini. Ini yang sering digunakan di program C++ yang memakai standard library. Baris ke 8 adalah sebuah fungsi main, int main (). Baris ini merupakan awal dari definisi dari fungsi main. Fungsi main adalah titik dimana semua program C++ memulai exsekusinya, tidak tergantung dari tempat di dalam source code. Tidak peduli ada fungsi-fungsi yang dideklarasikan sebelum atau sesudah itu, instruksi-instruksi yang ada di dalam main selalu yang pertama di jalankan. Jadi sangat penting semua program C mempunyai fungsi main. Perintah printf("Hello World!"); Ini adalah sebuah C++ statement. printf adalah standard output pada C. Arti dari seluruh statement di atas adalah insert sebuah deretan huruf-huruf yang mana disini berisi Hello World!.
Kompilasi Program
9
Baris terakhir return 0;. Perintah return menyebabkan selesainya fungsi main. Perintah return bisa diikuti dengan return code (disini dikembalikan nilai 0). sebuah return code 0 untuk fungsi main biasanya diartikan programnya berjalan tanpa masalah. Ini yang paling sering dipakai untuk mengakhiri program C++. ... Ini digunakan untuk menggabungkan banyak statement menjadi satu bagian. Disini semua statement menjadi bagian fungsi main.
2.2 Kompilasi Program Setelah kode program dengan bahasa C atau C++ ditulis, proses kompilasi kemudian dilakukan dengan menggunakan kompiler. Cara kompilasi tergantung pada kompiler yang digunakan. Untuk mengubah kode program menjadi sebuah program yang bisa dieksekusi, ada dua tahapan, compile dan link, yang dilakukan seperti ditunjukkan pada Gambar 2.2.
Gambar 2.2: Proses kompilasi kode program menjadi program executable yang bisa dieksekusi. Dua tahapan dapat dilakukan sekaligus dengan menggunakan pilihanpilihan pada kompiler. Pada bab ini kita akan membahas proses kompilasi menggunakan kompiler gcc untuk bahasa C dan g++ untuk bahas C++ yang sudah tersedia di dalam Cygwin, MinGW dan Linux. Kompilasi menggunakan program Dev-C++, Borland C++, Code Blocks, Turbo C++ dan Visual C++ dijelaskan di Lampiran. Kompilasi dengan gcc atau g++ dilakukan didalam sebuah jendela terminal. Perintah perintah yang digunakan untuk kompilasi adalah sebagai berikut: 1. Kompilasi tanpa pilihan
10
Hello World! gcc hello.c Ini akan menghasilkan executable file / program bernama a.exe (pada cygwin) atau a.out (pada linux). Kemudian program dijalankan dengan mengketik pada prompt$ ./a.exe atau ./a.out . 2. Kompilasi dengan nama hasil/output gcc hello.c -o hello.exe Tambahan pilihan -o akan menghasilkan executable file / program bernama sesuai keinginankita, di sini bernama hello.exe. Kemudian program dijalankan dengan mengketik pada prompt$ ./hello.exe. 3. Compile dan Link terpisah Pertama kita melakukan kompile dengan mengubah bahasa C atau C++ ke bahasa mesin dengan perintah gcc -c. gcc -c hello.c Perintah ini akan menghasilkan object file bernama namafile.o, pada perintah di atas menghasilkan hello.o. File object ini kemudian dilink dengan libary dan file-file lain (jika ada) dengan menggunakan perintah gcc . gcc hello.o -o hello.exe Semua cara proses kompilasi ditunjukkan pada Gambar 2.3.
2.3 Formatting Bahasa pemrograman C dan C++ tidak memiliki cara penulisan atau formatting tersendiri. free-formating language. Ini berarti cara penulisan program tidak diatur, melainkan dibebaskan. yang perlu diingat bahwa spasi, tab dan baris kosong dianggap sama atau yang dikenal dengan nama ”white space”. Terkecuali spasi dan white space lainnya merupakan bagian dari sebuah komentar atau string. Pemisahan
11
Formatting
Gambar 2.3: Jendela terminal Cygwin untuk kompilasi kode program. antara perintah yang satu dengan yang lain, bahasa C dan C++ menggunakan tanda titik koma ’;’. Jadi dua kode dibawah ini (Listing 2.3 dan Listing 2.4).menghasilkan hal yang sama seperti Listing 2.1. 1 2 3 4 5
/ ∗ Program h e l l o . c Menampilkan t e x t ” Hello World ! ! ! ” ∗ / # includ e<s t d i o . h> i n t main ( ) { / / tampilkan pada lay ar p r i n t f ( ” Hello World ! ! ! \ n” ) ; return 0 ; }
Listing 2.3: Program Hello World 1 2 3 4 5 6 7 8 9
/ ∗ Program h e l l o . c Menampilkan t e x t ” Hello World ! ! ! ” ∗/ # includ e<s t d i o . h> int main ( ) { / / tampilkan pada lay ar p r i n t f ( ” Hello World ! ! ! \n” ) ; return 0 ; }
Listing 2.4: Program Hello World Bentuk atau format digunakan untuk mempermudah membaca struktur program.
3
Konvensi Penulisan
Bab ini membahas tentang bagaimana konvensi penulisan sehingga tidak terjadi kesalahan dalam penulisan dan mengurangi tingkat stress jika terjadi kesalahan atau error. Sebagian konvensi sudah dijelaskan pada bab sebelumnya. Walaupun demikian konvensi akan dijelaskan kembali untuk memperkuat dan memperdalam. Bab ini membahas aturan-aturan penulisan. Biasanya bab ini tidak dijelaskan dengan bab-tersendiri pada buku-buku pemrogralamn lain. tetapi setelah melihat banyaknya kekeliruan yang dilakukan mahasiswa, maka penjelasan tentang penulisan perlu dijelaskan secara terpisah. Dalam penulisan kode program bahasa C++, ada tiga bagian yang perlu dibedakan yaitu (1) bagian preprocessing atau bagian program yang diproses terlebih dahulu sebelum memproses kodenya, (2) bagian komentar atau catatan dan (3) bagian kode program yang sebenarnya.
3.1 Preprocessing Perintah-perintah pada bagian preprocessing diawali dengan tanda pagar (#). Karena bagian perintah bukan perintah c++ cebenarnya, cara penulisannya juga berbeda. Maka kita harus ingat setiap perintah tidak diakhiri dengan tanda titik koma (;). kegunaan preprocessing apa? untuk memerintahkan kompiler menambahkan komponen-komponen lain seperti pustaka atau library atau perintah memproses kode C++ sehingga sesuai dengan keinginan kita. Kita biasanya melakukan penggantian variabel sebelum c++ di kompilasi.
14
Konvensi Penulisan
3.2 Bagian Komentar Komentar atau catatan-catatan yang penting bagi programer ditulis dengan menggunakan dua tanda batas /* (di awal) dan */ (di akhir). Sebagai contoh pada Listing 3.1. 1 2 3 4 5 6 7 8
/ ∗ Catatan penggunaan program ( sebuah komentar satu b a r i s )
∗/
/ ∗ Catatan penggunaan program sebuah contoh komentar beberapa b a r i s ∗/ / / Catatan penggunaan program ( sebuah komentar satu b a r i s )
9 10
a = 5 ; / / percepatan dalam satuan m/ s ˆ 2
Listing 3.1: Contoh penulisan komentar menggunakan ”/* */” Komentar untuk satu baris saja dapat menggunakan // untuk mengawali komentar seperti contoh pada Listing 3.1. Tanda // dapat diletakkan di mana saja dan semua tulisan di bagian kanan tanda ini merupakan komentar. Komentar dengan cara ini berguna untuk menyisipkan catatan-catatan pendek pada kode sehingga program bisa lebih dipahami. Penggunaan tanda komentar yang bersarang tidak bisa digunakan. Dengan kata lain, tanda komentar diletakkan di dalam tanda komentar tidak diperbolehkan. Sebagai contoh Listing 3.2 yang menunjukkan komentar bersarang, dan jika dikompilasi akan menghasilkan error. Kompiler hanya melihat tanda awal (\*) dan tanda akhir (*\) saja. Tanda \* di antara tanda \* . . . .*\ akan dianggap komentar. Sehingga akan menimbulkan kekeliruan. 1 2 3
/ ∗ Penggunaan komentar yang tid ak diperbolehkan / ∗ komentar d i dalam komentar ∗ /
4 5
Menghasilkan e r r o r kompilasi
6 7
∗/
Listing 3.2: Penggunakan ”/* */” yang salah
15
Bagian Program
3.3 Bagian Program Tanda-tanda penting yang perlu diingat dalam penulisan perintahperintah dengan bahasa C++ adalah 1. Tanda titik koma (;) Tanda ; digunakan untuk memisahkan perintah-perintah. Sehingga diakhir dari satu perintah harus ada tanda ; . Jika tanda ini tidak ada akan terjadi kekeliruan. Ingat dalam c++ tanda spasi, tab atau baris kosong dianggap sama atau disebut white space. 2. Tanda koma (,) Tanda koma digunakan untuk memisahkan variabel-variabel pada saat initialisasi atau deklarasi, input suatu fungsi, dan pemisahan nilai-nilai awal untuk variabel. 3. Tanda kurun biasa, ( ) Digunakan untuk sebuah fungsi dan seperti halnya untuk memisahkan hitungan yang harus dilakukan terlebih dahulu. 4. Tanda kurung kurawa, { }
Digunakan untuk menggabung banyak perintah menjadi satu kesatuan perintah. Listing 4.1 memberikan contoh penggabungan banyaka perintah menjadi satu set.
1 2
/ / Jika satu perintah yang dilakukan while ( a < 100) a = a + 2 ;
3 4 5 6 7 8 9
/ / Jika banyak perintah while ( a < 100) { a = a + 2; p r i n t f ( ” n i l a i a = %d ” , a ) ; }
Listing 3.3: Penggunakan ”{ }”
4
Identifier, Penamaan dan Tipe Data Dalam pemrograman kita perlu menggunakan suatu variabel, fungsi, dan prosedur. Setiap variabel, fungsi dan prosedur memiliki nama tersendiri sehingga kita dapat memanggilnya atau menyebutkannya. Sebuah perintah memerlukan sebuah ”pengenal” yang mana komputer mengetahui apa maksudnya. Pemberian nama atau identifier untuk variabel, fungsi dan prosedur di dalam bahasa C dan C++ mempunyai aturan tersendiri. Bab ini membahas bagaimana memberikan nama sehingga sesuai dengan aturan bahasa C atau C++.
4.1 Identifier , Nama Pengenal Sebuah identifier merupakan sebuah nama pengenal suatu variabel, fungsi, label, dan object yang lain. Dalam bahasa C dan C++ memiliki aturan tertentu tentang bagaimana memberikan sebuah nama atau identifier. 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. Angka tidak boleh digunakan untuk memulainya. 3. Huruf besar dan kecil dibedakan. 4. Nama bisa mempunyai jumlah karakter yang banyak, tetapi hanya 31 huruf pertama yang dikenal oleh kompiler (standar ANSI
18
Identifier, Penamaan dan Tipe Data C). 5. Tidak boleh memakai ”reserved words” (kata-kata yang sudah mempunyai arti di dalam bahasa C dan C++).
Sebuah identifier atau nama pengenal yang benar untuk bahasa C dan C++ adalah sebuah deretan satu atau lebih huruf-huruf, angkaangka atau garis bawah (_). Tidak boleh menggunakan operator hitung (+-/* %) dan karakter-karakter khusus (:;#@\$& dan titik). Nama variabel tidak boleh berisi spasi. Hanya huruf-huruf, angkaangka dan satu garis bawah yang benar. Sebagai aturan tambahan, identifier harus dimulai dengan huruf dan bisa juga dengan garis bawah (_). Angka tidak bisa mengawali sebuah variabel. Tanda garis bawah (_) sebagai awal suatu identifier biasanya digunakan untuk variabel, fungsi dan prosedur yang digunakan oleh kompiler. Penggunaan tanda garis bawah untuk huruf awal identifier sebaiknya dikurangi. Bahasa pemrograman C dan C++ membedakan huruf besar dan huruf kecil, sebagai contoh kecepatan dan Kecepatan merupakan dua variabel/identifier yang berbeda. Sehingga perlu diperhatikan nama-nama yang kita berikan. Penamaan huruf besar dan kecil walaupun tidak ada aturannya, programer biasanya memilih menggunakan huruf kecil untuk variabel-variabel dan huruf besar untuk suatu konstanta, seperti suhu dan PI. Programer biasanya memisahkan kata-kata dalam satu identifier/variabel dengan huruf besar atau garis bawah, sebagai contoh, tinggiBadan atau tinggi_badan. Panjang nama variabel boleh berapa saja, tetapi hanya 31 karakter/huruf pertama yang dikenal oleh kompiler. Beberapa nama-nama variabel atau fungsi yang sudah digunakan oleh bahasa C dan C++ atau ”reserved keywords”. Untuk menghindari konflik (agar kompiler tidak kebingungan dalam menentukan maksud kode program) maka perlu kita memperhatikan nama-nama atau identifier yang sudah digunakan oleh kompiler C atau C++ sehingga tidak digunakan lagi. Reserved keywords yang ada dalam bahasa C dan C++ adalah sebagai berikut 1 2 3 4 5 6 7
asm , auto , bool , break , case , catch , char , c l a s s , const , c o n s t c a s t , continue , d e f a u l t , d e l e t e , do , double , dynamic cast , e l s e , enum, e x p l i c i t , export , extern , f a l s e , f l o a t , f o r , f r i e n d , goto , i f , i n l i n e , int , long , mutable , namespace , new , operator , p riv ate , p ro te cte d , p ublic , r e g i s t e r , r e i n t e r p r e t c a s t , return , short , signed , s i z e o f , s t a t i c , s t a t i c c a s t , s t r u c t , switch , template , t h i s , throw , true , try , typedef , typeid , typename ,
19
Tipe Variabel 8
union , unsigned , using , v i r t u a l , void , v o l a t i l e , wchar t , while
Listing 4.1: Reserved identifier atau nama yang sudah digunakan oleh kompiler Contoh-contoh identifier yang benar: d, _nim, laju0, hitung_gaya. Contoh-contoh identifier yang salah: harga!, 2alamat, *bintang, hitung gaji.
4.2 Tipe Variabel Untuk melakukan suatu komputasi, kita memerlukan variabel-variabel untuk menampung nilai yang dihitung. Sebelum menggunakan suatu variabel, terlebih dahulu variabel tersebut dideklarasikan sehingga kompiler mengenali variabel tersebut. Deklarasi sebuah variabel dilakukan dengan menuliskan nama tipe data dan kemudian nama variabel seperti kode program 1
f l o a t suhu ;
yang mendeklarasikan variabel suhu dengan tipe data float (floating point)(lihat Tabel 4.1. Listing 4.2 merupakan sebuah contoh program dengan deklarasi tipe data int,float dan char. 1
/ / Deklarasi v a r i a b e l
2 3
# includ e<s t d i o . h>
4 5 6 7 8 9 10
i n t main ( ) { int a , b , c ; int c = 34; float f , g , h; char z = ’P ’ ;
11 12 13
a = 2; b = a + c;
14 15 16
f = 4.2; g = 9.0;
17 18 19
f = f + g; g = f /g;
20 21
h = a/b;
// // // //
tipe integer i n i s i a l i s a s i variabel tipe f l o a t t i p e characte r , huruf
20
Identifier, Penamaan dan Tipe Data
22
p r i n t f ( ” N i l a i b = %d\n” , b ) ; p r i n t f ( ” N i l a i f = %f \n” , f ) ; p r i n t f ( ” N i l a i h = %f \n” , h ) ;
23 24 25 26
return 0 ;
27 28
}
Listing 4.2: Program menggunakan variabel untuk kalkulasi, deklarasi, assignmen, dan kalkulasi, konversi data Tipe-tipe data yang dikenal dalam bahasa C dan C++ tergantung pada kompiler yang digunakan. Secara umum tipe-tipe yang biasa digunakan ditampilkan pada Tabel 4.1. Yang perlu diperhatikan di dalam Tabel 4.1 adalah ukuran data dan nilai-nilai yang bisa ditampung oleh suatu tipe data. Perhitungan akan mengalami kesalahan jika angka yang digunakan di luar dari apa yang bisa ditampung oleh tipe data. Sebagai contoh, kita deklarasikan variabel bil_bulat dengan tipe data int, 1
int bil bulat ;
2 3 4
b i l b u l a t = 40; / / OK b i l b u l a t = 40000; / / tid ak benar , karena l e b i h d ari 32000
Tipe data int hanya bisa menampung bilangan bulat dari angka -32768 ... 32767. Jika kita berikan nilai pada variabel bil_bulat yang di luar angka yang bisa ditampung, seperti bil_bulat = 40000; akan menimbulkan kesalahan perhitungan. Oleh karena itu perlu kita mengingat dan memastikan bahwa angka-angka yang digunakan dalam perhitungan selalu sesuai dengan apa yang bisa ditampung oleh tipe data. Jika kita ceroboh atau tidak teliti akan menghasilkan program yang keliru. Perlu diingat bahwa kompiler tidak mengecek apakah variabel memiliki angka yang sesuai. Kekeliruan hanya bisa dilihat setelah program dijalankan. Untuk mengingat tipe-tipe data, mari kita lihat secara umum maksud tipe data. Tipe data int merupakan singkatan dari kata integer atau bilangan bulat. Tipe data char merupakan singkatan dari kata character atau huruf. Jadi tipe char bisa menampung sebuah huruf. Tipe data float merupakan tipe data untuk bilangan-bilangan floating-point atau titik mengambang atau desimal (scientific number). Tipe data float bisa menampung bilangan desimal dan mempunyai nilai terkecil dan terbesar yang bisa ditampung (1.175e-38
Variabel Local dan Global
21
dan 3.402e38). Tipe data double merupakan tipe data untuk bilangan floating-point, tetapi menggunakan ukuran memori yang dua kali ukuran tipe data float. Bilangan terkecil dan terbesar yang bisa ditampung adalah 1.175e-308 dan 3.402e308. Tipe data yang lain memiliki tambahan kata short, long, unsigned dan signed. Kata short artinya pendek, yang mengindikasikan bahwa tipe data yang dideklarasikan lebih pendek ukurannya. satu contoh, tipe data short int memiliki ukuran setengah kali ukuran tipe data int. Begitu pula untuk kata long yang artinya panjang, mengindikasikan bahwa tipe data lebih panjang ukurannya, contoh long double memiliki ukuran lebih besar dibandingkan dengan tipe data double. Kata signed dan unsigned menunjukkan tipe data yang digunakan mempunyai tanda atau tidak. Ini berguna untuk membedakan varibel yang hanya merukan bilangan bulat positif saja. Sebgai contoh, kita mendeklarasikan variabel umur dengan 1
unsigned i n t umur ;
Kita bisa memastikan bahwa variabel umur tidak memiliki nilai negatif. Data types char, short, long dan int bisa bersifat signed or unsigned tergantung dari interval bilangan yang direpresentasikan. Signed types bisa mempunyai kedua nilai positif dan negatif. Tetapi unsigned hanya mempunyai nilai positif saja.
4.3 Variabel Local dan Global Dalam bahasa pemrograman, dikenal variable yang bersifat lokal dan global. Variabel local maksudnya bahwa variabel tersebut hanya dikenal pada daerah local atau pada suatu fungsi tertentu. Fungsi lain tidak akan mengenali variabel local pada fungsi lain. variabel-variabel local dideklarasikan hanya di wilayah atau daerah fungsi tersebut dan dikenal hanya pada wilayah tersebut. Sehingga kita bisa mendeklarasikan variabel dengan identifier yang sama pada fungsi lain. Variabel global mkasudnya adalah variabel yang dikenal diseluruh program. Jadi semua fungsi pada program mengenali dan dapat mengakses variabel tersebut. Sehingga perlu pemakaian variabel global perlu diperhatikan karena semua fungsi-fungsi dapat memanipulasi data yang ada pada variabel tersebut. Variabel global dideklarasikan diluar fungsi-fungsi dan funsi main() sebagai contoh berikut ini.
22
Identifier, Penamaan dan Tipe Data
Tabel 4.1: Tipe data yang dimiliki bahasa C dan C++ Tipe Data Ukuran (Byte) char 1 unsigned char 1 signed char 1 int 2 short int 1 unsigned int 2 signed int 2 long int 4 unsigned long int 4 signed long int 4 float 4 double 8 long double 10 void 0
1 2 3
Nilai yang bisa ditampung -128 ... 127 0 ... 255 -128 ... 127 -32768 ... 32767 -32768 ... 32767 0 ... 65535 -32768 ... 32767 -2147483648 ... 2147483647 0 ... 4294967295 -2147483648 ... 2147483647 3.4e-38 ... 3.402e38 1.175e-308 ... 1.17e308 3.65e-4951 ... 1.18e4932 tidak bernilai
# includ e<s t d i o . h> / / deklarasi variabel global f l o a t tegangan ;
4 5 6 7 8
i n t main ( ) { / / deklarasi variabel l o c a l f l o a t arus = 1 . 0 , r e s i s t o r = 1000;
9
tegangan = arus ∗ r e s i t o r ;
10 11
p r i n t f ( ” tegangan = %f \n” , tegangan ) ;
12 13
return 0 ;
14 15
}
Variabel tegangan adalah merupakan variabel global dan arus dan resistor adalah variabel local.
Konstanta
23
4.4 Konstanta Menghitung besaran-besaran fisis dalam bidang fisika memerlukan suatu konstanta-konstanta. Bahasa C dan C++ menyediakan tipe data tambahan sehingga variabel yang kita gunakan merupakan konstanta dan nilainya tidak dapat diubah. Ada dua cara yang biasa digunakan untuk menandakan bahwa suatu identifier merupakan konstanta. Cara pertama adalah pada saat deklarasi variabel ditambahkan keyword const sebelum nama tipe data seperti 1 2
co nst f l o a t PI = 3.14159 , KECEPATAN SUARA = 343; co nst char p r i n t o u t [ ] = ” I n i konstanta s t r i n g ” ;
Cara kedua untuk menyatakan suatu konstanta adalah dengan menggunakan fasilitas preprocessor #define sebagai contoh berikut ini. 1 2
# includ e<s t d i o . h> # includ e<math . h>
3 4
# d e f i n e PI 3.14159
5 6 7 8
i n t main ( ) { f l o a t sudut = 45 , b ;
9
b = s i n ( sudut∗PI / 1 8 0 . 0 )
10 11
return 0 ;
12 13
}
Preprocessor #define artinya sebelum kode program dikompilasi, semua identifier yang namanya ada setelah #difine diganti dengan nilai atau teks setelah nama identifier. Sebagai contoh pada listing di atas, sebelum kompilasi kode program, semua keyword ”PI” digantin dengan angka ”3.14159”. Atau dengan kata lain kode program diatas sama dengan kode program berikut ini. 1 2
# includ e<s t d i o . h> # includ e<math . h>
3 4 5 6
i n t main ( ) { f l o a t sudut = 45 , b ;
24
Identifier, Penamaan dan Tipe Data
7
b = s i n ( sudut ∗ 3 . 1 4 1 5 9 / 1 8 0 . 0 )
8 9
return 0 ;
10 11
}
Konstanta Ada 2 Cara: 1) Dengan menggunakan preprocessor # define PI 3.14159 2)
Konstanta Cara Pertama: Sebelum kode di kompile, semua variabel yang di definis
Cara Kedua: Disini kita mendeklarasikan sebuah variabel yang bernilai
#include
#include using namespace std; # define PI 3 Library untuk fungsi-fungsi Matematika
int main() { const float pi = 3.14159; cout << " sin(pi) = " << sin(P
5
Operasi Matematika 5.1 Operasi Matematis Sederhana 5.1.1 Operator sama dengan (Assignment ,=) .
Operator = mungkin tidak asing lagi bagi kita karena operator ini yang paling sering digunakan. Dalam pemrograman, operator = memiliki maksud tersendiri tidak seperti yang ada di bidang matematika. Mari kita pelajari dengan menggunakan contoh dua perintah berikut ini. 1 2
a = b; a = a + c;
Contoh perintah pertama a = b; mempunyai arti dalam bahasa pemrograman yaitu nilai yang ada di variabel b dicopy ke variabel a. Hal ini berbeda dengan prinsip matematika yang mana operasi = bersifat dua arah. Sedangkan untuk bahasa pemrograman, operator = bersifat satu arah saja, dari kanan ke kiri. Oleh karena itu, perintah a = a c;+ dapat dilakukan di dalam pemrograman yang artinya bahwa nilai a dan c dijumlahkan terlebih dahulu dan kemudian hasilnya dimasukkan ke variabel a. Jadi tidak terjadi masalah dari segi komputasi. Perlu diingat bahwa ini merupakan proses mengkopi nilai dari memori satu ke dalam memori yang lain.
5.1.2 Aritmatika Dalam komputasi dengan operator-operator matematis, kita perlu memperhatikan urutan operasi atau yang disebut dengan ”Operator precedence”. Kompiler bahasa C atau C++ mengevaluasi suatu hitungan
26
Operasi Matematika
Tabel 5.1: Operasi aritmatika yang dimiliki bahasa C dan C++ Operasi C Operator Matematis Bahasa C/C++ Penjumlahan + c=a+b c = a + b; Pengurangan c=a−b c = a - b; perkalian * c=a×b c = a*b pembagian / c = a/b c = a/b Sisa Bagi % c = a mod b c = a%b sesuai dengan aturan sesuai dengan operator precedence. Urutan operasi biasanya hampir sama dengan operasi matematika. Tabel 5.2: Operator precedence, urutan operasi yang dilakukan, dari atas ke bawah Operasi C Operator Urutan evaluasi perkalian Dievaluasi pertama. Jika ada beberapa operasi, * pembagian / dievaluasi dari kiri ke kanan Sisa Bagi % Penjumlahan + Jika ada beberapa operasi, Pengurangan dievaluasi dari kiri ke kanan
1
rata rata1 = ( a + b + c + d ) / 4 ;
2 3
/ / tid ak sama dengan
4 5
rata rata2 = a + b + c + d / 4 ;
Tanda kurung diperlukan karena pembagian memiliki urutan yang lebih tinggi ” higher precedence ” dibandingkan dengan penjumlahan. 1
y = a∗b%c + d / 3 ;
yang dilakukan pertama adalah a*b kemudian hasilnya di sisa bagi terus kemudian ditambahkan dengan hasil d dibagi 3. 1
y = a∗x∗x + b∗x + c ;
Proses yang sebenarnya dilakukan oleh program adalah
Aritmatika dengan dua operator
1 2 3 4 5
h1 h2 h3 h4 h5
= = = = =
27
a∗x ; z ∗x ; b∗x ; h1 + h2 ; h4 + c ;
5.2 Aritmatika dengan dua operator
Tabel 5.3: Operasi denga dua operator yang dimiliki bahasa C dan C++ Operasi C Operator Contoh C/C++ Artinya Penjumlahan sama dengan += a += b a = a + b; Pengurangan sama dengan -= a -= b a = a - b; Perkalian sama dengan = a = b a = a * b; * * Pembagia sama dengan /= a /= b a = a / b; Sisa bagi sama dengan %= a %= b a = a % b; Tambahkan satu ++ a++ atau ++a a = a 1;! Kurangi satu -a-- atau --a a = a - a;
5.3 Operasi-operasi logika
Tabel 5.4: Operasi logika yang dimiliki bahasa C dan C++ Operasi C Operator Bahasa C/C++ Tidak ! !a Sama dengan = == a == b Tidak sama dengan 6= != a != b Lebih besar dari > > a > b Lebih besar dari atau sama dengan ≥ >= a >= b Lebih kecil dari < < a < b Lebih kecil dari atau sama dengan ≤ <= a <= b
28
Operasi Matematika
5.4 Konversi Tipe Jika dalam sebuah ekspresi ada beberapa konstanta dan variabel yang tipenya berbeda, dalam perhitungan kompiler c dan C++ akan menyamakan tipenya. Kompiker C dan C++ akan mengubah setiap operan menjadi tipe lebih besar. Hal ini dikerjakan pada setiap operasi satu per satu. Aturan-aturan konversi: 1. If either of the operands is of type float then the other operand is converted to the same type. 2. If either of the operands is of type long int or unsigned long int then the other operand is converted to the same type. 3. Otherwise, if either of the operands is of type int or unsigned int then the other operand is converted to the same type. 4. Thus char type or unsigned char type gets the lowest priority. 1 2 3 4 5 6 7
int a = 2; i n t b= 1 ; f l o a t c =6.3; c = a∗b ; c = 2/a ; c = 2.0/a; c = a/ c ;
Untuk menghindari kesalahan dalam konversi bilangan yang dilakukan oleh kompiler, kita menggunakan tipe casting yang eksplisit. 1 2 3 4 5 6
int a = 4; int b = 2; float c = 6.3; float d; / / casting b = a + ( int ) c ;
Type casting dapat juga digunakan untuk menghindari overflow atau underflow, atau bilangan ke luar jangkauan tipe data, ketika operasi perkalian dan pembagian dua bilangan.
operasi binari
1 2 3 4
i n t a = 5000 , b = 4000; f l o a t c = 1 . 0E−30, d = 1 . 5E−12; long i n t c ; double f ;
5 6 7 8 9 10 11 12
/ / n i l a i ( a∗b ) ke luar i n t e r v a l bilangan c = a∗b ; / / n i l a i ( c ∗d ) o v e rf lo w f = c ∗d ; / / c a s t i n g untuk menghindari e r r o r c = ( long i n t ) a∗b ; 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) y x 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”.
29
30
Operasi Matematika Contoh:
1 2 3
/ / f i l e segitiga . c # includ e<s t d i o . h> # includ e<math . h>
4 5 6 7 8
i n t main ( ) { double a = 3 , b = 5 , c ; / / panjang s i s i −s i s i s e g i t i g a c = s q r t ( a∗a + b∗b ) ; / / panjang s i s i miringnya p r i n t f ( ” panjang s i s i miringnya adalah %l f ” , c }
9 10 11 12
return 0 ;
13 14
}
Perintah yang digunakan untuk kompilasi adalah gcc segitiga.c -lm -o segitiga.exe .
6
Fungsi Output dan Input
Bab ini membahas tentang bagaimana menampilkan teks pada layar komputer dengan menggunakan fungsi printf() dan putchar() dan bagaimana mendapatkan masukkan dari keyboard dengan fungsi scanf() dan getchar()
6.1 Output, Menampilkan Pada Layar 6.1.1 printf() Untuk menampilkan teks pada layar komputer untuk bahasa pemrograman C, kita menggunakan fungsi printf() yang sudah disediakan oleh kompiler di pustaka (library) stdio.h. Untuk menggunakan fasilitas stdio.h kita harus memasukkan protopipe yang terdapat di stdio.h. Kita memberitahu kompiler untuk menambahkan pustaka (library) stdio.h dengan perintah #include pada saat preprocessing. 1
# includ e<s t d i o . h>
Bentuk penulisan fungsi printf() adalah sebagai berikut. 1 2 3
v o id p r i n t f ( char ∗ s t r , arg1 , arg2 , . . . ) / / contoh : p r i n t f ( ” . . . . s t r i n g / kalimat . . . . %f %d ” , var1 , var2 ) ;
Untuk memulai baris baru, tambahan \n digunakan seperti berikut ini. 1
p r i n t f ( ” I n i b a r i s pertama \n Baris kedua \n Baris ke tig a ” ) ;
32
Fungsi Output dan Input
Tambahan \n adalah sebuah escape sequence atau untuk menghindar atau keluar. Selain \n, enscape sequence yang lain ditunjukkan pada Tabel ??. Tabel 6.1: Escape sequence untuk suatu string pada fungsi printf() Escape Sequence Penjelasan \n baris baru, letakkan posisi cursor pada baris baru \a bunyikan bell \b backspace \f formfeed \t tab (8 huruf) \’ Menampilkan tanda kutip tunggal \" Menampilkan tanda kutip ganda \\ Menampilkan tanda garis miring \xaa Menampilkan kode ASCII dalam hexadesimal \aaa kode ASCII dalam octal aa disini diganti dengan angka \% menampilkan tanda % Nilai yang terkandung dalam suatu variabel dapat ditampilakan pada layar komputer dengan menyisipkan tanda formating (format specifier) pada string/kalimat dan kemudian diikuti dengan variabelnya. Cara memformat bilangan disesuaikan dengan tipe datanya. Untuk lebih jelas, mari kita lihat dua contoh berikut ini. 1 2
p r i n t f ( ” N i l a i parameter alpha = %f ” , alpha ) ;
3 4
p r i n t f ( ” P o s i s i p a r t i k e l = (%f ,% f ) ” , x , y ) ;
Secara garis besar format specifier harus dimulai dengan tanda % dan diikuti dengan huruf yang menyatakan bentuk dari output. Seperti contoh "%f" menunjukkan bahwa output berbentuk bilangan floating point (untuk tipe data float). Format specifier yang lain dapat dilihat pada Table 6.2.
Output, Menampilkan Pada Layar
Format ’i’ ’d’ ’u’ ’e’ ’E’ ’f’ ’x’ ’X’ ’c’ ’s’ ’p’
Tabel 6.2: Format string Penjelasan signed decimal integer signed decimal integer unsigned decimal integer untuk float, dengan bentuk [-]d.dddddd e[-]dd untuk float, dengan bentuk [-]d.dddddd E[-]dd untuk float, dengan bentuk [-]ddd.dddddd unsigned hexadecimal integer dengan huruf kecil unsigned hexadecimal integer dengan huruf besar untuk satu huruf untuk string untuk string
33
7
Kontrol Aliran dan Pengulangan
Pada bab ini kita akan membahas bagaimana mengatur aliran perintahperintah yang kita berikan dengan menggunakan pernyataan if..else dan melakukan pengulangan dengan cara for , while dan do...while .
7.1 Kontrol Aliran 7.1.1 if dan else Bentuk umum penggunaan if yaitu
if(kondisi) pernyataan
sebagai contoh: if(x < 10) printf("x bernilai lebih kecil dari 10 \n"); Bentuk umum penggunaan if...else yaitu
if(kondisi) pernyataan1/perintah1 else pernyataan2/perintah2
sebagai contoh: if(x < 10) printf("x bernilai lebih kecil dari 10 \n"); else printf("x bernilai lebih besar dari atau sama dengan 10 \n");
36
Kontrol Aliran dan Pengulangan
7.1.2 switch switch(val){ case 1: a = a +1; break; case 2: a = a + 100; break; default: a = 0; }
7.2 Pengulangan 7.2.1 for for(pernyataan1; pernyataan2; pernyataan3){ pernyataan }
7.2.2 while while(kondisi){ pernyataan; }
7.2.3 do ... while do{ pernyataan; }while(kondisi)
7.2.4 break dan continue for(pernyataan1; pernyataan2; pernyataan3){
Pengulangan pernyataanA; break; pernyataanB; } for(pernyataan1; pernyataan2; pernyataan3){ pernyataanA; continue; pernyataanB; }
37
8
Array \section{Variabel Array} Format: Tipe nama[jumlah];
Contoh: Int g[10]; // buat array dengan 10 elemen Elemen dimulai dengan in
\section{Akses Array} Contoh: double w[6] ={0,4,5,1,3,4} //cetak isi array for(int i = 0; i<6; i \section{Inisialisasi Array} Format: Int g[5]={1,2,3,4,5}; // buat array 5 elemen g[0] = 1; g[9]=10;
\section{Array Multidimensi} Format: Tipe nama[jumlah][jumlah]; // dua dimensi Tipe nama[jumlah][jumlah
\section{Array sebagai input fungsi} Contoh: void cetaknilai(int a[],int n) { for(int i = 0; i
Array sebagai input fungsi Contoh: void cetaknilai(int a[][4],int n) { for(int i = 0; i
\section{String dibuat dengan array char} Contoh: int main() { char nama[20] = "Einstein"; cout << "nama : " << nama
9
Fungsi
Fungsi Di setiap program C++, kita harus mendefinisikan /mendeklarasikan fungsi m
Fungsi Format deklarasi fungsi: Tipe NamaFungsi(deklarasi parameter) { --return sesuatu; } Tipe Tipe nilai yang di hasilkan oleh fungsi Deklarasi Deklarasi Fungsi
Ada Dua Cara: 1) Deklarasi dan definisi sebelum fungsi main() 2) Deklarasi Fungsi, Cara 1 #include using namespace std; // deklarasi dan definisi double #include using namespace std; Fungsi, Cara 2
double tambah(double a, double b); // deklarasi int main() { cout << tamba #include using namespace std; Fungsi, Void 1
double seratus(void); // deklarasi int main() { cout << seratus; } // defi #include using namespace std; Fungsi, Void 2
void cetakgaris(void); // deklarasi int main() { cetakgaris(); } // defini
42
Fungsi
Dua Cara Input/masukan Fungsi Cara 1) Input menggunakan nilai Seperti sebelumnya: double tambah(dou #include using namespace std; Fungsi
void limakali(double &x); // deklarasi int main() { double a = 2; lim #include using namespace std; Fungsi void tukar(double &x, double &y); // deklarasi int main() { double a #include using namespace std; Fungsi, Variabel global
double x=2; // global variabel x void limakalix(void); // deklarasi i Kita bisa mendeklarasikan banyak fungsi dengan nama fungsi yang sama Fungsi, Overloaded Fungsi, Inline Keyword inline digunakan untuk menambahkan kode fungsi itu dimanapun
Functions Previous Top Next
You may use function prototypes to declare a function. These declarations include information about the function parameters. Example: int alfa(char par1, int par2, long par3); The actual function definition may be written somewhere else as: int alfa(char par1, int par2, long par3) {
43 /* Write some statements here */ }
The old Kernighan & Ritchie style of writing function definitions is not s Function parameters are passed through the Data Stack. Function values are returned in registers R30, R31, R22 and R23 (from LSB
10 Struktur
Structures are user-defined collections of named members. The structure members can be any of the supported data types, arrays of th Structures are defined using the struct reserved keyword. The syntax is: [<memory attribute>] struct [<structure tag-name>] { [ [,, ...]]; [ []:<width>[,[]:<width>, ...]]; ... } [<structure variables>]; Example: /* Global structure located in RAM */ struct ram_structure { char a,b; int c; char d[30],e[10]; char *pp; } sr; /* Global constant structure located in FLASH */ flash struct flash_structure { int a; char b[30], c[10]; } sf; /* Global structure located in EEPROM */ eeprom struct eeprom_structure { char a;
46
Struktur int b; char c[15]; } se;
void main(void) { /* Local structure */ struct local_structure { char a; int b; long c; } sl; /* ............. */ }
The space allocated to the structure in memory is equal to sum of the
Structures can be grouped in unidimmensional arrays. Example how to initialize and access an global structure array stored /* Global structure array located in EEPROM */ eeprom struct eeprom_structure { char a; int b; char c[15]; } se[2]={{’a’,25,"Hello"}, {’b’,50,"world"}}; void main(void) { char k1,k2,k3,k4; int i1, i2; /* define a pointer to the structure */ struct eeprom_structure eeprom *ep; /* direct access to structure members */ k1=se[0].a; i1=se[0].b; k2=se[0].c[2]; k3=se[1].a;
47 i2=se[1].b; k4=se[1].c[2]; /* same access to structure members using a pointer */ ep=&se; /* initialize the pointer with the structure address */ k1=ep->a; i1=ep->b; k2=ep->c[2]; ++ep; /* increment the pointer */ k3=ep->a; i2=ep->b; k4=ep->c[2]; } Because some AVR devices have a small amount of RAM, in order to keep the Example: struct alpha { int a,b, c; } s={2,3}; /* define the function */ struct alpha *sum_struct(struct alpha *sp) { /* member c=member a + member b */ sp->c=sp->a + sp->b; /* return a pointer to the structure */ return sp; } void main(void) { int i; /* s->c=s->a + s->b */ /* i=s->c */ i=sum_struct(&s)->c; }
Structure members can be also declared as bit fields, having a width from Bit fields are allocated in the order of declaration starting from the lea Example: /* this structure will occupy 1 byte in RAM as the bit field data type is unsigned char */ struct alpha1 {
48
Struktur unsigned char a:1; /* bit 0 */ unsigned char b:4; /* bits 1..4 */ unsigned char c:3; /* bits 5..7 */ };
/* this structure will occupy 2 bytes in RAM as the bit field data type is unsigned int */ struct alpha2 { unsigned int a:2; /* bits 0..1 */ unsigned int b:8; /* bits 2..9 */ unsigned int c:4; /* bits 10..13 */ /* bits 14..15 are not used */ }; /* this structure will occupy 4 bytes in RAM as the bit field data type is unsigned long */ struct alpha3 { unsigned long a:10; /* bits 0..9 */ unsigned long b:8; /* bits 10..17 */ unsigned long c:6; /* bits 18..23 */ /* bits 24..31 are not used */ };
Unions Previous Top Next
Unions are user-defined collections of named members that share the s The union members can be any of the supported data types, arrays of t Unions are defined using the union reserved keyword. The syntax is: [<memory attribute>] [<storage modifier>] union [] { [ [,, ...]]; [ :<width>[,:<width>, ...]]; ... } [];
The space allocated to the union in memory is equal to the size of th Union members can be accessed in the same way as structure members. E
49 /* union declaration */ union alpha { unsigned char lsb; unsigned int word; } data;
void main(void) { unsigned char k; /* define a pointer to the union */ union alpha *dp; /* direct access to union members */ data.word=0x1234; k=data.lsb; /* get the LSB of 0x1234 */ /* same access to union members using a pointer */ dp=&data; /* initialize the pointer with the union address */ dp->word=0x1234; k=dp->lsb; /* get the LSB of 0x1234 */ } Because some AVR devices have a small amount of RAM, in order to keep the Example: #include <stdio.h> /* printf */ union alpha { unsigned char lsb; unsigned int word; } data; /* define the function */ unsigned char low(union alpha *up) { /* return the LSB of word */ return up->lsb; } void main(void) { data.word=0x1234; printf("the LSB of %x is %2x",data.word,low(&data)); }
50
Struktur
Union members can be also declared as bit fields, having a width from Bit fields are allocated in the order of declaration starting from th Example: /* this union will occupy 1 byte in RAM as the bit field data type is unsigned char */ union alpha1 { unsigned char a:1; /* bit 0 */ unsigned char b:4; /* bits 0..3 */ unsigned char c:3; /* bits 0..2 */ }; /* this union will occupy 2 bytes in RAM as the bit field data type is unsigned int */ union alpha2 { unsigned int a:2; /* bits 0..1 */ unsigned int b:8; /* bits 0..7 */ unsigned int c:4; /* bits 0..3 */ /* bits 8..15 are not used */ }; /* this union will occupy 4 bytes in RAM as the bit field data type is unsigned long */ union alpha3 { unsigned long a:10; /* bits 0..9 */ unsigned long b:8; /* bits 0..7 */ unsigned long c:6; /* bits 0..5 */ /* bits 10..31 are not used */ };
Enumerations Previous Top Next
The enumeration data type can be used in order to provide mnemonic id The enum keyword is used for this purpose. The syntax is: [<memory attribute>] [<storage modifier>] enum [<enum tag-name>] { []} [<enum variables>];
51
Example: /* The enumeration constants will be initialized as follows: sunday=0 , monday=1 , tuesday=2 ,..., saturday=6 */ enum days { sunday, monday, tuesday, wednesday, thursday, friday, saturday} days_of_week; /* The enumeration constants will be initialized as follows: january=1 , february=2 , march=3 ,..., december=12 */ enum months { january=1, february, march, april, may, june, july, august, september, october, november, december} months_of_year; void main { /* the variable days_of_week is initialized with the integer value 6 */ days_of_week=saturday; }
Enumerations can be stored in RAM, EEPROM or FLASH. The eeprom or __eeprom memory attributes must be used to specify enumerati Example: eeprom enum days { sunday, monday, tuesday, wednesday, thursday, friday, saturday} days_of_week;
The flash or __flash memory attributes must be used to specify enumeration Example: flash enum months { january, february, march, april, may, june, july, august, september, october, november, december} months_of_year;
It is recommended to treat enumerations as having 8 bit char data type, by
52
Struktur
This will improve the size and execution speed of the compiled progra \section{Tipe Data Baru} Defining Data Types Previous Top Next
User defined data types are declared using the typedef reserved keywo The syntax is: typedef ; The symbol name is assigned to . Examples: /* type definitions */ typedef unsigned char byte; typedef struct { int a; char b[5]; } struct_type; /* variable declarations */ byte alfa; /* structure stored in RAM */ struct_type struct1; /* structure stored in FLASH */ flash struct_type struct2; /* structure stored in EEPROM */ eeprom struct_type struct3;
11
Lab 1: Pengenalan Bahasa C Pada Lab 1 ini kita akan mempelajari tentang bahasa C yang sederhana terutama tentang bagaimana mengkompilasi dan menjalankan program yang kita buat. Untuk lebih mengerti proses yang akan dilakukan dalam bahasa C, mari kita lakukan hal-hal dibawah ini.
11.1 Penulisan Kode C Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9
i n t main ( ) { p r i n t f ( ” Hello C++ \n” ) ; p r i n t f ( ” Saya bisa membuat program dengan C” ) ;
10
return 0 ;
11 12
}
Setelah selesai mengetik kode di atas, kemudian simpan kode tersebut ke file dengan nama dan ekstensi .c. Sebagai contoh kita beri nama helo.c. Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cpp untuk pindah ke folder tempat file yang telah kita telah buat berada. Kemudian kita kompilasi kode tersebut dengan salah satu perintah berikut ini:
54
Lab 1: Pengenalan Bahasa C
$ gcc namafile.c $ gcc namafile.c -o namafile.exe Ingat tanda $ tidak diketik melainkan hanya menunjukkan baris perintah yang ada pada cygwin atau command prompt.
11.2 Modifikasi Langkah selanjutnya adalah mengubah program sederhana di atas, dengan menambahkan beberapa baris perintah. Cobalah tambahkan baris ini satu per satu dan lihat apa yang dihasilkan dilayar setelah program kompilasi dan dieksekusi.
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.
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 beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8
i n t main ( ) { int a , b = 3 , c = 2;
9
p r i n t f ( ” n i l a i a = %d \n” , a ) ; p r i n t f ( ” n i l a i b = %d \n” , b ) ; p r i n t f ( ” n i l a i c = %d \n” , c ) ;
10 11 12 13
a = b + c;
14 15
p r i n t f ( ” n i l a i a = %d \n” , a ) ;
16 17
return 0 ;
18 19
}
Berapakah nilai a, b dan c?
11.3.2 Kesalahan Penulisan Variabel Tambahkan kode berikut ini pada kode di atas dan catat apa kesalahan yang muncul pada waktu kita kompilasi kode. 1 2 3 4 5 6
i n t 2 ap e l ; long banyak ! ; double d e si−mal ; double d e si mal ; double DESI mal ;
56
Lab 1: Pengenalan Bahasa C
11.3.3 Tipe Data Variabel Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9
i n t main ( ) { int a = 2 , b = 3 , c , d ; float p = 2, q = 3, r ;
10
c r a b
11 12 13 14
= = = =
a/b; p/q; i + j; i %4;
15
p r i n t f ( ” Baris p r i n t f ( ” Baris p r i n t f ( ” Baris p r i n t f ( ” Baris
16 17 18 19
1: 2: 3: 4:
nilai nilai nilai nilai
c r r b
= = = =
%d \n” , c ) ; %d \n” , r ) ; %f \n” , r ) ; %d ” , b ) ;
20
return 0 ;
21 22
}
Berapakah nilai c (Baris 1) dan r (Baris 2 dan 3)? Apa yang ditampilkan pada layar ketika kita kompilasi? dan ketika program dieksekusi? Mengapa nilai c tidak sama dengan r? Mengapa keluaran Baris 2 tidak sama dengan Baris 3?
11.3.4 Scanf Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini dan perhatikan baris scanf. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9
i n t main ( ) { float x, y;
Lab 2: Pengenalan Variabel dan Operasi Matematis
57
p r i n t f ( ”Masukkan n i l a i x : \ n” ) ; scanf ( ”%f ” ,&x ) ;
10 11 12
p r i n t f ( ” N i l a i yang Anda masukkan adalah %f \n” , x ) ;
13 14
p r i n t f ( ”Masukkan dua n i l a i x dan y : \ n” ) ; scanf ( ”%f %f ” ,&x , &y ) ;
15 16 17
p r i n t f ( ” N i l a i yang Anda masukkan adalah %f dan %f \n” , x , y ) ; p r i n t f ( ” Perkalian antara x dan y menghasilkan %f \n” , x∗y ) ;
18 19 20
return 0 ;
21 22
}
Perhatikan baris yang mengadung fungsi scanf. Mengapa kita menggunakan simbol &? Apa yang terjadi jika tanda format %f diganti dengan %d pada fungsi scanf? Mengapa hasil yang dilihat pada layar berbeda dengan apa yang dimasukkan?
12
Lab 3: Pengenalan define dan math.h 12.1 Define dan const Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6
# d e f i n e pi1 3.14159
7 8 9 10
i n t main ( ) { co nst f l o a t pi2 = 3.14159;
11
p r i n t f ( ” n i l a i pi1 = %f \n” , pi1 ) ; p r i n t f ( ” n i l a i pi2 = %f \n” , pi2 ) ;
12 13 14
return 0 ;
15 16
}
Apa perbedaan pi1 dan pi2?
12.2 math.h Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1
60 2 3 4 5
Lab 3: Pengenalan define dan math.h
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h> # includ e<math . h>
6 7
# d e f i n e p i 3.14159
8 9
using namespace std ;
10 11 12 13
i n t main ( ) { f l o a t sudut = 3 8 ; / / dalam d e r a j a t
14
p r i n t f ( ” s i n (% f ) = %f \n” , s i n ( p i ∗ sudut / 1 8 0 . 0 ) ) ; p r i n t f ( ” co s (% f ) = %f \n” , co s ( p i ∗ sudut / 1 8 0 . 0 ) ) ;
15 16 17
return 0 ;
18 19
}
Berapa nilai sin(38) dan cos(38)? Tambahkan fungsi-fungsi matematis lainnya.
12.3 Latihan-latihan 1. Buatlah program untuk mengkonversi sebuah nilai temperature dalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan rumus 9 TF = TC + 32 (12.1) 5 . Disini input program adalah TC dan output program adalah TF . 2. Buatlah program yang diberikan input tiga bilangan (x, y dan z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua √ rumus: s = (x + y + z) = 3 dan p = 3 xyz. Disini input program adalah x, y dan z, dan output program adalah s dan p.
13
Lab 4: Pengenalan for, while dan do while 13.1 for Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9
i n t main ( ) { int i ; int s ;
10
f o r ( i =1; i <=20; i ++) { p r i n t f ( ” n i l a i i = %d \n” , i ) ; }
11 12 13 14
s = 0; f o r ( i =1; i <=20; i ++) { s = s + 1; }
15 16 17 18 19
p r i n t f ( ” n i l a i s = %d \n” , s ) ;
20 21
return 0 ;
22 23
}
Apa yang ditampilkan pada layar? berapakah nilai s? Mengapa nilai s demikian? Jika menggunakan rumus deret aritmatika atau de-
62
Lab 4: Pengenalan for, while dan do while
ngan kalkulator, hitunglah nilai s. Bandingkan hasilnya.
13.2 while Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h> # includ e<math . h>
6 7 8 9 10 11 12
i n t main ( ) { int i , n ; float c ; f l o a t dx ; float x;
13
dx = 0 . 1 ; n=10;
14 15 16
i =1; p r i n t f ( ” NO X SIN (X) \n” ) ; while ( i
17 18 19 20 21 22 23
i ++;
24
}
25 26
return 0 ;
27 28
}
Apakah yang dilakukan oleh program C di atas? Apa kegunaan baris i=1; dan i++;?
13.3 do-while Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
do-while
63
1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h> # includ e<math . h>
6 7 8 9 10 11 12
i n t main ( ) { int i , n; float c ; f l o a t dx ; float x;
13
dx = 0 . 1 ; n= 1 0 ;
14 15 16
i =1; p r i n t f ( ” NO X SIN (X) \n” ) ; do { x = i ∗dx ; c = co s ( x ) ; p r i n t f ( ”%d %f %f \n” , i , x , c ) ;
17 18 19 20 21 22 23
i ++; } while ( i
24 25 26
return 0 ;
27 28
}
Apakah yang ditampilkan dilayar? apakah sama dengan hasil yang diperoleh dengan menggunakan while saja? Perhatikan perbedaan penggunaan while dan do...while di atas? Jika kita ganti baris n=10; menjadi n=0; pada kedua contoh kode menggunakan while dan do...while, apa yang ditampilkan pada layar? Apa perbedaannya antara kedua program tersebut?
14
Lab 5: Pengenalan if, else dan switch 14.1 if Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8
i n t main ( ) { float x , y;
9
p r i n t f ( ”Masukkan n i l a i x : \ n” ) ; scanf ( ”%f ” ,&x ) ;
10 11 12
i f ( x <5.0) p r i n t f ( ” Angka l e b i h k e c i l d ari 5 . 0 \n” ) ;
13 14
i f ( x >5.0) { p r i n t f ( ”Angka l e b i h besar d ari 5 . 0 \n” ) ; }
15 16 17 18
return 0 ;
19 20
}
Apa yang ditampilkan pada layar? Apa perbedaan dua fungsi if di atas?
66
Lab 5: Pengenalan if, else dan switch
14.2 if else Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8
i n t main ( ) { float x, y;
9
p r i n t f ( ”Masukkan n i l a i x : \ n” ) ; scanf ( ”%f ” ,&x ) ;
10 11 12
i f ( x <5.0) p r i n t f ( ” Angka l e b i h k e c i l d ari 5 . 0 \n” ) ; e l s e p r i n t f ( ” Angka l e b i h d ari / sama dengan 5 . 0 \n” ) ;
13 14 15
return 0 ;
16 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 beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8
i n t main ( ) { float x;
9 10 11
p r i n t f ( ”Masukkan n i l a i x : \ n” ) ; scanf ( ”%f ” ,&x ) ;
12 13 14
i f ( x <5.0) p r i n t f ( ” Angka l e b i h k e c i l d ari 5 . 0 \n” ) ; e l s e i f ( x <10.0) p r i n t f ( ” Angka l e b i h besar d ari 5 . 0 dan l e b i h k e c i l d ari 10.0 \n” ) ;
()?::
67
e l s e i f ( x <100.0) p r i n t f ( ” Angka l e b i h besar d ari 10.0 dan l e b i h k e c i l d ari 100.0 \n” ) ; e l s e i f ( x <1000.0) p r i n t f ( ” Angka l e b i h besar d ari 100.0 dan l e b i h k e c i l d ari 1000.0 \n” ) ; e l s e p r i n t f ( ” Angka l e b i h besar d ari 1000.0\n” ) ;
15
16
17 18
return 0 ;
19 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 beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8
i n t main ( ) { float x , y, z ;
9
p r i n t f ( ”Masukkan n i l a i x : \ n” ) ; scanf ( ”%f ” ,&x ) ;
10 11 12
p r i n t f ( ”Masukkan n i l a i y : \ n” ) ; scanf ( ”%f ” ,&y ) ;
13 14 15
z = ( x
16 17
p r i n t f ( ” N i l a i z = %f \n” , z ) ; return 0 ;
18 19 20
}
Apa yang ditampilkan pada layar? Perhatikan penggunaan operator conditional (()?:). Nilai apa yang ditampilkan oleh program? lebih besar atau lebih kecil?
68
Lab 5: Pengenalan if, else dan switch
14.5 switch Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8
i n t main ( ) { int a ;
9
p r i n t f ( ”Masukkan bilangan bulat antara 1 sampai 10:\ n” ) ; scanf ( ”%d ” ,&a ) ;
10 11 12
switch ( a ) { case 1 : p r i n t f ( ” Pilihan break ; case 2 : p r i n t f ( ” Pilihan break ; case 3 : p r i n t f ( ” Pilihan break ; case 4 : p r i n t f ( ” Pilihan break ; default : p r i n t f ( ” Pilihan }
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Dua\n” ) ;
Tiga \n” ) ; Empat\n” ) ;
Lain−l a i n \n ) ;
return 0 ;
30 31
Satu\n” ) ;
}
Apa yang ditampilkan pada layar? Perhatikan penggunaan switch.
15
Lab 6: Pengenalan Fungsi dan Array 15.1 Fungsi Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6
i n t jumlah ( i n t a , i n t b ) ;
7 8
i n t bagidua ( i n t a ) ;
9 10 11 12
i n t main ( ) { int a = 3 , b = 5 , c ;
13
c = jumlah ( a , b ) ;
14 15
p r i n t f ( ” n i l a i a = %d \n” , a ) ; p r i n t f ( ” n i l a i b = %d \n” , b ) ; p r i n t f ( ” n i l a i jumlah ( a , b ) = %d ” , c ) ;
16 17 18 19
return 0 ;
20 21 22 23 24 25 26 27 28
} i n t jumlah ( i n t a , i n t b ) { return ( a+b ) ; } i n t bagidua ( i n t a )
70 29 30 31
{
Lab 6: Pengenalan Fungsi dan Array
return ( a / 2 ) ;
}
Jelaskan apa saja yang diperlukan untuk mendefinisikan sebuah fungsi? dan apa kegunaan fungsi jumlah dan bagidua?
15.2 Pengenalan Array Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9
i n t main ( ) { float a[10]; double b [ 3 ] [ 4 ] ;
10
a [0] = 7; a [ 1 ] = 10; a[11] = 1; b [ 2 ] [ 3 ] = 1002;
11 12 13 14 15
printf ( ” printf ( ” printf ( ” printf ( ”
16 17 18 19 20
\n” , a [ 0 ] ) ; \n” , a [ 1 ] ) ; \n” , a [ 4 ] ) ; %f \n” , b [ 2 ] [ 3 ] ) ;
return 0 ;
21 22
a [ 0 ] = %f a [ 1 ] = %f a [ 4 ] = %f b[2][3] =
}
Apa kesalahan kode di atas? apa yang tampil di layar ketika kita kompilasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi. Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi.
16
Lab 7: Pengenalan Pointer 16.1 Pointer
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9 10 11
i n t main ( ) { f l o a t a ; / / variabel tipe f l o a t f l o a t ∗p ; / / sebuah p o i n t e r t i p e f l o a t a = 2.3; p = &a ; / / v a r i a b e l p b e r i s i alamat v a r i a b e l a
12
p r i n t f ( ”%f \n” , a ) ;
13 14
∗p = 4 . 2 ; / / k i t a ubah n i l a i v a r i a b e l a
15 16
p r i n t f ( ”%f \n” , a ) ;
17 18
return 0 ;
19 20
}
Dengan menggunakan kode ini jelaskan apa saja yang diperlukan untuk mendefinisikan sebuah pointer? dan bagaimana mengunakan pointer?
72
Lab 7: Pengenalan Pointer
16.2 Pengenalan Operasi Pada Pointer Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e<s t d i o . h>
5 6 7 8 9 10 11 12
i n t main ( ) { i n t ∗p , b [ 5 ] ; b [1] = 1; b [2] = 2; b [3] = 3; b [4] = 4;
13
p = b ; / / p menunjuk ke alamat b [ 0 ]
14 15
p r i n t f ( ” n i l a i yang ditunjuk o le h p = %d\n” , ∗ p ) ;
16 17
p = p + 1 ; / / p menunjuk ke alamat b [ 1 ]
18 19
p r i n t f ( ” n i l a i yang ditunjuk o le h p = %d\n” , ∗ p ) ;
20 21
p−−; / / kembali ke alamat b [ 0 ]
22 23
p r i n t f ( ” n i l a i yang ditunjuk o le h p = %d\n” , ∗ p ) ;
24 25
p = p + 3 ; / / p menunjuk ke alamat b [ 3 ]
26 27
p r i n t f ( ” n i l a i yang ditunjuk o le h p = %d\n” , ∗ p ) ;
28 29
return 0 ;
30 31
}
Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi? Pelajari operasi-operasi yang dapat dilakukan untuk pointer.
16.3 Latihan 1. Baca program C++ dibawah ini. 1 2
# includ e<s t d i o . h>
73
Latihan 3 4 5 6 7
v o id swap ( f l o a t ∗ , f l o a t ∗ ) ; i n t main ( ) { f l o a t a = 2.5 , b = 6.0;
8
p r i n t f ( ”%f
9 10
%f \n” , a , b ) ;
swap(&a , &b ) ;
11 12
p r i n t f ( ”%f
13 14
return 0 ;
15 16 17 18 19 20
%f \n” , a , b ) ;
} v o id swap ( f l o a t ∗x , f l o a t ∗y ) { float t ;
21 22 23 24 25
}
t = ∗x ; ∗x = ∗y ; ∗y = t ;
Apa yang dilakukan oleh fungsi swap? 2. Buatlah program yang diberikan input tiga bilangan (x, y dan z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua √ rumus: s = (x + y + z)/3 dan p = 3 xyz. Disini input program adalah x, y dan z, dan output program adalah s dan p.
17
Lab 1: Pengenalan Bahasa C++
Pada Lab 1 ini kita akan mempelajari tentang bahasa C++ yang sederhana dan bagaimana mengkompilasi dan menjalankan program yang kita buat. Untuk lebih mengerti proses yang akan dilakukan dalam bahasa C++, mari kita lakukan hal-hal dibawah ini.
17.1 Penulisan Kode C++ Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11
i n t main ( ) { co ut << ” Hello C++ ” << endl ; co ut << ” Saya bisa membuat program dengan C++ ” << endl ;
12
return 0 ;
13 14
}
Setelah selesai mengetik kode di atas, kemudian simpan kode tersebut ke file dengan nama dan ekstensi .cpp. Kemudian jalankan program cygwin dan ketik cd nama/folder/lokasi/file/cpp untuk pindah ke folder tempat file yang telah kita ketik berada. Kemudian kita kompilasi kode tersebut dengan salah satu perintah berikut ini:
76
Lab 1: Pengenalan Bahasa C++
1 2 3
$ g++ nama . cpp $ g++ nama . cpp −o nama . exe
Ingat tanda $ tidak diketik melainkan hanya menunjukkan baris perintah pada cygwin atau command prompt.
17.2 Modifikasi Langkah selanjutnya adalah mengubah program sederhana di atas, dengan menambahkan beberapa baris perintah. Cobalah tambahkan baris ini satu per satu dan lihat apa yang dihasilkan dilayar setelah program dieksekusi. 1 2 3 4
co ut <<” i n i tab a\ t b \ t c ” << endl ; co ut <<” i n i b a r i s baru a\n b \n c \n” << endl ; co ut <<” i n i g a r i s miring \\ \ ” ” << endl ;
Cobalah modifikasi apa saja yang anda ingin tampilkan pada layar.
18
Lab 2: Pengenalan Variabel dan Operasi Matematis 18.1 Deklarasi Variabel Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10
i n t main ( ) { int a , b = 3 , c (2) ;
11
co ut << ” n i l a i a = ” << a << endl ; co ut << ” n i l a i b = ” << b << endl ; co ut << ” n i l a i c = ” << c << endl ;
12 13 14 15
a = b + c;
16 17
co ut << ” n i l a i a = ” << a << endl ;
18 19
return 0 ;
20 21
}
Berapakah nilai a, b dan c?
78
Lab 2: Pengenalan Variabel dan Operasi Matematis
18.2 Kesalahan Penulisan Variabel Tambahkan kode berikut ini dan catat apa kesalahan yang muncul pada waktu kita kompilasi kode. 1
i n t 2 ap e l ; long banyak ! ; double d e si−mal ; double d e si mal ; double DESI mal ;
2 3 4 5 6
18.3 Tipe Data Variable Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11
i n t main ( ) { int a = 2 , b = 3 , c ; float i = 2, j = 3, k;
12
c = 2/3; k = i/j; co ut << ” n i l a i c = ” << c << endl ; co ut << ” n i l a i b = ” << b << endl ;
13 14 15 16 17
a = i + j;
18 19
return 0 ;
20 21
}
Berapakah nilai c dan k? Apa yang ditampilkan pada layar ketika kita kompilasi? dan ketika program dieksekusi? Mengapa nilai c tidak sama dengan k?
19
Lab 3: Pengenalan Define dan cmath 19.1 Define dan const Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
# d e f i n e pi1 3.14159
7 8
using namespace std ;
9 10 11 12
i n t main ( ) { co nst f l o a t pi2 = 3.14159;
13
co ut << ” n i l a i pi1 = ” << pi1 << endl ; co ut << ” n i l a i pi2 = ” << pi2 << endl ;
14 15 16
return 0 ;
17 18
}
Apa perbedaan pi1 dan pi2?
19.2 cmath Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
80
Lab 3: Pengenalan Define dan cmath
1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e # includ e
6 7
# d e f i n e p i 3.14159
8 9
using namespace std ;
10 11 12 13
i n t main ( ) { f l o a t sudut = 3 8 ; / / dalam d e r a j a t
14
co ut << ” s i n ( ” << sudut <<” ) = ” << s i n ( p i ∗ sudut / 1 8 0 . 0 ) << endl ; co ut << ” co s ( ” << sudut <<” ) = ” << co s ( p i ∗ sudut / 1 8 0 . 0 ) << endl ;
15
16
17
return 0 ;
18 19
}
Berapa nilai sin(38) dan cos(38)? Tambahkan fungsi-fungsi matematis lainnya.
19.3 Latihan-latihan 1. Buatlah program untuk mengkonversi sebuah nilai temperature dalam derajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan rumus 9 (19.1) TF = TC + 32 5 . Disini input program adalah TC dan output program adalah TF . 2. Buatlah program yang diberikan input tiga bilangan (x, y dan z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua √ rumus: s = (x + y + z) = 3 dan p = 3 xyz. Disini input program adalah x, y dan z, dan output program adalah s dan p.
20
Lab 4: Pengenalan Fungsi dan Array 20.1 Fungsi Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8
i n t jumlah ( i n t a , i n t b ) ;
9 10 11 12
i n t main ( ) { int a = 3 , b = 5 , c ;
13
c = jumlah ( a , b ) ;
14 15
co ut << ” n i l a i a = ” << pi1 << endl ; co ut << ” n i l a i b = ” << pi2 << endl ; co ut << ” n i l a i jumlah ( a , b ) = ” << c << endl ;
16 17 18 19
return 0 ;
20 21 22 23 24 25 26
} i n t jumlah ( i n t a , i n t b ) { return ( a+b ) ; }
82
Lab 4: Pengenalan Fungsi dan Array
Jelaskan apa saja yang diperlukan untuk mendefinisikan sebuah fungsi? dan apa kegunaan fungsi jumlah?
20.2 Pengenalan Array Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e using namespace std ;
6 7 8 9 10
i n t main ( ) { float a[10]; double b [ 3 ] [ 4 ] ;
11
a [0] = 7; a [ 1 ] = 10; a[11] = 1; b [ 2 ] [ 3 ] = 1002;
12 13 14 15 16
co ut co ut co ut co ut
17 18 19 20
<< << << <<
” ” ” ”
a [ 0 ] = ” << a [ 1 ] = ” << a [ 4 ] = ” << b[2][3] = ”
a [ 0 ] << endl ; a [ 1 ] << endl ; a [ 4 ] << endl ; << b [ 2 ] [ 3 ] << endl ;
21
return 0 ;
22 23
}
Apa kesalahan kode di atas? apa yang tampil di layar ketika kita kompilasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi. Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi.
21
Lab 5: Pengenalan Pointer 21.1 Pointer
Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11 12 13
i n t main ( ) { f l o a t a ; / / variabel tipe f l o a t f l o a t ∗p ; / / sebuah p o i n t e r t i p e f l o a t a = 2.3; p = &a ; / / v a r i a b e l p b e r i s i alamat v a r i a b e l a
14
co ut << a << endl ;
15 16
∗p = 4 . 2 ; / / k i t a ubah n i l a i v a r i a b e l a
17 18
co ut << a << endl ;
19 20 21 22
}
return 0 ;
}
Dengan menggunakan kode ini jelaskan apa saja yang diperlukan untuk mendefinisikan sebuah pointer? dan bagaimana mengunakan pointer?
84
Lab 5: Pengenalan Pointer
21.2 Pengenalan Operasi Pada Pointer Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11 12 13 14
i n t main ( ) { i n t ∗p , b [ 5 ] ; b [1] = 1; b [2] = 2; b [3] = 3; b [4] = 4;
15
p = b ; / / p menunjuk ke alamat b [ 0 ]
16 17
co ut << ” n i l a i yang ditunjuk o le h p = ” << ∗p << endl ;
18 19
p = p + 1 ; / / p menunjuk ke alamat b [ 1 ]
20 21
co ut << ” n i l a i yang ditunjuk o le h p = ” << ∗p << endl ;
22 23
p−−; / / kembali ke alamat b [ 0 ]
24 25
co ut << ” n i l a i yang ditunjuk o le h p = ” << ∗p << endl ;
26 27
p = p + 3 ; / / p menunjuk ke alamat b [ 3 ]
28 29
co ut << ” n i l a i yang ditunjuk o le h p = ” << ∗p << endl ;
30 31
return 0 ;
32 33
}
Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi? Pelajari operasi-operasi yang dapat dilakukan untuk pointer.
21.3 Latihan 1. Baca program C++ dibawah ini.
85
Latihan
1
# includ e
2 3
using namespace std ;
4 5 6 7 8 9
v o id swap ( f l o a t ∗ , f l o a t ∗ ) ; i n t main ( ) { f l o a t a = 2.5 , b = 6.0;
10
co ut << a << ”
11
” << b << endl ;
12
swap(&a , &b ) ;
13 14
co ut << a << ”
15
” << b << endl ;
16
return 0 ;
17 18 19 20 21 22
} v o id swap ( f l o a t ∗x , f l o a t ∗y ) { float t ;
23 24 25 26 27
}
t = ∗x ; ∗x = ∗y ; ∗y = t ;
Apa 2. Buatlah program yang diberikan input tiga bilangan (x, y dan z) dan hitung nilai rata-rata bilangan-bilangan ini dengan dua √ rumus: s = (x + y + z)/3 dan p = 3 xyz. Disini input program adalah x, y dan z, dan output program adalah s dan p.
22
Lab 6: Pengenalan Character dan String 22.1 Character Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11 12 13
i n t main ( ) { char a ; char nama [ 3 0 ] ; char ilmuwan [ 30] ={ ’N ’ , ’E ’ , ’W’ , ’T ’ , ’O ’ , ’N ’ } ; char satuan [ 3 0 ] = n e w t o n ;
14
a = ’H ’ ;
15 16
co ut co ut co ut co ut
17 18 19 20
<< << << <<
” ” ” ”
nilai nilai nilai nilai
a = ” << a << endl ; nama = ” << nama << endl ; ilmuwan = ” << ilmuwan << endl ; satuan = ” << satuan << endl ;
21
return 0 ;
22 23
}
Bagaimana mendefinisikan sebuah tipe data char? Apa yang ditampilkan pada layar?
88
Lab 6: Pengenalan Character dan String
22.2 String Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e # includ e<s t r i n g >
6 7
using namespace std ;
8 9 10 11 12 13
i n t main ( ) { s t r i n g kalimatUtama ; s t r i n g kataSambung ; s t r i n g kalimatPenting ;
14
kalimatUtama = S a y a p a s t i bisa C++ ; kataSambung = karena ; kalimatPenting = C ++ mudah ; kalimatUtama += kataSambung + kalimatPenting ;
15 16 17 18 19
co ut << kalimatUtama << endl ;
20 21
return 0 ;
22 23
}
Bagaimana mendefinisikan sebuah string? dan bagaimana menggunakannya?
22.3 getline() Kita menggunakan fungsi getline() untuk mengambil input dalam satu baris. 1 2 3
# includ e # includ e<s t r i n g >
4 5
using namespace std ;
6 7 8
i n t main ( ) {
getline()
89
s t r i n g kalimat ; co ut << masukkan sebuah kalimat : <<endl ;
9 10 11
g e t l i n e ( cin , kalimat ) ;
12 13
co ut << k a l i m a t anda adalah : \ n << kalimat ;
14 15
return 0 ;
16 17
}
Jadi yang perlu diingat adalah cara pemakaian getline(cin, kalimat). Modifikasi kode ini untuk keperluan anda.
23
Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class 23.1 Struct Sebelum kita mempelajari tentang OOP, kita perlu mengenal terlebih dahulu tentang struktur data dengan menggunakan struct. Struktur data (data structure) adalah sebuah grup/gabungan elemen data menjadi satu dalam satu nama. Dengan kata lain kita mendefinisikan tipe data yang baru. Elemen data dinamakan anggota struktur. Anggota bisa bertipe apa saja dan berbeda dan ukuran berbeda. Untuk membuat struktur data kita menggunakan kata kunci atau keyword struct dengan format sebagai berikut: 1 2 3 4 5
s t r u c t namastruktur { t i p e 1 nama anggota1 ; t i p e 2 nama anggota2 ; ... } nama variabel ;
Sebagai contoh data mahasiswa berikut ini. 1 2 3 4 5 6 7 8
s t r u c t mahasiswa { s t r i n g nama ; s t r i n g nim ; long i n t umur ; float tinggi ; f l o a t be rat ; } andi ; / / d e f i n i s i mahasiswa dan d e k l a r a s i andi
92 Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class 9 10 11
/ / deklarasi variabel bella mahasiswa b e l l a ;
Contoh cara akses anggota struct dengan tanda titik dan nama anggota: Untuk lebih jelas, kita ketik kode berikut ini. 1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e # includ e<s t r i n g >
6 7
using namespace std ;
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/ / d e f i n i s i struktur mahasiswa s t r u c t mahasiswa { s t r i n g nama ; s t r i n g nim ; long i n t umur ; float tinggi ; f l o a t be rat ; }; i n t main ( ) { mahasiswa m; m. nama = A l b e r t E i n s t e i n ; m. umur = 2 5 ; m. t i n g g i = 1 7 0 . 0 ;
24
co ut <<” nama = ” << m. nama << endl ; co ut <<” umur = ” << m. umur ;
25 26 27
return 0 ;
28 29
}
Hal-hal apa saja yang diperlukan untuk membentuk struktur data?
23.2 Class Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
Inheritance
93
1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11 12 13 14 15 16 17 18 19
class Posisi { protected : double x , y ; public : v o id P o s i s i ( double , double ) ; double getx ( ) ; double gety ( ) ; }; i n t main ( ) { Posisi a , b (2 ,3) ;
20
a = Posisi (4 ,2) ; b = a; co ut << ” n i l a i komponen x d ari a = ” << a . getx ( ) << endl ; co ut << ” n i l a i komponen y d ari a = ” << a . gety ( ) << endl ;
21 22 23 24 25
return 0 ;
26 27 28 29 30 31 32 33 34 35 36 37
} double P o s i s i : : getx ( ) { return x ; } double P o s i s i : : gety ( ) { return y ; } double P o s i s i : : P o s i s i ( double a , double b ) { x = a; y = b; }
Bagaimana mendefinisikan sebuah tipe data baru dengan class? Bagaimana penggunaannya?
23.3 Inheritance Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
94 Lab 7: Pengenalan Object Oriented Programming (OOP) dengan Class
1 2 3 4
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # includ e
5 6
using namespace std ;
7 8 9 10 11 12 13 14 15 16 17 18
class Posisi { protected : double x , y ; public : v o id P o s i s i ( double , double ) ; double getx ( ) ; double gety ( ) ; }; c l a s s Lingkaran : p u b l i c P o s i s i { double r ;
19
Public : v o id Lingkaran ( double , double , double ) ; double g e t r ( ) ;
20 21 22 23 24 25 26
}; i n t main ( ) { Lingkaran g ( 2 , 3 , 1 0 ) ;
27
co ut << ” n i l a i komponen x d ari g = ” << g . getx ( ) << endl ; co ut << ” n i l a i komponen y d ari g = ” << g . gety ( ) << endl ; co ut << ” n i l a i j a r i −j a r i r d ari g = ” << g . g e t r ( ) << endl ;
28 29 30 31
return 0 ;
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
} double P o s i s i : : getx ( ) { return x ; } double P o s i s i : : gety ( ) { return y ; } double P o s i s i : : P o s i s i ( double a , double b ) { x = a; y = b; } double Lingkaran : : g e t r ( ) { return r ; }
Inheritance 49 50 51 52
95
double Lingkaran : : Lingkaran ( double a , double b , double c ) { x = a; y = b; r = c; }
Bagaimana mendefinisikan sebuah tipe data baru yang merupakan penurunan dari tipe data yang lain? dan bagaimana menggunakannya? Mengapa konsep inheritance berguna? keuntungannya apa?
24
Lab 8: Menggunakan Make
Dalam membuat program, terutama untuk program yang besar, kita perlu membagi kode program tersebut menjadi banyak fungsi-fungsi atau class-class yang selanjutnya disimpan dalam file/berkas yang berbeda. Ini dilakukan agar kode program yang kita buat bisa lebih manageable (lebih mudah diedit, dikoreksi dan dikompile). Sebagai contoh jika kita menulis sebuah buku, apakah kita menulis buku ini dalam sebuah file? Tentunya ini bisa dilakukan! Tetapi, alangkah lebih baik jika kita bagi file tersebut menjadi beberapa file sesuai dengan bab atau chapter. Jadi setiap kita bekerja kita membuka satu file yang ukurannya jauh lebih kecil dibandingkan sebuah file untuk satu buku. Begitu pula sebuah program, kita bisa lebih mudah mengerjakannya jika membagi kode program menjadi beberapa file. Untuk lebih jelas, kita bisa lihat contoh kode program dibawah ini. 1 2 3
/ / nama f i l e : f a c t o r i a l . cpp # includ e # includ e
4 5
using namespace std ;
6 7 8 9 10
/ / Deklarasi atau p ro to ty p e f ung si−f u n g s i v o id input ( long &) ; long h i t u n g f a c t o r i a l ( long ) ; v o id output ( long ) ;
11 12 13 14
i n t main ( ) { long bilangan , f a c t ;
15 16 17 18
input ( bilangan ) ; f a c t = h i t u n g f a c t o r i a l ( bilangan ) ; output ( bilangan ) ;
19 20
return 0 ;
98 21 22 23
Lab 8: Menggunakan Make
} / / D e f in isi fungsi fungsi
24 25 26 27 28 29 30 31 32 33
v o id input ( long &a ) { co ut <<”Masukkan bilangan bulat : ” <<endl ; c i n >> a ; } v o id output ( long a ) { co ut <<” F a k t o r i a l bilangan i n i adalah ” << a << endl ;
34 35 36 37 38 39
} long h i t u n g f a c t o r i a l ( long a ) { long f =1;
40
f o r ( long i = 1 ; i <=a ; i ++) { f ∗= i ; }
41 42 43 44
return f ;
45 46
}
Kode program di atas bisa secara langsung dikompile dengan 1
g++ −O f a c t o r i a l . cpp −o f a c 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 membuat program file. Seperti contoh di bawah ini. 1 2 3
g++ −c −O f a c t o r i a l . cpp g++ f a c t o r i a l . o −o f r a c t . exe
Perintah pertama kita menggunakan tambahan -c pada ++* untuk menkompile ke object atau tanpa membuat program (proses compile). File yang dihasilkan berakhiran .o (atau object file). Karena nama filenya adalah
99 factorial.cpp maka dihasilkan factorial.o. Setelah dikompile kita bisa membuat program dengan perintah kedua (disebut proses linking). Nanti akan lebih jelas mengapa ini diperlukan. Kode program di atas kita akan bagi menjadi tiga file yaitu main.cpp, factorial.cpp dan factorial.h. 1 2 3 4 5
−−−−−−−− f i l e : f a c t o r i a l . h −−−−−−−−−− / / Deklarasi atau p ro to ty p e f ung si−f u n g s i v o id input ( long &) ; long h i t u n g f a c t o r i a l ( long ) ; v o id output ( long ) ;
6 7 8 9 10 11
−−−−−−−− f i l e : main . cpp −−−−−−−−−− # includ e # includ e # i n c l u d e ” f a c t o r i a l . h”
12 13
using namespace std ;
14 15 16 17 18
i n t main ( ) { long bilangan , f a c t ;
19
input ( bilangan ) ; f a c t = h i t u n g f a c t o r i a l ( bilangan ) ; output ( bilangan ) ;
20 21 22 23
return 0 ;
24 25 26 27 28 29 30 31
} −−−−−−−− f i l e : f a c t o r i a l . cpp −−−−−−−−−− / / D e f in isi fungsi fungsi # i n c l u d e ” f a c t o r i a l . h” # includ e
32 33
using namespace std ;
34 35 36 37 38 39 40 41 42 43
v o id input ( long &a ) { co ut <<”Masukkan bilangan bulat : ” <<endl ; c i n >> a ; } v o id output ( long a ) { co ut <<” F a k t o r i a l bilangan i n i adalah ” << a << endl ;
100
Lab 8: Menggunakan Make
44 45 46 47 48 49
} long h i t u n g f a c t o r i a l ( long a ) { long f =1;
50
f o r ( long i = 1 ; i <=a ; i ++) { f ∗= i ; }
51 52 53 54
return f ;
55 56
}
Jadi di atas, file factorial.h yang juga disebut header file mengandung deklarasi/prototipe dari fungsi-fungsi atau class-class. Sedangkan factorial.cpp mengandung definisi fungsi atau class. Cara kompile dan linking secara manual sebagai berikut: 1 2 3
g++ −c −O main . cpp g++ −c −O f a c t o r i a l . cpp g++ main . o f a c t o r i a l . o −o f a c t . exe
Perintah pertama dan kedua di atas dilakukan untuk mengkompile dua file bagian kode program. Kemudian dua object file digabungkan (atau linking) menjadi sebuah program. Keuntungan dengan memecah file menjadi beberapa file adalah lebih mudah mengkompile program karena kita hanya perlu mengkompile file yang diedit saja. Object file yang lain tidak berubah jadi tidak perlu dikompile lagi. Sebagai contoh, umpamanya jika kita hanya mengedit file main.cpp maka untuk menkompile program cukup kita melakukan dua perintah diatas, mengkompile kode cpp dan menlakukan linking. 1 2
g++ −c −O main . cpp g++ main . o f a c t o r i a l . o −o f a c t . exe
Bisa dibayangkan jika kita mempunyai jumlah file yang banyak, proses kompile akan jauh lebih cepat dengan mengkompile satu atau beberapa file saja daripada semua file lagi. Jika kita mempunyai sejumlah file dengan akhiran .cpp maka kita harus menggunakan perintah kompile sebanyak jumlah file tersebut.
101 Akan menjadi sangat tidak efisien jika ini kita lakukan secara manual. Untuk hal ini program make bisa menolong kita untuk mengkompile secara atomatis. Untuk menggunkan program make kita harus membuat file dependency yang diberi nama Makefile atau makefile. File Makefile berisi cara mengkompile dan file apa saja yang diperlukan. Sebagai contoh untuk kompile program sebelumnya file Makefile yang sederhana sebagai berikut. 1 2 3 4 5 6 7 8 9 10 11
program : main . o f a c t o r i a l . o g++ main . o f a c t o r i a l . o −o f a c t . exe main . o : main . cpp g++ −c main . cpp f a c t o r i a l . o : f a c t o r i a l . cpp g++ −c f a c t o r i a l . cpp cle an : rm ∗ . o
Baris pertama di file Makefile di atas terdiri dari nama/keyword untuk sebuah project yang akan dibuat/dikerjakan. Setelah nama/keyword ini diikuti tanda : , dan diikuti dengan nama-nama file yang diperlukan dalam membuat project tersebut. Setelah baris ini diikuti dengan baris perintah atau cara mengkompile/membuat project. Setelah itu kita membuat main.o. Dan seterusnya. Dua baris terakhir digunakan untuk mendelete semua object file jika sudah tidak diperlukan lagi. Penting diingat bahwa untuk baris perintah/cara membuat dicorongkan kedalam menggunakan tombol tab. Setelah file Makefile dibuat, kita bisa menjalakan make untuk memproses Makefile dengan perintah: 1
make program
Perintah ini menunjukkan kita melakukan/memproses nama/keyword project program. Jika kita hanya memproses project pada baris pertama kita bisa langsung menggunakan make saja tanpa nama project/keyword. Jika kita ingin mendelete semua object file, kita menggunakan perintah make clean.
25
Lab 9: Pengenalan Library GSL
GSL (GNU Scientific Library) merupakan library ini sangat penting untuk pemrograman pada khususnya untuk komputasi numerik. Oleh karena itu ini sangat berguna untuk fisikawan yang memerlukan perhitungan yang menggunakan operasi-operasi dan fungsi-fungsi yang tidak ada pada library cmath. Library GSL mempunyai banyak hal yang bisa digunakan untuk memecahkan banyak permasalahan di Fisika. Sebagai contoh, hal-hal yang terkandung pada GSL library seperti berikut ini: 1. Complex Numbers 2. Roots of Polynomials 3. Special Functions 4. Vectors and Matrices 5. Permutations ,Sorting 6. Linear Algebra, Eigensystems 7. Fast Fourier Transforms Dan Banyak lagi fasilitas yang tersedia pada GSL. GSL dapat diperoleh gratis dengan mengunduh di http://www.gnu.org/software/gsl/. Library ini sudah tersedia di Cygwin. Terutama jika kita menginstal semua software yang ada pada Cygwin. Kita bisa instal GSL dengan memilih semua pada pilihan lib dan math pada saat instalasi Cygwin. Untuk mengenal bagaimana cara penggunaan GSL, perhatikan contoh berikut ini:
104
Lab 9: Pengenalan Library GSL
25.1 Contoh GSL Dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini. 1 2 3 4 5
/ ∗ t u l i s komentar tentang kode anda d i s i n i ∗ / # i n c l u d e # i n c l u d e
6 7
using namespace std ;
8 9 10 11 12 13
i n t main ( v o id ) { double x = 5 . 0 ; double y = g s l s f b e s s e l J 0 ( x ) ; co ut << y ;
14
return 0 ;
15 16
}
Apa saja yang diperlukan untuk menggunakan library GSL? Bagaimana menggunakannya?
26
Lab 10: Pengenalan Memori Ada dua jenis memori yang bisa dialokasikan sesuai dengan deklarasinya: memori statis dan dinamis. Sebagai contoh memori statis adalah dalam membuat suatu array, kita mendeklarasi dengan float s[100];. Dengan deklarasi ini, komputer mengalokasikan memori untuk menampung 100 varibel yang bertipe data float. Besarnya array s tidak bisa diubah atau statis. Jadi jika kita menggunakan metode ini kita harus menyiapkan jumlah array yang cukup. Jika kurang akan terjadi error atau kesalahan karena lokasi memori tidak ada. Sedangkan memori dinamis, besarnya memori yang dipakai dapat diubah sesuai kebutuhan. Jika kita memiliki array yang besarnya/ukurannya bisa berubah kita perlu mengunakan array dinamik. Caranya dengan menggunakan operator new dan new [].
26.1 New atau New [] Untuk menggunakan operator new, kita perlu menambahkan #include. Dan untuk alokasi memori, kita memerlukan sebuah pointer dan dengan cara pointer = new tipe[jumlahnya];. Setelah selesai menggunakan memori atau jika kita tidak memerlukan lagi alokasi memori, kita perlu mendelete array itu agar memori bisa digunakan untuk hal yang lain. Maka pada akhir program biasanya ada operator delete. Cara penggunaan delete adalah 1 2
d e l e t e p o i n t e r ; / / untuk satu elemen d e l e t e [ ] p o i n t e r ; / / untuk array
Untuk mempelajari penggunaanya, dengan menggunakan notepad atau notepad++ atau nedit ketik beberapa baris kode c++ berikut ini.
106
1 2
Lab 10: Pengenalan Memori
# includ e # includ e<s t r i n g >
3 4
using namespace std ;
5 6 7 8 9 10
i n t main ( ) { int n ; f l o a t ∗a ; / / p o i n t e r untuk a l o k a s i memory co ut << b e r a p a jumlah array ? ; c i n >> n ;
11 12 13
a = new f l o a t [ n ] ; a [9] = 3;
14 15 16
delete [ ] a ; return 0 ;
17 18 19
}
Jelaskan apa saja yang diperlukan untuk membuat array dinamis?