Download - ALGORITME & PEMROGRAMAN
![Page 1: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/1.jpg)
ALGORITME & PEMROGRAMAN
Abdul Kudus, SSi., MSi., PhD.Senin, 6.30 – 9.00
Rabu, 12.00 – 14.00
![Page 2: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/2.jpg)
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:• 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.
STRUKTUR PEMROGRAMAN DALAM R
![Page 3: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/3.jpg)
1. Perulangan forBentuk umum
for (variabel in vektornilai){ instruksi_instruksi}
awal:akhir
Maknanya adalah ulangi instruksi-instruksi tersebut berdasarkan variabel perulangan mulai nilai awal hingga nilai akhir.
for (i in 1:10){ cat("Halo...","\n")}
Contoh:
![Page 4: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/4.jpg)
x <- c(4,1,5,7,2,3)n <- length(x)akumulasi <- 0for(i in 1:n){ akumulasi <- akumulasi + x[i] }rata <- akumulasi/n
for(cacah in 10:1){ cat(cacah,"\n")}cat("lariiii...","\n")
![Page 5: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/5.jpg)
Loop Menggunakan for()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)}
jika banyaknya pengulangan diketahui
![Page 6: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/6.jpg)
Fibo <- rep(0,times=12)Fibo[1] <- 1Fibo[2] <- 1for (i in 3:12){ Fibo[i] <- Fibo[i-2] + Fibo[i-1]}
![Page 7: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/7.jpg)
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.
![Page 8: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/8.jpg)
Contoh: Algoritma berikut menggunakan while untuk menampilkan angka 1 hingga 10 secara berurutan.
angka <- 1while(angka < 11){ cat("angka= ",angka,"\n") angka <- angka + 1}
kondisi awal
instruksi yg bisa mengubah syarat sehingga tidak terpenuhi pd saat angka 11
![Page 9: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/9.jpg)
Loop Menggunakan while()
Perintah Rwhile (syarat){ Perintah-perintah R}
Contoh: Hitung jumlah dari bilangan 1,2,3,… sampai jumlahnya > 1000
n <- 1jumlah <- 0while (jumlah <= 1000){ jumlah <- jumlah + n n <- n + 1}
Banyaknya pengulangan tidak diketahui Diulang selagi masih terpenuhinya syarat
![Page 10: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/10.jpg)
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 <- 1Fib2 <- 1Fibo <- c(Fib1,Fib2)while (Fib2 < 300){ Fibo <- c(Fibo, Fib2) Fib2.lama <- Fib2 Fib2 <- Fib1 + Fib2 Fib1 <- Fib2.lama}
![Page 11: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/11.jpg)
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.
![Page 12: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/12.jpg)
Contoh: Algoritma berikut menampilkan “Halo…” sebanyak 5 kali, dengan menggunakan repeat.
cacah <- 1repeat{ cat("Halo...","\n") cacah <- cacah + 1 if(cacah > 5) break}
Contoh: Menggunakan repeat untuk menghitung jumlah x1+x2+x3+…+xn dan rata-ratanya
x <- c(4,1,5,7,2,3)n <- length(x)akumulasi <- 0i <- 1repeat{ akumulasi <- akumulasi + x[i] i <- i + 1 if (i > n) break}rata <- akumulasi/n
![Page 13: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/13.jpg)
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
![Page 14: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/14.jpg)
Perintah next akan melewatkan perintah di bawahnya dan langsung melompat pada iterasi berikutnya.
> 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
Ket: is.na(x) adalah TRUE jika x merupakan data missing (NA)
![Page 15: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/15.jpg)
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
![Page 16: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/16.jpg)
INSTRUKSI PEMILIHAN dengan Perintah if()
Instruksi pemilihan adalah instruksi yang dipakai untuk memilih satu aksi dari beberapa kemungkinan aksi berdasarkan suatu persyaratan.
Bentuk 1 kasus
if (syarat){ aksi}
Apabila syarat dipenuhi, maka “aksi” dijalankan.Contoh: Jika x lebih besar dr 100, maka nilainya akan ditambah 5
if (x >100) { x <- x + 5 }
Ya
Tidak
![Page 17: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/17.jpg)
Bentuk 2 kasus
Apabila syarat dipenuhi, maka “aksi_1” dijalankan. Tetapi jika tidak terpenuhi maka “aksi_2” yg dijalankan.
if (syarat){ aksi_1} else { aksi_2}
![Page 18: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/18.jpg)
if (x >0) { cat("bilangan ini positif","\n") } else { cat("bilangan ini negatif","\n") }
Contoh: Jika x lebih besar dr 0, maka ditampilkan “bilangan ini positif”. Selain itu akan ditampilkan “bilangan ini negatif”.
![Page 19: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/19.jpg)
Bentuk Bersusun (Lebih dari 1 Syarat)
if (syarat_1) { Aksi_1 } else { if (syarat_2) { Aksi_2 } else { Aksi_3 } }
![Page 20: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/20.jpg)
Contoh:Penentuan nilai akhir:
60 skor jika ,C
80 skor 60 jika ,B
80 skor jika ,A
nilai
nilai <- function(skor){ if (skor >= 80) { nilai <- "A" } else { if (skor >= 60) { nilai <- "B" } else { nilai <- "C" } } return(nilai) }
![Page 21: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/21.jpg)
Terjemahkan ke dalam R !
![Page 22: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/22.jpg)
Operator Aritmetik dan Boolean (Logika) serta Nilainya
![Page 23: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/23.jpg)
> 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
![Page 24: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/24.jpg)
> 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
![Page 25: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/25.jpg)
Membuat Fungsi R Sendiri• Kita bisa membuat fungsi baru untuk tujuan tertentu, misalnya
untuk menghitung rumus tertentu yang belum ada dalam fungsi bawaan dari R.
• Fungsi mempunyai input dan output
• Semua variabel yang dibuat di dalam suatu fungsi hanya dikenal secara internal untuk fungsi itu saja.
Bentuk Umum Fungsi dalam R
nama_fungsi <- function(input) { badan_dari_fungsi (perintah-perintah) return(output) }
![Page 26: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/26.jpg)
Contoh: Berikut ini adalah fungsi untuk menghitung pangkat tiga dari suatu input bilangan.
> kubik <- function(x)+ {+ y <- x^3+ return(y)+ }
nama_fungsiinput
perintah R
output
Jalankan fungsi yang baru tersebut.
> kubik(2)[1] 8
![Page 27: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/27.jpg)
Atau inputnya berupa vektor.
> 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
Bisa juga dipanggil secara rekursif.> kubik(kubik(dataku))[1] 1 512 19683 262144 1953125
![Page 28: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/28.jpg)
Suatu fungsi bisa punya lebih dari satu input.
> bagi <- function(x,y)+ {+ z <- x/y+ return(z)+ }
Contoh:
> bagi(15,3)[1] 5
![Page 29: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/29.jpg)
Nilai Default bagi Input (Argumen) suatu Fungsi
"Exam 1" "Exam 2" Quiz2.0 3.3 4.03.3 2.0 3.74.0 4.0 4.02.3 0.0 3.32.3 1.0 3.33.3 3.7 4.0
c:/ujian.txt
> dataujian <- read.table("c:/ujian.txt",header=TRUE)> head(dataujian) Exam.1 Exam.2 Quiz1 2.0 3.3 4.02 3.3 2.0 3.73 4.0 4.0 4.04 2.3 0.0 3.35 2.3 1.0 3.36 3.3 3.7 4.0
Ingat lagi contoh fungsi read.table utk membaca eksternal data.
input header=TRUE menunjukkan bhw file data mempunyai baris judul, sehingga datanya mulai baris kedua.
![Page 30: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/30.jpg)
lihat input (argumen) lengkap dari read.table> read.tablefunction (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
![Page 31: ALGORITME & PEMROGRAMAN](https://reader036.vdokumen.com/reader036/viewer/2022062805/56814dd3550346895dbb3347/html5/thumbnails/31.jpg)
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