Subprogram (dalam Bahasa C++ + Flowchart) Tim Penyusun Materi PTI-B KU1072/Pengenalan Teknologi Informasi B Tahap Tahun Pertama Bersama Institut Teknologi Bandung
Tujuan Mahasiswa memahami makna dan kegunaan subprogram dalam bentuk fungsi dan prosedur Mahasiswa dapat menggunakan notasi fungsi dan prosedur dengan benar dan menggunakannya dalam program Mahasiswa dapat membuat program dengan menggunakan fungsi dan prosedur 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 2
Mulai Contoh-1 (1) // Program CetakNama: Mencetak nama ke layar #include <iostream> using namespace std; int main() { // KAMUS string str1, str2; // ALGORITMA str1 = "Maya"; cout << "Hello " << str1 << endl; str = Maya output(str) output( Joko ) input(str2) } cout << "Hello " << "Joko" << endl; cin >> str2; cout << "Hello " << str2 << endl; return 0; output(str2) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 3
Contoh-1 (2) // Program CetakNama: Mencetak nama ke layar #include <iostream> using namespace std; int main() { // KAMUS string str1, str2; // ALGORITMA str1 = "Maya"; DIGANTI DENGAN PROSEDUR CetakHello(str1); cout << "Hello " << str1 << endl; Mulai str = Maya CetakHello(str) CetakHello( Joko ) input(str2) } CetakHello("Joko"); cout << "Hello " << "Joko" << endl; CetakHello(str2) cin >> str2; cout CetakHello(str2); << "Hello " << str2 << endl; Selesai return 0; 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 4
Contoh-1 (3) Procedure CetakHello (C++) void CetakHello (string str) // Mencetak str ke layar // KAMUS LOKAL CetakHello (str) // ALGORITMA { cout << "Hello, " << str << endl; } output ( Hello, str) return 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 5
Mulai Contoh-2 (1) // Program Kuadrat: Test fungsi kuadrat #include <iostream> using namespace std; r1 = 10 L = PI * r1 * r1 int main() { // KAMUS const float PI = 3.14; float L, r1, fx, x; // ALGORITMA r1 = 10; L = PI * r1 * r1; cout << L << endl; x = 10; fx = x * x; cout << fx << endl; return 0; } output(l) x = 10 fx = x * x output(fx) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 6
Mulai Contoh-2 (2) // Program Kuadrat: Test fungsi kuadrat #include <iostream> using namespace std; int main() { // KAMUS const float PI = 3.14; float L, r1, fx, x; // ALGORITMA r1 = 10; L = PI * r1 FxKuadrat(r1); * r1; cout << L << endl; x = 10; } fx = x FxKuadrat(x); * x; cout << fx << endl; return 0; DIGANTI DENGAN FUNGSI L = PI * r1 = 10 output(l) x = 10 output(fx) 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 7 fx = FxKuadrat(r1) FxKuadrat(x) Selesai
Contoh-2 (3) Fungsi FxKuadrat (C++) int FxKuadrat (int a) // Menghasilkan a * a // KAMUS LOKAL FxKuadrat(a) // ALGORITMA { return (a * a); return (a * a) } 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 8
Kode yang berulang Semakin besar program, semakin banyak bagian kode yang berulang Sangat tidak efisien jika bagian kode yang sama/serupa diketik berulang-ulang, (bahkan kalau di-copy-paste) Di samping itu, dalam banyak persoalan, ada berbagai rumus/formula yang berulang-ulang dipakai dalam satu program Bagaimana jika ada cara supaya bagian kode tersebut tidak perlu diketik berulang-ulang, tapi tetap dapat digunakan berkali-kali dalam program yang sama 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 9
Subprogram A set of instructions designed to perform a frequently used operation within a program 2 (dua) jenis subprogram: Prosedur Fungsi 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 10
Flowchart Symbol (Umum) Pemanggilan subprogram dalam algoritma program utama Mulai... Flowchart terpisah untuk pendefinisian dan realisasi subprogram Procedure/Function [(list-parameter-formal)] Procedure/Function call [(list-parameter-aktual)]...... return [(return-value)] Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 11
Contoh Kasus Buatlah program yang digunakan untuk membaca masukan nilai besaran arus listrik (I) dan hambatan (R) dan menghitung serta menampilkan tegangan listrik (V) V = I * R Akan dibahas: Solusi menggunakan prosedur Solusi menggunakan fungsi 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 12
PROSEDUR 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 13
Prosedur Suatu prosedur: Terdiri atas sederetan instruksi algoritmik seperti algoritma program umumnya Memiliki 0 s.d. n parameter input Memiliki 0 s.d. m parameter output Jelas initial state: kondisi awal sebelum prosedur dijalankan Jelas final state: kondisi akhir yang dicapai setelah prosedur selesai dijalankan 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 14
Tahapan Memanfaatkan Prosedur 1. Mendefinisikan dan merealisasikan prosedur 2. Memanggil prosedur dalam program utama 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 15
PROSEDUR 1. Mendefinisikan dan Merealisasikan Prosedur 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 16
Pemanggilan prosedur dalam algoritma program utama Mulai Flowchart untuk Prosedur Flowchart terpisah untuk pendefinisian dan realisasi prosedur... Procedure [(list-parameter-formal)] Procedure call [(list-parameter-aktual)]...... return Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 17
Prosedur Initial state (I.S.) Langkah-langkah algoritmik dalam prosedur: Mengubah initial state menjadi final state Final State (F.S.) 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 18
Parameter input Parameter output Prosedur p1 p2 p3 p6 Langkah-langkah algoritmik dalam prosedur: Nilai p1, p2, p3, dan p6 dimanfaatkan dalam proses di prosedur untuk mendapatkan nilai p4, p5, dan p6. p6 mungkin mengalami perubahan nilai. Parameter input/output p4 p5 p6 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 19
Definisi & Realisasi Prosedur (1) Memberikan nama prosedur Mendeklarasikan parameter formal (jika ada) Jenis parameter: parameter input, input/output, output Deklarasi setiap parameter: nama parameter dan type-nya Menuliskan spesifikasi: Initial State (I.S.): kondisi awal sebelum prosedur dijalankan termasuk kondisi parameter input (jika ada) Final State (F.S.): kondisi akhir yang dicapai setelah prosedur selesai dijalankan termasuk kondisi parameter output (jika ada) Membuat realisasi dari prosedur Langkah-langkah algoritmik prosedur: deretan instruksi pemberian harga, input, output, analisis kasus, pengulangan, pemanggilan fungsi dan prosedur lain 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 20
Memberikan nama Definisi & Realisasi Prosedur (2) - procedure NamaProsedur ([list-parameter-formal]) { Spesifikasi: } { I.S.:... } { F.S.:... } KAMUS LOKAL { List variabel yang dipakai hanya dalam prosedur } ALGORITMA NamaProsedur [(list-parameter-formal)] Flowchart List parameter formal (jika ada) { langkah-langkah algoritmik dalam prosedur } return Realisasi Prosedur: Langkah-langkah algoritmik 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 21
Memberikan nama Definisi & Realisasi Prosedur (2) void NamaProsedur ([list-parameter-formal]) // Spesifikasi: // I.S.:... // F.S.:... // KAMUS LOKAL // List variabel yang dipakai hanya dalam prosedur // ALGORITMA { // langkah-langkah algoritmik dalam prosedur C++ List parameter formal (jika ada) } Realisasi Prosedur: Langkah-langkah algoritmik 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 22
Contoh Kasus (1) Diasumsikan dibutuhkan prosedur untuk menghitung tegangan listrik (V) dengan masukan besarnya arus (I) dan hambatan (R) Definisi prosedur: Nama : HitungTegangan Parameter input : I : integer merepresentasikan besarnya arus listrik R : integer merepresentasikan besarnya hambatan Parameter output: V : integer merepresentasikan besarnya tegangan Spesifikasi: Menghitung V dengan rumus V = I * R I.S. : I dan R terdefinisi F.S.: V terdefinisi melalui perhitungan V = I * R 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 23
Contoh Kasus (2) - Flowchart procedure HitungTegangan ( int I, int R, Parameter input int * V ) // I.S.: I dan R terdefinisi // F.S.: V terdefinisi melalui perhitungan V = I * R // KAMUS LOKAL Parameter output diberi tanda * sebelum nama parameter // ALGORITMA HitungTegangan (I,R,V) V = I * R return 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 24
Contoh Kasus (2) C++ procedure void HitungTegangan HitungTegangan ( int ( I, int int I, R, int R, int * int V *) V ) // I.S.: I dan R terdefinisi // F.S.: V terdefinisi melalui perhitungan V = I * R } // KAMUS LOKAL // ALGORITMA { HitungTegangan (I,R,V) V = I * R; } V = I * R return 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 25
PROSEDUR 2. Memanggil Prosedur dalam Algoritma Program Utama 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 26
Pemanggilan prosedur dalam algoritma program utama Mulai Flowchart untuk Prosedur Flowchart terpisah untuk pendefinisian dan realisasi prosedur... Procedure [(list-parameter-formal)] Procedure call [(list-parameter-aktual)]...... return Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 27
Pemanggilan (Call) Prosedur Menuliskan nama prosedur sebagai salah satu instruksi dalam algoritma program utama Variabel/harga yang dituliskan pada parameter prosedur dalam pemanggilan prosedur di program utama parameter aktual AP/KU1071 28
Contoh Kasus (1) Pemanggilan Prosedur Alur program utama: Membaca nilai besarnya arus dan hambatan dari keyboard Menghitung tegangan listrik dan menyimpan nilainya dalam variabel tegangan memanfaatkan prosedur HitungTegangan Menampilkan tegangan ke layar 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 29
Contoh Kasus (2) Pemanggilan Prosedur (Flowchart) Program HitungTeganganListrik // Menghitung tegangan listrik // berdasarkan masukan arus listrik // dan hambatan KAMUS int arus, hambatan; int tegangan; ALGORITMA // lihat flowchart Mulai input (arus) input (hambatan) HitungTegangan (arus, hambatan, tegangan) output (tegangan) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 30
Contoh Kasus (3) Pemanggilan Prosedur (C++) // Program HitungTeganganListrik; // Menghitung tegangan listrik berdasarkan arus dan hambatan #include <iostream> using namespace std;... // tuliskan definisi/header prosedur di sini // PROGRAM UTAMA int main () // KAMUS int arus, hambatan; int tegangan; // ALGORITMA cin >> arus; cin >> hambatan; HitungTegangan(arus, hambatan, &tegangan); cout << tegangan << endl; return 0; }... // definisi dan realisasi prosedur di sini Pada saat dipanggil di program utama, parameter output harus diberi tanda & 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 31
Asosiasi Parameter Formal Paramater Aktual (1) Setiap parameter aktual harus berasosiasi dengan tepat satu parameter formal Parameter aktual berasosiasi dengan paramater formal yang posisi/urutannya sama Type parameter aktual = type parameter formal yang berasosiasi dengannya 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 32
Asosiasi Parameter Formal Paramater Aktual (2) Parameter aktual pada pemanggilan prosedur Parameter formal pada pendefinisian prosedur arus hambatan tegangan type: integer type: integer type: integer I R *V 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 33
PROSEDUR Program Lengkap 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 34
Program Lengkap (Flowchart) Program JudulProgram // Spesifikasi Program KAMUS // deklarasi variabel, // konstanta, dll. ALGORITMA PROGRAM UTAMA... procedure NamaProsedur (list-parameter-formal) // Spesifikasi Prosedur KAMUS LOKAL // deklarasi variabel // lokal prosedur, dll. ALGORITMA...... 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 35
Kode prosedur dalam program //Judul dan spesifikasi program #include <iostream> using namespace std; DEFINISI PROSEDUR // PROGRAM UTAMA int main () { PEMANGGILAN PROSEDUR } return 0; REALISASI PROSEDUR 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 36
Contoh Kasus (C++) Kode Lengkap // Program HitungTeganganListrik; // Menghitung tegangan listrik berdasarkan arus dan hambatan #include <iostream> using namespace std; void HitungTegangan (int I, int R, int * V); // I.S.: I dan R terdefinisi // F.S.: V terdefinisi melalui perhitungan V = I * R // ALGORITMA PROGRAM UTAMA int main () { // KAMUS int arus, hambatan, tegangan; // ALGORITMA cin >> arus; cin >> hambatan; HitungTegangan(arus, hambatan, &tegangan); cout << tegangan << endl; return 0; } // Realisasi Prosedur void HitungTegangan (int I, int R, int * V) { // ALGORITMA *V = I * R; } Parameter aktual Parameter formal 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 37
Contoh 2: Menukar 2 Bilangan Dibaca 2 nilai integer dari keyboard, misalnya A dan B Tukar nilai A dan B Tuliskan nilai A dan B yang baru ke layar Buatlah prosedur untuk menukar nilai 2 integer AP/KU1071 38
Contoh-2: Flowchart Program Utama Program Tukar2Bilangan // Menerima masukan 2 integer dan // menukar keduanya KAMUS int A, B; ALGORITMA PROGRAM UTAMA // lihat flowchart Mulai input(a, B) Tukar(A,B) output(a, B) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 39
Contoh-2: Flowchart Prosedur Tukar procedure Tukar (int *A, int *B) // I.S.: A, B terdefinisi // F.S.: Nilai A, B ditukar KAMUS LOKAL int temp; ALGORITMA // lihat flowchart A dan B parameter input sekaligus output Tukar(A,B) temp = A A = B B = temp return 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 40
Contoh-2: Program Lengkap C++ // Program Tukar2Bilangan // Menerima masukan 2 integer dan // menukar keduanya #include <iostream> using namespace std; void Tukar (int *A, int *B); // I.S.: A, B terdefinisi // F.S.: Nilai A, B ditukar int main () { // KAMUS int A, B; // ALGORITMA cin >> A; cin >> B; Tukar(&A,&B); cout << A << " " << B << endl; return 0; } // Realisasi Prosedur Tukar void Tukar (int *A, int *B) // I.S.: A, B terdefinisi // F.S.: Nilai A, B ditukar { } // Kamus Lokal int temp; // Algoritma temp = *A; *A = *B; *B = temp; A dan B: contoh parameter input/output 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 41
FUNGSI 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 42
Fungsi Suatu fungsi: Sebuah transformasi akibat pemetaan suatu nilai (dari domain) ke nilai lain (dalam range) sama seperti di matematika Domain dinyatakan dalam type parameter input bisa 0 s.d. N parameter input Range dinyatakan dalam type nilai output harus ada Realisasi fungsi memanfaatkan nilai parameter input untuk mendapatkan nilai sesuai type output 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 43
Pemanggilan fungsi dalam algoritma program utama Mulai Flowchart untuk Fungsi Flowchart terpisah untuk pendefinisian dan realisasi fungsi... Function [(list-parameter-formal)] Ekspresi memanfaatkan function Function [(list-parameter-aktual)]...... return (return value) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 44
Tahapan Memanfaatkan Fungsi 1. Mendefinisikan dan merealisasikan fungsi 2. Memanggil fungsi dalam program utama sebagai bagian dari ekspresi dalam instruksi dalam algoritma 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 45
FUNGSI 1. Mendefinisikan dan Merealisasikan Fungsi 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 46
Pemanggilan fungsi dalam algoritma program utama Mulai Flowchart untuk Fungsi Flowchart terpisah untuk pendefinisian dan realisasi fungsi... Function [(list-parameter-formal)] Ekspresi memanfaatkan function Function [(list-parameter-aktual)]...... return (return value) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 47
Fungsi Parameter input Langkah-langkah algoritmik dalam fungsi: Mentransformasi nilai parameter input untuk mendapatkan nilai output Nilai Output 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 48
Parameter input: boleh tidak ada Fungsi p1 p2 p3 Langkah-langkah algoritmik dalam fungsi: Mentransformasi nilai p1, p2, p3, p4 untuk menghasilkan nilai output Nilai output p4 Nilai output: HARUS ADA 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 49
Definisi & Realisasi Fungsi (1) Memberikan nama fungsi Mendeklarasikan parameter formal input (jika ada) Deklarasi setiap parameter: nama parameter dan type-nya Mendeklarasikan type nilai output (harus ada) Menuliskan spesifikasi: Menghasilkan nilai output seperti apa berdasarkan nilai parameter input Membuat realisasi dari fungsi Langkah-langkah algoritmik fungsi: deretan instruksi pemberian harga, analisis kasus, pengulangan, pemanggilan fungsi dan prosedur lain yang dibutuhkan untuk mentransformasi input menjadi nilai output Harus mengembalikan (return) suatu nilai (value) yang bertype sama seperti type nilai output 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 50
Memberikan nama Definisi & Realisasi Fungsi (2) - Flowchart function NamaFungsi ([list-parameter-input]) type-output // Menghasilkan... List parameter input Type nilai output formal (jika ada) KAMUS LOKAL // List variabel yang dipakai hanya dalam fungsi ALGORITMA NamaFungsi [(list-parameter-formal)] // langkah-langkah transformasi input // menjadi nilai output return(return-value) Realisasi Fungsi Return-value harus bertype sama seperti type-output 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 51
Type nilai output Definisi & Realisasi Fungsi (3) - Memberikan nama Pascal type-output NamaFungsi ([list-parameter-formal]) // Menghasilkan... // KAMUS LOKAL // List variabel yang dipakai hanya dalam fungsi // ALGORITMA { List parameter input formal (jika ada) Realisasi Fungsi // langkah-langkah transformasi input menjadi output } return (return-value); Cara return di C++ Return-value harus bertype sama seperti type-output 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 52
Contoh Kasus (1) Diasumsikan dibutuhkan fungsi untuk menghitung tegangan listrik dengan input besarnya arus (I) dan hambatan (R) Definisi fungsi: Nama : FTegangan Parameter input : I : integer merepresentasikan besarnya arus listrik R : integer merepresentasikan besarnya hambatan Type output: integer Spesifikasi: Menghasilkan nilai tegangan berdasarkan nilai I dan R, yaitu I * R 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 53
Contoh Kasus (2) - Flowchart function FTegangan ( int I, int R ) int // Menghasilkan tegangan dari perkalian I dan R Type-output KAMUS LOKAL - I, R : Parameter input ALGORITMA FTegangan(I,R) return (I*R) 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 54
Contoh Kasus (3) - Pascal function int FTegangan FTegangan ( int ( I, int int I, R int ) R ) int // Menghasilkan tegangan dari perkalian I dan R KAMUS // KAMUS LOKAL LOKAL - ALGORITMA // ALGORITMA { Tegangan(I,R) return (I * R); } return (I*R) 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 55
FUNGSI 2. Memanggil fungsi dalam program utama sebagai bagian dari ekspresi dalam instruksi dalam algoritma 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 56
Pemanggilan fungsi dalam algoritma program utama Mulai Flowchart untuk Fungsi Flowchart terpisah untuk pendefinisian dan realisasi fungsi... Function [(list-parameter-formal)] Ekspresi memanfaatkan function Function [(list-parameter-aktual)]...... return (return value) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 57
Pemanggilan Fungsi Fungsi harus dipanggil dalam algoritma program utama sebagai bagian dari sebuah ekspresi var = <fungsi-dipanggil-di-sini> output(<fungsi-dipanggil-di-sini>) Variabel/harga yang dituliskan pada parameter input fungsi dalam pemanggilan fungsi di program utama parameter aktual AP/KU1071 58
Contoh Kasus (1) Pemanggilan Fungsi Alur program utama: Membaca nilai besarnya arus dan hambatan dari keyboard Menampung hasil perhitungan nilai tegangan dengan memanfaatkan fungsi FTegangan dalam variabel tegangan Menuliskan ke layar nilai tegangan 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 59
Contoh Kasus (2) Pemanggilan Fungsi (Flowchart) Program HitungTeganganListrik // Menghitung tegangan listrik // berdasarkan masukan arus listrik // dan hambatan KAMUS int arus, hambatan; int tegangan; ALGORITMA // lihat flowchart Mulai input (arus) input (hambatan) tegangan = FTegangan (arus, hambatan) output(tegangan) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 60
Contoh Kasus (3) Pemanggilan Fungsi (C++) // Program HitungTeganganListrik; // Menghitung tegangan listrik berdasarkan arus dan hambatan #include <iostream> using namespace std;... // tuliskan definisi/header fungsi di sini // PROGRAM UTAMA int main () // KAMUS int arus, hambatan; int tegangan; // ALGORITMA cin >> arus; cin >> hambatan; tegangan = FTegangan(arus, hambatan); cout << tegangan << endl; return 0; }... // realisasi fungsi di sini 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 61
Asosiasi Parameter Formal Paramater Aktual (1) Setiap parameter aktual harus berasosiasi dengan tepat satu parameter formal Parameter aktual berasosiasi dengan paramater formal yang posisi/urutannya sama Type parameter aktual = type parameter formal yang berasosiasi dengannya Sama seperti di prosedur 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 62
Asosiasi Parameter Formal Paramater Aktual (2) Parameter aktual pada pemanggilan fungsi Parameter formal pada pendefinisian fungsi arus hambatan type: integer type: integer I R 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 63
FUNGSI Program Lengkap 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 64
Program Lengkap (Flowchart) Program JudulProgram // Spesifikasi Program KAMUS // deklarasi variabel, // konstanta, dll. ALGORITMA PROGRAM UTAMA... function NamaFungsi (listparameter-formal) typeoutput // Spesifikasi Prosedur} KAMUS LOKAL // deklarasi variabel // lokal fungsi, dll. ALGORITMA...... 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 65
//Judul dan spesifikasi program #include <iostream> using namespace std; Kode fungsi dalam program DEFINISI FUNGSI // PROGRAM UTAMA int main () { PEMANGGILAN FUNGSI } return 0; REALISASI FUNGSI 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 66
Contoh Kasus (C++) Kode Lengkap // Program HitungTeganganListrik; // Menghitung tegangan listrik berdasarkan arus dan hambatan #include <iostream> using namespace std; Parameter formal int FTegangan (int I, int R); // Menghasilkan tegangan dgn rumus = I*R // ALGORITMA PROGRAM UTAMA int main () { // KAMUS int arus, hambatan, tegangan; // ALGORITMA cin >> arus; cin >> hambatan; tegangan = FTegangan(arus, hambatan); cout << tegangan << endl; return 0; } // Realisasi Fungsi int FTegangan (int I, int R) { // ALGORITMA return (I * R); } Parameter aktual 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 67
Contoh 2: Menukar 2 Bilangan Dibaca 2 nilai integer dari keyboard, misalnya A dan B Tukar nilai A dan B Tuliskan nilai A dan B yang baru ke layar Apakah prosedur Tukar bisa dibuat menjadi fungsi? TIDAK BISA, karena: A dan B harus jadi input sekaligus output di fungsi suatu parameter hanya bisa menjadi input Jika dipaksa, dibutuhkan 2 nilai keluaran fungsi hanya memberikan 1 jenis keluaran [sejauh ini] AP/KU1071 68
Contoh-3: Luas Lingkaran Buatlah program yang menerima masukan buah nilai jari-jari lingkaran (bilangan riil), misalnya R, dan menuliskan luas lingkaran ke layar Perhitungan luas lingkaran dibuat menjadi fungsi 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 69
Contoh-3: Flowchart Program Utama Mulai Program LuasLingkaran // Menerima masukan nilai jari- // jari dan menuliskan ke layar // luas lingkaran KAMUS const float PI = 3.14; float R; float L; ALGORITMA PROGRAM UTAMA // lihat flowchart L = input(r) Luas (R) output(l) Selesai 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 70
Contoh-3: Flowchart Fungsi Luas function Luas (float R) float // Menghasilkan luas lingkaran // berdasarkan jari-jari R: PI * R * R KAMUS LOKAL - ALGORITMA Luas (R) return (PI * R * R) 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 71
Contoh-2: Program Lengkap C++ // Program LuasLingkaran // Menerima masukan nilai jari-jari dan // menuliskan ke layar luas lingkaran #include <iostream> using namespace std; // KAMUS const float PI = 3.14; float Luas (float R); // Menghasilkan luas lingkaran // berdasarkan jari-jari R: PI * R * R int main () { // KAMUS float L, R;a // ALGORITMA cin >> R; L = Luas(R); cout << L << endl; return 0; } // Realisasi Fungsi Luas float Luas (float R) // Menghasilkan luas lingkaran // berdasarkan jari-jari R: // PI * R * R { // Kamus Lokal } // Algoritma return (PI * R * R); 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 72
LATIHAN SOAL 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 73
Soal-1a: Diketahui fungsi CiriBilangan seperti di samping: int CiriBilangan(int bil) { // Menghasilkan: // 0 : jika bil adalah 0 // 1 : jika bil adalah positif // -1 : jika bil adalah negatif //Kamus Lokal int hasil; //Algoritma if (bil == 0) { hasil = 0; } else if (bil > 0) { hasil = 1; } else { // bil < 0 hasil = -1; } return hasil; } 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 74
Soal-1b: Apakah hasil dari potongan program berikut? int X = 0; cout << CiriBilangan(X) << endl; 0 cout << CiriBilangan(1000) << endl; 1 int bil, c; bil = -222; c = CiriBilangan(bil); cout << c << endl; -1 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 75
Soal 2: Fungsi Konversi Persoalan: Tuliskanlah fungsi Konversi yang digunakan untuk mengubah harga karakter angka (nol sampai dengan 9) menjadi harga numerik sesuai dengan karakter yang tertulis. Contoh : '0' 0 '8' 8 Spesifikasi : Fungsi KarakterToInteger : Domain : x : character ['0'..'9'] ) Range : integer [0..9] Proses : analisis kasus terhadap x, untuk setiap harga x diasosiasikan integer yang sesuai. 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 76
Soal-3: MAX2 dan MAX3 Tuliskan fungsi MAX2, yang menerima masukan dua buah bilangan integer dan menghasilkan bilangan terbesar Contoh: MAX2(1,2) 2 Tuliskan fungsi MAX3 yang memanfaatkan fungsi MAX2. Fungsi MAX3 menerima input 3 bilangan integer dan menghasilkan bilangan terbesar Contoh: MAX3(10,2,3) 10 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 77
Soal-4: Putar 3 Bilangan Dengan memanfaatkan prosedur Tukar, buatlah sebuah program utama yang digunakan untuk memutar 3 buah bilangan, misalnya A=a, B=b, C=c sehingga A=c, B=a, C=b Ketiga bilangan dibaca dari keyboard Contoh: A = 3; B = 2; C = 1 ditukar menjadi : A = 1; B = 3; C = 2 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 78
Implementasikan sebuah prosedur yang digunakan untuk: Soal-5 Membaca sejumlah N bilangan integer dari keyboard N merupakan parameter input untuk prosedur diasumsikan N > 0 Menghasilkan penjumlahan seluruh bilangan yang dimasukkan menjadi parameter output Definisi dari prosedur tersebut adalah sebagai berikut: void BacaDanJumlahBil (int N, int * Sum); // Membaca N bilangan integer dari keyboard dan menghasilkan // Sum yang merupakan jumlah dari seluruh bilangan yang // dimasukkan // I.S. : N terdefinisi, N > 0 // F.S. : Sum merupakan jumlah N bilangan 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 79
Alternatif Solusi Soal 2 s.d. 5 Alternatif Solusi baru dalam bentuk notasi C++ Untuk notasi flowchart silakan dibuat sendiri 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 80
Alt. Solusi Soal-2 (C++) int KarakterToInteger (char x) { // diberikan x berupa karakter, menghasilkan harga integer yang // sesuai dengan penulisan pada karakter } //Algoritma switch(x) { } case '0' : return 0; case '1' : return 1; case '2' : return 2; case '3' : return 3; case '4' : return 4; case '5' : return 5; case '6' : return 6; case '7' : return 7; case '8' : return 8; case '9' : return 9; 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 81
Alt. Solusi Soal-3 int Max2 (int a1, int b1) { // diberikan a1 dan b1, menghasilkan a1 jika a1 >= b1, // dan b1 jika b1 > a1 //Algoritma if (a1 >= b1) { return a1; } else { // a1 < b1 return b1; } } int Max3 (int a, int b, int c) { // diberikan a, b, dan c, menghasilkan a jika a>=b dan a>=c, // menghasilkan b jika b>=a dan b>=c, menghasilkan c jika c>=a dan // c>=b //Algoritma return Max2(Max2(a,b),c); } 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 82
#include <iostream> using namespace std; void Tukar(int * A, int * B);... Alt. Solusi Soal-4 (C++) int main () { //Kamus int a1, b1, c1; //Algoritma cin >> a1 >> b1 >> c1; cout << "Sebelum ditukar : " << endl; cout << "a = " << a1 << "; b = " << b1 << "; c = " << c1 << endl; Tukar(&a1, &b1); Tukar(&a1, &c1); cout << "Sesudah ditukar : " << endl; cout << "a = " << a1 << "; b = " << b1 << "; c = " << c1 << endl; return 0; } // Realisasi Prosedur... 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 83
Alternatif Solusi Soal-5 void BacaDanJumlahBil (int N, int * Sum) { // Membaca N bilangan integer dari keyboard dan menghasilkan Sum // yang merupakan jumlah dari seluruh bilangan yang dimasukkan // I.S. : N terdefinisi, N > 0 // F.S. : Sum merupakan jumlah N bilangan // KAMUS LOKAL int x, i; } // ALGORITMA *Sum = 0; for (i = 1; i <= N; i++) { cin >> x; *Sum = *Sum + x; } 28/09/2015 KU1072/Pengenalan Teknologi Informasi B 84