FUNCTION
Oleh:
MUHAMAD BISMA MAULANA
NIM 230533607271
S1 PTI’23 OFF C
FUNCTION
I. TUJUAN
Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :
1. Mengenal dan memahami penggunaan function dalam listing program.
2. Membuat program sederhana dengan menerapkan konsep function.
Fungsi ini dapat dipanggil, atau dipanggil, dari sejumlah tempat dalam
program. Nilai yang diteruskan ke fungsi adalah argumen, yang jenisnya harus
kompatibel dengan jenis parameter dalam definisi fungsi.
Tidak ada batas praktis untuk panjang fungsi, tetapi desain yang baik
bertujuan untuk fungsi yang melakukan satu tugas yang terdefinisi dengan baik.
Algoritma kompleks harus dipecah menjadi fungsi yang lebih mudah dipahami jika
memungkinkan.
Fungsi yang ditentukan pada cakupan kelas disebut fungsi anggota. Di C++,
tidak seperti bahasa lain, fungsi juga dapat didefinisikan pada cakupan namespace
layanan (termasuk namespace layanan global implisit). Fungsi tersebut disebut
fungsi bebas atau fungsi non-anggota; fungsi tersebut digunakan secara luas di
Pustaka Standar.
Latihan 1
Pemrograman C++
Nama Program : Pemanggilan Fungsi
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan fungsi Rtukar yang menerima dua pointer integer sebagai parameter.
Fungsi ini akan menukar nilai dari dua variabel yang ditunjuk oleh pointer tersebut.
3. Deklarasikan fungsi Vtukar yang menerima dua integer sebagai parameter. Fungsi
ini akan menukar nilai dari dua variabel tersebut.
4. Dalam fungsi main:
a. Deklarasikan dua variabel integer a dan b, dan berikan nilai 99 dan 11
masing-masing.
b. Tampilkan nilai a dan b sebelum pemanggilan fungsi.
c. Panggil fungsi Rtukar dengan alamat dari a dan b sebagai argumen. Fungsi
ini akan menukar nilai a dan b.
d. Tampilkan nilai a dan b setelah pemanggilan fungsi Rtukar.
e. Kembalikan nilai a dan b ke nilai semula (99 dan 11).
f. Tampilkan nilai a dan b sebelum pemanggilan fungsi.
g. Panggil fungsi Vtukar dengan a dan b sebagai argumen. Fungsi ini tidak
akan mengubah nilai a dan b di fungsi main karena parameter diteruskan
dengan nilai (call by value).
h. Tampilkan nilai a dan b setelah pemanggilan fungsi Vtukar.
5. Akhiri program.
Flowchart :
Script program :
#include<iostream>
using namespace std;
void Rtukar (int* ,int*);
void Vtukar (int,int);
main(){
int a,b;
a=99; b=11;
//call by reference
cout<<"Nilai sebelum pemanggilan fungsi "<<endl;
cout<<"Nilai a= "<<a<<" Nilai b= "<<b<<endl;
Rtukar(&a,&b);
cout<<"Nilai adalah pemanggilan fungsi Rtukar: "<<endl;
cout<<"Nilai a= "<<a<<" Nilai b= "<<b<<endl<<endl<<endl;
//kembalikan ke nilai semula
a=99;
b=11;
//call by value
cout<<"\nNilai sebelum pemanggilan fungsi : "<<endl;
cout<<"Nilai a= "<<a<<" Nilai b= "<<b<<endl<<endl;
void Vtukar (int px,int py){
int temp;
temp=px;
px=py;
py=temp;
Output Program :
Penjelasan Program :
Program C++ yang Anda berikan adalah tentang dua metode pemanggilan fungsi: Call by
Reference dan Call by Value.
Call by Reference: Dalam metode ini, alamat variabel sebenarnya (bukan nilai variabel)
diteruskan ke fungsi. Oleh karena itu, perubahan apa pun yang dibuat pada parameter
formal juga mempengaruhi variabel aktual. Dalam kode Anda, fungsi Rtukar
menggunakan metode ini. Anda memanggil fungsi ini dengan Rtukar(&a,&b), di mana &a
dan &b adalah alamat dari variabel a dan b. Fungsi ini menukar nilai a dan b.
Call by Value: Dalam metode ini, nilai variabel sebenarnya diteruskan ke fungsi. Oleh
karena itu, perubahan apa pun yang dibuat pada parameter formal tidak mempengaruhi
variabel aktual. Dalam kode Anda, fungsi Vtukar menggunakan metode ini. Anda
memanggil fungsi ini dengan Vtukar(a,b), di mana a dan b adalah nilai dari variabel a dan
b. Meskipun fungsi ini menukar nilai px dan py (yang merupakan salinan dari a dan b), ini
tidak mempengaruhi nilai a dan b di fungsi main.
Jadi, program ini menunjukkan perbedaan antara Call by Reference dan Call by Value.
Dalam Call by Reference, fungsi dapat mengubah nilai variabel aktual, sedangkan dalam
Call by Value, fungsi hanya bekerja pada salinan nilai variabel, sehingga tidak
mempengaruhi variabel aktual.
Latihan 2
Pemrograman C++
Nama Program : Menampilkan bilangan terbesar
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan fungsi cari yang menerima dua integer sebagai parameter. Fungsi ini
akan membandingkan dua bilangan dan mengembalikan yang lebih besar.
3. Deklarasikan fungsi prin yang menerima satu integer sebagai parameter. Fungsi ini
akan mencetak nilai parameter ke layar dengan pesan “Bilangan terbesar adalah
…”.
4. Dalam fungsi main:
a. Deklarasikan dan inisialisasi tiga variabel integer i, j, dan k dengan nilai 5,
9, dan 0 masing-masing.
b. Panggil fungsi cari dengan i dan j sebagai argumen. Simpan nilai yang
dikembalikan oleh fungsi ini dalam variabel k.
c. Panggil fungsi prin dengan k sebagai argumen.
5. Akhiri program.
Flowchart :
Script program :
#include <stdio.h>
main()
{
int i=5;
int j=9;
int k;
k = cari (i,j);
prin(k);
return 0;
}
int cari (int a, int b)
{
if (a>b) return a;
else return b;
}
void prin(int m)
{
printf("Bilangan terbesar adalah %d\n", m);
}
Output Program :
Penjelasan Program :
Program C++ diatas adalah tentang pemanggilan fungsi dan penanganan nilai balik dari
fungsi.
1. Fungsi main adalah titik awal eksekusi program. Di dalam fungsi ini, dua variabel
integer i dan j dideklarasikan dan diinisialisasi dengan nilai 5 dan 9 masing-masing.
2. Fungsi cari dipanggil dengan i dan j sebagai argumen. Fungsi ini menerima dua
parameter, membandingkan mereka, dan mengembalikan yang lebih besar. Nilai
yang dikembalikan oleh fungsi ini disimpan dalam variabel k.
3. Fungsi prin kemudian dipanggil dengan k sebagai argumen. Fungsi ini menerima
satu parameter dan mencetaknya ke layar dengan pesan “Bilangan terbesar adalah
…”.
Jadi, program ini mencari bilangan terbesar antara dua bilangan dan mencetaknya ke layar.
Dalam kasus ini, bilangan tersebut adalah 9.
Harap diperhatikan bahwa meskipun kode ini ditulis dengan sintaks C++, kode ini
sebenarnya lebih mirip dengan bahasa pemrograman C (misalnya, menggunakan printf
alih-alih cout). Namun, kode ini tetap valid dan dapat dijalankan sebagai program C++.
Latihan 3
Pemrograman C++
Nama Program : Menghitung pajak pembelian
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan fungsi calcSalesTax yang menerima dua parameter float,
purchase dan taxRate. taxRate memiliki nilai default 0.1. Fungsi ini
menghitung dan mengembalikan nilai pajak penjualan dengan mengalikan
purchase dengan taxRate.
3. Dalam fungsi main:
a. Deklarasikan variabel float purchase.
b. Minta pengguna untuk memasukkan nominal pembelian dan simpan
dalam variabel purchase.
c. Panggil fungsi calcSalesTax dengan purchase sebagai argumen.
Simpan nilai yang dikembalikan oleh fungsi ini dalam variabel float
tax.
d. Cetak nilai tax ke layar dengan pesan "Pajak pembelian adalah : ".
4. Akhiri program.
Flowchart :
Script program :
#include <iostream>
using namespace std;
int calcSalesTax(float purchase, float taxRate=0.1);
int main()
{
Output Program :
Penjelasan Program :
1. Deklarasi Fungsi: Fungsi calcSalesTax dideklarasikan dengan dua parameter,
yaitu purchase dan taxRate. Parameter taxRate memiliki nilai default 0.1. Ini berarti
jika fungsi dipanggil tanpa memberikan argumen untuk taxRate, maka taxRate akan
otomatis diisi dengan nilai 0.1.
2. Fungsi Main: Fungsi main adalah titik awal eksekusi program. Di dalam fungsi ini,
variabel purchase dideklarasikan untuk menyimpan nominal pembelian. Pengguna
diminta untuk memasukkan nominal pembelian dan nilai ini disimpan dalam
variabel purchase. Kemudian, fungsi calcSalesTax dipanggil dengan purchase sebagai
argumen dan nilai yang dikembalikan oleh fungsi ini disimpan dalam variabel tax.
Akhirnya, nilai tax dicetak ke layar.
3. Fungsi calcSalesTax: Fungsi ini menerima dua argumen, purchase dan taxRate, dan
mengembalikan hasil dari purchase * taxRate. Ini berarti fungsi ini menghitung pajak
penjualan dengan mengalikan nominal pembelian dengan tarif pajak.
Latihan 4
Pemrograman C++
Nama Program : Menghitung pajak pembelian
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan variabel x sebagai integer.
3. Tampilkan pesan “Mencari nilai Faktorial”.
4. Tampilkan pesan "Masukkan Nilai n : ".
5. Baca nilai x dari pengguna.
6. Tampilkan pesan “faktorial x ! = hasil”, di mana x adalah nilai yang dimasukkan
oleh pengguna dan hasil adalah hasil faktorial dari x.
7. Selesai.
Flowchart :
Script program :
#include <iostream>
using namespace std;
int faktorial (int a)
{
if(a==1)
return 1;
else
Output Program :
Penjelasan Program :
Faktorial dari n adalah hasil perkalian dari semua bilangan bulat positif yang
kurang dari atau sama dengan n. Misalnya, faktorial dari 5 adalah 5 x 4 x 3 x 2 x 1 = 120.
-Baris kedua `using namespace std;` adalah untuk menyatakan bahwa kita
menggunakan ruang nama standar yang berisi fungsi-fungsi dan variabel-variabel yang
umum digunakan dalam C++.
- Menampilkan pesan "faktorial " dan nilai dari `x` dan " ! =" ke layar
menggunakan `cout`.
Variabel dan fungsi yang digunakan dalam kode C++ di atas adalah:
- Variabel `a` bertipe `int` yang merupakan parameter dari fungsi `faktorial`.
- Variabel `x` bertipe `int` yang merupakan variabel lokal dari fungsi `main` untuk
menyimpan nilai yang akan dihitung faktorialnya.
- Fungsi `main` yang tidak menerima parameter dan mengembalikan sebuah nilai
bertipe `int`. Fungsi ini merupakan fungsi utama yang akan dieksekusi oleh program dan
berinteraksi dengan pengguna untuk menghitung nilai faktorial.
Latihan 5
Pemrograman C++
Nama Program : Mencari nilai fibonacci
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan variabel x sebagai integer.
3. Tampilkan pesan “Mencari nilai fibonacci”.
4. Tampilkan pesan "Masukkan nilai n = ".
5. Baca nilai x dari pengguna.
6. Tampilkan pesan “Fibonacci x = hasil”, di mana x adalah nilai yang
dimasukkan oleh pengguna dan hasil adalah hasil dari fungsi fibo(x).
7. Selesai.
8. Berikut adalah penjelasan dari kode C++ yang Anda berikan:
Variabel fungsi:
a: Parameter fungsi fibo yang menerima nilai integer yang akan dicari nilai
fibonacci-nya.
Flowchart :
Script program :
#include <iostream>
using namespace std;
long fibo(long a)
{
if(a==1 || a==2)
return 1;
else
return fibo(a-1) + fibo(a-2);
}
Output Program :
Penjelasan Program :
Fibonacci adalah sebuah deret yang dimulai dari 1 dan 1, kemudian setiap suku berikutnya
adalah hasil penjumlahan dua suku sebelumnya. Misalnya, fibonacci dari 6 adalah 1, 1, 2,
3, 5, 8.
Variabel dan fungsi yang digunakan dalam kode C++ di atas adalah:
1. Mulai program.
2. Deklarasikan fungsi kali yang menerima dua integer sebagai parameter. Fungsi ini
akan mengalikan dua bilangan dan mengembalikan hasilnya.
3. Dalam fungsi main:
1. Deklarasikan tiga variabel integer n, r, dan hasil.
2. Cetak beberapa baris teks ke layar untuk memformat output.
3. Minta pengguna untuk memasukkan nilai n dan r dan simpan dalam
variabel n dan r masing-masing.
4. Panggil fungsi kali dengan n dan r sebagai argumen. Simpan nilai yang
dikembalikan oleh fungsi ini dalam variabel hasil.
5. Cetak "Hasil Kombinasi nCr adalah " dan nilai hasil ke layar.
4. Akhiri program.
Flowchart :
Script program :
#include <iostream>
using namespace std;
int kali(int a, int b);
return 0;
Output Program :
Penjelasan Program :
Kombinasi dari n dan r adalah cara memilih r objek dari n objek tanpa
memperhatikan urutan. Rumusnya adalah n! / (r! x (n-r)!), di mana n! adalah faktorial dari
n.
Variabel dan fungsi yang digunakan dalam kode C++ di atas adalah:
Variabel a dan b bertipe int yang merupakan parameter dari fungsi kali.
Variabel n, r, dan hasil bertipe int yang merupakan variabel lokal dari
fungsi main untuk menyimpan nilai yang akan dihitung kombinasinya dan
hasilnya.
Fungsi kali yang menerima dua parameter bertipe int dan mengembalikan sebuah
nilai bertipe int. Fungsi ini menghitung hasil perkalian dari dua parameter yang
diberikan.
Fungsi main yang tidak menerima parameter dan mengembalikan sebuah nilai
bertipe int. Fungsi ini merupakan fungsi utama yang akan dieksekusi oleh program
dan berinteraksi dengan pengguna untuk menghitung nilai kombinasi.
Praktikum 2
Pemrograman C++
Nama Program : Program Kombinasi Tabung
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan dan definisikan fungsi hitung_seli006Dut, hitung_volume,
dan hitung_luas.
3. Dalam fungsi main:
1. Deklarasikan variabel jari_jari, tinggi, luas, selimut, dan volume.
2. Tampilkan pesan ke pengguna untuk memasukkan nilai jari-jari dan tinggi
tabung.
3. Simpan input pengguna ke dalam variabel jari_jari dan tinggi.
4. Hitung selimut, volume, dan luas tabung dengan memanggil
fungsi hitung_selimut, hitung_volume, dan hitung_luas. Simpan hasilnya ke
dalam variabel selimut, volume, dan luas.
5. Tampilkan hasil perhitungan ke pengguna.
4. Akhiri program.
Flowchart :
Script program :
#include <iostream>
using namespace std;
int main()
{
int jari_jari, tinggi, luas, selimut, volume;
return 0;
}
Output Program :
Penjelasan Program :
Kode C++ di atas adalah untuk menghitung nilai selimut, volume, dan luas dari sebuah
tabung. Tabung adalah sebuah bangun ruang yang terdiri dari dua lingkaran sejajar yang
berjarak tertentu dan sebuah persegi panjang yang mengelilingi kedua lingkaran tersebut.
Rumus-rumus yang digunakan untuk menghitung nilai-nilai tersebut adalah:
Ketika program dijalankan, fungsi main akan dipanggil pertama kali oleh sistem
operasi.
Fungsi main akan menampilkan beberapa baris garis putus-putus dan judul-judul
ke layar dan meminta pengguna untuk memasukkan
nilai jari_jari dan tinggi tabung.
Fungsi main akan membaca nilai-nilai yang dimasukkan oleh pengguna dan
menyimpannya ke variabel-variabel yang sesuai.
Fungsi main akan memanggil fungsi-fungsi hitung_selimut, hitung_volume,
dan hitung_luas dengan memberikan nilai-nilai yang dibutuhkan sebagai parameter
dan menyimpan hasil-hasil yang dikembalikan oleh fungsi-fungsi tersebut ke
variabel-variabel yang sesuai.
Fungsi-fungsi hitung_selimut, hitung_volume, dan hitung_luas akan menghitung
nilai-nilai yang diminta dengan menggunakan rumus-rumus yang telah disebutkan
di atas dan mengembalikannya ke fungsi main dengan menggunakan
pernyataan return.
Fungsi main akan menampilkan beberapa baris garis putus-putus dan nilai-nilai
yang telah dihitung ke layar dan mengakhiri program dengan mengembalikan 0.
Tugas Rumah 1
Pemrograman C++
Nama Program : Menentukan Batas
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan dan definisikan fungsi judul, findMinMax, dan print.
3. Dalam fungsi main:
1. Panggil fungsi judul untuk mencetak judul program.
2. Deklarasikan dua variabel integer min dan max.
3. Panggil fungsi findMinMax dengan min dan max sebagai argumen. Fungsi
ini akan meminta pengguna untuk memasukkan sejumlah angka dan
menentukan angka terkecil dan terbesar.
4. Panggil fungsi print dengan min dan max sebagai argumen untuk mencetak
angka terkecil dan terbesar ke layar.
4. Akhiri program.
Flowchart :
Script program :
#include <iostream>
char option;
min = num;
max = num;
while (true) {
cout << "Apakah kamu mau memasukkan nomor lagi? (y/n) ";
cin >> option;
if (option == 'y') {
cout << "Masukkan sebuah angka: ";
cin >> num;
cout << "Nomor terkecil adalah : " << min << endl;
cout << "Nomor terbesar adalah : " << max << endl;
int main() {
judul();
findMinMax(min, max);
print(min, max);
return 0;
Output Program :
Penjelasan Program :
Program C++ di atas adalah untuk menentukan nilai terkecil dan terbesar dari
sejumlah angka yang dimasukkan oleh pengguna. Program ini menggunakan beberapa
fungsi untuk membagi-bagi tugas yang berbeda.
Ketika program dijalankan, fungsi main akan dipanggil pertama kali oleh sistem
operasi.
Fungsi main akan memanggil fungsi judul untuk menampilkan judul program ke
layar.
Fungsi main akan mendeklarasikan dua variabel min dan max untuk menyimpan
nilai terkecil dan terbesar yang akan dicari.
Fungsi main akan memanggil fungsi findMinMax dengan
memberikan min dan max sebagai parameter dan mengubah nilai mereka secara
langsung.
Fungsi findMinMax akan meminta pengguna untuk memasukkan sebuah angka
dan menyimpannya ke variabel num bertipe int.
Fungsi findMinMax akan menginisialisasi nilai min dan max dengan
nilai num yang pertama kali dimasukkan.
Fungsi findMinMax akan memasuki perulangan while yang akan berjalan selama
pengguna mau memasukkan angka lagi.
Fungsi findMinMax akan meminta pengguna untuk memilih apakah mau
memasukkan angka lagi atau tidak dengan menggunakan
variabel option bertipe char.
Jika pengguna memilih ‘y’, maka fungsi findMinMax akan meminta pengguna
untuk memasukkan angka lagi dan menyimpannya ke variabel num.
Fungsi findMinMax akan membandingkan nilai num dengan
nilai min dan max yang sudah ada. Jika num lebih kecil dari min, maka
fungsi findMinMax akan mengubah nilai min menjadi num. Jika num lebih besar
dari max, maka fungsi findMinMax akan mengubah nilai max menjadi num.
Jika pengguna memilih ‘n’, maka fungsi findMinMax akan keluar dari perulangan
dan mengembalikan kendali ke fungsi main.
Jika pengguna memilih opsi lain, maka fungsi findMinMax akan menampilkan
pesan “Opsi tidak valid!” dan tetap berada dalam perulangan.
Fungsi main akan memanggil fungsi print dengan
memberikan min dan max sebagai parameter dan menampilkan nilai mereka ke
layar.
Fungsi main akan mengakhiri program dengan mengembalikan 0.
Tugas Rumah 2
Pemrograman C++
Nama Program : Program standart deviasi
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Algoritma :
1. Mulai program.
2. Deklarasikan dan definisikan fungsi judul dan results.
3. Dalam fungsi main:
1. Panggil fungsi judul untuk mencetak judul program.
2. Panggil fungsi results untuk meminta pengguna memasukkan sejumlah
data, menghitung rata-rata dan simpangan baku, dan mencetak hasilnya ke
layar.
4. Akhiri program.
Flowchart :
Script program :
#include <iostream>
#include <cmath>
void judul()
{
cout << "----------------------------------------" << endl;
cout << " Modul Function " << endl;
cout << "----------------------------------------" << endl;
cout << " Program Standart Deviasi " << endl;
cout << "----------------------------------------" << endl;
}
void results()
{
int a = 0;
float aver, dev, data[100], sum = 0, b, totalb;
char option;
do
{
cout << "Masukkan Data : ";
cin >> data[a];
sum = sum + data[a];
a++;
cout << "Masukkan Data Lagi?(y/n) : ";
cin >> option;
} while (option == 'y');
aver = sum / a;
cout << " Nilai Rata-rata : " << aver << endl << endl;
Penjelasan Program :
1. Mulai program.
2. Deklarasikan dan definisikan fungsi judul, findModus, dan print.
3. Dalam fungsi main:
1. Panggil fungsi judul untuk mencetak judul program.
2. Deklarasikan vektor integer nums dan variabel integer modus.
3. Panggil fungsi findModus dengan nums dan modus sebagai argumen.
Fungsi ini akan meminta pengguna untuk memasukkan sejumlah angka dan
menentukan angka yang paling sering muncul.
4. Panggil fungsi print dengan modus sebagai argumen untuk mencetak angka
yang paling sering muncul ke layar.
4. Akhiri program.
Flowchart :
Script program :
#include <iostream>
#include <vector>
int main()
{
judul();
vector<int> nums;
int modus;
findModus(nums, modus);
print(modus);
return 0;
}
Output Program :
Penjelasan Program :
Kode C++ di atas adalah untuk menentukan angka yang paling sering diinputkan
oleh pengguna. Program ini menggunakan beberapa fungsi untuk membagi-bagi tugas
yang berbeda.
Variabel dan fungsi yang digunakan dalam kode C++ di atas adalah:
1. Dalam belajar pemrograman terlebih dahulu harus mengerti tentang sistem operasi,
algoritma dan flowchart.
2. Dalam penulisan script program harus diperhatikan dengan seksama, karena jika
terdapat kesalahan penulisan dalam script, maka program tersebut tidak dapat
dijalankan.
3. Memahami flowchart masing masing program, agar kita paham tentang alur
berjalannya suatu program. Sehingga mudah dalam proses identifikasi kesalahan
program.
4. Fungsi dalam C++ adalah blok kode yang dirancang untuk melakukan tugas
tertentu. Fungsi hanya dijalankan ketika dipanggil dalam program. Setiap program
C++ memiliki setidaknya satu fungsi, yaitu fungsi main(), dan semua program
dapat mendefinisikan fungsi tambahan1.
DAFTAR RUJUKAN
1. Tim Asisten Dosen. 2017. Modul 3 Operasi Kondisi. Malang : Universitas Negeri
Malang.
2. Tim Asisten Dosen. 2017. Modul 4 Perulangan (Looping). Malang : Universitas
Negeri Malang.
3. Tim Asisten Dosen. 2016. Modul 5 Array(Larik). Malang : Universitas Negeri
Malang.
4. Tim Asisten Dosen. 2016. Modul 6 Function. Malang : Universitas Negeri Malang.