Kontrol Yapıları
if(<koşul>) {
## kodlar
}
Yukarıdaki kod, koşul yanlışsa hiçbir şey yapmaz. Koşul yanlış olduğunda yürütmek istediğiniz bir eyleminiz varsa, o zaman bir else cümlesine ihtiyacınız vardır.
if(<koşul>) {
## kodlar
}else {
## kodlar
}
if(<kosul1>) {
## kodlar
} else if(<kosul2>) {
## kodlar
} else {
## kodlar
}
Geçerli Bir Örnek
## bir rastgele sayı oluşturun
set.seed(41)
x <- runif(1, 0, 10)
if(x > 3) {
y <- 10
} else {
y <- 0
}
x;y
## [1] 2.134905
## [1] 0
veya
y <- if(x > 3) {
10
} else {
0
}
x;y
## [1] 2.134905
## [1] 0
Kullanımına bir örnek verilecek olursa
x <-60
# Başarılı Durum
if(x>=65){
print("Basarılı")
}else{
print("Basarisiz")
}
## [1] "Basarisiz"
ya da
x <- 75 # Başarılı Durum
if(x>=90){
print("AA")
}else if(x>=80){
print("BA")
}else if(x>=70){
print("BB")
}else if(x>=65){
print("CB")
}else if(x>=60){
print("CC")
}else if(x>=50){
print("DD")
}else if(x>=30){
print("FD")
}else{
print("FF")
}
## [1] "BB"
basaridurumu <- function(x) {
if(x>=90){
print("AA")
}else if(x>=80){
print("BA")
}else if(x>=70){
print("BB")
}else if(x>=65){
print("CB")
}else if(x>=60){
print("CC")
}else if(x>=50){
print("DD")
}else if(x>=30){
print("FD")
}else{
print("FF-Allah kurtarsın kardeşim")
}
}
basaridurumu(25)
## [1] "FF-Allah kurtarsın kardeşim"
a sayısının çarpmaya göre tersi 1/a’dir. Ancak bu durum 0 için tanımsızdır. if() durum cümlesi kullanarak bu durumu kodlayınız. x <- 5 ve x<-0 için için test ediniz.
a <-6
if(a==0){
print("1/0 tanımsızdır.")
}else{
print(paste(a,"'in carpmaya gore tersi 1/",a,sep=""))
}
## [1] "6'in carpmaya gore tersi 1/6"
all fonkisyonu ile vektörün tüm elemanları için koşul testi yapabilir.
x <- c(1,2,-3,4)
if(all(x>0)){
print("tum sayilar 0'dan buyuktur")
} else{
print("tum sayilar 0'dan buyuk degildir")
}
## [1] "tum sayilar 0'dan buyuk degildir"
veya
dogumyillari <- c(1992,2008,1978,1983)
if(all(dogumyillari<=1999)){
print("herkes en az 30 yasındadır")
} else{
print("sevgili ebeveynler cocuklarımıza sahip cıkalım")
}
## [1] "sevgili ebeveynler cocuklarımıza sahip cıkalım"
Bir vektörde içinde yer alan her hangi bir elemana dair test ise if() fonksiyonu içinde any() fonksiyonu ile sağlanabilir
x <- c(1,2,-3,4)
if(any(x<0)){
print("nesne en az bir negatif sayi icerir")
} else{
print("nesne negatif sayi icermez")
}
## [1] "nesne en az bir negatif sayi icerir"
x <- 6
if(x == 2) {
goster3 <- "Dogru"
goster3b <- c(1,2,3)
goster3c <- sample(1:1000,4)
} else {
goster3 <- "Yanlis"
goster3b <- c(3,2,1)
goster3c <- 10000 + sample(1:1000,4)
}
goster3c
## [1] 10163 10005 10096 10894
ifelse(koşul, Doğru İfade, Yanlış İfade)
x <- 20
ifelse(x>= 65, "Başarılı" ,"Başarısız")
## [1] "Başarısız"
menu1 <- c("ekmek", "corba", "et", "tatlı")
menu2 <- c("pilav", "corba", "sebze yemegi", "salata")
menuler <- list(menu1,menu2)
for (i in seq_along(menuler)) {
sonuc <- ifelse("et" %in% menuler[[i]], "yenir", "yenmez")
print(paste("Menu", i, ":", sonuc))
}
## [1] "Menu 1 : yenir"
## [1] "Menu 2 : yenmez"
for(i in 1:10) {
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
x <- c("a", "b", "c", "d")
for(i in 1:4) {
## 'x'in her bir öğesini yazdırır
print(x[i])
}
## [1] "a"
## [1] "b"
## [1] "c"
## [1] "d"
x<-0
if(x==0){
print("1/0 tanımsızdır.")
}else if(x!=0){
print("5'in carpmaya gore tersi 1/5")
}
## [1] "1/0 tanımsızdır."
x<-0.5
if(x>=1){
print("1’den buyuk.")
}else if(x>=0){
print("-1 ile +1 arasında")
}else{
print("-1’den kucuk")
}
## [1] "-1 ile +1 arasında"
vize <- c(60,70,80,90,55)
final <- c(45,65,70,50,80)
devam <- c(14,10,13,12,11)
ifelse(devam <= 11, 0.6*final,
ifelse(final>=50,0.6*final+0.4+vize,"Tebrikler! Dersi bir kez daha almaya hak kazandınız!"))
## [1] "Tebrikler! Dersi bir kez daha almaya hak kazandınız!"
## [2] "39"
## [3] "122.4"
## [4] "120.4"
## [5] "48"
(X <- cbind(a = 1:5, b=2:6))
## a b
## [1,] 1 2
## [2,] 2 3
## [3,] 3 4
## [4,] 4 5
## [5,] 5 6
Y <- array() #c() ile de oluşturulabilir, içine yazılacak vektörü oluşturma
for(i in 1:nrow(X)) {
Y[i] <- X[i,1] + X[i,2]
}
X
## a b
## [1,] 1 2
## [2,] 2 3
## [3,] 3 4
## [4,] 4 5
## [5,] 5 6
Y
## [1] 3 5 7 9 11
islem.kontrol <- array() #sonuçların yazılacağını oluşturmayı unutma
for(i in 1:10){
islem.kontrol[i] <- paste("Islem ", i, " tamamlandi", sep="")
}
islem.kontrol
## [1] "Islem 1 tamamlandi" "Islem 2 tamamlandi" "Islem 3 tamamlandi"
## [4] "Islem 4 tamamlandi" "Islem 5 tamamlandi" "Islem 6 tamamlandi"
## [7] "Islem 7 tamamlandi" "Islem 8 tamamlandi" "Islem 9 tamamlandi"
## [10] "Islem 10 tamamlandi"
X <- cbind(1:5, 21:25)
X
## [,1] [,2]
## [1,] 1 21
## [2,] 2 22
## [3,] 3 23
## [4,] 4 24
## [5,] 5 25
for(i in 1:nrow(X)){
cat(i,". satirdaki sayilarin carpimi = ", X[i,1]*X[i,2]," olarak hesaplanmıştır.",sep = "", "\n")
}
## 1. satirdaki sayilarin carpimi = 21 olarak hesaplanmıştır.
## 2. satirdaki sayilarin carpimi = 44 olarak hesaplanmıştır.
## 3. satirdaki sayilarin carpimi = 69 olarak hesaplanmıştır.
## 4. satirdaki sayilarin carpimi = 96 olarak hesaplanmıştır.
## 5. satirdaki sayilarin carpimi = 125 olarak hesaplanmıştır.
for(i in 1:6){
if(i==3){
next
}
print (i)}
## [1] 1
## [1] 2
## [1] 4
## [1] 5
## [1] 6
set.seed(41)
sayilar <- sample(0:10,30,replace=TRUE)
for(i in sayilar){
if(i==0){
next
}
cat("1/",i,sep="","\n")}
## 1/7
## 1/2
## 1/4
## 1/7
## 1/9
## 1/5
## 1/5
## 1/1
## 1/1
## 1/10
## 1/5
## 1/1
## 1/4
## 1/5
## 1/3
## 1/3
## 1/1
## 1/3
## 1/5
## 1/1
## 1/1
## 1/3
## 1/3
## 1/4
## 1/2
## 1/5
## 1/10
##Break fonksiyonu
for(i in 1:12){
if(i==3){
break
}
print (i)}
## [1] 1
## [1] 2
set.seed(41)
sayilar1 <- sample(-5:5,30,replace=TRUE)
for(i in sayilar1){
print (i)
if(i<0){
break
}#print breakten sonra olursa -3ü yazmadan döngüyü kırıyor
}
## [1] 2
## [1] -3
set.seed(853)
y<-matrix(rnorm(1000000),nrow=1000)
z<-0*y
#loop:
time2 <- system.time(
for(i in 1:1000){
for(j in 1:1000){
z[i,j]<-y[i,j]^2
}
})
time2
## user system elapsed
## 0.08 0.00 0.07
Aynı işlemi döngüsüz yapma
time3 <- system.time(z<-y^2)
time3
## user system elapsed
## 0 0 0
x <- matrix(1:6, 2, 3)
for(i in seq_len(nrow(x))) {
for(j in seq_len(ncol(x))) {
print(x[i, j])
}
}
## [1] 1
## [1] 3
## [1] 5
## [1] 2
## [1] 4
## [1] 6
m2 <- matrix(0,nrow=5,ncol=5)
m2
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0
## [5,] 0 0 0 0 0
m2 <- matrix(0,nrow=5,ncol=5)
for(i in 1:nrow(m2)) {
for(j in 1:ncol(m2)) {
m2[i,j]<- i*j
}
}
m2
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 2 4 6 8 10
## [3,] 3 6 9 12 15
## [4,] 4 8 12 16 20
## [5,] 5 10 15 20 25
count <- 0
while(count < 10) {
print(count)
count <- count + 1
}
## [1] 0
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
While döngüleri düzgün yazılmazsa sonsuz döngülere neden olabilir. Dikkatli kullanın!
Bazen testte birden fazla koşul olabilir.
i=1
#while(i<-1)
{
i=i+1
print(i)
} #mesela:)
## [1] 2
z <- 5
set.seed(1)
while(z >= 3 && z <= 10) {
coin <- rbinom(1, 1, 0.5)
if(coin == 1) { ## rastgele çalışır
z <- z + 1
} else {
z <- z - 1
}
}
print(z)
## [1] 2
Koşullar her zaman soldan sağa doğru değerlendirilir. Örneğin, yukarıdaki kodda z 3’ten küçük olsaydı, ikinci test değerlendirilmezdi.
repeat başlangıçtan itibaren sonsuz bir döngü başlatır. Bunlar istatistiksel veya veri analizi uygulamalarında yaygın olarak kullanılmaz, ancak kullanım alanları vardır. Bir repeat döngüsünden çıkmanın tek yolu break çağrısı yapmaktır.
Olası bir paradigma, bir çözüm arıyor olabileceğiniz ve çözüme ulaşana kadar durmak istemediğiniz yinelemeli bir algoritmada olabilir.
x0 <- 1
tol <- 1e-8
repeat {
x1 <- computeEstimate()
if(abs(x1 - x0) < tol) { ## Yeterince yakın mı? Önceki sayı ile fark yeterli mi
break
} else {
x0 <- x1
}
}
S1. Kullanıcı tarafından belirlenen nxn boyutunda bir matris oluşturulsun. nxn bir matrisin her bir elemanı satır ve sütun indeksleri çarpımı olsun. Örneğin 2. satır 5. sütun elemanı 2*5=10 olsun
Eger matrisin boyutları 10x10’dan büyükse sadece 10 satırını yazsın eğer matrisi boyutları 10x10’dan küçükse hepsini yazsın.
n <- as.integer(readline("Matris boyutu (nxn) icin n kac olsun? ="))
matris <- matrix(0, nrow = n, ncol = n)
for (i in 1:n) {
for (j in 1:n) {
matris[i, j] <- i * j
}
}
# if ile n değerine göre koşul
if (n > 10) {
print(matris[1:10, ])
} else {
print(matris)
}
Fibonacci dizisinin elemanlari 1 1 2 3 5 8 13 21 34 55 89 … dizinin elemanlarını for() ve/ve ya while() döngüsü ile oluşturmaya çalışınız.
fibonacci <- c(1,1) #baslangici manuel olarak ayarlıyoruz çünkü aklımıza başka bir yol gelmiyor
n <- as.integer(readline("Kac elemanda bitirelim?....")) #duracağımız yeri bilelim
for (i in 3:n){
fibonacci <- c(fibonacci,fibonacci[i-1]+fibonacci[i-2])
}
fibonacci
Örnek veri Seti
set.seed(1786)
ornek<-exp(matrix(rnorm(2000),nrow=100))
index1.temp<-sample(1:100,10)
index2.temp<-sample(1:20,10)
for(i in 1:10){
ornek[index1.temp[i],index2.temp[i]]<--1
}
head(ornek,6)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 0.5549525 0.3247338 0.5236032 0.3821027 0.4187483 0.1588847 5.226161
## [2,] 0.5671734 1.2431592 0.8812069 2.6695443 0.6984453 1.0838792 1.079946
## [3,] 4.8068457 0.3449856 0.6079096 0.9194116 1.5361330 1.9082522 0.671977
## [4,] 1.3509234 2.3569582 0.1931423 4.0707377 0.3527276 2.3498825 1.198514
## [5,] 0.9012032 0.2310683 0.2317487 1.3809955 0.9168741 0.6237213 1.609403
## [6,] 1.2331483 1.1066056 0.3546027 0.3705946 0.9002303 0.2528151 3.337512
## [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,] 2.6280057 1.2251526 0.4760966 5.2379018 1.4782655 1.3761338 1.0202608
## [2,] 2.2087385 0.5195551 0.3757409 0.9004808 0.7409205 2.0543842 0.3668661
## [3,] 1.5310016 0.6735007 2.2069776 0.5060078 0.7171477 1.2378655 0.3651527
## [4,] 2.5592899 1.8205257 1.2624052 0.1524106 0.3828322 1.2406799 0.7954326
## [5,] 1.1005990 1.0619758 2.1047783 2.7816902 1.4010878 0.6140937 0.5136842
## [6,] 0.9799103 2.7520425 2.5407624 1.3889136 0.4346808 1.0637950 0.1859157
## [,15] [,16] [,17] [,18] [,19] [,20]
## [1,] 0.1437680 4.1807643 1.7389423 3.0760640 1.550557 4.4838291
## [2,] 3.8674407 1.9349214 0.6333922 0.4862532 5.275571 0.1161029
## [3,] 1.4724240 0.5971116 11.5869157 0.7580736 4.755297 1.0583051
## [4,] 0.1243085 0.8376231 1.3723291 2.0884571 2.506128 1.2094517
## [5,] 6.2971803 0.8422164 1.5335222 0.3079718 2.729447 1.7164885
## [6,] 3.8052219 2.1611055 0.3280288 2.7773368 1.726558 1.3193446
ornek veri setinde i. satırda negatif sayı yok ise çıktıda i. satırın ortalaması….dir yazsin.
for(i in 1:nrow(ornek)){
satir <- ornek[i, ]
if(all(satir>=0)){
print(paste("Satir",i,"ortalamasi ",mean(satir),"'dir."))
} else if(sum(satir<0)>3){
print(paste("Çok sayida negatif sayı bulunmaktadır"))
} else {
print(paste("Satir",i,"negatif sayi icermektedir."))
}
}
## [1] "Satir 1 ortalamasi 1.81024640410365 'dir."
## [1] "Satir 2 ortalamasi 1.38518610357355 'dir."
## [1] "Satir 3 ortalamasi 1.91306477718819 'dir."
## [1] "Satir 4 ortalamasi 1.4112379414075 'dir."
## [1] "Satir 5 ortalamasi 1.4449874985066 'dir."
## [1] "Satir 6 ortalamasi 1.45095623366252 'dir."
## [1] "Satir 7 ortalamasi 1.28395242730511 'dir."
## [1] "Satir 8 ortalamasi 1.09256285552594 'dir."
## [1] "Satir 9 ortalamasi 1.42368154628106 'dir."
## [1] "Satir 10 negatif sayi icermektedir."
## [1] "Satir 11 ortalamasi 1.63867357063309 'dir."
## [1] "Satir 12 negatif sayi icermektedir."
## [1] "Satir 13 ortalamasi 1.47012239341985 'dir."
## [1] "Satir 14 ortalamasi 1.68760963291761 'dir."
## [1] "Satir 15 ortalamasi 1.51554665095691 'dir."
## [1] "Satir 16 ortalamasi 1.99518274468864 'dir."
## [1] "Satir 17 ortalamasi 1.47942292790106 'dir."
## [1] "Satir 18 ortalamasi 1.4444947260594 'dir."
## [1] "Satir 19 ortalamasi 1.54378752827146 'dir."
## [1] "Satir 20 ortalamasi 2.17983862702061 'dir."
## [1] "Satir 21 ortalamasi 1.48707990280766 'dir."
## [1] "Satir 22 ortalamasi 2.10918427665028 'dir."
## [1] "Satir 23 ortalamasi 2.53701879215026 'dir."
## [1] "Satir 24 negatif sayi icermektedir."
## [1] "Satir 25 negatif sayi icermektedir."
## [1] "Satir 26 ortalamasi 0.981573869823853 'dir."
## [1] "Satir 27 ortalamasi 2.10120070726688 'dir."
## [1] "Satir 28 ortalamasi 1.58708489312329 'dir."
## [1] "Satir 29 ortalamasi 2.07934105483056 'dir."
## [1] "Satir 30 ortalamasi 1.62838414992845 'dir."
## [1] "Satir 31 ortalamasi 1.06213338682266 'dir."
## [1] "Satir 32 ortalamasi 1.30176914432271 'dir."
## [1] "Satir 33 ortalamasi 1.22716566563699 'dir."
## [1] "Satir 34 ortalamasi 1.68089750840266 'dir."
## [1] "Satir 35 ortalamasi 2.04330971448464 'dir."
## [1] "Satir 36 ortalamasi 1.62042716634191 'dir."
## [1] "Satir 37 ortalamasi 1.49511549814556 'dir."
## [1] "Satir 38 negatif sayi icermektedir."
## [1] "Satir 39 ortalamasi 1.64957267061729 'dir."
## [1] "Satir 40 negatif sayi icermektedir."
## [1] "Satir 41 ortalamasi 1.61087414481598 'dir."
## [1] "Satir 42 ortalamasi 2.51292782080857 'dir."
## [1] "Satir 43 ortalamasi 1.29253831341951 'dir."
## [1] "Satir 44 ortalamasi 0.995338317972212 'dir."
## [1] "Satir 45 ortalamasi 1.06319606969695 'dir."
## [1] "Satir 46 ortalamasi 2.08723014108201 'dir."
## [1] "Satir 47 ortalamasi 1.63838098483115 'dir."
## [1] "Satir 48 ortalamasi 1.58748051253287 'dir."
## [1] "Satir 49 ortalamasi 1.36039204193038 'dir."
## [1] "Satir 50 ortalamasi 2.5030812334855 'dir."
## [1] "Satir 51 negatif sayi icermektedir."
## [1] "Satir 52 ortalamasi 1.1701846988099 'dir."
## [1] "Satir 53 ortalamasi 1.39932665703517 'dir."
## [1] "Satir 54 ortalamasi 0.851813922412085 'dir."
## [1] "Satir 55 ortalamasi 1.38874171912631 'dir."
## [1] "Satir 56 ortalamasi 1.28819137534643 'dir."
## [1] "Satir 57 ortalamasi 2.40583121888184 'dir."
## [1] "Satir 58 ortalamasi 0.954909626512 'dir."
## [1] "Satir 59 ortalamasi 1.37212622963709 'dir."
## [1] "Satir 60 ortalamasi 1.38257148153171 'dir."
## [1] "Satir 61 ortalamasi 1.13360242378072 'dir."
## [1] "Satir 62 ortalamasi 0.710679121145175 'dir."
## [1] "Satir 63 ortalamasi 1.01854602443719 'dir."
## [1] "Satir 64 negatif sayi icermektedir."
## [1] "Satir 65 ortalamasi 1.15965812704672 'dir."
## [1] "Satir 66 ortalamasi 0.842555588739729 'dir."
## [1] "Satir 67 ortalamasi 1.35084607269106 'dir."
## [1] "Satir 68 ortalamasi 1.14463972482843 'dir."
## [1] "Satir 69 ortalamasi 1.31510707964177 'dir."
## [1] "Satir 70 ortalamasi 1.60246658326134 'dir."
## [1] "Satir 71 ortalamasi 1.91370003124893 'dir."
## [1] "Satir 72 ortalamasi 2.17726089691906 'dir."
## [1] "Satir 73 ortalamasi 1.1509167872398 'dir."
## [1] "Satir 74 ortalamasi 3.37881346599407 'dir."
## [1] "Satir 75 ortalamasi 1.4458712001827 'dir."
## [1] "Satir 76 ortalamasi 1.65784983950186 'dir."
## [1] "Satir 77 ortalamasi 1.11154005692112 'dir."
## [1] "Satir 78 ortalamasi 1.66369767927207 'dir."
## [1] "Satir 79 ortalamasi 1.3726424347633 'dir."
## [1] "Satir 80 ortalamasi 1.45540060332781 'dir."
## [1] "Satir 81 ortalamasi 1.1547741826877 'dir."
## [1] "Satir 82 ortalamasi 3.34868667286079 'dir."
## [1] "Satir 83 ortalamasi 2.63518520261191 'dir."
## [1] "Satir 84 ortalamasi 1.35479992704511 'dir."
## [1] "Satir 85 ortalamasi 1.95680972834867 'dir."
## [1] "Satir 86 negatif sayi icermektedir."
## [1] "Satir 87 ortalamasi 1.45020821996795 'dir."
## [1] "Satir 88 ortalamasi 1.15091491124661 'dir."
## [1] "Satir 89 ortalamasi 1.25524639987064 'dir."
## [1] "Satir 90 ortalamasi 0.763787021104584 'dir."
## [1] "Satir 91 ortalamasi 1.29539957747794 'dir."
## [1] "Satir 92 negatif sayi icermektedir."
## [1] "Satir 93 ortalamasi 1.23735048852641 'dir."
## [1] "Satir 94 ortalamasi 2.15189363654345 'dir."
## [1] "Satir 95 ortalamasi 1.4852096703456 'dir."
## [1] "Satir 96 ortalamasi 1.56903650889034 'dir."
## [1] "Satir 97 ortalamasi 1.74906359142209 'dir."
## [1] "Satir 98 ortalamasi 2.91382990626373 'dir."
## [1] "Satir 99 ortalamasi 1.32444388929016 'dir."
## [1] "Satir 100 ortalamasi 1.72039519136943 'dir."
Bu kısmı yapamadım, denedim, olmadı, kopya çektim, yine olmadı.
içi dolu kare
n <- 5
for(i in 1:n){
for(j in 1:n){
cat("* ")
}
cat("\n")
}
## * * * * *
## * * * * *
## * * * * *
## * * * * *
## * * * * *
içi boş kare
n <- 5
for(i in 1:n){
for(j in 1:n){
if(i == 1 || i == n || j == 1 || j == n){
cat("* ")
} else {
cat(" ")
}
}
cat("\n")
}
## * * * * *
## * *
## * *
## * *
## * * * * *
Dolu Üçgen
n <- 5
for(i in 1:n){
for(j in 1:i){
cat("* ")
}
cat("\n")
}
## *
## * *
## * * *
## * * * *
## * * * * *
Eşkenar Üçgen
n <- 5
eskenar <- for(i in 1:n){
for(j in 1:(n-i)){
cat(" ")
}
for(k in 1:((2*i)-1)){
cat("*")
}
cat("\n")
} #en alt sırayı asla duzeltemedim
## *
## ***
## *****
## *******
## *********
içi boş eşkenar
n <- 5 # Üçgenin yüksekliği
for(i in 1:n){
for(j in 1:(n - i)){
cat(" ")
}
for(k in 1:(2 * i - 1)){
if(k == 1 || k == (2 * i - 1) || i == n){
cat("*")
} else {
cat(" ")
}
}
cat("\n")
}
## *
## * *
## * *
## * *
## *********
dik üçgen
n <- 5
for(i in 1:n){
for(j in 1:(n-i)){
cat(" ")
}
for(k in 1:i){
cat("*")
}
cat("\n")
}
## *
## **
## ***
## ****
## *****
diyagonal çizgi
n <- 5
for(i in 1:n){
for(j in 1:(i - 1)){
cat(" ")
}
cat("*\n")
}
## *
## *
## *
## *
## *