Bahasa C dikembangkan pertama kali pada laboratorium Bell (USA) sekitar tahun 1972 oleh Dennis Ritchie pada komputer DEC PDP-11 dengan sistem operasi UNIX. Beberapa versi C mulai dikembangkan oleh beberapa pakar untuk dijalankan pada sistem operasi selain UNIX, seperti PC-DOS dan MS-DOS. Untuk melaksanakan pembakuan (standardisasi) terhadap bahasa C, ANSI (American National Standards Institute) membentuk team untuk membuat bahasa C standard ANSI, yang dimulai tahun 1983. Standard ANSI inilah yang selanjutnya digunakan sebagai acuan dari berbagai versi C yang beredar dewasa ini.
1. Lingkup Pemakaian Bahasa C
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) perubahan yang berarti.
Bahasa C merupakan bahasa yang biasa digunakan untuk keperluan pemrograman sistem, antara lain untuk membuat:
- assembler
- interpreter
- kompiler
- sistem operasi
- program bantu (utility)
- editor
- 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 yang 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 aras menengah (medium level language).
Penggolongan ini bukan berarti bahasa C kurang ampuh atau lebih sulit dibandingkan dengan bahasa aras tinggi (high level language, seperti Pascal, Basic, Fortran, dll), namun untuk menegaskan bahwa bahasa C bukanlah bahasa yang berorientasi pada mesin (yang merupakan ciri bahasa aras rendah (low level language), yaitu bahasa mesin dan assembly).
Pada kenyataannya, C mengkombinasikan elemen dalam bahasa aras tinggi dan bahasa aras rendah, yaitu kemudahan dalam membuat program yang ditawarkan pada bahasa aras tinggi dan kecepatan eksekusi dari bahasa aras rendah.
2. Kelebihan dan Kelemahan C
Bahasa C mempunyai beberapa kelebihan dibanding dengan bahasa pemrograman yang lain, yaitu:
- C mempunyai operator yang lengkap untuk memanipulasi data.
- Berbagai struktur data dan pengendalian proses disediakan dalam C, sehingga memungkinkan dibuat program yang terstruktur, bahkan program yang berorientasi pada obyek (OOP = object oriented programming).
- 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 (object), dan bukan berorientasi pada mesin.
- Kecepatan eksekusi C mendekati kecepatan eksekusi program yang dibuat dengan bahasa aras rendah, namun kemudahan dalam memprogram setara dengan bahasa aras tinggi.
- 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.
Adapun kelemahan atau lebih tepatnya kesulitan bahasa pemrograman C terutama yang dirasakan oleh pemrogram pemula diantaranya adalah:
- Banyaknya operator serta fleksibilitas penulisan program kadangkadang membingungkan pemakai, yang jika belum familiah akan menimbulkan masalah.
- Para pemrogram C tingkat pemula umumnya belum pernah mengenal pointer dan tidak terbiasa menggunakannya, padahal keampuhan bahasa C justru terletak pada pointer.
Namun umumnya kesulitas di atas hanya bersifat sementara saja.
3. Interpreter dan Kompiler
- Agar suatu program dalam bahasa pemrorgaman dapat dimengerti dan dieksekusi oleh komputer, maka program yang ditulis harus diterjemahkan terlebih dulu ke dalam kode mesin. Adapun penterjemah yang digunakan dapat berupa interpreter maupun kompiler.
- Interpreter adalah suatu jenis penterjemah yang menterjemahkan per baris instruksi untuk setiap saat.
- Keuntungan pemakaian interpreter adalah penyusunan program relatif lebih cepat dan bisa langsung diuji meskipun masih ada beberapa kesalahan secara kaidah daalm program.
- Kelemahannya adalah kecepatannya menjadi lambat, sebab sebelum suatu instruksi dijalankan selalu diterjemahkan terlebih dahulu. Disamping itu saat program dieksekusi, interpreter juga harus berada dalam memori.
- Kelemahan yang lain berkaitan dengan kerahasiaan program. Program yang memakai interpreter, program sumbernya (source program) tidak dapat dirahasiakan.
- Kompiler merupakan jenis penterjemah yang cara kerjanya menterjemahkan seluruh instruksi dalam program sekaligus.
- Proses kompilasi cukup dilakukan sekali saja, selanjutnya hasil penterjemahan (setelah melalui tahap-tahap yang lain) dapat dijalankan secara langsung tanpa bergantung pada program sumber maupun kompilernya.
- Proses ekekusi dapat berjalan lebih cepat, sebab tidak ada lagi proses penterjemahan.
- Program sumber juga dapat dirahasiakan, sebab yang dieksekusi adalah adalah file program yang sudah dalam bentuk kode mesin.
- Kelemahannya proses pembuatan dan pengujiannya relatif lebih lama, sebab harus melalui tahap penterjemahan (compiling) dan proses linking.
- Program hanya akan berhasil dikompilasi jika sudah tidak mengandung kesalahan secara kaidah (syntax error) sama sekali.

4.Fungsi Penyusun Program C
- Program Bahasa C pada hakekatnya 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 dalam 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 berikut:
Nama-fungsi (daftar parameter)
Deklarasi parameter;
{
tubuh fungsi
}
5. Fungsi main()
- Pada program 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 meyatakan awal tubuh fungsi dan sekaligus awal program, sedangkan tanda } di akhir fungsi merupakan akhir tubuh fungsi dan sekaligus akhir eksekusi program.
- Jika program terdiri lebih dari satu fungsi, fungsi main () biasa ditempatkan pada posisi yang paling atas dalam pendefinisian fungsi, untuk memudahkan pencarian program utama.
6. 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 siawali dan diakhiri tanda petik ganda (").
- Pernyataan dalam C selalu diakhiri dengan tanda titik koma (😉, yang dipakai sebagai pemberhentian pernyataan dan bukanlah sebagai pemisah antara dua pernyataan.
Contoh prog-2 berikut adalah contoh program yang agak lengkap:
#include <stdio.h>
main ()
{
printf(" Selamat datang di program pra-pasca");
}
Jika program di atas diekseskusi, akan menghasilkan:
C>Prog-2 Selamat datang di program pra-pasca.