EBOOK BAHASA C 3 I MADE JONI BUDI RAHARJO PDF

Title EBOOK BAHASA C 3 I MADE JONI BUDI RAHARJO
Author Defli Putra
Pages 323
File Size 1.3 MB
File Type PDF
Total Downloads 182
Total Views 238

Summary

Cara Mudah Mempelajari Pemrograman C & Implementasinya Membahas: Semua konsep dan elemen dasar bahasa C Struktur dan union Konsep pointer, teknik alokasi dan dealokasi memori Array dan penggunaannya Linked list (stack dan queue) Operasi file Preprocessor directive Pemrograman port (paralel dan s...


Description

Cara Mudah Mempelajari

Pemrograman C & Implementasinya Membahas: Semua konsep dan elemen dasar bahasa C Struktur dan union Konsep pointer, teknik alokasi dan dealokasi memori Array dan penggunaannya Linked list (stack dan queue) Operasi file Preprocessor directive Pemrograman port (paralel dan serial)

I Made Joni Budi Raharjo

Saya persembahkan buku ini untuk Ibu Ni Wayan Ranis dan kakak-kakak tercinta. Ucapan terima kasih saya tujukan kepada rekan-rekan dosen di Jurusan Fisika Universitas Padjadjaran: Prof. Dr. Rustam E. Siregar; Dr. Qomarrudin; Dr. Bernard YT; Camellia Panatarani, D.Eng; Darmawan Hidayat, MT; Bambang Mukti Wibawa, MS; dan yang lainnya – atas motivasi yang telah diberikan. -- I Made Joni

Saya persembahkan buku ini untuk kedua orang tua tercinta, terima kasih atas semua doa, didikan, dan kasih sayangnya selama ini; juga untuk kakak-kakak, dan adikku -Mira -- atas dukungan dan kasih sayangnya. Terima kasih juga saya ucapkan untuk Bapak Totok Triwibowo atas arahan dan saran-saran yang telah diberikan, rekanrekan di PT. Sigma Delta Duta Nusantara (SDDN) dan PT. Telekomunikasi Indonesia. -- Budi Raharjo

1

Kata Pengantar Puji syukur kami panjatkan kepada Tuhan YME atas karunia dan berkah-Nya sehingga penulis berdua dapat menyelesaikan penyusunan buku ini. Bahasa C merupakan bahasa pemrograman yang sudah tidak diragukan lagi kehandalannya dan banyak digunakan untuk membuat program-program dalam berbagai bidang, termasuk pembuatan compiler dan sistem operasi. Sampai saat ini, C masih tetap menjadi bahasa populer dan berwibawa dalam kancah pemrograman. Sejauh ini, C juga telah menjadi inspirasi bagi kelahiran bahasa-bahasa pemrograman baru, seperti C++, Java, dan juga yang lainnya; sehingga dari sisi sintak kontrol programnya, ketiga bahasa ini bisa dikatakan sama. Bahasa pemrograman C sangatlah fleksibel dan portabel, sehingga dapat ditempatkan dan dijalankan di dalam beragam sistem operasi. Pada umumnya, C banyak digunakan untuk melakukan interfacing antar perangkat keras (hardware) agar dapat berkomunikasi satu sama lainnya. Dalam buku ini akan dibahas konsep-konsep dasar yang mutlak diperlukan dalam pemrograman menggunakan bahasa C sehingga Anda dapat mengimplementasikannya langsung ke dalam kasus-kasus pemrograman yang Anda hadapi. Sesuai dengan kata penciptanya -- Dennis M. Ritchie -- dalam bukunya “The C Programming Language” yang disusun bersama rekan kerjanya -- Brian W. Kernighan -- menyebutkan bahwa bahasa C bukan merupakan bahasa besar sehingga tidaklah diperlukan buku yang tebal untuk membahas semua elemen dari bahasa C. Dengan banyaknya contoh program yang ada, mudah-mudahan buku yang relatif tipis ini dapat menjadi referensi yang membantu Anda dalam mempelajari pemrograman C secara mudah dan cepat. Selain itu, pada bagian akhir buku ini disertakan pula beberapa konsep dasar dan implementasi C untuk melakukan pemrograman port. Terakhir, penulis berdua menghaturkan banyak terima kasih kepada Pak Benie Ilman beserta rekan-rekan di penerbit Informatika yang telah banyak membantu dalam proses pencetakan dan penerbitan buku ini.

Bandung, 10 Juni 2006 Penulis

2

Daftar Isi

Kata Pengantar Daftar Isi Bab 1. Pengenalan Bahasa C 1.1. Pendahuluan 1.2. Apa Itu Program Komputer? 1.3. Apa Itu Kompiler? 1.4. Apa Itu Bahasa Pemrograman? 1.5. Mengapa Menggunakan Bahasa C? 1.6. Sejarah Singkat Lahirnya Bahasa C 1.7. Kerangka Program dalam Bahasa C 1.8. File Header (*.h) 1.9. Proses Pembentukan Program dalam Bahasa C 1.9.1. Menuliskan Kode Program 1.9.2. Melakukan Kompilasi Kode Program 1.9.3. Proses Linking 1.10. Mengenal Fungsi printf() dan scanf() 1.11. Membuat Program di dalam Sistem Operasi Windows dan Linux 1.11.1. Kompilasi dan Eksekusi Program di dalam Windows 1.11.2. Kompilasi dan Eksekusi Program di dalam Linux Bab 2. Komentar, Variabel dan Tipe Data 2.1. Pendahuluan 2.2. Komentar Program 2.2.1. Komentar Sisipan 2.2.2. Komentar Bersarang 2.3. Variabel 2.3.1. Batasan Penamaan Variabel 2.3.2. Inisialisasi Variabel 2.3.3. Lingkup Variabel 2.3.3.1. Variabel Global 2.3.3.2. Variabel Lokal 2.3.4. Jenis Variabel 2.3.4.1. Variabel Otomatis 2.3.4.2. Variabel Statis 2.3.4.3. Variabel Eksternal 2.3.4.4. Variabel Register 2.4. Konstanta 3

2.5. Tipe Data 2.5.1 Tipe Data Dasar 2.5.1.1. Tipe Bilangan Bulat 2.5.1.2. Tipe Bilangan Riil 2.5.1.3. Tipe Karakter dan String 2.5.1.4. Tipe Logika 2.5.2. Tipe Data Bentukan 2.5.3. Enumerasi Bab 3. Operator 3.1. Pendahuluan 3.2. Operator Assignment 3.3. Operator Unary 3.3.1. Increment 3.3.1.1. Pre-Increment 3.3.1.2. Post-Increment 3.3.2. Decrement 3.4. Operator Binary 3.4.1. Operator Aritmetika 3.4.2. Operator Logika 3.4.2.1. Operator && (AND) 3.4.2.2. Operator || (OR) 3.4.2.3. Operator ! (NOT) 3.4.3. Operator Relasional 3.4.4. Operator Bitwise 3.4.4.1. Operator ^ (Exclusive OR) 3.4.4.2. Operator >> (Shift Right) 3.4.4.3. Operator 0) { auto int var_otomatis; /* Mendeklarasikan variabel otomatis. */ /* Dalam blok ini variabel var_otomatis dikenali */ ... } /* akhir blok pemilihan */ /* di sini variabel var_otomatis sudah tidak dikenali lagi */ return 0; }

Berikut ini contoh penggunaannya di dalam sebuah program.

#include #include

/* untuk menggunakan fungsi pow() */

int main(void) { int B = 5, e; printf(“Masukkan nilai pangkat : ”); scanf(“%d”, &e); if (e >= 0) { auto int hasil; hasil = pow (B, e); printf(“%d^%d = %d”, B, e, hasil); } /* printf(“hasil = %d”, hasil); */ /* SALAH, karena variabel hasil tidak dikenal */ return 0; }

31

Contoh hasil yang akan diperoleh dari program di atas adalah sebagai berikut.

Masukkan nilai pangkat : 3 5^3 = 125

2.3.4.2.

Variabel Statis

Variabel statis adalah suatu variabel yang menyimpan nilai permanen dalam memori, artinya variabel tersebut akan menyimpan nilai terakhir yang diberikan. Untuk menyatakan bahwa suatu variabel adalah variabel statis adalah dengan menggunakan kata kunci static. Adapun bentuk umum dari pendeklarasiannya adalah sebagai berikut. static tipe_data nama_variabel;

Untuk lebih memahami tentang variabel statis, di sini kita akan membuat dua buah program dimana program pertama akan menggunakan variabel biasa, sedangkan program kedua menggunakan variabel statis. Hal ini bertujuan agar Anda dapat mengetahui perbedaan yang tampak pada variabel statis. a. Menggunakan variabel biasa

#include /* Mendefinisikan sebuah fungsi dengan nama KaliSepuluh() */ int KaliSepuluh(void) { int a = 1; /* Mendeklarasikan variabel biasa */ a = a * 10; return a; } /* Fungsi utama */ int main(void) { /* Mendeklarasikan variabel x, y dan z untuk menampung nilai dari fungsi */ int x, y, z; x = KaliSepuluh(); y = KaliSepuluh(); z = KaliSepuluh();

/* Melakukan pemanggilan fungsi untuk pertama kali */ /* Melakukan pemanggilan fungsi untuk kedua kali */ /* Melakukan pemanggilan fungsi untuk ketiga kali */

/* Menampilkan nilai yang terdapat pada variabel x, y dan z */ printf(“Nilai x = %d\n”, x); printf(“Nilai y = %d\n”, y);

32

printf(“Nilai z = %d\n”, z); return 0; }

Hasil yang akan diperoleh adalah sebagai berikut.

Nilai x = 10 Nilai y = 10 Nilai z = 10

b. Menggunakan variabel statis

#include /* Mendefinisikan sebuah fungsi dengan nama KaliSepuluh() */ int KaliSepuluh(void) { static int a = 1; /* Mendeklarasikan variabel statis */ a = a * 10; return a; } /* Fungsi utama */ int main(void) { /* Mendeklarasikan variabel x, y dan z untuk menampung nilai dari fungsi */ int x, y, z; x = KaliSepuluh();

/* Melakukan pemanggilan fungsi untuk pertama kali */ y = KaliSepuluh(); /* Melakukan pemanggilan fungsi untuk kedua kali */ z = KaliSepuluh(); /* Melakukan pemanggilan fungsi untuk ketiga kali */ /* Menampilkan nilai yang terdapat pada variabel x, y dan z */ printf(“Nilai x = %d\n”, x); printf(“Nilai y = %d\n”, y); printf(“Nilai z = %d\n”, z); return 0; }

Hasil yang akan diperoleh adalah sebagai berikut.

Nilai x = 10

33

Nilai y = 100 Nilai z = 1000 Apa yang dapat Anda simpulkan dari hasil di atas? Kita lihat bahwa pada saat kita menggunakan variabel biasa, setiap kali pemanggilan fungsi tersebut, kompilator akan mengalokasikan variabel a dan menginisialisasinya dengan nilai 1, yang selanjutnya akan dikalikan dengan 10. Namun yang perlu diperhatikan adalah pada saat program selesai melakukan proses yang terdapat fungsi, maka variabel a akan didealokasikan secara otomatis. Hal ini yang menyebabkan setiap pemanggilan fungsi akan selalu menghasilkan nilai yang tetap, yaitu 10. Sedangkan apabila kita menggunakan variabel statis, maka ketika pertama kali fungsi dipanggil, variabel a akan dialokasikan dan akan tetap bersarang di memori sampai program dihentikan. Adapun nilai a yang ada pada saat ini adalah 1 sehingga apabila dikalikan 10, maka hasilnya adalah 10. Kemudian ketika fungsi itu dipanggil untuk yang kedua kalinya, nilai a sudah menjadi 10, bukan 1, dan nilai terakhir tersebut kemudian dikalikan lagi dengan 10, menghasilkan nilai 100. Begitu juga dengan pemanggilan fungsi yang ketiga, nilai a yang ada adalah 100 sehingga apabila dikalikan 10 maka hasilnya 1000. 2.3.4.3.

Variabel Eksternal

Bahasa C mengizinkan kita untuk menuliskan sintak program ke dalam file yang terpisah dengan bertujuan untuk modularisasi program. Untuk itu apabila kita ingin mendeklarasikan variabel yang dapat dikenali dan diakses oleh masing-masing file yang terpisah tersebut, maka variabel itu harus kita deklarasikan sebagai variabel eksternal. Adapun caranya adalah dengan menambahkan kata kunci extern pada saat pendeklarasikan. Berikut ini bentuk umumnya. extern tipe_data nama_variabel;

Sebagai contoh, asumsikan kita memiliki dua buah file program, yaitu eksternal.c dan utama.c, maka apabila kita mendeklarasikan suatu variabel eksternal di file utama.c, maka dalam file eksternal.c variabel itu juga dapat diakses, yaitu dengan mendefinisikannya melalui kata kunci extern. Untuk mengilustrasikan kasus ini, coba Anda perhatikan potongan sintak di bawah ini. Dalam file utama.c

... int var_eksternal;

/* deklarasi variabel */

int main(void) { var_eksternal = 100; printf(“Nilai var_eksternal : %d\n”, var_eksternal); /* Memanggil fungsi SetNilai() yang terdapat pada file eksternal.c */ SetNilai();

34

printf(“Nilai var_eksternal : %d\n”, var_eksternal); return 0; }

Dalam file eksternal.c

... extern int var_eksternal; void SetNilai(void) { var_eksternal = 500; } ...

Apabila dikompilasi dan dijalankan, maka program di atas akan memberikan hasil sebagai berikut.

Nilai var_eksternal : 100 Nilai var_eksternal : 500

Apabila Anda masih bingung dengan sintak di atas, itu wajar. Namun Anda tidak perlu cemas karena yang perlu Anda ketahui di sini adalah konsep dari variabel eksternal saja. Variabel eksternal pada umumnya digunakan pada saat pembuatan file header. Pembahasan mengenai pembuatan program yang terdiri dari beberapa file, itu akan dibahas secara tersendiri dalam buku ini, yaitu pada lampiran B – Membuat File Header (*.h). 2.3.4.4.

Variabel Register

Berbeda dengan variabel biasa yang akan bertempat di memori, variabel register ini akan disimpan di dalam register CPU (Central Proccessing Unit). Dengan demikian apabila kita ingin mengisikan atau mengubah nilai variabel register, maka kita tidak perlu melakukan akses terhadap memori sehingga proses yang dilakukan pun lebih cepat. Perlu untuk diperhatikan bahwa variabel register ini hanya dapat diterapkan ke tipe bilangan bulat, karakter dan pointer saja. Selain itu variabel ini hanya boleh dideklarasikan sebagai variabel lokal ataupun parameter dari fungsi. Untuk mendeklarasikannya, kita harus menggunakan kata kunci register. Adapun bentuk umumnya adalah sebagai berikut. register tipe_data nama_variabel;

Berikut ini contoh program yang akan menunjukkan penggunaan variabel register.

35

#include /* Mendefinisikan fungsi untuk menghitung nilai perpangkatan Be */ int Pangkat(register int B, register int e) { /* Mendeklarasikan variabel register */ register int hasil; hasil = 1; for ( ; e; e--) { hasil *= B; } return hasil; } /* Fungsi utama */ int main(void) { printf(“2^6 = %d”, Pangkat(2, 6));

/* Menghitung 26 */

return 0; }

Hasil yang akan diperoleh dari program di atas adalah sebagai berikut.

2^6 = 64

2.4.

Konstanta

Konstanta adalah sebuah tetapan yang tidak dapat diubah nilainya ketika program berjalan. Dalam bahasa C, para programmer biasanya menggunakan sebuah makro untuk membuat suatu konstanta, yaitu dengan mendefinisikannya melalui directive #define. Untuk mengetahui informasi lebih lanjut mengenai directive #define dan konsep kerja makro, Anda dapat melihat bab 11 – Preprosesor Directive. Berikut ini contoh sintak pembuatan konstanta dengan mendefinisikan makro.

#define PI

3.1416

#define NULL

0

#define FALSE

0

#define TRUE

1

/* Membuat konstanta nilai 3.1416 */ /* Membuat konstanta dengan nilai 0 */ /* Membuat konstanta nilai 0 */ /* Membuat konstanta nilai 1 */

PI dengan NULL FALSE dengan TRUE dengan

36

Meskipun tidak bersifat mutlak, namun kebanyakan para programmer C pada umumnya mendefinisikan sebuah makro dengan menggunakan huruf besar (kapital). Berikut ini contoh program yang dapat menunjukkan penggunaan makro.

#include /* Mendefinisikan makro untuk mengeset nilai PI */ #define PI 3.1416 int main(void) { /* Mendeklarasikan variabel untuk menampun nilai jari-jari dan luas lingkaran */ double jari2, luas; /* Meminta pengguna program (user) untuk memasukkan panjang jari-jari */ printf(“Masukkan panjang jari-jari lingkaran : ”); scanf(“%lf”, &jari2); /* Melakukan perhitungan luas lingkaran dan memasukkan hasilnya ke dalam variabel luas */ luas = PI * jari2 *jari2; /* Menampilkan nilai dari variabel luas */ printf(“Luas lingkaran = %.2lf”, luas); return 0; }

Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut.

Masukkan panjang jari-jari lingkaran : 2 Luas lingkaran = 12.57

Selain menggunakan directive #define, bahasa C juga menyediakan kata kunci const untuk membentuk suatu kontanta. Berikut ini bentuk umum pembuatannya. const tipe_data nama_konstanta = nilai_kontan;

Sebagai contoh apabila kita akan membuat konstanta PI dengan menggunakan kata kunci const, maka kita akan menuliskannya sebagai berikut.

const double PI = 3.1416;

37

2.5.

Tipe Data

Dalam dunia pemrograman, tipe data adalah sesuatu yang digunakan untuk merepresentasikan jenis dari suatu nilai tertentu. Sebagai contoh nilai 10 adalah nilai yang bertipe bilangan bulat, 12.23 bertipe bilangan riil serta ‘A’ bertipe karakter. Untuk menulis suatu program dalam bahasa tertentu, tentunya kita harus mengetahui terlebih dahulu akan tipe data yang terdapat di dalamnya. Kesalahan dalam menentukan tipe data dapat menyebabkan nilai yang dihasilkan tidak akurat. Maka dari itu, pada bagian ini Anda akan diperkenalkan macam-macam tipe data yang terdapat di dalam bahasa C agar Anda dapat terhindar dari masalah akurasi nilai yang tidak diinginkan. Secara umum tipe data dapat dibedakan menjadi tiga bagian besar, yaitu tipe data dasar, bentukan dan enumerasi. Berikut ini penjelasan dari masing-masing tipe tersebut. 2.5.1. Tipe Data Dasar Tipe data dasar dalam bahasa C dikelompokkan ke dalam empat kategori, yaitu tipe bilangan bulat (integer), bilangan riil (floating-point), karakter atau string serta tipe logika (boolean). 2.5.1.1.

Tipe Bilangan Bulat

Sesuai dengan namanya, tipe bilangan bulat adalah suatu tipe data yang digunakan untuk menyimpan nilai-nilai yang berbentuk bilangan bulat (bilangan yang tidak mengandung koma), misalnya 10, 23, 200 dan sebagainya. Namun yang perlu diperhatikan juga bahwa bilangan bulat juga dikelompokkan lagi menjadi dua jenis, yaitu bilangan bulat positif dan negatif. Untuk itu, di dalam bahasa C tipe bilangan bulat juga dibedakan lagi menjadi beberapa macam dengan rentang nilai tertentu. Adapun yang termasuk ke dalam tipe bilangan bulat di dalam bahasa C adalah seperti yang tampak pada tabel di bawah ini. Tipe Data int unsigned int signed int short int unsigned short int signed short int long int signed long int unsigned long int

Ukuran (dalam bit) 16 atau 32 16 atau 32 16 atau 32 16 16

Rentang

Format

-32768 sampai 32767 0 sampai 65535 Sama seperti int -32768 sampai 32767 0 sampai 65535

%d %u %d %d %u

16

Sama seperti short int

%d

32 32

-2147483648 sampai 2147483647 Sama seperti long int

%l %l

32

0 sampai 4294967295

%L

38

2.5.1.2.

Tipe Bilangan Riil

Selain tipe data untuk menyimpan nilai-nilai bilangan bulat, bahasa C juga menyediakan tipe data yang digunakan untuk menyimpan nilai-nilai bilangan riil (bilangan yang mengandung koma), misalnya 2.13, 5.64, 1.98 dan lainnya. Adapun yang termasuk ke dalam tipe tersebut adalah seperti yang tertera pada tabel di bawah ini. Tipe Data float double long double

Ukuran (dalam bit) 32 64 80

Rentang 3.4e-38 sampai 3.4e+38 1.7e-308 sampai 1.7e+308 1.7e-308 sampai 1.7e+308

Format %f %lf %lf

Sebagai catatan apabila Anda akan menuliskan bilangan riil tersebut ke dalam bentuk eksponen, maka format yang akan digunakan adalah %e atau %E. 2.5.1.3.

Tipe Karakter dan String

Tipe ini digunakan untuk merepresentasikan data-data yang berupa karakter. Adapun yang termasuk ke dalam tipe data karakter di dalam bahasa C adalah seperti yang tertera pada tabel di bawah ini. Tipe Data char signed char unsigned char

Ukuran (dalam bit) 8 8 8

Rentang -128 sampai +127 -128 sampai +127 0 sampai 255

Format %c %c %c

Data akan dianggap sebagai karakter apabila diapit oleh tanda petik tunggal (‘’), misalnya ‘A’, ’B’, ’a’, ’b’, dan sebagainya. Sedangkan apabila diapit oleh tanda petik ganda (“”), maka akan dianggap sebagai string, misalnya “A”, “B”, “a”, “b”. Adapun yang dinamakan dengan string itu sendiri adalah kumpulan dari karakter, misalnya “Saya sedang belajar”, “Bahasa C” dan sebagainya. Format yang digunakan untuk tipe string adalah %s. Tipe string ini akan kita bahas lebih lanjut pada bagian lain dalam buku ini, yaitu pada bab 6 – Array dan String. 2.5.1.4.

Tipe Logika

Tipe logika adalah tipe data yang merepresentasikan nilai benar (true) dan salah (false). Bahasa C tidak mendefinisikan tipe khusus untuk menampung nilai-nilai tersebut. Hal ini tentu berbeda dengan bahasa pemrograman lain (misalnya bahasa Pascal) yang telah menyediakan tipe boolean untuk merepresentasikan nilai logika. Dalam bahasa C nilai true direpresentasikan dengan nilai selain 0 (biasanya dengan nilai 1), sedangkan nilai false direpresentasikan dengan nilai 0. Pada umumnya para programmer C mendefinisikan tipe logika melalui pembuatan makro maupun tipe enumerasi. Berikut ini contoh pendefinisian yang biasa dilakukan untuk membuat tipe logika di dalam bahasa C.

39

#define TRUE #define FALSE

1 0

Apabila menggunakan enumerasi, maka contoh sintaknya adalah sebagai berikut.

typedef enum {FALSE, TRUE} boolean;

Dengan demikian tipe boolen yang kita definisikan di atas dapat digunakan untuk mendeklarasikan variabel. 2.5.2. Tipe Data Bentukan Tipe data bentukan adalah suatu tipe data yang didefinisikan sendiri untuk memenuhi kebutuhan-kebutuhan progam yang akan kita buat. Adapun ...


Similar Free PDFs