III. Dasar Pemrograman
III.1 Pengenal
• Pengenal (identifier) merupakan nama yang biasa digunakan untuk suatu peubah (variable), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram.
• Aturan yang berlaku bagi suatu pengenal adalah:
o Pengenal harus diawali dengan huruf (A .. Z, a .. z) atau karakter garis bawah ( _ ).
o Selanjutnya dapat berupa huruf, angka (0 .. 9), karakter garis bawah, atau tanda dolar ($).
o Panjang pengenal boleh terdiri lebih dari 32 karakter, akan tetapi hanya 32 karakter pertama yang dianggap berarti.
o Contoh: Jumlah
• jumlah
• nilai2
• total_per_bulan
• harga_jual$
- Karakter garis-bawah biasa digunakan untuk memudahkan pembacaan terhadap suatu pengenal, terutama yang terdiri lebih dari satu kata, karena nama suatu pengenal tidak boleh dipisahkan spasi.. - Untuk menghindari kesalahan, pengenal tidak boleh menggunakan
nama yang tergolong sebagai kata kunci (seperti main), dan sebaiknya tidak menggunakan pengenal yang digunakan untuk nama fungsi, konstanta, variabel atau obyek lain yang digunakan oleh pustaka Turbo C,
- Tabel 3.1 berisi daftar kata-kunci yang terdapat pada Bahasa Turbo C++.
Tabel 3.1 Daftar Kata-kunci pada Turbo C++. asm auto break case catch cdecl char class const continue _cs default delete do double _ds else enum _es _export extern far float for friend goto huge if inline int interrupt _loadds long near new operator pascal private protected public register _regparam return _saveregs _seg short signed sizeof _ss static struct switch template this typedef union unsigned virtual void volatile while
III.2 Tipe Data Dasar
- Pengertian data menyitratkan suatu nilai yang dapat dinyatakan dalam bentuk konstanta atau variabel.
- Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat diubah-ubah selama eksekusi berlangsung.
- Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan sebagai tipe data dasar, yaitu:
Bilangan bulat (integer)
Bilangan pecahan (float/real) presisi-tunggal Bilangan pecahan (float/real) presisi-ganda Karakter, dan
Tak bertipe.
Tabel 3.2 Daftar tipe data dasar.
Tipe Jml bit Rentang data Keterangan
Char Int Float Double void 8 16 32 64 0 -128 .. 127 -32768 .. 32767 3.4e-38 .. 3.4e+38 1.7e-308 .. 1.7e+3.8 - Karakter Bilangan bulat
Bilangan pecahan presisi-tunggal Bilangan pecahan presisi-ganda Tak bertipe
III.3 Peubah (Variable)
Peubah atau variabel dalam program digunakan untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat diubah-ubah selama
eksekusi program berlangsung.
III.3.1 Pendeklarasian Peubah
- Peubah yang akan digunakan dalam program harus dideklarasikan terlebih dahulu.
- Pengertian deklarasi disini berarti memesan memoi dan menentukan jenis data yang dapat disimpan di dalamnya.
- Bentuk umum pendeklarasian suatu peubah adalah:
tipe daftar-peubah;
- Pada pendeklarasian peubah, daftar-peubah dapat berupa sebuah peubah atau beberapa peubah yang dipisahkan dengan tanda koma. - Contoh:
int jumlah;
float harga_per_satuan, total_harga;
tanda koma sebagai pemisah
- Pernyataan deklarasi yang pertama menyatakan bahwa jumlah adalah peubah bertipe int (integer = digunakan untuk menyimpan bilangan bulat), sedangkan pernyataan kedua menyatakan bahwa
harga_per_satuan dan total_harga bertipe float (untuk menyimpan bilangan pecahan).
- Pendeklarasian peubah dalam C bersifat fleksibel, misalnya deklarasi peubah baris ke dua di atas dapat dideklarasikan:
float harga_per_satuan;
float total_harga;
III.3.2 Pemberian Nilai ke Peubah
Untuk memberikan nilai ke suatu peubah yang telah dideklarasikan, bentuk pernyataan yang digunakan adalah sebagai berikut:
Contoh berikut memberikan nilai 50 ke peubah jumlah dan 15,7 ke peubah harga_per_satuan.
jumlah = 50;
harga_per_satuan = 15.7;
total_harga = jumlah * harga_per_satuan;
Contoh program 3-1 berikut menggambarkan penggunaan peubah. /* --- */
/* File program : Peubah.c */ /* Contoh pendeklarasian peubah */ /* --- */ #include <stdio.h>
main( ) {
int jumlah;
float harga_per_satuan, harga_total; jumlah = 50;
harga_per_satuan = 15.7;
harga_total = jumlah * harga_per_satuan; printf(“harga total = \%n”, harga_total); }
contoh hasil eksekusi: C> Peubah
Harga total = 785.000000 Program 3-1
- Dalam penugasan suatu peubah, kadang-kadang diinginkan untuk menaikkan nilainya dengan satu (terutama dalam iterasi), yang dapat dinyatakan sebagai berikut:
III.3.3 Inisialisasi Peubah
- Dalam penulisan program dimungkinkan untuk melakukan inisialisasi atau memberi nilai awal pada suatu peubah segera setelah dideklarasikan.
- Pernyataan berikut contoh pendeklarasian dan pemberian nilai awal suatu peubah.
int jumlah; jumlah = 29;
- Pernyataan di atas dapat disingkat melalui pendeklarasian yang disertai dengan penugasan nilai, sebagai berikut:
int jumlah = 29;
III.3.4 Peubah bertipe Float dan Double
- Perbedaan antara tipe float dan double dapat dilihat pada Tabel 3.2 di atas.
- Tipe double mempunyai kawasan nilai yang lebih besar dibanding dengan tipe float.
- Perbedaan lain adalah pada tingkat ketelitiannya, tipe float hanya mempunyai tingkat ketelitian kira-kira sampai dengan 7 digit, sedangkan tipe double mempunyai ketelitian sekitar 16 digit.
- Perbedaan ketelitian dapat dilihat dengan mengeksekusi program 3-2 berikut.
/* --- */ /* File program : Presisi .c */ /* Contoh untuk menunjukkan ketelitian */ /* antara peubah float dan double */ /* --- */ #include <stdio.h> main( ) { int float x; double y;
x = 56.0123456789123456789; y = 56.0123456789123456789; printf(“x = %20.16f\n”, x); printf(“y = %20.16lf\n”, y); }
contoh hasil eksekusi: C> Presisi
x = 56.0123443603515625 y = 56.0123456789123466 Program 3-2
- Meskipun nilai yang diberikan pada peubah x (bertipe float ) dan peubah y (bertipe double) sama, ternyata nilai pada kedua peubah tersebut berbeda:
x = 56.0123443603515625
hanya 7 digit yang benar y = 56.0123456789123466
16 digit yang benar
- Dari contoh di atas terlihat bahwa peubah y memiliki ketelitian yang lebih tinggi dibanding peubah x.
- Dalam C selain tipe double masih disediakan tipe long double yang memiliki ketelitian yang lebih tinggi dibanding double seperti yang diperlihatkan pada Tabel 3.3.
Tabel 3.3 Tipe Data, Ukuran, dan Rentangnya. Type Size
(bits)
Range Sample applications
unsigned char char enum unsigned int short int int unsigned long long float double long double near pointer far pointer 8 8 16 16 16 16 32 32 32 64 80 16 32 0 to 255 -128 to 127 -32,768 to 32,767 0 to 65,535 -32,768 to 32,767 -32,768 to 32,767 0 to 4,294,967,295 -2,147,483,648 to 2,147,483,647 3.4 ^ 10-38 to 3.4 ^ 1038 1.7 ^ 10-308 to 1.7 ^ 10308 3.4 ^ 10-4932 to 1.1 ^ 104932 Not applicable Not applicable
Small numbers and full PC character set
Very small numbers and ASCII characters
Ordered sets of values Larger numbers and loops Counting, small numbers, loop control
Counting, small numbers, loop control
Astronomical distances Large numbers, populations Scientific (7-digit precision) Scientific (15-digit precision) Financial (18-digit precision) Manipulating memory
addresses
Manipulating addresses outside current segment
s = sign bit (0 = positive, 1 = negative) 1 = integer bit of significand:
Stored in long double
implicit (always 1) in float, double
Exponent bias (normalized values): float : 127 (7FH) double: 1023(3FFH) long double: 16,383 (3FFFH) s magnitude 0 16 int (2's complement) s magnitude 0
long int (2's complement)
31 s exponentBiased 22 31 float significant 0 s exponentBiased 51 double significant 0 63 s exponentBiased 64
long double significant
0 79
1
63
III.4 Pemodifikasi Tipe
- Terdapat beberapa pemodifikasi tipe (type modifier) yang dapat dikenakan di awal tipe data dasar (kecuali void). Pemodifikasi tipe tersebut adalah :
signed unsigned long short
- Misalnya, pemodifikasi tipe unsigned jika diterapkan pada tipe int, akan menjadi unsigned int.
- Tabel 3.4 memperlihatkan kemungkinan penerapan pemodifikasi tipe pada tipe data dasar.
Tabel 3.4 Kemungkinan pemakaian pemodifikasi tipe. Tipe Jumlah
Bit Rentang Nilai
unsigned char signed char unsigned int signed int short int unsigned short int
signed short int long int
signed long int unsigned long int long double 8 8 16 16 16 16 32 32 32 80 0 .. 255 -128 .. 127 -32768 .. 32767 -32768 .. 32767 0 .. 65535 -32768 .. 32767 -2147483648 .. 2147483647 -2147483648 .. 2147483647 0 .. 4294967295 3.4E-4932 .. 1.1E+4932
- Dari tabel diatas, dapat dilihat bahwa tipe char sama dengan unsigned char, sedangkan signed int, short int, signed short int, dan int
sebenarnya adalah sama.
- Perbedaan signed dan unsigned terletak pada perlakuan bit tertinggi. - Jika dinyatakan dengan signed, maka bit tertinggi digunakan sebagai
bit tanda untuk menyatakan apakah bilangannya positif atau negatif. - Hal yang perlu diingat pada proses pemodifikasian ini adalah tipe
data hasil minimum harus mempunyai panjang bit yang sama.
- Dalam penulisan program beberapa tipe data boleh tidak ditulis secara lengkap, misalnya:
Tipe short int cukup ditulis menjadi short. Tipe long int boleh ditulis menjadi long. Tipe signed int bisa ditulis menjadi signed.
/* --- */ /* File program : TANDA.C */ /* Contoh untuk menunjukkan */ /* perbedaan antara signed dan unsigned */ /* --- */ #include <stdio.h>
main( ) {
signed i = -127; /* i integer bertanda */ unsigned j; /* j integer tak bertanda */ j = i;
printf(“i = %d, j = %u\n”, i, j); }
contoh hasil eksekusi: C> TANDA
i = -127, j = 65409 Program 3-3
III.5 Konstanta
- Konstanta menyatakan nilai numeris atau karakter yang tetap.
- Turbo C++ mendukung empat kelas konstanta, yaitu floating point, integer, enumeration, dan character.
- Penulisan konstanta mempunyai aturan tersendiri sesuai dengan tipe masing-masing.
- Konstanta integer ditulis dengan tanpa mengandung pemisah ribuan dan tidak mengandung bagian pecahan. Contoh –20 dan 2345.
- Konstanta karakter ditulis dengan diawali dan diakhiri tanda petik tunggl. Contoh ‘C’ dan ‘&’.
- Konstanta pecahan (float dan double) dapat mengandung nilai pecahan (dengan tanda berupa titik) dan dapat ditulis dalam bentuk pecahan desimal biasa maupun bentuk eksponensial (menggunakan tanda e). conth 35.6 dan 3.2e+5 (maksudnya 3,2 x 105).
- Konstanta pecahan selalu dinyatakan dalam double, kecuali jika diakhiri dengan F atau f (yang berarti menyatakan konstanta float). - Untuk konstanta long int, penulisannya diakhiri dengan tanda L atau
- Konstanta tak bertanda ditulis dengan diakhiri tanda U atau u. Jika nilainya melebihi 65535, secara otomatis akan diperlakukan sebagai
unsigned long int. Contoh 431000u.
III.5.1 Konstanta Oktal dan Heksadesimal
- Dalam sistem oktal, digit yang digunakan berkisar antara 0 sampai dengan 7, dan penulisannya diawali dengan 0 (angka 0)
- Pada sistem heksadesimal digit yang dapat dipakai berupa salah satu dari 16 simbol berikut: 0 1 2 3 4 5 6 7 8 9 A B C D E F.
- Penulisan konstanta heksadesimal diawali dengan 0x (nol dan x). /* ---*/
/* Program : Konstanta.c */ /* Penulisan konstanta oktal dan heksadesimal */ /* ---*/ #include <stdio.h> main() { int a, b; a = 010; /* 10 oktal */ b = 0x10; /* 10 heksadesimal */ printf("a= %d, b = %d\n",a ,b); } Hasil eksekusi: C>Konstanta a = 8, b = 16 Program 3-4.
III.5.2 Konstanta Karakter Rangkaian Escape
- Konstanta karakter selalu ditulis dengan diawali dang diakhiri dengan tanda petik tunggal.
- Beberapa konstata karakter dapat ditulis dengan diawali tanda \ (penempatan tanda \ setelah tanda petik tunggal).
- Karakter yng berawalan tanda \ disebut rangkaian escape (escape sequence).
- Daftar karakter yang disebut sebagai rangkaian escape diperlihatkan pada tabel 3.5.
Tabel 3.5 Karakter Rangkaian Escape.
Rangkaian Nilai Karakter Maksud
\0 \a \b \f \n \r \t \v \\ \’ \” \? 0x00 0x07 0x08 0x0C 0x0A 0x0D 0x09 0x0B 0x5C 0x27 0x22 0x3F NULL BEL BS FF LF CR HT VT \ ‘ “ ? Karakter ber-ASCII = 0 Bunyi speaker
Backspace (mundur ke kiri) Formfeed (ganti halaman) Linefeed (ganti baris)
Carriege return (ke awal baris) Tab horisontal
Tab vertikal
Karakter miring kiri Karakter petik-tunggal Karakter petik-ganda Karakter tanda tanya
- Untuk menyatakan sembarang karakter ASCII, notasi yang dapat digunakan adalah:
\DDD dengan DDD = 1 sampai 3 digit oktal
\xHH dengan HH = 1 sampai 2 digit heksadesimal
- Contoh program berikut memberikan gambaran pemakaian konstanta karakter untuk menampilkan karakter grafik yaitu tanda integral, yang tersusun atas dua buah karakter ASCII F4h dan F5h.
/* ---*/ /* Program : Integral.c */ /* Menampilkan tanda integral */ /* ---*/
#include <stdio.h> main()
{
unsigned char kar1 = '\xf4'; unsigned char kar2 = '\xf5';
printf("%c\n%c",kar1 ,kar2); }
Program 3-5
III.5.2 Konstanta String
- Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik-ganda ( “ ).
- Konstanta string yang berisi satu karakter berbeda dengan konstanta karakter, sebab konstanta karakter diawali dan diakhiri dengan tanda
petik-tunggal, sedangkan string diawali dan diakhiri dengan tanda petik-ganda. Jadi “c” tidak sama dengan ‘c’.
- Konstanta string dapat mengandung karakter yang menggunakan tanda \ (karakter rangkaian escape).
III.6 Operator
- Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu peubah, membandingkan dua buah nilai, dan lain sebagainya.
- Sebagian operator C tergolong sebagai operator binary, yaitu operator yang dikenakan terhadap dua buah nilai (operand).
- Contoh :
a + b
- Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua operand-nya (yaitu a dan b).
- Karena operasi penjumlahan melibatkan dua operand, maka operator ini tergolong sebagai operator binary.
III.6.1 Operator Aritmatika
Operator aritmatika yang tergolong sebagai operator binary
adalah: * / % + - Perkalian Pembagian Sisa pembagian Penjumlahan Pengurangan
- Operator yang tergolong sebagai operator unary, adalah: + - ++ -- Tanda plus Tanda minus
Prefix: preincrement; Postfix: postincrement Prefix: predecrement; Postfix: postdecrement
/* ---*/ /* Program : Aritmatik.c */ /* Penggunaan operator aritmatika */ /* ---*/ #include <stdio.h>
main() {
float luas, pi, jari, keliling; pi = 3.1428;
jari= 12.0;
luas = pi*jari*jari;
printf("jari-jari = %f, luas = %f \n",jari ,luas); }
program 3-6
III.6.2 Prioritas Operator Aritmatika
Operator aritmatika pada C mempunyai urutan prioritas atau hirarki tertentu, seperti yang diperlihatkan pada Tabel 3.6.
Tabel 3.6 Hirarki operator aritmatika. Tertinggi Terendah ++ -- - (unary minus) * / % + -
- Operator yang mempunyai prioritas tinggi akan diutamakan dalah hal pengerjaan dibandingkan dengan operator yng memiliki prioritas lebih rendah.
- Jika operator mempunyai prioritas sama, maka operator yang terletak di sebelah kiri yang akan dikerjakan lebih dulu.
Latihan
Berapakah nilai x setelah pernyataan-pernyataan berikut ini dijalankan: a. x = (2+3) – 10 * 2;
b. x = (2 + 3) – (10 * 2); c. x = 10 % 2 + 1;
III.6.3 Operator Manipulasi Bit
Untuk keperluan memanipulasi data dalam bentuk bit, bahasa C menyediakan beberapa operator seperti yang diperlihatkan pada Tabel 3.7 di bawah ini.
Tabel 3.7 Operator Manipulasi Bit.
Operator Operasi << >> & ! ^ ~
Geser bit ke kiri Geser bit ke kanan Dan (AND)
Atau (OR) XOR
NOT (komplemen)
- Seluruh operator manipulasi bit hanya dapat dikenakan pada operand yang bertipe integer atau karakter.
- Tabel 3.8 berikut memberikan informasi tentang prioritas operator bit. Tabel 3.8 Prioritas operator manipulasi bit.
Tertinggi Terendah - >> << & ^ ! /* ---*/ /* Program : Geser.c */ /* Operator manipulasi bit */ /* ---*/ #include <stdio.h> main() { unsigned x = 93; printf("Nilai x semula = %d\n",x); x = x<<1; /* geser ke kiri 1 bit */
printf("Nilai x setelah geser kiri = %d\n",x); x = x>>2; /* geser ke kanan 2 bit */
printf("Nilai x setelah geser kanan = %d\n",x); }
Hasil eksekusi: C> Geser
Nilai x semula = 93
Nilai x setelah geser kiri = 186 Nilai x setelah geser kanan = 46 Program 3-7
III.7 Ungkapan (Ekspresi)
Ungkapan atau ekspresi dalam C dapat berupa: - pengenal
- konstanta
- peubah pseudo (seperti _AX, _AL yang menyatakan peubah register) - atau diantara kombinasi elemen di atas dengan operator.
Contoh ungkapan : 3 + 2 - 1
- Pada ungkapan di atas, 3, 2, dan 1 merupakan operan dan simbol + dan – adalah operator.
- Nilai ungkapan sendiri adalah hasil penjumlahan 3 dan 2, dikurangi 1.
III.8 Konversi Tipe dalam Ungkapan
- Dalam suatu ungkapan, jika tipe dari konstanta dan peubah berbeda, dengan sendirinya akan dikonversi terlebih dahulu menjadi tipe yang sama.
- Aturan yang berlaku dalam pengkonversian tipe aritmatika adalah: 1. Semua tipe char dan short int akan dikonversikan ke int. semua
float akan dikonversikan ke double. 2. Untuk setiap pasangan operand:
- Jika salah satu operand bertipe long doubel, maka operand pasangannya akan dikonversikan ke long doubel.
- Jika salah satu operand bertipe doubel, maka operand pasangannya akan dikonversikan ke doubel.
- Jika salah satu operand bertipe long, maka operand pasangannya akan dikonversikan ke long.
- Jika salah satu operand bertipe unsigned, maka operand pasangannya akan dikonversikan ke unsigned.
- Aturan di atas berlaku untuk operator aritmatika maupun manipulasi bit dan tidak berlaku untuk operator penugasan ( = ).
- Pada operator penugasan, nilai ungkapan yang terletak di kanan = secara otomatis akan dikonversikan sesuai dengan tipe peubah yang terletak di kiri =.
III.9 Penggunaan Type Cast
- Type cast merupakan cara untuk mengkonversikan suatu tipe menjadi tipe yang lain
- Misal jika x dideklarasikan bertipe int. Bila diinginkan agar ungkapan x/2 menghasilkan nilai pecahan, maka ungkapan x/2 perlu ditulis menjadi:
(float) x/2
- Perbedaan penggunaan type cast dan yang tidak menggunakan type cast dapat dilihat dari contoh program berikut.
/* ---*/ /* Program : typecast.c */ /* melihat efek type cast dalam */ /* konversi tipe */ /* ---*/ #include <stdio.h> main() { int x = 21; float y; y = x/2; printf("y = x/2 =%f\n",y); y = (float) x/2;
printf("y = (float) x/2 = %f\n",y); } Hasil eksekusi: C>typecast Y = x/2 = 10.000000 Y = (float) x/2 = 10.500000 Program 3-8
Pada operasi penugasan ke peubah, tipe ungkapan yang terletak di kanan operator penugasan ( = ) secara otomatis akan dikonversikan sesuai dengan tipe peubah yang terletak di kiri operator penugasan, seperti yang diperlihatkan pada contoh program 3-9 berikut ini.
/* ---*/ /* Program : konversi.c */ /* Contoh konversi pada penugasan*/ /* ke peubah */ /* ---*/ #include <stdio.h> main() { char c; int i; float x; x = 176.5; /* penugasan 1 */ i = x; /* penugasan 2 */ c = i; /* penugasan 3 */ printf("Nilai x =%f\n",x); printf("Nilai i =%d\n",i); printf("Nilai c =%c\n",c); } Hasil eksekusi: C>konversi Nilai x = 176.500000 Nilai I = 176 Nilai c = 0 Program 3-9