You are on page 1of 14

A.

Mengenal Bahasa 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, komentarkomentar 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
1.

diperhatikan, diantaranya:
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

dan menuliskan kembali hasil pengolahan kedalam berkas semula. pernyataan instruksi. #ifndef. pendeteksian kesalahan. dan 3) Pengarah kendali compiler (#ifdef. dll) Dalam menyertakan berkas judulyang diperlukan olefh fungsi input dan outputyang digunakan dalam program : #include dan untuk mendefenisikan sebuah konstanta (pi): #define PI 3. 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. Di dalam program pengarah prapengolahan diawali oleh karakter # yang dituliskan pada baris-baris pertama program. /* Komentar awal /* Komentar lagi /* Komentar berikutnya*/ Pengarah Prapengolahan Dalam mengolah kode-kode program. Prapengolah membuang semua baris perintah prapengolahan dari berkas sumber dan melakukan perubahan terhada berkas sumber sesuai dengan arahan perintah yang diberikan. 2) Pendefenisian makro (#define). Prapengolahan memperlakukan berkas program sebagai sederetan baris teks: membaca. 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. .dilakukan . yaitu adanya komentar dalam komentar. Deklarasi Global Pada bagian deklarasi global terdapat pendeklarasian variable dan prototipe fungsi. pengubahan pengenal menjadi string dan penggabungan pengenal. Semua variable y ang dideklarasikan pada bagian ini akan dikenal oleh semua bagian program yang terdapat dibawahnya.1459. 3. mengolah. misalnya. pada pernyataan keputusan untuk menjelaskan kondisi yang harus dipenuhi dalam pengambilan keputusan. nama fungsi dan daftar argumen yang diberikan pada fungsi yang diberi jumlah argumen (arity) dan jenis data masing-masing argumen. pengujian alternatif. Secara garis besar pelayanan prapengolah dibagi dalam tiga kelompok : 1) Penyisipan berkas (#include). Komentar tidak bisa dibuat bertingkat . compiler C melaksanakan beberapa tahapan yaitu melakukan prapengolahan untuk melakukan persiapan yang diperlukan sebuah berkas program kompilasi.

c Menampilkan teks dilayar*/ #include int main ( ) { printf(“hello. } Pada contoh diatas fungsi main ( ) tidak memerlukan argumen. /* Nama file : Hello. dan konstruksi pengulangan. dan hanya memiliki sebuah pernyataan yang dapat dieksekusi. badan fungsi main ( ) tidak memiliki bagian deklarasi lokal. Kode program ini dapat berupa input/output. world!\n”). konstruksi keputusan.Fungsi Main ( ) Fungsi main ( ) memegang peranan yang penting pada sebuah program. Barapapun banyaknya fungsi yang terdapat pada sebuah program C. konstruksi runtunan. Kode program yang dapat dieksekusi juga dapat berupa fungsi input/output standar. sehingga hanya dikenal oleh fungsi tersebut. dalam arti hanya dikenal oleh main ( ). semua variable dan prototipe fungsi ini bersifat lokal terhadap main ( ). konstruksi keputusan dan konstruksi pengulangan. terdapat pula fungsi-fungsi buatan pemrogram. berupa fungsi output printf ( ). Kode program (pernyataan) yang dapat dieksekusi adalah kode program yang merupakan baris-baris instruksi yang harus dilaksanakan oleh kompiler. main ( ) adalh fungsi utama yang akan dilaksanakan oleh compiler. Fungsi ini merupakan fungsi utama pada setiap program C dimana eksekusi keseluruhan program dimulai. Contoh program yang memperlihatkan struktur fungsi main ( ) sederhana. Pembatas . return 0. Fungsi Buatan Pemrogram Selain main ( ) yang mempunyai kedudukan khusus dalam sebuah program. Pada fungsi ini dapat diberikan deklarasi prototype fungsi lain secara local. konstruksi runtunan. Dalam badan fungsi main ( ) terdapat pula bagian deklarasi lokal yang dimaksudkan untuk mendeklarasikan variable-variabel dan prototipeprototipe fungsi.

Sedangkan tipe data structured merupakan tipe data bentukan. ) yang berperan untuk memberitahu compiler akhir pernyataan. Dekalarasi Variabel . Panjang dari identifier. kurung kurawal ini disebut pembatas (delimeters). diantaranya: [ ]. Address merupakan tipe data yang digunakan untuk menunjuk suatu alamat memori.Setelah pendefenisian fungsi terdapat kurung kurawal buka “{“ dan kurung kurawal tutup “}” yang menunjuk akhir blok fungsi. Type float menggunakan real format 32-bit IEEE. Tipe Data Adalah suatu nilai yang dapat dinyatakan dalam bentuk konstanta atau variabel dan operator. sedangkan variabel menyatakan nilai yag dapat berubah-ubah selama eksekusi berlangsung. Type long double menggunakan extended real format 80-bit IEEE. < >. “ “. walaupun untuk beberapa kompiler hanya 32 karakter pertama saja yang dibaca sebagai identifier (sisanya diabaikan). Identifier harus selalu diawali dengan huruf atau garis bawah ( _ ). Untuk semua Turbo C++. type floatingpoint yang menggunakan format-format IEEE floating-point digunakan oleh intel 8087. Type double menggunakan real format 64-bit IEEE. Selain kurung kurawal juga terdapat beberapa pembatas lain. ( ). atau garis bawah ( _ ). dan ‘ ‘. Akhir Pernyataan Setiap pernyataan (statement) dalam C diakhiri dengan titik koma ( . angka. yaitu spasi. tidak terbatas. karena C mengabaikan semua karakter yang disebut karakter-karakter whitespace. Tipe data simple merupakan tipe data bawaan dari C++. Identifiers Identifiers adalah untaian satu atau lebih huruf. Floating merupakan tipe data untuk bilangan desimal. tipe data ini terdiri dari beberapa tipe  data yaitu: Tipe data integral merupakan tipe data yang terdiri dari bilangan dengan range yang berbeda-  beda. Konstanta menyatakan nilai yang tetap. Carriage return yang diperoleh sewaktu menekan tombol bukan penunjuk akhir pernyataan. tabulator dan carriage return (newline). Ketentuan lainnya yang harus diperhatikan dalam menentukan identifier adalah tidak boleh menggunakan keyword dari bahasa C. Dalam badan program kurung kurawal juga dapat digunakan untuk membatasi pernyataan majemuk yang dimiliki oleh sebuah blok kode program.

long. Atau dengan cara lain. Contoh : 1776 707 -273 . Sintaks penulisan deklarasi variable adallah dengan menuliskan tipe data yang akan digunakan diikuti dengan identifier yang benar. contoh : int a. maka dapat dituliskan : int a = 0. Karena merupakan nilai numeric. contoh : int a. short. Sintaks penulisan sbb : Tipe identifier = initial_value . b. maka tidak memerlukan tanda kutip ( “ ) maupun karakter khusus lainnya. nilai floating point karakter. Tipe data integer (char. Inisialisasi Variabel Ketika mendeklarasikan variable local. float mynumber. jika tidak ditulis maka akan dianggap signed. contoh : unsigned short NumberofSons. dan int) dapat berupa signed atau unsigned tergantung dari kisaran nilai yang direpresentasikan. Jika akan menggunakan tipe data yang sama untuk beberapa identifier maka data dituliskan dengan tanda koma. signed int MyAccountBalance. Misalkan kita akan mendklarasikan variable int dengan nama a yang bernilai 0. c. Konstanta : Literals Konstanta adalah ekspesi dengan nilai yang tetap. kita harus mendeklarasikan tipe data yang akan digunakan. kita dapat memberikan nilai tertentu. Nilai Integer Merupakan nilai konstanta numeric yang meng-identifikasikan nilai integer decimal.Untuk menggunakan variable pada C. Dilakukan dengan menyertakan keyword signed atau unsigned sebelum tipe data. dan string. Terbagi dalam nilai integer. yaitu menyertakan nilai yang akan diberikan dalam tanda ( ) : tipe identifier (initial_value).

0 Konstanta Define (#define) Kita dapat mendefenisikan sendiri nama untuk konstanta yang akan kita pergunakan.14159 // 3. contoh : 75 // decimal 0113 // octal 0X4b // heksadecimal Nilai Floating Point Merepresentasikan nilai decimal dan / atau eksponen. Jika menggunakn octal harus digunakan dengan karakter 0 (karakter nol).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 : 3. termasuk titik decimal dan karakter e (yang merepresentasikan “ dikali 10 pangkat n “.6 * 10^-19 3. dimana n merupakan nilai integer) atau keduanya. Contoh : const int width = 100. const zip = 12440.C memungkinkan kita untuk menggunakan nilai octal (base 8) dan heksadesimal (base 16).0 // 3. dengan menggunakan preprocessor directive #define.02e23 // 6. constchar tab = ‘t’. X).02 * 10^23 1.6e-19 // 1. dan untuk heksadesimal diawali dengan karakter 0X (nol. . Dengan format : #define identifier value Contoh : #define PI 3.14159 6.

// a : ? b : ? a = 10. *. % ) + addition . hasil dari suatu operasi atau kombinasi dari semuanya. variable. b. -. Contoh : a = 2 + (b = 5). // a : 4 b : 7 Hasil dari contoh diatas . // a : 10 b : ? b = 4. Assignation ( = ) Operator ini digunakan untuk membeikan nilai ke suatu variable. Operator-operator ini cukup penting untuk diketahui karena merupakan salah satu dasar bahasa C. a bernilai 4 dan b bernilai 7. Contoh : Int a. / . maka compiler akan mengsumsikan sebagai int. Sisi kiri dari operator disebut lvalue (left value) dan sisi kanan disebut rvalue (right value). Operator Operator yang disediakan C berupa keyword atau karakter khusus.Jika tipe data tidak disebutkan. Memberikan nilai integer 5 ke variable a. a=5. . // a : 10 b : 4 a = b.substraction * multiplication / division % module Increase (++) and decrease (--). lvalue harus selalu berupa variable dan sisi kanan berupa konstanta. equivalent dengan : b=5 a=2+b Arithmetic Operators ( +. // a : 4 b : 4 b = 7.

. >=. <. berguna untuk membalikkan nilai dari operand yang bersangkutan. atau dapat juga dalam nilai int. Hasil dari operator ini adalah nilai bool yaitu hanya berupa true atau false. 0 untuk merepresentasikan “false” dan 1 untuk merepresentasikan “true”. Operator increase yang digunakan sebagai prefix (++a). Operator-operator relasional pada C : = = Equal != Different > Greater than < Less than >= Greater or equal then <= Less or equal then Logic Operators ( !. // A is 4. A=++B. ! true returns false. >. Dengan kata lain dapat dituliskan sebelum identifier variable (++a) atau sesudahnya (a++). B is 4 // A is 3. dapat digunakan operator relasional. letak perbedaan : Example 1 Example 2 B=3. A=B++. B=3. Contoh : ! (5 = = 5) returns false because the expression at is right (5 = = 5) would be true. hanya mempunyai 1 operand.Contoh : a++. ! (6 =<= 4) returns true because (6 <=4) be false. Operator increase dan decrease dapat digunakan sebagai prefix dan suffix. a+=1. &&. B is 4 Relasional Operators (= =. !false returns false. <=) Untuk mengvaluasi antara dua ekspresi. || ) Operator ! equivalent dengan operasi Boolean NOT. !=. a=a+1.

Operator logika && dan || digunakan untuk mengevaluasi 2 ekspresi dan menghasilkan 1 nilai akhir. a or b. contoh : int i. cara lainnya : i = int ( f ).14. Operator ini menerima 1 parameter. Pengembangan sebuah system menggunakan mikrokontroler AVR buatan ATMEL menggunakan software AVR STUDIO dan Codevision AVR. since 5 is greater than 3. yang paling populer yaitu tipe baru dituliskan dalam tanda kurung ( ). Contoh diatas akan memberikan nilai 1 ke a karena char adalah tipe data dengan panjang 1 byte. Sintaks : conditional ? result1 : result2 Jika kondisi true maka akan menghasilkan result1. 5 > 3 ? a : b returns a. AVRSTUDIO merupakan software . float f = 3. Tipe casting operator yang digunakan (int). Conditional Operator ( ? ) Operator kondisional mengevaluasi ekspresi dan memberikan hasil tergantung dari hasil evaluasi (true atau false ). Ada beberapa cara yang dilakukan dalam C. a > b ? a :b returns the greater one. Instruksi-instruksi pada Codevision AVR. 7 = = 5 + 2 ? 4 :3 returns 4 since 7 is equal to 5 + 2. 7 = = 5 ? 4 : 3 returns 3 since 7 is not equal to 5. B. Mempunyai arti sama dengan logika Boolean AND dan OR. Contoh diatas mengkonversikan nilai 3. dpat berupa type variable atau variable itu sendiri dan mengembalikan ukuran type atau object tersebut dalam bytes : a = sizeof (char).14 menjadi nilai integer (3). i = (int) f. Nilai yang diberikan ole sizeof bersifat konstan. Explisit Type Casting Operators Explisit type casting operators memungkinkan untuk mengkonversikan tipe data yang sudan diberikan ke tipe data ynag lain. jika tidak akan menghasilkan result2.

b) a+b #define sensor PIN. Program Kontrol a. di mana penulisan program.khusus untuk bahasa assembly yang mempunyai fungsi sangat lengkap. Sedangkan Codevision AVR merupakan software C-cross compiler. compile. #define : Digunakan untuk mendefinisikan macro Contoh : #define ALFA oxff #define SUM(a. Berikut ini penjelasan penggunaan program dalam bahasa C di software Codevision AVR.o Komentar Penulisan komentar untuk beberapa baris komentar sekaligus /* …komentar .*/ Penulisan komentar untuk satu baris saja //…komentar… 1.2 #define pompa PORTB. simulasi. pembuatan kode mesin (assembler) dan download program ke chip AVR dapat dilakukan pada codevision. yaitu untuk melakukan komunikasi serial dengan mikrokontroler yang sudah deprogram. yaitu digunakan untuk menulis program. dan download program ke IC mikrokontroler AVR. In-System programmable Flash on-chip mengizinkan memori program untuk diprogram ulang dalam system menggunakan hubungan serial SPI (Andrianto. kompilasi. Codevision memiliki IDE (Integrated Development Environment) yang lengkap. link. mendefinisikan macro yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source code (mudah dibaca).. Percabangan . Proses download program ke IC mikrokontroler AVR dapat menggunakan system download secara ISP (In-System Programming). 2008: 17). dimana program dapat ditulis dalam bahasa C. Preprocessor (#): Digunakan untuk memasukkan (include) text dari file lain. selain itu ada fasilitas terminal.

menyatakan proses increment dan proses decrement pada variable kontrol. biasanya barkaitan dengan variable kontrol. Sintaks penulisan if dapat ditulis sebagai berikut : if(<expression>)<statement>.nama_variable ++) { statement_yang_diulang. yaitu: for …. } //untuk pengulangan yang melakukan proses decrement For(nama_varible=nilai_awal. b. nama_variable++ dan nama_variable--.syarat_loop. Looping (pengulangan) Looping adalah pengulangan satu atau beberapa perintah sampai mencapai keadaan tertentu. } Syarat_loop adalah pernyataan relasional yang menyatakan syarat berhentinya pengulangan. digunakan untuk melakukan operasi percabangan bersyarat. Ada tiga perintah looping.Perintah if dan if…else… Perintah if dan if…else. dan do…while….nama_variable --) { Statement_yang_diulang. Sintaks perintah while dapat dituliskan sebagai berikut : nama_varible = nilai_awal. Sintaks perintah if …else …dapat dituliskan sebagai berikut: if(<expression>)<statement1>.while ….. .syarat_loop. Sintaks loop for dapat dituliskan sebagai berikut : for Untuk pengulangan yang melakukan proses increment for(nama_variable = nilai_awal. else <statement2>. while Perintah while dapat melakukan looping apabila persyaratannya benar.

Fungsi Input/Output Fungsi-fungsi input/Output berada didalam file stdio. void puts(char *str) : output. arg2. void putchar(char c): mengirim karakter ’c’ menggunakan UART. arg1. void printf(char flash *fmtstr[ . seperti: a. null mengakhiri karakter string. menggunakan system polling (mengirimkan data serial) Sebelum menggunakan fungsi ini. sesuai dengan format specifiers dalam fmtstr string. berlokasi di SRAM. menggunakan putchar. menggunakan putchar. berikut ini beberapa fungsi I/O dasar yang disediakan pada CodeVision.while (syarat_loop) { Statement_yang_akan_diulang.h. a... . b. pada subdirektori …\INC. menggunakan system polling (menerima data serial) b. char getchar(void) : menghasilkan nilai balikan berupa karakter yang diterima dari UART. void putsf(char flash *str) : output. null mengakhiri karakter string. lakukan terlebih dahulu pengaturan konfigurasi komunikasi serial: 1) Inisialisasi baudrate UART 2) Mengaktifkan transmitter UART 3) Mengaktifkan receiver UART Fungsi I/O yang lebih tinggi lainnya menggunakan fungsi getchar dan putchar. berlokasi di FLASH. Nama_variable++. . c. Library Function pada CodeVisionAVR a. menggunakan putchar. } 2.]) : output text yang terformat.

float fabs(float x): menghasilkan nilai absolute dari bilangan floating point x e. 3x12. 2x24. Header ini harus dimasukan (include) jika kita akan menggunakan fungsi-fungsi LCD. Fungsi ini harus dipanggil pertama kali sebelum menggunakan fungsi yang lain.signed char b) : menghasilkan nilai maksimum dari byte a dan b. 4x20. f. 1x16. fungsi ini berada di dalam file lcd. 16). Berikut ini sebagian dari beberapa fungsi-fungsi matematika yang disediakan pada CodeVision. Fungsi LCD Fungsi LCD ditunjukkan untuk memudahkan interfacing antara program C dan modul alphanumeric LCD yang dibuat dengan chip Hitachi HD44780 atau yang serupa chip Hitachi HD44780. dan bernilai 0 bila tidak terdapat modul LCD. unsigned char lcd_init(unsigned char lcd_columns): untuk menginisialisasi modul LCD. pada subdirektori …\INC. Kursor tidak di tampakkan. 2x20. .h. menghapus layar dan meletakkan posisi karakter pada baris ke-0. d. int max(int a. Fungsi-fungsi untuk mengakses LCD diantaranya adalah: a. Nilai yang dikembalikan adalah 1 bila modul LCD terdeteksi.h mendukung: 1x8. 2x16.h. Fungsi Matematika Fungsi ini berada di dalam file math. jumlah kolom pada LCD harus disebutkan (misal.int b) : menghasilkan nilai maksimum dari integer a dan b.. terlebih dahulu harus diatur port mikrokontroler yang digunakan untuk komunikasi dengan modul LCD. signed char cmax(signed char a. Format LCD dalam lcd. a. unsigned long labs(long x): menghasilkan nilai absolute dari bilangan long integer x. Sebelum menggunakan fungsi ini. unsigned char cabs(signed char x): menghasilkan nilai absolute dari byte x b. 2x12.b. unsigned int abs(int x): menghasilkan nilai absolute dari bilangan integer x c. dan 2x40 karakter. pada subdirektori .. c.\INC.

Fungsi Delay Menghasilkan delay dalam program-C. interupsi harus dimatikan terlebih dahulu. c. n adalah nilai konstan. void lcd_putchar(char c): menampilkan karakter c pada LCD e. Berada pada header delay. Juga sangat penting untuk menyebutkan frekuensi clock chip IC AVR yang digunakan pada menu Project – Configur – C Compiler – Code Generation. I2C. Fungsi – fungsi lain seperti fungsi akses memori. void lcd_gotoxy(unsigned char x. bila tidak maka delay akan lebih lama dari yang diharapkan. d. void lcd_puts(char *str): menampilkan string yang disimpan pada SRAM pada LCD. SPI. Sebelum memanggil fungsi.b. unsigned char y): meletakkan posisi karakter pada kolom ke-x baris ke-y. CodeVisionAVR user manual. Power Management dapat dilihat pada manual CodeVisionAVR. d. b. Fungsi delay yang dihasilkan adalah: a. void delay_ms(unsigned int n) : fungsi ini menghasilkan delay selama n mili-detik. void lcd_clear(void): menghapus layar LCD dan meletakkan posisi karakter pada baris ke-0 kolom ke-0. Kedua fungsi tersebut secara otomatis akan me-reset watchdog-timer setiap 1 mili-detik dengan mengaktifkan instruksi wdr. . maxim/dallas semiconductor DS1302 Real Time Clock. void lcd_putsf(char flash *str): menampilkan string yang disimpan pada flash pada LCD. void delay_us(unsigned int n) : fungsi ini menghasilkan delay selama n μ-detik. Nomor baris dan kolom dimulai dari nol.h yang harus dimasukkan (include) sebelum digunakan. n adalah nilai konstan. f. 1 Wire Protocol.