Alpro & Strukdat 1 C++ (Sub Program) Dwiny Meidelfi, S.Kom., M.Cs.
Sub Program Dibagi/dipecah menjadi modul-modul program yang digunakan untuk menyelesaikan masalah tertentu Mudah dibaca, terlihat garis besar pemecahannya Dapat digunakan berkali-kali Perubahan/modifikasi hanya dilakukan pada pendeklarasian modul-modul tersebut
Function (I) Fungsi adalah kumpulan dari statement-statement yang dieksekusi ketika dipanggil dari program utama/beberapa sub program yang lain. Formatnya adalah : type name ( parameter1, parameter2,...) { statements where: type : tipe data yang dikembalikan oleh fungsi. name : indentifier sebagai nama fungsi. parameters (as many as needed): Setiap parameter terdiri dari tipe data yang diikuti dengan identifier/variabel. statements : isi dari fungsi itu sendiri.
Function (I)
Function (I)
Functions with no type. The use of void
Example void nama() { cout<<"dwiny Meidelfi"<<endl; void praktikum() { cout<<"praktikum alpro1 hari rabu jam1-4"<<endl; void garis() { cout<< ---------------- <<endl; void main() { nama(); garis(); praktikum();
Example
Scope of variables
Scope of variables Variabel Lokal Variabel ariabel yang didefinisikan dalam suatu fungsi tertentu, sehingga hanya dikenal dalam fungsi tersebut. Dalam hal ini artinya suatu fungsi tidak akan mengenal variabel lokal dan fungsi lain. Suatu fungsi hanya akan mengenal variabel yang didefinisikan dalam fungsi yang bersangkutan. Variabel Global Variabel yang dideklarasikan pada program utama, dan dapat dibaca oleh seluruh fungsi dalam program tersebut.
int data=100; void fungsi_satu(); void fungsi_dua(); Variabel global int main() { int data =200; cout<<"nilai data/variabel lokal main = "<<data<<endl; fungsi_satu(); fungsi_dua(); Variabel lokal di fungsi main void fungsi_satu() { int data =300; cout<<"nilai data/variabel lokal di fungsi satu = "<<data<<endl; void fungsi_dua() { cout<<"nilai data/variabel global = "<<data<<endl;
Exercise Buatlah program sederhana untuk menjumlahkan, mengurangkan, dan mengalikan dua buah bilangan integer, dengan memanfaatkan sub program.
int Tambah(int a, int b) { int c; c = a + b: return c; void main() { int a = 3; int d; //pemanggilan fungsi by value d = Tambah(a, 4); cout << d = << d << endl; pernyataan return memuat nilai fungsi yang akan dikembalikan ke yang memanggilnya
Prototipe Fungsi
Parameter Parameter Formal : - Parameter yang diberi nilai. Parameter formal merupakan parameter yang terdapat dalam daftar parameter fungsi. Parameter Aktual : - Parameter yang memberi nilai. Parameter fungsi dan digunakan untuk memberi nilai pada parameter formal, ada di pemanggilan fungsi.
int Tambah(int a, int b) { int c; c = a + b: return c; void main() { int a = 3; int d; Parameter formal Parameter aktual d = Tambah(a, 4); cout << d = << d << endl;
KUIS Buatlah program untuk menghitung luas segitiga, luas persegi panjang, luas jajar genjang dengan menggunakan sub program, program minimal terdiri dari 2 sub program.
int A; int B; int Add(){ return A + B; int main(){ int answer; A = 5; B = 7; answer = Add(); printf("%d\n",answer); return 0;
Parameter passing
Parameter passing By value : Call by value akan menyalin nilai dari parameter aktual ke parameter formal. Yang dikirimkan ke fungsi : nilai dari datanya, Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di bagian program yang memanggilnya. Pengiriman parameter secara nilai adalah pengiriman searah,
int Tambah(int x) { cout<<"x awal = "<<x<<endl; x=x+2; cout<<"x akhir = "<<x<<endl; return x; int main() { int a,hasil; cout<<"masukkan bilangan : "; cin>>a; cout<<"a awal = "<<a<<endl; hasil = Tambah(a); cout<<"a akhir = "<<a<<endl; cout<<"hasil : "<<hasil; return 0;
Parameter passing By reference : Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Yang dikirimkan ke fungsi : alamat letak dari nilai datanya. Fungsi yang menerima kiriman alamat ini maka menggunakan alamat yang sama untuk mendapatkan nilai datanya. Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi. Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya.
int Tambah(int& x) { cout<<"x awal = "<<x<<endl; x=x+2; cout<<"x akhir = "<<x<<endl; return x; int main() { int a,hasil; cout<<"masukkan bilangan : "; cin>>a; cout<<"a awal = "<<a<<endl; hasil = Tambah(a); cout<<"a akhir = "<<a<<endl; cout<<"hasil : "<<hasil; return 0;
void Tambah(int a, int b, int& c) { c = a + b: void main() { int a = 3; int hasil; Tambah(a, 4, hasil); //pemanggilan fungsi cout << hasil = << hasil << endl;
Functions (II) int main() { int kuis[] = {30,30,35; ubahnilai(kuis); cout<< Nilai kuis ketiga <<ujian[2]<<endl; void ubahnilai(int x[]) { x[2] = 40;
LATIHAN Buatlah program untuk menginputkan dan menampilkan nilai-nilai kuis dan hitunglah rata-rata kuis tersebut.
LATIHAN Buatlah program untuk menukar 2 buah karakter.
LATIHAN (2) void Tukar(char A, char B ) { char C ; C = A; A = B, B = C; void main() { char X, Y ; X = S ; Y = D ; Tukar(X, Y); printf( X = %c Y= %c, X, Y);
REKURSI Rekursif ialah salah satu teknik pemrograman dengan cara memanggil sebuah fungsi dari dirinya sendiri, baik itu secara langsung maupun tidak langsung. Pemanggilan fungsi rekursif secara langsung berarti dalam fungsi tersebut terdapat statement untuk memanggil dirinya sendiri sedangkan secara tidak langsung berarti fungsi rekursif tersebut memanggil 1 atau lebih fungsi lain sebelum memanggil dirinya sendiri.
REKURSI
LATIHAN void tulis(int n) { int x=n; if (x>0) { cout<<"proses rekursif dengan nilai x "<<x<<endl; x--; tulis(x); int main() { tulis(10); return 0;
LATIHAN Buatlah program untuk menghitung nilai faktorial bilangan bulat positif
LATIHAN 0! = 1; 1! = 1; 2! = 2 x 1 3! = 3 x 2 x 1 = 3 x 2! 4! = 4 x 3 x 2 x 1 = 4 x 3! 5! = 5 x 4 x 3 x 2 x 1 = 5 x 4! N! = N x (N-1)! Dari logika diatas dapat dibuat fungsi faktorialnya : fakto(n) = N == 0 N == 1 1 N>1 N * fakto(n-1)
LATIHAN int Fakt(int n) { if (n == 1 n == 0) return 1; return n * Fakt(n-1);
LATIHAN int fakto(int a) { int hasil=1; if (a == 0) { return(1); else if (a > 0) { hasil = a * fakto(a 1); return(hasil);