job sheet bhs c 1-5

112
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- Jobsheet Pemograman Bahasa C 1

Upload: ridha-azhari

Post on 05-Dec-2014

131 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: 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

Page 2: Job Sheet Bhs C 1-5

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

Page 3: Job Sheet Bhs C 1-5

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

Page 4: Job Sheet Bhs C 1-5

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

Page 5: Job Sheet Bhs C 1-5

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

Page 6: Job Sheet Bhs C 1-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

Page 7: Job Sheet Bhs C 1-5

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

Page 8: Job Sheet Bhs C 1-5

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

Page 9: Job Sheet Bhs C 1-5

{

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

Page 10: Job Sheet Bhs C 1-5

}

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

Page 11: Job Sheet Bhs C 1-5

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

Page 12: Job Sheet Bhs C 1-5

}

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

Page 13: Job Sheet Bhs C 1-5

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

Page 14: Job Sheet Bhs C 1-5

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

Page 15: Job Sheet Bhs C 1-5

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;

Page 16: Job Sheet Bhs C 1-5

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

Page 17: Job Sheet Bhs C 1-5

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

Page 18: Job Sheet Bhs C 1-5

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

Page 19: Job Sheet Bhs C 1-5

{

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

Page 20: Job Sheet Bhs C 1-5

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

Page 21: Job Sheet Bhs C 1-5

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

Page 22: Job Sheet Bhs C 1-5

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

Page 23: Job Sheet Bhs C 1-5

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

Page 24: Job Sheet Bhs C 1-5

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

Page 25: Job Sheet Bhs C 1-5

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

Page 26: Job Sheet Bhs C 1-5

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

Page 27: Job Sheet Bhs C 1-5

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

Page 28: Job Sheet Bhs C 1-5

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

Page 29: Job Sheet Bhs C 1-5

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;

Page 30: Job Sheet Bhs C 1-5

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

Page 31: Job Sheet Bhs C 1-5

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

Page 32: Job Sheet Bhs C 1-5

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

Page 33: Job Sheet Bhs C 1-5

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

Page 34: Job Sheet Bhs C 1-5

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

Page 35: Job Sheet Bhs C 1-5

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

Page 36: Job Sheet Bhs C 1-5

#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)

Page 37: Job Sheet Bhs C 1-5

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

Page 38: Job Sheet Bhs C 1-5

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

Page 39: Job Sheet Bhs C 1-5

}

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 */

Page 40: Job Sheet Bhs C 1-5

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

Page 41: Job Sheet Bhs C 1-5

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

Page 42: Job Sheet Bhs C 1-5

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

Page 43: Job Sheet Bhs C 1-5

}

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

Page 44: Job Sheet Bhs C 1-5

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

Page 45: Job Sheet Bhs C 1-5

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

Page 46: Job Sheet Bhs C 1-5

#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

Page 47: Job Sheet Bhs C 1-5

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);

}

Page 48: Job Sheet Bhs C 1-5

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

Page 49: Job Sheet Bhs C 1-5

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

Page 50: Job Sheet Bhs C 1-5

}

/* 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");

}

Page 51: Job Sheet Bhs C 1-5

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);

}}

Page 52: Job Sheet Bhs C 1-5

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

Page 53: Job Sheet Bhs C 1-5

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

Page 54: Job Sheet Bhs C 1-5

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}

Page 55: Job Sheet Bhs C 1-5

{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

Page 56: Job Sheet Bhs C 1-5

{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

Page 57: Job Sheet Bhs C 1-5

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

Page 58: Job Sheet Bhs C 1-5

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

Page 59: Job Sheet Bhs C 1-5

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

Page 60: Job Sheet Bhs C 1-5

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

Page 61: Job Sheet Bhs C 1-5

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

Page 62: Job Sheet Bhs C 1-5

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

Page 63: Job Sheet Bhs C 1-5

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

Page 64: Job Sheet Bhs C 1-5

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

Page 65: Job Sheet Bhs C 1-5

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

Page 66: Job Sheet Bhs C 1-5

/* 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

Page 67: Job Sheet Bhs C 1-5

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

Page 68: Job Sheet Bhs C 1-5

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()

Page 69: Job Sheet Bhs C 1-5

{

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

Page 70: Job Sheet Bhs C 1-5

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

Page 71: Job Sheet Bhs C 1-5

}

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

Page 72: Job Sheet Bhs C 1-5

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

Page 73: Job Sheet Bhs C 1-5

{

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

Page 74: Job Sheet Bhs C 1-5

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()

Page 75: Job Sheet Bhs C 1-5

/* 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

Page 76: Job Sheet Bhs C 1-5

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

Page 77: Job Sheet Bhs C 1-5

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

Page 78: Job Sheet Bhs C 1-5

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

Page 79: Job Sheet Bhs C 1-5

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

Page 80: Job Sheet Bhs C 1-5

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

Page 81: Job Sheet Bhs C 1-5

{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

Page 82: Job Sheet Bhs C 1-5

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

Page 83: Job Sheet Bhs C 1-5

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

Page 84: Job Sheet Bhs C 1-5

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