Modul 1 Pengenalan Bahasa C

1. Sejarah Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut bahasa B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ricthie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories). Bahasa C pertama kali digunakan di computer Digital Equipment Corporation PDP-11 yang menggunakan system operasi UNIX. Hingga saat ini penggunaan bahasa C telah merata di seluruh dunia. Hampir semua perguruan tinggi di dunia menjadikan bahasa C sebagai salah satu mata kuliah wajib. Selain itu, banyak bahasa pemrograman populer seperti PHP dan Java menggunakan sintaks dasar yang mirip bahasa C. Oleh karena itu, kita juga sangat perlu mempelajarinya. 2. Kelebihan dan Kekurangan Bahasa C Kelebihan Bahasa C • • • • • • • • Bahasa C tersedia hampir di semua jenis computer. Kode bahasa C sifatnya adalah portable dan fleksibel untuk semua jenis Bahasa C hanya menyediakan sedikit kata-kata kunci, hanya terdapat 32 kata Proses executable program bahasa C lebih cepat Dukungan pustaka yang banyak. C adalah bahasa yang terstruktur Bahasa C termasuk bahasa tingkat menengah Banyaknya Operator serta fleksibilitas penulisan program kadang-kadang

computer. kunci.

Kekurangan Bahasa C membingungkan pemakai. 1

Bagi pemula pada umumnya akan kesulitan menggunakan pointer

3. Mengenal Editor Bahasa C 3.1 Memulai Bahasa C Buka Editor Bahasa C yang ada, seperti Bordland C, Turbo C, dan sebagainya. Semua program yang ada di tutorial ini bisa dicoba Turbo C. 3.2 Sekilas Mengenai Editor Turbo C Untuk mengkompilasi Program, langkah-langkahnya sbb :    Pilih menu Compile dengan menekan Alt + C Pilih Submenu Compile Enter

Akan ditampilkan hasil kompilasi Program, tekan sembarang tombol Untuk menjalankan program :   Pilih menu Run dengan menekan Alt + R Pilih submenu Run dan tekan Enter

3.3 Menu-menu dalam Turbo C: Menu-menu dalam Turbo C++ seperti terlihat pada gambar 1.

Gambar 1.1 Tampilan Editor Turbo C++

2

File, terdiri dari : (1) New, untuk memulai program baru (2) Open, untuk mengambil atau membuka program (3) Save, untuk menyimpan file/program (4) Save as, untuk menyimpan file/program (5) Save all, untuk menyimpan seluruh file/program (6) Print, untuk mencetak program (7) Exit, untuk keluar dari Turbo C Edit, terdiri dari : (1) Undo, untuk membatalkan pengeditan terakhir (2) Redo, untuk kembali ke pengeditan terakhir yang telah di undo. (3) Cut, untuk memotong bagian tertentu dari program. (4) Copy, untuk menduplikasi bagian program (5) Paste (6) Clear, untuk menghapus bagian tertentu dari program (7) Select All Search, terdiri dari : (1) Find… (2) Replace… (3) Search again… (4) Browse symbol (5) dst View, terdiri dari : (1) Class Expert (2) Project (3) Message (4) Classes (5) dst Project, terdiri dari : (1) App expert… (2) New projext.. (3) Open project… (4) New target… (5) dst 3

terdiri dari (1) run. untuk menjalakan program (2) Stop over (3) Target into (4) Toggle breakpoint (5) Dst Tool.Debug. terdiri dari : (1) Project…. (2) Target… (3) Environment… (4) dst Window. terdiri dari : (1) Resource workshop (2) Grep (3) Winsight (4) Winspector (5) Key Map Compiler Options. sebaiknya penulisan bahasa C diatur sedemikian rupa sehingga mudah dan enak dibaca. untuk mempermudah pembacaan program dan untuk keperluan dokumentasi. 4 . terdiri dari : (1) Cascade (2) Tile horison (3) Tile vertical (4) dst Help. Namun demikian. Penulisan Program Bahasa C Program Bahasa C tidak mengenal aturan penulisan di kolom tertentu. jadi bisa dimulai dari kolom manapun. terdiri dari (1) Contens (2) Keyword search (3) Keybord (4) dst 4.

1 tampaknya lebih mudah dibaca dan lebih rapih dibanding dengan listing 1. Modul 2 Struktur Dasar Bahasa C 1. %d %f Keterangan Karakter/string Integer/bilangan bulat Float/bilangan pecahan 5 . yaitu: No 1 2 3 Tipe Data char int float Ukuran 1 byte 2 byte 4 byte Range (jangkauan) -128 s/d 127 .2 Kedua listing di atas bila dijalankan akan menghasilkan hasil yang sama berupa tulisan “Bahasa C” di layar.1 dan listing 1. namun jika keduanya bertipe float maka akan menghasilkan nilai 2. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2. namun dari segi penulisannya listing 1.4E-38 s/d 3. } listing 1.4E+38 Format %c %i. Misalnya saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya.h” void main() { printf(“Bahasa C”).2. lihat pada listing 1. } listing 1.32768 s/d 32767 -3.5000000.2.h” void main() { printf(“Bahasa C\n”). #include “stdio. Dalam bahasa C terdapat lima tipe data dasar.Contoh penulisan Program Bahasa C yang baik dan yang kurang baik. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien dan efektif.1 #include “stdio. Tipe Data Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer.

50005. /* variable y diisi dengan 9.45E+20 */ printf("Nilai dari x adalah : %i\n". baris yang sama (carriage return) \v : tabulasi vertical 6 . /* variable w diisi dengan 3. 4.7E-308 s/d 1. z). Konstanta nilainya selalu tetap.1 Contoh pendeklarasian tipe data /* Contoh Program : */ #include "stdio. printf("Nilai dari w adalah : %. /* variable z diisi dengan karakter "C" */ w = 3. Konstanta dapat bernilai integer. bahasa C juga menyediakan beberapa karakter khusus yang disebut karakter escape. w). double w. /* variable x diisi dengan 10 */ y = 9.14. } 2. Contoh konstanta : 50. Konstanta harus didefinisikan terlebih dahulu di awal program.h" #include "conio.7+308 - %lf - Pecahan presisi ganda Tidak bertipe Listing 2. printf("Nilai dari z adalah : %c\n". /* untuk membersihkan layar */ x = 10.45E+20. getch(). pecahan.2f\n". clrscr().4 5 double void 8 byte 0 byte -1. float y. antara lain: \a : untuk bunyi bell (alert) \b : mundur satu spasi (backspace) \f : ganti halaman (form feed) \n : ganti baris baru (new line) \r : ke kolom pertama. 3. ‘A’. x). char z.45 */ z = 'C'. karakter dan string. Selain itu. y).h" void main() { int x. 13. ‘Bahasa C’. Konstanta Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program berlangsung.45. printf("Nilai dari y adalah : %f\n".

Deklarasi Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program. penting!. nama_mhs. nilai. Variable Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program. (. konstanta dan fungsi. -. 80mahasiswa. Contoh penamaan variable yang salah: %nilai_mahasiswa. nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. Berbeda dengan konstanta yang nilainya selalu tetap. !. kecuali garis bawah (underscore). dsb. NIM dan Nim dianggap berbeda. tetapi hanya 32 karakter pertama yang terpakai. Contoh : int x. Jadi antara nim. ?. #. x. a. dsb 4. &.\0 : nilai kosong (null) \’ : karakter petik tunggal \” : karakter petik ganda \\ : karakter garis miring 3. ). rata-rata. // Deklarasi x bertipe integer 7 . Identifier dapat berupa variable. Tidak boleh mengandung symbol-simbol khusus. *. ada spasi. Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut: • • • • Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. +.1 Deklarasi Variabel Bentuk umum pendeklarasian suatu variable adalah : Nama_tipe nama_variabel. budi. Tidak boleh mengandung spasi. f4. = dsb • Panjangnya bebas. Contoh penamaan variabel yang benar : NIM. Yang termasuk symbol khusus yang tidak diperbolehkan antara lain : $. f3098. 4. %. Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap berbeda.

int tambah(int x. void tampil(). 5.14 #define nim “0111500382” #define nama “Sri Widhiyanti” 4. Fungsi yang perlu dideklarasikan terlebih dahulu adalah fungsi yang dibuat oleh programmer. // Deklarasi variable bertipe double int array[5][4].3 Deklarasi Fungsi Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau dipanggil di manapun di dalam program. Contohnya: float luas_lingkaran(int jari). // Deklarasi array bertipe integer char *p.1 Operator Penugasan Operator Penugasan (Assignment operator) dalam bahasa C berupa tanda sama dengan (“=”). // Deklarasi variable bertipe char float nilai. seperti menjumlahkan dua buah nilai memberikan nilai ke suatu variabel. membandingkan dua buah nilai. Contohnya: #define PHI 3. nim[10]. 5. int y). dsb. // Deklarasi pointer p bertipe char 4. // Deklarasi variable bertipe float double beta. Operator Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk melakukan suatu operasi atau manipulasi. scanf(). Contoh : 8 . Bentuk umum deklarasi sebuah fungsi adalah: Tipe_fungsi nama_fungsi(parameter_fungsi).2 Deklarasi Konstanta Dalam bahasa C konstanta dideklarasikan menggunakan preprocessor #define.char y. huruf. getch() dan untuk menggunakannya tidak perlu dideklarasikan. Fungsi dalam bahasa C ada yang sudah disediakan sebagai fungsi pustaka seperti printf().

yaitu: . A = x * y. bil). . bil++) { if(bil % 2 == 0) //periksa apakah 'bil' genap printf("%5. * : untuk perkalian . } /*Contoh program 3 */ 9 .100 */ #include "stdio.0i". } getch().nilai = 80. Misalnya: 9 % 2 = 1 9 % 3 = 0 9 % 5 = 4 9 % 6 = 3 /* Contoh Program 2 */ /* Penggunaan operator % untuk mencetak deret bilangan genap antara 1 . % : untuk sisa pembagian (modulus) . Artinya: variable “nilai” diisi dengan 80 dan variable “A” diisi dengan hasil perkalian antara x dan y.2 Operator Aritmatika Bahasa C menyediakan lima operator aritmatika.h" #include "conio.: untuk pengurangan Catatan: operator % digunakan untuk mencari sisa pembagian antara dua bilangan. + : untuk pertambahan . clrscr(). bil<100.h" void main() { int bil. 5. // untuk membersihkan layar for (bil=1. / : untuk pembagian .

printf("Nilai dari 9 * 4 = %i". Operator logika ada tiga macam. 9 .h" #include "conio. || : Logika OR (ATAU) .3.4 */ printf("\n").#include "stdio. yaitu : . maka operator logikadigunakan untuk membandingkan logika hasil dari operator-operator hubungan. 9 / 4). /* mencetak hasil 9 * 4 */ printf("\n"). Operator hubungan dalam bahasa C: 5. 9 + 4). // untuk membersihkan layar printf("Nilai dari 9 + 4 = %i". /* mencetak hasil 9 .4 Operator Logika Jika operator hubungan membandingkan hubungan antara dua buah operand. printf("Nilai dari 9 .h" void main() { clrscr().5 Operator Bitwise 10 . && : Logika AND (DAN) . /* mencetak hasil 9 / 4 */ getch(). } 5.4 = %i".1 Operator Arti Contoh < Kurang dari x < y Apakah x kurang dari y <= Kurang dari sama dengan x <= y Apakah x kurang dari sama dengan y > Lebih dari x > y Apakah x lebih dari y >= Lebih dari sama dengan x >= y Apakah x lebih dari sama dengan y == Sama dengan x == y Apakah x sama dengan y != Tidah sama dengan x != y Apakah x tidak sama dengan y 5. /* mencetak hasil 9 + 4 */ printf("\n").3 Operator Hubungan (Perbandingan) Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah operand (sebuah nilai atau variable.4). printf("Nilai dari 9 / 4 = %i". 9 * 4). ! : Logika NOT (INGKARAN) 5.

^ : Bitwise XOR (exclusive OR) . clrscr(). << : Pergeseran bit ke kiri . & : Bitwise AND .jika diletakkan sebelum atau sesudah operand terdapat perbedaan. Operator bitwise dalam bahasa C: .h> void main() { int x.Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di memori. 11 . >> : Pergeseran bit ke kanan . Dalam bahasa C terdapat beberapa operator unary.6 Operator Unary Operator Unary merupakan operator yang hanya membutuhkan satu operand saja. x = 5.A = A – 1 sizeof Ukuran dari operand dalam byte Sebelum sizeof(I) ! Unary NOT Sebelum !A ~ Bitwise NOT Sebelum ~A & Menghasilkan alamat memori operand Sebelum &A Menghasilkan nilai dari pointer Sebelum *A - Catatan Penting ! Operator peningkatan ++ dan penurunan -. yaitu: Operator Arti/Maksud Letak Contoh Equivalen • • • • • • • • Unary minus Sebelum operator A + -B * C A + (-B) * C ++ Peningkatan dengan penambahan nilai 1 Sebelum dan sesudah A++ A = A +1 Penurunan dengan pengurangan nilai 1 Sebelum dan sesudah A-. nilai. Perhatikan contoh berikut: /* Contoh Program 4 */ /* Perbedaan operator peningkatan ++ yang diletakkan di depan dan dibelakang operand */ #include <stdio. ~ : Bitwise NOT 5. | : Bitwise OR .h> #include <conio.

b = %d\n". */ printf("nilai = %d. nilai. nilai = x + 1.h" #include "conio. nilai = x. b = b + 1. nilai. x). nilai = --b. b).nilai = ++x. */ printf("nilai = %d.h" void main() { clrscr(). komentar program hanya merupakan keterangan atau penjelasan program. Untuk memberikan komentar atau penjelasan dalam bahasa C digunakan pembatas /* dan */ atau menggunakan tanda // untuk komentar yang hanya terdiri dari satu baris.h" #include "conio.h" void main() { int b. getch().1. x = %d\n". x). //komentar tidak ikut diproses 12 . Komentar Program Komentar program hanya diperlukan untuk memudahkan pembacaan dan pemahaman suatu program (untuk keperluan dokumentasi program). nilai = x++. b). clrscr(). /* berarti x = x + 1. nilai. /* Ini untuk membersihkan layar tampilan */ printf("Contoh Penggunaan Komentar"). /* berarti nilai = x. nilai. x = %d\n". b = %d\n". // untuk membersihkan layar b = 15. } 6. Komentar program tidak akan ikut diproses dalam program (akan diabaikan). getch(). nilai = b. Dengan kata lain. } /* Contoh Program 5 */ #include "stdio. /* berarti nilai = b. nilai = b--. */ printf("nilai = %d. */ printf("nilai = %d. /* berarti b = b . Contoh program: /* Contoh program 6 */ #include "stdio. nilai.

seperti yang terlihat pada tabel 3.cpp #include <stdio.1 Printf Digunakan untuk menampilkan hasil yang terformat dengan menggunakan format spesification. Perintah Output Perintah ini digunakan untuk menampilkan hasil di dalam C++. Operasi yang dimaksudkan adalah printf dan scanf.1 contoh penggunaan puts /* Nama program : puts.h> main () { char *nama.getch().1 Fungsi Printf Fungsi Pustaka %d %c %s %f %e %u %x %p 1. nama=”Lina Dewi”. 1. Perhatikan contoh program berikut ini: listing program 3. /* Dan ini untuk menahan tampilan di layer */ } MODUL III PERINTAH INPUT DAN OUTPUT C++ menyediakan perintah output/input yang dapat digunakanuntuk mencetak sesuatu hasil dari program atau mendapatkan sesuatu input dari keyboard.1 Tabel 3. */ Keterangan Untuk nilai integer Untuk nilai char Untuk nilai string Untuk nilai floating point Untuk nilai floating point dengan bentuk eksponential Untuk nilai integer tak bertanda Untuk nilai integer dalam bentuk hexadesimal Untuk nilai pointer 13 .2 Puts Digunakan hanya untuk menampilkan nilai string. 1.

2 contoh penggunaan putchar /* Nama program : putchar. 14 . } bila program dijalankan. maka akan didapatkan hasil: B 1. maupun putchar. Perhatikan contoh program berikut ini: listing program 3.4 Cout Fungsi cout hampir sama dengan printf.3 Putchar Digunakan hanya untuk menampilkan nilai karakter.puts (nama). a=’B’. Komentar Pada printf. Perpedaannya terletak di: 1. puts. putchar (‘-’). sedangkan pada cout preprosesornya menggunakan #include <iostream. Preprosesor Jika menggunakan printf. puts. maupun putchar preprosesor yang digunakan adalah #include <stdio. maupun putchar komentar menggunakan simbol /* dan diakhiri dengan */.h>. putchar (‘\n’).h> main () { char a. } */ bila program dijalankan.h>. 2. putchar (a).cpp #include <stdio. maka akan didapatkan hasil: Lina Dewi 1. sedangkan pada cout komentarnya menggunakan simbol //. puts.

2 Getch Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER. Bentuk umumnya adalah sebagai berikut: 15 . 2. scanf(“%d”.&tugas). } */ 2.cpp #include <stdio.h> main () { int nilai. if (nilai>70 && tugas>=75) printf(“Lulus\n”). else printf(“Tidak Lulus\n”). 2.&nilai). maupun putchar ganti baris atau garis barunya menggunakan simbol \n. puts.3 contoh penggunaan scanf /* Nama program : scanf.3 Getche Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER. printf (“Masukkan nilai tugas:”). Ganti Baris Kalau printf.1 Scanf Digunakan untuk memasukkan berbagai jenis data melalui keyboard. Getch membaca karakter tunggal yang dimasukkan lewat keyboard tetapi hasilnya tidak ditampilkan melalui layar. tugas. sedangkan pada cout ganti baris atau garis barunya menggunakan simbol \n atau endl. Perintah Input Perintah ini digunakan untuk memasukkan berbagai jenis data ke dalam keyboard. Perhatikan contoh program berikut ini: listing program 3. printf (“Masukkan sebuah nilai:”). scanf(“%d”. 2. Bentuk umumnya adalah sebagai berikut: Karakter=getch().3.

dimana fungsi cin adalah untuk memasukkan nilai variabel ke dalam program melalui keyboard. Panjang dan lebar dimasukkan melalui scanf. cout << "\n”. } Contoh soal dan jawaban 1.&panjang). cout << "Masukan bilangan kedua:". cin >> bil2.4 Cin Fungsi cin ini berpasangan dengan fungsi cout. luas=panjang*lebar.cpp */ /* ---------------------------------*/ #include <iostream. 16 . keliling. scanf("%d". Buatlah program untuk menghitung luas dan keliling empat persegi panjang. Getche membaca karakter tunggal yang dimasukkan lewat keyboard dan hasilnya akan ditampilkan pada layar. cout << "Masukan bilangan pertama:".Karakter=getche(). bil2. printf ("masukan lebar:"). float luas. cin >> bil1.&lebar).luas.cpp */ /* ---------------------------------*/ #include <stdio. sedangkan keliling empat persegi panjang adalah Keliling=2*(panjang+lebar).4 contoh penggunaan cin /* ---------------------------------*/ /* Program : cin. cout << "\n”. Adapun rumus luas dari empat persegi panjang adalah Luas=panjang*lebar.h> main() { int panjang. kali=bil1*bil2. 2. scanf("%d". Jawaban /* ---------------------------------*/ /* Program : soal1. printf ("masukan panjang:"). cout << "Hasil perkalian " << bil1 << ” dan “ << bil2 << “ adalah “ << kali << endl.h> main() { int kali. keliling.lebar. Perhatikan contoh program berikut ini: listing program 3. bil1.

yen. keliling=2*3. lebar. Catatan p adalah panjang. l adalah lebar. sedangkan keliling lingkaran adalah Keliling=2*phi*r. float luas. dengan rumus: Dollar=rupiah/8250 Yen=rupiah/4000 Peso=rupiah/2500 Rupiah dimasukkan ke dalam scanf.&jari). printf ("Jadi keliling adalah : %f\n". Masukkan panjang. 2. printf ("masukan jari-jari:"). luas=3. keliling. 17 . Jawaban /* ---------------------------------*/ /* Program : soal2. } Latihan: 1.} keliling=2*(panjang+lebar). Catatan r adalah jari-jari dan phi = 3. printf ("Jadi luasnya adalah : %f\n".h> main() { int jari. dan peso. 2.luas). Buatlah program menghitung luas dan keliling lingkaran. Adapun rumus dari luas balok adalah Luas=(2*p*l)+(2*p*t)+(2*l*t).141593*jari.luas).keliling).141593*jari*jari. printf ("Jadi luasnya adalah : %d\n". dan t adalah tinggi. dan tinggi melalui scanf. Adapun inputannya adalah nilai rupiah. printf ("Jadi keliling adalah : %d\n". Buatlah program untuk menghitung luas dan volume balok.141593.keliling). Buatlah program untuk menghitung nilai mata uang dalam bentuk dollar. Adapun rumus luas lingkaran adalah Luas=phi*r*r. Jari-jari dimasukkan kedalam scanf. sedangkan volume balok adalah Volume=p*l*t. scanf("%d".cpp */ /* ---------------------------------*/ #include <stdio.

} 18 . Bila katup terbuka maka air akan mengalir dan sebaliknya bila katup tertutup air tidak akan mengalir atau akan mengalir melalui tempat lain.Modul 4 DECISION I (PENYELESAIAN KONDISI ) Decision digunakan untuk memilih salah satu alternatif jawaban yang tepat dari pilihan yang ada. getch().h” #include “conio. Contoh Program 1: /* Program struktur kondisi if untuk memeriksa suatu kondisi */ #include “stdio. if(nilai > 65) printf(“\n ANDA LULUS !!!!\n”). STRUKTUR KONDISI “IF…. Fungsi penyeleksian kondisi penting artinya dalam penyusunan bahasa C. maka pernyataan yang ada di dalam blok if akan diproses dan dikerjakan. &nilai).h” void main() { float nilai. terutama untuk program yang kompleks. Bentuk umum struktur kondisi if adalah: if(kondisi) pernyataan. printf(“Masukan nilai yang didapat : “). Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air.” Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi tunggal. 1. scanf(“%f”. Bila proses yang diseleksi terpenuhi atau bernilai benar.

&a)..&b). if((b>a)&&(b>c)) max=b.&c).c. } 2. if((a>b)&&(a>c)) max=a.b.h" void main() { clrscr(). Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan. printf("Entry bil 2 : "). if((c>a)&&(c>b)) max=c. maka perintah mencetak perkataan LULUS !!!! akan dilaksanakan.scanf("%i".” Dalam struktur kondisi if. STRUKTUR KONDISI “IF. Contoh Program 2 : /* Program contoh penerapan struktur kondisi if */ #include"stdio. printf("Entry bil 3 : ")... if(max>0) printf("Bil tsb adalah bil positif\n").max. int a... printf("Bil terbesar : %i\n". if(max<0) printf("Bil tsb adalah bil negatif")..scanf("%i".Bila program tersebut dijalankan dan kita memasukan nilai 80.else minimal terdapat dua pernyataan..max). printf("Entry bil 1 : ").scanf("%i"..ELSE…..h" #include"conio. Bentuk umumnya adalah sebagai berikut: if(kondisi) pernyataan-1 else pernyataan-2 19 . namun sebaliknya bila kita memasukan sebuah nilai yang kurang dari 65 maka program akan berhenti dan tidak dihasilkan apa-apa. getch().

clrscr(). getch().h” #include “conio. Else Pernyataan3. Perintah ini mempunyai bentuk umum sebagai berikut: If (kondisi1) If (kondisi2) Pernyataan1. 20 . printf(“Masukan nilai yang didapat : “). scanf(“%f”. Else Pernyataan2. else printf(“\n TIDAK LULUS !!!\n”). /* Masukan akan disimpan dalam variable nilai */ if (nilai > 65) printf(“\n LULUS !!!\n”). 3. Hal ini berbeda dengan struktur if dimana program akan berhenti bila kita memasukan nilai kurang dari 65. } Bila program tersebut dijalankan dan kita memasukan nilai 80 maka akan dicetak perkataan “LULUS !!!” namun bila kita memasukan nilai yang kurang dari 65 maka akan tercetak perkataan “TIDAK LULUS !!!”.h” void main() { float nilai. STRUKTUR KONDISI IF DALAM IF Perintah IF dalam IF sering disebut nested-if. &nilai).Contoh Program 3: #include “stdio.

Else if (kondisi2) Pernyataan2.h> main() { int nilai. Contoh program 4: #include <stdio. if (nilai>=81 && nilai<=100) huruf=’A’.scanf(“%d”. jika kondisi diatasnya tidak benar maka kondisi yang terakhir yang akan dikerjakan. char huruf. … … . Dalam hal ini jika kondisi 1 benar maka pernyataan1 yang dikerjakan dan apabila kondisi 1 tidak benar maka kondisi2 yang akan dilihat. else if (nilai>=51 && nilai<=61) huruf=’D’. printf (“Masukkan nilai:”). 21 . else huruf=’E’. else pernyataann. printf (“Jadi nilai huruf yang didapat adalah: %c\n”.Pernyataan If dalam if juga mempunyai bentuk yang majemuk yang sering disebut if bertingkat. else if (nilai>=71 && nilai<=81) huruf=’B’. else if (nilai>=61 && nilai<=71) huruf=’C’.. Dan seterusnya.. Else if (kondisi3) Pernyataan3.&nilai). Bentuk umumnya adalah sebagai berikut: If (kondisi1) Pernyataan1.huruf).

pernyataan3. Setiap konstanta1. konstanta4 sampai dengan konstantan dapat berupa konstanta integer atau konstanta karakter. PERINTAH SWITCH Perintah SWITCH merupakan pernyataan yang dirancang untuk menangani pengambilan keputusan yang melibatkan sejumlah pilihan alternatif yang diantaranya untuk menggantikan pernyataan IF bertingkat. konstanta2. break. Case Konstantan : Pernyataan . Break. pernyataan4 sampai pernytaannxdapat berupa sebuah atau beberapa pernyataan. 22 . Setiap pernyataan1. Perintah break mnyebabkan eksekusi diarahkan ke akhir switch kalau nilai konstanta satu tidak sama dengan nilai ekspresi dan kemudian baru diteruskan pengujian dengan konstanta2 dan seterusnya. . pernyataan2. } Ekspresi dapat berupa ungkapan yang bernilai integer atau bertipe karakter. Bentuk umumnya adalah sebagai berikut : SWITCH (Ekspresi) { Case konstanta1 : pernyataan1. Default : Pernyataann x . Jika sampai pada pengujian akhir tidak ada yang cocok maka default akan dijalankan. break.. Pengujian pada switch akan dimulai dari konstanta1.. break. Case konstanta2 : pernyataan2. konstanta3. apabila nilainya cocok dengan ekspresi maka pernyataan satu akan dijalankan. Case konstanta3 : Pernyataan3.} 4.

maka 23 . break. Apabila dimasukkan kode hari = 2. break. maka sesuai kondisi yang diterapkan di dalam program yaitu case 1. case 5 : printf (“ jum’at ”). case 3 : printf (“ rabu ”). } } Bila program di atas dijalankan maka hasilnya adalah sebagai berikut : Masukkan kode hari [1 – 7 ] : 1 Senin Penjelasan : Dari program di atas. Program 5. printf (“ masukkan kode hari [1-7] : ”) . break. default : Printf (“ Kode tidak ada “). break.cpp */ /*--------------------------------------------*/ #include <stdio. &kdhari) .1.Jika pernyataan break tidak diikutsertakan pada setiap case maka walaupun konstantanya cocok denan ekspresi. maka pernyataan pertama yang ada pada case satu yaitu mencetak hari senin. case 2 : printf (“ selasa ”). maka setelah pernyataan pada case tersebut dikerjakan akan dilanjutkan pada case berikutnya sampai ditemui pernyataan break pada akhir switch.h> main ( ) { int kdhari . case 4 : printf (“ kamis ”). break. break. Contoh program case /*---------------------------------------------*/ /* program : case. scanf (“%d” . apabila dimasukkan kode hari = 1. case 7 : printf (“ minggu ”). break. case 6 : printf (“ sabtu ”). switch (kdhari) { case 1 : printf (“ senin ”).

STRUKTUR PERULANGAN “ WHILE” Perulangan WHILE banyak digunakan pada program yang terstruktur. MODUL 5 PERULANGAN (LOOPING) Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses yang berulangulang sebanyak keinginan kita. Contoh Program 1 : /* Program Perulangan menggunakan while */ #include “stdio. } 24 . x = 1. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui.h” void main() { int x. tentunya kita akan merasa kesulitan. /* awal variabel */ while (x <= 10) /* Batas akhir perulangan */ { printf(“%d BAHASA C\n”. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah. /* variabel x ditambah dengan 1 */ } getch(). x ++. x). cukup dengan beberapa perintah saja. Namun dengan struktur perulangan proses. Misalnya saja. Dan seterusnya tergantung dari kode hari yang dimasukkan. Struktur perulangan dalam bahasa C mempunyai bentuk yang bermacam-macam.pernyataan kedua yang ada pada case 2 yaitu mencetak hari Selasa yang akan dikerjakan. bila kita ingin menginput dan mencetak bilangan dari 1 sampai 100 bahkan 1000. kita tidak perlu menuliskan perintah sampai 100 atau 1000 kali.h” #include “conio.

x. nilai dari variabel x akan bertambah 1. } getch().Jika program tersebut dijalankan maka akan menghasilkan hasil sebagai berikut 1 BAHASA C 2 BAHASA C 3 BAHASA C 4 BAHASA C 5 BAHASA C 6 BAHASA C 7 BAHASA C 8 BAHASA C 9 BAHASA C 10 BAHASA C Pada perulangan while di atas. int i=1.h" void main() { clrscr(). Setiap kali melakukan perulangan.x). } 25 .h" #include"conio. while(x<=i) { printf("%i". Contoh Program 2 : /* Program mencetak deret bilangan dengan menggunakan while */ #include"stdio. x=x+1. while(i<=5) { x=1. i=i+1. } printf("\n"). proses atau perintah mencetak kata-kata “BAHASA C” akan terus dilakukan selama variabel x masih kurang atau sama dengan 10.

WHILE…” Pada dasarnya struktur perulangan do. syarat.. while (i != 99) { printf ("\n Masukkan Sebuah Bilangan : "). printf ("\n Bilangan Anda adalah= %d". hanya saja pada proses perulangan dengan while.. getch(). do { printf(“%d BAHASA C\n”. } STRUKTUR PERULANGAN “FOR” Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya. Contoh Program 4 : #include “stdio. Dari segi penulisannya. Bentuk umum perulangan for adalah sebagai berikut: for(inisialisasi..h> void main() { int i = 0. x ++. x = 1. seleksi while berada di bawah batas perulangan.while.. } } STRUKTUR PERULANGAN “DO...while sama saja dengan struktur while.i). x). penambahan) 26 .h” #include “conio. } while(x <= 10).&i). Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan. seleksi berada di while yang letaknya di atas sementara pada perulangan do... scanf("%d".h” void main() { int x.h> #include <stdio. struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana...Contoh program 3 : #include <iostream.

y++) for(i=0. } Contoh Program 6 : /* Mencari total dan rata-rata sejumlah bilangan menggunakan for */ #include"stdio.2f". t=t+x. for(y=1.y). x++) { printf(“%d BAHASA C\n”.h" #include"conio.&x).r).i. x<= 10. penambahan : pengatur perubahan nilai variabel kontrol. } printf("\n Total : %. for(x = 1.2f". y=y+1.t).pernyataan.h” void main() { int x.x. Contoh Program 5 : /* Program perulangan menggunakan for */ #include “stdio. i++) { printf("Entry bilangan %i : ". } 27 . Keterangan : Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol. } getch(). getch(). int y. i<=2. y<=3.h” #include “conio.t=0.h" void main() { clrscr(). printf("\n Rata rata : %. syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan. float r.scanf("%f". x). r=t/i.

0i”. index++) { printf(“%5. Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi satu. nilai[index]).h> void main() { int index. for(index=0. for(index=0. index < 10. array dimensi dua dan array multi-dimensi. ARRAY DIMENSI SATU Setiap elemen array dapat diakses melalui indeks. index+1). } getch(). index < 10. Deklarasi Array Bentuk umum : Tipe_array nama_array[ukuran]. Indeks array secara default dimulai dari 0. Contoh : Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4] int Nilai[5]. &nilai[index]). 70 80 82 60 75 Contoh Program 1 : /*Program untuk menginput nilai mahasiswa dimensi*/ #include <stdio. } /* tampilkan nilai mahasiswa */ printf(“Nilai mahasiswa yang telah diinput”). scanf(“%i”. 1. } ke dalam array satu CATATAN : String juga sebenarnya merupakan array yang bertipe karakter. Letak atau posisi dari elemen array ditunjukkan oleh suatu index. /* input nilai mahasiswa */ printf(“Input nilai 10 mahasiswa : “). nilai[10]. index++) { printf(“Mahasiswa %i : “.MODUL 6 ARRAY (LARIK) Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Jumlah elemen array 28 .h> #include <conio. clrscr().

h> void main() { char jurusan[25]. printf(“Masukkan nama Anda : “). gets(nim). /***** cari jurusan *****/ switch(nim[2]) { case ‘1’ : strcpy(jurusan. Coba periksa lagi !”). printf(“\n Jurusan : %s”.”Diploma-3”). Deklarasi array : Tipe_array nama_array[baris][kolom]. Coba periksa lagi !”). “Teknik Elektro”). break. “Strata-1”). “Teknik Industri”). Contoh : Int X[3][4]. } /***** tampilkan data mahasiswa *****/ printf(“ << Data Mahasiswa Universitas Mercu Buana >>“). X[0][0] X[0][1] X[0][2] X[0][3] 29 . case ‘3’ : strcpy(jurusan. jurusan). “Sistem Informasi”). printf(“\n Jenjang : %s”. nama[20]. jenjang[10].h> #include <string.h> #include <conio. break. printf(“\n Nama : %s”. jenjang). nama). “Teknik Informatika”). getch(). break. Contoh Program 2 : /*Program u/ menentukan jurusan & jenjang mahasiswa berdasarkan NIM*/ #include <stdio. break. ARRAY DIMENSI DUA Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. case ‘2’ : strcpy(jurusan. nim). printf(“\n NIM : %s”. default : printf(“Anda salah memasukkan NIM. } 2. } else { if(nim[4] == ‘3’) { strcpy(jenjang. gets(nama). printf(“Masukkan NIM Anda : “). nim[10]. } else printf(“ANda salah memasukkan NIM. case ‘4’ : strcpy(jurusan. break. Bentuknya dapat berupa matriks atau tabel.menyatakan jumlah string. } /***** cari jenjang *****/ if(nim[4] == ‘5’) { strcpy(jenjang.

j<4.i++) { for(j=0.scanf("%i". misalnya kita ingin mengisi elemen array baris 2 kolom 3 dengan 10 maka perintahnya adalah sbb: X[1][2] = 10.&B[i][j]). printf("\n").i<3.scanf("%i".j<4. } printf("\n").i+1. } } /******** Proses penjumlahan matriks A dan B ********/ for(i=0. } printf("\n"). clrscr().i++) { for(j=0.i++) { for(j=0. C[3][4].j++) { X[i][j]=A[i][j]+B[i][j]. B[3][4].X[1][0] X[1][1] X[1][2] X[1][3] X[2][0] X[2][1] X[2][2] X[2][3] Cara mengakses array : Untuk mengakses array. for(i=0.i++) { for(j=0.j+1).j+1).i++) { for(j=0. j. Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu :   Row Major Order (secara baris per baris) Column Major Order (secara kolom per kolom) Contoh Program 3 : /* Program penjumlahan matriks dua dimensi */ #include "stdio.h" #include "conio. for(i=0. } } /******** Masukkan matriks B ********/ for(i=0.i+1.B[i][j]).j++) { printf("input data matrik A[%i][%i] : ". /******* Masukkan matriks A *******/ for(i=0.i<3.j++) printf("%6i".j<4. i.j<4.i<3.printf("\n"). 30 .&A[i][j]).j<4. fflush(stdin).i<3.A[i][j]).j++) { printf("input data matrik B[%i][%i] : ". /******** Cetak isi matriks B *******/ printf("\n matrik B\n"). fflush(stdin). } } /******** Cetak isi matriks A ********/ printf("\n matrik A\n").j++) printf("%6i". X[3][4]. Y[3][4].i<3.h" void main() { int A[3][4].

for(i=0. i<=m. x<=m.i<3. j. a[k][i] = 0. /* Membaca matriks asli */ for(i=1. j++) { printf("A(%d. a[i][j] = 1. x++) a[k][x] = a[k][x] . } } /* Mencetak Matriks asli */ printf("\nMatriks asli : "). &m).printf("\n"). i<=m. &a[i][j]). j++) printf(" %. i. for(x=1. j<=m. j<=m. scanf("%d". } } } /* Mencetak matriks hasil inversi*/ printf("\n\nMatriks inversi : \n"). for(j=1. j<=m. printf("\nMasukkan ukuran matriks : \n"). for(j=1.j++) printf("%6i".i.i++) { for(j=0.a[i][x] * t. scanf("%f". printf(“\nsecara baris per baris\n"). a[20][20]. k. for(j=1. 31 . } printf("\n\n"). } /* Proses inversi */ for(i=1. } Contoh aplikasi Array untuk menghitung invers suatu matriks dengan ukuran m x n dengan metode Gauss-Jordan : Contoh Program 4: /* MENGHITUNG INVERS MATRIKS DENGAN METODE GAUSS-JORDAN */ #include <stdio.h> void main() { float p[20]. i++) { printf("\n"). t. i<=m. } for(k=1. x.f".h> #include <conio. a[i][j]). clrscr().j<4. j++) { a[i][j] = a[i][j]/p[i]. getch(). printf("\nMasukkan nilai elemen matriks yang akan diinvers”).X[i][j]). i++) { p[i] = a[i][j]. i++) { printf("\n"). k<=m.%d)= ". int m./******** Cetak hasil penjumlahan matriks A dan B *******/ printf("\n matrik penjumlahan A+B\n"). k++) { if(k != i) { t = a[k][i]. j). for(i=1.

i <=m.for(i =1. X[0][0][0] X[0][0][1] X[0][1][0] X[0][1][1] X[0][2][0] X[0][2][1] X[0][3][0] X[0][3][1] X[0][0][2] X[0][1][2] X[0][2][2] X[0][3][2] X[1][0][0] X[1][1][0] X[1][2][0] X[1][3][0] X[1][0][1] X[1][1][1] X[1][2][1] X[1][3][1] X[1][0][2] X[1][1][2] X[1][2][2] X[1][3][2] LATIHAN 1. sehingga mudah dipahami dan Dapat mengurangi pengulangan kode (duplikasi kode).1 Pendahuluan Fungsi merupakan bagian (blok) dari kode program yang dirancang untuk melaksanakan tugas tertentu.  32 . Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua. mudah dikembangkan. menghitung dan mencetak perkalian matriks 3 x 3! Modul 8 FUNGSI 8. a[i][j]). ARRAY MULTI-DIMENSI Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Buatkan program penjumlahan untuk menghitung matrik 2 x 2! 2. j++) printf(" %. } 3. dengan tujuan:  Program menjadi terstruktur.1f". Bentuk umumnya yaitu : tipe_array nama_array[ukuran1][ukuran2]…[ukuranN]. } getch(). Fungsi merupakan bagian penting dalam pemrograman C. printf(" \n"). Contoh : float X[2][4][3]. Buatlah sebuah program untuk menginput. i++) { for(j=1. j<=m.

Bentuk umum sebuah fungsi adalah sebagai berikut: Penentu_tipe nama_fungsi (daftar parameter) Deklarasi parameter { tubuh fungsi } ketik yang ditekan. Contoh: Nama fungsi Tanpa argumen Inisialisasi( ) tidak ada tanda titik-koma { awal fungsi return(0). dengan tugas untuk membaca kode tombol papan printf( ). dengan tugas untuk menampiolkan informasi atau Pada umumnya fungsi memerlukan masukan yang dinamakan sebagai argumen atau parameter. Penentu tipe digunakan untuk menentuka tipe keluaran fungsi. yang dapat dilipih dari salah satu tipe data yang berlaku dalam C. 33 . seperti char atau int. tubuh fungsi } akhir fungsi 8. bahkan tanpa deklarasi parameter. dan di dalam tubuh fungsi pernyataan yang diberikan ntuk memberikan nilai kahir fungsi dapat berupa pernyataan return. Masukan ini selanjutnya diolah oleh fungsi dan hasil keluarannya dapat berupa sebuah nilai (disebut nilai keluaran fungsi atau nilai balik fungsi).2 Memberi Nilai Akhir Fungsi Sebuah fungsi dapat mempunyai nilai keluaran (seperti diperlihatkan pada contoh di atas).  data ke layar. Sebuah fungsi dapat saja tidak mengandung parameter sama sekali.Tugas khusus yang dilakukan suatu fungsi dapat dilihat dari beberapa fungsi standard. maka akan dianggap sebagai int. Jika penentu tipe tidak disebutkan . seperti misalnya:  getch( ).

} inisialisasi() { return(0).h> inisialisasi().cpp */ 34 . printf("y = %d\n".*/ /* File program : fungsi. x = inisialisasi(). y. maka tanda } akan digunakan sebagai tanda akhir eksekusi fungsi). y = inisialisasi (). Pada contoh berikut. y). jika suatu pernyataan return dieksekusi. /* ------------------------------------------.Contoh program berikut ini memperlihatkan penyusunan dan penggunaan suatu fungsi.cpp */ /* Contoh pembuatan fungsi */ /* ------------------------------------------. Untuk fungsi yang tidak memiliki pernyataan return. printf("x = %d\n". /* ---------------------------------------------------. maka eksekusi terhadap fungsi akan berakhir dan nilai pada parameter return akabn menjadi keluaran fungsi. } Contoh hasil eksekusi: C>Fungsi x = 0 y = 0 Program di atas sekaligus menjelaskan bahwa suatu fungsi cukup didefinisikan satu kali. tetapi dapat digunakan beberapa kali untuk menghindari duplikasi kode dan menghemap penulisan program maupun penyimpanan kode dalam memori.*/ #include <stdio. x). Bagi suatu fungsi. main() { int x.*/ /* File program : Minimum. fungsi digunakan untuk memperoleh nilai minimum diantara dua nilai yang ada pada parameternya.

y) int x. { if (x < y) return(x). printf("Nilai terkecil = %d\n". oleh karena itu fungsi juga mengandung bagian untuk mendeklarasikan parameter.y. y. dengan pernyataan: if (x < y) return(x).b). Pernyataan di atas menyatakan:   Jika x < y. } main() { int a = 20./* Contoh fungsi yang mengandung argumen */ /* ----------------------------------------------------. int hasil. Untuk keadaan selainnya ( x > y).h> minimum(x. int b = 44. 35 . hasil). Penentuan nilai keluaran fungsi dilakukan pada tubuh fungsi. } contoh eksekusi: C>Minimum Nilai terkecil = 20 Nilai terkecil = 2 Fungsi pada program di atas mempunyai dua buah parameter berupa x dan y. minimum(3.*/ #include <stdio.2)). maka keluaran fungsi adalah sebesar y. hasil = minimum(a. maka nilai keluaran fungsi adalah sebesar nilai x. printf("Nilai terkecil = %d\n". else return(y). else return(y). berupa : int x.

pendefinisian fungsi dilakukan setelah program utama.cpp dikenal sebagai prototipe fungsi (function prototype). namun pada awal program (sebelum program utama).cpp */ 36 . pendefinisian fungsi dilakukan pada awal program sebelum pernyataan program utama (main()).b). Yang memberikan nilai terkecil diantara a dan b ke bariabel hasil.3 Prototipe Fungsi Dari kedua contoh program di atas. Salah satu keuntungan penggunaan prototipe. berupa instruksi untuk menampilkan nilai terkecil antara 3 dan 2. Pendeklarasian fungsi seperti pada program fungsi. Jumlah parameter.2)). • Pada program fungsi.cpp.cpp. dapat dilihat bahwa penulisan tubuh fungsi bisa pada awal program maupun pada akhir program. Model penulisan ini merupakan model klasik. Bagi kompiler. • Pada contoh program minimum.*/ /* File program : Jumlah. Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai:    Tipe keluaran fungsi Fungsi 75. harus dituliskan nama fungsi dan parameternya yang diakhiri dengan tanda titik-koma. atau akan menunjukkan kesalahan kalau jumlah parameter dalam definisi dan saat pemanggilan berbeda. Yang kedua dengan pernyataan: printf("Nilai terkecil = %d\n". /* ----------------------------------------. minimum(3. kompiler akan melakukan konversi seandainya antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama. informasi dalam prototipe akan digunakan untuk memeriksa keabsahan (validitas) parameter dalam pemanggilan fungsi.Fungsi minimum() dipanggil dua kali. 8. Tipe dari masing-masing parameter. Yang pertama: hasil = minimum(a.

/* Contoh fungsi dengan prototipe */ /* ----------------------------------------- */ #include <stdio.h> float jumlah(float x,float y); main() { int a = 6; int b = 3; float c; c = jumlah(a,b); printf("a + b = %g\n",c); printf("Hasil penjumlahan = %g\n", jumlah(20.1, 0.9)); } float jumlah(float x, float y) { return(x + y); }

hasil eksekusi :
c>Jumlah a + b = 9 Hasil penjumlahan = 21

8.4 Parameter Formal dan Parameter Aktual Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Pada fungsi jumlah( ) program 6-3, x dan y dinamakan sebagai parameter formal. Parameter aktual adalah parameter (tidak selamanya menyatakan variabel) yang digunakan dalam pemanggilan fungsi. Pada pernyataan:
c = jumlah(a, b); y = jumlah(20.1, 0.9);

a dan b merupakan parameter aktual dari fungsi jumlah (), demikian pula 20.1 dan 0.9 (meskipun bukan berupa variabel). 8.5 Cara Melewatkan Parameter Terdapat dua cara untuk melewatkan parameter ke dalam fungsi, yaitu dengan cara:

37

Pemanggilan dengan nilai (call by value). Pemanggilan dengan referensi (call by reference). Pemanggilan dengan nilai merupakan cara yang digunakan pada contoh fungsi program terdahulu. Pada pemanggilan dengan nilai, nilai dari parameter aktual akan disalin ke parameter formal. Dengan cara ini nilai parameter aktual tidak bisa berubah sekalipun nilai parameter formal berubah.
/* ------------------------------------------- */ /* File program : Tukar.cpp */ /* Melihat pengaruh pemanggilan dengan nilai */ /* ------------------------------------------- */ #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\n",a,b); tukar(a,b); printf("Nilai sesudah pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); } void tukar (int x, int y) { int z; z = x; x = y; y = z; printf("Nilai diakhir fungsi tukar()\n"); printf("x = %d y = %d\n\n",x,y); }

hasil eksekusi :
c> Tukar Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai diakhir fungsi tukar() x = 77 y = 88

38

Nilai sesudah pemanggilan fungsi a = 88 b = 77

Dari contoh program di atas terlihat bahwa hasil 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. Hal ini terjadi karena x hanyalah salinan dari a dan y salinan dari b, serta definisi fungsi tidak mengembalikan nilai (diawali dengan void dan tidak ada instruksi return( ) ). Pemanggilan dengan referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat digunakan untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi. Adapun perubahan dalam parameter aktual adalah sebagai berikut:
Tukar(&a, &b); /* variabel diawali dengan & */

Pendeklarasian parameter: int *px, *py; menyatakan bahwa px dan py adalah suatu variabel pointer, yaitu variabel yang berisi alamat variabel yang lain.
/* ---------------------------------------------------------- */ /* File program : Tukar2.cpp */ /* Melihat pengaruh pemanggilan dengan referensi */ /* ---------------------------------------------------------- */ #include <stdio.h> void tukar (int *px, int *py); main() { int a,b; a = 88; b = 77; printf("Nilai sebelum pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); tukar(&a,&b); /* parameter alamat a dan alamat b */ printf("Nilai sesudah pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); } void tukar (int *px, int *py)

39

z = *px. Penggolongan berdasarkan kelas penyimpanan berupa: • • • • Variabel lokal Variabel eksternal Variabel statis Variabel register 8. } Hasil eksekusi : c> Tukar2 Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai diakhir fungsi tukar() *px = 77 *py = 88 Nilai sesudah pemanggilan fungsi a = 77 b = 88 8.*py).*px. *px = *py.{ int z. printf("Nilai diakhir fungsi tukar()\n"). *py = z. juga dapat digolongkan berdasarkan kelas penyimpanannya (storage class). yang mempunyai sifat: • Secara otomatis akn diciptakan ketika fungsi dipanggil dan akan hilang (dari memori) ketika eksekusi terhadap fungsi berakhir. • Hanya dikenal oleh fungsi tempat variabel dideklarasikan. 40 . printf("*px = %d *py = %d\n\n".6.6 Penggolongan Variabel Berdasarkan Kelas Penyimpanan Suatu variabel disamping dapat digolongkan berdasarkan jenis/tipe data.1 Varibel Lokal Variabel lokal adalah variabel yang dideklarasikan dalam fungsi.

Jika tidak diberi nilai awal.• Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya tidak tentu (acak)). printf("Nilai i kini = %d\n". Penerapan variabel lokal yaitu jika variabel tersebut hanya digunakan oleh suatu fungsi tertentu. printf("Nilai i kini = %d\n". printf("Nilai i kini = %d\n". variabel lokal disebut juga dengan variabel otomatis.cpp */ /* Penggunaan variabel eksternal */ /* --------------------------------------------.h> int i = 273. } void tambah (void) { i++. /* variabel eksternal */ void tambah (void).i). secara otomatis diinisialisasi dengan nilai sama dengan nol Contoh penggunaan variabel eksternal diperlihatkan pada contoh program Eksternal.6.2 Variabel Eksternal Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi. Dalam banyak literatur. dan mempunyai sifat: • • Dapat diakses oleh semua fungsi. tambah().i).i). i += 7. } 41 . dan tidak dimaksudkan untuk digunakan oleh fungsi yang lain.i).*/ /* File program : Eksternal. 8. main() { printf("Nilai awal i = %d\n". tambah().cpp berikut ini: /* --------------------------------------------.*/ #include <stdio.

*/ /* File program : Statis. Variabel statis diperoleh dengan menambahkan kata-kunci static di depan penentu tipe-data variabel. yaitu saat fungsi dipanggil yang pertama kali. Satu hal yang perlu diingat.Hasil eksekusi: C>Eksternal Nilai awal I = 273 Nilai I kini = 280 Nilai I kini = 281 Nilai I kini = 282 Pada contoh di atas i hanya dideklarasikan di bagian atas program. variabel statis tidak akan hilang sekeluarnya dari fungsi (nilai pada variabel akan tetap diingat).3 Variabel Statis Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel eksternal.h> void fungsi_y (void). tempat variabel statis dideklarasikan. maka variabel dapat dikenal oleh fungsi tempat variabel dideklarasikan. sehingga dapat digunakan oleh kedua fungsi yang ada pada program di atas. /* --------------------------------------------. variabel eksternal harus dideklarasikan sebelum definisi fungsi yang akan menggunakannya. maka variabel hanya Jika variabel statis bersifat eksternal. Jika tidak ada inisialisasi oleh pemrogram maka secara otomatis akan diberi nilai awal nol. digunakan oleh semua fungsi yang terletal pada file yang sama. dan tidak dideklarasikan lagi pada fungsi main() maupun tambah(). • Inisialisasi hanya dilakukan sekali.*/ #include <stdio. • Berbeda dengan variabel lokal.cpp */ /* Penggunaan variabel statis */ /* --------------------------------------------. 8. Jadi i merupakan variabel eksternal.6. Variabel statis mempunyai sifat: • • Jika variabel statis bersifat internal. 42 .

yang bertipe char atau int.y).y).main() { int y = 20. dengan tujuan untuk mempercepat proses dalam loop. printf("Nilai y dalam main() = %d\n". karena register mempunyai kecepatan yang jauh lebih tinggi dibanding RAM.4 Variabel Register Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori (RAM).h> main() { 43 .*/ #include <stdio.*/ /* File program : Var_reg. fungsi_y(). printf("Nilai y dalam fungsi_y() = %d\n". fungsi_y(). Variabel register hanya dapat diterapkan pada variabel lokal atau parameter formal. } void fungsi_y(void) { static int y. Contoh pemakaian variabel register: /* --------------------------------------------.cpp */ /* Penggunaan variabel register */ /* --------------------------------------------. y++.6. } Contoh eksekusi: C> Statis Nilai y dalam fungsi_y() = 1 Nilai y dalam fungsi_y() = 2 Nilai y dalam main() = 20 8. Variabel register biasa digunakan untuk variabel pengendali loop.

/* --------------------------------------------.time('\0'). Jika belum terlihat perbedaannya.time('\0'). register int a.waktu_awal).*/ /* File program : tes_reg.jumlah).waktu_awal). i<20000. printf("Waktu total = %d detik\n".cpp */ /* Penggunaan variabel register */ /* --------------------------------------------. a<20000. a++) for(b=0. Contoh program berikut ini memperlihatkan perbedaan lama waktu eksekusi antara program yang menggunakan variabel register dengan yang tanpa variabel register. kemudian bandingkan kecepatan kedua program tersebut.h> #include <time. /* variabel register */ long waktu_awal. printf("Waktu total = %d detik\n". /* variabel register */ int jumlah. +100 = %d\n". for (a=0. for (i=0. i<=100. perbesar nilai batas loop.b<20000. i++) for(j=0. waktu_awal = time('\0').b++) .j.j++) .h> main() { /* tanpa variabel register */ int i.b. /* dengan variabel register */ waktu_awal = time('\0')..register int i. } 44 . for (i=1.*/ #include <stdio.. i++) jumlah++. printf("1+2+ . } Buatlah program yang sama tapi tidak menggunakan variabel register.j<20000. misalnya sampai 10000.

variabel a dinamakan dengan parameter aktual 45 . perhatikan contoh pendefinisian fungsi dibawah ini: TambahSatu(int X) { Return ++X. } Pada saat pemanggilan fungsi TambahSatu() di atas. yaitu parameter formal dan parameter aktual. } Pada sintak di atas.Contoh hasil eksekusi: C>tes_reg Waktu total = 7 detik Waktu total = 3 detik Modul 10 FUNGSI II 10.1 Parameter Formal dan Parameter Aktual Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. hasil.1. Sekarang perhatikan sintak berikut: main() { int a = 10. Untuk lebih memahaminya. Parameter aktual adalah parameter (tidak selamanya menyatakan variabel) yang digunakan dalam pemanggilan fungsi. 10.1 Fungsi Dengan Parameter Parameter adalah suatu variabel yang berfungsi untuk menampung nilai yang akan dikirimkan ke dalam fungsi. Pada fungsi jumlah( ) program 6-3. variabel X dinamakan sebagai parameter formal. x dan y dinamakan sebagai parameter formal. Parameter itu sendiri terbagi dua macam. return 0. hasil = TambahSatu(a).

} tukar (int x.cpp */ /* Melihat pengaruh pemanggilan dengan nilai */ /* ------------------------------------------. printf("Nilai sesudah pemanggilan fungsi\n"). int).*/ #include <stdio.y).a.  Pemanggilan dengan referensi (call by reference). printf("a = %d b = %d\n\n".h> tukar (int.b). tukar(a. nilai dari parameter aktual akan disalin ke parameter formal. int y) { int z. Dengan cara ini nilai parameter aktual tidak bisa berubah sekalipun nilai parameter formal berubah.b). } hasil eksekusi : Nilai sebelum pemanggilan fungsi a = 88 b = 77 46 . yaitu dengan cara:  Pemanggilan dengan nilai (call by value). x = y. printf("Nilai diakhir fungsi tukar()\n"). Pemanggilan dengan nilai merupakan cara yang digunakan pada contoh fungsi program terdahulu. printf("Nilai sebelum pemanggilan fungsi\n").b).10.a. y = z. /* ------------------------------------------. Pada pemanggilan dengan nilai. a = 88.*/ /* File program : Tukar. printf("a = %d b = %d\n\n". z = x.b. main() { int a. printf("x = %d y = %d\n\n".x. b = 77.2 Cara Melewatkan Parameter Terdapat dua cara untuk melewatkan parameter ke dalam fungsi.

printf("a = %d b = %d\n\n".Nilai diakhir fungsi tukar() x = 77 y = 88 Nilai sesudah pemanggilan fungsi a = 88 b = 77 Dari contoh program di atas terlihat bahwa hasil pemanggilan fungsi tukar( ). main() { int a. printf("Nilai sebelum pemanggilan fungsi\n"). Hal ini terjadi karena x hanyalah salinan dari a dan y salinan dari b. a = 88. } ---------------------------------------------------------- 47 . walaupun pada fungsi tukar ( ) telah terjadi penukaran antara parameter x dan y. Adapun perubahan dalam parameter aktual adalah sebagai berikut: Tukar(&a.cpp */ /* Melihat pengaruh pemanggilan dengan referensi */ /* ---------------------------------------------------------#include <stdio. tukar(&a.b).b). yaitu variabel yang berisi alamat variabel yang lain. /* variabel diawali dengan & */ Pendeklarasian parameter: int *px. &b). printf("a = %d b = %d\n\n".b. variabel a dan b (yang dilewatkan ke fungsi tukar ()) tidak berubah.a. *py.a. b = 77.h> tukar (int *px. int *py). /* */ /* File program : Tukar2. menyatakan bahwa px dan py adalah suatu variabel pointer. /* parameter alamat a dan alamat b */ printf("Nilai sesudah pemanggilan fungsi\n"). Cara ini dapat digunakan untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi. Pemanggilan dengan referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. serta definisi fungsi tidak mengembalikan nilai (tidak ada instruksi return( ) ).&b).

*py). yang mempunyai sifat: • • • Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan hilang (dari Hanya dikenal oleh fungsi tempat variabel dideklarasikan. tentu (acak)). } Hasil eksekusi : Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai diakhir fungsi tukar() *px = 77 *py = 88 Nilai sesudah pemanggilan fungsi a = 77 b = 88 10.3.1 Varibel Lokal Variabel lokal adalah variabel yang dideklarasikan dalam fungsi. variabel lokal disebut juga dengan variabel otomatis.3 Penggolongan Variabel Berdasarkan Kelas Penyimpanan Suatu variabel disamping dapat digolongkan berdasarkan jenis/tipe data. int *py) { int z. printf("Nilai diakhir fungsi tukar()\n"). *py = z. Dalam banyak literatur. 48 .*px. Penggolongan berdasarkan kelas penyimpanan berupa: 10. printf("*px = %d *py = %d\n\n". *px = *py. z = *px. juga dapat • • • • digolongkan Variabel lokal Variabel eksternal Variabel statis Variabel register berdasarkan kelas penyimpanannya (storage class). Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya tidak memori) ketika eksekusi terhadap fungsi berakhir.tukar (int *px.

tambah().i).h> int i = 273.cpp berikut ini: /* --------------------------------------------.i). printf("Nilai i kini = %d\n". /* variabel eksternal */ tambah ().*/ #include <stdio.i). i += 7. main() { printf("Nilai awal i = %d\n". 10. secara otomatis diinisialisasi dengan nilai sama dengan nol Contoh penggunaan variabel eksternal diperlihatkan pada contoh program Eksternal. } Hasil eksekusi: Nilai awal i = 273 49 . } tambah () { i++.cpp */ /* Penggunaan variabel eksternal */ /* --------------------------------------------. printf("Nilai i kini = %d\n". printf("Nilai i kini = %d\n". dan mempunyai sifat: • • Dapat diakses oleh semua fungsi.i).2 Variabel Eksternal Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi. Jika tidak diberi nilai awal.3.Penerapan variabel lokal yaitu jika variabel tersebut hanya digunakan oleh suatu fungsi tertentu. dan tidak dimaksudkan untuk digunakan oleh fungsi yang lain.*/ /* File program : Eksternal. tambah().

Jika tidak ada inisialisasi oleh pemrogram maka secara otomatis akan diberi nilai awal nol. dan tidak dideklarasikan lagi pada fungsi main() maupun tambah().*/ /* File program : Statis.cpp */ /* Penggunaan variabel statis */ /* --------------------------------------------. main() { int y = 20. Satu hal yang perlu diingat. semua fungsi yang terletal pada file yang sama. Variabel statis diperoleh dengan menambahkan kata-kunci static di depan penentu tipe-data variabel. kali. variabel statis tidak akan hilang sekeluarnya Inisialisasi hanya dilakukan sekali. } 50 . maka variabel hanya dikenal oleh fungsi Jika variabel statis bersifat eksternal. variabel eksternal harus dideklarasikan sebelum definisi fungsi yang akan menggunakannya. sehingga dapat digunakan oleh kedua fungsi yang ada pada program di atas.3. fungsi_y(). maka variabel dapat digunakan oleh tempat variabel dideklarasikan. tempat variabel statis dideklarasikan.y).Nilai i kini = 280 Nilai i kini = 281 Nilai i kini = 282 Pada contoh di atas i hanya dideklarasikan di bagian atas program. printf("Nilai y dalam main() = %d\n".h> fungsi_y (). yaitu saat fungsi dipanggil yang pertama dari fungsi (nilai pada variabel akan tetap diingat). /* --------------------------------------------.3 Variabel Statis Variabel statis dapat berupa variabel lokal (didefinisikan di dalam fungsi) maupun variabel eksternal. Variabel statis mempunyai sifat: • • Jika variabel statis bersifat internal. • • Berbeda dengan variabel lokal. Jadi i merupakan variabel eksternal. 10. fungsi_y().*/ #include <stdio.

printf("Nilai y dalam fungsi_y() = %d\n". } 51 . i<=100. karena register mempunyai kecepatan yang jauh lebih tinggi dibanding RAM. yang bertipe char atau int.h> main() { register int i.3. printf("1+2+ .4 Variabel Register Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori (RAM). Variabel register hanya dapat diterapkan pada variabel lokal atau parameter formal. y++. Contoh pemakaian variabel register: /* --------------------------------------------.cpp */ /* Penggunaan variabel register */ /* --------------------------------------------.*/ /* File program : Var_reg. i++) jumlah++.. Variabel register biasa digunakan untuk variabel pengendali loop.. dengan tujuan untuk mempercepat proses dalam loop. /* variabel register */ int jumlah. for (i=1.y).fungsi_y() { static int y.*/ #include <stdio. } Contoh eksekusi: Nilai y dalam fungsi_y() = 1 Nilai y dalam fungsi_y() = 2 Nilai y dalam main() = 20 10.jumlah). +100 = %d\n".

Contoh program berikut ini memperlihatkan perbedaan lama waktu eksekusi antara program yang menggunakan variabel register dengan yang tanpa variabel register. perbesar nilai batas loop. } Contoh hasil eksekusi: Waktu total = 7 detik Waktu total = 3 detik MODUL 11 ARRAY 52 . b++) .h> #include <time. register int a.h> main() { /* tanpa variabel register */ int i. /* variabel register */ long waktu_awal. printf("Waktu total = %d detik\n".j++).*/ #include <stdio. /* dengan variabel register */ waktu_awal = time('\0'). for (a=0. /* --------------------------------------------. a++) for (b=0.time('\0').cpp */ /* Penggunaan variabel register */ /* --------------------------------------------.time('\0'). a<20000.*/ /* File program : tes_reg. for (i=0.waktu_awal). Jika belum terlihat perbedaannya.j. i<20000. misalnya sampai 10000. waktu_awal = time('\0'). kemudian bandingkan kecepatan kedua program tersebut.waktu_awal).Buatlah program yang sama tapi tidak menggunakan variabel register.b. i++) for (j=0. printf("Waktu total = %d detik\n". j<20000. b<20000.

j. printf("Memasukkan nilai : \n"). 53 } } .11. Bentuk umum pendeklarasian array: Tipe_data nama_array [banyak elemen] . Untuk mengakses nilai suatu elemen array.1 DEFINISI ARRAY Array adalah suatu variable yang merepresentasikan daftrar (list) atau kumpulan data yang memiliki tipe data sama.j<MAX. kita akan menggunakan indeks dari array tersebut. Contoh: int X[10] .j++) { printf("X[%d] = %d\n ".&X[j]).j).X[j]).h> #define MAX 5 main() { int X[MAX]. int j. scanf("%d". #include<stdio. } printf("Menampilkan nilai : \n"). Penjelasan: Contoh diatas merupakan pendeklarasian array dengan nama X sebanyak 10 elemen data yang bertipe int.j++) { printf("X[%d] = ". Dalam bahasa C indeks array selalu dimulai dari angka 0 bukan 1. Nilai ke-1 Alamat ke-1 0 Nilai ke-2 Alamat ke-2 1 … … … Nilai ke-N Alamat ke-N N-1 Nilai elemen array Alamat elemen array Untuk mendeklarasikan suatu Indeks elemen array array satu dimensi dalam bahasa C adalah menggunakan tanda [ ] (bracket). Untuk efisiensi program memasukkan nilai ke dalam elemen array umumnya dilakukan dengan menggunakan pengulangan. Setiap data yang terdapat dalam array tersebut menempati alamat memori yang berbeda disebut dengan elemen array. for(j=0. Contoh: for(j=0.j<MAX.

Int Z[5] = { 15.Bila dijalankan akan didapatkan output: Memasukkan nilai : X[0] = 15 X[1] = 25 X[2] = 35 X[4] = 45 X[5] = 55 Menampilkan nilai : X[0] = 15 X[1] = 25 X[2] = 35 X[4] = 45 X[5] = 55 11. 35. 25. yaitu 15. Y. kita melakukan inisialisasi terhadap kelima elemen array. 55} . 5. 35} . 35. Pada baris pertama (array X). 45.2 INISIALISASI ARRAY Sebagai contoh apabila kita memiliki tiga buah array dengan nama X. dan Z yang semuanya bertipe int dan kita akan melakukan inisialisasi terhadap elemenelemennnya. Int Y[5] = {15} . maka kita dapat menuliskannnya dengan cara sebagai berikut: Int X[5] = {15. 45 dan 55 sehingga array X dapat digambarkan sebagai berikut: 54 . 0.

j.15 X[0] 25 X[1] 35 X[2] 45 X[3] 55 X[4] Sedangkan pada baris kedua (aray Y).25.Z[j]). kita hanya akan melakukan inisialisasi terhadap elemen pertama saja (yaitu dengan nilai 15). int Y[5] = {10}. artinya elemen lainnya masih kosong sehingga dapat digabarkan sebagai berikut: 15 Y[0] 0 Y[1] 0 Y[2] 0 Y[3] 0 Y[4] Baris terakhir (array Z).55}. kita melakukan inisialisasi terhadap elemen ke-1 dan ke-3. sehingga kita harus menuliskannnya sebagai berikut: Int Z[5] = {15. yaitu dengan nilai 15 dan 35. 0. 35} .35}. Namun perlu diperhatikan disini bahwa kita juga harus mengisikan nilai 0 untuk elemen ke-2. int j.j.j<5. Apabila kita hanya menuliskan: Int Z[5] = {15. int Z[5] = {15.j++) { printf("X[%d] = %2d.0.Y[j]. } } 55 . Z[%d] = %2d\n". 25} .35. for(j=0. Y[%d] = %2d.X[j].j. Maka kompilator akan menganggap kita melakukan inisialisasi terhadap elemen ke-1 dan ke-2 (bukan elemen ke-3).45. Hal ini akan menyebabkan nilai dari array Z dapat digambarkan sebagai berikut: 15 Z[0] 0 Z[1] 35 Z[2] 0 Z[3] 0 Z[4] Contoh: #include<stdio.h> main() { int X[5] = {15.

X3=7. variabel X2 untuk menyimpan nilai 5 dan variabel X3 untuk nilai 7. maka dapat digunakan sebuah array.Bila dijalankan akan didapatkan output: X[0] = 15 X[1] = 25 X[2] = 35 X[3] = 45 X[4] = 25 Y[0] = 15 Y[1] = 0 Y[2] = 0 Y[3] = 0 Y[4] = 0 Z[0] = 15 Z[1] = 0 Z[2] = 35 Z[3] = 0 Z[4] = 0 11. yaitu X1 + X2 + X3. } Bila dijalankan akan didapatkan output: Total = 15 Contoh program diatas hanya digunakan untuk mengitung jumlah dari tiga buah variabel saja. total=X1+X2+X3.h> main() { int X1=5. X2=3. maka harus digunakan tiga buah variabel dengan nama-nama yang berbeda. Misalkan terdapat tiga buah nilai yaitu 8.3 BEDA ARRAY DENGAN VARIABEL BIASA Perbedaan utama antara array dengan variabel biasa adalah sebuah sebuah array dapat mempunyai sejumlah nilai. 5 dan 7. misalnya variabel X1 untuk menyimpan nilai 8. sedangkan sebuah variabel biasa hanya dihubungkan dengan sebuah nilai saja. #include<stdio. total=0. printf("Total = %d\n". Jika digunakan sebuah variabel untuk menyimpan nilai-nilai tersebut. Jika nilai-nilai ini akan dihubungkan dengan sebuah nama saja. Contoh: program yang akan menghiutng jumlah dari tiga buah nilai yang disimpan di tiga buah variabel.total). Bagaimana jika banyaknya variabel yang akan dihitung jumlahnya 1000 buah? Untuk kasus seperti ini akan menjadi tidak praktis jika digunakan 56 .

int j. scanf("%f%".j++) total=total+X[j]. printf("nilai ke-2 :").x3.rata_rata).&x2). float x1. printf("nilai ke-3 :"). 57 . scanf("%f%". } Bila dijalankan akan didapatkan output: Total = 15 LATIHAN!!! 1.&x1).j<3. float rata_rata. rata_rata=(x1+x2+x3+x4+x5)/5. printf("nilai ke-5 :"). Contoh: program yang akan menghasilkan output yang sama seperti program diatas tapi pada program ini kita aka menggunakan array. } printf("nilai rata-rata = %.2f\n". #include<stdio. for(j=0. scanf("%f%". teapi akan lebih praktis jika digunakan array untuk mewakili nilai-nilai tersebut. 1. Buat program untuk main() bebas! { Buat program untuk menghitung pangkat bilangan 1 sampai 10! 3.7}. scanf("%f%".&x5). printf("Total = %d\n".variabel.h> menampilkan 10 nilai mahasiswa dengan inputan nilai 2.x2.&x4). scanf("%f%". Buat dua program dengan menggunakan variabel biasa dan menggunakan array! #include<stdio. Buat program untuk menghitung nilai rata-rata dari 5 buah bilangan.h> main() { int X[3] = {5. Program yang menggunakan variabel biasa printf("nilai ke-1 :"). printf("nilai ke-4 :").x5.total).3. total=0.&x3).x4. JAWABAN!!! printf("masukkan nilai:\n").

jumlah += A[j]. printf("memasukkan nilai:\n"). int j. scanf("%f".j). for(j=0.2f\n".h> #define MAX 5 main() { float A[MAX].j<MAX.j++) { printf("A[%d] = ".Output: Masukkan nilai: Nilai ke-1: 10 Nilai ke-2: 20 Nilai ke-3: 30 Nilai ke-4: 40 Nilai ke-5: 50 Program yang menggunakan array #include<stdio.&A[j]). } Output: Memasukkan nilai: A[0] = 10 58 . } rata_rata = jumlah/MAX.rata_rata). printf("Nilai rata-rata =%.jumlah=0.rata_rata.

for(index=0.&nilai[index]).h> main() { int index. 3.A[1] = 20 A[3] = 30 A[4] = 40 A[5] = 50 Nilai rata-rata = 30.index++) { printf("%5. printf("input nilai 10 mahasiswa :\n ").index<10.00 2.index+1). } printf ("Nilai mahasiswa yang telah diinput\n").index++) { printf("Mahasiswa %i:". scanf("%i". for(index=0. #include <stdio.nilai[index]).0i". nilai[10].index<10.} Output: Input nilai 10 mahasiswa : Mahasiswa 1: 10 Mahasiswa 2: 20 Mahasiswa 3: 30 Mahasiswa 4: 40 } 59 . 3.

int i.Mahasiswa 5: 50 Mahasiswa 6: 60 Mahasiswa 7: 70 Mahasiswa 8: 80 Mahasiswa 9: 90 Mahasiswa 10: 100 3.square[i]).h> main() { int square[100]. square[i]=k*k.k. } return 0.i++) { k=i+1. #include<stdio.i<10.k. for(i=0. } Output: Pangkat dari 1 adalah 1 Pangkat dari 2 adalah 4 Pangkat dari 3 adalah 9 Pangkat dari 4 adalah 16 Pangkat dari 5 adalah 25 Pangkat dari 6 adalah 36 Pangkat dari 7 adalah 49 Pangkat dari 8 adalah 64 Pangkat dari 9 adalah 81 Pangkat dari 10 adalah 100 60 . printf("\nPangkat dari %d adalah %d ".

jika px adalah pointer dan x adalah variabel yang ditunjuk oleh px.1 Pendahuluan Pointer adalah suatu variabel yang menyimpan alamat dari suatu data. mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. dengan tipe dapat berupa sembarang tipe data. Sebagai contoh. Sebagai contoh. /*contoh2*/ Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int. maka &x 61 . yang bersifat unaray). sedangkan datanya sendiri berupa nilai yang ada pada lokasi memori 1000. Pada contoh kedua. dengan cara menempatkan operator di depan nama variabel.3 Mengatur Pointer Agar Menunjuk ke Variabel Lain Agar suatu pointer menunjuk ke variabel yang lain. 11. dapat digunakan operator & (operator alamat. 11. dan bukan menyimpan datanya sendiri.Modul 12 POINTER I 11. /* contoh1*/ char pch1. Sebagai contoh: int px.2 Pendeklarasian Variabel Pointer Variabel tipe pointer dideklarasikan dengan bentuk sebagai berikut: type *nama_variabel. maka px akan berisi 1000. maka jika px berada pada alamat memori awal 1000. pch2. sedangkan nama_variabel adalah nama dari variabel pointer. masing-masing variabel pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char. jika x dideklarasikan sebagai variabel bertipe int. Untuk menyatakan alamat dari suatu variabel.

Sebagai contoh jika y bertipe int.cpp */ /* Contoh pemakaian pointer */ /* -------------------------------. Adapun contoh pemberian alamat ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int) yaitu: Px = &x.h> main() { int x. Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x. Contoh pointer. Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x. /* --------------------------------. seperti program berikut memperlihatkan pemakaian variabel 62 .*/ /* File program : Pointer.4 Mengakses Isi Suatu Variabel Melalui Pointer Jika suatu variabel sudah ditunjuk oleh pointer. Pengaksesan contoh berikut: *px yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px”. 11.berarti “alamat dari variabel x”. maka sesudah dua pernyataan berikut: px = &x. ataupun melalui pointer (disebut pengaksesan langsung).y.*/ #include <stdio. maka variabel tersebut dapat diakses melalui variabel itu sendiri (disebut sebagai pengaksesan tak langsung). /* x dan y bertipe int */ int *px. /* px pointer yang menunjuk */ tak langsung dilakukan dengan menggunakan operator inderection berupa simbol * (bersifat unaray). y akan berisi nilai yang sesuai dengan nilai x. y = *px.

px = &x. px). 11. &x). printf("Nilai yang ditunjuk px = %d\n". Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float. x). y = *px. 11. printf("Isi px = %p\n".5 Tipe Variabel Pointer dan Tipe Obyek Yang Ditunjuk Antara tipe pointer (sesuai dengan pendeklarasian pointer) dan tipe obyek yang akan ditunjuk oleh pointer haruslah sejenis. y). /* y berisi nilai yang ditunjuk px */ printf("Alamat x = %p\n". } Contoh eksekusi: C> Pointer Alamat x = 5B87:2230 / 242F : 2226 Isi px = 5B87:2230 / 242F : 2226 Isi x = 87 Nilai yang ditunjuk px = 87 Nilai y = 87 Pada program di atas.6 Mengubah Isi Suatu Variabel Melalui Pointer Contoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung (yaitu melalui pointer). 63 . Suatu kesalahan akan terjadi jika misalnya pointer float digunakan untuk menunjuk data brtipe int. *px). printf("Isi x = %d\n". /* px berisi alamat dari x */ y = *px. printf("Nilai y = %d\n". Jika misalnya pointer pu dimaksudkan untuk menunjuk data bertipe int maka data yang akan ditunjuk oleh pointer pu juga harus bertipe int. dua pernyataan px = &x./* obyek bertipe int */ x = 87. sebenarnya dapat digantikan dengan sebuah pernyataan y = x.

*/ /* File program : Pointer2.6. d). Dengan demikian pd menunjuk ke variabel d.h> main() { float d. tidak akan sama dengan d = d + 10. /* ---------------------------------. Namun seandainya tidak ada instruksi Pd = &d. Digunakan untuk memberikan alamat dari d ke pd. *pd = *pd + 10.6 64 . Perintah di atas brarti “jumlahkan isi variabel yang ditunjuk oleh pd dengan 10 dan simpan hasilnya ke variabel tersebut”. d = 54. atau identik dengan pernyataan: d = d + 10. d). maka pernyataan: *pd = *pd + 10.*/ #include <stdio. printf("Isi d semula = %g\n". Perintah pd = &d.6. printf("Isi d kini = %g\n". Sedangkan pernyataan berikut: *pd = *pd + 10. digunakan untuk mengisikan nilai 54.Selanjutnya dengan ungkapan d = 54. (atau: *pd += 10.cpp */ /* Pengubahan isi pointer */ /* -------------------------------.6 secara langsung ke variabel d. } Contoh hasil eksekusi: C> Pointer2 Isi d semula = 54.) merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. *pd. pd = &d.

/* ------------------------------------------. 64 }. tgl_lahir[0]). sebab nama array tanpa tanda kurung menyatakan alamat awal dari array.Isi d kini = 64.7 Pointer dan Array Hubungan antara struktur data pointer dan array dalam C sangatlah erat. maka *ptgl dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array tgl_lahir. 6. printf("nilai dari tgl_lahir[0] = %d\n". int *ptgl. Instruksi di atas juga dapat ditulis menjadi: ptgl = tgl_lahir. Sesudah penugasan seperti di atas. Misalnya dalam suatu fungsi dideklarasikan: static int tgl_lahir[3] = { 01. dan int *ptgl. Kemudian diberikan pernyataan ptgl = &tgl_lahir[0]. maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol. } 65 .h> main() { static int tgl_lahir[] = {24.6 11. 1965 }. /* ptgl berisi alamat array */ printf("Nilai yang ditunjuk oleh ptgl = %d\n". *ptgl). 09. ptgl = tgl_lahir. sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer.*/ #include <stdio.*/ /* File program : Pointer3. Contoh berikut akan memberi gambaran tentang hubungan antara pointer dan array. Contoh di atas dapat dipahami melalui contoh program berikut ini.cpp */ /* Pointer yang menunjuk array */ /* ------------------------------------------.

maka *(pa + i) akan menyatakan elemen array dengan indeks sama dengan i. Cara lain dalam menampilkan isi suatu array yaitu dengan menaikkan isi variabel pointer dengan menggunakan operator ++. maka dapat digunakan perintah for(i=0. i<3. tgl_lahir[i]). Jika diimplementasikan dengan menggunakan pointer tgl_lahir[i] dapat digantikan menjadi *(ptgl + i) dengan terlebih dahulu mengatur ptgl agar menunjuk ke array tgl_lahir. Jika pa dideklarasikan 66 . Jadi *(pa + 0) identik dengan a[0] *(pa + 1) identik dengan a[1] *(pa + 2) identik dengan a[2] Ungkapan seperti pa + i memiliki arti “tambahkan nilai pa (berisi alamat) dengan i kali ukuran dari obyek yang ditunjuk oleh pa”. for (i=0. i<3. maka obyek dari pa adalah data int (berukuran 2 byte). Secara umum operasi pointer dapat diterangkan sebagai berikut: Misalkan a adalah suatu array. dan pa adalah pointer yang menunjuk array a. sehingga penulisan instruksi penampilan isi array tgl_lahir dapat diubah menjadi: ptgl = tgl_lahir.Contoh hasil eksekusi: C>Pointer3 Nilai yang ditunjuk oleh ptgl = 24 Nilai dari tgl_lahir[0] = 24 Jika ingin menampilkan seluruh elemen array tgl_lahir. i++0 printf(“%d “. i++) printf(“%d%. sebagai int *pa. *(ptgl + i)).

namun merupakan jenis khusus dari tipe array. yaitu 5 buah karakter untuk teks “Cheri” dan 1 karakter untuk karakter null. maka kita membutuhkan suatu array dengan 6 buah elemen.1 Pendahuluan String merupakan suatu kumpulan karakter yang terangkai secara bersamaan. Tipe string dapat digunakan sebagai konstanta. string bukan merupakan tipe data tersendiri.*(ptgl + i) dapat diganti menjadi ptgl++ Misalkan suatu instruksi: int *pa. dengan komposisi sebagai berikut: T E K N I K I N F O R M A T I K A Setiap karakter akan menempati memori sebesar 1 byte. Konstanta string seperti di atas disimpan dalam memori secara berurutan. MODUL 13 STRING 13. dan byte terakhir otomatis akan berisi karakter NULL. yang ditulis dengan diawali dan diakhiri tanda petik ganda. C h e r i \0 S[0] S[1] 67 . Hal ini artinya kita akan menempatkan 6 buah karakter. int a[3]. Dalam bahasa C. Untuk setiap pendeklarasian string kita juga harus mengalokasikan ruang untuk menempatkan karakter null tersebut. Contoh lain apabila kita ingin menyimpan teks “Cheri”. Misalnya:“ Teknik Informatika”. Dibawah ini gambar yang akan merepresentasikannya.

h> main() { char nama[15]. 13.nama_array). dengan bentuk umum pemakaiannya adalah: gets(nama_array). Jika menggunakan scanf( ).2 Variabel String Variabel string digunakan untuk menyimpan data string.h. Deklarasi di atas sebenarnya adalah deklarasi array bertipe char. Di depan nama array tidak perlu ada operator &(operator alamat). maka instruksinya akan menjadi: scanf(“%”.cpp */ /* Contoh memasukkan data string dari keyboard */ /* */ #include <stdio. Contoh diatas merupakan instruksi untuk mendeklarasikan variabel tipe string dengan panjang maksimal mengandung 15 karakter (termasuk karakter NuLL). karena nama array tanpa kurung siku sudah menyatakan alamat. data string masukan tidak bisa mengandung spasi.*/ /* File program : nama. Misalnya: char nama[15]. /* -------------------------------------------------------. printf("Nama anda: "). Untuk memasukkan data string ke dalam suatu variabel dapat dilakukan dengan menggunakan instruksi gets( ). --------------------------------------------------------- 68 . Prototipe gets( ) terdapat pada file stdio. Jika menggunakan statemen scanf( ).S[2] S[3] S[4] S[5] Pada gambar diatas elemen S[5] berisi karakter null yang menunjukkan bahwa string tersebut telah berakhir.

3 Inisialisasi String Suatu variabel string dapat diinisialisasi seperti halnya variabel array yang lain. Contoh diatas menyatakan bahwa variabel kota adalah variabel string dengan nilai awal berupa string “Yogyakarta”. ’a’. ’a’. maka sisa string (panjang string dikurangi ukuran array plus karakter NULL) akan ditempatkan ke lokasi sesudah bagian akhir array. Dalam hal ini tidak ada pengecekan terhadap batasan dari array yang merupakan argumennya. 13. ’o’. Sebagai contoh: char kota[ ] = {‘Y’. namun pada elemen terakhir harus berupa karakter NULL. ’t’.var_string). karena secara implisit akan disisipkan oleh kompiler. printf(“%s”. Bentuk inisialisasi yang lebih singkat adalah: char kota[ ] = “Yogyakarta”. gadisa aulia Selamat datang di informatika Pada program di atas. Jika string yang dimasukkan melebihi ukuran array. setelah deklarasi char nama[15]. maka komputer akan menyediakan ruang pada memori sebanyak 15 karakter. ’g’.nama). dapat digunakan salah satu dari pernyataan berikut: o o puts(var_string).gets(nama).\n". ’r’. %s. Informatika. Instruksi gets( ) akan membaca seluruh karakter yang diketik pada keyboard sampai tombol ENTER ditekan. ’\0’}. karakter NULL tidak perlu ditulis. Setelah pengguna memasukkan data nama : gadisa aulia. 13. Selamat datang di 69 . ’y’.4 Menampilkan isi variabel string ke layar Untuk menampilkan isi variabel string. maka otomatis setelah karakter terakhir akan diisi dengan karakter NULL. printf("Halo. Karena data yang dimasukkan kurang dari 15 karakter. Pada bentuk ini. ’a’. } Bila dijalankan akan didapatkan output: Nama anda : gadisa aulia Halo. maka data string yang dimasukkan akan diletakkan pada area memori yang sudah dipesan. ’k’.

'k'.'r'.'o'.5 Manipulasi String Dalam manipulasi string terdapat proses pencarian. penyalinan.'\0'}.*/ /* File program : kota. void bentuk2(void). 70 .'a'. pembandingan yang dilakukan terhadap string dan proses-proses yang lainnya.h> void bentuk1(void). Contoh program berikut ini akan menampilkan isi variabel kota.o printf(var_string).'a'. berdasarkan dua bentuk inisialisasi string. } Bila dijalankan akan didapatkan output: Yogyakarta Solo 13. bentuk2(). main() { bentuk1(). puts(kota).'g'.*/ #include <stdio. } void bentuk2(void) { char kota[] = "Solo".'a'. /* -------------------------------------------------. } void bentuk1(void) { char kota[]= {'Y'.cpp */ /* Contoh menampilkan data string ke layar */ /* -------------------------------------------------.'y'.'t'. puts(kota).

strcat(s1.s1).s1). s2. } Bila dijalankan akan didapatkan output: Pemograman menggunakan bahasa C 2. char s2[21] = "menggunakan bahasa C". namun disini kita diizinkan menentukan berapa banyak karakter (n) dari str2 yang digabungkan ke str1. yaitu fungsi strcat() dan strncat().h> #include <string. Contoh: #include <stdio. printf("%s". printf("%s". 11). Contoh: #include <stdio.h> main() { char s1[50] = "pemograman ". return 0. } 71 . strncat(s1.h> main() { char s1[50] = "pemograman". 1. return 0.5.13. Fungsi strcat() Fungsi strcat() akan menambahkan salinan dari string str2 ke bagian kahir string str2.h> #include <string.1 Menggabungkan String Bahasa C telah menyediakan dua buah fungsi yang berguna untuk melakukan penggabungan string. char s2[21] = "menggunakan bahasa c". s2). Fungsi strncat() Fungsi ini juga berguna untuk menambahkan string dari string str2 ke dalam str1.

Bila dijalankan akan didapatkan output: Pemograman menggunakan 13. printf("String pertama adalah : %s\n".h> #include<string. char String2[]="ABCDE".h> #include<string. printf("Panjang string Nama2 = %d\n". Contoh: #include<stdio. maka S=”ABCDE” di bahasa C merupakan hal yang tidak benar. Untuk bahasa yang lain.String1). Misalnya S adalah variabel yang sudah dideklarasikan sebagai tipe string. karena bahasa tersebut menyediakan operator pengerjaan untuk nilai string. String2). strlen(Nama2)). return 0.2 Menentukan Panjang String Fungsi pustaka strlen() dapat digunakan untuk menghasilkan panjang dari suatu string. printf("Panjang string Nama1 = %d\n". } .String2). strlen(Nama1)).5. } Bila dijalankan akan didapatkan output: Panjang string Nama1 = 12 Panjang string Nama2 = 6 13. char Nama2[7] = "Gadisa". strcpy(String1. Akan tetapi C tidak menyediakan operator pengerjaan untuk string. hal ini dimungkinkan. Contoh: #include<stdio.5. sehingga proses penyalinan atau mengerjakan suatu nilai string ke variabel string yang lain harus dilakukan dengan fungsi pustakan strcpy(). 72 printf("String kedua adalah : %s\n".h> main() { char String1[80].3 Menyalin String Untuk menyalin nilai suatu string ke string yang lainnya tidak dapat dilakukan seperti halnya di kompiler yang lainnya.h> main() { char *Nama1 = "Widya Astuti".

h> main() { char string[10].str1).4 Membandingkan Dua Nilai String Fungsi ini akan mengembalikan nilai bilangan bulat (integer) sebagai hasil perbandingan dua buah string.h> #include <string. } Bila dijalankan akan didapatkan output: Abcdefghi 13. return 0.Bila dijalankan akan didapatkan output: String pertama adalah : ABCDE String kedua adalah : ABCDE Contoh lain: #include <stdio.string). Adapun nilai yang akan dikembalikan dari perbandingan dua string diatas adalah seperti yang terdapat pada tabel berikut: Nilai < 0 (negatif) 0 > 0 (positif) Arti str1 lebih kecil dari str2 str1 sama dengan str2 str1 lebih besar dari str2 73 . char *str1 = "abcdefghi". strcpy(string.5. printf("%s\n".

Contoh: #include <stdio. dimana kita melakukan pencarian terhadap suatu string maupun karakter tertentu apakah terdapat dalam string lain atau tidak yaitu menggunakan fungsi pustaka strchr(). return 0.s1)). printf("nilai yang dikembalikan : %d\n". printf("Nilai kembalian : %s\n". printf("nilai yang dikembalikan : %i\n".karakter. } Bila dijalankan akan didapatkan output: Nilai yang dikembalikan : -1 Nilai yang dikembalikan : 0 Nilai yang dikembalikan : 1 13.h> main() { char *s1 = "Bahasa c". strcmp(s1. strcmp(s1.5 Melakukan Pencarian String Hal yang sering dilakukan dalam proses manipulasi string adalah suatu pencarian.karakter). Contoh: #include<stdio.(hasil .h> main() { char str[100] = "GADISA".5. char *s2 = "Bahasa c++". printf("nilai yang dikembalikan : %i\n".h> #include <string.str)). char *s3 = "Bahasa c". char *hasil. hasil = strchr(str. char karakter = 'D'.s3)). strcmp(s2. } 74 .s2)).hasil). printf("Karakter %c ditemukan pada indeks ke%d".h> #include<string.

17. kurang. 14. 24. 10. Buatlah program untuk mencari angka terbesar dari deretan angka berikut : 8. 20. 3. 24 dengan menggunakan fungsi! 2. Buatlah fungsi untuk No 1 & 2 dengan deretan angka bebas! 4. 4. 17 dengan menggunakan fungsi! 3. 5. Buatlah program untuk mencari angka terkecil dari deretan angka berikut : 3. 5.Modul 14 KISI – KISI UAS 1. 8. Buatlah program untuk menggabungkan kata “Universitas” dengan kata “Mercu Buana”! 75 . 27. 10. 11 dengan menggunakan array! 5. Buatkan program penjumlahan untuk menghitung matrik 2 x 2! 8. Buatlah program untuk menghitung nilai tambah. Buatkan program penjumlahan untuk menghitung matrik 3 x 2! 9. Buatlah program pencarian menggunakan array dengan 7 inputan denganoutput seperti dibawah ini! HARI[0] = SENIN HARI[1] = SELASA HARI[2] = RABU HARI[3] = KAMIS HARI[4] = JUMAT HARI[5] = SABTU HARI[6] = MINGGU Masukkan hari yang dicari : SABTU SABTU ditemukan dalam array yaitu pada hari ke-5 7. Buatlah program untuk mencari angka terbesar dan terkecil dari deretan angka berikut : 17. kali dan bagi dengan menggunakan fungsi! 6.

3. 5. 76 .10. Buatlah program menggunakan pointer array untuk menampilkan bilangan berikut: 17. 24. 20. 10. 8. 4. 11. 27.

Sign up to vote on this title
UsefulNot useful