PRAKTIKUM 9
-
Upload
hyureka-silverstone -
Category
Documents
-
view
115 -
download
1
Transcript of PRAKTIKUM 9
![Page 1: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/1.jpg)
LAPORAN
PRAKTIKUM IX
( FUNGSI 2 )
DASAR KOMPUTER DAN PEMROGRAMAN
NURWAHYUDDI
(12022038)
Program Studi Teknik Elektro
Fakultas Teknologi Industri
UNIVERSITAS AHMAD DAHLAN
YOGYAKARTA
2012
![Page 2: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/2.jpg)
1
I. TUJUAN PRAKTIKUM
Adapun tujuan dari praktikum IX yang hendak dicapai antara lain :
1. Mahasiswa dapat memahami implementasi konsep dasar pemrograman
dengan alat bantu Turbo C++,
2. Mahasiswa dapat menjelaskan konsep lingkup variabel didalam suatu
fungsi,
3. Mahasiswa mampu menjelaskan jenis pelewatan argumen,
4. Mahasiswa dapat menjelaskan konsep overloaded function.
![Page 3: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/3.jpg)
2
II. DASAR TEORI
a) Lingkup Variabel
Semua variabel yang akan digunakan dalam sebuah program harus
dideklarasikan jenisnya terlebih dahulu pada bagian sebelumnya/diatasnya. Sebuah
variabel dapat memiliki lingkup global ataupun lokal. Variabel global adalah variabel
yang dideklarasikan di bagian utama sebuah program, di luar semua fungsi, sementara
variabel lokal dideklarasikan di dalam sebuah fungsi atau sebuah blok.
Variabel global dapat diacu dari manapun di dalam program, bahkan dari dalam
fungsi, setelah dideklarasikan. Lingkup variabel lokal terbatas di dalam blok yang
dibatasi oleh kurung kurawal ({ }) di mana variabel tersebut dideklarasikan. Contahnya,
jika variabel lokal dideklarasikan pada bagian awal sebuah fungsi (seperti fungsi main,
misalnnya), maka lingkupnya adalah dari posisi deklarasi sampai dengan akhir dari
fungsi tersebut.
b) Pelewatan Argumen (Pelewatan Nilai dan Pelewatan Acuan)
Pada fungsi yang dibuat pelewatan argumennya adalah pelewatan nilai, hal ini
berarti ketika memanggil sebuah fungsi yang memiliki parameter, apa yang dilewati ke
fungsi tersebut adalah kopian nilai dari parameter tersebut, bukan variabel itu sendiri.
Sebagai contoh, umpamanya dipanggil fungsi addition menggunakan program
berikut :
(1) int x=5, y=3, z;(2) z = addition (x, y);
Apa yang dilakukan pada kasus ini adalah pemanggilan fungsi addition
dengan melewatkan nilai x dan y, yaitu masing-masing 5 dan 3, tetapi bukan variabel x
dan y itu sendiri.
int addition (int a, int b)z = addition (5, 3)
![Page 4: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/4.jpg)
3
Dengan cara ini, ketika fungsi addition dipanggil, nilai dari variabel lokal a
dan b masing-masing menjadi 5 dan3, tetapi perubahan apapun pada a atau b dalam
fungsi addition tidak akan mempunyai pengaruh kepada nilai x dan y yang ada
diluar fungsi tersebut, karena variabel x dan y tidak dilewatkan ke dalam fungsi itu,
tetapi hanya kopian dari nilai mereka pada saat fungsi dipanggil.
c) Overloaded function (Fungsi yang ditimpa)
Dalam C++, 2 buah fungsi yang berbeda dapat memiliki nilai yang sama apabila
banyaknya parameter atatu jenis parameternya berbeda. Hal ini berarti nama yang sama
dapat diberikan untuk lebih dari 1 fungsii jika memiliki banyaknya parameter atau jenis
yang berbeda.
Contohnya :
// overloaded function#include <iostream>using namespace std;int operate (int a, int b){ return (a*b);}float operate (float a, float b){ return (a/b);}int main (){ int x=5,y=2; float n=5.0, m=2.0;
cout << operate (x,y);cout << “\n”;cout << operate (n,m);cout << “\n”;return 0;
}102.5
![Page 5: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/5.jpg)
4
Pada contoh diatas, dideklarasikan 2 buah fungsi dengan nama sama, yaitu
operate , tetapi sebuah fungsi memiliki 2 parameter jenis int dan fungsi yang lain
memiliki 2 parameter jenis float . Compiler dapat mengetahui fungsi mana yang
dipanggil dengan memeriksa jenis parameter yang dilewatkan. Jika funsi tersebut
dipanggil dengan 2 parameter berjenis int , maka kompiler akan memilih fungsi yang
dideklarasikan dengan 2 parameter berjenis int , sedangkan jika dipanggil dengan 2
parameter berjenis float , maka compiler yang akan memilih fungsi yang
dideklarasikan dengan 2 parameter float.
Pada pemanggilan pertama dalam main, parameter yang dilewatkan adalah
berjenis int (x dan y), sehingga fungsi pertama yang dipanggil. Fungsi ini
mengembalikan nilai hasil perkalian dari kedua parameternya. Pada pemanggilan kedua,
parameter yang dilewatkan adalah perjenis float (n dan m), sehingga fungsi kedua
yang dipanggil. Fungsi kedua ini memberikanhasil pembagian antara parameter pertama
dengan kedua. Sehingga hasil pemanggilan fungsi bergantung pada jenis parameter
yang dilewatkan karena fungsi tersebut telah dioverload (ditimpa).
Catatan : sebuah fungsi tidak dapat ditimpa hanya dengan mengubah jenis nilai
kembaliannya. Paling tidak satu parameter harus memiliki jenis yang berbeda.
![Page 6: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/6.jpg)
5
III. HASIL DAN PEMBAHASAN
1. Lingkup Variabel di dalam Fungsi
Program IX-1 :
Berikut hasil compile dari program diatas :
Yang terjadi pada X ketika ditambahkan X = 20; , dan int X = 20; pada
sebaris diatas cout dalam SebuahFungsi(1) :
a) Di dalam program utama, X = 10Di dalam fungsi, X = 10Keluar ke program utama lagi, X = 10
b) Di dalam program utama, X = 10Di dalam fungsi, X = 20Keluar ke program utama lagi, X = 20
#include <iostream.h>int X = 10;
void SebuahFungsi(){
cout << "Di dalam fungsi, X = " << X << endl;
}
main(){
cout << "Di dalam program utama, X = " << X << endl;
SebuahFungsi();cout << "Keluar ke program utama lagi, X = "
<< X << endl;}
![Page 7: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/7.jpg)
6
c) Di dalam program utama, X = 10Di dalam fungsi, X = 20Keluar ke program utama lagi, X = 10
2. Pelewatan Parameter pada pemanggilan fungsi
Program IX-2 :
Berikut hasil compile dari listing program diatas :
Variabel yang diubah nilainya ketika dijadikan parameter yang dilewatkan pada fungsi
Gandakan yaitu variabel Y dan Z, sedangkan veriabel X tidak termasuk karena
#include <iostream.h>void Gandakan(int A, int *B, int &C) {
A = A*2;*B = *B*2;C = C*2;
}main(){
int X = 1, Y = 10, Z = 6;cout << "Sebelum fungsi Gandakan dipanggil\n"
<< "X = " << X << endl << "Y = " << Y << endl << "Z = " << Z << endl;
Gandakan(X, &Y, Z);cout << "Setelah fungsi Gandakan dipanggil\n"
<< "X = " << X << endl << "Y = " << Y << endl << "Z = " << Z << endl;
}
![Page 8: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/8.jpg)
7
pemanggilan variabel X tidak diawali dengan simbol ampersand (&) dan penulisan
variabel dalam fungsi tidak diawali simbol bintang (*)(2).
3. Overloading (Pendefinisian Fungsi dengan nama sama)
Program IX-3 :
Pada saat program diatas dicompile muncul Error Message, yaitu
“Declaration terminated incorrectly”. Hal ini terjadi karena pada
listing program diatas tepatnya pada baris return float P*L; yang sebaiknya tidak
menggunakan fungsi float lagi sebagai keterangan yang menunjukkan value yang
akan ditampilkan pada perintah (P*L). Selain itu penyebab lain terjadinya error karena
penggunaan tanda ( ; ) yang sebaiknya tidak digunakan pada baris listing float
HitungLuas(float R);. Maka dari hal-hal tersebut yang menyebabkan terjadinya
error pada listing diatas dapat diperbaiki dengan mengganti atau menghilangkan
beberapa fungsi yang sebaiknya tidak digunakan dalam memproses program. Berikut
barisan dari listing program yang harus diubah(3) :
float HitungLuas(float R);
#include <iostream.h>float HitungLuas(float R);{
return 3.14159*R*R;}float HitungLuas(float P, float L) {
return float P*L;}main () {
float Radius, Luas, Panjang, Lebar;cout << "Radius lingkaran = ";cin >> Radius;cout << "Panjang segiempat = ";cin >> Panjang;cout << "Lebar segiempat = ";cin >> Lebar;Luas = HitungLuas(Radius);cout << "Luas lingkaran = " << Luas << endl;Luas = HitungLuas(Panjang, Lebar);cout << "Luas segiempat = " << Luas << endl;
}
![Page 9: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/9.jpg)
8
return float P*L;diperbaiki menjadi :float HitungLuas(float R)return P*L;Berikut merupakan hasil compile dari listing program IX-3 setelah diperbaiki :
Tidak terjadi Error ketika dua buah fungsi menggunakan nama yaang sama karena pada
dua fungsi yang digunakan meskipun menggunakan nama yang sama tetapi memilki
parameter yang berbeda(4).
4. Nilai Default pada Parameter Fungsi
Program IX-4 :
Pada saat program diatas dicompile muncul Error Message, yaitu ) expected . Hal
ini terjadi karena pada barisan listing void Keterangan(int N : 10)
#include <iostream.h>void Keterangan(int N : 10){
if (N>=8)cout << "Nilai " << N << " itu bagus\n";
else if (N<5)cout << "Nilai " << N << " itu parah\n";
elsecout << "Nilai " << N << " itu cukupan\n";
}main (){
int Nilai;Keterangan();cout << "Masukkan nilai = ";cin >> Nilai;Keterangan(Nilai);
}
![Page 10: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/10.jpg)
9
menggunakan tanda ( : ) yang dalam penempatannya tidak seharusnya digunakan
sehingga terjadi Error pada saat program dicompile.
Untuk dapat menjalankan program tersebut agar dapat berhasil dicompile serta tidak
terjadi Error, kita perlu mengganti tanda (:) dengan tanda (=) yang seharusnya
digunakan untuk menginisialkan nilai N sama dengan 10. Angka 10 dalam program
tersebut menyatakan nilai N yang merupakan nilai maksimal terbaik (Nilai 10 itu
bagus) ketika kita memasukkan nilai setelah melalui proses compile(5).
Berikut merupakan hasil compile dari program IX-4 :
void Keterangan(int N : 10)
diganti dengan :
void Keterangan(int N = 10)
![Page 11: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/11.jpg)
10
Tidak terjadi Error ketika fungsi dipanggil tanpa mengisikan parameternya karena pada
fungsi tersebut sudah memiliki nilai default, sehingga saat parameter fungsi tidak diisi,
maka program akan menggunakan nilai default itu(6).
5. Menulis ke File Teks
Program IX-5 :
Berikut merupakan hasil compile dari listing program diatas :
#include <stdio.h>#include <string.h>#include <iostream.h>main (){
char namafileoutput[] = "filesaya.txt";char teks[80];FILE * fout;fout = fopen(namafileoutput, "w");cout << "Ketikkan teks yang akan ditulis"
<< "ke file, akhiri dengan END\n";while(1) {
gets (teks);if (strcmp(teks, "END") == 0)
break;strcat(teks, "\n");fputs(teks, fout);
}fclose(fout);cout <<"Selesai" << endl;
}
![Page 12: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/12.jpg)
11
![Page 13: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/13.jpg)
12
6. Membaca dari Teks File
Program IX-6 :
Berikut merupakan hasil compile dari listing program diatas :
#include <stdio.h>#include <string.h>#include <iostream.h>
main () {char namafileinput[] = "filesaya.txt";char teks[80];FILE *fin;
fin = fopen(namafileinput, "rt");cout << "Isi file " << namafileinput << endl;while (1) {
if(fgets(teks, 80, fin)==NULL){break;
}cout << teks;
}fclose(fin);cout << "Selesai" << endl;
}
![Page 14: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/14.jpg)
13
IV. TUGAS
![Page 15: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/15.jpg)
14
![Page 16: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/16.jpg)
15
V. KESIMPULAN
Adapum kesimpulan yang dapat diambil dalam praktikum IX ini antara lain
sebagai berikut :
1. Semua variabel yang akan digunakan dalam sebuah program harus
dideklarasikan jenisnya terlebih dahulu, jjika tidak akan tejadi Error pada
program yang akan dijalankan,
2. Untuk pelewatan argumen fungsi yang dibuat adalah fungsi yang dilewatkan
nilainya berarti ketika program memanggil sebuah fungsi yang memiliki
parameter maka yang dilewatkan pada fungsi tersebut adalah kopian dari
nilai parameter tersebut, sehingga pada pembuatan fungsi jenis ini
diperlukan ketelitian ekstra dalam penulisan programnya,
3. Dalam bahasa C++ overload funtion dapat kita fungsikan untuk melakukan
pendeklarasian dua buah fungsi yang berbeda dengan nama yhang sama,
akan tetapi fungsi tidak dapat ditimpa hanya dengan mengubah jenis nilai
kembalinya.
![Page 17: PRAKTIKUM 9](https://reader033.fdocument.pub/reader033/viewer/2022052304/55cf9827550346d03395e7cd/html5/thumbnails/17.jpg)
16
VI. REFERENSI
Modul Praktikum Dasar Pemrograman Kartika Firdausy, S.T.,M.T
tugaskuliah.googlecode.com/
ilmukamu.wordpress.com/