buku-lab-c

download buku-lab-c

of 62

Transcript of buku-lab-c

  • Buku Panduan

    Laboratorium Pemrograman C

    I Wayan Sudiarta, Ph.D

    10 Februari 2012

  • ii

  • Daftar Isi

    1 Lab 0: Cara Menggunakan Cygwin dan Compile Code C++dengan g++ 1

    1.1 Cygwin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    2 Lab 1: Pengenalan Bahasa C 3

    2.1 Penulisan Kode C . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.2 Modifikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.3 Lab 2: Pengenalan Variabel dan Operasi Matematis . . . . . . 5

    2.3.1 Deklarasi Variabel . . . . . . . . . . . . . . . . . . . . 5

    2.3.2 Kesalahan Penulisan Variabel . . . . . . . . . . . . . . 5

    2.3.3 Tipe Data Variabel . . . . . . . . . . . . . . . . . . . . 6

    2.3.4 Scanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3 Lab 3: Pengenalan define dan math.h 9

    3.1 Define dan const . . . . . . . . . . . . . . . . . . . . . . . . . 9

    3.2 math.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    4 Lab 4: Pengenalan for, while dan do while 11

    4.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    4.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    4.3 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5 Lab 5: Pengenalan if, else dan switch 15

    5.1 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5.2 if else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    5.3 if else berantai . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    5.4 ()?:: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5.5 switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

  • iv Daftar Isi

    6 Lab 6: Pengenalan Fungsi dan Array 196.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . . . . 20

    7 Lab 7: Pengenalan Pointer 217.1 Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217.2 Pengenalan Operasi Pada Pointer . . . . . . . . . . . . . . . . 227.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    8 Lab 1: Pengenalan Bahasa C++ 258.1 Penulisan Kode C++ . . . . . . . . . . . . . . . . . . . . . . . 258.2 Modifikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    9 Lab 2: Pengenalan Variabel dan Operasi Matematis 279.1 Deklarasi Variabel . . . . . . . . . . . . . . . . . . . . . . . . 279.2 Kesalahan Penulisan Variabel . . . . . . . . . . . . . . . . . . 289.3 Tipe Data Variable . . . . . . . . . . . . . . . . . . . . . . . . 28

    10 Lab 3: Pengenalan Define dan cmath 2910.1 Define dan const . . . . . . . . . . . . . . . . . . . . . . . . . 2910.2 cmath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3010.3 Latihan-latihan . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    11 Lab 4: Pengenalan Fungsi dan Array 3111.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.2 Pengenalan Array . . . . . . . . . . . . . . . . . . . . . . . . . 32

    12 Lab 5: Pengenalan Pointer 3312.1 Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3312.2 Pengenalan Operasi Pada Pointer . . . . . . . . . . . . . . . . 3412.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    13 Lab 6: Pengenalan Character dan String 3713.1 Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3713.2 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3813.3 getline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    14 Lab 7: Pengenalan Object Oriented Programming (OOP)dengan Class 4114.1 Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4114.2 Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4214.3 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

  • Daftar Isi v

    15 Lab 8: Menggunakan Make 47

    16 Lab 9: Pengenalan Library GSL 5316.1 Contoh GSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    17 Lab 10: Pengenalan Memori 5517.1 New atau New [] . . . . . . . . . . . . . . . . . . . . . . . . . 55

  • vi Daftar Isi

  • Bab 1

    Lab 0: Cara MenggunakanCygwin dan Compile CodeC++ dengan g++

    1.1 Cygwin

    Setelah cygwin diinstall, sekarang kita bisa menjalankan cygwin terminal/shell.Shell ini sama fungsinya dengan shell yang ada di Unix atau Linux. Cygwinshell bisa di jalankan dengan mengklik shortcut yang ada di start menu ataudi Desktop, seperti pada gambar berikut ini.

    Setelah itu akan ditampilkan Cygwin shell seperti contoh di bawah ini.Shell ini hampir sama dengan shell yang ada di linux. Hampir semua perintah-perintah yang ada di linux bisa dilakukan di cygwin. Jadi kita bisa belajarperintah-perintah yang ada di Linux dengan menggunakan Cygwin. Seperticontoh perintah-perintah yang ada di dalam gambar di bawah ini.

    Dengan cygwin shell ini, kita tidak bisa menjalankan program-programyang memerlukan X-Windows. Untuk mendapatkan shell dan fasilitas X-Windows, kita bisa menjalan kan X-Windows dengan mengetik startxwin.shdi cygwin shell, seperti pada gambar dibawah ini. Kemudian muncul shelldan X-Windows telah dijalankan.

    Setelah itu kita bisa menjalankan program-program yang memerlukan X-Windows. Contohnya sebuah editor yang bagus bernama nedit. Kita bisajalankan nedit dengan ketik nedit di shell seperti gambar diatas. Kemudianmuncul program nedit. Kita bisa membuat program C++ dengan menggu-nakan nedit.

    Setelah source code C++ (sebagai contoh disini hello.cpp) diketik denganmenggunakan nedit atau texmaker atau wordpad atau notepad, kita bisa

  • 2 Lab 0: Cara Menggunakan Cygwin dan Compile Code C++ dengan g++

    kompile dengan g++ di cygwin shell seperti pada gambar. Tentunya kitaharus ke direktori dimana source code itu berada.

    Keterangan untuk gambar diatas: 1. Kita kompile source code C++ dariprogram hello (hello.cpp) dengan menggunakan g++ dan outputnya (inidilakukan dengan -o) adalah hello.exe. 2. Kemudian hello.exe dijalankan.Hasil program hello.exe adalah Hello World!. 3. Kita bisa mengarahkan out-put dari hello.exe ke sebuah file bernama results.txt dengan menggunakan >.4. Kita bisa membaca isi dari file results.txt dengan menggunakan perintahcat.

  • Bab 2

    Lab 1: Pengenalan Bahasa C

    Pada Lab 1 ini kita akan mempelajari tentang bahasa C yang sederhanaterutama tentang bagaimana mengkompilasi dan menjalankan program yangkita buat. Untuk lebih mengerti proses yang akan dilakukan dalam bahasaC, mari kita lakukan hal-hal dibawah ini.

    2.1 Penulisan Kode C

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 p r i n t f ( He l lo C++ \n ) ;9 p r i n t f ( Saya b i s a membuat program dengan C ) ;

    10

    11 r e turn 0 ;12 }

    Setelah selesai mengetik kode di atas, kemudian simpan kode tersebut kefile dengan nama dan ekstensi .c. Sebagai contoh kita beri nama helo.c.

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

    Kemudian kita kompilasi kode tersebut dengan salah satu perintah berikutini:

  • 4 Lab 1: Pengenalan Bahasa C

    $ gcc namafile.c

    $ gcc namafile.c -o namafile.exe

    Ingat tanda $ tidak diketik melainkan hanya menunjukkan baris perintahyang ada pada cygwin atau command prompt.

    2.2 Modifikasi

    Langkah selanjutnya adalah mengubah program sederhana di atas, denganmenambahkan beberapa baris perintah. Cobalah tambahkan baris ini satuper satu dan lihat apa yang dihasilkan dilayar setelah program kompilasi dandieksekusi.

    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 5

    2.3 Lab 2: Pengenalan Variabel dan Operasi

    Matematis

    2.3.1 Deklarasi Variabel

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

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

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

    14 a = b + c ;15

    16 p r i n t f ( n i l a i a = %d \n , a ) ;17

    18 r e turn 0 ;19 }

    Berapakah nilai a, b dan c?

    2.3.2 Kesalahan Penulisan Variabel

    Tambahkan kode berikut ini pada kode di atas dan catat apa kesalahan yangmuncul pada waktu kita kompilasi kode.

    1

    2 i n t 2 ape l ;3 long banyak ! ;4 double des imal ;5 double de s i ma l ;6 double DESI mal ;

  • 6 Lab 1: Pengenalan Bahasa C

    2.3.3 Tipe Data Variabel

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 i n t a = 2 , b = 3 , c , d ;9 f l o a t p = 2 , q = 3 , r ;

    10

    11 c = a/b ;12 r = p/q ;13 a = i + j ;14 b = i %4;15

    16 p r i n t f ( Bar i s 1 : n i l a i c = %d \n , c ) ;17 p r i n t f ( Bar i s 2 : n i l a i r = %d \n , r ) ;18 p r i n t f ( Bar i s 3 : n i l a i r = %f \n , r ) ;19 p r i n t f ( Bar i s 4 : n i l a i b = %d , b) ;20

    21 r e turn 0 ;22 }

    Berapakah nilai c (Baris 1) dan r (Baris 2 dan 3)? Apa yang ditampilkanpada layar ketika kita kompilasi? dan ketika program dieksekusi? Mengapanilai c tidak sama dengan r? Mengapa keluaran Baris 2 tidak sama denganBaris 3?

    2.3.4 Scanf

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini dan perhatikan baris scanf.

    1

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

    4 #inc lude5

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

  • Lab 2: Pengenalan Variabel dan Operasi Matematis 7

    10 p r i n t f ( Masukkan n i l a i x :\n ) ;11 s can f ( %f ,&x ) ;12

    13 p r i n t f ( N i l a i yang Anda masukkan adalah %f \n , x ) ;14

    15 p r i n t f ( Masukkan dua n i l a i x dan y :\n ) ;16 s can f ( %f %f ,&x , &y ) ;17

    18 p r i n t f ( N i l a i yang Anda masukkan adalah %f dan %f \n , x , y ) ;19 p r i n t f ( Perka l ian antara x dan y menghasilkan %f \n , xy ) ;20

    21 r e turn 0 ;22 }

    Perhatikan baris yang mengadung fungsi scanf. Mengapa kita menggu-nakan simbol &? Apa yang terjadi jika tanda format %f diganti dengan %dpada fungsi scanf? Mengapa hasil yang dilihat pada layar berbeda denganapa yang dimasukkan?

  • 8 Lab 1: Pengenalan Bahasa C

  • Bab 3

    Lab 3: Pengenalan define danmath.h

    3.1 Define dan const

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 #de f i n e p i1 3 .141597

    8 i n t main ( )9 {

    10 const f l o a t p i2 = 3 .14159 ;11

    12 p r i n t f ( n i l a i p i1 = %f \n , p i1 ) ;13 p r i n t f ( n i l a i p i2 = %f \n , p i2 ) ;14

    15 r e turn 0 ;16 }

    Apa perbedaan pi1 dan pi2?

  • 10 Lab 3: Pengenalan define dan math.h

    3.2 math.h

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5 #inc lude6

    7 #de f i n e p i 3 .141598

    9 us ing namespace s td ;10

    11 i n t main ( )12 {13 f l o a t sudut = 38 ; // dalam de r a j a t14

    15 p r i n t f ( s i n (% f ) = %f \n , s i n ( p i sudut /180 .0 ) ) ;16 p r i n t f ( cos(% f ) = %f \n , cos ( p i sudut /180 .0 ) ) ;17

    18 r e turn 0 ;19 }

    Berapa nilai sin(38) dan cos(38)?Tambahkan fungsi-fungsi matematis lainnya.

    3.3 Latihan-latihan

    1. Buatlah program untuk mengkonversi sebuah nilai temperature dalamderajat Celcius (TC) ke derajat Fahrenheit (TF ). Gunakan rumus

    TF =9

    5TC + 32 (3.1)

    . Disini input program adalah TC dan output program adalah TF .

    2. Buatlah program yang diberikan input tiga bilangan (x, y dan z) danhitung 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.

  • Bab 4

    Lab 4: Pengenalan for, whiledan do while

    4.1 for

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 i n t i ;9 i n t s ;

    10

    11 f o r ( i =1; i

  • 12 Lab 4: Pengenalan for, while dan do while

    Apa yang ditampilkan pada layar? berapakah nilai s? Mengapa nilai sdemikian? Jika menggunakan rumus deret aritmatika atau dengan kalkula-tor, hitunglah nilai s. Bandingkan hasilnya.

    4.2 while

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5 #inc lude6

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

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

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

    17 i =1;18 p r i n t f ( NO X SIN(X) \n ) ;19 whi le ( i

  • do-while 13

    4.3 do-while

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5 #inc lude6

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

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

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

    17 i =1;18 p r i n t f ( NO X SIN(X) \n ) ;19 do{20 x = i dx ;21 c = cos (x ) ;22 p r i n t f ( %d %f %f \n , i , x , c ) ;23

    24 i++;25 }whi le ( i

  • 14 Lab 4: Pengenalan for, while dan do while

  • Bab 5

    Lab 5: Pengenalan if, else danswitch

    5.1 if

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

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

    10 p r i n t f ( Masukkan n i l a i x :\n ) ;11 s can f ( %f ,&x ) ;12

    13 i f (x5.0){16 p r i n t f ( Angka l eb i h besar da r i 5 . 0 \n ) ;17 }18

    19 r e turn 0 ;20 }

    Apa yang ditampilkan pada layar? Apa perbedaan dua fungsi if di atas?

  • 16 Lab 5: Pengenalan if, else dan switch

    5.2 if else

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

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

    10 p r i n t f ( Masukkan n i l a i x :\n ) ;11 s can f ( %f ,&x) ;12

    13 i f (x

  • ()?:: 17

    15 e l s e i f (x

  • 18 Lab 5: Pengenalan if, else dan switch

    5.5 switch

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 i n t a ;9

    10 p r i n t f ( Masukkan bi langan bulat antara 1 sampai 10 :\n ) ;11 s can f ( %d ,&a ) ;12

    13 switch ( a ) {14 case 1 :15 p r i n t f ( P i l i han Satu\n ) ;16 break ;17 case 2 :18 p r i n t f ( P i l i han Dua\n ) ;19 break ;20 case 3 :21 p r i n t f ( P i l i han Tiga\n ) ;22 break ;23 case 4 :24 p r i n t f ( P i l i han Empat\n ) ;25 break ;26 de f au l t :27 p r i n t f ( P i l i han Lainl a i n \n) ;28 }29

    30 r e turn 0 ;31 }

    Apa yang ditampilkan pada layar? Perhatikan penggunaan switch.

  • Bab 6

    Lab 6: Pengenalan Fungsi danArray

    6.1 Fungsi

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    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 i n t main ( )11 {12 i n t a = 3 , b = 5 , c ;13

    14 c = jumlah (a , b ) ;15

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

    20 r e turn 0 ;21 }22

    23 i n t jumlah ( i n t a , i n t b )24 {25 r e turn ( a+b) ;26 }

  • 20 Lab 6: Pengenalan Fungsi dan Array

    27

    28 i n t bagidua ( i n t a )29 {30 r e turn ( a /2) ;31 }

    Jelaskan apa saja yang diperlukan untuk mendefinisikan sebuah fungsi?dan apa kegunaan fungsi jumlah dan bagidua?

    6.2 Pengenalan Array

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 f l o a t a [ 1 0 ] ;9 double b [ 3 ] [ 4 ] ;

    10

    11 a [ 0 ] = 7 ;12 a [ 1 ] = 10 ;13 a [ 1 1 ] = 1 ;14 b [ 2 ] [ 3 ] = 1002 ;15

    16 p r i n t f ( a [ 0 ] = %f \n , a [ 0 ] ) ;17 p r i n t f ( a [ 1 ] = %f \n , a [ 1 ] ) ;18 p r i n t f ( a [ 4 ] = %f \n , a [ 4 ] ) ;19 p r i n t f ( b [ 2 ] [ 3 ] = %f \n ,b [ 2 ] [ 3 ] ) ;20

    21 r e turn 0 ;22 }

    Apa kesalahan kode di atas? apa yang tampil di layar ketika kita kompi-lasi kode ini? dan perbaiki kode ini sehingga dapat dikompilasi. Apa yangditampilkan pada layar setelah kita dapat mengkompilasi.

  • Bab 7

    Lab 7: Pengenalan Pointer

    7.1 Pointer

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 f l o a t a ; // va r i a b e l t i p e f l o a t9 f l o a t p ; // sebuah po in te r t i p e f l o a t

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

    13 p r i n t f ( %f \n , a ) ;14

    15 p = 4 . 2 ; // k i t a ubah n i l a i v a r i a b e l a16

    17 p r i n t f ( %f \n , a ) ;18

    19 r e turn 0 ;20 }

    Dengan menggunakan kode ini jelaskan apa saja yang diperlukan untukmendefinisikan sebuah pointer? dan bagaimana mengunakan pointer?

  • 22 Lab 7: Pengenalan Pointer

    7.2 Pengenalan Operasi Pada Pointer

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 i n t main ( )7 {8 i n t p , b [ 5 ] ;9 b [ 1 ] = 1 ;

    10 b [ 2 ] = 2 ;11 b [ 3 ] = 3 ;12 b [ 4 ] = 4 ;13

    14 p = b ; // p menunjuk ke alamat b [ 0 ]15

    16 p r i n t f ( n i l a i yang di tunjuk o leh p = %d\n ,p) ;17

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

    20 p r i n t f ( n i l a i yang di tunjuk o leh p = %d\n ,p) ;21

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

    24 p r i n t f ( n i l a i yang di tunjuk o leh p = %d\n ,p) ;25

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

    28 p r i n t f ( n i l a i yang di tunjuk o leh p = %d\n ,p) ;29

    30 r e turn 0 ;31 }

    Apa yang ditampilkan pada layar setelah kita dapat mengkompilasi?Pelajari operasi-operasi yang dapat dilakukan untuk pointer.

    7.3 Latihan

    1. Baca program C++ dibawah ini.

    1 #inc lude2

  • Latihan 23

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

    5 i n t main ( )6 {7 f l o a t a = 2 . 5 , b = 6 . 0 ;8

    9 p r i n t f ( %f %f \n , a , b ) ;10

    11 swap(&a , &b) ;12

    13 p r i n t f ( %f %f \n , a , b ) ;14

    15 r e turn 0 ;16 }17

    18 void swap( f l o a t x , f l o a t y)19 {20 f l o a t t ;21

    22 t = x ;23 x = y ;24 y = t ;25 }

    Apa yang dilakukan oleh fungsi swap?

    2. Buatlah program yang diberikan input tiga bilangan (x, y dan z) danhitung 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.

  • 24 Lab 7: Pengenalan Pointer

  • Bab 8

    Lab 1: Pengenalan BahasaC++

    Pada Lab 1 ini kita akan mempelajari tentang bahasa C++ yang sederhanadan bagaimana mengkompilasi dan menjalankan program yang kita buat.Untuk lebih mengerti proses yang akan dilakukan dalam bahasa C++, marikita lakukan hal-hal dibawah ini.

    8.1 Penulisan Kode C++

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t main ( )9 {

    10 cout

  • 26 Lab 1: Pengenalan Bahasa C++

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

    Kemudian kita kompilasi kode tersebut dengan salah satu perintah berikutini:

    1

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

    Ingat tanda $ tidak diketik melainkan hanya menunjukkan baris perintahpada cygwin atau command prompt.

    8.2 Modifikasi

    Langkah selanjutnya adalah mengubah program sederhana di atas, denganmenambahkan beberapa baris perintah. Cobalah tambahkan baris ini satuper satu dan lihat apa yang dihasilkan dilayar setelah program dieksekusi.

    1

    2 cout

  • Bab 9

    Lab 2: Pengenalan Variabeldan Operasi Matematis

    9.1 Deklarasi Variabel

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t main ( )9 {

    10 i n t a , b = 3 , c (2 ) ;11

    12 cout

  • 28 Lab 2: Pengenalan Variabel dan Operasi Matematis

    9.2 Kesalahan Penulisan Variabel

    Tambahkan kode berikut ini dan catat apa kesalahan yang muncul padawaktu kita kompilasi kode.

    1

    2 i n t 2 ape l ;3 long banyak ! ;4 double des imal ;5 double de s i ma l ;6 double DESI mal ;

    9.3 Tipe Data Variable

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t main ( )9 {

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

    13 c = 2/3 ;14 k = i / j ;15 cout

  • Bab 10

    Lab 3: Pengenalan Define dancmath

    10.1 Define dan const

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 #de f i n e p i1 3 .141597

    8 us ing namespace s td ;9

    10 i n t main ( )11 {12 const f l o a t p i2 = 3 .14159 ;13

    14 cout

  • 30 Lab 3: Pengenalan Define dan cmath

    10.2 cmath

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5 #inc lude6

    7 #de f i n e p i 3 .141598

    9 us ing namespace s td ;10

    11 i n t main ( )12 {13 f l o a t sudut = 38 ; // dalam de r a j a t14

    15 cout

  • Bab 11

    Lab 4: Pengenalan Fungsi danArray

    11.1 Fungsi

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t jumlah ( i n t a , i n t b ) ;9

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

    14 c = jumlah (a , b ) ;15

    16 cout

  • 32 Lab 4: Pengenalan Fungsi dan Array

    Jelaskan apa saja yang diperlukan untuk mendefinisikan sebuah fungsi?dan apa kegunaan fungsi jumlah?

    11.2 Pengenalan Array

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5 us ing namespace s td ;6

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

    10 double b [ 3 ] [ 4 ] ;11

    12 a [ 0 ] = 7 ;13 a [ 1 ] = 10 ;14 a [ 1 1 ] = 1 ;15 b [ 2 ] [ 3 ] = 1002 ;16

    17 cout

  • Bab 12

    Lab 5: Pengenalan Pointer

    12.1 Pointer

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t main ( )9 {

    10 f l o a t a ; // va r i a b e l t i p e f l o a t11 f l o a t p ; // sebuah po in te r t i p e f l o a t12 a = 2 . 3 ;13 p = &a ; // va r i a b e l p b e r i s i alamat va r i a b e l a14

    15 cout

  • 34 Lab 5: Pengenalan Pointer

    12.2 Pengenalan Operasi Pada Pointer

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t main ( )9 {

    10 i n t p , b [ 5 ] ;11 b [ 1 ] = 1 ;12 b [ 2 ] = 2 ;13 b [ 3 ] = 3 ;14 b [ 4 ] = 4 ;15

    16 p = b ; // p menunjuk ke alamat b [ 0 ]17

    18 cout

  • Latihan 35

    1 #inc lude2

    3 us ing namespace s td ;4

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

    7 i n t main ( )8 {9 f l o a t a = 2 . 5 , b = 6 . 0 ;

    10

    11 cout

  • 36 Lab 5: Pengenalan Pointer

  • Bab 13

    Lab 6: Pengenalan Characterdan String

    13.1 Character

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 i n t main ( )9 {

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

    15 a = H ;16

    17 cout

  • 38 Lab 6: Pengenalan Character dan String

    Bagaimana mendefinisikan sebuah tipe data char? Apa yang ditampilkanpada layar?

    13.2 String

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude5 #inc lude6

    7 us ing namespace s td ;8

    9 i n t main ( )10 {11 s t r i n g kalimatUtama ;12 s t r i n g kataSambung ;13 s t r i n g kal imatPenting ;14

    15 kalimatUtama = Say a pa s t i b i s a C++ ;16 kataSambung = karena ;17 kal imatPenting = C++ mudah ;18 kalimatUtama += kataSambung + kal imatPenting ;19

    20 cout

  • getline() 39

    7 i n t main ( )8 {9 s t r i n g kal imat ;

    10 cout

  • 40 Lab 6: Pengenalan Character dan String

  • Bab 14

    Lab 7: Pengenalan ObjectOriented Programming (OOP)dengan Class

    14.1 Struct

    Sebelum kita mempelajari tentang OOP, kita perlu mengenal terlebih dahulutentang struktur data dengan menggunakan struct.

    Struktur data (data structure) adalah sebuah grup/gabungan elemen da-ta menjadi satu dalam satu nama. Dengan kata lain kita mendefinisikan tipedata yang baru. Elemen data dinamakan anggota struktur. Anggota bisabertipe apa saja dan berbeda dan ukuran berbeda.

    Untuk membuat struktur data kita menggunakan kata kunci atau key-word struct dengan format sebagai berikut:

    1 s t r u c t namastruktur{2 t i p e 1 nama anggota1 ;3 t i p e 2 nama anggota2 ;4 . . .5 } nama var iabel ;

    Sebagai contoh data mahasiswa berikut ini.

    1

    2 s t r u c t mahasiswa {3 s t r i n g nama ;4 s t r i n g nim ;5 long i n t umur ;6 f l o a t t i n g g i ;7 f l o a t berat ;

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

    8 } andi ; // d e f i n i s i mahasiswa dan d e k l a r a s i andi9

    10 // d e k l a r a s i v a r i a b e l b e l l a11 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 / t u l i s komentar tentang kode anda d i s i n i /3

    4 #inc lude5 #inc lude6

    7 us ing namespace s td ;8

    9 // d e f i n i s i s t ruk tur mahasiswa10 s t r u c t mahasiswa {11 s t r i n g nama ;12 s t r i n g nim ;13 long i n t umur ;14 f l o a t t i n g g i ;15 f l o a t berat ;16 } ;17

    18 i n t main ( )19 {20 mahasiswa m;21 m. nama = A l b e r t E i n s t e i n ;22 m. umur = 25 ;23 m. t i n g g i = 170 . 0 ;24

    25 cout

  • Inheritance 43

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 c l a s s P o s i s i {9 pro te c t ed :

    10 double x , y ;11 pub l i c :12 void P o s i s i ( double , double ) ;13 double getx ( ) ;14 double gety ( ) ;15 } ;16

    17 i n t main ( )18 {19 Po s i s i a , b (2 , 3 ) ;20

    21 a = Po s i s i ( 4 , 2 ) ;22 b = a ;23 cout

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

    1

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

    4 #inc lude5

    6 us ing namespace s td ;7

    8 c l a s s P o s i s i {9 pro te c t ed :

    10 double x , y ;11 pub l i c :12 void P o s i s i ( double , double ) ;13 double getx ( ) ;14 double gety ( ) ;15 } ;16

    17 c l a s s Lingkaran : pub l i c P o s i s i {18 double r ;19

    20 Publ i c :21 void Lingkaran ( double , double , double ) ;22 double g e t r ( ) ;23 } ;24 i n t main ( )25 {26 Lingkaran g (2 , 3 , 10 ) ;27

    28 cout

  • Inheritance 45

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

    Bagaimana mendefinisikan sebuah tipe data baru yang merupakan penu-runan dari tipe data yang lain? dan bagaimana menggunakannya? Mengapakonsep inheritance berguna? keuntungannya apa?

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

  • Bab 15

    Lab 8: Menggunakan Make

    Dalam membuat program, terutama untuk program yang besar, kita perlumembagi kode program tersebut menjadi banyak fungsi-fungsi atau class-class yang selanjutnya disimpan dalam file/berkas yang berbeda. Ini di-lakukan agar kode program yang kita buat bisa lebih manageable (lebihmudah diedit, dikoreksi dan dikompile). Sebagai contoh jika kita menulissebuah buku, apakah kita menulis buku ini dalam sebuah file? Tentunya inibisa dilakukan! Tetapi, alangkah lebih baik jika kita bagi file tersebut men-jadi beberapa file sesuai dengan bab atau chapter. Jadi setiap kita bekerjakita membuka satu file yang ukurannya jauh lebih kecil dibandingkan sebuahfile untuk satu buku. Begitu pula sebuah program, kita bisa lebih mudahmengerjakannya jika membagi kode program menjadi beberapa file.

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

    Contoh 15.1. (Kode Program dalam satu berkas/file)

    1 // nama f i l e : f a c t o r i a l . cpp2 #inc lude3 #inc lude4

    5 us ing namespace s t d ;6

    7 // Dek l a r a s i atau p ro t o t ype fungs if u n g s i8 vo id inpu t ( l ong &) ;9 l ong h i t u n g f a c t o r i a l ( l ong ) ;

    10 vo id ou tpu t ( l ong ) ;11

    12 i n t main ( )13 {14 l ong b i l angan , f a c t ;15

    16 inpu t ( b i l an gan ) ;17 f a c t = h i t u n g f a c t o r i a l ( b i l an gan ) ;

  • 48 Lab 8: Menggunakan Make

    18 ou tpu t ( b i l an gan ) ;19

    20 r e tu rn 0 ;21 }22

    23 // D e f i n i s i f u n g s i f u n g s i24

    25 vo id inpu t ( l ong &a )26 {27 cou t

  • 49

    Perintah pertama kita menggunakan tambahan -c pada ++* untuk menkompileke object atau tanpa membuat program (proses compile). File yang di-hasilkan berakhiran .o (atau object file). Karena nama filenya adalah factorial.cppmaka dihasilkan factorial.o. Setelah dikompile kita bisa membuat pro-gram dengan perintah kedua (disebut proses linking). Nanti akan lebih jelasmengapa ini diperlukan.

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

    Contoh 15.2. (Kode Program dibagi menjadi tiga berkas/file)

    1 f i l e : f a c t o r i a l . h 2 // Dek l a r a s i atau p ro t o t ype fungs if u n g s i3 vo id inpu t ( l ong &) ;4 l ong h i t u n g f a c t o r i a l ( l ong ) ;5 vo id ou tpu t ( l ong ) ;6

    7

    8 f i l e : main . cpp 9 #inc lude

    10 #inc lude11 #inc l u de f a c t o r i a l . h12

    13 us ing namespace s t d ;14

    15

    16 i n t main ( )17 {18 l ong b i l angan , f a c t ;19

    20 inpu t ( b i l an gan ) ;21 f a c t = h i t u n g f a c t o r i a l ( b i l an gan ) ;22 ou tpu t ( b i l an gan ) ;23

    24 r e tu rn 0 ;25 }26

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

    29 // D e f i n i s i f u n g s i f u n g s i30 #inc l u de f a c t o r i a l . h31 #inc lude32

    33 us ing namespace s t d ;34

    35 vo id inpu t ( l ong &a )36 {37 cou t

  • 50 Lab 8: Menggunakan Make

    38 c in >> a ;39 }40

    41 vo id ou tpu t ( l ong a )42 {43 cou t

  • 51

    Bisa dibayangkan jika kita mempunyai jumlah file yang banyak, proseskompile akan jauh lebih cepat dengan mengkompile satu atau beberapa filesaja daripada semua file lagi.

    Jika kita mempunyai sejumlah file dengan akhiran .cpp maka kita harusmenggunakan perintah kompile sebanyak jumlah file tersebut. Akan men-jadi sangat tidak efisien jika ini kita lakukan secara manual. Untuk hal iniprogram make bisa menolong kita untuk mengkompile secara atomatis.

    Untuk menggunkan program make kita harus membuat file dependencyyang 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 seder-hana sebagai berikut.

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

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

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

    10 c l ean :11 rm . o

    Baris pertama di file Makefile di atas terdiri dari nama/keyword untuksebuah project yang akan dibuat/dikerjakan. Setelah nama/keyword ini di-ikuti tanda : , dan diikuti dengan nama-nama file yang diperlukan dalammembuat project tersebut. Setelah baris ini diikuti dengan baris perintahatau cara mengkompile/membuat project. Setelah itu kita membuat main.o.Dan seterusnya. Dua baris terakhir digunakan untuk mendelete semua ob-ject file jika sudah tidak diperlukan lagi. Penting diingat bahwa untuk barisperintah/cara membuat dicorongkan kedalam menggunakan tombol tab.

    Setelah file Makefile dibuat, kita bisa menjalakan make untuk mempros-es Makefile dengan perintah:

    1 make program

    Perintah ini menunjukkan kita melakukan/memproses nama/keyword projectprogram.

    Jika kita hanya memproses project pada baris pertama kita bisa langsungmenggunakan make saja tanpa nama project/keyword.

  • 52 Lab 8: Menggunakan Make

    Jika kita ingin mendelete semua object file, kita menggunakan perintahmake clean.

  • Bab 16

    Lab 9: Pengenalan Library GSL

    GSL (GNU Scientific Library) merupakan library ini sangat penting untukpemrograman pada khususnya untuk komputasi numerik. Oleh karena itu inisangat berguna untuk fisikawan yang memerlukan perhitungan yang menggu-nakan operasi-operasi dan fungsi-fungsi yang tidak ada pada library cmath.Library GSL mempunyai banyak hal yang bisa digunakan untuk memecahkanbanyak permasalahan di Fisika.

    Sebagai contoh, hal-hal yang terkandung pada GSL library seperti berikutini:

    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 memilihsemua pada pilihan lib dan math pada saat instalasi Cygwin.

    Untuk mengenal bagaimana cara penggunaan GSL, perhatikan contohberikut ini:

  • 54 Lab 9: Pengenalan Library GSL

    16.1 Contoh GSL

    Dengan menggunakan notepad atau notepad++ atau nedit ketik beber-apa baris kode c++ berikut ini.

    1

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

    4 #inc lude 5 #inc lude 6

    7 us ing namespace s td ;8

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

  • Bab 17

    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, kitamendeklarasi dengan float s[100];. Dengan deklarasi ini, komputer men-galokasikan memori untuk menampung 100 varibel yang bertipe data float.Besarnya array s tidak bisa diubah atau statis. Jadi jika kita menggunakanmetode ini kita harus menyiapkan jumlah array yang cukup. Jika kurangakan terjadi error atau kesalahan karena lokasi memori tidak ada.

    Sedangkan memori dinamis, besarnya memori yang dipakai dapat diubahsesuai kebutuhan. Jika kita memiliki array yang besarnya/ukurannya bisaberubah kita perlu mengunakan array dinamik. Caranya dengan menggu-nakan operator new dan new [].

    17.1 New atau New []

    Untuk menggunakan operator new, kita perlu menambahkan #include.Dan untuk alokasi memori, kita memerlukan sebuah pointer dan dengan carapointer = new tipe[jumlahnya];. Setelah selesai menggunakan memoriatau jika kita tidak memerlukan lagi alokasi memori, kita perlu mendeletearray itu agar memori bisa digunakan untuk hal yang lain. Maka pada akhirprogram biasanya ada operator delete. Cara penggunaan delete adalah

    1 de l e t e po in te r ; // untuk satu elemen2 de l e t e [ ] po in te r ; // untuk ar ray

    Untuk mempelajari penggunaanya, dengan menggunakan notepad ataunotepad++ atau nedit ketik beberapa baris kode c++ berikut ini.

  • 56 Lab 10: Pengenalan Memori

    1 #inc lude2 #inc lude3

    4 us ing namespace s td ;5

    6 i n t main ( )7 {8 i n t n ;9 f l o a t a ; // po in te r untuk a l o k a s i memory

    10

    11 cout > n ;13

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

    17 de l e t e [ ] a ;18 r e turn 0 ;19 }

    Jelaskan apa saja yang diperlukan untuk membuat array dinamis?