Job Sheet Bhs C 1-5

Unduh sebagai doc, pdf, atau txt
Unduh sebagai doc, pdf, atau txt
Anda di halaman 1dari 85

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 PrenticeHall 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

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

EDITOR

EDITOR

FILE INCLUDE (FILE JUDUL) xxx.h

FILE PROGRAM SUMBER yyy.c

KOMPILER

FILE PUSTAKA

FILE OBYEK

FILE OBYEK LAIN

LINKER

FILE EXECUTABLE

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

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_fungsi_lain() { statemen-statemen; } fungsi utama

fungsi-fungsi lain yang ditulis oleh pemrogram

Jobsheet Pemograman Bahasa C

Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagiannya (subroutine). Fungsifungsi 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

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: \ \\ \t menyatakan karakter petik-ganda menyatakan karakter backslash 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 %f %c %s Contoh:

untuk menampilkan bilangan bulat (integer) untuk menampilkan bilangan titik-mengambang (pecahan) untuk menampilkan sebuah karakter untuk menampilkan sebuah string

#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

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

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

{ printf(Selamat datang di Praktikum Dasar Komputer\n); printf( printf( } 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

Laboratorium Komputer Teknik Elektro\n); Politeknik Negeri Lhokseumawe \n);

} 5. Mengisi nilai variabel int, penjumlahan isi variabel dan mencetak hasilnya #include <stdio.h> void main() { int nilai1, nilai2, jumlah; nilai1 = 1024; nilai2 = 4096; jumlah = nilai1 + nilai2; printf("Jumlah dari %d dengan %d adalah %d\n", nilai1, nilai2, jumlah); } 6. Mengisi variabel float, mengalikan isi variabel dan mencetak hasilnya #include <stdio.h> void main() { float harga, total; int jumlah; harga = 132.055f; jumlah = 50; total = harga * jumlah; printf("Harga total = %f\n", total); } 7. Menentukan hasil cetakan dengan lebar medan (field) yang tepat versi 1 #include <stdio.h> void main() { float bil = 2.5f, nomor = 33.567f; printf("Bilangan = %f\n", bil); printf("Nomor = %f\n", nomor); } F. Soal 1. Buatlah program untuk menampilkan tulisan di bawah ini :
Jobsheet Pemograman Bahasa C

10

PEMROGRAMAN BAHASA C PRODI TEKNIK ELEKTRONIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI LHOKSEUMAWE DIPROGRAM OLEH : NAMAMU 2. Carilah kesalahan dalam program di bawah ini : main () { INT jumlah; /* PERHITUNGAN HASIL jumlah = 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 NIM user. (panduan : ingat program printf dan scanf) #include <stdio.h> void main () { . : nama praktikan : NIM praktikum

Dengan perintah printf terstruktur %s, dengan nama dan nim merupakan input dari

Jobsheet Pemograman Bahasa C

11

} 5. Buatlah program yang menampilkan karakter yang merupakan masukan dari keyboard. (panduan :ingatlah useran printf ) #include <stdio.h> #include<conio.h> main (); { char karakter; printf( karakter = getch(); printf(,karakter); }

Jobsheet Pemograman Bahasa C

12

PRAKTIKUM II DASAR-DASAR PEMROGRAMAN C


A. Tujuan Instruksional Khusus 1. Menjelaskan tentang beberapa tipe data dasar (jenis dan jangkauannya) 2. Menjelaskan tentang Variabel 3. Menjelaskan tentang konstanta 4. Menjelaskan tentang berbagai jenis operator dan pemakaiannya 5. Menjelaskan tentang instruksi I/O B. Dasar Teori 1. Tipe Data Dasar Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan sebagai tipe data dasar. Kelima tipe data dasar adalah: Bilangan bulat (integer) Bilangan real presisi-tunggal Bilangan real presisi-ganda Karakter Tak-bertipe (void), keterangan lebih lanjut tentang void dijelaskan dalam Bab V. Kata-kunci yang berkaitan dengan tipe data dasar secara berurutan di antaranya adalah int (short int, long int, signed int dan unsigned int), float, double, dan char. Tabel 2-1 memberikan informasi mengenai ukuran memori yang diperlukan dan kawasan dari masing-masing tipe data dasar. Tabel 2-1. Ukuran memori untuk tipe data
Tipe char int float double Total bit 8 32 32 64 Kawasan -128 s/d 127 -2147483648 s/d 2147483647 1.7E-38 s/d 3.4E+38 2.2E-308 s/d 1.7E+308 Keterangan karakter bilangan integer bilangan real presisi-tunggal bilangan real presisi-ganda

Jobsheet Pemograman Bahasa C

13

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
Tipe Total bit 16 32 32 32 Kawasan -32768 s/d 32767 -2147483648 s/d 2147483647 -2147483648 s/d 2147483647 0 s/d 4294967295 Keterangan short integer long integer biasa disingkat dengan int bilangan int tak bertanda

short int long int signed int unsigned 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 daftar-variabel;

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 : nama_variabel = nilai;

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

Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e), contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5 (maksudnya 2,1 x 105 ). Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik-ganda (), contohnya :Pemrograman Dasar C.

4. Operator Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai. Sebagian operator C tergolong sebagai operator binary, yaitu operator yang dikenakan terhadap dua buah nilai (operand). Contoh : a + b Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua operand-nya (yaitu a dan b). Karena operator penjumlahan melibatkan dua operator ini tergolong sebagai operator binary. -c Simbol - (minus) juga merupakan operator. Simbol ini termasuk sebagai operator unary, yaitu operator yang hanya memiliki sebuah operand (yaitu c pada contoh ini).

C. Daftar Alat dan Bahan. 1. CPU 2. Monitor 3. Keyboard 4. Mouse 5. Printer 6. Job Sheet Praktikum D. Langkah Kerja.

Jobsheet Pemograman Bahasa C

16

1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows. 2. Pilih Start pada ujung kiri bawah monitor. 3. Pilih Program. 4. Pilih Program Turbo C atau TC for windows. 5. Jika Layar Turbo C sudah keluar, Pilih File. 6. Pilih News untuk membuka Program baru, atau open untuk membuka file program yang sudah dibuat sebelumnya. 7. Ketik Program sesuai dengan di data program. 8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file sesuai keinginan praktikan. 9. compile program tersebut untuk melihat kebenaran pengetikan program dan untuk mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj. 10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut. 11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut. 12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama. E. Data Program 1. Tipe-tipe data dasar dalam C. #include <stdio.h> void main() { int var_bulat = 32767; float var_pecahan1 = 339.2345678f; double var_pecahan2 = 3.4567e+40; char var_karakter = 'S'; printf("Variabel bulat = %d\n", var_bulat);

printf("Variabel pecahan1 = %f\n", var_pecahan1); printf("Variabel pecahan2 = %le\n", var_pecahan2); printf("Variabel karakter = %c\n", var_karakter); } 2. Mengenal beberapa operator dalam C. #include <stdio.h>
Jobsheet Pemograman Bahasa C

17

void main() { int a, b, c, hasil; printf("Masukkan nilai a = "); scanf("%d", &a); printf("Masukkan nilai b = "); scanf("%d", &b); printf("Masukkan nilai c = "); scanf("%d", &c); printf("\n"); hasil = a - b; printf("Hasil pengurangan : a - b = %d\n", hasil); printf("Hasil perkalian hasil = a / c; printf("Hasil pembagian printf("Hasil operasi } 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() : a / c = %d\n", hasil); : a + b * c = %d\n", a + b * c); : b * c = %d\n", b * c);

Jobsheet Pemograman Bahasa C

18

{ float a,b,c,d = 0; a = 3.0f; b = 4.0f; c = 7.0f; d = b*b-4*a*c; printf("Diskriminan = %f\n",d); } 5. Penggunaan pre & post Increment operator #include <stdio.h> void main() { int count = 0, loop; loop = ++count; 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 printf("format f printf("format g } 7. Penggunaan format panjang medan data #include <stdio.h> => %e\n", x); => %f\n", x); => %g\n", x); /* count=count+1; loop=count; */ /* loop=count; count=count+1; */ printf("loop = %d, count = %d\n", loop, count); printf("loop = %d, count = %d\n", loop, count);

Jobsheet Pemograman Bahasa C

19

main() { int nilai1 = 20; float nilai2 = 500.0f; printf("Abad %5d\n", nilai1); printf("%10.2f\n", nilai2); printf("%10s\n", "Bahasa C"); printf("%-10s\n", "Bahasa C"); } 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 printf("Luas } F. SOAL 1. Pilihlah nama-nama variabel yang benar dan yang salah, mengapa ? int calloc xxx char Xx z 6_05 A$ floating ReInitialize _1312 alpha_beta_routine = %8.2f\n", keliling); = %8.2f\n", luas); /* String rata kanan */ /* String rata kiri */

2. Apa yang dihasilkan oleh program di bawah ini : voi main() {

Jobsheet Pemograman Bahasa C

20

char c, d; c = 'd'; d = c; printf("d = %c", d); } 3. Buatlah program untuk mengevaluasi polynomial di bawah ini : 3x2 5x + 6 dengan nilai x merupakan masukan dari user.

4. Buatlah program untuk mengkonversi suhu dari Celcius ke Fahrenheit dengan rumus
F = C * 1.8 + 32

Input : suhu dalam Celcius Output : suhu dalam Fahrenheit

Jobsheet Pemograman Bahasa C

21

PRAKTIKUM III PENGAMBILAN KEPUTUSAN


A. Tujuan Instruksional Khusus 1. Menjelaskan tentang operator kondisi (operator relasi dan logika) 2. Menjelaskan penggunaan pernyataan if 3. Menjelaskan penggunaan pernyataan if-else 4. Menjelaskan penggunaan pernyataan if dalam if 5. Menjelaskan penggunaan pernyataan else-if 6. Menjelaskan penggunaan pernyataan switch B. Dasar Teori Statement if-else digunakan untuk menentukan pilihan dari suatu kondisi yang diberikan. Cara kerjanya adalah melakukan perbandingan menggunakan Relational Operator dan/atau Logical Operator, apabila suatu kondisi terpenuhi (benar) maka akan mengerjakan proses A dan apabila kondisi tidak terpenuhi (salah) maka tidak akan mengerjakan proses A atau dapat juga mengerjakan proses lain misalkan proses B. Proses A dan B dapat berupa satu baris statement atau beberapa baris yang dikelompokkan (Compound Statement). Statement if-else bersarang merupakan kombinasi dari beberapa
if-else,

dinama apabila ada beberapa kondisi yang harus diuji kebenarannya secara

bersama (if didalam if). Statement else-if adalah cara lain dari bentuk if-else, yang digunakan untuk menentukan satu kondisi yang benar dari beberapa kondisi yang tersedia. Statement switch-case adalah bentuk lain dari statement else-if, dengan mendaftar kondisi secara vertical dalam satu kolom sehingga memudahkan dalam hal evaluasi program. C. Daftar Alat dan Bahan. 1. CPU 2. Monitor 3. Keyboard

Jobsheet Pemograman Bahasa C

22

4. Mouse 5. Printer 6. Job Sheet Praktikum D. Langkah Kerja. 1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows. 2. Pilih Start pada ujung kiri bawah monitor. 3. Pilih Program. 4. Pilih Program Turbo C atau TC for windows. 5. Jika Layar Turbo C sudah keluar, Pilih File. 6. Pilih News untuk membuka Program baru, atau open untuk membuka file program yang sudah dibuat sebelumnya. 7. Ketik Program sesuai dengan di data program. 8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file sesuai keinginan praktikan. 9. compile program tersebut untuk melihat kebenaran pengetikan program dan untuk mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj. 10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut. 11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut. 12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama. E. Data Program 1. Menghitung nilai discount menggunakan if. #include <stdio.h> void main() { double total_pembelian, discount = 0; printf("Total pembelian = Rp "); scanf("%lf", &total_pembelian); if(total_pembelian >= 100.000) discount = 0.05 * total_pembelian; printf("Besarnya discount = Rp %.2lf\n", discount); }

Jobsheet Pemograman Bahasa C

23

2. Menghitung nilai absolut suatu bilangan. #include <stdio.h> void main() { int bil, abs; printf("Masukkan bilangan bulat : "); scanf("%d", &bil); if(bil < 0) abs = -bil; printf("Nilai absolut dari %d adalah %d\n\n", bil,abs); } 3. Mengamati penggunaan statement penentu keputusan sederhana, yaitu menentukan apakah bilangan yang dimasukkan lebih kecil dari ndol? #include <stdio.h> void main() { int bil,absolut; printf("Masukkan bilangan bulat: "); scanf("%d", &bil); if(bil < 0) absolut = -bil; printf("Nilai 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; absolute dari %d adalah = %d", bil,

Jobsheet Pemograman Bahasa C

24

printf("Masukkan pembilang : "); scanf("%d", &pembilang); printf("Masukkan penyebut scanf("%d", &penyebut); sisa = pembilang % penyebut; puts(); if(sisa) printf("%d tidak habis dibagi %d\n", pembilang, penyebut); else printf("%d habis dibagi %d\n", pembilang, penyebut); getch(); } 5. Compound Statement adalah mengelompokkan suatu proses menjadi satu blok. Didalam if-else penggunaan Compound Statement adalah untuk mengelompokkan proses-proses yang harus dikerjakan bila kondisi terpenuh ataupun bila kondisi tidak terpenuhi #include <stdio.h> void main() { char tag; printf("Masukkan tipe tag ( 2 / 4) : "); scanf("%c", &tag); if(tag==2) { printf("Merk sepeda motor bertipe 2 tag\n\n"); printf(" printf(" printf(" } else { printf("Merk sepeda motor bertipe 4 tag\n\n"); printf(" printf(" printf(" }
Jobsheet Pemograman Bahasa C

: ");

1. YA MAHA"); 2. YA SUZUKI"); 3. YA HONDA");

1. HONDA"); 2. SUZUKI"); 3. YAMAHA");

25

getch(); } 6. Statement if-else tidak dapat digunakan untuk menentukan satu pilihan yang benar diantara beberapa pilihan yang ada, oleh karena itu dapat digunakan statement elseif

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 char float valid_operator = 1; operator; bil1, bil2, hasil;

printf("Masukkan 2 bilangan dan sebuah operator.\n\n"); printf("Dengan format:\n\n"); printf("= bilangan-1 operator bilangan-2\n\n"); printf("= "); scanf("%f %c %f", &bil1, &operator, &bil2); if(operator == '*') { hasil = bil1 * bil2; } else if(operator == '/') hasil = bil1 / bil2; else if(operator == '+') hasil = bil1 + bil2; else if(operator == '-') hasil = bil1 - bil2;

Jobsheet Pemograman Bahasa C

26

else valid_operator = 0; if(valid_operator) { printf("\nHasil perhitungan\n\n"); printf("%g %c %g = %g\n",bil1,operator,bil2,hasil); } else { printf("\nOperator SALAH!\n"); printf(\nGunakan operator +, -, / dan * saja!); } getch(); } F. SOAL 1. Buatlah program untuk menerima 2 buah bilangan bulat masukan. Tampilkan hasil dari pembagian bilangan pertama dengan bilangan kedua, dengan ketelitian 3 desimal. Input : bil1 dan bil2 Output : hasil bagi bil1 dengan bil2 Nilai tambah : program bisa mengecek pembagian dengan nol, yaitu jika bilangan kedua adalah nol, maka tidak dilakukan proses pembagian, namun ditampilkan pesan kesalahannya (division by zero). 2. Buatlah program untuk menghitung determinan dan mencari akar-akar dari persamaan kuadrat : ax2 + bx + c = 0 , dengan ketentuan sbb : D = b2 - 4ac Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu : x1 = (-b + sqrt(D)) / 2a x2 = (-b - sqrt(D)) / 2a Jika D < 0 , maka terdapat 2 akar imaginair yang berlainan, yaitu : x1 = -b / 2a + (sqrt(-D) / 2a) i x2 = -b / 2a - (sqrt(-D) / 2a) i

Jobsheet Pemograman Bahasa C

27

Input : a, b, c (float) Output : Nilai Determinan serta nilai akar-akar persamaan tsb (x1& x2). Petunjuk : - untuk mencari akar dari x, gunakan : sqrt(x) yang didefinisikan pada <math.h>. - gunakan else if 3. Buatlah program untuk menampilkan menu dan melakukan proses sbb : Menu : 1. Menghitung volume kubus 2. Menghitung luas lingkaran 3. Menghitung volume silinder. Input : pilihan user (1, 2 atau 3) Jika pilihan = 1, maka : Input : panjang sisi kubus Output : Volume kubus (vol = sisi3) Jika pilihan = 2, maka : Input : panjang jari-jari lingkaran Output : Luas lingkaran (luas = 3.14 * r2) Jika pilihan = 3, maka : Input : panjang jari-jari lingkaran & tinggi silinder Output : Volume silinder (vol = 3.14 * r2 * t) Jika pilihan selain 1, 2 & 3 (default) : Tampilkan pesan kesalahan. Petunjuk : gunakan switch-case

Jobsheet Pemograman Bahasa C

28

PRAKTIKUM IV PENGULANGAN PROSES


A. Tujuan Instruksional Khusus 1. Menjelaskan proses pengulangan menggunakan pernyataan for 2. Menjelaskan proses pengulangan menggunakan pernyataan while 3. Menjelaskan proses pengulangan menggunakan pernyataan do-while 4. Menjelaskan penggunaan pernyataan break 5. Menjelaskan penggunaan pernyataan continue 6. Menjelaskan penggunaan pernyataan goto 7. Menjelaskan loop di dalam loop (nested loop) dan contoh kasusnya 8. Menjelaskan penggunaan exit() untuk menghentikan eksekusi program dan contoh kasusnya B. Dasar Teori 1 Pernyataan for Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam pemrograman. Pada semua bahasa pemrograman, pengulangan proses ditangani dengan suatu mekanisme yang disebut loop. Dengan menggunakan loop, suatu proses yang berulang misalnya menampilkan tulisan yang sama seratus kali pada layar dapat diimpelementasikan dengan kode program yang pendek. Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah pernyataan for. Bentuk pernyataan ini : for (ungkapan1; ungkapan2; ungkapan3) pernyataan; Kegunaan dari masing-masing ungkapan pada pernyataan for.

Jobsheet Pemograman Bahasa C

29

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 : for (ungkapan1; ungkapan2; ungkapan3) { pernyataan; pernyataan; . . . } 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 :

bilangan = 20

salah
bilangan <=100

benar

Cetak bilangan

bilangan = bilangan + 10

Jobsheet Pemograman Bahasa C

Keluar loop

30

Gambar 1. Diagram alir for

/* File program : for1.c Contoh 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 : 20 30 40 50 60 70 80 90 100 Pada program di atas, kenaikan terhadap variabel pengendali loop sebesar 10 (positif), yang dinyatakan dengan ungkapan bilangan += 10 yang sama artinya dengan bilangan = bilangan + 10

Jobsheet Pemograman Bahasa C

31

Pada contoh yang melibatkan pernyataan for di atas, kenaikan variabel pengendali loop berupa nilai positif. Sebenarnya kenaikan terhadap variabel pengendali loop bisa diatur bernilai negatif. Cara ini dapat digunakan untuk memperoleh deret sebagai berikut : 60 50 40 30 20 10 Untuk 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 : 60 50 40 30 20 10 Kadang-kadang dijumpai adanya pernyataan for yang tidak mengandung bagian ungkapan yang lengkap (beberapa ungkapan dikosongkan). Dengan cara ini, pernyataan for (bilangan = 20; bilangan <= 100; bilangan += 10) printf(%d\n, bilangan); dapat ditulis menjadi : bilangan = 20; /* inisialisasi di luar for */ for ( ; bilangan <= 100; )
ungkapan kosong

{ printf(%d\n, bilangan); bilangan += 10; }

Jobsheet Pemograman Bahasa C

32

Tampak bahwa ungkapan yang biasa dipakai untuk inisialisasi variabel pengendali loop tak ada. Sebagai gantinya pengendalian loop diatur sebelum pernyataan for, berupa bilangan = 20; Pengosongan ini juga dilakukan pada ungkapan yang biasa dipakai untuk menaikkan nilai variabel pengendali loop. Sebagai gantinya, di dalam tubuh loop diberikan pernyataan untuk menaikkan nilai variabel pengendali loop, yaitu berupa bilangan += 10; Ungkapan yang tidak dihilangkan berupa bilangan <=100. Ungkapan ini tetap disertakan karena dipakai sebagai kondisi untuk keluar dari loop. Sesungguhnya ungkapan yang dipakai sebagai kondisi keluar dari loop juga bisa dihilangkan, sehingga bentuknya menjadi for (;;) pernyataan Suatu pertanyaan mungkin timbul Lalu bagaimana caranya kalau ingin keluar dari loop pada bentuk di atas?. Caranya adalah dengan menggunakan pernyataan yang dirancang khusus untuk keluar dari loop. Mengenai hal ini akan dibahas pada sub bab yang lain.

2 Pernyataan while Pada pernyataan while, pengecekan terhadap loop dilakukan di bagian awal (sebelum tubuh loop). Lebih jelasnya, bentuk pernyataan while adalah sebagai berikut :
while (kondisi) pernyataan;

dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Proses pengulangan terhadap pernyataan dijelaskan pada gambar berikut : salah

kondisi benar pernyataan


Jobsheet Pemograman Bahasa C

33

keluar loop

Gambar 2. Diagram alir while Dengan melihat gambar 2, tampak bahwa ada kemungkinan pernyataan yang merupakan tubuh loop tidak dijalankan sama sekali, yaitu kalau hasil pengujian kondisi while yang pertama kali ternyata bernilai salah. Contoh pemakaian while misalnya untuk mengatur agar tombol yang ditekan oleh pemakai program berupa salah satu diantara 'Y','y', 'T' atau 't'. Impelementasinya :

/*File program : pilihan.c Untuk membaca tombol Y atau T */ #include <stdio.h> main() { char pilihan; /* diberi nilai salah lebih dahulu */ int sudah_benar = 0; printf("Pilihlah Y atau T.\n"); /* program dilanjutkan jika tombol Y,y,T atau t ditekan */ while(!sudah_benar) { pilihan = getchar(); /* baca tombol */ sudah_benar = (pilihan == 'Y') || (pilihan == 'y')|| (pilihan == 'T') || (pilihan == 't'); } /* memberi keterangan tentang pilihan */ switch(pilihan) { case 'Y': case 'y': puts("\nPilihan anda adalah Y"); break; case 'T':

Jobsheet Pemograman Bahasa C

34

case 't': puts("\nPilihan anda adalah T"); } } Contoh eksekusi : Pilihlah Y atau T Pilihan 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.c Menghitung jumlah kata dan karakter dalam suatu kalimat */
Jobsheet Pemograman Bahasa C

35

#include <stdio.h> main() { char kar; int jumkar = 0, jumspasi = 0; puts("Masukkan sebuah kalimat dan akhiri dgn ENTER.\n"); puts("Saya akan menghitung jumlah karakter "); puts("pada kalimat tersebut.\n"); while((kar = getchar()) != '\n') { jumkar++; if (kar == ' ') jumspasi++; } printf("\nJumlah karakter printf("\nJumlah SPASI } Contoh eksekusi : Masukkan sebuah kalimat, akhiri dgn ENTER. Saya akan menghitung jumlah karakter pada kalimat tersebut. Belajar bahasa C sangat menyenangkan Jumlah karakter Jumlah SPASI 3 Pernyataan do-while Bentuk pernyataan do-while = 36 = 4 = %d", jumkar); = %d\n\n", jumspasi);

do pernyataan; while (kondisi)

Pada pernyataan do-while, tubuh loop berupa pernyataan,dengan pernyataan bisa berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Pada

Jobsheet Pemograman Bahasa C

36

pernyataan do, mula-mula pernyataan dijalankan. Selanjutnya, kondisi diuji. Sendainya 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.

pernyataan

Tubuh loop

benar kondisi

salah keluar loop 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);

Jobsheet Pemograman Bahasa C

37

Pada program di atas, variabel pencacah dipakai untuk menghitung jumlah tulisan yang sudah ditampilkan pada layar. Selama nilai pencacah kurang dari 10, maka perintah 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':

Jobsheet Pemograman Bahasa C

38

case 't': puts("\nPilihan anda adalah T"); } } Contoh eksekusi : Pilihlah Y atau T Pilihan 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. for ( ; ; ) { . . if ( ) break; . . } /* akhir tubuh loop for */

Gambar 4. Ilustrasi pengaruh break

Jobsheet Pemograman Bahasa C

39

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.c Pemakaian break untuk keluar dari looping */ #include <stdio.h> main() { char kar; printf("Ketik sembarang kalimat"); printf(" dan akhiri dengan ENTER\n\n"); for ( ; ; ) { kar = getchar(); if(kar == '\n') break; } printf("Selesai\n"); } Contoh eksekusi : Ketik sembarang kalimat dan akhiri dengan ENTER : Menulis apa saja Selesai Jika pernyataan break berada dalam loop yang bertingkat (nested loop), maka pernyataan break hanya akan membuat proses keluar dari loop yang bersangkutan (tempat break dituliskan), bukan keluar dari semua loop.

Jobsheet Pemograman Bahasa C

40

5 Pernyataan Continue Pernyataan continue digunakan untuk mengarahkan eksekusi ke iterasi (proses) berikutnya pada loop yang sama. Pada do-while dan while, pernyataan continue menyebabkan eksekusi menuju ke kondisi pengujian pengulangan, seperti yang dilukiskan pada Gambar 4.5. Pada loop for, pernyataan contunue menyebabkan bagian penaik variabel pengendali loop dikerjakan (ungkapan3 pada struktur for) dan kondisi untuk keluar dari loop for (ungkapan2 pada struktur for) diuji kembali. Program ini digunakan untuk memasukkan data harus diulangi dan hal ini dikendalikan dengan continue. Untuk mengakhiri pemasukan data, data yang dimasukkan harus bernilai kurang dari 0. Perlu diketahui kondisi bernilai 1.

while (kondisi) do { continue; }

{ continue; } while (kondisi)

Gambar.5 Pengaruh continue pada while dan do-while Menyatakan bahwa kondisi selalu dianggap benar. Untuk keluar dari loop, pernyataan yang digunakan berupa break. Pengaruh continue pada loop for diperlihatkan pada dibawah ini. Program ini dipakai untuk menampilkan bilangan ganjil yang terletak antara 7 sampai dengan 25, kecuali 15. /* File program : ganjil.c menampilkan bilangan ganjil antara 7 - 25 kecuali 15 */ #include <stdio.h> main() { int x; for (x = 7; x <= 25; x += 2)

Jobsheet Pemograman Bahasa C

41

{ if (x == 15) continue; printf("%4d", x); } printf("\n"); } Contoh eksekusi : 7 9 11 13 17 19 21 23 25

Pada program di atas, untuk menghindari agar nilai 15 tidak ditampilkan ke layar, pernyataan yang digunakan berupa if ( x == 15) continue; Artinya, jika kondisi x == 15 bernilai benar, pernyataan continue menyebabkan pernyataan sisanya yaitu printf(%d,x); diabaikan dan eksekusi diarahkan kepada ungkapan : x += 2 dan kemudian menguji kondisi : x <= 25 Pada program di atas, pernyataan : for (x = 7; x <= 25; x += 2) { if (x == 15) continue;

Jobsheet Pemograman Bahasa C

42

printf("%4d", x); } 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 1 2 3 4 5 6 7 8 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; for (baris = 1; baris <= MAKS; baris++) { for (kolom = 1; kolom <= MAKS; kolom++)
Jobsheet Pemograman Bahasa C

43

{ hasil_kali = baris * kolom; printf ("%2d", hasil_kali); } printf("\n"); } } 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 { 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 (:) Contoh pemakaian goto ditujukan pada program dibawah ini: = 1; kolom <= MAKS; kolom++) /* pindah baris */

Jobsheet Pemograman Bahasa C

44

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> #include <stdlib.h>

Jobsheet Pemograman Bahasa C

45

main() { char kar; printf("Tekanlah X untuk menghentikan program.\n"); for ( ; ;) { while ((kar = getchar()) == 'X') exit(0); } } C. Daftar Alat dan Bahan. 1. CPU 2. Monitor 3. Keyboard 4. Mouse 5. Printer 6. Job Sheet Praktikum D. Langkah Kerja. 1. Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows. 2. Pilih Start pada ujung kiri bawah monitor. 3. Pilih Program. 4. Pilih Program Turbo C atau TC for windows. 5. Jika Layar Turbo C sudah keluar, Pilih File. 6. Pilih News untuk membuka Program baru, atau open untuk membuka file program yang sudah dibuat sebelumnya. 7. Ketik Program sesuai dengan di data program. 8. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file sesuai keinginan praktikan. 9. compile program tersebut untuk melihat kebenaran pengetikan program dan untuk mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj. 10. Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut. 11. Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut. 12. Lakukan praktikum untuk file program berikutnya dengan cara yang sama.

Jobsheet Pemograman Bahasa C

46

E. Data Program 1. Menghitung jumlah delapan triangular tanpa pernyataan for() /* File program :triangular1.c */ #include <stdio.h> main() { int jumlah = 0; jumlah = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8; printf("Jumlah delapan triangular adalah %d\n",jumlah); } 2. Pemakaian for untuk membentuk deret naik. /* File program : for1.c */ #include <stdio.h> main() { int bilangan; for(bilangan = 20; bilangan <= 100; bilangan += 10) printf("%d\n", bilangan); } 3. Pemakaian for untuk membentuk deret turun /* File program : for2.c */ #include <stdio.h> main() { int bilangan; for (bilangan = 60; bilangan >= 10; bilangan -= 10) printf("%d\n", bilangan); } 4. Menghitung jumlah 200 triangular menggunakan for(). /* File program : triangular2.c */ #include <stdio.h> main() { int n, jumlah = 0;

Jobsheet Pemograman Bahasa C

47

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') { jumkar++; if (kar == ' ') jumspasi++;
Jobsheet Pemograman Bahasa C

48

} printf("\nJumlah karakter printf("\nJumlah SPASI }

= %d", jumkar); = %d\n\n", jumspasi);

7. Membalik angka menggunakan pernyataan while(). /* File program : loop9.c */ #include <stdio.h> main() { int bil, digit_kanan; printf("Masukkan bilangan yang mau dibalik : "); scanf("%d", &bil); printf("Hasil pembalikannya = "); while(bil != 0) { digit_kanan = bil % 10; printf("%d", digit_kanan); bil = bil / 10; } printf("\n"); } 8.Membaca tombol yang ditekan. /*File program : pilihan.c */ #include <stdio.h> main() { char pilihan; int sudah_benar = 0; /* diberi nilai salah lebih dahulu */ printf("Pilihlah Y atau T.\n"); /* program dilanjutkan jika tombol Y,y,T atau t ditekan */ while(!sudah_benar) { pilihan = getchar(); /* baca tombol */ sudah_benar = (pilihan == 'Y') || (pilihan == 'y')|| (pilihan == 'T') || (pilihan == 't'); }

Jobsheet Pemograman Bahasa C

49

/* memberi keterangan tentang pilihan */ switch(pilihan) { case 'Y': case 'y': puts("\nPilihan anda adalah Y"); break; case 'T': case 't': puts("\nPilihan anda adalah T"); } } 9. Pemakaian break untuk keluar dari looping /* 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"); }

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++) { for (kolom = 1; kolom <= MAKS; kolom++) {

Jobsheet Pemograman Bahasa C

50

hasil_kali = baris * kolom; printf ("%2d", hasil_kali); } printf("\n"); } } 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. /* 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); } } C. SOAL /* pindah baris */

Jobsheet Pemograman Bahasa C

51

1. Buatlah program untuk menampilkan semua bilangan genap yang terletak antara 20 sampai dengan 120, dengan menggunakan for. 2. Buatlah program untuk menghitung jumlah angka dari suatu bilangan. Contohnya : Jumlah angka dari bilangan 3255 = 3 + 2 + 5 + 5 = 15 Jumlah angka dari bilangan 4589 = 4 + 5 + 8 + 9 = 26 dan sebagainya. 3. Buatlah program untuk menerima daftar nilai mahasiswa sbb : Input : - Jumlah data (n) - Nilai ke-1 s/d Nilai ke-n Output : - Nilai minimal - Nilai maksimal - Nilai rata-rata (rata-rata = nilai total / jumlah data) (Petunjuk : Gunakan loop for dan seleksi kondisi dengan if) 4. Gunakan loop for untuk mendapatkan tampilan sbb : 1 22 333 4444 55555 5. Gunakan loop while untuk menampilkan bilangan integer antara 1 sampai dengan 10 di layar sbb : 123456768910

Jobsheet Pemograman Bahasa C

52

PRAKTIKUM V FUNGSI
A. Tujuan Instruksional Khusus 1. Memecah program dalam fungsi fungsi yang sederhana. 2. Menjelaskan tentang pemrograman terstruktur. 3. Mengetahui perbedaan antara variabel lokal, eksternal, statis dan register B. Dasar Teori Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari program bahasa C berupa fungsi-fungsi, dalam hal ini program dari bahasa C dibentuk dari kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. Fungsi banyak digunakan pada program C dengan tujuan : a. Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan. Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi, maka fungsi utama (main()) menjadi lebih pendek, jelas dan mudah dimengerti. b. dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang sama dan dipakai berulang-ulang di program dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi-fungsi. Selanjutnya bagian program yang membutuhkan langkahlangkah ini tidak perlu selalu menuliskannya, tetapi cukup memanggil fungsi-fungsi tersebut. 1. Dasar Fungsi printf() , yaitu untuk menampilkan informasi atau data ke layar. scanf() , yaitu untuk membaca kode tombol yang diinputkan.

Fungsi standar C yang mengemban tugas khusus contohnya adalah ;

Jobsheet Pemograman Bahasa C

53

Pada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut sebagai argumen. Nilai masukan ini akan diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai (disebut sebagai return value atau nilai keluaran fungsi). Oleh karena itu fungsi sering digambarkan sebagai "kotak FUNGSI gelap" seperti ditunjukkan pada gambar di bawah ini.

Parameter

Keluaran Fungsi

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 ; tipe-keluaran-fungsi nama-fungsi (deklarasi argumen) { tubuh fungsi } 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

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.
Nama fungsi Sepasang tanda kurung, tanpa argumen Tak ada tanda titik koma Awal fungsi Tubuh fungsi Akhir 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.c Contoh pembuatan fungsi */ int inisialisasi(); #include <stdio.h> void main()

Jobsheet Pemograman Bahasa C

55

{ int x, y; x = inisialisasi(); printf("x = %d\n", x); y = inisialisasi(); printf("y = %d\n", y); } int inisialisasi() { return(0); } Contoh eksekusi : x = 0 y = 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. main() { int x, y; x = inisialisasi(); printf("x = %d\n", x); y = inisialisasi(); printf("y = %d\n", y); } int inisialisasi() { return(0); } definisi fungsi pemanggilan fungsi 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

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); else return(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); else return(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;

Jobsheet Pemograman Bahasa C

57

printf("Masukkan nilai a : "); 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); else return(y); } Contoh eksekusi : Masukkan nilai a = 4 Masukkan 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. berikut : /* File program : minimum2.c */ Selengkapnya adalah sebagai

Jobsheet Pemograman Bahasa C

58

#include <stdio.h> 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); else return(y); } Contoh eksekusi : Masukkan nilai a = 5.5 Masukkan 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.c Contoh fungsi tanpa nilai keluaran (pamakaian void) */ #include <stdio.h> void info_program(); /* deklarasi fungsi */

main() { info_program(); /* pemanggilan fungsi */ } void info_program() /* definisi fungsi */ { puts("==================================");

Jobsheet Pemograman Bahasa C

59

puts("Progam dibuat oleh Salahuddin, SST"); puts("Tanggal : 1 januari 2009 "); puts(" "); puts("Selamat menggunakannya....... "); puts("=================================="); } Contoh eksekusi : ================================== Progam dibuat oleh Salahuddin, SST Tanggal : 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 :
Nama fungsi

float jumlah (float, float);

Diakhiri dengan titik koma Tipe parameter kedua Tipe parameter pertama Tipe keluaran fungsi

Jobsheet Pemograman Bahasa C

60

Gambar 4 Prototipe fungsi

Perhatikan contoh program di bawah ini. /* File program : jumlah.c contoh pemakaian prototipe fungsi */ #include <stdio.h> float jumlah(float, float); 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) { return(x + y); } Contoh eksekusi : Masukkan nilai a : 4.5 Masukkan 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); menyatakan bahwa info_program() tidak memiliki parameter Catatan : /* definisi fungsi */ /* prototipe fungsi */

Jobsheet Pemograman Bahasa C

61

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. main() { ... c = jumlah(a, b); ... }
parameter aktual

float jumlah(float x, float y) { return(x + y); }


parameter formal

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)); ungkapan 6. Cara melewatkan Parameter Ada dua cara untuk melewatkan parameter kedalam fungsi, yaitu berupa ;

Jobsheet Pemograman Bahasa C

62

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.c Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */ #include <stdio.h> void tukar (int, int); void main() { int a,b; a = 88; b = 77; printf("Nilai sebelum pemanggilan fungsi\n"); printf("a = %d b = %d\n", a, b); tukar(a,b); printf("\nNilai setelah pemanggilan fungsi\n"); printf("a = %d b = %d\n", a, b); } void tukar(int x, int y) { int z; z = x; x = y; y = z; printf("\nNilai di akhir fungsi tukar()\n"); printf("x = %d y = %d\n", x, y); } Contoh eksekusi :

Jobsheet Pemograman Bahasa C

63

Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai di akhir fungsi tukar() x = 77 y = 88 Nilai setelah pemanggilan fungsi a = 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. x 88 y 77 mula-mula x 77 y 77 z 88 x 77 z ? x 88 y 77 z 88

sesudah : z = x y 88 z 88

sesudah : x = y

sesudah : y = z

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

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); 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. px alamat a py alamat b /* alamat a dan alamat b */

Gambar 7 Variabel pointer px menunjuk variabel a dan variabel pointer py menunjuk variabel b
Jobsheet Pemograman Bahasa C

65

/* File program : tukar2.c Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */ #include <stdio.h> void tukar (int *px, int *py); 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 */ /* prototype fungsi */

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 fungsi a = 88 b = 77 Nilai di akhir fungsi tukar() x = 77 y = 88 Nilai setelah pemanggilan fungsi a = 77 b = 88

Jobsheet Pemograman Bahasa C

66

Setelah px menunjuk a dan py menunjuk b, proses penukaran isi a dan b dilakukan dengan cara sebagai berikut : z = *px; *px = *py; *py = z; /* 1 */ /* 2 */ /* 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). berdasarkan kelas penyimpanan berupa : variabel lokal variabel eksternal variabel statis variabel register Penggolongan

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

void fung_x(void) { int x; x adalah variabel lokal bagi fungsi fung_x()

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() } void fung_1(void) = %d\n", i);

Jobsheet Pemograman Bahasa C

68

{ int i = 11; printf("nilai i di dalam fung_1() = %d\n", i); } Contoh eksekusi : nilai i di dalam fung_1() = 11 nilai 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.c Contoh program dengan variabel eksternal */ #include <stdio.h> int i = 273; void tambah(void); /* variabel eksternal */

void main() { printf("Nilai awal i = %d\n", i); i += 7; printf("Nilai i kini = %d\n", i); tambah(); printf("Nilai i kini = %d\n", i); tambah();

Jobsheet Pemograman Bahasa C

69

printf("Nilai i kini = %d\n", i); } void tambah(void) { i++; } Contoh eksekusi : Nilai Nilai Nilai Nilai awal i i kini i kini i kini = = = = 273 280 281 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.c Contoh program yang menggunakan memakai kata kunci extern */ #include <stdio.h> int i = 273; void tambah(void); main() { extern int i; printf("Nilai i += 7; printf("Nilai tambah(); printf("Nilai tambah(); printf("Nilai /* variabel eksternal */

variabel

eksternal

dan

/* variabel eksternal */ awal i = %d\n", i); i kini = %d\n", i); i kini = %d\n", i); i kini = %d\n", i);

Jobsheet Pemograman Bahasa C

70

} void tambah(void) { extern int i; i++; } Contoh eksekusi : Nilai Nilai Nilai Nilai awal i i kini i kini i kini = = = = 273 280 281 282

/* variabel eksternal */

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.c Contoh program yang menggunakan variabel variabel lokal dengan nama yang sama */ #include <stdio.h> int i = 273; void tambah(void); void main() { extern int i; printf("Nilai i += 7; printf("Nilai tambah(); printf("Nilai tambah(); printf("Nilai } void tambah(void) { int i; /* variabel eksternal */

eksternal

dan

/* variabel eksternal */ awal i = %d\n", i); i kini = %d\n", i); i kini = %d\n", i); i kini = %d\n", i);

/* variabel lokal */

Jobsheet Pemograman Bahasa C

71

i++; } Contoh eksekusi : Nilai Nilai Nilai Nilai awal i i kini i kini i kini = = = = 273 280 280 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);

Jobsheet Pemograman Bahasa C

72

void main() { int y = 20; fung_y(); fung_y(); printf("Nilai y dalam main() } void fung_y(void) { static int y; y++; printf("Nilai y dalam fung_y() = %d\n", y); } Contoh eksekusi : Nilai y dalam fung_y() = 1 Nilai y dalam fung_y() = 2 Nilai 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

= %d\n", y);

73

void main() { register int i; 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 /* variabel register */

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(). fungsi_a()
fungsi_b()

fungsi_c() Gambar 9 Komunikasi antar fungsi dalam C

Jobsheet Pemograman Bahasa C

74

/* File program : kom_fung.c contoh 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 dijalankan fungsi 2 dijalankan

9 Rekursi Fungsi dalam C dapat dipakai secara rekursi, dalam artian suatu fungsi dapat memanggil dirinya sendiri. menghitung nilai xn Sebagai contoh penerapan fungsi rekursi yaitu untuk

dengan n berupa bilagnan bulat positif. Solusi dari persoalan ini dapat berupa : Jika n = 1, maka xn = x Selain itu maka xn = x * xn-1

Jobsheet Pemograman Bahasa C

75

Misalnya x = 2 dan n = 3, proses pemecahannya seperti diuraikan pada gambar 5.10. 22 = 2 * 22 21 = 2 21

23 = 2 *

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); else return(m * faktorial(m-1)); } Contoh eksekusi : MENCARI FAKTORIAL DARI X! Masukkan nilai x (bulat positif) : 4 Faktorial dari 4 = 24
Jobsheet Pemograman Bahasa C

76

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

Jobsheet Pemograman Bahasa C

77

fungsi_n(). Adapun fungsi-fungsi yang dipanggil oleh fungsi main() juga bisa memanggil fungsi-fungsi yang lain. fungsi utama main()

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.

Jobsheet Pemograman Bahasa C

78

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

Jobsheet Pemograman Bahasa C

79

printf("Jumlah triangular %d adalah %d\n", n, jumlah); } 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",

Jobsheet Pemograman Bahasa C

80

fpb(83, 240)); } int fpb(int u, int v) { 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;
Jobsheet Pemograman Bahasa C

81

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); else return(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;

Jobsheet Pemograman Bahasa C

82

printf("\nNilai di akhir fungsi tukar()\n"); printf("x = %d y = %d\n", x, y); } 8. Ilustrasi variabel auto dan static. /* File program : auto.c */ #include <stdio.h> void demo(void); 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); } /* ANSI function prototypes */

Jobsheet Pemograman Bahasa C

83

void fung_a(void) { static x = 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

Jobsheet Pemograman Bahasa C

85

Anda mungkin juga menyukai