3  Instrukcje warunkowe oraz pętle

Martyna Kosińska

3.1 📘 Instrukcje warunkowe

3.1.1 Funkcja if

x=12
if(x>10)
{print("nierówność jest prawdziwa",quote=F)}
[1] nierówność jest prawdziwa
if(x>10) print("nierówność jest prawdziwa")
[1] "nierówność jest prawdziwa"

3.1.2 Funkcja if… else…

x=7
if(x>10){
print("nierówność jest prawdziwa")
}else {
print("nierówność jest fałszywa")
}
[1] "nierówność jest fałszywa"
liczba=sample(1:100,1)
liczba
[1] 76
x=34

if(x==liczba) {
print(paste("wybrana liczba x jest równa",liczba))
}else{
    if(x>liczba){
    print(paste("wybrana liczba x jest większa od",liczba))
    }else{
    print(paste("wybrana liczba x jest mniejsza od", liczba))
}}
[1] "wybrana liczba x jest mniejsza od 76"

3.1.3 Funkcja ifelse

x=1:16

nierówność=ifelse(x>10,"nierówność jest prawdziwa","nierówność jest fałszywa")
nierówność
 [1] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
 [3] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
 [5] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
 [7] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
 [9] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
[11] "nierówność jest prawdziwa" "nierówność jest prawdziwa"
[13] "nierówność jest prawdziwa" "nierówność jest prawdziwa"
[15] "nierówność jest prawdziwa" "nierówność jest prawdziwa"
data.frame(nierówność)
                  nierówność
1   nierówność jest fałszywa
2   nierówność jest fałszywa
3   nierówność jest fałszywa
4   nierówność jest fałszywa
5   nierówność jest fałszywa
6   nierówność jest fałszywa
7   nierówność jest fałszywa
8   nierówność jest fałszywa
9   nierówność jest fałszywa
10  nierówność jest fałszywa
11 nierówność jest prawdziwa
12 nierówność jest prawdziwa
13 nierówność jest prawdziwa
14 nierówność jest prawdziwa
15 nierówność jest prawdziwa
16 nierówność jest prawdziwa

3.2 📘 Pętle

3.2.1 Pętla for

for(i in 1:5) print(i)
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
for(i in 1:5) 
{
print(i)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
z=1:8
for(i in z) 
{
print(i*10)
}
[1] 10
[1] 20
[1] 30
[1] 40
[1] 50
[1] 60
[1] 70
[1] 80
# Wyznaczenie sumy pierwszych 20 liczb naturalnych (bez zera).
suma=0
liczby=1:20
for(i in liczby)
{
suma=suma+i
}
suma
[1] 210
# Wyznaczenie sumy elementów wektora x.
x=c(23,45,13,22,11,-54)
suma=0
for(i in 1:length(x))
{
suma=suma+x[i]
}
suma
[1] 60
# Wyznaczenie sumy różnic elementów wektora x.
x=c(12,34,4,-15,4,0)
suma=0
for(i in 2:length(x))
{
suma=suma+(x[i]-x[i-1]) #Nawias tutaj jest niepotrzebny, ale podkreśla czynność odejmowania.
}
suma
[1] -12
# Wyświetlenie kolejnych różnic elementów wektora x.
x=c(12,34,4,-15,4,0)
for(i in 2:length(x))
{
print(x[i]-x[i-1])
}
[1] 22
[1] -30
[1] -19
[1] 19
[1] -4

3.2.2 Pętla while

# Wyświetlenie pierwszych 9 licz naturalnych (bez 0).
i=1
while(i<10)
{
print(i)
i=i+1
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
# Wyznaczenie sumy elementów wektora x.
x=c(12,-30,4,2,67,-18)
i=1
suma=0
while(i<=length(x))
{
suma=suma+x[i]
i=i+1
}
suma
[1] 37
sum(x)  #Sprawdzenie poprawności uzyskanych wyników.
[1] 37

3.2.3 Pętla repeat

i=1
repeat
{
print(paste("powtórzenie nr.",i))
i=i+1
if(i>5) break     
}
[1] "powtórzenie nr. 1"
[1] "powtórzenie nr. 2"
[1] "powtórzenie nr. 3"
[1] "powtórzenie nr. 4"
[1] "powtórzenie nr. 5"

3.2.3.1 Przykład 1

# Wyświetlić kolejne 10 potęg liczby 2 za pomocą:

#Pętli for

#1 sposób
for(i in 1:10)
{
print(2^i)
}
[1] 2
[1] 4
[1] 8
[1] 16
[1] 32
[1] 64
[1] 128
[1] 256
[1] 512
[1] 1024
#2 sposób
x=1:10
x
 [1]  1  2  3  4  5  6  7  8  9 10
y=c()

for(i in 1:length(x))
{
y[i]=2^x[i]
}
y
 [1]    2    4    8   16   32   64  128  256  512 1024
#Pętli while

#1 sposób
i=1
while(i<=10)
{
print(2^i)
i=i+1
}
[1] 2
[1] 4
[1] 8
[1] 16
[1] 32
[1] 64
[1] 128
[1] 256
[1] 512
[1] 1024
#2 sposób
i=1
y=c()
while(i<=length(x))
{
y[i]=2^x[i]
i=i+1
}
y
 [1]    2    4    8   16   32   64  128  256  512 1024
#Pętli repeat

#1 sposób
i=1
repeat
{
print(2^i)
i=i+1
if(i>10) break
}
[1] 2
[1] 4
[1] 8
[1] 16
[1] 32
[1] 64
[1] 128
[1] 256
[1] 512
[1] 1024
#2 sposób
i=1
y=c()
repeat
{
y[i]=2^x[i]
i=i+1
if(i>length(x))break
}
y
 [1]    2    4    8   16   32   64  128  256  512 1024

3.2.3.2 Przykład 2

# Napisać pętlę, która będzie wyświetlała kolejne 10 potęg liczby 3 
# i będzie pokazywała komunikat: 3 do potęgi… wynosi….

x=1:10
x
 [1]  1  2  3  4  5  6  7  8  9 10
y=c()
for(i in 1:length(x))
{
y[i]=2^x[i]
print(paste("2 do potęgi",i,"wynosi",y[i]))
}
[1] "2 do potęgi 1 wynosi 2"
[1] "2 do potęgi 2 wynosi 4"
[1] "2 do potęgi 3 wynosi 8"
[1] "2 do potęgi 4 wynosi 16"
[1] "2 do potęgi 5 wynosi 32"
[1] "2 do potęgi 6 wynosi 64"
[1] "2 do potęgi 7 wynosi 128"
[1] "2 do potęgi 8 wynosi 256"
[1] "2 do potęgi 9 wynosi 512"
[1] "2 do potęgi 10 wynosi 1024"

3.2.4 Inne przykłady

3.2.4.1 Pętla for i instrukcja if

# Pętla wyświetlająca komentarz: "liczba ... jest parzysta" 
# lub "liczba ... jest nieparzysta", w zależności od elementów wektora x.
x=c(21,52,35,12,25)

for(i in 1:length(x))
{
if(x[i]%%2==0){
print(paste("Liczba",x[i],"jest parzysta"))
}else{
print(paste("Liczba",x[i],"jest nieparzysta"))
}
}
[1] "Liczba 21 jest nieparzysta"
[1] "Liczba 52 jest parzysta"
[1] "Liczba 35 jest nieparzysta"
[1] "Liczba 12 jest parzysta"
[1] "Liczba 25 jest nieparzysta"

3.2.4.2 Zagnieżdżona pętla for

# Napisać kod wyświetlający najpierw sumę pierwszego elementu z wektora x 
# z kolejnymi elementami wektora y, 
# a później sumę drugiego elementu wektora x z kolejnymi elementami wektora y itd. 

x=c(12,2,3,4)
y=c(5,4,8,7)

for(i in 1:length(x))
{
for(j in 1:length(y))
{
print(x[i]+y[j])
}
}
[1] 17
[1] 16
[1] 20
[1] 19
[1] 7
[1] 6
[1] 10
[1] 9
[1] 8
[1] 7
[1] 11
[1] 10
[1] 9
[1] 8
[1] 12
[1] 11