1 / 31

ALGORITME & PEMROGRAMAN

ALGORITME & PEMROGRAMAN. Abdul Kudus, SSi ., MSi ., PhD. Senin, 6.30 – 9.00 Rabu, 12.00 – 14.00. STRUKTUR PEMROGRAMAN DALAM R. INSTRUKSI PERULANGAN ( LOOP ).

yori
Télécharger la présentation

ALGORITME & PEMROGRAMAN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALGORITME & PEMROGRAMAN Abdul Kudus, SSi., MSi., PhD. Senin, 6.30 – 9.00 Rabu, 12.00 – 14.00

  2. 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.

  3. awal:akhir 1. Perulanganfor Bentukumum for (variabelin vektornilai) { instruksi_instruksi } Maknanyaadalahulangiinstruksi-instruksitersebutberdasarkanvariabelperulanganmulainilaiawalhingganilaiakhir. Contoh: for (i in 1:10) { cat("Halo...","\n") }

  4. 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")

  5. 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) }

  6. Fibo <- rep(0,times=12) Fibo[1] <- 1 Fibo[2] <- 1 for (i in 3:12) { Fibo[i] <- Fibo[i-2] + Fibo[i-1] }

  7. Perulanganwhile while (syarat) { Instruksi_instruksi } Maknanyaadalahulangiinstruksi-instruksiselamasyarat yang diberikanmasihterpenuhi Perhatikan: Harusadainstruksi yang berkaitandengansyaratsebelummasukkewhilesehinggasyaratiniterpenuhidanpengulanganbisadilaksanakan. Bilatidak, makainstruksi while tidakbisadijalankan. Adasatuinstruksidiantarainstruksi-instruksi yang diulang agar padasatusaatsyaratperulangantidakterpenuhi, sehinggaperulangbisaberhenti.

  8. 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

  9. Loop Menggunakan while() Banyaknyapengulangantidakdiketahui Diulang selagi masih terpenuhinyasyarat 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 }

  10. 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 }

  11. 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.

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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 }

  17. Bentuk 2 kasus if (syarat) { aksi_1 } else { aksi_2 } Apabilasyaratdipenuhi, maka “aksi_1” dijalankan. Tetapijikatidakterpenuhimaka “aksi_2” ygdijalankan.

  18. Contoh: Jika x lebihbesardr 0, makaditampilkan “bilanganinipositif”. Selainituakanditampilkan “bilanganininegatif”. if (x >0) { cat("bilangan ini positif","\n") } else { cat("bilangan ini negatif","\n") }

  19. BentukBersusun (Lebihdari 1 Syarat) if (syarat_1) { Aksi_1 } else { if (syarat_2) { Aksi_2 } else { Aksi_3 } }

  20. Contoh: Penentuannilaiakhir: nilai <- function(skor) { if (skor >= 80) { nilai <- "A" } else { if (skor >= 60) { nilai <- "B" } else { nilai <- "C" } } return(nilai) }

  21. Terjemahkan ke dalam R !

  22. Operator Aritmetik dan Boolean (Logika) serta Nilainya

  23. > x <- c(TRUE,FALSE,TRUE) > y <- c(TRUE,TRUE,FALSE) > x & y [1] TRUE FALSE FALSE > x[1] && y[1] [1] TRUE > x && y # hanya memeriksa unsur pertama [1] TRUE > if (x[1] && y[1]) print("keduanya TRUE") [1] "keduanya TRUE" > if (x && y) print("keduanya TRUE") [1] "keduanya TRUE" > if (x & y) print("keduanya TRUE") [1] "keduanya TRUE" Warning message: In if (x & y) print("keduanya TRUE") : the condition has length > 1 and only the first element will be used

  24. > 1 < 2 [1] TRUE > (1 < 2) * (3 < 4) [1] 1 > (1 < 2) * (3 < 4) * (5 < 1) [1] 0 > (1 < 2) == TRUE [1] TRUE > (1 < 2) == 1 [1] TRUE

  25. MembuatFungsi R Sendiri • Kita bisamembuatfungsibaruuntuktujuantertentu, misalnyauntukmenghitungrumustertentu yang belumadadalamfungsibawaandari R. • Fungsimempunyai input dan output • Semuavariabel yang dibuatdidalamsuatufungsihanyadikenalsecara internal untukfungsiitusaja. BentukUmumFungsidalam R nama_fungsi<- function(input) { badan_dari_fungsi (perintah-perintah) return(output) }

  26. Contoh: Berikutiniadalahfungsiuntukmenghitungpangkattigadarisuatu input bilangan. > kubik<-function(x) + { +y <- x^3 +return(y) + } nama_fungsi input perintah R output Jalankanfungsi yang barutersebut. > kubik(2) [1] 8

  27. Atauinputnyaberupavektor. > dataku <- 1:5 > kubik(dataku) [1] 1 8 27 64 125 > kubik(dataku/2) [1] 0.125 1.000 3.375 8.000 15.625 Bisajugadipanggilsecararekursif. > kubik(kubik(dataku)) [1] 1 512 19683 262144 1953125

  28. Suatufungsibisapunyalebihdarisatu input. > bagi <- function(x,y) + { + z <- x/y + return(z) + } Contoh: > bagi(15,3) [1] 5

  29. Nilai Default bagi Input (Argumen) suatu Fungsi Ingat lagi contoh fungsi read.table utk membaca eksternal data. c:/ujian.txt input header=TRUE menunjukkan bhw file data mempunyai baris judul, sehingga datanya mulai baris kedua. "Exam 1" "Exam 2" Quiz 2.0 3.3 4.0 3.3 2.0 3.7 4.0 4.0 4.0 2.3 0.0 3.3 2.3 1.0 3.3 3.3 3.7 4.0 > dataujian <- read.table("c:/ujian.txt",header=TRUE) > head(dataujian) Exam.1 Exam.2 Quiz 1 2.0 3.3 4.0 2 3.3 2.0 3.7 3 4.0 4.0 4.0 4 2.3 0.0 3.3 5 2.3 1.0 3.3 6 3.3 3.7 4.0

  30. lihat input (argumen) lengkap dari read.table > read.table function (file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#", allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown") { if (is.character(file)) { file <- if (nzchar(fileEncoding)) file(file, "rt", encoding = fileEncoding) else file(file, "rt") on.exit(close(file)) . . . dan seterusnya

  31. Output dari suatu Fungsi oddcount <- function(x) { k <- 0 for (n in x) { if (n %% 2 == 1) k <- k+1 } return(k) } oddcount <- function(x) { k <- 0 for (n in x) { if (n %% 2 == 1) k <- k+1 } k } • Output adalah: • obyek yg di-return • obyek pada perintah terakhir

More Related