KU1072 Subprogram CPP Flowchart 220915
-
Upload
heruko-fatimah -
Category
Documents
-
view
61 -
download
9
description
Transcript of KU1072 Subprogram CPP Flowchart 220915
KU1072/Pengenalan Teknologi Informasi B
Tahap Tahun Pertama Bersama
Institut Teknologi Bandung
Subprogram(dalam Bahasa C++ + Flowchart)
Tim Penyusun Materi PTI-B
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 2
Tujuan
• Mahasiswa memahami makna dan kegunaansubprogram dalam bentuk fungsi dan prosedur
• Mahasiswa dapat menggunakan notasi fungsi danprosedur dengan benar dan menggunakannya dalam program
• Mahasiswa dapat membuat program denganmenggunakan fungsi dan prosedur
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 3
Contoh-1 (1)// Program CetakNama: Mencetak nama ke layar#include <iostream>using namespace std;int main() {
// KAMUSstring str1, str2;// ALGORITMAstr1 = "Maya";cout << "Hello " << str1 << endl;
cout << "Hello " << "Joko" << endl;
cin >> str2;cout << "Hello " << str2 << endl;
return 0;}
Mulai
str = “Maya”
output(str)
output(“Joko”)
output(str2)
input(str2)
Selesai
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 4
Contoh-1 (2)// Program CetakNama: Mencetak nama ke layar#include <iostream>using namespace std;int main() {
// KAMUSstring str1, str2;// ALGORITMAstr1 = "Maya";cout << "Hello " << str1 << endl;
cout << "Hello " << "Joko" << endl;
cin >> str2;cout << "Hello " << str2 << endl;
return 0;}
CetakHello(str1);
DIGANTI DENGAN
PROSEDUR
CetakHello("Joko");
CetakHello(str2);
Mulai
str = “Maya”
CetakHello(str)
CetakHello(“Joko”)
CetakHello(str2)
input(str2)
Selesai
Contoh-1 (3) – Procedure CetakHello (C++)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 5
void CetakHello (string str)// Mencetak str ke layar
// KAMUS LOKAL
// ALGORITMA{
cout << "Hello, " << str << endl;
}
output (“Hello “, str)
return
CetakHello (str)
Contoh-2 (1)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 6
// Program Kuadrat: Test fungsi kuadrat#include <iostream>using namespace std;
int main() {// KAMUSconst float PI = 3.14;float L, r1, fx, x;// ALGORITMAr1 = 10;L = PI * r1 * r1;cout << L << endl;x = 10;fx = x * x;cout << fx << endl;return 0;
}
Mulai
r1 = 10
L = PI * r1 * r1
x = 10
output(fx)
fx = x * x
Selesai
output(L)
Contoh-2 (2)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 7
// Program Kuadrat: Test fungsi kuadrat#include <iostream>using namespace std;
int main() {// KAMUSconst float PI = 3.14;float L, r1, fx, x;// ALGORITMAr1 = 10;L = PI * r1 * r1;cout << L << endl;x = 10;fx = x * x;cout << fx << endl;return 0;
}
DIGANTI DENGANFUNGSI
FxKuadrat(r1);
FxKuadrat(x);
Mulai
r1 = 10
x = 10
output(fx)
Selesai
output(L)
L = PI * FxKuadrat(r1)
fx = FxKuadrat(x)
Contoh-2 (3) – Fungsi FxKuadrat (C++)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 8
int FxKuadrat (int a)// Menghasilkan a * a
// KAMUS LOKAL
// ALGORITMA{
return (a * a);
}
return (a * a)
FxKuadrat(a)
Kode yang berulang
• Semakin besar program, semakin banyak bagian kodeyang berulang
• Sangat tidak efisien jika bagian kode yang sama/serupadiketik berulang-ulang, (bahkan kalau di-copy-paste)
• Di samping itu, dalam banyak persoalan, ada berbagairumus/formula yang berulang-ulang dipakai dalam satuprogram
• Bagaimana jika ada cara supaya bagian kode tersebuttidak perlu diketik berulang-ulang, tapi tetap dapatdigunakan 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 utamaFlowchart terpisah untuk
pendefinisian dan realisasisubprogram
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 11
Procedure/Function call [(list-parameter-aktual)]
Procedure/Function [(list-parameter-formal)]
return [(return-value)]
...
...
...
Mulai
Selesai
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
• 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 merealisasikanprosedur
2. Memanggil prosedur dalam program utama
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 15
PROSEDUR1. Mendefinisikan dan
Merealisasikan Prosedur
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 16
Flowchart untuk ProsedurPemanggilan prosedur dalam
algoritma program utamaFlowchart terpisah untuk
pendefinisian dan realisasiprosedur
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 17
Procedure call [(list-parameter-aktual)]
Procedure[(list-parameter-formal)]
return
...
...
...
Mulai
Selesai
Prosedur
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 18
Langkah-langkah algoritmik dalam prosedur:
Mengubah initial state menjadi final state
Initial state (I.S.)
Final State (F.S.)
Prosedur
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 19
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.
p1p4
p2
p6
p5
p6
Parameter input Parameter output
Parameter input/output
p3
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, pemanggilanfungsi dan prosedur lain
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 20
Definisi & Realisasi Prosedur (2) -Flowchart
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 21
procedure NamaProsedur ([list-parameter-formal]){ Spesifikasi: }{ I.S.: .... }{ F.S.: .... }
KAMUS LOKAL{ List variabel yang dipakai hanya dalam prosedur }
ALGORITMA
{ langkah-langkah algoritmik dalam prosedur }
return
NamaProsedur [(list-parameter-formal)]
Memberikan nama
List parameter formal (jika ada)
Realisasi Prosedur:Langkah-langkah
algoritmik
Definisi & Realisasi Prosedur (2) –C++
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 22
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
}
Memberikan nama
List parameter formal (jika ada)
Realisasi Prosedur:Langkah-langkah
algoritmik
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
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 24
procedure HitungTegangan ( int I, int R, int * V )
// I.S.: I dan R terdefinisi// F.S.: V terdefinisi melalui perhitungan V = I * R
// KAMUS LOKAL
// ALGORITMA
V = I * R
return
HitungTegangan (I,R,V)
Parameter input
Parameter output diberi tanda * sebelum
nama parameter
Contoh Kasus (2) – C++
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 25
procedure HitungTegangan ( int I, int R, int * V )
// I.S.: I dan R terdefinisi// F.S.: V terdefinisi melalui perhitungan V = I * R
// KAMUS LOKAL
// ALGORITMA
V = I * R
return
HitungTegangan (I,R,V)
void HitungTegangan ( int I, int R, int * V )
// I.S.: I dan R terdefinisi// F.S.: V terdefinisi melalui perhitungan V = I * R }
// KAMUS LOKAL
// ALGORITMA{
V = I * R;
}
PROSEDUR2. Memanggil Prosedur dalam
Algoritma Program Utama
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 26
Flowchart untuk ProsedurPemanggilan prosedur dalam
algoritma program utamaFlowchart terpisah untuk
pendefinisian dan realisasiprosedur
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 27
Procedure call [(list-parameter-aktual)]
Procedure[(list-parameter-formal)]
return
...
...
...
Mulai
Selesai
AP/KU1071 28
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
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
KAMUSint arus, hambatan;int tegangan;
ALGORITMA // lihat flowchart
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 30
Mulai
Selesai
input (arus)input (hambatan)
output (tegangan)
HitungTegangan (arus, hambatan, tegangan)
Contoh Kasus (3) –Pemanggilan Prosedur (C++)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 31
// Program HitungTeganganListrik;// Menghitung tegangan listrik berdasarkan arus dan hambatan#include <iostream>using namespace std;
... // tuliskan definisi/header prosedur di sini
// PROGRAM UTAMAint main ()
// KAMUSint arus, hambatan;int tegangan;// ALGORITMAcin >> 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 &
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)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 33
arus
hambatan
tegangan
I
R
*V
Parameter aktual pada pemanggilan
prosedur
Parameter formal pada pendefinisian
prosedur
type: integer
type: integer
type: integer
Program Lengkap (Flowchart)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 35
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 36
//Judul dan spesifikasi program#include <iostream>using namespace std;
// PROGRAM UTAMAint main () {
return 0;}
DEFINISI PROSEDUR
PEMANGGILAN PROSEDUR
REALISASI PROSEDUR
Kode prosedur dalam program
Contoh Kasus (C++) – Kode Lengkap
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 37
// 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 UTAMAint main () {
// KAMUSint arus, hambatan, tegangan;// ALGORITMAcin >> arus; cin >> hambatan;HitungTegangan(arus, hambatan, &tegangan);cout << tegangan << endl;return 0;
}// Realisasi Prosedurvoid HitungTegangan (int I, int R, int * V) { // ALGORITMA
*V = I * R;}
Parameter formal
Parameter aktual
AP/KU1071 38
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
Contoh-2: Flowchart Program Utama
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 39
MulaiProgram Tukar2Bilangan // Menerima masukan 2 integer dan // menukar keduanya
KAMUSint A, B;
ALGORITMA PROGRAM UTAMA// lihat flowchart
input(A, B)
output(A, B)
Tukar(A,B)
Selesai
Contoh-2: Flowchart Prosedur Tukar
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 40
Tukar(A,B)procedure Tukar (int *A, int *B)// I.S.: A, B terdefinisi// F.S.: Nilai A, B ditukar
KAMUS LOKALint temp;
ALGORITMA// lihat flowchart
temp = A
B = temp
A = B
return
A dan B parameter input sekaligus
output
Contoh-2: Program Lengkap C++
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 41
// 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 Lokalint temp;
// Algoritmatemp = *A;*A = *B;*B = temp;
}
A dan B: contoh parameter
input/output
FUNGSI
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 42
Fungsi
• Suatu fungsi:
– Sebuah transformasi akibat pemetaan suatu nilai (daridomain) 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
Ekspresi memanfaatkan function
Flowchart untuk FungsiPemanggilan fungsi dalam algoritma program utama
Flowchart terpisah untuk pendefinisian dan realisasi
fungsi
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 44
Function[(list-parameter-aktual)]
Function[(list-parameter-formal)]
return (return value)
...
...
...
Mulai
Selesai
Tahapan Memanfaatkan Fungsi
1. Mendefinisikan dan merealisasikanfungsi
2. Memanggil fungsi dalam program utama sebagai bagian dari ekspresidalam instruksi dalam algoritma
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 45
FUNGSI1. Mendefinisikan dan Merealisasikan Fungsi
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 46
Ekspresi memanfaatkan function
Flowchart untuk FungsiPemanggilan fungsi dalam algoritma program utama
Flowchart terpisah untuk pendefinisian dan realisasi
fungsi
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 47
Function[(list-parameter-aktual)]
Function[(list-parameter-formal)]
return (return value)
...
...
...
Mulai
Selesai
Fungsi
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 48
Langkah-langkah algoritmik dalam fungsi:
Mentransformasi nilai parameter input untuk mendapatkan nilai
output
Parameter input Nilai Output
Fungsi
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 49
Langkah-langkah algoritmik dalam fungsi:
Mentransformasi nilai p1, p2, p3, p4 untuk menghasilkan
nilai output
p1
p2
p4
Nilai output
p3
Parameter input: boleh tidak ada
Nilai output: HARUS ADA
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 danprosedur 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
Definisi & Realisasi Fungsi (2) -Flowchart
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 51
function NamaFungsi ([list-parameter-input]) type-output// Menghasilkan ...
KAMUS LOKAL// List variabel yang dipakai hanya dalam fungsi
ALGORITMA
// langkah-langkah transformasi input // menjadi nilai output
return(return-value)
NamaFungsi[(list-parameter-formal)]
Memberikan nama
List parameter input formal (jika ada)
Realisasi Fungsi
Type nilai output
Return-value harus bertype sama seperti
type-output
Definisi & Realisasi Fungsi (3) -Pascal
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 52
type-output NamaFungsi ([list-parameter-formal])// Menghasilkan ...
// KAMUS LOKAL// List variabel yang dipakai hanya dalam fungsi
// ALGORITMA{
// langkah-langkah transformasi input menjadi output
return (return-value);
}
Memberikan nama
List parameter input formal (jika ada)
Realisasi Fungsi
Type nilai output
Return-value harus bertype sama seperti
type-outputCara return di C++
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
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 54
function FTegangan ( int I, int R ) int// Menghasilkan tegangan dari perkalian I dan R
KAMUS LOKAL-
ALGORITMA
return (I*R)
FTegangan(I,R)
Type-output
I, R : Parameter input
function FTegangan ( int I, int R ) int// Menghasilkan tegangan dari perkalian I dan R
KAMUS LOKAL-
ALGORITMA
Contoh Kasus (3) - Pascal
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 55
return (I*R)
Tegangan(I,R)
int FTegangan ( int I, int R )// Menghasilkan tegangan dari perkalian I dan R
// KAMUS LOKAL
// ALGORITMA{
return (I * R);
}
FUNGSI2. Memanggil fungsi dalam program utama sebagai bagian dari ekspresi
dalam instruksi dalam algoritma
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 56
Ekspresi memanfaatkan function
Flowchart untuk FungsiPemanggilan fungsi dalam algoritma program utama
Flowchart terpisah untuk pendefinisian dan realisasi
fungsi
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 57
Function[(list-parameter-aktual)]
Function[(list-parameter-formal)]
return (return value)
...
...
...
Mulai
Selesai
AP/KU1071 58
Pemanggilan Fungsi
• Fungsi harus dipanggil dalam algoritma program utama sebagai bagian dari sebuah ekspresi
• Variabel/harga yang dituliskan pada parameter input fungsi dalam pemanggilan fungsi di program utama parameter aktual
var = <fungsi-dipanggil-di-sini>output(<fungsi-dipanggil-di-sini>)
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
KAMUSint arus, hambatan;int tegangan;
ALGORITMA// lihat flowchart
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 60
Mulai
input (arus)input (hambatan)
tegangan =
FTegangan(arus, hambatan)
output(tegangan)
Selesai
Contoh Kasus (3) –Pemanggilan Fungsi (C++)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 61
// Program HitungTeganganListrik;// Menghitung tegangan listrik berdasarkan arus dan hambatan#include <iostream>using namespace std;
... // tuliskan definisi/header fungsi di sini
// PROGRAM UTAMAint main ()
// KAMUSint arus, hambatan;int tegangan;// ALGORITMAcin >> arus; cin >> hambatan;tegangan = FTegangan(arus, hambatan);cout << tegangan << endl;return 0;
}... // realisasi fungsi di sini
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)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 63
arus
hambatan
I
R
Parameter aktual pada pemanggilan
fungsi
Parameter formal pada pendefinisian
fungsi
type: integer
type: integer
28/09/2015 KU1072/Pengenalan Teknologi Informasi B
Program JudulProgram // Spesifikasi Program
KAMUS// deklarasi variabel,// konstanta, dll.
ALGORITMA PROGRAM UTAMA
Program Lengkap (Flowchart)
65
function NamaFungsi (list-parameter-formal) type-output// Spesifikasi Prosedur}
KAMUS LOKAL// deklarasi variabel // lokal fungsi, dll.
ALGORITMA ...
...
...
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 66
//Judul dan spesifikasi program#include <iostream>using namespace std;
// PROGRAM UTAMAint main () {
return 0;}
DEFINISI FUNGSI
PEMANGGILAN FUNGSI
REALISASI FUNGSI
Kode fungsi dalam program
Contoh Kasus (C++) – Kode Lengkap
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 67
// Program HitungTeganganListrik;// Menghitung tegangan listrik berdasarkan arus dan hambatan#include <iostream>using namespace std;int FTegangan (int I, int R);// Menghasilkan tegangan dgn rumus = I*R
// ALGORITMA PROGRAM UTAMAint main () {
// KAMUSint arus, hambatan, tegangan;// ALGORITMAcin >> arus; cin >> hambatan;tegangan = FTegangan(arus, hambatan);cout << tegangan << endl;return 0;
}// Realisasi Fungsiint FTegangan (int I, int R) { // ALGORITMA
return (I * R);}
Parameter formal
Parameter aktual
AP/KU1071 68
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]
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
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 70
Mulai
Program LuasLingkaran // Menerima masukan nilai jari-// jari dan menuliskan ke layar // luas lingkaran
KAMUSconst float PI = 3.14;float R;float L;
ALGORITMA PROGRAM UTAMA// lihat flowchart
input(R)
output(L)
Selesai
L = Luas (R)
function Luas (float R) float// Menghasilkan luas lingkaran // berdasarkan jari-jari R: PI * R * R
KAMUS LOKAL-
ALGORITMA
Contoh-3: Flowchart Fungsi Luas
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 71
Luas (R)
return (PI * R * R)
Contoh-2: Program Lengkap C++
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 72
// 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
// Algoritmareturn (PI * R * R);
}
Soal-1a:
• Diketahui fungsiCiriBilangan seperti disamping:
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 74
int CiriBilangan(int bil) {// Menghasilkan:// 0 : jika bil adalah 0// 1 : jika bil adalah positif// -1 : jika bil adalah negatif
//Kamus Lokalint hasil;//Algoritmaif (bil == 0) {
hasil = 0;} else if (bil > 0) {
hasil = 1;} else { // bil < 0
hasil = -1;}return hasil;
}
Soal-1b:
• Apakah hasil dari potongan program berikut?
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 75
int X = 0;cout << CiriBilangan(X) << endl;
cout << CiriBilangan(1000) << endl;
int bil, c;
bil = -222;c = CiriBilangan(bil);cout << c << endl;
0
1
-1
76
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
77
Soal-3: MAX2 dan MAX3
• Tuliskan fungsi MAX2, yang menerima masukan duabuah bilangan integer dan menghasilkan bilanganterbesar– Contoh: MAX2(1,2) 2
• Tuliskan fungsi MAX3 yang memanfaatkan fungsiMAX2. Fungsi MAX3 menerima input 3 bilanganinteger dan menghasilkan bilangan terbesar– Contoh: MAX3(10,2,3) 10
28/09/2015 KU1072/Pengenalan Teknologi Informasi B
Soal-4: Putar 3 Bilangan
• Dengan memanfaatkan prosedur Tukar, buatlahsebuah program utama yang digunakan untukmemutar 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
Soal-5
• Implementasikan sebuah prosedur yang digunakanuntuk:– 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:
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 79
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
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++)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 81
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;
}
}
Alt. Solusi Soal-3
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 82
int Max2 (int a1, int b1) {// diberikan a1 dan b1, menghasilkan a1 jika a1 >= b1, // dan b1 jika b1 > a1
//Algoritmaif (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
//Algoritmareturn Max2(Max2(a,b),c);
}
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 83
#include <iostream>using namespace std;
void Tukar(int * A, int * B);...
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 ...
Alt. Solusi Soal-4 (C++)
28/09/2015 KU1072/Pengenalan Teknologi Informasi B 84
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 LOKALint x, i;
// ALGORITMA*Sum = 0;for (i = 1; i <= N; i++) {
cin >> x;*Sum = *Sum + x;
}}