Pemrograman Dasar C Minggu 1: Pengenalan C Programming Sejarah Bahasa C Pencipta: Dennis M. Ritchie dan Brian W. Kernighan (awal 1970) Pada awalnya berkembang di UNIX (90% System Operasi UNIX dalam C) Tahun 1986 dikembangkan superset C yang berubah menjadi C++ Standard C Definisi Kernighan & Ritchie (K&R) ANSI-C – standard yang akan kita pakai Definisi AT&T (superset C, C++) Versi pada PC: – – – – Lattice C Microsoft C/Microsoft Quick C Turbo C/Borland C++ Visual Studio Aplikasi dalam Bahasa C System Operasi dan Program-Program System Pemrograman Hardware Pembuatan Tool Kit Program Aplikasi (dBase, WordStar, Lotus123) Istilah Blok: sekumpulan kalimat C yang ditulis di antara { dan } Definisi: memberitahukan sifat (property) objek dan sekaligus mengalokasikan memori untuk objek Deklarasi: memberitahukan sifat (property) objek (terutama berkaitan dengan tipe) Inisialisasi: memberikan nilai objek Istilah Deklarasi Global: deklarasi yang berlaku dalam satu unit translasi (file) Deklarasi Lokal: deklarasi yang hanya berlaku dalam blok tempat deklarasi Objek: daerah memori yang bernama (sama dengan variabel Lvalue: ekspresi yang mereferensi suatu objek (nilai sebelah kiri assignment) Istilah Prototype: deklarasi fungsi, menyatakan nama, tipe return value, nama dan tipe parameter formal (argumen) Body: realisasi dari fungsi Scope: daerah program tempat suatu nama dikenal Komputer dan Programnya Komputer mengikuti sebuah alur dari instruksi data yang tepat (‘program’) untuk memproses informasi (‘data’) dan mengambil keputusan. Komputer dan Programnya Programming – Merupakan urutan instruksi: » Konsep » Desain » Implementasi » Verifikasi – Sebagian besar dari ini adalah kegiatan tanpa menggunakan keyboard. Programming Tingkat Rendah & Tinggi Tingkat terendah: Kode Mesin – Dapat langsung diproses, bentuk bilangan Biner – Contoh: 10001011 01100111 10011011 11000111 Tingkat rendah berikutnya: Assembler – Istilah yang merepresentasikan kode mesin mov al,90h inc ax jnz loop1 – Bisa dibaca, lambat untuk dibuat, cepat diproses, spesifik untuk prosesor tertentu (Intel, Motorola dll) Programming Tingkat Rendah & Tinggi Tingkat Tinggi: Pascal, C, Fortran, C++, Java, C# – Satu statement sama dengan banyak operasi kode mesin ans = a/(b*24) – Dapat dipahami manusia, cepat menulisnya, tidak efisien (?) dalam hal ukuran kode dan kecepatan proses, dapat dipindahkan antar prosessors. Programming Tingkat Rendah & Tinggi Tingkat Lebih Tinggi: Logic Programming (Prolog) dan Functional Programming (Haskell) – – – Sangat ringkas Sulit dipelajari, penekanan pada iterasi Konsepnya sama sekali berbeda dengan pemrograman lainnya Kenapa C? Pascal: – Mempelajari bahasa, ketat, bersahabat untuk pembaca. Fortran: – Tidak bersahabat, baik untuk bilangan kompleks. BASIC: – Mudah dipelajari, dapat tidak efisien Kenapa C? C: – – – Cukup cepat dipelajari, tidak mudah dibaca. Tidak seketat Pascal Kompilernya tersedia untuk semua jenis komputer C++, Java, C#: – – – Orientasi objek, konsep yang sulit untuk pemula Tidak seluas C dalam penggunaan Mudah dipelajari setelah belajar C Perencanaan Perencanaan yang baik dibutuhkan pada program untuk: – Benar-benar melakukan sesuatu yang diinginkan. – Mudah mencari kesalahan. – Memudahkan orang lain untuk mengerti dan mengubah. – Waktu desain yang efisien juga untuk ukuran dan waktu run. 5 Langkah Membuat Program Analisis Persyaratan: – Apa yang akan dilakukan program – Apa yang dibutuhkan untuk melakukan hal tsb Spesifikasi: – Menulis dengan tepat apa yang harus dilakukan program Desain: – Menentukan bagaimana melakukannya 5 Langkah Membuat Program Implementasi (koding) – Mengubah desain menjadi kode – Didokumentasikan dengan baik / diberi komentar dengan baik Verifikasi: – Apakah memenuhi persyaratan/spesifikasi? Studi Kasus Analisa Persyaratan: – Menghitung tenaga listrik yang dihasilkan pada sebuah beban listrik – Mengambil voltase dan arus untuk menghasilkan tenaga listrik – Dilaksanakan menggunakan “ANSI C” pada PC Studi Kasus Spesifikasi: – Input: » Voltase berkisar 0 sampai 1000 Volt » Arus 0 sampai 10 Ampere – Output: » Power dalam Watts – Algoritma: » Power = Voltase X Arus Studi Kasus voltase arus Program Kita P=VxI power Seperti Resep Memasak: sebuah daftar dari bumbu dan metodanya Studi Kasus Desain: Metode Desain Top-Down – Bagi dan Kuasai: dibagi-bagi dalam bagian-bagian yang bisa diatur. – Dimulai dari skala makro kebawah kearah skala mikro: » » » Mulai dari tugas keseluruhan Bagi dalam bagian tugas (dekomposisi) – lebih detail Dipartisi untuk independen (tugas yang berdiri sendiri dengan interaksi sederhana dari luar) » Ulangi sampai tugas tingkat rendah dapat dipahami dengan mudah atau simpel » Identifikasi bagian tugas yang diulang / sangat mirip: buatlah satu tugas yang sifatnya lebih umum. Studi Kasus Desain: Metode Desain Top-Down (cont’d) – Membuat pengaturan hirarki Studi Kasus ini sederhana – bagi menjadi 3 bagian blok: – – – V I (1) Meminta input (2) Menghitung power (3) Menampilkan hasil Minta Input Hitung Power Display Hasil P Studi Kasus Struktur: – Komputer pada umumnya mesin pemrosesan yang sekuential (berurutan) » Berikan – Lakukan – Pada tingkat kode mesin operasinya berupa operasi yang sekuensial linier – Struktur dari desain kita juga sekuensial linier Meminta Input Hitung Power Tampilkan Output Bahasa Logis Setelah selesai, gambarkan operasi tiap modul dalam bahasa biasa: – 1. Minta voltase terminal – 2. Mengumpulkan input untuk voltase – 3. Minta arus input – 4. Mengumpulkan input untuk arus – 5. Menghitung Power: V x I – 6. Mengumumkan hasil akan datang – 7. Menampilkan hasil Tampilkan dalam bentuk flow chart atau kode pseudo Melalui langkah ini adalah penting untuk produksi yang cepat dari program yang handal dan akurat. Implementasi Pada intinya, kode dari bawah ke atas Kodekan masing-masing sub-modul terendah dulu baru keatas Dapat dilihat dalam template berikut: Implementasi #include <stdio.h> int main (void) { /* kode anda disini */ /* membaca voltase */ /* membaca arus */ /* menghitung power */ /* menampilkan hasil */ return (0); } Variabel Elemen penyimpanan untuk menyimpan data yang bisa diubah Selalu mempunyai nama identifikasi dan tipe Tipe adalah klasifikasi atau pengelompokan yang mengidentifikasi tipe dari data yang dirancang untuk disimpan. Objek yang diciptakan dalam tipe ini didesain untuk menampung data yang memenuhi peraturan spesifik dari tipe tsb. Variabel Jenis-jenis tipe: Nama int char short long unsigned char unsigned short unsigned int unsigned long Kisaran +32767 ke –32767 +127 ke –128 +32767 ke –32767 +2147483647 ke –2147483648 0 ke +255 0 ke +65535 0 ke +65535 0 ke 4294967295 Identifier – Nama dari Sesuatu Dapat terbuat dari: – Huruf ‘a’ – ‘z’ & ‘A’ – ‘Z’ and angka ‘0’ – ‘9’ ditambah ‘_’ tapi tidak space atau karakter lainnya – C adalah Case Sensitive – ‘My_Name’ tidak sama dengan ‘my_name’ – Harus dimulai dengan karakter alfabetik tidak angka jadi “5my_name” ilegal! – Sampai 32 karakter – Hindari kata kunci yang khusus Identifier – Nama dari Sesuatu Mana yang ilegal? – – – – ‘results of my calculation’ ‘2nd$voltage’ ‘ToTal_CapaCitaNce’ ‘Exam-Results’ Buatlah nama yang berarti (fungsinya) tapi tidak terlalu panjang atau diketik berulang Untuk studi kasus kita dipakai: power volts Penggunaan seperti: power = volts * current; current Deklarasi Variabel Semua (termasuk variabel) harus dideklarasikan sebelum dipakai, jika tidak dikatakan ‘tidak diketahui’! Variabel adalah penyimpan data yang dapat kita ubah selama run dari program Sintaks: nama-tipe Identifier; nama-tipe Identifier = n, Identifier = n …; Studi Kasus Contoh untuk studi kasus: int power; int volts; int current; Atau: int power, volts, current; Atau: int power, volts = 0, current = 9; PERINGATAN: tipe sangat penting!!! Kesimpulan C kemungkinan bahasa yang paling banyak digunakan oleh ahli teknik (engineers) Perencanaan yang menyeluruh sebelum implementasi 5 tahap desain program: – – – – – Analisa persyaratan Spesifikasi Desain Implementasi Verifikasi dan Testing Kesimpulan Desain secara Top-Down dan implementasi “Bottom-Up” Prosesing sekuensial – struktur linier Tipe – klasifikasi Identifier – nama dari sesuatu Variabel – elemen penyimpan dengan sebuah tipe yang terdefinisi terlebih dahulu dan sebuah Identifier unik INGAT: Ukuran Penting!