Akar dari bahasa C adalah bahasa
BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Bahasa ini
memberikan ide pada Ken Thompson yang kemudian mengembangkan bahasa yang
disebut dengan B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah
bahasa C yang ditulis 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.
Standar bahasa C yang asli adalah
standar dari UNIX. Sistem operasi, kompiler C dan seluruh program aplikasi UNIX
yang esensial ditulis dalam bahasa 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 Standard Institutes)
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.
Bahasa C mempunyai kemampuan lebih
dibanding dengan bahasa pemrograman yang lain. Bahasa C merupakan bahasa
pemrograman yang bersifat portabel, yaitu suatu program yang dibuat dengan
bahasa C pada suatu komputer akan dapat dijalankan pada komputer lain dengan
sedikit (atau tanpa) ada perubahan yang berarti.
Bahasa C merupakan bahasa yang biasa
digunakan untuk keperluan pemrograman sistem, antara lain untuk membuat:
1. Assembler
2. Interpreter
3. Compiler
4. Sistem Operasi
5. Program bantu (utility)
6. Editor
7. Paket program aplikasi
Beberapa program paket yang beredar
seperti dBase dibuat dengan menggunakan bahasa C, bahkan sistem operasi UNIX
juga dibuat dengan menggunakan bahasa C. Bahasa C sesungguhnya merupakan bahasa
pemrograman yang serbaguna dan pemakaiannya tidak terbatas untuk pemrograman
sistem, namun juga dapat digunakan untuk aplikasi bisnis, matematis maupun
games, bahkan untuk aplikasi kecerdasan buatan.
Dalam beberapa literatur, bahasa C
digolongkan sebagai bahasa tingkat menengah (medium level language).
Penggolongan ini bukan berarti bahasa C kurang ampuh atau lebih sulit
dibandingkan dengan bahasa tingkat tinggi (high level language - seperti
Pascal, Basic, Fortran, Java, dan lain-lain), namun untuk menegaskan bahwa
bahasa C bukanlah bahasa yang berorientasi pada pada mesin yang merupakan ciri
dari bahasa tingkat rendah (low level language), yaitu bahasa mesin dan
assembly.
Pada kenyataannya, bahasa C
mengkombinasikan elemen dalam bahasa tingkat tinggi dan bahasa tingkat rendah,
yaitu kemudahan dalam membuat program yang ditawarkan pada bahasa tingkat
tinggi dan kecepatan eksekusi dari bahasa tingkat rendah.
- Kelebihan dan Kelemahan bahasa C
Bahasa C mempunyai beberapa
kelebihan dibanding dengan bahasa pemrograman yang lain, yaitu:
Kelebihan Bahasa C
1. C mempunyai operator yang lengkap
untuk memanipulasi data.
2. Berbagai struktur data dan
pengendalian proses disediakan dalam C, sehingga memungkinkan dibuat program
yang terstruktur, bahkan program yang berorientasi pada objek (OOP = Object
Orientied Programming).
3. Dibanding dengan bahasa mesin
atau rakitan (assembly), C jauh lebih mudah dipahami dan pemrogram tidak perlu
tahu detail mesin komputer yang digunakan sehingga tidak menyita waktu dalam menyelesaikan
masalah ke dalam bentuk program. C merupakan bahasa yang berorientasi pada
permasalahan (objek), dan bukan berorientasi pada mesin.
4. Kecepatan eksekusi C mendekati
kecepatan eksekusi program yang dibuat dengan bahasa tingkat rendah, namum kemudahan
dalam memprogram setara dengan bahasa tingkat tinggi.
5. C memungkinkan memanipulasi data
dalam bentuk bit maupun byte secara efisien. Disamping itu juga memungkinkan
untuk melakukan manipulasi alamat dari suatu data yang dalam C dinamakan
pointer.
Kelemahan Bahasa C
Adapun kelemahan --atau lebih
tepatnya kesulitan bahasa pemrograman C terutama yang dirasakan oleh pemrogram
pemula diantaranya adalah:
a. Banyaknya operator serta
fleksibilitas penulisan program kadang-kadang membingungkan pemakai, yang jika
belum familiar akan menimbulkan masalah.
b. Para pemrogram C tingkat pemula
umumnya belum pernah mengenal pointer dan tidak terbiasa menggunakannya,
padahal keampuhan bahasa C justru terletak pada pointer.
Namun kesulitan di atas biasanya
hanya bersifat sementara saja.
- Fungsi Penyusun Bahasa C
Program bahasa C pada hakikatnya
tersusun atas sejumlah blok fungsi. Sebuah program minimal mengandung sebuah
fungsi yaitu fungsi utama ( main() ). Setiap fungsi terdiri dari 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 ( } ). Namun dalam kenyataannya suatu fungsi bisa saja tidak mengandung
pernyataan sama sekali, seperti yang diperlihatkan pada contoh berikut:
Main()
{
}
Walaupun fungsi tidak mempunyai
pernyataan, namun kurung kurawal harus tetap ada, karena mengisyaratkan awal
dan akhir definisi fungsi. Secara umum suatu fungsi mempunyai bentuk sebagai
beriku:
Nama-fungsi (daftar parameter)
Deklarasi parameter;
{
Tubuh Fungsi
}
Fungsi main()
Pada program bahasa C, main()
merupakan fungsi yang istimewa, karena fungsi main harus selalu ada dalam
program, sebab fungsi inilah yang menjadi titik awal dan titik akhir eksekusi
program. Tanda { di awal fungsi menyatakan awal tubuh fungsi dan sekaligus awal
program, sedangkan tanda } di akhir tubuh fungsi menyatakan akhir dari tubuh
fungsi sekaligus akhir eksekusi program. Jika program lebih dari satu fungsi,
fungsi main() biasa ditempatkan pada posisi yang paling atas dalam
pendefinisian fungsi, untuk memudahkan pencarian program utama.
Fungsi printf()
Fungsi printf() merupakan fungsi
yang umum digunakan untuk menampilkan suatu keluaran program pada layar
penampil (monitor). Untuk menampilkan tulisan Selamat Datang maka pernyataan
yang diperlukan berupa:
printf("Selamat Datang");
Pernyataan di atas berupa
pemanggilan fungsi printf() dengan argumen/parameter berupa string
"Selamat Datang". Dalam C suatu konstanta string ditulis dengan
diawali dan diakhiri tanda petik ganda ("). Pernyataan dalam bahasa C
selalu diakhiri dengan titik koma ( ; ), yang dipakai sebagai pemberhentian
pernyataan dan bukanlah sebagai pemisah antara dua pernyataan.
Contoh berikut adalah contoh program
yang agak lengkap:
#include
main()
{
printf("Selamat datang di
program bahasa C");
}
Jika program dieksekusi maka akan
menghasilkan keluaran string Selamat darang di program bahasa C.
Praprosesor #include
Pada contoh program sebelumnya
terdapat baris yang berisi #include :
1. #include merupakan salah satu
jenis pengarah praprosesor yang digunakan untuk memberitahu kompiler agar dalam
proses linking membaca file yang dinamakan file judul (header file), yaitu file
yang diantaranya berisi deklarasi fungsi dan definisi konstanta.
2. Bahasa C menyediakan beberapa
file judul yang ditandai dengan ekstensi .h. Misal, pada program di atas,
#include menyatakan pada kompiler agar membaca file bernama stdio.h saat
melakukan kompilasi.
3. Bentuk umum #include: #include
atau #include "namafile"
4. Bentuk pertama ( #include )
mengisyaratkan bahwa pencarian file dilakukan pada direktori khusus (direktori
file include), yang merupakan default direktori file-file judul yang disediakan
oleh bahasa pemrograman.
5. 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 sesuai dengan perintah pada
sistem operasi (yaitu path).
6. Kebanyakan program melibatkan
file stdio.h, yaitu file judul I/O standar yang disediakan dalam C, yang
diperlukan untuk program-program yang menggunakan pustaka fungsi I/O standar
seperti printf().
- Kondisi di bahasa C
Kondisi dalam bahasa C ada dua macam
yaitu if dan switch
pernyataan if mempunyai bentuk :
if(kondisi)
pernyataan;
Bentuk ini menyatakan :
• Jika kondisi yang di
seleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya
akan di proses.
• Sebaliknya, jika
kondisi yang di seleksi tidak benar (bernilai logika = 0), maka pernyataan yang
mengikutinya tidak akan di proses.
Mengenai kondisi harus di tulis di
dalam tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan
tunggal, pernyataan majemuk atau pernyataan kosong.
Untuk pernyataan majemuk harus di
tulis seperti :
if(kondisi){
pernyataan1;
pernyataan2;
pernyataan3;
}
terdapat tanda kurung sebelum dan
sesudah pernyataan
pernyataan if-else mempunyai bentuk
:
if(kondisi)
pernyataan1;
else
pernyataan2;
• Jika kondisi benar, maka
pernyataan-1 di jalankan.
• Sedangkan bila kondisi
salah, maka pernyataan-2 yang di jalankan
pernyataan if di dalam if
bentuk umum :
if(kondisi-1)
{
if(kondisi-2)
{
_
_
if(kondisi-n)
pernyataan;
else
{
pernyataan;
_
_
}
}
else
pernyataan;
}
else
pernyataan;
pernyataan else-if (neested if) di
gunakan apabila kondisi lebih dari 2
pernyataan switch
pernyaatan switch merupakan
pernyataan yang di rancang khusus untuk menangani pengambilan keputusan yang
melibatkan sejumlah alternatif, misalnya untuk menggantikan pernyataan if
bertingkat.
Bentuk umum :
switch(ekspresi)
{
case kontanta-1:
pernyataan;
………
break;
case kontanta-2:
……..
…….
break;
case konstanta-n;
…..
break;
default:
…..
break;
}