Pelatihan R tambahan

Download Report

Transcript Pelatihan R tambahan

STRUKTUR PEMROGRAMAN DALAM R
INSTRUKSI PERULANGAN (LOOP)
Instruksi perulangan adalah instruksi yang dapat mengulang
pelaksanaan sederetan instruksi-instruksi lainnya berulangulang sesuai persyaratan yang ditetapkan.
Struktur instruksi perulangan pada dasarnya terdiri atas:
• Syarat perulangan: suatu syarat yang harus dipenuhi agar
perulangan dapat terjadi.
• Bagian perulangan: deretan instruksi yang akan diulang-ulang
pengerjaannya.
• Pencacah (counter) perulangan: suatu variabel yang nilainya
harus berubah agar dapat terjadi dan pada akhirnya membatasi
banyaknya perulangan yang dapat dikerjakan.
Ada 3 macam bentuk instruksi perulangan yang biasa ditemukan
dalam program, yaitu for, while dan repeat.
1. Perulangan for
Bentuk umum
awal:akhir
for (variabel in vektornilai)
{
instruksi_instruksi
}
Maknanya adalah ulangi instruksi-instruksi tersebut berdasarkan
variabel perulangan mulai nilai awal hingga nilai akhir.
Contoh:
for (i in 1:10)
{
cat("Halo...","\n")
}
x <- c(4,1,5,7,2,3)
n <- length(x)
akumulasi <- 0
for(i in 1:n)
{
akumulasi <- akumulasi + x[i]
}
rata <- akumulasi/n
for(cacah in 10:1)
{
cat(cacah,"\n")
}
cat("lariiii...","\n")
Loop Menggunakan for()
jika banyaknya pengulangan diketahui
Perintah R
for (i in nilai_nilai_i)
{
Perintah-perintah R
}
Contoh
for (i in 1:10)
{
print(i)
}
for (i in c(3,2,9,6))
{
print(i^2)
}
angkutan <- c("mobil", "bis", "kereta","sepeda")
for (kendaraan in angkutan)
{
print(kendaraan)
}
Fibo <- rep(0,times=12)
Fibo[1] <- 1
Fibo[2] <- 1
for (i in 3:12)
{
Fibo[i] <- Fibo[i-2] + Fibo[i-1]
}
Perulangan while
while (syarat)
{
Instruksi_instruksi
}
Maknanya adalah ulangi instruksi-instruksi selama syarat yang
diberikan masih terpenuhi
Perhatikan:
1. Harus ada instruksi yang berkaitan dengan syarat sebelum masuk
ke while sehingga syarat ini terpenuhi dan pengulangan bisa
dilaksanakan. Bila tidak, maka instruksi while tidak bisa dijalankan.
2. Ada satu instruksi di antara instruksi-instruksi yang diulang agar
pada satu saat syarat perulangan tidak terpenuhi, sehingga
perulang bisa berhenti.
Contoh: Algoritma berikut menggunakan while untuk
menampilkan angka 1 hingga 10 secara berurutan.
angka <- 1
while(angka < 11)
{
cat("angka= ",angka,"\n")
angka <- angka + 1
}
kondisi awal
instruksi yg bisa
mengubah syarat
sehingga tidak
terpenuhi pd saat
angka  11
Loop Menggunakan while()
Banyaknya pengulangan tidak diketahui Diulang selagi masih terpenuhinya syarat
Perintah R
while (syarat)
{
Perintah-perintah R
}
Contoh:
Hitung jumlah dari bilangan 1,2,3,… sampai jumlahnya > 1000
n <- 1
jumlah <- 0
while (jumlah <= 1000)
{
jumlah <- jumlah + n
n <- n + 1
}
Misal kita ingin membuat barisan bilangan Fibonacci yang kurang
dari 300. Kita tidak tahu berapa banyaknya bilangan-bilangan ini.
Oleh karena itu kita tak tahu bagaimana menghentikan loop
menggunakan for(), tetapi loop while() bisa.
Fib1 <- 1
Fib2 <- 1
Fibo <- c(Fib1,Fib2)
while (Fib2 < 300)
{
Fibo <- c(Fibo, Fib2)
Fib2.lama <- Fib2
Fib2 <- Fib1 + Fib2
Fib1 <- Fib2.lama
}
Perulangan repeat dan break
repeat
{
Instruksi_instruksi
if(syarat) break
}
Makna: ulangi pelaksanaan instruksi_instruksi hingga syarat terpenuhi.
Perhatikan:
1. Instruksi-instruksi akan diulang hanya apabila syarat TIDAK
terpenuhi, dan ketika syarat terpenuhi maka perulangan berhenti.
2. Instruksi-instruksi dikerjakan terlebih dahulu sebelum syarat
diperiksa.
3. Harus ada satu instruksi yg mendahului repeat agar syarat tidak
terpenuhi sehingga perulangan bisa berlangsung.
4. Harus ada instruksi yang menyebabkan syarat terpenuhi dan
perulangan berhenti.
Contoh: Algoritma berikut menampilkan “Halo…” sebanyak 5 kali,
dengan menggunakan repeat.
cacah <- 1
Contoh: Menggunakan
repeat
repeat untuk
{
menghitung jumlah
cat("Halo...","\n")
x1+x2+x3+…+xn dan
cacah <- cacah + 1
rata-ratanya
if(cacah > 5) break
x <- c(4,1,5,7,2,3)
}
n <- length(x)
akumulasi <- 0
i <- 1
repeat
{
akumulasi <- akumulasi + x[i]
i <- i + 1
if (i > n) break
}
rata <- akumulasi/n
Break juga bisa dipakai di dalam pengulangan while selain di
dalam pengulangan repeat
> i <- 1
> while (i <= 10)
+ {
+
i <- i+4
+ }
> i
[1] 13
> i <- 1
> while(TRUE)
+ { # pengulangan yg sama
+
i <- i+4
+
if (i > 10) break
+ }
> i
[1] 13
> i <- 1
> repeat
+ { # pengulangan yg sama juga
+
i <- i+4
+
if (i > 10) break
+ }
> i
[1] 13
break digunakan utk
keluar dr
pengulangan (loop)
break juga dpt
digunakan dlm
pengulangan for
Perintah next akan melewatkan perintah di bawahnya dan langsung
melompat pada iterasi berikutnya.
> x <- c(3,1,5,NA,6,9,NA,2) Ket: is.na(x) adalah
TRUE jika x merupakan
> jml <- 0
data missing (NA)
> for (unsur in x)
+ {
+
if (is.na(unsur)) next
+
jml <- jml + unsur
+ }
> jml
[1] 26
Pengulangan terhadap himpunan bukan vektor
Perintah get() akan menjadikan karakter/string dr suatu obyek
sebagai input, dan akan mengeluarkan obyeknya sebagai outputnya.
> P <- matrix(c(2,4,1,3),2,2)
> Q <- matrix(c(1,4,2,3),2,2)
> for (M in c("P","Q"))
+ {
+
matrikku <- get(M)
+
print(det(matrikku))
+ }
[1] 2
[1] -5
INSTRUKSI PEMILIHAN dengan Perintah if()
Instruksi pemilihan adalah instruksi yang dipakai untuk memilih
satu aksi dari beberapa kemungkinan aksi berdasarkan suatu
persyaratan.
Tidak
Bentuk 1 kasus
if (syarat)
{
aksi
}
Ya
Apabila syarat dipenuhi, maka “aksi” dijalankan.
Contoh: Jika x lebih besar dr 100, maka nilainya akan ditambah 5
if (x >100)
{
x <- x + 5
}
Bentuk 2 kasus
if (syarat)
{
aksi_1
} else
{
aksi_2
}
Apabila syarat dipenuhi, maka “aksi_1” dijalankan. Tetapi jika tidak
terpenuhi maka “aksi_2” yg dijalankan.
Contoh: Jika x lebih besar dr 0, maka ditampilkan “bilangan ini
positif”. Selain itu akan ditampilkan “bilangan ini negatif”.
if (x >0)
{
cat("bilangan ini positif","\n")
} else
{
cat("bilangan ini negatif","\n")
}
Bentuk Bersusun (Lebih dari 1 Syarat)
if (syarat_1)
{
Aksi_1
} else
{
if (syarat_2)
{
Aksi_2
} else
{
Aksi_3
}
}
Contoh:
Penentuan nilai akhir:
A , jika skor  80

nilai  B , jika 60  skor  80
C , jika skor  60

nilai <- function(skor)
{
if (skor >= 80)
{
nilai <- "A"
} else
{
if (skor >= 60)
{
nilai <- "B"
} else
{
nilai <- "C"
}
}
return(nilai)
}
Terjemahkan ke dalam R !