Sesi-08 STRUKTUR PEMROGRAMAN C 8.1 8 -1 Tujuan Mengenal dan memahami prinsip dasar struktur pemrograman Bahasa C; Header, Tipe Data, Logika, Aritmatika, Percabangan, Perulangan, Konversi, Prosedur dan Fungsi 8.2 Dasar Teori Bahasa C adalah evolusi dari bahasa B yang dikembangkan oleh Dennis Ritchie, merupakan general-purpose language, yaitu bahasa pemrograman yang dapat digunakan untuk tujuan apa saja. Bahasa C mempunyai kemampuan lebih dari bahasa pemrograman lain. Banyak sekali aplikasi-aplikasi yang dibangun dengan bahasa C, mulai dari pemrograman sistem, aplikasi cerdas (artificial intelligence), sistem pakar, utility, driver, database, browser, network programming, sistem operasi, game, virus, dan lainnya, bahkan Software Development Kit untuk Windows juga ditulis dalam bahasa C. Karena sifat bahasa pemrogramannya yang portable, yaitu dengan sedikit atau tanpa perubahan, suatu program yang ditulis dengan bahasa C pada suatu komputer dapat dijalankan pada komputer lain. Sebagai bahasa yang digolongkan dalam middle level language, bahasa C mempunyai kemudahan dalam mengakses perangkat keras, juga kecepatan prosesnya yang mendekati low level language seperti Assembly, tetapi memberikan kemudahan yang tidak ditawarkan Assembly. Disamping itu, bahasa C jauh lebih mudah untuk dipelajari jika dibandingkan dengan bahasa low level karena mendekati frase-frase dalam bahasa manusia, yaitu bahasa Inggris. Bahasa C juga mempunyai banyak keuntungan dibanding bahasa pemrograman lain. Dikarenakan kokoh dan memberikan keleluasaan kepada penggunanya, pada tahun 80-an, penggunaan bahasa C di dunia industri semakin luas, sehingga distandarisasi oleh ANSI dan kemudian diadopsi oleh ISO, lalu diadopsi ulang oleh ANSI. Official name bahasa C adalah ISO/IEC 9899-1990. Bahas C mempunyai beberapa kelebihan dibandingkan bahasa lain seperti assembly, diantaranya: Bahasa C tersedia hampir di semua jenis komputer, kode Bahasa C bersifat portable, berbagai struktur data dan pengendalian proses disediakan dalam Bahasa C sehingga pembuatan program lebih terstruktur, mudah dipahami tanpa harus mengetahui mesin secara detail, memungkinkan manipulasi data dalam bentuk bit maupun byte. Namun ada pula beberapa kelemahan Bahasa C khususnya bagi pemula, kebanyakan dikarenakan banyaknya operator dan fleksibilitas penulisan program kadang-kadang membingkungkan, dan umumnya pemrogram Bahasa C tingkat pemula belum pernah mengenal pointer dan tidak terbiasa menggunakannya. Panduan Praktikum AVR Atmega8535 LPKIA 8 -2 Proses Kompilasi dan Linking dalam Bahasa C Agar suatu program dapat dimengerti oleh mesin, maka program tersebut terlebih dahulu harus diterjemahkan dalam kode mesin menggunakan interpreter atau kompiler. Source program adalah program yang ditulis dalam Bahasa C hingga membentuk program executable seperti yang diperlihatkan pada gambar berikut: Gambar 8-1 Proses Kompilasi Linking dalam Bahasa C Keterangan: Langkah pertama, program C dibuat menggunakan editor, kemudian file disimpan dalam file yang bercirikan .c File include umumnya memiliki ekstensi .h, misalnya mega8535.h yang biasza disebut fili judul (header file) berisi kode yang akan dilibatkan dalam program C. Kode dalam file program atau include selanjutnya dikompilasi menjadi obyek berekstensi .obj atau .o (tergantung pemakaian sistem operasi) File obyek bersama file obyek lain dan file pustaka (lybrari file : .lib) dikaitkan (linker) untuk membentuk program executable dan disimpan dalam ekstensi .exe Pemrograman Bahasa C untuk AVR sangat luas digunakan, terutama dalam pemrograman berbagai jenis perangkat, termasuk mikrokontroler. Bahasa ini sudah merupakan high level language, dimana memudahkan programmer menuangkan algoritmanya. Dalam CVAVR, hasil compiler akan membentuk file .hex dan .coff Panduan Praktikum AVR Atmega8535 LPKIA 8 -3 Struktur penulisan program Program C pada hakekatnya tersusun atas sejumlah blok fungsi, fungsi pertama yang harus ada adalah fungsi main( ). Pernyataan fungsi (sering disebut tubuh fungsi) diawali tanda kurung kurawal buka ( { ) dan diakhiri kurung kurawal tutup ( } ), diantara kurung kurawal ditulis statemen-statemen program C, seperti penryataan berikut ini: Main( ) { Statemen-statemen; Fungsi utama } Fungsi_fungsi_lain; { Statemen-statemen; Fungsi –funsi lain yang ditulis pemrogram } Struktur bahasa C menggunakan fungsi-fungsi subroutine (program-program bagian) selain fungsi utama main( ). Penulisan fungsi soubroutine adalah setelah fungsi utama, atau diletakkan di file pustaka (library). Dalam pemakaian file pustaka, mka file judul (header file) harus dilibatkan dalamprogram yang menggunakan preprocessor directive berupa #include. Fungsi main ( ) Main harus ada dalam program karena sebagai titik awal dan akhir eksekusi suatu program. Tanda { diawal menyatakan awal tubuh program dan awal eksekusi, dan diakhiri dengan tanda }. Jika program lebih dari satu fungsi, akan fungsi main diletakkan di awal tubuh program meskipun bukanlah suatu keharusan. Fungsi Prinft ( ) Merupakan fungsi yang digunakan untuk menampilkan pada layar peraga. Misalnya: printf (“Belajar AVR”); //untuk menampilkan teks Belajar AVR Pernyataan diatas adalah pemanggilan fungsi printf ( ) dengan parameter string (diawali dan diakhiri dengan tanda petik ganda (“)), dan setiap akhir baris selalu diakhiri dengan tanda titik koma (;) sebagai akhir pemberhentian, bukan pemisah dua pernyataan. Tanda \ pada string sebagai argument printf ( ) bermakna khusus, contohnya: \” menyatakan karakter petik ganda \\ menyatakan karakter backslash \\ menyatakan karakter tab Dalam bentuk umum, format printf adalah: printf (“string control”, daftar agumen); string control berupa penentu format untuk mengatur penampilan argument, diantaranya: Panduan Praktikum AVR Atmega8535 LPKIA 8 -4 %d menampilkan bilangan bulat (integer) %f menampilkan bilangan pecahan %c menampilkan sebuah karakter %s menampilkan sebuah string Contoh: printf (“Nomor :%d\n”, 10); printf (“Nama :%f\n”, “Bejo”); printf (“Nilai :%c\n”, 9.5); printf (“Huruf :%s\n”, `A’); \n menyatakan sebuah karakter. Praprosesor #include Merupakan jenis pengarah praprosesor (preprocessor directive) untuk membaa file yang berisi deklarasi fungsi dan definisi konstanta, cirinya adalah ekstensi yang diakhiri .h, misalnya #include <mega8535.h>. Bentuk umum include adalah : #include “namafile” #include <namafile> mengisyaratakan bahwa pencarian file dilakukan pada direktori khusus, yaitu direktori file include. Sedang #include “namafile” menyatakan pencarian file dilakukan pertamakali pada direktori aktif tempat source program, jika tidak ditemukan maka pencarian dilakukan pada direktori lain. Komentar Program Digunakan untuk keperluan dokumentasi, seperti : /* komentar… */ atau // sebagai komentar baris. Struct umum: #include < [library1.h] > // Opsional #include < [library2.h] > // Opsional #define [nama1] [nilai] ; // Opsional #define [nama2] [nilai] ; // Opsional [global variables] // Opsional [functions] // Opsional void main(void) // Program Utama { [Deklarasi local variable/constant] [Isi Program Utama] } Panduan Praktikum AVR Atmega8535 LPKIA 8 -5 Tipe data char : 1 byte ( -128 s/d 127 ) unsigned char : 1 byte ( 0 s/d 255 ) int : 2 byte ( -32768 s/d 32767 ) unsigned int : 2 byte ( 0 s/d 65535 ) long : 4 byte ( -2147483648 s/d 2147483647 ) unsigned long : 4 byte ( 0 s/d 4294967295 ) float : bilangan decimal array : kumpulan data-data yang sama tipenya. Deklarasi variabel & konstanta Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah. Penulisan : [tipe data] [nama] = [nilai] ; Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan : const [nama] = [nilai] ; Tambahan: Global variabel/konstanta yang dapat diakses di seluruh bagian program. Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya. Statement Statement adalah tiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga comments / komentar. Contoh: suhu=adc/255*100; //contoh rumus perhitungan suhu Function Aadalah bagian program yang dapat dipanggil oleh program utama. Penulisan : [tipe data hasil] [nama function] ( [tipe data input 1],[tipe data input 2] ) { [statement] ; } Conditional statement dan looping if else digunakan untuk penyeleksian kondisi if ( [persyaratan] ) { [statement1]; [statement2]; } Panduan Praktikum AVR Atmega8535 LPKIA 8 -6 else { [statement3]; [statement4]; } for : digunakan untuk looping dengan jumlah yang sudah diketahui for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) { [statement1]; [statement2]; } while : digunakan untuk looping jika dan salama memenuhi syarat tertentu while ( [persyaratan] ) { [statement1]; [statement2]; } do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun min 1 kali do { [statement1]; [statement2]; } while ( [persyaratan] ) switch case : digunakan untuk seleksi dengan banyak kondisi switch ( [nama variabel] ) { case [nilai1]: [statement]; break; case [nilai2]: [statement]; break; } 7. Operasi logika dan biner Logika : AND :&& NOT : ! OR : || Biner : AND : & OR : | XOR : ^ Shift right: >>, Shift left : <<, Komplemen : ~ Panduan Praktikum AVR Atmega8535 LPKIA 8 -7 Operasi relasional (perbandingan) Sama dengan : == Tidak sama dengan : != Lebih besar : > Lebih besar sama dengan : >= Lebih kecil : < Lebih kecil sama dengan : <= Operasi aritmatika + , - , * , / : tambah, kurang, kali, bagi += , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah kanan operator % : sisa bagi ++ , -- : tambah satu (increment) , kurang satu (decrement) Panduan Praktikum AVR Atmega8535 LPKIA