Tutorial Belajar C
Tutorial Belajar C
Tidak ketinggalan juga akan dibahas tentang pengertian Compiler, Linker dan
IDE. Ketiga istilah ini akan sering kita temui saat mempelajari sebuah bahasa
pemrograman.
Tugas yang sama ini akan lebih efektif jika dipisahkan dari program utama dan
dirancang menjadi sebuah fungsi atau function.
Secara sederhana, fungsi atau function adalah kode program yang dirancang untuk
menyelesaikan sebuah tugas tertentu, dan merupakan bagian dari program utama. Ketika di
sadur ke dalam bahasa indonesia, function ini di sebut juga sebagai fungsi.
Pada bagian ini kita akan membahas cara membuat function di C, termasuk juga
mempelajari perbedaan parameter dengan argumen, dan cara mengembalikan
nilai function dengan perintah return.
Akan tetapi, hal ini juga memiliki kelemahan. Bahasa C relatif sederhana dan
tidak memiliki fitur-fitur modern seperti garbage collection dan dynamic typing.
C adalah portable language
Maksudnya, bahasa pemrograman C bisa di-compile ulang supaya berjalan di
berbagai sistem operasi tanpa perlu mengubah kode-kode yang ada. Aplikasi
yang dibuat di Windows dengan bahasa C, bisa dipindahkan ke Linux dengan
sedikit atau tanpa modifikasi.
C merupakan “induk” dari bahasa pemrograman modern
Bahasa pemrograman C banyak menginspirasi bahasa pemrograman lain,
seperti C++, C#, Objective C, PHP, JAVA, JavaScript dan masih banyak lagi.
Dengan mempelajari bahasa C, anda akan familiar dan lebih mudah saat
berpindah ke bahasa pemrograman lain yang merupakan turunan dari bahasa
C.
Namun ini bukan berarti C tidak bermanfaat. Seperti yang saya singgung di
keunggulan bahasa C, C merupakan “induk” dari berbagai bahasa pemrograman
modern. Dengan mempelajari C, anda juga mempelajari dasar dari pemrograman.
Ibarat sedang membangun rumah, apa yang akan dipelajari disini barulah cara
mengaduk semen, cara menyusun bata dan cara membuat pondasi.
“Rumahnya” nanti akan lebih cepat dibuat menggunakan bahasa pemrograman
yang lebih modern.
Jika anda ingin membuat aplikasi yang siap pakai dan memiliki tampilan modern,
bisa langsung ke bahasa “visual” seperti Visual Basic, Visual C++, HTML,
atau PHP.
Alasan lain untuk mulai belajar bahasa C adalah sebagai persiapan apabila
sedang berkuliah di jurusan komputer, atau ingin masuk ke jurusan komputer.
Karena hampir selalu akan ketemu bahasa pemrograman C di awal-awal kuliah,
dimana bahasa C, Pascal, dan C++ banyak dipakai sebagai bahasa pemrograman
untuk belajar dasar algoritma.
Setelah membahas pengertian bahasa C, keunggulannya dan alasan untuk
mempelajari bahasa C, berikutnya kita akan lihat bagaimana sejarah dan
perkembangan dari bahasa C yang sudah berumur 45 tahun.
Terdapat beberapa versi ANSI C yang ditandai dengan tahun saat standar
tersebut dirilis:
C89: Standar bahasa C pertama yang dirilis oleh ANSI pada tahun 1989. Versi ini
dikenal sebagai C89.
C99: Pada tahun 1999, ANSI menambahkan beberapa fitur baru ke dalam bahasa
C, seperti inline functions, beberapa tipe data baru dan flexible array-members. Versi
ini dikenal sebagai C99.
C11: Sesuai dengan namanya, standar C11 diperbaharui pada tahun 2011.
Terdapat penambahan fitur-fitur baru, seperti macros, atomic operations,
dan anonymous structures yang tidak terdapat di C99.
C18: Standar ini dirilis pada bulan Juni 2018. Tidak ada penambahan fitur baru jika
dibandingkan C11, namun berisi perbaikan bug dan error yang ada di standar
C18.
ANSI C18 merupakan versi paling baru, namun karena masih sangat baru
(hanya beda beberapa bulan sejak update artikel ini di Agustus 2018), akan
butuh waktu agar semua compiler C mendukungnya. Karena itu jika anda
mencari compiler C, boleh memilih yang menggunakan standar C11 sambil
menunggu update ke C18.
Dalam tutorial kali ini, kita telah mengenal sejarah singkat tentang sistem
operasi UNIX serta bahasa pemrograman C. Saya juga beberapa kali menulis
tentang compiler C. Apa sebenarnya maksud dari compiler ini? Kita akan bahas
dalam tutorial selanjutnya dalam Pengertian Compiler, Linker dan IDE.
Sumber:
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Unix
https://en.wikipedia.org/wiki/Bell_Labs
https://en.wikipedia.org/wiki/PHP
https://www.programiz.com/c-programming
Pengertian Compiler
Compiler adalah aplikasi yang berfungsi “membaca dan menerjemahkan” bahasa
pemrograman komputer (kode program) untuk menghasilkan sebuah program.
Seperti yang nantinya kita praktekkan, bahasa C berisi instruksi-instruksi yang
ditulis dalam kode khusus. Contoh kode tersebut adalah: printf(“Hello World”).
Compiler akan membaca perintah ini dan menghasilkan sebuah file exe.
Dengan kata lain, Compiler Bahasa C adalah program yang dibutuhkan untuk
memproses teks bahasa C untuk menjadi sebuah aplikasi.
Dimana bisa didapat compiler bahasa C?
Terdapat banyak compiler C. Daftar lengkapnya bisa dilihat ke List of compilers
bahasa pemrograman C.
Yang cukup terkenal untuk sistem operasi Windows adalah:
MinGW
Turbo C
Cygwin
Visual C++
Code::Blocks
Pengertian Linker
Dalam pembahasan mengenai pengertian compiler sebelum ini, saya menulis
bahwa compiler akan memproses bahasa pemrograman menjadi sebuah
aplikasi. Well… itu adalah pengertian yang di sederhanakan.
Dalam teori pemrograman, proses dari sebuah teks kode program menjadi
aplikasi melibatkan beberapa langkah. Diagram berikut merangkum proses yang
terjadi:
Diagram Compiler dan Linker Bahasa Pemrograman C
Pertama kali, kita membuat sebuah kode program dalam bahasa C. Kode
program ini (dikenal juga dengan sebutan source code) bisa dibuat menggunakan
aplikasi teks editor biasa seperti Notepad. Khusus untuk bahasa pemrograman C,
source code harus di simpan sebagai dengan akhiran file *.c,
seperti hello_world.c, aplikasiku.c, luas_segitiga.c, dll.
Agar komputer bisa mengerti kode C yang sudah dibuat, source code tadi
selanjutnya “di translate” menjadi bahasa mesin (machine language). Proses inilah
yang dilakukan oleh compiler. Compiler juga memeriksa apakah kode program
yang ditulis mengandung error atau tidak.
Apabila tidak ditemukan error, compiler akan membuat sebuah object files yang
berisi object code. Di dalam object file inilah instruksi dalam bahasa mesin
disimpan. Untuk kebanyakan compiler C, object file ini akan
berakhiran *.obj dengan nama yang sama dengan source code.
Karena sebelumnya saya memiliki file hello_world.c, setelah di compile akan
terdapat file hello_world.obj.
Langkah terakhir diserahkan kepada linker. Tugas dari linker adalah
menggabungkan berbagai library external dengan object file untuk menghasilkan
sebuah program.
Seperti yang akan kita pelajari nanti, kode program C biasanya butuh file library
external. Sebagai contoh, untuk menampilkan teks ke layar dalam bahasa C
perintahnya adalah printf(“Hello World”). Untuk bisa memproses
perintah printf(), C butuh sebuah file external, yakni stdio.h.
Linker-lah yang akan menggabungkan hello_world.obj dengan stdio.h. Hasil
akhirnya berupa sebuah program berextension *.exe. Karena file source code
saya buat sebagai hello_world.c, file programnya akan bernama hello_world.exe.
Dengan men-double-klik file hello_world.exe, program kita sudah langsung
berjalan.
Compiler + Linker
Terlihat dari diagram diatas bawah proses compiler dan linker dibuat terpisah.
Akan tetapi aplikasi compiler modern biasanya sudah menggabungkan kedua
langkan ini dalam sekali jalan.
Ketika anda men-klik tombol “compile”, file .exe sudah langsung terbentuk, tanpa
harus menjalankan proses compile dan link secara terpisah.
Pengertian IDE
Istilah terakhir yang akan kita bahas adalah IDE. IDE merupakan singkatan
dari Integrated Development Environment. IDE adalah aplikasi yang
menggabungkan teks editor, compiler dan linker dalam 1 aplikasi. Kadang
ditambah juga dengan sebuah debugger, yakni fitur untuk menampilkan
kesalahan dari kode program.
Sebuah IDE sangat memudahkan proses pembuatan program, karena kita
hanya perlu membuka 1 aplikasi saja.
Setelah membahas pengertian compiler, linker, serta IDE, kita sudah siap untuk
menginstall IDE Code::Blocks, inilah yang akan saya bahas dalam tutorial
belajar bahasa pemrograman C selanjutnya: Download dan Install Code::Blocks.
Klik Tombol “Install” dan proses instalasi akan berlangsung beberapa saat.
Proses Instalasi Code::Blocks Sedang Berlangsung
Setelah proses instalasi selesai, akan tampil jendela konfirmasi “Do you want to
run Code::Blocks now?” Klik Yes agar setelah proses instalasi,
IDE Code::Blocks langsung tampil.
Tampilan Code::Block 20
Sampai disini, aplikasi Code::Blocks sudah sukses terinstall dan siap untuk
digunakan.
Apabila anda mendapati jendela tambahan, pilih saja settingan default, misalnya
pada saat memilih compiler yang diinstall (GNU CCG Compiler) dan File
Association.
Setelah itu pilih tab “Toolchain executables” (1).dan pastikan kotak teks “Compiler’s
installation directory” berisi “C:\Program Files\CodeBlocks\MinGW” (2) seperti
gambar di bawah ini:
Jika kolom ini berisi alamat lain atau kosong, klik tombol “Auto-detect” agar
Code::Block bisa mencari compiler bahasa C secara otomatis.
Jika anda menggunakan aplikasi Code::Block versi lama, bisa saja kotak ini berisi
alamat C:\Program Files (x86)\CodeBlocks\MinGW. Itu juga tidak masalah karena di versi
sebelumnya, folder instalasi Code::Block ada di C:\Program Files (x86)\CodeBlocks\
Setelah compiler atau IDE Code::Blocks sukses diinstall, kita sudah bisa langsung
praktek cara menulis kode program bahasa C. Inilah yang akan dibahas dalam
lanjutan belajar bahasa pemrograman C di Duniailkom.
Tampilan Code::Blocks memang cukup “njelimet”, tapi anda tidak perlu paham
semua menu yang ada. Kita hanya akan menggunakan beberapa menu yang
penting-penting saja.
Untuk membuat sebuah file baru, klik menu File -> New -> Empty File, atau bisa
juga dengan menekan kombinasi tombol CRTL + SHIFT + N.
Di bagian tengah Code::Blocks akan tampil sebuah file teks kosong. Disinilah kita
akan menulis kode program bahasa C nantinya.
Agar bisa langsung praktek menulis sebuah file bahasa C, silahkan ketik kode
program berikut ke dalam Code::Blocks:
1 #include <stdio.h>
2 int main(void)
3 {
4 printf("Hello, World!\n");
5 return 0;
}
6
Anda bisa abaikan maksud dari kode program diatas untuk sementara. Kita akan
membahasnya dalam tutorial-tutorial selanjutnya. Inti dari kode program ini
adalah menampilkan sebuah teks “Hello, World!”.
Pastikan anda mengetik kode program sama persis dengan yang saya tulis diatas. Salah
satu huruf atau satu karakter saja yang kurang, kode program akan error. Untuk
amannya silahkan copy paste kode tersebut ke dalam editor Code::Block.
Sesaat kemudian akan tampil jendela Save file. Anda bebas ingin menyimpan file
ini di mana saja. Karena saya sudah menyiapkan folder D:\belajar_c, maka saya
akan menyimpannya di folder ini.
Save file tersebut sebagai hello_world.c. Khusus untuk bahasa pemrograman C,
nama file tersebut harus disimpan dengan akhiran *.c. Tentu saja anda juga
boleh menggunakan nama lain, sepanjang
berakhiran *.c seperti duniailkom.c, andi.c, atau punyaku.c
Ketika file sudah di save dan tampilan kembali ke editor Code::Blocks, kode
program yang sudah kita tulis sebelumnya akan berwarna. Inilah fitur syntax
highlighting dari Code::Blocks.
IDE Code::Blocks akan memberi warna berbeda untuk setiap kode program
bahasa C. Dengan demikian, jika terdapat salah ketik (atau salah tulis kode
program), warna teks yang dihasilkan juga akan berbeda.
Untuk memastikan, anda bisa membuka Windows Explorer dan cari apakah
file hello_world.c sudah ada di folder D:\belajar_c
Membuka File Kode Program Bahasa C
Sebagai latihan tambahan, mari coba membuka file hello_world.c jika
aplikasi Code::Blocks sudah ditutup.
Silahkan tutup aplikasi Code::Blocks, kemudian buka kembali. Kode program
yang baru saja kita ketik sudah tidak tampil. Untuk membukanya, silahkan klik
menu File -> Open, atau bisa juga diakses dengan menekan tombol CRTL+O.
Di jendela yang tampil, cari file hello_world.c, kemudian klik tombol Open.
Se
karang, file kode program bahasa C sudah kembali terbuka.
Sampai disini kita telah membuat sebuah file kode program dalam bahasa C.
Dalam tutorial berikutnya file kode program ini akan di-compile untuk
menghasilkan program yang sebenarnya: Cara Mencompile dan Membuat File
exe Bahasa Pemrograman C.
Dalam tutorial sebelumnya, kita telah mempelajari cara menulis kode program
dalam bahasa pemrograman C. Kali ini akan disambung dengan membahas cara
men-compile dan membuat file exe dari kode program tersebut.
3 {
4 printf("Hello, World!\n");
5 return 0;
}
6
Untuk memulai proses compile, pilih menu Build -> Compile current File atau bisa
juga dengan menekan tombol CTRL + SHIFT + F9.
Jika kode program yang ditulis tidak ada yang salah, akan tampil beberapa
tulisan di bagian bawah aplikasi Code::Blocks:
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
Artinya kode program kita tidak memiliki error maupun warning. Proses compile
berlangsung dalam 1 detik.
Hal tersebut merupakan fitur normal dari sebuah aplikasi console. Yakni sebutan
dari program yang kita buat menggunakan Code::Blocks. Kode program console
harus diakses dari jendela console. Jika menggunakan Windows, jendela console
yang dimaksud adalah aplikasi CMD (command prompt).
Silahkan jalankan aplikasi CMD. Aplikasi ini bisa dicari di menu Home Windows,
atau klik search, kemudian ketik cmd.exe:
Keti
k alamat file tempat dimana file hello_world.exe berada. Dalam contoh yang saya
gunakan, file tersebut berada di D:\belajar_c\hello_world.exe:
Akan terlihat tampilan teks “Hello, World!”. Selamat! Inilah hasil dari kode
program bahasa C yang sudah kita buat.
Menggunakan Menu Build and Run Code:Blocks
Melihat hasil kode program langsung dari CMD memang sedikit panjang.
Untungnya terdapat cara yang lebih singkat, yakni menggunakan menu Build
and Run bawaan dari Code::Blocks.
Menu ini adalah gabungan dari proses build dan run. Build adalah proses untuk
men-compile file bahasa C dan Run untuk menjalankannya.
Caranya, klik menu Build -> Build and run, atau cukup dengan menekan
tombol F9 di keyboard.
Proses compile akan berlangsung beberapa saat. Setelah itu akan tampil sebuah
jendela console yang menampilkan hasil kode program: “Hello, World!”.
Untuk keluar dari jendela console ini cukup tekan tombol apa saja (press any key).
Dan tampilan akan kembali ke editor Code::Blocks.
Menu build and run ini juga tersedia sebagai shortcut yang lebih praktis:
Selain menjalankan build and run sekaligus, anda juga bisa
menjalankan build saja, atau run saja. Proses Build pada dasarnya tidak berbeda
dengan compile, yakni untuk menggenerate file .exe, sedangkan
proses Run digunakan untuk menjalankan kode program menggunakan
console Code::Blocks.
Dalam tutorial ini kita telah membahas cara menjalankan hasil kode program
yang ditulis dalam bahasa C. Karena berupa program console, hasilnya hanya
bisa dilihat menggunakan cmd atau menggunakan menu run dari
aplikasi Code::Blocks.
Berikutnya kita akan lanjut ke Struktur Dasar Kode Program Bahasa
Pemrograman C.
Setelah sebelumnya kita mencoba menjalankan kode program yang dibuat dari
bahasa C, kali ini kita akan bahas struktur dasar kode program dalam bahasa C.
1 #include <stdio.h>
2 int main(void)
3 {
4 printf("Hello, World!\n");
5 return 0;
}
6
#include <stdio.h>
Di baris paling awal, terdapat kode #include. Perintah #include digunakan untuk
memasukkan sebuah file khusus yang memungkinkan kita mengakses berbagai
fitur tambahan dalam bahasa C.
Dalam contoh diatas, file stdio.h berisi kode program agar nantinya kita bisa
mengakses perintah printf. File stdio.h sendiri merupakan singkatan dari Standard
Input/Output.
Dengan kata lain, agar di dalam kode program nanti kita bisa menggunakan
perintah printf, dibagian paling atas kode program C harus terdapat
baris #include <stdio.h>. File include ini juga sering disebut sebagai header file, dan
karena itu pula menggunakan akhiran .h.
Bahasa C menerapkan konsep modular, dimana fitur-fitur yang ada di pecah ke
berbagai file. Jika ingin menggunakan perintah tertentu, panggil header file yang
sesuai.
Hasilnya, ukuran file program yang ditulis menggunakan bahasa C menjadi
efisien. Kita hanya perlu menggunakan header file yang dibutuhkan saja. Namun
kebalikannya, setiap ingin menggunakan perintah tertentu, harus men-include-
kan file header yang dibutuhkan.
int main(void) { }
Satu-satunya perintah yang harus ada di setiap kode program bahasa C
adalah main().
Struktur main() sendiri pada dasarnya merupakan sebuah fungsi (function). Isi
dari function ini diawali dan diakhiri dengan tanda kurung kurawal ” { ” dan ” } “.
Di dalam tanda kurung inilah “isi” dari kode program penyusun
fungsi main() ditulis.
Kode int sebelum main() menandakan nilai kembalian atau hasil akhir dari
function main(). Kode int merupakan singkatan dari integer, yakni tipe data angka
bulat.
Dengan demikian, kode program main() yang saya tulis diatas harus
menghasilkan sebuah angka bulat (menggunakan perintah return yang akan kita
bahas sesaat lagi).
Sedangkan tambahan void ke dalam main(void) menandakan bawah
fungsi main() tidak membutuhkan nilai input (bahasa inggris void = kosong).
* Jika anda agak bingung dengan penjelasan ini, bisa dianggap bahwa int main(void)
{ } adalah perintah yang mengawali setiap kode program bahasa C.
printf(“Hello, World!\n”);
Perintah printf digunakan untuk menampilkan sesuatu ke layar. Perintah ini
merupakan bagian dari stdio.h, sehingga jika kita ingin menggunakannya, harus
terdapat baris perintah #include <stdio.h> di bagian paling awal kode program
bahasa C.
Teks yang ingin ditampilkan ditulis dalam tanda kurung dan di dalam tanda kutip
dua, seperti: printf(“Hello, World!\n”); Hasil dari perintah ini, akan tampil
teks Hello, World! di layar. Tapi apa fungsi tambahan karakter \n?
Jika ditulis di dalam teks, karakter ” \ ” dikenal sebagai escape character. Fungsinya
untuk menampilkan karakter yang tidak bisa ditulis. Sebagai contoh, \
n merupakan perintah untuk menulis newline character, yakni karakter penanda
baris baru.
Artinya, perintah printf(“Hello, World!\n”) akan menampilkan teks “Hello,
World!”, kemudian pindah ke baris baru. Bahasa C mendukung berbagai escape
character yang nantinya juga akan kita pelajari.
Setelah tanda kurung penutup perintah printf, harus ditutup dengan tanda titik
koma (semi-colon), yakni tanda “ ; ”. Setiap perintah bahasa C, harus diakhiri
dengan tanda ini, kecuali beberapa perintah khusus. Lupa menambahkan tanda
titik koma di akhir sebuah perintah merupakan error yang sangat sering terjadi.
return 0;
Perintah return 0; berhubungan dengan kode int main(void) sebelumnya.
Disinilah kita menutup function main() yang sekaligus mengakhiri kode program
bahasa C.
Return 0 artinya kembalikan nilai 0 (nol) ke sistem operasi yang menjalankan
kode program ini. Nilai 0 menandakan kode program berjalan normal dan tidak
ada masalah (EXIT_SUCCESS).
Kita juga bisa menulis return 1, return 99, return -1, dll. Nilai-nilai ini nantinya
bisa digunakan oleh sistem operasi atau program lain. Nilai return selain 0
dianggap terjadi error atau sesuatu yang salah (EXIT_FAILURE).
Apakah perintah Return 0 ini harus ditulis? Harus ditulis! jika kita berpatokan ke
struktur bahasa C yang ideal. Namun beberapa compiler
(termasuk Code:Blocks yang saya gunakan), akan “memaafkan” jika perintah ini
tidak ditulis dan menambahkan perintah return 0 secara otomatis (tidak
disarankan).
Dalam tutorial kali ini kita telah melihat struktur dasar kode program dalam
bahasa C. Berikutnya akan dibahas tentang aturan dasar penulisan kode
program bahasa C.
1 #include <stdio.h>
2 int main(void)
3 {
4 Printf("Hello, World!\n"); /* error !! */
return 0;
5 }
6
Untuk penulisan variabel juga akan berbeda antara huruf besar dan kecil.
Variabel jumlah, JUMLAH, dan Jumlah adalah 3 variabel yang berlainan. Aturan
ini berbeda jika dibandingkan bahasa pemrograman PASCAL yang bersifat case
insensitif (tidak membedakan huruf besar dan kecil).
1 #include <stdio.h>
2 int main(void)
3 {
4 /* Tampilkan pesan Hello World */
5 printf("Hello, World!\n");
return 0;
6 }
7
Komentar juga sering digunakan untuk membuat semacam “copyright” kode
program yang ditulis di awal, seperti contoh kode program berikut:
1 /* Pembuat : Duniailkom.com
* Tujuan : Menampilkan pesan "Hello, World!"
2
* Bahasa : C
3 * Tanggal Pembuatan: 31 Mei 2017
4 */
5
6 #include <stdio.h>
7 int main(void)
{
8 printf("Hello, World!\n");
9
10 return 0;
11 }
12
1 int jumlah;
2 return 0;
Disini, kata int dan return merupakan keyword dan memiliki makna tertentu di
dalam bahasa C.
Terdapat beberapa kata kunci (keyword) dalam bahasa pemrograman C, yakni:
auto double int struct
continu
e for signed void
do if static while
1 int jumlah;
2 double total_penjualan;
Disini, jumlah dan total_penjualan adalah variabel dan termasuk ke
dalam identifiers.
Secara umum, kita bebas ingin menulis nama identifier, namun terdapat
beberapa aturan:
Identifier harus selain dari keyword (yang terdapat di tabel sebelum ini).
Sebagai contoh, kita tidak bisa memakai kata int sebagai nama variabel,
karena int merupakan keyword untuk menandakan tipe data integer.
Identifier bisa terdiri dari huruf, angka dan karakter underscore / garis bawah
( _ ).
Karakter pertama dari identifier hanya bisa berupa huruf dan underscore,
tidak bisa berupa angka. Meskipun boleh, tapi tidak disarankan
menggunakan karakter underscore sebagai awal dari identifier.
Beberapa compiler ada yang membatasi panjang identifier maksimal 31
karakter.
Dalam tutorial bahasa pemrograman bahasa C kali ini kita telah membahas
beberapa aturan dasar dari bahasa C. Ini semua menjadi pedoman dalam
menulis kode program bahasa C.
3 #define PANJANG 8
#define LEBAR 5
4
5
int main(void)
6
{
7
printf("Panjang = %d",PANJANG);
8
printf("\n");
9
10 printf("Lebar = %d",LEBAR);
11 printf("\n");
12
13
printf("Luas (panjang*lebar) = %d",PANJANG*LEBAR);
14
printf("\n");
15
16
return 0;
17
}
18
Disini saya membuat 2 buah konstanta, yakni PANJANG dan LEBAR. Masing-
masing berisi nilai 8 dan 5. Perintah ini harus ditulis sebelum int main(void).
Format pembuatan konstanta menggunakan perintah #define adalah:
#define nama_konstanta nilai_konstanta
Dalam kode program diatas, perintah #define PANJANG 8 artinya saya membuat
konstanta bernama PANJANG yang bernilai 8. Sedangkan perintah #define
LEBAR 5 artinya saya membuat konstanta bernama LEBAR yang bernilai 5.
Di bagian program utama, yakni di dalam int main(void), nilai dari masing-masing
konstanta ditampilkan dengan perintah printf.
Tanda %d di dalam perintah printf digunakan untuk menampilkan angka bulat.
Angka yang ingin ditampilkan berada di akhir perintah printf, yakni berupa
sebuah konstanta.
Perintah printf(“\n”) dipakai untuk membuat karakter new line (baris baru).
Fungsinya supaya baris berikutnya tampil di baris baru. Tanpa perintah ini, teks
akan disambung terus ke kanan.
Lebih jauh tentang cara penggunaan perintah printf akan kita bahas dalam
tutorial tersendiri. Untuk saat ini silahkan fokus ke cara pembuatan
konstanta PANJANG dan LEBAR. di baris 3 dan 4.
1
#include <stdio.h>
2
3
#define situs "www.duniailkom.com"
4 #define ipk 4.00
5
6 int main(void)
7 {
9 printf("\n");
10
printf("Semoga dapat IPK %f",ipk);
11
printf("\n");
12
13
return 0;
14
}
15
Kali ini saya menggunakan huruf kecil untuk konstanta situs dan ipk. Karena nilai
konstanta situs berupa teks, harus ditulis dalam tanda kutip.
Bisa anda perhatikan juga bahwa untuk perintah printf, saya menggunakan
tanda %s karena konstanta situs berisi nilai string (teks), sedangkan untuk
menampilkan nilai konstanta ipk, saya menggunakan %f karena nilainya berisi
angka float (pecahan).
Cara Membuat Konstanta C dengan Perintah “const”
Selain menggunakan perintah #define, konstanta juga bisa dibuat menggunakan
perintah const. Bedanya, pembuatan konstanta di tempatkan dalam
fungsi main() dan juga harus ditulis tipe data dari konstanta tersebut.
Berikut contoh kode program bahasa C untuk membuat konstanta
menggunakan keyword const:
1
#include <stdio.h>
2
3
int main(void)
4 {
5 const char SITUS[20] = "www.duniailkom.com";
6 const float IPK= 4.00;
9 printf("\n");
10
printf("Semoga dapat IPK %f",IPK);
11
printf("\n");
12
13
return 0;
14
}
15
Sebagai bahasan terakhir, mari kita coba mengubah nilai sebuah konstanta
setelah di definisikan:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 const float IPK = 4.00;
8 printf("\n");
9
IPK = 2.00; // error: assignment of read-only variable 'IPK'
10
return 0;
11
}
12
Setelah membuat dan mengisi konstanta IPK dengan nilai 4.00, saya mencoba
mengisinya dengan nilai 2.00 menggunakan perintah IPK = 2.00. Hasilnya
tampil error: assignment of read-only variable ‘IPK’. Artinya nilai ipk bersifat read-
only dan tidak bisa diubah.
Dalam tutorial belajar bahasa pemrograman C kali ini kita telah membahas
pengertian dan cara pembuatan konstanta. Pada tutorial berikutnya, akan
disambung dengan cara pembuatan variabel di dalam bahasa pemrograman C.
Tipe data integer, yakni tipe data angka bulat seperti 1, 5 atau 1000. Tipe
data integer ditulis dengan keyword int.
Tipe data float, yakni tipe data angka pecahan seperti 1.33, 5.90 atau
1000.99. Tipe data float ditulis dengan keyword float.
Tipe data character, yakni tipe data huruf seperti ‘A’, ‘a’, atau ‘Z’. Tipe data
character ditulis dengan keyword char.
Sebagai contoh, dalam kode program berikut saya mendeklarasikan 3 buah
variabel:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int a;
6 char b;
float c;
7
8
return 0;
9 }
10
Disini perintah int a akan membuat variabel a dengan tipe data int. Artinya
variabel a hanya bisa diisi dengan angka bulat. Variabel b bertipe char, sehingga
hanya bisa menampung huruf. Sedangkan variabel c bertipe data float yang
hanya bisa diisi dengan angka pecahan.
Setelah sebuah variabel di deklarasikan, kita bisa menginput atau memberikan
nilai awal ke dalam variabel tersebut. Proses pemberian nilai awal ini dikenal
dengan istilah inisialisasi.
Nilai yang diberikan harus sesuai dengan tipe data. Misalnya
variabel a bertipe int, sehingga hanya bisa diisi dengan angka bulat. Berikut
contoh proses deklarasi dan inisialisasi dari contoh sebelumnya:
1 #include <stdio.h>
2
3 int main(void)
{
4 int a;
5 char b;
6 float c;
7
8 a = 34;
b = 'B';
9
10 c = 3.14;
11
12 return 0;
13 }
14
Sekarang masing-masing variabel sudah berisi nilai. Tanda sama dengan ( = )
disini berfungsi sebagai operator assignment, yakni operator yang akan mengisi
sebuah nilai. Proses assignment dilakukan dari kanan ke kiri. Perintah a =
34 artinya memasukkan angka 34 ke dalam variabel a.
Untuk menampilkan isi dari variabel, kita bisa menggunakan
perintah printf seperti contoh berikut:
1
2 #include <stdio.h>
3
4 int main(void)
5 {
6 int a;
char b;
7 float c;
8
9 a = 34;
10 b = 'B';
11 c = 3.14;
12
13 printf("%i",a);
printf("\n");
14
15 printf("%c",b);
16 printf("\n");
17
18 printf("%f",c);
19 printf("\n");
20
21 return 0;
}
22
23
Proses deklarasi dan inisialisasi variabel juga bisa dilakukan sekaligus, seperti
contoh berikut:
1
2 #include <stdio.h>
3
4 int main(void)
{
5
int a = 34;
6 char b = 'B';
7 float c = 3.14;
8
9 printf("%i",a);
10 printf("\n");
11
printf("%c",b);
12
printf("\n");
13
14 printf("%f",c);
15 printf("\n");
16
17 return 0;
18 }
19
Sekarang variabel a, b dan c masing-masing sudah berisi nilai awal.
Kita juga bisa mendeklarasikan beberapa variabel dalam 1 baris perintah,
selama variabel tersebut memiliki tipe data yang sama, seperti contoh berikut:
1
2 #include <stdio.h>
3
4 int main(void)
5 {
int a,b,c;
6
7 a = 12;
8 b = 9;
9 c = 2;
10
11 printf("%i",a);
12 printf("\n");
13
printf("%i",b);
14 printf("\n");
15
16 printf("%i",c);
17 printf("\n");
18
19 return 0;
20 }
21
Setelah variabel di deklarasikan dan diberikan nilai awal, kita bisa mengubah
nilai-nilai ini sepanjang kode program. Berikut contohnya:
1
2 #include <stdio.h>
3
4 int main(void)
5 {
6 int a,b,c;
7
a = 3;
8 b = a;
9 a = a + b;
10 c = b + b + a;
11
12 printf("%i",a);
printf("\n");
13
14
printf("%i",b);
15 printf("\n");
16
17 printf("%i",c);
18 printf("\n");
19
20 return 0;
}
21
22
Bisakah anda menebak apa hasil akhir dari variabel a, b, dan c?
Diawal kode program, saya mendeklarasikan 3 buah variabel: a, b, dan c.
Variabel a kemudian diisi dengan angka 3 dengan perintah a = 3.
Di baris berikutnya terdapat perintah b = a, artinya variabel b akan diisi dengan
nilai dari variabel a (ingat, proses assignment berlaku dari kanan ke kiri). Karena
variabel a berisi angka 3, maka variabel b juga akan berisi angka 3.
Selanjutnya terdapat perintah a = a + b. Kembali, proses pemberian nilai
(assignment) akan dilakukan dari sisi kanan tanda sama dengan ( = ) terlebih
dahulu.
Berapakah hasil dari a + b? karena a dan b sama-sama bernilai 3, maka hasilnya
adalah 6. Angka enam ini akan menjadi nilai baru untuk variabel a. Nilai
variabel a yang sebelumnya 3, akan tertimpa menjadi 6.
Proses terakhir adalah c = b + b + a. Kembali, kita selesaikan dulu perhitungan di
sisi kanan, yakni b + b + a. Variabel b saat ini bernilai 3, sedangkan
variabel a sudah bernilai 6 akibat perintah sebelumnya. Sehingga proses yang
terjadi adalah 3 + 3 + 6 = 12. Angka 12 ini akan menjadi nilai inputan untuk
variabel c.
Dari penjelasan diatas, maka variabel a akan berisi angka 6, variabel b angka 3,
dan variabel c angka 12. Mari kita buktikan dengan menjalankan kode program
tersebut:
Dalam tutorial kali ini kita telah mempelajari pengertian variabel dan cara
penulisan variabel di dalam bahasa pemrograman C. Dalam tutorial selanjutnya,
saya akan membahas tentang cara penggunaan perintah printf yang sudah
beberapa kali kita pakai.
3 int main(void)
4 {
7 return 0;
}
8
Bagaimana dengan membuat 2 buah teks? Tidak ada masalah, kita tinggal
tambah satu lagi perintah printf di bawahnya:
1 #include <stdio.h>
2
3 int main(void)
4 {
6 printf("Semangat!!!");
7 return 0;
}
8
Inilah prilaku bawaan dari hampir semua bahasa pemrograman komputer. Jika
kita ingin agar perintah printf kedua tampil di baris baru, harus ada instruksi
untuk hal tersebut.
3 int main(void)
{
4
printf("Belajar bahasa C di Duniailkom");
5
printf("\n");
6
printf("Semangat!!!");
7
printf("\n");
8
9
return 0;
10
}
11
Sekarang diantara kedua kalimat saya tambah kode printf(“\n”). Hasilnya kedua
kalimat akan tampil di baris baru.
Sebuah karakter yang diawali dengan tanda backslash “\” memiliki makna khusus
di dalam programming. Kode “\n” berarti new line, ini adalah kode untuk pindah
baris.
Selain itu ada juga kode “\t” untuk karakter tab dan beberapa kode-kode lain.
Kode-kode ini disebut juga sebagai escape character, yakni kode khusus untuk
mewakili karakter yang tidak bisa ditulis. Berikut daftar lengkapnya:
Escape Character Character
\b Backspace
\f Form feed
\n Newline
\r Return
\t Horizontal tab
\v Vertical tab
\\ Backslash
\? Question mark
\0 Null character
Kode “\n” juga tidak harus ditulis secara terpisah, tapi juga bisa digabung ke
dalam 1 perintah printf:
1 #include <stdio.h>
2
3 int main(void)
4 {
7 return 0;
}
8
Hasilnya, teks akan bergeser ke kanan karena terdapat karakter “\t” sebagai
pengganti tab. Selain itu perintah diatas akan tampil dalam 2 baris karena
terdapat karakter \n di tengah-tengah kalimat. Ini sebagai instruksi untuk pindah
baris, meskipun hanya ditulis dalam 1 perintah printf.
Materi mengenai perintah printf masih akan dilanjutkan dengan cara penulisan
untuk menampilkan isi variabel. Karena pembahasannya cukup panjang, akan
saya sambung dalam tutorial berikutnya: Format Penulisan Perintah printf untuk
Menampilkan isi Variabel.
1 #include <stdio.h>
3 int main(void)
{
4
int harga = 5000;
5
float nilai_ip = 3.12;
6
char huruf = 'A';
7
8
printf("Harga bakwan %i",harga);
9 printf("\n");
10
14
printf("%c adalah huruf pertama dalam abjad",huruf);
15
printf("\n");
16
17
return 0;
18 }
19
Kode %f akan digantikan dengan isi dari variabel nilai_ip. Yang hasilnya menjadi:
Semester 1 dapat nilai 3.120000
Terakhir, perintah:
Intinya adalah, kode % nantinya akan diganti dengan isi variabel yang ada di
argumen kedua dari fungsi printf. Akan tetapi, kenapa kodenya beda-beda?
Ada %i, ada %f dan %c, apa maksudnya? ini merupakan kode variabel untuk
fungsi printf.
%i atau %d int
%c char
%f float
%s string
Penulisan perintah printf seperti ini juga tidak hanya untuk 1 variabel dalam 1
perintah, tapi juga bisa banyak sekaligus selama urutan penulisan variabelnya
sesuai. Berikut contoh kode programnya:
1
#include <stdio.h>
2
3
int main(void)
4
{
5 int harga = 5000;
6 float nilai_ip = 3.12;
10 printf("\n");
11
printf("harga=%d, nilai_ip=%f dan huruf=%c", harga, nilai_ip, huruf);
12
printf("\n");
13
14
return 0;
15
}
16
Kode program ini merupakan modifikasi dari kode sebelumnya. Kali ini saya
hanya menggunakan 1 perintah printf untuk menampilkan 3 variabel.
Yang harus diperhatikan adalah, urutan variabel yang akan menggantikan kode
khusus. Misalnya dalam contoh diatas, terdapat kode %d paling awal. Dengan
demikian, di dalam argumen kedua saya harus menulis variabel yang
bertipe integer.
Selanjutnya di dalam teks ada kode %f, ini akan berpasangan dengan argumen
ketiga, begitu seterusnya hingga akhir teks.
Penulisan isi variabel di dalam bahasa C memang lumayan njelimet, bahkan
mungkin paling rumit diantara bahasa pemrograman lain. Di bahasa pascal
misalnya, kita tinggal menulis isi variabel tanpa harus pusing dengan kode tipe
data, seperti:
write("Harga bakwan",harga);
Dalam tutorial ini kita telah membahas tentang cara penulisan format perintah
printf untuk menampilkan isi variabel. Perintah printf dipakai untuk
menampilkan teks (output). Berikutnya kita akan bahas tentang perintah
scanf yang dipakai untuk menerima masukan (input).
Dalam 2 tutorial sebelum ini kita telah mempelajari cara menampilkan sesuatu
(output) menggunakan perintah printf dalam bahasa pemrograman C. Kali ini
kita akan bahas tentang fungsi perintah scanf serta cara penggunaan perintah
scanf sebagai sarana input program bahasa C.
Bagian kode_format adalah format untuk tipe data inputan. Kode format ini sama
seperti yang dipakai untuk fungsi printf, misalnya kode “%d” untuk tipe
data integer, atau “%c” untuk tipe data char.
Bagian nama_variabel_penampung adalah nama variabel yang digunakan untuk
menampung nilai inputan. Variabel ini harus sudah di deklarasikan sebelumnya.
Perhatikan penambahan tanda ‘&’ diawal variabel penampung. Tanda ini
merujuk ke pointer untuk alamat memory dari variabel tersebut. Untuk tipe data
dasar seperti int, float dan char, tanda ‘&’ harus disertakan. Untuk beberapa tipe
data seperti string, tidak perlu ditambahkan tanda ‘&’.
Sama seperti printf, fungsi scanf juga bukan bagian dari inti bahasa C, tapi
berasal dari library stdio.h. Karena itu kode #include <stdio.h> harus ditulis agar
bisa menggunakan perintah scanf.
1 #include <stdio.h>
3 int main(void)
{
4
int harga;
5
6
printf("Masukkan harga barang: ");
7
scanf("%d",&harga);
8
9
10 printf("\n");
11 printf("Harga barang adalah: %d", harga);
12 printf("\n");
13
14 return 0;
}
15
Di awal kode program, saya mendefinisikan 1 buah variabel harga yang diset
sebagai int. Artinya, variabel harga hanya bisa diisi dengan angka bulat.
Selanjutnya terdapat baris printf(“Masukkan harga barang: “). Ini digunakan
untuk menampilkan teks sebagai keterangan agar pengguna menginput
sesuatu.
Proses pembacaan data di tangani oleh perintah scanf(“%d”,&harga). Disini,
cursor akan berhenti dan menunggu kita menginput suatu nilai. Nilai ini akan
disimpan ke dalam variabel harga. Tanda “%d” adalah sebagai kode format
kalau nilai inputan harus berupa integer.
Terakhir, nilai dari variabel harga ini saya tampilkan kembali dengan
perintah printf(“Harga barang adalah: %d”, harga). Berikut contoh hasilnya:
Yang juga harus menjadi catatan, ketika karakter yang diinput bukan angka,
bahasa C akan mengkonversi karakter tersebut. Misalnya diinput angka 2500.25
(pecahan), yang akan di ambil hanya angka 2500 saja. Karena variabel harga
hanya bisa menampung angka bulat.
Sebagai contoh kedua, saya akan buat kode program untuk menampung 3
inputan sekaligus:
1
#include <stdio.h>
2
3
int main(void)
4
{
5
int harga;
6
float nilai_ip;
7
char huruf;
8
11
13 scanf("%f",&nilai_ip);
14
scanf("%c",&huruf);
16
17
printf("\n");
18
printf("harga = %d , nilai_ip = %f dan huruf = %c",
19
harga, nilai_ip, huruf);
20
printf("\n");
21
22 return 0;
23 }
24
Kode program ini mirip seperti sebelumnya, hanya saja kali ini saya membuat 3
variabel bertipe int, float dan char. Setelah itu terdapat 3 perintah scanf untuk
menerima input untuk ketiga variabel ini.
Akan tetapi, jika anda menjalankan kode program diatas, terdapat 1 masalah.
Ketika kita menekan tombol enter setelah menginput angka untuk
variabel nilai_ip, program langsung berakhir tanpa sempat berhenti untuk
menerima input untuk variabel huruf.
Hal ini terjadi karena karakter “Enter” akan dibaca sebagai inputan untuk
variabel huruf yang di set sebagai char.
Solusinya, tambahkan 1 spasi di dalam baris scanf(“%c”,&huruf) menjadi:
1 scanf(" %c",&huruf);
Trik ini akan mengatasi masalah karakter “Enter” yang langsung terinput ke
variabel huruf. Berikut perubahan kode programnya:
1 #include <stdio.h>
3 int main(void)
{
4
int harga;
5
float nilai_ip;
6
char huruf;
7
8
printf("Harga barang: ");
9 scanf("%d",&harga);
10
13
15 scanf(" %c",&huruf);
16
printf("\n");
17
18
printf("harga = %d , nilai_ip = %f dan huruf = %c",
19
harga, nilai_ip, huruf);
20
printf("\n");
21
22
return 0;
23 }
24
Dalam tutorial ini kita telah membahas cara penggunaan perintah scanf dalam
bahasa pemrograman C. Perintah scanf dan printf adalah sarana input /
output standar di dalam bahasa C. Kedua perintah ini akan sering kita pakai
dalam pembahasan nantinya.
Untuk tutorial selanjutnya kita akan masuk ke bahasan tentang jenis-jenis tipe
data di dalam bahasa C.
“Tipe data atau kadang disingkat dengan ‘tipe’ saja adalah sebuah pengelompokan data
untuk memberitahu compiler atau interpreter bagaimana programmer ingin mengolah data
tersebut”
Secara sederhana, tipe data adalah cara kita memberitahu komputer untuk
mengelompokkan data berdasarkan apa yang dipahami oleh komputer.
Sebagai contoh, misalkan saya memiliki data berupa angka. Agar bisa dipahami
oleh compiler bahasa C, data ini harus disimpan ke dalam variabel yang sudah di
set agar bisa menyimpan angka. Di dalam bahasa C, terdapat tipe
data integer dan float yang bisa diisi dengan angka. Sedangkan jika data tersebut
berupa huruf, bisa disimpan ke dalam tipe data char.
Array: Tipe data yang terdiri dari kumpulan tipe data dasar. Tipe data
tersebut harus 1 jenis.
Structure: Tipe data yang terdiri dari kumpulan tipe data dasar. Tipe data
tersebut bisa lebih dari 1 jenis.
Pointer: Tipe data untuk mengakses alamat memory secara langsung.
Tipe data turunan disebut juga sebagai Derived Data Type.
3. Tipe Data Bentukan (enum)
Sesuai dengan namanya, tipe data bentukan adalah tipe data yang dibuat sendiri
oleh kita (programmer). Isinya berupa data-data yang sudah ditentukan. Tipe
data bentukan ini dikenal juga sebagai Enumerated Data Type atau disingkat
sebagai enum.
4. Tipe Data Void
Tipe data void adalah tipe data khusus yang menyatakan tidak ada data.
Penggunaannya khusus untuk beberapa situasi seperti function yang tidak
mengembalikan nilai (return void), atau mengisi argumen function dengan nilai
kosong.
1. Char
2. Integer
3. Float
4. Array
5. Structure
6. Pointer
7. Enum
8. Void
Bagi anda yang sudah pernah belajar bahasa pemrograman lain, mungkin akan
bertanya kenapa tipe data boolean dan string tidak termasuk di dalam daftar ini?
Bahasa C memang tidak memiliki tipe boolean bawaan, tapi bisa diakali dengan
membuatnya menggunakan tipe data bentukan (enum), atau menggunakan
library khusus: stdbool.h.
Sedangkan untuk string, di dalam bahasa C termasuk ke dalam array. String di
defenisikan sebagai array dari tipe data char.
1 #include <stdio.h>
2
int main(void)
3 {
4
int var1 = 56;
5
double var2 = 0.543;
6
char var3 = 'A';
7
8 int var4[5] = {10, 20, 30, 40, 50};
9 char var5[11] = "Duniailkom";
10
11 printf("%d \n",var1);
12 printf("%f \n",var2);
printf("%c \n",var3);
13 printf("%d \n",var4[3]);
14 printf("%s \n",var5);
15
16 printf("\n");
17 return 0;
18 }
19
Penjelasan lebih lanjut tentang tipe data ini, termasuk contoh penggunaannya
akan kita bahas secara bertahap dalam beberapa tutorial ke depan.
Pertama, akan dibahas tentang tipe data char terlebih dahulu: Pengertian dan
Contoh Kode Program C untuk Tipe Data char.
1
#include <stdio.h>
2
3 int main(void)
4 {
5 char huruf;
6 huruf = 'Z';
8
printf("\n");
9
return 0;
10
}
11
Dalam contoh ini saya mendefinisikan variabel huruf dengan tipe char, kemudian
diisi dengan karakter ‘Z’ dan ditampilkan dengan perintah printf. Sangat
sederhana.
Untuk contoh kedua, kita akan buat konstanta dengan tipe data char:
1
#include <stdio.h>
2
3 int main(void)
4 {
8 printf("\n");
return 0;
9
}
10
Disini huruf berupa sebuah konstanta bertipe char, bukan lagi variabel seperti
sebelumnya. Mengenai perbedaan antara variabel dengan konstanta, sudah
pernah kita bahas dalam beberapa tutorial sebelum ini: Cara Pembuatan
Konstanta dalam Bahasa C, dan Pengertian Variabel dan Cara Penulisan Variabel
Bahasa C.
Sebagai contoh terakhir, saya akan kombinasikan dengan perintah scanf agar
lebih dinamis:
1 #include <stdio.h>
3 int main(void)
{
4
char karakter1, karakter2, karakter3;
5
6
printf("Input 3 karakter sembarang \n");
7
printf("========================== \n");
8
printf("\n");
9
12
14 scanf(" %c",&karakter2);
15
scanf(" %c",&karakter3);
17
18
printf("\n");
19
printf("karakter yang diinput adalah: %c %c %c",
20
karakter1, karakter2, karakter3);
21
22
printf("\n");
23 return 0;
24 }
25
26
Di awal kode program, saya menyiapkan 3 buah variabel bertipe data char.
Ketiga variabel ini bernama karakter1, karakter2 dan karakter3. Isi program akan
meminta inputan dari user untuk 3 karakter tersebut, kemudian
menampilkannya kembali.
Yang juga patut diingat, karakter disini bisa terdiri dari huruf, angka, serta
karakter khusus seperti ?, *, %, #. Jadi tidak masalah jika kita menginput angka
ke dalam tipe data char. Namun angka tersebut tetap harus 1 digit.
Bagaimana dengan karakter yang lebih dari 1 digit, seperti kata atau kalimat? Di
dalam bahasa C, kata atau kalimat (di kenal juga sebagai string) dianggap
sebagai array dari tipe data char. Lebih lanjut akan kita pelajari setelah
membahas tentang tipe data array nanti.
Sampai disini kita sudah membahas tentang pengertian tipe data char serta cara
penggunaan tipe data char di dalam bahasa pemrograman C. Berikutnya akan
dibahas tentang tipe data untuk menampung angka bulat: Pengertian dan
Contoh Kode Program Tipe Data Integer bahasa C.
char
short
int
long
Loh, bukannya char adalah tipe data untuk karakter? Kenapa juga ada di dalam
integer? Betul, inilah keunikan tipe data char di dalam bahasa C.
Secara internal, char sebenarnya bertipe integer. Untuk membedakan
apakah char ini berisi karakter atau huruf dilakukan pada saat menampilkannya.
Jika di dalam perintah printf menggunakan kode %c, karakter lah yang akan
ditampilkan. Sedangkan jika di dalam perintah printf menggunakan kode %d,
maka akan menampilkan tipe data integer. Kita akan lihat perbedaannya dengan
contoh kode program sesaat lagi.
Tabel berikut merangkum jangkauan setiap tipe data integer dalam bahasa C:
Jenis Tipe Ukuran Memory
Data Penyimpanan Jangkauan
-2,147,483,648 hingga
int 4 bytes 2,147,483,647
-2,147,483,648 hingga
long 4 bytes 2,147,483,647
Ukuran Memory Penyimpanan adalah jumlah memory yang dibutuhkan untuk
menyimpan angka tersebut. Semakin besar jangkauan, semakin banyak juga
ruang memory yang dibutuhkan.
Khusus untuk tipe data int, bisa terdiri dari 2 byte maupun 4 byte. Ini tergantung
sistem komputer dan compiler bahasa C yang dipakai.
Jangkauan tipe data diatas adalah untuk angka yang bertanda (signed).
Maksudnya, setiap tipe data bisa menampung angka positif dan negatif. Kita
bisa mengorbankan nilai negatif ini untuk memperbesar jangkauan angka positif
dengan menambahkan keyword unsigned sebelum penulisan tipe data.
Jika tipe data integer di-set sebagai unsigned (tidak bertanda), maka tipe data
tersebut tidak bisa menampung angka negatif, namun jatah untuk angka negatif
akan dialihkan kepada angka positif sehingga jangkauannya menjadi 2 kali lipat.
Berikut tabel jangkauan setiap tipe data unsigned integer dalam bahasa C:
Jenis Tipe Data Ukuran Memory Penyimpanan Jangkauan
Hal yang sama juga berlaku untuk variabel bar yang diisi karakter ‘Z’. Ketika
diakses sebagai integer, hasilnya berupa angka 90, karena huruf Z berada di
urutan ke 90 daftar karakter ASCII. Untuk tabel karakter ASCII ini bisa dilihat
ke id.wikipedia.org/wiki/ASCII.
Sekarang, jangkauan setiap tipe data sudah membesar 2 kali lipat dengan
mengorbankan angka negatif. Efek sampingnya, kita tidak bisa lagi menginput
angka negatif ke dalam variabel diatas.
Tipe data char yang sebelumnya hanya bisa sampai angka 127 sekarang bisa
menampung nilai 0 – 255. Begitu juga dengan tipe data unsigned short yang bisa
menampung 0 – 65535.
Tapi kenapa tipe data unsigned int dan unsigned long menghasilkan -1? Ternyata
khusus untuk jenis unsigned, kita tidak bisa menggunakan pola karakter %d, tapi
harus diganti menjadi %u.
Dengan demikian, kode program sebelumnya akan saya modifikasi sebagai
berikut:
1 #include <stdio.h>
2
int main(void)
3 {
4 unsigned char angka1;
5 unsigned short angka2;
6 unsigned int angka3;
7 unsigned long angka4;
8
angka1 = 255;
9
10
11 angka2 = 65535;
angka3 = 4294967295;
12 angka4 = 4294967295;
13
14 printf("Isi variabel angka1 (char): %d \n",angka1);
15 printf("Isi variabel angka2 (short) %d \n",angka2);
16 printf("Isi variabel angka3 (int): %u \n",angka3);
printf("Isi variabel angka4 (long): %u \n",angka4);
17
18
printf("\n");
19 return 0;
20 }
21
22
1 #include <stdio.h>
2
int main(void)
3 {
4 unsigned char angka1;
5 unsigned short angka2;
6 unsigned int angka3;
7 unsigned long angka4;
8
angka1 = 299;
9 angka2 = 65599;
10 angka3 = 4294967299;
11 angka4 = 4294967299;
12
13 printf("Isi variabel angka1 (char): %d \n",angka1);
14 printf("Isi variabel angka2 (short) %d \n",angka2);
printf("Isi variabel angka3 (int): %u \n",angka3);
15
16
17 printf("Isi variabel angka4 (long): %u \n",angka4);
18
printf("\n");
19 return 0;
20 }
21
22
Perhatikan tambahan perintah #include <limits.h> di baris kedua. Inilah cara kita
menambahkan fungsi-fungsi baru ke dalam kode program C.
Dengan tambahan perintah ini, saya bisa menggunakan fungsi sizeof() untuk
melihat berapa jumlah memory yang dipakai untuk setiap tipe data, serta
mengakses konstanta seperti SCHAR_MIN untuk melihat nilai minimum dari
tipe data char, serta SCHAR_MAX untuk melihat nilai maksimum tipe data char.
Begitu juga dengan tipe data integer lainnya.
Dalam tutorial kali ini kita telah membahas pengertian tipe data integer, melihat
4 jenis tipe data integer bahasa C, serta menjalankan beberapa contoh kode
program untuk tipe data integer bahasa pemrograman C.
Tipe data integer hanya bisa dipakai untuk menampung angka bulat. Bagaimana
dengan angka pecahan? Kita akan bahas dalam tutorial selanjutnya: Pengertian
dan Contoh Kode Program Tipe Data Float Bahasa C.
Tipe data float adalah tipe data untuk angka pecahan. Dalam tutorial belajar
bahasa pemrograman C di Duniailkom kali ini kita akan bahas tentang
pengertian, jenis-jenis serta contoh kode program untuk tipe data float dalam
bahasa C.
Sebenarnya masih ada 1 lagi jenis tipe data untuk angka pecahan, yakni long
double dengan jangkauan yang lebih besar dari double. Namun tidak semua
compiler bahasa C mendukung tipe data ini.
Penulisan angka pecahan juga bisa menggunakan notasi ilmiah, seperti 3.12e2
atau 4E-3. Tanda e atau E mewakili pangkat 10, sehingga 3.12e2 = 3.12 x 10^2 =
312. Sedangkan 4E-3 = 4 x 10^-3 = 0.004.
Meskipun tipe data float bisa menyimpan angka yang sangat besar, tapi tipe
data ini memiliki kelemahan yang umum di setiap bahasa pemrograman (tidak
bahasa C saja). Yakni terdapat batas tingkat ketelitian. Hal ini berhubungan
dengan mekanisme penyimpanan di dalam komputer yang berupa angka biner.
Kita akan lihat contohnya beberapa saat lagi.
Contoh Kode Program Tipe Data Float Bahasa C
Sebagai contoh kode program pertama, saya akan membuat 2 buah variabel
bertipe float dan double, menginput angka, lalu menampilkannya:
1
#include <stdio.h>
2
3
int main(void)
4
{
5 float angka1;
6 double angka2;
8 angka1 = 4.323;
9 angka2 = 0.0067;
10
13
printf("\n");
14
return 0;
15
}
16
Untuk menampilkan angka float, kita menggunakan kode %f di dalam perintah
printf.
1
#include <stdio.h>
2
3
int main(void)
4 {
5 float angka1 = 9.13e5;
10
printf("\n");
11
return 0;
12
}
13
Dari kedua contoh diatas, kita bisa lihat bahwa secara default bahasa C
menampilkan angka desimal dengan 6 angka di belakang koma. Maksudnya, jika
yang ditulis adalah 4.323, maka yang ditampilkan menjadi 4.323000. Bagaimana
mengubah tampilan ini? Misalnya jika kita ingin 2 angka di belakang koma?
Kode yang ada di dalam tanda kurung bersifat opsional dan boleh tidak ditulis.
Mari kita lihat prakteknya menggunakan contoh kode program:
1
#include <stdio.h>
2
3
int main(void)
4
{
5
float angka1 = 1234.5678;
6
12
printf("Isi variabel angka1: %e \n",angka1);
13
printf("Isi variabel angka1: %E \n",angka1);
14
15
printf("\n");
16
return 0;
17
}
18
Di awal kode program saya mendefinisikan variabel angka1 sebagai float dan diisi
dengan angka 1234.5678.
Dalam perintah printf pertama, terlihat bahwa angka1 berisi 1234.567749. Loh,
kenapa berbeda? inilah salah satu kelemahan dari tipe data float, yakni tidak
bisa secara persis menyimpan angka. Kesalahan pembulatan ini umum di setiap
bahasa pemrograman yang berasal dari mekanisme konversi angka di dalam
komputer (digit biner).
Untuk perintah printf kedua, saya menggunakan pola %15f. Pola ini akan
menampilkan angka pecahan dengan 15 digit (termasuk karakter titik). Karena
variabel angka1 tersimpan sebagai 1234.567749 (total 11 digit), maka akan
ditambah 4 spasi sebelum angka agar total menjadi 15 digit.
Untuk perintah printf ketiga, saya menggunakan pola %015f. Pola ini juga akan
menampilkan angka pecahan dengan 15 digit, namun 4 spasi sebelumnya akan
diganti dengan angka 0.
Perintah printf keempat, saya menggunakan pola %.3f. Pola ini akan
menampilkan angka pecahan dengan 3 digit di belakang koma.
Perintah printf kelima, saya menggunakan pola %010.3f. Pola ini akan
menampilkan angka pecahan dengan 3 digit di belakang koma. Selain itu angka
akan ditampilkan dengan jumlah total 10 digit. Jika kurang, akan ditambah
dengan angka 0 di sisi kiri angka bulat.
Dua perintah printf terakhir menggunakan pola %e dan %E. Ini dipakai untuk
menampilkan angka dalam format notasi ilmiah, yakni 8.012457e+003 dan
8.012457E+003. Perbedaannya hanya menggunakan huruf e kecil atau E besar.
2 #include <stdio.h>
#include <float.h>
3
4
int main(void)
5
{
6
printf("Ukuran memory untuk tipe data float: %d byte \n", sizeof(float));
7
printf("Ukuran memory untuk tipe data double: %d byte \n",sizeof(double));
8 printf("\n");
9
12 printf("\n");
13
17
printf("Ketelitian float: %d digit\n", FLT_DIG );
18
printf("Ketelitian double: %d digit\n", DBL_DIG );
19
20
printf("\n");
21 return 0;
22 }
23
Dengan kode program ini, kita bisa melihat informasi seputar tipe data float.
Dalam tutorial belajar bahasa C di Duniailkom kali ini kita sudah membahas
banyak hal terkait tipe data float, mulai dari pengertian, jenis tipe data float,
serta berbagai contoh kode program. Berikutnya akan dibahas
tentang Pengertian Array dan Contoh Kode Program Tipe Data Array dalam
bahasa C.
int bilangan1;
int bilangan2;
int bilangan3;
int bilangan4;
int bilangan5;
Data diatas banyak dan berulang untuk 1 tipe data saja, sehingga akan lebih
efisien jika menggunakan array:
int bilangan[5];
Dengan kode program diatas, variabel bilangan akan menjadi sebuah array yang
bisa menampung 5 data bertipe integer.
tipe_data nama_variabel[jumlah_element]
Berikutnya, bagaimana cara mengakses dan mengisi element array ini? Kita
tinggal menuliskan nomor urut dari element yang akan akan diakses, nomor
urut ini dikenal juga dengan istilah index. Berikut contohnya:
bilangan[5] = 3.14;
Yang harus perlu diperhatikan adalah, nomor urut atau index array dimulai dari 0,
bukan 1. Akibatnya jika kita ingin mengakses element pertama dari
array bilangan, penulisannya adalah bilangan[0]. Untuk bisa mengakses element
ke-100 dari array bilangan, penulisannya adalah bilangan[99].
Index array yang dimulai dari 0 ini hampir selalu menjadi ciri khas di seluruh
bahasa pemrograman modern, termasuk C++, PHP, dan JavaScript.
Sebagai contoh pertama, saya ingin membuat array bilangan dengan 5 element
bertipe data integer, lalu mengisi dan menampilkan nilainya menggunakan
perintah printf:
1
#include <stdio.h>
2
3
int main(void)
4
{
5
int bilangan[5];
6
7
bilangan[0] = 6;
8 bilangan[1] = 9;
9 bilangan[2] = -8;
10 bilangan[3] = 24;
11 bilangan[4] = -99;
12
18
return 0;
19 }
20
Di awal kode program, baris int bilangan[5] dipakai untuk membuat sebuah array
bernama bilangan dengan 5 element atau 5 anggota. Array bilangan ini di set
sebagai int, yang artinya setiap element array hanya bisa diisi dengan bilangan
bulat (integer).
Setelah pendefinisian array bilangan, selanjutnya saya mengisi setiap element
array dengan angka. Kembali diingat bahwa index array dimulai dari 0, sehingga
untuk mengakses element pertama dari array bilangan, penulisannya
adalah bilangan[0].
Di akhir program, saya menampilkan seluruh element array menggunakan
perintah printf.
Dalam contoh diatas, pengisian nilai array diproses satu persatu. Namun kita
juga bisa mengisi element array langsung pada saat pendefinisiannya, seperti
contoh berikut:
1 #include <stdio.h>
3 int main(void)
{
4
int bilangan[5] = {6, 9, -8, 24, -99};
5
6
printf("Isi array bilangan pertama: %d \n",bilangan[0]);
7
printf("Isi array bilangan kedua: %d \n",bilangan[1]);
8
printf("Isi array bilangan ketika: %d \n",bilangan[2]);
9 printf("Isi array bilangan keempat: %d \n",bilangan[3]);
10 printf("Isi array bilangan kelima: %d \n",bilangan[4]);
11
12
return 0;
13
}
14
Kali ini, semua isi array diinput sekaligus pada saat pembuatan, yakni dengan
perintah int bilangan[5] = {6, 9, -8, 24, -99}. Tanda koma dipakai sebagai pemisah
antara satu nilai dengan nilai lain.
Hasil kode program diatas akan sama persis seperti contoh kode program
pertama.
Yang cukup unik, kita juga bisa mendefiniskan array tanpa harus menulis jumlah
elemen anggotanya, seperti contoh berikut:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 char kumpulan_huruf[] = {'a','C','x'};
kumpulan_huruf[2]);
9
10
return 0;
11
}
12
Isi dari element array sama halnya seperti variabel biasa, dimana kita bisa
mengubah nilai element array sepanjang program, seperti contoh berikut:
1
#include <stdio.h>
2
3
int main(void)
4
{
5 float pecahan[] = {3.14,-99.01,0.002};
6
9 printf(" \n");
10
11 pecahan[1] = 9.123;
pecahan[2] = 12.9925;
12
13
printf("Isi array pecahan: ");
14
printf("%.3f, %.3f, %.3f \n",pecahan[0],pecahan[1],pecahan[2]);
15
16
return 0;
17
}
18
Setelah proses pendefinisian dan pengisian awal array pecahan, di tengah kode
program saya mengubah nilai dari pecahan[1] dan pecahan[2], akibatnya nilai
element array sebelumnya akan tertimpa dengan nilai baru ini.
Array merupakan sebuah konsep yang sangat menarik, karena kita bisa
menyimpan banyak nilai ke dalam 1 variabel saja.
Tidak berhenti sampai disini, array juga bisa dipakai untuk menampung nilai
dalam bentuk 2 dimensi atau lebih, dan inilah yang akan kita bahas dalam
tutorial selanjutnya: Pengertian Array 2 Dimensi dan contoh kode programnya
dalam bahasa C.
Dalam tutorial sebelumnya kita telah membahas pengertian dan contoh kode
program dari tipe data array dalam bahasa C. Untuk mengolah data yang lebih
kompleks, array ini bisa dibuat menjadi 2 dimensi atau lebih. Inilah yang akan
kita bahas dalam tutorial belajar bahasa pemrograman C di Duniailkom kali ini.
int bilangan[2][2];
Baris diatas akan membuat array 2 dimensi dengan nama variabel: bilangan.
Variabel bilangan ini akan berisi 4 element (2 x 2). Atau jika diibaratkan sebagai
matriks, disini kita membuat matriks 2 x 2.
Untuk mengakses setiap element array, penulisan index juga harus ditulis 2 kali,
seperti contoh berikut:
bilangan[0][0] = 100;
bilangan[0][1] = 101;
bilangan[1][0] = 110;
bilangan[1][1] = 111;
Kita akan lihat contoh praktek dari array 2 dimensi ini sesaat lagi.
Contoh Kode Program Array 2 Dimensi Bahasa C
Berikut contoh kode program pertama dari pembuatan array 2 dimensi di dalam
bahasa C:
1
#include <stdio.h>
2
3
int main(void)
4
{
5 int bilangan[2][2];
6
7 bilangan[0][0] = 100;
8 bilangan[0][1] = 101;
9 bilangan[1][0] = 110;
10 bilangan[1][1] = 111;
11
printf("Isi array bilangan: \n");
12
printf("%d, %d \n",bilangan[0][0],bilangan[0][1]);
13
printf("%d, %d \n",bilangan[1][0],bilangan[1][1]);
14
15
return 0;
16
}
17
Di awal kode program, saya membuat array bilangan dengan perintah int
bilangan[2][2];. Artinya, array bilangan adalah sebuah array 2 dimensi dengan 4
element. Proses pengisian setiap element array dilakukan setelahnya, kemudian
ditampilkan dengan perintah printf.
Pengisian element array 2 dimensi juga bisa dilakukan pada saat array itu di
definisikan, seperti contoh berikut:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int matrix[2][3] = {{1,2,3},{7,8,9}};
10
return 0;
11
}
12
Kali ini saya membuat sebuah array matrix dengan perintah int matrix[2][3] =
{{1,2,3},{7,8,9}};. Perintah ini akan membuat array 2 dimensi dengan total 6
element (hasil dari 2*3). Selain itu proses pengisian nilai juga dilakukan langsung
pada saat pendefinisian array.
Tanda kurung kurawal sebagai pemisah nilai array bersifat opsional dan boleh
tidak ditulis. Saya juga bisa mengisi array tersebut dengan perintah berikut:
int matrix[2][3] = {1,2,3,7,8,9};
int matrix[2][3][4]
int matrix[2][3][4][5]
1 #include <stdio.h>
3 int main(void)
{
4
int matrix[2][3][4] =
5
{
6
{ {7, 4, 12, 3}, {-9, 29, 3, 11}, {6, 34, 23, 20} },
7
{ {6, 15, 1, 5}, {17, 8, -3, 15}, {99, -1, 44, 9} }
8 };
9
10
15
16 return 0;
}
17
Disini saya membuat array matriks 3 dimensi dengan perintah int matrix[2][3][4],
artinya array ini akan menampung 2*3*4 = 24 element, mulai dari element [0][0]
[0], [0][0][1], [0][0][2] hingga [1][2][3]. Ingat, penulisan nomor index dimulai dari 0.
Karena jumlah element array ini cukup banyak, saya hanya menampilkan
beberapa nilai saja menggunakan perintah printf. Meskipun begitu saya yakin
anda bisa menampilkan seluruh nilai element array ini. Caranya, cukup dengan
mengubah nomor index.
Array 2 dimensi dalam bentuk matriks sangat sering dipakai untuk latihan logika.
Soal-soal olimpiade komputer tidak jarang menggunakan array 2 dimensi seperti
ini, dimana kita disuruh untuk menebak berapa hasil akhir array setelah
serangkaian proses tertentu.
Selanjutnya, kita akan bahas tipe data String dalam bahasa C, yang tidak lain
adalah array dari tipe data char.
Tutorial Belajar C Part 20: Pengertian dan Contoh Kode
Program Tipe Data String
05 Oct 18 | Andre | Tutorial C | 9 Comments
Kali ini kita akan lanjut membahas tipe data String dalam bahasa pemrograman
C, yakni tentang Pengertian dan Contoh Kode Program Tipe Data String.
1 #include <stdio.h>
2
3 int main(void)
4 {
7
return 0;
8
}
9
Di baris 5 saya membuat array foo yang bisa berisi 8 element, isi array foo ini
berupa 8 buah tipe data char, yakni huruf ‘b’, ‘e’, ‘l’, ‘a’, ‘j’, ‘a’, ‘r’, dan ‘\0’. Ini
dipakai untuk membuat sebuah string “belajar”.
Nanti dulu, kenapa ada tambahan ‘\0’ di bagian akhir?
Ini adalah salah satu syarat pembuatan string di dalam bahasa C. Semua string
harus memiliki karakter “khusus” untuk menandakan akhir dari string. Tanda ‘\
0’ mewakili karakter null yang dipakai oleh compiler bahasa C sebagai tanda
akhir sebuah string.
Karena alasan ini pula saya harus membuat array foo sebagai foo[8], yakni
sebuah array dengan 8 element, meskipun “belajar” hanya terdiri dari 7 karakter,
bukan 8.
Ketika di tampilkan dengan perintah printf di baris 6, tipe data string memiliki
kode tersendiri, yakni %s.
Bagaimana jika ternyata array foo di set dengan ukuran yang lebih kecil daripada
yang seharusnya? Mari kita coba:
1 #include <stdio.h>
2
3 int main(void)
4 {
7
return 0;
8
}
9
Hasilnya variabel foo berisi string “belaj$”, tanda $ di sini menandakan bahwa
ada sesuatu yang salah. Selain itu di bagian bawah Code::Block tampil pesan
peringatan: “warning: excess elements in array initializer”, yup ini karena array kita
tidak bisa menampung semua karakter.
Karena string pada dasarnya sebuah array, kita bisa akses setiap element string
sebagaimana layaknya sebuah array:
1
#include <stdio.h>
2
3
int main(void)
4 {
5 char foo[8] = {'b','e','l','a','j','a','r','\0'};
11
return 0;
12
}
13
1 #include <stdio.h>
2
3 int main(void)
4 {
8
return 0;
9
}
10
Jika ditulis seperti ini, kita tidak perlu menambah karakter null atau ‘\0’ di akhir
string. String “Duniailkom” terdiri dari 10 karakter, tapi saya tetap harus
membuat variabel foo[11] karena karakter null akan ditambahkan secara
otomatis sebagai karakter ke-11.
Lebih jauh lagi, jumlah element array pun sebenarnya boleh tidak ditulis:
1
#include <stdio.h>
2
3 int main(void)
4 {
return 0;
9
}
10
Secara otomatis compiler bahasa C akan mengisi jumlah element
array foo sesuai dengan jumlah karakter string, ditambah 1 untuk karakter null.
Di baris 8 saya menggunakan operator sizeof untuk mencari ukuran string foo,
hasilnya “Panjang string adalah 24”, yakni total string “Belajar C di Duniailkom”
sebanyak 23 karakter + 1 karakter null.
Dalam tutorial kali ini kita telah membahas pengertian dan cara penggunaan
tipe data string dalam bahasa C, atau lebih tepat disebut sebagai array of
char (array dari tipe data char).
Berikutnya saya masih ingin membahas tipe data string ini, yakni cara membaca
dan menampilkan tipe data string menggunakan perintah scanf dan gets.
Dalam tutorial sebelumnya, kita telah membahas pengertian dan cara penulisan
tipe data string dalam bahasa C. Karena tipe data string ini cukup sering dipakai,
saya akan bahas sedikit tentang Cara Membaca String dengan scanf dan
gets karena ada perbedaan yang cukup penting.
3
int main(void)
4
{
5 int harga;
6
8 scanf("%d",&harga);
10 printf("\n");
printf("\n");
12
13
return 0;
14
}
15
Cara yang sama juga bisa dipakai untuk tipe data string, seperti contoh berikut:
1 #include <stdio.h>
3 int main(void)
{
4
char nama[20];
5
printf("Input nama: ");
6
scanf("%s",nama);
7
8
printf("\n");
9
printf("Selamat belajar %s \n", nama);
10
return 0;
11 }
12
3
int main(void)
4 {
5 char nama[20];
7 gets(nama);
9 printf("\n");
Dalam contoh kasus ini kita bisa melihat batasan dari perintah scanf. Untuk
pembacaan tipe data string, sebaiknya gunakan fungsi gets daripada scanf.
Berikutnya, kita masih membahas seputar string dalam bahasa C, yakni Cara
Mengubah Isi String dengan Fungsi strcpy.
Tutorial bahasa C kali ini masih membahas tentang string. Jika sebelumnya kita
mempelajari cara pembacaan string yang tidak cukup dengan
perintah scanf saja, kali ini akan dibahas tentang cara mengubah isi string yang
juga butuh perlakuan khusus.
1 #include <stdio.h>
2
3 int main(void)
4 {
5 char nama[20];
return 0;
9
}
10
Error di atas terjadi karena di dalam bahasa C kita tidak bisa langsung
mengubah isi array. Operasi pemberian nilai nama = “Andika Putra” tidak bisa
dipakai. Solusinya, harus menggunakan function strcpy.
3 int main(void)
4 {
5 char nama[20];
return 0;
9
}
10
Sekarang proses pemberian nilai baru ke dalam variabel nama sudah berhasil.
Fungsi strcpy butuh 2 buah “nilai” atau dalam istilah programming butuh 2 buah
“argumen“. Argumen ini ditulis dalam tanda kurung. Perintah strcpy(nama, “Andika
Putra”) artinya copy string “Andika Putra” ke dalam variabel nama.
Proses pertukaran nilai string ini juga bisa dilakukan beberapa kali, seperti
contoh berikut:
1 #include <stdio.h>
3 int main(void)
{
4
char nama[20];
5
6
strcpy(nama, "Andika Putra");
7
printf("Selamat belajar %s \n", nama);
8
9
strcpy(nama, "Alex Firmansyah");
10
11 printf("Selamat belajar %s \n", nama);
12
15
16 return 0;
}
17
1
#include <stdio.h>
2
3 int main(void)
4 {
5 char nama[20] = "Andika Putra";
8 nama[0] = 'I';
10
return 0;
11
}
12
Di baris 8, saya mengubah nilai karakter pertama dari string nama dengan huruf
‘I’, sehingga isi variabel nama berubah menjadi “Indika Putra”. Artinya, kita tetap
bisa mengubah setiap element array nama secara langsung, tapi tidak bisa
mengubah keseluruhan string (harus menggunakan function strcpy).
Dalam lanjutan tutorial belajar bahasa pemrograman C di Duniailkom kali ini kita
telah membahas cara mengubah string dengan fungsi strcpy. Berikutnya akan
dibahas tentang tipe data struct bahasa C.
1
2 #include <stdio.h>
3
4 struct Siswa {
5 char nama[50];
6 char sekolah[50];
7 unsigned int uangSaku;
};
8
9
int main(void)
10 {
11 struct Siswa siswa01;
12
13 strcpy(siswa01.nama, "Andi Permana Nugroho");
14 strcpy(siswa01.sekolah, "SMA 1 Lumut Ijo");
siswa01.uangSaku = 10000;
15
16 printf("%s bersekolah di %s ", siswa01.nama, siswa01.sekolah);
17 printf("dengan uang saku %i per hari\n", siswa01.uangSaku);
18
19 return 0;
20 }
21
Hasil Kode Program:
Proses pembuatan tipe data struct ditulis sebelum main(), yang dalam contoh
ada di baris 3 – 7.
Setelah keyword struct, diikuti dengan nama identitas atau nama tipe data yang
kita inginkan. Dalam contoh ini saya membuat tipe data Siswa. Tentu saja anda
bisa menggunakan nama lain.
Sebuah struct terdiri dari berbagai variabel yang ditulis di antara tanda kurung
kurawal. Untuk tipe data struct Siswa, saya membuat
variabel nama, sekolah dan uangSaku. Setiap variabel tetap ditulis tipe data
asalnya.
Perintah di baris 3 – 7 dipakai untuk membuat struktur dasar struct. Agar bisa
digunakan, kita harus membuat variabel baru dengan tipe data Siswa, yakni tipe
data bentukan dari struct.
Andi Permana bersekolah di SMA 1 Lumut Ijo dengan uang saku 10000 per hari
Lisa Permata Sari bersekolah di SMA 1 Biru Langit dengan uang saku 30000 per hari
Jessica Stephany bersekolah di SMA 1 Merah Jambu dengan uang saku 75000 per hari
Kode program diatas memang cukup panjang karena ada 3 data siswa yang
harus diisi. Namun ini hanya pengembangan dari kode program kita
sebelumnya.
1 #include <stdio.h>
2
struct Siswa {
3 char nama[50];
4 char sekolah[50];
5 unsigned int uangSaku;
6 };
7
8 int main(void)
9 {
struct Siswa siswa01;
10
11 printf("==++ Pendaftaran Siswa Baru ++== \n");
12 printf("\n");
13
14
15
16 printf("Nama: ");
gets(siswa01.nama);
17
18 printf("Sekolah: ");
19 gets(siswa01.sekolah);
20
21 printf("Uang saku: ");
22 scanf("%i",&siswa01.uangSaku);
23
24 printf("Hasil: \n");
25
printf("%s bersekolah di %s ", siswa01.nama, siswa01.sekolah);
26 printf("dengan uang saku %i per hari\n", siswa01.uangSaku);
27
28 return 0;
29 }
30
31
Hasil Kode Program:
Saya masih menggunakan struct Siswa, dan juga variabel siswa01. Bedanya,
proses input dilakukan dari fungsi gets dan scanf.
Ketika program dijalankan, user akan diminta untuk mengisi
data nama, sekolah dan uangSaku. Ketiga data ini akan disimpan ke
dalam siswa01.nama, siswa01.sekolah, dan siswa01.uangSaku.
Dalam tutorial ini kita telah membahas salah satu tipe data bentukan dalam
bahasa C, yakni struct. Berikutnya akan dijelaskan tentang Pengertian Typedef
dan Cara Penggunaan Typedef Struct
Tutorial Belajar C Part 24: Pengertian Typedef dan Cara
Penggunaan Typedef Struct
22 Oct 18 | Andre | Tutorial C | 3 Comments
Kali ini kita tidak membahas tipe data bahasa pemrograman C, tapi perintah
atau keyword typedef serta typedef struct yang sering dipakai pada saat
pendefinisian type data dalam bahasa C.
Berikut contohnya:
1 #include <stdio.h>
5
int main(void)
6
{
7
angkaBulatPositif a;
8
angkaPecahan b;
9
10 a = 123456;
11
printf("Isi variabel a: %d \n",a);
12
13
b = 23.4513;
14
printf("Isi variabel b: %.2f \n",b);
15
16
return 0;
17 }
18
Di sini saya membuat 2 tipe data alias, yakni angkaBulatPositif sebagai nama lain
dari unsigned int, serta angkaPecahan sebagai nama lain dari float (baris 3 dan 4)
Kedua “tipe data baru” ini dipakai untuk mendefinisikan variabel a dan b di baris
8 – 9. Hasilnya tidak berbeda dengan tipe data asli tersebut.
Anda juga bisa membuat nama alias dari tipe data lain, sekedar supaya
penulisannya lebih singkat atau agar lebih mudah dipahami.
3 struct Siswa {
4 char nama[50];
5
char sekolah[50];
6
unsigned int uangSaku;
7
};
8
9
int main(void)
10
{
11 struct Siswa siswa01;
12
15 siswa01.uangSaku = 10000;
16
printf("%s bersekolah di %s ", siswa01.nama, siswa01.sekolah);
17
printf("dengan uang saku %i per hari\n", siswa01.uangSaku);
18
19
return 0;
20
}
21
Kode program ini sama seperti yang kita pelajari pada tutorial
sebelumnya: Pengertian dan Contoh Kode Program Tipe Data Struct.
Sekarang dengan tambahan perintah typedef, saya bisa tulis seperti ini:
1 #include <stdio.h>
3 struct Siswa {
4
char nama[50];
5
char sekolah[50];
6
unsigned int uangSaku;
7
};
8
9
typedef struct Siswa biodataSiswa;
10
11
int main(void)
12 {
13 biodataSiswa siswa01;
14
17 siswa01.uangSaku = 10000;
18
printf("%s bersekolah di %s ", siswa01.nama, siswa01.sekolah);
19
printf("dengan uang saku %i per hari\n", siswa01.uangSaku);
20
21
return 0;
22
}
23
4 char nama[50];
5 char sekolah[50];
} biodataSiswa;
7
8
9
int main(void)
10
{
11 biodataSiswa siswa01;
12
15 siswa01.uangSaku = 10000;
16
19
return 0;
20
}
21
Seperti yang bisa kita lihat, perintah typedef ini tidak lain untuk membuat alias
atau nama lain dari sebuah tipe data. Ini biasa dipakai untuk mempersingkat
penulisan, atau agar tipe data menjadi semakin jelas. Meskipun ini juga bisa
membawa efek negatif karena seseorang yang membaca kode program bisa
saja bingung apa itu tipe data “angkaBulatPositif“, dibandingkan “unsigned int“.
Berikutnya kita akan membahas tentang tipe data Boolean dalam bahasa
pemrograman C.
Lanjutan tutorial bahasa pemrograman C kali ini akan membahas tipe data
Boolean dan cara penggunaan tipe data Boolean dalam bahasa pemrograman
C.
Pengertian Tipe Data Boolean
Tipe data boolean sebenarnya sangat sederhana. Tipe data ini hanya bisa diisi
dengan salah satu dari 2 nilai: TRUE atau FALSE. Tipe data boolean banyak
dipakai dalam percabangan kode program, atau untuk memutuskan apa yang
harus dijalankan pada sebuah kondisi if else.
Sebagai contoh, kita bisa membuat kode program untuk menentukan apakah
sebuah angka genap atau ganjil berdasarkan input dari pengguna. Untuk
keperluan ini kita harus memeriksa apakah angka itu bisa dibagi 2 (untuk angka
genap), atau tidak bisa dibagi 2 (untuk angka ganjil). Tipe data boolean bisa
digunakan untuk menampung kondisi seperti ini, benar atau salah
(True atau False).
Contoh penggunaan tipe data boolean akan lebih jelas jika anda telah
mempelajari operator perbandingan, serta percabangan program seperti if else.
3 int main(void)
{
4
int a;
5
6
a = 5 == 5;
7
printf("Isi variabel a: %d \n",a);
8
9
a = 5 > 5;
10 printf("Isi variabel a: %d \n",a);
11
12 return 0;
13 }
14
Berikut contoh penggunaan tipe data integer dalam berbagai kondisi if:
1 #include <stdio.h>
3 int main(void)
{
4
if (1) {
5
printf("Ini akan ditampilkan...\n");
6
}
7
8
if (30) {
9 printf("Ini juga akan ditampilkan...\n");
10 }
11
12 if (-8) {
14 }
15
if ('A') {
16
printf("Ini juga tetap akan masih ditampilkan...\n");
17
18
}
19
20
if (0) {
21
printf("Ini tidak akan tampil...\n");
22
}
23
return 0;
24 }
25
Kita memang belum membahas tentang kondisi if, tapi di sini saya ingin
menunjukkan bahwa dalam bahasa C, angka integer bisa dipakai sebagai
pengganti tipe data boolean.
Angka 1, 30, -8 dan karakter ‘A’ semua dianggap sebagai boolean true.
Semuanya akan menampilkan teks karena kondisi if memenuhi syarat.
Sedangkan angka 0 dianggap sebagai false sehingga perintah printf di baris 22
tidak akan dijalankan.
3 #define true 1
#define false 0
4
5
6
int main(void)
7
{
8
9 if (true) {
10 printf("Ini akan ditampilkan...\n");
11 }
12
13 if (false) {
}
15
return 0;
16
}
17
Di awal kode program, saya membuat 2 konstanta, yakni true dan false yang
masing-masingnya berisi angka integer 1 dan 0. Kemudian konstanta true dan
false ini dipakai dalam kondisi if. Ini bisa berjalan tapi sedikit “dipaksakan”.
Alternatif yang lebih baik adalah dengan tambahan file header stdbool.h. Header
ini tersedia untuk compiler C99 ke atas. Bisa dibilang bahwa ini adalah cara
“standar” untuk membuat tipe data boolean dalam bahasa C:
1 #include <stdio.h>
2 #include <stdbool.h>
3
int main(void)
4
{
5
bool a,b;
6
a = true;
7
b = false;
8
9 if (a) {
10 printf("Ini akan ditampilkan...\n");
11 }
12
13
if (b) {
14
printf("Ini tidak akan tampil...\n");
15
}
16
return 0;
17
}
18
Dalam tutorial ini kita telah membahas salah satu tipe data Boolean dalam
bahasa C. Tutorial ini juga mengakhiri pembahasan tentang tipe data, dimana
kita telah mempelajari tipe data char, integer, float, array, string dan struct.
Berikutnya akan masuk ke pembahasan tentang Jenis-jenis operator dalam
bahasa pemrograman C.
Operator Aritmatika
Operator Increment dan Decrement
Operator Perbandingan / Relasional
Operator Logika / Boolean
Operator Bitwise
Operator Assignment
Operator Lainnya
Daftar di atas bisa saja berbeda karena cara pengelompokkan yang dipakai,
misalnya operator increment atau decrement kadang dimasukkan ke dalam
operator artmatika. Kita akan bahas sekilas tentang pengertian dari operator-
operator ini.
Operator Aritmatika
Operator aritmatika adalah operator yang biasa kita temukan untuk operasi
matematika. Aritmatika sendiri merupakan cabang ilmu matematika yang
membahas perhitungan sederhana, seperti kali, bagi, tambah dan kurang
(kabataku)
Selain keempat operasi tersebut, bahasa C juga memiliki operasi modulo division,
atau operator % yang dipakai untuk mencari sisa hasil bagi.
Tabel berikut merangkum operator aritmatika dalam bahasa pemrograman C:
Operator Bitwise
Bitwise adalah operator khusus untuk menangani operasi logika bilangan biner
dalam bentuk bit.
Bilangan biner sendiri merupakan jenis bilangan yang hanya terdiri dari 2 jenis
angka, yakni 0 dan 1. Jika nilai asal yang dipakai bukan bilangan biner, akan
dikonversi secara otomatis oleh compiler C menjadi bilangan biner. Misalnya 7
desimal = 0111 dalam bilangan biner.
Bahasa C mendukung 6 jenis operator bitwise. Daftar lengkapnya dapat dilihat
pada tabel berikut:
Operator Assignment
Operator assignment adalah operator yang digunakan untuk memberikan nilai
ke dalam suatu variabel. Di dalam bahasa C, operator assignment menggunakan
tanda sama dengan ” = “. Nantinya juga terdapat operator assignment
gabungan, seperti ” += “, ” -= “, dsb.
Operator Lainnya
Operator Lainnya ini adalah kelompok operator khusus yang tidak termasuk ke
dalam kelompok sebelumnya, diantaranya adalah operator sizeof dan operator
ternary ” ? : “.
Kita akan mulai dengan operator aritmatika terlebih dahulu: Jenis-jenis Operator
Aritmatika Bahasa C.
OperatorPenjelasan Contoh
+ Penambahan a=5+2
– Pengurangan a=5–2
* Perkalian a=5*2
/ Pembagian (real/pecahan)a = 5 / 2
% Sisa hasil bagi (modulus) a = 5 % 2
Operator Aritmatika Unary
OperatorPenjelasan Contoh
+ Positif (plus) +5
– Negatif (min)-3
Kita akan bahas dengan contoh kode program sesaat lagi.
1 #include <stdio.h>
2
int main(void)
3 {
4 int a, b, c, d, e, f;
5
6 a = 8 + 4;
7 b = 9 - 2;
8 c = 2 * 3;
9
10 d = 10 + 3 - 7 * 4;
11 e = ( ( 10 +3 ) -7) * 4;
12 f = -79;
13
14 printf("Isi variabel a: %d \n",a);
printf("Isi variabel b: %d \n",b);
15 printf("Isi variabel c: %d \n",c);
16 printf("Isi variabel d: %d \n",d);
17 printf("Isi variabel e: %d \n",e);
18 printf("Isi variabel f: %d \n",f);
19
20 return 0;
}
21
22
1 #include <stdio.h>
2
int main(void)
3
{
4 int a, b, c;
5
6 a = 8 / 4;
7 b = 8 / 3;
8 c = 8 / 2;
9
printf("Isi variabel a: %d \n",a);
10 printf("Isi variabel b: %d \n",b);
11
12 printf("Isi variabel c: %d \n",c);
13 return 0;
14 }
15
Di sini saya membuat 3 variabel integer: a, b, c. Untuk operasi a dan c tidak ada
masalah, hasilnya sesuai dimana 8 / 4 = 2 dan 8 /2 = 4.
Tapi kenapa 8 / 3 menghasilkan angka 2? Mungkin ini karena b di set
sebagai integer, bukan float atau double. Mari kita ubah tipe datanya:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 double a;
6 a = 8 / 3;
7
printf("Isi variabel a: %f \n",a);
8
return 0;
9 }
10
Mengapa hasilnya tetap 2? Ini terjadi karena bahasa C melihat tipe data operand
yang dipakai. Di sini operand nya adalah 8 dan 3 yang merupakan integer (angka
bulat).
Agar operasi pembagian menghasilkan nilai float, kedua operand harus ditulis
dalam format pecahan, yakni 8.0 dan 3.0. Berikut hasilnya:
1 #include <stdio.h>
2
int main(void)
3
4 {
5 double a;
6 a = 8.0 / 3.0;
7
8 printf("Isi variabel a: %f \n",a);
return 0;
9
}
10
Hasil kode program:
1
2 #include <stdio.h>
3
4 int main(void)
5 {
int a, b, c, d;
6
7 a = 8 % 4;
8 b = 8 % 5;
9 c = 10 % 2;
10 d = 100 % 7;
11
printf("Isi variabel a: %d \n",a);
12 printf("Isi variabel b: %d \n",b);
13 printf("Isi variabel c: %d \n",c);
14 printf("Isi variabel d: %d \n",d);
15
16 return 0;
17 }
18
Hasil kode program:
Isi variabel a: 0
Isi variabel b: 3
Isi variabel c: 0
Isi variabel d: 2
Operator modulus ini cukup sering dipakai, misalnya menentukan sebuah
bilangan genap atau ganjil. Untuk keperluan ini kita bisa memeriksa apakah a %
2 menghasilkan 0? Jika iya, maka a berisi bilangan genap.
Dalam tutorial bahasa C kali ini kita telah membahas cara penggunaan operator
aritmatika. Selain itu juga disinggung cara penggunaan operasi pembagian
bahasa C yang butuh sedikit trik, serta pengertian dari operator modulus.
Melanjutkan materi tentang operator dalam bahasa pemrograman C, kali ini kita
akan membahas Jenis-jenis Operator Increment dan Decrement dalam Bahasa
C. Beberapa sumber ada yang mengelompokkan operator ini ke dalam operator
aritmatika, namun saya akan memisahkannya menjadi bahasan tersendiri.
Untuk melihat apa perbedaan dari setiap operator akan kita bahas dengan
contoh kode program.
1
#include <stdio.h>
2
3
int main(void)
4 {
5 int a = 5;
6 a++;
9 int b = 5;
++b;
10
printf("Isi variabel b: %d \n",b);
11
12
return 0;
13
}
14
Di sini saya mengisi angka 5 sebagai nilai awal untuk variabel a dan b. Hasilnya,
setelah operasi a++ dan ++b, kedua variabel sama-sama berisi angka 6. Artinya
variabel a dan b akan bertambah 1 angka.
Hal yang sama juga berlaku di decrement:
1
#include <stdio.h>
2
3
int main(void)
4 {
5 int a = 5;
6 a--;
9 int b = 5;
--b;
10
printf("Isi variabel b: %d \n",b);
11
12
return 0;
13
}
14
1 Isi variabel a: 4
2 Isi variabel b: 4
Saya kembali mengisi angka 5 sebagai nilai awal untuk variabel a dan b. Hasilnya,
setelah operasi a-- dan --b, kedua variabel sama-sama berisi angka 4. Artinya
variabel a dan b akan berkurang 1 angka.
2
int main(void)
3
4 {
5 int a = 5;
10
printf("\n");
11
12
int b = 5;
13
printf("Pre Increment \n");
14 printf("Isi variabel b: %d \n",b);
15 printf("Isi variabel b: %d \n",++b);
17
18 return 0;
19 }
20
Perbedaannya ada di baris 8 dan 16, yakni ketika kita akses langsung pada saat
operasi increment dilakukan.
Terlihat bahwa post-increment (a++), akan menampilkan hasilnya terlebih dahulu,
baru nilai variabel a naik 1 angka, namun dengan pre-increment (++b), variabel b
akan ditambahkan 1 angka, baru nilainya ditampilkan.
Begitu juga hal nya dengan operasi post-decrement dan pre-decrement:
1
#include <stdio.h>
2
3
int main(void)
4
{
5
int a = 5;
6
printf("Post Decrement \n");
7 printf("Isi variabel a: %d \n",a);
8 printf("Isi variabel a: %d \n",a--);
10
11 printf("\n");
12
13 int b = 5;
18
return 0;
19 }
20
Post Decrement
Isi variabel a: 5
Isi variabel a: 5
Isi variabel a: 4
Pre Decrement
Isi variabel b: 5
Isi variabel b: 4
Isi variabel b: 4
Terlihat bahwa post-decrement (a--), akan menampilkan hasilnya terlebih
dahulu, baru nilai variabel a dikurangi 1 angka. Dengan pre-decrement ( --b),
variabel b langsung dikurangi 1 angka, lalu nilainya ditampilkan.
Operator increment dan decrement yang kita bahas disini nantinya banyak di
terapkan dalam perulangan (looping). Selain itu kebiasaan banyak programmer
lebih sering menggunakan post-increment (a++) dan post-decrement (a--). Nama
bahasa pemrograman C++ juga terinspirasi dari post increment dari bahasa C,
yakni penambahan dari bahasa C.
Berikutnya, kita akan masuk ke Operator Perbandingan atau Operator
Relasional Bahasa C.
OperatorPenjelasan ContohHasil
1 #include <stdio.h>
3 int main(void)
{
4
int a;
5
6
a = 5 == 5;
7
printf("Isi variabel a: %d \n",a);
8
9
a = 5 != 5;
10 printf("Isi variabel a: %d \n",a);
11
12 a = 5 > 5;
14
15 a = 5 >= 5;
17
a = 5 < 5;
18
printf("Isi variabel a: %d \n",a);
19
20
21 a = 5 <= 5;
23
24 return 0;
25 }
26
3 int main(void)
{
4
int a;
5
6
a = 'a' == 'a';
7
printf("Isi variabel a: %d \n",a);
8
9
a = 'A' != 'B';
10 printf("Isi variabel a: %d \n",a);
11
12
a = "Duniailkom" == "duniailkom";
13
printf("Isi variabel a: %d \n",a);
14
15
a = 'A' > 'B';
16
printf("Isi variabel a: %d \n",a);
17
18
return 0;
19 }
20
1 Isi variabel a: 1
2 Isi variabel a: 1
3 Isi variabel a: 0
4 Isi variabel a: 0
Jika yang dibandingkan berupa karakter, hasilnya dilihat dari urutan karakter
ASCII. Dalam tabel ASCII, karakter ‘A’ memiliki nomor urut yang lebih rendah
daripada ‘B’, sehingga ‘A’ > ‘B’ adalah false (0).
3 int main(void)
{
4
int a;
5
6
printf("Input angka sembarang: ");
7
scanf("%d",&a);
8
9
if (a % 2 == 0) {
10 printf("%d adalah angka genap \n",a);
11 }
12 else {
13
printf("%d adalah angka ganjil \n",a);
14
}
15
16
return 0;
17
}
18
Kita memang belum membahas tentang struktur if, tapi konsepnya cukup
sederhana. Di awal kode program saya meminta user untuk menginput sebuah
angka. Angka ini kemudian disimpan ke dalam variabel a hasil dari
perintah scanf(“%d”,&a).
Pada baris 10, saya melakukan sebuah operasi perbandingan: if (a % 2 == 0)?
Yakni apakah a habis dibagi 2? Jika anda ragu dengan tanda %, itu adalah
operator modulus yang pernah kita bahas dalam tutorial operator aritmatika.
Kondisi di atas hanya akan true (1) jika a diisi dengan angka genap. Jika ini yang
terjadi, jalankan perintah printf(“%d adalah angka genap \n”,a). Jika hasilnya false,
jalankan printf(“%d adalah angka ganjil \n”,a). Inilah salah satu penerapan dari
operasi perbandingan / relasi.
Dalam tutorial kali ini kita telah membahas pengertian dan cara penggunaan
operator perbandingan dalam bahasa C. Berikutnya, saya akan
membahas operator logika.
1
2 #include <stdio.h>
3
4 int main(void)
{
5 int a;
6
7 a = (0 && 1) || (1 || 0);
8 printf("Isi variabel a: %d \n",a);
9
10 a = !0 && (0 || 1);
printf("Isi variabel a: %d \n",a);
11
12
a = ((1 && 1) || (1 || 0)) && !1;
13 printf("Isi variabel a: %d \n",a);
14
15 return 0;
16 }
17
Hasil kode program:
1 Isi variabel a: 1
Isi variabel a: 1
2 Isi variabel a: 0
3
Untuk operasi seperti ini, akan diproses dari kiri ke kanan, kecuali ditemukan
tanda kurung maka itulah yang akan diproses terlebih dahulu.
1
2 #include <stdio.h>
3
4 int main(void)
5 {
int a;
6
7 a = (5 > 4) && (10 > 9);
8 printf("(5 > 4) && (10 > 9): %d \n",a);
9
10 a = (15 <= 15) && (15 < 15);
11 printf("(15 <= 15) && (15 < 15): %d \n",a);
12
a = ('a' == 'a') || ('a' == 'b');
13 printf("'a' == 'a') || ('a' == 'b'): %d \n",a);
14
15 a = (10 > 7) && ('duniailkom' == 'duniailkom');
16 printf("(10 > 7) && ('duniailkom' == 'duniailkom'): %d \n",a);
17
18 return 0;
19 }
20
Di baris 7, operasi (5 > 4) && (10 > 9) akan diproses menjadi 1 && 1,
hasilnya 1.
Di baris 10, operasi (15 <= 15) && (15 < 15) akan diproses menjadi 1 && 0,
hasilnya 0.
Di baris 13, operasi (‘a’== ‘a’) || (‘a’ == ‘b’) akan diproses menjadi 1 || 0,
hasilnya 1.
Di baris 16, operasi (10 > 7) && (‘duniailkom’ == ‘duniailkom’) akan diproses
menjadi 1 && 1, hasilnya 1.
Sama seperti operasi perbandingan, operasi logika ini akan banyak dipakai pada
percabangan kode program, misalnya untuk bisa login seseorang harus memiliki
username DAN password yang sesuai. Jika salah satu saja tidak terpenuhi, maka
tidak bisa login.
1 #include <stdio.h>
3 int main(void)
{
4
int a, b, hasil;
5
6
a = 181;
7
b = 108;
8
9
printf("=== Operator Bitwise Bahasa C === \n\n");
10
11 hasil = a & b;
12 printf("a & b: %d \n",hasil);
13
14 hasil = a | b;
15 printf("a | b: %d \n",hasil);
16
17 hasil = a ^ b;
printf("a ^ b: %d \n",hasil);
18
19
20
21 hasil = ~a;
printf("~a: %d \n",hasil);
22
23
hasil = a >> 1;
24
printf("a >> 1: %d \n",hasil);
25
26
hasil = b << 2;
27
printf("b << 2: %d \n",hasil);
28 return 0;
29 }
30
Di baris 12 saya melakukan operasi & (AND) terhadap kedua variabel. Operasi
bitwise “and” ini akan memproses bit per bit dari kedua variabel, jika kedua bit
sama-sama 1, maka hasilnya juga 1, selain kondisi tersebut, nilai akhirnya adalah
0. Berikut perhitungan bitwise “and”:
a = 10110101
b = 01101100
--------
Di baris 15 terdapat operasi | (OR), hasilnya akan bernilai 0 jika kedua bit bernilai
0, selain itu nilai bit akan di set menjadi 1. Berikut cara perhitungan bitwise “or”:
a = 10110101
b = 01101100
--------
Di baris 18 terdapat operasi ^ (XOR), hasilnya akan bernilai 1 jika salah satu dari
kedua variabel bernilai 1 (namun tidak keduanya). Atau dengan kata lain jika
kedua bit berlainan, hasilnya 1 tapi kalau sama-sama 0 atau sama-sama 1,
hasilnya 0.
Berikut cara perhitungan bitwise “xor”:
a = 10110101
b = 01101100
--------
Di baris 21, saya membuat operasi ~ atau not, yang akan membalikkan nilai bit
sebuah variabel dari 0 menjadi 1, dan 1 menjadi nol. Namun perhitungan bit not
ini sedikit membingungkan karena jika kita hanya membalikkan seluruh bit saja,
hasilnya tidak sesuai dengan apa yang dihitung oleh compiler C:
a = 10110101
--------
Dari hasil menjalankan program, dapat dilihat bahwa ~a = -182, dari manakah
datangnya angka -182?
Ini berkaitan dengan cara compiler bahasa C menyimpan angka biner (dan juga
hampir semua bahasa pemrograman komputer modern). Angka biner di dalam
bahasa C disimpan dalam format “Two’s complement”. Penjelasan tentang
“Two’s complement” ini cukup panjang, jika tertarik saya sudah membahasnya
lengkap di buku Pascal Uncover, atau bisa ke Two’s complement Wikipedia.
Secara singkat, rumusnya adalah -a - 1, sehingga ~a = -181 - 1 = -
182 (desimal)
Di baris 24, terdapat operator shift right “>>” dimana bahasa C akan menggeser
posisi bit dalam variabel a ke kanan sebanyak 1 tempat. Berikut proses yang
terjadi:
a = 10110101 = 181
a >> 1 = 1011010 = 90 (desimal)
Operator shift right menggeser nilai biner variabel a ke arah kanan, sehingga
digit paling kanan akan dihapus. Operator shift right ini akan menghasilkan nilai
asal / 2. Dalam contoh kita, hasilnya adalah 180/2 = 90 (dibulatkan). Setiap
penggeseran 1 tempat ke kanan akan membagi 2 nilai asal.
Di baris 27 adalah operator shift left “<<” dimana nilai variabel b akan digeser
sebanyak 2 digit ke kiri. Berikut proses yang terjadi:
b = 01101100 = 108
Ketika hasil pergeseran ke kiri, digit paling kanan akan diisi angka 0. Setiap
penggeseran 1 tempat ke kiri akan mengkali 2 nilai asal. Karena variabel b berisi
desimal 108, maka hasil dari << 2 sama dengan 108 * 2 = 216, 216 * 2 = 432.
Dalam tutorial kali ini kita telah mempelajari operator bitwise dalam bahasa
pemrograman C. Pada prakteknya, operator bitwise ini tidak terlalu sering
dipakai. Berikutnya akan dibahas tentang operator assignment atau operator
penugasan bahasa C.
Kode berikut:
a = 500;
Berarti “memasukkan nilai 500 ke dalam variabel a”. Dalam bahasa pseudo
code (jika anda membaca buku tentang algoritma), ini biasa ditulis dengan simbol
panah ke kiri:
a <- 500
1 #include <stdio.h>
3 int main(void)
{
4
int a, b, c, d, e;
5
a = 5;
6
b = 3;
7
b = b + 1;
8 c = a + b;
9 d = c + c + a;
10 e = (c + d)* a;
11
17
return 0;
18
}
19
20
Operato ContohPenjelasan
r
+= a += b a = a + b
-= a -= b a = a – b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
|= a |= b a = a | b
^= a ^= b a = a ^ b
1 #include <stdio.h>
3 int main(void)
{
4
int a = 10, b = 10, c = 10, d = 10, e = 10, f = 10;
5
6
printf("Operator assignment gabungan bahasa C \n");
7
printf("===================================== \n\n");
8
printf("Variabel a, b, c, d, e, f = 10 \n\n");
9 a += 5;
10 printf("Hasil operasi 'a += 5': %d \n",a);
11
12 b -= 3;
15
16 c *= 3;
18
d /= 3;
19
printf("Hasil operasi 'd /= 3': %d \n",d);
20
21
e %= 3;
22
printf("Hasil operasi 'e %= 3': %d \n",e);
23
24
f <<= 2;
25 printf("Hasil operasi 'f <<= 2': %d \n",f);
26
27 return 0;
28 }
29
Dalam kode program ini saya membuat 6 buah operator assignment gabungan.
Variabel a, b, c, d, e, dan f semuanya diisi dengan nilai awal 10, kemudian di
proses dengan berbagai operator assignment gabungan.
Tutorial operator assignment dan assignment gabungan kali ini menutup sesi
tentang operator bahasa C. Berikutnya kita akan masuk ke alur kondisi kode
program yang diawali dengan Percabangan Kondisi IF Bahasa C.
Mulai dari tutorial ini dan beberapa tutorial ke depan, kita akan mempelajari
struktur percabangan kode program dalam bahasa C. Sesi bahasan ini dibuka
dengan bentuk percabangan yang paling sederhana, yakni kondisi IF.
//Kode program yang akan dijalankan jika condition berisi nilai True (1)
3
int main(void)
4 {
5 int a = 12;
6 int b = 10;
8 if (a > b) {
}
10
11
return 0;
12
}
13
Di awal kode program saya mengisi variabel a dengan angka 12, dan
variabel b dengan angka 10. Kemudian di baris 8 terdapat kondisi if (a > b), yakni
apakah variabel a berisi angka yang lebih besar dari b? Apakah 12 lebih besar
dari 10? betul (true), maka blok kode program akan dijalankan.
Kita juga bisa membuat struktur if ini beberapa kali tergantung kebutuhan,
seperti contoh berikut:
1 #include <stdio.h>
3 int main(void)
{
4
int a = 12;
5
int b = 10;
6
7
8
if (a > b) {
9
printf("Variabel a lebih besar dari variabel b \n");
10 }
11 if (a < b) {
12 printf("Variabel a lebih kecil dari variabel b \n");
13 }
14 if (a == b) {
Kode program ini merupakan hasil modifikasi dari kode sebelumnya. Di sini saya
membuat 3 buah kondisi, yakni if (a > b), if (a < b), atau if (a == b). Setiap kondisi if
akan diperiksa, dan jika operasi perbandingan menghasilkan nilai true atau 1,
maka blok kode program tersebut akan diproses. Silahkan anda coba ubah isi
variabel a dan b untuk melihat blok kode program mana yang akan dijalankan.
Supaya lebih interaktif, saya bisa modifikasi kode di atas dengan meminta user
menginput angka ke dalam variabel a dan b:
1 #include <stdio.h>
3 int main(void)
{
4
int a, b;
5
6
printf("Input variabel a: ");
7
scanf("%d",&a);
8
9
printf("Input variabel b: ");
10 scanf("%d",&b);
11
12
13 printf("\n");
14
15 if (a > b) {
}
17
if (a < b) {
18
printf("Variabel a lebih kecil dari variabel b \n");
19
}
20
if (a == b) {
21 printf("Variabel a sama besar dengan variabel b \n");
22 }
23 return 0;
24 }
25
Selain tambahan perintah scanf agar user bisa menginput angka, kode program
kita masih sama seperti sebelumnya, yakni mencari variabel mana berisi angka
yang lebih besar.
Contoh terakhir, mari buat kode program yang bisa menebak apakah angka
yang diinput merupakan bilangan genap atau bilangan ganjil:
1 #include <stdio.h>
3 int main(void)
{
4
int a;
5
8 scanf("%d",&a);
9
printf("\n");
10
11
if (a % 2 == 0) {
12
printf("%d adalah angka genap \n", a);
13
}
14
if (a % 2 == 1) {
15 printf("%d adalah angka ganjil \n", a);
16 }
17
18 return 0;
19 }
20
Dalam tutorial kali ini kita akan membahas lanjutan dari kondisi percabangan
dalam bahasa C, yakni kondisi IF ELSE.
if (condition)
//Kode program yang akan dijalankan jika condition berisi nilai True (1)
else
//Kode program yang akan dijalankan jika condition berisi nilai False (0)
3 }
4 if (a % 2 == 1) {
}
6
Alur ini sebenarnya akan lebih sederhana (dan lebih efisien) jika kita ubah ke
dalam struktur IF ELSE.
Jika sebuah angka tidak genap, maka pasti itu adalah angka ganjil. Sehingga jika
kondisi if (a % 2 == 0) tidak terpenuhi (false), maka variabel a pasti berisi angka
ganjil. Dengan demikian kode programnya bisa saya tulis ulang sebagai berikut:
1 #include <stdio.h>
3 int main(void)
{
4
int a;
5
6
printf("Input sembarang angka: ");
7
scanf("%d",&a);
8
9
printf("\n");
10
11 if (a % 2 == 0) {
12 printf("%d adalah angka genap \n", a);
13 }
14 else {
}
16
17
18
return 0;
19
}
20
1 #include <stdio.h>
3 int main(void)
{
4
int a;
5
6
printf("Input nilai ujian: ");
7
scanf("%d",&a);
8
9
printf("\n");
10
11 if (a >= 75) {
12 printf("Selamat, anda lulus \n");
13 }
14 else {
}
16
17
18
return 0;
19
}
20
Di sini saya membuat kondisi if (a >= 75), yakni jika variabel a berisi angka lebih
besar atau sama dengan 75 maka jalankan perintah printf(“Selamat, anda lulus \
n”). Jika tidak, blok ELSE lah yang akan di eksekusi, yakni printf(“Maaf, silahkan
coba lagi tahun depan \n”).
Pada tutorial kali ini kita telah membahas kondisi percabangan IF ELSE bahasa C,
yang cocok dipakai jika ada 2 kondisi yang saling bertentangan: “Jika kondisi
sesuai jalankan kode ini, jika tidak jalankan kode lain”.
else if (condition_2) {
else if (condition_3) {
else {
1 #include <stdio.h>
2 int main(void)
{
3
char nilai;
4
6
printf("Input Nilai Anda (A - E): ");
7
scanf("%c",&nilai);
8
9
if (nilai == 'A' ) {
10 printf("Pertahankan! \n");
11 }
14 }
22 }
23 else {
28
Pertahankan!
Kebanyakan bolos...
3 int main(void)
{
4
int nilai;
5
6
printf("Input Nilai Anda (0 - 100): ");
7
scanf("%i",&nilai);
8
9
if (nilai >= 90 ) {
10 printf("Pertahankan! \n");
11 }
12 else if (nilai >= 80 && nilai < 90) {
14 }
}
21
else if (nilai < 40) {
22
printf("Kebanyakan bolos... \n");
23
}
24
else {
25
printf("Maaf, format nilai tidak sesuai \n");
26 }
27 return 0;
28 }
29
Di sini saya memodifikasi sedikit kode program kita sebelumnya. Sekarang nilai
inputan berupa angka antara 0 hingga 100. Angka inputan ini ditampung ke
dalam variabel nilai yang sekarang di set sebagai tipe data integer di baris 5.
Di baris 10, isi dari variabel nilai di periksa apakah berisi angka yang lebih dari
90. Jika iya, tampilkan teks “Pertahankan!”.
Jika kondisi di baris 10 tidak terpenuhi (yang artinya isi variabel nilai kurang dari
90), maka kode program akan lanjut ke kondisi ELSE IF berikutnya di baris 13.
Di sini saya menggabungkan dua buah kondisi menggunakan operator
logika && (yakni operator AND). Kondisi if(nilai >= 80 && nilai < 90) hanya akan
terpenuhi jika isi variabel nilai berada dalam rentang 80 sampai 89.
Ketika membuat kondisi perbandingan, kita harus hati-hati dengan penggunaan
tanda, apakah ingin menggunakan tanda lebih besar saja (>) atau tanda lebih
besar sama dengan (>=) karena bisa mempengaruhi hasil akhir.
Jika ternyata kondisi ini tidak dipenuhi juga (artinya isi variabel nilai kurang dari
80), program akan lanjut ke kondisi if(nilai >= 60 && nilai < 80) di baris 16, yakni
apakah nilai berada dalam rentang 60 – 79. Demikian seterusnya hingga kondisi
terakhir if(nilai < 40) di baris 22.
Jika semua kondisi tidak terpenuhi, jalankan block ELSE di baris 26.
Berikut hasil percobaan dari kode program di atas:
Pertahankan!
Kebanyakan bolos...
Yang cukup unik adalah, jika kita memberikan nilai di luar rentang 0 – 100, akan
tetap ditangkap oleh kondisi IF di baris 10 atau di baris 22:
Input Nilai Anda (0 - 100): 200
Pertahankan!
Kebanyakan bolos...
Ini terjadi karena nilai 200 tetap memenuhi syarat if (nilai >= 90), dan nilai -1000
juga tetap memenuhi syarat if (nilai < 40). Silahkan anda modifikasi kode
program di atas agar jika diinput angka di luar dari rentang 0 -100, akan tampil
teks “Maaf, format nilai tidak sesuai”. Untuk hal ini kita cuma perlu mengubah /
menambah 2 kondisi saja.
Dalam tutorial kali ini kita telah membahas tentang konsep struktur logika IF
ELSE IF, yang tidak lain berupa kondisi IF yang saling bersambung. Berikutnya
kita akan masuk ke struktur kondisi SWITCH, yang dalam banyak hal mirip
seperti IF ELSE IF.
Kondisi SWITCH CASE yang akan kita pelajari kali ini bisa dipakai sebagai
alternatif penulisan kondisi logika IF ELSE IF yang baru saja kita bahas.
Namun tidak semua kondisi IF ELSE IF bisa dikonversi ke dalam bentuk SWITCH
CASE. Apa saja itu? kita akan bahas dengan detail dalam lanjutan tutorial bahasa
pemrograman C kali ini.
case 'nilai_1':
break;
case 'nilai_2':
break;
case 'nilai_3':
break;
...
...
default:
// Kode program yang dijalankan jika tidak ada kondisi yang terpenuhi
2 int main(void)
{
3
char nilai;
4
5
printf("Input Nilai Anda (A - E): ");
6
scanf("%c",&nilai);
7
8
if (nilai == 'A' ) {
9 printf("Pertahankan! \n");
10 }
11 else if (nilai == 'B' ) {
13 }
21 }
22 else {
26 return 0;
27 }
28
Program yang sama bisa dikonversi ke dalam bentuk SWITCH CASE berikut:
1 #include <stdio.h>
3 int main(void)
{
4
char nilai;
5
6
printf("Input Nilai Anda (A - E): ");
7
scanf("%c",&nilai);
8
9
switch (nilai) {
10 case 'A':
11 printf("Pertahankan! \n");
12 break;
13 case 'B':
break;
15
case 'C':
16
printf("Perbanyak belajar \n");
17
break;
18
case 'D':
19 printf("Jangan keseringan main \n");
20 break;
21 case 'E':
23 break;
default:
24
printf("Maaf, format nilai tidak sesuai \n");
25
}
26
27
28
29 return 0;
30 }
31
Pertahankan!
Kebanyakan bolos...
Di baris 8 saya meminta user untuk menginput salah satu huruf antara ‘A’ – ‘E’.
Nilai huruf ini disimpan ke dalam variabel nilai yang di set dengan tipe data char.
Kondisi SWITCH CASE dimulai pada baris 10. Di sini terdapat perintah switch
(nilai), yang artinya saya ingin memeriksa isi dari variabel nilai. Seluruh block
SWITCH ini berada di dalam tanda kurung kurawal, yakni mulai dari baris 10
sampai 28.
Di baris 11 terdapat perintah case ‘A’: Ini artinya jika variabel nilai berisi karakter
‘A’, maka jalankan isi dari block CASE, yakni perintah printf(“Pertahankan! \n”).
Lalu terdapat perintah break di baris 13 agar struktur CASE lain tidak perlu di
proses lagi.
Di baris 14 terdapat perintah CASE kedua, yakni case ‘B’:. Sama seperti
sebelumnya, blok ini akan dijalankan jika variabel nilai berisi huruf ‘B’. Demikian
seterusnya sampai case ‘E’ : di baris 23.
Jika ternyata tidak ada nilai yang sesuai, maka block default di baris 26 yang akan
di eksekusi.
Struktur SWITCH CASE ini terlihat lebih rapi daripada struktur IF ELSE IF, dan
kadang kala bisa lebih efisien. Namun SWITCH CASE juga memiliki batasan, yakni
tidak bisa dipakai untuk kondisi yang lebih kompleks seperti perbandingan
dengan tanda lebih besar dari ” > “, maupun penggabungan kondisi.
Kita tidak bisa membuat struktur CASE seperti berikut:
1 case > '90':
2 printf("Pertahankan! \n");
3 break;
Sehingga jika kondisi yang diperiksa cukup rumit, tetap harus menggunakan
struktur IF ELSE IF. Struktur SWITCH CASE hanya cocok dipakai untuk operasi
perbandingan sederhana, dimana nilai yang diperiksa hanya terdiri dari nilai
yang tetap.
Dalam tutorial ini kita telah membahas pengertian dan cara penggunaan
struktur SWITCH CASE dalam bahasa pemrograman C. Selanjutnya akan
disambung dengan struktur perulangan (loop), yang diawali dengan perulangan
FOR.
Hello World
Hello World
Hello World
Hello World
Pertanyaannya, kenapa hanya tampil 4 baris “Hello World“? Padahal kita
mengulang dari i = 1 sampai i < 5.
Ini berkaitan dengan penggunaan tanda. Kondisi akhir perulangan adalah i < 5,
yang artinya akan selalu bernilai true jika i kurang dari 5, tapi jika sudah sampai
dengan 5 maka kondisi menjadi false dan perulangan berhenti.
Agar teks “Hello World” bisa tampil sebanyak 5 kali, ada 2 alternatif, yakni
mengubah kondisi awal menjadi i = 0, atau mengubah kondisi akhir menjadi i
<=5. Pilihan kedua ini tambak lebih baik:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int i;
6 for (i = 1; i <= 5; i++) {
7 printf("Hello World \n");
}
8 return 0;
9 }
10
Hasil kode program:
Hello World
Hello World
Hello World
Hello World
Hello World
Sekarang teks “Hello World” sudah tampil sebanyak 5 kali. Sekali lagi, hati-hati
dengan menggunakan tanda perbandingan, terutama antara “<” dengan “<=“.
Di dalam perulangan, kita juga bisa mengakses variabel counter seperti contoh
berikut:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int i;
6 for (i = 1; i <= 5; i++) {
7 printf("Hello World %i \n",i);
}
8 return 0;
9 }
10
Hasil kode program:
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Sekarang setelah teks “Hello World“, tampil angka yang berasal dari nilai variabel
i. Karena dalam setiap iterasi variabel counter i akan dinaikkan 1 angka
(proses increment), maka nilainya juga akan naik 1 angka untuk setiap iterasi.
Variabel counter i juga tidak haris di increment, tapi juga bisa di decrement untuk
membuat perulangan menurun. Berikut contohnya:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int i;
6 for (i = 5; i >= 1; i--) {
7 printf("Hello World %i \n",i);
}
8 return 0;
9 }
10
Hasil kode program:
Hello World 5
Hello World 4
Hello World 3
Hello World 2
Hello World 1
Kode kita sangat mirip seperti sebelumnya, tapi perhatikan perintah for di baris
6: for (i = 5; i >= 1; i--). Ini bisa dibaca:
“Jalankan perulangan, mulai dari variabel i = 5 sampai i >= 1. Dalam setiap iterasi,
turunkan nilai variabel i sebanyak 1 angka menggunakan perintah i--“.
Hasilnya, nilai variabel counter i akan berkurang 1 angka dalam setiap iterasi.
3 6 9 12 15 18 21 24 27 30
Terdapat beberapa cara untuk menghasilkan deret ini. Pertama, ubah di sisi
block perintah yang akan dijalankan. Dimana variabel counter i tetap naik dari 1
sampai 10:
1 #include <stdio.h>
2
int main(void)
3
{
4 int i;
5 for (i = 1; i <= 10; i++) {
6 printf("%i ",i*3);
7 }
8
printf("\n");
9 return 0;
10 }
11
Agar menghasilkan angka yang naik kelipatan 3, teknik yang dipakai adalah
mengalikan nilai variabel counter i dengan angka 3 untuk setiap iterasi.
Dalam tutorial kali ini kita telah membahas tentang perulangan (looping) for.
Nantinya looping ini bisa dikombinasikan lebih lanjut misalnya untuk membuat
perulangan bersarang (nested loop). Tapi untuk berikutnya kita akan lanjut dulu
ke bentuk perulangan kedua dalam bahasa C, yakni perulangan WHILE.
4 // kode program
5 // kode program
increment;
6
}
7
3 int main(void)
{
4
int i = 1;
5
while (i <= 5){
6
printf("Hello World \n");
7
i++;
8
}
9
return 0;
10 }
11
Hello World
Hello World
Hello World
Hello World
Hello World
3 int main(void)
{
4
int i = 1;
5
while (i <= 5){
6
printf("Hello World \n");
7
}
8
return 0;
9
}
10
Jika anda menjalankan kode program di atas, teks “Hello World” akan
ditampilkan terus menerus, tidak pernah selesai. Penyebabnya karena
kondisi while (i <= 5) akan selalu bernilai true. Di dalam blok perulangan tidak ada
perintah yang bisa mengubah nilai variabel i agar kondisi while (i <=
5) bernilai false.
Untuk menghentikan infinity loop, tutup paksa jendela hasil dengan men-klik
tanda (x) di sudut kanan atas, atau tekan kombinasi CTRL + C.
3
int main(void)
4 {
5 int i = 1;
8 i++;
}
9
return 0;
10
}
11
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
3
int main(void)
4 {
5 int i = 10;
8 i--;
}
9
return 0;
10
}
11
Hello World 10
Hello World 9
Hello World 8
Hello World 7
Hello World 6
Di sini saya mengisi nilai awal variabel counter i dengan angka 10. Kondisi
perulangan adalah while (i > 5), artinya selama nilai variabel i di atas 5, jalankan
perulangan. Dan karena kita ingin membuat perulangan menurun, maka dipakai
perintah decrement i-- yang akan mengurangi nilai variabel i sebanyak 1 angka
dalam setiap iterasi.
Sebagai latihan, silahkan anda coba rancang kode program
perulangan WHILE untuk membuat deret berikut:
3 6 9 12 15 18 21 24 27 30
Deret ini sudah pernah kita bahasa dalam tutorial perulangan FOR. Sekarang
tinggal mengkonversinya menjadi perulangan WHILE.
Sebelum menutup tutorial ini, saya ingin membuat tantangan lain. Tanpa
menjalankan kode program di bawah ini, bisakah anda menebak hasilnya?
1
#include <stdio.h>
2
3
int main(void)
4 {
5 int i = 10;
8 i++;
}
9
return 0;
10
}
11
Berapa kali teks “Hello World” tampil? Yup, jawabannya: Tidak ada. Alasannya
karena kondisi awal perulangan WHILE sudah langsung tidak terpenuhi.
Di baris 5 saya mengisi variabel i dengan angka 10. Kemudian terdapat blok
perulangan WHILE dengan perintah while (i <= 5). Artinya, selama nilai
variabel i kurang dari 5, jalankan perulangan. Masalahnya, nilai variabel i saat ini
adalah 10, sehingga 10 <= 5 sudah langsung false. Dengan demikian, blok
perulangan tidak akan pernah dijalankan.
Pada tutorial kali ini kita telah mempelajari cara penggunaan perulangan
while atau while loop dalam bahasa pemrograman C. Selanjutnya akan dibahas
tentang perulangan ketiga, yakni Perulangan DO WHILE.
Perulangan DO WHILE yang akan kita pelajari kali ini dalam banyak hal mirip
seperti perulangan WHILE sebelumnya, namun dengan 1 kunci perbedaan. Apa
itu? dalam lanjutan tutorial bahasa pemrograman C di Duniailkom kali ini kita
akan bahas dengan lebih detail.
Pengertian Struktur Perulangan DO WHILE Bahasa
C
Perulangan DO WHILE merupakan modifikasi dari perulangan WHILE, yakni
dengan memindahkan posisi pemeriksaan kondisi ke akhir perulangan. Artinya,
kita akan lakukan dulu sebuah perulangan, baru di akhir diperiksa apakah
kondisi variabel counter sudah terpenuhi atau belum.
Berikut format dasar struktur perulangan DO WHILE dalam bahasa C:
1
start;
2 do
3 {
4 // kode program
5 // kode program
6 increment;
}
7
while (condition)
8
1 #include <stdio.h>
2
3 int main(void)
{
4
int i = 1;
5 do {
Hello World
Hello World
Hello World
Hello World
Hello World
1 #include <stdio.h>
2
3 int main(void)
{
4
int i = 1;
5
do {
6
printf("%i ",i*3);
7 i++;
8 }
9 while (i <= 5);
10 return 0;
11 }
12
Tanpa menjalankan kode program ini, bisakah anda menebak hasil yang tampil?
Yup, ini adalah kode program untuk membuat sebuah deret dengan kelipatan 3:
3 6 9 12 15
1
#include <stdio.h>
2
3
int main(void)
4 {
5 int i = 10;
6 do {
7 printf("%i ",i*3);
8 i++;
}
9
while (i <= 5);
10
return 0;
11
}
12
2 {
// kode program
3
// kode program
4
if (condition_2) {
5
break;
6
}
7 }
8
Dalam contoh ini, jika condition_2 terpenuhi (bernilai true), maka perulangan
akan langsung berhenti meskipun belum mencapai kondisi akhir. Mari kita
bahas dengan contoh kode program.
Contoh Kode Program Perintah Break Bahasa C
Sebelum masuk ke perintah break, berikut contoh perulangan FOR bahasa C
untuk menampilkan penambahan angka:
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int i;
7 printf("%i + %i = %i \n",i,i,i+i);
}
8
return 0;
9
}
10
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
5 + 5 = 10
6 + 6 = 12
7 + 7 = 14
8 + 8 = 16
9 + 9 = 18
10 + 10 = 20
3 int main(void)
4
{
5
int i;
6 for (i = 1; i <= 10; i++) {
7 printf("%i + %i = %i \n",i,i,i+i);
8 if (i == 5) {
9 break;
10 }
}
11
return 0;
12
}
13
1 #include <stdio.h>
3 int main(void)
{
4
int i;
5
for (i = 1; i <= 10; i++) {
6
if (i == 5) {
7
break;
8 }
9
printf("%i + %i = %i \n",i,i,i+i);
10
}
11
return 0;
12
}
13
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
Bisakah anda menjelaskan kenapa perulangan kita berhenti pada angka 4, dan
bukan di angka 5 seperti sebelumnya? Padahal kondisi yang dipakai tetap sama,
yakni if (i == 5) { break; }
Ini terjadi karena perubahan posisi perintah printf. Sebelumnya,
perintah printf ditulis sebelum pemeriksaan kondisi if (i == 5). Artinya, begitu
variabel counter i naik menjadi 5, perintah printf akan di proses terlebih dahulu.
Setelah itu, baru perintah break di jalankan.
Sedangkan pada kode program kita kali ini, ketika i sampai ke angka 5, maka
langsung break tanpa sempat menjalankan perintah printf. Ini karena
perintah printf ditulis setelah pemeriksaan kondisi.
Sebagai penutup, berikut contoh penggunaan perintah break dengan
perulangan while:
1 #include <stdio.h>
3 int main(void)
{
4
int i = 1;
5
while (i <= 10){
6
if (i == 5) {
7
break;
8 }
9 printf("%i + %i = %i \n",i,i,i+i);
10 i++;
11 }
12 return 0;
13
}
14
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
Dalam tutorial kali ini kita telah membahas cara penggunaan perintah break.
Berikutnya dalam lanjutan tutorial belajar bahasa C di Duniailkom ini akan
membahas tentang Fungsi dan Pengertian Perintah Continue.
Pada tutorial belajar bahasa C kali ini kita akan membahas Fungsi dan
Pengertian Perintah Continue. Perintah continue dipakai untuk mengatur alur
perulangan yang mirip seperti perintah break dalam tutorial sebelumnya.
2 {
// kode program
3
// kode program
4
if (condition_2) {
5
6 continue;
7 }
9 }
1
#include <stdio.h>
2
3 int main(void)
4 {
5 int i;
7 printf("%i + %i = %i \n",i,i,i+i);
}
8
return 0;
9
}
10
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
5 + 5 = 10
6 + 6 = 12
7 + 7 = 14
8 + 8 = 16
9 + 9 = 18
10 + 10 = 20
1 #include <stdio.h>
2 int main(void)
3 {
4 int i;
5 for (i = 1; i <= 10; i++) {
6 if (i == 5) {
7 continue;
8 }
9 printf("%i + %i = %i \n",i,i,i+i);
10 }
11 return 0;
12 }
13
4 {
5 int i;
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
5 + 5 = 10
6 + 6 = 12
7 + 7 = 14
8 + 8 = 16
9 + 9 = 18
10 + 10 = 20
6 do {
7 i++;
8 if (i == 5) {
continue;
9
}
10
printf("%i + %i = %i \n",i,i,i+i);
11
} while (i < 10);
12
return 0;
13
}
14
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
6 + 6 = 12
7 + 7 = 14
8 + 8 = 16
9 + 9 = 18
10 + 10 = 20
1 #include <stdio.h>
3 int main(void)
{
4
int i = 0;
5
do {
6
if (i == 5) {
7
continue;
8
}
9
printf("%i + %i = %i \n",i,i,i+i);
10
i++;
11
} while (i < 10);
12 return 0;
13 }
14
Hasilnya sebuah infinity loop!, yakni perulangan yang tidak pernah berakhir.
Ini terjadi karena pada saat variabel i bernilai 5, perulangan akan terus berputar-
putar antara baris 6 – 9. Perintah increment i++ yang ada di baris 11 tidak bisa di
eksekusi karena di tulis setelah perintah continue di baris 8.
Jadi, kata kuncinya adalah: perhatikan logika program terutama ketika membuat
perulangan WHILE dan DO WHILE yang melibatkan perintah continue.
Sekedar catatan, jika anda menjalankan kode diatas, akan tampil hasil berikut:
0 + 0 = 0
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
Setelah itu tampil baris kosong yang sebenarnya berupa infinity loop, karena
perintah printf dan increment di tulis setelah perintah continue.
Dalam lanjutan tutorial bahasa C di duniailkom kali ini kita telah membahas
tentang perintah continue. Tutorial ini menutup seri pembahasan tentang
struktur kondisi dan perulangan di dalam bahasa C.
Selanjutnya kita akan masuk ke materi tentang function atau fungsi, yang di
awali dengan materi Cara Membuat Fungsi (Function) Bahasa C.
1. Built-In Function
2. User Defined Function
Built-In Function adalah sebutan untuk fungsi yang sudah ada secara bawaan
dari dalam bahasa pemrograman. Sedangkan User Defined Function adalah
fungsi yang kita (sebagai programmer) membuatnya sendiri.
Bahasa C menyediakan banyak fungsi bawaan, belum termasuk yang bisa
diakses dari berbagai library atau package pihak ketiga. Sebagai
contoh, printf(), scanf() dan strcpy() adalah function bawaan bahasa C. Namun
dalam tutorial kali ini yang akan kita bahas adalah jenis User Defined Function.
1 tipeDataKembalian namaFunction() {
2 // Isi function disini...
3 // Isi function disini...
4 return nilai;
}
5
Bagian tipeDataKembalian diisi dengan tipe data nilai yang dikembalikan sebuah
fungsi. Tipe data ini sudah kita pelajari sebelumnya seperti int, double atau char.
Jika suatu fungsi tidak mengembalikan nilai, tipeDataKembalian ditulis
sebagai void. Sebuah fungsi yang tidak mengembalikan nilai kadang disebut juga
sebagai procedure.
Penulisan namaFunction boleh bebas, tidak ada standar penamaan tertentu
untuk fungsi bahasa C selama mengikuti aturan penulisan identifier, yakni tidak
boleh di awali angka dan tidak boleh mengandung spasi.
Beberapa ada yang menyukai menulis dalam snake_case, dimana nama fungsi
ditulis dalam huruf kecil semua dan setiap kata dipisah dengan underscore ” _ “,
contohnya
seperti cari_nama_mahasiswa(), proses_form_input() atau tampilkan_harga_barang
().
Beberapa ada yang menyukai gaya camelCase, dimana karakter pertama nama
fungsi ditulis dengan huruf kecil, kemudian setiap karakter pertama kata
berikutnya dalam huruf besar. Antar kata tidak boleh mengandung spasi.
Contohnya
seperti cariNamaMahasiswa(), prosesFormInput() atau tampilkanHargaBarang().
Setelah penulisan namaFunction, terdapat tanda kurung (). Nantinya tanda
kurung ini bisa diisi dengan parameter atau argumen (akan kita bahas dalam
tutorial setelah ini).
Isi dari function berada dalam tanda kurung kurawal yang bisa terdiri dari 1
sampai ribuan baris kode program tergantung kompleksitas aplikasi yang
dibuat.
Jika fungsi tersebut mengembalikan nilai, maka jalankan perintah return seperti
di baris 4. Mengenai perintah return ini akan kita bahas dalam tutorial terpisah.
Pendefinisian User Defined Function harus ditulis di luar function main() seperti
format berikut:
1
2 #include <stdio.h>
3
4 tipeDataKembalian namaFunction() {
// Isi function disini...
5 // Isi function disini...
6 return nilai;
7 }
8
9 int main(void)
{
10 // Jalankan function
11 namaFunction()
12
13 return 0;
14 }
15
Dalam contoh format di atas, pendefinisian function ada di baris 3 – 7. Ketika
sebuah function di definisikan, function tersebut belum berjalan. Disini kita
hanya memberitahu compiler bahasa C bahwa sebuah function sudah
disiapkan.
Agar bisa berjalan, sebuah function harus “dipanggil” dengan cara menulis nama
fungsi tersebut di dalam method main(). Inilah yang dilakukan oleh perintah di
baris 12.
Mari kita lihat contoh praktek dari cara membuat function di C.
Halo Duniailkom
Halo Duniailkom
Halo Duniailkom
Function sapaDuniailkom() tidak mengembalikan nilai, sehingga
tipeDataKembalian diisi dengan keyword void. Isi dari
fungsi sapaDuniailkom() sendiri hanya 1 perintah, yakni printf(“Halo Duniailkom \
n”) seperti di baris 4.
Setelah di definisikan, sebuah fungsi bisa dijalankan berkali-kali, inilah yang saya
lakukan antara baris 9 – 11. Setiap kali perintah sapaDuniailkom() dijalankan,
akan tampil teks “Halo Duniailkom” di layar.
Sebuah kode program bisa saja memiliki banyak fungsi. Berikut contohnya:
1 #include <stdio.h>
2
void sapaLisa() {
3 printf("Hai Lisa \n");
4 }
5
6 void sapaSari() {
7 printf("Morning, Sari \n");
8 }
9
void sapaRudi() {
10 printf("Halo bro,.. \n");
11 }
12
13 int main(void)
14 {
15 sapaLisa();
sapaSari();
16 sapaRudi();
17
18
19
return 0;
20 }
21
22
Hasil kode program:
Hai Lisa
Morning, Sari
Halo bro,..
Kali ini saya mendefinisikan 3 fungsi di dalam kode program, yakni
function sapaLisa(), sapaSari() dan sapaRudi(). Setiap fungsi berisi
perintah printf() yang berbeda-beda.
1
2 #include <stdio.h>
3
4 void hitungLuasSegitiga() {
double alas = 5;
5 double tinggi = 7;
6 double luas = (alas * tinggi) / 2;
7
8 printf("Luas segitiga adalah: %.2f \n",luas);
9 }
10
int main(void)
11
{
12 hitungLuasSegitiga();
13
14 return 0;
15 }
16
Hasil kode program:
Kali ini saya mendefinisikan function hitungLuasSegitiga() di baris 3 – 9. Sesuai
dengan namanya, fungsi ini dipakai untuk menghitung luas segitiga.
Di dalam fungsi hitungLuasSegitiga() terdapat variabel alas, tinggi dan luas yang
semuanya bertipe double. Variabel alas diisi angka 5 dan variabel tinggi diisi
angka 7. Sedangkan variabel luas akan diisi hasil perhitungan (alas * tinggi) / 2,
yakni rumus untuk mencari luas segitiga. Kemudian perintah printf() di baris 8
akan menampilkan hasil perhitungan.
Untuk menjalankan fungsi ini, harus di panggil dengan
perintah hitungLuasSegitiga() dari dalam function main() seperti di baris 13.
Dalam tutorial C kali ini kita telah berkenalan dengan fungsi atau function,
termasuk membahas pengertian fungsi serta cara pembuatan fungsi dalam
bahasa C.
3
tipeDataKembalian namaFunction(tipeData param1, tipeData param2) {
4
// Isi function disini...
5 // Isi function disini...
6 return nilai;
7 }
9 int main(void)
10 {
// Jalankan function
11
namaFunction(arg1, arg2)
12
13
return 0;
14
}
15
Di akhir baris 3, yakni dalam tanda kurung setelah namaFunction, adalah tempat
untuk penulisan parameter. Parameter dalam bahasa C ditulis berpasangan
antara tipeData dan nama parameter.
Dalam contoh diatas, terdapat 2 buah parameter bernama param1 dan param2.
Sepanjang isi function, param1 dan param2 bisa diakses sebagaimana variabel
biasa.
Ketika memanggil fungsi, kita harus isi kedua nilai seperti di baris 12, yakni dari
perintah namaFunction(arg1, arg2). Disini, arg1 dan arg2 adalah argumen.
Agar lebih mudah dipahami, langsung saja kita lihat contoh prakteknya.
3 void sapaLisa() {
4 printf("Hai Lisa \n");
5 }
7 int main(void)
8 {
sapaLisa();
9
10
return 0;
11
}
12
Hai Lisa
Fungsi ini sudah berjalan sebagaimana mestinya, akan tetapi bagaimana jika kita
ingin menyapa “Putri”? tentu kurang ideal jika harus menulis fungsi terpisah.
Akan lebih fleksibel, saya akan modifikasi fungsi sapaLisa() agar bisa
menampung sebuah parameter dan argumen:
1
#include <stdio.h>
2
7 int main(void)
8 {
sapaTeman("Lisa");
9
10
return 0;
11
}
12
3
void sapaTeman(char nama[]) {
4 printf("Hai %s \n",nama);
5 }
6
7 int main(void)
8 {
9 sapaTeman("Lisa");
sapaTeman("Sari");
10
sapaTeman("Putri");
11
12
return 0;
13
}
14
Hai Sari
Hai Putri
Contoh pertama akan error karena fungsi sapaTeman() harus menerima satu
argumen. Contoh kedua juga error karena tipe data argumen harus string,
sesuai dengan tipe data pada saat pendefinisian parameter. Contoh ketiga
kembali error karena fungsi sapaTeman() hanya bisa menerima satu argumen
saja.
Dalam contoh berikut saya memodifikasi fungsi sapaTeman() agar bisa menerima
3 argumen:
1 #include <stdio.h>
6
int main(void)
7
{
8
sapaTeman("Lisa", "Nova", "Putri");
9
10
return 0;
11
}
12
3
void hitungLuasSegitiga(int alas, int tinggi) {
4
double luas = (alas * tinggi) / 2.0;
5 printf("Luas segitiga adalah: %.2f \n",luas);
6 }
8 int main(void)
9 {
10 hitungLuasSegitiga(5, 7);
hitungLuasSegitiga(2, 10);
11
hitungLuasSegitiga(191, 357);
12
13
return 0;
14
}
15
Dalam tutorial belajar bahasa C kali ini kita sudah membahas pengertian
parameter dan argumen fungsi serta melihat perbedaannya.
Lanjut, kita akan pelajari tentang Fungsi Perintah Return pada Function bahasa
C.
3
void hitungLuasSegitiga(int alas, int tinggi) {
4 double luas = (alas * tinggi) / 2.0;
5 printf("Luas segitiga adalah: %.2f \n",luas);
6 }
8 int main(void)
9 {
hitungLuasSegitiga(5, 7);
10
11
return 0;
12
}
13
Di baris 10, begitu fungsi hitungLuasSegitiga(5, 7) di panggil, akan tampil teks Luas
segitiga adalah: 17.50
Tidak ada yang salah dari penulisan function seperti ini, hanya saja terasa
kurang fleksibel karena tidak selamanya kita ingin menampilkan teks secara
langsung.
Dalam banyak situasi, hasil sebuah function perlu disimpan ke dalam variabel
terlebih dahulu, untuk kemudian di proses lebih lanjut.
Untuk keperluan inilah kita perlu menambah perintah return ke dalam function.
Tujuannya, agar sebuah function bisa mengembalikan nilai.
Langsung saja kita lihat modifikasi dari function hitungLuasSegitiga() dengan
penambahan perintah return:
1 #include <stdio.h>
8 int main(void)
9 {
12
13 return 0;
}
14
Dalam bahasa C, tipe data dari nilai yang dikembalikan fungsi harus di tulis di
awal pendefinisian. Dalam contoh diatas, tipe data yang dikembalikan oleh
function hitungLuasSegitiga() ini adalah double, yang saya tulis di awal baris 3.
Sebelumnya di awal baris 3 ini terdapat keyword void karena
function hitungLuasSegitiga() tidak memiliki perintah return.
Perintah return sendiri ada di baris 5, yakni return luas. Artinya, kembalikan nilai
yang tersimpan di dalam variabel luas kepada kode yang akan memanggil
function tersebut.
Di baris 10 saya membuat variabel var1 bertipe double dan mengisinya dari hasil
function hitungLuasSegitiga(2, 3). Dengan perintah ini, variabel var1 akan berisi
angka 17.50 yang kemudian ditampilkan dengan perintah printf().
Seperti inilah cara penggunaan perintah return dalam mengembalikan nilai
function.
1 #include <stdio.h>
6
int main(void)
7
{
8
printf("Luas segitiga adalah: %.2f \n",hitungLuasSegitiga(5, 7));
9
10
return 0;
11
}
12
Sekarang di baris 4 langsung terdapat perintah return (alas * tinggi) / 2.0, tidak
perlu lagi menyimpannya ke dalam variabel luas terlebih dahulu.
Kemudian di baris 9 pemanggilan function hitungLuasSegitiga() juga dilakukan
langsung dari dalam perintah printf(), yang tidak perlu disimpan ke dalam
sebuah variabel.
1 #include <stdio.h>
7
int main(void)
8
{
9
printf("Luas segitiga adalah: %.2f \n",hitungLuasSegitiga(5, 7));
10
11
return 0;
12
}
13
3
double hitungLuasSegitiga(int alas, int tinggi) {
4 double luas = (alas * tinggi) / 2.0;
5 return luas;
6 printf("Sedang belajar bahasa C di Duniailkom");
7 }
9 int main(void)
{
10
printf("Luas segitiga adalah: %.2f \n",hitungLuasSegitiga(5, 7));
11
12
return 0;
13
}
14
1
#include <stdio.h>
2
3
int hargaSetelahPajak(int hargaDasar) {
4 return hargaDasar + (hargaDasar * 10/100);
5 }
6
7 int main(void)
8 {
11
printf("Harga cilok 1 porsi Rp.%d \n", hargaFinalCilok);
12
13
return 0;
14
}
15
Dalam tutorial C kali ini kita telah membahas pengertian perintah return serta
contoh penggunaannya.
Salah satu konsep programming yang cukup banyak dipakai (dan juga sedikit
rumit), adalah perulangan bersarang atau nested loop. Dalam tutorial kali ini kita
akan lihat praktek pembuatan perulangan bersarang dalam bahasa C.
2 {
// kode program
3
for (start2; condition2; increment2)
4
{
5
// kode program
6
}
7
}
8
Di dalam perulangan bersarang terdapat istilah outer loop dan inner loop. Sesuai
dengan namanya, outer loop adalah sebutan untuk perulangan luar,
sedangkan inner loop sebutan untuk perulangan dalam.
Pada contoh di atas, outer loop adalah perulangan di baris 1, sedangkan inner
loop adalah perulangan di baris 4. Kode program di dalam outer loop akan
dijalankan sejumlah kondisi perulangan di outer saja. Sedangkan kode program
yang ada di dalam perulangan inner loop akan dijalankan sebanyak
perulangan outer * inner.
Tidak ada batasan seberapa banyak “kedalaman” dari sebuah perulangan
bersarang. Kita bisa saja membuat perulangan di dalam perulangan di dalam
perulangan, dst. Tentu saja semakin banyak perulangan yang “bersarang”, kode
programnya juga akan makin kompleks.
Dalam membuat perulangan berasarang kita juga harus sangat teliti dalam
penggunaan tanda kurung kurawal “{ }” untuk menandakan awal dan akhir
sebuah blok kode program. Tidak jarang hasilnya jadi berantakan karena salah
menulis posisi penutup kurung kurawal.
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
3 * 10 = 30
1
#include <stdio.h>
2
3 int main(void)
4 {
6 printf("3 * %i = %i\n",i,3*i);
7 }
return 0;
8
}
9
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
....
....
Sampai dengan:
....
....
10 * 8 = 80
10 * 9 = 90
10 * 10 = 100
Ada beberapa cara untuk membuat daftar perkalian seperti ini, misalnya bisa
dengan membuat 10 kali perulangan FOR (1 perulangan untuk setiap angka).
Namun cara paling efisien adalah menggunakan perulangan bersarang.
Berikut contoh kode program yang bisa dipakai:
1
#include <stdio.h>
2
3
int main(void)
4 {
5 for (int i = 1; i <= 10; i++) {
6 for (int j = 1; j <= 10; j++) {
7 printf("%i * %i = %i\n",i,j,j*i);
8 }
printf("\n");
9
}
10
return 0;
11
}
12
Untuk membuat perulangan bersarang, kita butuh 2 buah variabel counter,
yakni 1 untuk outer loop, dan 1 untuk inner loop. Dalam contoh ini saya
menggunakan variabel i dan j.
Perulangan i (outer loop) akan diulang sebanyak 10 kali, yakni dari i = 1 sampai i
<= 10. Di dalam setiap perulangan i ini, akan di proses perulangan j (inner loop).
Perulangan j jukan akan di proses sebanyak 10 kali. Dengan demikian,
perintah printf di baris 7 akan dijalankan sebanyak 100 kali, yakni total dari i * j.
Inilah salah satu contoh penerapan perulangan bersarang dalam bahasa C.
1 #include <stdio.h>
3 int main(void)
{
4
int i = 1;
5
int j;
6
while (i <= 10) {
7
j = 1;
8 while (j <= 10) {
9 printf("%i * %i = %i\n",i,j,j*i);
10 j++;
11 }
12
printf("\n");
13
i++;
14
}
15
}
16
Dalam tutorial belajar bahasa C kali ini kita telah membahas konsep
dari perulangan bersarang atau nested loop. Meskipun cukup rumit, konsep
perulangan ini sangat penting sepanjang karir kita sebagai programmer.
Kuncinya ada di latihan kode program. Semakin banyak berlatih memecahkan
masalah, anda akan semakin terampil dalam merancang kode program.
Salah satu latihan algoritma yang sering dipakai adalah membuat segitiga
bintang. Latihan program ini sekilas terkesan tidak berguna, karena kita hanya
membuat “gambar” segitiga. Namun dibalik itu, pembuatan segitiga bintang
butuh logika yang kuat.
Dalam tutorial belajar bahasa pemrograman C di Duniailkom kali ini kita akan
membahasnya dengan lebih dalam.
* *
* * *
* * * *
* * * * *
Tampilannya memang sederhana, tapi butuh proses berfikir yang cukup rumit.
Tugas kita adalah bagaimana membuat kode program yang akan menghasilkan
tampilan segitiga diatas. Syaratnya, tidak boleh langsung
menggunakan printf sebanyak 5 kali, tapi harus menggunakan perulangan.
Jika dianalisis lagi, kode program ini butuh sebuah perulangan bersarang (nested
loop). Perulangan pertama untuk membuat bintang ke arah bawah, dan
perulangan kedua untuk membuat bintang ke arah samping.
Agar lebih mudah dipahami, kita akan bahas secara bertahap.
3 int main(void)
4 {
6 printf("* \n");
7 }
return 0;
8
}
9
*
Tidak ada yang baru disini, hanya terdiri dari perulangan FOR dari i = 1 sampai i
<=5. Untuk setiap perulangan, tampilkan tanda bintang ‘*’ dan diikuti dengan
karakter newline untuk pindah baris ‘\n‘.
Langkah kedua adalah, saya ingin agar dalam setiap baris, bintangnya tampil
sebanyak 5 kali. Tapi tidak boleh hanya langsung menjalankan
perintah printf(“***** \n”), tanda bintang ke samping haruslah berasal dari
perulangan bersarang, atau nested loop.
Berikut kode programnya:
1
#include <stdio.h>
2
3
int main(void)
4 {
5 for (int i = 1; i <= 5; i++) {
6 for (int j = 1; j <= 5; j++) {
7 printf("* ");
8 }
printf("\n");
9
}
10
return 0;
11
}
12
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
3
int main(void)
4 {
5 for (int i = 1; i <= 5; i++) {
6 for (int j = 1; j <= i; j++) {
7 printf("* ");
8 }
printf("\n");
9
}
10
return 0;
11
}
12
* *
* * *
* * * *
* * * * *
Bisakah anda menebak apa yang berbeda dengan kode kita sebelumnya? Yup,
hanya modifikasi kecil di baris 6. Sekarang, kondisi akhir perulangan j adalah
sampai j <= i. Artinya, perulangan j akan naik sebanyak 1 angka untuk setiap
perulangan i.
Sebagai tantangan terakhir, bisakah anda memodifikasi kode program ini agar
user bisa menentukan jumlah baris segitiga? Jadi di awal akan ada pertanyaan
jumlah baris segitiga. Jika diinput 10, maka tinggi segitiga yang akan ditampilkan
jadi 10 baris.
3
int main(void)
4
{
5
int jumlah;
6
10
printf("* ");
13
}
14
printf("\n");
15
}
16
return 0;
17
}
18
Tambahannya berupa perintah scanf untuk meminta inputan dari user di baris 7
– 9.
Dalam kode program ini, inputan jumlah baris saya simpan ke dalam
variabel jumlah. Variabel jumlah ini yang kemudian menjadi nilai penentu dari
perulangan i di baris 11. Perulangan i akan terus berjalan sampai kondisi i <=
jumlah terpenuhi.
Dalam tutorial ini kita telah membahas salah satu contoh kasus algoritma
dengan bahasa pemrograman C, yakni membuat segitiga bintang.
Selain segitiga, masih banyak variasi program lain yang mirip-mirip, seperti
piramida bintang, membuat layang-layang / belah ketupat, hingga membuat
segitiga angka. Latihan soal ini akan kita bahas di tutorial terpisah.
Soal ini dipakai untuk menguji pemahaman seputar konsep switch case, if
else serta perulangan do while.
Pilihan anda:
Disini terdapat 5 pilihan menu kopi. Lalu kode program akan berhenti
menunggu user memilih salah satu menu. Jika diinput angka 2, maka hasilnya
menjadi:
Pilihan anda: 2
Anda memilih Cappuccino
Jika user menginput huruf “y”, maka akan tampil kembali menu awal:
Pilihan anda:
Jika user menginput angka 4, maka hasilnya adalah:
Pilihan anda: 4
Anda memilih Vanilla Latte
Terimakasih...
Dan program selesai.
1 #include <stdio.h>
2
int main(void)
3 {
4 int pilihan;
5 char ulang;
6 do
7 {
printf("## Daftar Menu Kopi Ilkom ## \n");
8 printf("============================== \n");
9 printf("1. Espresso \n");
10 printf("2. Cappuccino \n");
11 printf("3. Moccacino \n");
12 printf("4. Vanilla Latte \n");
printf("5. Hazelnut Latte \n\n");
13
14 printf("Pilihan anda: ");
15 scanf("%i",&pilihan);
16
17 switch(pilihan){
18 case 1:
printf("Anda memilih Espresso \n");
19 break;
20 case 2:
21 printf("Anda memilih Cappuccino \n");
22 break;
23 case 3:
printf("Anda memilih Moccacino \n");
24 break;
25 case 4:
26 printf("Anda memilih Vanilla Latte \n");
27 break;
28 case 5:
printf("Anda memilih Hazelnut Latte \n");
29 break;
30 default:
31 printf("Menu tidak tersedia \n");
32 }
printf("\n");
33
34 printf("Ingin memilih menu lain (y/t)? ");
35 scanf(" %c",&ulang);
36 printf("\n");
37 }
38 while (ulang!= 't');
39
printf("Terimakasih... \n");
40
41 return 0;
42 }
43
44
45
46
47
48
49
50
Di awal kode program pada baris 5 dan 6 saya mendeklarasikan dua variabel,
yakni pilihan dan ulang. Variabel pilihan nantinya akan menampung angka pilihan
menu yang diinput user. Sedangkan variabel ulang menampung karakter yang
akan dipakai untuk mengulang menu.
Selanjutnya di baris 7 – 8 terdapat perintah do {. Ini adalah tanda bahwa kita
masuk ke sebuah perulangan do while. Hampir semua kode program berada
dalam perulangan ini, yang ditutup pada baris 45.
Kondisi akhir perulangan adalah (ulang!= ‘t’), yang artinya jika
variabel ulang tidak d iinput karakter ‘t‘, maka perulangan do while akan terus di
proses.
Pada awal perulangan di baris 9 – 15 terdapat beberapa perintah printf untuk
menampilkan daftar menu. Kemudian user diminta memilih salah satu angka
menu yang dibaca oleh perintah scanf di baris 18.
Pilihan user ini di tampung ke dalam variabel pilihan untuk kemudian masuk ke
pemeriksaan kondisi switch case di baris 20 – 38. Untuk setiap pilihan menu,
jalankan perintah printf sesuai yang ada pada block case. Kondisi default di baris
36 akan di eksekusi jika user menginput angka di luar 1 – 5.
Lalu terdapat perintah scanf kedua di baris 42. Inilah proses input yang dipakai
menentukan apakah menu kembali tampil atau tidak. Perintah scanf ini menjadi
kunci agar perulangan do while bisa berakhir.
Demikian kode program latihan Membuat Menu Berulang dalam Bahasa C. Soal
seperti ini biasanya akan digabung lagi dengan pilihan menu yang lebih
kompleks.
Sebagai contoh lain, silahkan buat menu berulang menghitung untuk luas
bangun datar:
1. Luas Persegi
2. Luas Segitiga
3. Luas Lingkaran
Jika dipilih Luas Segitiga, maka user bisa menginput tinggi dan alas segitiga, lalu
menampilkan hasilnya. Kode yang diperlukan memang akan kompleks, tapi bisa
jadi ajang latihan algoritma yang lebih menantang lagi.
Bonus: Selain menampilkan iya atau tidak, tuliskan pula alasan kenapa bilangan
tersebut bukan bilangan prima.
Pemeriksaan apakah suatu angka habis dibagi dengan angka lain bisa dilakukan
dengan operator modulus ( % ). Dalam bahasa C, 12 % 2 akan menghasilkan
angka 0, yang berarti 12 habis dibagi dengan 2. Konsep inilah yang bisa kita
pakai untuk membuat kode program pemeriksa bilangan prima.
Idenya adalah, buat sebuah perulangan untuk memeriksa setiap kemungkinan.
Jika diinput angka 17, cek apakah 17 habis dibagi 2. Jika tidak, lanjut apakah 17
habis dibagi 3, jika tidak cek lagi apakah 17 habis dibagi 4, dst.
1 #include <stdio.h>
2
int main(void)
3
4
5
{
6 printf("## Program Bahasa C Angka Prima ## \n");
7 printf("==================================== \n\n");
8
9 int n,i,angka_prima;
10 angka_prima = 1;
11
12 printf("Input satu angka bulat: ");
scanf("%i",&n);
13
14 // 0 dan 1 bukan angka prima
15 if (n == 0 || n == 1) {
16 angka_prima = 0;
17 }
18 else {
for (i = 2; i <= n / 2; i++) {
19 if (n % i == 0) {
20 angka_prima = 0;
21 break;
22 }
}
23 }
24
25 printf("\n");
26 if (angka_prima == 1)
27 printf("%i adalah angka prima \n",n);
28 else
printf("%i bukan angka prima \n",n);
29
30 return 0;
31 }
32
33
34
Hasil kode program (1):
Perulangan for ini mulai dari 2 hingga n / 2. Dalam setiap iterasi, cek apakah n
habis dibagi dengan i melalui perintah n % i == 0. Jika kondisi ini terpenuhi,
update isi variabel angka_prima menjadi 0 dan langsung hentikan perulangan.
Perulangan hanya perlu dilakukan sampai n / 2 karena secara logika kita tidak
perlu cek pembagian dengan setiap angka.
Setelah perulangan selesai, cek kembali isi variabel angka_prima. Jika berisi
angka 1, yakni if (angka_prima == 1), maka n adalah angka prima. Jika tidak, maka
n bukanlah angka prima.
1 #include <stdio.h>
2
int main(void)
3 {
4 printf("## Program Bahasa C Angka Prima ## \n");
5 printf("==================================== \n\n");
6
7 int n,i,angka_prima,pembagi;
8 angka_prima = 1;
9
printf("Input satu angka bulat: ");
10 scanf("%i",&n);
11
12
13
14
// 0 dan 1 bukan angka prima
15 if (n == 0 || n == 1) {
16 angka_prima = 0;
17 }
18 else {
19 for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
20 pembagi = i;
21 angka_prima = 0;
22 break;
23 }
}
24
}
25
26 printf("\n");
27 if (angka_prima == 1)
28 printf("%i adalah angka prima \n",n);
29 else
printf("%i bukan angka prima, karena bisa dibagi %i \n",n, pembagi);
30
31 return 0;
32 }
33
34
35
Penambahan ada di baris 8, 21 dan 32. Variabel pembagi dipakai untuk
menampung angka i saat perulangan berhenti.
Hasil kode program:
Demikian kode program cek bilangan prima menggunakan bahasa C. Seperti
yang terlihat, logika dan sedikit teori matematis sangat berperan untuk mencari
solusi kode program. Semoga tutorial ini bisa bermanfaat.
1
2 #include <stdio.h>
3
4 int main(void)
5 {
6 printf("## Program Bahasa C Konversi Suhu ## \n");
printf("===================================== \n\n");
7
8 float celc, fahr, kelv, ream ;
9
10 printf("Input suhu celsius: ");
11 scanf("%f",&celc);
12 printf("\n");
13
14 fahr = (9.0/5.0 * celc) + 32;
kelv = celc + 273.15;
15 ream = celc * (4.0/5.0) ;
16
17 printf("%.2f derajat Celsius = %.2f derajat Fahrenheit \n",celc,fahr);
18 printf("%.2f derajat Celsius = %.2f derajat Kelvin \n",celc,kelv);
19 printf("%.2f derajat Celsius = %.2f derajat Reamur \n",celc,ream);
20
return 0;
21
}
22
23
Di baris 8 terdapat deklarasi 4 variabel bertipe float,
yakni celc, fahr, kelv dan ream. Keempatnya dipakai untuk menampung nilai
inputan suhu dan hasil konversi.
Kode program kemudian meminta inputan suhu Cecius dengan
perintah scanf(“%f”,&celc) di baris 11. Setelah perintah ini, nilai suhu celsius
sudah tersimpan di dalam variabel celc.
Proses konversi suhu dilakukan pada baris 14-16. Kita tinggal input rumus
konversi suhu sesuai dengan syarat dalam teori fisika (ada di bagian tips).