Vous êtes sur la page 1sur 76

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.

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
Debug, terdiri dari
(1) run, untuk menjalakan program
(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.

4
Contoh penulisan Program Bahasa C yang baik dan yang kurang baik, lihat
pada listing 1.1 dan listing 1.2.

#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

5
4 double 8 byte -1.7E-308 s/d 1.7+308 %lf Pecahan presisi ganda
5 void 0 byte - - Tidak bertipe

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

6
\0 : nilai kosong (null)
\’ : 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

7
char y, huruf, nim[10]; // Deklarasi variable bertipe char
float nilai; // Deklarasi variable bertipe float
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 :

8
nilai = 80;
A = x * y;
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 */

9
#include "stdio.h"
#include "conio.h"
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

10
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di
memori. Operator bitwise dalam bahasa C:
. << : Pergeseran bit ke kiri
. >> : 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;

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

12
getch(); /* 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. 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”;

13
puts (nama);
}

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

14
3. Ganti Baris
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:

15
Karakter=getche();

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;

16
keliling=2*(panjang+lebar);
printf ("Jadi luasnya adalah : %d\n",luas);
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.

17
Modul 4
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();
}

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

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

19
Contoh Program 3:
#include “stdio.h”
#include “conio.h”
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;

20
Pernyataan If dalam if juga mempunyai bentuk yang majemuk yang sering disebut if
bertingkat. Bentuk umumnya adalah sebagai berikut:
If (kondisi1)
Pernyataan1;
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);

21
}

4. PERINTAH SWITCH
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.

22
Jika pernyataan break tidak diikutsertakan pada setiap case maka walaupun
konstantanya cocok denan ekspresi, maka setelah pernyataan pada case tersebut
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

23
pernyataan kedua yang ada pada case 2 yaitu mencetak hari Selasa yang akan
dikerjakan. Dan seterusnya tergantung dari kode hari yang dimasukkan.

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

25
Contoh program 3 :
#include <iostream.h>
#include <stdio.h>

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)

26
pernyataan;

Keterangan :
Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol.
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();
}

27
MODUL 6
ARRAY (LARIK)

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

28
menyatakan jumlah string.
Contoh Program 2 :
/*Program u/ menentukan jurusan & jenjang mahasiswa berdasarkan NIM*/
#include <stdio.h>
#include <conio.h>
#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”);
}
else
printf(“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]

29
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, 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");

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

31
for(i =1; i <=m; i++)
{ for(j=1; j<=m; j++)
printf(" %.1f", a[i][j]);
printf(" \n");
}
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).

32
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.
 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.

33
Contoh program berikut ini memperlihatkan penyusunan dan
penggunaan suatu fungsi.
/* ------------------------------------------- */
/* File program : fungsi.cpp */
/* Contoh pembuatan fungsi */
/* ------------------------------------------- */
#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 */

34
/* Contoh fungsi yang mengandung argumen */
/* ----------------------------------------------------- */
#include <stdio.h>
minimum(x,y)
int x,y;
{
if (x < y)
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.

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

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

36
/* 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
{
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 :
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.

40
• 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


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

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

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

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

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

44
Contoh hasil eksekusi:
C>tes_reg
Waktu total = 7 detik
Waktu total = 3 detik

Modul 10
FUNGSI II

10.1 Fungsi Dengan Parameter


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:

TambahSatu(int X)
{
Return ++X;
}

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


perhatikan sintak berikut:

main()
{
int a = 10, hasil;
hasil = TambahSatu(a);
return 0;
}
Pada saat pemanggilan fungsi TambahSatu() di atas, variabel a dinamakan dengan
parameter aktual

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

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

47
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 :
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.

48
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:

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

49
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:
• 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);
}

50
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

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

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

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

Nilai ke-1 Nilai ke-2 … Nilai ke-N Nilai elemen array


Alamat ke-1 Alamat ke-2 … Alamat ke-N
0 1 … N-1
Alamat elemen array
Indeks
Untuk elemen array suatu
mendeklarasikan
array satu dimensi dalam bahasa C adalah menggunakan tanda [ ] (bracket).
Bentuk umum pendeklarasian array:

Tipe_data nama_array [banyak elemen] ;

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.

#include<stdio.h>
#define MAX 5
main()
{
int X[MAX];
int j;
printf("Memasukkan nilai : \n");
Contoh:
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]);
} 53
}
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:

54
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]

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:
#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]);
}
}

55
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

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.

#include<stdio.h>
main()
{
int X1=5, X2=3, X3=7, total=0;
total=X1+X2+X3;
printf("Total = %d\n",total);
}

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

56
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.
#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);
}

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!
#include<stdio.h>
2. Buat program untuk menampilkan 10 nilai mahasiswa dengan inputan nilai
main()
bebas!
{3. Buat program untuk menghitung pangkat bilangan 1 sampai 10!
float x1,x2,x3,x4,x5;
float rata_rata;
JAWABAN!!!
printf("masukkan nilai:\n");
1. Program yang menggunakan variabel biasa
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;
57
printf("nilai rata-rata = %.2f\n",rata_rata);
}
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.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);
}

Output:
Memasukkan nilai:
A[0] = 10

58
A[1] = 20
A[3] = 30
A[4] = 40
A[5] = 50
Nilai rata-rata = 30.00

2.
#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]);
3. }
3.}

Output:
Input nilai 10 mahasiswa :
Mahasiswa 1: 10
Mahasiswa 2: 20
Mahasiswa 3: 30
Mahasiswa 4: 40

59
Mahasiswa 5: 50
Mahasiswa 6: 60
Mahasiswa 7: 70
Mahasiswa 8: 80
Mahasiswa 9: 90
Mahasiswa 10: 100

3.
#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;
}

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

61
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


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

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

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

64
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:
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]);
}

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

66
*(ptgl + i)
dapat diganti menjadi
ptgl++
Misalkan suatu instruksi:
int *pa;
int a[3];

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

S[0]

S[1]

67
S[2]

S[3]

S[4]

S[5]

Pada gambar diatas elemen S[5] berisi karakter null yang menunjukkan bahwa string
tersebut telah berakhir.

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

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

69
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 */
/* -------------------------------------------------- */
#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.

70
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:

#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;
}

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:
#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;
}

71
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:

#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;
}

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:
#include<stdio.h>
#include<string.h>
main()
{
char String1[80];

char String2[]="ABCDE";
strcpy(String1, String2);
printf("String pertama adalah : %s\n",String1);
72 : %s\n",String2);
printf("String kedua adalah
}
Bila dijalankan akan didapatkan output:
String pertama adalah : ABCDE
String kedua adalah : ABCDE

Contoh lain:
#include <stdio.h>
#include <string.h>
main()
{
char string[10];
char *str1 = "abcdefghi";
strcpy(string,str1);
printf("%s\n",string);
return 0;
}

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

73
Contoh:
#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));
}

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:
#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;
} 74
Modul 14
KISI – KISI UAS

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

10, 17, 24 dengan menggunakan fungsi!

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] = 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. 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”!

75
10. Buatlah program menggunakan pointer array untuk menampilkan bilangan

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

76

Vous aimerez peut-être aussi