Algoritma & Struktur Data
~ Fungsi ~
Nb: Untuk segala bentuk diskusi, kritik dan saran mengenai materi silahkan hubungi admin!
Kontak | Konsultasi & Diskusi ke : \(\downarrow\) |
dsciencelabs@outlook.com | |
https://www.instagram.com/dsciencelabs/ | |
RPubs | https://rpubs.com/dsciencelabs/ |
Github | https://github.com/dsciencelabs/ |
Telegram | @dsciencelabs |
Apa itu Fungsi ?
Suatu fungsi (function) dalam lingkungan pemrograman adalah satu set instruksi untuk melaksanakan tugas-tugas tertentu. Seorang programmer membangun sebuah fungsi untuk menghindari pengulangan tugas yang sama atau mengurangi kompleksitas.
Dari gambar diata diperlihatkan bahwa:
- Jika \(x=5\) adalah masukan (input)
- Diberikan instruksi (fungsi) \(f(x)=x+3\), yang disebut badan progam (body)
- Maka \(y=8\) aadalah keluaran (output)
Sehingga, komponen yang harus terkandung didalam fungsi adalah:
- \(f\) adalah
Nama Fungsi
yang digunakan untuk menjalan fungsi (perintah) pada program tertentu. - \(x\) adalah
Masukan
, tetapi mungkin saja tidak ada argumen. - \(x+3\) adalah
Badan Program
yang mendefinisikan fungsi yang dilakukan. Keluaran
adalah perintah pengembalian satu atau lebih nilai dan mungkin saja tidak memuat pengembalian nilai.
Dalam berbagai kesempatan, programer diharapkan untuk mampu membangun fungsi (algoritma) sendiri dikarenakan tugas tertentu tidak dapat diselesaikan dengan fungsi yang sudah ada atau tidak ditemukannya fungsi dalam bahasa pemoragraman yang sedang digunakan. Pembentukan fungsi ini akan dibagi menjadi dua, yaitu fungsi dengan satu-argumen dan fungsi dengan multi-argument.
Fungsi Satu Argumen
Fungsi menerima nilai dan mengembalikan kuadrat dari suatu nilai. Berikut ini, dilampirkan struktur penulisan suatu fungsi dengan satu argumen secara garis besar:
R
nama.fungsi <- function(argumen)
{
perhitungan perintah yang dilakukan terhadap argumen
beberapa kode lain
}
Python
def nama.fungsi(argumen):
keluaran = perintah yang dilakukan
return print(keluaran)
Nilai Kuadrat
Jika diberikan suatu vector \(x=1,2,3,\cdots, n\), maka nilai \(x^2\) dapat dihitung dengan fungsi berikut;
R
=c(1:5) # nilai x awal (1,2,3,4,5)
masukan
<- function(x) # nama fungsi dan argumen
x_kuadrat # pembukaan fungsi
{ *x # perintah yang dilakukan
x# penutupan fungsi
}
x_kuadrat(masukan) # menggunakan fungsi
cat("Hasil kuadrat:",x_kuadrat(masukan)) # menggunakan fungsi
atau,
=c(1:5) # nilai x awal (1,2,3,4,5)
masukan
<- function(x) # nama fungsi dan argumen
x_kuadrat # pembukaan fungsi
{ = x^2 # perintah yang dilakukan
keluaran return(cat("Hasil kuadrat:",keluaran)) # print hasil dengan komentar
# penutupan fungsi
}
x_kuadrat(masukan) # menggunakan fungsi
Python
import numpy as np # paket dasar untuk komputasi
=np.arange(1, 6) # nilai x awal (1,2,3,4,5)
masukan
def x_kuadrat(x): # nama fungsi dan argumen
= x*x # perintah yang dilakukan
keluaran return print(keluaran) # print hasil
# menggunakan fungsi x_kuadrat(masukan)
atau,
import numpy as np # paket dasar untuk komputasi
=np.arange(1, 6) # nilai x awal (1,2,3,4,5)
masukan
def x_kuadrat(x): # nama fungsi dan argumen
= x**2 # perintah yang dilakukan
keluaran return print("Hasil kuadrat:",keluaran) # print hasil dengan komentar
# menggunakan fungsi x_kuadrat(masukan)
Nilai Akar
Jika diberikan suatu vector adalah kelipatan 9 dari 3 sampai 27, maka nilai \(\sqrt[3]{x}\) dapat dihitung dengan fungsi berikut;
R
= seq(from=3, to=27, by = 9) # kelipatan 9 dari 3 sampai 27
masukan
<- function(x) # nama fungsi dan argumen
akar # pembukaan fungsi
{ ^(1/3) # perintah yang dilakukan
x# penutupan fungsi
}
akar(masukan) # menggunakan fungsi
Python
import numpy as np # paket dasar untuk komputasi
= np.arange(3, 27, 9) # kelipatan 9 dari 3 sampai 27
masukan
def akar(x): # nama fungsi dan argumen
= x**(1/3) # perintah yang dilakukan
keluaran return print("Hasil kuadrat:",keluaran) # print hasil dengan komentar
# menggunakan fungsi akar(masukan)
Nilai Rerata
Jika diberikan suatu vector adalah 100 sampel acak dengan rata-rata 160 dan standar deviasi 15, maka nilai rata-ratanya \(\bar{x}\) dapat dihitung dengan fungsi berikut;
R
= rnorm(100, mean=160, sd=15) # 100 sampel,mean=160, dan sd=15
masukan
<- function(x) # nama fungsi dan argumen
rerata# pembukaan fungsi
{ sum(x)/length(x) # perintah yang dilakukan
# penutupan fungsi
}
rerata(masukan) # menggunakan fungsi
Python
import numpy as np # paket dasar untuk komputasi
= np.random.normal(160, 15, 100) # 100 sampel,mean=160,dan sd=15
masukan
def rerata(x): # nama fungsi dan argumen
return sum(x)/len(x) # perintah yang dilakukan
# menggunakan fungsi rerata(masukan)
Konversi Persen
Misalkan anda ingin menyajikan angka pecahan sebagai nilai persentase, dibulatkan dengan baik ke dalam dua digit desimal. Berikut cara mencapainya:
- Kalikan bilangan pecahan dengan 100.
- Bulatkan hasilnya ke satu tempat desimal: Anda dapat menggunakan fungsi
round()
untuk melakukan ini. - Tempelkan tanda persentase setelah angka yang dibulatkan dengan mengunakan fungsi
paste()
- Cetak hasilnya: dengan menggunakan
print()
.
R
Sebenarnya, akan sangat mudah menerjemahkan langkah-langkah ini ke dalam skrip R berikut ini:
<- c(0.8765, 0.4321, 0.1234, 0.05678)
x <- round(x*100, digits = 2)
persen <- paste(persen, "%")
a print(a)
Untuk membuat skrip ini menjadi sebuah fungsi, Anda perlu melakukan beberapa hal berikut:
<- c(0.8765, 0.4321, 0.1234, 0.05678)
x
<- function(x)
persen
{<- round(x * 100, digits = 2)
persen_2digit <- paste(persen_2digit, "%")
keluaran return(keluaran)
}
persen(x)
Jika anda menyimpan skrip ini sebagai file .R
: misalnya, addPercent.R
ke komputer/PC anda dalam sebuah folder. Kemudian, kapapun anda dapat memanggil skrip ini di konsol dengan perintah berikut:
source('Fungsi/persen.R') # pastikan direktori anda benar
persen(x) # menggunakan fungsi anda
Catatan: Sebenarnya sudah ada library yang dapat anda gunakan untuk mengubah suatu array di R yaitu:
library(scales)
percent(x,accuracy=0.01)
Python
Tugas: Selesaikan contoh ini degan Python
Fungsi Multi Argumen
Kita dapat menulis fungsi dengan lebih dari satu argumen. Berikut Ini adalah fungsi langsung mengalikan dua variabel.
R
nama.fungsi <- function(argumen1, argumen2,...., argumen_n)
{
perhitungan perintah yang dilakukan terhadap argumen
beberapa kode lain
}
Python
def nama.fungsi(argumen1, argumen2,...., argumen_n):
keluaran = perintah yang dilakukan
return print(keluaran)
Luas & Keliling
Misalkan anda ingin menghitung luas dan keliling suatu persegi (panjang), diketahui panjang \(p\) dan lebarnya \(l\). Berikut ini diperlihatkan penyelesaian dengan menggunakan fungsi:
R
<- function(p,l) # nama fungsi dan argumen
luas_keliling # pembukaan fungsi
{ = p*l # menghitung luas
luas= 2*(p+l) # menghitung keliling
kelilingreturn (cat(c("Luas:",luas, "\n",
"Keliling:",keliling)))
# penutupan fungsi
} luas_keliling(8,6) # menggunakan fungsi
Python
def luas_keliling(p,l): # nama fungsi dan argumen
= p*l # menghitung luas
luas= 2*(p +l) # menghitung keliling
kelilingreturn (print("Luas:",luas, "\n",
"Keliling:",keliling))
8,6) # menggunakan fungsi luas_keliling(
Luas, Keliling dan Volume
Misalkan anda ingin menghitung luas, keliling dan volume suatu balok (kubus), diketahui panjang \(p\), lebarnya \(l\), dan tinggi \(t\). Berikut ini diperlihatkan penyelesaian dengan menggunakan fungsi:
R
<- function(p,l,t) # nama fungsi dan argumen
lukelvol # pembukaan fungsi
{ = 2*((p*l)+(p*l)+(t*l)) # menghitung luas permukan
luas_permukaan = 2*(p +l) # menghitung keliling rusuk
keliling = p*l*t # menghitung volume balok (kubus)
volume return (cat(c("Luas Permukaan:",
sep = "\n",
luas_permukaan, "Keliling:",keliling,sep="\n",
"Volume:",volume)))
# penutupan fungsi
} lukelvol(6,7,8) # menggunakan fungsi
Python
def lukelvol(p,l,t): # nama fungsi dan argumen
= 2*((p*l)+(p*l)+(t*l)) # menghitung luas permukan
luas = 2*(p +l) # menghitung keliling rusuk
keliling = p*l*t # menghitung volume balok (kubus)
volumereturn print("Luas:",luas, "\n",
"Keliling:",keliling,"\n",
"Volume:",volume)
6,7,8) # menggunakan fungsi lukelvol(
Rerata Frekuensi
Jika diberikan data berfrekensi sebagai berikut:
Tinggi Badan | Frekuensi |
---|---|
150 | 16 |
155 | 23 |
160 | 28 |
165 | 40 |
170 | 39 |
175 | 22 |
180 | 9 |
Maka cara menghitung reratanya dengan bantuan fungsi adalah sebagai berikut:
R
<-seq(150,180,5) # masukan/argumen 1
Tinggi<-c(15,23,28,40,39,22,9) # masukan/argumen 2
Frek
<- function(x,frek) # nama fungsi dan argumen
rerata_frek # pembukaan fungsi
{ =sum(x*frek)/length(frek) # menghitung rerata frekuensinya
keluaranreturn(cat("Reratanya:",keluaran)) # print hasil dengan komentar
# penutupan fungsi
}
rerata_frek(Tinggi,Frek) # menggunakan fungsi
Python
import numpy as np # paket dasar untuk komputasi
= np.arange(150,185,5) # masukan/argumen 1
Tinggi = [15,23,28,40,39,22,9] # masukan/argumen 2
Frek
def rerata_frek(x,frek): # nama fungsi dan argumen
=sum(x*frek)/len(frek) # menghitung rerata frekuensinya
keluaranreturn print("Reratanya:", keluaran) # print hasil dengan komentar
# menggunakan fungsi rerata_frek(Tinggi,Frek)
Fungsi untuk Data Frame
Normalisasi
Seperti yang telah saya sebutkan sebelumnya, ilmuwan data perlu melakukan banyak tugas berulang. Sebagian besar waktu, kami menyalin dan menempelkan potongan kode berulang-ulang. Contoh lain, normalisasi suatu variabel sangat disarankan sebelum kita menjalankan algoritma pembelajaran mesin. Rumus untuk menormalkan variabel adalah:
\[\text{Normalisasi}={x-x_{min} \over x_{max} - x_{min}}\]
R
Mari kita buat kerangka data seperti yang telah kita pelajari di dasar-dasar R di bagian terakhir.
set.seed(123) # statik random set
= rnorm(100, 5, 1) # 100 bilangan acak normal
a = rnorm(100, 5, 1) # 100 bilangan acak normal
b = rnorm(100, 5, 1) # 100 bilangan acak normal
c <- data.frame(a,b,c) # buat data frame
df# mencetak hasil data frame
df typeof(df)
Kita sudah mengetahui cara menggunakan fungsi min()
dan max()
di R. Oleh karena itu kita dapat menggunakan rumus normalisasi yang kita miliki di atas untuk mendapatkan nilai normalisasi df
sebagai berikut:
<- data.frame(
df.norm a = (df$a -min(df$a))/(max(df$a)-min(df$a)),
b = (df$b -min(df$b))/(max(df$b)-min(df$b)),
c = (df$c -min(df$c))/(max(df$c)-min(df$c))
) df.norm
Namun, metode ini rentan terhadap kesalahan penulisan koding. Kita bisa menyalin koding yang hampir serupa, tetapi mungkin saja lupa mengubah variabel yang perlu diganti. Oleh karena itu sebaiknya, kita dapat pertimbangkan penggunaan suatu fungsi untuk melakukannya:
<- function(x){
normalize <- (x-min(x))/(max(x)-min(x))
norm return(norm)
}
= normalize(df)
df.norm df.norm
Python
Tugas: Selesaikan contoh ini degan Python