Vous êtes sur la page 1sur 31

ALGORITME & PEMROGRAMAN

Abdul Kudus, SSi., MSi., PhD.


Senin, 6.30 – 9.00

Rabu, 12.00 – 14.00


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:
• 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.
awal:akhir
1. Perulangan for
Bentuk umum
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) for (i in c(3,2,9,6))
{ {
print(i) 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 kondisi awal


while(angka < 11)
{
cat("angka= ",angka,"\n") instruksi yg bisa
angka <- angka + 1 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
repeat Contoh: Menggunakan
{ repeat untuk
cat("Halo...","\n") menghitung jumlah
cacah <- cacah + 1 x1+x2+x3+…+xn dan
if(cacah > 5) break 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 > i <- 1
> while (i <= 10) > while(TRUE)
+ { + { # pengulangan yg sama
+ i <- i+4 + i <- i+4
+ } + if (i > 10) break
> i + }
[1] 13 > i
[1] 13

> i <- 1
> repeat
break digunakan utk
+ { # pengulangan yg sama juga keluar dr
+ i <- i+4 pengulangan (loop)
+ if (i > 10) break
+ } break juga dpt
> i digunakan dlm
[1] 13 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
> jml <- 0 TRUE jika x merupakan
> for (unsur in x) data missing (NA)
+ {
+ 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.
Bentuk 1 kasus Tidak

if (syarat) Ya
{
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
}
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 !
Operator Aritmetik dan Boolean (Logika) serta Nilainya
> 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
>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
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)
}
Contoh: Berikut ini adalah fungsi untuk menghitung pangkat tiga
dari suatu input bilangan.

> kubik <- function(x)


nama_fungsi + {
+ y <- x^3 input
+ return(y)
+ }
perintah R

output
Jalankan fungsi yang baru tersebut.

> kubik(2)
[1] 8
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
Suatu fungsi bisa punya lebih dari satu input.

> bagi <- function(x,y)


+ {
+ z <- x/y
+ return(z)
+ }

Contoh:

> bagi(15,3)
[1] 5
Nilai Default bagi Input (Argumen) suatu Fungsi
Ingat lagi contoh fungsi read.table utk membaca eksternal data.
c:/ujian.txt
"Exam 1" "Exam 2" Quiz input header=TRUE menunjukkan
2.0 3.3 4.0 bhw file data mempunyai baris
3.3 2.0 3.7 judul, sehingga datanya mulai baris
4.0 4.0 4.0
2.3 0.0 3.3 kedua.
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
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
Output dari suatu Fungsi
oddcount <- function(x) oddcount <- function(x)
{ {
k <- 0 k <- 0
for (n in x) for (n in x)
{ {
if (n %% 2 == 1) k <- k+1 if (n %% 2 == 1) k <- k+1
} }
return(k) k
} }

Output adalah:
-obyek yg di-return
-obyek pada perintah terakhir

Vous aimerez peut-être aussi

  • Filsafat Dengan Ilmu Statistika
    Filsafat Dengan Ilmu Statistika
    Document2 pages
    Filsafat Dengan Ilmu Statistika
    Yamin Laode
    Pas encore d'évaluation
  • PendugaanStatistikSEO
    PendugaanStatistikSEO
    Document16 pages
    PendugaanStatistikSEO
    christiansmilaw
    Pas encore d'évaluation
  • Sejarah Desa
    Sejarah Desa
    Document2 pages
    Sejarah Desa
    Yamin Laode
    Pas encore d'évaluation
  • Pengenalan R
    Pengenalan R
    Document10 pages
    Pengenalan R
    Yamin Laode
    Pas encore d'évaluation
  • Pendugaan Parameter
    Pendugaan Parameter
    Document30 pages
    Pendugaan Parameter
    Muhammad Pambudi Putra
    Pas encore d'évaluation
  • OPTIMASI RISET PEMASARAN
    OPTIMASI RISET PEMASARAN
    Document22 pages
    OPTIMASI RISET PEMASARAN
    Yamin Laode
    Pas encore d'évaluation
  • ADK3
    ADK3
    Document4 pages
    ADK3
    Yamin Laode
    Pas encore d'évaluation
  • Contoh ADM
    Contoh ADM
    Document11 pages
    Contoh ADM
    Yamin Laode
    Pas encore d'évaluation
  • Filsafat Dengan Ilmu Statistika
    Filsafat Dengan Ilmu Statistika
    Document11 pages
    Filsafat Dengan Ilmu Statistika
    Yamin Laode
    Pas encore d'évaluation
  • Evaluasi Pembelajaran
    Evaluasi Pembelajaran
    Document19 pages
    Evaluasi Pembelajaran
    Yamin Laode
    Pas encore d'évaluation
  • ADK2
    ADK2
    Document2 pages
    ADK2
    Yamin Laode
    Pas encore d'évaluation
  • PentasSeniDesa
    PentasSeniDesa
    Document1 page
    PentasSeniDesa
    Zakiyyatul Miskiyah
    Pas encore d'évaluation
  • ADK2
    ADK2
    Document2 pages
    ADK2
    Yamin Laode
    Pas encore d'évaluation
  • Kasus ADM
    Kasus ADM
    Document8 pages
    Kasus ADM
    Yamin Laode
    Pas encore d'évaluation
  • Evaluasi Pembelajaran
    Evaluasi Pembelajaran
    Document19 pages
    Evaluasi Pembelajaran
    Yamin Laode
    Pas encore d'évaluation
  • Adk Makalah
    Adk Makalah
    Document19 pages
    Adk Makalah
    Yamin Laode
    Pas encore d'évaluation
  • Kirimkan Yamin
    Kirimkan Yamin
    Document3 pages
    Kirimkan Yamin
    Yamin Laode
    Pas encore d'évaluation
  • Universitas Halu Oleo: Kuesioner Evaluasi Pembelajaran
    Universitas Halu Oleo: Kuesioner Evaluasi Pembelajaran
    Document5 pages
    Universitas Halu Oleo: Kuesioner Evaluasi Pembelajaran
    Yamin Laode
    Pas encore d'évaluation
  • 13 Resp Rancob2a
    13 Resp Rancob2a
    Document18 pages
    13 Resp Rancob2a
    Hana Hilfa Hakim
    Pas encore d'évaluation
  • STK334 09 PDF
    STK334 09 PDF
    Document29 pages
    STK334 09 PDF
    Yamin Laode
    Pas encore d'évaluation
  • MODUL PRAKTIKUM ALPRO-1
    MODUL PRAKTIKUM ALPRO-1
    Document4 pages
    MODUL PRAKTIKUM ALPRO-1
    Wawan Kurniawan
    Pas encore d'évaluation
  • 3 Lagrange Multipliers
    3 Lagrange Multipliers
    Document27 pages
    3 Lagrange Multipliers
    ZasHi Memey
    Pas encore d'évaluation
  • Lain2 Yang Mantap
    Lain2 Yang Mantap
    Document9 pages
    Lain2 Yang Mantap
    Ulquiorra Schiffer
    Pas encore d'évaluation
  • Nilai Harapan
    Nilai Harapan
    Document15 pages
    Nilai Harapan
    Husnia Uni
    Pas encore d'évaluation
  • ADK3
    ADK3
    Document4 pages
    ADK3
    Yamin Laode
    Pas encore d'évaluation
  • SPK
    SPK
    Document2 pages
    SPK
    Yamin Laode
    Pas encore d'évaluation
  • Ruang hasil kali dalam
    Ruang hasil kali dalam
    Document4 pages
    Ruang hasil kali dalam
    Shinta Pragustia Kuarni
    Pas encore d'évaluation
  • CMH_TEST
    CMH_TEST
    Document3 pages
    CMH_TEST
    Yamin Laode
    Pas encore d'évaluation
  • Uji Cochran
    Uji Cochran
    Document3 pages
    Uji Cochran
    Yamin Laode
    Pas encore d'évaluation
  • SPK
    SPK
    Document2 pages
    SPK
    Yamin Laode
    Pas encore d'évaluation