PEMOGRAMAN BAHASA C. Oleh: SALAHUDDIN, SST

dokumen-dokumen yang mirip
BAB I SEKILAS TENTANG C

BAB II DASAR-DASAR PEMROGRAMAN C

Bab 2. Dasar-Dasar Pemrograman C

BAB III PENGAMBILAN KEPUTUSAN

PENGENALAN BAHASA C. Praktikum 3

PRAKTIKUM 3 DASAR PEMROGRAMAN C

Bab 1. Pengenalan Pemrograman C

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA

Data bisa dinyatakan dalam bentuk konstanta atau variabel.

Praktikum 3 DASAR-DASAR PEMROGRAMAN C

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

Sekilas Tentang C. Dasar Pemrograman & Algoritma

PRAKTIKUM 3 DASAR PEMROGRAMAN C

Tipe Data Dasar. Data bisa dinyatakan dalam bentuk konstanta atau variabel.

Objectives Menjelaskan sejarah dan ruang lingkup pemakaian bahasa C Menjelaskan kelebihan dan kekurangan bahasa C Menjelaskan proses kompilasi dan lin

Objectives Menjelaskan sejarah dan ruang lingkup pemakaian bahasa C Menjelaskan kelebihan dan kekurangan bahasa C Menjelaskan proses kompilasi dan lin

BAB I PENGENALAN BAHASA C

PRAKTIKUM 2 SEKILAS TENTANG C

TIPE DATA DAN OPERASI I/O

BAB 4 PENGENALAN BAHASA C

Pengantar Visual C++ & Penulisan Program

Chapter 1 KONSEP DASAR C

Tipe Data Dasar. Berdasarkan jenisnya, data dapat dibagi menjadi lima kelompok dinamakan tipe data dasar, yaitu:

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Bahasa C-M6 By Jamilah, Skom 1

KONSEP DASAR PROGRAM BAHASA C

Operasi Input Output

Praktikum 4 PENGAMBILAN KEPUTUSAN

Teknik Pemrograman Terstruktur 1 PENGENALAN BAHASA C

Bahasa Pemrograman (2 SKS Teori & 2 SKS Praktikum)

Achmad Solichin.

BAHASA PEMROGRAMAN C

Pengambilan Keputusan DASAR PEMROGRAMAN

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Tipe Data dan Variabel

Algoritma Pemrograman. Fery Updi,M.Kom

P3 Pengantar Pemrograman C

Pengambilan Keputusan. Konsep Pemrograman Oleh Tita Karlita

Praktikum 3 PENGAMBILAN KEPUTUSAN

Tipe Data dan Operator

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

1.1. Sejarah Bahasa C

P - 3 Bab 2 : Pengantar Pemrograman C

PENGENALAN PROGRAM C++

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

Bab 3. Decision 1 (Pengambilan Keputusan)

BAB 1 KONSEP DASAR BAHASA C

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

KONSEP DASAR BAHASA C

Bab 4. Decision 2 (Pengambilan Keputusan)

Tipe Data, Variabel, Input/Output

PRAKTIKUM 7 FUNGSI 1

Fungsi : Dasar Fungsi

OPERATOR DAN UNGKAPAN

DASAR PEMROGRAMAN. PENGENAL dan VARIABEL

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

PEMROGRAMAN BAHASA C BAB II 2.1 STRUKTUR BAHASA C

PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator

Review: Algoritme dan Program 12/29/2011. Algoritme dan Pemrograman. Review: Bagaimana memecahkan masalah dengan komputer?????

Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

9/9/2011 ILKOM IPB 1 ALGORITME DAN PEMROGRAMAN. Review: Algoritme dan Program. Bahasa tingkat rendah (low level language)

Struktur Bahasa C dan C++

3. Elemen Dasar C++ S. Indriani S. L., M.T L.,

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

PENGENALAN C++ DADANG MULYANA 2012

ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n.

MODUL 1 STANDAR INPUT DAN OUTPUT

BAB VII STRING Konstanta String Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda, misalnya:

BUKU PETUNJUK PRAKTIKUM DASAR ALGORITMA DAN PEMROGRAMAN

MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN REVISI II EDY BUDIMAN, M.T PROGRAM STUDI TEKNIK INFORMATIKA

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

OPERATOR & UNGKAPAN. Contoh operator : a + b Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua operandnya ( yaitu a dan b ).

elemen Dasar Bahasa Pemrograman C

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

PENGENALAN C++ Bab 1

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

SUMBER BELAJAR PENUNJANG PLPG

BAB IV PENGULANGAN PROSES

PRAKTIKUM 10 STRING A B C D E \0. Gambar 11.1 Komposisi penyimpanan string dalam memori

Tipe Data dan Variabel. Dosen Pengampu Muhammad Zidny Naf an, M.Kom

Algoritma dan Pemrograman

BAB 5 PERULANGAN DAN ARRAY

Modul IV Pemrograman Bahasa C ( bagian I )

PRAKTIKUM 4 PENGAMBILAN KEPUTUSAN

Keg. Pembelajaran 2 : Mengenal Bahasa C++

BAB V BAHASA C I. 5.1 Pendahuluan

OPERATOR BAHASA C. Obyektif : 4. Mengetahui macam-macam operator dalam Bahasa C. 5. Mengetahui dan dapat menggunakan format pada tiap tipe data..

Dasar Pemrograman Mikrokontroler dengan Bahasa C

Pengenalan Bahasa C week 1

Algoritma & Pemrograman

ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

Struktur Program Bahasa C

Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda, misalnya:

DASAR PEMROGRAMAN C BAB III 3.1 PENGENAL / IDENTIFIER

FUNGSI INPUT & OUTPUT

Transkripsi:

PEMOGRAMAN BAHASA C Oleh: SALAHUDDIN, SST POLITEKNIK NEGERI LHOKSEUMAWE 2008

DAFTAR ISI Daftar Isi ii BAB I SEKILAS TENTANG C 1 1.1 Sejarah dan Ruang Lingkup C 1 1.2 Kelebihan dan Kelemahan C 2 1.3 Proses Kompilasi dan Linking Program C 3 1.4 Struktur Penulisan Program C 5 1.5 Pengenalan Program C 6 1.5.1 Pengenalan Fungsi-Fungsi Dasar 6 1.5.2 Pengenalan Praprosesor #include 8 1.5.3 Komentar dalam Program 8 Kesimpulan 9 Latihan 10 BAB II DASAR-DASAR PEMROGRAMAN C 11 2.1 Tipe Data Dasar 11 2.2 Variabel 12 2.2.1 Aturan Pendefinisian Variabel 12 2.2.2 Mendeklarasikan Variabel 12 2.2.3 Memberikan Nilai ke Variabel 13 2.2.4 Inisialisasi Variabel 13 2.3 Konstanta 14 2.4 Operator 14 2.4.1 Operator Aritmatika 15 2.4.2 Operator Penurunan dan Penaikan 16 2.4.3 Prioritas Operator Aritmatika 17 2.4.4 Operator Penugasan 18 2.4.5 Operator Kombinasi (Pemendekan) 18 2.5 Menampilkan Data ke Layar 19 2.5.1 Fungsi printf() 19 2.5.2 Fungsi putchar() 23 2.6 Memasukkan Data dari Keyboard 23 2.6.1 Fungsi scanf() 23 2.6.2 Fungsi getchar() 25 Kesimpulan 26 Latihan 26 BAB III PENGAMBILAN KEPUTUSAN 28 3.1 Operator Kondisi 28 3.1.1 Operator Relasi 29 3.1.2 Operator Logika 29 3.1.3 Prioritas Operator Logika dan Relasi 31 3.2 Pernyataan if 32 3.3 Pernyataan if-else 34 3.4 Pernyataan if di dalam if 35 3.5 Pernyataan else-if 37 3.6 Pernyataan switch 39 Kesimpulan 41 Latihan 42 BAB IV PENGULANGAN PROSES 44 4.1 Pernyataan for 44 4.2 Pernyataan while 49 4.3 Pernyataan do-while 52 4.4 Pernyataan break 55 4.5 Pernyataan continue 56 4.6 Loop di dalam Loop (nested loop) 58 4.7 Pernyataan goto 60 4.8 Menggunakan exit() Untuk Menghentikan Eksekusi Program 61 Kesimpulan 62 Latihan 63

BAB V FUNGSI 64 5.1 Dasar Fungsi 64 5.2 Memberikan Nilai Keluaran Fungsi 66 5.3 Fungsi dengan Keluaran Bukan Integer 69 5.4 Prototipe Fungsi (Function Prototype) 71 5.5 Parameter Formal dan Parameter Aktual 73 5.6 Cara Melewatkan Parameter 74 5.7 Penggolongan Variabel Berdasarkan Kelas Penyimpanan 79 5.7.1 Variabel Lokal 79 5.7.2 Variabel Eksternal 81 5.7.3 Variabel Statis 84 5.7.4 Variabel Register 85 5.8 Menciptakan Sejumlah Fungsi 86 5.9 Rekursi 87 5.10 Pengenalan Konsep Pemrograman Terstruktur 89 Kesimpulan 90 Latihan 90 BAB VI ARRAY 92 6.1 Array Berdimensi Satu 92 6.1.1 Mendeklarasikan Array Berdimensi Satu 92 6.1.2 Mengakses Elemen Array Berdimensi Satu9 93 6.1.3 Inisialisasi Array Berdimensi Satu 95 6.1.4 Beberapa Variasi dalam Mendeklarasikan Array 97 6.2 Array Berdimensi Dua 97 6.2.1 Mendeklarasikan Array Berdimensi Dua 97 6.2.2 Mengakses Elemen Array Berdimensi Dua 97 6.2.3 Inisialisasi Array Berdimensi Dua 100 6.3 Array Berdimensi Banyak 102 6.4 Inisialisasi Array Tak Berukuran 105 6.5 Array Sebagai Parameter 107 Kesimpulan 112 Latihan 112 BAB VII. STRING 114 7.1 Konstanta dan Variabel String 114 7.1.1 Konstanta String 114 7.1.2 Variabel String 115 7.2 Inisialisasi String 115 7.3 Input Output Data String 116 7.3.1 Memasukkan Data String 116 7.3.2 Menampilkan Isi Variabel String 118 7.4 Mengakses Elemen String 119 7.5 Fungsi-Fungsi Mengenai String 122 7.5.1 Fungsi strcpy() untuk Menyalin Nilai String 122 7.5.2 Fungsi strlen() untuk Mengetahui Panjang Nilai String 123 7.5.3 Fungsi strcat() untuk Menggabung Nilai String 123 7.5.4 Fungsi strcmp() untuk Membandingkan Dua Nilai String 124 7.5.5 Fungsi strchr() untuk Mencari Nilai Karakter dalam String 125 Kesimpulan 127 Latihan 128 BAB VIII POINTER 129 8.1 Konsep Dasar Pointer 129 8.2 Mendeklarasikan Variabel Pointer 130 8.3 Mengatur Pointer agar Menunjuk ke Variabel Lain 130 8.4 Mengakses Isi Suatu Variabel Melalui Pointer 131 8.5 Mengakses dan Mengubah Isi Suatu Variabel Pointer 134 8.6 Pointer dan Array 135 8.7 Pointer dan String 137 8.8 Array dari Pointer 139 8.9 Pointer Menunjuk Pointer 140 8.10 Pointer dalam Fungsi 141 8.10.1 Pointer sebagai parameter fungsi 141 8.10.2 Pointer sebagai keluaran fungsi (return value) 143

Kesimpulan 144 Latihan 145 IX STRUKTUR 146 9.1 Mendefinisikan & Mendeklarasikan Struktur 146 9.2 Mengakses Elemen Struktur 148 9.3 Menginisialisasi Struktur 149 9.4 Array dan Struktur 151 9.5 Struktur dan Fungsi 154 9.5.1 Melewatkan Elemen Struktur ke dalam Fungsi 155 9.5.2 Melewatkan Struktur ke dalam Fungsi 157 9.6 Struktur dan Pointer (Pointer ke Struktur) 158 Kesimpulan 160 Latihan 161 BAB X DATA TINGKAT LANJUT 162 10.1 Union 162 10.2 Bitfield 165 10.3 Enumerasi 170 10.4 Typedef 173 10.5 Ternary Operation 175 10.6 Tipe Cast 176 Kesimpulan 178 Latihan 179 BAB XI OPERASI FILE 180 11.1 Struktur File 180 11.2 Tahapan Operasi File 181 11.2.1 Membuka / Mengaktifkan File 181 11.2.2 Menutup File 183 11.3 Operasi Penyimpanan dan Pembacaan File Per Karakter 183 11.3.1 Fungsi fputc() 183 11.3.2 Fungsi fgetc() 185 11.4 File Biner dan File Teks 186 11.5 Operasi Penyimpanan dan Pembacaan File Per Int 187 11.6 Operasi Penyimpanan dan Pembacaan File Per Blok 190 11.7 Menyimpan dan Membaca Data String pada File 193 11.8 Mengakses File Biner secara Acak 197 11.9 Menghapus File 203 11.10 Mengganti Nama File 204 Kesimpulan 205 Latihan 206

Tujuan : BAB I SEKILAS TENTANG C 1. Menjelaskan sejarah dan ruang lingkup pemakaian bahasa C 2. Menjelaskan kelebihan dan kekurangan bahasa C 3. Menjelaskan proses kompilasi dan linking program C 4. Menjelaskan struktur penulisan bahasa C dan menjelaskan komponen-komponen program dalam contoh aplikasi sederhana 1.1. Sejarah dan Ruang Lingkup C Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut dengan B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ritchie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories). Bahasa C pertama kali digunakan pada komputer Digital Equipment Corporation PDP-11 yang menggunakan sistem operasi UNIX. C adalah bahasa yang standar, artinya suatu program yang ditulis dengan versi bahasa C tertentu akan dapat dikompilasi dengan versi bahasa C yang lain dengan sedikit modifikasi. Standar bahasa C yang asli adalah standar dari UNIX. Sistem operasi, kompiler C dan seluruh program aplikasi UNIX yang esensial ditulis dalam bahasa C. Patokan dari standar UNIX ini diambilkan dari buku yang ditulis oleh Brian Kerninghan dan Dennis Ritchie berjudul "The C Programming Language", diterbitkan oleh Prentice- Hall tahun 1978. Deskripsi C dari Kerninghan dan Ritchie ini kemudian dikenal secara umum sebagai "K&R C". Kepopuleran bahasa C membuat versi-versi dari bahasa ini banyak dibuat untuk komputer mikro. Untuk membuat versi-versi tersebut menjadi standar, ANSI (American National Standards Institute) membentuk suatu komite (ANSI committee X3J11) pada tahun 1983 yang kemudian menetapkan standar ANSI untuk bahasa C. Standar ANSI ini didasarkan kepada standar UNIX yang diperluas. Standar ANSI menetapkan sebanyak 32 buah kata-kata kunci (keywords) standar. Versi-versi bahasa C yang menyediakan paling tidak 32 kata-kata kunci ini dengan sintaks yang sesuai dengan yang ditentukan oleh standar, maka dapat dikatakan mengikuti standar ANSI. Buku ajar ini didasarkan pada bahasa C dari standar ANSI. Pada saat ini C merupakan bahasa pemrograman yang sangat populer di dunia. Banyak pemrograman yang dibuat dengan bahasa C seperti assembler, interpreter, program paket, sistem operasi, editor, kompiler, program bantu, Word Star, Dbase, aplikasi untuk bisnis, matematika, dan game, bahkan ada pula yang menerapkannya untuk kecerdasan buatan. Dalam beberapa literatur bahasa C digolongkan sebagai bahasa tingkat menengah. Penggolongan ke dalam bahasa tingkat menengah bukanlah berarti bahwa bahasa C lebih sulit dibandingkan dengan bahasa tingkat tinggi seperti PASCAL atau BASIC. Demikian juga bahasa C bukanlah bahasa yang berorientasi pada mesin seperti bahasa mesin dan assembly. Pada kenyataannya bahasa C mengkombinasikan elemen dalam bahasa tingkat tinggi dan bahasa tingkat rendah. Kemudahan dalam membuat program yang ditawarkan pada bahasa tingkat tinggi dan kecepatan eksekusi dari bahasa tingkat rendah merupakan tujuan diwujudkannya bahasa C.

1.2. Kelebihan dan Kelemahan C. Beberapa kelebihan dari bahasa C: Bahasa C tersedia hampir di semua jenis komputer, baik mikro, mini maupun komputer besar (mainframe computer). Kode bahasa C bersifat portabel. Suatu aplikasi yang ditulis dengan bahasa C untuk suatu komputer tertentu dapat digunakan di komputer lain hanya dengan sedikit modifikasi. Berbagai struktur data dan pengendalian proses disediakan dalam C sehingga memungkinkan untuk membuat program yang terstruktur. Struktur bahasa yang baik, selain mudah dipelajari juga memudahkan dalam pembuatan program, pelacakan kesalahan program dan akan menghasilkan dokumentasi program yang baik. Dibandingkan dengan bahasa mesin atau assembly, C jauh lebih mudah dipahami dan pemrogram tidak perlu mengetahui mesin komputer secara detil. Dengan demikian tidak akan menyita waktu yang terlampau banyak dalam menyelesaikan suatu masalah ke dalam bentuk program. Hal ini dikarenakan C merupakan bahasa yang berorientasi pada permasalahan, bukan berorientasi pada mesin. C memungkinkan memanipulasi data dalam bentuk bit maupun byte. Di samping itu juga memungkinkan untuk memanipulasi alamat dari suatu data atau pointer. Adapun kelemahan bahasa C yang dirasakan oleh para pemula bahasa C: Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai. Kalau tidak dikuasai sudah tentu akan menimbulkan masalah. Para pemrogram C tingkat pemula umumnya belum pernah mengenal pointer dan tidak terbiasa menggunakannya. Padahal keampuhan C justru terletak pada pointer. Kesulitan yang diuraikan di depan akan bersifat sementara saja. Kalau para pemula C mau mempelajarinya, sebenarnya tak ada yang dikatakan sulit sekali mengenai C. Mereka yang sudah terbiasa justru menyatakan bahwa bekerja dengan C sangat menyenangkan. Pepatah mengatakan Di mana ada kemauan di situ ada jalan dan Jika tak kenal maka tak sayang. 1.3. Proses Kompilasi dan Linking Program C Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh komputer, program haruslah diterjemahkan dahulu ke dalam kode mesin. Adapun penerjemah yang digunakan bisa berupa interpreter atau kompiler. Interpreter adalah suatu jenis penerjemah yang menerjemahkan baris per baris intsruksi untuk setiap saat. Keuntungan pemakaian interpreter, penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program. Sedangkan kelemahannya, kecepatannya menjadi lambat sebab sebelum suatu instruksi dijalankan selalu harus diterjemahkan terlebih dahulu. Selain itu, saat program dieksekusi, interpreter juga harus berada dalam memori. Jadi memori selalu digunakan baik untuk program maupun interpreter. Di samping itu, program sumber (source program) yaitu program aslinya tidak dapat dirahasiakan (orang lain selalu bisa melihatnya).

Kebanyakan versi C yang beredar di pasaran menggunakan penerjemah berupa kompiler. Kompiler merupakan jenis penerjemah yang lain, dengan cara kerjanya yaitu menerjemahkan seluruh instruksi dalam program sekaligus. Proses pengkompilasian ini cukup dilakukan sekali saja. Selanjutnya hasil penerjemahan (setelah melalui tahapan yang lain) bisa dijalankan secara langsung, tanpa tergantung lagi oleh program sumber maupun kompilernya. Keuntungannya, proses eksekusi dapat berjalan dengan cepat, sebab tak ada lagi proses penerjemahan. Di samping itu, program sumber bisa dirahasiakan, sebab yang dieksekusi adalah program yang sudah dalam bentuk kode mesin. Sedangkan kelemahannya, proses pembuatan dan pengujian membutuhkan waktu relatif lebih lama, sebab ada waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu melakukan proses linking. Perlu pula diketahui, program akan berhasil dikompilasi hanya jika program tak mengandung kesalahan secara kaidah sama sekali. Proses dari bentuk program sumber C (source program, yaitu program yang ditulis dalam bahasa C) hingga menjadi program yang executable (dapat dieksekusi secara langsung) ditunjukkan pada Gambar 1.1 di bawah ini. EDITOR EDITOR FILE INCLUDE (FILE JUDUL) xxx.h FILE PROGRAM SUMBER yyy.c KOMPILER FILE PUSTAKA (library file) FILE OBYEK FILE OBYEK LAIN LINKER FILE EXECUTABLE Gambar 1.1 Proses Kompilasi-Linking dari program C Keterangan Gambar : Pertama-tama program C ditulis dengan menggunakan editor. Program ini disimpan dalam file yang disebut file program sumber (dengan ciri utama memiliki ekstensi.c).

File include (umumnya memiliki ekstensi.h, misalnya stdio.h, atau biasa disebut dengan file judul (header file)) berisi kode yang akan dilibatkan dalam program C (Pada program tertentu bisa saja tidak melibatkan file include). Berikutnya, kode dalam file program sumber maupun kode pada file include akan dikompilasi oleh kompiler menjadi kode obyek. Kode obyek ini disimpan pada file yang biasanya berekstensi.obj, atau.o (bergantung kepada lingkungan/environment sistem operasi yang dipakai). Kode obyek berbentuk kode mesin, oleh karena itu tidak dapat dibaca oleh pemrogram. Akan tetapi kode ini sendiri juga belum bisa dipahami komputer. Supaya bisa dimengerti oleh komputer, maka kode obyek bersama-sama dengan kode obyek yang lain (kalau ada) dan isi file pustaka (library file, yaitu file yang berisi rutin untuk melaksanakan tugas tertentu. File ini disediakan oleh pembuat kompiler, biasanya memiliki ekstensi.lib) perlu dikaitkan (linking) dengan menggunakan linker, membentuk sebuah program yang executable (program yang dapat dijalankan/dieksekusi secara langsung dalam lingkungan sistem operasi). Program hasil linker ini disimpan dalam file yang disebut file executable, yang biasanya berekstensi.exe. 1.4. Struktur Penulisan Program C Untuk dapat memahami bagaimana suatu program ditulis, maka struktur dari program harus dimengerti terlebih dahulu. Tiap bahasa komputer mempunyai struktur program yang berbeda. Struktur program memberikan gambaran secara luas, bagaimana bentuk program secara umum. Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah program minimal mengandung sebuah fungsi. Fungsi pertama yang harus ada dalam program C dan sudah ditentukan namanya adalah. Setiap fungsi terdiri atas satu atau beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan tugas khusus. Bagian pernyataan fungsi (sering disebut tubuh fungsi) diawali dengan tanda kurung kurawal buka () dan diakhiri dengan tanda kurung kurawal tutup (). Di antara kurung kurawal itu dapat dituliskan statemen-statemen program C. Namun pada kenyataannya, suatu fungsi bisa saja tidak mengandung pernyataan sama sekali. Walaupun fungsi tidak memiliki pernyataan, kurung kurawal haruslah tetap ada. Sebab kurung kurawal mengisyaratkan awal dan akhir definisi fungsi. Berikut ini adalah struktur dari program C statemen-statemen; fungsi utama fungsi_fungsi_lain() statemen-statemen; fungsi-fungsi lain yang ditulis oleh pemrogram

Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagiannya (subroutine). Fungsi-fungsi yang ada selain fungsi utama () merupakan program-program bagian. Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakkan di file pustaka (library). Jika fungsi-fungsi diletakkan di file pustaka dan akan dipakai di suatu program, maka nama file judulnya (header file) harus dilibatkan dalam program yang menggunakannya dengan preprocessor directive berupa #include. 1.5.Pengenalan Program C 1.5.1. Pengenalan Fungsi-Fungsi Dasar a. Fungsi Pada program C, merupakan fungsi yang istimewa. Fungsi harus ada pada program, sebab fungsi inilah yang menjadi titik awal dan titik akhir eksekusi program. Tanda di awal fungsi menyatakan awal tubuh fungsi dan sekaligus awal eksekusi program, sedangkan tanda di akhir fungsi merupakan akhir tubuh fungsi dan sekaligus adalah akhir eksekusi program. Jika program terdiri atas lebih dari satu fungsi, fungsi biasa ditempatkan pada posisi yang paling atas dalam pendefinisian fungsi. Hal ini hanya merupakan kebiasaan. Tujuannya untuk memudahkan pencarian terhadap program utama bagi pemrogram. Jadi bukanlah merupakan suatu keharusan. b. Fungsi printf(). Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu keluaran pada layar peraga. Untuk menampilkan tulisan Selamat belajar bahasa C misalnya, pernyataan yang diperlukan berupa: printf( Selamat belajar bahasa C ); Pernyataan di atas berupa pemanggilan fungsi printf() dengan argumen atau parameter berupa string. Dalam C suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik-ganda ( ). Perlu juga diketahui pernyataan dalam C selalu diakhiri dengan tanda titik koma (;). Tanda titik koma dipakai sebagai tanda pemberhentian sebuah pernyataan dan bukanlah sebagai pemisah antara dua pernyataan. Tanda \ pada string yang dilewatkan sebagai argumen printf() mempunyai makna yang khusus. Tanda ini bisa digunakan untuk menyatakan karakter khusus seperti karakter baris-baru ataupun karakter backslash (miring kiri). Jadi karakter seperti \n sebenarnya menyatakan sebuah karakter. Contoh karakter yang ditulis dengan diawali tanda \ adalah: \ menyatakan karakter petik-ganda \\ menyatakan karakter backslash \t menyatakan karakter tab

Dalam bentuk yang lebih umum, format printf() printf( string kontrol, daftar argumen); dengan string kontrol dapat berupa satu atau sejumlah karakter yang akan ditampilkan ataupun berupa penentu format yang akan mengatur penampilan dari argumen yang terletak pada daftar argumen. Mengenai penentu format di antaranya berupa: Contoh: %d untuk menampilkan bilangan bulat (integer) %f untuk menampilkan bilangan titik-mengambang (pecahan) %c untuk menampilkan sebuah karakter %s untuk menampilkan sebuah string main( ) printf( No : %d\n, 10); printf( Nama : %s\n, Ali ); printf( Nilai : %f\n,80.5); printf( Huruf : %c\n, A ); 1.5.2. Pengenalan Praprosesor #include #include merupakan salah satu jenis pengarah praprosesor (preprocessor directive). Pengarah praprosesor ini dipakai untuk membaca file yang di antaranya berisi deklarasi fungsi dan definisi konstanta. Beberapa file judul disediakan dalam C. File-file ini mempunyai ciri yaitu namanya diakhiri dengan ekstensi.h. Misalnya pada program menyatakan pada kompiler agar membaca file bernama stdio.h saat pelaksanaan kompilasi. Bentuk umum #include: #include namafile Bentuk pertama (#include <namafile>) mengisyaratkan bahwa pencarian file dilakukan pada direktori khusus, yaitu direktori file include. Sedangkan bentuk kedua (#include namafile ) menyatakan bahwa pencarian file dilakukan pertama kali pada direktori aktif tempat program sumber dan seandainya tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan perintah pada sistem operasi. Kebanyakan program melibatkan file stdio.h (file-judul I/O standard, yang disediakan dalam C). Program yang melibatkan file ini yaitu program yang menggunakan pustaka I/O (input-output) standar seperti printf().

1.5.3. Komentar dalam Program Untuk keperluan dokumentasi dengan maksud agar program mudah dipahami di suatu saat lain, biasanya pada program disertakan komentar atau keterangan mengenai program. Dalam C, suatu komentar ditulis dengan diawali dengan tanda /* dan diakhiri dengan tanda */. Contoh : /* Tanda ini adalah komentar */ printf( Coba\n ); /* Ini adl program pertama */ Kesimpulan : Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Bahasa C pertama kali digunakan pada komputer Digital Equipment Corporation PDP-11 yang menggunakan sistem operasi UNIX. C adalah bahasa yang standar, artinya suatu program yang ditulis dengan versi bahasa C tertentu akan dapat dikompilasi dengan versi bahasa C yang lain dengan sedikit modifikasi. Standar bahasa C yang asli adalah standar dari UNIX. Interpreter adalah suatu jenis penerjemah yang menerjemahkan baris per baris intsruksi untuk setiap saat, sedangkan kompiler merupakan jenis penerjemah cara kerjanya adalah menerjemahkan seluruh instruksi dalam program sekaligus. Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Fungsi merupakan fungsi istimewa yang harus ada pada program, sebab fungsi inilah yang menjadi titik awal dan titik akhir eksekusi program. Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu keluaran pada layar peraga. #include merupakan salah satu jenis pengarah praprosesor (preprocessor directive) yang dipakai untuk membaca file yang di antaranya berisi deklarasi fungsi dan definisi konstanta. Untuk keperluan dokumentasi, di dalam program disertakan komentar yang ditulis dengan diawali dengan tanda /* dan diakhiri dengan tanda */.

Latihan : Buatlah potongan program untuk soal-soal di bawah ini 1. Apakah keluaran dari program di bawah ini : printf("the black dog was big. "); printf("the cow jumped over the moon.\n"); 2. Gunakan pernyataan printf() untuk menampilkan (di layar) nilai dari sebuah variabel (misalkan namanya = sum) yang bertipe integer. 3. Gunakan pernyataan printf() untuk menampilkan (di layar) string Welcome yang diikuti dengan sebuah perintah ganti baris. 4. Gunakan pernyataan printf() untuk menampilkan (di layar) sebuah karakter dari variabel yang bertipe karakter (misalkan namanya = letter). 5. Gunakan pernyataan printf() untuk menampilkan (di layar) nilai dari sebuah variabel float (misalkan namanya = discount). 6. Gunakan pernyataan scanf() untuk membaca masukan sebuah nilai desimal dari keyboard dan memasukkannya ke sebuah variabel integer (misalkan namanya = sum). 7. Gunakan pernyataan scanf() untuk membaca masukan nilai float dari keyboard dan memasukkannya ke sebuah variabel float (misalkan namanya = discount_rate). 8. Gunakan pernyataan scanf() untuk membaca masukan sebuah karakter dari keyboard dan memasukkannya ke sebuah variabel karakter (misalkan namanya = opr). Tujuan : BAB II DASAR-DASAR PEMROGRAMAN 1. Menjelaskan tentang beberapa tipe data dasar (jenis dan jangkauannya) 2. Menjelaskan tentang Variabel 3. Menjelaskan tentang konstanta 4. Menjelaskan tentang berbagai jenis operator dan pemakaiannya 5. Menjelaskan tentang instruksi I/O 2.1. Tipe Data Dasar Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel. Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat diubahubah selama eksekusi berlangsung, Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan sebagai tipe data dasar. Kelima tipe data dasar adalah:

Bilangan bulat (integer) Bilangan real presisi-tunggal Bilangan real presisi-ganda Karakter Tak-bertipe (void), keterangan lebih lanjut tentang void dijelaskan dalam Bab V. Kata-kunci yang berkaitan dengan tipe data dasar secara berurutan di antaranya adalah int (short int, long int, signed int dan unsigned int), float, double, dan char. Tabel 2-1 memberikan informasi mengenai ukuran memori yang diperlukan dan kawasan dari masing-masing tipe data dasar. Tabel 2-1. Ukuran memori untuk tipe data Tipe Total bit Kawasan Keterangan char 8-128 s/d 127 karakter int 32-2147483648 s/d 2147483647 bilangan integer float 32 1.7E-38 s/d 3.4E+38 bilangan real presisi-tunggal double 64 2.2E-308 s/d 1.7E+308 bilangan real presisi-ganda Untuk tipe data short int, long int, signed int dan unsigned int, maka ukuran memori yang diperlukan serta kawasan dari masint-masing tipe data adalah sebagai berikut : Tabel 2-2 Ukuran memori untuk tipe data int Catatan : Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis mesin yang digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda dengan mesin 32 bit). 2.2 Variabel 2.2.1 Aturan Pendefinisan Variabel Aturan penulisan pengenal untuk sebuah variabel, konstanta atau fungsi yang didefinisikan oleh pemrogram adalah sebagai berikut : Pengenal harus diawali dengan huruf (A..Z, a..z) atau karakter garis bawah ( _ ). Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah atau tanda dollar ($). Tipe Total bit Kawasan Keterangan short int 16-32768 s/d 32767 short integer long int 32-2147483648 s/d 2147483647 long integer signed int 32-2147483648 s/d 2147483647 biasa disingkat dengan int unsigned int 32 0 s/d 4294967295 bilangan int tak bertanda Panjang pengenal boleh lebih dari 31 karakter, tetapi hanya 31 karakter pertama yang akan dianggap berarti.

Pengenal tidak boleh menggunakan nama yang tergolong sebagai kata-kata cadangan (reserved words) seperti int, if, while dan sebagainya. 2.2.2 Mendeklarasikan Variabel Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang akan digunakan dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya. Bentuk umum deklarasi variabel: tipe daftar-variabel; Pada pendeklarasian varibel, daftar-variabel dapat berupa sebuah variabel atau beberapa variabel yang dipisahkan dengan koma. Contoh: int var_bulat1; float var_pecahan1, var_pecahan2; 2.2.3 Memberikan Nilai ke Variabel Untuk memberikan nilai ke variabel yang telah dideklarasikan, maka bentuk umum pernyataan yang digunakan adalah : nama_variabel = nilai; Contoh: int var_bulat = 10; double var_pecahan = 10.5; 2.2.4 Inisialisasi Variabel Adakalanya dalam penulisan program, setelah dideklarasikan, variabel langsung diberi nilai awal. Sebagai contoh yaitu variabel nilai : int nilai; nilai = 10; Dua pernyataan di atas sebenarnya dapat disingkat melalui pendeklarasian yang disertai penugasan nilai, sebagai berikut : int nilai= 10; Cara seperti ini banyak dipakai dalam program C, di samping menghemat penulisan pernyataan, juga lebih memberikan kejelasan, khususnya untuk variabel yang perlu diberi nilai awal (diinisialisasi). 2.3 Konstanta Konstanta menyatakan nilai yang tetap. Berbeda dengan variabel, suatu konstanta tidak dideklarasikan. Namun seperti halnya variabel, konstanta juga memiliki tipe. Penulisan konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing.

Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik tunggal, contohnya : A dan @. Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tak mengandung bagian pecahan, contohnya : 1 dan 32767. Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e), contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5 (maksudnya 2,1 x 10 5 ). Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik-ganda ( ), contohnya : Pemrograman Dasar C. 2.4 Operator Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai. Sebagian operator C tergolong sebagai operator binary, yaitu operator yang dikenakan terhadap dua buah nilai (operand). Contoh : a + b Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua operand-nya (yaitu a dan b). Karena operator penjumlahan melibatkan dua operator ini tergolong sebagai operator binary. -c Simbol - (minus) juga merupakan operator. Simbol ini termasuk sebagai operator unary, yaitu operator yang hanya memiliki sebuah operand (yaitu c pada contoh ini). 2.4.1. Operator Aritmatika Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah : * perkalian / pembagian % sisa pembagian + penjumlahan - pengurangan Adapun operator yang tergolong sebagai operator unary. - tanda minus + tanda plus Contoh pemakaian operator aritmatika misalnya untuk memperoleh nilai diskriminan dari suatu persamaan kuadrat : D = b 2 4ac /* File program : diskrim.c Menghitung diskriminan pers kuadrat ax^2 + bx + c = 0 */

# include <stdio.h> float a,b,c,d; a = 3.0f; b = 4.0f; c = 7.0f; d = b*b-4*a*c; printf( Diskriminan =%f\n,d); Contoh eksekusi : Diskriminan = -84.000000 Operator yang telah dituliskan di atas, yang perlu diberi penjelasan lebih lanjut adalah operator sisa pembagian. Beberapa contoh berikut kiranya akan memperjelas makna dari operator ini. Sisa pembagian bilangan 7 dengan 2 adalah 1 (7 % 2 1) Sisa pembagian bilangan 6 dengan 2 adalah 0 (6 % 2 0) Sisa pembagian bilangan 8 dengan 3 adalah 1 (8 % 3 2) Kegunaan operator ini diantaranya bisa dipakai untuk menentukan suatu bilangan bulat termasuk ganjil atau genap, berdasarkan logika : Jika bilangan habis dibagi dua (sisanya nol), bilangan termasuk genap. Sebaliknya, termasuk ganjil. 2.4.2. Operator Penurunan dan Penaikan Masih berkaitan dengan operasi aritmatika, C menyediakan operator yang disebut sebagai operator penaikan dan operator penurunan, yaitu : ++ operator penaikan -- operator penurunan Operator penaikan digunakan untuk menaikkan nilai variabel sebesar satu. Penempatan operator terhadap variabel dapat dilakukan di muka atau di belakangnya, contohnya : x = x+1; y = y+1; Bisa ditulis menjadi : ++x; --y; atau : x++;

y--; Bergantung pada kondisi yang dibutuhkan oleh pemrogram. Di bawah ini adalah contoh yang akan menunjukkan perbedaan pemakaian dan hasil dari ++x dengan x++ (atau pemakaian y-- dengan -y). /* File program : pre_post.c Contoh penggunaan pre & post Increment operator */ int count = 0, loop; loop = ++count; /* count=count+1; loop=count; */ printf("loop = %d, count = %d\n", loop, count); loop = count++; /* loop=count; count=count+1; */ printf("loop = %d, count = %d\n", loop, count); Contoh eksekusi : loop = 1, count = 1 loop = 1, count = 2 2.4.3. Prioritas Operator Aritmatika Tabel di bawah ini memberikan penjelasan mengenai prioritas dari masing-masing operator. Operator yang mempunyai prioritas tinggi akan diutamakan dalam hal pengerjaan dibandingkan dengan operator yang memiliki prioritas lebih rendah. Tabel 2.3 Tabel prioritas operator aritmatika dan urutan pengerjaannya PRIORITAS OPERATOR URUTAN PENGERJAAN Tertinggi ( ) dari kiri ke kanan! ++ -- + - dari kanan ke kiri *) * / % dari kiri ke kanan + - dari kiri ke kanan *) Terendah = += -= *= /= %= dari kanan ke kiri *) Bentuk unary + dan unary memiliki prioritas yang lebih tinggi daripada bentuk binary + dan binary - 2.4.4. Operator Penugasan Operator penugasan (assignment operator) digunakan untuk memindahkan nilai dari suatu ungkapan (expression) ke suatu pengenal. Operator pengerjaan yang umum digunakan dalam bahasa pemrograman, termasuk bahasa C adalah operator sama dengan (=). Contohnya :

fahrenheit = celcius * 1.8 + 32; Maka = adalah operator penugasan yang akan memberikan nilai dari ungkapan : celcius * 1.8 + 32 kepada variabel fahrenheit. Bahasa C juga memungkinkan dibentuknya statemen penugasan menggunakan operator pengerjaan jamak dengan bentuk sebagai berikut : pengenal1 = pengenal2 = = ungkapan ; Misalnya : a = b = 15; maka nilai variabel a akan sama dengan nilai variabel b akan sama dengan 15. 2.4.5 Operator Kombinasi (Pemendekan) C menyediakan operator yang dimaksudkan untuk memendekkan penulisan operasi penugasan semacam x = x + 2; y = y * 4; menjadi x += 2; y *= 4; Daftar berikut memberikan seluruh kemungkinan operator kombinasi dalam suatu pernyataan serta pernyataan padanannya. Tabel 2.4 Seluruh kemungkinan operator kombinasi dan padanannya x += 2; kependekan dari x = x + 2; x -= 2; kependekan dari x = x - 2; x *= 2; kependekan dari x = x * 2; x /= 2; kependekan dari x = x / 2; x %= 2; kependekan dari x = x % 2; x <<= 2; kependekan dari x = x << 2; x >>= 2; kependekan dari x = x >> 2; x &= 2; kependekan dari x = x & 2; x = 2; kependekan dari x = x 2; x ^= 2; kependekan dari x = x ^ 2; 2.5. Menampilkan Data ke Layar Untuk keperluan menampilkan data/informasi, C menyediakan sejumlah fungsi. Beberapa di antaranya adalah berupa printf() dan putchar().

2.5.1. Fungsi printf() Fungsi printf() merupakan fungsi yang paling umum digunakan dalam menampilkan data. Berbagai jenis data dapat ditampilkan ke layar dengan memakai fungsi ini. Bentuk umum pernyataan printf() : printf( string kontrol,argumen1, argumen2,...); String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu format (seperti %d, %f,%c). Penentu format dipakai untuk memberi tahu kompiler mengenai jenis data yang akan ditampilkan. Argumen sesudah string kontrol (argumen1, argumen2,...)adalah data yang akan ditampilkan ke layar. Argumen ini dapat berupa variabel, konstanta dan bahkan ungkapan. Misal : printf( %d,20); /* argumen berupa konstanta */ printf( %d,a); /*argumen berupa variabel */ printf( %d,a+20); /*argumen berupa ungkapan */ Penentu format untuk data string atau karakter : %c untuk menampilkan sebuah karakter %s untuk menampilkan sebuah string Untuk menampilkan data bilangan, penentu format yang dipakai berupa salah satu dari bentuk dalam Tabel 2.5. Tabel 2.5 Penentu format pada printf() %u untuk menampilkan data bilangan tak bertanda (unsigned) dalam bentuk desimal. %d untuk menampilkan bilangan integer bertanda (signed) dalam bentuk desimal %i %o untuk menampilkan bilangan bulat tak bertanda dalam bentuk oktal. %x untuk menampilkan bilangan bulat tak bertanda dalam bentuk heksadesimal %X (%x notasi yang dipakai : a, b, c, d, e dan f sedangkan %X notasi yang dipakai : A, B, C, D, E dan F ) %f untuk menampilkan bilangan real dalam notasi : dddd.dddddd %e untuk menampilkan bilangan real dalam notasi eksponensial %E %g untuk menampilkan bilangan real dalam bentuk notasi seperti %f,%e atau %F %G bergantung pada kepresisian data (digit 0 yang tak berarti tak akan ditampilkan) l merupakan awalan yang digunakan untuk %d,%u,%x,%x,%o untuk menyatakan long int (misal %ld). Jika diterapkan bersama %e,%e,%f,%f,%g atau %G akan menyatakan double L Merupakan awalan yang digunakan untuk %f,%e,%e,%g dan %G untuk menyatakan long double h Merupakan awalan yang digunakan untuk %d,%i,%o,%u,%x, atau %X, untuk menyatakan short int. Contoh di bawah ini akan menjelaskan perbedaan format %g, %e dan %f dalam menampilkan bilangan real.

/*File program : form_efg.c Perbedaan format %g, %e dan %f */ float x = 251000.0f; printf( Format e => %e\n, x); printf( Format f => %f\n, x); printf( Format g => %g\n, x); Contoh eksekusi : Format e => 2.510000e+005 Format f => 251000.000000 Format g => 251000 Tampak bahwa penentu format %e menampilkan bilangan dalam bentuk eksponensial. Jika penentu fomat yang digunakan berupa %f, bagian pecahan secara default akan ditampilkan dalam bentuk 6 digit. Sedangkan jika digunakan penentu format %g, maka digit yang tak berarti tak akan ditampilkan. Untuk menentukan panjang medan yang disediakan bagi tampilan data, maka sesudah tanda % dalam penentu format dapat disisipi dengan bilangan bulat yang menyatakan panjang medan. Untuk data yang berupa bilangan bulat, misal pada : printf( Abad %4d, 20); %4d menyatakan medan untuk menampilkan bilangan 20 adalah sepanjang 4 karakter. printf( Abad %4d, 20); A b a d 2 0 Untuk data yang berupa bilangan real, spesifikasi medannya berupa m.n m = panjang medan n = jumlah digit pecahan Contoh pada pernyataan : printf( Harga : Rp %8.2f\n, 500.0); %8.2f menyatakan panjang medan dari bilangan real yang akan ditampilkan adalah 8 karakter dengan jumlah digit pecahan 2 buah. printf( Harga : Rp %8.2f\n, 500.0); H a r g a : R p 5 0 0. 0 0

Kalau hanya jumlah digit pecahan yang perlu ditentukan, panjang medan tak perlu disertakan, misal : printf( %.2f\n, 600.0); printf( %.2f\n, 7500.25); hasilnya : 600.00 7500.25 Untuk data yang berupa string, contoh : printf( %12s, Bahasa C ); maka akan ditampilkan sebagai berikut B a h a s a C Tampak dalam berbagai jenis data di atas, penentu format yang mengandung panjang medan, secara default akan menampilkan data dalam bentuk rata kanan terhadap panjang medan yang diberikan. Untuk data string yang biasanya dikehendaki untuk ditampilkan dalam bentuk rata kiri, maka sesudah tanda % pada penentu format %s perlu disisipkan tanda (minus), contoh : printf( %-12s, Bahasa C ); menyatakan bahwa string akan ditampilkan dalam medan dengan panjang 12 karakter dan diatur rata kiri. Sehingga tampilan di atas berubah menjadi : B a h a s a C /* File program : formatpjg.c Contoh penggunaan format panjang medan data */ int nilai1 = 20; float nilai2 = 500.0f; printf("abad %5d\n", nilai1); printf("%10.2f\n", nilai2); printf("%10s\n", "Bahasa C"); printf("%-10s\n", "Bahasa C"); Contoh eksekusi : Abad 20 500.00 Bahasa C

Bahasa C 2.5.2 Fungsi putchar() Fungsi putchar() digunakan khusus untuk menampilkan sebuah karakter di layar. Penampilan karakter tidak diakhiri dengan perpindahan baris. Contoh : putchar( A ); menghasilkan keluaran yang sama dengan printf( %c, A ); 2.6. Memasukan Data dari Keyboard Data dapat dimasukan lewat keyboard saat eksekusi berlangsung. Untuk keperluan ini, C menyediakan sejumlah fungsi, di antaranya adalah scanf(), getchar(). 2.6.1. Fungsi scanf() Fungsi scanf() merupakan fungsi yang dapat digunakan untuk memasukkan berbagai jenis data. Misalnya untuk memasukkan data jari-jari lingkaran pada contoh program lingkaran.c, maka penulisan radius = 20; dapat diganti menjadi scanf( %f,&radius); Selengkapnya, terlihat dalam contoh program di bawah ini. /* File program : lingkaran.c Menghitung keliling dan luas lingkaran */ double radius, keliling, luas; printf("masukkan jari-jari lingkaran : "); scanf("%lf",&radius); keliling = 2 * 3.14 * radius; /* PI = 3.14 */ luas = 0.5 * 3.14 * radius * radius; printf("\ndata lingkaran\n"); printf("jari-jari = %8.2lf\n", radius); printf("keliling = %8.2lf\n", keliling); printf("luas = %8.2lf\n", luas);

Contoh eksekusi : Masukkan jari-jari lingkaran = 5 Data lingkaran Jari-jari = 5.00 Keliling = 31.40 Luas = 39.25 Bentuk scanf() sesungguhnya menyerupai fungsi printf(). Fungsi ini melibatkan penentu format yang pada dasarnya sama digunakan pada printf(). Secara umum bentuk scanf() adalah sebagai berikut : scanf( string kontrol, daftar_argumen); Dengan string kontrol dapat berupa : Penentu format Karakter spasi-putih (white-space) Karakter bukan spasi-putih Penentu format menyatakan jenis data yang akan dibaca. Pada scanf() penentu format dapat berupa salah satu di antara yang ada pada daftar berikut : Tabel 2.6 Penentu format scanf() %c membaca sebuah karakter %s membaca sebuah string (dibahas pada bab vii) %i atau %d membaca sebuah integer desimal %e atau %f membaca sebuah bilangan real (bisa dalam bentuk eksponensial) %o membaca sebuah integer oktal %x membaca sebuah integer heksadesimal %u membaca sebuah integer tak bertanda l awalan untuk membaca data long int (misal : %ld) atau untuk membaca data double (misal : %lf) L awalan untuk membaca data long double (misal : %Lf) h awalan untuk membaca data short int Pada bentuk scanf(), daftar_argumen dapat berupa satu atau beberapa argumen dan haruslah berupa alamat. Misalnya hendak membaca bilangan real dan ditempatkan ke variabel radius, maka yang ditulis dalam scanf() adalah alamat dari radius. Untuk menyatakan alamat dari variabel, di depan variabel dapat ditambahkan tanda & (tanda & dinamakan sebagai operator alamat). Sehingga &radius menyatakan alamat dari radius. Dalam bentuk yang lengkap : scanf( %f, &radius); berarti (bagi komputer) : bacalah sebuah bilangan real (%f) dan tempatkan ke alamat dari radius (&radius).

2.6.3 Fungsi getchar() Fungsi getchar() digunakan khusus untuk menerima masukan berupa sebuah karakter dari keyboard. Contoh : c = getchar(); maka variabel c akan berisi karakter yang diketikkan oleh user atau EOF (end of file) jika ditemui akhir dari file. Kesimpulan : Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel. Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat diubah-ubah selama eksekusi berlangsung, Variabel yang akan digunakan haruslah dideklarasikan terlebih dahulu, adakalanya langsung dideklarasikan sekaligus diberi nilai (diinisialisasi). Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi Operator yang terkait dengan operasi aritmatika antara lain adalah operator aritmatika, operator penurunan dan penaikan, operator penugasan (assignment) dan operator kombinasi (pemendekan) Untuk menampilkan data/informasi ke layar digunakan fungsi printf() dan putchar(). Untuk memasukkan data melalui keyboard saat eksekusi berlangsung digunakan fungsi scanf() dan getchar(). Latihan : 1. Mengapa nama-nama variabel di bawah ini tidak valid? (a) value$sum (b) exit flag (c) 3lotsofmoney (d) char 2. Berapakah hasil akhir dari program berikut : int a = 22; a = a + 5; a = a-2; printf("a = %d\n", a);

3. Berapakah nilai x setelah pernyataan-pernyataan berikut dijalankan, apabila x bertipe int : (a) x = (2 + 3) 10 * 2; (b) x = (2 + 3) (10 * 2); (c) x = 10 % 3 * 2 + 1; 4. Nyatakan dalam bentuk pernyataan : (a) y = bx 2 + 0,5x c 0,3xz (b) y = 2a 5. Apa hasil eksekusi dari program berikut : char kar = A ; kar = kar + 32; printf("%c\n",kar); BAB III PENGAMBILAN KEPUTUSAN 3.1.1. Operator Relasi Operator relasi biasa dipakai untuk membandingkan dua buah nilai. Hasil pembandingan berupa keadaan benar atau salah. Keseluruhan operator relasi pada C ditunjukkan pada Tabel 3-1. Tabel 3-1. Operasi relasi Operator > >= < <= ==!= Makna Lebih dari Lebih dari atau sama dengan Kurang dari Kurang dari atau sama dengan Sama dengan Tidak sama dengan Khususnya untuk operator relasi sama dengan (==) harap dibedakan dengan operator (=) yang merupakan operator penugasan (assignment). Contoh: Pembandingan 1 > 2 Salah 1 < 2 Benar A == 1 Benar, jika A bernilai 1 Salah, jika A tidak bernilai 1 Hasil

'A' < 'B' Benar, karena kode ASCII untuk karakter A kurang dari kode ASCII untuk karakter B *) kar == 'Y' Benar, jika kar berisi 'Y' Salah, jika kar tidak berisi 'Y' *) Dalam daftar ASCII standar, kode untuk karakter A = 65 sedangkan karakter B = 66, C = 67, D = 68 dan seterusnya sampai dengan karakter Z = 90. 3.1.2. Operator Logika. Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator logika ditunjukkan pada tabel 3-2. Tabel 3-2. Operator logika Operator &&! Bentuk pemakaian operator && dan adalah Makna dan (AND) atau (OR) tidak (NOT) operand1 operator operand2 Baik operand1 maupun operand2 dapat berupa ekspresi relasi ataupun ekspresi logika. Hasil ekspresi bias bernilai benar atau salah. Pada C nilai hasil dari sebuah ekspresi relasi atau ekspresi logika jika dinyatakan dengan angka adalah : Salah nilai = 0 Benar nilai!= 0 (misalnya nilai = 1) Tabel 3-3 memberikan penjelasan hasil operasi ekspresi logika yang menggunakan operator && maupun untuk berbagai kemungkinan keadaan operand-nya. Tabel 3-3. Kemungkinan pada operasi logika && dan Operand1 Salah Salah Benar Benar Operand2 Salah Benar Salah Benar Hasil && 0 0 1 0 1 0 1 1 Tampak bahwa operator atau ( ) menghasilkan nilai 1 jika ada operand yang benar. Hasil berupa 0 jika semua operand adalah salah. Adapun operator logika dan (&&) memberikan hasil 1 hanya jika kedua operand adalah benar. Beberapa contoh ekspresi logika di antaranya : (kar > 'A') && (kar < 'Z') Hasil operasi logika && adalah benar hanya jika kar > 'A' dan kar < 'Z' (dalam hal ini yang diperbandingkan adalah kode ASCII dari karakter tsb). (pilihan == 'Y') (pilihan == 'y')

Hasil operasi logika adalah benar jika pilihan berupa 'Y' atau 'y' Sedangkan bentuk pemakaian operator logika! adalah : dengan operand dapat berupa ekspresi logika ataupun ekspresi relasi. Hasil operasi! bernilai : 1 jika operand bernilai salah 0 jika operand bernilai benar Perhatikan contoh potongan program di bawah ini : if (!sudah_benar) printf( Masukan Anda salah!\n ); Pada contoh potongan program di atas, dilakukan pengecekan kondisi terhadap nilai dari variabel sudah_benar. Jika variabel sudah_benar bernilai 0, maka kondisi!sudah_benar akan bernilai benar (true) sehingga instruksi : printf( Masukan Anda salah!\n ); akan diproses. Penjelasan lebih rinci tentang pengecekan kondisi dengan pernyataan if dibahas pada sub bab 3.2. 3.1.3 Prioritas Operator Logika dan Relasi Tabel berikut ini memberikan penjelasan singkat mengenai prioritas di antara berbagai operator logika dan operator relasi. Tabel 3-4 Prioritas operator logika dan relasi Berdasarkan prioritas yang ditunjukkan pada tabel 3-4, maka ekspresi seperti (kar > 'A') && (kar < 'Z') sama saja kalau ditulis menjadi kar > 'A' && kar < 'Z' Hanya saja penulisan dengan menggunakan tanda kurung akan lebih memberikan kejelasan. 3.2 Pernyataan if Pernyataan if mempunyai bentuk umum : if (kondisi ) pernyataan; Bentuk ini menyatakan : Tertinggi :! > >= < <= = =!= && Terendah:

jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses. Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses. Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat dilihat seperti gambar 3.1 kondis salah benar pernyataan Gambar 3.1. Diagram alir if Contoh penggunaan pernyataan if adalah untuk menentukan besarnya potongan harga yang diterima oleh seorang pembeli, berdasarkan kriteria : tidak ada potongan harga jika total pembelian kurang dari Rp. 100.000 (dalam hal ini potongan harga diinisialisasi dengan nol). bila total pembelian lebih dari atau sama dengan Rp. 100.000, potongan harga yang diterima dirubah menjadi sebesar 5% dari total pembelian. /* File program : discount.c Contoh penggunaan if untuk menghitung nilai discount */ double total_pembelian, discount = 0; /* discount diinisialisasi dengan nilai 0 */ printf("total pembelian = Rp ); scanf("%lf", &total_pembelian); if(total_pembelian >= 100.000) discount = 0.05 * total_pembelian; printf("besarnya discount = Rp %.2lf\n", discount);

Contoh eksekusi : Total pembelian = Rp 200000 Besarnya discount = Rp 10000.00 berikut : Untuk pernyataan if yang diikuti dengan pernyataan majemuk, bentuknya adalah sebagai if (kondisi) /* tanda awal pernyataan majemuk*/ pernyataan-1; pernyataan 2;... pernyataan-n; /* tanda akhir pernyataan majemuk */ Pernyataan-pernyataan yang berada dalam tanda kurung dan akan dijalankan hanya bila kondisi if bernilai benar. 3.3. Pernyataan if-else Pernyataan if-else memiliki bentuk : if (kondisi) pernyataan-1; else pernyataan-2; Diagram alir dapat dilihat seperti gambar 3.2. kondis salah benar pernyataan- 1 pernyataan- 2 Gambar 3.2. Diagram alir if-else Arti dari pernyataan if-else : Jika kondisi benar, maka pernyataan-1 dijalankan. Sedangkan bila kondisi bernilai salah, maka pernyataaan-2 yang dijalankan.

Masing-masing pernyataan-1 dan pernyataan-2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Contoh penggunaan pernyataan if-else adalah untuk menyeleksi nilai suatu bilangan pembagi. Jika nilai bilangan pembagi adalah nol, maka hasil pembagian dengan nilai nol akan mendapatkan hasil tak berhingga. Jika ditemui nilai pembaginya nol, maka proses pembagian tidak akan dilakukan. /* File program : bagi.c Pemakaian if-else untuk menyeleksi bilangan pembagi */ float a, b; printf("masukkan nilai a : "); scanf("%f", &a); printf("masukkan nilai b : "); scanf("%f", &b); if (b == 0) printf("\n%g dibagi dengan nol = TAK BERHINGGA\n", a); else printf("\n%g dibagi dengan %g = %g\n", a, b, a/b); Contoh eksekusi : Masukkan nilai a : 5 Masukkan nilai b : 0 5 dibagi dengan nol = TAK BERHINGGA 3.4. Pernyataan if di dalam if Di dalam suatu pernyataan if (atau if-else) bisa saja terdapat pernyataan if (atau if-else) yang lain. Bentuk seperti ini dinamakan sebagai nested if. Secara umum, bentuk dari pernyataan ini adalah sebagai berikut : if (kondisi-1) if (kondisi-2).. if(kondisi-n) pernyataan; else pernyataan;.. else pernyataan; else pernyataan;

Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar (kondisi-1). Jika kondisi-1 bernilai salah, maka statemen else yang terluar (pasangan if yang bersangkutan) yang akan diproses. Jika else (pasangannya tsb) tidak ditulis, maka penyeleksian kondisi akan dihentikan. Jika kondisi-1 bernilai benar, maka kondisi berikutnya yang lebih dalam (kondisi-2) akan diseleksi. Jika kondisi-2 bernilai salah, maka statemen else pasangan dari if yang bersangkutan yang akan diproses. Jika else (untuk kondisi-2) tidak ditulis, maka penyeleksian kondisi akan dihentikan. Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai dengan kondisi-n, jika kondisi-kondisi sebelumnya bernilai benar. /* File program : determinan1.c Program untuk menghitung determinan dan akar-akar persamaan kuadrat menggunakan if bersarang */ #include <math.h> float a, b, c, d = 0; double x1, x2, imaginair; printf("mencari AKAR-AKAR PERSAMAAN KUADRAT a+bx+c=0\n"); printf("\nmasukkan nilai a : "); scanf("%f", &a); printf("masukkan nilai b : "); scanf("%f", &b); printf("masukkan nilai c : "); scanf("%f", &c); d = b*b-4*a*c; /* menghitung determinan */ if (d >= 0) if (d == 0) x1 = -b / (2 * a); printf("\ndua akar real kembar yaitu : \n"); printf("x1 = x2 = %g\n", x1); else x1 = (-b + sqrt(d))/(2*a); x2 = (-b - sqrt(d))/(2*a); printf("\ndua akar real berlainan yaitu :\n"); printf("x1 = %g\n", x1); printf("x2 = %g\n", x2); else imaginair = (sqrt(-d)/(2*a)); x1 = -b/(2*a);

printf("\ndua akar imaginair berlainan yaitu : \n"); printf("x1 = %g + %gi\n", x1, imaginair); printf("x2 = %g - %gi\n", x1, imaginair); Contoh eksekusi : MENCARI AKAR-AKAR PERSAMAAN KUADRAT a+bx+c=0 Masukkan nilai a : 3 Masukkan nilai b : 6 Masukkan nilai c : 2 Dua akar real berlainan yaitu : X1 = -0.42265 X2 = -1.57735 3.5 Pernyataan else-if Contoh implementasi nested if ini misalnya pembuatan sebuah program kalkulator sederhana. User memberikan masukan dengan format : operand1 operator operand2 Jenis operasi yang dikenakan bergantung pada jenis operator ang dimasukkan oleh user. Oleh karena itu program akan mengecek apakah operator berupa tanda *, /, +, ataukah tanda -. Jika operator berupa tanda * maka operand1 akan dikalikan dengan operand2. Jika operator berupa tanda / maka operand1 akan dibagi dengan operand2. Jika operator berupa tanda + maka operand1 akan dijumlahkan dengan operand2. Jika operator berupa tanda - maka operand1 akan dikurangi dengan operand2. Kalau operator yang dimasukkan bukan merupakan salah satu dari jenis operator di atas, maka ekspresi tersebut tidak akan diproses, dan user akan mendapatkan pesan berupa : Invalid operator! /* File program : kalkulator1.c Contoh penggunaan else if untuk mengimplementasikan program kalkulator sederhana */ int valid_operator = 1; /* valid_operator diinisialisasi dengan logika 1 */ char operator; float number1, number2, result; printf("masukkan 2 buah bilangan dan sebuah operator\n"); printf("dengan format : number1 operator number2\n\n"); scanf("%f %c %f", &number1, &operator, &number2); if(operator == '*') result = number1 * number2; else if(operator == '/') result = number1 / number2; else if(operator == '+')