KU1072 Subprogram CPP Flowchart 220915

84
KU1072/Pengenalan Teknologi Informasi B Tahap Tahun Pertama Bersama Institut Teknologi Bandung Subprogram (dalam Bahasa C++ + Flowchart) Tim Penyusun Materi PTI-B

description

fr

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

asus
Typewritten Text
hanya terima input

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)

asus
Typewritten Text
asus
Typewritten Text
void : fungsi yang tidak mengembalikkann nothing
asus
Typewritten Text

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)

asus
Typewritten Text
fx seolaholah mengembalikkan nilai

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)

asus
Typewritten Text
mengembalikkan nilai untuk yang membutuhkan
asus
Typewritten Text
boleh diganti apa aja

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

asus
Typewritten Text
makin singkat kode > KEREN

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

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 merealisasikanprosedur

2. Memanggil prosedur dalam program utama

28/09/2015 KU1072/Pengenalan Teknologi Informasi B 15

asus
Typewritten Text

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.)

asus
Typewritten Text
awal
asus
Typewritten Text
akhir

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

asus
Typewritten Text
str
asus
Typewritten Text
asus
Typewritten Text
cetak hello

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)

asus
Typewritten Text
int main () { int tegangan; int I = 2; // Ampere int R = 3; //ohm tegangan = hitung tegangan (2,3); cout<<tegangan<<endl; } int hitung tegangan (int i, int r) { return i*r; ]
asus
Typewritten Text

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

PROSEDURProgram Lengkap

28/09/2015 KU1072/Pengenalan Teknologi Informasi B 34

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

asus
Typewritten Text
devinisikan di awal biar gak error

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

asus
Typewritten Text
penyangga
asus
Typewritten Text
assign
asus
Typewritten Text
selamatkan dulu

FUNGSI

28/09/2015 KU1072/Pengenalan Teknologi Informasi B 42

asus
Typewritten Text
TODAI TODAI TODAi
asus
Typewritten Text
asus
Typewritten Text
asus
Typewritten Text
asus
Typewritten Text
asus
Typewritten Text
asus
Typewritten Text
toda
asus
Typewritten Text

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

asus
Typewritten Text
harus punya kembalian gak boleh ada void contoh get time

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

FUNGSIProgram Lengkap

28/09/2015 KU1072/Pengenalan Teknologi Informasi B 64

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);

}

LATIHAN SOAL

28/09/2015 KU1072/Pengenalan Teknologi Informasi B 73

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;

}}