PEMROGRAMAN DASAR
UNIT 12
PEMROGRAMAN MODULAR
Bayangkan sebuah program yang dibuat untuk menghitung nilai rata-rata dari
sekumpulan nilai integer. Dalam prosesnya, program melakukan perhitungan tersebut
dalam dua langkah, yaitu menjumlahkan seluruh nilai, kemudian membaginya dengan
banyaknya nilai yang tersedia. Dengan demikian program tersebut dapat dipecah
menjadi dua subprogram, yaitu subprogram penjumlahan dan subprogram pembagian.
Dalam pemrograman, dikenal dua tipe subprogram yang biasa digunakan untuk
memecah persoalan kompleks menjadi lebih sederhana, yaitu fungsi (function) dan
prosedur (procedure). Kedua tipe subprogram ini dapat digunakan bersamaan maupun
salah satunya saja dalam sebuah program. Masing-masing tipe subprogram memiliki
karakteristik dan perilaku yang berbeda sehingga penggunaannya dalam program juga
berbeda-beda.
• Subprogram sebagai bagian dari program utama wajib mendefinisikan kondisi awal
(initial state/I.S.) sebelum proses dalam subprogram dieksekusi dan juga
mendefinisikan kondisi akhir (final state/F.S.) yang berupa hasil proses (output) atau
perubahan nilai dalam variabel tertentu (khusus untuk fungsi saja).
Beberapa fungsi dan prosedur telah terdefinisi dan dapat langsung digunakan oleh
pemrogram dalam sebuah program dengan mendefinisikan variabel-variabel yang
diperlukan. Selain fungsi dan prosedur yang telah terdefinisi tersebut, pemrogram juga
dapat membuat sendiri fungsi dan prosedur yang diperlukannya dalam sebuah program.
Dalam membuat sebuah subprogram, pemrogram dapat menyimpannya dalam salah
satu dari dua lokasi berikut ini:
1. Dalam file yang sama dengan program utama: dapat dilakukan jika subprogram
sedikit dan berukuran kecil sehingga relatif mudah dikelola dalam sebuah file
2. Dalam file yang terpisah: biasanya dilakukan jika subprogram sudah terlalu
banyak sehingga sulit dikelola, atau jika pemrogram menginginkan supaya
subprogram dapat digunakan di beberapa program utama sekaligus
B. Fungsi
Fungsi adalah subprogram yang menerima data masukan, melakukan beberapa
perhitungan dari data tersebut, kemudian mengembalikan output berupa sebuah data
baru. Dengan kata lain, sebuah fungsi memetakan sebuah nilai (dalam domain)
menjadi nilai lain (dalam range) dengan operasi/ proses tertentu. Pendeklarasian
fungsi merupakan salah satu cara memecah persoalan ke dalam beberapa sub
persoalan yang lebih mudah diselesaikan. Dalam pembuatan sebuah fungsi,
pemrogram harus mendefinisikan:
− nama fungsi
− Tipe data yang dibuat/ dihasilkan oleh fungsi
− Daftar parameter yang menyatakan data yang diperlukan oleh fungsi
− Satu atau lebih instruksi yang melakukan perhitungan
Selanjutnya, fungsi yang sudah didefinisikan dapat digunakan dalam program utama
maupun dalam fungsi lainnya dengan cara memanggil nama fungsi dan memberikan
parameter yang diperlukan oleh fungsi tersebut. Fungsi bekerja menurut mekanisme
pemanggilan-pengembalian (callreturn-mechanism). Tahapan dalam mekanisme
tersebut adalah:
1. Fungsi dipanggil dari program utama maupun fungsi lainnya
2. Sekumpulan operasi dalam fungsi dieksekusi
3. Hasil eksekusi dikembalikan ke program utama atau fungsi lain yang
memanggilnya.
Contoh fungsi :
int rata(int x, int y, int z)
{
int ave;
ave = (x + y + z)/3;
return(ave);
}
Cara melewatkan parameter ke dalam suatu fungsi dapat dilakukan melalui dua cara
yaitu:
a. Pelewatan parameter melalui nilai (call by value) :
- Pelewatan parameter ke dalam fungsi dengan menyalin nilai dari suatu
variabel aktualnya. Maksudnya adalah fungsi menerima masukan berupa
nilai, bukan alamat memori letak dari datanya dan nilai tersebut disimpan di
alamat memori yang terpisah dari nilai aslinya yang digunakan oleh bagian
program yang memanggil fungsi.
Contoh :
#include <iostream>
using namespace std;
int kali(int a, int b, int c) //parameter formal
{
int x;
x = a*b*c;
return(x);
}
int main()
{
int a,b,c;
cout<<"Masukkan angka 1 : "; cin>>a;
cout<<"Masukkan angka 2 : "; cin>>b;
cout<<"Masukkan angka 3 : "; cin>>c;
cout<<"Hasil perkalian ketiga bilangan :
"<<kali(a,b,c); //parameter aktual
return 0;
}
Contoh :
#include <iostream>
using namespace std;
void desc_sort(int *bil1, int *bil2) // parameter formal
{
if(*bil1<*bil2)
{
*bil1 = *bil1 + *bil2;
*bil2 = *bil1 - *bil2;
*bil1 = *bil1 - *bil2;
}
}
int main()
{
int a,b,c;
cout<<"Masukkan angka 1 : "; cin>>a;
cout<<"Masukkan angka 2 : "; cin>>b;
cout<<"Masukkan angka 3 : "; cin>>c;
desc_sort(&a, &b); //parameter aktual
desc_sort(&a, &c); //parameter aktual
desc_sort(&b, &c); //parameter aktual
cout<<"Hasil descending sort : "<<a<<" "<<b<<" "<<c;
return 0;
C. Prosedur
Cara lain memecah persoalan pemrograman ke dalam sub-sub persoalan
pemrograman adalah dengan mendeklarasikan prosedur. Prosedur adalah sederetan
instruksi yang diberi nama, dan melakukan tujuan tertentu. Seperti halnya pada
fungsi, prosedur bekerja dengan mekanisme pemanggilan pengembalian (call-return
mechanism), yaitu dengan urutan langkah:
1. Prosedur dipanggil oleh kode pemanggil (program utama maupun prosedur
lainnya)
2. Sekumpulan operasi yang disimpan dalam prosedur dieksekusi
3. Kontrol dikembalikan ke kode pemanggil
Penulisan prosedure seperti berikut :
void nama_procedure (<daftar_parameter_input>
,<daftar_parameter_output>)
{
/* instruksi */
}
Dengan catatan bahwa nama prosedur dan nama parameternya harus disebutkan
dalam blok kode pemanggil. Berbeda dengan fungsi, daftar parameter pada
procedure terbagi menjadi dua yaitu parameter input dan parameter output. Daftar
parameter boleh kosong (tidak ada parameter input maupun output). Jika parameter
tidak kosong (minimal ada satu parameter) maka harus dituliskan nama parameter
beserta tipe datanya.
Prosedur tanpa parameter memanfaatkan nilai dari variabel yang terdefinisi dalam
kode program utama/prosedur lain yang memanggilnya. Prosedur tanpa parameter
ini hanya dapat dieksekusi jika nilai dari variabel yang diperlukan dalam prosedur
sudah didefinisikan dalam kode program utama/prosedur lain yang memanggilnya.
Prosedur dengan parameter dibuat untuk mengeksekusi sekumpulan instruksi
dengan parameter yang berbeda-beda. Nama parameter yang dituliskan pada
definisi / spesifikasi prosedur disebut dengan parameter formal. Sedangkan
parameter yang dituliskan pada pemanggilan prosedur disebut parameter aktual.
Parameter formal adalah nama-nama variabel yang dipakai dalam mendefinisikan
prosedur, dan membuat prosedur tersebut dapat dieksekusi dengan variabel yang
berbeda saat pemanggilan. Terdapat tiga tipe parameter formal:
- parameter input, yaitu parameter yang diperlukan prosedur sebagai masukan
untuk melakukan aksi yang efektif
- parameter output, yaitu parameter yang akan menyimpan nilai yang dihasilkan
oleh prosedur
- parameter input/output, yaitu parameter yang diperlukan prosedur sebagai
masukan untuk melakukan aksi tertentu, yang pada akhir prosedur akan diisi
dengan nilai baru sebagai hasil eksekusi prosedur.
Parameter aktual adalah variabel / konstanta yang dipakai ketika prosedur dipanggil
oleh program utama / prosedur lain. Parameter aktual dapat berupa variabel /
konstanta, tapi parameter output harus berupa variabel karena akan menyimpan hasil
eksekusi prosedur.
Tugas
Hasil Program
Analisa
Program diatas merupakan contoh program pemanggilan fungsi secara global maupun
secara local, dimana variable addition merupakan variable global dan z merupakan
variable local. Output sama dengan 8 bisa dihasilkan karena pada awalnya sudah
didefinisikan bahwa parameter yang digunakan oleh fungsi addition adalah (a,b) dan
variable r terdapat dalam fungsi addition dimana r=a+b, dilanjutkan dengan
pendefinisian nilai dari parameter addition yaitu addition (5,3) hal ini sama dengan
addition (a,b) dimana 5 merupakan a dan 3 merupakan b. Kesimpulannya adalah nilai
r=a+b atau r=5+3 dimana r merupakan bagian dari fungsi addition.
#include <iostream>; :
Baris 5-9 merupakan body dari fungsi addition dimana isinya merupakan perintah
untuk mendefinisikan tipe data yang digunakan pada variable r, dilanjutkan dengan
perintah aritmatika dimana nilai r sama dengan a + b, return digunakan untuk
mengembalikan atau memberikan feedback kepada fungsi addition.
Int main() :
Fungsi utama atau entry point dari seluruh program sebelum program di eksekusi,
fungsi main ini harus ada disetiap program agar program tersebut dapat berjalan. Fungsi
ini selalu diikuti dengan buka tutup kurung yang menandakan kalau line tersebut
merupakan suatu fungsi dalam program. int merupakan tipe data dalam fungsi main.
Line 12 - 16
Baris 12-16 merupakan body dari fungsi addition dimana isinya merupakan perintah
untuk mendefinisikan tipe data dari variable z yaitu integer, dilanjutkan dengan perintah
untuk mendefinisikan variable z terdiri dari addition (5,3), addition merupakan variable
dengan tipe data integer yang sebelumnya sudah dideklarasikan pada fungsi addition,
(5,3) digunakan untuk mendefinisikan isi dari parameter (int a, int b) pada fungsi
addition. Baris 15 perintah untuk output nilai dari variable Z.
Tugas 2
Program
Hasil Program
Analisa
Program diatas merupakan sebuah perintah pemanggilan fungsi printmessage pada
fungsi utama pada program yaitu int main, dimana sebelumnya nilai dari fungsi
printmessage sudah di definisikan yaitu printout text “I Am a function”. Kesimpulannya
ketika fungsi printmessage dideklarasikan pada fungsi utama program, fungsi tersebut
dipanggil kemudian dijalankan
#include <iostream>; :
Baris ini merupakan instruksi untuk memberi tahu compiler bahwa program
menggunakan library dari Namespace. Dengan menggunakan perintah ini dapat
meminimalisir kesalahan akibat tidak dikenalinya fungsi cout maupun cin Std
merupakan singkatan dari standard.
Void printmessage();
Merupakan Deklarasi fungsi printmessage dengan tidak menggunakan apapun. Fungsi
dengan tipe void menyatakan kalau fungsi printmessage tidak akan mengembalikan
nilai diakhir program (ditandai dengan tidak adanya perintah return).
Line 5 - 7
Baris 5-7 merupakan body dari fungsi addition dimana isinya merupakan perintah
printout dari tulisan “I’am a Function!”;
Int main() :
Fungsi utama atau entry point dari seluruh program sebelum program di eksekusi,
fungsi main ini harus ada disetiap program agar program tersebut dapat berjalan. Fungsi
ini selalu diikuti dengan buka tutup kurung yang menandakan kalau line tersebut
merupakan suatu fungsi dalam program. int merupakan tipe data dalam fungsi main.
Printmessage()
Hasil Program
Analisa
Program diatas merupakan contoh lainnya tentang program pemanggilan fungsi secara
global maupun secara local, dimana variable divide merupakan variable global dan r
merupakan variable local. Nilai 6 didapatkan dari hasil pembagian 12/2, dimana nilai
6 didefinisikan sebagai int a dan secara default (nilai yang di input pada program) nilai
dari b adalah 2 sehingga 12/2= 6. Pada nilai yang kedua karena nilai dari int a diwakili
oleh 20 dan nilai b diwakili oleh 4 (dalam kasus ini karena nilai b didefinisikan maka
nilai default akan digantikan), sehingga hasil dari 20/4=5.
#include <iostream>; :
Line 5 - 9
Baris 5-9 merupakan body dari fungsi divide dimana isinya merupakan perintah untuk
mendefinisikan tipe data yang digunakan pada variable r, dilanjutkan dengan perintah
aritmatika dimana nilai r sama dengan a / b, return digunakan untuk mengembalikan
atau memberikan feedback kepada fungsi divide.
Int main() :
Fungsi utama atau entry point dari seluruh program sebelum program di eksekusi,
fungsi main ini harus ada disetiap program agar program tersebut dapat berjalan. Fungsi
ini selalu diikuti dengan buka tutup kurung yang menandakan kalau line tersebut
merupakan suatu fungsi dalam program. int merupakan tipe data dalam fungsi main.
Line 12 - 16
Baris 12-16 merupakan body dari fungsi main dimana isinya merupakan perintah untuk
mendefinisikan nilai dari parameter yang terdapat dalam fungsi divide, dimana nilai 12
atau 20 merepresentasikan nilai dari int a dan 4 merepresentasikan nilai dari b.
Tugas 4
Program
Hasil Program
Analisa
Program diatas merupakan program untuk mencari tahu apakah suatu bilangan bernilai
positif atau negative, dimana pada fungsi bool checkIfPositive terdapat penyeleksian
kondisijika nilai dari x lebih besar dari 0 maka program akan mereturn nilai true atau
1, jika tidak program akan return false atau 0. Selanjutnya fungsi void printIfPositive
(intx) merupakan penyeleksian kondisi dimana jika nilai dari fungsi checkifpositive
adalah true atau 1 maka program akan melakukan printout nilai dari angka tersebut
dan menyatakan kalau angka tersebut adalah bilangan positive, jika negative program
tidak akan melakukan printout nilai bilangan.
#include <iostream>; :
#include merupakan sebuah preprocessor directive yang digunakan untuk memuat
sebuah file library. <iostream> merupakan sebuah file header yang memuat semua
fungsi program seperti cout,cin dan lainnya, #include memberitahu preprocessor
compiler untuk menggunakan file header standar iostream ke dalam program.
Baris ini merupakan instruksi untuk memberi tahu compiler bahwa program
menggunakan library dari Namespace. Dengan menggunakan perintah ini dapat
meminimalisir kesalahan akibat tidak dikenalinya fungsi cout maupun cin Std
merupakan singkatan dari standard.
bool checkIfPositive(int x)
Line 6 - 10
Baris 6-10 merupakan body dari fungsi checkIfPositive dimana isinya merupakan
perintah untuk penyeleksian kondisi, jika nilai dari variable x adalah lebih besar atau
sama dengan 0 maka program akan return true atau nilai 1, ketika kondisi tidak
terpenuhi maka program akan return false atau nilai 0.
void printIfPositive(int x)
Merupakan Deklarasi fungsi void printIfPositive dengan menggunakan parameter (int
x). Fungsi dengan tipe void menyatakan kalau fungsi addition tidak akan
mengembalikan nilai return diakhir program (ditandai dengan tidak adanya perintah
return)
Line 14 - 18
Baris 14-18 merupakan body dari fungsi checkIfPositive dimana isinya merupakan
perintah untuk mendefinisikan variable isPositive bernilai checkIfPositive(x) yang
berarti jika pada fungsi pertama nilai return adalah True atau 1 maka nilai variable
isPositive juga akan True atau 1 dan sebaliknya. Dilanjutkan dengan perintah untuk
penyeleksian kondisi, jika nilai dari variable isPositive adalah true atau 1 maka program
akan melakukan printout nilai dari angka tersebut dan menyatakan kalau angka tersebut
adalah bilangan positive, jika negative program tidak akan melakukan printout nilai
bilangan.
Int main() :
Fungsi utama atau entry point dari seluruh program sebelum program di eksekusi,
fungsi main ini harus ada disetiap program agar program tersebut dapat berjalan. Fungsi
ini selalu diikuti dengan buka tutup kurung yang menandakan kalau line tersebut
merupakan suatu fungsi dalam program. int merupakan tipe data dalam fungsi main.
Line 12 - 16
Baris 12-16 merupakan body dari fungsi main dimana isinya merupakan perintah untuk
mendefinisikan nilai dari parameter yang terdapat dalam fungsi printIfPositive, nilai
dari 3,-54 dan 710 merupakan nilai yang akan menggantikan nilai dari parameter x pada
fungsi checkIfPositive, masing masing dari bilangan diatas akan dicheck nilainya
apakah bernilai positive atau negative kalau angka tersebut adalah bilangan positive,
jika negative program tidak akan melakukan printout nilai bilangan.
BAB III
KESIMPULAN
1. Variabel dibagi 2 jenis yaitu local dan global. Variabel lokal berlaku pada suatu
kondisi tertentu didalam suatu perintah. Sedangkan global berlaku dan bisa
dipanggil sepanjang program
2. Fungsi adalah subprogram dan mengandung nilai tertentu dari sebuah variabel.
Bisa dipanggil oleh nilai nya (call by value) dan refrensi nya (call by reference).
3. Analisa diatas merupakan contoh penerapan dari variable global dan variable
local, contohnya dapat dilihat pada tugas 1 pada line 4-7 yang menunjukkan
pendeklarasian dari variable global. Sedangkan pada line 14 menunjukkan kalau
Z merupakan jenis variable local.
BAB IV
DAFTAR PUSTAKA