Bahasa C++

15
KONSEP BAHASA PEMROGRAMAN MODUL 2 Penyusun: I. JUDUL SubProgram(Fungsi) bahasa imperative C++ II. LANDASAN MATERI Pemrograman Imperatif Pemrograman imperatif adalah paradigma pemrograman yang mempunyai karakteristik berupa status dan instruksi / perintah untuk mengubah status program. Status diwakili oleh variabel sedangkan instruksi diwakili oleh statement. Bahasa C++ Bahasa C bisa disebut bahasa pemrograman tingkat menengah (middle level programming language). Arti tingkat (level) di sini adalah kemampuan mengakses fungsi-fungsi dan perintah-perintah dasar bahasa mesin / hardware (machine basic instruction set). Semakin tinggi tingkat bahasa pemrograman (misalnya: Java), semakin mudahlah bahasa pemrograman dipahami manusia, namun membawa pengaruh semakin berkurang kemampuan untuk mengakses langsung instruksi dasar bahasa mesin. Demikian juga sebaliknya dengan bahasa pemrograman tingkat rendah (misalnya: Assembler), yang semakin sulit dipahami manusia dan hanya berisi perintah untuk mengakses bahasa mesin. Dalam perspektif mudahnya dipahami manusia, C

description

berisi sub program bahasa c++

Transcript of Bahasa C++

Page 1: Bahasa C++

KONSEP BAHASA PEMROGRAMAN

MODUL 2

Penyusun:

I. JUDUL

SubProgram(Fungsi) bahasa imperative C++

II. LANDASAN MATERI

Pemrograman Imperatif

Pemrograman imperatif adalah paradigma pemrograman yang mempunyai

karakteristik berupa status dan instruksi / perintah untuk mengubah status program. Status

diwakili oleh variabel sedangkan instruksi diwakili oleh statement.

Bahasa C++

Bahasa C bisa disebut bahasa pemrograman tingkat menengah (middle level

programming language). Arti tingkat (level) di sini adalah kemampuan mengakses

fungsi-fungsi dan perintah-perintah dasar bahasa mesin / hardware (machine basic

instruction set). Semakin tinggi tingkat bahasa pemrograman (misalnya: Java), semakin

mudahlah bahasa pemrograman dipahami manusia, namun membawa pengaruh semakin

berkurang kemampuan untuk mengakses langsung instruksi dasar bahasa mesin.

Demikian juga sebaliknya dengan bahasa pemrograman tingkat rendah (misalnya:

Assembler), yang semakin sulit dipahami manusia dan hanya berisi perintah untuk

mengakses bahasa mesin. Dalam perspektif mudahnya dipahami manusia, C bisa

digolongkan dalam bahasa tingkat tinggi, namun C juga menyediakan kemampuan yang

ada pada bahasa tingkat rendah, misalnya operasi bit, operasi byte, pengaksesan memori,

dsb.

Bahasa C merupakan bahasa pemrograman struktural yang membagi program ke

dalam sejumlah blok (sub program). Tujuannya adalah untuk memudahkan dalam

pembuatan dan pengembangan program. Program yang ditulis dengan C mudah sekali

dipindahkan dari satu jenis mesin ke mesin lain.

Page 2: Bahasa C++

SUB PROGRAM (FUNGSI)

Pada awal perkenalan bahasa C++ telah dibahas singkat seputar algoritma. Dasarnya, algoritma adalah suatu pemetaan yang membantu kita dalam merancang program. Hal ini dikarenakan sifat dari program adalah suatu proses tertentu yang memiliki susunan instruksi yang pasti. Masalah yang seringkali timbul adalah dalam suatu program dibutuhkan proses yang harus terjadi berulang-ulang. Mungkin proses perulangan menggunakan for atau while dapat mengatasi masalah ini. Namun kita akan membutuhkan hal lain apabila proses yang berulang itu adalah suatu program yang skalanya dapat dikatakan relatif kompleks. Fungsi/Prosedur merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas/perintah tertentu dan letaknya terpisah dari program utama. Dalam kesempatan ini kita akan membahas dengan fokus terhadap dua hal, yaitu prosedur dan fungsi. Pada dasarnya prosedur merupakan fungsi juga, namun prosedur tidak memberikan nilai balik seperti halnya fungsi.

Selain format penulisan yang perlu diketahui, dalam pembentukan program yang melibatkan banyak fungsi kita perlu memahami struktur umum yang terjadi dalam program tersebut, yaitu :

a. Prototype (prosedur / fungsi pendukung)

Pada bagian ini, prosedur/fungsi pendukung yang akan digunakan pada fungsi utama dideklarasikan. Karena sifatnya yang berupa prototype, kita hanya perlu mendeklarasikan tipe data, nama fungsi, dan daftar parameter.

b. Prosedur / Fungsi Utama

Bagian ini adalah dimana fungsi utama dijalankan. Ciri khas yang membedakan fungsi utama ini dengan yang lainnya adalah fungsi ini dinamakan “main”. Hal ini menunjukkan bahwa instruksi-instruksi yang berada di dalam fungsi ini adalah instruksi yang akan dijalankan pertama kali. Instruksi-instruksi pada fungsi lain hanyalah bersifat pendukung.

Page 3: Bahasa C++

c. Prosedur / Fungsi Pendukung

Bagian ketiga ini adalah tempat prosedur/fungsi pendukung dijelaskan. Nama daripada fungsi ini telah dideklarasikan pada bagian prototype. Kemudian, instruksi yang ada di dalam fungsi pendukung dijelaskan rinci disini.

II. PEMAHAMAN PROSEDUR DAN FUNGSI

Sebelum melangkah lebih jauh, mari kita pahami lebih dalam mengenai fungsi dalam bahasa C++. Andaikan kita menemukan soal fungsi seperti ini : F (x) = 2x + 3 Fungsi dalam bahasa C++ prinsipnya sama dengan fungsi dalam matematika. Kita akan mempunyai suatu instruksi (proses dengan operator matematika), suatu variabel input ( x ), dan suatu nilai balik ( F(x) ). Dengan kata lain, fungsi matematika di atas dapat diterjemahkan menjadi berikut :

SUBPROGRAM : PROSEDUR

Untuk lebih mudah memahaminya, perhatikan contoh berikut :

#include <iostream>#include <conio.h>using namespace std;main(){ cout << "Mencoba membuat bintang TANPA prosedur pendukung:\n"; cout << " * * * * * * * *\n"; getch(); return 0;}Maka outputnya adalah :

Mencoba membuat bintang TANPA prosedur pendukung:

* * * * * * * *

KETERANGAN

Page 4: Bahasa C++

Perhatikan contoh di atas. Program di atas dapat kita namakan prosedur. Inti dari program tersebut adalah untuk mencetak karakter bintang, tanpa mengembalikan suatu nilai. Kita juga dapat membuat suatu prosedur dengan mengembalikan nilai dari program tersebut dengan nilai 0 (nol).

Selanjutnya, perhatikan contoh prosedur dengan bantuan prosedur pendukung :

#include <iostream>#include <conio.h>using namespace std;void buatBintang(); //prototype prosedurmain(){ cout << "Mencoba membuat bintang DENGAN prosedur pendukung:\n"; buatBintang(); //panggil prosedur buatBintang() getch(); return 0;}void buatBintang() //pendefenisian prosedur{ cout << " * * * * * * * *\n";}

Maka outputnya adalah :

Mencoba membuat bintang DENGAN prosedur pendukung:

* * * * * * * *

KETERANGAN

Program di atas juga berupa prosedur. Namun pada program ini, kita menggunakan bantuan prosedur pendukung.

Kita dapat melihat adanya prototype prosedur, prosedur utama dan prosedur pendukung. Pada fungsi utama, terjadi

proses pemanggilan prosedur pendukung, yaitu dengan cara memanggil nama prosedurnya.

SUBPROGRAM : FUNGSI

Contoh :

#include <iostream>#include <conio.h>

Page 5: Bahasa C++

using namespace std;int kali (int, int);int main (){ int y; y = kali (5,3); cout << "Hasilnya adalah " << y; getch(); return 0;}int kali (int a, int b){ int x; x = a * b; return (x);}

Outputny :

Hasilnya adalah 15

Keterangan :

Fungsi pendukung dipanggil pada fungsi utama dengan cara memanggil nama fungsinya. Kita dapat melihat proses: y = kali (5,3); Proses tersebut memanggil fungsi kali. Berikutnya nilai 5 disimpan ke variabel a dan nilai 3 disimpan ke variabel b. Dengan mengikuti instruksi dari fungsi kali, nilai a dan b dikalikan dan hasilnya disimpan pada variabel x. Nilai dari x ini kemudian dikembalikan dan disimpan ke dalam variabel y. Apabila kita akan membuat program yang jauh lebih rumit, maka fungsi ini akan sangat terasa manfaatnya.

III. PARAMETER FUNGSI

Secara garis besar, paramater data yang sering digunakan untuk fungsi adalah Parameter Data Biasa dan Parameter Data Array. Bentuk dari Parameter Data Biasa adalah bentuk parameter yang bertipe skalar, misalnya int, float, double, char, dan lain sebagainya. Berikut adalah contoh Fungsi Data Terbesar dengan menggunakan parameter data biasa :

Page 6: Bahasa C++

#include <iostream>#include <conio.h>using namespace std;int terbesar(int, int, int); // prototype fungsimain (){int a, b, c; cout << "Tulis tiga angka bulat : "; cin >> a; cout << "Tulis tiga angka bulat : "; cin >> b; cout << "Tulis tiga angka bulat : "; cin >> c; cout << "Nilai terbesar adalah: " << terbesar (a, b, c); // memanggil fungsi pendukung getch();return 0;}int terbesar(int x, int y, int z) // fungsi pendukung{int maks = x;if (y > maks) maks = y;if (z > maks) maks = z;return maks;}

Outputnya Tulis angka bulat pertama : 20Tulis angka bulat pertama : 45Tulis angka bulat pertama : 33Nilai terbesar adalah: 45

Contoh menggunakan Array:

#include <iostream>#include <conio.h>using namespace std;void cetakArray(int data[ ]); //prototype fungsi cetakArraymain(){int angka[ ] = {4,2,5,8}; //memasukkan data ke dalam Array cetakArray (angka); //fungsi cetakArray dengan mengirimkan per angka getch(); return 0;}void cetakArray(int data[ ]) //prosedur(tanpa nilai balik){for (int i=0; i<4; i++) {

Page 7: Bahasa C++

cout << " Data ke-" << i+1 << " : " << data[i]; cout << "\n"; }}Outputnya :Data ke-1 : 4 Data ke-2 : 2 Data ke-3 : 5 Data ke-4 : 8

IV. FUNGSI REKURSIFFungsi rekursif adalah sebuah fungsi atau prosedur dimana salah satu isinya adalah pemanggilan kepada fungsi/prosedur yang sama dengan dirinya.

Contoh code-nya:

#include <iostream>#include <conio.h>using namespace std;unsigned long faktorial(unsigned long);int main(){for (int i = 0; i <= 10; i++) cout << i << "! = " << faktorial(i) << "\n"; getch();return 0;}unsigned long faktorial(unsigned long angka){if (angka <= 1) return 1;else return angka * faktorial(angka - 1);}Outputnya0! = 11! = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! = 403209! = 36288010! = 3628800

Page 8: Bahasa C++

Perhatikan instruksi dari fungsi pendukung faktorial. Jika nilai angka masih diatas 1, maka kondisi if tidak terpenuhi. Hasilnya, proses akan berlanjut dengan memanggil fungsi faktorial (angka-1). Proses inilah yang dinamakan rekursif. Fungsi yang memanggil dirinya sendiri hingga akhirnya tercapai suatu kondisi yang dapat mengakhirinya.

V. FUNGSI CALL BY

Dalam menggunakan fungsi, kita membutuhkan data parameter berupa variabel. Variabel tersebut dapat dieksekusi dengan menggunakan call by value atau call by reference. Untuk mudah memahaminya, perhatikan contoh berikut :

Contoh code-nya ;

#include <iostream>

#include <conio.h>using namespace std;int kuadratByValue(int);int kuadratByReference(int &);int main(){ int x = 3, z = 5; cout << "x = " << x << " sebelum kuadratByValue\n"; cout << "Nilai yang dikembalikan oleh kuadratByValue: " << kuadratByValue(x) << "\n"; cout << "x = " << x << " setelah kuadratByValue\n\n";

cout << "z = " << z << " sebelum kuadratByReference \n"; cout << "Nilai yang dikembalikan oleh kuadratByReference: " << kuadratByReference(z) << "\n"; cout << "z = " << z << " setelah kuadratByReference \n\n"; getch(); return 0;}int kuadratByValue(int nilai) { return nilai *= nilai;}int kuadratByReference(int &referensi) { return referensi *= referensi;}Outputnya :x = 3 sebelum kuadratByValueNilai yang dikembalikan oleh kuadratByValue: 9x = 3 setelah kuadratByValuez = 5 sebelum kuadratByReferenceNilai yang dikembalikan oleh kuadratByReference: 25z = 25 setelah kuadratByReference

Page 9: Bahasa C++

Keterangan :Perhatikan baik-baik program di atas. Perbedaan terletak pada saat nilai variabel kembai dicetak setelah melewatiproses pemanggilan fungsi. Pada kasus call by value, nilai x adalah 3, sama dengan saat fungsi kuadratByValue belumdipanggil. Sedangkan pada kasus call by reference, nilai z berubah menjadi 25 ketika mencetak kembali.Call by Value : Hanya nilai dalam variabelnya diambil kemudian diproses lebih lanjut. Akan tetapi nilai yang terdapatpada variabel asal tidak terganggu (tidak mengalami perubahan). Singkat kata, kita hanya meng-copy nilai yang adadalam variabel x.Call by Reference : Nilai beserta variabelnya ikut diproses bersamaan dengan pemanggilan fungsi. Hasilnya, nilaidalam variabel z akan ikut berubah mengikuti hasil dari fungsi call by reference. Untuk menggunakan pemanggilan ini,kita harus menyertakan tanda (&) sebelum nama variabelnya.

VI. FUNGSI OVERLOADINGInti dari Overloading adalah Nama Fungsi sama, tetapi parameternya berbeda.Bingung ???Mari Liat Contoh di bawah ini

#include <iostream>#include <conio.h>using namespace std;void buatGaris(int tot); //prototype prosedurvoid buatGaris(int tot, char karakter);void buatGaris(char karakter, int tot);int main(){ buatGaris(8); cout << " Pemanggilan pertama :\n"; buatGaris(15, '+'); cout << " Pemanggilan kedua :\n"; buatGaris('*', 5); cout << " Pemanggilan ketiga :\n"; buatGaris(10); getch();return 0;}void buatGaris(int tot) //prosedur(tanpa nilai balik){ for (int i=0; i<tot; i++) cout << " _"; cout << "\n\n";

Page 10: Bahasa C++

}void buatGaris(int tot, char karakter) //prosedur(tanpa nilai balik){ for (int j=0; j<tot; j++) cout << " " << karakter; cout << "\n\n";}void buatGaris(char karakter, int tot) //prosedur(tanpa nilai balik){ for (int k=0; k<tot; k++) cout << " " << karakter; cout << "\n\n";}Outputnya :Pemanggilan pertama : + + + + + + + + + + + + + + + Pemanggilan kedua : * * * * * Pemanggilan ketiga : _ _ _ _ _ _ _ _ _ _

III. Latihan :

#include<cstdlib>#include<stdio.h>#include<iostream.h>

void buatGaris(int tot); //prototype prosedurvoid buatGaris(int tot, char karakter);void buatGaris(char karakter, int tot);int main(){ cout << " Pemanggilan persegi :\n"; buatGaris(10); system("PAUSE"); return EXIT_SUCCESS;}void buatGaris(int tot) //prosedur(tanpa nilai balik){ for (int i=0; i<tot; i++) { for (int j = 0; j<tot; j++){ cout << " *"; }

Page 11: Bahasa C++

printf("\n"); } cout << "\n\n"; }

Hayyyooo apaa outpnya ???????? :D

Outputnya

IV. Tugas :

Page 12: Bahasa C++

Buatlah sebuah overloading

Contoh 1:

Contoh 2:

Page 13: Bahasa C++

Baris dan jumlah kolom merupakan input, bukan default dari source code.

Untuk bentuk symbol juga merupakan inputan… jika di inputkan simbolnya (“%”), maka akan mencetak pola yang bersimbol “%”;

Untuk pemanggilan ketiga : symbol wajib “*” atau dengan kata lain tidak mengikuti inputan symbol namun untuk baris dan kolom menurut inputan.