0% found this document useful (0 votes)
7 views17 pages

Part 4

algoritma pemrograman unpam semester 3 pert 4

Uploaded by

Muhammad sabil b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views17 pages

Part 4

algoritma pemrograman unpam semester 3 pert 4

Uploaded by

Muhammad sabil b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

PERTEMUAN 4

PROSEDUR DAN FUNGSI

A. Tujuan Pembelajaran

Mahasiswa dapat mengerti dan dapat menggunakan fungsi dan prosedur dalam
pemrograman.

B. Uraian Materi

4.1 Pengertian Prosedur dan Fungsi

Prosedur (procedure) dan fungsi (function) adalah suatu sub program


yang mengerjakan suatu tugas tertentu. Perbedaan antara keduanya adalah
fungsi akan mengembalikan suatu nilai tertentu ke modul yang memanggilnya,
sedangkan prosedur tidak mengembalikan suatu nilai. Tujuan dari prosedur dan
fungsi adalah agar satu aplikasi dapat dipecah menjadi bagian-bagian kecil
yang dapat dikelola dengan lebih mudah.

Untuk memudahkan penulisan, prosedur dan fungsi keduanya akan


ditulis sebagai fungsi. Karena prosedur adalah fungsi secara khusus, yaitu
fungsi yang tidak mengembalikan nilai.

Di gambar di atas, program dipecah menjadi 7 fungsi yang masing-


masing mempunyai tugas khusus untuk diselesaikan. Tiap fungsi dapat saling
memanggil.

Algoritma dan Pemrograman 2 45


Catatan:
Didalam C++, semua kode berada di dalam fungsi. Fungsi adalah fitur
fundamental untuk semua bahasa pemrograman tingkat tinggi. Fungsi
memungkinkan kita membuat program menangani tugas yang besar dan rumit
dengan cara memecahnya menjadi banyak fungsi kecil-kecil yang mudah kita
tangani.
Dalam tingkat lebih rendah, fungsi adalah alamat memori di mana kode
badan fungsi disimpan. Di dalam kode sumber, alamat memori diberikan nama
yang cukup menjelaskan kegunaan dari fungsi ini. Alamat memori ini dapat
dipanggil, dan kontrol program akan beralih ke kode di alamat tersebut yang
merupakan awal dari kode fungsi. Setelah selesai mengerjakan kode di badan
fungsi, kontrol akan kembali ke instruksi setelahnya pemanggilan fungsi.

4.2 Pendefinisian Fungsi

Suatu fungsi dalam C++ harus diberi nama yang unik, yang membedakan
satu sama lain. Sangat dianjurkan memberi nama fungsi sesuai dengan tugas
yang dijalankan oleh fungsi tersebut.

Format umum definisi satu fungsi adalah seperti di bawah ini.

type name( parameter1, parameter2, ...) { statements }

Di mana:

• type adalah tipe data untuk nilai yang akan dikembalikan dari fungsi. Untuk
prosedur, type ditulis sebagai void yang berarti tidak mengembalikan nilai
apapun.
• name adalah nama fungsi.
• parameter. Setiap parameter terdiri dari tipe data dan nama. Parameter
dapat didefinisikan sebanyak yang diperlukan dengan tiap parameter
diantarai koma. Parameter merupakan pertukaran nilai antara pemanggil
dengan fungsi yang dipanggil. Di dalam fungsi, parameter berlaku seperti
layaknya variabel.

Algoritma dan Pemrograman 2 46


• statements adalah penjabaran aksi yang dilakukan oleh fungsi. Kadang
disebut sebagai badan fungsi.

4.3 Lebih Jauh Mengenai Parameter

Parameter adalah nama-nama variabel yang dideklarasikan pada bagian


header beserta tipe datanya.

Parameter ada dua:

• aktual (argumen) : parameter yang disertakan pada saat pemanggilan


fungsi. Ini ada di modul pemanggil.
• formal : parameter yang dideklarasikan pada bagian header fungsi.
Ini ada di bagian fungsi.

4.4 Pemanggilan Fungsi

Fungsi bukan program yang berdiri sendiri, sehingga tidak dapat


dijalankan secara langsung. Fungsi dipanggil namanya dari modul pemanggil.

Ketika sebuah fungsi dipanggil, kendali program akan pindah ke fungsi


tersebut. Instruksi-instruksi dalam badan fungsi akan dijalankan. Setelah semua
instruksi selesai dilaksanakan, kendali program berpindah kembali ke modul
pemanggil, menjalankan instruksi yang ada sesudah pemanggilan fungsi.

Contoh Program 1

1 #include <iostream>

2 using namespace std;

3 int perkalian(int a, int b) {

4 int r=a*b;

5 return r;

6 }

7 int main () {

Algoritma dan Pemrograman 2 47


8 int z;

9 z = perkalian(3,4);

10 cout << "Hasil perkalian: " << z;

11 }

Program di atas dibagi atas dua fungsi, perkalian dan main. Ya, main juga
merupakan fungsi. Hanya saja main adalah fungsi istimewa karena dia yang
pertama kali dipanggil oleh sistem ketika program dijalankan. Fungsi lain akan
dijalankan hanya jika dipanggil oleh main, langsung maupun tidak langsung.

Dalam contoh di atas, sub program main mulai dengan mendefinisikan


variabel z dengan tipe int. Kemudian program memberi nilai z dengan cara
memanggil fungsi perkalian dengan 2 parameter yaitu 3 dan 4. Ini disebut
parameter aktual. Jika kita lihat deklarasi fungsi perkalian, fungsi ini
membutuhkan dua parameter a dan b, keduanya dengan tipe int. Kedua
parameter ini disebut parameter formal.

Maka ketika fungsi perkalian dipanggil, di dalam fungsi itu variabel a akan
berisi nilai 3 dan variabel b akan berisi nilai 4. Kedua nilai ini didapat dari
parameter aktual di fungsi main. Badan fungsi perkalian akan mengalikan a
dengan b dan mengembalikan hasilnya ke modul pemanggil yaitu main. Fungsi
main akan menangkap nilai yang dikembalikan oleh fungsi perkalian dan
menyimpan hasilnya di variabel z. Saat ditampilkan, z akan berisi nilai 12.

Keluaran dari program di atas adalah:

Hasil perkalian: 12

Perhatikan bahwa eksekusi program meninggalkan fungsi main di baris


ke 9, yaitu ketika fungsi main memanggil fungsi perkalian. Setelah selesai dari
fungsi perkalian, kontrol program akan kembali ke fungsi main dan meneruskan
eksekusi baris setelahnya, yaitu akan mengeksekusi baris ke 10.

Sub program mengembalikan nilai dengan perintah return value. Di


contoh di atas, fungsi perkalian mengembalikan nilai ke fungsi main dengan

Algoritma dan Pemrograman 2 48


perintah return r. Variabel r sebelumnya dihitung dengan mengalikan parameter
pertama dan parameter kedua. Hasilnya adalah 12, dan ini dikembalikan ke
fungsi main.

4.5 Prototipe Fungsi

Suatu fungsi harus didefinisikan di atas pemanggilnya. Sehingga ketika


dipanggil, compiler sudah tahu bahwa ada sub program dengan nama tersebut.
Contoh, fungsi perkalian ditulis di atas fungsi main. Cobalah mengubah
program di atas dengan menuliskan fungsi perkalian di bawah fungsi main.
Apakah program anda berhasil dikompilasi?

Kita dapat mendefinisikan suatu fungsi di bawah fungsi lain dan tetap
dapat dipanggil dengan syarat prototipe fungsi dituliskan terlebih dahulu.
Contoh, program di atas dapat dituliskan sebagai berikut.

Contoh Program 2

1 #include <iostream>

2 using namespace std;

3 int perkalian(int a, int b);

4 int main () {

5 int z;

6 z = perkalian(3,4);

7 cout << "Hasil perkalian: " << z;

Algoritma dan Pemrograman 2 49


8 }

9 int perkalian(int a, int b) {

10 int r=a*b;

11 return r;

12 }

Prototipe mempunyai format sebagai di bawah.

type name ( parameter1, parameter2, ...);

Sedang badan fungsi dituliskan di bawah. Di contoh program di atas,


prototipe fungsi perkalian dituliskan di baris ke 3.

int perkalian(int a, int b);

Sedang badan fungsi perkalian dituliskan di bawah di baris 9-12.


Perhatikan bahwa header di badan fungsi harus dituliskan lagi secara lengkap.

Contoh Program 3

1 #include <iostream>

2 #include <math.h>

3 using namespace std;

4 int luas(int a, int b);

5 int keliling(int a, int b);

6 double diagonal(int a, int b);

7 int main() {

8 int panjang, lebar;

Algoritma dan Pemrograman 2 50


9 int l, k;

10 double d;

11 panjang=8;

12 lebar=5;

13 l = luas(panjang, lebar);

14 k = keliling(panjang, lebar);

15 d = diagonal(panjang, lebar);

16 cout << "Segi Empat" << endl;

17 cout << "Panjang : " << panjang << endl;

18 cout << "Lebar : " << lebar << endl;

19 cout << "Luas : " << l << endl;


20 cout << "Keliling: " << k << endl;

21 cout << "Diagonal: " << d << endl;

22 }

23 int luas(int a, int b){

24 return a*b;

25 }

26 int keliling (int a, int b){

27 return 2 * (a+b);

28 }

29 double diagonal(int a, int b){

30 return (double)sqrt(a*a+b*b);

31 }

Program mendefinisikan prototipe dari fungsi luas, keliling, dan diagonal


di baris 4, 5, dan 6. Sedang badan fungsi dituliskan di baris 23 – 31. Dengan
menuliskan prototipe di atas, maka fungsi main dapat memanggil ketiga fungsi

Algoritma dan Pemrograman 2 51


tersebut. Lakukan percobaan menghapus baris 4, 5, dan 6 di atas. Apakah C++
dapat mengkompilasi program? Mengapa?

Di dalam program di atas, di fungsi main pemanggilan fungsi luas


dilakukan dengan memakai parameter aktual panjang dan lebar. Sedang di
dalam fungsi luas, parameter formal bernama a dan b. Perbedaan nama antara
parameter aktual dan parameter formal ini dibolehkan, asalkan tipe datanya
sama. Dalam hal ini tipe data kedua parameter aktual haruslah int, sama
dengan tipe data kedua parameter formal di fungsi luas.

Di dalam fungsi diagonal, dipanggil fungsi sqrt (akar) karena


penghitungan diagonal adalah

diagonal = √a2 + b 2

Untuk ini perlu dimasukkan definisi matematika dengan cara #include


<math.h>. Juga perlu diberi tipe data double karena mengandung angka
desimal. Dilakukan dengan cara casting ke double (baris 30).

Keluaran dari program di atas adalah sebagai berikut.

Segi Empat

Panjang : 8

Lebar : 5

Luas : 40

Keliling: 26

Diagonal: 9.43398

Contoh Program 4

1 #include <iostream>

2 using namespace std;

3 void judul();

4 int fungsiX(int x);

5 int main() {

Algoritma dan Pemrograman 2 52


6 int angka=-1;

7 judul();

8 while (angka!=0){

9 cout<<"Masukan angka (0 untuk berhenti): ";

10 cin>>angka;

11 if (angka==0) break;

12 cout<<"Hasil fungsi: "

13 <<fungsiX(angka)<<endl<<endl;

14 judul();

15 }

16 }

17 void judul() {

18 cout << "************************" <<endl;

19 cout << "Program menghitung hasil"<<endl;

20 cout << " fungsi 3x^2+5*x+4"<<endl;

21 cout << "************************" <<endl;

22 }

23 int fungsiX(int x){

24 return 3*x*x + 5*x + 4;

25 }

Keluaran dari program di atas:

************************

Program menghitung hasil

fungsi 3x^2+5*x+4

************************

Masukan angka (0 untuk berhenti): 4

Algoritma dan Pemrograman 2 53


Hasil fungsi: 72

************************

Program menghitung hasil

fungsi 3x^2+5*x+4

************************

Masukan angka (0 untuk berhenti): 7

Hasil fungsi: 186

************************

Program menghitung hasil

fungsi 3x^2+5*x+4

************************

Masukan angka (0 untuk berhenti): 0

Program di atas membuat 2 fungsi, judul dan fungsiX. Ini membuat fungsi
main lebih rapi dan mudah dibaca. Terlihat bahwa main memakai pengulangan
while untuk (1) meminta masukan dan (2) menghitung hasil fungsi dan (3)
menampilkan judul.

Program ini juga menunjukkan satu keunggulan fungsi, yaitu dapat


dipanggil berkali-kali. Di baris 14, pemanggilan ke fungsi judul dilakukan berkali-
kali hanya dengan satu baris perintah. Ini menghemat penulisan.

4.6 Tugas

Soal 1

Buatlah satu program C++ dengan tiga fungsi sebagai berikut:

- Fungsi abs – mengembalikan nilai positif dari suatu angka.


- Fungsi minus – jika angka positif, kembalikan nilai negatif. Jika angka
negatif, kembalikan nilai positif.

Algoritma dan Pemrograman 2 54


- Fungsi pangkat dua – kembalikan nilai angka dipangkatkan dua.

Ketiga fungsi memerlukan satu parameter masukan dan memberikan


satu nilai kembalian. Mintalah masukan satu angka dari pengguna, dan
hitunglah dengan ketiga fungsi di atas yaitu, nilai absolut,nilai minus, dan nilai
pangkat dua.

Soal 2

Buatlah program C++ dengan 4 fungsi seperti di bawah ini.

- Fungsi max: mengembalikan maksimum dari 2 bilangan.


- Fungsi min: mengembalikan minimum dari 2 bilangan.
- Fungsi odd: mengembalikan bilangan yang ganjil. Bila keduanya ganjil,
boleh dipilih salah satu.
- Fungsi even: mengembalikan bilangan yang genap. Bila keduanya
genap, boleh dipilih salah satu.

Keempat fungsi memerlukan dua parameter masukan dan memberikan


satu nilai kembalian. Mintalah masukan dua angka dari pengguna, dan
tampilkan hasil dari keempat fungsi di atas.

Soal 3

Buatlah satu program C++ untuk lingkaran, memakai 3 fungsi dengan


satu parameter jari-jari. Kembalian bertipe data double. Tiga fungsi adalah:

- Fungsi luas
- Fungsi keliling
- Fungsi diameter

Mintalah masukan dari pengguna satu angka yang merupakan jari-jari


lingkaran. Kemudian tampilkan hasil dari ketiga fungsi di atas.

Algoritma dan Pemrograman 2 55


4.7 Fungsi yang Disediakan C++

Ada fungsi-fungsi yang sudah disediakan oleh C++ (built-in functions) dan
dapat dipanggil oleh program kita. Misal perintah printf untuk mencetak ke layar.
Fungsi-fungsi ini biasanya mengharuskan program memasukkan file header
sebelum dapat dipakai. Misal fungsi sqrt untuk menghitung akar suatu angka.
Fungsi ini mengharuskan kita memasukkan header math.h ke dalam program
kita dengan perintah #include <math.h>. File header ini berisi definisi dan
prototipe dari fungsi-fungsi matematika yang tersedia.

Contoh Program 5

1 #include <iostream>

2 #include <math.h> // prototipe fungsi math

3 using namespace std;

4 #define PI 3.14159265 // definisi PI

5 void judul();

6 int main() {

7 double rad; // menyimpan nilai radian

8 int sudut=10; // inisialisasi sembarang nilai > 0

9 while (sudut > 0) { // berulang jika sudut > 0

10 judul(); // tampilkan judul

11 cout << "Masukkan sudut (0 untuk berhenti): ";

12 cin >> sudut; // masukan sudut

13 if (sudut <= 0) break; // berhenti

14 // parameter harus dengan satuan radian.

15 // sudut derajat dikonversi ke radian

16 rad = (double)sudut * PI / 180;

17 // menampilkan sin, cos, tan

18 // dengan built-in function di math.h

Algoritma dan Pemrograman 2 56


19 cout << "Sinus : " << sin(rad) << endl;

20 cout << "Cosinus: " << cos(rad) << endl;

21 cout << "Tangen : " << tan(rad) << endl;

22 cout << endl;

23 }

24 cout << "Keluar program"<< endl;

25 }

26 void judul() {

27 char bintang[]="*****************************";

28 cout << bintang << endl;

29 cout<<"Hitung sinus, cosinus, tangen"<<endl;

30 cout<<"dengan built-in function C++"<<endl;

31 cout << bintang << endl << endl;

32 }

Contoh program di atas memakai fungsi-fungsi matematika yang sudah


disediakan C++. Harus dimasukkan prototipe dari fungsi matematika dengan
perintah #include <math.h> (baris 2). Selanjutnya fungsi sin, cos, tan dapat
dipanggil dari program. Keluaran dari program di atas:

*****************************
Hitung sinus, cosinus, tangen
dengan built-in function C++
*****************************

Masukkan sudut (0 untuk berhenti): 49


Sinus : 0.75471
Cosinus: 0.656059
Tangen : 1.15037

*****************************

Algoritma dan Pemrograman 2 57


Hitung sinus, cosinus, tangen
dengan built-in function C++
*****************************

Masukkan sudut (0 untuk berhenti): 94


Sinus : 0.997564
Cosinus: -0.0697565
Tangen : -14.3007

*****************************
Hitung sinus, cosinus, tangen
dengan built-in function C++
*****************************

Masukkan sudut (0 untuk berhenti): 0


Keluar program

Program akan menanyakan sudut yang akan dihitung. Sudut yang


dimasukkan akan dikonversi ke radian dengan rumus:

radian = sudut * PI / 180

di mana PI = 3.14159265

Kemudian program memanggil dan menampilkan sinus, cosinus, dan


tangen dari sudut yang diminta. Berhenti ketika masukan sudut 0 atau kurang
dari 0.

Contoh Program 6

1 #include <iostream>

2 #include <time.h> // prototipe fungsi time

3 using namespace std;

4 #define JML_DATA 50

5 void isi_random(int a[]);

Algoritma dan Pemrograman 2 58


6 void cetak(int a[]);

7 void cari(int a[], int x);

8 int main() {

9 int angka[JML_DATA];

10 isi_random(angka);

11 cetak(angka);

12 int n=10;

13 while (n>=0) {

14 cout<<endl

15 <<"Masukkan angka (-1 untuk berhenti): ";

16 cin>>n;

17 if (n<0) break;

18 cari(angka, n);

19 }

20 }

21 void isi_random(int a[]) {

22 srand(time(NULL));

23 for (int i=0; i<JML_DATA; i++)

24 a[i]=rand()%100;

25 }

26 void cetak(int a[]) {

27 char garis[]="-------------------------------";

28 cout << garis;

29 for (int i=0; i<JML_DATA; i++) {

30 if (i%10==0) cout << endl;

31 printf("%02d ", a[i]);

Algoritma dan Pemrograman 2 59


32 }

33 cout<<endl<<garis<<endl;

34 }

35 void cari(int a[], int x) {

36 int i;

37 for (i=0; i<JML_DATA; i++) {

38 if (a[i]==x) {

39 cout<<"Ditemukan di indeks "<<i+1<<endl;

40 break;

41 }

42 }

43 if (i==JML_DATA)

44 cout << "Angka tidak ditemukan"<<endl;

45 }

Untuk program di atas, kita dapat menerangkan per fungsi sebagai


berikut.

Fungsi isi_random mengisi nilai random ke dalam larik 1-dimensi yang


sudah dibuat.

Fungsi cetak mencetak seluruh nilai random ke layar.

Fungsi cari melihat seluruh nilai di larik dan membandingkan dengan


angka yang dimasukkan pengguna. Jika ditemukan, akan ditampilkan
indeksnya. Jika tidak ditemukan akan dituliskan di layar “Angka tidak
ditemukan”.

Ini lebih mudah dimengerti dan lebih mudah dituliskan di dokumentasi


nantinya. Sedang fungsi main sendiri dapat digambarkan dengan flowchart
sebagai berikut.

Algoritma dan Pemrograman 2 60


C. Latihan

Soal 1

Buatlah satu program C++ dengan memakai fungsi yang sudah


disediakan oleh C++:

- strcpy – menyalin isi string


- strcmp – membandingkan string
- strlen – menghitung panjang satu string
- strcat – menambahkan string

D. Referensi

Kirch-prinz U, Prinz P. A Complete Guide to Programming in C++. 1st ed. Sudbury,


MA: Jones And Bartlett Publishers; 2002.

Arndt J. Algorithms for Programmers.; 2008.

Sjukani M. Algoritma Dan Struktur Data 1 Dengan C, C++ Dan Java. Jakarta,
Indonesia: Mitra Wacana Media; 2014.

Edition E. EIGHTH EDITION with an Introduction to C++ HOW TO PROGRAM.

A.S. R. Logika Algoritma Dan Pemrograman Dasar. Bandung, Indonesia:


Mandalajati; 2018.

Davis SR. C++ for Dummies. 7th Editio. New Jersey, USA: John Wiley & Sons, Inc;
2014.

Algoritma dan Pemrograman 2 61

You might also like