Anda di halaman 1dari 23

ALGORITMA & PEMROGRAMAN I

Materi ke VI

Pokok Bahasan : Argumen/ parameter Function /


Procedure, Lingkup Variabel, Jenis-jenis Variabel dan penggunaannya

11/04/21 1
Lingkup Variabel
• menentukan keberadaan suatu variabel tertentu di dalam fungsi
• variabel yg hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi
lain, ada juga yg bisa diakses oleh semua fungsi

• Variabel Otomatis (lokal) : Variabel yg didefinisikan di dlm suatu fungsi


berlaku sebagai variabel lokal bagi fungsi artinya variabel tersebut hanya
dikenal di dalam fungsi tempat variabel didefinisikan

• Variabel otomatis mempunyai sifat :


– Variabel hanya akan diciptakan pada saat fungsi dipanggil
– Pada saat fungsi berakhir (selesai dieksekusi), variabel otomatis menjadi
sirna
– Tidak ada inisialisasi secara otomatis (saat variabel diciptakan). Inisialisasi
oleh pemrogram akan dikerjakan setiap kali fungsi dipanggil
– Hanya dapat diakses di dalam fungsi yang mendefinisikannya

2
A B

lokal lokal

global
Variabel Eksternal
 Variabel eksternal adalah variabel yang didefinisikan di luar fungsi
manapun

 sebagai variabel global, sebab variabel ini dikenal di semua fungai

 Seandainya dalam suatu program terdapat suatu variabel eksternal,


suatu fungsi bisa saja mendefinikan variabel dengan nama sama. Pada
keadaan demikian, variabel yang didefinisikan secara lokal tidak ada
kaitannya dgn variabel eksternal

 Kata kunci extern menyatakan bahwa varaibel tersebut didefinisikan


di tempat lain (dipakai pada pemrograman multifile)

4
Local Variables
Not only can you pass in variables to the function, but you also can declare variables within
the body of the function. This is done using local variables, so named because they exist only
locally within the function itself. When the function returns, the local variables are no longer
available.
Local variables are defined like any other variables. The parameters passed in to the function
are also considered local variables and can be used exactly as if they had been defined within
the body of the function. Listing 5.2 is an example of using parameters and locally defined
variables within a function.
1: #include <iostream.h> 17: float Convert(float TempFer)
2: 18: {
3: float Convert(float);
19: float TempCel;
4: int main()
5: { 20: TempCel = ((TempFer - 32) * 5) / 9;
6: float TempFer; 21: return TempCel;
7: float TempCel; 22: }
8: Output: Please enter the temperature in Fahrenheit: 212
9: cout << "Please enter the temperature in Here's the temperature in Celsius: 100
Fahrenheit: "; Please enter the temperature in Fahrenheit: 32
10: cin >> TempFer;
Here's the temperature in Celsius: 0
11: TempCel = Convert(TempFer);
12: cout << "\nHere's the temperature in Please enter the temperature in Fahrenheit: 85
Celsius: "; Here's the temperature in Celsius: 29.4444
13: cout << TempCel << endl;
14: return 0;
15: }
16: 5
Global Variables
Variables defined outside of any function have global scope and thus are available from any
function in the program, including main().
Local variables with the same name as global variables do not change the global variables. A local
variable with the same name as a global variable hides the global variable, however. If a function
has a variable with the same name as a global variable, the name refers to the local variable--not
the global--when used within the function. Listing 5.3 illustrates these points.

Listing 5.3. Demonstrating global and local variables. 16:


1: #include <iostream.h>
17: void myFunction()
2: void myFunction(); // prototype
3:
18: {
4: int x = 5, y = 7; // global variables 19: int y = 10;
5: int main() 20:
6: { 21: cout << "x from myFunction: " << x << "\n";
7: 22: cout << "y from myFunction: " << y << "\n\n";
8: cout << "x from main: " << x << "\n"; 23: }
9: cout << "y from main: " << y << "\n\n"; Output: x from main: 5
10: myFunction();
y from main: 7
11: cout << "Back from myFunction!\n\n";
12: cout << "x from main: " << x << "\n"; x from myFunction: 5
13: cout << "y from main: " << y << "\n"; y from myFunction: 10
14: return 0; Back from myFunction!
15: } x from main: 5
y from main: 7
6
Variabel Statis
 Baik variabel eksternal maupun lokal
 Jika variabel lokal berdiri sebagai variabel statis mempunyai sifat :
 Variabel tetap hanya dapat diakses pada fungsi yang
mendefinisikannya
 Variabel tdk hilang saat eksekusi fungsi berakhir. Nilainya akan tetap
dipertahankan, sehingga akan dikenalli pada pemanggilan fungsi
untuk tahap berikutnya
 Inisialisasi oleh pemrogram akan dilakukan sekali saja selama
program dijalankan. Jika tidak ada inisialisasi secara eksplisit, variabel
diisi dengan nol
 Jika variabel eksternal dijadikan sebagai variabel statis, variabel
ini dapat diakses oleh semua file yg didefinisikan pd file yg sama
dgn variabel eksternal tersebut
 Variabel statis diperoleh dgn menambahkan kata kunci static di
depan tipe variabel pd pernyataan pendefinisian

7
Operator Resolusi Lingkup
• untuk mengakses variabel yg didefinisikan di luar suatu fungsi
• Jika dlm suatu fungsi yg hendak mengakses variabel tersebut
terdapat variabel lokal dgn nama yg sama dgn variabel di luar
fungsi bersangkutan

• Variabel eksternal x diakses dgn menggunakan notasi : ::x


• Yaitu dengan menambahkan awalan :: di depan nama variabel
eksternal, sedangkan variabel lokal x cukup dinyatakan dengan
x saja

8
Nilai Bawaan Untuk Argumen Fungsi
 Argumen-argumen yg mempunyai nilai bawaan nantinya dpt tdk
disertakan di dlm pemanggilan fungsi dan dgn sendirinya C++ akan
menggunakan nilai bawaan dari argumen yg tdk disertakan
 Padaaa prototipe fungsi, argumen perlu diinisialisasi dgn nilai
bawaan yg dikehendaki
 Pada bagian definisi fungi tdk ada yg diubah sama sekali
 Contoh :
Void tulis_cplus(int jum=1);
 Dengan adanya prototipe fungsi seperti di atas, jika fungsi
dipanggil seperti berikut : tulis_cplus(); akan diperlakukan sebagai
tulis_cplus(1);

9
Referensi
• Digunakan untuk memberikan nama alias dari variabel
• Bentuk pendeklarasiannya : int &ref = nama_variabel
• Tanda & mengawali nama referensi
• Setelah pendeklarasian, ref menjadi nama alias dari nama_variabel
• Pengubahan nilai terhadap nama_variabel dapat dilakukan melalui
nama_variabel itu sendiri ataupun melalui referensi ref
• Sekali suatu referensi dikaitkan dgn suatu variabel, ia tidak dpt
dipindahkan menjadi alias dari variabel lain
• Referensi sangat berguna untuk melewatkan struktur atau obyek yg
besar ke dalam fungsi
• Dengan memakai referensi utk parameter, hanya alamat yg akan
dilewatkan dan bukan struktur atau obyek itu sendiri.
• Referensi berguna kalau suatu argumen bermaksud utk diubah dari
dalam fungsi

10
Inline Function
• Fungsi digunakan di dlm program diantaranya utk membentuk program yg
terstruktur
• Pemakaian fungsi kadang-kadang harus dibayar mahal sebab argumen-
argumen fungsi harus diletakkan di dlm stack pd saat pemanggilan fungsi, pd
saat fungsi berakhir, argumen-argumen yg ada pd stack perlu dikosongkan
lagi, akibatnya akan memperlambat eksekusi, terutama kalau fungsi sering
dipanggil
• Sebuah inline function dibentuk dgn cukup menyisipkan kata kunci di depat
tipe nilai balik fungsi dalam pendefinisian fungsi
• Contoh :
Inline jumlah(int x, int y)
{return(x+y);}
• Inline function disarankan dipakai pd fungsi yg sering dipanggil dan
ukurannya kecil terutama melibatkan pernyatan perulangan
• Inline function didefinisikan secara lengkap sebelum digunakan

11
Function Overloading
• Function overloading atau overloading terhadap fungsi merupa-kan
kemampuan C++ yg memungkinkan sebuah fungsi dpt menerima
bermacam-macam tipe dan memberikan nilai balik yg bervariasi pula
• Contoh :
Int kuadrat(int i)
{ return(i*i); }
long kuadrat(long l)
{ return(l*l); }
double kuadrat(double d)
{ return(d*d); }
• Jika seandainya terdapat pemanggilan fungsi kuadrat() sbb :
x = kuadrat (7.1);
• Maka C++ dgn bijaksana akan memilih fungsi :
double kuadrat(double d)
{ return(d*d); }

12
Rekursi
• Fungsi dalam C++ dapat dipakai secara rekursi,
artinya suatu fungsi dapat memanggil fungsi yg
merupakan dirinya sendiri
• Penerapan rekursi diantaranya untuk menghitung
nilai : Xn dgn n berupa bilangan bulat positif
• Solusi dari persoalan ini berupa :
Jika n = 1 Maka Xn = X * X n-1

13
Contoh

// nama program : fungsi1.cpp


#include <iostream.h>
int f(int x, int y)
{
return x+y;
}
int main()
{
cout <<f(99,23) << " "
<<f(99, f(99,1)) << "\n";
return 0;
}

14
Function Prototype Examples
long FindArea(long length, long width); // returns long, has two parameters
void PrintMessage(int messageNumber); // returns void, has one parameter
int GetChoice(); // returns int, has no parameters
BadFunction(); // returns int, has no parameters

Function Definition Examples


long Area(long l, long w)
{
return l * w;
}
void PrintMessage(int whichMsg)
{
if (whichMsg == 0)
cout << "Hello.\n";
if (whichMsg == 1)
cout << "Goodbye.\n";
if (whichMsg > 1)
cout << "I'm confused.\n";
} 15
// nama project : fungsi3
// nama file : v_lokal
// contoh utk memperlihatkan efek variabel otomatis (lokal)
# include <iostream.h>
# include <conio.h>
void alpha(); //prototipe fungsi
void main()
{
int x = 22; //variabel lokal pada main()
double y = 2.22; //begitu juga variabel ini
cout<<"Pada main () : x = " <<x
<<" y = "<< y << endl;
alpha(); //panggil fungsi alpha
cout<<"Pada main () : x = " <<x
<<" y = "<< y << endl;
}
void alpha()
{
int x = 20; // variabel lokal pada alpha()
double y = 3.14; //begitu juga variabel ini
cout<<"Pada alpha () : x = " <<x
<<" y = "<< y << endl;
}

16
Contoh
Buatlah program untuk menghitung score dan grade nilai
mahasiswa Dan tampilkan hasilnya !
Gunakan tiga fungsi dalam penyelesaiannya yaitu main,
getscore dan Print grade. Masing-masing fungsi berisi :
Main :
a. Get the course score
b. Print the course grade
getScore :
a. Input score from user
b. Get Input
c. Print the cource score
Printscore :
a. Calculate the course grade
b. Print the course grade
Program
// this program read a course score and print the associated course grade
#include <iostream>
using namespace std;
void getScore(int&, score);
void printGrade(int, cScore);
int main()
{
int courseScore; //line 1
getScore(courseScore); //line 2
printGrade(courseScore); //line 3
return 0;
}
void getScore(int&, score)
{
cout<< “Enter the course score : “; //line 4
cin>>score; //line 5
cout<<“score is : “<<score<<endl; //line 6
}
void printGrade(int, cScore);
{ cout<<“your grade is : “ //line 7
if (cScore >= 90) //line 8
cout<<“A”.<<endl;
else if (cScore>=80)
cout<<“B.”<<endl;
else if (cScore>=70)
cout<<“C.”<<endl;
else if (cScore>=60)
cout<<“D.”<<endl;
else
cout<<“E.”<<end;
}
Eksekusi
line 2 : memanggil fungsi getScore dengan actual parameter couseScore
(dideklarasikan di main)
Forma parameter score adalah referensi parameter, dengan address yg ditunjuk oleh
courseScore.

Main getScore

courseScore score
Eksekusi
line 4 : Run program dengan memberi nilai 85 untuk variabel courseScore
Sehingga nilai score sama dengan isi dari courseScore. Yaitu 85

Main getScore

courseScore 85 score
Eksekusi
line 6 : kembali ke main function

Main

courseScore 85
Eksekusi
line 3 : memanggil fungsi printGrade dan terjadi peng-copy-an nilai couseScore ke
cScore yaitu 85

Main

courseScore 85 85 score

Anda mungkin juga menyukai