MODUL PRAKTIKUM
“ALGORITMA DAN PEMROGRAMAN I”
LABORATORIUM KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS SRIWIJAYA
2015
DIBUAT OLEH DISAHKAN OLEH DIKETAHUI OLEH
TIM LABORANLABORATORIUMFASILKOM UNSRI
TIM DOSEN SISTEMINFORMASI FASILKOM
UNSRI
KEPALA LABORATORIUM
Universitas SriwijayaFakultas Ilmu KomputerLaboratorium
LEMBAR PENGESAHANMODUL PRAKTIKUM
SISTEM MANAJEMENMUTU
ISO 9001:2008
No. Dokumen ……. Tanggal JANUARI 2015Revisi 0 Halaman 2 DARI 48
MODUL PRAKTIKUM
Mata Kuliah PraktikumKode Mata Kuliah PraktikumSKSProgram StudiSemester
: Algoritma dan Pemrograman I: FIK08111: 2: Manajemen Informatika: 1 (Ganjil)
2
Daftar Isi
Cover ......................................................................................................
Lembar Pengesahan ...............................................................................
Daftar Isi .................................................................................................
Pengenalan ..............................................................................................
Penerapan konsep variable dan tipe data ................................................
Penerapan konsep input dan output ........................................................
Quis .........................................................................................................
Penerapan konsep pengkondisian ...........................................................
Penerapan konsep pengulangan .............................................................
Penerapan konsep pengulangan (lanjutan) .............................................
UTS .........................................................................................................
Penerapan konsep array ..........................................................................
Penerapan konsep prosedur/fungsi .........................................................
Pengenalan pointer..................................................................................
Review materi ........................................................................................
1
2
3
4
7
10
15
16
26
28
34
35
38
44
47
3
1. PENGENALAN
1.1. ALGORITMAAlgoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu untuk
memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus dapat dikerjakan
dan mempunyai efek tertentu.
Algoritma dapat dituliskan dengan banyak cara, mulai dari menggunakan bahasa alami
yang digunakan sehari-hari, simbol grafik bagan alir, sampai menggunakan bahasa
pemograman seperti bahasa C atau C++.
1.2. C & C++Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa pendahulunya.
Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchie pada sekitar tahun 1972, dan
sekitar satu dekade setelahnya diciptakanlah C++, oleh Bjarne Stroustrup dari Laboratorium
Bell, AT&T, pada tahun 1983. C++ cukup kompatibel dengan bahasa pendahulunya C. Pada
mulanya C++ disebut “ a better C “. Nama C++ sendiri diberikan oleh Rick Mascitti pada
tahun 1983, yang berasal dari operator increment pada bahasa C.
Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa ini mendukung
pemrograman yang berorientasi objek ( OOP / Object Oriented Programming).
1.3. LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++Langkah-langkahnya :
1. Bukalah software Turbo C++, akan terlihat tampilan awal Turbo C++2. Tulis source code program bahasa C++.
Source code C++ dapat ditulis pada text editor Turbo C++.
3. Kompile file dengan (ALT + C atau pilih submenu Compile)Kompile file dijalankan Untuk mengubah source code menjadi sebuah program, kita
gunakan compiler. Setelah source code tercompile, terbentuklah sebuah file objek
dengan ekstension “ .obj “. File “ .obj “ ini belum merupakan sebuah program
executable.
4. Jalankan Program dengan (CTRL+F9 atau pilih submenu Run)Setelah kita kompile file yang berisi source code, maka sebagai hasil kompilasi
tersebut kita akan mendapatkan suatu file yang bisa dijalankan (executable file).
4
Menjalankan program yang kita buat berarti menjalankan file hasil proses kompilasitersebut.
5. Untuk menyimpan pilih menu Save As
1.4. PENGENALAN C++Setiap program C++ mempunyai bentuk umum :
# prepocessor directivevoid main()
{
// Batang Tubuh Program Utama
}
Untuk lebih jelas, kita akan melihat contoh program berikut ini lengkap dengan analisisnya.
Contoh 1://program pertama
//nama file pertama.cpp
//nama pembuat : Badu
#include<iostream.h>void main()
{
cout<<"Hallo dunia"<<endl;
}
Analisisnya :Pada awal program ditulis //program pertama. Tanda // menyatakan bahwa tulisan yang
berada setelah tanda // merupakan komentar yang berfungsi hanya sebagai keterangan dan
tidak akan ditampilkan oleh program. Include adalah salah satu pengarah preprocessor
directive yang dijalankan terlebih dahulu saat proses kompilasi terjadi. Ditulis setelah
tanda # dan berakhiran .h yaitu file yang berisi sebagai deklarasi. Ada banyak contoh dari
file ini, salah satu nya adalah yang kita gunakan ini, yaitu #include<iostream.h> file ini
diperlukan pada program yang melibatkan objek cout. void main() merupakan tanda
bahwa program yang kita buat adalah program utama. Penulisan program utama harus
dimulai dan diakhiri dengan tanda kurung kurawal {}. Pernyataan cout merupakan objek
yang digunakan untuk mengarahkan data kedalam standar output (data yang akan dicetak
pada layar). Tanda<< merupakan operator penyisipan, yaitu batasan dalam cout. Untuk
5
kata-kata yang akan ditampilkan, harus dibatasi dengan tanda “…”. Pada akhirpernyataan, kita dapat mengakhiri nya dengan endl yang berarti endline atau langsung
diakhiri dengan tanda semicolon (;). Setiap pernyataan harus diakhiri dengan tanda
semicolon.
Contoh 2://program pertama
//nama file pertama.cpp
//nama pembuat :Badu
#include <iostream.h>
void main()
{
//fungsi utama untuk memulai program
cout<<"Haloo Dunia"<<endl; //isi program
cout<<"Nama saya : Badu"<<endl;
cout<<"Ini adalah program pertama saya"<<endl;
}
Analisisnya:Sama seperti contoh 1, namun pada program ini, pernyataannya lebih dari satu. Tiap
pernyataan diawali dengan tanda cout dan diakhiri dengan tanda endl;.Tanda endl;
digunakan agar pernyataan kedua pindah ke line yang berbeda dengan pernyataan 1, dan
seterus nya. Maka, output nya adalah
Haloo DuniaNama saya :Badu
Ini adalah program pertama saya
Apabila tidak diberi tanda endl; dan langsung diakhiri dengan tanda semicolon setelahtanda petik ganda yang terakhir, maka output nya menjadi:
Haloo DuniaNama saya :BaduIni adalah program pertama saya
6
2. PENERAPAN KONSEP VARIABEL DAN TIPE DATA
2.1. VARIABELVariabel 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 :
1. 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 nama,Nama dan NaMadianggap berbeda.
2. Tidak boleh mengandung spasi. Kalaupun diperlukan maka yang digunakan adalah
tanda underscore “_”.
3. Tidak boleh mengandung simbol-simbol khusus.Yang termasuk simbol khusus yang
tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, =dsb.
4. Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
2.2. DEKLARASIDeklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program.
Identifier dapat berupa variable, konstanta dan fungsi.
2.3. TIPE DATAType data diperlukan untuk mengetahui jangkauan dari tiap-tiap variabel.
Agar lebih jelas mengenai bab ini, kita akan melihat contoh soal dan analisisnya.
contoh 1://program variabel 1
//nama file var1.cpp
#include <iostream.h>
void main() //fungsi utama untuk memulai program
{
int a; //deklarasi variabel dengan tipe data integer
long b; //deklarasi variabel dengan tipe data long
7
float c; //deklarasi variabel dengan tipe data float
double d; //deklarasi variabel dengan tipe data double
char e; //deklarasi variabel dengan tipe data char
a=7;
b=100000;
c=1.2;
d=12E7;
e='s';
cout<<"Isi variabel a adalah "<<a<<endl;
cout<<"Isi variabel b adalah "<<b<<endl;
cout<<"Isi variabel c adalah "<<c<<endl;
cout<<"Isi variabel d adalah "<<d<<endl;
cout<<"Isi variabel e adalah "<<e<<endl;
}
Analisisnya:Berbeda dari program sebelumnya, pada program kali ini, kita sudah membahas
mengenai variabel dan tipe data.Variabel adalah suatu pengenal yang digunakan
untuk mewakili suatu nilai tertentu.Nilai dari variabel ini dapat diubah-ubah sesuai
kebutuhan.Pada program ini, variabel nya diwakili oleh huruf a, b, c, d dan e.
Variabel-variabel itu harus dideklarasikan.Maksudnya, harus ditulis type data dari
tiap-tiap variabel.Terdapat banyak type data dalam bahasa C++.Dalam program ini,
kita menggunakan 6 type data.Untuk variabel a, digunakan type data integer (yang
disingkat dengan int).Type data integer hanya dapat menampilkan bilangan dalam
bentuk bilangan bulat dan tidak dalam bentuk pecahan.Type data ini mempunyai
jangkauan dari -32768 hingga -32767.Type data untuk variabel b adalah long.Type
data ini mempunyai jangkauan yang lebih luas daripada type data integer.Jangkauan
nya dari -2.147.438.648 hingga 2.147.438.647.Berbeda dengan type data untuk
variabel c, yaitu float. Type data float dapat digunakan untuk seluruh bilangan bulat,
termasuk bilangan pecahan. Variabel d menggunakan type data double yang
mempunyai jangkauan yang besar. Yang terakhir, variabel e menggunakan type data
char atau character yang khusus untuk menampilkan sebuah huruf. Dibawah
pendeklarasian, sudah dituliskan berapa nilai untuk masing-masing variabel.Jadi,
variabel yang ditampilkan berupa output karena sudah ditentukan berapa
8
nilainya.Penentuan nilai variabel yang tetap dapat dikatakan juga pendeklarasiandengan konstanta. Penulisannya diawali dengan kata const<type data><nama
variabel>= <nilai konstanta>
3. PENERAPAN KONSEP INPUT OUTPUT
3.1. OPERATOROperator adalah symbol yang biasa dilibatkan dalam program untuk melakukan sesuatu
operasi atau manipulasi.
3.1.1. OPERATOR PENUGASANOperator penugasan dalam bahasa C++ berupa tanda sama dengan(“=”).
Operator
+
-
*
/
%
-
Deskripsi
Penjumlahan(add)
Pengurangan(Substract)
Perkalian(Multiply)
Pembagian(Divide)
Sisa Pembagian Integer(Modulus)
Negasi(Negate)
Contoh
m+n
m-n
m*n
m/n
m%n
-m
3.1.2. OPERATOR HUBUNGAN(PERBANDINGAN)
Operator Arti Contoh
== Sama Dengan(bukan X==Y Apakah X sama dengan Yassignment)
!=
>
<
>=
Tidak sama dengan
Lebih besar
Lebih kecil
Lebih besar atau sama
X!=Y
X>Y
X<Y
X>=Y
Apakah X tidak sama dengan Y
Apakah X lebih besar Y
Apakah X lebih kecil Y
Apakah X lebih dari sama dengan Ydengan
<= Lebih kecil atau samadengan
X<=Y Apakah X kurang dari sama denganY
3.1.3. OPERATOR NAIK DAN TURUN(INCREMENT DAN DECREMENT)Operator Increment ++
Operator Decrement --
Operator pre-increment dan post-decrement mempunyai fungsi yang sama yaitu,
untuk menambah atau mengurangi satu nilai.
10
3.1.4. OPERATOR BITWISE
OPERATOR
<<
>>
&
I
^
~
DESKRIPSI
Geser n bit ke kiri
Geser n bit ke kanan
Bitwise AND
Bitwise OR
Bitwise XOR
Bitwise NOT
CONTOH
M << N
M >> N
M&N
MIN
M^N
~M
NB : Seluruh operator bitwise hanya bisa dikenakan pada operand bertipe data int atauchaR.
3.1.5. OPERATOR LOGIKAOperator logika digunakan untuk menghubungkan dua atau lebih ungkapan menjadi
sebuah ungkapan berkondisi.
Operator
&&
II
!
Deskripsi
Logic AND
Logic OR
Logic NOT
Contoh
m && n
m II n
!m
3.1.6. OPERATOR KONDISIOperator kondisi digunakan untuk memperoleh nilai dari dua kemungkinan
ungkapan1 ?ungkapan2 : ungkapan3
Bila nilai ungkapan1 benar, maka nilainya sama dengan ungkapan2, bila tidak maka
nilainya sama dengan ungkapan3
3.2.STATEMENT I/OPada C++ terdapat 2 jenis I/O dasar, yaitu:
a. Statemen Input adalah Statemen / fungsi yang digunakan untuk membaca data dari
inputing device (keyboard/mouse), contoh : cin (character in)
b. Statemen Output adalah Statemen yang digunakan untuk menuliskan data ke layar
monitor, contoh : cout (character out)
Contoh-contoh soal beserta analisisnya antara lain:
11
dirumuskan dengan bba 1 . Dalam hal ini, yang pertama kita lakukan
Contoh 1://program menghitung nilai m
//nama file nilai_m.cpp
#include<iostream.h>
void main()
{
float a, b, c, d, m;
cout<<"Masukkan nilai a ";cin>>a;
cout<<"Masukkan nilai b ";cin>>b;
cout<<"Masukkan nilai c ";cin>>c;
cout<<"Masukkan nilai d ";cin>>d;
m = ((a-b)/(3*a*c))*(1-(b/(c*d)));
cout<<"Nilai m adalah "<<m;
}
Analisisnya:Program kali ini merupakan program yang sudah mulai menggunakan operator
aritmatika. Dalam program ini, kita menghitung berapa besar nilai m yang
3 a c c d
adalah melakukan pendeklarasian terhadap variabel-variabel yang ada. Karena operasiyang akan dilakukan adalah operasi perhitungan matematis, maka kita juga harus
menggunakan type data yang sesuai untuk angka. Sebagian besar hasil dari
pembagian adalah bilangan pecahan.Oleh sebab itu, kita tidak bisa menggunakan type
data integer.Jadi, pada program kali ini, kita menggunakan type data float. Pada saat
pengeksekusian, program akan meminta masukan berupa nilai untuk variabel-variabel
yang ada. Statement cout merupakan statement output karena menampilkan hasil
yang kita buat dalam program. Sedangkan statement cin merupakan statement input
karena merupakan statement untuk memasukkan nilai variabel yang kita inginkan.
Kemudian, program akan memasukkan nilai-nilai tersebut ke dalam rumus yang ada.
Lalu, program akan menapilkan hasil berupa nilai m yang ingin kita ketahui.
Contoh 2:
12
//program menghitung nilai x
//nama file nilai_x.cpp
#include<iostream.h>
void main()
{
float b, c, a, x;
cout<<"Masukkan nilai a ";cin>>a;
cout<<"Masukkan nilai b ";cin>>b;
cout<<"Masukkan nilai c ";cin>>c;
x = ((-b)+(2*c*c)+(4*a*b))/2*c;
cout<<"Nilai x yang didapatkan adalah "<<x;
}
Analisisnya:Program ini hampir sama dengan program sebelumnya. Yang berbeda hanya lah
rumus yang digunakan.Jika kita sudah mengerti tentang operasi matematika dan
bagaimana kita menerjemahkannya kedalam bahasa C++, maka dengan mudah kita
dapat memodifikasi dan mengembangkan nya menjadi program-program lain yang
lebih rumit.Dalam program ini, pada awal nya program juga melakukan
pendeklarasian. Karena operasi yang dilakukan juga terdapat operasi pembagian,
maka pada program ini juga kita menggunakan type data float. Variabel yang
digunakan juga merupakan menggunakan statement input-output untuk menampilkan
nya. Selanjutnya, program akan memasukkan nilai-nilai variabel itu kedalam rumus
yang ada, barulah kemudian menampilkan hasil nilai x yang kita inginkan.
Contoh 3://program menghitung volume bola
//nama file volume_bola.cpp
#include<iostream.h>
void main()
{
const float phi=3.14;
13
float volume, r;
cout<<"Masukkan jari-jari bola ";cin>>r;
volume = 1.3*phi*r*r*r;
cout<<"Volume bola adalah "<<volume;
}
Analisisnya:Program kali ini agak sedikit berbeda dengan dua program sebelumnya.Pada program
menghitung volume bola ini, terdapat suatu variabel konstanta yang nilainya
tetap.Variabel yang termasuk variabel konstanta yaitu phi. Seperti yang kita ketahui,
phi bernilai 3,14. Oleh karena itu, akan lebih baik jika nilai phi itu dijadikan sebagai
suatu konstanta daripada dijadikan sebagai masukan dari pengguna program.
Konstanta juga memerlukan type data. Karena nilai phi merupakan bilangan
desimal, maka type data yang digunakan adalah type data float. Setelah itu, program
akan meminta masukan berupa jari-jari bola yang akan dicari volume nya. Kemudian,
akan dilakukan perhitungan dengan rumus yang ada. Lalu hasilnya akan ditampilkan
sesuai dengan hasil perhitungan.
14
Nama Variabel Benar/Salah Alasan PembetulannamaNama andaNama_anda$Nama$Anda80mahasiswarata-rataNIMhuruf5
4. QUISSoal :1. Isilah tabel berikut ini untuk melakukan penelusuran kebenaran penulisan nama variabel-
variabel ini.
2. Buat sebuah program untuk menampilkan data mahasiswa berupa nama, nim, umur, nilai(dalam decimal). Yang mana data tersebut berupa inputan dari user !
15
5. PENERAPAN KONSEP PENGKONDISIAN
5.1. PERNYATAAN IFBentuk pernyataan bentuk ini ada dua macam, if saja atau if dan else.
Bentuk Umumnya Satu KasusPernyataan dilaksanakan jika dan hanya jika kondisi yang ingin terpenuhi, jika tidak
program tidak memberkan hasil apa-apa.
if (kondisi)pernyataan;
Bentuk Umum Dua Kasus:
if (kondisi)pernyataan1;
elsepernyataan2;
Bentuk Umum Banyak Kasus:
if (kondisi){
Pernyataan1;Pernyataan1a;Peryataan1b;
}else{
Pernyataan 2;Pernyataan2a;Pernyataan2b;
}
5.2. PERNYATAAN SWITCHPernyataan switch adalah pernyataan yang digunkan untuk menjalankan salah satu
pernyataan dari beberapa kemungkinan pernyataan, berdasarkan nilai dari sebuah ungkapan
dan nilai penyeleksian.
16
Bentuk Umumnya
switch(ekspresi){case konstanta1;
Pernyataan1;break;case konstanta2;
Pernyataan2;break;
::
case konstantaN;PernyataanN;
break;default:Pernyatanlain;}
Hal-hal yang perlu diperhatikan adalah:1. Dibelakang keyword case harus diikuti oleh sebuah konstanta, tidak boleh dikuti oleh
ekspresi atau variable.
2. Konstanta yang digunakan bertipe int atau char
3. jika bentuknya seperti diatas maka apabila ekspresi sesuai dengan konsatanta 2 maka
pernyataan2, pernyatan 3 samapi dengan pernyataan lain dieksekusi. Untuk mencegah
hal tersebut, digunkan keyword break;
Beberapa contoh program dengan menggunakan pengkondisian beserta analisisnya adalahsebagai berikut:
contoh 1 (pemilihan dengan dua kasus)://program menghitung nilai spmb
//nama file spmb.cpp
#include<iostream.h>
void main()
{
int nilai;
int mtk;
cout<<".::Program penentuan lulus spmb::.";
cout<<"Masukkan nilai Anda ";cin>>nilai;
cout<<"Masukkan nilai Matematika IPA Anda ";cin>>mtk;
17
if ((nilai>50) && (mtk>70))
{
cout<<"Anda lulus di IF Unsri layo";
}
else
{
cout<<"Anda lulus di IF Unsri layo tapi tahun depan";
}
}
Analisisnya:Program ini membahas mengenai penentuan lulus SPMB. Setelah melakukan
penginsialisasian terhadap variabel-variabel yang ada, program ini akan meminta
masukan berupa nilai pengguna. Barulah program akan masuk ke pemilihan. Dalam
pemilihan ini, ada dua kondisi yang mutlak harus terpenuhi.Tanda && berarti kondisi
pertama dan kondisi kedua harus terpenuhi. Jika salah satu kondisi tidak terpenuhi,
maka program akan masuk ke pernyataan kedua. Pernyataan 1 dilaksanakan jika dan
hanya jika kondisi yang ada terpenuhi, jika tidak, dilakukan pernyataan 2. Jika kita
tidak menggunakan pernyataan else, program tidak akan error, namun jika kita
menggunakan pernyataan else tanpa didahului dengan pernyataan if, maka program
akan error. Jika pernyataan 1 atau pernyataan 2 hanya terdiri atas baris, makan
kurung kurawal({ }) tidak diperlukan.
Contoh 2 (Pemilihan dengan banyak kasus)://program menghitung nilai akhir mahasiswa
//nama file nilai.cpp
#include<iostream.h>
void main()
{
float nilai,nilai1,nilai2,nilai3,nilai4;
cout<<".::Program penentuan nilai mahasiswa::.";
cout<<"Masukkan nilai Laporan Anda ";cin>>nilai1;
cout<<"Masukkan nilai Kuis Anda ";cin>>nilai2;
cout<<"Masukkan nilai Mid Anda ";cin>>nilai3;
cout<<"Masukkan nilai UAS Anda ";cin>>nilai4;
18
nilai=(0.15*nilai1)+(0.15*nilai2)+(0.30*nilai3)+(0.40*nilai4);
if ((nilai>85) && (nilai<=100))
{
cout<<"Nilai Anda adalah A";
}
else if ((nilai>=70) && (nilai<85))
{
cout<<"Nilai Anda adalah B";
}
else if ((nilai>=55) && (nilai<70))
{
cout<<"Nilai Anda adalah C";
}
else if ((nilai>=40) && (nilai<55))
{
cout<<"Nilai Anda adalah D";
}
else
{
cout<<"Nilai Anda adalah E";
}
}
Analisisnya:Pada program ini, ada beberapa pernyataan dengan masing-masingnya memuat kondisi
yang harus terpenuhi. Setelah dilakukan operasi matematis berupa penggabungan dari
nilai-nilai yang berupa masukan, akan dilakukan pemilihan terhadap nilai tersebut.
Program akan melihat apakah nilai akhir yang diperoleh memenuhi kondisi pada
pernyataan pertama. Ada dua kondisi yang harus terpenuhi, yaitu nilai harus lebih besar
dari 85 dan harus lebih kecil atau sama dengan 100. nilai 85 dan 100 itu adalah batasan
syarat nilai yang dapat memenuhi kondisi yang ada pada pernyataan pertama. Jika
kondisi pada pernyataan pertama tidak terpenuhi, maka selanjutnya program akan
meneruskan eksekusi ke pernyataan kedua. Jika kondisi pada pernyataan kedua belum
juga terpenuhi, maka akan kembali diteruskan ke pernyataan berikutnya. Begitu
seterusnya.
19
Contoh 3 (Pemilihan dengan banyak kasus yang rumit)://program menghitung nilai y
//nama file nilai_y.cpp
#include<iostream.h>
#include<math.h>
void main()
{
float a,b,c,D,x,x1,x2,y,y1,y2;
cout<<"Program Menghitung Nilai Y pada Persamaan
Kuadrat"<<endl;
cout<<"Masukkan nilai a = ";cin>>a;
cout<<"Masukkan nilai b = ";cin>>b;
cout<<"Masukkan nilai c = ";cin>>c;
D=(b*b)-(4*a*c);
cout<<"Nilai D adalah "<<D<<endl;
if (D>0)
{
cout<<"Akarnya adalah akar real berbeda"<<endl;
x1=((-b)+sqrt(D))/(2*a);
x2=((-b)-sqrt(D))/(2*a);
cout<<"Nilai X1 nya adalah "<<x1<<endl;
cout<<"Nilai X2 nya adalah "<<x2<<endl;
y1=a*x1*x1+b*x1+c;
y2=a*x2*x2+b*x2+c;
cout<<"Maka nilai Y1 adalah "<<y1<<endl;
cout<<"Maka nilai Y2 adalah "<<y2<<endl;
}
else if (D==0)
{
cout<<"Akarnya adalah akar kembar"<<endl;
x=(-b)/(2*a);
cout<<"Nilai X nya adalah "<<x<<endl;
y=a*x*x+b*x+c;
cout<<"Maka nilai Y adalah "<<y<<endl;
}
else if (D<0)
{
20
cout<<"Akarnya adalah imajiner"<<endl;
cout<<"Perhitungan tidak dapat dilanjutkan.."<<endl;
}
}
Analisisnya:
Program ini juga menggunakan pemilihan if-else.Pada program menghitung nilai x dan
y ini, perhitungan baru dapat dilakukan jika kondisi yang ada telah terpenuhi. Yang
menjadi kondisi disini adalah nilai dari diskriminan yaitu nilai D yang diperoleh dari
b 2 4ac . Ada tiga kemungkinan dari nilai diskriminan ini, yaitu diskriminan bernilai
positif yang lebih besar dari nol, diskriminan yang sama dengan nol, dan diskriminan
yang negatif yang lebih kecil dari nol. Kondisi-kondisi diskriminan ini akan
mempengaruhi akar-akar persamaan kuadrat yang akan diperoleh. Hal ini berpengaruh
pada nilai x yang akan dihasilkan. Untuk nilai diskriminan yang lebih besar dari nol,
maka akan dihasilkan akar-akar persamaan yang real dan berbeda antara x1 dan x2 nya.
Untuk nilai diskriminan yang sama dengan nol, akar-akar persamaan yang dihasilkan
adalah akar kembar yang sama antara x1 dan x2 nya. Namu, jika kondisi diskriminan
lebih kecil dari nol, maka akar dari diskriminan bernilai imajiner karena diskriminan
nya bernilai negatif.Dalam hal ini, program tidak bisa meneruskan perhitungan untuk
mencari nilai x dan y nya. Pada awalnya, program akan meminta masukan berupa nilai-
nilai a, b, dan c. Kemudian program akan melakukan perhitungan untuk mengetahui
nilai diskriminan. Jika program sudah mendapatkan berapa nilai diskriminan nya, maka
akan masuklah ke proses pemilihan. Jika nilai diskriminan yang didapatkan cocok
dengan kondisi yang disyaratkan dalam program, maka program akan melakukan
operasi-operasi yang ada pada pernyataan pertama. Namun, jika nilai diskriminan nya
tidak memenuhi kondisi yang disyaratkan pada pernyataan pertama, maka program
akan meneruskan nya ke pernyataan-pernyataan berikutnya sampai didapatkan nilai
yang diperoleh memenuhi kondisi yang ada. Pada pernyataan pertama, terdapat
perintah sqrt yang berarti menentukan akar dari diskriminan, maka dalam #include
harus ditambahkan #include<math.h> yang berfungsi untuk menggunakan operasi
sqrt.
Contoh 4 (Pemilihan Menu)://program menu volume bangun ruang
//nama file pilihan.cpp
21
#include<iostream.h>
void main()
{
float menu,r,s,t,p,l,volume_balok,volume_kubus,volume_bola;
const float phi=3.14;
cout<<"Menu Pencarian Volume Bangun Ruang"<<endl;
cout<<"1. Kubus"<<endl;
cout<<"2. Balok"<<endl;
cout<<"3. Bola"<<endl;
cout<<"4. Selesai"<<endl;
cout<<"masukkan pilihan anda= ";cin>>menu;
cout<<endl;
if (menu==1)
{
cout<<"Masukan besar sisinya = ";cin>>s;
volume_kubus=s*s*s;
cout<<"Volume Kubus nya adalah = "<<volume_kubus<<endl;
}
else if (menu==2)
{
cout<<"Masukan panjang sisinya = ";cin>>p;
cout<<"Masukan lebar sisinya = ";cin>>l;
cout<<"Masukan tingginya = ";cin>>t;
volume_balok=p*l*t;
cout<<"Volume Balok nya adalah = "<<volume_balok<<endl;
}
else if (menu==3)
{
cout<<"Masukan jari-jarinya = ";cin>>r;
volume_bola=1.33*phi*r*r*r;
cout<<"Volume Bola nya adalah = "<<volume_bola<<endl;
}
else if (menu==4)
{
cout<<"Terimakasih telah menggunakan program
ini.."<<endl;
}
}
22
Analisisnya:Program ini sama saja dengan program-program sebelumnya. Namun, di awal program,
pengguna program harus memilih apa yang mereka inginkan. Setelah itu, barulah
masuk ke badan pemilihan. Jika pengguna memilih angka 1 pada menu, maka
akankeluar tampilan volume yang akan mereka cari. Baik berupa masukan data atau
keluaran hasil yang mereka inginkan.Jika pengguna memilih nomor yang tidak ada
pada menu, maka tidak ada kondisi yang terpenuhi dan program menjadi inactive.
Contoh 5 (Penggunaan Switch-case)://program switch case
//nama file : switch.cpp
#include <iostream.h>
void main()
{
int pilih ;
cout<<"Menu hari "<<endl;
cout<<"========="<<endl;
cout<<"1.Senin"<<endl;
cout<<"2.Selasa"<<endl;
cout<<"3.Rabu"<<endl;
cout<<"4.Kamis"<<endl;
cout<<"5.Jum'at"<<endl;
cout<<"6.Sabtu"<<endl;
cout<<"7.Minggu"<<endl;
cout<<"masukkan pilihan anda :";
cin>>pilih ;
switch(pilih)
{
case 1:
{
cout<<"Anda Memilih Hari Senin "<<endl;
break;
}
23
case 2:
{
cout<<"Anda Memilih Hari Selasa "<<endl;
break;
}
case 3:
{
cout<<"Anda Memilih Hari Rabu "<<endl;
break;
}
case 4:
{
cout<<"Anda Memilih Hari Kamis "<<endl;
break;
}
case 5:
{
cout<<"Anda Memilih Hari Jum'at "<<endl;
break;
}
case 6:
{
cout<<"Anda Memilih Hari Sabtu "<<endl;
break;
}
case 7:
{
cout<<"Anda Memilih Hari Minggu "<<endl;
break;
}
}
}
Analisisnya:
Sama saja dengan penggunaan if-else.Tidak banyak contoh program yang menggunakan
switch-case ini.Karena program ini menggunakan switch-case, maka type data nya
haruslah integer atau character. Setelah ditampilkan sebuah menu pilihan hari, maka
pengguna akan memilih nomor hari yang diinginkan. Setelah itu, maka program akan
mulai masuk ke pemilihan. Setelah switch, ditulis ekspersi atau variabel yang
mendefinisikan nomor-nomor yang dipilih pada menu. Dibelakang keyword case harus
24
diikuti oleh sebuah konstanta yang bertipe integer atau character. Dalam setiap case,harus digunakan keyword break. Jika tidak menggunakan keyword break, maka seluruh
pernyataan akan dieksekusi juga. Jika menggunakan keyword break, maka yang
akandieksekusi hanyalah pernyataan yang dipilih oleh pengguna. Pemilihan dengan
switch-case ini mirip dengan penggunaan if-else bersarang.
25
6. PENERAPAN KONSEP PERULANGAN
Perintah atau notasi dalam struktur pengulangan yang akan kita bahas adalah :1. Pernyataan while
2. Pernyataan do..while
3. Pernyataan for
6.1. PERNYATAAN WHILEPernyataan while merupakan salah satu pernyataan yang berguna untuk memproses suatu
pernyataan atau beberapa pernyataan beberapa kali. Pernyataan while memungkinkan
statemen-statemen yang ada didalamnya tidak diakukan sama sekali.
Bentuk Umumnya :
while (kondisi){
Pernyataan ;
}
6.2. PERNYATAAN DO..WHILEPernyataan do…while mirip seperti pernyataan while, hanya saja pada do…while pernyataan
yang terdapat didalamnya minimal akan sekali dieksekusi.
Bentuk Umumnya :
do{
pernyatan ;
}
while(kondisi);
Beberapa contoh program dengan menggunakan pengulangan adalah sebagai berikut:
contoh 1 (menghitung pemangkatan dengan menggunakan while):#include <iostream.h>
26
void main(){
int i,a,n,pangkat;
cout<<"Masukkan sebuah bilangan :";cin>>a;cout<<" Masukkan pangkat :";cin>> n;
pangkat =1;i=1; //mula-mula diisi sama dengan satuwhile (i<=n){
pangkat = pangkat *a;i++; //menaikkan pencacah sama dengan satu
}
cout<<"\nhasil"<<pangkat;}
contoh 2 (menghitung pemangkatan dengan menggunakan do…while):#include <iostream.h>void main(){
int i,a,n,pangkat;
cout<<"Masukkan sebuah bilangan :";cin>>a;cout<<"MAsukkan pangkat :";cin>> n;
pangkat =1;i=1;do{
pangkat = pangkat *a;i++;
}while (i<=n);
cout<<"\nhasil"<<pangkat;}
27
7. PENERAPAN KONSEP PERULANGAN (LANJUTAN)
7.1. PERNYATAAN FORPernyataan for digunakan untuk menghasilkan pengulangan(looping) beberapa kali
tanpa penggunaan kondisi apapun. Pada umumnya looping yang dilakukan oleh for telah
diketahui batas awal, syarat looping dan perubahannya.
Pernyataan for digunakan untuk melakukan looping.Pada umumnya looping yang
dilakukan oleh for telah diketahui batas awal, syarat looping dan perubahannya. Selama
kondisi terpenuhi, maka pernyataan akan terus dieksekusi.
Bentuk Umumnya :
for (inisialisasi ; kondisi ; perubahan){
Statement;
}
Contoh-contoh soal yang mengandung pengulangan beserta analisis nya antara lain:
contoh 1://Program bilangan 1 sampai 10
//nama file : bil1.cpp
# include <iostream.h>
void main ()
{
int i;
cout<<"Program Menampilkan Bilangan 1-10"<<endl;
for (i=1; i <=10; i++)
{
cout<<" "<<i;
}
}
Analisisnya:
Program ini merupakan program pengulangan.Program ini menampilkan bilangan dari
satu sampai 10.Yang harus dideklarasikan adalah variabel i yang merupakan
inisialisasi. Pada badan pengulangan nya, notasi (i=1; i<=10; i++) berarti pengulangan
28
dilakukan untuk nilai i sama dengan 1, dengan batas nilai i lebih kecil sama dengan 10,dan notasi i++ berarti nilai i mengalami kenaikan sebanyak 1 pada setiap kali
pengulangan. Cout yang ditulis didalam tanda for berarti apapun yang tertulis didalam
cout itu akan diulang sebanyak i. Jika cout nya ditulis diluar tanda kurung kurawal
(diluar for), maka apa yang tertulis didalam cout itu tidak akan diulang.
Contoh 2://Program kelipatan tiga
//nama file bil3.cpp;
# include <iostream.h>
void main ()
{
int i;
cout<<"Program Menampilkan Bilangan 1-10"<<endl;
for (i=1; i <=10; i++)
{
if (i % 3==0)
{
cout<<" "<<i<<endl;
}
}
}
Analisisnya:Sama seperti program sebelumnya, program ini juga menampilkan bilangan dari 1
sampai 10.Bedanya, yang ditampilkan pada program ini hanyalah bilangan-bilangan
kelipatan tiga.Jadi, untuk menampilkannya, kita memerlukan syarat agar bilangan yang
ditampilkan hanya berupa bilangan kelipatan tiga.Kita dapat membuat syarat itu dengan
menggunakan if-else.Didalam bagan for, kita dapat memasukkan bagan if-else. Kondisi
yang merupakan syarat yang harus dipenuhi adalah jika bilangan itu habis dibagi tiga,
maka bilangan itu akan ditampilkan. Jadi, pada saat pengeksekusian, bagan if-else juga
akan mengalami perulangan.
29
Contoh 3://Program for bersarang
//nama file bintang.cpp;
#include<iostream.h>
void main()
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
cout<<"*";
}
cout<<endl;
}
}
Analisisnya:Program ini akan mencetak banyaknya bintang sesuai dengan perulangan yang
dilakukan. Pada for yang diluar, akan dicetak jumlah baris untuk membentuk persegi
bintang. Dengan batasan antara satu sampai empat dan nilai i yang terus naik sebanyak
satu, maka akan terbentuk baris bintang yang jumlah barisnya sebanyak pengulangan
itu. Sementara pada for yang didalam akan mencetak jumlah kolom untuk segitiga
bintang itu, kolom dalam hal ini di insialisasikan dengan variabel j. sama seperti for
yang terluar, pada for yang didalam juga memberikan batasan antara satu sampai
dengan empat untuk pengulangan jumlah kolom yang ada. Pada for yang terluar, tidak
ditulis cout. Cout ditulis pada for yang kedua agar bintang yang yang ditulis dalam cout
akan berulang sebanyak baris dan kolomnya.
//Program penjumlahan//nama file jumlah.cpp;
# include <iostream.h>void main ()
{
30
int i,j;j = 0;
cout<<"Program Menampilkan Jumlah Bilangan 1-10"<<endl;
for (i=1; i <=10; i++)
{
cout<<" "<<i;
j = j + i;
}
cout<<"Jumlahnya ="<<j<<endl;
}
Analisisnya:Program ini akan menampilkan jumlah bilangan dari satu sampai sepuluh. Sama seperti
pengulangan sebelumnya, tetapi pada program ini, mulai dibutuhkan inisialisasi
awal.Yaitu inisialisasi untuk jumlah, yaitu nol. Inisialisasi ini diperlukan untuk
melakukan penjumlahan. Penjumlahan akan dilakukan sebanyak i.
Contoh 5://Program faktorial//nama file faktorial.cpp;
# include <iostream.h>void main (){
int a,i;long j;
j = 1;
cout<<"Menghitung Faktorial suatu Bilangan"<<endl;cout<<"Masukkan bilangan yang akan di cari faktorialnya :
";cin>>a;
for (i=a;i>=1;i--){
j=j*i;
cout<<i<<" ";}
cout<<"Faktorialnya adalah "<<j<<endl;
}
Analisisnya:Pada program ini, kita mulai mengenal insialisasi awal.Yaitu variabel j yang
mendefinisikan faktorial. Karena pada awalnya program meminta masukan berupa
31
bilangan yang akan di faktorialkan, maka pada badan pengulangan untuk batasawalnya, nilai i maksimum adalah nilai a. Karena i faktorial merupakan perkalian
dengan nilai bilangan yang menurun sebanyak satu bilangan, maka pada badan for
ditulis batasan i adalah a, dengan i lebih besar atau sama dengan satu dan i mengalami
penurunan. Pada badan pengulangan ditulis rumus dari faktorial, yaitu nilai j dikalikan
dengan i. Perkalian akan berulang sebanyak i dengan batasan maksimumnya adalah a
dan batas akhirnya 1 atau lebih besar dari satu. Nilai faktorialnya ditulis di luar for
karena hasilnya bukan berupa perulangan.
Contoh 6 (Perpangkatan dengan menggunakan for)://program pengulangan//nama file tugas1.cpp
#include <iostream.h>void main(){
int a,i,b;long j;
cout<<"Menghitung Pangkat dari Suatu Bilangan"<<endl;cout<<"Masukkan bilangan pokok nya: ";cin>>a;cout<<"Masukkan nilai pangkatnya : ";cin>>b;j=1;
for (i=b;i>=1;i--){j=j*a;cout<<a<<" ";}
cout<<"Nilai perpangkatannya adalah "<<j<<endl;}
Analisisnya:Program ini melakukan perhitungan perpangkatan suatu bilangan. Pada awalnya,
program akan meminta masukan berupa bilangan pokok dan bilangan pemangkatnya.
Setelah itu, barulah program akan masuk ke badan pengulangan. Sama dengan
faktorial, nilai awalnya harus diinisialisasikan terlebih dahulu.Pemangkatan suatu
bilangan pada prinsipnya adalah pengulangan bilangan pokok sebanyak bilangan
pangkatnya. Oleh karena itu, pada badan for, dibuat batasan i untuk i lebih besar atau
sama dengan satu, nilai i mengalami penurunan, dan nilai i maksimum adalah bilangan
pemangkatnya. Barulah operasi pemangkatan dilakukan.Nilai pangkat yang telah
diinisialisasi pada awalnya dikalikan dengan bilangan pokoknya. Perkalian itu
akanmengalami pengulangan sebanyak bilangan pemangkatnya. Pengulangan akan
32
Jumlah Bayar Discount
>=600000 20%
>=400000 15%
>200000 10%
8. UTS
Soal :1. Buatlah program perhitungan ”Transaksi Swalayan Nama_Anda”2. Proses Program yang dikehendaki adalah sebagai berikut :
(catt: nama variabel tentukan sendiri)
MASUKAN
Nama Barang :
Banyaknya Barang :
Harga Satuan : Rp.
TAMPILAN DI SCREEN
DAFTAR TRANSAKSI SWALAYAN “NAMA_ANDA”
Nama Barang =Banyak Barang =
Harga Satuan =
Jumlah Bayar =
Diskon =
Total Bayar =
Catatan:1. Jumlah Bayar = Banyak Barang * Harga Satuan;
2. Ketentuan Diskon sebagai berikut :
3. Total Bayar = Jumlah Bayar – Diskon;
34
9. PENERAPAN KONSEP ARRAY
9.1. LARIKLarik merupakan sekumpulan data yang mempunyai nama dan tipe yang sama.Larik
sering disebut juga variabel berindeks. Nilai suatu data dalam larik ditentukan oleh nama dan
indeks. Larik banyak digunakan pada operasi yang melibatkan indeks seperti pada statistik
dan matriks.
Tipe data larik dapat berupa larik satu demensi, dua demensi, tiga demensi atau
banyak dimensi.
Bentuk Umum Larik Satu Dimensi :
tipe_larik nama_larik [ukuran]
Bentuk Umum Larik Dua Dimensi :
tipe_larik nama_larik [ukuran1][ukuran2]
Perhatikan :o Tanda kurung [ ] digunakan untuk menunjukkan elemen larik
o Perhitungan elemen larik dimulai dari 0, bukan 1
C++ tidak mengecek larik. Bila anda menyatakan int x[10], ini artinya 10 elemen yangdimulai 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.
9.2. REPRESENTASI LARIKMisalkan kita memiliki sekumpulan data ujian seorang siswa, ujian pertama bernilai 90,
kemudian 95,78,85. Sekarang kita ingin menyusunnya sebagai suatu data kumpulan ujian
seorang siswa. Dalam array kita menyusunnya sebagai berikut
ujian[0] = 90;
ujian[1] = 95;
ujian[2] = 78;
ujian[3] = 85;
35
Empat pernyataan diatas memberikan nilai kepada array ujian. Tetapi sebelum kitamemberikan nilai kepada array, kita harus mendeklarasikannya terlebih dahulu, yaitu :
intujian[4];
Perhatikan bahwa nilai 4 yang berada didalam tanda kurung menujukkan jumlahelemen
larik, bukan menunjukkan elemen larik yang ke-4.Jadi elemen larik ujian dimulai dari angka
0 sampai 3.
Pemrogram juga dapat menginisialisasi larik sekaligus mendeklarasikannya, sebagai
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.Walaupun pemrogram tidak dapat melihat
karakter ini secara eksplisit, namun kompiler mengetahui dan membutuhkannya.
Sekarang kita akan membuat daftar beberapa nama pahlawan di Indonesia
char pahlawan[3][15] ;
char pahlawan[0][15] = “Soekarno”;
char pahlawan[1][15] = “Diponegoro”;
char pahlawan[2][15] = “Soedirman”;
Larik diatas terlihat berbeda denga contoh larik pertama kita. Perhatikan bahwa pada larik
pahlawan memilih dua buah tanda kurung [ ][ ]. Larik seperti itu disebut larik dua dimensi.
Tanda kurung pertama menyatakan total elemen yang dapt dimiliki oleh larik pahlawan dan
tanda kurung kedua menyatakan total elemen yang dapat dimiliki setiap elemen larik
pahlawan. Dalam contoh diatas, tanda kurung kedua menyatakan karakter yang menyatakan
nama pahlawan.
MENGHITUNG JUMLAH ELEMEN ARRAYKarena fungsi sizeof() mengembalikan jumlah byte yang sesuai dengan argumennya,
maka operator tersebut dapat digunakan untuk menemukan jumlah elemen array, misalnya
int array[ ] = {26,7,82,166};
cout<<sizeof(array)/sizeof(int);
akan mengembalikan nilai 4, yaitu sama dengan jumlah elemen yang dimiliki larik.
MELEWATKAN ARRAY SEBAGAI ARGUMEN FUNGSILarik dapat dikirim dan dikembalikan oleh fungsi. Pada saat larik dikirim ke dalam fungsi,
nilai aktualnya dapat dimanipulasi
36
Contoh-contoh soal yang mengandung larik beserta analisis nya antara lain:Contoh 1 (larik 1 dimensi)
#include<iostream.h>void input(int x[5]);void output(int x[5]);void main(){
int x[5]; // banyak larik yang dibutuhkanx[0]=1;x[1]=2;x[2]=3;x[3]=4;x[4]=5;
//////////
nilai yang terdapat dalam lariknilai yang terdapat dalam lariknilai yang terdapat dalam lariknilai yang terdapat dalam lariknilai yang terdapat dalam larik
x[0]x[1]x[2]x[3]x[4]
cout<<"Isicout<<"Isicout<<"Isicout<<"Isicout<<"Isi
xxxxx
adalahadalahadalahadalahadalah
"<<x[0]<<endl;"<<x[1]<<endl;"<<x[2]<<endl;"<<x[3]<<endl;"<<x[4]<<endl;
//////////
keluarankeluarankeluarankeluarankeluaran
x[0]x[1]x[2]x[3]x[4]
}
Contoh 2 (larik 2 dimensi)#include<iostream.h>void input(int x[5]);void output(int x[5]);void main(){
int x[2][2]={{1,2,3},{4,5,6}};
for(int i=0 ;i<2 ;i++){
for(int j=0 ;j<2 ;j++){
cout<<x[i][j<<]<<" ";}cout<<endl ;
}
}
37
10. PENERAPAN KONSEP PROSEDUR / FUNGSI
10.1. PROSEDURProsedur adalah modul program yang menjalankan tugas atau aktifitas yang spesifik dan
menghasilkan suatu efek netto.Diketahui dengan membandingkan keadaan awal dengan
keadaan akhir pada pelaksanaan sebuah prosedur.
Struktur prosedur sama dengan struktur algoritma yang sudah kita kenal, yaitu ada
bagian judul atau header. Yang terdiri dari nama prosedur, deklarasi, dan badan prosedur.
10.2. FUNGSIFungsi adalah sekumpulan perintah operasi program yang dapat menerima argumen
input dan dapat memberikan hasil output yang dapat berupa nilai ataupun sebuah hasil
operasi. Hasil akhir fungsi akan berupa sebuah nilai balik (return)
Nama fungsi yang didefinisikan sendiri oleh pemrogram tidak boleh sama dengan
nama build-in function pada compiler C++.
Fungsi digunakan agar pemrogram dapat menghindari penulisan bagian program
(kode) berulang-ulang, dapat menyusun kode program agar terlihat lebih rapi dan kemudahan
dalam debugging program.Parameter adalah nama-nama peubah yang dideklarsikan pada
bagian header fungsi.Pemrogram dapat membuat fungsi yang didefinisikan sendiri olehnya.
PROTOTIPE FUNGSISebuah fungsi tidak dapat dipanggil kecuali sudah dideklaraikan, deklarasi fungsi
dikenal dengan sebutan prototipe fungsi. Prototipe fungsi berupa :
1. Nama Fungsi
2. Tipe nilai fungsi
3. Jumlah dan tipe argumen
Dan diakhiri dengan titik koma, sebagaimana pada pendeklarasian variabel.
38
Sebagai contoh:1. longkuadrat (long l) ;
Pada contoh pertama, fungsi kuadrat ( ) mempunyai argument bertipe long dan nilai
balik bertipe long.
2. voidgaris ( );
Pada contoh kedua, fungsi garis ( ) tidakmemiliki argumen dan nilai baliknya tidak
ada (void).
3. doublemaks (double x, double y)
Pada contoh ketiga, fungsi maks( ) mempunyai dua buah argumen, dengan masing-
masing argumen bertipe double.
VARIABEL LOKAL DAN VARIABEL EKSTERNALVariabel lokal adalah variabel yang didefinisikan dalam suatu fungsi tertentu,
sehingga hanya dikenal dalam fungsi tersebut. Dalam hal ini artinya suatu fungsi tidak akan
mengenal variabel lokal dan fungsi lain. Suatu fungsi hanya akan mengenal variable yang
didefinisikan dalam fungsi yang bersangkutan. Variabel eksternal adalah variabel yang
bersifat global yang dapat dikenali oleh seluruh fungsi yang terdapat dalam program tersebut.
Seluruh fungsi akan mengenal variabel yang bersifat eksternal ini. Variabel eksternal
dideklarasikan diluar fungsi dan sejajar dengan prototipe fungsi serta pengarah kompiler.
PARAMETERParameter adalah sarana komunikasi antar fungsi. Pengertian antar fungsi adalah antara
fungsi dengan fungsi lain termasuk antara fungsi dengan fungsi utama. Dalam pemograman
yang melibatkan fungsi, diusahakan agar fumgsi bersifat independen artinya tidak tergantung
pada fungsi lain. Setiap fungsi hanya mengerjakan satu tugas tertentu.Antar fungsi saling
berkomunikasi menggunakan parameter. Terdapat dua macam bentuk parameter dalam
hubungannya dengan penggunan fungsi dalam program yaitu :
o Parameter Formal : parameter yang diberi nilai. Parameter formal merupakan parameteryang terdapat dalam daftar parameter fungsi.
o Parameter Aktual : parameter yang memberi nilai. Parameter fungsi dan digunakan untuk
memberi nilai pada parameter formal.
Dalam contoh program perkalian di atas parameter formal terdapat pada pendefinisan
39
fungsi :doublehasil(int A, int B) // parameter formal{
return(A * B);}
Sedangkan parameter aktual terdapat pada pemanggilan fungsi :
void main()
{ ……………
…………..
z = hasil(x,y); // parameter aktual
…………..
}
Cara Melewatkan Parameter
Cara melewatkan suatu parameter dalam Bahasa C++ ada dua cara yaitu :
1. Pemanggilan Secara Nilai (Call by Value)
o Call by value akan menyalin nilai dari parameter aktual ke parameter formal.
o Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak
dari datanya.
o Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari
nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi.
o Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli dibagian
program yang memanggilnya
o .Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian
program yang memanggil fungsi ke fungsi yang dipanggil.
o Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk
sebuah variabel, elemen array atau konstanta saja.
2. Pemanggilan Secara Referensi (Call by Reference)o Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari
suatu variabel ke dalam fungsi
o .Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai
datanya.
o Fungsi yang menerima kiriman alamat ini maka menggunakan alamat yang sama
untuk mendapatkan nilai datanya
40
o .Perubahan nilai di fungsi akan merubah nilai asli di bagian program yangmemanggil fungsi
o .Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu dari
fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya.
o Pengiriman secara acuan tidak dapat bdilakukan untuk suatu ungkapan.
Contoh-contoh soal yang mengandung prosedur dan fungsi beserta analisis nya antara lain:Contoh 1 (membuat prosedur garis)
#include<iostream.h>
void garis();void main(){
garis ();
//prototype prosedur garis
//program utama//memanggil prosedur garis
cout<<"Nama saya Budi"<<endl;garis ();cout<<"saya adalah mahsiswa sistem informasi"<<endl;garis();
}
void garis() //prodesur garis{
cout<<"---------------"<<endl;}
Analisis :Pada contoh diatas memengggil prosedur garis yang prosedur garisnya di buat dibagian
bawah sekali.Ketika diperlukan maka prosedur garis dapat dipanggil.
Contoh 2 : (program menghitung luas lingkaran dengan prosedur)Buatlah program menghitung luas lingkaran dengan menggunakanprosedur dan ada prosedur input dan prosedur output.
Maka penulisan pada C++:#include<iostream.h>
void inputdata(int&jari);void hitungluas(int jari);
void main(){
int r;
cout<<"Program Menghitung Luas Lingkaran"<<endl;inputdata(r);hitungluas(r);
}
void hitungluas(int jari)
//memenggil prosedur//memenggil prosedur
//prodesur hitung
{float luas;const float phi =3.14;
41
luas = phi *jari*jari;cout<<"Luas = "<<luas<<endl;
}
void inputdata(int&jari) //prosedur masukan{
cout<<"Masukkan jari-jari:";cin>>jari;
}Analisis :
Pada contoh diatas terdapat dua buah prosedur dimana pertama prosedur masukan yang
menjadi masukan adalah jari-jari.Dan prosedur kedua adalah prosedur hitung yaitu tempat
menghitung laus dari lingkaran.
Contoh 3 : (Program menghitung factorial dengan prosedur)#include<iostream.h>
void faktorial (int n, int&fak);void main(){
int fak,n;
cout<<"Masukkan bilangan faktorial:";cin>>n;
faktorial (n,fak);
cout<<"Faktorialnya"<<fak<<endl;}
void faktorial(int n, int&fak){
int i;fak = 1;
for( i=1;i<=n;i++){
fak = fak *i ;}
}Analisis :
Pada contoh diatas merupakan prosedur untuk menghitung factorial dengan nilai n
sebagai masukan dan fak sebagai keluaran.nilai n yang dimasukkan di eksekusi ke n
yang ada didalam prosedur kemudian setelah dieksekusi di dalam prosedur factorial
hasilnya dikeluarkan kembali ke melalui fak.
Contoh 4 : (program menghitung factorial dengan fungsi)#include <iostream.h>
42
int faktorial(int N);
void main(){
int n;cout<<"Masukkan bilangan";cin>>n;
cout<<"Faktorialnya "<<faktorial(n);}
int faktorial(int N){
int i, fak;fak=1;for(i=1;i<=N;i++){
fak=fak*i;}return fak;
}Analisis :
Pada contoh diatas menghitung faktorial dengan menggunakan fungsi. DYang menjadi
cirri-ciri dari fungsi ini adalah adanya return.Fungsi menggunakan type data sebagai
prorotype nya.Dalam hal ini adalah int factorial,ynag mengambil n sebagai
masukan.Setelah n di ambil maka akan dieksekusi didalam fungsi.Setelah dieksekusi
maka dikembalikan lagi ke factorial yang menyatakan keluaran.dan kemudian
dikeluarkan sebagai output.
43
11. PENGENALAN POINTERPointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatuvariabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam
memori. Contoh, jika sebuah variabel berisi dari variabel lain, variabel pertama dikatakan
menunjuk ke variabel kedua.
Mendefinisikan variabel pointer
Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut :
Tipe_data *nama_variabel;
tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabelbukan pointer.
nama_variabel adalah nama variabel pointer.Beberapa contoh pendifinisian variabel pointer :
int *pint
char *pch
float *pfl
// Pointer ke int
//Pointer ke char
//Pointer ke float
variabel pointer pint dapat diatur agar menunjuk ke vint dengan cara sebagai berikut :
pint = &vint
Pernyataan di atas berarti : “pint diisi dengan alamat dari vint”. Operator & menyatakan
“alamat dari”.
Contoh 1 : (mengetahui alamat memori suatu pointer)//program untuk mengetahui alamat memori suatu pinter//nama file alamat.cpp
#include<iostream.h>#include<conio.h>void main(){
int x;float y;long z;
x = 3;y = 3.7;z = 1000;
cout<<"isi variabel x = "<<x<<endl;cout<<"isi variabel y = "<<y<<endl;cout<<"isi variabel z = "<<z<<endl;
cout<<endl;
cout<<"alamat variabel x = "<<&x<<endl;
44
cout<<"alamat variabel y = "<<&y<<endl;cout<<"alamat variabel z = "<<&z<<endl;
}Analisis :
Pointer merupakan penunjuk pada suatu program yang dimaskudkan untuk menunjukkan
kesuatu alamat memori.Pada program ini kta menginisialisai kan nilai x,y,dan z.Dimana
type untuk data x adalah int,y bertype float,dan z bertype long.Dari data tersebut dapat
diketahui dan dilihat alamat dimana data tersebut diletakkan.Alamat dapat diketahui
dengan mudah dengan cara menambahkan tanda & didepan nama variable.Dengan
mengirimkan ke cout,alamat dari suatu variable akan ditampilkan ke layer.Alamat pada
setiap computer berbeda sehingga.Jika program ini dipindahkan atau dibuka pada
computer lain.maka alamat yang ditampilkan akan berbeda.
Contoh 2 :#include<iostream.h>#include<conio.h>voidmain(){
int x;float y;long z;
int *x1;float *y1;long *z1;
x = 3;y = 3.7;z = 1000;
x1 = &x;y1 = &y;z1 = &z;
cout<<"isi variabel x = "<<x<<endl;cout<<"isi variabel y = "<<y<<endl;cout<<"isi variabel z = "<<z<<endl;
cout<<endl;
cout<<"alamat variabel x = "<<&x<<endl;cout<<"alamat variabel y = "<<&y<<endl;cout<<"alamat variabel z = "<<&z<<endl;
cout<<endl;
cout<<"isi pointer x1 = "<<*x1<<endl;cout<<"isi pointer y1 = "<<*y1<<endl;cout<<"isi pointer z1 = "<<*z1<<endl;
cout<<endl;
cout<<"Alamat pointer x1 = "<<x1<<endl;cout<<"Alamat pointer y1 = "<<y1<<endl;
45
cout<<"Alamat pointer z1 = "<<z1<<endl;
}
Analisis :Pada program ini merupakan program untuk mendefinisikan nama variable pointer ke
type data yang ada.Pertama definisikan dulu type data untuk x,y dan z. untuk data x
adalah int,y bertype float,dan z bertype long.lalu untuk membuat type baru untuk nama
variable pointer.dibuatlah int *x1 mendefiniskan nama variable pointer x1 agar memiliki
type data int,dan float *y1 mendefiniskan nama variable pointer y1 agar memiliki type
data float,dan long *z1 mendefiniskan nama variable pointer z1 agar memiliki type data
long,untuk memberikan nama variable pointer agar memiliki type data dengan cara
memberikan (*)/astarik di depan nama variable pointer yang akan diberikan type
data.Lalu membuat agar alamat dari int x1 =x,maka dibuatlah inisialisasi.x1 = &x1 agar
x1 memiliki alamat yang sama dengan x. y1 = &y1 agar y1 memiliki alamat yang sama
dengan y.dan z1 = &z1 agar z1 memiliki alamat yang sama dengan z.Telah diketahui
untuk menampilan alamat maka diberikan tanda (&).Dengan demikian nialia yang ada
akan menempati alamat yang sama.Dengan mengirimkan ke cout,alamat dari suatu
variable akan ditampilkan ke layer.Namun untuk menamplkan nilai pada pendefinisian
maka pada proses mengeluarkan dengan mengirimkan ke cout harus menggunakan astarik
(*).Sehingga akan muncul data yang terdapat pada alamat.Namun jika tidak diberi tanda
astarik (*) maka akan muncul alamat dari data tersebut.
46
12. REVIEW MATERIKasus IPada suatu hari, ada seorang anak yang bertanya kepada kakaknya tentang zodiak, “ kak, klo
tanggal 1 januari zodiaknya apa?” kakaknya pun menjawab “carpicorn”. Keesokan harinya
dia bertanya hal yang sama tetapi dengan tanggal yang berbeda. Kakaknyapun menjawab lagi
dengan sedikit agak kesal.Ternyata keesokan harinyapun masih begitu. Karena sang kakak
kesal ditanya hal it uterus kemudian sang kakak meminta bantuan temannya yang jago
pemrograman untuk membuatkan program tersebut, jadi ketika adiknya tidak harus selalu
bertanya kepada kakanya dan bias menggunkan program itu.
Tugas anda adalah membantu sang kakak untuk membuatkan program tersebut. Berikut
adalah jangkauan tanggal dari zodiaknya yang mungkin bisa membantu anda untuk membuat
programnya.
Aries : 21 Maret - 19 April
Taurus : 20 April - 20 Mei
Gemini : 21 Mei - 20 Juni
Cancer : 21 Juni - 22 Juli
Leo : 23 Juli - 22 Agustus
Virgo : 23 Agustus - 22 September
Libra : 23 September - 22 Oktober
Scorpio : 23 Oktober - 21 Nopember
Sagitarius : 22 Nopember - 21 Desember
Carpicorn : 22 Desember - 19 Januari
Aquarius : 20 Januari - 18 Februari
Pisces : 19 Februari - 20 Maret
Dengan asumsi program bahwa tanggal (1 s/d 31) dan bulan (1 s/d 12) yang dimasukkan olehsi adik selalu dalam keadaan benar.
Input:Baris pertama berisi tanggal (1 ≤ tanggal ≤ 31 ), baris kedua berisi bulan ( 1 ≤ bulan ≤12 ).
Output:
Berisi nama zodiac dari tanggal yang diinputkan
47