Modul Algo 2024
Modul Algo 2024
MODUL PRAKTIKUM
DASAR-DASAR PEMROGRAMAN
Disusun Oleh:
Ani fitriyah, S.Kom.
MODUL PRAKTIKUM I
STRUKTUR BAHASA C DAN I/O
Modul ini membahas mengenai struktur bahasa C dan sekaligus membahas I/O (input
output) dalam pemrograman bahasa C.
Baris Komentar
Baris komentar adalah baris-baris yang menjelaskan maksud dari perubah yang
digunakan atau maksud dari program itu sendiri. Hal ini dimaksudkan untuk
memudahkan pelacakan atas perubah yang digunakan apabila program yang
digunakan cukup besar atau memudahkan orang lain memahami program yang kita
buat. Dalam program, baris komentar diletakkan diantara tanda /* dan */ dan baris ini
tidak dikerjakan oleh komputer, hanya dianggap sebagai baris kosong.
Struktur Bahasa C
Bentuk program C mirip dengan kebanyakan program bahasa tingkat tinggi lainnya.
Bentuk programnya adalah :
Judul Program
Header File
Deklarasi
Deskripsi
Judul Program
Judul program sifatnya sebagai dokumentasi saja, tidak signifikan terhadap proses
program. Ditulis dalam bentuk baris komentar.
Syntax:
/*<judul program>*/
Contoh:
/* Program Menghitung Rata-Rata */
Header File
C menyediakan sejumlah file judul (header file) yaitu file yang umumnya berisi
prototipe fungsi, definisi makro, variabel dan definisi tipe. File ini mempunyai ciri
yaitu namanya diakhiri dengan extension .h (dot h).
Syntax:
#define <<nama header>.h>
Contoh:
#include <stdio.h>
Keterangan: menyatakan bahwa agar membaca file bernama stdio.h saat
pelaksanaan kompilasi.
Deklarasi
Deklarasi adalah bagian untuk mendefinisikan semua nama yang dipakai dalam
program. Nama tersebut dapat berupa nama tetapan (konstanta), nama variabel, nama
tipe, nama prosedur, nama fungsi.
Deskripsi
Bagian inti dari suatu program yang berisi uraian langkah-langkah penyelesaian
masalah. Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah
program minimal mengandung sebuah fungsi. Setiap fungsi terdiri dari satu atau
beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan
tugas khusus.
Bagian pernyataan fungsi (disebut tubuh fungsi) diawali dengan tanda “{“ (kurung
kurawal buka) dan diakhiri dengan tanda “}” (kurung kurawal tutup)
Variabel
Variabel dalam program digunakan untuk menyimpan suatu nilai tertentu dimana nilai
tersebut dapat berubah-ubah. Setiap variabel mempunyai tipe dan hanya data yang
bertipe sama dengan tipe variabel yang dapat disimpan di dalam variabel tersebut.
Setiap variabel mempunyai nama. Pemisahan antar variabel dilakukan dengan
memberikan tanda koma.
Syntax:
<nama_tipe_data> <nama_variabel>;
Contoh :
int jumlah;
float harga_per_unit, total_biaya;
Dari contoh diatas, variabel jumlah hanya boleh menerima data yang bertipe integer
(bulat), tidak boleh menerima data bertipe lainnya. Variabel harga_per_unit dan
total_biaya hanya bisa diisi dengan bilangan float (pecahan).
Konstanta
Berbeda dengan variabel yang isinya bisa berubah selama eksekusi program
berlangsung, nilai suatu konstanta tidak bisa berubah.
Syntax:
Cara 1.
<nama_tipe_data> <nama_variabel> = <nilai_variabel>;
Cara 2.
#define <nama_variabel> <nilai_variabel>
Contoh :
const int m = 8;
#define pajak 0.05
Tabel berikut menunjkkan beragam simbol string kontrol yang dapat dituliskan untuk
mewakili tipe data yang digunakan.
Simbol string kontrol
Simbol Tipe Data
%d Integer
%c Char
%s String
%f Float
%lf Double/Long Float
%s String
%[^\n] Until breakline. Menerima inputan hingga enter. (seperti gets)
Contoh:
/*Contoh penggunaan fungsi scanf()*/
#include <stdio.h>
void main()
{
int angka;
scanf(“%d”, &angka);
fflush(stdin); //fflush digunakan untuk membersihkan buffer.
}
gets()
Fungsi yang digunakan untuk menerima inputan berupa kata/kalimat yang akan dibaca
sampai negasi enter (\n).
Syntax:
gets(<nama_variabel>);
Contoh:
/*Contoh penggunaan fungsi gets()*/
#include <stdio.h>
void main()
{
char nama[20];
gets(nama);
fflush(stdin); //fflush digunakan untuk membersihkan buffer.
}
getchar()
Fungsi yang digunakan untuk menerima inputan berupa karakter.
Syntax:
getchar();
Contoh:
/*Contoh penggunaan fungsi getchar()*/
#include <stdio.h>
void main()
{
char grade;
grade = getchar();
fflush(stdin); //fflush digunakan untuk membersihkan buffer.
}
Contoh:
/*Program Opsi 1*/
#include <stdio.h>
int main()
{
printf(”Belajar Pemrograman Komputer”);
getchar();
}
Opsi 2.
printf(”string string_kontrol”, argumen);
Contoh:
/*Program Opsi 2*/
#include <stdio.h>
int main()
{
int nilai;
printf("Nilai saya : %d", nilai); getchar();
}
puts()
Merupakan fungsi untuk menampilkan string (kata dan kalimat) disertai dengan breakline
(\n).
Syntax:
puts(“string/kalimat”);
Contoh:
/* Program penggunaan fungsi puts()*/
#include <stdio.h>
int main()
{
puts("Halo, selamat datang di Prodi Informatika");
puts("Selamat belajar giat ");
getchar();
}
putchar()
Merupakan fungsi untuk menampilkan karakter.
Syntax:
putchar(“nama_variabel”);
Contoh:
/*Program penggunaan fungsi putchar()*/
#include <stdio.h>
void main()
{
char grade;
//proses output
printf("Grade anda : ");
putchar(grade);
getchar();
}
LATIHAN.
Buatlah program-program berikut.
1. Menampilkan:
A. tulisan “Halo, siapa namamu?”, lalu meminta pengguna memasukkan
namanya;
B. tulisan “Berapa usiamu?”, lalu meminta pengguna memasukkan usianya, ;
C. tulisan “Dimanakah tempat tinggalmu?”, lalu meminta pengguna
memasukkan alamat tempat tinggalnya;
D. tulisan “Dimanakah tempat kuliahmu?”, lalu meminta pengguna
memasukkan nama kampus tempat kuliah;
E. tulisan “Program studimu apa?”, lalu meminta pengguna memasukkan nama
program studinya;
Keterangan:
<nama> , <usia>, <nama kampus>, <nama prodi>, dan <alamat rumah>
adalah data yang dibaca dari hasil input sebelumnya.
2. Menukarkan dua buah nilai dari dua buah variabel. Misalnya, sebelum pertukaran
nilai a=5, nilai b=3, maka setelah pertukaran nilai a=3, nilai b=5.
3. Menghitung luas dan keliling persegi panjang. Data masukan dibaca dari piranti
masukan dan luas dan keliling bangun persegi panjang ditampilkan sebagai
keluaran.
4. Mengkonversikan total detik menjadi jam menit detik. Petunjuk: 1 menit = 60 detik
dan 1 jam = 3600 detik.
MODUL PRAKTIKUM 2
OPERATOR
C = 15;
Sintak tersebut berarti memasukkan nilai 15 ke dalam variabel C. Selain itu bahasa
C juga menawarkan kita untuk memasukkan nilai ke dalam beberapa variabel
secara sekaligus, berikut ini contoh yang akan menunjukkan hal tersebut.
a = b = c = 20;
#include <stdio.h>
int main(void)
{
int a, b, c, d;
a = 10;
b = c = 35;
d = a;
printf(“Nilai a \t= %d\n”, a);
printf(“Nilai b \t= %d\n”, b);
printf(“Nilai c \t= %d\n”, c);
printf(“Nilai d \t= %d\n”, d);
return 0;
}
dan c. Berikut ini program yang akan menunjukkan penggunaan operator
assignment.
Berbeda dengan kebanyakan bahasa pemrograman lainnya, bahasa C juga
menawarkan cara penulisan sintak untuk mempersingkat proses assignment.
Sebagai contoh apabila terdapat statemen j = j + 4, maka statement tersebut
dapat kita tulis dengan j += 4. Berikut ini bentuk penyingkatan yang terdapat
dalam bahasa C.
Modul Praktikum 2 – Operator
J = J + 4 J += 4
J = J - 4 J -= 4
J = J * 4 J *= 4
J = J / 4 J /= 4
J = J % 4 J %= 4
J = J << 4 J <<= 4
J = J >> 4 J >>= 4
J = J & 4 J &= 4
J = J ^ 4 J ^= 4
J = J | 4 J |= 4
Operator Unary
Operator unary adalah operator yang digunakan untuk melakukan operasi-operasi
matematik yang hanya melibatkan satu buah operand. Dalam bahasa C, yang
termasuk ke dalam operator unary adalah seperti yang tampak pada tabel di bawah
ini.
Tabel 2. Operator unary
Contoh
Operator Jenis Operasi
Penggunaan
+ Membuat nilai positif +10
- Membuat nilai negatif -10
++ Increment (menambahkan nilai 1) x++
-- Decrement (mengurangi nilai 1) x--
Berikut ini program yang akan menunjukkan penggunaan operator unary + dan -.
#include <stdio.h> int main(void)
{
int x, y;
x = +5;
y = -10;
printf(“%d x (%d) = %d”, x, y, x*y);
return 0;
}
Increment
Increment adalah suatu proses menaikkan (menambahkan) nilai dengan nilai 1.
Adapun operator dalam bahasa C yang digunakan untuk melakukan proses
tersebut adalah operator ++. Maka dari itu operator ++ ini disebut dengan operator
Modul Praktikum 2 – Operator
increment. Sebagai contoh apabila kita memiliki variabel x yang bertipe int dengan
nilai 10, maka setelah operasi ++x atau x++, maka nilai x akan bertambah satu, yaitu
menjadi 11.
Dalam bahasa C, increment terbagi lagi ke dalam dua bagian, yaitu pre-increment
dan post-increment. Berikut ini penjelasan dari masing-masing topik tersebut.
Pre-Increment
Pre-increment berarti menaikkan nilai yang terdapat pada sebuah variabel sebelum
nilai dari variabel tersebut diproses di dalam program. Operator ++ akan dianggap
sebagai pre-increment apabila dituliskan di depan nama variabel atau nilai yang
akan dinaikkan. Sebagai contoh, misalnya kita memiliki variabel x bertipe int
dengan nilai 10 dan di sini kita akan melakukan pemrosesan terhadap variabel
tersebut dengan cara menampilkan nilainya ke layar monitor. Apabila kita
melakukan operasi pre-increment, yaitu dengan menuliskan ++x, maka nilai x
akan dinaikkan terlebih dahulu sebelum nilai tersebut ditampilkan ke layar. Hal ini
menyebabkan nilai yang akan ditampilkan adalah 11. Untuk membuktikannya,coba
perhatikan program di bawahini.
Post-Increment
Post-increment berarti menaikkan nilai yang terdapat pada sebuah variabel setelah
nilai dari variabel tersebut diproses di dalam program. Pada post-increment
operator ++ ditulis setelah variabel atau nilai yang akan dinaikkan. Sebagai
contoh, misalkan kita memiliki variabel x yang bernilai 10, maka nilai x++ yang
akan ditampilkan di layar adalah 10 (bukan 11). Kenapa demikian? Hal ini
disebabkan karena nilai dari variabel x tersebut akan ditampilkan terlebih dahulu,
selanjutnya baru dinaikkan nilainya. Untuk lebih jelasnya, perhatikan kembali
program di bawah ini.
#include <stdio.h>
int main(void)
{
int x=10;
printf(“Nilai x awal \t= %d\n”, x);
printf(“Nilai x++ \t= %d\n”, x++);
printf(“Nilai x akhir \t= %d\n”, x);
return 0;
}
Modul Praktikum 2 – Operator
Decrement
Decrement merupakan kebalikan dari increment, yang merupakan proses
penurunan nilai dengan nilai 1. Decrement juga dibagi menjadi dua macam, yaitu
pre-decrement dan post-decrement. Namun di sini kita tidak akan membahas
tentang kedua jenis decrement tersebut karena konsepnya sama persis dengan pre-
increment dan post- increment. Untuk lebih memahaminya, berikut ini program
yang akan menunjukkan penggunaan operator decrement.
#include <stdio.h>
int main(void)
{
int x=10, y=10;
Operator Binary
Dalam ilmu matematika, operator binary adalah operator yang digunakan untuk
melakukan operasi yang melibatkan dua buah operand. Pada pembahasan ini, kita
akan mengelompokkan operator binary ini ke dalam empat jenis, yaitu operator
aritmetika, logika, relasional dan bitwise.
Operator Aritmatika
Operator aritmetika adalah operator yang berfungsi untuk melakukan operasi-
operasi aritmetika seperti penjumlahan, pengurangan, perkalian dan pembagian.
Berikut ini operator aritmetika yang terdapat dalam bahasa C.
Tabel 3. Operator Aritmatika
+ Penjumlahan 12 + 13 = 25
- Pengurangan 15 – 12 = 13
* Perkalian 12 * 3 = 36
/ Pembagian 10.0 / 3.0 = 3.3333
% Sisa bagi (modulus) 10 % 4 = 2
Agar Anda dapat lebih memahaminya, di sini dituliskan beberapa program yang
akan menunjukkan penggunaan dari masing-masing operator tersebut.
Menggunakan Operator Penjumlahan ("+")
Modul Praktikum 2 – Operator
#include <stdio.h>
int main(void)
{
int a=12, b=13;
int c;
c = a + b;
printf(“%d + %d = %d”, a, b, c);
return 0;
}
#include <stdio.h>
int main(void)
{
int a=25, b=12;
int c;
c = a - b;
printf(“%d - %d = %d”, a, b, c);
return 0;
}
#include <stdio.h>
int main(void)
{
int a=12, b=3;
int c;
c = a * b;
printf(“%d x %d = %d”, a, b, c);
return 0;
}
Dalam menggunakan operator /, kita harus memperhatikan tipe data dari operand
yang kita definisikan. Pasalnya, perbedaan tipe data akan menyebabkan hasil yang
berbeda pula. Apabila kita mendefinisikan operand dengan tipe data riil (float
atau double), maka hasilnya juga berupa data riil. Misalnya 10.0 / 3.0, maka
hasil yang akan didapatkan adalah 3.3333. Sedangkan apabila kita mendefinisikan
operand dengan tipe data bilangan bulat (int atau long), maka nilai yang
dihasilkan juga berupa bilangan bulat (tanpa memperdulikan sisa baginya).
Misalnya 10 / 3, maka hasil yang didapatkan adalah 3. Adapun nilai 1 yang
#include <stdio.h>
int main(void)
{
int a=10, b=3, c;
double x = 10.0, y = 3.0, z;
c = a / b;
z = x / y;
printf(“%d / %d \t\t = %d\n”, a, b, c);
printf(“%.1f / %.1f \t = %.4f\n”, x, y, z);
return 0;
}
Modul Praktikum 2 – Operator
merupakan sisa bagi dari operasi pembagian tersebut akan diabaikan oleh program.
Berikut ini contoh program yang akan membuktikan hal tersebut.
#include <stdio.h>
int main(void)
{
printf("%2d %s %d \t = %d\n", 10, "%", 3, (10 % 3));
printf("%2d %s %d \t = %d\n", 8, "%", 3, (8 % 3));
printf("%2d %s %d \t = %d\n", 15, "%", 4, (15 % 4));
return 0;
}
Operator Logika
Operator logika adalah operator digunakan di dalam operasi yang hanya dapat
menghasilkan nilai benar (true) dan salah (false). Nilai seperti ini disebut dengan nilai
boolean. Berbeda dengan bahasa pemrograman lain (misalnya Pascal), bahasa C tidak
menyediakan tipe data khusus untuk merepresentasikan nilai boolean tersebut. Dalam
bahasa C, nilai benar akan direpresentasikan dengan menggunakan nilai selain nol.
Namun, pada kenyataannya para programmer C umumnya menggunakan nilai 1 untuk
merepresentasikan nilai benar. Adapun nilai salah akan direpresentasikan dengan nilai
0. Untuk memudahkan dalam proses penulisan sintak, maka biasanya nilai-nilai
tersebut dijadikan sebagai makro dengan sintak berikut.
#define TRUE 1
#define FALSE 0
Adapun yang termasuk ke dalam operator logika dalam bahasa C adalah seperti
yang tampak dalam tabel berikut.
Tabel 4. Operator logika
|| OR (atau) 1 || 0 = 1
X Y X && Y
1 1 1
1 0 0
0 1 0
0 0 0
Berikut ini contoh program yang akan menunjukkan penggunaan operator &&.
#include <stdio.h>
int main(void)
{
printf(“1 && 1 = %d\n”, (1 && 1));
printf(“1 && 0 = %d\n”, (1 && 0));
printf(“0 && 1 = %d\n”, (0 && 1));
printf(“0 && 0 = %d\n”, (0 && 0));
return 0;
}
Operator OR ("||")
Operasi OR akan menghasilkan nilai salah apabila semua operand-nya bernilai salah,
selain itu operasi tersebut akan menghasilkan nilai benar. Berikut ini tabel yang
menyatakan hasil dari operasi OR.
Tabel 6. Tabel kebenaran operator OR ("||")
X Y X || Y
1 1 1
1 0 1
0 1 1
0 0 0
#include <stdio.h>
int main(void)
{
printf(“1 || 1 = %d\n”, (1 || 1));
printf(“1 || 0 = %d\n”, (1 || 0));
printf(“0 || 1 = %d\n”, (0 || 1));
printf(“0 || 0 = %d\n”, (0 || 0));
return 0;
}
Modul Praktikum 2 – Operator
X !X
1 0
0 1
Adapun contoh program yang akan menunjukkan hal tersebut adalah sebagai berikut.
#include <stdio.h>
int main(void)
{
printf(“!1 = %d\n”, (!1));
printf(“!0 = %d\n”, (!0));
return 0;
}
Operator Operasional
Operator relasional adalah operator yang digunakan untuk menentukan relasi atau
hubungan dari dua buah nilai atau operand. Operator ini terdapat dalam sebuah
ekspresi yang selanjutnya akan menentukan benar atau tidaknya ekspresi tersebut.
Berikut ini operator yang termasuk ke dalam operator relasional dalam bahasa C.
Operator ini pada umumnya digunakan untuk melakukan pengecekan terhadap
ekspresi di dalam blok pemilihan, yang baru akan kita bahas pada bab selanjutnya,
yaitu bab 4 – Kontrol Program. Namun sebagai gambaran bagi Anda, berikut ini
contoh program yang akan menunjukkan penggunaan salah satu dari operator di atas.
Tabel 8. Tabel operator operasional
Contoh
Operator Jenis Operasi
Penggunaan
== Sama dengan (8 == 8) = 1
#include <stdio.h>
int main(void)
{
int x;
printf(“Masukkan sebuah bilangan bulat : ”);
scanf(“%d”, &x);
if (x % 2 == 0 )
{
printf(“%d adalah bilangan genap”, x);
} else
{
printf(“%d adalah bilangan ganjil”, x);
}
return 0;
}
Operator Bitwise
Operator bitwise digunakan untuk menyelesaikan operasi-operasi bilangan dalam
bentuk biner yang dilakukan bit demi bit. Dengan kata lain, operator bitwise ini
berfungsi untuk melakukan pemanipulasian bit. Operasi ini merupakan hal vital
apabila program yang kita buat kan melakukan interaksi dengan perangkat keras
(hardware). Meskipun bahasa pemrograman lebih bersifat data-oriented, namun
perangkat keras masihlah bersifat bit-oriented. Ini artinya, perangkat keras
menginginkan input dan output data yang dilakukan terhadapnya tetap dalam bentuk
bit tersendiri.
Tabel 9. Tabel operator bitwise
Contoh
Operator Jenis Operasi
Penggunaan
& Bitwise AND 1 & 1 = 1
| Bitwise OR 1 | 0 = 1
^ Bitwise XOR (Exclusive OR) 1 ^ 1 = 0
~ Bitwise Complement (NOT) ~0 = 1
>> Shift right (geser kanan) 4 << 1 = 8
<< Shift left (geser kiri) 4 >> 1 = 2
Fungsi dari operator &, | dan ~ di atas sebenarnya sama dengan fungsi operator logika
&&, || dan !. Perbedaannya hanya operator bitwise ini melakukan operasinya bit demi
bit, sedangkan operator logika melakukan operasi pada nilai totalnya. Sebagai contoh
apabila kita melakukan operasi logika 7 || 8, maka hasil yang akan didapatkan adalah
1, pasalnya nilai 7 dan 8 akan dianggap sebagai nilai benar (true) sehingga operasi OR
Modul Praktikum 2 – Operator
tersebut juga akan menghasilkan nilai true yang direpresentasikan dengan nilai 1.
Namun, jika kita melakukan operasi bitwise 7 | 8, maka nilai 7 dan 8 tersebut akan
dikonversi ke dalam bilangan biner, setelah itu baru dilakukan operasi OR untuk setiap
bit-nya. Proses ini dapat kita representasikan dengan cara berikut.
Cara kerja dari operator & dan ~ juga sama seperti di atas. Untuk itu di sini kita tidak
akan membahas lebih detil tentang kedua operator tersebut. Adapun operator lain yang
perlu Anda ketahui di sini adalah operator ^ (bitwise XOR), >> (shift right) dan <<
(shift left). Penjelasan dari masing-masing operator tersebut dapat Anda lihat dalam
subbab di bawah ini.
Operasi XOR (exlusive OR) akan memberikan nilai benar apabila hanya terdapat satu
buah operand yang bernilai benar, selain itu akan menghasilkan nilai salah. Dengan
demikian, apabila kedua operand-nya bernilai benar, operasi ini tetap akan
menghasilkan nilai salah. Berikut ini tabel yang menunjukkan hasil dari operasi XOR.
Tabel 10. Tabel kebenaran XOR (^)
X Y X^Y
1 1 0
1 0 1
0 1 1
0 0 0
Sebagai contoh apabila kita ingin melakukan operasi 45 ^ 23, maka hasilnya adalah
58. Berikut ini proses yang menunjukkan operasi tersebut.
#include <stdio.h>
#define X 0x2D /* nilai 45 dalam bentuk heksadesimal */
#define Y 0x17 /* nilai 23 dalam bentuk heksadesimal */
int main(void)
{
printf(“%d ^ %d = %d”, (X ^ Y));
return 0;
}
Operator shift-right (geser kanan) ini digunakan untuk melakukan penggeseran bit ke
arah kanan sebanyak nilai yang didefinisikan. Apabila terdapat operasi X >> 3 berarti
melakukan penggeseran 3 bit ke kanan dari nilai X yang telah dikonversi ke dalam
bilangan biner. Adapun bentuk umum dari penggunaan operator >> adalah sebagai
berikut.
Untuk memudahkan Anda dalam menentukan hasil yang diberikan dari operasi ini,
ingatlah bahwa setiap proses pergeseran bit yang terjadi, operator >> akan membagi
suatu nilai dengan 2. Sebagai contoh 128 >> 1, maka hasil yang akan didapatkan
adalah 64. Sedangkan 128 >> 2 akan menghasilkan nilai 32, begitu seterusnya.
Berikut ini contoh program yang akan membuktikan hal tersebut.
#include <stdio.h>
#define X 0x80 /* nilai 128 dalam bentuk heksadesimal */
int main(void)
{
printf(“%d >> 1 = %d\n”, X, (X>>1));
printf(“%d >> 2 = %d\n”, X, (X>>2));
printf(“%d >> 3 = %d\n”, X, (X>>3));
printf(“%d >> 4 = %d\n”, X, (X>>4));
printf(“%d >> 5 = %d\n”, X, (X>>5));
printf(“%d >> 6 = %d\n”, X, (X>>6));
printf(“%d >> 7 = %d\n”, X, (X>>7));
return 0;
}
Berikut ini tabel yang akan mengilustrasikan proses yang terjadi dalam program di
atas.
Tabel 11. Tabel proses shift-right (">>")
X = 128 1 0 0 0 0 0 0 0 128
X = 128 >> 1 0 1 0 0 0 0 0 0 64
Modul Praktikum 2 – Operator
X = 128 >> 2 0 0 1 0 0 0 0 0 32
X = 128 >> 3 0 0 0 1 0 0 0 0 16
X = 128 >> 4 0 0 0 0 1 0 0 0 8
X = 128 >> 5 0 0 0 0 0 1 0 0 4
X = 128 >> 6 0 0 0 0 0 0 1 0 2
X = 128 >> 7 0 0 0 0 0 0 0 1 1
Operator shift-left (geser kiri) merupakan kebalikan dari operator >>, artinya di sini
kita melakukan pergeseran bit ke arah kiri sebanyak nilai yang didefinisikan. Berikut
ini bentuk umum penggunaan operator <<.
Dalam setiap pergeseran bit-nya, operator ini akan mengalikan suatu nilai dengan 2.
Misalnya 1 << 1, maka hasil yang akan didapatkan adalah 2 (berasal dari 1 x 2).
#include <stdio.h>
#define X 0x01 /* nilai 1 dalam bentuk heksadesimal */
int main(void)
{
printf(“%d << 1 = %d\n”, X, (X<<1));
printf(“%d << 2 = %d\n”, X, (X<<2));
printf(“%d << 3 = %d\n”, X, (X<<3));
printf(“%d << 4 = %d\n”, X, (X<<4));
printf(“%d << 5 = %d\n”, X, (X<<5));
printf(“%d << 6 = %d\n”, X, (X<<6));
printf(“%d << 7 = %d\n”, X, (X<<7));
return 0;
}
Untuk mengilustrasikan proses yang terjadi dalam program atas, perhatikanlah tabel
di bawah ini.
Tabel 12. Tabel operasi shift-left ("<<")
X = 1 << 4 0 0 0 1 0 0 0 0 16
X = 1 << 5 0 0 1 0 0 0 0 0 32
X = 1 << 6 0 1 0 0 0 0 0 0 64
X = 1 << 7 1 0 0 0 0 0 0 0 128
LATIHAN
1. Perhatikan contoh-contoh program pada pembahasan mengenai semua jenis
operator aritmatika. Ketiklah contoh-contoh progran tersebut menggunakan IDE
code::blocks amati kemudian tentukan output dari setiap contoh program tersebut.
2. Buatlah program untuk menyelesaikan operasi aritmatika berikut.
a. A + B – C
b. A * ((B – C) / D)
3. Berdasarkan contoh program dan tabel kebenaran untuk operator logika AND, OR
dan NOT, maka buatlah program untuk menentukan apakah operasi logika di
bawah ini bernilai 1 (TRUE) atau 0 (FALSE).
a. A && B || C
b. A’ ! ((B && C’) || D)
Modul Praktikum 3 – Kontrol Program
MODUL PRAKTIKUM 3
SELEKSI KONDISI (IF)
Setelah mempelajari mengenai variabel dan jenis-jenisnya, tipe data, operator serta
ekspresi yang telah dibahas pada bab sebelumnya, maka bahasan berikutnya yang
akan dipelajari adalah bagaimana cara melakukan seleksi kondisi terhadap
program di dalam bahasa C.
Pemilihan/Seleksi Kondisi
Dalam kehidupan sehari-hari, kadang kala kita disudutkan pada beberapa pilihan atau
harus memilih salah satu dari opsi yang ada dimana pilihan-pilihan tersebut didasarkan
atas kondisi tertentu. Dengan kata lain, pilihan tersebut hanya dapat dilakukan apabila
kondisi telah terpenuhi. Sebagai contoh, perhatikan statemen di bawah ini.
Jika Gunawan memiliki banyak uang, maka ia akan membeli mobil mewah
Pada statemen di atas, Gunawan akan dapat membeli mobil mewah hanya apabila ia
memiliki banyak uang. Hal ini berarti apabila ternyata Gunawan tidak memiliki banyak
uang (kondisi tidak terpenuhi), maka Gunawan pun tidak akan pernah membelimobil
mewah. Begitupun di dalam bahasa pemrograman, kita juga dapat melakukan
pemilihan statemen yang akan dieksekusi, yaitu dengan melakukan pengecekan
terhadap kondisi tertentu yang didefinisikan. Adapun kondisi yang dimaksud di dalam
program tidak lain adalah suatu ekspresi. Dalam bahasa C, pemilihan statemen dapat
dilakukan melalui dua buah cara, yaitu dengan menggunakan statemen if dan
statemen switch.
Statement if
Untuk memudahkan pembahasan, di sini kita akan mengklasifikasikan pemilihan
dengan menggunakan statemen if tersebut ke dalam tiga bagian, yaitu pemilihan yang
didasarkan atas satu kasus, dua kasus dan lebih dari dua kasus.
Satu Kasus
Pemilihan jenis ini adalah pemilihan yang paling sederhana karena hanya mengandung
satu kondisi yang akan diperiksa. Berikut ini gambar yang akan menunjukkan konsep
Pada Gambar 1. di atas terlihat bahwa mula-mula program akan mengecek kondisi
yang didefinisikan. Apabila kondisi bernilai benar (kondisi terpenuhi), maka program
akan melakukan statemen-statemen yang terdapat di dalam blok pengecekan. Namun
apabila ternyata kondisi bernilai salah (kondisi tidak terpenuhi), maka program akan
langsung keluar dari blok pengecekan dengan melanjutkan eksekusi terhadap
statemen-statemen berikutnya di luar blok pengecakan (jika ada).
Adapun bentuk umum atau kerangka dari blok pemilihan menggunakan statemen if
untuk satu kasus di dalam bahasa C adalah seperti yang tampak di bawah ini.
if (kondisi)
Statemen_yang_akan_dieksekusi;
Bentuk umum di atas berlaku apabila Anda hanya memiliki sebuah statemen di dalam
blok pengecekan. Namun, apabila Anda memiliki dua statemen atau lebih, maka
bentuk umumnya menjadi seperti di bawah ini.
if (kondisi) {
Statemen_yang_akan_dieksekusi1;
Statemen_yang_akan_dieksekusi2;
...
}
Perlu sekali untuk diperhatikan bahwa dalam bahasa C, kondisi harus diapit oleh
tanda kurung. Selain itu bahasa C juga tidak memiliki kata kunci then seperti yang
terdapat pada kebanyakan bahasa pemrograman lainnya, misalnya bahasa Pascal.
#include <stdio.h>
int main(void)
{
int x;
printf(“Masukkan sebuah bilangan bulat : ”); scanf(“%d”, &x);
if (x > 0)
printf(“\n%d adalah bilangan positif\n”, x);
Dari hasil di atas dapat kita lihat bahwa nilai x sama dengan 10 dan ekspresi (10
> 0) bernilai benar. Hal ini tentu menyebabkan statemen di dalam blok
pengecekan akan dieksekusi oleh program. Namun apabila Anda memasukkan
nilai x dengan nilai 0 atau negatif (misalnya –5), maka hasil yang akan diberikan
adalah sebagai berikut.
Sekarang, statemen di dalam blok pengecekan tidak ikut dieksekusi. Hal ini
disebabkan karena ekspresi (-5 > 0) bernilai salah sehingga program akan
langsung keluar dari blok pengecekan.
Sebagai contoh penggunaan statemen if, di sini kita akan membuat program untuk
menentukan apakah suatu tahun merupakan tahun kabisat atau bukan. Adapun
sintaknya adalah sebagai berikut.
#include <stdio.h>
int main(void)
{
long tahun;
printf(“Masukkan tahun yang akan diperiksa : ”);
scanf(“%ld”, &tahun);
return 0;
}
Dua Kasus
Bentuk pemilihan ini merupakan perluasan dari bentuk pertama, hanya saja di sini
didefinisikan pula statemen yang akan dilakukan apabila kondisi yang diperiksa
bernilai salah (tidak terpenuhi). Adapun cara yang digunakan untuk melakukan hal
tersebut adalah dengan menambahkan kata kunci else di dalam blok pengecekan. Hal
ini menyebabkan statemen untuk pemilihan untuk dua kasus sering dikenal dengan
statemen if-else. Berikut ini gambar yang akan menunjukkan konsep dari pemilihan
yang didasarkan atas dua kasus.
start
salah
kondisi
benar
finish
Pada Gambar 2. di atas terlihat jelas bahwa pada pemilihan untuk dua kasus, apabila
kondisi yang diperiksa tidak terpenuhi maka terlebih dahulu program akan
mengeksekusi sebuah (atau lebih) statemen sebelum program melanjutkan eksekusi ke
statemen-statemen berikutnya di luar atau setelah blok pengecekan.
Bentuk umum atau kerangka yang digunakan dalam bahasa C untuk melakukan
pemilihan dua kasus adalah sebagai berikut.
if (kondisi)
Statemen_jika_kondisi_benar; /* Ingat, harus menggunakan
tanda titik koma */
else
Statemen_jika_kondisi_salah;
Bentuk umum di atas dilakukan apabila statemen yang kita definisikan untuk sebuah
nilai kondisi tertentu (benar atau salah) hanya terdiri dari satu statemen. Namun apabila
kita akan mendefinisikan lebih dari satu statemen, maka bentuk umumnya adalah
sebagai berikut.
if (kondisi)
{ Statemen_jika_kondisi_benar1; Statemen_jika_kondisi_benar2;
…
} else
{ Statemen_jika_kondisi_salah1; Statemen_jika_kondisi_salah2;
…
}
#include <stdio.h>
int main(void)
{
int x;
printf(“Masukkan bilangan bulat yang akan diperiksa : ”);
scanf(“%d”, &x);
if (x % 2 == 0)
printf(“%d merupakan bilangan GENAP”, x);
else
printf(“%d merupakan bilangan GANJIL”, x);
return 0;
}
bilangan genap atau ganjil. Adapun sintak programnya adalah sebagai berikut.
Contoh hasil yang akan diberikan dari program tersebut adalah sebagai berikut.
start
finish
if (kondisi 1) { Statemen_jika_kondisi_1_benar;
…
} if else (kondisi 2){Statemen_jika_kondisi_2_benar;
…
}if else (kondisi 3){Statemen_jika_kondisi_3_benar;
…
}else {Statemen_jika_semua_kondisi_salah;}
Apabila dituliskan dalam bentuk program, maka sintaknya adalah seperti yang tertera
di bawah ini.
#include <stdio.h>
int main(void)
{
int suhu;
printf(“Masukkan besarnya suhu : ”); scanf(“%d”, suhu);
return 0;
}
Berikut ini contoh hasil yang akan diberikan dari program di atas adalah sebagai
berikut.
Statement switch
Statemen switch digunakan untuk melakukan pemilihan terhadap ekspresi atau
kondisi yang memiliki nilai-nilai konstan. Oleh karena itu, ekspresi yang didefinisikan
harus menghasilkan nilai yang bertipe bilangan bulat atau karakter. Untuk
mendefinisikan nilai-nilai konstan tersebut adalah dengan menggunakan kata kunci
case. Hal yang perlu Anda perhatikan juga dalam melakukan pemilihan dengan
menggunakan statamen switch ini adalah kita harus menambahkan statemen break
pada setiap nilai yang kita definisikan.
Untuk lebih memahaminya, coba Anda perhatikan bentuk umum dari statemen
switch di bawah ini.
}
… default:
{
}
}
Kata kunci default di atas berguna untuk menyimpan statemen alternatif, yang
akan dieksekusi apabila semua nilai yang didefinisikan tidak ada yang sesuai
dengan ekspresi ada.
Berikut ini contoh program yang akan menunjukkan penggunaan statemen switch
untuk melakukan suatu pemilihan nilai.
#include <stdio.h>
int main(void)
{
int nohari;
printf(“Masukkan nomor hari (1-7): ”); scanf(“%d”, &nohari);
switch (nohari)
{
case 1: printf(“Hari ke-%d adalah hari Minggu”, nohari);
break;
case 2: printf(“Hari ke-%d adalah hari Senin”, nohari);
break;
case 3: printf(“Hari ke-%d adalah hari Selasa”, nohari);
break;
case 4: printf(“Hari ke-%d adalah hari Rabu”, nohari);
break;
case 5: printf(“Hari ke-%d adalah hari Kamis”, nohari);
break;
case 6: printf(“Hari ke-%d adalah hari Jumat”, nohari);
break;
case 7: printf(“Hari ke-%d adalah hari Sabtu”, nohari);
break;
default: printf(“Nomor hari yang dimasukkan salah”);
}
return 0;
}
Program di atas berguna untuk menentukan nama hari dari nomor hari yang
dimasukkan. Adapun contoh hasil yang akan diberikan dari program di atas adalah
sebagai berikut.
Apabila kita ingin mendefinisikan satu blok statemen yang dapat digunakan untuk
beberapa nilai konstan, maka kita dapat menuliskan sintaknya seperti di bawah ini.
switch (ekspresi) {
case nilai1: case nilai2: case nilai3:
{
/* Statemen yang berlaku untuk nilai1, nilai2 dan nilai3 */
break;
}
case nilai4: case nilai5:
{
/* Statemen yang berlaku untuk nilai4 dan nilai5 */
break;
}
...
}
Untuk lebih jelasnya, di sini ini kita akan membuat program untuk menentukan
bulan tertentu masuk ke dalam caturwulan ke berapa. Sebelumnya kita asumsikan
bahwa bulan 1-4 (Januari sampai April) termasuk ke dalam caturwulan 1, bulan 5-
8 (Mei sampai Agustus) termasuk ke dalam caturwulan 2 dan bulan 9-12
(September sampai Desember) masuk ke dalam caturwulan 3.
#include <stdio.h>
int main(void)
{
int nobulan;
printf(“Masukkan nomor bulan (1-12) : ”); scanf(“%d”,
&nobulan);
switch (nobulan)
{
case 1: case 2: case 3: case 4:
printf(“Bulan %s termasuk ke dalam caturwulan 1”,
namabulan[nobulan-1]);
break;
case 5: case 6: case 7: case 8:
printf(“Bulan %s termasuk ke dalam caturwulan 2”,
namabulan[nobulan-1]);
break;
case 9: case 10: case 11: case 12:
printf(“Bulan %s termasuk ke dalam caturwulan 3”,
namabulan[nobulan-1]);
break;
default: printf(“Nomor bulan yang dimasukkan salah”);
}
return 0;
}
Apabila program di atas dijalankan dan kita memasukkan nomor bulan dengan nilai 1,
2, 3 atau 4 maka statemen yang akan dieksekusi adalah statamen yang didefinisikan
untuk blok nilai-nilai tersebut. Begitu juga dengan nilai 5, 6, 7 dan 8 serta nilai 9, 10,
11 dan 12. Berikut ini contoh hasil yang akan diberikan dari program di atas.
MODUL PRAKTIKUM 4
SELEKSI KONDISI (LOOPING)
Dalam bahasa C, terdapat tiga buah struktur pengulangan yang akan digunakan
sebagai kontrol dalam melakukan pengulangan proses, yaitu struktur for, while
dan do-while.
Setiap struktur yang ada masing-masing memiliki aturan tersendiri dan digunakan
dalam konteks yang berbeda. Kita harus bisa menentukan kapan sebaiknya kita
harus menggunakan struktur for, struktur while ataupun do-while. Untuk itu,
pada bagian ini kita akan membahas secara detil apa perbedaan dan penggunaan
dari masing-masing struktur tersebut. Hal ini juga bertujuan agar Anda dapat
mengimplementasikannya dengan benar ke dalam kasus-kasus program yang
Anda hadapi.
Struktur for
Struktur for ini digunakan untuk menuliskan jenis pengulangan yang banyaknya
sudah pasti atau telah diketahui sebelumnya. Oleh karena itu, di sini kita harus
melakukan inisialisai nilai untuk kondisi awal pengulangan dan juga harus menuliskan
kondisi untuk menghentikan proses pengulangan. Adapun bentuk umum dari
pendefinisian struktur for (untuk sebuah statemen) dalam bahasa C adalah sebagai
berikut.
Ekspresi1 di atas digunakan sebagai proses inisialisasi variabel yang akan dijadikan
sebagai pencacah (counter) dari proses pengulangan, dengan kata lain ekspresi ini akan
dijadikan sebagai kondisi awal.
Ekspresi2 digunakan sebagai kondisi akhir, yaitu kondisi dimana proses pengulangan
harus dihentikan. Perlu untuk diketahui bahwa pengulangan masih akan dilakukan
selagi kondisi akhir bernilai benar.
Berikut ini contoh untuk mengilustrasikan struktur pengulangan for yang telah
diterangkan di atas.
Untuk membuktikan hal tersebut, perhatikan contoh program di bawah ini dimana kita
akan menampilkan teks “Saya sedang belajar bahasa C” sebanyak 10 kali.
#include <stdio.h>
int main(void)
{
for (int j=0; j<10; j++)
{
printf(“Saya sedang belajar bahasa C\n”);
}
return 0;
Pengulangan yang dilakukan pada program di atas bersifat menaik sehingga kita
menggunakan increment. Kita juga dapat melakukan pengulangan tersebut secara
menurun, yaitu dengan sintak di bawah ini.
#include <stdio.h>
int main(void) {
for (int j=10; j>0; j--) {
printf(“Saya sedang belajar bahasa C\n”);
}
return 0;
}
Pada sintak di atas, mula-mula variabel j bernilai 10 dan setiap pengulangan dilakukan
menyebabkan variabel tersebut dikurangi satu. Hal ini disebabkan karena statemen
decrement j-- di atas. Dalam program tersebut, pengulangan baru akan dihentikan
ketika variabel j bernilai 0. Apabila dijalankan program di atas akan memberikan hasil
yang sama dengan program sebelumnya.
Indeks dari variabel yang digunakan sebagai nilai awal dalam struktur for tidak selalu
harus bernilai 0, artinya kita dapat memanipulasinya sesuai dengan keinginaan kita
(misalnya dengan nilai 1, 2, 3 ataupun lainnya).
Selain tipe int, kita juga dapat menggunakan variabel yang bertipe char sebagai
pencacah dalam proses pengulangan. Sebagai contoh apabila kita akan melakukan
pengulangan sebanyak 3 kali, maka kita dapat menuliskannya sebagai berikut.
#include <stdio.h>
int main(void)
{
for (char j=’A’; j<=’E’; j++)
{
printf(“%c = %d\n”, j, j);
}
return 0;
}
int a, b;
for (a=0, b=0; a<5; a++, b +=5)
{
...
}
int a, b;
b = 0;
for (a=0; a<5; a++)
{
...
b += 5; /* dapat ditulis dengan b = b + 5 */
}
#include <stdio.h>
int main(void) {
return 0;
}
#include <stdio.h>
int main(void)
{
int b=0;
for (int a=0, a < 5; a++)
{
printf(“Baris ke-%d : a = %d, b = %2d\n”, a+1, a, b);
b += 5;
}
return 0;
}
#include <stdio.h>
int main(void) {
int baris, kolom;
LATIHAN
Pertemuan ke-2
Pertemuan ke-3
Tampilan nilai .
MODUL PRAKTIKUM 4
SELEKSI KONDISI (LOOPING)
Dalam bahasa C, terdapat tiga buah struktur pengulangan yang akan digunakan
sebagai kontrol dalam melakukan pengulangan proses, yaitu struktur for, while
dan do-while.
Setiap struktur yang ada masing-masing memiliki aturan tersendiri dan digunakan
dalam konteks yang berbeda. Kita harus bisa menentukan kapan sebaiknya kita
harus menggunakan struktur for, struktur while ataupun do-while. Untuk itu,
pada bagian ini kita akan membahas secara detil apa perbedaan dan penggunaan
dari masing-masing struktur tersebut. Hal ini juga bertujuan agar Anda dapat
mengimplementasikannya dengan benar ke dalam kasus-kasus program yang
Anda hadapi.
Struktur for
Struktur for ini digunakan untuk menuliskan jenis pengulangan yang banyaknya
sudah pasti atau telah diketahui sebelumnya. Oleh karena itu, di sini kita harus
melakukan inisialisai nilai untuk kondisi awal pengulangan dan juga harus menuliskan
kondisi untuk menghentikan proses pengulangan. Adapun bentuk umum dari
pendefinisian struktur for (untuk sebuah statemen) dalam bahasa C adalah sebagai
berikut.
Ekspresi1 di atas digunakan sebagai proses inisialisasi variabel yang akan dijadikan
sebagai pencacah (counter) dari proses pengulangan, dengan kata lain ekspresi ini akan
dijadikan sebagai kondisi awal.
Ekspresi2 digunakan sebagai kondisi akhir, yaitu kondisi dimana proses pengulangan
harus dihentikan. Perlu untuk diketahui bahwa pengulangan masih akan dilakukan
selagi kondisi akhir bernilai benar.
Berikut ini contoh untuk mengilustrasikan struktur pengulangan for yang telah
diterangkan di atas.
Untuk membuktikan hal tersebut, perhatikan contoh program di bawah ini dimana kita
akan menampilkan teks “Saya sedang belajar bahasa C” sebanyak 10 kali.
#include <stdio.h>
int main(void)
{
for (int j=0; j<10; j++)
{
printf(“Saya sedang belajar bahasa C\n”);
}
return 0;
Pengulangan yang dilakukan pada program di atas bersifat menaik sehingga kita
menggunakan increment. Kita juga dapat melakukan pengulangan tersebut secara
menurun, yaitu dengan sintak di bawah ini.
#include <stdio.h>
int main(void) {
for (int j=10; j>0; j--) {
printf(“Saya sedang belajar bahasa C\n”);
}
return 0;
}
Pada sintak di atas, mula-mula variabel j bernilai 10 dan setiap pengulangan dilakukan
menyebabkan variabel tersebut dikurangi satu. Hal ini disebabkan karena statemen
decrement j-- di atas. Dalam program tersebut, pengulangan baru akan dihentikan
ketika variabel j bernilai 0. Apabila dijalankan program di atas akan memberikan hasil
yang sama dengan program sebelumnya.
Indeks dari variabel yang digunakan sebagai nilai awal dalam struktur for tidak selalu
harus bernilai 0, artinya kita dapat memanipulasinya sesuai dengan keinginaan kita
(misalnya dengan nilai 1, 2, 3 ataupun lainnya).
Selain tipe int, kita juga dapat menggunakan variabel yang bertipe char sebagai
pencacah dalam proses pengulangan. Sebagai contoh apabila kita akan melakukan
pengulangan sebanyak 3 kali, maka kita dapat menuliskannya sebagai berikut.
#include <stdio.h>
int main(void)
{
for (char j=’A’; j<=’E’; j++)
{
printf(“%c = %d\n”, j, j);
}
return 0;
}
int a, b;
for (a=0, b=0; a<5; a++, b +=5)
{
...
}
int a, b;
b = 0;
for (a=0; a<5; a++)
{
...
b += 5; /* dapat ditulis dengan b = b + 5 */
}
#include <stdio.h>
int main(void) {
return 0;
}
#include <stdio.h>
int main(void)
{
int b=0;
for (int a=0, a < 5; a++)
{
printf(“Baris ke-%d : a = %d, b = %2d\n”, a+1, a, b);
b += 5;
}
return 0;
}
#include <stdio.h>
int main(void) {
int baris, kolom;
Struktur while
Struktur pengulangan while ini kondisi akan diperiksa di bagian awal. Hal ini tentu
menyebabkan kemungkinan bahwa apabila ternyata kondisi yang kita definisikan tidak
terpenuhi (bernilai salah), maka proses pengulangan pun tidak akan pernah dilakukan.
Adapun bentuk umum dari struktur while adalah seperti yang tampak di bawah ini.
while (ekspresi)
{
Statemen_yang_akan_diulang1;
Statemen_yang_akan_diulang2;
…
}
Sama seperti pada struktur for, struktur pengulangan jenis ini juga memerlukan suatu
inisialisasi nilai pada variabel yang akan digunakan sebagai pencacah, yaitu dengan
menuliskannya di atas blok pengulangan. Selain itu kita juga harus melakukan
penambahan ataupun pengurangan terhadap nilai dari variabel pencacah di dalam blok
pengulangan tersebut. Hal ini bertujuan untuk menghentikan pengulangan sesuai
dengan kondisi yang didefinisikan. Sebagai contoh apabila kita ingin melakukan
pengulangan proses sebanyak 5 kali, maka kita akan menuliskannya sebagai berikut.
Struktur do-while
Berbeda dengan struktur while dimana kondisinya terletak di awal blok pengulangan,
pada struktur do-while kondisi diletakkan di akhir blok pengulangan. Hal ini
menyebabkan bahwa statemen yang terdapat di dalam blok pengulangan ini pasti akan
dieksekusi minimal satu kali, walaupun kondisinya bernilai salah sekalipun. Maka dari
itu struktur do-while ini banyak digunakan untuk kasus-kasus pengulangan yang tidak
mempedulikan benar atau salahnya kondisi pada saat memulai proses pengulangan.
Adapun bentuk umum dari struktur pengulangan do-while adalah seperti yang tertulis
di bawah ini.
do
{
Statemen_yang_akan_diulang;
…
} while (ekspresi); /* Ingat tanda semicolon (;) */
Mungkin bagi Anda yang merupakan programmer pemula akan merasa bingung untuk
membedakan struktur pengulangan while dan do-while. Maka dari itu, perhatikan
dulu dua buah contoh program berikut ini.
#include <stdio.h>
int main(void) {
int j;
printf("Statemen sebelum blok pengulangan\n");
j = 10;
while (j < 5) {
printf("Statemen di dalam blok pengulangan\n");
j++;
}
printf("Statemen setelah blok pengulangan\n");
return 0;
}
#include <stdio.h>
int main(void) {
int j;
printf("Statemen sebelum blok pengulangan\n");
j = 10;
do {
printf("Statemen di dalam blok pengulangan\n");
j++;
} while (j < 5);
printf("Statemen setelah blok pengulangan\n");
return 0;
}
Statemen Peloncatan
Statemen peloncatan pada umumnya digunakan dalam sebuah proses pengulangan,
yang menentukan apakah pengulangan akan diteruskan, dihentikan atau dipindahkan
ke statemen lain di dalam program. Dalam bahasa C, terdapat tiga buah kata kunci
yang digunakan untuk melakukan proses peloncatan tersebut, yaitu break, continue
dan goto.
#include <stdio.h>
if (x <= 1) {
prima = 0; /* apabila x 1 maka prima bernilai 0
(false) */
} else {
for (i=2; i<=(x/2); i++) {
if (x % i == 0) {
prima = 0; /* prima bernilai false */
break; /* menghentikan proses pengulangan */
}
}
}
Pada program di atas, apabila dalam proses pengulangan kita telah mengeset nilai
variabel prima menjadi 0 (false), maka kita tidak perlu lagi untuk melanjutkan
proses pengulangan, karena bilangan yang diperiksa sudah pasti bukan merupakan
bilangan prima. Dengan demikian apabila kita masih melanjutkan proses
pengulangan maka hal tersebut dapat dikatakan sebagai hal yang sia-sia. Oleh
karena itu, pada kasus ini kita harus menambahkan statemen break untuk
menghentikan pengulangan tersebut.
1
0
Pada program di atas terlihat jelas bahwa penggunaan statemen goto akan
menyebabkan eksekusi program akan langsung berpindah atau meloncat ke label
yang telah didefinisikan. Dalam hal ini, karena label didefinisikan di luar blok
pengulangan maka proses peloncatan tersebut secara otomatis akan menyebabkan
terhentinya proses pengulangan yang sedang berlangsung.
LATIHAN
1. Buatlah deret bilangan urut untuk rentang di bawah ini menggunakan perulangan
for, while, dan do-while.
a. 1 – 10
b. 1 – 100
c. 10 – 20
d. 50 – 75
e. 90 – 115
2. Buatlah sebuah program menggunakan perintah peruangan for, while, dan do-
while untuk mencetak deret bilanga ganjil dan genap sekaligus dalam 2 baris
berbeda jika nilai awal dan nilai akhir tidak ditentukan dari program tetapi
diinputkan secara manual dari console (layar cmd).
3. Buatlah sebuah program untuk menampilkan keluaran berikut menggunakkan
perintah perulangan for, while, dan do-while.
a. * b. *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
4. Buatlah sebuah program menggunakan printah for, while, dan do-while untuk
menentukan IPS semester berjalan dari 3 mata kuliah yang diinputkan berulang
secara manual dengan aturan sebagai berikut.
Tampilan input informasi mata kuliah dan nilai.
Mata kuliah ke-1
MODUL PRAKTIKUM 5
FUNGSI
Menurut definisinya, fungsi adalah suatu blok program yang digunakan untuk
melakukan proses-proses tertentu. Sebuah fungsi dibutuhkan untuk menjadikan
program yang akan kita buat menjadi lebih modular dan mudah untuk dipahami
alurnya. Dengan adanya fungsi, maka kita dapat mengurangi duplikasi kode
program sehingga performa dari program yang kita buat pun akan meningkat.
Dalam bahasa C, sebuah program terdiri atas fungsi-fungsi, baik yang
didefinisikan secara langsung di dalam program maupun yang disimpan di dalam
file lain (misalnya file header). Satu fungsi yang pasti terdapat dalam program
yang ditulis menggunakan bahasa C adalah fungsi main(). Fungsi tersebut
merupakan fungsi utama dan merupakan fungsi yang akan dieksekusi pertama kali.
Dalam bahasa C, fungsi terbagi menjadi dua macam, yaitu fungsi yang
mengembalikan nilai (return value) dan fungsi yang tidak mengembalikan nilai.
Fungsi yang tidak mengembalikan nilai tersebut dinamakan dengan void function.
Bagi Anda yang sebelumnya pernah belajar bahasa Pascal, void function ini serupa
dengan procedure yang terdapat di dalam bahasa Pascal. Gambar di bawah ini
menerangkan bagaimana kompilator C membaca fungsi-fungsi yang didefiniskan
di dalam program secara berurutan sesuai dengan waktu pemanggilannya.
Mula-mula fungsi main() akan dieksekusi oleh kompilator. Oleh karena fungsi
main() tersebut memanggil Fungsi1(), maka kompilator akan mengeksekusi
Fungsi1(). Dalam Fungsi1() juga terdapat pemanggilan Fungsi3(), maka
kompilator akan mengeksekusi Fungsi3() dan kembali lagi mengeksekusi baris
Namun, apabila Anda ingin mendefinisikan nilai kembalian tersebut dengan tipe
void, maka seharusnya Anda menggunakan fungsi exit() yang dapat berguna
untuk mengembalikan nilai ke sistem operasi (sama seperti halnya return).
Adapun parameter yang dilewatkan ke fungsi exit() ini ada dua, yaitu:
1. Nilai 0 (EXIT_SUCCESS), yaitu menghentikan program secara normal
2. Nilai 1 (EXIT_FAILURE), yaitu menghentikan program secara tidak normal
void Tulis10Kali(void) {
int j;
for (j=0; j<10; j++) {
printf(“Saya sedang belajar bahasa C”);
}
}
Adapun contoh program lengkap yang akan menggunakan fungsi tersebut adalah
seperti yang tertulis di bawah ini.
#include <stdio.h>
Sebagai contoh, di sini kita akan membuat fungsi sederhana yang berguna untuk
menghitung nilai luas bujursangkar. Adapun sintak untuk pendefinisiannya adalah
sebagai berikut.
int main(void)
{ int S, Luas;
return 0;
}
Jenis Parameter
Dalam dunia pemrograman dikenal tiga jenis parameter, yaitu parameter masukan,
keluaran dan masukan/keluaran. Untuk memahami perbedaan dari setiap jenis
parameter, di sini kita akan membahasnya satu per satu.
Parameter Masukan
Parameter masukan adalah parameter yang digunakan untuk menampung nilai
data yang akan dijadikan sebagai masukan (input) ke dalam fungsi. Artinya,
sebuah fungsi dapat menghasilkan nilai yang berbeda tergantung dari nilai
parameter yang dimasukkan pada saat pemanggilan fungsi tersebut. Berikut ini
contoh program yang akan menunjukkan kegunaan dari parameter masukan.
Parameter Keluaran
Kebalikan dari parameter masukan, parameter keluaran adalah parameter yang
digunakan untuk menampung nilai kembalian / nilai keluaran (output) dari suatu
proses. Umumnya parameter jenis ini digunakan di dalam fungsi yang tidak
mempunyai nilai balik. Untuk lebih memahaminya, perhatikan contoh program di
bawah ini yang merupakan modifikasi dari program sebelumnya.
Parameter Masukan/Keluaran
Selain parameter masukan dan keluaran, terdapat parameter jenis lain, yaitu
parameter masukan/keluaran dimana parameter tersebut mempunyai dua buah
kegunaan, yaitu sebagai berikut:
Pertama parameter ini akan bertindak sebagai parameter yang menampung nilai
masukan.
Setelah itu, parameter ini akan bertindak sebagai parameter yang menampung
nilai keluaran.
/* Fungsi Utama */
int main(void) {
int Bilangan;
printf(“Masukkan sebuah bilangan bulat : ”);
scanf(“%d”, &Bilangan);
return 0;
}
Seperti yang kita lihat pada hasil program di atas bahwa nilai dari variabel
Bilangan tetap bernilai 10 walaupun kita telah memanggil fungsi TambahSatu().
Hal ini disebabkan karena variabel Bilangan dan variabel X merupakan dua
variabel yang tidak saling berhubungan dan menempati alamat memori yang
berbeda sehingga yang terjadi hanyalah proses penyalinan (peng-copy-an) nilai
dari variabel Bilangan ke variabel X. Dengan demikian, perubahan nilai variabel
X tentu tidak akan mempengaruhi nilai variabel Bilangan.
Agar dapat lebih memahami materi ini, di sini kita akan menuliskan kembali kasus
di atas ke dalam sebuah program. Namun, sekarang kita akan melakukannya
dengan menggunakan cara pass by reference.
#include <stdio.h>
/* Fungsi Utama */
int main(void) {
int Bilangan;
printf(“Masukkan sebuah bilangan bulat : ”);
scanf(“%d”, &Bilangan);
return 0;
}
Rekursi
Rekursi adalah proses pemanggilan fungsi oleh dirinya sendiri secara berulang.
Istilah ‘rekursi’ sebenarnya berasal dari bahasa Latin ‘recursus’, yang berarti
‘menjalankan ke belakang’. Rekursi digunakan untuk penyederhanaan algoritma
dari suatu proses sehingga program yang dihasilkan menjadi lebih efesien. Pada
bagian ini kita akan mempelajarinya langsung melalui contoh-contoh program.
numerik yang tidak dapat diubah. Berikut ini contoh implementasi kasus tersebut ke
dalam sebuah program.
#include <stdio.h>
int main(void) {
int bilangan;
printf(“Masukkan bilangan yang akan dihitung : ”);
scanf(“%d”, &bilangan);
printf(“%d! = %d”, bilangan, Faktorial(bilangan));
return 0;
}
#include <stdio.h>
int main(void) {
int B, N;
printf(“Masukkan bilangan basis : ”); scanf(“%d”, &B);
printf(“Masukkan bilangan eksponen : ”); scanf(“%d”, &N);
printf(“%d^%d = %d”, B, N, Pangkat(B, N));
return 0;
}
Pangkat(2, 5) = 2 * Pangkat(2, 4)
Pangkat(2, 4) = 2 * Pangkat(2, 3)
Pangkat(2, 3) = 2 * Pangkat(2, 2)
Pangkat(2, 2) = 2 * Pangkat(2, 1)
Pangkat(2, 1) = 2 * Pangkat(2, 0)
Pangkat(2, 0) =1
Pangkat(2, 1) =2*1
Pangkat(2, 2) =2*2
Pangkat(2, 3) =2*4
Pangkat(2, 4) =2*8
Pangkat(2, 5) = 2 * 16
= 32
Adapun sintak program untuk melakukan hal tersebut adalah sebagai berikut.
#include <stdio.h>
void DesimalKeBiner(int n) {
if (n>1) {
DesimalKeBiner(n/2);
}
printf("%d", n%2);
}
int main(void)
{
int a;
printf("Masukkan bilangan desimal yang akan dikonversi : ");
scanf("%d",&a);
printf(“%d dalam biner : ”, a)
DesimalKeBiner(a);
return 0;
}
LATIHAN
1. Buatlah program untuk menyelesaikan perhitungan aritmatika di bawah ini
dimana setiap proses yang dikerjakan diwakilkan oleh sebuah fungsi dengan
nilai balik yang memiliki 2 variabel.
X = (A + B) * ((C – D) / E)