Ruby. Bucles y condiciones


COMPARACIONES

En ruby, podemos usar las clásicas comparaciones:

  • < menor que.
  • > mayor que.
  • == igual que.
  • != distinto que.
  • <= menor o igual que.
  • >= mayor o igual que.

CONDICIONES: IF

En ruby podemos usar condiciones con el 'bloque' if condicion.....end, o mas completo if....else...end o mas completo todavía: if....elsif...elsif...end.
Las lineas que estan 'dentro' de la condición solamente se ejecutan si se cumple la condición.
La condición se escribe comparando números o cadenas con las 'comparaciones' que hemos visto antes. Ejemplos:


#pruebas elementales, bucle if
variable=3
print 'variable='
puts variable
if variable==3 # igualdad
puts 'variable igual que 3'
end
if variable<4 # menor
puts 'variable menor que 4'
end
if variable>1 # mayor
puts 'variable mayor que 1'
end
if variable>=3 # mayor o igual
puts 'mayor o igual que 3'
end
if variable<=3 # menor o igual
puts 'menor o igual que 3'
end
if variable!=4 # distinto
puts 'distinta de 4'
end
puts '----------------------------'
# ahora con else
if variable==4
puts 'es 4'
else
puts 'no es 4'
end
#ahora todo junto
if variable==5
puts 'variable es 5'
elsif variable==3
puts 'variable es 3'
else
puts 'ni 3 ni 5'
end
# varios elsif
if variable==5
puts 'variable es 5'
elsif variable==3
puts 'variable es 3'
elsif variable==4
puts 'variable es 4'
elsif variable==6
puts 'variable es 6'
end
# varios elsif y el else
if variable==5
puts 'variable es 5'
elsif variable==3
puts 'variable es 3'
elsif variable==4
puts 'variable es 4'
elsif variable==6
puts 'variable es 6'
else
puts 'ni 3 ni 5 ni 4 ni 6'
end
variable=3
variable igual que 3
variable menor que 4
variable mayor que 1
mayor o igual que 3
menor o igual que 3
distinta de 4
----------------------------
no es 4
variable es 3
variable es 3
variable es 3

BUCLES

Un bucle consiste en un numero de lineas de codigo que se repiten mientras se cumpla una condición

Tenemos basicamente dos formas de hacer bucles while condicion....end y while condicion....end

La condición, se forma comparando cadenas y numeros con las condiciones que hemos estudiado antes

WHILE....END

Este bucle se repite mientras la condición se cumple. Ejemplo:


#prueba de while
variable=1
print 'iniciamos variable='
puts variable
#hacemos un bucle que se repita
#mientras variable sea menor de 10
while variable<10
# sumamos uno a variable
variable=variable+1
print 'ahora variable= '
puts variable
end
print 'fuera del bucle'
puts
print
'la variable='
puts variable
iniciamos variable=1
ahora variable= 2
ahora variable= 3
ahora variable= 4
ahora variable= 5
ahora variable= 6
ahora variable= 7
ahora variable= 8
ahora variable= 9
ahora variable= 10
fuera del bucle
la variable=10

UNTIL....END

Este bucle se repite hasta que la condición se cumple. Ejemplo:

#prueba de until
variable=1
print 'iniciamos variable='
puts variable
#hacemos un bucle que se repita
#hasta que variable sea mayor de 10
until variable<<10
# sumamos uno a variable
variable=variable+1
print 'ahora variable= '
puts variable
end
print 'fuera del bucle'
puts
print
'la variable='
puts variable
iniciamos variable=1
ahora variable= 2
ahora variable= 3
ahora variable= 4
ahora variable= 5
ahora variable= 6
ahora variable= 7
ahora variable= 8
ahora variable= 9
ahora variable= 10
ahora variable= 11
fuera del bucle
la variable=11

AND,OR

podemos hacer mas complicadas nuestras condiciones usando and y or.

como es habitual, se corresponden en castellano con el 'y' y el 'o'


Ejemplo

#and y or
#
puts "a=5"
a=5
puts "¿a > 4 and a < 6?"
if a > 4 and a < 6
puts "--->si"
else
puts "--->no"
end
#
puts "--------"
#
puts "¿a > 6 or a < 4?"
if a > 6 or a < 4
puts "--->si"
else
puts "--->no"
end
#
puts "--------"
#comiendome el coco
puts "Numeros de 1-10"
puts "entre 3 y 5"
puts "o entre 8 y 9"
a=0
while a <=10
if (a >= 3 and a <= 5) or
(a >= 8 and a <= 9)
puts a
end
a=a+1
end
puts "--------"
a=5
¿a > 4 and a < 6?
--->si
--------
¿a > 6 or a < 4?
--->no
--------
Numeros de 1-10
entre 3 y 5
o entre 8 y 9
3
4
5
8
9
--------

TRUE,FALSE

Una condición siempre es verdadera o falsa.

En ruby puede espresarse esto con las 'palabras reservadas' true y false

Al igual que una variable puede ser numérica o cadena, tambien puede ser booleana, solo aceptando el valor de true,false

El uso habitual de true,false lo encontraremos en funciones que retornan 'verdadero' o 'falso' que veremos posteriormente. Sin embargo podemos jugar un poco para habituarnos con ellas:

#jugando un poco con true,false
#
#condicion verdadera
#true es algo que es cierto
puts "¿true es verdad?"
if true
puts "si"
else
puts "no"
end
#
puts "--------"
#condicion falsa
#false es algo que NO es cierto
puts "¿false es verdad?"
if false
puts "si(no puede ser)"
else
puts "no(menos mal)"
end
#
puts "--------"
# puts y condiciones
puts "2==1 es una condicion...."
puts 2==1
puts "--------"
puts "1==1 es una condicion...."
puts 1==1
#
puts "--------"
# variables true/false
var=true
puts "si var=true"
puts "var==true es true(que lio)"
if var==true
puts "lo esperaba"
else
puts "¿Queeee?"
end
puts "--------"
#
#asignaciones varias
var=(1==2)#equivalente a var=false
var=(2==2)#equivalente a var=true

#podemos escriber la condicion
#en una variable y utilizarla despues

a=1
b=2
#cuidado con los paréntesis
var=((a>2 and b<0) or (a<=5 and b<=3))
puts "y la condicion es....."
if var==true
puts "pues esto es verdad"
else
puts "esto no puede ser"
end
puts "--------"
#cambiamos los datos
#pero guardamos la antigua condicion
b=5 #ahora no cmple la condicion
var1=((a>2 and b<0) or (a<=5 and b<=3))
puts "condicion antigua="
puts var
puts
"condicion nueva="
puts var1
¿true es verdad?
si
--------
¿false es verdad?
no(menos mal)
--------
2==1 es una condicion....
false
--------
1==1 es una condicion....
true
--------
si var=true
var==true es true(que lio)
lo esperaba
--------
y la condicion es.....
pues esto es verdad
--------
condicion antigua=
true
condicion nueva=
false


NIL

En ruby se usa nil para expresar algo 'nulo'. Una variable puede ser numérica, cadena, booleana(true/false)......o nil. Veamoslo:

#uso de nil
#si no hemos dado valor
#a la variable a, estas lineas
#son incorrectas
#
#if a==5
#if a==nil

a=5
puts "si a=5 entonces ...."
if a==nil
puts "imposible"
else
puts "no es nil"
end

puts "-------"
#iniciamos a nil
a=nil
puts "si a=nil entonces ...."
if a==5
puts "me sorprenderia"
else
puts "no es 5"
if a==nil
puts "es nil"
end
end
si a=5 entonces ....
no es nil
-------
si a=nil entonces ....
no es 5
es nil

.----oOO--OOo----.

No hay comentarios: