Download - Job Sheet Bhs C 1-5
PRAKTIKUM I
PENGENALAN PEMROGRAMAN BAHASA C
A. Tujuan Instruksional Khusus
1. Menjelaskan sejarah dan ruang lingkup pemakaian bahasa C
2. Menjelaskan kelebihan dan kekurangan bahasa C
3. Menjelaskan proses kompilasi dan linking program C
4. Menjelaskan struktur penulisan bahasa C dan menjelaskan komponen-komponen
program dalam contoh aplikasi sederhana
5. Mengenal pemrograman dengan bahasa C.
6. Mampu membuat program sederhana dengan bahasa C.
B. Dasar Teori
1. Sejarah dan Ruang Lingkup C
C adalah bahasa yang standar, artinya suatu program yang ditulis dengan versi
bahasa C tertentu akan dapat dikompilasi dengan versi bahasa C yang lain dengan sedikit
modifikasi. Standar bahasa C yang asli adalah standar dari UNIX. Sistem operasi,
kompiler C dan seluruh program aplikasi UNIX yang esensial ditulis dalam bahasa C.
Patokan dari standar UNIX ini diambilkan dari buku yang ditulis oleh Brian Kerninghan
dan Dennis Ritchie berjudul "The C Programming Language", diterbitkan oleh Prentice-
Hall tahun 1978. Deskripsi C dari Kerninghan dan Ritchie ini kemudian dikenal secara
umum sebagai "K&R C".
Kepopuleran bahasa C membuat versi-versi dari bahasa ini banyak dibuat untuk
komputer mikro. Untuk membuat versi-versi tersebut menjadi standar, ANSI (American
National Standards Institute) membentuk suatu komite (ANSI committee X3J11) pada
tahun 1983 yang kemudian menetapkan standar ANSI untuk bahasa C. Standar ANSI ini
didasarkan kepada standar UNIX yang diperluas. Standar ANSI menetapkan sebanyak 32
buah kata-kata kunci (keywords) standar. Versi-versi bahasa C yang menyediakan paling
tidak 32 kata-kata kunci ini dengan sintaks yang sesuai dengan yang ditentukan oleh
standar, maka dapat dikatakan mengikuti standar ANSI. Buku ajar ini didasarkan pada
bahasa C dari standar ANSI.
Jobsheet Pemograman Bahasa C 1
2. Proses Kompilasi dan Linking Program C
Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh komputer,
program haruslah diterjemahkan dahulu ke dalam kode mesin. Adapun penerjemah yang
digunakan bisa berupa interpreter atau kompiler.
Interpreter adalah suatu jenis penerjemah yang menerjemahkan baris per baris
intsruksi untuk setiap saat. Keuntungan pemakaian interpreter, penyusunan program relatif
lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah
dalam program. Sedangkan kelemahannya, kecepatannya menjadi lambat sebab sebelum
suatu instruksi dijalankan selalu harus diterjemahkan terlebih dahulu. Selain itu, saat
program dieksekusi, interpreter juga harus berada dalam memori. Jadi memori selalu
digunakan baik untuk program maupun interpreter. Di samping itu, program sumber
(source program) yaitu program aslinya tidak dapat dirahasiakan (orang lain selalu bisa
melihatnya).
Kebanyakan versi C yang beredar di pasaran menggunakan penerjemah berupa
kompiler. Kompiler merupakan jenis penerjemah yang lain, dengan cara kerjanya yaitu
menerjemahkan seluruh instruksi dalam program sekaligus. Proses pengkompilasian ini
cukup dilakukan sekali saja. Selanjutnya hasil penerjemahan (setelah melalui tahapan yang
lain) bisa dijalankan secara langsung, tanpa tergantung lagi oleh program sumber maupun
kompilernya. Keuntungannya, proses eksekusi dapat berjalan dengan cepat, sebab tak ada
lagi proses penerjemahan. Di samping itu, program sumber bisa dirahasiakan, sebab yang
dieksekusi adalah program yang sudah dalam bentuk kode mesin. Sedangkan
kelemahannya, proses pembuatan dan pengujian membutuhkan waktu relatif lebih lama,
sebab ada waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu melakukan
proses linking. Perlu pula diketahui, program akan berhasil dikompilasi hanya jika program
tak mengandung kesalahan secara kaidah sama sekali.
Proses dari bentuk program sumber C (source program, yaitu program yang ditulis
dalam bahasa C) hingga menjadi program yang executable (dapat dieksekusi secara
langsung) ditunjukkan pada Gambar 1.1 di bawah ini.
Jobsheet Pemograman Bahasa C 2
Gambar 1.1 Proses Kompilasi-Linking dari program C
Keterangan Gambar :
Pertama-tama program C ditulis dengan menggunakan editor. Program ini disimpan
dalam file yang disebut file program sumber (dengan ciri utama memiliki ekstensi .c).
File include (umumnya memiliki ekstensi .h, misalnya stdio.h, atau biasa disebut
dengan file judul (header file)) berisi kode yang akan dilibatkan dalam program C
(Pada program tertentu bisa saja tidak melibatkan file include).
Berikutnya, kode dalam file program sumber maupun kode pada file include akan
dikompilasi oleh kompiler menjadi kode obyek. Kode obyek ini disimpan pada file
yang biasanya berekstensi .obj, atau .o (bergantung kepada lingkungan/environment
sistem operasi yang dipakai). Kode obyek berbentuk kode mesin, oleh karena itu tidak
dapat dibaca oleh pemrogram. Akan tetapi kode ini sendiri juga belum bisa dipahami
komputer.
Jobsheet Pemograman Bahasa C 3
EDITOR EDITOR
FILE INCLUDE(FILE JUDUL)
xxx.h
FILE PROGRAMSUMBERyyy.c
KOMPILER
FILE OBYEK
LAIN
LINKER
FILE
EXECUTABLE
FILE OBYEKFILE
PUSTAKA
Supaya bisa dimengerti oleh komputer, maka kode obyek bersama-sama dengan kode
obyek yang lain (kalau ada) dan isi file pustaka (library file, yaitu file yang berisi rutin
untuk melaksanakan tugas tertentu. File ini disediakan oleh pembuat kompiler,
biasanya memiliki ekstensi .lib) perlu dikaitkan (linking) dengan menggunakan linker,
membentuk sebuah program yang executable (program yang dapat
dijalankan/dieksekusi secara langsung dalam lingkungan sistem operasi).
Program hasil linker ini disimpan dalam file yang disebut file executable, yang
biasanya berekstensi .exe.
3. Struktur Penulisan Program C
Untuk dapat memahami bagaimana suatu program ditulis, maka struktur dari
program harus dimengerti terlebih dahulu. Tiap bahasa komputer mempunyai struktur
program yang berbeda. Struktur program memberikan gambaran secara luas, bagaimana
bentuk program secara umum.
Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah program
minimal mengandung sebuah fungsi. Fungsi pertama yang harus ada dalam program C dan
sudah ditentukan namanya adalah main(). Setiap fungsi terdiri atas satu atau beberapa
pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan tugas khusus.
Bagian pernyataan fungsi (sering disebut tubuh fungsi) diawali dengan tanda kurung
kurawal buka ({) dan diakhiri dengan tanda kurung kurawal tutup (}). Di antara kurung
kurawal itu dapat dituliskan statemen-statemen program C. Namun pada kenyataannya,
suatu fungsi bisa saja tidak mengandung pernyataan sama sekali. Walaupun fungsi tidak
memiliki pernyataan, kurung kurawal haruslah tetap ada. Sebab kurung kurawal
mengisyaratkan awal dan akhir definisi fungsi. Berikut ini adalah struktur dari program C
main(){
statemen-statemen; fungsi utama}
fungsi_fungsi_lain(){
statemen-statemen; fungsi-fungsi lain yang} ditulis oleh pemrogram
Jobsheet Pemograman Bahasa C 4
Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya
menggunakan fungsi-fungsi sebagai program-program bagiannya (subroutine). Fungsi-
fungsi yang ada selain fungsi utama (main()) merupakan program-program bagian.
Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakkan di file pustaka
(library). Jika fungsi-fungsi diletakkan di file pustaka dan akan dipakai di suatu program,
maka nama file judulnya (header file) harus dilibatkan dalam program yang
menggunakannya dengan preprocessor directive berupa #include.
4. Pengenalan Fungsi-Fungsi Dasar
a. Fungsi main()
Pada program C, main() merupakan fungsi yang istimewa. Fungsi main() harus ada
pada program, sebab fungsi inilah yang menjadi titik awal dan titik akhir eksekusi
program. Tanda { di awal fungsi menyatakan awal tubuh fungsi dan sekaligus awal
eksekusi program, sedangkan tanda } di akhir fungsi merupakan akhir tubuh fungsi dan
sekaligus adalah akhir eksekusi program. Jika program terdiri atas lebih dari satu fungsi,
fungsi main() biasa ditempatkan pada posisi yang paling atas dalam pendefinisian
fungsi. Hal ini hanya merupakan kebiasaan. Tujuannya untuk memudahkan pencarian
terhadap program utama bagi pemrogram. Jadi bukanlah merupakan suatu keharusan.
b. Fungsi printf().
Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu
keluaran pada layar peraga. Untuk menampilkan tulisan
Selamat belajar bahasa C
misalnya, pernyataan yang diperlukan berupa:
printf(“Selamat belajar bahasa C”);
Pernyataan di atas berupa pemanggilan fungsi printf() dengan argumen atau parameter
berupa string. Dalam C suatu konstanta string ditulis dengan diawali dan diakhiri tanda
petik-ganda (“). Perlu juga diketahui pernyataan dalam C selalu diakhiri dengan tanda
titik koma (;). Tanda titik koma dipakai sebagai tanda pemberhentian sebuah pernyataan
dan bukanlah sebagai pemisah antara dua pernyataan.
Jobsheet Pemograman Bahasa C 5
Tanda \ pada string yang dilewatkan sebagai argumen printf() mempunyai makna yang
khusus. Tanda ini bisa digunakan untuk menyatakan karakter khusus seperti karakter
baris-baru ataupun karakter backslash (miring kiri). Jadi karakter seperti \n sebenarnya
menyatakan sebuah karakter. Contoh karakter yang ditulis dengan diawali tanda \
adalah:
\” menyatakan karakter petik-ganda
\\ menyatakan karakter backslash
\t menyatakan karakter tab
Dalam bentuk yang lebih umum, format printf()
printf(“string kontrol”, daftar argumen);
dengan string kontrol dapat berupa satu atau sejumlah karakter yang akan ditampilkan
ataupun berupa penentu format yang akan mengatur penampilan dari argumen yang
terletak pada daftar argumen. Mengenai penentu format di antaranya berupa:
%d untuk menampilkan bilangan bulat (integer)
%f untuk menampilkan bilangan titik-mengambang (pecahan)
%c untuk menampilkan sebuah karakter
%s untuk menampilkan sebuah string
Contoh:
#include <stdio.h>
void main( )
{
printf(“No : %d\n”, 10);
printf(“Nama : %s\n”, “Ali”);
printf(“Nilai : %f\n”,80.5);
printf(“Huruf : %c\n”,‘A’);
}
Jobsheet Pemograman Bahasa C 6
1. Pengenalan Praprosesor #include
#include merupakan salah satu jenis pengarah praprosesor (preprocessor directive).
Pengarah praprosesor ini dipakai untuk membaca file yang di antaranya berisi deklarasi
fungsi dan definisi konstanta. Beberapa file judul disediakan dalam C. File-file ini
mempunyai ciri yaitu namanya diakhiri dengan ekstensi .h. Misalnya pada program
#include <stdio.h> menyatakan pada kompiler agar membaca file bernama stdio.h saat
pelaksanaan kompilasi.
Bentuk umum #include :
#include “namafile”
Bentuk pertama (#include <namafile>) mengisyaratkan bahwa pencarian file
dilakukan pada direktori khusus, yaitu direktori file include. Sedangkan bentuk kedua
(#include “namafile”) menyatakan bahwa pencarian file dilakukan pertama kali pada
direktori aktif tempat program sumber dan seandainya tidak ditemukan pencarian akan
dilanjutkan pada direktori lainnya yang sesuai dengan perintah pada sistem operasi.
Kebanyakan program melibatkan file stdio.h (file-judul I/O standard, yang
disediakan dalam C). Program yang melibatkan file ini yaitu program yang menggunakan
pustaka I/O (input-output) standar seperti printf().
2. Komentar dalam Program
Untuk keperluan dokumentasi dengan maksud agar program mudah dipahami di
suatu saat lain, biasanya pada program disertakan komentar atau keterangan mengenai
program. Dalam C, suatu komentar ditulis dengan diawali dengan tanda /* dan diakhiri
dengan tanda */.
Contoh :
/* Tanda ini adalah komentar */
#include <stdio.h>
main()
{
printf(“Coba\n”); /* Ini adl program pertama */
}
Jobsheet Pemograman Bahasa C 7
C. Daftar Alat dan Bahan.
1. CPU
2. Monitor
3. Keyboard
4. Mouse
5. Printer
6. Job Sheet Praktikum
D. Langkah Kerja.
1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows.
2. Pilih Start pada ujung kiri bawah monitor.
3. Pilih Program.
4. Pilih Program Turbo C atau TC for windows.
5. Jika Layar Turbo C sudah keluar, Pilih File.
6. Pilih News untuk membuka Program baru, atau open untuk membuka file
program yang sudah dibuat sebelumnya.
7. Ketik Program sesuai dengan di data program.
8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama
file sesuai keinginan praktikan.
9. compile program tersebut untuk melihat kebenaran pengetikan program dan
untuk mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj.
10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut.
11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut.
12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama.
E. Data Program
1. Buatlah program yang akan menampilkan tulisan dilayar monitor :
“ Selamat datang di Praktikum Dasar Komputer
Laboratorium Komputer Teknik Elektro
Politeknik Negeri Lhokseumawe “
Contoh :
#include <stdio.h>
void main()
Jobsheet Pemograman Bahasa C 8
{
printf(“Selamat datang di Praktikum Dasar Komputer\n”);
printf(“ Laboratorium Komputer Teknik Elektro\n”);
printf(” Politeknik Negeri Lhokseumawe \n”);
}
2. Buatlah program dengan menggunakan tipe bilangan real presisi tunggal seperti berikut.
Contoh
#include<stdio.h>
void main()
{
int jumlah;
float harga_per_unit, harga_total;
jumlah = 10;
harga_per_unit = 17.5;
harga_total = jumlah * harga_per_unit;
printf(“Harga total = %f\n”, harga_total);
}
3. Mencetak kalimat dalam beberapa baris.
#include <stdio.h>
void main()
{
printf("Pemrograman adalah sesuatu yg menyenangkan\n");
printf("Pemrograman bahasa C adalah lebih menyenangkan\n");
printf("Testing....\n..1\n...2\n....3\n");
}
4. Menghitung penjumlahan dan mencetak hasilnya
#include <stdio.h>
void main()
{
int jumlah;
jumlah = 1024 + 4096;
printf("Jumlah dari 1024 dengan 4096 adalah %d\n", jumlah);
Jobsheet Pemograman Bahasa C 9
}
5. Mengisi nilai variabel int, penjumlahan isi variabel dan mencetak hasilnya
#include <stdio.h>
void main()
{
int nilai1, nilai2, jumlah;
nilai1 = 1024;
nilai2 = 4096;
jumlah = nilai1 + nilai2;
printf("Jumlah dari %d dengan %d adalah %d\n", nilai1, nilai2, jumlah);
}
6. Mengisi variabel float, mengalikan isi variabel dan mencetak hasilnya
#include <stdio.h>
void main(){
float harga, total;int jumlah;
harga = 132.055f;jumlah = 50;total = harga * jumlah;
printf("Harga total = %f\n", total);}
7. Menentukan hasil cetakan dengan lebar medan (field) yang tepat versi 1
#include <stdio.h>
void main(){
float bil = 2.5f, nomor = 33.567f;
printf("Bilangan = %f\n", bil);printf("Nomor = %f\n", nomor);
}
F. Soal
1. Buatlah program untuk menampilkan tulisan di bawah ini :
Jobsheet Pemograman Bahasa C 10
PEMROGRAMAN BAHASA CPRODI TEKNIK ELEKTRONIKAJURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI LHOKSEUMAWEDIPROGRAM OLEH : NAMAMU
2. Carilah kesalahan dalam program di bawah ini :
main (){
INT jumlah;
/* PERHITUNGAN HASILjumlah = 25 + 37 - 19;
/* TAMPILKAN HASIL printf("Berapa hasil perhitungan 25 + 37 - 19 ?\n);printf("Jawabannya adalah %d\n" jumlah);
}
3. Berapakah nilai jawaban yang ditampilkan oleh program di bawah ini :
#include <stdio.h>
void main(){
int jawab, hasil;
jawab = 100;hasil = jawab - 10;
printf("Jawabannya adalah %d\n", hasil + 6);}
4. Buatlah program yang menampilkan tulisan :
“Nama Saya : nama praktikan
NIM : NIM praktikum “
Dengan perintah printf terstruktur %s, dengan nama dan nim merupakan input dari
user.
(panduan : ingat program printf dan scanf)
#include <stdio.h>
void main ()
{………
…….
Jobsheet Pemograman Bahasa C 11
}
5. Buatlah program yang menampilkan karakter yang merupakan masukan dari keyboard.
(panduan :ingatlah useran printf )
#include <stdio.h>
#include<conio.h>
main ();
{
char karakter;
printf(“…
karakter = getch();
printf(“…,karakter);
}
Jobsheet Pemograman Bahasa C 12
PRAKTIKUM II
DASAR-DASAR PEMROGRAMAN C
A. Tujuan Instruksional Khusus
1. Menjelaskan tentang beberapa tipe data dasar (jenis dan jangkauannya)
2. Menjelaskan tentang Variabel
3. Menjelaskan tentang konstanta
4. Menjelaskan tentang berbagai jenis operator dan pemakaiannya
5. Menjelaskan tentang instruksi I/O
B. Dasar Teori
1. Tipe Data Dasar
Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan
sebagai tipe data dasar. Kelima tipe data dasar adalah:
Bilangan bulat (integer)
Bilangan real presisi-tunggal
Bilangan real presisi-ganda
Karakter
Tak-bertipe (void), keterangan lebih lanjut tentang void dijelaskan dalam Bab V.
Kata-kunci yang berkaitan dengan tipe data dasar secara berurutan di antaranya
adalah int (short int, long int, signed int dan unsigned int), float, double, dan char.
Tabel 2-1 memberikan informasi mengenai ukuran memori yang diperlukan dan
kawasan dari masing-masing tipe data dasar.
Tabel 2-1. Ukuran memori untuk tipe data
Jobsheet Pemograman Bahasa C 13
Tipe Total bit Kawasan Keterangan
char 8 -128 s/d 127 karakterint 32 -2147483648 s/d 2147483647 bilangan integerfloat 32 1.7E-38 s/d 3.4E+38 bilangan real presisi-tunggaldouble 64 2.2E-308 s/d 1.7E+308 bilangan real presisi-ganda
Untuk tipe data short int, long int, signed int dan unsigned int, maka ukuran memori yang
diperlukan serta kawasan dari masint-masing tipe data adalah sebagai berikut :
Tabel 2-2 Ukuran memori untuk tipe data int
Catatan :
Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis mesin
yang digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda dengan
mesin 32 bit).
1. Variabel
2.1 Aturan Pendefinisan Variabel
Aturan penulisan pengenal untuk sebuah variabel, konstanta atau fungsi yang
didefinisikan oleh pemrogram adalah sebagai berikut :
Pengenal harus diawali dengan huruf (A..Z, a..z) atau karakter garis bawah ( _ ).
Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah atau tanda
dollar ($).
Panjang pengenal boleh lebih dari 31 karakter, tetapi hanya 31 karakter pertama yang
akan dianggap berarti.
Pengenal tidak boleh menggunakan nama yang tergolong sebagai kata-kata cadangan
(reserved words) seperti int, if, while dan sebagainya.
2.2 Mendeklarasikan Variabel
Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang
ada padanya dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang akan
digunakan dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di
sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya.
Bentuk umum deklarasi variabel:
Jobsheet Pemograman Bahasa C 14
Tipe Total bit Kawasan Keterangan
short int 16 -32768 s/d 32767 short integerlong int 32 -2147483648 s/d 2147483647 long integersigned int 32 -2147483648 s/d 2147483647 biasa disingkat dengan intunsigned int 32 0 s/d 4294967295 bilangan int tak bertanda
Pada pendeklarasian varibel, daftar-variabel dapat berupa sebuah variabel atau
beberapa variabel yang dipisahkan dengan koma. Contoh:
int var_bulat1;
float var_pecahan1, var_pecahan2;
2.3 Memberikan Nilai ke Variabel
Untuk memberikan nilai ke variabel yang telah dideklarasikan, maka bentuk umum
pernyataan yang digunakan adalah :
Contoh:
int var_bulat = 10;
double var_pecahan = 10.5;
2.4 Inisialisasi Variabel
Adakalanya dalam penulisan program, setelah dideklarasikan, variabel langsung
diberi nilai awal. Sebagai contoh yaitu variabel nilai :
int nilai;
nilai = 10;
3. Konstanta
Konstanta menyatakan nilai yang tetap. Berbeda dengan variabel, suatu konstanta
tidak dideklarasikan. Namun seperti halnya variabel, konstanta juga memiliki tipe.
Penulisan konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing.
Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik
tunggal, contohnya : ‘A’ dan ‘@’.
Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tak
mengandung bagian pecahan, contohnya : –1 dan 32767.
Jobsheet Pemograman Bahasa C 15
tipe daftar-variabel;
nama_variabel = nilai;
Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa titik)
dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e), contohnya
: 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5 (maksudnya
2,1 x 105 ).
Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda
petik-ganda (“), contohnya :“Pemrograman Dasar C”.
4. Operator
Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program
untuk melakukan sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai,
memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai. Sebagian
operator C tergolong sebagai operator binary, yaitu operator yang dikenakan terhadap dua
buah nilai (operand). Contoh :
a + b
Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua
operand-nya (yaitu a dan b). Karena operator penjumlahan melibatkan dua operator ini
tergolong sebagai operator binary.
-c
Simbol - (minus) juga merupakan operator. Simbol ini termasuk sebagai operator
unary, yaitu operator yang hanya memiliki sebuah operand (yaitu c pada contoh ini).
C. Daftar Alat dan Bahan.
1. CPU
2. Monitor
3. Keyboard
4. Mouse
5. Printer
6. Job Sheet Praktikum
D. Langkah Kerja.
Jobsheet Pemograman Bahasa C 16
1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows.
2. Pilih Start pada ujung kiri bawah monitor.
3. Pilih Program.
4. Pilih Program Turbo C atau TC for windows.
5. Jika Layar Turbo C sudah keluar, Pilih File.
6. Pilih News untuk membuka Program baru, atau open untuk membuka file program
yang sudah dibuat sebelumnya.
7. Ketik Program sesuai dengan di data program.
8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file
sesuai keinginan praktikan.
9. compile program tersebut untuk melihat kebenaran pengetikan program dan untuk
mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj.
10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut.
11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut.
12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama.
E. Data Program
1. Tipe-tipe data dasar dalam C.
#include <stdio.h>
void main()
{
int var_bulat = 32767;
float var_pecahan1 = 339.2345678f;
double var_pecahan2 = 3.4567e+40;
char var_karakter = 'S';
printf("Variabel bulat = %d\n", var_bulat);
printf("Variabel pecahan1 = %f\n", var_pecahan1);
printf("Variabel pecahan2 = %le\n", var_pecahan2);
printf("Variabel karakter = %c\n", var_karakter);
}
2. Mengenal beberapa operator dalam C.
#include <stdio.h>
Jobsheet Pemograman Bahasa C 17
void main()
{
int a, b, c, hasil;
printf("Masukkan nilai a = ");
scanf("%d", &a);
printf("Masukkan nilai b = ");
scanf("%d", &b);
printf("Masukkan nilai c = ");
scanf("%d", &c);
printf("\n");
hasil = a - b;
printf("Hasil pengurangan : a - b = %d\n", hasil);
printf("Hasil perkalian : b * c = %d\n", b * c);
hasil = a / c;
printf("Hasil pembagian : a / c = %d\n", hasil);
printf("Hasil operasi : a + b * c = %d\n", a + b * c);
}
3. Operator Modulus
#include <stdio.h>
void main()
{
int a = 14, b = 2, c = 3, d = 4;
printf("a = %d, b = %d, c = %d, d = %d\n\n",a, b, c, d);
printf("Hasil a %% b = %d\n", a % b);
printf("Hasil a %% c = %d\n", a % c);
printf("Hasil a %% d = %d\n", a % d);
printf("Hasil a / d * d + a %% d = %d\n",a / d * d + a %
d);
}
4. Menghitung diskriminan pers kuadrat ax^2 + bx + c = 0
# include <stdio.h>
void main()
Jobsheet Pemograman Bahasa C 18
{
float a,b,c,d = 0;
a = 3.0f;
b = 4.0f;
c = 7.0f;
d = b*b-4*a*c;
printf("Diskriminan = %f\n",d);
}
5. Penggunaan pre & post Increment operator
#include <stdio.h>
void main()
{
int count = 0, loop;
loop = ++count; /* count=count+1; loop=count; */
printf("loop = %d, count = %d\n", loop, count);
loop = count++; /* loop=count; count=count+1; */
printf("loop = %d, count = %d\n", loop, count);
}
6. Perbedaan format %g, %e dan %f
#include <stdio.h>
void main()
{
float x;
printf("Masukkan nilai pecahan yg akan ditampilkan : ");
scanf("%f", &x);
printf("format e => %e\n", x);
printf("format f => %f\n", x);
printf("format g => %g\n", x);
}
7. Penggunaan format panjang medan data
#include <stdio.h>
Jobsheet Pemograman Bahasa C 19
main()
{
int nilai1 = 20;
float nilai2 = 500.0f;
printf("Abad %5d\n", nilai1);
printf("%10.2f\n", nilai2);
printf("%10s\n", "Bahasa C"); /* String rata kanan */
printf("%-10s\n", "Bahasa C"); /* String rata kiri */
}
8. Menghitung keliling dan luas lingkaran
#include <stdio.h>
void main()
{
float radius, keliling, luas;
printf("Masukkan jari-jari lingkaran : ");
scanf("%f",&radius);
keliling = 2 * 3.14f * radius;
luas = 0.5f * 3.14f * radius * radius;
printf("\nData lingkaran\n");
printf("Jari-jari = %8.2f\n", radius);
printf("Keliling = %8.2f\n", keliling);
printf("Luas = %8.2f\n", luas);
}
F. SOAL
1. Pilihlah nama-nama variabel yang benar dan yang salah, mengapa ?
2. Apa yang dihasilkan oleh program di bawah ini :
voi main()
{
Jobsheet Pemograman Bahasa C 20
int char 6_05 floating _1312calloc Xx A$ ReInitialize alpha_beta_routinexxx z
char c, d;
c = 'd';
d = c;
printf("d = %c", d);
}
3. Buatlah program untuk mengevaluasi polynomial di bawah ini :
3x2 – 5x + 6 dengan nilai x merupakan masukan dari user.
4. Buatlah program untuk mengkonversi suhu dari Celcius ke Fahrenheit dengan rumus
F = C * 1.8 + 32
Input : suhu dalam Celcius
Output : suhu dalam Fahrenheit
Jobsheet Pemograman Bahasa C 21
PRAKTIKUM III
PENGAMBILAN KEPUTUSAN
A. Tujuan Instruksional Khusus
1. Menjelaskan tentang operator kondisi (operator relasi dan logika)
2. Menjelaskan penggunaan pernyataan if
3. Menjelaskan penggunaan pernyataan if-else
4. Menjelaskan penggunaan pernyataan if dalam if
5. Menjelaskan penggunaan pernyataan else-if
6. Menjelaskan penggunaan pernyataan switch
B. Dasar Teori
Statement if-else digunakan untuk menentukan pilihan dari suatu kondisi yang
diberikan. Cara kerjanya adalah melakukan perbandingan menggunakan Relational
Operator dan/atau Logical Operator, apabila suatu kondisi terpenuhi (benar) maka akan
mengerjakan proses A dan apabila kondisi tidak terpenuhi (salah) maka tidak akan
mengerjakan proses A atau dapat juga mengerjakan proses lain misalkan proses B. Proses
A dan B dapat berupa satu baris statement atau beberapa baris yang dikelompokkan
(Compound Statement). Statement if-else bersarang merupakan kombinasi dari beberapa
if-else, dinama apabila ada beberapa kondisi yang harus diuji kebenarannya secara
bersama (if didalam if). Statement else-if adalah cara lain dari bentuk if-else, yang
digunakan untuk menentukan satu kondisi yang benar dari beberapa kondisi yang tersedia.
Statement switch-case adalah bentuk lain dari statement else-if, dengan mendaftar
kondisi secara vertical dalam satu kolom sehingga memudahkan dalam hal evaluasi
program.
C. Daftar Alat dan Bahan.
1. CPU
2. Monitor
3. Keyboard
Jobsheet Pemograman Bahasa C 22
4. Mouse
5. Printer
6. Job Sheet Praktikum
D. Langkah Kerja.
1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows.
2. Pilih Start pada ujung kiri bawah monitor.
3. Pilih Program.
4. Pilih Program Turbo C atau TC for windows.
5. Jika Layar Turbo C sudah keluar, Pilih File.
6. Pilih News untuk membuka Program baru, atau open untuk membuka file program
yang sudah dibuat sebelumnya.
7. Ketik Program sesuai dengan di data program.
8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file
sesuai keinginan praktikan.
9. compile program tersebut untuk melihat kebenaran pengetikan program dan untuk
mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj.
10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut.
11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut.
12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama.
E. Data Program
1. Menghitung nilai discount menggunakan if.
#include <stdio.h>
void main()
{
double total_pembelian, discount = 0;
printf("Total pembelian = Rp ");
scanf("%lf", &total_pembelian);
if(total_pembelian >= 100.000)
discount = 0.05 * total_pembelian;
printf("Besarnya discount = Rp %.2lf\n", discount);
}
Jobsheet Pemograman Bahasa C 23
2. Menghitung nilai absolut suatu bilangan.
#include <stdio.h>
void main()
{
int bil, abs;
printf("Masukkan bilangan bulat : ");
scanf("%d", &bil);
if(bil < 0)
abs = -bil;
printf("Nilai absolut dari %d adalah %d\n\n", bil,abs);
}
3. Mengamati penggunaan statement penentu keputusan sederhana, yaitu menentukan
apakah bilangan yang dimasukkan lebih kecil dari ndol?
#include <stdio.h>
void main()
{
int bil,absolut;
printf("Masukkan bilangan bulat: ");
scanf("%d", &bil);
if(bil < 0) absolut = -bil;
printf("Nilai absolute dari %d adalah = %d", bil,
absolut);
getch();
}
4. Suatu bilangan apabila dapat dibagi dengan bilangan yang lain, maka tidak
menghasilkan suatu sisa nilai, sehingga dengan cara ini program dapat menentukan
apakah suatu bilangan habis dibagi atau tidak. Program dibawah ini menghitung sisa
pembagian menggunakan operator aritmatika yaitu ‘%’ (modulus).
#include <stdio.h>
void main()
{
int pembilang, penyebut, sisa;
Jobsheet Pemograman Bahasa C 24
printf("Masukkan pembilang : ");
scanf("%d", &pembilang);
printf("Masukkan penyebut : ");
scanf("%d", &penyebut);
sisa = pembilang % penyebut;
puts(“”);
if(sisa)
printf("%d tidak habis dibagi %d\n", pembilang, penyebut);
else
printf("%d habis dibagi %d\n", pembilang, penyebut);
getch();
}
5. Compound Statement adalah mengelompokkan suatu proses menjadi satu blok.
Didalam if-else penggunaan Compound Statement adalah untuk mengelompokkan
proses-proses yang harus dikerjakan bila kondisi terpenuh ataupun bila kondisi tidak
terpenuhi
#include <stdio.h>
void main()
{
char tag;
printf("Masukkan tipe tag ( 2 / 4) : "); scanf("%c",
&tag);
if(tag==’2’) {
printf("Merk sepeda motor bertipe 2 tag\n\n");
printf(" 1. YA MAHA");
printf(" 2. YA SUZUKI");
printf(" 3. YA HONDA");
} else {
printf("Merk sepeda motor bertipe 4 tag\n\n");
printf(" 1. HONDA");
printf(" 2. SUZUKI");
printf(" 3. YAMAHA");
}
Jobsheet Pemograman Bahasa C 25
getch();
}
6. Statement if-else tidak dapat digunakan untuk menentukan satu pilihan yang benar
diantara beberapa pilihan yang ada, oleh karena itu dapat digunakan statement else-
if dimana dapat digunakan untuk menguji kondisi yang benar diantara beberapa
beberapa kondisi yang diberikan. Program dibawah ini adalah digunakan untuk
menentukan satu pilihan diantara beberapa pilihan yaitu memilih satu operator
(dimasukkan dari keyboard) yang sesuai diantara 4 Arithmetic Operator yaitu (+, -, /
dan *). Bila suatu operator dikenal maka dilanjutkan proses perhitungan sesuai
dengan operator yang dikenal tersebut, sedangkan bila tidak dikenal maka diberikan
komentar “Operator SALAH!”. Pengujian operator dilakukan secara bertahap dari
operator ‘*’, ‘/’, ‘+’ dan ‘-‘, bila keempat operator tidak ditemukan maka pada
statement penujian cukup dituliskan else tanpa if, yang menandakan pengujian
selesai dan tidak ditemukan operator yang sesuai.
#include <stdio.h>
void main()
{
int valid_operator = 1;
char operator;
float bil1, bil2, hasil;
printf("Masukkan 2 bilangan dan sebuah operator.\n\n");
printf("Dengan format:\n\n");
printf("= bilangan-1 operator bilangan-2\n\n");
printf("= ");
scanf("%f %c %f", &bil1, &operator, &bil2);
if(operator == '*') {
hasil = bil1 * bil2;
} else if(operator == '/')
hasil = bil1 / bil2;
else if(operator == '+')
hasil = bil1 + bil2;
else if(operator == '-')
hasil = bil1 - bil2;
Jobsheet Pemograman Bahasa C 26
else
valid_operator = 0;
if(valid_operator) {
printf("\nHasil perhitungan\n\n");
printf("%g %c %g = %g\n",bil1,operator,bil2,hasil);
} else {
printf("\nOperator SALAH!\n");
printf(“\nGunakan operator +, -, / dan * saja!”);
}
getch();}
F. SOAL
1. Buatlah program untuk menerima 2 buah bilangan bulat masukan. Tampilkan hasil
dari pembagian bilangan pertama dengan bilangan kedua, dengan ketelitian 3 desimal.
Input : bil1 dan bil2Output : hasil bagi bil1 dengan bil2
Nilai tambah : program bisa mengecek pembagian dengan nol, yaitu jika bilangan kedua
adalah nol, maka tidak dilakukan proses pembagian, namun ditampilkan pesan
kesalahannya (division by zero).
2. Buatlah program untuk menghitung determinan dan mencari akar-akar dari persamaan
kuadrat : ax2 + bx + c = 0 , dengan ketentuan sbb :
D = b2 - 4ac
Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a
Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu :
x1 = (-b + sqrt(D)) / 2a
x2 = (-b - sqrt(D)) / 2a
Jika D < 0 , maka terdapat 2 akar imaginair yang berlainan, yaitu :
x1 = -b / 2a + (sqrt(-D) / 2a) i
x2 = -b / 2a - (sqrt(-D) / 2a) i
Jobsheet Pemograman Bahasa C 27
Input : a, b, c (float)
Output : Nilai Determinan serta nilai akar-akar persamaan tsb (x1& x2).
Petunjuk : - untuk mencari akar dari x, gunakan : sqrt(x) yang didefinisikan pada
<math.h>.
- gunakan else if
3. Buatlah program untuk menampilkan menu dan melakukan proses sbb :
Menu : 1. Menghitung volume kubus
2. Menghitung luas lingkaran
3. Menghitung volume silinder.
Input : pilihan user (1, 2 atau 3)
Jika pilihan = 1, maka :
Input : panjang sisi kubus
Output : Volume kubus (vol = sisi3)
Jika pilihan = 2, maka :
Input : panjang jari-jari lingkaran
Output : Luas lingkaran (luas = 3.14 * r2)
Jika pilihan = 3, maka :
Input : panjang jari-jari lingkaran & tinggi silinder
Output : Volume silinder (vol = 3.14 * r2 * t)
Jika pilihan selain 1, 2 & 3 (default) : Tampilkan pesan kesalahan.
Petunjuk : gunakan switch-case
Jobsheet Pemograman Bahasa C 28
PRAKTIKUM IV
PENGULANGAN PROSES
A. Tujuan Instruksional Khusus
1. Menjelaskan proses pengulangan menggunakan pernyataan for
2. Menjelaskan proses pengulangan menggunakan pernyataan while
3. Menjelaskan proses pengulangan menggunakan pernyataan do-while
4. Menjelaskan penggunaan pernyataan break
5. Menjelaskan penggunaan pernyataan continue
6. Menjelaskan penggunaan pernyataan goto
7. Menjelaskan loop di dalam loop (nested loop) dan contoh kasusnya
8. Menjelaskan penggunaan exit() untuk menghentikan eksekusi program dan contoh
kasusnya
B. Dasar Teori
1 Pernyataan for
Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam
pemrograman. Pada semua bahasa pemrograman, pengulangan proses ditangani dengan
suatu mekanisme yang disebut loop. Dengan menggunakan loop, suatu proses yang
berulang misalnya menampilkan tulisan yang sama seratus kali pada layar dapat
diimpelementasikan dengan kode program yang pendek.
Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah
pernyataan for. Bentuk pernyataan ini :
Kegunaan dari masing-masing ungkapan pada pernyataan for.
Jobsheet Pemograman Bahasa C 29
for (ungkapan1; ungkapan2; ungkapan3) pernyataan;
Ungkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel pengendali
loop.
Ungkapan2 : dipakai sebagai kondisi untuk keluar dari loop.
Ungkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendali loop.
Ketiga ungkapan dalam for tersebut harus dipisahkan dengan tanda titik koma (;). Dalam
hal ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika pernyataannya
berbentuk jamak, maka pernyataan-pernyataan tersebut harus diletakkan di antara kurung
kurawal buka ({) dan kurung kurawal tutup (}), sehingga formatnya menjadi :
Untuk keperluan ini, pernyataan for yang digunakan berupa :
for (bilangan = 20; bilangan <= 100; bilangan += 10)printf("%d\n", bilangan);
Kalau digambarkan dalam bentuk diagram alir, akan terlihat sbb :
Jobsheet Pemograman Bahasa C 30
for (ungkapan1; ungkapan2; ungkapan3) {
pernyataan;pernyataan;...
}
bilangan = 20
bilangan <=100
Cetak bilangan
bilangan = bilangan + 10
salah
Keluar loop
benar
Gambar 1. Diagram alir for
/* File program : for1.cContoh pemakaian for untuk membentuk deret naik */
#include <stdio.h>
main(){
int bilangan;
for(bilangan = 20; bilangan <= 100; bilangan += 10)printf("%d\n", bilangan);
}
Contoh eksekusi :
2030405060708090100
Pada program di atas, kenaikan terhadap variabel pengendali loop sebesar 10 (positif),
yang dinyatakan dengan ungkapan
bilangan += 10
yang sama artinya dengan
bilangan = bilangan + 10
Jobsheet Pemograman Bahasa C 31
Pada contoh yang melibatkan pernyataan for di atas, kenaikan variabel pengendali
loop berupa nilai positif. Sebenarnya kenaikan terhadap variabel pengendali loop bisa
diatur bernilai negatif. Cara ini dapat digunakan untuk memperoleh deret sebagai berikut :
605040302010Untuk itu selengkapnya program yang dibutuhkan adalah sebagai berikut :
/* File program : for2.c Contoh pemakaian for untuk membentuk deret turun */
#include <stdio.h>
main(){
int bilangan;
for (bilangan = 60; bilangan >= 10; bilangan -= 10)printf("%d\n", bilangan);
}Contoh eksekusi :
605040302010
Kadang-kadang dijumpai adanya pernyataan for yang tidak mengandung bagian
ungkapan yang lengkap (beberapa ungkapan dikosongkan). Dengan cara ini, pernyataan
for (bilangan = 20; bilangan <= 100; bilangan += 10) printf(“%d\n”, bilangan);
dapat ditulis menjadi :
bilangan = 20; /* inisialisasi di luar for */for ( ; bilangan <= 100; )
ungkapan kosong
{printf(“%d\n”, bilangan);bilangan += 10;
}
Jobsheet Pemograman Bahasa C 32
Tampak bahwa ungkapan yang biasa dipakai untuk inisialisasi variabel pengendali loop tak
ada. Sebagai gantinya pengendalian loop diatur sebelum pernyataan for, berupa
bilangan = 20;Pengosongan ini juga dilakukan pada ungkapan yang biasa dipakai untuk menaikkan nilai
variabel pengendali loop. Sebagai gantinya, di dalam tubuh loop diberikan pernyataan
untuk menaikkan nilai variabel pengendali loop, yaitu berupa
bilangan += 10;
Ungkapan yang tidak dihilangkan berupa bilangan <=100. Ungkapan ini tetap disertakan
karena dipakai sebagai kondisi untuk keluar dari loop.
Sesungguhnya ungkapan yang dipakai sebagai kondisi keluar dari loop juga bisa
dihilangkan, sehingga bentuknya menjadi
for (;;)
pernyataan
Suatu pertanyaan mungkin timbul “Lalu bagaimana caranya kalau ingin keluar dari loop
pada bentuk di atas?”. Caranya adalah dengan menggunakan pernyataan yang dirancang
khusus untuk keluar dari loop. Mengenai hal ini akan dibahas pada sub bab yang lain.
2 Pernyataan while
Pada pernyataan while, pengecekan terhadap loop dilakukan di bagian awal
(sebelum tubuh loop). Lebih jelasnya, bentuk pernyataan while adalah sebagai berikut :
dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun
pernyataan kosong. Proses pengulangan terhadap pernyataan dijelaskan pada gambar
berikut :
Jobsheet Pemograman Bahasa C 33
while (kondisi)
pernyataan;
pernyataan
kondisi
benar
salah
keluar loop
Gambar 2. Diagram alir while
Dengan melihat gambar 2, tampak bahwa ada kemungkinan pernyataan yang merupakan
tubuh loop tidak dijalankan sama sekali, yaitu kalau hasil pengujian kondisi while yang
pertama kali ternyata bernilai salah.
Contoh pemakaian while misalnya untuk mengatur agar tombol yang ditekan oleh
pemakai program berupa salah satu diantara 'Y','y', 'T' atau 't'. Impelementasinya :
/*File program : pilihan.cUntuk membaca tombol Y atau T */
#include <stdio.h>
main(){
char pilihan;/* diberi nilai salah lebih dahulu */int sudah_benar = 0;
printf("Pilihlah Y atau T.\n");
/* program dilanjutkan jika tombol Y,y,T atau t ditekan */
while(!sudah_benar){
pilihan = getchar(); /* baca tombol */sudah_benar = (pilihan == 'Y') || (pilihan == 'y')||
(pilihan == 'T') || (pilihan == 't');}
/* memberi keterangan tentang pilihan */switch(pilihan){case 'Y':case 'y':
puts("\nPilihan anda adalah Y");break;
case 'T':
Jobsheet Pemograman Bahasa C 34
case 't':puts("\nPilihan anda adalah T");
}}
Contoh eksekusi :
Pilihlah Y atau TPilihan anda adalah Y
Inisialisasi terhadap variabel sudah_benar yang akan dijalankan pada kondisi while dengan
memberi nilai awal bernilai false (sudah_benar = 0) dimaksudkan agar tubuh loop
{pilihan = getchar( ); /* baca tombol */sudah_benar = (pilihan == 'Y') || (pilihan== 'y')||
(pilihan == 'T') || (pilihan == 't');}
dijalankan minimal sekali.
Contoh lain pemakaian while dapat dilihat pada program yang digunakan untuk
menghitung banyaknya karakter dari kalimat yang dimasukkan melalui keyboard
(termasuk karakter spasi). Untuk mengakhiri pemasukan kalimat, tombol ENTER (‘\n’)
harus ditekan. Karena itu, tombol ENTER inilah yang dijadikan kondisi penghitungan
jumlah spasi maupun karakter seluruhnya. Lengkapnya, kondisi yang dipakai dalam while
berupa :
while((kar = getchar()) != '\n')
Ungkapan di atas mempunyai arti :
Bacalah sebuah karakter dan berikan ke variabel kar
Kemudian bandingkan apakah karakter tersebut = ‘\n’ (ENTER)
Ungkapan menghasilkan nilai benar jika tombol yang ditekan bukan ENTER. Pada
program kalau tombol yang ditekan bukan ENTER , maka :
Jumlah karakter dinaikkan sebesar satu melalui pernyataan : jumkar++;
Kalau karakter berupa SPASI, maka jumlah spasi dinaikkan sebesar satu, melalui
pernyataan : if (kar == ‘ ‘) jumspasi++;
/* File program : jumkar.cMenghitung jumlah kata dan karakter dalam suatu kalimat */
Jobsheet Pemograman Bahasa C 35
#include <stdio.h>
main(){
char kar;int jumkar = 0, jumspasi = 0;
puts("Masukkan sebuah kalimat dan akhiri dgn ENTER.\n");puts("Saya akan menghitung jumlah karakter ");puts("pada kalimat tersebut.\n");while((kar = getchar()) != '\n'){
jumkar++;if (kar == ' ') jumspasi++;
}
printf("\nJumlah karakter = %d", jumkar);printf("\nJumlah SPASI = %d\n\n", jumspasi);
}
Contoh eksekusi :
Masukkan sebuah kalimat, akhiri dgn ENTER.Saya akan menghitung jumlah karakter pada kalimat tersebut.
Belajar bahasa C sangat menyenangkan
Jumlah karakter = 36Jumlah SPASI = 4
3 Pernyataan do-while
Bentuk pernyataan do-while
Pada pernyataan do-while, tubuh loop berupa pernyataan,dengan pernyataan bisa
berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Pada
pernyataan do, mula-mula pernyataan dijalankan. Selanjutnya, kondisi diuji. Sendainya
Jobsheet Pemograman Bahasa C 36
do
pernyataan;
while (kondisi)
kondisi bernilai benar, maka pernyataan dijalankan lagi, kemudian kondisi diperiksa
kembali, dan seterusnya. Kalau kondisi bernilai salah pada saat dites, maka pernyataan
tidak dijalankan lagi. Untuk lebih jelasnya dapat dilihat pada Gambar 4.3. Berdasarkan
Gambar 4.3 terlihat bahwa tubuh loop minimal akan dijalankan sekali.
Gambar 3. Diagram alir do-while
Program berikut memberikan contoh pemakaian do-while untuk mengatur
penampilan tulisan "BAHASA C" sebanyak sepuluh kali.
Contoh:
i = 0;do {
puts("BAHASA C");i++;
} while(i<10);
Pada program di atas, variabel pencacah dipakai untuk menghitung jumlah tulisan yang
sudah ditampilkan pada layar. Selama nilai pencacah kurang dari 10, maka perintah
Jobsheet Pemograman Bahasa C 37
pernyataan
kondisi
Tubuh loop
benar
salah
keluar loop
puts("BAHASA C");
akan dilaksanakan kembali
Penanganan pembacaan tombol pada contoh program pilihan.c yang memakai
while di atas, kalau diimplementasikan dengan memakai do-while adalah sebagai berikut
/* File program : pilihan2.c
Untuk membaca tombol Y atau T */
#include <stdio.h>
void main()
{
char pilihan;
int sudah_benar;
printf("Pilihlah Y atau T.\n");
/* program dilanjutkan kalau tombol Y,y,T atau t ditekan */
do
{
pilihan = getchar( ); /* baca tombol */
sudah_benar = (pilihan == 'Y') || (pilihan== 'y')||
(pilihan == 'T') || (pilihan == 't');
} while(! sudah_benar);
/* memberi keterangan tentang pilihan */
switch(pilihan)
{
case 'Y':
case 'y':
puts("\nPilihan anda adalah Y");
break;
case 'T':
case 't':
puts("\nPilihan anda adalah T");
}
Jobsheet Pemograman Bahasa C 38
}
Contoh eksekusi :
Pilihlah Y atau TPilihan anda adalah T
Mula-mula tombol dibaca dengan menggunakan getchar() dan kemudian diberikan ke
variabel pilihan. Sesudah itu, variabel sudah_benar akan diisi dengan nilai benar (1) atau
salah (0) tergantung dari nilai pilihan. Kalau pilihan berisi salah satu diantara ‘Y’,‘y’, ‘T’
atau ‘t’, maka sudah berisi salah satu diantara ‘Y’, ‘y’, ‘T’ atau ‘t’, maka sudah_benar
akan berisi benar. Nilai pada vaiabel sudah_benar ini selanjutnya dijadikan sebagai
kondisi do-while. Pengulangan terhadap pembacaan tombol akan dilakukan kembali
selama sudah_benar benilai salah.
4 Pernyataan break.
Pernyataan break sesungguhnya telah diperkenalkan pada pernyataan switch.
Pernyataan ini berfungsi untuk keluar dari loop for, do-while dan while. Sedangkan pada
switch yaitu untuk menuju ke akhir (keluar dari) struktur switch. Sebagai contoh dapat
dilihat pada gambar 4.4. Kalau pernyataan break dijalankan maka eksekusi akan
dilanjutkan ke pernyataan yang terletak sesudah akhir tubuh loop for.
Gambar 4. Ilustrasi pengaruh break
Jobsheet Pemograman Bahasa C 39
for ( ; ; ){
. .
if ( …… ) break;
.
.
} /* akhir tubuh loop for */
Pada contoh potongan program berikut, pembacaan dan penampilan terhadap
tombol yang ditekan akan berakhir kalau tombol yang ditekan adalah ENTER (‘\n’).
Pernyataan yang digunakan untuk keperluan ini :
if (kar == ‘\n’)
break; /* keluar dari loop for */
Yang menyatakan “Jika tombol yang ditekan berupa ENTER, maka keluarlah dari loop
for”. Untuk lebih jelasnya, perhatikan program di bawah ini.
/* File program : tamat.cPemakaian break untuk keluar dari looping */
#include <stdio.h>
main(){
char kar;
printf("Ketik sembarang kalimat");printf(" dan akhiri dengan ENTER\n\n");
for ( ; ; ){
kar = getchar(); if(kar == '\n')
break;}printf("Selesai\n");
}
Contoh eksekusi :
Ketik sembarang kalimat dan akhiri dengan ENTER :
Menulis apa saja Selesai
Jika pernyataan break berada dalam loop yang bertingkat (nested loop), maka pernyataan
break hanya akan membuat proses keluar dari loop yang bersangkutan (tempat break
dituliskan), bukan keluar dari semua loop.
Jobsheet Pemograman Bahasa C 40
5 Pernyataan Continue
Pernyataan continue digunakan untuk mengarahkan eksekusi ke iterasi (proses)
berikutnya pada loop yang sama. Pada do-while dan while, pernyataan continue
menyebabkan eksekusi menuju ke kondisi pengujian pengulangan, seperti yang dilukiskan
pada Gambar 4.5. Pada loop for, pernyataan contunue menyebabkan bagian penaik
variabel pengendali loop dikerjakan (ungkapan3 pada struktur for) dan kondisi untuk
keluar dari loop for (ungkapan2 pada struktur for) diuji kembali.
Program ini digunakan untuk memasukkan data harus diulangi dan hal ini
dikendalikan dengan continue. Untuk mengakhiri pemasukan data, data yang dimasukkan
harus bernilai kurang dari 0. Perlu diketahui kondisi bernilai 1.
while (kondisi) do{ { continue; continue;} } while (kondisi)
Gambar.5 Pengaruh continue pada while dan do-while
Menyatakan bahwa kondisi selalu dianggap benar. Untuk keluar dari loop, pernyataan yang
digunakan berupa break.
Pengaruh continue pada loop for diperlihatkan pada dibawah ini. Program ini
dipakai untuk menampilkan bilangan ganjil yang terletak antara 7 sampai dengan 25,
kecuali 15.
/* File program : ganjil.c
menampilkan bilangan ganjil antara 7 - 25 kecuali 15 */
#include <stdio.h>
main()
{
int x;
for (x = 7; x <= 25; x += 2)
{
Jobsheet Pemograman Bahasa C 41
if (x == 15)
continue;
printf("%4d", x);
}
printf("\n");
}
Contoh eksekusi :
7 9 11 13 17 19 21 23 25
Pada program di atas, untuk menghindari agar nilai 15 tidak ditampilkan ke layar,
pernyataan yang digunakan berupa
if ( x == 15) continue;
Artinya, jika kondisi x == 15 bernilai benar, pernyataan continue menyebabkan
pernyataan sisanya yaitu
printf(“%d”,x);
diabaikan dan eksekusi diarahkan kepada ungkapan :
x += 2
dan kemudian menguji kondisi :
x <= 25
Pada program di atas, pernyataan :
for (x = 7; x <= 25; x += 2)
{
if (x == 15)
continue;
printf("%4d", x);
Jobsheet Pemograman Bahasa C 42
}
dapat ditulis dalam bentuk lain sebagai berikut :
for (x = 7; x <= 25; x += 2)if (x != 15)
printf(“%4d”, x);
6 Loop Di Dalam Loop
Dalam suatu loop bisa terkandung loop yang lain. Loop yang terletak di dalam loop
biasa disebut dengan loop di dalam loop (nested loop). Salah satu contoh nested loop
misalnya pada permasalahan untuk membuat tabel perkalian:
1 2 3 4 5 6 7 8
1 1 2 3 4 5 6 7 8
2 2 4 6 8 10 12 14 16
3 3 6 9 12 15 18 21 24
4 4 8 12 16 20 24 28 32
5 5 10 15 20 25 30 35 40
6 6 12 18 24 30 36 42 48
7 7 14 21 28 35 42 49 56
8 8 16 24 32 40 48 56 64
Implementasi dalam program selengkapnya adalah sebagai berikut :
/* File program : tblkali.c Loop for bersarang untuk membuat tabel perkalian */
#include <stdio.h>
#define MAKS 8
main(){int baris, kolom, hasil_kali;
Jobsheet Pemograman Bahasa C 43
for (baris = 1; baris <= MAKS; baris++){
for (kolom = 1; kolom <= MAKS; kolom++){
hasil_kali = baris * kolom;printf ("%2d", hasil_kali);
}printf("\n"); /* pindah baris */
}}
Bagian yang terletak dalam bingkai di depan dapat dapat diperoleh melalui
for (baris = 1; baris <= MAKS; baris++)
{
hasil_kali = baris * kolom;
printf (“%2d”, hasil_kali);
}
dengan MAKS didefinisikan bernilai 8. Bagian loop yang terdalam :
for (kolom = 1; kolom <= MAKS; kolom++)
{
hasil_kali = baris * kolom;
printf (“%2d”, hasil_kali);
}
digunakan untuk mencetak suatu deret hasil perkalian dalam satu baris. Untuk berpindah
ke baris berikutnya, pernyataan yang digunakan yaitu
printf(“\n”);
Adapun pencetakan untuk semua baris dikendalikan melalui
for (baris = 1; baris <= MAKS; baris++)
Pernyataan di atas mempunyai arti “dari baris ke-1 sampai dengan baris ke-MAKS”.
7. Pernyataan goto
Pernyataan goto merupakan intruksi untuk mengarahkan eksekusi ke pernyataan
yang diawali dengan suatu label. Label sendiri berupa suatu pengenal (identifier) yang
diikuti dengan tanda titik dua (:)
Jobsheet Pemograman Bahasa C 44
Contoh pemakaian goto ditujukan pada program dibawah ini:
Pernyataan
goto cetak;
Mengisyaratkan agar eksekusi dilanjutkan ke pernyataan yang diawali dengan label
cetak:
Pernyataan
if (++pencacah <= 10)
goto cetak;
Mempunyai arti :
Naikkan nilai pencacah sebesar 1
Kemudian, jika pencacah kurang dari atau sama dengan 10 maka eksekusi menuju ke
label cetak.
Penerapan goto biasanya dilakukan pada loop di dalam loop (nested loop), dengan
tujuan memudahkan untuk keluar dari loop terdalam menuju ke pernyataan yang terletak di
luar loop terluar.
8. Menggunakan exit ( ) Untuk Menghentikan Eksekusi Program.
Suatu eksekusi program dapat dihentikan (secara normal) melalui pemanggilan
fungsi exit( ). Hal ini biasa dilakukan, jika di dalam suatu eksekusi terdapat suatu kondisi
yang tak dikehendaki. Prototipe dari fungsi exit() didefinisikan pada file stdlib.h, yang
memiliki deklarasi sebagai berikut :
void exit(int status);
Menurut kebiasaan, nilai nol diberikan pada argumen exit() untuk menunjukkan
penghentian program yang normal. Sedangkan untuk menunjukkan kesalahan, nilai yang
diberikan pada argumen fungsi diisi dengan nilai bukan-nol. Pada contoh program berikut,
eksekusi program akan dihentikan hanya jika tombol ‘X’ ditekan
/* File program : keluar.c
Pemakaian exit() untuk menghentikan eksekusi program */
#include <stdio.h>
Jobsheet Pemograman Bahasa C 45
#include <stdlib.h>
main(){char kar;
printf("Tekanlah X untuk menghentikan program.\n");
for ( ; ;){
while ((kar = getchar()) == 'X')
exit(0);}
}
C. Daftar Alat dan Bahan.
1. CPU
2. Monitor
3. Keyboard
4. Mouse
5. Printer
6. Job Sheet Praktikum
D. Langkah Kerja.
1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows.
2. Pilih Start pada ujung kiri bawah monitor.
3. Pilih Program.
4. Pilih Program Turbo C atau TC for windows.
5. Jika Layar Turbo C sudah keluar, Pilih File.
6. Pilih News untuk membuka Program baru, atau open untuk membuka file program
yang sudah dibuat sebelumnya.
7. Ketik Program sesuai dengan di data program.
8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file
sesuai keinginan praktikan.
9. compile program tersebut untuk melihat kebenaran pengetikan program dan untuk
mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj.
10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut.
11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut.
12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama.
Jobsheet Pemograman Bahasa C 46
E. Data Program
1. Menghitung jumlah delapan triangular tanpa pernyataan for()
/* File program :triangular1.c */#include <stdio.h>
main(){
int jumlah = 0;
jumlah = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8;
printf("Jumlah delapan triangular adalah %d\n",jumlah);}
2. Pemakaian for untuk membentuk deret naik.
3. Pemakaian for untuk membentuk deret turun
4. Menghitung jumlah 200 triangular menggunakan for().
/* File program : triangular2.c */#include <stdio.h>
main(){
Jobsheet Pemograman Bahasa C 47
/* File program : for1.c */#include <stdio.h>
main(){
int bilangan;
/* File program : for2.c */#include <stdio.h>
main(){
int bilangan;
for (bilangan = 60; bilangan >= 10; bilangan -= 10)printf("%d\n", bilangan);
}
for(bilangan = 20; bilangan <= 100; bilangan += 10)printf("%d\n", bilangan);
}
int n, jumlah = 0;
for (n=1; n<=200; n++)jumlah = jumlah + n;
printf("Jumlah 200 triangular adalah %d\n", jumlah);}
5. Membuat tabel dari jumlah triangular yang diinputkan
/* File program : triangular3.c */#include <stdio.h>
main(){
int n, bil, jumlah = 0;
printf("Masukkan bilangan triangular : ");scanf("%d", &bil);
printf("\nTABEL PENJUMLAHAN TRIANGULAR\n\n");printf("%3s%10s\n\n","n","Jumlah");
for (n=1; n<=bil; n++){
jumlah = jumlah + n;printf("%3d %7d\n", n, jumlah);
}}
6. Menghitung jumlah kata dan karakter dalam suatu kalimat
/* File program : jumkar.c */#include <stdio.h>
main(){char kar;int jumkar = 0, jumspasi = 0;
puts("Masukkan sebuah kalimat dan akhiri dengan ENTER.");puts("Saya akan menghitung jumlah karakter ");puts("pada kalimat tersebut.\n");
while((kar = getchar()) != '\n'){
Jobsheet Pemograman Bahasa C 48
jumkar++;if (kar == ' ') jumspasi++;
}printf("\nJumlah karakter = %d", jumkar);printf("\nJumlah SPASI = %d\n\n", jumspasi);
}
7. Membalik angka menggunakan pernyataan while().
/* File program : loop9.c */#include <stdio.h>
main(){
int bil, digit_kanan;
printf("Masukkan bilangan yang mau dibalik : ");scanf("%d", &bil);
printf("Hasil pembalikannya = ");while(bil != 0){
digit_kanan = bil % 10;printf("%d", digit_kanan);bil = bil / 10;
}printf("\n");
}
8.Membaca tombol yang ditekan.
/*File program : pilihan.c */#include <stdio.h>
main(){ char pilihan; int sudah_benar = 0; /* diberi nilai salah lebih dahulu */
printf("Pilihlah Y atau T.\n");
/* program dilanjutkan jika tombol Y,y,T atau t ditekan */while(!sudah_benar){
pilihan = getchar(); /* baca tombol */sudah_benar = (pilihan == 'Y') || (pilihan == 'y')||
(pilihan == 'T') || (pilihan == 't');
Jobsheet Pemograman Bahasa C 49
}
/* memberi keterangan tentang pilihan */switch(pilihan) {case 'Y':case 'y':
puts("\nPilihan anda adalah Y");break;
case 'T':case 't':
puts("\nPilihan anda adalah T");}
}
9. Pemakaian break untuk keluar dari looping
10. Loop for bersarang untuk membuat tabel perkalian
/* File program : tblkali.c */#include <stdio.h>
#define MAKS 8
main(){int baris, kolom, hasil_kali;
for (baris = 1; baris <= MAKS; baris++){
Jobsheet Pemograman Bahasa C 50
/* File program : tamat.c */#include <stdio.h>
main(){
char kar;
printf("Ketik sembarang kalimat");printf(" dan akhiri dengan ENTER\n\n");
for ( ; ; ){
kar = getchar(); if(kar == '\n')
break;}printf("Selesai\n");
}
for (kolom = 1; kolom <= MAKS; kolom++){
hasil_kali = baris * kolom;printf ("%2d", hasil_kali);
}printf("\n"); /* pindah baris */
}}
11. Menampilkan bilangan ganjil antara 7 - 25 kecuali 15 menggunakan continue.
/* File program : ganjil.c */
#include <stdio.h>
main()
{
int x;
for (x = 7; x <= 25; x += 2)
{
if (x == 15)
continue;
printf("%4d", x);
}
printf("\n");
}
12. Pemakaian exit() untuk menghentikan eksekusi program.
C. SOAL
Jobsheet Pemograman Bahasa C 51
/* File program : keluar.c */
#include <stdio.h>#include <stdlib.h>
main(){
char kar;
printf("Tekanlah X untuk menghentikan program.\n");for ( ; ;){
while ((kar = getchar()) == 'X')exit(0);
}}
1. Buatlah program untuk menampilkan semua bilangan genap yang terletak antara 20
sampai dengan 120, dengan menggunakan for.
2. Buatlah program untuk menghitung jumlah angka dari suatu bilangan.
Contohnya : Jumlah angka dari bilangan 3255 = 3 + 2 + 5 + 5 = 15
Jumlah angka dari bilangan 4589 = 4 + 5 + 8 + 9 = 26
dan sebagainya.
3. Buatlah program untuk menerima daftar nilai mahasiswa sbb :
Input : - Jumlah data (n)
- Nilai ke-1 s/d Nilai ke-n
Output : - Nilai minimal
- Nilai maksimal
- Nilai rata-rata (rata-rata = nilai total / jumlah data)
(Petunjuk : Gunakan loop for dan seleksi kondisi dengan if)
4. Gunakan loop for untuk mendapatkan tampilan sbb :
1
22
333
4444
55555
5. Gunakan loop while untuk menampilkan bilangan integer antara 1 sampai dengan 10 di
layar sbb : 123456768910
Jobsheet Pemograman Bahasa C 52
PRAKTIKUM V
FUNGSI
A. Tujuan Instruksional Khusus
1. Memecah program dalam fungsi fungsi yang sederhana.
2. Menjelaskan tentang pemrograman terstruktur.
3. Mengetahui perbedaan antara variabel lokal, eksternal, statis dan register
B. Dasar Teori
Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas
tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari
program bahasa C berupa fungsi-fungsi, dalam hal ini program dari bahasa C dibentuk dari
kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. Fungsi
banyak digunakan pada program C dengan tujuan :
a. Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan.
Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi, maka
fungsi utama (main()) menjadi lebih pendek, jelas dan mudah dimengerti.
b. dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang
sama dan dipakai berulang-ulang di program dapat dituliskan sekali saja secara terpisah
dalam bentuk fungsi-fungsi. Selanjutnya bagian program yang membutuhkan langkah-
langkah ini tidak perlu selalu menuliskannya, tetapi cukup memanggil fungsi-fungsi
tersebut.
1. Dasar Fungsi
Fungsi standar C yang mengemban tugas khusus contohnya adalah ;
printf() , yaitu untuk menampilkan informasi atau data ke layar.
scanf() , yaitu untuk membaca kode tombol yang diinputkan.
Jobsheet Pemograman Bahasa C 53
Pada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut
sebagai argumen. Nilai masukan ini akan diolah oleh fungsi. Hasil akhir fungsi berupa
sebuah nilai (disebut sebagai return value atau nilai keluaran fungsi). Oleh karena itu
fungsi sering digambarkan sebagai "kotak gelap" seperti ditunjukkan pada gambar di
bawah ini.
Gambar 1 Fungsi sebagai sebuah kotak gelap
Penggambaran sebagai kotak gelap di antaranya menjelaskan bahwa bagian dalam
fungsi bersifat pribadi bagi fungsi. Tak ada suatu pernyataan di luar fungsi yang bisa
mengakses bagian dalam fungsi, selain melalui parameter (atau variabel eksternal yang
akan dibahas belakangan). Misalnya melakukan goto dari pernyataan di luar fungsi ke
pernyataan dalam fungsi adalah tidak diperkenankan.
Bentuk umum dari definisi sebuah fungsi adalah sebagai berikut ;
Keterangan :
tipe-keluaran-fungsi, dapat berupa salah satu tipe data C, misalnya char atau int .
Kalau penentu tipe tidak disebutkan maka dianggap bertipe int (secara default).
tubuh fungsi berisi deklarasi variabel (kalau ada) dan statemen-statemen yang akan
melakukan tugas yang akan diberikan kepada fungsi yang bersangkutan. Tubuh fungsi
ini ditulis di dalam tanda kurung kurawal buka dan kurung kurawal tutup.
Sebuah fungsi yang sederhana bisa saja tidak mengandung parameter sama sekali dan
tentu saja untuk keadaan ini deklarasi parameter juga tidak ada. Contoh ;
inisialisasi()
Jobsheet Pemograman Bahasa C 54
FUNGSI
ParameterKeluaran
Fungsi
tipe-keluaran-fungsi nama-fungsi (deklarasi argumen){
tubuh fungsi}
{return(0);
}
Pada fungsi di atas :
tipe keluaran fungsi tidak disebutkan, berarti keluaran fungsi ber tipe int.
inisialisasi adalah nama fungsi
Tanda () sesudah nama fungsi menyatakan bahwa fungsi tak memiliki parameter.
Tanda { dan } adalah awal dan akhir fungsi
return(0) merupakan sebuah pernyataan dalam tubuh fungsi.
inisialisasi()
{return(0);
}
Gambar 2 Penjelasan definisi sebuah fungsi
2 Memberikan Nilai Keluaran Fungsi
Suatu fungsi dibuat untuk maksud menyelesaikan tugas tertentu. Suatu fungsi
dapat hanya melakukan suatu tugas saja tanpa memberikan suatu hasil keluaran atau
melakukan suatu tugas dan kemudian memberikan hasil keluaran. Fungsi yang hanya
melakukan suatu tugas saja tanpa memberikan hasil keluaran misalnya adalah fungsi untuk
menampilkan hasil di layar.
Dalam tubuh fungsi, pernyataan yang digunakan untuk memberikan nilai keluaran
fungsi berupa return. Sebagai contoh, pada fungsi inisialisasi() di atas terdapat pernyataan
return(0);
merupakan pernyataan untuk memberikan nilai keluaran fungsi berupa nol.
Selengkapnya perhatikan program di bawah ini
/* File program : inisial.cContoh pembuatan fungsi */
int inisialisasi();
#include <stdio.h>
void main()
Jobsheet Pemograman Bahasa C 55
Nama fungsiSepasang tanda kurung, tanpa argumenTak ada tanda titik komaAwal fungsiTubuh fungsiAkhir fungsi
{int x, y;
x = inisialisasi();printf("x = %d\n", x);y = inisialisasi(); printf("y = %d\n", y);
}int inisialisasi(){
return(0);}
Contoh eksekusi :
x = 0y = 0
Program di atas sekaligus menjelaskan bahwa suatu fungsi cukup didefinisikan satu kali
tetapi bisa digunakan beberapa kali. Pada keadaan semacam ini seandainya tubuh fungsi
mengandung banyak pernyataan, maka pemakaian fungsi dapat menghindari duplikasi
kode dan tentu saja menghemat penulisan program maupun kode dalam memori.
Gambar 3 Proses pemanggilan fungsi
Misalnya pada saat pernyataan
x = inisialisasi();
dijalankan, mula-mula eksekusi akan diarahkan ke fungsi inisialisasi(), selanjutnya
suatu nilai keluaran (hasil fungsi) akhir fungsi diberikan ke x. Proses yang serupa,
dilakukan untuk pernyataan
y = inisialisasi();
Jobsheet Pemograman Bahasa C 56
main() {
int x, y;
x = inisialisasi();printf("x = %d\n", x);y = inisialisasi(); printf("y = %d\n", y);
}
int inisialisasi(){
return(0);}
pemanggilan fungsi
definisi fungsi
Bagi suatu fungsi, jika suatu pernyataan return dieksekusi, maka eksekusi terhadap
fungsi akan berakhir dan nilai pada parameter return akan menjadi keluaran fungsi. Untuk
fungsi yang tidak memiliki pernyataan return, tanda } pada bagian akhir fungsi akan
menyatakan akhir eksekusi fungsi.
Di bawah ini diberikan contoh sebuah fungsi yang mengandung dua buah
pernyataan return. Fungsi digunakan untuk memperoleh nilai minimum di antara 2 buah
nilai yang menjadi parameternya.
int minimum(int x, int y){
if (x < y)return(x);
elsereturn(y);
}
Pada fungsi di atas terdapat dua buah parameter berupa x dan y. Oleh karena itu fungsi
juga mengandung bagian untuk mendeklarasikan parameter, yang menyatakan x dan y
bertipe int. Adapun penentuan nilai keluaran fungsi dilakukan pada tubuh fungsi, berupa
pernyataan
if (x < y)return(x);
elsereturn(y);
yang menyatakan :
jika x < y maka nilai keluaran fungsi adalah sebesar nilai x.
untuk keadaan lainnya (x >= y) maka keluaran fungsi adalah sebesar y.
Selengkapnya perhatikan program di bawah ini.
/* File program : minimum1.c */
#include <stdio.h>
int minimum (int, int);
main(){
int a, b, kecil;
printf("Masukkan nilai a : ");
Jobsheet Pemograman Bahasa C 57
scanf("%d", &a);printf("Masukkan nilai b : ");scanf("%d", &b);
kecil = minimum(a, b);printf("\nBilangan terkecil antara %d dan %d adalah
%d\n\n", a, b, kecil);}
int minimum(int x, int y){
if (x < y)return(x);
elsereturn(y);
}
Contoh eksekusi :
Masukkan nilai a = 4Masukkan nilai b = 2
Bilangan terkecil antara 4 dan 2 adalah 2
3. Fungsi Dengan Nilai Keluaran Bertipe Bukan Integer
Untuk fungsi yang mempunyai keluaran bertipe bukan integer, maka fungsi
haruslah didefiniskan dengan diawali tipe keluaran fungsinya (ditulis di depan nama
fungsi). Sebagai contoh untuk menghasilkan nilai terkecil di antara dua buah nilai real,
maka definisinya berupa :
float minimum(float x, float y){
if (x < y)return(x);
else
return(y);}
Perhatikan, di depan nama minimum diberikan tipe keluaran fungsi berupa float. Seluruh
parameter sendiri juga didefinisikan dengan tipe float. Selengkapnya adalah sebagai
berikut :
/* File program : minimum2.c */
#include <stdio.h>
Jobsheet Pemograman Bahasa C 58
float minimum (float, float);
void main(){
float a, b, kecil;printf("Masukkan nilai a : ");scanf("%f", &a);printf("Masukkan nilai b : ");scanf("%f", &b);
kecil = minimum(a, b);printf("\nBilangan terkecil antara %g dan %g adalah
%g\n\n", a, b, kecil);}
float minimum(float x, float y){
if (x < y)return(x);
elsereturn(y);
}
Contoh eksekusi :
Masukkan nilai a = 5.5Masukkan nilai b = 6.23
Bilangan terkecil antara 5 dan 6.23 adalah 5.5
Khusus untuk fungsi yang dirancang tanpa memberikan nilai keluaran (melainkan
hanya menjalankan suatu tugas khusus) biasa didefinisikan dengan diawali kata kunci void
(di depan nama fungsi). Sebagai contoh perhatikan program di bawah ini.
/* File program : void.cContoh fungsi tanpa nilai keluaran (pamakaian void) */
#include <stdio.h>
void info_program(); /* deklarasi fungsi */
main(){
info_program(); /* pemanggilan fungsi */}void info_program() /* definisi fungsi */{
puts("==================================");
Jobsheet Pemograman Bahasa C 59
puts("Progam dibuat oleh Salahuddin, SST");puts("Tanggal : 1 januari 2009 ");puts(" ");puts("Selamat menggunakannya....... ");puts("==================================");
}Contoh eksekusi :
==================================Progam dibuat oleh Salahuddin, SSTTanggal : 1 januari 2009
Selamat menggunakannya....... ==================================
a. Prototipe Fungsi
Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :
tipe keluaran fungsi
jumlah parameter
tipe dari masing-masing parameter.
Bagi kompiler, informasi dalam prototipe akan dipakai untuk memeriksa keabsahan
(validitas) parameter dalam pemanggilan fungsi. Salah satu keuntungannya adalah,
kompiler akan melakukan konversi seandainya antara tipe parameter dalam fungsi dan
parameter saat pemanggilan fungsi tidak sama, atau akan menunjukan kesalahan bila
jumlah parameter dalam definisi dan saat pemanggilan berbeda.
Contoh prototipe fungsi;
float jumlah (float x, float y);
atau
float jumlah (float, float);
Penjelasannya adalah sbb :
float jumlah (float, float);
Jobsheet Pemograman Bahasa C 60
Nama fungsi
Diakhiri dengan titik komaTipe parameter keduaTipe parameter pertamaTipe keluaran fungsi
Gambar 4 Prototipe fungsi
Perhatikan contoh program di bawah ini.
/* File program : jumlah.ccontoh pemakaian prototipe fungsi */
#include <stdio.h>
float jumlah(float, float); /* prototipe fungsi */
main(){
float a, b,c;
printf("Masukkan nilai a : ");scanf("%f", &a);printf("Masukkan nilai b : ");scanf("%f", &b);
c = jumlah(a, b);printf("\nHasil penjumlahan a + b = %g\n", c);
}
float jumlah(float x, float y) /* definisi fungsi */{
return(x + y);}
Contoh eksekusi :
Masukkan nilai a : 4.5Masukkan nilai b : 7.65
Hasil penjumlahan a + b = 12.15
Untuk fungsi yang tidak memiliki argumen (contoh program void.c), maka deklarasinya
adalah
void info_program(void);
Catatan :
Jobsheet Pemograman Bahasa C 61
menyatakan bahwa info_program() tidak memiliki parameter
Untuk fungsi-fungsi pustaka, prototipe dari fungsi-fungsi berada di file-file judulnya
(header file). Misalnya fungsi pustaka printf() dan scanf() prototipenya berada pada
file dengan nama stdio.h
Untuk fungsi pustaka pencantuman pada prototipe fungsi dapat dilakukan dengan
menggunakan preprocessor directive #include.
5. Parameter formal dan Parameter Aktual
Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi
fungsi. Pada contoh program di atas misalnya, maka dalam fungsi jumlah() variabel x dan
y dinamakan sebagai parameter formal. Adapun parameter aktual adalah parameter (tidak
selalu berupa variabel) yang dipakai dalam pemanggilan fungsi.
Gambar 5 Paramater formal dan parameter aktual
Pada pernyataan :
x = jumlah(a, b);
y = jumlah(20.1, 45.6);
a dan b merupakan parameter aktual dari fungsi jumlah() dalam hal ini parameter berupa
variabel. Demikian juga 20.1 dan 45.6 adalah parameter aktual, dalam hal ini berupa
konstanta. Bahkan bisa juga parameter aktual berupa ungkapan yang melibatkan operator,
misalnya :
printf("%g\n", jumlah(2+3, 3+6));
6. Cara melewatkan Parameter
Ada dua cara untuk melewatkan parameter kedalam fungsi, yaitu berupa ;
Jobsheet Pemograman Bahasa C 62
main(){
...c = jumlah(a, b);...
}
float jumlah(float x, float y){
return(x + y);}
parameter aktual
parameter formal
ungkapan
Pemanggilan dengan nilai (call by value)
Pemanggilan dengan referensi (call by reference)
Pemanggilan dengan nilai merupakan cara yang dipakai untuk seluruh fungsi
buatan yang telah dibahas didepan. Pada pemanggilan dengan nilai, nilai dari parameter
aktual akan disalin ke parameter formal. Dengan cara ini nilai parameter aktual tidak bisa
dirubah sekalipun nilai parameter formal berubah. Untuk lebih jelasnya lihat pada fungsi
tukar() pada contoh berikut ini.;
/* File program : tukar1.cUntuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */
#include <stdio.h>
void tukar (int, int);
void main(){
int a,b;
a = 88;b = 77;
printf("Nilai sebelum pemanggilan fungsi\n");printf("a = %d b = %d\n", a, b);
tukar(a,b);
printf("\nNilai setelah pemanggilan fungsi\n");printf("a = %d b = %d\n", a, b);
}
void tukar(int x, int y){
int z;
z = x;x = y;y = z;
printf("\nNilai di akhir fungsi tukar()\n");printf("x = %d y = %d\n", x, y);
}
Contoh eksekusi :
Jobsheet Pemograman Bahasa C 63
Nilai sebelum pemanggilan fungsia = 88 b = 77
Nilai di akhir fungsi tukar()x = 77 y = 88
Nilai setelah pemanggilan fungsia = 88 b = 77
Tampak bahwa sekeluarnya dari pemanggilan fungsi tukar(), variabel a dan b (yang
dilewatkan ke fungsi tukar() tidak berubah, walaupun pada fungsi tukar() telah terjadi
penukaran antara parameter x dan y . Mengapa hal ini bisa terjadi ? Sebab x hanyalah
salinan dari a dan y adalah salinan dari b (Lihat gambar 5.6 di bawah ini). Pada saat
pemanggilan fungsi, maka :
x bernilai 88 (nilai a)
y bernilai 77 (nilai b)
Sesudah pernyataan-pernyataan berikut dijalankan, maka :
z = x;x = y;y = z;
x akan bernilai 77 dan y bernilai 88.
Gambar 6 Proses penukaran nilai
Gambar 5.6 menjelaskan bahwa a dan b tidak berubah. Yang berubah hanyalah parameter
x dan y.
Pemanggilan dengan referensi (call by reference) merupakan upaya untuk
melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat dipakai untuk
Jobsheet Pemograman Bahasa C 64
x y z
88 77 ?
x y z
88 77 88
77 77 88 77 88 88
x y z x y z
mula-mula sesudah : z = x
sesudah : y = zsesudah : x = y
mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di
dalam fungsi. Sebagai contoh perhatikan program tukar2.c yang merupakan modifikasi
dari tukar1.c. Perubahan yang pertama terletak dalam definisi fungsi, yang kini berupa
void tukar(int *px, int *py){
int z;
z = *px;*px = *py;*py = z;
printf("\nNilai di akhir fungsi tukar()\n");printf("x = %d y = %d\n", *px, *py);
}
Adapun perubahan dalam parameter aktualnya menjadi :
tukar(&a,&b); /* alamat a dan alamat b */
Dalam deklarasi parameter
int *px, int *py
menyatakan bahwa px dan py adalah suatu variabel pointer. Yang dimaksudkan sebagai
variabel pointer adalah suatu variabel yang menunjuk ke variabel lain. Lebih jelasnya,
variabel pointer berisi alamat dari variabel lain.
Adapun pada pemanggilan fungsi, &a dan &b masing-masing berarti "alamat a"
dan "alamat b". Dengan pemanggilan seperti ini, hubungan antara variabel pointer px dan
py dengan variabel a dan b adalah seperti ditunjukkan pada gambar 5.7. Dalam hal ini, px
dikatakan menunjuk variabel a dan py menunjuk variabel b.
Gambar 7
Variabel pointer px menunjuk variabel a dan variabel pointer py menunjuk variabel b
Jobsheet Pemograman Bahasa C 65
alamat aalamat b
pxpy
a b
/* File program : tukar2.cUntuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */
#include <stdio.h>
void tukar (int *px, int *py); /* prototype fungsi */
void main(){
int a,b;
a = 88;b = 77;
printf("Nilai sebelum pemanggilan fungsi\n");printf("a = %d b = %d\n", a, b);
tukar(&a,&b); /* alamat a dan alamat b */
printf("\nNilai setelah pemanggilan fungsi\n");printf("a = %d b = %d\n", a, b);
}
void tukar(int *px, int *py){
int z;
z = *px;*px = *py;*py = z;
printf("\nNilai di akhir fungsi tukar()\n");printf("x = %d y = %d\n", *px, *py);
}
Contoh eksekusi :
Nilai sebelum pemanggilan fungsia = 88 b = 77
Nilai di akhir fungsi tukar()x = 77 y = 88
Nilai setelah pemanggilan fungsia = 77 b = 88
Jobsheet Pemograman Bahasa C 66
Setelah px menunjuk a dan py menunjuk b, proses penukaran isi a dan b dilakukan dengan
cara sebagai berikut :
z = *px; /* 1 */*px = *py; /* 2 */*py = z; /* 3 */
Pertama variabel z diisi dengan nilai yang ditunjuk oleh px. Kedua, yang ditunjuk oleh px
diisi dengan yang ditunjuk oleh py (berarti a diisi dengan b). Ketiga, yang ditunjuk oleh
py diberi nilai z. Dengan melalui tiga pernyataan di atas, nilai a dab b dapat diubah di
dalam fungsi.
Catatan : Pembahasan lebih lanjut mengenai pointer dapat dilihat pada bab VIII.
7. Penggolongan Variabel berdasarkan kelas Penyimpanan
Suatu variabel, di samping dapat digolongkan berdasarkan jenis/tipe data juga dapat
diklasifikasikan berdasarkan kelas penyimpanan (storage class). Penggolongan
berdasarkan kelas penyimpanan berupa :
variabel lokal
variabel eksternal
variabel statis
variabel register
7.1 Variabel Lokal
Variabel lokal adalah variabel yang dideklarasikan dalam fungsi, dengan sifat :
secara otomatis diciptakan ketika fungsi dipanggil dan akan sirna (lenyap) ketika
eksekusi terhadap fungsi berakhir.
Hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan
Tidak ada inisialisasi secara otomatis (saat variabel diciptakan, nilainya tak menentu).
Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis.
Variabel yang termasuk dalam golongan ini bisa dideklarasikan dengan menambahkan kata
kuci auto di depan tipe-data variabel. Kata kunci ini bersifat opsional, biasanya disertakan
sebagai penjelas saja. Contoh variabel lokal ditunjukkan pada gambar 8.
Jobsheet Pemograman Bahasa C 67
Gambar 8 Variabel lokal
Pada fung_x(), deklarasi
int x;
dapat ditulis menjadi
auto int x;
Penerapan variabel lokal yaitu bila variabel hanya dipakai oleh suatu fungsi (tidak
dimaksudkan untuk dipakai oleh fungsi yang lain). Pada contoh berikut, antara variabel i
dalam fungsi main() dan fung_1() tidak ada kaitannya, sebab masing-masing merupakan
variabel lokal.
/* File program : lokal.c */
#include <stdio.h>
void fung_1(void);
main()
{
int i = 20;
fung_1();
printf("nilai i di dalam main() = %d\n", i);
}
void fung_1(void)
Jobsheet Pemograman Bahasa C 68
void
fung_x(void)
{
int x;
x adalah variabel lokal bagi fungsi fung_x()
{
int i = 11;
printf("nilai i di dalam fung_1() = %d\n", i);
}
Contoh eksekusi :
nilai i di dalam fung_1() = 11nilai i di dalam main() = 20
7.2.Variabel Eksternal
Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi, dengan sifat :
dapat diakses oleh semua fungsi
kalau tak diberi nilai, secara otomatis diinisialisasi dengan nilai sama dengan nol.
Contoh variabel eksternal ada pda program ekstern1.c yaitu berupa variabel i. Pada
pendeklarasian
int i = 273;
menyatakan bahwa i merupakan variabel eksternal dan diberi nilai awal sama denan 273.
Nilai dari variabel i selanjutnya dapat diubah oleh fungsi tambah() maupun main().
Setiap fungsi tambah() dipanggil maka nilai i akan bertambah satu.
/* File program : ekstern1.cContoh program dengan variabel eksternal */
#include <stdio.h>
int i = 273; /* variabel eksternal */void tambah(void);
void main(){
printf("Nilai awal i = %d\n", i);i += 7;printf("Nilai i kini = %d\n", i);tambah();printf("Nilai i kini = %d\n", i);tambah();
Jobsheet Pemograman Bahasa C 69
printf("Nilai i kini = %d\n", i);}void tambah(void){
i++;}
Contoh eksekusi :
Nilai awal i = 273Nilai i kini = 280Nilai i kini = 281Nilai i kini = 282
Pada contoh di atas, terlihat bahwa i hanya dideklarasikan di bagian atas program, dan tak
dideklarasikan lagi dalam fungsi main() maupun tambah(). Oleh karena i merupakan
variabel eksternal maka dapat digunakan oleh kedua fungsi tsb. Namun ada satu hal yang
perlu diketahui, variabel eksternal haruslah dideklarasikan sebelum definisi fungsi yang
akan mempergunakannya.
Untuk memperjelas bahwa suatu variabel dalam fungsi merupakan variabel
eksternal, di dalam fungsi yang menggunakannya dapat mendeklarasikan variabel itu
kembali dengan menambahkan kata kunci extern di depan tipe data variabel. Sebagai
contoh, program ekstern1.c ditulis kembali menjadi seperti pada ekstern2.c.
/* File program : ekstern2.cContoh program yang menggunakan variabel eksternal dan memakai kata kunci extern */
#include <stdio.h>
int i = 273; /* variabel eksternal */
void tambah(void);
main(){
extern int i; /* variabel eksternal */
printf("Nilai awal i = %d\n", i);i += 7;printf("Nilai i kini = %d\n", i);tambah();printf("Nilai i kini = %d\n", i);tambah();printf("Nilai i kini = %d\n", i);
Jobsheet Pemograman Bahasa C 70
}
void tambah(void){
extern int i; /* variabel eksternal */
i++;}
Contoh eksekusi :
Nilai awal i = 273Nilai i kini = 280Nilai i kini = 281Nilai i kini = 282
Kalau dalam suatu program terdapat suatu variabel eksternal, suatu fungsi bisa saja
menggunakan nama variabel yang sama dengan variabel eksternal, namun diperlakukan
sebagai variabel lokal. Untuk lebih jelasnya perhatikan contoh program di bawah ini.
/* File program : ekstern3.cContoh program yang menggunakan variabel eksternal dan variabel lokal dengan nama yang sama */
#include <stdio.h>
int i = 273; /* variabel eksternal */
void tambah(void);void main(){
extern int i; /* variabel eksternal */
printf("Nilai awal i = %d\n", i);i += 7;printf("Nilai i kini = %d\n", i);tambah();printf("Nilai i kini = %d\n", i);tambah();printf("Nilai i kini = %d\n", i);
}
void tambah(void){
int i; /* variabel lokal */
Jobsheet Pemograman Bahasa C 71
i++;}Contoh eksekusi :
Nilai awal i = 273Nilai i kini = 280Nilai i kini = 280Nilai i kini = 280
Pada program di atas, bagi fungsi main() i adalah variabel eksternal. Namun bagi fungsi
tambah(), i merupakan variabel lokal, sebab pada fungsi ini i dideklarasikan tanpa kata
kunci extern. Hal ini terlihat jelas dengan mengamati hasil eksekusi program. Pernyataan:
i++;
Pada fungsi tambah() tidak mempengaruhi nilai i yang ditampilkan pada fungsi main()
(bandingkan dengan hasil eksekusi pada ekstern2.c).
7.3 Variabel Statis
Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi)
maupun variabel eksternal. Sifat variabel ini :
Kalau variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi tempat
variabel dideklarasikan
Kalau variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua
fungsi yang terletak pada file yang sama, tempat variabel statis dideklarasikan
Berbeda dengan variabel lokal, variabel statis tidak akan hilang sekeluarnya dari fungsi
(nilai pada variabel akan tetap diingat).
Inisialisasi akan dilakukan hanya sekali, yaitu saat fungsi dipanggil yang pertama kali.
Kalau tak ada inisialisasi oleh pemrogram secara otomatis akan diberi nilai awal nol
Variabel statis diperoleh dengan menambahkan kata kunci static di depan tipe data
variabel. Sebagai contoh perhatikan program di bawah ini.
/* File program : statis.c
Contoh variabel statis */
#include <stdio.h>
void fung_y(void);
void main()
Jobsheet Pemograman Bahasa C 72
{
int y = 20;
fung_y();
fung_y();
printf("Nilai y dalam main() = %d\n", y);
}
void fung_y(void)
{
static int y;
y++;
printf("Nilai y dalam fung_y() = %d\n", y);
}
Contoh eksekusi :
Nilai y dalam fung_y() = 1Nilai y dalam fung_y() = 2Nilai y dalam main() = 20
7.4 Variabel Register
Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan
dalam memori RAM. Variabel yang seperti ini hanya bisa diterapkan pada variabel yang
lokal atau parameter formal, yang bertipe char atau int. Variabel register biasa diterapkan
pada variabel yang digunakan sebagai pengendali loop. Tujuannya untuk mempercepat
proses dalam loop. Sebab variabel yang dioperasikan pada register memiliki kecepatan
yang jauh lebih tinggi daripada variabel yang diletakkan pada RAM. Contoh
pemakaiannya bisa dilihat pada program di bawah ini.
/* File program : var_reg.c
Contoh variabel register */
#include <stdio.h>
Jobsheet Pemograman Bahasa C 73
void main()
{
register int i; /* variabel register */
int jumlah = 0;
for(i = 1; i <= 100; i++)
jumlah = jumlah + i;
printf("1 + 2 + 3 + ... + 100 = %d\n", jumlah);
}
Contoh eksekusi :
1 + 2 + 3 + ... + 100 = 5050
8 Menciptakan Sejumlah Fungsi
Pada C, semua fungsi bersifat sederajat. Suatu fungsi tidak dapat didefinisikan di
dalam fungsi yang lain. Akan tetapi suatu fungsi diperbolehkan memanggil fungsi yang
lain, dan tidak tergantung kepada peletakan definisi fungsi pada program. Komunikasi
antara fungsi dalam C ditunjukkan dalam gambar 5.9. Gambar tersebut menjelaskan kalau
suatu fungsi katakanlah fungsi_a() memanggil fungsi_b(), maka bisa saja fungsi_b()
memanggil fungsi_a(). Contoh program yang melibatkan fungsi yang memanggil fungsi
yang lain ada pada program kom_fung.c, yaitu fungsi_1() dipanggil dalam main(),
sedangkan fungsi_2() dipanggil oleh fungsi_1().
Gambar 9 Komunikasi antar fungsi dalam C
Jobsheet Pemograman Bahasa C 74
fungsi_a()
fungsi_c()
fungsi_b()
/* File program : kom_fung.ccontoh fungsi yang memanggil fungsi yang lain */
#include <stdio.h>
void fungsi_1(void);void fungsi_2(void);
void main(){
fungsi_1();}
void fungsi_1(){
puts("fungsi 1 dijalankan");fungsi_2();
}
void fungsi_2(){
puts("fungsi 2 dijalankan");}
Contoh eksekusi :
fungsi 1 dijalankanfungsi 2 dijalankan
9 Rekursi
Fungsi dalam C dapat dipakai secara rekursi, dalam artian suatu fungsi dapat
memanggil dirinya sendiri. Sebagai contoh penerapan fungsi rekursi yaitu untuk
menghitung nilai
xn
dengan n berupa bilagnan bulat positif. Solusi dari persoalan ini dapat berupa :
Jika n = 1, maka xn = x
Selain itu maka xn = x * xn-1
Jobsheet Pemograman Bahasa C 75
Misalnya x = 2 dan n = 3, proses pemecahannya seperti diuraikan pada gambar 5.10.
Gambar.10 Pemecahan secara rekursi
Penuangan dalam bentuk program
/* File program : faktor.c Contoh penerapan rekursi untuk memperoleh nilai factorial */
#include <stdio.h>int faktorial(int);
void main(){ int x;
puts("MENCARI FAKTORIAL DARI X!");printf("Masukkan nilai x (bulat positif) : ");scanf("%d", &x);
printf("Faktorial dari %d = %d\n", x, faktorial(x));}
int faktorial(int m){
if(m == 1)return(1);
elsereturn(m * faktorial(m-1));
}
Contoh eksekusi :
MENCARI FAKTORIAL DARI X!Masukkan nilai x (bulat positif) : 4Faktorial dari 4 = 24
Jobsheet Pemograman Bahasa C 76
23 = 2 * 22
22 = 2 * 21
21 = 2
8 4 2
Rekursi jarang dipakai, di antaranya disebabkan :
Biasanya rekursi akan menjadikan fungsi sulit dimengerti. Hanya cocok untuk
persoalan tertentu saja (misalnya pada binary tree atau pohon biner). Untuk fungsi
rekursi pada program faktor.c di atas misalnya, akan lebih mudah dipahami kalau
ditulis menjadi :
int faktorial(int m)
{int i, fak;
fak = 1;for(i = 1; i <= m; i++)
fak = fak * i;
return(fak);
}
Memerlukan stack dengan ukuran yang lebih besar. Sebab setiap kali fungsi dipanggil,
variabel lokal dan parameter formal akan ditempatkan ke stack dan adakalanya akan
menyebabkan stack tak cukup lagi (stack overflow).
10 Pengenalan Konsep Pemrograman Terstruktur
Fungsi sangat bermanfaat untuk membuat program yang terstruktur. Suatu program
yang terstruktur dikembangkan dengan menggunakan “top-down design” (rancang atas
bawah). Pada C suatu program disusun dari sejumlah fungsi dengan tugas tertentu.
Selanjutnya masing masing fungsi dipecah-pecah lagi menjadi fungsi yang lebih kecil.
Pembuatan program dengan cara ini akan memudahkan dalam pencarian kesalahan ataupun
dalam hal pengembangan dan tentu saja mudah dipahami/ dipelajari.
Dalam bentuk diagram, model suatu program C yang terstruktur adalah seperti
yang tertera pada bagan berikut ini. Namun sekali lagi perlu diketahui, bahwa pada C
semua fungsi sebenarnya berkedudukan sederajat.
Fungsi main() terdiri dari fungsi_a() sampai dengan fungsi_n(), menegaskan
bahwa dalam program fungsi main() akan memanggil fungsi_a() sampai dengan
fungsi_n(). Adapun fungsi-fungsi yang dipanggil oleh fungsi main() juga bisa memanggil
fungsi-fungsi yang lain.
Jobsheet Pemograman Bahasa C 77
fungsi utamamain()
fungsi_a() … fungsi_n()
fungsi_a1() … fungsi_am()
Gambar 11 Model terstruktur Program C
C. Daftar Alat dan Bahan.
1. CPU
2. Monitor
3. Keyboard
4. Mouse
5. Printer
6. Job Sheet Praktikum
D. Langkah Kerja.
1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows.
2. Pilih Start pada ujung kiri bawah monitor.
3. Pilih Program.
4. Pilih Program Turbo C atau TC for windows.
5. Jika Layar Turbo C sudah keluar, Pilih File.
6. Pilih News untuk membuka Program baru, atau open untuk membuka file
program yang sudah dibuat sebelumnya.
7. Ketik Program sesuai dengan di data program.
8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama
file sesuai keinginan praktikan.
9. compile program tersebut untuk melihat kebenaran pengetikan program dan
untuk mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj.
Jobsheet Pemograman Bahasa C 78
10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut.
11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut.
12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama.
E. Data Program
1. Memanggil fungsi berulang-ulang
/* File program :ulang.c */#include <stdio.h>
void cetak_pesan(void);
main(){
int i;
for(i=1; i<=5; i++)cetak_pesan();
printf("\n");}
void cetak_pesan(){printf("Cetak pesan ini\n");}
2. Fungsi untuk menghitung jumlah triangular n
/* File program : triangular.c */#include <stdio.h>
void hitung_triangular(int);void main(){
hitung_triangular(10);hitung_triangular(20);hitung_triangular(50);
}void hitung_triangular(int n){
int i, jumlah = 0;
for (i=1; i <= n; i++)jumlah = jumlah + i;
printf("Jumlah triangular %d adalah %d\n", n, jumlah);
}
Jobsheet Pemograman Bahasa C 79
3. Menentukan faktor pembagi terbesar dari 2 bilangan bulat positif.
/* File program : fpb1.c */#include <stdio.h>
void fpb(int, int);
main(){
fpb(150, 35);fpb(1026, 405);fpb(83, 240);
}
void fpb(int u, int v){
int tampung;
printf("FPB dari %d dan %d adalah ", u, v);while(v != 0){
tampung = u % v;u = v;v = tampung;
}printf("%d\n", u);
}
4. Menentukan faktor pembagi terbesar dari 2 bilangan bulat positif dan memberikan nilai
kembali (return value)-nya.
/* File program : fpb2.c */#include <stdio.h>
int fpb(int, int);
void main(){
int hasil;
hasil = fpb(150, 35);printf("FPB dari 150 dan 35 adalah %d\n", hasil);
hasil = fpb(1026, 405);printf("FPB dari 1026 dan 405 adalah %d\n", hasil);
printf("FPB dari 83 dan 240 adalah %d\n", fpb(83, 240));
}int fpb(int u, int v)
Jobsheet Pemograman Bahasa C 80
{int tampung;
while(v != 0){
tampung = u % v;u = v;v = tampung;
}return(u);
}
5. Menghitung nilai absolut
/* File program : absolut.c */#include <stdio.h>
float nilai_absolut(float);
main(){
float f1 = -15.5f, hasil;
hasil = nilai_absolut(f1);printf("Nilai absolut dari %g adalah %g\n", f1, hasil);printf("Nilai absolut dari -6/4 adalah %g\n",
nilai_absolut((-6)/4));}
float nilai_absolut(float x){
if(x < 0)x = -x;
return(x);}
6. Fungsi dengan keluaran bertipe float.
/* File program : minimum.c */#include <stdio.h>
float minimum (float, float);
main(){
float a, b, kecil;
printf("Masukkan nilai a : ");scanf("%f", &a);
Jobsheet Pemograman Bahasa C 81
printf("Masukkan nilai b : ");scanf("%f", &b);
kecil = minimum(a, b);printf("\nBilangan terkecil antara %g dan %g adalah
%g\n\n", a, b, kecil);}
float minimum(float x, float y){
if (x < y)return(x);
elsereturn(y);
}
7. Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua bilangan.
/* File program : tukar.c */#include <stdio.h>
void tukar (int, int);
main(){int a,b;
a=88;b=77;
printf("Nilai sebelum pemanggilan fungsi\n");printf("a = %d b = %d\n", a, b);
tukar(a,b);
printf("\nNilai setelah pemanggilan fungsi\n");printf("a = %d b = %d\n", a, b);
}
void tukar(int x, int y){int z;
z = x;x = y;y = z;
printf("\nNilai di akhir fungsi tukar()\n");printf("x = %d y = %d\n", x, y);
}
Jobsheet Pemograman Bahasa C 82
8. Ilustrasi variabel auto dan static.
/* File program : auto.c */#include <stdio.h>
void demo(void); /* ANSI function prototypes */
main(){
int i=0;
while(i < 3) {demo();i++;
}}
void demo(void){
auto int var_auto = 0;static int var_static = 0;
printf("auto = %d, static = %d\n", var_auto, var_static);++var_auto;++var_static;
}
F. SOAL
1. Apa hasil eksekusi dari program berikut :
/* File program : lat1.c */#include <stdio.h>
void fung_a(void);void fung_b(void);
int x = 20;
main(){x += 2;fung_a();fung_a();printf("\nNilai x dalam main() = %d\n\n", x);
}
void fung_a(void){static x = 5;
Jobsheet Pemograman Bahasa C 83
x++;printf("Nilai x dalam fung_a() = %d\n", x);fung_b();
}
void fung_b(void){x--;printf("Nilai x dalam fung_b() = %d\n", x);
}
2. Buatlah suatu fungsi ganjil() yang mengembalikan nilai 1 jika argumen yang
diberikan adalah bilangan ganjil dan mengembalikan nilai 0 jika argumen tsb bukan
bilangan ganjil.
3. Buatlah program untuk menghitung faktorial dengan menggunakan 2 fungsi (main()
dan faktorial()). Fungsi faktorial() memberikan return value bertipe long int yang
akan dicetak ke layar dalam fungsi main().
4. Apa hasil eksekusi dari program berikut :
#include <stdio.h>
void ubah(int);
main(){
int x;
printf("Masukkan nilai x : ");scanf("%d", &x);ubah(x);printf("x = %d\n", x);
}
void ubah(int y){
y = 85;}
5. Buatlah sebuah fungsi yang berfungsi untuk menampilkan sebuah string (di layar) =
“Pilihan Menu” (misalkan nama fungsinya = menu). Fungsi tersebut tidak memiliki
nilai kembalian (return value) dan juga tidak menerima parameter masukan apapun.
Jobsheet Pemograman Bahasa C 84