Anda di halaman 1dari 19

LAPORAN PRAKTIKUM VIII

( FUNGSI ) DASAR KOMPUTER DAN PEMROGRAMAN

NURWAHYUDDI (12022038)

Program Studi Teknik Elektro Fakultas Teknologi Industri

UNIVERSITAS AHMAD DAHLAN YOGYAKARTA 2012

I.

TUJUAN PRAKTIKUM VIII

Adapun yang menjadi tujuan dalam Praktikum VI ini antara lain : 1. Mahasiswa dapat memahami implementasi konsep dasar pemrograman dengan alat bantu Turbo C++, 2. 3. 4. Mahasiswa dapat menjelaskan konsep fungsi, Mahasiswa mampu menjelaskan struktur fungsi dan bagian-bagiannya, Mahasiswa mampu menjelaskan cara memanggil fungsi dalam fungsi main (), 5. Mahasiswa dapat menyusun dan menjelaskan program menggunakan struktur fungsi, 6. Mahasiswa dapat menjelaskan fungsi tanpa nilai balik (tipe void).

II.

DASAR TEORI

Sebuah fungsi pada C++ umumnya berisi sejumlah pernyataan C++ yang dikemas dengan sebuah nama. Selanjutnya nama ini dapat dipanggil beberapa kali dalam suatu kode C++. Salah satu fungsi yang sering dilibatkan dalam aplikasi berbasis konsol yaitu main(). Biasanya didalam fungsi tersebut dituliskan sejumlah pernyataan.

Tujuan utama pembuatan fungsi adalah untuk membuat suatu aplikasi agar dapat dipecah menjadi sejumlahbagian yang dapat dikelola dengan lebih mudah oleh pemrogram daripada kalau aplikasi hanya mengandung sebuah fungsi, misalnya fungsiA(), fungsiB(), dan fungsiC(). Kemudian didalam fungsi main(), terdapat pemanggilan ketiga fungsi tersebut sebagai berikut :
Int main() { fungsiA(); fungsiB(); fungsiC(); }

Dalam implementasinya, pemrogram dapt berkonsentrasiuntuk menuliskan fungsiA() secara detil telebih dahulu, kemudian ke fungsi-fungsi berikutnya sehingga seluruh kode dituliskan.

Dalam prakteknya fungsiA() juga bisa tersusun atas sejumlah fungsi. Berikut adalah contoh kerangka pemakaian fungsi dalam sebuah aplikasi.

main ()

fungsiA()

fungsiB()

fungsiC()

fungsiB1()

fungsiB2()

fungsiB3()

a) Struktur Fungsi

tipe_nilai_balik_nama_fungsi(tipe_parameterA, tipe_parameterB,...) { pernyataan_1; ... pernyataan_n; return nilai_balik; }

Bagian
tipe_nilai_balik_nama_fungsi(tipe_parameterA,tipe_parameterB,..)

disebut judul fungsi, yang terdiri dari tiga bagian : 1.


tipe_nilai_balik

menentukan tipe nilai yang diberikan oleh fungsi ketika fungsi dipanggil. Nilai balik ditentukan melalui pernyataan return. 2. 3.
nama_fungsi parameter

digunakkan untuk melewatkan nilai ke fungsi. Antar parameter dipisahkan oleh tanda (,). Jika tak ada parameter, judul fungsi berupa :
tipe_nilai_balik_nama_fungsi()

Dalam definisi fungsi, tanda titik koma sesudah tanda } tidak diperlukan. Pada bagian pernyataan fungsi terdapat pernyataan return yang digunakan untuk mengakhiri eksekusi fungsi dan memberikan nilai balik, yaitu nilai yang diberikan oleh fungsi ketika fungsi dipanggil. Contoh :
long kuadrat(long x) { long hasil = x*x; return hasil; }

Artinya didefinisikan fungsi dengan nama kuadrat() yang digunakan untuk menghitung nilai kuadrat dari sebuah bilangan. Nama parameter adalah x, dengan tipe long dan memberikan nilai balik berupa perkalian x dengan x dan tipe long.

b) Fungsi tanpa nilai balik Fungsi dengan tipe void berarti tidak memiliki nilai balik, sehinnga tidak dapat nilai balik berkedudukan sebagai ekspresi. Contoh :
void info () { cout << Tidsk ada nilai balik; }

Bisa ditambahkan pernyataan return :


void info () { cout << Tidak ada nilai balik; return; }

Cara memanggil fungsi diatas :


info ()

III.

HASIL DAN PEMBAHASAN a) Fungsi pada perhitungan nilai Rerata

Program VIII-1
#include <iostream.h> int N; float jumlah, rerata, data[100]; void Masukkan_Data(){ cout << "Banyaknya nilai = "; cin >> N; for (int i=0; i<N; i++){ cout << "Nilai ke-" << (i+1) << " = "; cin >> data[i]; } } void Hitung_Rerata(){ jumlah = 0; for (int i=0; i<N; i++){ jumlah = jumlah+data[i]; } rerata = jumlah/N; } void Tampilkan_Hasil(){ cout << "Jumlah = " << jumlah << endl; cout << "Rerata = " << rerata << endl; } main() { Masukkan_Data(); Hitung_Rerata(); Tampilkan_Hasil(); }

Hasil kompile Program :

Berikut merupakan penjelasan dari program VIII-1: Baris 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Keterangan header yang menyediakan operasi stream, Merupakan keterangan untuk tipe data N yang akan dimasukkan dalam bentuk bilangan bulat (integer), merupakan bentuk dari deklarasi array( jumlah, rerata data[100]) yang akan ditampilkan dalam format bilangan /float(bertipe data float), Merupakan perintah untuk fungsi Masukkan data tetapi tidak memiliki nilai kembalian(return value) Perintah output/keluaran untuk menampilkan tulisan Banyaknya Nilai = Perintah input/masukkan untuk memasukkan nilai N, Merupakan perintah untuk perulangan yang dibatasi dengan kondisi i = 0 dan i<N dimana i akan dinaikan sebanyak 1 dari nilai awal oleh perintah i++, Perintah output untuk menampilkan tulisan Nilai ke-serta nilai i yang akan kita masukkan, perintah input untuk memasukkan nilai[i], Merupakan instruksi untuk menghitung rerata tetapi tidak memiliki return value, Keterangan untuk jumlah = 0, Merupakan perintah untuk perulangan yang dibatasi dengan kondisi i = 0 dan i<N dimana i akan dinaikan sebanyak 1 dari nilai awal oleh perintah i++, Merupakan rumus/pemroses perhitungan jumlah dari jumlah ditambah data yang dimasukkan, Merupakan rumus/pemroses perhitungan rerata dengan jumlah dibagi jumlah atau banyaknya data yang dimasukkan(N), Merupakan instruksi untuk menampilkan hasil yang tidak memiliki nilai pengembalian, Perintah output untuk menampilkan tulisan Jumlah= serta hasil dari perhitungan jumlah, Perintah output untuk menampilkan tulisan Rerata= serta hasil dari perhitungan rerata, Fungsi utama dari program, Cara pemanggilan dari fungsi pada proses memasukkan data pada program, Cara pemanggilan dari fungsi pada proses penghitungan rerata pada program, Cara pemanggilan dari fungsi pada proses menampilkan hasil pada program,

Perhitungan nilai Rerata dengan Standar Deviasi Untuk menghitung standar Deviasi kita perlu menambahkan satu pustaka header yaitu (math.h), serta fungsi string yang penting untuk menghitung standar deviasi yaitu fungsi (stdrdev)(2). Listing Program :
#include <iostream.h> #include <math.h> int N; float jumlah, rerata, peny, stdrdev, data[100]; void Masukkan_Data(){ cout << "Banyaknya nilai = "; cin >> N; for (int i=0; i<N; i++){ cout << "Nilai ke-" << (i+1) << "="; cin >> data[i]; } } void Hitung_Rerata(){ jumlah=0; for(int i=0; i<N; i++){ jumlah = jumlah=data[i]; } rerata = jumlah/N; } void Hitung_Standar_Deviasi(){ peny = 0; for (int i=0; i<N; i++){ peny += (data[i] - rerata)*(data[i] - rerata); } stdrdev = sqrt(peny/(N-1)); } void Tampilkan_Hasil(){ cout << "Jumlah = " << jumlah << endl; cout << "Rerata = " << rerata << endl; cout << "Standar_Deviasi = " << stdrdev << endl; } main () { Masukkan_Data(); Hitung_Rerata(); Hitung_Standar_Deviasi(); Tampilkan_Hasil(); }

Berikut hasil kompile dari program perhitungan nilai rerata dengan standar deviasi :

b) Fungsi untuk mengisi dan menampilkan Matriks Program VIII-2


#include <iostream.h> int N = 2; void MengisiMatriks(float X[5][5]){ for (int i=0; i<N; i++){ for (int j=0; j<N; j++){ cout << "elemen " << i << "," << j << " = "; cin >> X[i][j]; } } } void MenampilkanMatriks (float X[5][5]){ for (int i=0; i<N; i++){ for (int j=0; j<N; j++){ cout << "\t" << X[i][j]; } cout << endl; } } main() { float A[5][5]; cout << "Masukkan elemen matriks A\n"; MengisiMatriks(A); cout << "Matriks A = \n"; MenampilkanMatriks(A); }

Berikut hasil kompile program serta penjelasan tiap baris dari program :

Berikut merupakan penjelasan dari program VIII-2: Baris 1. 2. 3. Keterangan File header yang menyediakan operasi stream, Merupakan keterangan untuk N =2 yang akan dimasukkan dalam bentuk bilangan bulat (integer), Merupakan perintah untuk Mengisi Matriks tetapi tidak memiliki nilai kembalian/nilai balik(return value) dimana X[5][5] dalam kondisi float/bilangan, Merupakan perulangan yang digunakan dengan kondisi i =0 dan i<N dimana nilai i akan dinaikan sebanyak 1 dari nilai awal dengan tipe data integer/bilangan bulat, Merupakan perulangan yang digunakan dengan kondisi j=0 dan j<N dimana nilai j akan dinaikan sebanyak 1 dari nilai awal dengan tipe data integer/bilangan bulat, Merupakan perintah output untuk menampilkan tulisan elemen dengan kordinat i dan j serta tanda=, perintah input untuk X[i][j], Merupakan instruksi untuk Menampilkan Matriks tetapi tidak memiliki nilai kembalian/nilai balik(return value) dimana X[5][5] dalam kondisi float/bilangan, Merupakan perulangan yang digunakan dengan kondisi i =0 dan i<N dimana nilai i akan dinaikan sebanyak 1 dari nilai awal dengan tipe data integer/bilangan bulat, Merupakan perulangan yang digunakan dengan kondisi j=0 dan j<N dimana nilai j akan dinaikan sebanyak 1 dari nilai awal dengan tipe data integer/bilangan bulat, Perintah output untuk menampilkan data dengan tampilan \t(tabulasi horizontal) yang akan diaplikasikan pada nilai [i][j], Perintah output untuk newline/baris baru,

4.

5. 6. 7. 8.

9.

10. 11. 12.

10

13. 14. 15. 16. 17. 18.

Merupakan fungsi utama pada program C++, Keterangan untuk A[5][5] dalam bentuk bilangan / float, Perintah output untuk menampilkan tulisan Masukkan elemen matriks A serta perintah untuk newline, Pemanggilan untuk fungsi MengisiMatriks(A), Perintah keluaran/output untuk menampilkan tulisanMatriks A= serta perintah untuk newline, Pemanggilan untuk fungsi MenampilkanMatriks(A),

Berikut merupakan program hasil modifikasi dari program VIII-2 serta hasil kompilenya(4) :
#include <iostream.h> int N=2; float A[5][5], B[5][5], C[5][5]; void MengisiMatriksA(float A[5][5]) // ukuran array A yg didefinisikan { for (int i=0; i<N; i++) { for (int j=0; j<N; j++) { cout << "elemen" << i << "," << j << " = "; cin >> A[i][j]; } } } void MengisiMatriksB(float B[5][5]) { for (int i=0; i<N; i++) { for (int j=0; j<N; j++) { cout << "elemen" << i << "," << j << " = "; cin >> B[i][j]; } } } void MenjumlahMatriks(float C[5][5]) { for (int i=0; i<N; i++) { for (int j=0; j<N; j++) { // j dicacah dalam kalang i C[i][j] = A[i][j] + B[i][j]; } } } void MenampilkanMatriksA (float A[5][5]) { for (int i=0; i<N; i++) { for (int j=0; j<N; j++) { cout << "\t" << A[i][j]; } cout << endl; } }

Lanjutan program dibelakang,,

11

void MenampilkanMatriksB (float B[5][5]) { for (int i=0; i<N; i++) { for (int j=0; j<N; j++) { cout << "\t" << B[i][j]; } cout << endl; } } void MenampilkanMatriksC (float C[5][5]) { for (int i=0; i<N; i++) { for (int j=0; j<N; j++) { cout << "\t" << C[i][j]; } cout << endl; } } main() { cout << "Masukkan elemen matriks A\n"; MengisiMatriksA(A); cout << "Masukkan elemen matriks B\n"; MengisiMatriksB(B); cout << "Matriks A = \n"; MenampilkanMatriksA(A); cout << "Matriks B = \n"; MenampilkanMatriksB(B); cout << "Jumlah kedua matriks adalah\n"; MenjumlahMatriks(C); // jk tdk ada hslnya 0 semua MenampilkanMatriksC(C); }

12

c) Program Konversi Suhu Program VIII-3


#include <iostream.h> float Suhu_C, Suhu_F; // definisikan variabel float C_ke_F(float C) { float F; F = 1.8*C+32.0; return F; } void Mengisi_Input() { cout << "Isikan nilai Suhu C = "; // tampilkan tulisan cin >> Suhu_C; // isikan nilai Suhu C } void Mengkonversi() { Suhu_F = C_ke_F(Suhu_C); // hitung nilai Suhu F } void Menampilkan_Hasil() { cout << "Temperatur " << Suhu_C << " C = " << Suhu_F << "F" << endl; } main() { Mengisi_Input(); Mengkonversi(); Menampilkan_Hasil(); }

Berikut hasil eksekusi dari Listing program diatas :

Empat pendefinisian fungsi :


float C_ke_F(float C); void Mengisi_Input(); void Mengkonversi (); void Menampilkan_Hasil();

13

Setelah dilakukan pemindahan keempat fungsi ke bagian bawah program setelah akhir dari program utama main () serta dilakukannya compile, muncul Error Message, antara lain sebagai berikut(5) : a. b. c. d. e. f. Function Mengisi_Input should have a prototype Function Mengkonversi should have a prototype Function Menampilkan_Hasil should have a prototype Type mismatch in redeclaration of Mengisi_Input() Type mismatch in redeclaration of Mengkonversi() Type mismatch in redeclaration of Menampilkan_Hasil() Kegunaan keempat pendefinisian fungsi tersebut adalah memberikan header baru sesuai keingina kita, dimana dalam header tersebut terdapat fungsi yang dapat dipanggil. Jadi kita dapat menambahkan suatu header jika suatu compiler tidak support terhadap fungsi yang kita gunakan(6). IV. TUGAS Listing program :
#include <iostream.h> char pilihan; float input, output; float C_ke_F(float C) { float F; F = 9.0/5.0*C+32.0; return F; } float F_ke_C(float F) { float C; C = 5.0/9.0*(F-32.0); return C; } float C_ke_R(float C) { float R; R = 4.0/5.0*C; return R; } float R_ke_C(float R) { float C; C = 5.0/4.0*R; return C; } float F_ke_R(float F) { float R; R = 4.0/9.0*(F-32); return R; } float R_ke_F(float R) { float F; F = 9.0/4.0*R+32; return F; } void Menampilkan_Menu() { cout << "Pilih konversi berikut :" << endl << "A. Celcius ke Fahrenheit" << endl << "B. Fahrenheit ke Celcius" << endl << "C. Celcius ke Reamur" << endl << "D. Reamur ke Celcius" << endl << "E. Fahrenheit ke Reamur" << endl << "F. Reamur ke Fahrenheit" << endl << "X. Selesai" << endl; } void Mengisi_Pilihan () { cout << "Masukkan pilihan konversi = "; cin >> pilihan; } void Mengisi_Input() { cout << "Isikan nilai suhu = "; cin >>input; } void Pilihan_Konversi() { if((pilihan=='A')||(pilihan=='a')) { output = C_ke_F(input); cout << "Temperatur " << input << "C = " << output << "F"; } }

14

else if((pilihan=='B')||(pilihan=='b')) { output = F_ke_C(input); cout << "Temperatur " << input << "F = " << output << "C"; } else if((pilihan=='C')||(pilihan=='c')) { output = C_ke_R(input); cout << "Temperatur " << input << "C = " << output << "R"; } else if((pilihan=='D')||(pilihan=='d')) { output = R_ke_C(input); cout << "Temperatur " << input << "R = " << output << "C"; } else if((pilihan=='E')||(pilihan=='e')) { output = F_ke_R(input); cout << "Temperatur " << input << "F = " << output << "R"; } else if((pilihan=='F')||(pilihan=='f')) { output = R_ke_F(input); cout << "Temperatur " << input << "R = " << output << "F"; } else if((pilihan=='X')||(pilihan=='x')) { cout << "Selesai"; } else cout << "Tidak ada dalam menu konversi"; } main() { Menampilkan_Menu(); Mengisi_Pilihan(); Mengisi_Input(); Pilihan_Konversi(); }

Berikut hasil kompile dari program untuk menghitung konversi suhu :

15

16

V.

KESIMPULAN

Adapun kesimpulan yang dapat diambil dari praktikum VIII ini antara lain sebagai berikut : 1. Didalam C++ umumnya terdapat sebuah fungsi yang berisi sejumlah pernyataan C++ yang dikemas dengan sebuah nama, dimana nama tersebut dapat di panggil beberapa kali dengan suatu kode C++. Salah satu fungsi yang sering dilibatkan dalam aplikasi berbasis konsol yaitu main (). 2. Dalam memanggil sebuah fungsi pada program C++ memiliki dua cara pemanggilan, yaitu : a) Cara tak langsung, yaitu cara pemanggilan fungsi untuk fungsi yang mengembalikan nilai (return value), b) Cara langsung, yaitu cara pemanggilan fungsi untuk fungsi bertipe void ( fungsi yang tidak mengembalikan nilai), 3. Suatu fungsi atau Sub-program bersifat sebagai suatu program utuh, maksudnya fungsi tersebut dapat melakukan suatu pekerjaan secara utuh. Semua jenis atau macam instruksi dapat digunakan dalam sebuah fungsi.

17

VI.

REFERENSI

Modul Praktikum Dasar Pemrograman Kartika Firdausy, S.T.,M.T tugaskuliah.googlecode.com/ ilmukamu.wordpress.com/

18

Anda mungkin juga menyukai