Pemrograman Bhs C
Pemrograman Bhs C
Oleh:
Iwan Syarif
Riyanto Sigit
Afrida Helen
Umi Sa'adah
Tom MUSO (JICA Expert)
DAFTARISI
L
Kata Pengantar i
Daftar Isi ii
BAB I SEKILAS TENTANG C 1
1.1 Sejarah dan Ruang Lingkup C 1
1.2 Kelebihan dan Kelemahan C 2
1.3 Proses Kompilasi dan Linking Program C 3
1.4 Struktur Penulisan Program C 5
1.5 Pengenalan Program C 6
1.5.1 Pengenalan Fungsi-Fungsi Dasar 6
1.5.2 Pengenalan Praprosesor #include 8
1.5.3 Komentar dalam Program
Kesimpulan 9
Latihan 10
BAB II DASAR-DASAR PEMROGRAMAN C 11
2.1 Tipe Data Dasar 11
2.2Variabel 12
2.2.1 Aturan Pendefinisian Variabel 12
2.2.2 Mendeklarasikan Variabel 12
2.2.3 Memberikan Nilai ke Variabel 13
2.2.4 Inisialisasi Variabel 13
2.3 Konstanta 14
2.4 Operator 14
2.4.1 Operator Aritmatika 15
2.4.2 Operator Penurunan dan Penaikan 16
2.4.3 Prioritas Operator Aritmatika 17
2.4.4 Operator Penugasan 18
2.4.5 Operator Kombinasi (Pemendekan) 18
2.5 Menampilkan Data ke Layar 19
2.5.1 Fungsi printfO 19
2.5.2 Y\xngs\ put char 0 23
2.6 Memasukkan Data dari Keyboard 23
2.6.1 Fungsi scanfQ ' 23
2.6.2 Fungsi getcharQ 25
Kesimpulan 26
Latihan 26
BAB III PENGAMBILAN KEPUTUSAN 28
3.1 Operator Kondisi 28
3.1.1 Operator Relasi 29
3.1.2 Operator Logika • 29
3.1.3 Prioritas Operator Logika dan Relasi 31
3.2 Pernyataan if 32
Buah kata-kata kunci (keyword) yang menyediakan paling tidak 32 kata –kata kunci ini dengan
sintak yang sesuai dengan yang ditentukan oleh
Pada saat ini C merupakan bahasa pemrograman yang sangat populer di dunia. Banyak
pemrograman yang dibuat dengan bahasa C seperti assembler, interpreter, program paket, sistem
operasi, editor, kompiler. program bantu, Word Star, Dbase, aplikasi untuk bisnis, matematika,
dan game, bahkan ada pula yang menerapkannya untuk kecerdasan buatan.
Dalam beberapa literatur bahasa C digolongkan sebagai bahasa tingkat menengah. Penggolongan
ke dalam bahasa tingkat menengah bukanlah berarti bahwa bahasa C lebih sulit dibandingkan
dengan bahasa tingkat tinggi seperti PASCAL atau BASIC. Demikian juga bahasa C bukanlah
bahasa yang beroriatasi pada mesin seperti bahasa mesin dan assembly. Pada kenyataannya
bahasa C ~;r.;-::~binasikan elemen dalam bahasa tingkat tinggi dan bahasa tingkat rendah.
Kemudanan dalam membuat program yang ditawarkan pada bahasa tingkat tinggi dan
kecepatan eksekusi dari bahasa tingkat rendah merupakan tujuan diwujudkannya bahasa C.
l.l.Kelebihan dan Kelemahan C.
Beberapa kelebihan dari bahasa C:
* Bahasa C tersedia hampir di semua jenis komputer, baik mikro, mini maupun komputer besar
(mainframe computer).
■ Kode bahasa C bersifat portabel. Suatu aplikasi yang ditulis dengan bahasa C untuk suatu
komputer tertentu dapat digunakan di komputer lain hanya dengan sedikit modifikasi.
■ Berbagai struktur data dan pengendalian proses disediakan dalam C sehingga
memungkinkan untuk membuat program yang terstruktur. Struktur bahasa yang baik, selain
mudah dipelajari juga memudahkan dalam pembuatan program, pelacakan kesalahan program
dan akan menghasilkan dokumentasi program yang baik.
■ Dibandingkan dengan bahasa mesin atau assembly, C jauh lebih mudah dipahami dan
pemrogram tidak perlu mengetahui mesin komputer secara detil. Dengan demikian tidak akan
menyita waktu yang terlampau banyak dalam menyelesaikan suatu masalah
3
ke dalam bentuk program. Hal ini dikarenakan C merupakan bahasa yang berorientasi pada
permasalahan, bukan berorientasi pada mesin.
■ C memungkinkan memanipulasi data dalam bentuk bit maupun byte. Di samping itu juga
memungkinkan untuk memanipulasi alamat dari suatu data atau pointer.
Adapun kelemahan bahasa C yang dirasakan oleh para pemula bahasa C:
■ Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan
pemakai. Kalau tidak dikuasai sudah tentu akan menimbulkan masalah.
■ Para pe'mrogram C tingkat pemula umumnya belum pernah mengenal pointer dan tidak
terbiasa menggunakannya. Padahal keampuhan C justru terletak pada pointer.
Kesulitan yang diuraikan di depan akan bersifat sementara saja. Kalau para pemula C mau
mempelajarinya, sebenarnya tak ada yang dikatakan sulit sekali mengenai C. Mereka yang sudah
terbiasa justru menyatakan bahwa bekerja dengan C sangat menyenangkan. Pepatah mengatakan
"Di mana ada kemauan di situ ada jalan" dan "Jika tak kenal maka tak sayang".
1.2.Proses Kompilasi dan Linking Program C
Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh komputer,
program haruslah diterjemahkan dahulu ke dalam kode mesin. Adapun penerjemah yang
digunakan bisa berupa interpreter atau kompiler.
Interpreter adalah suatu jenis penerjemah yang menerjemahkan baris per baris intsruksi
untuk setiap saat. Keuntungan pemakaian interpreter, penyusunan program relatif lebih cepat dan
bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program.
Sedangkan kelemahannya, kecepatannya menjadi lambat sebab sebelum suatu instruksi
dijalankan selalu harus diterjemahkan terlebih dahulu. Selain itu, saat program dieksekusi,
interpreter juga harus berada dalam memori. Jadi memori selalu digunakan baik untuk program
maupun interpreter. Di samping itu, program sumber (source program) yaitu program aslinya
tidak dapat dirahasiakan (orang lain selalu bisa melihatnya).
Kebanyakan versi C yang beredar di pasaran menggunakan penerjemah berupa kompiler.
Kompiler merupakan jenis penerjemah yang lain, dengan cara kerjanya yaitu menerjemahkan
seluruh instruksi dalam program sekaligus. Proses pengkompilasian ini
4
cukup dilakukaii sekali saja. Selanjutnya hasil penerjemahan (setelah melalui tahapan yang lain)
bisa dijalankan secara langsung, tanpa tergantung lagi oleh program sumber maupun
kompilernya. Keuntungannya, proses eksekusi dapat berjalan dengan cepat. sebab tak ada lagi
proses penerjemahan. Di samping itu, program sumber bisa dirahasiakan, sebab yang dieksekusi
adalah program yang sudah dalam bentuk kode mesin. Sedangkan kelemahannya, proses
pembuatan dan pengujian membutuhkan waktu relatif lebih lama, sebab ada waktu untuk
mengkompilasi (menerjemahkan) dan ada pula waktu melakukan proses linking. Perlu pula
diketahui, program akan berhasil dikompilasi hanya jika program tak mengandung kesalahan
secara kaidah sama sekali.
Proses dari bentuk program sumber C {source program, yaitu program yang ditulis dalam bahasa
C) hingga menjadi program yang executable (dapat dieksekusi secara langsung) ditunjukkan
pada Gambar 1.1 di bawah ini.
EDITOR EDITOR
FILE PROGRAM
FILE INCLUDE
(FILE JUDUL)
KOMPUTER
LINKER
FILE
EXECUTABLE
6
Keterangan Gambar :
■ Pertama-tama program C ditulis dengan menggunakan editor. Program ini disimpan dalam
file yang disebut file program, sumber (dengan ciri utama memiliki ekstensi .c).
■ File include (umumnya memiliki ekstensi .h, misalnya stdio.h, atau biasa disebut dengan file
judul (header file)) berisi kode yang akan dilibatkan dalam program C (Pada program tertentu
bisa saja tidak melibatkan file include).
■ Berikutnya, kode dalam file program sumber maupun kode pada file include akan
dikompilasi oleh kompiler menjadi kode obyek. Kode obyek ini disimpan pada file yang
biasanya berekstensi .obj, atau .0 (bergantung kepada YrngkanganJ environment sistem operasi
yang dipakai). Kode obyek berbentuk kode mesin, oleh karena itu tidak dapat dibaca oleh
pemrogram. Akan tetapi kode ini sendiri juga belum bisa dipahami komputer.
■ Supaya bisa dimengerti oleh komputer, maka kode obyek bersama-sama dengan kode obyek
yang lain (kalau ada) dan isi file pustaka (library file, yaitu file yang berisi rutin untuk
melaksanakan tugas tertentu. File ini disediakan oleh pembuat kompiler, biasanya memiliki
ekstensi .lib) perlu dikaitkan (linking) dengan menggunakan linker, membentuk sebuah program
yang executable (program yang dapat dijalankan/dieksekusi secara langsung dalam lingkungan
sistem operasi).
■ Program hasil linker ini disimpan dalam file yang disebut file executable, yang biasanya
berekstensi .exe.
1.4. Struktur Penulisan Program C
Untuk dapat memahami bagaimana suatu program ditulis, maka struktur dari program
harus dimengerti terlebih dahulu. Tiap bahasa komputer mempunyai struktur program yang
berbeda. Struktur program memberikan gambaran secara luas, bagaimana bentuk program secara
umum.
Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah program minimal
mengandung sebuah fungsi. Fungsi pertama yang harus ada dalam program C dan sudah
ditentukan namanya adalah mainO- Setiap fungsi terdiri atas satu atau beberapa pernyataan, yang
secara keseluruhan dimaksudkan untuk melaksanakan tugas khusus. Bagian pernyataan fungsi
(sering disebut tubuh fungsi) diawali dengan tanda kurung kurawal buka ({) dan diakhiri dengan
tanda kurung kurawal tutup (}). Di antara kurung
7
b. Fungsi printf()
Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu keluaran pada
layar peraga. Untuk menampilkan tulisan
Selamat belajar bahasa C misalnya, pernyataan yang diperlukan berupa:
printf("Selamat belajar bahasa C");
Pernyataan di atas berupa pemanggilan fungsi printfQ dengan argumen atau parameter berupa
string. Dalam C suatu konstanta string ditulis dengan diavvali dan diakhiri tanda petik-ganda (").
Perlu juga diketahui pernyataan dalam C selalu diakhiri dengan tanda titik koma (;). Tanda titik
koma dipakai sebagai tanda pemberhentian sebuah pernyataan dan bukanlah sebagai pemisah
antara dua pernyataan.
Tanda \ pada string yang dilewatkan sebagai argumen printf() mempunyai makna yang
v/ khusus. Tanda ini bisa digunakan untuk menyatakan karakter khusus seperti karakter
baris-baru ataupun karakter backslash (miring kiri). Jadi karakter seperti \n sebenarnya
menyatakan sebuah karakter. Contoh karakter yang ditulis dengan diawali tanda \
adalah:
\" menyatakan karakter petik-ganda \ \ menyatakan karakter backslash \ t menyatakan
karakter tab
Dalam bentuk yang lebih umum, format printfQ
printf("string kontrol", daftar argumen);
dengan string kontrol dapat berupa satu atau sejumlah karakter yang akan ditampilkan ataupun berupa
penentu format yang akan mengatur penampilan dari argumen yang terletak pada daftar argumen.
Mengenai penentu format di antaranya berupa:
%d untuk menampilkan bilangan bulat (integer)
%f untuk menampilkan bilangan titik-mengambang (pecahan)
%c untuk menampilkan sebuah karakter
%s untuk menampilkan sebuah string
8
Contoh:
#include <stdio.h>
main( )
{
printf("No : %d\n", 10);
printf("Nama : %s\n", "Ali");
printf("Nilai : %f\n",80.5);
printf("Huruf : %c\n",,A/);
}
Catatan :
Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis mesin yang
digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda dengan mesin 32 bit).
2.2 Variabel
2.2.1 Aturan Pendefinisan Variabel
Aturan penulisan pengenal untuk sebuah variabel, konstanta atau fungsi yang didefinisikan oleh
pemrogram adalah sebagai berikut:
Pengenal harus diawali dengan huruf (A. . Z, a. . z) atau karakter garis bawah (_). "
Selanjutnya dapat berupa huruf, digit (0 . . 9) atau karakter garis bawah atau tanda dollar ($). "
Panjang pengenal boleh lebih dari 31 karakter, tetapi hanya 31 karakter pertama yang akan
dianggap berarti. " Pengenal tidak boleh menggunakan nama yang tergolong sebagai kata-kata
cadangan {reserved
words) seperti int, if, while dan sebagainya. , f f i M I -
2.2.2 Mendeklarasikan Variabel
Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang ada padanya
dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang akan digunakan
dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di sini berarti
memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya.
13
Bentuk umum deklarasi variabel:
tipe daftar-variabel;
Nama_vriabel = nilai;
Contoh:
int var_bulat - 10; double var_pecahan = 10.5;
2.2.4 Inisialisasi Variabel
Adakalanya dalam penulisan program, setelah dideklarasikan, variabel langsung diberi nilai
awal. Sebagai contoh yaitu variabel nilai :
int nilai; nilai = 10;
Dua pernyataan di atas sebenarnya dapat disingkat meialui pendeklarasian yang disertai
penugasan nilai, sebagai berikut:
int nilai= 10;
Cara seperti ini banyak dipakai dalam program C, di samping menghemat penulisan pernyataan,
juga lebih memberikan kejelasan, khususnya untuk variabel yang perlu diberi nilai awal
(diinisialisasi).
14
2.3 Konstanta
Konstanta menyatakan nilai yang tetap. Berbeda dengan variabel, suatu konstanta tidak
dideklarasikan. Namun seperti halnya variabel, konstanta juga memiliki tipe. Penulisan konstanta
mempunyai aturan tersendiri, sesuai dengan tipe masing-masing.
■ Konstanta karakter rnisalnya ditulis dengan diawali dan diakhiri dengan tanda petik tunggal,
contohnya : W dan x@'.
■ Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tak mengandung
bagian pecahan, contohnya : -1 dan 32 7 67.
■ Konstanta real {float dan double) bisa mengandung pecahan (dengan tanda berupa titik) dan
nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e), contohnya : 27 . 5f
(untuk tipe float) atau 27.5 (untuk tipe double) dan 2 . ie + 5 (maksudnya 2,1 x 105).
■ Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik-
ganda ('"), contohnya :"Pemrograman Dasar C".
2.4 Operator .* ^'t
Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan
sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu
variabel, membandingkan kesamaan dua buah nilai. 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 operator penjumlahan melibatkan dua operator ini tergolong sebagai
operator binary.
-c
Simbol - (minus) juga merupakan operator. Simbol ini termasuk sebagai operator unary, yaitu
operator yang hanya memiliki sebuah operand (yaitu c pada contoh ini)
15
2.4.1. Operator Aritmatika
■ Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah : *
perkalian
/ pembagian
% sisa pembagian
+ penjumlahan
- pengurangan
* Adapun operator yang tergolong sebagai operator unary.
- tanda minus
+ tanda plus
Contoh pemakaian operator aritmatika misalnya untuk memperoleh nilai diskriminan
dari suaru persamaan kuadrat: D = b2 - 4ac
/* File program : diskrim.c Menghitung diskriminan pers
kuadrat axA2 + bx + c = 0 */
# include <stdio.h>
main()
{
float a,b,c,d; a = 3. Of; b = 4. Of; c = 7. Of;
d = b*b-4*a*c;
printf("Diskriminan =%f\n",d); }
Contoh eksekusi:
Diskriminan = -84.000000
Operator yang telah dituliskan di atas, yang perlu diberi penjelasan lebih lanjut adalah operator
sisa pembagian. Beberapa contoh berikut kiranya akan memperjelas makna dari operator ini.
• Sisa pembagian bilangan 7 dengan 2 adalah 1(7 % 2 -> 1)
• Sisa pembagian bilangan 6 dengan 2 adalah 0 (6 % 2 ~> 0)
16
Contoh eksekusi
loop = 1, count = 1
loop = 1, count = 2
*} Bentuk unary + dan unary - memiliki prioritas yang lebih tinggi daripada bentuk binary +
dan binary -
18
2.4.4. Operator Penugasan
Operator penugasan (assignment operator) digunakan untuk memindahkan nilai dari suatu
ungkapan (expression) ke suatu pengenal. Operator pengerjaan yang umum digunakan dalam
bahasa pemrograman, termasuk bahasa C adalah operator sama dengan (=). Contohnya :
fahrenheit = celcius * 1.8 + 32;
w
Maka '=' adalah operator penugasan yang akan memberikan nilai dari ungkapan : celcius
* 1.8 + 32 kepadavariabel fahrenheit.
Bahasa C juga memungkinkan dibentuknya statemen penugasan menggunakan operator
pengerjaan jamak dengan bentuk sebagai berikut :
pengenall = pengenal2 = ... = ungkapan ;
Misalnya :
a = b = 15; maka nilai variabel 'a ' akan sama dengan nilai variabel 'b' akan sama dengan 15.
2.4.5 Operator Kombinasi (Peraendekan)
C menyediakan operator yang dimaksudkan untuk memendekkan penulisan operasi penugasan
semacam
x = x + 2; . M
y = y * 4;
menjadi
x += 2;
y *= 4;
Daftar berikut memberikan seluruh kemungkinan operator kombinasi dalam suatu
pernyataan serta pernyataan padanannya.
19
Tabel 2.4 Seluruh kemungkinan operator kombinasi dan padanannya
x += 2; kependekan X = X + 2;
dari
x -= 2; kependekan x = X - 2;
dari
x *= 2; kependekan x = X * 2;
dari
x /= 2; kependekan x = X / 2;
dari
x %= 2; kependekan X = X % 2;
dari
x <<= 2; kependekan X = X << 2;
dari
x >>= 2; kependekan X = X » 2;
dari
x & = 2; kependekan X = X & 2;
dari
x |= 2; kependekan X = X 1 2;
dari
x ^= 2 ; kependekan X = X A
2;
dari
Contoh di bawah ini akan menjelaskan perbedaan format %g, %e dan %f dalam
menampilkan bilangan real.
A*File program : form_efg.c Perbedaan format %g, %e dan %f */
#include <stdio.h>
main () {
float x = 251000.Of; ^
printf("Format e printf("Format f printf("Format g
%e\n", x); => %f\n", x); => %g\n", x);
}
21
Contoh eksekusi:
Format e => 2 . 510000e+005 Format f- => 251000 .,000000 Format g => 251000
Tampak bahwa penentu format %e menampilkan bilangan dalam bentuk eksponensial. Jika
penentu fomat yang digunakan berupa %f, bagian pecahan secara default akan ditampilkan dalam
bentuk 6 digit. Sedangkan jika digunakan penentu format %g, maka digit yang tak berarti tak
akan ditampilkan.
Untuk menentukan panjang medan yang disediakan bagi tampilan data, maka sesudah tanda %
dalam penentu format dapat disisipi dengan bilangan bulat yang menyatakan panjang medan. ■
Untuk data yang berupa bilangan bulat, misal pada :
printf("Abad %4d", 20); % 4d menyatakan medan untuk menampilkan bilangan 20 adalah
sepanjang 4 karakter. printf("Abad %4d", 20);
A b a d 2 0
m.n
Untuk data yang berupa bilangan real, spesifikasi medannya berupa
m = panjang medan n = jumlah digit pecahan Contoh pada pernyataan :
printf("Harga : Rp %8.2f\n", 500.0); % 8 . 2 f menyatakan panjang medan dari bilangan real
yang akan ditampilkan adalah 8 karakter dengan jumlah digit pecahan 2 buah.
printf("Harga : Rp %8.2f\n", 500.0);
22
Kalau hanya jumlah digit pecahan yang perlu ditentukan, panjang medan tak perlu disertakan,
misal :
printf ("%.2f\n", 600.0); printfT%.2f\n", 7500.25);
hasilnya :
600.00 7500.25
Untuk data yang berupa string, contoh :
printf ("%12's", "Bahasa C");
maka akan ditainpilkan sebagai berikut
B a h a s a C
Tanipak dalam berbagai jenis data di atas, penentu format yang mengandung panjang medan,
secara default akan menampilkan data dalam bentuk rata kanan terhadap panjang medan yang
diberikan. Untuk data string yang biasanya dikehendaki untuk ditampilkan dalam bentuk rata
kiri, maka sesudah tanda % pada penentu format %s perlu disisipkan tanda - (minus), contoh :
printf ("%012s", "Bahasa C") ;
menyatakan bahwa string akan ditampilkan dalam medan dengan panjang 12 karakter dan diatur
rata kiri. Sehingga tampilan di atas berubah menjadi :
.-■.'• -
.
B a h a s a C
scanf("%f",&radius) ;
Selengkapnya, terlihat dalam contoh program di bawah ini.
24
/* File program : lingkaran.c
Menghitung keliling dan luas lingkaran */
#include <stdio.h>
main()
{
double radius, keliling, luas;
printf("Masukkan jari-jari lingkaran : ");
scanf("%lf",&radius);
keliling = 2 * 3.14 * radius; /* PI = 3.14 */
luas = 0.5 * 3.14 * radius * radius;
printf("\nData lingkaran\n");
printf("Jari-jari = %8.21f\n", radius);
printf("Keliling = %8.21f\n", keliling);
printf("Luas = %8.21f\n", luas);
Contoh eksekusi
Masukkan jari-jari lingkaran = 5
Data lingkaran
Jari-jari = 5 00
Keliling = 31 40
Luas 39 25
Bentuk scanf() sesungguhnya menyerupai fungsi printf0. Fungsi ini melibatkan penentu format
yang pada dasarnya sama digunakan pada printfQ. Secara umum bentuk scanfO adalah sebagai
berikut:
scanf("string kontrol", daftar_argumen);
Dengan string kontrol dapat berupa :
■ Penentu format
■ Karakter spasi-putih (white-space)
■ Karakter bukan spasi-putih
Penentu format menyatakan jenis data yang akan dibaca. Pada scanfQ penentu format dapat
berupa salah satu di antara yang ada pada daftar berikut:
25
Pada bentuk scan/(), daftar_argumen dapat berupa satu atau beberapa argumen dan haruslah
berupa alamat. Misalnya hendak membaca bilangan real dan ditempatkan ke variabel radius,
maka yang ditulis dalam scan/() adalah alamat dari radius. Untuk menyatakan alamat dari
variabel, di depan variabel dapat ditambahkan tanda & (tanda & dinamakan sebagai operator
alamat). Sehingga & radius menyatakan alamat dari radius. Dalam bentuk yang lengkap :
scanf("%f", Sradius); berarti (bagi komputer) : "bacalah sebuah bilangan real (%f) dan
tempatkan ke alamat dari
radius (&radius)".
Kesimpulan :
• Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel.
• Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat
diubah-ubah selama eksekusi berlangsung,
Variabel yang akan digunakan haruslah dideklarasikan terlebih dahulu, adakalanya langsung
dideklarasikan sekaligus diberi nilai (diinisialisasi).
• Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk
melakukan sesuatu operasi atau manipulasi
• Operator yang terkait dengan operasi aritmatika antara lain adalah operator aritmatika,
operator penurunan dan penaikan, operator penugasan (assignment) dan operator kombinasi
(pemendekan)
• Untuk menampilkan data/informasi ke layar digunakan fungsi print/Q dan putcharQ.
• Untuk memasukkan data melalui keyboard saat eksekusi berlangsung digunakan fungsi
scanfO dan getcharQ.
Latihan
1. Mengapa nama-nama variabel di bawah ini tidak valid ?
(a) value$sum
(b) exit flag
(c) 31otsofmoney
(d) char
2. Berapakah hasil akhir dari program berikut
#include <stdio.h> main ()
{
int a = 22;
a = a + 5;
a = a-2;
printf("a = %d\n", a);
27
Khususnya untuk operator relasi sama dengan (==) harap dibedakan dengan operator (=) yang
merupakan operator penugasan (assignment). Contoh:
Pembandingan
Hasil
1 > 2 Salah
1 < 2 Benar
'A' < 'B' Benar, karena kode ASCII untuk karakter 'A'
kurang dari kode ASCII untuk karakter 'B' *}
kar == 'Y- Benar, jika kar berisi 'Y' Salah, jika kar tidak berisi 'Y'
" Dalam daftar ASCII standar, kode untuk karakter 'A' = 65 sedangkan karakter 'B' = 66, 'C = 67,
'D' = 68 dan seterusnya sampai dengan karakter 'Z' = 90.
3.1.2. Operator Logika.
Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator logika
ditunjukkan pada tabel 3-2.
30
Tabel 3-2. Operator logika
Operator Makna
&& dan (AND)
11i atau (OR)
tidak (NOT)
Bentuk pemakaian operator & & dan | | adalah operandi operator operand2
Baik operandi maupun operand2 dapat berupa ekspresi relasi ataupun ekspresi logika. Hasil
ekspresi bias bernilai benar atau salah. Pada C nilai hasil dari sebuah ekspresi relasi atau ekspresi
logika jika dinyatakan dengan angka adalah :
■ Salah -> nilai = 0
■ Benar -> nilai ! = 0 (misalnya nilai = 1)
Tabel 3-3 memberikan penjelasan hasil operasi ekspresi logika yang menggunakan operator &
& maupun | | untuk berbagai kemungkinan keadaan operand-nya.
Tabel 3-3. Kemungkinan pada operasi logika && dan ||
Operandi Operand2 Hasil
11 &&
Salah Salah Benar Salah Benar Salah 0 000
Benar Benar 11 1
1
Tampak bahwa operator atau (| |) menghasilkan nilai 1 jika ada operand yang benar. Hasil
berupa 0 jika semua operand adalah salah. Adapun operator logika dan (&&) memberikan hasil 1
hanya jika kedua operand adalah benar. Beberapa contoh ekspresi logika di antaranya :
■ (kar > 'A') && (kar < *Z')
Hasil operasi logika && adalah benar hanya jika kar > 'A' dan kar < ' Z' (dalam hal ini
yang diperbandingkan adalah kode ASCII dari karakter tsb).
■ (pilihan == 'Y') || (pilihan == • y.1 )
Hasil operasi logika | | adalah benar jika pilihan berupa ' Y' atau ' y1
Sedangkan bentuk pemakaian operator logika ! adalah :
Innerand
31
dengan operand dapat berupa ekspresi logika ataupun ekspresi relasi. Hasil operasi ! bernilai :
■ 1 jika operand bernilai salah
■ 0 jika operand bernilai benar
Perhatikan contoh potongan program di bawah ini :
if ( !sudah_benar) printf("Masukan Anda salah!\n") ;
Pada contoh potongan program di atas, dilakukan pengecekan kondisi terhadap nilai dari variabel
sudah_benar. Jika variabel sudahjbenar bernilai 0, maka kondisi !sudah_benar akan bernilai
benar (true) sehingga instruksi:
printf("Masukan Anda salah!\n");
akan diproses. Penjelasan lebih rinci tentang pengecekan kondisi dengan pernyataan if dibahas
pada sub bab 3.2.
3.1.3 Prioritas Operator Logika dan Relasi
Tabel berikut ini memberikan penjelasan singkat mengenai prioritas di antara berbagai operator
logika dan operator relasi.
Tabel 3-4 Prioritas operator logika dan relasi
i
Tertinggi :
> >= < <=
&&
Terendah: 11
Berdasarkan prioritas yang ditunjukkan pada tabel 3-4, maka ekspresi seperti
?
(kar > A') && (kar < 'Z') sama saja kalau ditulis menjadi
kar > 'A' && kar < 'Z'
Hanya saja penulisan dengan menggunakan tanda kurung akan lebih memberikan kejelasan.
32
3.2 Pernyataan if
Pernyataan z/mempunyai bentuk umum :
if(kondisi) pernyataan;
Bentuk ini menyatakan :
■ jika kondi'si yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang
mengikutinya akan diproses.
■ Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka
pernyataan yang mengikutinya tidak akan diproses.
Mengenai kodisi hams ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah
pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat dilihat
seperti gambar 3.1
kondisi
pernyataan
33
main ()
double total_pembelian, discount = 0;
/* discount diinisialisasi dengan nilai 0 */
printf ("Total pembelian = Rp "); scanf("%lf", &total_pembelian);
if(total_pembelian >= 100.000)
discount = 0.05 * total_pembelian; printf("Besarnya discount = Rp %.21f\n", discount);
Contoh eksekusi:
Total pembelian = Rp 200000
Besarnya discount = Rp 10000.00____________________________
Untuk pernyataan // yang diikuti dengan pernyataan majemuk, bentuknya adalah sebagai berikut:
if (kondisi)
{
/* tanda awal pernyataan majemuk*/
pernyataan-1; pernyataan-2;
pernyataan-n;
} /* tanda akhir pernyataan majemuk */
Pernyataan-pernyataan yang berada dalam tanda kurung { dan } akan dijalankan hanya bila
kondisi if bermlai benar.
3.3. Pernyataan if-else
Pernyataan if-else memiliki bentuk :
if (kondisi)
pernyataan-1;
else
pernyataan-2;
34
kondi
si
pernyataan pernyataan
Diagram alir dapat dilihat seperti gambar 3.2.
35
printf ("\rt%g dibagi dengan %g = %g\n", a, b, a/b) ;
Contoh eksekusi:
Masukkan nilai a : 5
Masukkan nilai b : 0
5 dibagi dengan nol = TAK BERHINGGA___
____________________^
JfAt 3.4. Pernyataan z/di dalam //* «
Di dalam suatu pernyataan if (atau if else) bisa saja terdapat pernyataan if(atau if-e/se,) yang lain.
Bentuk seperti ini dinamakan sebagai nested if. Secara umum, bentuk dari pernyataan ini adalah
sebagai berikut:
if (kondisi-2)
if(kondisi-n)
pernyataan;
else
pernyataan; ^M<
else
pernyataan;
else
pernyataan;
Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar (kondisi-1). Jika
kondisi-1 bernilai salah, maka statemen else yang terluar (pasangan // yang
bersangkutan) yang akan diproses. Jika else (pasangannya tsb) tidak ditulis, maka
penyeleksian kondisi akan dihentikan.
Jika kondisi-1 bernilai benar, maka kondisi berikutnya yang lebih dalam (kondisi-2)
akan diseleksi. Jika kondisi-2 bernilai salah, maka statemen else pasangan dari if yang
bersangkutan yang akan diproses. Jika else (untuk kondisi-2) tidak ditulis, maka
penyeleksian kondisi akan dihentikan.
Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai dengan kondisi-
n, jika kondisi-kondisi sebelumnya bernilai benar.
36
main()
{
float a, b, c, d = 0; double xl, x2, imaginair;
printf("MENCARI AKAR-AKAR PERSAMAAN KUADRAT a+bx+c=0\n");
printf("\nMasukkan nilai a : ");
scanf("%f", &a);
printf("Masukkan nilai b : ");
scanf("%f", &b) ;
printf("Masukkan nilai c : ");
scanf("%f", &c) ;
if (d >= 0)
if (d == 0) {
xl = -b / (2 * a) ;
printf("\nDua akar real kembar yaitu : \n");
printf("xl = x2 = %g\n", xl);
}
else
{
xl = (-b + sqrt(d))/(2*a);
x2 = (-b - sqrt(d))/(2*a);
printf("\nDua akar real berlainan yaitu :\n")/
printf("xl = %g\n", xl);
printf("x2 = %g\n", x2); }
else
{
imaginair = (sqrt(-d)/(2*a));
xl = -b/(2*a);
printf("\nDua akar imaginair berlainan yaitu : \n");
printf("xl = %g + %gi\n", xl, imaginair);
printf("x2 = %g - %gi\n", xl, imaginair);
}
}
37
Contoh eksekusi:
6
MENCARI AKAR-AKAR PERSAMAAN KUADRAT a+bx+c=0
Masukkan nilai a Masukkan nilai b Masukkan nilai c
Jenis operasi yang dikenakan bergantung pada jenis operator ang dimasukkan oleh user.
Oleh karena itu program akan mengecek apakah operator berupa tanda ‘*’, ‘/’, ' + ',
ataukah tanda '-' .
■ Jika operator berupa tanda c *' maka operand 1 akan dikalikan dengan operand 2.
■ Jika operator berupa tanda V maka operand 1 kan dibagi dengan operand 2.
■ Jika operator berupa tanda '+' maka operand 1 akan dijumlahkan dengan operand 2.
■ Jika operator berupa tanda '-' maka operand 1akan dikurangi dengan operand 2.
■ Kalau operator yang dimasukkan bukan merupakan salah satu dari jenis operator di
atas, maka ekspresi tersebut tidak akan diproses, dan user akan mendapatkan pesan
berupa : "Invalid operator !"
#include <stdio.h>
main()
{
iat valid__operator = 1;
/* valid_operator diinisialisasi dengan logika 1 */
char operator;
float number1, number2, result;
38
if(operator == !* f)
result = numberl * number2;
else if(operator == '/')
result = numberl / number2;
else if(operator == !+?)
result = numberl + number2;
else if(operator == !-')
result = numberl - number2;
else
valid_operator = 0;
if'(valid___operator)
printf (f?\n%g %c %g is %g\n", numberl, operator, number2,
result ); else
printf("Invalid operator!\n"); }
Contoh eksekusi:
23.2 + 12
23.2 + 12 is 35.2
(ekspresi)
{
case konstanta-1:
pernyataan-1;
break; case
konstanta-2:
case konstanta-n:
pernyataan-n;
break;
default:
break;
}
dengan ekspresi dapat berupa ekspresi bertipe integer atau bertipe karakter. Demikian juga
konstanta-1, konstanta-2, ..., konstanta-n dapat berupa konstanta integer atau karakter. Setiap
pemyataan-i (pernyataan-1, ... , pernyataan-n) dapat berupa pemyataan tunggal ataupun
pemyataan jamak. Dalam hal ini urutan penulisan pemyataan case tidak berpengaruh. Proses
penyeleksian berlangsung sebagai berikut:
■ pengujian pada switch akan dimulai dari konstanta-1. Kalau nilai konstanta-1 cocok dengan
ekspresi maka pernyataan-1 dijalankan. Kata kunci break harus disertakan di bagian akhir
setiap pemyataan case, yang akan mengarahkan eksekusi ke akhir switch.
■ Kalau ternyata pernyataan-1 tidak sama dengan nilai ekspresi, pengujian dilanjutkan pada
konstanta-2, dan berikutnya serupa dengan pengujian pada konstanta-1.
■ Jika sampai pada pengujian case yang terakhir temyata tidak ada kecocokan, maka
pemyataan yang mengikuti kata kunci default yang akan dieksekusi. Kata kunci default ini
bersifat opsional.
■ Tanda kurung kurawal tutup (}) menandakan akhir dari proses penyeleksian kondisi case.
Di bawah ini contoh program pemakaian pemyataan switch untuk menggantikan if else
bertingkat pada program kalkulatorl.c di atas.
40
'#include <stdio.h>
main ()
{
int valid_operator = 1;
char operator;
float numberl, number2, result;
switch(operator) {
if (valid__operator)
printf (“%g %c %g is %g\n", numberl, operator,
number2,result);
else
printf("Invalid operator!\n"); }
Contoh eksekusi
Masukkan 2 buah bilangan dan sebuah operator
Dengan format : numberl operator number2
23.2 = 12
invalid operator !
Kesimpulan :
• Operator kondisi adalah operator yang digunakan untuk menghasilkan kondisi benar (true)
dan salah (false), yang terdiri atas operator relasi dan operator logika.
• Operator relasi biasa dipakai untuk membandingkan dua buah nilai.
• Operator logika biasa dipakai untuk menghubungkan ekspresi relasi.
41
Untuk penyeleksian kondisi dalam rangka pengambilan keputusan bisa digunakan salah satu dari
pemyataan berikut ini:
a. Pemyataan if bentuk umumnya :
if (kondisi) pemyataan;
b. Pemyataan if else, bentuk umumnya :
if (kondisi)
pernyataan-1; else
Dernvataan-2:
c. Pemyataan if di dalam if bentuk umumnya :
if (kondisi-1) V if{kondisi-2)
if(kondisi-n) pemyataan;
else
pemyataan;
else
pemyataan; else
Dernvataan;
d. Pemyataan else-if bentuk umumnya
if (kondisi-1)
pernyataan-1; else if (kondisi-2)
pernyataan-2;
else if(kondisi-n) pemyataan-n;
else
pernyataan-(n-f-l);
42
break; case
konstanta-2:
break;
default:
break; }
Latihan :
Buatlah potongan program untuk soal-soal di bawah ini
1. Gunakan statemen if untuk membandingkan nilai dari sebuah variabel integer (sum)
dengan nilai 65. Jika lebih kecil, maka tampilkan pesan : "Maaf, Anda harus mencoba
lagi!".
2. Jika variabel total sama dengan variabel tebak, cetaklah nilai dari total, jika tidak sama,
maka cetaklah nilai dari tebak. **
3. Jika variabel sum sama dengan 10 dan variabel total kurang dari 20, maka tampilkan
pesan : "Tidak sesuai ! "
4. Jika variabel flag sama dengan 1 atau variabel letter bukan 'X', maka assign nilai 0
kepada variabel exitflag, jika tidak, maka set exitjflag sama dengan 1.
43
if ( letter == f X f )
sum =0; else if ( letter == !Z' )
valid_flag m hi else if C letter == f A f )
sum = ' 1; ~ ~
else
printf("Unknown letter -->%c\n", letter );
BAB IV PENGULANGAN
PROSES
Tujuan :
1. Menjelaskan proses pengulangan menggunakan pernyataan for
2. Menjelaskan proses pengulangan menggunakan pernyataan while
3. Menjelaskan proses pengulangan menggunakan pernyataan do-while
4. Menjelaskan penggunaan pernyataan break
5. Menjelaskan penggunaan pernyataan continue
6. Menjelaskan penggunaan pernyataan goto
7. Menjelaskan loop di dalam loop (nested loop) dan contoh kasusnya
8. Menjelaskan penggunaan exitQ untuk menghentikan eksekusi program dan contoh
kasusnya
4.1 Pernyataan/br
Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam pemrograman.
Pada semua bahasa pemrograman, pengulangan proses ditangani dengan suatu mekanisme yang
disebut loop. Dengan menggunakan loop, suatu proses yang berulang misalnya menampilkan
tulisan yang sama seratus kali pada layar dapat diimpelementasikan dengan kode program yang
pendek.
Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah
pernyataan for. Bentuk pernyataan ini :
I for (ungkapanl;ungkapan2;ungkapan3) I J
pernyataan;
44
45
Contoh penggunaan for, misalnya untuk menampilkan deretan angka sebagai berikut
20 ; :
30
40
50
-
-
-
100
Untuk keperluan ini, pernyataan for yang digunakan berupa :
bilangan = 20
bilangan <=100
cetak bilangan
bilangan =
bilangan + 10