Assalamualaikum...
SEJARAH SINGKAT
Bahasa
Pemrograman C diciptakan dan dikembangkan oleh Brian Kernighan dan Denis
Ritchie di Bell Research Labs. Bahasa Pemrograman C secara khusus
diciptakan dengan tujuan agar para programmer (orang yang membuat
program komputer) dapat mengakses seluruh internal register.
I/O slots dan absolute address dari sebuah komputer.
Pada
awal tahun 1960-an, sistem operasi komputer mulai menjadi jauh lebih
kompleks daris ebelumnya karena adanya pengenalan multi terminal dan
kemampuan multi prosessor. Pada saat itu, sistem operasi diciptakan
dengan menggunkan bahasa assembly (bahasa pemrograman tingkat rendah).
Di
mana banyak pengembang yang menyadari bahwa suatu sistem operasi dapat
dikembangkan lebih lagi, tidak cukup hanya dengan menggunakan bahasa
assembly. Inilah asal mula Bahasa C yang dimplementasikan pada Digital
Equipment Corporation PDP-7. Pada perkembangan selanjutnya Bahasa
Pemrograman C digunakan untuk mengimplementasikan Sistem Operasi Unix.
Keluarga Besar Bahasa Pemrograman C
Bahasa
Pemrograman C telah mengalami banyak evolusi sejak awal diciptakanya
hingga saat ini. Saat ini, banyak Bahasa Pemrograman yang merupakan
turunan/varian/keluarga dari Bahasa C seperti: C ++, Java Script, PHP,
Java, perl dan lain sebagainya.
C dan C++
Banyak orang yang bingung tentang perbedaan antar Bahasa Pemrograman C
dan Bahasa Pemrograman C ++ . Sebenarnya ada sedikit perbedaan antara C
dan C++ yang merupakan keturunan Bahasa C. Pertama, perbedaan nama (C
dan C++). Kedua, perbedaan sintaks; sintaks bahasa pemrograman c++ dan c
agak sedikit berbeda di beberapa bagian.
Kegunaan Belajar Bahasa C pada Saat ini
Anda
mungkin berpikir bahwa saat ini sudah tidak ada gunanya lagi belajar
Bahasa C karena sudah tidak terpakai lagi. Sebenarnya anda salah, karena
pada saat ini, sistem operasi linux mulai dipakai secara luas, di mana
bahasa C(GCC) dapat digunakan untuk pemrograman sistem linux dan
pemrograman jaringan linux. Bahkan jika anda ingin menjadi hacker yang
baik anda harus menguasai GCC (socket programming, system programming,
database programming dan shellcoding).
Pengenalan Bahasa C
C
merupakan bahasa universal dalam bidang pegembangan software dan banyak
digunakan pada mesin-mesin dan komputer, banyak sekali software sistem
yang dibuat dengan C karena bahasa C memiliki kemampuan untuk mengakses
sistem dari komputer, mulai dari RAM yang sederhana, disk bahkan sampai
yang sangat detail dan dalam seperti register dan port-port pada
komputer, baik itu PC maupun mini computer dan Mainframe.
Menulis
Bahasa Pemrograman C tidaklah sesulit yang anda bayangkan. Saya
asumsikan anda menggunakan sistem operasi linux/unix atau mungkin
cygwin di windows, di mana sudah terinstall compiler yang tersedia untuk
Bahasa Pemrograman C. Ada begitu banyak kompiler untuk bahasa c ini di
berbagai platform seperti GCC, CC di linux/unix; Miracle C, Turbo C,
Microsoft Visual C++ di linux/unix.Kompiler yang akan kita pergunakan
kali ini adalah GCC.
Selanjutnya anda juga perlu mempersiapkan text
editor apa saja. Bisa notepad jika anda menggunakan windoze atau vi,
pico, vim, kwort, nano, gedit, emacs dan lain sebagainya.
DASAR-DASAR C
Sebelum
kita mulai mempelajari pemrograman bahasa C++, ada baiknya kita tahu
pengertian dari C++ itu sendiri. Bahasa C++ merupakan pengembangan dari
bahasa pemrograman C. Bahasa C++ dikembangkan oleh Dennis Ritchie, dan
pertama kali diimplementasikan di komputer DEC PDP-11 pada tahun 1972
C++ menggunakan konsep yang penting dari bahasa BCPL dan B.
Pertama kali bahasa C dikenal dengan luas oleh karena bahasa
pengembangan dari UNIX operating system, Pada saat ini kebanyakan dari
sistem operasi menggunakan bahasa C & C++, Selama hampir dua dekade,
bahasa C dapat dioperasikan di semua komputer. C++ ( ekstensi dari C ),
dikembangkan oleh B jarne Stourstrup di awal tahun 1980, banyak
kemampuan-kemampuan baru yang ada di C++, tapi lebih penting lagi C++
mempunyai kemampuan object-oriented.
Bahasa C++ ini juga merupakan
pemrograman terstruktur dimana untuk menyelesaikan sebuah masalah harus
bertahap sesuai dengan algortima pemrograman, dimana secara garis besar
program yang akan dieksekusi dari awal secara berurut sampai akhir.
Bahasa
C++ sendiri merupakan bahasa pemrograman yang lumayan banyak digemerai
oleh programmer dan merupakan dasar untuk mempelajari bahasa pemrograman
yang lebih grafis (GUI) seperti Visual C++, Visual C, dan lain-lain.
Bahasa C ++ mengembangkan kemampuan dari bahasa C yaitu dengan:
a) Memberikan dukungan untuk menciptakan dan memanfaatkan abstraksi data.
b) Dapat digunakan untuk pemrograman berorientasi objek.
c) Dan yang terakhir telah menutupi beberapa kekurangan dalam bahasa C.
Mengenal C
Sebuah
berkas program C terdiri dari beberapa unsur, yaitu dokumentasi
program , pengarah prapengolahan, bagian deklarasi global, sebuah fungsi
main ( ), dan fungsi-fungsi buatan pemrogram. Masing-masing fungsi ini
terdiri dari badan fungsi yang memuat deklarasi local dank ode program
yang dapat dieksekusi.
Berikut sebuah program sederhana :
/* Nama file : Program sederhana
Conto program sederhana pada program C*/
#include
int main ( )
{
return 0;
}
Dokumentasi Program
Memberikan
dokumentasi pada program sangat berguna untuk membantu memperjelas alur
logika penyusunan program. Karena tujuannya hanya sebagai dokumentasi,
komentar-komentar yang dituliskan pada program tidak diproses oleh
compiler. Komentar dapat dimulai dengan simbol dua karakter yang terdiri
dari garis miring dan asterisk (/*) dan diakhiri dengan asterisk dan
garis miring.
Karakter komentar /* dapat diletakkan dimana saja
didalam program dan dapat mencakup lebih dari satu komentar, dengan
syarat setiap /* harus ditutup dengan */. Pada awal program, komentar
yang diberikan biasanya bertujuan untuk menjelaskan apa yang dilakukan
oleh program, sedangkan pada bagian probram yang lain tujuannya adalah
untuk memperjelas logika program.
Dalam membeikan komentar untuk dokumentasi program, ada beberapa hal yang perlu diperhatikan, diantaranya:
1. Komentar hendaklah diberikan pada tempat-tempat yang bias menimbulkan kekaburan pengertian.
2.
Beri komentar ditempat yang perlu saja, misalnya pada awal program
untuk menjelaskan secara ringkas tujuan program, pada awal blok
pernyataan untuk menjelaskan kumpulan tugas yang dilakukan , pada
pernyataan keputusan untuk menjelaskan kondisi yang harus dipenuhi dalam
pengambilan keputusan.
3. Komentar tidak bisa dibuat bertingkat , yaitu adanya komentar dalam komentar, misalnya;
/* Komentar awal /* Komentar lagi /* Komentar berikutnya*/
Pengarah Prapengolahan
Dalam
mengolah kode-kode program, compiler C melaksanakan beberapa tahapan
yaitu melakukan prapengolahan untuk melakukan persiapan yang diperlukan
sebuah berkas program kompilasi. Di dalam program pengarah prapengolahan
diawali oleh karakter # yang dituliskan pada baris-baris pertama
program.
Prapengolahan memperlakukan berkas program sebagai
sederetan baris teks: membaca, mengolah, dan menuliskan kembali hasil
pengolahan kedalam berkas semula. Prapengolah membuang semua baris
perintah prapengolahan dari berkas sumber dan melakukan perubahan
terhada berkas sumber sesuai dengan arahan perintah yang diberikan.
Secara garis besar pelayanan prapengolah dibagi dalam tiga kelompok :
1) Penyisipan berkas (#include),
2) Pendefenisian makro (#define), dan
3) Pengarah kendali compiler (#ifdef, #ifndef, dll)
Dalam menyertakan berkas judulyang diperlukan olefh fungsi input dan outputyang digunakan dalam program : #include
dan untuk mendefenisikan sebuah konstanta (pi): #define PI 3.1459,
sementara itu #ifdef diguakan apabila hendak melakukan kompilasi
terhadap satu bagian program hanya apabila sebuah ekspresi tertentu
telah didefenisikan menggunakan #define. Standar ANSI C menambahkan
beberapa pengarah prapengolahan tambahan; pengujian alternatif,
pernyataan instruksi, pendeteksian kesalahan, pengubahan pengenal
menjadi string dan penggabungan pengenal.
Deklarasi Global
Pada
bagian deklarasi global terdapat pendeklarasian variable dan prototipe
fungsi. Semua variable y ang dideklarasikan pada bagian ini akan
dikenal oleh semua bagian program yang terdapat dibawahnya. Sementara
itu prototipe fungsi adalah sebuah deklarasi tentang akan digunakannya
sebuah fungsi didalam program. Ada tiga unsur yang perlu disebutkan:
jenis data yang dikembalikan oleh fungsi, nama fungsi dan daftar argumen
yang diberikan pada fungsi yang diberi jumlah argumen (arity) dan jenis
data masing-masing argumen.
Fungsi Main ( )
Fungsi
main ( ) memegang peranan yang penting pada sebuah program. Fungsi ini
merupakan fungsi utama pada setiap program C dimana eksekusi keseluruhan
program dimulai. Barapapun banyaknya fungsi yang terdapat pada sebuah
program C, main ( ) adalh fungsi utama yang akan dilaksanakan oleh
compiler. Contoh program yang memperlihatkan struktur fungsi main ( )
sederhana.
/* Nama file : Hello.c
Menampilkan teks dilayar*/
#include
int main ( )
{
printf(“hello, world!\n”);
return 0;
}
Pada
contoh diatas fungsi main ( ) tidak memerlukan argumen, badan fungsi
main ( ) tidak memiliki bagian deklarasi lokal, dan hanya memiliki
sebuah pernyataan yang dapat dieksekusi, berupa fungsi output printf (
). Kode program (pernyataan) yang dapat dieksekusi adalah kode program
yang merupakan baris-baris instruksi yang harus dilaksanakan oleh
kompiler. Kode program ini dapat berupa input/output, konstruksi
runtunan, konstruksi keputusan dan konstruksi pengulangan. Dalam badan
fungsi main ( ) terdapat pula bagian deklarasi lokal yang dimaksudkan
untuk mendeklarasikan variable-variabel dan prototipe-prototipe fungsi.
semua variable dan prototipe fungsi ini bersifat lokal terhadap main (
), dalam arti hanya dikenal oleh main ( ).
Fungsi Buatan Pemrogram
Selain
main ( ) yang mempunyai kedudukan khusus dalam sebuah program, terdapat
pula fungsi-fungsi buatan pemrogram. Pada fungsi ini dapat diberikan
deklarasi prototype fungsi lain secara local, sehingga hanya dikenal
oleh fungsi tersebut. Kode program yang dapat dieksekusi juga dapat
berupa fungsi input/output standar, konstruksi runtunan, konstruksi
keputusan, dan konstruksi pengulangan.
Pembatas
Setelah
pendefenisian fungsi terdapat kurung kurawal buka “{“ dan kurung
kurawal tutup “}” yang menunjuk akhir blok fungsi, kurung kurawal ini
disebut pembatas (delimeters). Dalam badan program kurung kurawal juga
dapat digunakan untuk membatasi pernyataan majemuk yang dimiliki oleh
sebuah blok kode program. Selain kurung kurawal juga terdapat beberapa
pembatas lain, diantaranya: [ ], < >, ( ), “ “, dan ‘ ‘.
Akhir Pernyataan
Setiap
pernyataan (statement) dalam C diakhiri dengan titik koma ( ; ) yang
berperan untuk memberitahu compiler akhir pernyataan. Carriage return
yang diperoleh sewaktu menekan tombol bukan penunjuk akhir
pernyataan, karena C mengabaikan semua karakter yang disebut
karakter-karakter whitespace, yaitu spasi, tabulator dan carriage return
(newline).
Tipe Data
Adalah
suatu nilai yang dapat dinyatakan dalam bentuk konstanta atau variabel
dan operator. Konstanta menyatakan nilai yang tetap, sedangkan variabel
menyatakan nilai yag dapat berubah-ubah selama eksekusi berlangsung.
Tipe data simple merupakan tipe data bawaan dari C++, tipe data ini terdiri dari beberapa tipe data yaitu:
o Tipe data integral merupakan tipe data yang terdiri dari bilangan dengan range yang berbeda-beda.
o
Floating merupakan tipe data untuk bilangan desimal. Untuk semua Turbo
C++, type floating-point yang menggunakan format-format IEEE
floating-point digunakan oleh intel 8087. Type float menggunakan real
format 32-bit IEEE. Type double menggunakan real format 64-bit IEEE.
Type long double menggunakan extended real format 80-bit IEEE.
Address
merupakan tipe data yang digunakan untuk menunjuk suatu alamat memori.
Sedangkan tipe data structured merupakan tipe data bentukan.
Identifiers
Identifiers
adalah untaian satu atau lebih huruf, angka, atau garis bawah ( _ ).
Panjang dari identifier, tidak terbatas, walaupun untuk beberapa
kompiler hanya 32 karakter pertama saja yang dibaca sebagai identifier
(sisanya diabaikan). Identifier harus selalu diawali dengan huruf atau
garis bawah ( _ ). Ketentuan lainnya yang harus diperhatikan dalam
menentukan identifier adalah tidak boleh menggunakan keyword dari bahasa
C.
Dekalarasi Variabel
Untuk
menggunakan variable pada C, kita harus mendeklarasikan tipe data yang
akan digunakan. Sintaks penulisan deklarasi variable adallah dengan
menuliskan tipe data yang akan digunakan diikuti dengan identifier yang
benar, contoh :
int a;
float mynumber;
Jika akan menggunakan tipe data yang sama untuk beberapa identifier maka data dituliskan dengan tanda koma, contoh :
int a, b, c;
Tipe
data integer (char, long, short, dan int) dapat berupa signed atau
unsigned tergantung dari kisaran nilai yang direpresentasikan. Dilakukan
dengan menyertakan keyword signed atau unsigned sebelum tipe data,
contoh :
unsigned short NumberofSons;
signed int MyAccountBalance;
jika tidak ditulis maka akan dianggap signed.
Inisialisasi Variabel
Ketika mendeklarasikan variable local, kita dapat memberikan nilai tertentu. Sintaks penulisan sbb :
Tipe identifier = initial_value ;
Misalkan kita akan mendklarasikan variable int dengan nama a yang bernilai 0, maka dapat dituliskan :
int a = 0;
Atau dengan cara lain, yaitu menyertakan nilai yang akan diberikan dalam tanda ( ) :
tipe identifier (initial_value);
Konstanta : Literals
Konstanta adalah ekspesi dengan nilai yang tetap. Terbagi dalam nilai integer, nilai floating point karakter, dan string.
Nilai Integer
Merupakan
nilai konstanta numeric yang meng-identifikasikan nilai integer
decimal. Karena merupakan nilai numeric, maka tidak memerlukan tanda
kutip ( “ ) maupun karakter khusus lainnya. Contoh :
1776
707
-273
C
memungkinkan kita untuk menggunakan nilai octal (base 8) dan
heksadesimal (base 16). Jika menggunakn octal harus digunakan dengan
karakter 0 (karakter nol), dan untuk heksadesimal diawali dengan
karakter 0X (nol, X). contoh :
75 // decimal
0113 // octal
0X4b // heksadecimal
Nilai Floating Point
Merepresentasikan
nilai decimal dan / atau eksponen, termasuk titik decimal dan karakter e
(yang merepresentasikan “ dikali 10 pangkat n “, dimana n merupakan
nilai integer) atau keduanya. Contoh :
3.14159 // 3.14159
6.02e23 // 6.02 * 10^23
1.6e-19 // 1.6 * 10^-19
3.0 // 3.0
Konstanta Define (#define)
Kita
dapat mendefenisikan sendiri nama untuk konstanta yang akan kita
pergunakan, dengan menggunakan preprocessor directive #define. Dengan
format :
#define identifier value
Contoh :
#define PI 3.14159
#define NEWLINE ‘\n’
#define WIDTH 100
Deklarasi Konstanta (const)
Dengan prefix const kita dapat mendeklarasikan konstanta dengan tipe yang spesifik seperti yang kita inginkan. Contoh :
const int width = 100;
constchar tab = ‘t’;
const zip = 12440;
Jika tipe data tidak disebutkan, maka compiler akan mengsumsikan sebagai int.
Operator
Operator
yang disediakan C berupa keyword atau karakter khusus.
Operator-operator ini cukup penting untuk diketahui karena merupakan
salah satu dasar bahasa C.
Assignation ( = )
Operator ini digunakan untuk membeikan nilai ke suatu variable.
a = 5 ;
Memberikan
nilai integer 5 ke variable a. Sisi kiri dari operator disebut lvalue
(left value) dan sisi kanan disebut rvalue (right value). lvalue harus
selalu berupa variable dan sisi kanan berupa konstanta, variable, hasil
dari suatu operasi atau kombinasi dari semuanya. Contoh :
Int a, b; // a : ? b : ?
a = 10; // a : 10 b : ?
b = 4; // a : 10 b : 4
a = b; // a : 4 b : 4
b = 7; // a : 4 b : 7
Hasil dari contoh diatas , a bernilai 4 dan b bernilai 7.
Contoh :
a = 2 + (b = 5);
equivalent dengan :
b = 5
a = 2 + b
Arithmetic Operators ( +, -, *, / , % )
+ addition
- substraction
* multiplication
/ division
% module
Increase (++) and decrease (--).
Contoh :
a++;
a+=1;
a=a+1;
Operator
increase dan decrease dapat digunakan sebagai prefix dan suffix. Dengan
kata lain dapat dituliskan sebelum identifier variable (++a) atau
sesudahnya (a++). Operator increase yang digunakan sebagai prefix (++a),
letak perbedaan :
Example 1 Example 2
B=3; B=3;
A=++B; A=B++;
// A is 4, B is 4 // A is 3, B is 4
Relasional Operators (= =, !=, >, <, >=, <=)
Untuk
mengvaluasi antara dua ekspresi, dapat digunakan operator relasional.
Hasil dari operator ini adalah nilai bool yaitu hanya berupa true atau
false, atau dapat juga dalam nilai int, 0 untuk merepresentasikan
“false” dan 1 untuk merepresentasikan “true”. Operator-operator
relasional pada C :
= = Equal
!= Different
> Greater than
< Less than
>= Greater or equal then
<= Less or equal then
Logic Operators ( !, &&, || )
Operator ! equivalent dengan operasi Boolean NOT, hanya mempunyai 1
operand, berguna untuk membalikkan nilai dari operand yang bersangkutan.
Contoh :
! (5 = = 5) returns false because the expression at is right (5 = = 5) would be true.
! (6 =<= 4) returns true because (6 <=4) be false.
! true returns false.
!false returns false.
Operator
logika && dan || digunakan untuk mengevaluasi 2 ekspresi dan
menghasilkan 1 nilai akhir. Mempunyai arti sama dengan logika Boolean
AND dan OR.
Conditional Operator ( ? )
Operator kondisional mengevaluasi ekspresi dan memberikan hasil tergantung dari hasil evaluasi (true atau false ). Sintaks :
conditional ? result1 : result2
Jika kondisi true maka akan menghasilkan result1, jika tidak akan menghasilkan result2.
7 = = 5 ? 4 : 3 returns 3 since 7 is not equal to 5.
7 = = 5 + 2 ? 4 :3 returns 4 since 7 is equal to 5 + 2.
5 > 3 ? a : b returns a, since 5 is greater than 3.
a > b ? a :b returns the greater one, a or b.
Explisit Type Casting Operators
Explisit
type casting operators memungkinkan untuk mengkonversikan tipe data
yang sudan diberikan ke tipe data ynag lain. Ada beberapa cara yang
dilakukan dalam C, yang paling populer yaitu tipe baru dituliskan dalam
tanda kurung ( ), contoh :
int i;
float f = 3.14;
i = (int) f;
Contoh diatas mengkonversikan nilai 3.14 menjadi nilai integer (3). Tipe casting operator yang digunakan (int). cara lainnya :
i = int ( f );
Operator
ini menerima 1 parameter, dpat berupa type variable atau variable itu
sendiri dan mengembalikan ukuran type atau object tersebut dalam bytes :
a = sizeof (char);
Contoh
diatas akan memberikan nilai 1 ke a karena char adalah tipe data dengan
panjang 1 byte. Nilai yang diberikan ole sizeof bersifat konstan.
Sekian terimakasih...
Sumber referensi