modul bahasa c all modul

97
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 computer. 1

Upload: budi-saptyoso

Post on 02-Jul-2015

2.644 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Modul bahasa C ALL modul

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

Bahasa C hanya menyediakan sedikit kata-kata kunci, hanya terdapat 32 kata

kunci.

Proses executable program bahasa C lebih cepat

Dukungan pustaka yang banyak.

C adalah bahasa yang terstruktur

Bahasa C termasuk bahasa tingkat menengah

Kekurangan Bahasa C

Banyaknya Operator serta fleksibilitas penulisan program kadang-kadang

membingungkan pemakai.

Bagi pemula pada umumnya akan kesulitan menggunakan pointer

1

Page 2: Modul bahasa C ALL modul

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

File, terdiri dari :

(1) New, untuk memulai program baru

2

Page 3: Modul bahasa C ALL modul

(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

Debug, terdiri dari

(1) run, untuk menjalakan program

3

Page 4: Modul bahasa C ALL modul

(2) Stop over

(3) Target into

(4) Toggle breakpoint

(5) Dst

Tool, terdiri dari :

(1) Resource workshop

(2) Grep

(3) Winsight

(4) Winspector

(5) Key Map Compiler

Options, terdiri dari :

(1) Project….

(2) Target…

(3) Environment…

(4) dst

Window, terdiri dari :

(1) Cascade

(2) Tile horison

(3) Tile vertical

(4) dst

Help, terdiri dari

(1) Contens

(2) Keyword search

(3) Keybord

(4) dst

4. Penulisan Program Bahasa C

Program Bahasa C tidak mengenal aturan penulisan di kolom tertentu, jadi bisa

dimulai dari kolom manapun. Namun demikian, untuk mempermudah pembacaan

program dan untuk keperluan dokumentasi, sebaiknya penulisan bahasa C diatur

sedemikian rupa sehingga mudah dan enak dibaca.

Contoh penulisan Program Bahasa C yang baik dan yang kurang baik, lihat

pada listing 1.1 dan listing 1.2.

4

Page 5: Modul bahasa C ALL modul

#include “stdio.h”

void main()

{

printf(“Bahasa C\n”);

}

listing 1.1

#include “stdio.h”

void main() { printf(“Bahasa C”); }

listing 1.2

Kedua listing di atas bila dijalankan akan menghasilkan hasil yang sama berupa

tulisan “Bahasa C” di layar, namun dari segi penulisannya listing 1.1 tampaknya lebih

mudah dibaca dan lebih rapih dibanding dengan listing 1.2.

Modul 2

Struktur Dasar Bahasa C

1. Tipe Data

Tipe data merupakan bagian program yang paling penting karena tipe data

mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer. Misalnya saja

5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5

dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe

float maka akan menghasilkan nilai 2.5000000.

Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih

efisien dan efektif. Dalam bahasa C terdapat lima tipe data dasar, yaitu:

No Tipe Data Ukuran Range (jangkauan) Format Keterangan

1 char 1 byte -128 s/d 127 %c Karakter/string

2 int 2 byte - 32768 s/d 32767 %i, %d Integer/bilangan bulat

3 float 4 byte -3.4E-38 s/d 3.4E+38 %f Float/bilangan pecahan

4 double 8 byte -1.7E-308 s/d 1.7+308 %lf Pecahan presisi ganda

5 void 0 byte - - Tidak bertipe

5

Page 6: Modul bahasa C ALL modul

Listing 2.1 Contoh pendeklarasian tipe data

/* Contoh Program : */

#include "stdio.h"

#include "conio.h"

void main()

{ int x;

float y;

char z;

double w;

clrscr(); /* untuk membersihkan layar */

x = 10; /* variable x diisi dengan 10 */

y = 9.45; /* variable y diisi dengan 9.45 */

z = 'C'; /* variable z diisi dengan karakter "C" */

w = 3.45E+20; /* variable w diisi dengan 3.45E+20 */

printf("Nilai dari x adalah : %i\n", x);

printf("Nilai dari y adalah : %f\n", y);

printf("Nilai dari z adalah : %c\n", z);

printf("Nilai dari w adalah : %.2f\n", w);

getch();

}

2. Konstanta

Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program

berlangsung. Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih

dahulu di awal program. Konstanta dapat bernilai integer, pecahan, karakter dan

string.

Contoh konstanta : 50; 13; 3.14; 4.50005; ‘A’; ‘Bahasa C’. Selain itu, bahasa C juga

menyediakan beberapa karakter khusus yang disebut karakter escape, 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, baris yang sama (carriage return)

\v : tabulasi vertical

\0 : nilai kosong (null)

6

Page 7: Modul bahasa C ALL modul

\’ : karakter petik tunggal

\” : karakter petik ganda

\\ : karakter garis miring

3. Variable

Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai

tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu

tetap, nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. 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.

Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap

berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda,

Tidak boleh mengandung spasi.

Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah

(underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara

lain : $, ?, %, #, !, &, *, (, ), -, +, = dsb

Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.

Contoh penamaan variabel yang benar :

NIM, a, x, nama_mhs, f3098, f4, nilai, budi, dsb.

Contoh penamaan variable yang salah:

%nilai_mahasiswa, 80mahasiswa, rata-rata, ada spasi, penting!, dsb

4. Deklarasi

Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam

program. Identifier dapat berupa variable, konstanta dan fungsi.

4.1 Deklarasi Variabel

Bentuk umum pendeklarasian suatu variable adalah :

Nama_tipe nama_variabel;

Contoh :

int x; // Deklarasi x bertipe integer

char y, huruf, nim[10]; // Deklarasi variable bertipe char

float nilai; // Deklarasi variable bertipe float

7

Page 8: Modul bahasa C ALL modul

double beta; // Deklarasi variable bertipe double

int array[5][4]; // Deklarasi array bertipe integer

char *p; // Deklarasi pointer p bertipe char

4.2 Deklarasi Konstanta

Dalam bahasa C konstanta dideklarasikan menggunakan preprocessor #define.

Contohnya:

#define PHI 3.14

#define nim “0111500382”

#define nama “Sri Widhiyanti”

4.3 Deklarasi Fungsi

Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau

dipanggil di manapun di dalam program. Fungsi dalam bahasa C ada yang sudah

disediakan sebagai fungsi pustaka seperti printf(), scanf(), getch() dan untuk

menggunakannya tidak perlu dideklarasikan. Fungsi yang perlu dideklarasikan

terlebih dahulu adalah fungsi yang dibuat oleh programmer. Bentuk umum deklarasi

sebuah fungsi adalah:

Tipe_fungsi nama_fungsi(parameter_fungsi);

Contohnya:

float luas_lingkaran(int jari);

void tampil();

int tambah(int x, int y);

5. Operator

Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk

melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai

memberikan nilai ke suatu variabel, membandingkan dua buah nilai, dsb.

5.1 Operator Penugasan

Operator Penugasan (Assignment operator) dalam bahasa C berupa tanda sama

dengan (“=”).

Contoh :

nilai = 80;

A = x * y;

8

Page 9: Modul bahasa C ALL modul

Artinya: variable “nilai” diisi dengan 80 dan variable “A” diisi dengan hasil perkalian

antara x dan y.

5.2 Operator Aritmatika

Bahasa C menyediakan lima operator aritmatika, yaitu:

. * : untuk perkalian

. / : untuk pembagian

. % : untuk sisa pembagian (modulus)

. + : untuk pertambahan

. - : untuk pengurangan

Catatan: operator % digunakan untuk mencari sisa pembagian antara dua bilangan.

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

- 100 */

#include "stdio.h"

#include "conio.h"

void main()

{ int bil;

clrscr(); // untuk membersihkan layar

for (bil=1; bil<100; bil++)

{ if(bil % 2 == 0) //periksa apakah 'bil' genap

printf("%5.0i", bil);

}

getch();

}

/*Contoh program 3 */

#include "stdio.h"

#include "conio.h"

9

Page 10: Modul bahasa C ALL modul

void main()

{ clrscr(); // untuk membersihkan layar

printf("Nilai dari 9 + 4 = %i", 9 + 4); /* mencetak hasil 9 + 4 */

printf("\n");

printf("Nilai dari 9 - 4 = %i", 9 - 4); /* mencetak hasil 9 - 4 */

printf("\n");

printf("Nilai dari 9 * 4 = %i", 9 * 4); /* mencetak hasil 9 * 4 */

printf("\n");

printf("Nilai dari 9 / 4 = %i", 9 / 4); /* mencetak hasil 9 / 4 */

getch();

}

5.3 Operator Hubungan (Perbandingan)

Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah

operand (sebuah nilai atau variable. Operator hubungan dalam bahasa C:

5.3.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.4 Operator Logika

Jika operator hubungan membandingkan hubungan antara dua buah operand, maka

operator logikadigunakan untuk membandingkan logika hasil dari operator-operator

hubungan.

Operator logika ada tiga macam, yaitu :

. && : Logika AND (DAN)

. || : Logika OR (ATAU)

. ! : Logika NOT (INGKARAN)

5.5 Operator Bitwise

Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di

memori. Operator bitwise dalam bahasa C:

. << : Pergeseran bit ke kiri

10

Page 11: Modul bahasa C ALL modul

. >> : Pergeseran bit ke kanan

. & : Bitwise AND

. ^ : Bitwise XOR (exclusive OR)

. | : Bitwise OR

. ~ : Bitwise NOT

5.6 Operator Unary

Operator Unary merupakan operator yang hanya membutuhkan satu operand saja.

Dalam bahasa C terdapat beberapa operator unary, 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-- 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 -- jika diletakkan sebelum atau sesudah

operand terdapat perbedaan. Perhatikan contoh berikut:

/* Contoh Program 4 */

/* Perbedaan operator peningkatan ++ yang diletakkan di depan dan

dibelakang operand */

#include <stdio.h>

#include <conio.h>

void main()

{

int x, nilai;

clrscr();

x = 5;

nilai = ++x; /* berarti x = x + 1; nilai = x; */

printf("nilai = %d, x = %d\n", nilai, x);

nilai = x++; /* berarti nilai = x; nilai = x + 1; */

printf("nilai = %d, x = %d\n", nilai, x);

11

Page 12: Modul bahasa C ALL modul

getch();

}

/* Contoh Program 5 */

#include "stdio.h"

#include "conio.h"

void main()

{ int b, nilai;

clrscr(); // untuk membersihkan layar

b = 15;

nilai = --b; /* berarti b = b - 1; nilai = b; */

printf("nilai = %d, b = %d\n", nilai, b);

nilai = b--; /* berarti nilai = b; b = b + 1; */

printf("nilai = %d, b = %d\n", nilai, b);

getch();

}

6. Komentar Program

Komentar program hanya diperlukan untuk memudahkan pembacaan dan pemahaman

suatu program (untuk keperluan dokumentasi program). Dengan kata lain, 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. Komentar

program tidak akan ikut diproses dalam program (akan diabaikan).

Contoh program:

/* Contoh program 6 */

#include "stdio.h"

#include "conio.h"

void main()

{

clrscr(); /* Ini untuk membersihkan layar tampilan */

printf("Contoh Penggunaan Komentar"); //komentar tidak ikut diproses

getch(); /* Dan ini untuk menahan tampilan di layer */

}

MODUL III

12

Page 13: Modul bahasa C ALL modul

PERINTAH INPUT DAN OUTPUT

C++ menyediakan perintah output/input yang dapat digunakanuntuk mencetak

sesuatu hasil dari program atau mendapatkan sesuatu input dari keyboard. Operasi

yang dimaksudkan adalah printf dan scanf.

1. Perintah Output

Perintah ini digunakan untuk menampilkan hasil di dalam C++.

1.1 Printf

Digunakan untuk menampilkan hasil yang terformat dengan menggunakan format

spesification, seperti yang terlihat pada tabel 3.1

Tabel 3.1 Fungsi Printf

Fungsi Pustaka Keterangan

%d Untuk nilai integer

%c Untuk nilai char

%s Untuk nilai string

%f Untuk nilai floating point

%e Untuk nilai floating point dengan bentuk eksponential

%u Untuk nilai integer tak bertanda

%x Untuk nilai integer dalam bentuk hexadesimal

%p Untuk nilai pointer

1.2 Puts

Digunakan hanya untuk menampilkan nilai string.

Perhatikan contoh program berikut ini:

listing program 3.1 contoh penggunaan puts

/* Nama program : puts.cpp */

#include <stdio.h>

main ()

{

char *nama;

nama=”Lina Dewi”;

puts (nama);

13

Page 14: Modul bahasa C ALL modul

}

bila program dijalankan, maka akan didapatkan hasil:

Lina Dewi

1.3 Putchar

Digunakan hanya untuk menampilkan nilai karakter.

Perhatikan contoh program berikut ini:

listing program 3.2 contoh penggunaan putchar

/* Nama program : putchar.cpp */

#include <stdio.h>

main ()

{

char a;

a=’B’;

putchar (a);

putchar (‘\n’);

putchar (‘-’);

}

bila program dijalankan, maka akan didapatkan hasil:

B

-

1.4 Cout

Fungsi cout hampir sama dengan printf, puts, maupun putchar. Perpedaannya terletak

di:

1. Preprosesor

Jika menggunakan printf, puts, maupun putchar preprosesor yang digunakan

adalah #include <stdio.h>, sedangkan pada cout preprosesornya menggunakan

#include <iostream.h>.

2. Komentar

Pada printf, puts, maupun putchar komentar menggunakan simbol /* dan diakhiri

dengan */, sedangkan pada cout komentarnya menggunakan simbol //.

3. Ganti Baris

14

Page 15: Modul bahasa C ALL modul

Kalau printf, puts, maupun putchar ganti baris atau garis barunya menggunakan

simbol \n, sedangkan pada cout ganti baris atau garis barunya menggunakan

simbol \n atau endl.

2. Perintah Input

Perintah ini digunakan untuk memasukkan berbagai jenis data ke dalam keyboard.

2.1 Scanf

Digunakan untuk memasukkan berbagai jenis data melalui keyboard.

Perhatikan contoh program berikut ini:

listing program 3.3 contoh penggunaan scanf

/* Nama program : scanf.cpp */

#include <stdio.h>

main ()

{

int nilai, tugas;

printf (“Masukkan sebuah nilai:”); scanf(“%d”,&nilai);

printf (“Masukkan nilai tugas:”); scanf(“%d”,&tugas);

if (nilai>70 && tugas>=75)

printf(“Lulus\n”);

else

printf(“Tidak Lulus\n”);

}

2.2 Getch

Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER.

Bentuk umumnya adalah sebagai berikut:

Karakter=getch();

Getch membaca karakter tunggal yang dimasukkan lewat keyboard tetapi hasilnya

tidak ditampilkan melalui layar.

2.3 Getche

Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER.

Bentuk umumnya adalah sebagai berikut:

Karakter=getche();

15

Page 16: Modul bahasa C ALL modul

Getche membaca karakter tunggal yang dimasukkan lewat keyboard dan hasilnya

akan ditampilkan pada layar.

2.4 Cin

Fungsi cin ini berpasangan dengan fungsi cout, dimana fungsi cin adalah untuk

memasukkan nilai variabel ke dalam program melalui keyboard.

Perhatikan contoh program berikut ini:

listing program 3.4 contoh penggunaan cin

/* ---------------------------------*//* Program : cin.cpp *//* ---------------------------------*/#include <iostream.h>main(){ int kali, bil1, bil2; float luas, keliling; cout << "Masukan bilangan pertama:"; cin >> bil1; cout << "\n”; cout << "Masukan bilangan kedua:"; cin >> bil2; kali=bil1*bil2; cout << "\n”; cout << "Hasil perkalian " << bil1 << ” dan “ << bil2 << “ adalah “ << kali << endl;}

Contoh soal dan jawaban

1. Buatlah program untuk menghitung luas dan keliling empat persegi panjang.

Adapun rumus luas dari empat persegi panjang adalah Luas=panjang*lebar,

sedangkan keliling empat persegi panjang adalah Keliling=2*(panjang+lebar).

Panjang dan lebar dimasukkan melalui scanf.

Jawaban

/* ---------------------------------*//* Program : soal1.cpp *//* ---------------------------------*/#include <stdio.h>main(){ int panjang,lebar,luas, keliling; printf ("masukan panjang:"); scanf("%d",&panjang); printf ("masukan lebar:"); scanf("%d",&lebar); luas=panjang*lebar; keliling=2*(panjang+lebar); printf ("Jadi luasnya adalah : %d\n",luas);

16

Page 17: Modul bahasa C ALL modul

printf ("Jadi keliling adalah : %d\n",keliling);}

2. Buatlah program menghitung luas dan keliling lingkaran. Adapun rumus luas

lingkaran adalah Luas=phi*r*r, sedangkan keliling lingkaran adalah

Keliling=2*phi*r. Catatan r adalah jari-jari dan phi = 3.141593. Jari-jari

dimasukkan kedalam scanf.

Jawaban

/* ---------------------------------*//* Program : soal2.cpp *//* ---------------------------------*/#include <stdio.h>main(){ int jari; float luas, keliling; printf ("masukan jari-jari:"); scanf("%d",&jari); luas=3.141593*jari*jari; keliling=2*3.141593*jari; printf ("Jadi luasnya adalah : %f\n",luas); printf ("Jadi keliling adalah : %f\n",keliling);}

Latihan:

1. Buatlah program untuk menghitung luas dan volume balok. Adapun rumus dari

luas balok adalah Luas=(2*p*l)+(2*p*t)+(2*l*t), sedangkan volume balok adalah

Volume=p*l*t. Catatan p adalah panjang, l adalah lebar, dan t adalah tinggi.

Masukkan panjang, lebar, dan tinggi melalui scanf.

2. Buatlah program untuk menghitung nilai mata uang dalam bentuk dollar, yen, dan

peso. Adapun inputannya adalah nilai rupiah, dengan rumus:

Dollar=rupiah/8250

Yen=rupiah/4000

Peso=rupiah/2500

Rupiah dimasukkan ke dalam scanf.

Modul 4

17

Page 18: Modul bahasa C ALL modul

DECISION I

(PENYELESAIAN KONDISI )

Decision digunakan untuk memilih salah satu alternatif jawaban yang tepat dari

pilihan yang ada. Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang

mengatur jalannya air. Bila katup terbuka maka air akan mengalir dan sebaliknya bila

katup tertutup air tidak akan mengalir atau akan mengalir melalui tempat lain. Fungsi

penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk

program yang kompleks.

1. STRUKTUR KONDISI “IF….”

Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu

kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka

pernyataan yang ada di dalam blok if akan diproses dan dikerjakan. Bentuk umum

struktur kondisi if adalah:

if(kondisi)

pernyataan;

Contoh Program 1:

/* Program struktur kondisi if untuk memeriksa suatu kondisi */

#include “stdio.h”

#include “conio.h”

void main()

{

float nilai;

printf(“Masukan nilai yang didapat : “);

scanf(“%f”, &nilai);

if(nilai > 65)

printf(“\n ANDA LULUS !!!!\n”);

getch();

}

Bila program tersebut dijalankan dan kita memasukan nilai 80, maka perintah

mencetak perkataan LULUS !!!! akan dilaksanakan, namun sebaliknya bila kita

memasukan sebuah nilai yang kurang dari 65 maka program akan berhenti dan tidak

dihasilkan apa-apa.

18

Page 19: Modul bahasa C ALL modul

Contoh Program 2 :

/* Program contoh penerapan struktur kondisi if */

#include"stdio.h"

#include"conio.h"

void main()

{ clrscr();

int a,b,c,max;

printf("Entry bil 1 : ");scanf("%i",&a);

printf("Entry bil 2 : ");scanf("%i",&b);

printf("Entry bil 3 : ");scanf("%i",&c);

if((a>b)&&(a>c))

max=a;

if((b>a)&&(b>c))

max=b;

if((c>a)&&(c>b))

max=c;

printf("Bil terbesar : %i\n",max);

if(max>0)

printf("Bil tsb adalah bil positif\n");

if(max<0)

printf("Bil tsb adalah bil negatif");

getch();

}

2. STRUKTUR KONDISI “IF......ELSE….”

Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. 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. Bentuk umumnya adalah sebagai berikut:

if(kondisi)

pernyataan-1

else

pernyataan-2

Contoh Program 3:

#include “stdio.h”

#include “conio.h”

19

Page 20: Modul bahasa C ALL modul

void main()

{

float nilai;

clrscr();

printf(“Masukan nilai yang didapat : “);

scanf(“%f”, &nilai); /* Masukan akan disimpan dalam variable nilai */

if (nilai > 65)

printf(“\n LULUS !!!\n”);

else

printf(“\n TIDAK LULUS !!!\n”);

getch();

}

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 !!!”. Hal ini berbeda dengan struktur if

dimana program akan berhenti bila kita memasukan nilai kurang dari 65.

3. STRUKTUR KONDISI IF DALAM IF

Perintah IF dalam IF sering disebut nested-if. Perintah ini mempunyai bentuk umum

sebagai berikut:

If (kondisi1)

If (kondisi2)

Pernyataan1;

Else

Pernyataan2;

Else

Pernyataan3;

Pernyataan If dalam if juga mempunyai bentuk yang majemuk yang sering disebut if

bertingkat. Bentuk umumnya adalah sebagai berikut:

If (kondisi1)

Pernyataan1;

20

Page 21: Modul bahasa C ALL modul

Else if (kondisi2)

Pernyataan2;

Else if (kondisi3)

Pernyataan3;

...

else

pernyataann;

Dalam hal ini jika kondisi 1 benar maka pernyataan1 yang dikerjakan dan apabila

kondisi 1 tidak benar maka kondisi2 yang akan dilihat. Dan seterusnya, jika kondisi

diatasnya tidak benar maka kondisi yang terakhir yang akan dikerjakan.

Contoh program 4:

#include <stdio.h>

main()

{

int nilai;

char huruf;

printf (“Masukkan nilai:”);scanf(“%d”,&nilai);

if (nilai>=81 && nilai<=100)

huruf=’A’;

else

if (nilai>=71 && nilai<=81)

huruf=’B’;

else

if (nilai>=61 && nilai<=71)

huruf=’C’;

else

if (nilai>=51 && nilai<=61)

huruf=’D’;

else

huruf=’E’;

printf (“Jadi nilai huruf yang didapat adalah: %c\n”,huruf);

}

4. PERINTAH SWITCH

21

Page 22: Modul bahasa C ALL modul

Perintah SWITCH merupakan pernyataan yang dirancang untuk menangani

pengambilan keputusan yang melibatkan sejumlah pilihan alternatif yang diantaranya

untuk menggantikan pernyataan IF bertingkat.

Bentuk umumnya adalah sebagai berikut :

SWITCH (Ekspresi)

{

Case konstanta1 :

pernyataan1;

break;

Case konstanta2 :

pernyataan2;

break;

Case konstanta3 :

Pernyataan3;

break;

...

Case Konstantan :

Pernyataan ;

Break;

Default :

Pernyataann x ;

}

Ekspresi dapat berupa ungkapan yang bernilai integer atau bertipe karakter.

Setiap konstanta1, konstanta2, konstanta3, konstanta4 sampai dengan konstantan

dapat berupa konstanta integer atau konstanta karakter.

Setiap pernyataan1, pernyataan2, pernyataan3, pernyataan4 sampai pernytaannxdapat

berupa sebuah atau beberapa pernyataan.

Pengujian pada switch akan dimulai dari konstanta1. apabila nilainya cocok

dengan ekspresi maka pernyataan satu akan dijalankan.

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. Jika sampai pada pengujian akhir tidak

ada yang cocok maka default akan dijalankan.

Jika pernyataan break tidak diikutsertakan pada setiap case maka walaupun

konstantanya cocok denan ekspresi, maka setelah pernyataan pada case tersebut

22

Page 23: Modul bahasa C ALL modul

dikerjakan akan dilanjutkan pada case berikutnya sampai ditemui pernyataan break

pada akhir switch.

Program 5.1. Contoh program case

/*---------------------------------------------*//* program : case.cpp *//*--------------------------------------------*/#include <stdio.h>main ( ){

int kdhari ;printf (“ masukkan kode hari [1-7] : ”) ;scanf (“%d” , &kdhari) ;switch (kdhari)

{case 1 :

printf (“ senin ”);break;

case 2 :printf (“ selasa ”);break;

case 3 :printf (“ rabu ”);break;

case 4 :printf (“ kamis ”);break;

case 5 :printf (“ jum’at ”);break;

case 6 :printf (“ sabtu ”);break;

case 7 :printf (“ minggu ”);break;

default :Printf (“ Kode tidak ada “);

}}

Bila program di atas dijalankan maka hasilnya adalah sebagai berikut :

Masukkan kode hari [1 – 7 ] : 1

Senin

Penjelasan :

Dari program di atas, apabila dimasukkan kode hari = 1, maka sesuai kondisi yang

diterapkan di dalam program yaitu case 1, maka pernyataan pertama yang ada pada

case satu yaitu mencetak hari senin. Apabila dimasukkan kode hari = 2, maka

pernyataan kedua yang ada pada case 2 yaitu mencetak hari Selasa yang akan

dikerjakan. Dan seterusnya tergantung dari kode hari yang dimasukkan.

23

Page 24: Modul bahasa C ALL modul

MODUL 5

PERULANGAN (LOOPING)

Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses yang

berulangulang sebanyak keinginan kita. Misalnya saja, bila kita ingin menginput dan

mencetak bilangan dari 1 sampai 100 bahkan 1000, tentunya kita akan merasa

kesulitan. Namun dengan struktur perulangan proses, kita tidak perlu menuliskan

perintah sampai 100 atau 1000 kali, cukup dengan beberapa perintah saja. Struktur

perulangan dalam bahasa C mempunyai bentuk yang bermacam-macam.

STRUKTUR PERULANGAN “ WHILE”

Perulangan WHILE banyak digunakan pada program yang terstruktur. Perulangan ini

banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan

akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila

kondisinya bernilai salah.

Contoh Program 1 :

/* Program Perulangan menggunakan while */#include “stdio.h”#include “conio.h”void main(){ int x;x = 1; /* awal variabel */while (x <= 10) /* Batas akhir perulangan */{ printf(“%d BAHASA C\n”, x);x ++; /* variabel x ditambah dengan 1 */}getch();}

24

Page 25: Modul bahasa C ALL modul

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, proses atau perintah mencetak kata-kata “BAHASA C”

akan terus dilakukan selama variabel x masih kurang atau sama dengan 10. Setiap kali

melakukan perulangan, nilai dari variabel x akan bertambah 1.

Contoh Program 2 :

/* Program mencetak deret bilangan dengan menggunakan while */#include"stdio.h"#include"conio.h"void main(){ clrscr();int i=1,x;while(i<=5){ x=1;while(x<=i){ printf("%i",x);x=x+1;}printf("\n");i=i+1;}getch();}

Contoh program 3 :

#include <iostream.h>#include <stdio.h>

25

Page 26: Modul bahasa C ALL modul

void main(){

int i = 0;

while (i != 99) {printf ("\n Masukkan Sebuah Bilangan : "); scanf("%d",&i);printf ("\n Bilangan Anda adalah= %d",i);}

}

STRUKTUR PERULANGAN “DO.....WHILE…”

Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya

saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di

atas sementara pada perulangan do....while, seleksi while berada di bawah batas

perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan

terjadi satu kali perulangan.

Contoh Program 4 :

#include “stdio.h”#include “conio.h”void main(){ int x;x = 1;do{ printf(“%d BAHASA C\n”, x);x ++;}while(x <= 10);getch();

}

STRUKTUR PERULANGAN “FOR”

Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah

diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for

tampaknya lebih efisien karena susunannya lebih simpel dan sederhana. Bentuk

umum perulangan for adalah sebagai berikut:

for(inisialisasi; syarat; penambahan)

pernyataan;

Keterangan :

Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol.

26

Page 27: Modul bahasa C ALL modul

syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan.

penambahan : pengatur perubahan nilai variabel kontrol.

Contoh Program 5 :

/* Program perulangan menggunakan for */#include “stdio.h”#include “conio.h”void main(){ int x;for(x = 1; x<= 10; x++){ printf(“%d BAHASA C\n”, x); }getch();}

Contoh Program 6 :

/* Mencari total dan rata-rata sejumlah bilangan menggunakan for */#include"stdio.h"#include"conio.h"void main(){ clrscr();float r,i,x,t=0;int y;for(y=1; y<=3; y++)for(i=0; i<=2; i++){ printf("Entry bilangan %i : ",y);scanf("%f",&x);t=t+x;y=y+1;}printf("\n Total : %.2f",t);r=t/i;printf("\n Rata rata : %.2f",r);getch();}

MODUL 6

ARRAY (LARIK)

27

Page 28: Modul bahasa C ALL modul

Array merupakan kumpulan dari nilai-nilai data yang bertipe sama

dalam urutan tertentu yang menggunakan nama yang sama. Letak atau

posisi dari elemen array ditunjukkan oleh suatu index. Dilihat dari

dimensinya array dapat dibagi menjadi Array dimensi satu, array dimensi

dua dan array multi-dimensi.

1. ARRAY DIMENSI SATU

Setiap elemen array dapat diakses melalui indeks. Indeks array secara

default dimulai dari 0.

Deklarasi Array

Bentuk umum :

Tipe_array nama_array[ukuran];

Contoh :

Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4]

int Nilai[5];

70 80 82 60 75

Contoh Program 1 :

/*Program untuk menginput nilai mahasiswa ke dalam array satu dimensi*/#include <stdio.h>#include <conio.h>void main(){ int index, nilai[10];clrscr();/* input nilai mahasiswa */printf(“Input nilai 10 mahasiswa : “);for(index=0; index < 10; index++){ printf(“Mahasiswa %i : “, index+1);scanf(“%i”, &nilai[index]);}/* tampilkan nilai mahasiswa */printf(“Nilai mahasiswa yang telah diinput”);for(index=0; index < 10; index++){ printf(“%5.0i”, nilai[index]);}getch();}

CATATAN :

String juga sebenarnya merupakan array yang bertipe karakter. Jumlah

elemen array

menyatakan jumlah string.

Contoh Program 2 :

/*Program u/ menentukan jurusan & jenjang mahasiswa berdasarkan NIM*/#include <stdio.h>#include <conio.h>

28

Page 29: Modul bahasa C ALL modul

#include <string.h>void main(){ char jurusan[25], jenjang[10], nim[10], nama[20];printf(“Masukkan nama Anda : “); gets(nama);printf(“Masukkan NIM Anda : “); gets(nim);/***** cari jurusan *****/switch(nim[2]){ case ‘1’ : strcpy(jurusan, “Teknik Informatika”);break;case ‘2’ : strcpy(jurusan, “Sistem Informasi”);break;case ‘3’ : strcpy(jurusan, “Teknik Industri”);break;case ‘4’ : strcpy(jurusan, “Teknik Elektro”);break;default : printf(“Anda salah memasukkan NIM. Coba periksa lagi !”);break;}/***** cari jenjang *****/if(nim[4] == ‘5’){ strcpy(jenjang, “Strata-1”);}else{ if(nim[4] == ‘3’){ strcpy(jenjang,”Diploma-3”);}elseprintf(“ANda salah memasukkan NIM. Coba periksa lagi !”);}/***** tampilkan data mahasiswa *****/printf(“ << Data Mahasiswa Universitas Mercu Buana >>“);printf(“\n Nama : %s”, nama);printf(“\n NIM : %s”, nim);printf(“\n Jurusan : %s”, jurusan);printf(“\n Jenjang : %s”, jenjang);getch();}

2. ARRAY DIMENSI DUA

Array dua dimensi merupakan array yang terdiri dari m buah baris dan n

buah kolom.

Bentuknya dapat berupa matriks atau tabel.

Deklarasi array :

Tipe_array nama_array[baris][kolom];

Contoh :

Int X[3][4];

X[0][0] X[0][1] X[0][2] X[0][3]

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 :

29

Page 30: Modul bahasa C ALL modul

Untuk mengakses array, misalnya kita ingin mengisi elemen array baris 2

kolom 3 dengan 10 maka perintahnya adalah sbb:

X[1][2] = 10;

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.h"void main(){ int A[3][4], B[3][4], X[3][4], Y[3][4], C[3][4], i, j;clrscr();/******* Masukkan matriks A *******/for(i=0;i<3;i++){ for(j=0;j<4;j++){ printf("input data matrik A[%i][%i] : ",i+1,j+1);fflush(stdin);scanf("%i",&A[i][j]);}}/******** Masukkan matriks B ********/for(i=0;i<3;i++){ for(j=0;j<4;j++){ printf("input data matrik B[%i][%i] : ",i+1,j+1);fflush(stdin);scanf("%i",&B[i][j]);}}/******** Proses penjumlahan matriks A dan B ********/for(i=0;i<3;i++){ for(j=0;j<4;j++){ X[i][j]=A[i][j]+B[i][j];}}/******** Cetak isi matriks A ********/printf("\n matrik A\n");for(i=0;i<3;i++){ for(j=0;j<4;j++)printf("%6i",A[i][j]);printf("\n");}printf("\n");/******** Cetak isi matriks B *******/printf("\n matrik B\n");for(i=0;i<3;i++){ for(j=0;j<4;j++)printf("%6i",B[i][j]);printf("\n");}printf("\n");/******** Cetak hasil penjumlahan matriks A dan B *******/printf("\n matrik penjumlahan A+B\n");for(i=0;i<3;i++){ for(j=0;j<4;j++)printf("%6i",X[i][j]);printf("\n");

30

Page 31: Modul bahasa C ALL modul

}printf("\n\n");getch();}

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>#include <conio.h>void main(){ float p[20], a[20][20], t;int m, i, j, k, x;clrscr();printf("\nMasukkan ukuran matriks : \n");scanf("%d", &m);printf("\nMasukkan nilai elemen matriks yang akan diinvers”);printf(“\nsecara baris per baris\n");/* Membaca matriks asli */for(i=1; i<=m; i++){ printf("\n");for(j=1; j<=m; j++){ printf("A(%d,%d)= ",i, j);scanf("%f", &a[i][j]);}}/* Mencetak Matriks asli */printf("\nMatriks asli : ");for(i=1; i<=m; i++){ printf("\n");for(j=1; j<=m; j++)printf(" %.f", a[i][j]);}/* Proses inversi */for(i=1; i<=m; i++){ p[i] = a[i][j];a[i][j] = 1;for(j=1; j<=m; j++){ a[i][j] = a[i][j]/p[i];}for(k=1; k<=m; k++){ if(k != i){ t = a[k][i];a[k][i] = 0;for(x=1; x<=m; x++)a[k][x] = a[k][x] - a[i][x] * t;}}}/* Mencetak matriks hasil inversi*/printf("\n\nMatriks inversi : \n");for(i =1; i <=m; i++){ for(j=1; j<=m; j++)printf(" %.1f", a[i][j]);printf(" \n");}

31

Page 32: Modul bahasa C ALL modul

getch();}

3. ARRAY MULTI-DIMENSI

Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari

dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu

maupun array dimensi dua. Bentuk umumnya yaitu :

tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];

Contoh :

float X[2][4][3];X[0][0][0] X[0][0][1] X[0][0][2] X[1][0][0] X[1][0][1] X[1][0][2]X[0][1][0] X[0][1][1] X[0][1][2] X[1][1][0] X[1][1][1] X[1][1][2]X[0][2][0] X[0][2][1] X[0][2][2] X[1][2][0] X[1][2][1] X[1][2][2]X[0][3][0] X[0][3][1] X[0][3][2] X[1][3][0] X[1][3][1] X[1][3][2]

LATIHAN

1. Buatkan program penjumlahan untuk menghitung matrik 2 x 2!

2. Buatlah sebuah program untuk menginput, menghitung dan

mencetak

perkalian matriks 3 x 3!

Modul 8

FUNGSI

8.1 Pendahuluan

Fungsi merupakan bagian (blok) dari kode program yang

dirancang untuk melaksanakan tugas tertentu. Fungsi merupakan

bagian penting dalam pemrograman C, dengan tujuan:

Program menjadi terstruktur, sehingga mudah dipahami dan

mudah dikembangkan.

Dapat mengurangi pengulangan kode (duplikasi kode).

Tugas khusus yang dilakukan suatu fungsi dapat dilihat dari

beberapa fungsi standard, seperti misalnya:

getch( ), dengan tugas untuk membaca kode tombol papan ketik

yang ditekan.

32

Page 33: Modul bahasa C ALL modul

printf( ), dengan tugas untuk menampiolkan informasi atau data

ke layar.

Pada umumnya fungsi memerlukan masukan yang dinamakan

sebagai argumen atau parameter. Masukan ini selanjutnya diolah

oleh fungsi dan hasil keluarannya dapat berupa sebuah nilai

(disebut nilai keluaran fungsi atau nilai

balik fungsi). Bentuk umum sebuah fungsi adalah sebagai berikut:

Penentu_tipe nama_fungsi (daftar parameter)

Deklarasi parameter

{

tubuh fungsi

}

Penentu tipe digunakan untuk menentuka tipe keluaran fungsi, yang

dapat dilipih dari salah satu tipe data yang berlaku dalam C, seperti

char atau int. Jika penentu tipe tidak disebutkan , maka akan

dianggap sebagai int.

Sebuah fungsi dapat saja tidak mengandung parameter sama sekali,

bahkan tanpa deklarasi parameter. Contoh:

Nama fungsi

Tanpa argumen

Inisialisasi( ) tidak ada tanda titik-koma

{ awal fungsi

return(0); tubuh fungsi

} akhir fungsi

8.2 Memberi Nilai Akhir Fungsi

Sebuah fungsi dapat mempunyai nilai keluaran (seperti

diperlihatkan pada contoh di atas), dan di dalam tubuh fungsi

pernyataan yang diberikan ntuk memberikan nilai kahir fungsi dapat

berupa pernyataan return.

Contoh program berikut ini memperlihatkan penyusunan dan

penggunaan suatu fungsi.

/* ------------------------------------------- */

/* File program : fungsi.cpp */

/* Contoh pembuatan fungsi */

/* ------------------------------------------- */

33

Page 34: Modul bahasa C ALL modul

#include <stdio.h>

inisialisasi();

main()

{

int x, y;

x = inisialisasi();

printf("x = %d\n", x);

y = inisialisasi ();

printf("y = %d\n", y);

}

inisialisasi()

{

return(0);

}

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.

Bagi suatu fungsi, jika suatu pernyataan return dieksekusi,

maka eksekusi terhadap fungsi akan berakhir dan nilai pada

parameter return akabn menjadi keluaran fungsi. Untuk fungsi yang

tidak memiliki pernyataan return, maka tanda } akan digunakan

sebagai tanda akhir eksekusi fungsi).

Pada contoh berikut, fungsi digunakan untuk memperoleh nilai

minimum diantara dua nilai yang ada pada parameternya.

/* ---------------------------------------------------- */

/* File program : Minimum.cpp */

/* Contoh fungsi yang mengandung argumen */

/* ----------------------------------------------------- */

#include <stdio.h>

minimum(x,y)

int x,y;

{

if (x < y)

34

Page 35: Modul bahasa C ALL modul

return(x);

else

return(y);

}

main()

{

int a = 20;

int b = 44;

int hasil;

hasil = minimum(a,b);

printf("Nilai terkecil = %d\n", hasil);

printf("Nilai terkecil = %d\n", minimum(3,2));

}

contoh eksekusi:

C>Minimum

Nilai terkecil = 20

Nilai terkecil = 2

Fungsi pada program di atas mempunyai dua buah parameter

berupa x dan y. oleh karena itu fungsi juga mengandung bagian

untuk mendeklarasikan parameter, berupa :

int x, y;

Penentuan nilai keluaran fungsi dilakukan pada tubuh fungsi,

dengan pernyataan:

if (x < y)

return(x);

else

return(y);

Pernyataan di atas menyatakan:

Jika x < y, maka nilai keluaran fungsi adalah sebesar nilai x.

Untuk keadaan selainnya ( x > y), maka keluaran fungsi adalah

sebesar y.

Fungsi minimum() dipanggil dua kali. Yang pertama:

hasil = minimum(a,b);

Yang memberikan nilai terkecil diantara a dan b ke bariabel hasil.

Yang kedua dengan pernyataan:

printf("Nilai terkecil = %d\n", minimum(3,2));

berupa instruksi untuk menampilkan nilai terkecil antara 3 dan 2.

35

Page 36: Modul bahasa C ALL modul

8.3 Prototipe Fungsi

Dari kedua contoh program di atas, dapat dilihat bahwa penulisan

tubuh fungsi bisa pada awal program maupun pada akhir program.

Pada contoh program minimum.cpp, pendefinisian fungsi

dilakukan pada awal program sebelum pernyataan program

utama (main()). Model penulisan ini merupakan model klasik.

Pada program fungsi.cpp, pendefinisian fungsi dilakukan setelah

program utama, namun pada awal program (sebelum program

utama), harus dituliskan nama fungsi dan parameternya yang

diakhiri dengan tanda titik-koma.

Pendeklarasian fungsi seperti pada program fungsi.cpp dikenal

sebagai prototipe fungsi (function prototype).

Prototipe fungsi digunakan untuk menjelaskan kepada kompiler

mengenai:

Tipe keluaran fungsi Fungsi 75.

Jumlah parameter.

Tipe dari masing-masing parameter.

Bagi kompiler, informasi dalam prototipe akan digunakan untuk

memeriksa keabsahan (validitas) parameter dalam pemanggilan

fungsi. Salah satu keuntungan penggunaan prototipe, kompiler akan

melakukan konversi seandainya antara tipe parameter dalam

definisi dan parameter saat pemanggilan fungsi tidak sama, atau

akan menunjukkan kesalahan kalau jumlah parameter dalam

definisi dan saat pemanggilan berbeda.

/* ----------------------------------------- */

/* File program : Jumlah.cpp */

/* Contoh fungsi dengan prototipe */

/* ----------------------------------------- */

#include <stdio.h>

float jumlah(float x,float y);

main()

{

int a = 6;

int b = 3;

36

Page 37: Modul bahasa C ALL modul

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:

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.

37

Page 38: Modul bahasa C ALL modul

/* ------------------------------------------- */

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

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.

38

Page 39: Modul bahasa C ALL modul

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)

{

int z;

z = *px;

*px = *py;

*py = z;

printf("Nilai diakhir fungsi tukar()\n");

printf("*px = %d *py = %d\n\n",*px,*py);

39

Page 40: Modul bahasa C ALL modul

}

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.6 Penggolongan Variabel Berdasarkan Kelas Penyimpanan

Suatu variabel disamping dapat digolongkan berdasarkan

jenis/tipe data, juga dapat digolongkan berdasarkan kelas

penyimpanannya (storage class). Penggolongan berdasarkan kelas

penyimpanan berupa:

Variabel lokal

Variabel eksternal

Variabel statis

Variabel register

8.6.1 Varibel Lokal

Variabel lokal adalah variabel yang dideklarasikan dalam fungsi,

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.

Tidak ada inisialisasi secara otomatis (saat variabel diciptakan

nilainya tidak tentu (acak)).

Dalam banyak literatur, variabel lokal disebut juga dengan variabel

otomatis.

Penerapan variabel lokal yaitu jika variabel tersebut hanya

digunakan oleh suatu fungsi tertentu, dan tidak dimaksudkan untuk

digunakan oleh fungsi yang lain.

8.6.2 Variabel Eksternal

40

Page 41: Modul bahasa C ALL modul

Variabel eksternal merupakan variabel yang dideklarasikan di luar

fungsi, dan mempunyai sifat:

Dapat diakses oleh semua fungsi.

Jika tidak diberi nilai awal, secara otomatis diinisialisasi dengan

nilai sama dengan nol

Contoh penggunaan variabel eksternal diperlihatkan pada contoh

program Eksternal.cpp berikut ini:

/* --------------------------------------------- */

/* File program : Eksternal.cpp */

/* Penggunaan variabel eksternal */

/* --------------------------------------------- */

#include <stdio.h>

int i = 273; /* variabel eksternal */

void tambah (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();

printf("Nilai i kini = %d\n",i);

}

void tambah (void)

{

i++;

}

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,

dan tidak dideklarasikan lagi pada fungsi main() maupun tambah().

Jadi i merupakan variabel eksternal, sehingga dapat digunakan oleh

kedua fungsi yang ada pada program di atas. Satu hal yang perlu

41

Page 42: Modul bahasa C ALL modul

diingat, variabel eksternal harus dideklarasikan sebelum definisi

fungsi yang akan menggunakannya.

8.6.3 Variabel Statis

Variabel statis dapat berupa variabel internal (didefinisikan di dalam

fungsi) maupun variabel eksternal. Variabel statis mempunyai sifat:

Jika variabel statis bersifat internal, maka variabel hanya dikenal

oleh fungsi tempat variabel dideklarasikan.

Jika variabel statis bersifat eksternal, maka variabel dapat

digunakan oleh semua fungsi yang terletal 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 hanya dilakukan sekali, yaitu saat fungsi dipanggil

yang pertama kali. Jika tidak ada inisialisasi oleh pemrogram

maka secara otomatis akan diberi nilai awal nol.

Variabel statis diperoleh dengan menambahkan kata-kunci static di

depan penentu tipe-data variabel.

/* --------------------------------------------- */

/* File program : Statis.cpp */

/* Penggunaan variabel statis */

/* --------------------------------------------- */

#include <stdio.h>

void fungsi_y (void);

main()

{

int y = 20;

fungsi_y();

fungsi_y();

printf("Nilai y dalam main() = %d\n",y);

}

void fungsi_y(void)

{

static int y;

y++;

printf("Nilai y dalam fungsi_y() = %d\n",y);

42

Page 43: Modul bahasa C ALL modul

}

Contoh eksekusi:

C> Statis

Nilai y dalam fungsi_y() = 1

Nilai y dalam fungsi_y() = 2

Nilai y dalam main() = 20

8.6.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, yang

bertipe char atau int.

Variabel register biasa digunakan untuk variabel pengendali loop,

dengan tujuan untuk mempercepat proses dalam loop, karena

register mempunyai kecepatan yang jauh lebih tinggi dibanding

RAM.

Contoh pemakaian variabel register:

/* --------------------------------------------- */

/* File program : Var_reg.cpp */

/* Penggunaan variabel register */

/* --------------------------------------------- */

#include <stdio.h>

main()

{

register int i; /* variabel register */

int jumlah;

for (i=1; i<=100; i++)

jumlah++;

printf("1+2+ ... +100 = %d\n",jumlah);

}

Buatlah program yang sama tapi tidak menggunakan variabel

register, kemudian bandingkan kecepatan kedua program tersebut.

Jika belum terlihat perbedaannya, perbesar nilai batas loop,

misalnya sampai 10000.

43

Page 44: Modul bahasa C ALL modul

Contoh program berikut ini memperlihatkan perbedaan lama waktu

eksekusi antara program yang menggunakan variabel register

dengan yang tanpa variabel register.

/* --------------------------------------------- */

/* File program : tes_reg.cpp */

/* Penggunaan variabel register */

/* --------------------------------------------- */

#include <stdio.h>

#include <time.h>

main()

{

/* tanpa variabel register */

int i,j;

register int a,b; /* variabel register */

long waktu_awal;

waktu_awal = time('\0');

for (i=0; i<20000; i++)

for(j=0;j<20000;j++)

;

printf("Waktu total = %d detik\n",time('\0')- waktu_awal);

/* dengan variabel register */

waktu_awal = time('\0');

for (a=0; a<20000; a++)

for(b=0;b<20000;b++)

;

printf("Waktu total = %d detik\n",time('\0')- waktu_awal);

}

Contoh hasil eksekusi:

C>tes_reg

Waktu total = 7 detik

Waktu total = 3 detik

Modul 10

FUNGSI II

10.1 Fungsi Dengan Parameter

44

Page 45: Modul bahasa C ALL modul

Parameter adalah suatu variabel yang berfungsi untuk menampung nilai yang

akan dikirimkan ke dalam fungsi. Parameter itu sendiri terbagi dua macam, yaitu

parameter formal dan parameter aktual.

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

Untuk lebih memahaminya, perhatikan contoh pendefinisian fungsi dibawah ini:

Pada sintak di atas, variabel X dinamakan sebagai parameter formal. Sekarang

perhatikan sintak berikut:

Pada saat pemanggilan fungsi TambahSatu() di atas, variabel a dinamakan dengan

parameter aktual

10.2 Cara Melewatkan Parameter

Terdapat dua cara untuk melewatkan parameter ke dalam fungsi, yaitu dengan cara:

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

45

TambahSatu(int X)

{

Return ++X;

}

main(){

int a = 10, hasil;hasil = TambahSatu(a);return 0;

}

Page 46: Modul bahasa C ALL modul

/* ------------------------------------------- */

#include <stdio.h>

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

}

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 :

Nilai sebelum pemanggilan fungsi

a = 88 b = 77

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

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

46

Page 47: Modul bahasa C ALL modul

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>

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

}

tukar (int *px, int *py)

{

int z;

z = *px;

*px = *py;

*py = z;

printf("Nilai diakhir fungsi tukar()\n");

printf("*px = %d *py = %d\n\n",*px,*py);

}

Hasil eksekusi :

47

Page 48: Modul bahasa C ALL modul

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 Penggolongan Variabel Berdasarkan Kelas Penyimpanan

Suatu variabel disamping dapat digolongkan berdasarkan jenis/tipe data, juga

dapat digolongkan berdasarkan kelas penyimpanannya (storage class).

Penggolongan berdasarkan kelas penyimpanan berupa:

Variabel lokal

Variabel eksternal

Variabel statis

Variabel register

10.3.1 Varibel Lokal

Variabel lokal adalah variabel yang dideklarasikan dalam fungsi, yang mempunyai

sifat:

Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan hilang (dari

memori) ketika eksekusi terhadap fungsi berakhir.

Hanya dikenal oleh fungsi tempat variabel dideklarasikan.

Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya tidak tentu

(acak)).

Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis.

Penerapan variabel lokal yaitu jika variabel tersebut hanya digunakan oleh suatu

fungsi tertentu, dan tidak dimaksudkan untuk digunakan oleh fungsi yang lain.

10.3.2 Variabel Eksternal

Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi, dan

mempunyai sifat:

Dapat diakses oleh semua fungsi.

Jika tidak diberi nilai awal, secara otomatis diinisialisasi dengan nilai sama

dengan nol

Contoh penggunaan variabel eksternal diperlihatkan pada contoh program

Eksternal.cpp berikut ini:

48

Page 49: Modul bahasa C ALL modul

/* --------------------------------------------- */

/* File program : Eksternal.cpp */

/* Penggunaan variabel eksternal */

/* --------------------------------------------- */

#include <stdio.h>

int i = 273; /* variabel eksternal */

tambah ();

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

printf("Nilai i kini = %d\n",i);

}

tambah ()

{

i++;

}

Hasil eksekusi:

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, dan tidak

dideklarasikan lagi pada fungsi main() maupun tambah(). Jadi i merupakan variabel

eksternal, sehingga dapat digunakan oleh kedua fungsi yang ada pada program di

atas. Satu hal yang perlu diingat, variabel eksternal harus dideklarasikan sebelum

definisi fungsi yang akan menggunakannya.

10.3.3 Variabel Statis

Variabel statis dapat berupa variabel lokal (didefinisikan di dalam fungsi) maupun

variabel eksternal. Variabel statis mempunyai sifat:

49

Page 50: Modul bahasa C ALL modul

Jika variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi

tempat variabel dideklarasikan.

Jika variabel statis bersifat eksternal, maka variabel dapat digunakan oleh semua

fungsi yang terletal 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 hanya dilakukan sekali, yaitu saat fungsi dipanggil yang pertama kali.

Jika tidak ada inisialisasi oleh pemrogram maka secara otomatis akan diberi nilai

awal nol.

Variabel statis diperoleh dengan menambahkan kata-kunci static di depan penentu

tipe-data variabel.

/* --------------------------------------------- */

/* File program : Statis.cpp */

/* Penggunaan variabel statis */

/* --------------------------------------------- */

#include <stdio.h>

fungsi_y ();

main()

{

int y = 20;

fungsi_y();

fungsi_y();

printf("Nilai y dalam main() = %d\n",y);

}

fungsi_y()

{

static int y;

y++;

printf("Nilai y dalam fungsi_y() = %d\n",y);

}

Contoh eksekusi:

Nilai y dalam fungsi_y() = 1

Nilai y dalam fungsi_y() = 2

Nilai y dalam main() = 20

50

Page 51: Modul bahasa C ALL modul

10.3.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, yang bertipe char atau int.

Variabel register biasa digunakan untuk variabel pengendali loop, dengan tujuan

untuk mempercepat proses dalam loop, karena register mempunyai kecepatan yang

jauh lebih tinggi dibanding RAM.

Contoh pemakaian variabel register:

/* --------------------------------------------- */

/* File program : Var_reg.cpp */

/* Penggunaan variabel register */

/* --------------------------------------------- */

#include <stdio.h>

main()

{

register int i; /* variabel register */

int jumlah;

for (i=1; i<=100; i++)

jumlah++;

printf("1+2+ ... +100 = %d\n",jumlah);

}

Buatlah program yang sama tapi tidak menggunakan variabel register, kemudian

bandingkan kecepatan kedua program tersebut. Jika belum terlihat perbedaannya,

perbesar nilai batas loop, misalnya sampai 10000.

Contoh program berikut ini memperlihatkan perbedaan lama waktu eksekusi antara

program yang menggunakan variabel register dengan yang tanpa variabel register.

/* --------------------------------------------- */

/* File program : tes_reg.cpp */

/* Penggunaan variabel register */

/* --------------------------------------------- */

#include <stdio.h>

#include <time.h>

main()

{

/* tanpa variabel register */

int i,j;

51

Page 52: Modul bahasa C ALL modul

register int a,b; /* variabel register */

long waktu_awal;

waktu_awal = time('\0');

for (i=0; i<20000; i++)

for (j=0; j<20000;j++);

printf("Waktu total = %d detik\n",time('\0')- waktu_awal);

/* dengan variabel register */

waktu_awal = time('\0');

for (a=0; a<20000; a++)

for (b=0; b<20000; b++)

;

printf("Waktu total = %d detik\n",time('\0')- waktu_awal);

}

Contoh hasil eksekusi:

Waktu total = 7 detik

Waktu total = 3 detik

MODUL 11

ARRAY

11.1 DEFINISI ARRAY

Array adalah suatu variable yang merepresentasikan daftrar (list) atau

kumpulan data yang memiliki tipe data sama. Setiap data yang terdapat dalam array

tersebut menempati alamat memori yang berbeda disebut dengan elemen array.

Untuk mengakses nilai suatu elemen array, kita akan menggunakan indeks dari array

tersebut. Dalam bahasa C indeks array selalu dimulai dari angka 0 bukan 1.

Untuk mendeklarasikan suatu array satu dimensi dalam bahasa C adalah

menggunakan tanda [ ] (bracket).

Bentuk umum pendeklarasian array:

Nilai ke-1 Nilai ke-2 … Nilai ke-N

Alamat ke-1 Alamat ke-2 … Alamat ke-N

0 1 … N-1

52

Nilai elemen array

Alamat elemen array

Indeks elemen array

Page 53: Modul bahasa C ALL modul

Contoh: int X[10] ;

Penjelasan:

Contoh diatas merupakan pendeklarasian array dengan nama X sebanyak 10

elemen data yang bertipe int.

Untuk efisiensi program memasukkan nilai ke dalam elemen array umumnya

dilakukan dengan menggunakan pengulangan.

Contoh:

53

Tipe_data nama_array [banyak elemen] ;

#include<stdio.h>

#define MAX 5

main()

{

int X[MAX];

int j;

printf("Memasukkan nilai : \n");

for(j=0;j<MAX;j++)

{

printf("X[%d] = ",j);

scanf("%d",&X[j]);

}

printf("Menampilkan nilai : \n");

for(j=0;j<MAX;j++)

{

printf("X[%d] = %d\n ",j,X[j]);

}

}

Page 54: Modul bahasa C ALL modul

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.2 INISIALISASI ARRAY

Sebagai contoh apabila kita memiliki tiga buah array dengan nama X, Y, dan

Z yang semuanya bertipe int dan kita akan melakukan inisialisasi terhadap elemen-

elemennnya, maka kita dapat menuliskannnya dengan cara sebagai berikut:

Int X[5] = {15, 5, 35, 45, 55} ;

Int Y[5] = {15} ;

Int Z[5] = { 15, 0, 35} ;

Pada baris pertama (array X), kita melakukan inisialisasi terhadap kelima elemen

array, yaitu 15, 25, 35, 45 dan 55 sehingga array X dapat digambarkan sebagai

berikut:

15 25 35 45 55

X[0] X[1] X[2] X[3] X[4]

Sedangkan pada baris kedua (aray Y), kita hanya akan melakukan inisialisasi

terhadap elemen pertama saja (yaitu dengan nilai 15), artinya elemen lainnya masih

kosong sehingga dapat digabarkan sebagai berikut:

15 0 0 0 0

Y[0] Y[1] Y[2] Y[3] Y[4]

54

Page 55: Modul bahasa C ALL modul

Baris terakhir (array Z), kita melakukan inisialisasi terhadap elemen ke-1 dan ke-3,

yaitu dengan nilai 15 dan 35. Namun perlu diperhatikan disini bahwa kita juga harus

mengisikan nilai 0 untuk elemen ke-2. Apabila kita hanya menuliskan:

Int Z[5] = {15, 25} ;

Maka kompilator akan menganggap kita melakukan inisialisasi terhadap elemen ke-1

dan ke-2 (bukan elemen ke-3), sehingga kita harus menuliskannnya sebagai berikut:

Int Z[5] = {15, 0, 35} ;

Hal ini akan menyebabkan nilai dari array Z dapat digambarkan sebagai berikut:

15 0 35 0 0

Z[0] Z[1] Z[2] Z[3] Z[4]

Contoh:

Bila dijalankan akan didapatkan output:

X[0] = 15 Y[0] = 15 Z[0] = 15

X[1] = 25 Y[1] = 0 Z[1] = 0

X[2] = 35 Y[2] = 0 Z[2] = 35

X[3] = 45 Y[3] = 0 Z[3] = 0

X[4] = 25 Y[4] = 0 Z[4] = 0

55

#include<stdio.h>

main()

{

int X[5] = {15,25,35,45,55};

int Y[5] = {10};

int Z[5] = {15,0,35};

int j;

for(j=0;j<5;j++)

{

printf("X[%d] = %2d, Y[%d] = %2d, Z[%d] = %2d\

n",j,X[j],j,Y[j],j,Z[j]);

}

}

Page 56: Modul bahasa C ALL modul

11.3 BEDA ARRAY DENGAN VARIABEL BIASA

Perbedaan utama antara array dengan variabel biasa adalah sebuah sebuah

array dapat mempunyai sejumlah nilai, sedangkan sebuah variabel biasa hanya

dihubungkan dengan sebuah nilai saja. Misalkan terdapat tiga buah nilai yaitu 8, 5

dan 7. Jika nilai-nilai ini akan dihubungkan dengan sebuah nama saja, maka dapat

digunakan sebuah array. Jika digunakan sebuah variabel untuk menyimpan nilai-nilai

tersebut, maka harus digunakan tiga buah variabel dengan nama-nama yang

berbeda, misalnya variabel X1 untuk menyimpan nilai 8, variabel X2 untuk

menyimpan nilai 5 dan variabel X3 untuk nilai 7.

Contoh: program yang akan menghiutng jumlah dari tiga buah nilai yang disimpan di

tiga buah variabel, yaitu X1 + X2 + X3.

Bila dijalankan akan didapatkan output:

Total = 15

Contoh program diatas hanya digunakan untuk mengitung jumlah dari tiga buah

variabel saja. Bagaimana jika banyaknya variabel yang akan dihitung jumlahnya

1000 buah? Untuk kasus seperti ini akan menjadi tidak praktis jika digunakan

variabel, teapi akan lebih praktis jika digunakan array untuk mewakili nilai-nilai

tersebut.

Contoh: program yang akan menghasilkan output yang sama seperti program diatas

tapi pada program ini kita aka menggunakan array.

56

#include<stdio.h>

main()

{

int X1=5, X2=3, X3=7, total=0;

total=X1+X2+X3;

printf("Total = %d\n",total);

}

#include<stdio.h>

main()

{

int X[3] = {5,3,7}, total=0;

int j;

for(j=0;j<3;j++)

total=total+X[j];

printf("Total = %d\n",total);

}

Page 57: Modul bahasa C ALL modul

Bila dijalankan akan didapatkan output:

Total = 15

LATIHAN!!!

1. Buat program untuk menghitung nilai rata-rata dari 5 buah bilangan. Buat dua

program dengan menggunakan variabel biasa dan menggunakan array!

2. Buat program untuk menampilkan 10 nilai mahasiswa dengan inputan nilai

bebas!

3. Buat program untuk menghitung pangkat bilangan 1 sampai 10!

JAWABAN!!!

1. Program yang menggunakan variabel biasa

57

#include<stdio.h>

main()

{

float x1,x2,x3,x4,x5;

float rata_rata;

printf("masukkan nilai:\n");

printf("nilai ke-1 :");

scanf("%f%",&x1);

printf("nilai ke-2 :");

scanf("%f%",&x2);

printf("nilai ke-3 :");

scanf("%f%",&x3);

printf("nilai ke-4 :");

scanf("%f%",&x4);

printf("nilai ke-5 :");

scanf("%f%",&x5);

rata_rata=(x1+x2+x3+x4+x5)/5;

printf("nilai rata-rata = %.2f\n",rata_rata);

}

Page 58: Modul bahasa C ALL modul

Output:

Masukkan nilai:Nilai ke-1: 10Nilai ke-2: 20Nilai ke-3: 30Nilai ke-4: 40Nilai ke-5: 50

Program yang menggunakan array

Output:

Memasukkan nilai:

A[0] = 10

A[1] = 20

A[3] = 30

A[4] = 40

A[5] = 50

Nilai rata-rata = 30.00

58

#include<stdio.h>

#define MAX 5

main()

{

float A[MAX],jumlah=0,rata_rata;

int j;

printf("memasukkan nilai:\n");

for(j=0;j<MAX;j++)

{

printf("A[%d] = ",j);

scanf("%f",&A[j]);

jumlah += A[j];

}

rata_rata = jumlah/MAX;

printf("Nilai rata-rata =%.2f\n",rata_rata);

}

Page 59: Modul bahasa C ALL modul

2.

3.

3.

Output:

Input nilai 10 mahasiswa :

Mahasiswa 1: 10

Mahasiswa 2: 20

Mahasiswa 3: 30

Mahasiswa 4: 40

Mahasiswa 5: 50

Mahasiswa 6: 60

Mahasiswa 7: 70

Mahasiswa 8: 80

Mahasiswa 9: 90

Mahasiswa 10: 100

3.

59

#include <stdio.h>

main()

{

int index, nilai[10];

printf("input nilai 10 mahasiswa :\n ");

for(index=0;index<10;index++)

{

printf("Mahasiswa %i:",index+1);

scanf("%i",&nilai[index]);

}

printf ("Nilai mahasiswa yang telah diinput\n");

for(index=0;index<10;index++)

{

printf("%5.0i",nilai[index]);

}

}

#include<stdio.h>

main()

{

int square[100];

int i,k;

for(i=0;i<10;i++)

{

k=i+1;

square[i]=k*k;

printf("\nPangkat dari %d adalah %d ",k,square[i]);

}

return 0;

}

Page 60: Modul bahasa C ALL modul

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

Modul 12

POINTER I

11.1 Pendahuluan

Pointer adalah suatu variabel yang menyimpan alamat dari

suatu data, dan bukan menyimpan datanya sendiri. Sebagai contoh,

jika px adalah pointer dan x adalah variabel yang ditunjuk oleh px,

maka jika px berada pada alamat memori awal 1000, maka px akan

60

Page 61: Modul bahasa C ALL modul

berisi 1000, sedangkan datanya sendiri berupa nilai yang ada pada

lokasi memori 1000.

11.2 Pendeklarasian Variabel Pointer

Variabel tipe pointer dideklarasikan dengan bentuk sebagai berikut:

type *nama_variabel;

dengan tipe dapat berupa sembarang tipe data, sedangkan

nama_variabel adalah nama dari variabel pointer. Sebagai contoh:

int px; /* contoh1*/

char pch1, pch2; /*contoh2*/

Contoh pertama menyatakan bahwa px adalah variabel pointer

yang menunjuk ke suatu data bertipe int.

Pada contoh kedua, masing-masing variabel pch1 dan pch2 adalah

variabel pointer yang menunjuk ke data bertipe char.

11.3 Mengatur Pointer Agar Menunjuk ke Variabel Lain

Agar suatu pointer menunjuk ke variabel yang lain, mula-mula

pointer harus diisi dengan alamat dari variabel yang akan ditunjuk.

Untuk menyatakan alamat dari suatu variabel, dapat digunakan

operator & (operator alamat, yang bersifat unaray), dengan cara

menempatkan operator di depan nama variabel. Sebagai contoh,

jika x dideklarasikan sebagai variabel bertipe int, maka

&x

berarti “alamat dari variabel x”. Adapun contoh pemberian alamat

ke suatu variabel pointer px (yang dideklarasikan sebagai pointer

yang menunjuk ke data

bertipe int) yaitu:

Px = &x;

Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari

variabel x. Setelah pernyataan tersebut dieksekusi barulah dapat

dikatakan bahwa px menunjuk ke variabel x.

11.4 Mengakses Isi Suatu Variabel Melalui Pointer

61

Page 62: Modul bahasa C ALL modul

Jika suatu variabel sudah ditunjuk oleh pointer, maka variabel

tersebut dapat diakses melalui variabel itu sendiri (disebut sebagai

pengaksesan tak langsung), ataupun melalui pointer (disebut

pengaksesan langsung).

Pengaksesan tak langsung dilakukan dengan menggunakan

operator inderection berupa simbol * (bersifat unaray), seperti

contoh berikut:

*px

yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh

pointer px”. Sebagai contoh jika y bertipe int, maka sesudah dua

pernyataan berikut:

px = &x;

y = *px;

y akan berisi nilai yang sesuai dengan nilai x.

Contoh program berikut memperlihatkan pemakaian variabel

pointer.

/* --------------------------------- */

/* File program : Pointer.cpp */

/* Contoh pemakaian pointer */

/* -------------------------------- */

#include <stdio.h>

main()

{

int x,y; /* x dan y bertipe int */

int *px; /* px pointer yang menunjuk */

/* obyek bertipe int */

x = 87;

px = &x; /* px berisi alamat dari x */

y = *px; /* y berisi nilai yang ditunjuk px */

printf("Alamat x = %p\n", &x);

printf("Isi px = %p\n", px);

printf("Isi x = %d\n", x);

printf("Nilai yang ditunjuk px = %d\n", *px);

printf("Nilai y = %d\n", y);

}

Contoh eksekusi:

C> Pointer

62

Page 63: Modul bahasa C ALL modul

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, dua pernyataan

px = &x;

y = *px;

sebenarnya dapat digantikan dengan sebuah pernyataan y = x;

11.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. Jika

misalnya pointer pu dimaksudkan untuk menunjuk data bertipe int

maka data yang akan ditunjuk oleh pointer pu juga harus bertipe

int. Suatu kesalahan akan terjadi jika misalnya pointer float

digunakan untuk menunjuk data brtipe int.

11.6 Mengubah Isi Suatu Variabel Melalui Pointer

Contoh berikut memberikan gambaran tentang pengubahan isi

suatu variabel secara tak langsung (yaitu melalui pointer).

Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke

suatu data bertipe float dan d sebagai variabel bertipe float.

Selanjutnya dengan ungkapan

d = 54.6;

digunakan untuk mengisikan nilai 54.6 secara langsung ke variabel

d.

Perintah pd = &d;

Digunakan untuk memberikan alamat dari d ke pd. Dengan

demikian pd menunjuk ke variabel d.

Sedangkan pernyataan berikut:

*pd = *pd + 10; (atau: *pd += 10;)

63

Page 64: Modul bahasa C ALL modul

merupakan instruksi untuk mengubah nilai variabel d secara tak

langsung.

Perintah di atas brarti “jumlahkan isi variabel yang ditunjuk oleh pd

dengan 10 dan simpan hasilnya ke variabel tersebut”, atau identik

dengan pernyataan:

d = d + 10;

Namun seandainya tidak ada instruksi Pd = &d;

maka pernyataan:

*pd = *pd + 10;

tidak akan sama dengan d = d + 10;

/* ---------------------------------- */

/* File program : Pointer2.cpp */

/* Pengubahan isi pointer */

/* -------------------------------- */

#include <stdio.h>

main()

{

float d, *pd;

d = 54.6;

printf("Isi d semula = %g\n", d);

pd = &d;

*pd = *pd + 10;

printf("Isi d kini = %g\n", d);

}

Contoh hasil eksekusi:

C> Pointer2

Isi d semula = 54.6

Isi d kini = 64.6

11.7 Pointer dan Array

Hubungan antara struktur data pointer dan array dalam C sangatlah

erat, sebab sesungguhnya array secara internal akan diterjemahkan

dalam bentuk pointer.

Contoh berikut akan memberi gambaran tentang hubungan antara

pointer dan array. Misalnya dalam suatu fungsi dideklarasikan:

64

Page 65: Modul bahasa C ALL modul

static int tgl_lahir[3] = { 01, 09, 64 };

dan

int *ptgl;

Kemudian diberikan pernyataan ptgl = &tgl_lahir[0];

maka ptgl akan berisi alamat dari elemen array tgl_lahir yang

berindeks nol. Instruksi di atas juga dapat ditulis menjadi:

ptgl = tgl_lahir;

sebab nama array tanpa tanda kurung menyatakan alamat awal

dari array.

Sesudah penugasan seperti di atas, maka *ptgl dengan sendirinya

menyatakan elemen pertama (berindeks sama dengan nol) dari

array tgl_lahir.

Contoh di atas dapat dipahami melalui contoh program berikut ini.

/* ------------------------------------------- */

/* File program : Pointer3.cpp */

/* Pointer yang menunjuk array */

/* ------------------------------------------- */

#include <stdio.h>

main()

{

static int tgl_lahir[] = {24, 6, 1965 };

int *ptgl;

ptgl = tgl_lahir; /* ptgl berisi alamat array */

printf("Nilai yang ditunjuk oleh ptgl = %d\n", *ptgl);

printf("nilai dari tgl_lahir[0] = %d\n", tgl_lahir[0]);

}

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, maka dapat

digunakan perintah

for(i=0; i<3; i++)

printf(“%d%, tgl_lahir[i]);

Jika diimplementasikan dengan menggunakan pointer

65

Page 66: Modul bahasa C ALL modul

tgl_lahir[i]

dapat digantikan menjadi

*(ptgl + i)

dengan terlebih dahulu mengatur ptgl agar menunjuk ke array

tgl_lahir, sehingga penulisan instruksi penampilan isi array tgl_lahir

dapat diubah menjadi:

ptgl = tgl_lahir;

for (i=0; i<3; i++0

printf(“%d “, *(ptgl + i));

Secara umum operasi pointer dapat diterangkan sebagai berikut:

Misalkan a adalah suatu array, dan pa adalah pointer yang

menunjuk array a, maka *(pa + i) akan menyatakan elemen array

dengan indeks sama dengan i. 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”. Jika pa dideklarasikan

sebagai

int *pa;

maka obyek dari pa adalah data int (berukuran 2 byte).

Cara lain dalam menampilkan isi suatu array yaitu dengan

menaikkan isi variabel pointer dengan menggunakan operator ++.

*(ptgl + i)

dapat diganti menjadi

ptgl++

Misalkan suatu instruksi:

int *pa;

int a[3];

66

Page 67: Modul bahasa C ALL modul

MODUL 13

STRING

13.1 Pendahuluan

String merupakan suatu kumpulan karakter yang terangkai secara

bersamaan. Dalam bahasa C, string bukan merupakan tipe data tersendiri, namun

merupakan jenis khusus dari tipe array.

Tipe string dapat digunakan sebagai konstanta, yang ditulis dengan diawali

dan diakhiri tanda petik ganda. Misalnya:“ Teknik Informatika”.

Konstanta string seperti di atas disimpan dalam memori secara berurutan, 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, dan byte terakhir

otomatis akan berisi karakter NULL. Untuk setiap pendeklarasian string kita juga

harus mengalokasikan ruang untuk menempatkan karakter null tersebut. Contoh lain

apabila kita ingin menyimpan teks “Cheri”, maka kita membutuhkan suatu array

dengan 6 buah elemen. Hal ini artinya kita akan menempatkan 6 buah karakter,

yaitu 5 buah karakter untuk teks “Cheri” dan 1 karakter untuk karakter null.

Dibawah ini gambar yang akan merepresentasikannya.

C h e r i \0

Pada gambar diatas elemen S[5] berisi karakter null yang menunjukkan bahwa string

tersebut telah berakhir.

67

S[0]

S[1]

S[2]

S[3]

S[4]

S[5]

Page 68: Modul bahasa C ALL modul

13.2 Variabel String

Variabel string digunakan untuk menyimpan data string.

Misalnya: char nama[15];

Contoh diatas merupakan instruksi untuk mendeklarasikan variabel tipe string

dengan panjang maksimal mengandung 15 karakter (termasuk karakter NuLL).

Deklarasi di atas sebenarnya adalah deklarasi array bertipe char.

Untuk memasukkan data string ke dalam suatu variabel dapat dilakukan dengan

menggunakan instruksi gets( ), dengan bentuk umum pemakaiannya adalah:

gets(nama_array);

Jika menggunakan statemen scanf( ), maka instruksinya akan menjadi:

scanf(“%”,nama_array);

Di depan nama array tidak perlu ada operator &(operator alamat), karena nama

array tanpa kurung siku sudah menyatakan alamat. Jika menggunakan scanf( ),

data string masukan tidak bisa mengandung spasi. Prototipe gets( ) terdapat pada

file stdio.h.

/* -------------------------------------------------------- */

/* File program : nama.cpp */

/* Contoh memasukkan data string dari keyboard */

/* ---------------------------------------------------------

*/

#include <stdio.h>

main()

{

char nama[15];

printf("Nama anda: ");

gets(nama);

printf("Halo, %s. Selamat datang di Informatika.\

n",nama);

}

Bila dijalankan akan didapatkan output:

Nama anda : gadisa aulia

Halo, gadisa aulia Selamat datang di informatika

Pada program di atas, setelah deklarasi char nama[15], maka komputer akan

menyediakan ruang pada memori sebanyak 15 karakter. Setelah pengguna

68

Page 69: Modul bahasa C ALL modul

memasukkan data nama : gadisa aulia, maka data string yang dimasukkan akan

diletakkan pada area memori yang sudah dipesan. Karena data yang dimasukkan

kurang dari 15 karakter, maka otomatis setelah karakter terakhir akan diisi dengan

karakter NULL.

Instruksi gets( ) akan membaca seluruh karakter yang diketik pada keyboard

sampai tombol ENTER ditekan. Dalam hal ini tidak ada pengecekan terhadap

batasan dari array yang merupakan argumennya. Jika string yang dimasukkan

melebihi ukuran array, maka sisa string (panjang string dikurangi ukuran array plus

karakter NULL) akan ditempatkan ke lokasi sesudah bagian akhir array.

13.3 Inisialisasi String

Suatu variabel string dapat diinisialisasi seperti halnya variabel array yang lain,

namun pada elemen terakhir harus berupa karakter NULL. Sebagai contoh:

char kota[ ] = {‘Y’, ’o’, ’g’, ’y’, ’a’, ’k’, ’a’, ’r’, ’t’, ’a’, ’\0’};

Contoh diatas menyatakan bahwa variabel kota adalah variabel string dengan nilai

awal berupa string “Yogyakarta”.

Bentuk inisialisasi yang lebih singkat adalah:

char kota[ ] = “Yogyakarta”;

Pada bentuk ini, karakter NULL tidak perlu ditulis, karena secara implisit akan

disisipkan oleh kompiler.

13.4 Menampilkan isi variabel string ke layar

Untuk menampilkan isi variabel string, dapat digunakan salah satu dari

pernyataan berikut:

o puts(var_string);

o printf(“%s”,var_string);

o printf(var_string);

Contoh program berikut ini akan menampilkan isi variabel kota, berdasarkan dua

bentuk inisialisasi string.

/* -------------------------------------------------- */

/* File program : kota.cpp */

/* Contoh menampilkan data string ke layar */

/* -------------------------------------------------- */

69

Page 70: Modul bahasa C ALL modul

#include <stdio.h>

void bentuk1(void);

void bentuk2(void);

main()

{

bentuk1();

bentuk2();

}

void bentuk1(void)

{

char kota[]=

{'Y','o','g','y','a','k','a','r','t','a','\0'};

puts(kota);

}

void bentuk2(void)

{

char kota[] = "Solo";

puts(kota);

}

Bila dijalankan akan didapatkan output:

Yogyakarta

Solo

13.5 Manipulasi String

Dalam manipulasi string terdapat proses pencarian, penyalinan,

pembandingan yang dilakukan terhadap string dan proses-proses yang lainnya.

13.5.1 Menggabungkan String

Bahasa C telah menyediakan dua buah fungsi yang berguna untuk

melakukan penggabungan string, yaitu fungsi strcat() dan strncat().

1. Fungsi strcat()

Fungsi strcat() akan menambahkan salinan dari string str2 ke bagian kahir string

str2.

Contoh:

70

#include <stdio.h>

#include <string.h>

main()

{

char s1[50] = "pemograman ";

char s2[21] = "menggunakan bahasa C";

strcat(s1, s2);

printf("%s",s1);

return 0;

}

Page 71: Modul bahasa C ALL modul

Bila dijalankan akan didapatkan output:

Pemograman menggunakan bahasa C

2. Fungsi strncat()

Fungsi ini juga berguna untuk menambahkan string dari string str2 ke dalam str1.

namun disini kita diizinkan menentukan berapa banyak karakter (n) dari str2 yang

digabungkan ke str1.

Contoh:

Bila dijalankan akan didapatkan output:

Pemograman menggunakan

13.5.2 Menentukan Panjang String

Fungsi pustaka strlen() dapat digunakan untuk menghasilkan panjang dari

suatu string.

Contoh:

71

#include <stdio.h>

#include <string.h>

main()

{

char s1[50] = "pemograman";

char s2[21] = "menggunakan bahasa c";

strncat(s1, s2, 11);

printf("%s",s1);

return 0;

}

#include<stdio.h>#include<string.h>main(){

char *Nama1 = "Widya Astuti";char Nama2[7] = "Gadisa";printf("Panjang string Nama1 = %d\n", strlen(Nama1));printf("Panjang string Nama2 = %d\n", strlen(Nama2));return 0;

}

Page 72: Modul bahasa C ALL modul

Bila dijalankan akan didapatkan output:

Panjang string Nama1 = 12

Panjang string Nama2 = 6

13.5.3 Menyalin String

Untuk menyalin nilai suatu string ke string yang lainnya tidak dapat dilakukan

seperti halnya di kompiler yang lainnya. Misalnya S adalah variabel yang sudah

dideklarasikan sebagai tipe string, maka S=”ABCDE” di bahasa C merupakan hal

yang tidak benar. Untuk bahasa yang lain, hal ini dimungkinkan, karena bahasa

tersebut menyediakan operator pengerjaan untuk nilai string. Akan tetapi C tidak

menyediakan operator pengerjaan untuk string, sehingga proses penyalinan atau

mengerjakan suatu nilai string ke variabel string yang lain harus dilakukan dengan

fungsi pustakan strcpy().

Contoh:

Bila dijalankan akan didapatkan output:

String pertama adalah : ABCDE

String kedua adalah : ABCDE

Contoh lain:

72

#include<stdio.h>

#include<string.h>

main()

{

char String1[80];

char String2[]="ABCDE";

strcpy(String1, String2);

printf("String pertama adalah : %s\n",String1);

printf("String kedua adalah : %s\n",String2);

}

#include <stdio.h>

#include <string.h>

main()

{

char string[10];

char *str1 = "abcdefghi";

strcpy(string,str1);

printf("%s\n",string);

return 0;

}

Page 73: Modul bahasa C ALL modul

Bila dijalankan akan didapatkan output:

Abcdefghi

13.5.4 Membandingkan Dua Nilai String

Fungsi ini akan mengembalikan nilai bilangan bulat (integer) sebagai hasil

perbandingan dua buah string. Adapun nilai yang akan dikembalikan dari

perbandingan dua string diatas adalah seperti yang terdapat pada tabel berikut:

Nilai Arti

< 0 (negatif) str1 lebih kecil dari str2

0 str1 sama dengan str2

> 0 (positif) str1 lebih besar dari str2

Contoh:

73

#include <stdio.h>

#include <string.h>

main()

{

char *s1 = "Bahasa c";

char *s2 = "Bahasa c++";

char *s3 = "Bahasa c";

printf("nilai yang dikembalikan : %i\n", strcmp(s1,s2));

printf("nilai yang dikembalikan : %i\n", strcmp(s1,s3));

printf("nilai yang dikembalikan : %d\n", strcmp(s2,s1));

}

Page 74: Modul bahasa C ALL modul

Bila dijalankan akan didapatkan output:

Nilai yang dikembalikan : -1

Nilai yang dikembalikan : 0

Nilai yang dikembalikan : 1

13.5.5 Melakukan Pencarian String

Hal yang sering dilakukan dalam proses manipulasi string adalah suatu

pencarian, dimana kita melakukan pencarian terhadap suatu string maupun karakter

tertentu apakah terdapat dalam string lain atau tidak yaitu menggunakan fungsi

pustaka strchr().

Contoh:

Modul 14KISI – KISI UAS

1. Buatlah program untuk mencari angka terbesar dari deretan angka berikut : 8, 10,

17, 24 dengan menggunakan fungsi!

74

#include<stdio.h>#include<string.h>main(){

char str[100] = "GADISA";char karakter = 'D';char *hasil;hasil = strchr(str,karakter);printf("Nilai kembalian : %s\n",hasil);printf("Karakter %c ditemukan pada indeks ke-%d",karakter,(hasil - str));return 0;

}

Page 75: Modul bahasa C ALL modul

2. Buatlah program untuk mencari angka terkecil dari deretan angka berikut : 3, 5,

14, 17 dengan menggunakan fungsi!

3. Buatlah fungsi untuk No 1 & 2 dengan deretan angka bebas!

4. Buatlah program untuk mencari angka terbesar dan terkecil dari deretan angka

berikut : 17, 3, 10, 5, 24, 4, 8, 27, 20, 11 dengan menggunakan array!

5. Buatlah program untuk menghitung nilai tambah, kurang, kali dan bagi dengan

menggunakan fungsi!

6. Buatlah program pencarian menggunakan array dengan 7 inputan denganoutput

seperti dibawah ini!

HARI[0] = SENINHARI[1] = SELASAHARI[2] = RABUHARI[3] = KAMISHARI[4] = JUMATHARI[5] = SABTUHARI[6] = MINGGUMasukkan hari yang dicari : SABTUSABTU ditemukan dalam array yaitu pada hari ke-5

7. Buatkan program penjumlahan untuk menghitung matrik 2 x 2!

8. Buatkan program penjumlahan untuk menghitung matrik 3 x 2!

9. Buatlah program untuk menggabungkan kata “Universitas” dengan kata “Mercu

Buana”!

10. Buatlah program menggunakan pointer array untuk menampilkan bilangan

berikut: 17, 3, 10, 5, 24, 4, 8, 27, 20, 11.

75