Pemrograman Dasar C Minggu 2
Topik Bahasan Stdio library Output dalam C: printf Input dalam C: scanf Escape sequence Assignment Statement Operator Arithmatika Urutan dan Asosiasi
Input dan Output dalam C Menyediakan output: Sebelum meminta input kita harus mengatakan pada user apa yang harus mereka kerjakan! C mempunyai kumpulan library dari banyak fungsi-fungsi berguna yang sudah ditulis salah satunya adalah stdio. Library stdio mempunyai fungsi printf,, dengan sintaks: printf( string kontrol, argumen lain);
Menyediakan Output (cont d) printf( string kontrol, argumen lain) String kontrol terdiri dari % dan beberapa karakter Karakter Konversi c Konversi ke karakter tunggal integer desimal d ld integer desimal u lu integer tanpa tanda s string f nilai float e float bentuk eksponen
Menyediakan Output (cont d) Lebar digit (opsi) dapat ditambahkan, seperti %4d berarti cetak sebuah desimal dengan paling tidak 4 ruang karakter Yang lain keluar seperti apa adanya Argumen lain adalah nama dari variabel dimana data dari tampilan berasal Bisa ditambahkan escape sequence pada string kontrol
Escape Sequence Contoh escape sequence \n garis baru \t tab baru \ quote dobel \ quote singel \\ garis miring dll
Contoh Output Misalnya ada my_reslt = 24, maka printf( result = %3d A, my_reslt); Tampilan: result = 24 A (lihat spacenya)
Memperoleh Input Dari stdio gunakan fungsi scanf,, sintaks scanf( string kontrol, argumen lain); String kontrol adalah % karakter dan konversi karakter Karakter Konversi Konversi ke c karakter tunggal d ld u lu integer desimal x heksadesimal f lf Lf nilai float
Memperoleh Input (cont d) Argumen lain adalah alamat dengan & dari variabel dimana scanf akan menaruh input. &volts berarti ditaruh di variabel bernama volts Contoh: scanf( %d %x, &volts, ¤t); Mengharapkan user untuk memasukkan sebuah nilai integer desimal kedalam variabel integer volts diikuti dengan sebuah nilai heksadesimal untuk disimpan di variable integer current dll.
#include <stdio.h> int main (void) { /* segmen deklarasi */ int power, volts = 0, current = 0; Studi Kasus sampai Sekarang /* mendapatkan input */ printf( \nmasukkan nilai Voltase dalam 0 100 volt ); scanf( %d, &volts); printf( \nmasukkan nilai Arus dalam 0 10 Ampere ); scanf( %d, ¤t); /* menghitung power */ } /* menampilkan hasil */ printf ( \npower yng dihasilkan dari voltase %d volt dan arus %d Amp adalah = %4d Watt, volts, current, power); return (0);
Statemen Assignment Statement dalam C menspesifikasi bahwa aksi komputer tertentu harus dilakukan, dan biasanya diakhiri dengan tanda titik-koma (;) Contoh: Operator Assignment ( = ) Area = Width * Length; Berarti variabel Area telah diberi assignment dari hasil perkalian Width dengan Length Tidak sama dengan fungsi arithmatika =, contohnya Num_Staff = Num_Staff + 1;» Hanya benar pada statement assignment» Diterjemahkan: evaluasi sebelah kanan dan simpan hasilnya pada variabel sebelah kiri
Ekspresi Dibuat dari operator arithmatika (seperti +, *, - dll) dan operan yaitu data yang harus dipakai operator (variabel, konstan, dll) Contoh: resis = volts/current;
Operator Arithmatika Operator Biner (dua operan) (x = 9, y = 6) + Penambahan z = x + y; 15 - Pengurangan z = x y; 3 * Perkalian z = x * y; 54 / Pembagian z = x / y; 1 (utk int) % Modulo z = x % y; 3 (sisa) Operator Tunggal (satu operan) - x Negasi z = -x; -9 + x Positif(?) z = +x; +9
Operator Arithmatika Postfix,, operator mengubah variabel setelah assignment x++ post increment z = x++; z = 9 (Arti: x = x + 1) & setelah x = 10 x-- = 9 (Arti: x = x 1) post decrement z = x--; & setelah x = 8 z
Operator Arithmatika Prefiks: : operator mengubah variabel sebelum assignment ++x pre increment z = ++x; z = 10 & setelah x = 10 --x = 8 pre decrement z = --x; & setelah x = 8 z
Peringatan! Ingat bahwa ukuran berpengaruh, contoh: char x = 25, y = 50, z; z = x * y; Berapakah nilai z? Jawab: z = -30 Bagaimana dengan pembagian dengan nol int x = 10, y = 0, z; z = x / y; Berapakah nilai z? Jawab: Pembagian dengan nol divide error atau run time error
Assignment Statement Statemen compound assignment untuk menghemat penulisan += x += y; sama dgn x = x + y; -= x -= y; sama dgn x = x y; x w = *= x *= y; sama dgn y + z x = x * y; /= x /= y; sama dgn x = x / y; Menggunakan kurung untuk menentukan urutan evaluasi: x = 8, y = 3, z = 4 Apa hasil w = x/y + z;? Apakah w = x atau y+z x + z y
Urutan Evaluasi Isi didalam kurung akan dievaluasi terlebih dahulu. Pastikan pemisahan menggunakan kurung w = x / ( y + z ); Pertanyaan?: q = ( ( x / 4 ) + y ) / ( w * z );
Urutan dan Asosiasi Perhatikan statemen kompleks berikut z = ++x * z + y / v; bagaimana mengevaluasinya? Aturan urutan menentukan urutan berbagai macam operator: Pertama Kurung didahulukan Kedua Operator Tunggal -x, ++x, x dll Ketiga Sifat Perkalian *, /, % Keempat Penambahan +, - Kelima Assignment =, +=, -= dll
Urutan dan Asosiasi Tapi bagaimana banyak operator dari tipe yang sama? z = x * y / z * y / v; Hukum Asosiasi berlaku:» Assignment tunggal atau compound: Kanan ke kiri» Kurung, sifat perkalian dan tambahan: Kiri ke kanan Hindarkan ekspresi kompleks, mudah jadi salah Gunakan kurung atau pisahkan dalam beberapa tahap
Contoh Misalnya x = 6, z = 4, y = 9, v = 3 Hitunglah (petunjuk: urutan) z = ++x * z + y / v; z = ++6 * 4 + 9 / 3; Jawab z = 31 Hitunglah (petunjuk: asosiasi) z = x * y/z * y / v; z = 6 * 9/4 * 9 / 3; Jawab z = 39
#include <stdio.h> int main (void) { /* segmen deklarasi */ int power, volts = 0, current = 0; Studi Kasus: Program Komplet /* mendapatkan input */ printf( \nmasukkan nilai Voltase dalam 0 100 volt ); scanf( %d, &volts); printf( \nmasukkan nilai Arus dalam 0 10 Ampere ); scanf( %d, ¤t); /* menghitung power */ power = volts * current; } /* menampilkan hasil */ printf ( \npower yng dihasilkan dari voltase %d volt dan arus %d Amp adalah = %4d Watt, volts, current, power); return (0);
Menciptakan File Executable File teks (.c) Pre-prosesor: Compile Kompilasi Linking (make) (Library dll) File executable (yg bisa di-run)
Testing dan Verifikasi Apakah program melakukan apa yang seharusnya dilakukan? Apakah anda tahu apa yang seharusnya dilakukan program? (pentingnya secara seksama mendefinisikan spesifikasi) Apakah bekerja untuk semua jenis input dan semua kemungkinan pilihan? Mungkin banyak, tidak mungkin mengetest keseluruhan? Tes pada kondisi ekstrim dari kisaran? Cek dengan kalkulator atau tangan?
Testing dan Verifikasi Pembuktian membutuhkan spesialisasi? Pesawat terbang keamanan kritis system doble atau triple Militer Z bahasa spesifikasi formal Pabrik kimia / anjungan lepas pantai Bagaimana dengan kesalahan pada compiler? Bagi dan kuasai : testing sedikit demi sedikit Tes bagian kecil sendiri pada waktu mengembangkannya. Selesaikan saat anda mengerjakannya Tes keseluruhan setelah integrasi dari semua bagian
Kesimpulan Untuk I/O gunakan fungsi stdio printf dan scanf Operator assignment = berarti berikan kepada tidak sama dengan sama dengan Operasi Arithmatika: Biner +, -, *, /, % Tunggal -x, ++x, --x, x++, x Compound += -= /= *= Waspadai overflow dan divide by zero Untuk menentukan urutan evaluasi gunakan: Aturan urutan dan asosiasi Kurung membuat lebih sederhana