15.07.2013 Views

“bukuAjar” — 2011/9/22 — 13:39 — page i — #1 - cs.unsyiah.ac.id ...

“bukuAjar” — 2011/9/22 — 13:39 — page i — #1 - cs.unsyiah.ac.id ...

“bukuAjar” — 2011/9/22 — 13:39 — page i — #1 - cs.unsyiah.ac.id ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> i <strong>—</strong> <strong>#1</strong><br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> ii <strong>—</strong> #2<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> iii <strong>—</strong> #3<br />

Pemrograman<br />

Menggunakan<br />

Bahasa C<br />

Taufik Fuadi Ab<strong>id</strong>in<br />

Irvanizam Zamanhuri<br />

Program Studi Informatika<br />

Fakultas Matematika dan Ilmu Pengetahuan Alam<br />

Universitas Syiah Kuala<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> iv <strong>—</strong> #4<br />

The work in this project was partially supported by Program Studi Informatika<br />

Fakultas Matematika dan Ilmu Pengetahuan Alam<br />

Universitas Syiah Kuala<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> v <strong>—</strong> #5<br />

Kata Pengantar<br />

Syukur Alhamdulillah penulis panjatkan ke hadirat Allah SWT yang<br />

telah melimpahkan rahmat-Nya sehingga penulis dapat menyelesaikan<br />

penulisan Buku Ajar yang berjudul "Pemrograman Menggunakan<br />

Bahasa C". Selawat dan salam penulis sanjungkan kepada<br />

Nabi Besar Muhammad SAW, keluarga dan sahabat beliau.<br />

Buku Ajar ini sangat bagus digunakan untuk mengajarkan Matakuliah<br />

Pemrograman bagi mahasiswa-mahasiswa baik Strata Satu (S1)<br />

Informatika atau Matematika maupun Diploma Tiga (D3) Manajemen<br />

Informatika. Di dalam buku ini disajikan tentang konsep-konsep<br />

dasar bahasa pemrograman C yang meliputi Input/Output serta<br />

Pernyataan, Tipe Data, Pernyataan Bersyarat, Perulangan, Array,<br />

Pointer, Fungsi, File, dan Typedef dan Struct. Semua materi tersebut<br />

disajikan sangat jelas dengan dilengkapi visualisasi dari program serta<br />

contoh-contoh program yang efektif dan efisien sehingga mahasiswa<br />

dengan mudah memahami konsep-konsep bahasa C.<br />

Penulisan Buku Ajar ini merupakan salah satu kegiatan akademik<br />

program studi Informatika, Fakultas Matematika dan Ilmu Pengetahuan<br />

Alam (FMIPA), Universitas Syiah Kuala (Unsyiah) dan d<strong>id</strong>anai<br />

sepenuhnya oleh FMIPA Unsyiah melalui Dana Rutin Tahunan.<br />

Oleh karena itu, penulis ingin mengucapkan terimakasih kepada<br />

Pihak Dekanan FMIPA, Unsyiah dan pihak-pihak terkait lainnya<br />

yang telah mendukung secara langsung atau t<strong>id</strong>ak langsung dalam<br />

penyempurnaan penulisan buku ajar ini.<br />

Akhirnya penulis juga menyadari bahwa penulisan Buku Ajar ini<br />

masih jauh dari kesempurnaan. Oleh karena itu kritik dan saran yang<br />

membangun sangat penulis harapkan. Semoga buku ini bermanfaat<br />

bagi semua pihak yang terkait dan menjadi lebih sempurna pada masa<br />

yang akan datang.<br />

Banda Aceh, Juni <strong>2011</strong><br />

Taufik Fuadi Ab<strong>id</strong>in & Irvanizam Zamanhuri<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> vi <strong>—</strong> #6<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> vii <strong>—</strong> #7<br />

Daftar Isi<br />

Kata Pengantar v<br />

Daftar Isi vii<br />

Daftar Gambar xi<br />

Daftar Tabel xiii<br />

1 Pendahuluan ANSI/C dan Contoh 1<br />

1.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.3 ANSI/C . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.4 Penulisan Program yang Baik . . . . . . . . . . . . . . 2<br />

1.5 Kompilasi Menggunakan gcc . . . . . . . . . . . . . . . 3<br />

2 Input Output dan Pernyataan 5<br />

2.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.3 Penggunaan printf() dan scanf() . . . . . . . . . . . . 5<br />

2.4 Contoh Program . . . . . . . . . . . . . . . . . . . . . 7<br />

2.5 Penggunaan Library ctype . . . . . . . . . . . . . . . . 10<br />

3 Tipe Data 11<br />

3.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3.3 Tipe Data Primitif . . . . . . . . . . . . . . . . . . . . 11<br />

3.4 Pres<strong>id</strong>ensi dan Urutan Pemrosesan (Associativity) Operator<br />

dalam C . . . . . . . . . . . . . . . . . . . . . . <strong>13</strong><br />

3.5 Operator-Operator . . . . . . . . . . . . . . . . . . . . <strong>13</strong><br />

3.5.1 Operator Aritmatik, Relasional, dan Increment/Decrement<br />

. . . . . . . . . . . . . . . . . <strong>13</strong><br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> viii <strong>—</strong> #8<br />

3.5.2 Operator Assignment (=) . . . . . . . . . . . . 14<br />

3.5.3 Assignment Operator . . . . . . . . . . . . . . . 15<br />

3.6 Konversi Tipe Data . . . . . . . . . . . . . . . . . . . . 16<br />

4 Pernyataan Bersyarat (Conditional Statement) 19<br />

4.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 19<br />

4.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

4.3 Konsep Pernyataan Bersyarat . . . . . . . . . . . . . . 20<br />

4.4 Serangkaian Pernyataan (Compound Statement) . . . . 20<br />

4.5 Lokal Variabel . . . . . . . . . . . . . . . . . . . . . . . 21<br />

4.6 if dan if else Statement . . . . . . . . . . . . . . . . . . <strong>22</strong><br />

4.7 Switch Statement . . . . . . . . . . . . . . . . . . . . . 25<br />

4.8 Break dan Continue Statements . . . . . . . . . . . . . 26<br />

4.9 Continue Statement Lanjutan . . . . . . . . . . . . . . 28<br />

4.10 Conditional Operator . . . . . . . . . . . . . . . . . . . 29<br />

5 Perulangan (Loop) 31<br />

5.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 31<br />

5.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

5.3 do while Statement . . . . . . . . . . . . . . . . . . . . 31<br />

5.3.1 do while Statement (Dasar) . . . . . . . . . . . 31<br />

5.3.2 do while Statement (Lanjutan) . . . . . . . . . 33<br />

5.4 for Statement . . . . . . . . . . . . . . . . . . . . . . . 34<br />

5.4.1 for Statement (Dasar) . . . . . . . . . . . . . . 34<br />

5.4.2 for Statement (Lanjutan) . . . . . . . . . . . . 35<br />

5.5 while statement . . . . . . . . . . . . . . . . . . . . . . 37<br />

6 Lanjutan Perulangan (Loop) dan Contoh 41<br />

6.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 41<br />

6.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

6.3 Contoh Perulangan for (Lanjutan) . . . . . . . . . . . 41<br />

6.3.1 Contoh 1 . . . . . . . . . . . . . . . . . . . . . 41<br />

6.3.2 Contoh 2 . . . . . . . . . . . . . . . . . . . . . 42<br />

6.3.3 Contoh 3 . . . . . . . . . . . . . . . . . . . . . 42<br />

6.3.4 Contoh 4 . . . . . . . . . . . . . . . . . . . . . 42<br />

6.3.5 Contoh 5 . . . . . . . . . . . . . . . . . . . . . 43<br />

6.3.6 Contoh 6 . . . . . . . . . . . . . . . . . . . . . 43<br />

6.3.7 Contoh 7 . . . . . . . . . . . . . . . . . . . . . 44<br />

6.3.8 Contoh 8 . . . . . . . . . . . . . . . . . . . . . 44<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> ix <strong>—</strong> #9<br />

7 Array Satu Dimensi 45<br />

7.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 45<br />

7.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

7.3 Definisi dan Pendeklarasian Array . . . . . . . . . . . 45<br />

7.4 Inisialisasi Nilai . . . . . . . . . . . . . . . . . . . . . . 46<br />

7.5 Indeks (Subscript) Dari Array . . . . . . . . . . . . . . 47<br />

7.6 Alokasi Memory Array . . . . . . . . . . . . . . . . . . 47<br />

8 Array Dua Dimensi 49<br />

8.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 49<br />

8.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

8.3 Pendeklarasian Array Dua Dimensi . . . . . . . . . . . 49<br />

8.4 Inisialisasi Nilai . . . . . . . . . . . . . . . . . . . . . . 50<br />

8.5 Indeks (Subscript) Dari Array Dua Dimensi . . . . . . 51<br />

8.6 Alokasi memori untuk Array Dua Dimensi . . . . . . . 51<br />

8.7 Contoh Program Menggunakan Array Dua Dimensi . . 52<br />

8.7.1 Inisialiasi Nilai Array Dua Dimensi . . . . . . . 52<br />

8.7.2 Pengurutan Data Dalam Array . . . . . . . . . 54<br />

8.7.3 Penjumlahan Matrix Menggunakan Array . . . 54<br />

9 Pointer 55<br />

9.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 55<br />

9.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

9.3 Pendeklarasian Pointer . . . . . . . . . . . . . . . . . . 55<br />

9.4 Visualisasi Pointer . . . . . . . . . . . . . . . . . . . . 56<br />

9.5 Operator Dereferensing . . . . . . . . . . . . . . . . . . 57<br />

9.6 Pointer Vs Array . . . . . . . . . . . . . . . . . . . . . 60<br />

9.7 String . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

10 Fungsi 63<br />

10.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 63<br />

10.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

10.3 Pendeklarasian Fungsi . . . . . . . . . . . . . . . . . . 63<br />

10.4 Fungsi Bertipe Vo<strong>id</strong> . . . . . . . . . . . . . . . . . . . 65<br />

10.5 Jenis-Jenis Fungsi . . . . . . . . . . . . . . . . . . . . . 66<br />

10.5.1 Fungsi Called by Value . . . . . . . . . . . . . . 66<br />

10.5.2 Fungsi Called by Reference . . . . . . . . . . . 67<br />

10.6 Fungsi String . . . . . . . . . . . . . . . . . . . . . . . 68<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> x <strong>—</strong> <strong>#1</strong>0<br />

11 File 73<br />

11.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 73<br />

11.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

11.3 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

11.4 Beberapa Contoh Manipulasi File . . . . . . . . . . . . 74<br />

11.5 Beberapa Fungsi untuk Manipulasi File Teks . . . . . 76<br />

12 Typedef & Struct 77<br />

12.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . 77<br />

12.2 Objektif . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

12.3 Typedef . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

12.4 Penggunaan Typedef Pada Array . . . . . . . . . . . . 78<br />

12.5 Contoh Penggunaan Typedef . . . . . . . . . . . . . . 79<br />

12.6 Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

12.7 Pointer ke Sebuah Struct . . . . . . . . . . . . . . . . . 80<br />

Daftar Pustaka 83<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> xi <strong>—</strong> <strong>#1</strong>1<br />

Daftar Gambar<br />

1.1 Contoh penulisan program yang baik. . . . . . . . . . 3<br />

3.1 Pres<strong>id</strong>ensi dan Urutan Pemrosesan (Associativity) . . <strong>13</strong><br />

3.2 Operator Aritmatik. . . . . . . . . . . . . . . . . . . . 14<br />

3.3 Operator Relasional. . . . . . . . . . . . . . . . . . . . 14<br />

3.4 Operator Increment/Decrement. . . . . . . . . . . . . . 15<br />

3.5 Contoh Operator Assignment. . . . . . . . . . . . . . . 15<br />

4.1 Contoh penggunaan variabel lokal . . . . . . . . . . . . 21<br />

4.2 Contoh penggunaan if else statement . . . . . . . . . . 23<br />

4.3 Contoh penggunaan if else statement . . . . . . . . . . 23<br />

4.4 Contoh penggunaan switch statement . . . . . . . . . . 25<br />

4.5 Contoh penggunaan break statement . . . . . . . . . . 27<br />

4.6 Contoh continue statement lanjutan . . . . . . . . . . 29<br />

4.7 Contoh conditional operator . . . . . . . . . . . . . . . 29<br />

4.8 Contoh conditional operator . . . . . . . . . . . . . . . 30<br />

5.1 Contoh penggunaan do while statement lanjutan . . . 33<br />

5.2 Dua buah program menggunakan do while statement . 34<br />

5.3 Konversi program C yang menggunakan for statement<br />

ke do while statement . . . . . . . . . . . . . . . . . . . 35<br />

5.4 Program untuk menghitung total penjumlahan 10<br />

bilangan integer positif pertama . . . . . . . . . . . . . 36<br />

5.5 Beberapa program dengan menggunakan for statement 36<br />

5.6 Contoh program dengan menggunakan double for statement<br />

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

5.7 Konversi statement while ke dalam bentuk do while<br />

dan for . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

7.1 Contoh penginisialisasi array . . . . . . . . . . . . . . 46<br />

7.2 Visualisasi alamat array . . . . . . . . . . . . . . . . . 47<br />

7.3 Indeks (Subscript) dari array . . . . . . . . . . . . . . 47<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> xii <strong>—</strong> <strong>#1</strong>2<br />

7.4 Contoh penggunaan array dan visualisasinya . . . . . . 48<br />

8.1 Visualisasi pendeklaraisin array dua dimensi . . . . . . 50<br />

8.2 Contoh penginisialisasi array dua dimensi . . . . . . . 51<br />

8.3 Indeks (Subscript) dari array dua dimensi . . . . . . . 51<br />

8.4 Visualisasi array dua dimensi dalam bentuk satu dimensi 52<br />

8.5 Visualiasai array num[i][j] . . . . . . . . . . . . . . . . 53<br />

9.1 Visualisasi pointer . . . . . . . . . . . . . . . . . . . . 56<br />

9.2 Visualisasi pointer . . . . . . . . . . . . . . . . . . . . 58<br />

9.3 Visualisasi pointer . . . . . . . . . . . . . . . . . . . . 59<br />

9.4 Visualisasi pointer . . . . . . . . . . . . . . . . . . . . 59<br />

9.5 Visualisasi pointer . . . . . . . . . . . . . . . . . . . . 59<br />

9.6 Visualisasi pointer . . . . . . . . . . . . . . . . . . . . 60<br />

9.7 Visualisasi pointer pada array . . . . . . . . . . . . . . 60<br />

9.8 Kesamaan array dengan pointer . . . . . . . . . . . . . 60<br />

10.1 Visualisasi fungsi . . . . . . . . . . . . . . . . . . . . . 66<br />

10.2 Visualisasi fungsi . . . . . . . . . . . . . . . . . . . . . 68<br />

10.3 Visualisasi fungsi . . . . . . . . . . . . . . . . . . . . . 68<br />

12.1 Visualisasi struct . . . . . . . . . . . . . . . . . . . . . 80<br />

12.2 Visualisasi struct . . . . . . . . . . . . . . . . . . . . . 81<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> xiii <strong>—</strong> #<strong>13</strong><br />

Daftar Tabel<br />

2.1 Format Tipe Data . . . . . . . . . . . . . . . . . . . . 6<br />

4.1 Operator relasional . . . . . . . . . . . . . . . . . . . . 20<br />

11.1 Parameter Mode untuk Akses File . . . . . . . . . . . 74<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> xiv <strong>—</strong> <strong>#1</strong>4<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 1 <strong>—</strong> <strong>#1</strong>5<br />

Bab 1<br />

Pendahuluan ANSI/C dan<br />

Contoh<br />

1.1 Pengantar<br />

Bahasa C adalah bahasa pemrograman yang sangat populer dan<br />

powerful. Bahasa ini mulai dirancang sekitar tahun 70-an oleh Dennis<br />

Ritchie di Bell Laboratories dan menjadi ANSI C (standard C) pada<br />

awal tahun 1980. Bahasa pemrograman C banyak digunakan sebagai<br />

kernel bagi bahasa-bahasa yang baru dan lebih spesifik seperti C++<br />

yang merupakan pengembangan lebih lanjut dari standard C. Contoh<br />

lain adalah Java, walau bukan merupakan kelanjutan dari standard<br />

C, tetapi banyak sintaks dalam Java yang mirip dengan sintaks C.<br />

1.2 Objektif<br />

Objektif dari materi ini adalah (i) memberikan gambaran awal<br />

tentang bahasa C, (ii) memperkenalkan bahasa C dengan contoh,<br />

(iii) mengajarkan teknik-teknik penulisan program yang baik, (iv)<br />

memilih nama untuk variabel, (v) indentation, dan (vi) penjelasan<br />

dalam program (comment).<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 2 <strong>—</strong> <strong>#1</strong>6<br />

2 Bab 1. Pendahuluan ANSI/C dan Contoh<br />

1.3 ANSI/C<br />

• D<strong>id</strong>esain oleh Dennis Ritchie di Bell Laboratory (Sekarang<br />

AT&T)<br />

• Diimplementasi sebagai bahasa pemograman Operating System<br />

(OS) Unix pada mini komputer PDP-11 di tahun 1972<br />

• Berkembang dari bahasa B yang berjalan di mesin BCPL yang<br />

dikembangkan oleh Martin Richard di tahun 1967.<br />

• Tujuannya adalah menyempurnakan B dan merealisasikan <strong>id</strong>e<br />

pemograman berstruktur.<br />

• Tradisional C terwujud di tahun 80-an dan berhasil menjadi<br />

ANSI/ISO standard di tahun 1990.<br />

Adapun karakteristik adalah<br />

• Portable:<br />

– Dapat dengan mudah dipindahkan dari satu perangkat<br />

keras ke perangkat keras yang lain<br />

– Menyediakan standard library (fungsi-fungsi)<br />

• Mendukung modular programming: Program ditulis dalam<br />

beberapa modul atau dipisahkan dalam beberapa file<br />

• Dapat dikategorikan sebagai ’m<strong>id</strong>dle level language’<br />

1.4 Penulisan Program yang Baik<br />

Program yang ditulis dengan baik akan mengikuti ka<strong>id</strong>ah-ka<strong>id</strong>ah<br />

penulisan program yang telah disepakati. Penulisan program yang<br />

baik harus disertai dengan beberapa komen yang dapat memudahkan<br />

orang lain memahami alur dari program. Selain itu, penulisan<br />

program yang baik harus memiliki indent untuk blok program dan<br />

konsistensi dalam penamaan variabel.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 3 <strong>—</strong> <strong>#1</strong>7<br />

1.5. Kompilasi Menggunakan gcc 3<br />

Gambar 1.1: Contoh penulisan program yang baik.<br />

1.5 Kompilasi Menggunakan gcc<br />

Kompile program di atas dengan menulis perintah berikut pada<br />

terminal (Linux):<br />

gcc -Wall -pedantic -g -o konversi konversi.c<br />

Hasil kompilasi di atas akan membuat sebuah file dengan nama<br />

konversi (dibangkitkan dari sebuah buah konversi.c). Selanjutnya, file<br />

konversi tersebut dapat dijalankan secara langsung melalui terminal<br />

dengan perintah:<br />

./konversi<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 4 <strong>—</strong> <strong>#1</strong>8<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 5 <strong>—</strong> <strong>#1</strong>9<br />

Bab 2<br />

Input Output dan<br />

Pernyataan<br />

2.1 Pendahuluan<br />

Pemahaman Bahasa Pemrograman C akan lebih mudah melalui<br />

contoh-contoh. Dengan memperhatikan dan memahami contoh-<br />

contoh program, mahasiswa diharapkan dapat memahami konsep<br />

bahasa pemrograman yang dipelajari secara lebih mudah dan cepat.<br />

Pada bab ini, pemahaman terhadap konsep dasar pemrograman<br />

C dilakukan dengan membahas dan memahami beberapa contoh<br />

program.<br />

2.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan fungsi input dan<br />

output, (ii) pernyataan (Statement), dan iii mengajarkan teknik-<br />

teknik penulisan program yang baik.<br />

2.3 Penggunaan printf() dan scanf()<br />

Fungsi printf() digunakan untuk output, sedangkan scanf() digunakan<br />

untuk input. Huruf "f" dalam printf dan scanf merupakan kepen-<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 6 <strong>—</strong> #20<br />

6 Bab 2. Input Output dan Pernyataan<br />

dekan dari kata "formatted". Kedua fungsi tersebut d<strong>id</strong>eklarasi<br />

dalam header file stdio.h. Header file ini harus disertakan dalam<br />

program menggunakan kata kunci include.<br />

/* standard library dimana EXIT_SUCCESS, EXIT_FAILURE,<br />

dan Lain-lain d<strong>id</strong>efinisikan*/<br />

#include <br />

/* standard I/O dimana printf dan scanf d<strong>id</strong>efinisikan*/<br />

#include <br />

printf dan scanf secara garis besar menerima dua argumen,<br />

yaitu string pengatur (control string) dan argumen lainnya. String<br />

pengatur digunakan untuk menentukan format dari argumen yang<br />

dikirim. Contoh:<br />

Tabel 2.1: Format Tipe Data<br />

Karakter Konversi Format argumen<br />

c Char<strong>ac</strong>ter<br />

d Decimal integer<br />

u Unsigned decimal integer<br />

e Floating point dalam notasi scientific<br />

f Floating point (pecahan)<br />

s String<br />

ld Long integer<br />

lf Double<br />

o, x Octaldecimal dan hexadecimal<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 7 <strong>—</strong> #21<br />

2.4. Contoh Program 7<br />

2.4 Contoh Program<br />

Pada sub bab 2.4 akan menampilkan beberapa contoh program C<br />

menggunakan fungsi printf , scanf, dan beberapa operator matem-<br />

atika. Selain itu juga pada sub bab 2.4 juga menampilkan contoh<br />

program penjumlahan dua variabel dan perintah assingment, peng-<br />

gunaan string pengatur %x untuk mengkonversi integer (basis 10)<br />

menjadi dalam format hexa desimal (basis 16), dan penggunaan string<br />

pengatur %o untuk mengkonversi integer (basis 10) menjadi dalam<br />

format hexa desimal (basis 8).<br />

Program 1 Penggunaan fungsi printf.<br />

#include < stdio.h><br />

vo<strong>id</strong> main(vo<strong>id</strong>)<br />

{<br />

printf("\n");<br />

printf("Hello Students.");<br />

printf("\n");<br />

}<br />

Program 2 Penjumlahan dua variabel dan perintah assingment.<br />

#include <br />

vo<strong>id</strong> main(vo<strong>id</strong>) {<br />

int i,j,k;<br />

i = 4;<br />

j = 5;<br />

k = i + j;<br />

}<br />

printf("Penjumlahan dua variabel i+j=%d\n",k);<br />

Program 6 memperlihatkan penggunaan pernyataan penjumlahan<br />

menggunakan perintah (operator)= dan pernyataan increment (++).<br />

Walaupun keduanya akan menghasilkan keluaran yang sama, namun<br />

pernyataan yang ditulis menggunakan (operator)= dan increment<br />

(++) diyakini, walaupun t<strong>id</strong>ak signifikan, akan lebih cepat.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 8 <strong>—</strong> #<strong>22</strong><br />

8 Bab 2. Input Output dan Pernyataan<br />

Program 3 Penggunaan string pengatur %x untuk mengkonversi<br />

integer (basis 10) menjadi dalam format hexa desimal (basis 16)<br />

#include <br />

vo<strong>id</strong> main(vo<strong>id</strong>)<br />

{<br />

int i = 100;<br />

printf(" %x\n",i);<br />

}<br />

Program 4 Penggunaan string pengatur %o untuk mengkonversi<br />

integer (basis 10) menjadi dalam format hexa desimal (basis 8).<br />

#include <br />

vo<strong>id</strong> main(vo<strong>id</strong>)<br />

{<br />

int i = 74;<br />

printf(" %o\n",i);<br />

}<br />

Program 5 Penggunaan scanf untuk beberapa tipe data.<br />

#include <br />

#include <br />

int main(vo<strong>id</strong>){<br />

char c1, c2;<br />

int ibil;<br />

float fbil;<br />

double dbil;<br />

}<br />

printf("\n%s\n%s\n", "Demo scanf untuk beberapa<br />

tipe data","Input dua karakter, sebuah<br />

integer, float dan double");<br />

scanf("%c,%c,%d,%f,%lf", &c1, &c2, &ibil,<br />

&fbil, &dbil);<br />

printf("\nOutput:\n");<br />

printf("%4c %4c %5d %12.3f %15e\n\n",c1, c2,<br />

ibil, fbil,dbil);<br />

exit(EXIT_SUCCESS);<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 9 <strong>—</strong> #23<br />

2.4. Contoh Program 9<br />

Program 6 Penggunaan pernyataan increment dan (operator)=.<br />

#include <br />

#include <br />

#define MAXLOOP 10<br />

int main(vo<strong>id</strong>)<br />

{<br />

int counter = 1, total = 0;<br />

while(counter


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 10 <strong>—</strong> #24<br />

10 Bab 2. Input Output dan Pernyataan<br />

2.5 Penggunaan Library ctype<br />

Library ctype dapat digunakan untuk memanipulasi karakter. Library<br />

ini sudah build-in pada bahasa pemrograman C.<br />

Program 7 Contoh program menggunakan library ctype.<br />

#include <br />

#include <br />

#include <br />

int main(vo<strong>id</strong>)<br />

{<br />

int char<strong>ac</strong>ter;<br />

while((char<strong>ac</strong>ter = getchar()) != EOF){<br />

if(char<strong>ac</strong>ter == ’\n’)<br />

putchar(’\n’);<br />

else if(islower(char<strong>ac</strong>ter))<br />

putchar(char<strong>ac</strong>ter = toupper(char<strong>ac</strong>ter));<br />

else<br />

putchar(char<strong>ac</strong>ter);<br />

}<br />

}<br />

exit(EXIT_SUCCESS);<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 11 <strong>—</strong> #25<br />

Bab 3<br />

Tipe Data<br />

3.1 Pendahuluan<br />

Setiap bahasa pemograman menyediakan tipe data. C memiliki<br />

beberapa tipe data primitif (intrinsic data type) yang merupakan<br />

bagian dari bahasa C itu sendiri. C juga memiliki tipe data lain<br />

yang biasa dikenal dengan istilah aggregate data type seperti array.<br />

Komplek data tipe dapat dibuat dengan kombinasi antara kedua tipe<br />

data tersebut. Bab ini akan membahas bagaimana deklarasi, ekspresi<br />

serta cara memanipulasi tipe data dalam C.<br />

3.2 Objektif<br />

Objektif dari bab ini adalah (i) memperkenalkan tipe data dan opera-<br />

tor dalam C, (ii) menjelaskan beberapa contoh yang dapat menjebak<br />

programmer berkaitan dengan tipe data sehingga menimbulkan error,<br />

dan (iii) menjelaskan cara mengkonversi satu tipe data ke tipe data<br />

yang lain<br />

3.3 Tipe Data Primitif<br />

Pada dasarnya keyword signed sangat jarang digunakan karena signed<br />

int sama artinya dengan int. Compiler mengerti bila suatu variable<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 12 <strong>—</strong> #26<br />

12 Bab 3. Tipe Data<br />

d<strong>id</strong>eklarasikan bertipe int maka variable tersebut adalah signed int<br />

atau bilangan integer positif maupun negatif. Unsigned int berarti<br />

bilangan yang dimaksud adalah bilangan integer positif saja.<br />

char signed char unsigned char<br />

signed short int signed int signed long int<br />

unsigned short int unsigned int unsigned long int<br />

float double long double<br />

Untuk tipe komputer 16 bits, tipe data short dan int membu-<br />

tuhkan memori sebesar 2 byte dan long 4 byte. Sedangkan untuk<br />

komputer 32 bits, tipe data short membutuhkan memori sebesar 2<br />

byte dan int dan long sebesar 4 byte.<br />

• Signed int<br />

– Komputer 16 bits<br />

−2 15 ≤ int ≤ 2 15 − 1 = −32768 ≤ int ≤ +32767<br />

– Komputer 32 bits<br />

−2 31 ≤ int ≤ 2 31 − 1 = −2147483648 ≤ int ≤<br />

+2147483647<br />

• Unsigned int<br />

– Komputer 16 bits<br />

0 ≤ int ≤ 2 16 − 1 = 0 ≤ int ≤ +65535<br />

– Komputer 32 bits<br />

0 ≤ int ≤ 2 32 − 1 = 0 ≤ int ≤ +4294967295<br />

Fungsi sizeof digunakan untuk mengetahui ukuran memori yang<br />

dibutuhkan oleh suatu variabel bertipe data tertentu. Penyataan<br />

berikut memperlihatkan penggunaan dari fungsi sizeof tersebut.<br />

printf("Ukuran int = %d, Ukuran double = %d\n",<br />

sizeof(int), sizeof(double));<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> <strong>13</strong> <strong>—</strong> #27<br />

3.4. Pres<strong>id</strong>ensi dan Urutan Pemrosesan (Associativity) Operator<br />

dalam C <strong>13</strong><br />

3.4 Pres<strong>id</strong>ensi dan Urutan Pemrosesan (Asso-<br />

ciativity) Operator dalam C<br />

Gambar 3.1 memperlihatkan urutan pemrosesan dan pres<strong>id</strong>ensi dari<br />

sebuah operator dalam pemrograman C. Urutan pemrosesan dan<br />

pres<strong>id</strong>ensi harus diketahui agar keluaran dari pernyataan gabungan<br />

t<strong>id</strong>ak keliru.<br />

Gambar 3.1: Pres<strong>id</strong>ensi dan Urutan Pemrosesan (Associativity)<br />

3.5 Operator-Operator<br />

3.5.1 Operator Aritmatik, Relasional, dan Increment/Decrement<br />

Gambar 3.2 menampilkan operator aritmatika. Gambar 3.3 menampilkan<br />

operator relasional dan gambar 3.4 menampilkan operator incre-<br />

ment/decrement.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 14 <strong>—</strong> #28<br />

14 Bab 3. Tipe Data<br />

Contoh:<br />

x = 5;<br />

y = x++;<br />

x = 5;<br />

y = ++x;<br />

x = 5;<br />

Gambar 3.2: Operator Aritmatik.<br />

Gambar 3.3: Operator Relasional.<br />

y = x + x++; Berapakah nilai y ?<br />

3.5.2 Operator Assignment (=)<br />

Penggunaan operator assignment (=) sering menjebak programmer<br />

karena operator ini bukanlah operator boolean (= =) yang digunakan<br />

untuk membandingkan dua buah nilai.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 15 <strong>—</strong> #29<br />

3.5. Operator-Operator 15<br />

Gambar 3.4: Operator Increment/Decrement.<br />

Gambar 3.5: Contoh Operator Assignment.<br />

3.5.3 Assignment Operator<br />

Penggunaan pernyataan: variabel(operator)=ekspresi memberikan<br />

keluaran yang sama dengan pernyataan variabel=variable (operator)<br />

ekspresi. Contoh:<br />

y += x; y = y + x;<br />

y /= (x + 2); y = y / (x + 2);<br />

y += (x %= 3)-(t *= 5); y= y+ (x=x%3) - (t=t*5);<br />

y += (x == 2)<br />

Berapakah nilai y jika nilai awal y = 10 dan x = 0 ?<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 16 <strong>—</strong> #30<br />

16 Bab 3. Tipe Data<br />

3.6 Konversi Tipe Data<br />

Konversi data dapat dilakukan secara otomatis (automatic con-<br />

version/promotion) dan konversi secara manual (eksplisit/casting).<br />

Pengkonversian secara otomatis terjadi apabila dalam suatu perny-<br />

ataan memiliki dua variabel dengan tipe yang berbeda sehingga salah<br />

satu dari variabel tersebut akan dikonversikan berdasarkan urutan<br />

berikut:<br />

int


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 17 <strong>—</strong> #31<br />

3.6. Konversi Tipe Data 17<br />

x = (float) ((int) y + 1);<br />

(double) (x = 77) T<strong>id</strong>ak sama artinya dengan<br />

int x = 7;<br />

int y = 3;<br />

float f;<br />

(double) x = 77, mengapa?<br />

f = x / y; Nilai f = 2<br />

f = (float) x / float (y); Nilai f = 2.3<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 18 <strong>—</strong> #32<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 19 <strong>—</strong> #33<br />

Bab 4<br />

Pernyataan Bersyarat<br />

(Conditional Statement)<br />

4.1 Pendahuluan<br />

Pernyataan bersyarat (conditional statement) dalam pemrograman<br />

lebih dikenal dengan istilah flow control of statement. C memiliki<br />

beberapa jenis conditional statement, antara lain:<br />

• if dan if...else statement<br />

• switch statement<br />

• break dan continue statement<br />

• conditional operator (?:)<br />

4.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan dan menjelaskan<br />

loop dan conditional statement, dan (ii) menjelaskan perbedaan<br />

antara satu statement dengan statement yang lain<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 20 <strong>—</strong> #34<br />

20 Bab 4. Pernyataan Bersyarat (Conditional Statement)<br />

4.3 Konsep Pernyataan Bersyarat<br />

Program-program bahasa C dieksekusikan secara berurutan dari baris<br />

ke baris. Namun, program tersebut bisa dikontrol eksekusinya dengan<br />

menggunakan suatu mekanisme pengontrol. Mekanisme pengontrol<br />

tersebut membandingkan suatu pernyataan dengan pernyataan lain<br />

yang dikenal sebagai kondisi, lalu mengeksekusi perintah-perintah<br />

yang memenuhi kondisi tersebut. Dengan kata lain, jika kon-<br />

disinya bernilai Benar (TRUE) maka compiler C akan menggerjakan<br />

semua perintah-perintah yang berada dalam prosedur mekanisme<br />

pengontrol.<br />

Mekanisme pengontrol dapat diimplementasikan dengan mengu-<br />

nakan operator relasional. Tabel 4.1 menampilkan operator-operator<br />

relasional.<br />

Tabel 4.1: Operator relasional<br />

Operator Simbol<br />

sama dengan ==<br />

t<strong>id</strong>ak sama dengan !=<br />

lebih kecil <<br />

lebih besar ><br />

lebih kecil atau sama dengan ≤<br />

lebih besar atau sama dengan ≥<br />

t<strong>id</strong>ak (not) !<br />

dan (and) &&<br />

atau (or) ||<br />

4.4 Serangkaian Pernyataan (Compound State-<br />

ment)<br />

Compound statement atau serangkaian statement yang saling berkai-<br />

tan biasanya ditulis secara berkelompok dalam tanda kurung kurawal<br />

{ dan }. C menggunakan { dan } untuk mengapit beberapa statement<br />

dalam satu blok. Program 8 merupakan potongan program C dengan<br />

menggunakan Compound statement.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 21 <strong>—</strong> #35<br />

4.5. Lokal Variabel 21<br />

Program 8 Potongan program dengan menggunakan Compound<br />

statement.<br />

{<br />

a = 1;<br />

if (a > 0)<br />

{<br />

int b = a;<br />

b++;<br />

a += b;<br />

}<br />

}<br />

Biasanya statement if, if..else, while, for, do dan switch selalu<br />

diikuti dengan statement yang berkaitan dengannya. Statement yang<br />

mengikuti if, if..else, while, for, do dan switch dapat berupa single<br />

statement maupun compound statement.<br />

4.5 Lokal Variabel<br />

C membenarkan pendeklarasian lokal variabel. Lokal variabel yang<br />

d<strong>id</strong>eklarasikan dalam suatu blok akan bersifat private (t<strong>id</strong>ak dapat<br />

diakses diluar blok). Gambar 4.1 menunjukkan contoh penggunaan<br />

variabel lokal.<br />

Gambar 4.1: Contoh penggunaan variabel lokal<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> <strong>22</strong> <strong>—</strong> #36<br />

<strong>22</strong> Bab 4. Pernyataan Bersyarat (Conditional Statement)<br />

4.6 if dan if else Statement<br />

Bentuk umum dari if statement adalah sebagai berikut:<br />

if () {<br />

}<br />

<br />

Jika bernilai true maka perintah akan dieksekusikan. Program 9 merupakan<br />

potongan program C menggunakan if statement<br />

Program 9 Potongan program dengan menggunakan if statement.<br />

int main(){<br />

int x=0;<br />

if(x !=0){<br />

printf("Nilai x sama dengan nol");<br />

}<br />

printf("Nilai x t<strong>id</strong>ak sama dengan nol");<br />

}<br />

Sedangkan Bentuk umum dari if else statement adalah sebagai<br />

berikut:<br />

if ()<br />

else<br />

<br />

<br />

Dimana jika bernilai benar, maka dieksekusikan. Sebaliknya, jika <br />

bernilai salah, maka yang akan dieksekusikan.<br />

Namun pada realita, kadang-kadang sebuah program C mempunyai<br />

dua buah atau lebih ekspresi if else yang berada secara berdekatan.<br />

Hal ini membuat sedikit bingung bagi programmer untuk mengetahui<br />

ekspresi statement else mana yang akan menjadi "pasangan" bagi<br />

if tertentu. Akan tetapi, kompiler C secara automatis mengetahui<br />

setiap pasangan if else dan ini akan ditunjukkan melalui gambar 4.2<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 23 <strong>—</strong> #37<br />

4.6. if dan if else Statement 23<br />

Gambar 4.2: Contoh penggunaan if else statement<br />

dan 4.3. Pada gambar 4.2 terlihat bahwa else pertama (else a–)<br />

sangat dekat dengan statement if(y>0). Oleh karena itu, statement<br />

else itu merupakan else bagi if(y>0). Sedangkan statement else b =<br />

b/2 menjadi statement else bagi statement if (x>0).<br />

Gambar 4.3: Contoh penggunaan if else statement<br />

Sebagai tambahan, jika pada kondisi statement if mempunyai<br />

lebih dari dua statement, maka statement-statement tersebut akan<br />

diapit oleh tanda kurung kurawal { dan }. Berikut bentuk umum<br />

dari if else statement untuk kondisi ini.<br />

if () {<br />

<br />

}<br />

else {<br />

<br />

}<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 24 <strong>—</strong> #38<br />

24 Bab 4. Pernyataan Bersyarat (Conditional Statement)<br />

Program 10 merupakan potongan program C menggunakan if else<br />

statement dan menghasilkan sebuah program untuk menentukan nilai<br />

huruf dari kalkulasi nilai tugas, ujian tengah semester(uts) dan ujian<br />

akhir semester(uas). Kompiler C mengecek hasil dari variabel nilai.<br />

Jika nilai lebih kecil dari 90, kompiler C akan mengeksekusi statement<br />

else yang terdapat di dalamnya statement if(nilai ≥ 80). Setelah<br />

itu, jika nilai lebih kecil dari 80 maka kompiler C akan mengeksekusi<br />

statement else yang ke dua dan begitu juga seterusnya.<br />

Program 10 Potongan program dengan menggunakan if else<br />

statement.<br />

int main() {<br />

float uts, nilai, uas, tugas;<br />

printf("Tugas: "); scanf("\%f",\&tugas);<br />

printf("UTS: "); scanf("\%f",\&uts);<br />

printf("UAS: "); scanf("\%f",\&uas);<br />

nilai = 0.2 * tugas + 0.3 * uts + 0.5 * uas;<br />

}<br />

if (nilai >= 90)<br />

printf("Nilai A");<br />

else if (nilai >= 80)<br />

printf("Nilai B");<br />

else if (nilai >= 65)<br />

printf("Nilai C");<br />

else if (nilai >= 50)<br />

printf("Nilai D");<br />

else<br />

printf("Nilai E");<br />

return 0;<br />

Adapun luaran dari program di atas adalah tergantung dari nilai<br />

inputan tugas, uas, dan uts. Setiap inputan nilai-nilai tersebut<br />

dimasukkan ke dalam sebuah alamat memory melalui perintah scanf.<br />

Inputan nilai tersebut ditampung ke dalam sebuah memory yang<br />

berbeda-beda. Asumsikan inputan tugas, uts, dan uas adalah 75,<br />

70, 90, maka luaran dari program 10 adalah:<br />

Nilai B<br />

Latihan: Berdasarkan contoh program 10, coba modifikasi program<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 25 <strong>—</strong> #<strong>39</strong><br />

4.7. Switch Statement 25<br />

tersebut dengan menambahkan tanda kurung kurawal { dan } pada<br />

setiap statement if else.<br />

4.7 Switch Statement<br />

Bentuk umum dari switch statement adalah sebagai berikut :<br />

switch (ekspresi) {<br />

case ekspresi 1 : statement1<br />

case ekspresi 2 : {<br />

statement1<br />

statement2<br />

...<br />

}<br />

...<br />

...<br />

default : statement lainnya<br />

}<br />

Gambar 4.4: Contoh penggunaan switch statement<br />

Cara kerja switch statement adalah sebagai berikut:<br />

• cek (ekspresi) dari switch<br />

• Kerjakan semua statement dari ekspresi case yang bernilai<br />

benar (true)<br />

• Jika t<strong>id</strong>ak ada ekspresi case yang benar maka kerjakan statement<br />

pada bagian default<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 26 <strong>—</strong> #40<br />

26 Bab 4. Pernyataan Bersyarat (Conditional Statement)<br />

Program 11 Contoh penggunaan switch statement lain.<br />

int main() {<br />

int grade = 3;<br />

switch (grade) {<br />

case 1: printf("Fall (F)\n"); break;<br />

case 2: printf("Bad (D)\n"); break;<br />

case 3: printf("Good (C)\n");<br />

case 4: printf("Very Good (B)\n"); break;<br />

case 5: printf("Excellent (A)\n"); break;<br />

default:<br />

printf("You have inputted false grade\n");<br />

break; // break disini t<strong>id</strong>ak perlu<br />

}<br />

}<br />

Bagaimana hasil dari eksekusi Program 11? Output atau luaran<br />

dari Program 11 adalah:<br />

Good (C)<br />

Very Good (B)<br />

Hasil tersebut diperoleh karena pada case 3 t<strong>id</strong>ak ada perintah break.<br />

Ingat kembali bahwa kompiler C mengeksekusi program C secara<br />

berurutan dari baris ke baris. Oleh karena itu, setelah mengeksekusi<br />

case 3, kompiler C juga mengeksekusi bagian di case 4 dan keluar dari<br />

bagian switch setelah menjumpai break pada bagian case 4. Perintah<br />

break termasuk salah satu mekanisme pengontrol dan akan dibahas<br />

pada sub bab 4.8.<br />

4.8 Break dan Continue Statements<br />

Bentuk umum dari break statement adalah:<br />

break;<br />

Tujuan break statement adalah:<br />

• memerintahkan compiler untuk keluar dari satu tingkat (biasanya<br />

digunakan pada statement pengulangan dan pilihan<br />

bercabang)<br />

• Menghentikan pengeksekusian program secara t<strong>id</strong>ak normal<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 27 <strong>—</strong> #41<br />

4.8. Break dan Continue Statements 27<br />

Gambar 4.5 menunjukkan contoh dan penjelasan dari break<br />

statement.<br />

Gambar 4.5: Contoh penggunaan break statement<br />

Bentuk umum dari continue statement adalah:<br />

continue;<br />

Tujuan break statement adalah:<br />

• memerintahkan compiler untuk melanjutkan pengeksekusian<br />

program dalam satement pengulangan tanpa pengeksekusian<br />

program yang berada dibawah statement continue<br />

• Melanjutkan pengeksekusian program di dalam perulangan<br />

Program 12 memperlihatkan penggunaan break dan continue<br />

dalam sebuah perulangan do while. Pada program ini kompiler<br />

akan keluar dari perulangan do while ketika inputan nilai n < 0<br />

atau n = 0 dan akan melanjutkan pengeksekusian program serta<br />

sekaligus mencetak string "Skip the value" ketika n > 0. Akan<br />

tetapi bila inputan nilai n = 0 maka kompiler akan keluar dari<br />

perulangan dengan mencetak string "The number is: 0". Namun,<br />

jika inputan nilai n t<strong>id</strong>ak pernah sama dengan 0, maka string "the<br />

number is:" t<strong>id</strong>ak akan pernah dicetak. Hal ini dikarenakan statement<br />

pencetakan string tersebut berada setelah statement continue di<br />

dalam perulangan.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 28 <strong>—</strong> #42<br />

28 Bab 4. Pernyataan Bersyarat (Conditional Statement)<br />

Program 12 Sebuah program C penggunaan break dan continue<br />

statement.<br />

int main() {<br />

int n;<br />

do {<br />

printf("\nEnter the number:");<br />

scanf("%d",&n);<br />

if (n < 0) {<br />

break;<br />

}<br />

if(n>10) {<br />

printf("Skip the value\n");<br />

continue;<br />

}<br />

printf("The number is: %d", n);<br />

} while (n != 0);<br />

}<br />

Hasil atau luaran dari program 12 adalah:<br />

Enter the number :1<br />

The number is:1<br />

Enter the number :51<br />

Skip the value<br />

Enter the number:-1<br />

4.9 Continue Statement Lanjutan<br />

Pada sub bab ini akan memperlihatkan perbedaan antara statement<br />

continue dan next. Statement continue melanjutkan eksekusi<br />

statement-statement yang berada di dalam perulangan secara berurutan<br />

dan t<strong>id</strong>ak mengeksekusikan statement-statement yang berada<br />

setelah statement continue. Sedangkan statement next mengarahkan<br />

kompiler C untuk mengeksekusi semua statement yang berada setelah<br />

statement next. Berdasarkan contoh fig:continuelanjutan, ketika<br />

kompiler C mengeksekusikan statement continue, maka kompiler<br />

C secara langsung mengeksekusikan expr2 tanpa mengeksekusikan<br />

expr3. Sedangkan ketika kompiler C mengeksekusikan statement goto<br />

next, kompiler C mengeksekusikan expr3 dan t<strong>id</strong>ak mengeksekusikan<br />

semua statement yang berada diantara goto next dan next.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 29 <strong>—</strong> #43<br />

4.10. Conditional Operator 29<br />

Gambar 4.6: Contoh continue statement lanjutan<br />

4.10 Conditional Operator<br />

Bentuk umum dari conditional operator adalah:<br />

expr1 ? expr2 : expr3<br />

expr1 adalah evaluasi dari kondisi jika kondisi benar (TRUE)<br />

maka nilai dari operan tersebut adalah expr2 dan jika kondisi salah<br />

(FALSE) maka nilai dari operan tersebut adalah expr3.<br />

Gambar 4.7: Contoh conditional operator<br />

Conditional Operator digunakan untuk mempersingkat dalam<br />

penulisan program. Semakin sedikit jumlah baris di dalam sebuah<br />

program, maka semakin cepat kompiler C dalam mengeksekusi<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 30 <strong>—</strong> #44<br />

30 Bab 4. Pernyataan Bersyarat (Conditional Statement)<br />

program tersebut. Di dalam bahasa pemrograman C, jumlah baris<br />

dari sebuah program dihitung dengan melihat jumlah dari karakter<br />

’;’ di dalam program tersebut.<br />

Condition Operator merupakan suatu operator untuk mempersingat<br />

sebuah statement if else. Gambar 4.7 dan fig:expr2 memperlihatkan<br />

bagaimana cara mengubah statement if else ke dalam bentuk<br />

conditional operator.<br />

Gambar 4.8: Contoh conditional operator<br />

Latihan:<br />

Bagaimanakan bentuk if..else dari statement conditional berikut:<br />

1. age > 17 ? printf("You can vote.") :<br />

printf("You cannot vote.");<br />

2. val = ((y>0) ? 10 : ((x==0) ? 100 : 1000));<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 31 <strong>—</strong> #45<br />

Bab 5<br />

Perulangan (Loop)<br />

5.1 Pendahuluan<br />

Proses perulangan (loop) sangat diperlukan untuk membuat suatu<br />

proses yang sama pernyataannya berulang-ulang. Statement perulangan<br />

antara lain:<br />

• do statement<br />

• while statement<br />

• for statement<br />

5.2 Objektif<br />

Objektif dari pertemuan ini adalah (i) memperkenalkan dan menjelaskan<br />

loop, (ii) menjelaskan perbedaan dan kesamaan antara satu<br />

jenis perulangan dengan perulangan yang lain.<br />

5.3 do while Statement<br />

5.3.1 do while Statement (Dasar)<br />

Bentuk umum dari do statement adalah:<br />

do {<br />

<br />

} while (expr);<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 32 <strong>—</strong> #46<br />

32 Bab 5. Perulangan (Loop)<br />

Statement do while mengizinkan perulangan (loop) untuk mengeksekusikan<br />

selama kondisi expr bernilai TRUE. <br />

murupakan bagian yang akan diulang. Sedangkan <br />

adalah kondisi yang dievaluasi, jika kondisi benar maka proses<br />

perulangan dilakukan sedangkan jika kondisi bernilai salah proses<br />

perulangan dihentikan. Karena kompiler C mengeksekusikan secara<br />

teratur dari satu baris ke baris lain dan statement do { } while<br />

menempatkan kondisi exprt secara struktur di bagian terakhir, maka<br />

perulangan akan dieksekusi paling sedikit sekali. Program<br />

<strong>13</strong> dan 14 merupakan contoh program dengan menggunakan do<br />

while statement.<br />

Program <strong>13</strong> Contoh program dengan menggunakan do while.<br />

/* Demonstration of the do..while loop */<br />

#include<br />

#include<br />

int main() {<br />

int value, rDigit;<br />

printf(Enter a number to be reversed.\n);<br />

scanf("%d", &value);<br />

}<br />

do {<br />

rDigit = value % 10;<br />

printf("%d", rDigit);<br />

value = value / 10;<br />

} while (value != 0);<br />

printf(\n);<br />

return 0;<br />

Program 14 Contoh potongan program dengan menggunakan do<br />

while.<br />

do {<br />

sum +=i;<br />

scanf("%d",&i);<br />

} while(i > 0)<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 33 <strong>—</strong> #47<br />

5.3. do while Statement 33<br />

Pada potongan program 14 terdapat beberapa hal yang perlu<br />

diperhatikan:<br />

• Minimal statement dalam do dilakukan satu kali.<br />

• Pengulangan berhenti jika data yang dimasukkan berupa bilangan<br />

nol (0) atau bilangan negatif.<br />

• Input dapat berupa bilangan bulat(int) ataupun bilangan real<br />

(float).<br />

• Proses perulangan untuk mendapatkan jumlah dari sum.<br />

5.3.2 do while Statement (Lanjutan)<br />

Gambar 5.1 menampilkan dua buah program dengan menggunakan<br />

do while statement. Program yang disebelah kiri merupakan program<br />

untuk menginputkan sebuah karakter dengan menggunakan dua buah<br />

perulangan do while. Jika karakter yang dimasukkan adalah ’y’ atau<br />

’t’ dan setelah dikonversi menjadi huruf kapital, maka kompiler C<br />

akan mencetak string "Anda harus coba inputkan lagi". Akan tetapi<br />

jika yang dimasukkan adalah karakter ’t’, maka kompiler C akan<br />

keluar dari double perulangan tersebut.<br />

Gambar 5.1: Contoh penggunaan do while statement lanjutan<br />

Pada gambar 5.2 menampilkan dua buah program dengan menggunakan<br />

do while statement. Kedua program C tersebut sekilas<br />

terlihat mirip. Namun, hasil atau luaran dari kedua program tersebut<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 34 <strong>—</strong> #48<br />

34 Bab 5. Perulangan (Loop)<br />

adalah berbeda. Perbadaannya adalah hanya letak dari penulisan<br />

sintaks k++ dan printf("%d",k). Akibatnya akan menghasilkan<br />

luaran yang berbeda. Program yang sebelah kiri mencetak nilai<br />

k terlebih dahulu kemudian nilai k di-increment-kan. Sedangkan<br />

program yang sebelah kanan meng-increment-kan nilai k terlebih<br />

dahulu kemudian mencetak nilai k.<br />

Gambar 5.2: Dua buah program menggunakan do while statement<br />

5.4 for Statement<br />

5.4.1 for Statement (Dasar)<br />

Bentuk Umum for statement adalah:<br />

for (;;)<br />

{<br />

<br />

}<br />

Dimana merupakan inisialisasi awal dari variable yang<br />

digunakan, dan adalah expresi logika (bentuk perbandingan<br />

nilai, syarat). Pengulangan dilakukan jika kondisi pada expr2 masih<br />

benar (true). Sedangkan adalah bagian update. Biasanya<br />

berbentuk penambahan atau pengurangan nilai variabel counter.<br />

Secara teknis, alur kerja program C yang menggunakan for<br />

statement adalah sama dengan program yang menggunakan do while.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 35 <strong>—</strong> #49<br />

5.4. for Statement 35<br />

Ketika kompiler mengeksekusi perintah for (;;),<br />

sintaks pertama yang dieksekusi adalah . Kemudian kompiler<br />

mengeksekusi yang berada di dalam looping<br />

body. Setelah penambahan atau pengurangan nilai variabel counter<br />

, kompiler mengecek kondisi untuk mengetahui<br />

apakah proses looping selanjutnya dikerjakan atau t<strong>id</strong>ak. Proses ini<br />

sama seperti yang dilakukan pada statement do while. Gambar 5.3<br />

akan menunjukkan proses konversi program C yang menggunakan for<br />

statement ke do while.<br />

Gambar 5.3: Konversi program C yang menggunakan for statement<br />

ke do while statement<br />

5.4.2 for Statement (Lanjutan)<br />

Pada bagian ini akan ditampilkan tiga buah contoh program C dengan<br />

menggunakan perulangan for. Misalnya gambar 5.4 menunjukkan<br />

sebuah program C untuk menghitung total penjumlahan 10 bilangan<br />

integer positif pertama. Untuk mengimplementasikan algoritma<br />

ini, perlu diperhatikan beberapa faktor. Pertama adalah semua<br />

urutan bilangan tersebut harus ditampung ke dalam sebuah variabel<br />

(misalnya i). Kedua, nilai awal dari variabel i adalah 1 dan<br />

batas akhir dari variabel i adalah 10. Dan ketiga variabel i<br />

perlu bertambah satu-satu untuk setiap perulangan supaya semua<br />

urutan bilangan asli bisa dijumlahkan. Penjumlahan kumulatif<br />

dari bilangan tersebut dihitung secara teratur oleh kompiler dengan<br />

mengeksekusikan perintah U += i. Perintah ini ekivalen dengan<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 36 <strong>—</strong> #50<br />

36 Bab 5. Perulangan (Loop)<br />

U = U + i dengan memberikan nilai awal dari variabel i =<br />

0 dan d<strong>id</strong>eklarasikan sebelum statement for. Sedangkan pada<br />

gambar 5.5 menampilkan beberapa gaya penulisan program C dengan<br />

menggunakan perulangan for dan gambar 5.6 adalah salah satu<br />

contoh program dengan menggunakan double looping.<br />

Gambar 5.4: Program untuk menghitung total penjumlahan 10<br />

bilangan integer positif pertama<br />

Gambar 5.5: Beberapa program dengan menggunakan for statement<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 37 <strong>—</strong> #51<br />

5.5. while statement 37<br />

Gambar 5.6: Contoh program dengan menggunakan double for<br />

statement<br />

5.5 while statement<br />

Bentuk Umum dari while statement adalah:<br />

while () {<br />

;<br />

}<br />

;<br />

Terdapat beberapa hal yang perlu diperhatikan:<br />

• adalah kondisi (syarat) dari while<br />

• disebut badan dari while loop<br />

• merupakan statement yang dikerjakan setelah<br />

pengulangan berakhir<br />

• pengulangan dilakukan jika kondisi (syarat) pada masih<br />

benar<br />

Statement while juga sangat mirip dengan statement do while dan<br />

for dalam cara pengeksekusian program. Gambar 5.7 akan menunjukkan<br />

bagaimana cara mengkonversi program C dengan menggunakan<br />

perulangan while menjadi program C dengan menggunakan<br />

perulangan for dan do while.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 38 <strong>—</strong> #52<br />

38 Bab 5. Perulangan (Loop)<br />

Gambar 5.7: Konversi statement while ke dalam bentuk do while dan<br />

for<br />

Pada sub bab ini beberapa contoh program C menggunakan perulangan<br />

while lanjutan akan ditampilkan seperti dua buah program<br />

berikut. Program ini adalah untuk menentukan akar persamaan<br />

kuadrat<br />

f(x) = 2x 2 + 6x + 3 (5.1)<br />

int main(vo<strong>id</strong>) {<br />

double xl= -1.5, xr=l.0, eps=0.00001,<br />

xm, fxl, fxm, epsb, abseps=1, x;<br />

xm = 0. 5 * (xl + xr) ;<br />

while(abseps >= eps) {<br />

abseps= abs (xm - xl);<br />

fx1 = 2*sqr(x1) +6*xl+3;<br />

fxm = 2*sqr(xm) +6*xm+3;<br />

epsb = fxl * fxm ;<br />

if (epsb < 0.0) xr = xm;<br />

else xl = xm ;<br />

xm = 0.5 * (xl + xr) ;<br />

x=xm;<br />

}<br />

printf(" Akar persamaan %lf\n", x);<br />

return 1;<br />

}<br />

Sedangkan program berikut ini adalah untuk menampilkan urutan<br />

10 bilangan integer positif pertama beserta mencari salah satu angka<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> <strong>39</strong> <strong>—</strong> #53<br />

5.5. while statement <strong>39</strong><br />

apakbar angka tersebut berada di dalam urutan 10 bilangan positif<br />

pertama atau t<strong>id</strong>ak.<br />

#include<br />

int main(){<br />

int x = 10, numberFound= 5;<br />

int i = 0, j = 1;<br />

}<br />

// using while loop statement<br />

while(i < x){<br />

i++;<br />

printf("%d\n",i);<br />

}<br />

// when,escape loop body<br />

while(j < x){<br />

if(j == numberFound){<br />

printf("number found\n");<br />

break;<br />

}<br />

printf("%d...keep finding\n",j);<br />

j++;<br />

}<br />

return 1;<br />

Hasil luaran dari program tersebut adalah sebagai berikut:<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

1...keep finding<br />

2...keep finding<br />

3...keep finding<br />

4...keep finding<br />

number found<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 40 <strong>—</strong> #54<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 41 <strong>—</strong> #55<br />

Bab 6<br />

Lanjutan Perulangan (Loop)<br />

dan Contoh<br />

6.1 Pendahuluan<br />

Karena kita ketahui bersama bahwa proses perulangan (loop) sangat<br />

diperlukan untuk membuat suatu proses yang sama pernyataannya<br />

berulang-ulang, materi ini akan memperlihatkan penggunaan statement<br />

perulangan dalam program.<br />

6.2 Objektif<br />

Objektif dari pertemuan ini adalah (i) memperlihatkan dengan<br />

contoh penggunaan statement perulangan, dan (ii) mendiskusikan<br />

keluaran yang akan dihasilkan oleh program .<br />

6.3 Contoh Perulangan for (Lanjutan)<br />

6.3.1 Contoh 1<br />

Coba diskusikan dan bagaimana hasil dari potongan program berikut.<br />

for (i=0,total =0;scantf("%d",&number)==1;)<br />

{<br />

if (number < 0)<br />

{<br />

continue;<br />

}<br />

total +=number;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 42 <strong>—</strong> #56<br />

42 Bab 6. Lanjutan Perulangan (Loop) dan Contoh<br />

}<br />

printf("Jumlah bilangan positif yang dimasukan = %d\n", total);<br />

6.3.2 Contoh 2<br />

Coba diskusikan dan bagaimana hasil dari potongan program berikut.<br />

while ((c=getchar()) !=EOF)<br />

if (c== ’ ’)<br />

++blank_cnt;<br />

else<br />

if (c>= ’0’ && C = ’a’ && c= ’A’ && c= ’\n’)<br />

++nl_cnt;<br />

else<br />

++other_cnt;<br />

6.3.3 Contoh 3<br />

Coba diskusikan dan bagaimana hasil dari potongan program berikut.<br />

i=-5<br />

n=50;<br />

while (i


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 43 <strong>—</strong> #57<br />

6.3. Contoh Perulangan for (Lanjutan) 43<br />

}<br />

else<br />

{<br />

printf("password salah: ");<br />

printf("Masukkan Password : ");<br />

scanf("%s", pw);<br />

k++;<br />

}<br />

6.3.5 Contoh 5<br />

Coba diskusikan dan bagaimana hasil dari potongan program berikut.<br />

include <br />

int main (vo<strong>id</strong>)<br />

{<br />

int u15=0,u16=0,u17=0,u18=0,ul=0,n,u,i<br />

scanf("%d",&n);<br />

scanf("%d",&u);<br />

while (i = eps) {<br />

abseps= abs (xm - xl);<br />

fx1 = 2*sqr(x1) +6*xl+3;<br />

fxm = 2*sqr(xm) +6*xm+3;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 44 <strong>—</strong> #58<br />

44 Bab 6. Lanjutan Perulangan (Loop) dan Contoh<br />

}<br />

epsb = fxl * fxm ;<br />

if(epsb < 0.0) xr = xm;<br />

else xl = xm ;<br />

xm = 0.5 * (xl + xr) ; x=xm; }<br />

printf(" Akar persamaan %lf\n", x);<br />

printf("\nUlangi (Y/T) ? ");<br />

do {<br />

ch = toupper(getch());<br />

} while(!((ch==’Y’) || (ch ==’T’)));<br />

}<br />

while(!(ch == ’T’));<br />

return 1;<br />

6.3.7 Contoh 7<br />

Coba diskusikan dan bagaimana hasil dari potongan program berikut.<br />

#include<br />

int main(){<br />

int i,j;<br />

for(i=0, j=100; (i0); i++, j--) {<br />

printf("\n",i,j);<br />

if(i==j){<br />

printf("Mempunyai Nilai yang sama<br />

pada langkah ke %d\n",i);<br />

break;<br />

}<br />

}<br />

return 1;<br />

}<br />

6.3.8 Contoh 8<br />

Coba diskusikan dan bagaimana hasil dari potongan program berikut.<br />

#include<br />

int main(){<br />

int i,j;<br />

for(i=0; i=i; j--){<br />

printf("*");<br />

}<br />

printf("\n");<br />

}<br />

return 1;<br />

}<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 45 <strong>—</strong> #59<br />

Bab 7<br />

Array Satu Dimensi<br />

7.1 Pendahuluan<br />

Memahami konsep array dimensi satu yang dikombinasikan dengan<br />

penggunaan operator pre-increment dan pre-decrement, postincrement<br />

dan post decrement. Tipe data array juga dikenal dengan<br />

istilah aggregate data type. Array juga biasa disebut sebagai pointer<br />

tetap (fixed pointer) karena setelah d<strong>id</strong>eklarasikan, alamat awal dari<br />

array tersebut atau alamat pada slot 0 t<strong>id</strong>ak dapat diubah-ubah<br />

layaknya pointer biasa.<br />

7.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan cara pendeklarasian<br />

array, (ii) menjelaskan penggunaan array satu dimensi,<br />

dan (iii) memperlihatkan contoh array satu dimensi berserta visualisasinya.<br />

7.3 Definisi dan Pendeklarasian Array<br />

Array adalah kumpulan nilai dengan tipe data yang sama yang<br />

menggunakan nama sama. Array selain merupakan suatu bentuk<br />

struktur data juga merupakan pointer. Perbedaan utama antara<br />

array dengan ponter biasa adalah bahwa alamat yang ditunjuk oleh<br />

array pada saat d<strong>id</strong>eklarasi t<strong>id</strong>ak dapat diubah-ubah seperti halnya<br />

pointer yang lain.<br />

Cara pendeklarasian array sama seperti mendeklarasikan variabel<br />

denga tipe data yang lain, hanya saja diperlukan operator [ ] yang<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 46 <strong>—</strong> #60<br />

46 Bab 7. Array Satu Dimensi<br />

berisikan ukuran dari array yang d<strong>id</strong>eklarasikan. Bentuk umum<br />

pendeklarasian array adalah:<br />

tipeDataArray namaArray[ukuran]<br />

Dimana tipeDataArray adalah suatu tipe data untuk nilai dari sebuah<br />

array, namaArray adalah sebuah variabel array, dan ukuran adalah<br />

ukuran dari array. Berikut adalah beberapa contoh pendeklarasian<br />

array dengan tipe data dan ukuran yang berbeda-beda.<br />

int a[6] = {8, 4, 6, 3, 4, 10};<br />

int ageOfStudents[60];<br />

float ipkOfStudents[60];<br />

Contoh pertama diatas adalah mendeklarasikan sebuah array satu<br />

dimensi dengan variabel a bertipe data integer dan berukuran 6 dengan<br />

langsung memberikan nilai awalnya. Contoh berikutnya adalah<br />

mendeklarasikan sebuah array satu dimensi dengan variabel ageOf-<br />

Students bertipe data integer dan berukuran 60 tanpa memberikan<br />

nilai awalnya. Sedangkan contoh yang ketiga adalah mendeklarasikan<br />

sebuah array satu dimensi dengan variabel ipkOfStudents bertipe<br />

data float dan berukuran 60 tanpa memberikan nilai awalnya.<br />

7.4 Inisialisasi Nilai<br />

Sama halnya seperti penginisialisasian nilai pada variabel, array juga<br />

dapat diberikan nilai pada saat pendeklarasian. Gambar 7.1 adalah<br />

bagaimana pendeklarasian, penginisialisasian, dan pengvisualisasian<br />

array.<br />

Gambar 7.1: Contoh penginisialisasi array<br />

Pendeklarasian sebuah array membutuhkan sejumlah memori<br />

yang besarnya sesuai dengan besar ukuran tipe data dan ukuran array<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 47 <strong>—</strong> #61<br />

7.5. Indeks (Subscript) Dari Array 47<br />

itu sendiri. Jika diasumsikan alamat dari array A atau slot pertama<br />

dari array A di atas adalah 2310 dan ukuran dari tipe data int adalah<br />

4 bytes, maka visualisasi dari pendeklarasian array A ditunjukkan<br />

melalui Gambar 7.2<br />

Gambar 7.2: Visualisasi alamat array<br />

Adapun untuk menghitung total memori yang dibutuhkan dalam<br />

pendeklarasian sebuah array adalah dengan menggunakan formula<br />

berikut:<br />

TotalMemori(dalam satuan bytes)=sizeof(tipeData)*ukuran_array;<br />

7.5 Indeks (Subscript) Dari Array<br />

Indeks atau subscript dari array dalam C selalu dimulai dengan 0<br />

sampai dengan ukuran array - 1. Sebagai contoh float farr[10]; maka<br />

indeks dari array farr adalah seperti pada gambar di bawah ini.<br />

Gambar 7.3: Indeks (Subscript) dari array<br />

7.6 Alokasi Memory Array<br />

Array dapat d<strong>id</strong>eklarasikan secara global (deklarasi di luar fungsi<br />

main) dan secara lokal (d<strong>id</strong>alam sebuah fungsi atau main). Hati-<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 48 <strong>—</strong> #62<br />

48 Bab 7. Array Satu Dimensi<br />

hati jika kita mendeklarasikannya secara lokal, karena variabel lokal<br />

akan dibentuk dalam st<strong>ac</strong>k ketika fungsi tersebut dibentuk, dan akan<br />

dihapus ketika fungsi tersebut dihancurkan (ketika fungsi tersebut<br />

selesai dieksekusi). Mungkin hal ini t<strong>id</strong>ak bermasalah bagi variabel<br />

biasa, namun array umumnya akan menuntut jumlah memory yang<br />

sangat besar (array float mydata[5000]; akan membutuhkan memory<br />

sebesar 20000 bytes), sementara st<strong>ac</strong>k hanya memiliki kapasitas sekitar<br />

2000 - 4000 bytes. Oleh karena itu untuk array yang besar harus<br />

d<strong>id</strong>eklarasikan secara global, atau mempergunakan perintah static<br />

(misalnya static float mydata[5000];) ketika kita mendeklarasikannya<br />

secara local. Gambar 7.4 menampilkan contoh dari array satu<br />

dimensi.<br />

Gambar 7.4: Contoh penggunaan array dan visualisasinya<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 49 <strong>—</strong> #63<br />

Bab 8<br />

Array Dua Dimensi<br />

8.1 Pendahuluan<br />

Memahami konsep array multi dimensi yang dikombinasikan dengan<br />

penggunaan operator pre-increment dan pre-decrement, postincrement<br />

dan post decrement. C sebenarnya t<strong>id</strong>ak mempunyai array<br />

mult<strong>id</strong>imension. Akan tetapi karena sistem umum tipe C, maka kita<br />

bisa memiliki array dari array. Adapun array multi dimensi yang<br />

paling sederhana adalah array dua dimensi.<br />

8.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan cara pendeklarasian<br />

array dua dimensi, (ii) menjelaskan penggunaan array<br />

dua dimensi, dan (iii) menjelaskan penggunaan array dua dimensi<br />

(multi dimensi).<br />

8.3 Pendeklarasian Array Dua Dimensi<br />

Bentuk umum pendeklarasian array dua dimensi adalah:<br />

tipeArray namaArray[jmlBaris][jmlKolom];<br />

Dimana:<br />

• tipeArray adalah suatu tipe data untuk nilai dari sebuah array.<br />

• namaArray adalah sebuah variable array.<br />

• jmlBaris adalah ukuran baris dari array.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 50 <strong>—</strong> #64<br />

50 Bab 8. Array Dua Dimensi<br />

• jmlKolom adalah ukuran kolom dari array.<br />

Adapun contoh-contoh pendeklarain array dua dimensi yang<br />

benar dan salah di dalam program C adalah sebagai berikut:<br />

int a2[5][7]; /* Benar */<br />

float B[5][5]; /* Benar */<br />

char letter[5][3]; /* Benar */<br />

char letter[0][0] = ’a’; /* Benar */<br />

int a2[5, 7]; /* Salah */<br />

int a2[0, 4] = ’6’; /* Salah */<br />

Pada dasarnya, array dua dimensi merupakan array satu dimensi.<br />

Bila sebuah array dd d<strong>id</strong>eklarasikan menjadi array dua dimensi<br />

dengan menggunakan perintah int dd[3][7]; maka kita bisa memvisualisasikan<br />

array dd tersebut seperti yang terlihat pada gambar ??.<br />

Gambar 8.1: Visualisasi pendeklaraisin array dua dimensi<br />

8.4 Inisialisasi Nilai<br />

Sama halnya seperti penginisialisasian array satu dimensi, array<br />

dua dimensi juga dapat diberikan nilai pada saat pendeklarasian.<br />

Gambar 7.1 adalah bagaimana pendeklarasian, penginisialisasian,<br />

dan pengvisualisasian array.<br />

Sama halnya seperti pendeklarasian array satu dimensi, array dua<br />

dimensi juga membutuhkan sejumlah memori dalam pendeklarasiannya.<br />

Meskipun pada sub bab 9.3 telah ditunjukkan visualisasi<br />

pendeklarian array dua dimensi dalam bentuk kubus, sebenarnya<br />

array dua dimensi mengalokasikan memori secara berurutan dalam<br />

bentuk array satu dimensi. Adapun untuk menetukan jumlah memori<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 51 <strong>—</strong> #65<br />

8.5. Indeks (Subscript) Dari Array Dua Dimensi 51<br />

Gambar 8.2: Contoh penginisialisasi array dua dimensi<br />

yang dibutuhkan dalam pendeklarasian array dua dimensi dapat<br />

dihitung dengan menggunakan persamaan berikut:<br />

byte = sizeof(1st index)*sizeof(2nd index)*sizeof(tipe)<br />

8.5 Indeks (Subscript) Dari Array Dua Dimensi<br />

Indeks atau subscript dari array dalam C selalu dimulai dengan 0<br />

sampai dengan ukuran array - 1. Sebagai contoh float data[5][5];<br />

maka indeks dari array data adalah seperti pada gambar 8.3.<br />

Gambar 8.3: Indeks (Subscript) dari array dua dimensi<br />

8.6 Alokasi memori untuk Array Dua Dimensi<br />

Array dimensi dua secara umum sama dengan array satu dimensi.<br />

Bila d<strong>id</strong>eklarasi sebuah array int dd[3][4], maka array dd tersebut<br />

sebenarnya dialokasikan secara berurutan dalam bentuk array satu<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 52 <strong>—</strong> #66<br />

52 Bab 8. Array Dua Dimensi<br />

dimensi seperti yang terlihat pada gambar 8.4. Namun untuk<br />

lebih memudahkan kita memahami tentang array dua dimensi maka<br />

dibuatlah visualisasi array dua dimensi dalam bentuk kubus.<br />

Gambar 8.4: Visualisasi array dua dimensi dalam bentuk satu<br />

dimensi<br />

Perlu dipahami bahwa di dalam penentuan slot array dua dimensi<br />

t<strong>id</strong>ak sama seperti penentuan slot pada array satu dimensi. Seperti<br />

yang dijelaskan pada sub bab 7.5, penentuan slot array satu dimensi<br />

ditentukan dengan mengetahui alamat memori slot pertama dan<br />

ukuran tipe data variabel array tersebut. Jika sudah diketahui<br />

kedua parameter tersebut, dengan sangat mudah diketahui alamat<br />

memori untuk slot berikutnya. Akan tetapi untuk array dua dimensi<br />

tergantung dari nilai indeks baris atau kolomnya.<br />

Adapun penentuan slot Array dua dimensi dapat ditentukan<br />

dengan formula:<br />

dd[i][j] = base_address + sizeof(tipe) * i * 2nd index<br />

+ sizeof(tipe) * j<br />

Sebagai contoh, berdasarkan gambar 8.4, nilai dari array dd pada<br />

slot dd[2][3] adalah:<br />

dd[2][3] = 300 + sizeof(int) * 2 * 4 + sizeof(int) * 3<br />

asumsikan sizeof(int) = 4 byte, maka<br />

dd[2][3] = 300 + 4 * 2 * 4 + 4 * 3<br />

= 344<br />

8.7 Contoh Program Menggunakan Array Dua<br />

Dimensi<br />

8.7.1 Inisialiasi Nilai Array Dua Dimensi<br />

Program berikut mempunyai dua buah perulangan for yang berfungsi<br />

untuk memasukkan nilai-nilai ke dalam array num dan mencetak<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 53 <strong>—</strong> #67<br />

8.7. Contoh Program Menggunakan Array Dua Dimensi 53<br />

nilai-nilai tersebut pada output editor 1 . Nilai-nilai tersebut diperoleh<br />

dari kalkulasi variabel counter i dan j. Setelah setiap hasil increment<br />

dari kedua variabel tersebut disubsitusikan ke dalam formula num[i][j]<br />

= (i * 4) + j + 1;, maka diperoleh nilai-nilai untuk setiap slot dari<br />

array num. Hasil atau luaran dari program ?? dapat divisualisaikan<br />

melaui gambar 8.5.<br />

#include <br />

int main(vo<strong>id</strong>) {<br />

int i, j, num[3][4];<br />

}<br />

for(i=0; i


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 54 <strong>—</strong> #68<br />

54 Bab 8. Array Dua Dimensi<br />

8.7.2 Pengurutan Data Dalam Array<br />

Program berikut merupakan salah satu contoh program untuk mengurutkan<br />

data dengan menggunakan array dua dimensi.<br />

#include <br />

#define N 12<br />

int main(vo<strong>id</strong>) {<br />

int i, j, data[N] = {8,4,5,1,3,8,7,9,12,23,15,6};<br />

for(i=0; ii; j--)<br />

if(data[j] < data[j-1]) {<br />

int temp = data[j];<br />

data[j] = data[j-1];<br />

data[j-1] = temp;<br />

}<br />

/* Cetak data yang telah terurut */<br />

for(i=0; i


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 55 <strong>—</strong> #69<br />

Bab 9<br />

Pointer<br />

9.1 Pendahuluan<br />

Pointer yang merupakan variabel yang dapat memegang alamat dari<br />

suatu objek dalam memori. Pointer digunakan untuk melalukan<br />

akses dan manipulasi alamat memori. Dalam C, array dan pointer<br />

memiliki keterkaitan yang erat. Array adalah pointer yang tetap<br />

(fixed pointer) sedangkan pointer itu sendiri t<strong>id</strong>ak tetap, artinya<br />

alamat memori yang dipegangnya dapat berubah-ubah. Pemanggilan<br />

melalui alamat (call by reference) yang biasa diimplementasi pada<br />

fungsi dapat diwujudkan menggunakan pointer.<br />

9.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan cara pendeklarasian<br />

pointer, (ii) menjelaskan penggunaan pointer, (iii)menjelaskan<br />

konsep dereferensing (menb<strong>ac</strong>a / memberikan nilai yang ditunjuk oleh<br />

sebuah pointer), dan (iv) menjelaskan penggunaan indeks (subscript)<br />

pada pointer.<br />

9.3 Pendeklarasian Pointer<br />

Pointer d<strong>id</strong>eklarasikan untuk memegang dan mengakses alamat dalam<br />

memori. Jika p adalah suatu variable maka &p merupakan lokasi<br />

atau alamat dalam memori dimana sebuah nilai yang dipegang oleh<br />

p disimpan.<br />

Dalam C, simbol asterisk ’*’ digunakan untuk mendeklarasikan<br />

sebuah pointer. Simbol ini ditulis setealh setelah tipe data dan<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 56 <strong>—</strong> #70<br />

56 Bab 9. Pointer<br />

sebelum nama dari sebuah pointer. Sebagai contoh:<br />

int * pi;<br />

Sintaks umum pendeklarasian pointer adalah:<br />

tipe_data * nama_pointer;<br />

Simbol asterik ’*’ memberitahu kompiler bahwa sebuah pointer<br />

yang menyimpan alamat memori bertipe int d<strong>id</strong>eklarasikan. Pendeklarasian<br />

seperti contoh di atas hanya memberitahukan kompiler<br />

bahwa pi adalah pointer bertipe int tanpa memberikan nilai awal<br />

apapun kepada pointer pi. Sebuah pointer tanpa nilai awal akan<br />

secara otomatis memiliki nilai NULL. Pengujian terhadap pointer<br />

dapat dilakukan sebagai berikut:<br />

if (pi == NULL){<br />

:<br />

}<br />

9.4 Visualisasi Pointer<br />

Bila dalam program terdapat pernyataan sebagai berikut:<br />

int i = 2;<br />

int *pi = &i;<br />

maka visualisasi dari kedua pernyataan di atas terlihat seperti<br />

pada gambar 9.1.<br />

Gambar 9.1: Visualisasi pointer<br />

Artinya terdapat sebuah variabel i bertipe integer dengan nilai<br />

2 dan pi adalah sebuah pointer yang memegang atau menunjuk ke<br />

alokasi memori bertipe int yang dimiliki oleh i. Pernyataan:<br />

int *pi = &i;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 57 <strong>—</strong> #71<br />

9.5. Operator Dereferensing 57<br />

bermakna bahwa sebuah pointer pi bertipe int d<strong>id</strong>eklarasikan<br />

dengan nilai awal berupa alamat dari i yang bertipe int. Simbol<br />

& pada pernyataan di atas merupakan operator unari yang bearti<br />

alamat (address). Pada pernyataan di atas, nilai awal dari pi adalah<br />

alamat dari i dalam memori.<br />

9.5 Operator Dereferensing<br />

Operator dereferensing berarti pemb<strong>ac</strong>aan atau pemberian nilai<br />

data pada alamat yang dipegang oleh sebuah pointer. Operator<br />

deferensing juga menggunakan simbol asterik ’*’, akan tetapi sedikit<br />

berbeda dengan simbol asterik pada saat pendeklarasian pointer.<br />

Perhatikan pernyataan berikut:<br />

int i = 2;<br />

int *pi;<br />

pi = &i;<br />

*pi = 12;<br />

printf("%d\n", i);<br />

Hasil keluaran dari program di atas adalah 12, dengan kata<br />

lain variabel i yang pada awalnya bernilai 2 berubah nilainya<br />

akibat dari pernyataan *pi = 12. Hal ini menunjukkan bahwa<br />

operator dereferensing dapat mengubah nilai dari suatu memori<br />

melalui pointer. Pada contoh di atas pi menunjuk ke alamat i, dan<br />

dereferensing *pi = 12 mengakibatkan nilai dari i yang ditunjuk oleh<br />

pi berubah menjadi 12.<br />

Contoh Lain Operator Dereferensing<br />

int i = 2;<br />

int j = 3;<br />

int *pi;<br />

int *pj;<br />

pi = &i;<br />

pj = pi;<br />

*pj = 20;<br />

printf("%d\n", i);<br />

pj = &j;<br />

pi = pj;<br />

*pi = 30;<br />

printf("%d\n", j);<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 58 <strong>—</strong> #72<br />

58 Bab 9. Pointer<br />

20<br />

30<br />

Keluaran dari potongan program tersebut secara berurut adalah:<br />

Terlihat bahwa nilai i yang pada awalnya bernilai 2 berubah<br />

menjadi 20 akibat dari dereferensing pointer *pj = 20; sedangkan<br />

nilai dari j yang pada awalnya bernilai 3 berubah menjadi 30 akibat<br />

dari dereferensing pointer *pi = 30;<br />

Visualisasi langkah demi langkah dari contoh program sebelumnya<br />

adalah sebagai berikut:<br />

int i = 2;<br />

int j = 3;<br />

int *pi;<br />

int *pj;<br />

Potongan program diatas dapat divisualisasikan seperti pada gambar<br />

9.2.<br />

Selanjutnya, pernyataan:<br />

pi = &i;<br />

pj = pi;<br />

Gambar 9.2: Visualisasi pointer<br />

mengakibatkan pointer pi menampung alamat dari variabel i dan<br />

ponter pj berubah nilainya menjadi sama dengan nilai pi. Ilustrasinya<br />

adalah sebagai terlihat pada gambar 9.3.<br />

Pernyataan<br />

*pj = 20;<br />

printf("%d\n", i);<br />

mengakibatkan nilai variabel i yang ditunjuk oleh pointer pj<br />

berubah dari 2 menjadi 20.<br />

Selanjutnya, pernyataan:<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 59 <strong>—</strong> #73<br />

9.5. Operator Dereferensing 59<br />

pj = &j;<br />

pi = pj;<br />

Gambar 9.3: Visualisasi pointer<br />

Gambar 9.4: Visualisasi pointer<br />

mengakibatkan arah dari pointer pj berubah dan tunjuk ke alamat<br />

variabel j yang juga bertipe int. Kemudian, pointer pi menampung<br />

nilai dari alamat c yang sebelumnya ditunjuk oleh pointer pj.<br />

Gambar 9.5: Visualisasi pointer<br />

Dan yang terakhir pernyataan:<br />

*pi = 30;<br />

printf("%d\n", j);<br />

mengakibatkan nilai dari variabel yang ditunjuk oleh pi berubah<br />

menjadi 30 akibat adanya operator dereferensing *pi = 30.<br />

Jadi, kesimpulannya adalah dengan menggunakan pointer dan<br />

operator derefensing nilai dari suatu variabel dalam memori dapat<br />

dengan sangat mudah dimanipulasi. Hal inil membuat pointer<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 60 <strong>—</strong> #74<br />

60 Bab 9. Pointer<br />

Gambar 9.6: Visualisasi pointer<br />

menjadi sangat "powerful" dalam pemrograman sekaligus sebagai<br />

"the most possibility of bugs" atau dengan kata lain penyebab terbesar<br />

kesalahan dalam program. Oleh karena itu, pointer harus digunakan<br />

secara benar dan terkontrol.<br />

9.6 Pointer Vs Array<br />

Bila sebuah array d<strong>id</strong>eklarasikan dengan nama array a sebagai<br />

berikut:<br />

int a[6] = {8, 4, 6, 3, 4, 10};<br />

Gambar 9.7: Visualisasi pointer pada array<br />

Pemb<strong>ac</strong>aan data pada indeks ke 2 dari array a tersebut dapat dilakukan<br />

dengan menulis a[2]. Karena a adalah array dan merupakan<br />

pointer yang tetap (fixed pointer) maka operator dereferensing pun<br />

dapat diaplikasikan pada a.<br />

Gambar 9.8: Kesamaan array dengan pointer<br />

Bukti:<br />

a[2] = *(a+2) = *(a + sizeof(a) * 2)<br />

= *(a + 4 * 2)<br />

= *(2310 + 8) = *(2318)<br />

= 6<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 61 <strong>—</strong> #75<br />

9.7. String 61<br />

9.7 String<br />

C t<strong>id</strong>ak menyediakan tipe data primitif berupa string. String dalam<br />

pemrograman C direpresentasikan dengan menggunakan pointer bertipe<br />

char. Deklarasi:<br />

char * str = "Pemrograman C"<br />

mengakibatkan sebuah pointer str dibuat dengan nilai awal<br />

berupa kumpulan char yang membentuk kalimat Pemrograman C.<br />

Perhatikan dan diskusikan contoh program berikut:<br />

#include <br />

#include <br />

#include <br />

int main(vo<strong>id</strong>)<br />

{<br />

char ch[80], *pch = &ch[0];<br />

}<br />

strcpy(ch, "informatika <strong>unsyiah</strong>");<br />

putchar(*pch++);<br />

putchar((*pch)++);<br />

putchar(*++pch);<br />

putchar(*++pch);<br />

putchar(++*pch);<br />

putchar(++(*pch));<br />

putchar(++(*pch++));<br />

++pch;<br />

putchar(++(*++pch));<br />

putchar(’\n’);<br />

printf("%s\n",ch);<br />

return (EXIT_SUCCESS);<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 62 <strong>—</strong> #76<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 63 <strong>—</strong> #77<br />

Bab 10<br />

Fungsi<br />

10.1 Pendahuluan<br />

Fungsi atau function adalah sub program yang dibuat untuk tujuan<br />

tertentu dan dapat dieksekusi secara berulang dalam sebuah program.<br />

Prototipe fungsi boleh d<strong>id</strong>eklarasikan dalam sebuah atau beberapa<br />

file header, sebuah file yang berekstensi .h, sementara implementasi<br />

dari fungsi yang telah d<strong>id</strong>eklarasi sebelumnya dapat diimplementasi<br />

langsung dalam file header yang sama ataupun diimplementasi<br />

secara terpisah dalam file lain yang berekstensi .c. Salah satu<br />

tujuan dari pembuatan sebuah fungsi adalah mempermudah proses<br />

pengembangan dan perawatan program.<br />

10.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan cara mendefinisikan<br />

atau mendeklarasikan fungsi, (ii) menjelaskan cara mengeksekusi<br />

sebuah fungsi dalam program, (iii) memperkenalkan konsep<br />

called by value dan called by reference, dan (iv) memperkenalkan<br />

beberapa fungsi string.<br />

10.3 Pendeklarasian Fungsi<br />

Dalam C, bentuk umum pendeklarasian sebuah fungsi adalah mengikuti<br />

format berikut ini:<br />

tipe_data nama_fungsi(parameter) {<br />

pernyataan<br />

}<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 64 <strong>—</strong> #78<br />

64 Bab 10. Fungsi<br />

Dari format pendeklarasian fungsi di atas, dapat disimpulkan<br />

bahwa sebuah fungsi dapat memiliki nilai kembalian (return value)<br />

dan dapat pula t<strong>id</strong>ak memiliki nilai kembalian. Sebuah fungsi yang<br />

bertipe vo<strong>id</strong> adalah fungsi yang t<strong>id</strong>ak memiliki nilai kembalian,<br />

sedangkan fungsi yang memiliki nilai kembalian disebut sebagai<br />

fungsi bernilai. Nilai yang dikembalikan oleh sebuah fungsi harus<br />

sesuai dengan tipe−data yang d<strong>id</strong>eklarasikan pada saat sebuah fungsi<br />

d<strong>id</strong>eklarasikan.<br />

Tipe data dari sebuah fungsi dapat berupa vo<strong>id</strong>, int, float, double,<br />

long, struct dan lain-lain. Fungsi yang bertipe vo<strong>id</strong> t<strong>id</strong>ak akan<br />

mengirimkan nilai pada saat fungsi selesai dieksekusi, sementara<br />

fungsi yang bertipe selain vo<strong>id</strong> akan mengirimkan nilai kembalian<br />

pada saat fungsi tersebut selesai dieksekusi. Pengiriman nilai fungsi<br />

dilakukan menggunakan pernyataan return.<br />

Contoh:<br />

float celciusToFahreinheit(float celcius){<br />

return ((celcius * 9/5) + 32);<br />

}<br />

Contoh di atas memperlihatkan sebuah fungsi yang d<strong>id</strong>eklarasi<br />

dengan nama celciusToFahreinheit dan memiliki sebuah parameter<br />

dengan nama celcius dan bertipe float. Fungsi itu sendiri bertipe<br />

float, artinya setelah fungsi selesai dijalankan maka akan ada sebuah<br />

nilai dengan tipe float dikembalikan kepada variabel atau pernyataan<br />

yang memanggil fungsi itu. Untuk contoh di atas, pernyataan yang<br />

dikembalikan oleh fungsi adalah pernyataan setelah kata kunci return,<br />

yaitu ((celcius * 9/5) + 32.<br />

Perhatikan pendeklarasian fungsi penjumlahan berikut ini:<br />

int penjumlahan(int operan1, int operan2){<br />

return (operan1 + operan2);<br />

}<br />

Contoh di atas memperlihatkan pendeklarasian fungsi penjumlahan<br />

yang bertipe int dan memiliki dua buah parameter yaitu operan1<br />

dan operan2 yang kedua-duanya bertipe int. Tujuan dibuatnya fungsi<br />

penjumlahan tersebut adalah untuk menjumlahkan dua buah operan<br />

bertipe int dan mengembalikan nilai hasil penjumlahan itu kepada<br />

penyataan yang memanggilnya. Perhatikan conoth pemanggilan<br />

fungsi penjumlahan dalam sebuah program utama main().<br />

#include <br />

int main(vo<strong>id</strong>) {<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 65 <strong>—</strong> #79<br />

10.4. Fungsi Bertipe Vo<strong>id</strong> 65<br />

}<br />

int a, b, c;<br />

printf("Penjumlahan dua bilangan bulat\n");<br />

printf("a = "); scanf("%d", &a);<br />

printf("b = "); scanf("%d", &b);<br />

c = penjumlahan(a, b);<br />

printf("Hasil penjumlahan a + b = %d\n", c);<br />

return 1;<br />

10.4 Fungsi Bertipe Vo<strong>id</strong><br />

Fungsi bertipe vo<strong>id</strong> adalah fungsi yang t<strong>id</strong>ak memiliki return value<br />

dan t<strong>id</strong>ak memiliki pernyataan return dalam implementasinya. Program<br />

berikut memperlihatkan sebuah fungsi yang bertipe em vo<strong>id</strong>.<br />

vo<strong>id</strong> judulTabel() {<br />

printf("-----------------------\n");<br />

printf(" No. U r a i a n\n");<br />

printf("-----------------------\n");<br />

}<br />

Fungsi di atas juga t<strong>id</strong>ak memiliki parameter. Fungsi yang t<strong>id</strong>ak<br />

memiliki parameter hanya memiliki kurung buka dan kurung tutup<br />

setelah nama fungsinya tanpa ada parameter d<strong>id</strong>eklarasi d<strong>id</strong>alamnya.<br />

Cara pemanggilan fungsi yang t<strong>id</strong>ak memiliki return value sama<br />

dengan cara pemanggilan fungsi dengan return value. Bila saat<br />

dipanggil nilai fungsi yang memiliki return value nilainya biasanya<br />

ditampung oleh variabel yang lain, maka untuk fungsi yang t<strong>id</strong>ak<br />

memiliki return value, fungsi berdiri sendiri dan t<strong>id</strong>ak memberikan<br />

nilainya kepada variabel manapun. Perhatikan contoh program<br />

berikut:<br />

#include <br />

int main(vo<strong>id</strong>){<br />

int i;<br />

}<br />

judulTabel(); /*pemanggilan fungsi*/<br />

return 1;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 66 <strong>—</strong> #80<br />

66 Bab 10. Fungsi<br />

10.5 Jenis-Jenis Fungsi<br />

10.5.1 Fungsi Called by Value<br />

Pengiriman nilai parameter sebuah fungsi secara called by value<br />

dilakukan dengan mengkopi nilai yang dikirim kepada parameter.<br />

Perhatikan fungsi penjumlahan yang telah diperlihatkan sebelumnya.<br />

Fungsi tersebut memiliki dua buah parameter. Pada saat fungsi<br />

tersebut dipanggil dalam program, nilai variabel a dan b di-copy<br />

kepada parameter operan1 dan operan2. Jika nilai operan1 dan<br />

operan2 mengalami perubahan maka nilai variabel a dan b t<strong>id</strong>ak akan<br />

terpengaruh. Perhatikan contoh berikut ini:<br />

#include <br />

int penjumlahan(int, int); /* prototype fungsi */<br />

int main(vo<strong>id</strong>) {<br />

int a = 2, b = 6, c;<br />

c = penjumlahan(a, b);<br />

printf("Hasil penjumlahan a + b = %d\n", c);<br />

printf("a = %d\n", a);<br />

printf("b = %d\n", b);<br />

return 1;<br />

}<br />

int penjumlahan(int operan1, int operan2) {<br />

operan1 = operan1 + 2;<br />

return (operan1 + operan2);<br />

}<br />

Pada saat program tersebut dijalankan, memori dialokasikan<br />

untuk tiga buah variabel a, b dan c. Diketahui bahwa nilai variabel<br />

a adalah 2 dan nilai variabel b adalah 6, sementara nilai variabel c<br />

diawal t<strong>id</strong>ak memiliki nilai.<br />

Gambar 10.1: Visualisasi fungsi<br />

Pemanggilan fungsi pada pernyataan c=penjumlahan(a,b) mengakibatkan<br />

nilai dari variabel a dicopy kepada parameter operan1 dan<br />

nilai dari variabel b dicopy kepada parameter operan2. Perubahan<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 67 <strong>—</strong> #81<br />

10.5. Jenis-Jenis Fungsi 67<br />

nilai operan1 pada pernyataan operan1 = operan1 + 2 t<strong>id</strong>ak akan<br />

mengubah nilai dari variabel a yang sebelumnya bernilai 2. Keluaran<br />

dari program di atas adalah:<br />

Hasil penjumlahan a + b = 10<br />

a = 2<br />

b = 6<br />

10.5.2 Fungsi Called by Reference<br />

Pengiriman nilai parameter sebuah fungsi secara called by reference<br />

dilakukan dengan cara mengirim alamat memori dari suatu variabel<br />

kepada parameter yang bersesuaian dalam bentuk pointer. Pemberian<br />

alamat memori kepada parameter dapat mengubah nilai dari<br />

variabel yang alamatnya dikirim. Perhatikan contoh berikut ini:<br />

#include <br />

int penjumlahan(int *, int *); /* prototype fungsi */<br />

int main(vo<strong>id</strong>) {<br />

int a = 2, b = 6, c;<br />

c = penjumlahan(&a, &b);<br />

printf("Hasil penjumlahan a + b = %d\n", c);<br />

printf("a = %d\n", a);<br />

printf("b = %d\n", b);<br />

return 1;<br />

}<br />

int penjumlahan(int * pa, int * pb) {<br />

*pb = *pb - 3;<br />

return (*pa + *pb);<br />

}<br />

Pada saat program tersebut dijalankan, memori dialokasikan<br />

untuk tiga buah variabel a, b dan c. Diketahui bahwa nilai variabel<br />

a adalah 2 dan nilai variabel b adalah 6, sementara nilai variabel<br />

c diawal t<strong>id</strong>ak memiliki nilai. Visualisasinya bisa dilihat pada<br />

gambar 10.2.<br />

Pemanggilan fungsi pada pernyataan c=penjumlahan(&a,&b)<br />

mengakibatkan alamat dari variabel a diberikan kepada pointer pa<br />

dan alamat dari variabel b diberikan kepada pointer pb. Visualisasinya<br />

bisa dilihat pada gambar 10.3.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 68 <strong>—</strong> #82<br />

68 Bab 10. Fungsi<br />

Gambar 10.2: Visualisasi fungsi<br />

Gambar 10.3: Visualisasi fungsi<br />

Pernyataan *pb = *pb - 3 akan mengakibatkan nilai dari b<br />

yang sebelumnnya bernilai 6 berubah menjadi 3, sehingga hasil<br />

penjumlahan bernilai 5. Keluaran dari program di atas adalah:<br />

Hasil penjumlahan a + b = 5<br />

a = 2<br />

b = 3<br />

10.6 Fungsi String<br />

Beberapa fungsi yang berkaitan dengan manipulasi tipe data string<br />

telah diimplementasikan sebelumnya dalam C. String adalah untaian<br />

karakter atau sekumpulkan karakter. Berikut adalah beberapa fungsi<br />

untuk data string:<br />

• Mengkopi string sumber ke string target s termasuk karakter<br />

′ \0 ′ (terminated string)<br />

char * strcpy(char * s, char * source)<br />

• Menyambung string sumber ke string s<br />

char * strcat(char * s, char * source)<br />

• Membandingkan string s1 dengan string s2<br />

int strcmp(char * s1, char * s2). Fungsi strcmp akan mengirim<br />

nilai negatif bila string s1 s2.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 69 <strong>—</strong> #83<br />

10.6. Fungsi String 69<br />

Contoh:<br />

#include <br />

int main() {<br />

char string1[20];<br />

char string2[20];<br />

}<br />

strcpy(string1, "Ahmad");<br />

strcpy(string2, "Bani");<br />

printf("Return Value: %d\n", strcmp( string1, string2));<br />

strcpy(string1, "Hellooo");<br />

strcpy(string2, "Helloo");<br />

printf("Return Value: %d\n", strcmp( string1, string2));<br />

strcpy(string1, "Hello");<br />

strcpy(string2, "Hello");<br />

printf("Return Value: %d\n", strcmp( string1, string2));<br />

return 0;<br />

Contoh implementasi dari fungsi strcpy adalah sebagai berikut:<br />

char *strcpy(char *dest, *source){<br />

while ((*dest++ = *source++) !="\0");<br />

return dest;<br />

}<br />

Atau<br />

char *strcpy(char *dest, *source){<br />

while (*dest++ = *source++) ;<br />

return dest;<br />

}<br />

Contoh implementasi dari fungsi strcat adalah sebagai berikut:<br />

char *strcat(char *first, char *second){<br />

char *p;<br />

p =first;<br />

while (*p++) ;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 70 <strong>—</strong> #84<br />

70 Bab 10. Fungsi<br />

}<br />

--p;<br />

while (*p++ = *second++) ;<br />

return first;<br />

Perhatikan contoh program yang memanipulasi string berikut<br />

ini. Perhatikan bagaimana pointer pA dan pB dapat memanipulasi<br />

karakter yang disimpan dalam setiap slot array strA dan strB.<br />

Bentuk kelompok yang terdiri atas 2-3 orang dan d<strong>id</strong>iskusikan contoh<br />

program berikut ini.<br />

char strA[80] = "Sebuah string untuk tujuan demo";<br />

char strB[80];<br />

int main(vo<strong>id</strong>) {<br />

char *pA; /* sebuah pointer ke char<strong>ac</strong>ter */<br />

char *pB; /* sebuah pointer ke char<strong>ac</strong>ter */<br />

puts(strA); /* print string A */<br />

pA = strA; /* pointer pA tunjuk ke string A */<br />

puts(pA); /* tampilkan yang ditunjuk pA */<br />

pB = strB; /* pointe pB tunjuk ke string B */<br />

putchar(’\n’); /* buat baris baru */<br />

}<br />

/* selama *pA t<strong>id</strong>ak ’\0’ t<strong>id</strong>ak null */<br />

while(*pA != ’\0’)<br />

{<br />

*pB++ = *pA++;<br />

}<br />

*pB = ’\0’; /* beri null string kepada strB */<br />

puts(strB); /* print string B */<br />

return EXIT_SUCCESS;<br />

Fungsi yang Berkenaan dengan Karakter<br />

• int isalnum(int c)<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

adalah alphanumeric.<br />

• int isalpha(int c)<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

adalah alphabet.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 71 <strong>—</strong> #85<br />

10.6. Fungsi String 71<br />

• int iscntrl(int c)<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

adalah karakter kontrol yang t<strong>id</strong>ak dapat diprint seperti DEL,<br />

ESC, carriage return (CR), line feed (LF), dan lain-lain.<br />

• int isdigit(int c)<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

adalah digit.<br />

• int islower(int c)<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

adalah karakter huruf kecil.<br />

• int isupper (int c)<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

adalah karakter huruf besar.<br />

• int ispunct(int c);<br />

Fungsi ini akan mengembalikan nilai nonzero bila parameter c<br />

merupakan tanda b<strong>ac</strong>a.<br />

Sebelum fungsi-fungsi di atas dapat digunakan, #include <br />

harus ditulis dalam program.<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 72 <strong>—</strong> #86<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 73 <strong>—</strong> #87<br />

Bab 11<br />

File<br />

11.1 Pendahuluan<br />

File merupakan unit standar penyimpanan data yang menggunakan<br />

konsep stream dalam proses pengaksesannya. Stream merupakan<br />

penghubung antara programmer dengan file. Sebuah stream terhubung<br />

dengan file yang disimpan dalam media penyimpanan melalui<br />

operasi OPEN dan terputus dari file melalui operasi CLOSE. Ada dua<br />

jenis stream yang dikenal dala pemrograman C, yaitu stream tipe teks<br />

(text) dan stream tipe binari (binary).<br />

11.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan struktur data<br />

file, (ii) menjelaskan cara membuka, mengakses dan menutup file<br />

menggunakan stream teks, dan (iii) memperlihatkan beberapa contoh<br />

program yang menggunakan struktur data file.<br />

11.3 File<br />

Stream terhubung dengan file yang disimpan dalam media penyimpanan<br />

melalui operasi OPEN dan terputus dengan file melalui operasi<br />

CLOSE. Perintah membuka sebuah file dilakukan dengan fungsi<br />

fopen yang telah diimplementasikan dan prototipenya d<strong>id</strong>efinisikan<br />

dalam library stdio.h, sementara perintah menutup sebuah file dapat<br />

dilakukan menggunakan fungsi fclose( ).<br />

FILE *fopen(char *nama_file, char *mode)<br />

FILE *fclose(FILE *file_pointer)<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 74 <strong>—</strong> #88<br />

74 Bab 11. File<br />

Mekanisme mengakses sebuah file ditentukan dari parameter mode.<br />

Nilai dari parameter mode dapay dilihat melalui tabel 11.1.<br />

Tabel 11.1: Parameter Mode untuk Akses File<br />

Mode Arti<br />

r Membuka sebuah file teks untuk pemb<strong>ac</strong>aan saja (read only)<br />

w Membuat sebuah file teks untuk penulisan<br />

a Menambahkan (append) data ke dalam sebuah file teks<br />

rb Membuka sebuah file binary untuk pemb<strong>ac</strong>aan saja<br />

wb Membuat sebuah file binary untuk penulisan<br />

ab Menambahkan data ke dalam sebuah file binary<br />

r+ Membuka sebuah file teks untuk pemb<strong>ac</strong>aan/penulisan<br />

w+ Membuat sebuah file teks untuk pemb<strong>ac</strong>aan/penulisan<br />

a+ Menambahkan data/membuat file teks untuk pemb<strong>ac</strong>aan/penulisan<br />

r+b/rb+ Membuka sebuah file binary untuk pemb<strong>ac</strong>aan/penulisan<br />

w+b/wb+ Membuat sebuah file binary untuk pemb<strong>ac</strong>aan/penulisan<br />

a+b/ab+ Menambahkan data ke file binary untuk pemb<strong>ac</strong>aan/penulisan<br />

Perhatikan penggalan dari program berikut ini:<br />

FILE *ifp, *ofp;<br />

ifp = fopen("input_file","r");<br />

ofp = fopen("output_file","w");<br />

:<br />

:<br />

• ifp dan ofp adalah pointer ke FILE.<br />

• ifp tunjuk ke file dengan nama input−file dan file ini diakses<br />

dengan mode pemb<strong>ac</strong>aan saja (read-only).<br />

• ofp tunjuk ke file dengan nama output−file dan file ini diaskes<br />

dengan mode penulisan, artinya file output−file akan dibuat<br />

jika t<strong>id</strong>ak ditemukan dalam media penyimpanan dan akan<br />

ditimpa (overwrite) jika file dengan nama yang sama telah ada<br />

dalam media penyimpanan.<br />

11.4 Beberapa Contoh Manipulasi File<br />

Contoh 1. Buka File, B<strong>ac</strong>a Isinya dan Tulis ke Media Output<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 75 <strong>—</strong> #89<br />

11.4. Beberapa Contoh Manipulasi File 75<br />

Satu-Satu Karakter.<br />

#include <br />

#include <br />

#include <br />

int main (vo<strong>id</strong>){<br />

int c;<br />

FILE *fp;<br />

char *filename = "data.txt";<br />

}<br />

if((fp = fopen(filename, "r"))==NULL){<br />

printf("Error dalam mengakses file...\n");<br />

return EXIT_FAILURE;<br />

}<br />

while((c=fgetc(fp)) != EOF){<br />

putchar(toupper(c));<br />

}<br />

fclose(fp);<br />

return EXIT_SUCCESS;<br />

Contoh 2. Buka File, Jumlahkan, dan Tulis Penjumlahan ke<br />

dalam File.<br />

#include <br />

#include <br />

int main (vo<strong>id</strong>){<br />

int a, sum = 0;<br />

FILE *ifp, *ofp;<br />

ifp = fopen("input_file.txt", "r");<br />

ofp = fopen("output_file.txt", "w");<br />

}<br />

while (fscanf(ifp,"%d",&a)==1){<br />

sum += a;<br />

}<br />

fprintf(ofp, "Jumlah = %d\n",sum);<br />

fclose(ifp);<br />

fclose(ofp);<br />

return EXIT_SUCCESS;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 76 <strong>—</strong> #90<br />

76 Bab 11. File<br />

Contoh 3. Buka File, Jumlahkan, dan Tulis Penjumlahan ke<br />

dalam File.<br />

#include <br />

#include <br />

#include <br />

int main(vo<strong>id</strong>){<br />

FILE *fp;<br />

int ch;<br />

fp = fopen("output_file.txt", "w");<br />

fprintf(fp, "%s", "Program Studi Informatika\n");<br />

fprintf(fp, "%s", "UNSYIAH, Banda Aceh 23111\n\n\n");<br />

fclose(fp);<br />

}<br />

if((fp = fopen("output_file.txt", "r"))==NULL) {<br />

printf("Error dalam mengakses file...\n");<br />

return EXIT_FAILURE;<br />

}<br />

while ((ch=fgetc(fp))!=EOF) {<br />

putchar(tolower(ch));<br />

}<br />

fclose(fp);<br />

return EXIT_SUCCESS;<br />

11.5 Beberapa Fungsi untuk Manipulasi File<br />

Teks<br />

• int fgetc(FILE *fp)<br />

Memb<strong>ac</strong>a sebuah byte dari sebuah stream<br />

• int fputc(int ch, FILE *fp)<br />

Menulis sebuah byte ke dalam sebuah stream<br />

• char *fgets(char *str, int num, FILE *fp)<br />

Memb<strong>ac</strong>a untaian karakter (string) dari sebuah stream<br />

• int fputs(char *str, FILE *fp)<br />

Menulis untaian karakter (string) ke dalam sebuah stream<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 77 <strong>—</strong> #91<br />

Bab 12<br />

Typedef & Struct<br />

12.1 Pendahuluan<br />

Kata kunci typedef dapat digunakan untuk membuat alias dari<br />

suatu tipe data. Struct merupakan perintah yang dapat digunakan<br />

untuk membuat struktur dari suatu record. Sebuah record bisa<br />

memiliki domain yang heterogen. Sebagai contoh, sebuah record<br />

yang merepresentasikan tentang seseorang memiliki atribut berupa<br />

nama yang bertipe string, umur yang bertipe integer, dan tinggi yang<br />

bertipe double. Biasanya penggunaan typedef dikombinasikan dalam<br />

pendeklarasian sebuah struct.<br />

12.2 Objektif<br />

Objektif dari materi ini adalah (i) memperkenalkan penggunaan<br />

typedef, (ii) memperkenalkan penggunaan struct, (iii) memperlihatkan<br />

cara mendeklarasi struct menggunakan kata kunci typedef.<br />

12.3 Typedef<br />

Kata kunci typedef dalam pemrograman C/C++ digunakan untuk<br />

membuat alias dari sebuah tipe data yang rumit. Walaupun typedef<br />

bisa digunakan untuk membuat alias dari pendefinisian tipe data<br />

primitif, typedef juga sering digunakan untuk mendefinisikan alias<br />

dari tipe data struct dan union. Perhatikan beberapa contoh<br />

penggunaan kata kunci typedef dalam pendeklarasian sebuah alias:<br />

typedef int Time;<br />

Time hours, minutes, seconds;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 78 <strong>—</strong> #92<br />

78 Bab 12. Typedef & Struct<br />

Pada contoh di atas, variabel Time merupakan alias dari tipe<br />

data primitif int. Setelah pendeklarasian alias int menjadi Time,<br />

pada saat pendeklarasian variabel hours, minutes, dan seconds, tipe<br />

data Time dapat digunakan sebagai tipe data dari ketiga variabel<br />

tersebut. Selanjutnya, pada saat variabel hours, minutes, dan seconds<br />

d<strong>id</strong>eklarasikan, tipe data Time sudah dapat digunakan sebagai tipe<br />

data ketiga variabel tersebut. Sama halnya juga terjadi pada contoh<br />

berikut ini:<br />

typedef char * String;<br />

String nama_mahasiswa, alamat_mahasiswa;<br />

Dalam C, pointer ke char<strong>ac</strong>ter merupakan satu-satunya cara<br />

mendeklarasi tipe data string. Pada contoh di atas, dengan menggunakan<br />

kata kunci typedef, sebuah tipe data baru String yang<br />

merupakan alias dari tipe data char* d<strong>id</strong>eklarasikan. Selanjutnya,<br />

tipe data baru tersebut digunakan sebagai tipe data dari variabel<br />

nama−mahasiswa dan alamat−mahasiswa.<br />

12.4 Penggunaan Typedef Pada Array<br />

Pendeklarasian sebuah array bertipe int dilakukan dengan cara:<br />

int x[100];<br />

Alias dari array bertipe int berukuran 100 tersebut dapat dibuat<br />

menggunakan kata kunci typedef sebagai berikut:<br />

• Langkah 1: Ganti variabel x dengan nama alias, misalnya<br />

Larik.<br />

int Larik[100];<br />

• Langkah 2: Tambahkan kata kunci typedef sehingga menjadi:<br />

typedef int Larik[100];<br />

• Langkah 3: Pendeklarasian variabel dengan tipe Larik berukuran<br />

100 adalah:<br />

Larik a, b, c;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 79 <strong>—</strong> #93<br />

12.5. Contoh Penggunaan Typedef 79<br />

12.5 Contoh Penggunaan Typedef<br />

Contoh 1:<br />

#define N 3<br />

typedef float Scalar;<br />

typedef Scalar Vector[N];<br />

vo<strong>id</strong> addVector(Vector a, Vector b, Vector c) {<br />

int i;<br />

for(i=0; i


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 80 <strong>—</strong> #94<br />

80 Bab 12. Typedef & Struct<br />

Atau dapat juga menggunakan kata kunci typedef pada saat<br />

mendeklarasikan struct tgl tersebut dengan menambahkan alias<br />

Tanggal dibagian akhir proses pendeklarasian struct itu.<br />

typedef struct tgl{<br />

int hari;<br />

int bulan;<br />

int tahun;<br />

}Tanggal;<br />

Tanggal date;<br />

Contoh di atas memperlihatkan bagaimana struct tgl yang memiliki<br />

member hari, bulan, dan tahun yang bertipe int d<strong>id</strong>eklarasikan.<br />

Menggunakan kata kunci typedef, alias dari struct tgl dibuat. Selanjutnya,<br />

variabel date dapat d<strong>id</strong>eklarasi bertipe alias Tanggal tersebut.<br />

Untuk mengakses anggota (member) dari sebuah struct, operator titik<br />

digunakan. Sebagai ilustrasi, perhatikan contoh berikut ini.<br />

date.hari = 2;<br />

date.tahun = 2001;<br />

Pernyataan di atas mengakibatkan anggota dari struct date di<br />

atas memiliki nilai seperti tampak pada gambar 12.1.<br />

Gambar 12.1: Visualisasi struct<br />

12.7 Pointer ke Sebuah Struct<br />

Pendeklarasian sebuah pointer ke struct tgl dapat dilakukan dengan<br />

cara:<br />

Tanggal date;<br />

Tanggal * pdate = &date;<br />

Karena pdate merupakan pointer ke alias Tanggal dan date adalah<br />

sebuah variabel bertipe Tanggal, maka perintah pdate = &date;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 81 <strong>—</strong> #95<br />

12.7. Pointer ke Sebuah Struct 81<br />

Gambar 12.2: Visualisasi struct<br />

mengakibatkan pointer pdate tunjuk ke alamat dari variabel date.<br />

Ilustrasi ini dapat dilihat melalui gambar 12.2<br />

Untuk mengakses member dalam struct date menggunakan pointer<br />

pdate di atas, operator panah (->) harus digunakan sebelum nama<br />

member. Contoh:<br />

pdate -> hari = 2<br />

pdate -> bulan = 11<br />

pdate -> tahun = 1999;<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 82 <strong>—</strong> #96<br />

✐<br />

✐<br />

✐<br />


✐<br />

✐<br />

✐<br />

✐<br />

<strong>“bukuAjar”</strong> <strong>—</strong> <strong>2011</strong>/9/<strong>22</strong> <strong>—</strong> <strong>13</strong>:<strong>39</strong> <strong>—</strong> <strong>page</strong> 83 <strong>—</strong> #97<br />

Daftar Pustaka 83<br />

Daftar Pustaka<br />

Bronson, G. and H. Silver (1993). C for Engineers and Scientists: An<br />

Introduction to Programming with ANSI C. West Publishing Co.<br />

Feuer, A. (1998). The C Puzzle Book. Addison-Wesley Professional.<br />

Horton, I. (2006). Beginning C: From Novice to Professional, 4th<br />

edition. Apress.<br />

Jensen, T. Pointer Tutorial. URL: http://www.netcom.com/<br />

~tjensen/ptr/cpoint.htm.<br />

Kelly, A. and I. P. (1998). A Book on C: Programming in C, 4th<br />

edition. California: The Benjamin/Cummings Publishing Co.<br />

Kernighan, B. and D. M. Ritchie (1988). The C Programming<br />

Language, 2nd edition. Prentice Hall, Inc.<br />

Kochan, S. (2005). Programming in C: A Complete Introduction to<br />

the C Programming Language, 3rd edition. Sams Publishing.<br />

Solter, N. A. and S. Kleper (2005). Professional C++. Wiley<br />

Publishing Inc.<br />

Vine, M. (2007). C Programming for the Absolute Beginner, 2nd<br />

edition. Course Technology PTR.<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!