MODUL 1
PENGENALAN BAHASA PEMROGRAMAN C++
Dasar Teori
Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan oleh
Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan ide kepada
Ken Thomson yang kemudian mengembangkan bahasa yang disebut bahasa B pada
tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Denis
Rithie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah
AT&T Bell Laboratories). Bahasa C pertama kali digunakan dikomputer 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 sebagai mata kuliah wajib.
Selain itu, banyak bahasa pemprograman popular seperti PHP dan Java menggunakan
sintaks dasar yang mirip bahasa C. oleh karena itu, kita juga sangat perlu
mempelajarinya.
1. Deklarasi variable
Bentuk umumnya :
Nama_tipe nama_variable;
Contoh :
a. Int x;
2. Deklarasi konstanta
a. Menggunakan keyboard const
Contoh : const float PI = 3.14152965;
b. Menggunakan #define
Contoh : #define PI 3.14152965
Tipe data
Tipe
Ukuran (byte)
Batas Bawah
Batas Akhir
Char
Unsigned char
225
Short int
-32768
327767
65536
Int
-231
+231-1
Float
-3.2x1038
+3.2x1038
Double
-1.7x10308
+1.7x10308
Karakter
Keterangan
\0
\a
Karakter Bell
\b
Karakter backspace
\f
\n
\r
\t
\v
\\
Karakter \
Karakter
Karakter
\?
Karakter ?
Format data
Format data adalah penentu format yang akan mengatur penampilan dari argument yang
terletak pada daftar argument. Bentuk penentu format antara lain :
%d
%f
%c
%s
MODUL 2
OPERASI INPUT/OUTPUT DAN PENGGUNAAN OPERATOR
Dasar Teori
Operasi input/output (header stdio.h)
1. Printf()
Fungsi ini digunakan untuk menampilkan suatu keluaran pada layar.
Bentuk umum dari printf() adalah sebagai berikut :
Printf(string kontrol, arguman1, argumen2,);
2. Puts()
Cara lain untuk menampikan suatu keluaran ke layar adalah dengan
menggunakan puts. Tetapi fungsi puts hanaya digunakan untuk menampilkan
nilai string dan sudah mengandung line feed atau escape sequence ganti baris.
3. Putchar()
Fungsi ini digunakan untuk menampilkan sebuah karakter saja dan tidak
mengandung escape sequence \n.
4. Scanf()
Jika kita ingin memasukan data dari keyboard, kita dapat menggunakan fungsi
scanf. Data selanjutnya dapat didefinisikan sebagai data variable. Jika fungsi
scanf ini digunakan untuk membaca data tipe array, karakter selanjutnya kita
sebut dengan istilah string, maka fungsi ini hanya akan membaca data sampai
ditemukan blank.
5. Gets()
Jika menggunakan fungsi scanf untuk membaca data bertipe string, maka data
tersebut hanya akan dibaca sampai ditemukan spasi. Untuk keperluan pemasukan
data string yang panjang dipisahkan dengan spasi, bahasa C menyediakan fungsi
gets.
6. Getchar()
Perintah ini digunakan untuk memasukan sebuah nilai karakter ke variable yang
bertipe karakter.
Operasi input/output (header iostream.h)
1. Cout
Cout merupakan sebuah objek di dalam C++, yang digunakan untuk
mengarahkan data ke dalama standar output (cetak pada layar).
Bentuk umum daric out adalah sebagai berikut :
Cout << daftar_keluaran;
2. Cin
Cin merupakan sebuah objek yang digunakan untuk memasukan data ke suatu
variable melalui keyboard.
Operator
Operator merupakan simbol khusus yang mempresentasukan perhitungan sederhana
seperti penambahan dan perkalian.
Macam-macam tipe operator :
1. Operator penunjukan (assignment)
Memberikan nilai dari bagian setelah kanan operator ke bagian sebelah kiri
operator. Operator penunjukan data bahasa C/C== menggunakan tanda sama
dengan =. Termasuk +=,-=,*=,/=,%=
2. Operator aritmatika
Merupakan simbol-simbol matematika seperti +,-,/,*
3. Operator rasional
Operator untuk membandingkan kesamaan dua nilai digunakan tanda == dan
menghasilkan sebuah ekspresi Boolean. Operator-operator yang lain : !=,>,<,>=.
Pratikum
Pratikum 1 : Penggunaan printf()
1. Tulis source code berikut ini :
# include <stdio.h>
Void main()
{
Int nilai=3;
Printf(Bahasa C Menyenangkan \n);
Printf(Nilai = %d \n, nilai);
}
# include <stdio.h>
Void main()
{
Float p,q,r,s,t;
P=1; q=1;r=1;s=1;t=1;
P+=q=r/s+t;
Printf(Hasil perhitungan p adalah %.0f \n, p);
}
Tugas Modul 2
1. Ubah source kode praktikum diatas menggunakan preprocessor directive
iostream.h !
2. Apa perbedaan intruksi increment post-fixed dengan intruksi increment pre-fixed
? jelaskan !
3. Buat kesimpulan dari hasil praktikum dan tugas praktikum.
Jawab !
MODUL 3
STRUKTUR PEMILIHAN (CONDITION)
Dasar Teori
Struktur pemilihan (pengkondisian) mempunyai beberapa instruksi antara lain
sebagai berikut :
1. Intruksi IF-THEN
a. IF sederhana
b. IF-THEN-ELSE
c. IF bertingkat (bersarang)
2. Instruksi SWITCH-CASE
Instruksi IF-THEN
1. IF Sederhana
Pemilihan suatu pernyataan dieksekusi hanya jika suatu kondisi terpenuhi atau
tidak terpenuhi. Pernyataan IF-THEN (jika-maka) digunakan untuk menguji
sebuah kondisi. Bila kondisi yang diuji terpenuhi, maka program akan
menjalankan pernyataan-pernyataan tertentu. Bentuk umum IF-THEN adalah :
If (kondisi)
{
<pernyataan>
}
Keterangan :
Pernyataan sesudah kata THEN (dapat berupa satu atau lebih pernyataan)
hanya akan dilaksanakan bila <kondisi> bernilai benar (true). Bila <kondisi>
bernilai salah (false),tidak ada aksi yang dilaksanakan.
2. IF-THEN-ELSE
Pernyataan struktur IF-THEN-ELSE (jika-maka-kalau tidak) untuk menguji dua
kondisi yaituyang terpenuhi atau tidak terpenuhi. Bentuk umum struktur IFTHEN-ELSE adalah sebagai berikut :
If (kondisi)
{
<pernyataan_true>
}
Else
{
<pernyataan_false>
}
Keterangan :
Pernyataan_true akan dilaksanakan jika <kondisi> bernilai benar, tetapi jika
kondisi bernilai salah, maka else yang dinyatakan ingkaran (negation) dari
kondisi akan melaksanakan pernyataan_false.
3. IF bertingkat
Pernyataan IF-THEN-ELSE bertingkat digunakan untuk menguji sebuah kondisi
lebih dari dua kondisi yaitu satu kondisi terpenuhi dan lebih dari satu kondisi
yang tidak terpenuhi. Bentuk umum pernyataan IF-THEN-ELSE bertingkat
adalah sebagai berikut :
If (kondisi_1)
<pernyataan_1>
Else
If (kondisi_2)
<pernyataan_2>
Else
If (kondisi_3)
<pernyataan_3)
Else
If (kondisi_n)
<pernyataan_n>
Keterangan :
Pernyataan IF-THEN-ELSE bertingkat (bersarang) atau IF di dalam IF
digunakan untuk menguji sebuah kondisi lebih dari dua kondisi dalam bentuk
bertingkat atau bersarang.
Instruksi SWITCH-CASE
Pemilihan proses menggunakan instruksi IF selalu didasarkan pada dua pilihan yg
bisa terjadi. Dengan demikian untuk mengetes lebih dari dua pilihan harus digunakan
sejumlah intruksi IF jika terlihat pada bentuk umum instruksi IF untuk pilihan jamak.
Pemilihan proses untuk sejumlah pilihan kondisi bisa dilaksanakan dengan instruksi
SWITCH-CASE.
Statement
SWITCH-CASE
merupakan
statement
yang
dimanfaatkan untuk menentukan pilihan dari sejumlah pilihan yang terlibat. Bentuk
umum algoritma untuk instruksi SWITCH-CASE :
Switch <pilihan>
Case <pilihan_1> : <aksi_1>
Case <pilihan_2> : <aksi_2>
. . .
Case <pilihan_n> : <aksi_n>
{ otherwise aksi }
Endcase
Keterangan :
Pilihan_1, pilihan_2, dst mempunyai nilai kebenaran. Setiap pilihan diperiksa
nilai kebenarannya,mulai dari pilihan pertama sampai ditemukannya pilihan
yang bernilai benar.
Aksi yang dipasangkan dengan aksi ke-i dapat berupa satu baris intstruksi
atau blok instruksi. Apabila tidak ada satupun pilihan yang bernilai benar,
maka aksi sesudah otherwise dikerjakan. Dalam bahasa C/C++, otherwise
diganti dengan kata kunci default.
Praktikum
Praktikum 1 : penggunaan struktur IF-THEN
Menuliskan algoritma dan mengimplementasikan kedalam bahasa C/C++ dari
permasalahan untuk mengetahui apakah sebuah bilangan bulat yang dimasukan
merupakan bilangan genap atau bukan?
Algoritma:
Algoritma bilangan_genap
, mencetak pesan bilangan Genap,jika sebuah bil. Bulat yang dibaca dari
keybaoard merupakan bilangan genap}
Kamus (deklarasi)
Bil : integer
Algoritma (deskripsi)
Input ( Bil )
If ( bil mod 2 = 0 ) then
Output ( Bilangan Genap)
endif
Bahasa C/C++ :
/* program bilangan_genap */
/* mencetak pesan Bilangan Genap jika sebuah bilangan bulat yang dibaca
dari piranti masukan merupakan bilangan Genap */
#include <stdio.h>
Void ain ( )
{
Int Bil;
Printf (masukan bilangan bulat : );
Scanf (%d, &Bil);
If (Bil & 2 == 0);
Printf (Bilangan bulat);
}
1. perhatikan pengimplementasian ke bahasa C++ dari algoritma tersebut.
2. Analisa bentuk penulisan untuk struktur IF-THEN tersebut.
Sebagai hasilnya :
else
printf(Bilangan terbesar adalah %d, B);
}
Sebagai hasilnya :
Algoritma :
Algoritma Nilai
{ Menentukan nilai yang sesuai dengan kriteria }
Kamus (Deklarasi)
grade : integer
Algoritma (Deskripsi)
input (grade)
If (grade >= 90) then
output (nilai = A)
else
if (grade >= 70) then
output (Nilai = B)
else
Bahasa C/C++ :
/* PROGRAM NILAI */
/* Menentukan nilai yang sesuai dengan kriteria */
#include<stdio.h>
Void main( )
{
int grade;
printf("Masukan nilai [10 - 100] : ");
scanf("%d", &grade);
if (grade>= 90)
printf("Nilai = A");
else
if (grade >= 70)
printf("Nilai = B");
else
if (grade >= 50)
printf("Nilai = C");
else
if (grade < 50)
printf("Nilai = E");
}
Sebagai hasilnya :
Praktikum 4 :
Dibaca nomor bulan (integer). Tuliskan nama bulan seuai dengan nomor bulannya.
Misalnya jika bulan 8, maka akan tercetak agustus. Masalah ini memiliki 12 buah
kasus karena nama bulan berbeda-beda tergantung pada nomor bulan yang diberikan
(ada 12 bulan dalam kalender masehi).
Algoritma :
Algoritma Nama_Bulan
{ mencetak nama-nama sesuai dengan nomor bulan }
Kamus (deklarasi)
No Bulan : integer
Algoritma (deskripsi)
Input (no Bulan)
Switch
Case 1 : output (januari)
Case 2 : output (februari)
Case 3 : output (maret)
Case 4 : output (april)
Case 5 : output (mei)
Case 6 : output (juni)
Case 7 : output (juli)
Case 8 : output (agustus)
Case 9 : output (September)
Case 10 : output (Oktober)
Bahasa C/C++ :
/* program Nama_Bulan */
/* Mencetak Nama bulan sesuai dengan nomor bulan */
#include <stdio.h>
void main ( )
{
int NoBulan;
printf("Bulan : ");
scanf("%d", &NoBulan);
switch (NoBulan)
{
case 1 : printf (januari \n); break;
case 2 : printf (februari \n); break;
case 3 : printf (maret\n); break;
case 4 : printf (april\n); break;
case 5 : printf (mei\n); break;
case 6 : printf (juni\n); break;
case 7 : printf (juli\n); break;
case 8 : printf (agustus\n); break;
case 9 : printf (september\n); break;
case 10 : printf (oktober\n); break;
case 11 : printf (nopember\n); break;
case 12 : printf (desember\n); break;
default : printf (bukan bulan yang benar);
}
}
Sebagai hasilnya :
Praktikum 5 :
Tulis kembali praktek diatas (no 4) dengan kata kunci break dihilangkan,
lakukan proses kompilasi dan jalankan programnya!.
Bahasa C sebagai berikut:
/* program Nama_Bulan */
/* Mencetak Nama bulan sesuai dengan nomor bulan */
#include <stdio.h>
void main ( )
{
int NoBulan;
printf("Bulan : ");
scanf("%d", &NoBulan);
switch (NoBulan)
{
case 1 : printf ("januari \n");
case 2 : printf ("februari \n");
case 3 : printf ("maret\n");
case 4 : printf ("april\n");
case 5 : printf ("mei\n");
case 6 : printf ("juni\n");
case 7 : printf ("juli\n");
case 8 : printf ("agustus\n");
case 9 : printf ("september\n");
case 10 : printf ("oktober\n");
case 11 : printf ("nopember\n");
case 12 : printf ("desember\n");
default : printf ("Bukan bulan yang benar");
}
}
Sebagai hasilnya :
Tugas Modul 3
1. buatlah algoritma dan implementasikan menjadi program untuk membuat
program konversi dari nilai huruf menjadi nilai angka, dengan ketentuan
masukan nilai huruf (menggunakan instruksi IF dan SWITCH)
contoh :
-
Jawab !
1. Ketik algoritmanya berikut :
Mengatur_nilai
{ menyatakan nilai huruf menjadi nilai angka, dengan cara ketik huruf yang ditentukan
pada keyboar }
Kamus
grade : integer
Algoritma
input (grade)
if (grade == A) then
output (Nilai angka = 4)
else
if (grade == B) then
output (Nilai angka = 3)
else
if (grade == C) then
output (Nilai angka = 2)
else
if (grade == D) then
output (Nilai angka = 1)
else
if (grade == E) then
output(Nilai angka = 0)
endif
endif
endif
endif
endif
Sebagai hasilnya :
int nilai;
printf("Masukan nilai 0 - 100 : ");
scanf("%d", &nilai);
if(nilai<=30)
printf("Nilai Rendah");
else
if(nilai<=60)
printf("Nilai Sedang");
else
if(nilai<=100)
printf("Nilai Tinggi");
}
Sebagai hasilnya :
3. Kesimpulan
Pernyataan IF-THEN
Digunakan untuk menguji sebuah kondisi. Bila kondisi yang diuji
terpenuhi, maka program akan menjalankan pernyataan-pernyataan
tertentu.
IF-THEN-ELSE
Digunakan untuk menguji dua kondisi yaituyang terpenuhi atau tidak
terpenuhi.
IF-THEN-ELSE bertingkat
Digunakan untuk menguji sebuah kondisi lebih dari dua kondisi yaitu satu
kondisi terpenuhi dan lebih dari satu kondisi yang tidak terpenuhi.
MODUL 4
STRUKTUR PERULANGAN (LOOPING)
Dasar Teori
1. Instruksi FOR
Inruksi ini digunakan apabila mengetahui secara pasti banyaknya perulangan
yang dilakukan.
Pernyataan FOR mempunyai 3 parameter :
1) Nilai awal (initial value)
2) Test kondisi yang menentukan akhir LOOP
3) Penentu perubahan nilai
Bentuk umum pseudocode FOR
For indeks nilai_awal to nilai_akhir do
<instruksi / blok instruksi>
endfor
Cara kerjanya :
1) Indeks di-assign dengan nilai awal
2) Indeks dibandingkan dengan nilai akhir
3) Jika indeks <= nilai akhir maka
a. Instruksi / blok instruksi dikerjakan
b. Secara otomatis nilai indeks ditambah 1
c. Indeks dibandingkan dengan nilai akhir
4) Jika indeks > nilai akhir, maka dikerjakan perintah pertama sesudah
endfor
2. Instruksi WHILE
Instruksi ini dapat digunakan apabila belum mengetahui secara pasti berapa kali
banyaknya perulangan yang akan dilakukan. Selama kondisi terpenuhi, maka
perulangan terus dilakukan, sebaliknya bila kondisi tidak terpenuhi, maka
perulangan dihentikan.
Bentuk umum pseudocode WHILE
While <kondisi> do
<instruksi / blok instruksi>
endwhile
Cara kerjanya :
1) Sebelum masuk ke while loop yang merupakan ekspresi Boolean harus
sudah mempunyai nilai.
2) Jika kondisi true, maka seluruh badan loop dikerjakan
3) Cek kembali apakah kondisi bernilai true atau false.
4) Looping berhenti setelah bernilai false, sehingga harus ada statement yang
mengakibatkan kondisi bernilai false.
Dalam bahasa C/C++ bentuk WHILE adalah :
While (condition_expr)
3. Instruksi DO-WHILE
Instruksi DO-WHILE pada dasarnya sama dengan instruksi WHILE.
Perbedaan yang penting antara keduanya hanya terletak pada penempatan
ekspresi kondisi (condition_expr). Untuk DO-WHILE, kondisi diletakan
Praktikum
Praktikum 1 : penggunaan instruksi IF
Menuliskan angka 1 s/d 10 dengan masing-masing output diberi keterangan
yang berbeda pada saat 3 dan 8. Output yang dihasilkan, misalnya :
Angka = 1
Angka = 2
Angka = 3
Angka = 4
Angka = 5
Angka = 6
Angka = 7
Angka = 8
Angka = 9
Angka = 10
Algoritma :
Algoritma Tulis_angka
{mencetak angka 1 s/d 10}
Kamus (deklarasi)
Angka : integer
Algoritma (Deskripsi)
For angka 1 to
If angka = 3 then
Komentar (ini angka favoritku)
Output (angka, komentar)
Else
If angka = 8 then
Komentar (ini angka favorit temanku)
Output (angka, komentar)
Else
Output (angka)
Endif
Endfor
Bahasa C/C++
/* PROGRAM TULIS_ANGKA */
/* Mencetak angka 1 s/d */
#include <stdio.h>
void main()
{
int angka;
for(angka = 1; angka <= 10; angka++)
{
if (angka == 3)
printf("Angka %d ini angka favoritku \n", angka);
else
if (angka == 8)
printf("Angka %d ini angka favorit temanku \n", angka);
else
printf("Angka %d \n", angka);
}
}
sebagai hasilnya :
Angka = 1
Angka = 2
Angka = 3
Angka = 4
Angka = 5
Angka = 6
Angka = 7
Angka = 8
Angka = 9
Angka = 10
Algoritma Tulis_angka
{mencetak angka 1 s/d 10}
Kamus (deklarasi)
Angka : integer
Algoritma (Deskripsi)
angka 1
while (angka <= 10)
if angka = 3 then
Komentar (ini angka favoritku)
Output (angka, komentar)
Else
If angka = 8 then
Komentar (ini angka favorit temanku)
Output (angka, komentar)
Else
Output (angka)
Endif
Endwhile
Bahasa C/C++
/* PROGRAM TULIS_ANGKA */
/* Mencetak angka 1 s/d */
#include <stdio.h>
void main()
{
int angka;
angka = 1;
while (angka <= 10)
{
if (angka == 3)
printf("Angka %d ini angka favoritku \n", angka);
else
if (angka == 8)
printf("Angka %d ini angka favorit temanku \n", angka);
else
printf("Angka %d \n", angka);
}
}
Tugas Modul 4
1. Buatlah program untuk menjumlahkan n buah data, dengan n merupakan
masukan dari piranti masukan kemudian hitunglah rata-ratanya menggunakan
instruksi IF dan WHILE
2. Buatlah program untuk menjumlahkan b buah data, tetapi yang dijumlahkan
hanya data ganjil menggunakan instruksi DO-WHILE
3. Buat kesimpulan dari hasil praktikum dan tugas praktikum.
MODUL 5
TIPE DATA TURUNAN (LARIK/ARRAY)
Dasar Teori
Larik merupakan sekumpulan data yang mempunyai nama dan tipe yang
sama. Larik sering disebut juga variabel berindeks. Nilai suatu data dalam
larik ditentukan oleh data indeks. Larik banyak digunakan pada operasi yang
melibatkan indeks seperti pada statistik dan matriks. Tipe data larik dapat
berupa satu dimensi, dua dimensi, tiga dimensi atau banyak dimensi.
Bentuk umum larik satu dimensi :
Tipe_larik nama_larik [ukuran]
Perhatikan :
C++ tidak mengecek larik. Bila anda menyatakan int x[10], ini artinya 10 elemen
yang di mulai dari 0. Karena itu elemen terakhir larik adalah x[9]. Bila anda salah
mereferensikannya dengan x[10], anda akan mendapatkan harga yang tidak terpakai.
Akan lebih buruk lagi jika anda memberikan harga ke x[10], yang tidak dapat
diterima.
Representasi Larik
Misalkan kita memiliki sekumpulan data ujin seorang siswa, ujian pertama bernilai
90, kemudian 95,78,85. Sekarang kita ingin menyusunnya sebagai suatu kumpulan
data ujian seorang siswa. Dalam array kita menyusunnya sebagai berikut :
Ujian[0] = 90;
Ujian[1] = 95;
Ujian[2] = 78;
Ujian[3] = 85;
Empat nilai diatas memberikan nilai kepada array ujian. Tapi sebelum kita
memberikan nilai kepada array, kita harus mendeklarasikannya terlebih dahulu,
yaitu : int ujian[4];
Perhatikan bahwa nilai 4 yang berada didalam tanda kurung menunjukan jumlah
elemen larik, bukan menunjukan elemen larik yang ke-4. Jadi lemen larik ujian
dimulai dari angka 0 sampai 3. Pemogram juga dapat menginisialisasi larik
sekaligus mendeklarasikannya, contoh :
Int ujian[4] = {90,95,78,85};
Elemen terakhir dari larik diisi dengan karakter \0. Karakter ini memberitahu
kompiler bahwa akhir dari elemen larik telah dicapai.
Larik diatas terlihat berbeda dengan contoh larik pertama, perhatikan bahwa pada
larik pahlawan memilih dua buah tanda kurung [ ][ ]. Larik seperti itu disebut larik
dua dimensi. Tanda kurung pertama menyatakan total elemen yang dapat dimiliki
oleh larik pahlawan dan tanda kurung kedua menyatakan elemen yang dapat
dimiliki setiap elemen larik pahlawan.
Sebagai hasilnya :
Sebagai hasilnya :
Tugas Modul 5
1. Buatlah program yang menghitung jumlah elemen dalam suatu array (larik)
dengan array (larik) 1 dimensi {1,3,5,4,7,2,99,16,45,67,89,45}.
2. Buatlah program untuk menampilkan data mahasiswa yang terdiri dari nim dan
nama (minimal datanya 5 data).
3. Buat kesimpulan dari hasil praktikum dan tugas praktikum.
Jawab !
1. Ketiklah source code seperti di bawah ini :
#include <stdio.h>
void main ()
{
int nilai [] = {1,3,5,4,7,2,99,16,45,67,89,45};
int n, result=0;
for ( n=0 ; n<12 ; n++ )
{
result += nilai[n];
}
printf("nilainya = %d",result);
Sebagai hasilnya :
scanf("%s", &nim);
printf("Nama : ");
scanf("%s", &nama);
}
}
Sebagai hasilnya :
3. Kesimpulan
Bahwa larik merupakan sekumpulan data yang mempunyai nama dan tipe yang
sama. Larik sering disebut juga variabel berindeks. Nilai suatu data dalam larik
ditentukan oleh data indeks. Larik banyak digunakan pada operasi yang
melibatkan indeks seperti pada statistik dan matriks. Tipe data larik dapat berupa
satu dimensi, dua dimensi, tiga dimensi atau banyak dimensi.
MODUL 6
FUNGSI (FUNCTION)
Dasar Teori
Fungsi atau function adalah suatu kumpulan intruksi/perintah/program yang
dikelompokan menjadi satu, letaknya terpisah dari program yang menggunakan
fungsi tersebut. Memiliki nama tertentu yang unik, dan digunakan untuk mengerjakan
suatu tujuan tertentu.
Adapun tujuan dari pembuatan fungsi ini adalah :
1. Program menjadi tekstruktur
2. Dapat mengurang duplikasi kode
3. Fungsi dapat dipanggil dari program atau fungsi yang lain.
Keuntungan dari fungsi adalah :
1. Dapat melakukan pendekatan top-down dan divide-and-conquer.
a. Top down : penelusuran program mudah
b. Divide-and-conquer : program besar dapat dipisah menjadi program-program
kecil.
2. Kode program menjadi lebih pendek, mudah dibaca, dan mudah dipahami.
3. Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai
dengan koordinasi yang mudah.
4. Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan
sederhana.
5. Kesalahan dapat dialokasi dalam suatu modul tertentu saja.
6. Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa
menunggu program keseluruhan.
7. Fungsi-fungsi menjadikan program mempunyai struktur yang jelas.
8. Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi,
maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah
dimengerti.
9. Langkah-langkah tersebut dapat dituliskan sekali saja secara terpisah dalam
bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah-langkah
ini tidak perlu selalu menuliskannya, karena tidak cukup memanggil fungsi
tersebut.
10. Mempermudah dokumentasi.
11. Reusability : suatu fungsi dapat digunakan kembali oleh program atau fungsi lain.
Dalam perancangan fungsi, perlu diperhatikan:
1. Data yang diperlukan sebagai inputan
2. Informasi apa yang harus diberikan oleh fungsi yang dibuat ke pemanggilnya
3. Algoritma apa yang harus digunakan untuk mengolah data menjadi informasi.
Stuktur fungsi
1. Deklarasi fungsi (function prototype/declaration), terdiri dari
a. Judul fungsi
b. Tipe data yang akan dikembalikan/void
c. Tidak ada kode implementasi function tersebut.
Bentuk umum :
tipe_data | void nama_fungsi (*arguman 1, arguman 2, +);
2. Tubuh function/definisi function (function definition), terdiri dari :
[statement_1];
[statement_2];
[statement_3];
[return(variabel1];
}
Praktikum
Praktikum 1 : Deklarasi dan Definisi fungsi
1. Tulislah source code berikut :
#include <stdio.h>
int FindMax (int n1, int n2);
void PrintMax(int m);
main()
{
int i=5; int j=7; int k;
k=FindMax(i,j);
PrintMax(k);
return 0;
// deklarasi fungsi
}
int FindMax(int n1, int n2)
//definisi fungsi
{
if (n1>n2)
{
return n1;
}
else
{
return n2;
}
}
void PrintMax(int m)
{
printf("Bilangan yang terbesar adalah : %d\n",m);
}
Sebagai hasilnya :
a=99;
b=11;
printf("Nilai sebelum pemanggilan fungsi : \n");
printf("Nilai a = %d nilai b = %d\n\n",a,b);
tukar (a,b);
printf("Nilai sesudah pemanggilan fungsi : \n");
printf("Nilai a = %d nilai b = %d\n\n",a,b);
}
void tukar (int px, int py)
{
int z;
z=px;
px=py;
py=z;
printf("Nilai diakhir fungsi :\n");
printf("Niali px = %d nilai py = %d\n\n",px,py);
}
Sebagai hasilnya :
Tugas
Buatlah program untuk menentukan bilangan yang terbesar dan terkecil dari dua buah
bilangan yang diinputkan ! dengan output seperti berikut :
Masukan bil pertama
:6
:3
Jawab !
#include <stdio.h>
int terbesar (int n1, int n2) //Deklarasi Fungsi 1
{
if(n1>n2)
return n1;
else
return n2;
}
int terkecil (int n1, int n2) //Deklarasi Fungsi 2
{
if(n1<n2)
return n1;
else
return n2;
}
int main() //Pemanggilan Fungsi
{
int a,b,c,d;
printf("Masukan bilangan pertama : ");scanf("%d",&a);
printf("Masukan bilangan kedua : ");scanf("%d",&b);
printf("\n");
c=terbesar (a,b);
d=terkecil (a,b);
printf("Bilangan yang lebih besar adalah : %d\n",c);
printf("Bilangan yang lebih kecil adalah : %d",d);
return 0;
}
sebagai hasilnya :
MODUL 7
STRUKYUR (STRUCT)
Dasar Teori
Struktur (struct) adalah suatu kumpulan variabel yang berisi kumpulan data dengan
setiap elemen datanya mempunyai elemen berbeda. Bentuk struktur data mempunyai
satu nama, namun memiliki tipe data yang berbeda ataupun sama. Variabel-variabel
tersebut memiliki kaitan satu sama yang lain.
Struktur adalah sekumpulan variabel yang masing-masing tipe datanya bisa berbeda,
namun dikelompokan kedalam satu nama. Dalam C++ struktur sering diistilah kan
sebagai struct.
Deklarasi
Ada dua cara mendeklarasikan struktur, yaitu :
Deklarasi 1 :
Struct nama_struct
{
Tipe_data nama_var;
Tipe_data nama_var;
......
};
Deklarasi 2 :
Struct nama_struct
{
Tipe_data nama_var;
Tipe_data nama_var;
......
} nama struktur ;
Contoh :
Struct mahasiswa
{
Char NIM [8]
Char Nama [50]
Float ipk;
}
Struct mahasiswa
{
Char NIM [8]
Char Nama [50]
Float ipk;
} mhs;
Cara Pengaksesan
Untuk mengakses sebuah elemen dalam sebuah struct digunakan operator titik (.)
Sintaks :
Nama_Struktur . Nama_var;
Nested Struct
Sebuah kondisi dimana di dalam sebuah struct terdapat tipe data berupa struct lagi
Bentuk :
Struct nama_struktur2
{
Tipe_data nama_var;
Tipe_data nama_var;
Struct nama_struktur1
Nama_var;
......
}
Array of struct
Apabila hendak menggunakan 1 struct untuk beberapa kali, ada dua cara :
1. Deklarasi Manual
2. Array of struct
Praktikum
Praktikum 1
Tulis source code berikut :
#include <stdio.h>
struct lingkaran
{
int jari_jari;
float keliling;
float luas;
};
void main()
{
struct lingkaran L;
//deklarasi variable struct
printf("\nMasukan jari-jari lingkaran = ");
scanf("%i", &L.jari_jari);
//input
L.keliling = 2 * 3.14 * L.jari_jari;
//proses
L.luas = 3.14 * L.jari_jari * L.jari_jari;
//proses
printf("\nKelilingnya = %f", L.keliling); //output
printf("\nLuasnya = %f", L.luas);
//output
}
Sebagai hasilnya :
Praktikum 2
Tulis source code berikut :
#include <iostream.h>
#include <string.h>
struct mahasiswa
{
char Nama [40];
char NIM [11];
char Alamat [50];
float IPK;
};
void main()
{
mahasiswa mhs;
cout <<"Nama : ";
cin.getline(mhs.Nama, 40);
cout <<"NIM
: ";
cin.getline(mhs.NIM, 11);
cout <<"Alamat : ";
cin.getline(mhs.Alamat, 50);
cout <<"IPK
: ";
cin >> mhs.IPK;
cout << endl;
cout <<"Nama Anda
: " << mhs.Nama << endl;
cout <<"NIM Anda
: " << mhs.NIM << endl;
cout <<"Alamat Anda : " << mhs.Alamat << endl;
cout <<"IPK Anda
: " << mhs.IPK << endl;
}
Sebagai hasilnya :
Tugas Modul 7
1. Buat program untuk mencatat data siswa yang terdiri dari field : Nama, Alamat,
Tempat tanggal lahir, Jenis kelamin.
2. Buatlah struct untuk data buku yang berisi tentang : kode buku, nama buku, tahun
terbit, pengarang dan harga. Gunakan array of struct.
Jawab !
1. Ketik source code berikut :
# include <iostream.h>
# include <string.h>
struct Biodata
{
char Nama[30];
char Alamat[20];
char TTL[50];
char Jenis_kelamin;
};
int main()
{
Biodata Mhs;
cout << "Nama\t\t : ";
cin.getline(Mhs.Nama, 30);
cout << "Alamat\t\t : ";
cin.getline (Mhs.Alamat, 20);
cout << "TTL\t\t : ";
cin.getline(Mhs.TTL, 50);
cout << "Jenis_kelamin\t : ";
cin >> Mhs.Jenis_kelamin;
cout << endl;
cout << "Nama Anda\t\t : " << Mhs.Nama << endl;
cout << "Alamat Anda\t\t : " << Mhs.Alamat << endl;
cout << "TTL Anda\t\t : " << Mhs.TTL << endl;
cout << "Jenis kelamin Anda\t : " << Mhs.Jenis_kelamin << endl;
return 0;
}
Sebagai hasilnya :
clrscr();
printf("\t DATA BUKU\n");
cout<<"__________________________"<<endl<<endl;
for(a=1;a<3;a++)
{
cout<<"masukan kode buku\t :";cin>>buku[a].kode_buku;
cout<<"masukan nama buku\t :";cin>>buku[a].nama_buku;
cout<<"masukan tahun terbit\t :";cin>>buku[a].tahun_terbit;
cout<<"masukan pengarang\t :";cin>>buku[a].pengarang;
cout<<"masukan harga\t\t :";cin>>buku[a].harga;
cout<<endl;
}
cout<<"\tDATA BUKU"<<endl;
for(a=1;a<3;a++){
cout<<"data ke\t :"<<a<<endl;
cout<<"kode buku\t :"<<buku[a].kode_buku<<endl;
cout<<"nama buku\t :"<<buku[a].nama_buku<<endl;
cout<<"tahun terbit\t :"<<buku[a].tahun_terbit<<endl;
cout<<"pengarang\t :"<<buku[a].pengarang<<endl;
cout<<"harga\t\t :"<<buku[a].harga<<endl;
cout<<endl;
}
getch();
}
Sebagai hasilnya :
MODUL 8
TUMPUKAN (STACK)
Dasar Teori
Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah diletakan diatas
data yang lain. Satu hal yang perlu diingat bahwa kita bisa menambah (menyisipkan)
data dan mengambil (menghapus) data melalui ujung yang sama, yang disebut
sebagai ujung atas stack ( top of stack ). Stack mempunyai sifat LIFO ( LAST IN
FIRST OUT ) yang terakhir masuk adalah yang pertama keluar.
Ada beberapa operasi dasar dalam stack, yaitu menyisipkan data (push), operasi
menghapus data (pop) dan lainnya. Berikut ini beberapa operasi dalam stack :
1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
3. Clear : digunakan untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh.
Inisialisasi STACK
1. Pada mulanya isi top dengan -1,karena array dalam bahasa C dimulai dari 0,
yang berarti bahwa data dalam stack adalah KOSONG!
2. Top adalah suatu variabel penanda dalam stack yang menunjukan elemen teratas
data stack sekarang.
3. Bentuk umum :
Void inisialisasi ( )
{
Tumpuk.top = -1;
}
Fungsi isFull
1. Untuk memeriksa apakah stack sudah penuh?
2. Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK -1
maka full
3. Bentuk umum :
Int isFull ( )
{
If (tumpuk.top ==
MAX_STACK -1)
Return 1;
Else
Return 0;
}
Fungsi isEmpty
1. Untuk memeriksa apakah data stack masih kosong?
2. Dengan cara memeriksa top of stack, jika masih -1 maka data stack masih
kosong!
3. Bentuk umum :
Int isEmpty ( )
{
If (tumpuk.top == -1)
Return 1;
Else
Return 0;
}
Fungsi Push
1. Untuk memasukan data kedalam stack.
2. Jika data belum penuh,
Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada
penambahan kedalam array data stack.
Isikan data baru kedalam stack berdasarkan top of stack yang telah di
increment sebelumnya.
4. Bentuk umum :
Fungsi Pop
1. Untuk mengambil data stack yang terletak paling atas (data yang ditunjuk
oleh TOP).
2. Tampilkan terlebih dahulu nilai elemen teratas stack dengan mengakses
indeks sesuai dengan top of stacknya, baru dilakukan di-decrement nilai
top of stacknya sehingga jumlah elemen stack berkurang.
3. Bentuk umum :
void pop ( )
{
Printf(data terambil =
%s\n,
tumpuk.data[tumpuk.to
p] );
Tumpuk.top--;
}
Praktikum
Praktikum 1
Ketik source code berikut :
#include <conio.h>
#include <string.h>
#include <stdio.h>
void main ()
{
char *str = "LIKU LIKU LAKI LAKI TAK LAKU LAKU";
printf("%s\r\n",strrev(str));
printf("%s\r\n",str);
}
Sebagai hasilnya :
Praktikum 2
Ketik source code berikut :
#include<stdio.h>
#define N 20
main( )
{
int nilai [N],i,jml;
printf("jmlh maksimal tumpukan (<=20)=");
scanf("%d",&jml);
for(i=0; i<=jml; i++)
{
if (i>=jml)
printf("tumpukan penuh");
else
{
printf("data ke-%d=",i+1);scanf("%d",&nilai[i]);
}
}
for(i=0; i<=jml; i++)
{
printf("\ndata ke-%d=%d",i+1,nilai[i]);
}
return 0;
}
Sebagai hasilnya :
Tugas Modul 8
1. Buatlah program tumpukan (stack)
sebagai berikut :
Masukan kata
:STACK
Setelah dibalik : K C A T S
Jawab.
1. Ketik source code berikut :
#include <conio.h>
#include <string.h>
#include <stdio.h>
void main ()
{
char *str = "S T A C K";
printf("%s\r\n",strrev(str));
printf("%s\r\n",str);
}
Sebagai hasilnya :
MODUL 9
ANTRIAN (QUEUE)
Dasar Teori
Antrian (queue) adalah duatu kumpulan data yang penambahan elemennya hanya
bisa dilakukan pada suatu ujung ( disebut dengan sisi belakang atau rear ), dan
penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain ( disebut atau
sisi depan atau front ) . antrian ( queue ) mempunyai prinsip FIFO ( First In First Out
) bahwa yang pertama masuk yang pertama keluar.
Operasi dasar queue
1. Create Queue
Bentuk umum :
Void create ( )
{
Antrian.Head = -1;
Antrian.head = -1;
}
2. Empty Queue
Kita tidak memeriksa head, karena head adalah tanda untuk kepala antrian (
elemen pertama dalam antrian ) yang tidak akan berubah-ubah
Bentuk umum :
Void IsEmpty ( )
{
If (antrian.tail = -1)
Return 1;
Else
Return 0;
}
3. Full Queue
Dengan cara mengecek nilai Tail, jika tail >= MAX-1 (karena MAX-1
adalah batas elemen array pada C) berarti sudah penuh
Bentuk umum :
void isfull ( )
{
if (antrian.tail = max-1)
return 1;
else
return 0;
}
4. Enqueue
Bentuk umum :
Dengan cara menggeser semua elemen antrian kedepan dan mengurangi tail
dengan 1
Bentuk umum :
int dequeue ( )
{
int i;
int e = antrian.data[antrian.head];
for (i=antrian.head;i<=antrian.tail;i++)
{
antrian.data[i]=antrian.data[i+1];
}
antrian.tail--;
return e;
}
6. Clear queue
Untuk menghapus elemen elemen antrian dengan cara membuat tail dan
Head = -1
Bentuk umum :
void clear ( )
{
antrian.head = -1;
antrian.tail = -1;
printf(data clear);
}
7. Tampil queue
Bentuk umum :
Void clear ( )
{
Antrian.head = -1;
Antrian.tail = -1;
Printf(data clear);
}
Praktikum
Praktikum 1
Ketik source code berikut :
# include <iostream.h>
# include <conio.h>
class Linked_list_Queue
{
private :
struct node
{
int data;
node *next;
};
node *rear;
node *entry;
node *print;
node *front;
public :
Linked_list_Queue();
void Delete();
void Insert();
void print_list();
void show_working();
};
Linked_list_Queue::Linked_list_Queue( )
{
rear = NULL;
front = NULL;
}
//-------Insert ()-------//
void Linked_list_Queue::Insert()
{
int num;
cout << "\n\n\n\n\n\t Masukkan angka dalam Queue : ";
cin >> num;
entry=new node ;
if (rear==NULL)
{
entry->data=num;
entry->next=NULL;
rear=entry;
front=rear;
}
else
{
entry->data=num;
entry->next=NULL;
rear->next=entry;
rear=entry;
}
cout <<"\n\n\t *** "<<num<<"sudah masuk dalam Queue."<<endl;
cout <<"\n\n\n\t\t Pres any key to return to menu. ";
getch();
}
//------------Delete()------------//
void Linked_list_Queue::Delete()
{
if (front==NULL)
cout <<"\n\n\n\t *** Error : Queue is empty. \n"<<endl;
else
{
int deleted_element=front->data;
node *temp;
temp=front;
front=front->next;
delete temp;
cout <<"\n\n\n\t *** "<<deleted_element<<" dihapus dari
Queue."<<endl;
}
cout <<"\n\n\n\t\t Pres any key to return to menu. ";
getch ();
}
//--------------print_list()------------//
void Linked_list_Queue::print_list()
{
print=front;
if (print!=NULL)
cout <<"\n\n\n\n\n\t Angka-angka yang ada dalam Queue adalah
:\n"<<endl;
else
cout <<"\n\n\n\n\n\t *** Tidak ada yang ditampilkan. "<<endl;
while (print!=NULL)
{
cout <<"\t "<<print->data<<endl;
print=print->next;
}
cout<<"\n\n\n\t\t Pres any key to return to menu. ";
getch();
}
//-------------show_working()--------------//
void Linked_list_Queue::show_working()
{
char Key=NULL;
do
{
clrscr();
gotoxy(5,5);
cout<<"***Implementation of Linked List as a Queue***"<<endl;
gotoxy(10,8);
cout<<"Pilih salah satu Menu :"<<endl;
gotoxy(15,10);
cout<<"- Press\'I\' to Masukkan data dalam Queue"<<endl;
gotoxy(15,12);
cout<<"- Press\'D\' to Hapus data dari Queue"<<endl;
gotoxy(15,14);
cout<<"- Press\'P\' to Tampilkan data dari Queue"<<endl;
gotoxy(15,16);
cout<<"- Press\'E\' to Exit"<<endl;
Input :
gotoxy(10,20);
cout<<"
";
gotoxy(10,20);
cout<<"Masukkan Pilihan :";
Key=getche();
if (int(Key)==27 || Key=='e' || Key=='E')
break;
else if(Key=='i' || Key=='I')
Insert();
else if(Key=='d' || Key=='D')
Delete();
else if(Key=='p' || Key=='P')
print_list();
else
goto Input;
}
while(1);
}
//---------------main()-----------------//
int main()
{
Linked_list_Queue obj;
obj.show_working();
return 0;
}
Sebagai hasilnya :
Tugas Modul 9
1. Tambahkan function untuk mencari suatu elemen dalam queue
2. Tambahkan function untuk mengedit suatu elemen dalam queue
3. Carilah nilai total,rata-rata, terbesar dan terkecil dari elemen-elemen queue dalam
function tersendiri.