Chapter 1 KONSEP DASAR C Sejarah Dan Standar C Akar dari bahasa C adalah BCPL (dikembangkan oleh Martin Richard tahun 1967). Kemudian Tahun 1970, Ken Thompson mengembangkan bahasa tersebut yang di kenal dengan bahasa B. Kemudian Perkembangan selanjutnya, masih tahun 1970-an adalah bahasa C yang dikembangkan oleh Dennis Ritchie. Bahasa ini pertama kali digunakan di komputer Digital Equipment Corporation PDP-11 yang menggunakan Sistem Operasi UNIX. C adalah bahasa yang standart. Oleh karena itu setiap program yang di tulis dengan versi bahasa C tertentu, akan dapat dikompilasi dengan Versi Bahasa C yang lain hanya dengan sedikit modifikasi. Standar Bahasa C yang asli adalah dari UNIX. Patokan dari Standar ini adalah berasal dari Buku yang ditulis Oleh Brian Kerninghan dan Dennis Ritchie yang berjudul “The C Programming Language”, tahun 1978 (K&R C). Mengapa Menggunakan Bahasa C Beberapa alasan, mengapa bahasa C banyak digunakan adalah : 1. Bahasa C tersedia hampir di semua jenis komputer. 2. Kode Bahasa C bersifat portabel (dapat digunakan di komputer lain hanya dengan sedikit modifikasi). 3. Bahasa C hanya mempunyai sedikit kata kunci. Bahasa C Standar ANSI menyaratkan sebanyak 32 kata kunci dalam bahasa C, yakni : auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, coid, volatile, dan while. 4. Proses executable program bahasa C lebih cepat. 5. Dukungan pustaka yang banyak. 6. Bahasa yang terstruktur. 7. Selain bahasa tingkat tinggi, Bahasa C juga dianggap sebagai bahasa tingkat menengah. 8. Bahasa C adalah kompiler. Struktur Bahasa C Tiap bahasa komputer mempunyai struktur program yang berbeda. Jika struktur dari program tidak diketahui, maka seorang pemula akan kesulitan dalam menulis sebuah program dengan bahasa yang tersebut. Struktur bahasa C dapat dilihat sebagai kumpulan dari sebuah atau lebih fungsi – fungsi. Fungsi pertama yang harus ada dalam setiap program yang dibuat dengan bahasa C adalah fungsi main(). Suatu fungsi dalam bahasa C dimulai dengan tanda kurung kurawal buka '{' dan diakhiri dengan kurung kurawal tutup '}'. Berikut adalah struktur Program Bahasa C :
main() { statemen – statemen;
fungsi utama
} fungsi lain() { statemen – statemen; }
fungsi – fungsi lain yang dibuat oleh pemrogram
bahasa C disebut sebagai bahasa terstruktu, karena strukturnya menggunakan fungsi – fungsi sebagai program – program bagian (subroutine). Fungsi – fungsi selain fungsi utama merupakan program – program bagian. Fungsi – fungsi ini dapat ditulis dibawah fungsi utama atau dimasukkan di file pustaka (library) . Jika fungsi – fungsi ini diletakkan di dalam file pustaka, maka nama file judulnya (file header) harus dilibatkan di dalam program dengan menggunakan preprocessor derective #include. Program Sederhana setelah mengetahui struktur dari program C, maka kita akan mencoba menulis sebuah program C yang sederhana dengan tidak mengalami banyak kesulitan. Contoh : /* Program C Yang Sederhana */ #include <stdio.h> main() { float Celcius, Fahrenheit; printf(“Masukkan Nilai Celcius ? ”); scanf(“%f”, &Celcius); Fahrenheit = Celcius * 1.8 + 32; /*menghitung konversi */ printf(“%f Celcius adalah %f Fahrenheit \n”, Celcius, Fahrenheit); } Jika anda menggunakan Distro Linux maka anda bisa mengetikkan lewat text editor dan mengkompilenya lewat terminal dengan format: cc file_sumber.c -o file hasil misal : cc program_sederhana.c -o program_sederhana dan untuk menjalankan dapat dengan perintah :
./program_sederhana hasil yang akan ditampilkan adalah :
Pembahasan program secara singkat : 1. Untuk memberi komentar (keterangan), bebas diletakkan dimana pun di program C. Komentar pada program C diawali dengan /* dan diakhiri dengan */. /* Program C Yang Sederhana */ Fahrenheit = Celcius * 1.8 + 32; /*menghitung konversi */ 2. Dalam program menggunakan fungsi pustaka printf() dan scanf(), maka nama file yang berisi prototype dari fungsi – fungsi ini (header file) harus di sebuatkan dalam preprocessor directive #include. Header file untuk fungsi printf() dan scanf() adalah stdio.h. Eksentesi .h menunjukkan suatu header file. 3. Di dalam fungsi utama terdapat beberapa statemen – statemen program float Celcius, Fahrenheit; printf(“Masukkan Nilai Celcius ? ”); scanf(“%f”, &Celcius); Fahrenheit = Celcius * 1.8 + 32; /*menghitung konversi */ printf(“%f Celcius adalah %f Fahrenheit \n”, Celcius, Fahrenheit); setiap statemen program harus diakhiri dengan tanda titik koma (;). 4. Setiap variabel dalam program C harus di deklarasikan terlebih dahulu. Pendeklarasian ini bertujuan untuk memberikan tipe kepada setiap variabel. Tipe pada Variabel sangat erat hubungannya dengan memori yang akan disediakan untuk program dan untuk menampung nilai apa nantinya variabel tersebut. float Celcius, Fahrenheit;
5. Salah satu cara untuk menampilkan hasil di dalam program C adalah dengan menggunakan fungsi printf() printf(“%f Celcius adalah %f Fahrenheit \n”, Celcius, Fahrenheit); Variabel Variabel Escape Karakter Literal String kode Format Literal String Kode Format Fungsi printf() terbagi atas dua bagian yaitu bagian yang ada di dalam tanda petik dan bagian yang berada di luar tanda petik. Bagian yang berada di dalam tanda petik bisa berupa Literal String, Kode Format, atau Escape karakter. Bagian yang berada di luar tanda petik adalah variabel – variabel. Variabel – variabel ini akan ada jika di dalam tanda petik ada kode format. a. Kode Format Kode Format menunjukkan format dari variabel yang akan ditampilkan. Di dalam contoh ada 2 variabel yang akan di tampilkan hasilnya, yakni Celcius dan Fahrenheit. Kode %f menunjukkan tipe dari variabel adalah pecahan (floating-point). Jika variabel yang akan ditampilkan berbentuk bilangan bulat maka bisa digunakan %d atau %i. b. Literal String Adalah konstanta string yang tetap dan akan ditampilkan sesuai apa yang dituliskan. c. Escape Karakter Merupakan Konstanta Karakter yang ditulis dengan diawali dengan tanda back slash (\). karakter “\n” yang dipakai dalam fungsi printf() digunakan untuk menggeser kursor turun satu baris dan kembali ke kolom pertama (baris baru, gabungan dari line feed dan carriage return). Hasil dari fungsi printf() yang akan ditampilkan akan menjadi :
printf(“%f Celcius adalah %f Fahrenheit \n”, Celcius, Fahrenheit);
20.000000 Celcius adalah 68.000000 Fahrenheit 6. Salah satu cara untuk memasukkan data dari inputan keyboard adalah dengan menggunakan fungsi scanf(). scanf(“%f”, &Celcius);
Fungsi ini terdiri dari, yang berada di dalam tanda petik adalah kode format dan yang berada di luar tanda petik adalah variabel untuk menampung hasil inputan keyboard. Pada fungsi scanf() variabel harus diawali operator pointer &, sehingga untuk penggunaan variabel Celcius pada contoh menjadi &Celcius (tidak berlaku untuk variabel string). Fungsi scanf() biasanya dipadukan dengan fungsi printf(). Masukkan Nilai Celcius ? 20 nilai yang dimasukkan printf(“Masukkan Nilai Celcius ? ”); scanf(“%f”, &Celcius);
File Judul File Judul (Header File) merupakan file yang berisi prototype (judul, nama, sintak) dari sekumpulan fungsi – fungsi pustaka tertentu. Jadi file ini hanya berisi prototype dari fungsi – fungsi pustaka, sedangkan fungsi – fungsi pustakanya sendiri disimpan di file pustak (library file dengan nama extension file-nya adalah .LIB). Misalkan prototype fungsi printf() dan scanf() ada di file judul stdio.h, maka untuk menggunakan fungsi – fungsi ini di dalam program, maka nama file judulnya harus dilibatkan dengan perintah preprocessor #include. Ada dua cara untuk melibatkan file judul dalam program C, yaitu : #include <stdio.h> atau #include “stdio.h” Nama file judul yang ditulis dengan tanda petik dua, Compiler C akan mencari file judul dalam default directory lalu ke directory file – file pustaka, sedangkan file judul yang ditulis dengan tanda “<>”, Compiler C hanya akan mencari file judul di directory file – file pustaka saja. Memecah Baris Statemen Suatu statemen dalam bahasa C yang panjang dapat di pecah dengan karakter back slash “\”. printf(“Ini adalah bentuk string yang panjang \ yang ditulis dalam dua baris penulisan \n”); printf(“Ini adalah bentuk string yang panjang “ \ “yang ditulis dalam dua baris penulisan \n”); Case Sensitive Bahasa C adalah bahasa yang sensitive terhadap bentuk huruf (case-sensitive). Huruf kecil akan berbeda dengan huruf besar. Misalnya kata kunci if akan dianggap beda oleh kompiler jika dituliskan dengan If atau IF.
Nama Pengenal Nama pengenal (identifier name) adalah nama – nama yang ditentukan sendiri oleh pembuat program (harus berbeda dengan kata – kata kunci Bahasa C) yang digunakan untuk nama variabel, konstanta, fungsi, atau label. Nama pengenal itu bebas ditentukan sendiri dengan ketentuan : 1.
Panjangnya dapat 1 karakter atau lebih, tetapi hanya 32 karakter yang akan diperhatikan misalnya : rata_rata_nilai_ujian_untuk_mahasiswa_kelas_a dan rata_rata_nilai_ujian_untuk_mahasiswa_kelas_b akan dianggap sama, karena hanya 32 karakter yang akan diperhatikan rata_rata_nilai_ujian_untuk_maha
2.
karakter pertama harus berupa huruf atatu karakter garis bawah (_). nama pengenal yang salah : 1anak %kelahiran nama pengenal yang benar : anak1 kelahiran% _1anak _%kelahiran
3.
karakter – karakter khusus lainnya dan blank kecuali garis bawah tidak dapat digunakan. Berikut adalah nama pengenal yang salah : Bermain-main jangan! Pakai Spasi Berikut ini adalah nama pengenal yang benar : Bermain_main jangan PakaiSpasi
4.
huruf besar dan huruf kecil dianggap berbeda (case-sensitive). Nama pengenal Rata_Rata adalah berbeda dengan rata_rata.
5.
Tidak boleh sama dengan kata – kata kunci bahasa C.
Deklarasi Variabel Variabel adalah sebuah pengenal untuk menyimpan sebuah nilai, dan nilai itu dapat berubah – ubah saat program di jalankan. Variabel belum dapat digunakan sebelum variabel itu di deklarasikan dalam program. Dengan kata lain, deklarasi variabel harus dilakukan terlebih dahulu sebelum penggunaan variabel. Deklarasi variabel dapat dilakukan dengan menggunakan kata kunci seperti int, float, double, char, long, register, short, signed, dan unsigned. Dan kata kunci auto, extern dan static dapat digunakan untuk menunjukkan sifat dari variabel yang bersangkutan, apakah bersifat lokal (menggunakan kata kunci auto, default dari variabel adalah lokal, sehingga auto jarang digunakan), bersifat global (menggunakan kata kunci extern yang menunjukkan suatu variabel sudah dideklarasikan di program lain) atau bersifat statis (menggunakan kata kunci static). Contoh : int x,y; flaot a,b; char huruf; double x; long int x; register x;
/* mendeklarasikan variabel x dan y tipe integer */ /* mendeklarasikan variabel a dan b tipe floating-point */ /* mendeklarasikan variabel huruf dengan tipe karakter */ /* mendeklarasikan variabel x bertipe pecahan ketepatan ganda */ /* mendeklarasikan variabel x tipe numerik panjang */ /* mendeklarasikan variabel x yang nilainya disimpan di register */
Cara mendeklarasikan variabel yang lengkap akan dibahas di Chapter 2. Konstanta, Operator, dan Ungkapan Konstanta adalah suatu nilai yang tidak berubah selama proses program. Pada contoh sebelumnya ada ungkapan berikut : Fahrenheit = Celcius * 1.8 + 32; Celcius dan Fahrenheit adalah variabel yang nilainya dapat berubah – ubah selama proses program. Sedangkan nilai 1.8 dan 32 tidak akan pernah berubah selama proses program karena bilangan ini adalah nilai – nilai konstanta. Nilai 1.8 dan 32 adalah nilai – nilai konstanta bilangan desimal. Konstatan akan di bahasa lebih lanjut dalam Chapter 2. Operator atau tanda operasi adalah simbol yang digunakan untuk mengerjakan operasi tertentu. Bahasa C menyediakan banyak sekali tanda – tanda operasi, yaitu Operator Pengerjaan, Operator Aritmatika, Operator Tipe, Operator Hubungan, Operator Logika, Operator Koma, Operator Bitwise, dan Operator Ternary. Lebih lanjut tentang operator akan dibahasa bada Chapter 6. Ungkapan dalam bahasa C dapat berupa sebuah konstanta, variabel, larik, nama fungsi, atau kombinasi darinya dengan menggunakan satu atau lebih operator. Contoh ungkapan dalam bahasa C: Fahrenheit = Celcius * 1.8 + 32 A=B scanf(“%f”, &Celcius) X=X+1 ++X X>5
Statemen Suatu statemen (statemen) adalah pernyataan yang menyebabkan suatu tindakan akan dilakukan oleh komputer. Misalnya, menghitung, menampilkan hasil, menerima input data, mengendalikan proses program, dan lain sebagainya adalah contoh dari tindakan – tindakan itu. Suatu statemen dalam bahasa C harus diakhiri dengan tanda titik koma (;). 1.
Statemen Kosong yang dimaksud statemen kosong adalah statemen yang hanya terdiri oleh tanda titik koma (;) saja. Statemen ini tidak akan menghasilkan satu tindakan apapun. ; statemen kosong banyak digunakan untuk perulangan yang tidak memproses apapun (delay atau waktu tunggu).
2.
Statemen Ungkapan Statemen ungkapan adalah statemen yang terdiri dari ungkapan dan diakhiri titik koma (;). Fahrenheit = Celcius * 1.8 + 32; A=B; scanf(“%f”, &Celcius); X=X+1; ++X; X > 5;
3.
Statemen Kendali Merupakan statemen untuk mengendalikan proses program. Mengendalikan proses program dapat berupa proses seleksi, perulangan, atau lompatan. if (N<0) printf(“Nilai N adalah nol !!\n”); Lebih lanjut tentang statemen ungkapan akan di bahasa dalam chapter 6.
4.
Statemen Jamak statemen jamak adalah gabungan dari beberapa statemen tunggal. Statemen ini berada di dalam tanda '{' dan '}'. { printf(“Masukkan Nilai Celcius ? ”); scanf(“%f”, &Celcius); } statemen jamak banyak digunakan dalam statemen kendali.
Preprocessor Directive #define sampai saat ini, kita sudah tahu struktur dari program C. coba lihat contoh berikut : #include <stdio.h> #define utama #define mulai #define akhir #define pecah #define cetak #define baca #define kali #define tambah #define samadengan
main { } float printf scanf * + =
utama() mulai pecah Celcius, Fahrenheit; cetak(“Masukkan Nilai Celcius ? ”); baca(“%f”, &Celcius); Fahrenheit samadengan Celcius kali 1.8 tambah 32; /*menghitung konversi */ cetak(“%f Celcius adalah %f Fahrenheit \n”, Celcius, Fahrenheit); akhir Apakah ini program yang dibuat dengan bahasa C? Jika adan telah memahami bagaimana struktur dari program C, maka kita akan menjawab 'Ya'. Akan tetapi mengapa menggunakan bahasa Indonesia? Dalam bahasa C, disediakan preprocessor directive #define untuk mendefinisikan konstanta, makro, ataupun nama. Misalnya kata pecah di definisikan sebagai float , maka bila pecah digunakan dalam program, maka dianggap sebagai kata kunci float. Preprocessor #define dapat dituliskan langsung dalam program yang sama, atau dipisahkan dari programnya. Misalnya semua #define di program di atas di pisahkan dari programnya dan disimpan dalam file sendiri dengannama file “RUBAH.C”, maka program di atas akan dirubah dengan menggunakan preprocessor #include untuk menggabungkannya menjadi. #include <stdio.h> #include “rubah.c” utama() mulai pecah Celcius, Fahrenheit; cetak(“Masukkan Nilai Celcius ? ”);
baca(“%f”, &Celcius); Fahrenheit samadengan Celcius kali 1.8 tambah 32; /*menghitung konversi */ cetak(“%f Celcius adalah %f Fahrenheit \n”, Celcius, Fahrenheit); akhir suatu makro juga dapat didefinisikan dengan preprocessor #define. Berikut ini adalah contoh makro #define luas(r) ((r) * (r)) untuk menggunakannya dapat dengan perintah : Luas = 3.4 * luas(3); maka makro luas di dalam statemen akan menjadi Luas = 3.4 * 3 * 3;