PRAKTIKUM 9

18
LAPORAN PRAKTIKUM IX ( FUNGSI 2 ) DASAR KOMPUTER DAN PEMROGRAMAN NURWAHYUDDI (12022038) Program Studi Teknik Elektro Fakultas Teknologi Industri

Transcript of PRAKTIKUM 9

Page 1: PRAKTIKUM 9

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

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

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

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

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

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

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

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

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

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

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

11

Page 13: PRAKTIKUM 9

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

13

IV. TUGAS

Page 15: PRAKTIKUM 9

14

Page 16: PRAKTIKUM 9

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

16

VI. REFERENSI

Modul Praktikum Dasar Pemrograman Kartika Firdausy, S.T.,M.T

tugaskuliah.googlecode.com/

ilmukamu.wordpress.com/