230 likes | 484 Views
STRUKTUR PEMROGRAMAN DALAM R. INSTRUKSI PERULANGAN ( LOOP ). Instruksi perulangan adalah instruksi yang dapat mengulang pelaksanaan sederetan instruksi-instruksi lainnya berulang-ulang sesuai persyaratan yang ditetapkan. Struktur instruksi perulangan pada dasarnya terdiri atas :
E N D
STRUKTUR PEMROGRAMAN DALAM R INSTRUKSI PERULANGAN (LOOP) Instruksiperulanganadalahinstruksi yang dapatmengulangpelaksanaansederetaninstruksi-instruksilainnyaberulang-ulangsesuaipersyaratan yang ditetapkan. • Strukturinstruksiperulanganpadadasarnyaterdiriatas: • Syaratperulangan: suatusyarat yang harusdipenuhi agar perulangandapatterjadi. • Bagianperulangan: deretaninstruksi yang akandiulang-ulangpengerjaannya. • Pencacah (counter) perulangan: suatuvariabel yang nilainyaharusberubah agar dapatterjadidanpadaakhirnyamembatasibanyaknyaperulangan yang dapatdikerjakan. Ada 3 macambentukinstruksiperulangan yang biasaditemukandalam program, yaitufor, whiledanrepeat.
awal:akhir 1. Perulanganfor Bentukumum for (variabelin vektornilai) { instruksi_instruksi } Maknanyaadalahulangiinstruksi-instruksitersebutberdasarkanvariabelperulanganmulainilaiawalhingganilaiakhir. 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 Menggunakanfor() jikabanyaknyapengulangandiketahui 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] }
Perulanganwhile while (syarat) { Instruksi_instruksi } Maknanyaadalahulangiinstruksi-instruksiselamasyarat yang diberikanmasihterpenuhi Perhatikan: Harusadainstruksi yang berkaitandengansyaratsebelummasukkewhilesehinggasyaratiniterpenuhidanpengulanganbisadilaksanakan. Bilatidak, makainstruksi while tidakbisadijalankan. Adasatuinstruksidiantarainstruksi-instruksi yang diulang agar padasatusaatsyaratperulangantidakterpenuhi, sehinggaperulangbisaberhenti.
Contoh: Algoritmaberikutmenggunakan while untukmenampilkanangka 1 hingga 10 secaraberurutan. angka <- 1 while(angka < 11) { cat("angka= ",angka,"\n") angka <- angka + 1 } kondisiawal instruksiygbisamengubahsyaratsehinggatidakterpenuhi pd saatangka 11
Loop Menggunakan while() Banyaknyapengulangantidakdiketahui Diulang selagi masih terpenuhinya syarat Perintah R while (syarat) { Perintah-perintah R } Contoh: Hitungjumlahdaribilangan 1,2,3,… sampaijumlahnya > 1000 n <- 1 jumlah <- 0 while (jumlah <= 1000) { jumlah <- jumlah + n n <- n + 1 }
Misalkitainginmembuatbarisanbilangan Fibonacci yang kurangdari 300. Kita tidaktahuberapabanyaknyabilangan-bilanganini. Olehkarenaitukitataktahubagaimanamenghentikan loop menggunakanfor(),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 }
Perulanganrepeat danbreak repeat { Instruksi_instruksi if(syarat) break } Makna: ulangipelaksanaan instruksi_instruksi hinggasyaratterpenuhi. Perhatikan: Instruksi-instruksiakandiulanghanyaapabila syarat TIDAK terpenuhi, danketikasyaratterpenuhimakaperulanganberhenti. Instruksi-instruksidikerjakanterlebihdahulusebelumsyaratdiperiksa. Harusadasatuinstruksiygmendahului repeat agar syarattidakterpenuhisehinggaperulanganbisaberlangsung. Harusadainstruksi yang menyebabkansyaratterpenuhidanperulanganberhenti.
Contoh: Algoritmaberikutmenampilkan “Halo…” sebanyak 5 kali, denganmenggunakanrepeat. cacah <- 1 repeat { cat("Halo...","\n") cacah <- cacah + 1 if(cacah > 5) break } Contoh: Menggunakanrepeat untukmenghitungjumlah x1+x2+x3+…+xndan rata-ratanya 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(TRUE) + { # pengulangan yg sama + i <- i+4 + if (i > 10) break + } > i [1] 13 > i <- 1 > while (i <= 10) + { + i <- i+4 + } > 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. Ket: is.na(x) adalah TRUE jika x merupakan data missing (NA) > x <- c(3,1,5,NA,6,9,NA,2) > jml <- 0 > 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 denganPerintahif() Instruksipemilihanadalahinstruksi yang dipakaiuntukmemilihsatuaksidaribeberapakemungkinanaksiberdasarkansuatupersyaratan. Bentuk 1 kasus Tidak if (syarat) { aksi } Ya Apabilasyaratdipenuhi, maka “aksi” dijalankan. Contoh: Jika x lebihbesardr 100, makanilainyaakanditambah 5 if (x >100) { x <- x + 5 }
Bentuk 2 kasus if (syarat) { aksi_1 } else { aksi_2 } Apabilasyaratdipenuhi, maka “aksi_1” dijalankan. Tetapijikatidakterpenuhimaka “aksi_2” ygdijalankan.
Contoh: Jika x lebihbesardr 0, makaditampilkan “bilanganinipositif”. Selainituakanditampilkan “bilanganininegatif”. if (x >0) { cat("bilangan ini positif","\n") } else { cat("bilangan ini negatif","\n") }
BentukBersusun (Lebihdari 1 Syarat) if (syarat_1) { Aksi_1 } else { if (syarat_2) { Aksi_2 } else { Aksi_3 } }
Contoh: Penentuannilaiakhir: nilai <- function(skor) { if (skor >= 80) { nilai <- "A" } else { if (skor >= 60) { nilai <- "B" } else { nilai <- "C" } } return(nilai) }