martes, 20 de septiembre de 2011

Taller De Logica


Bucle (programación)







Un bucle o ciclo, en programación, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse.
Generalmente, un bucle es utilizado para hacer una acción repetida sin tener que escribir varias veces el mismo código, lo que ahorra tiempo, deja el código más claro y facilita su modificación en el futuro.
El bucle y los condicionales representan la base de la programación estructurada. Es una evolución del código ensamblador, donde la única posibilidad de iterar un código era establecer una sentencia jump (que en los lenguajes de programación fue sustituida por el "ir a" o GOTO).
Los tres bucles más utilizados en programación son el bucle while, el bucle for y el bucle repetir.

Bucle for

El bucle for o ciclo for es una estructura de control en la que se puede indicar el número minimo de
iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.



Bucle while







El Bucle while o bucle mientras es una estructura de la mayoría de los lenguajes de programación estructurados cuyo propósito es repetir un bloque de código mientras una condición se mantenga verdadera.






Bucle repetir







El bucle repetir comprueba la condición de finalización al final del cuerpo del bucle, y si ésta es cierta continua con el resto del programa, a veces esto resulta más adecuado.





Estructuras de control







En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
  • De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case)
  • Ejecutar un grupo de sentencias mientras exista una condición (Do-While)
  • Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until)
  • Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
  • Etc
Todas las estructuras de control tienen un único punto de entrada y un único punto de salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programación se rija por los principios de la programación estructurada.
Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Ciclos en ruby



ciclo each

Hay una función llamada “each” (“cada uno”), que se puede aplicar a un Array o a un Hash, o a un string de varias líneas, para iterar sobre sus elementos. La sintaxis es:

variable.each {bloque}

El resultado es el siguiente: Las instrucciones que se encuentran dentro del bloque, se van a aplicar a cada uno de los elementos de la variable. Es decir, se produce un ciclo repetitivo donde en cada
pasada, o iteración del ciclo, se evalúa uno de los elementos del array (o hash), en forma sucesiva, empezando con el primero, luego el segundo, etc, hasta llegar al último.
Veamos un ejemplo con un Array numérico:

a = [2,4,13,8] # empecemos con este Array

a.each {|i| puts i} # por cada elemento |i| de 'a', imprimirlo:

2 # dentro del bloque, i←2 y luego puts 2
4 # sigue con i←4 y luego puts 4

13 # etc

8
ciclo while

Esta evalúa una expresión que resulta en un valor de verdad, y repite el ciclo
tantas veces como la expresión evaluada sea cierta. Veamos un ejemplo:


cuenta = 0

while (cuenta < 5) do

puts cuenta # imprime desde 0 hasta 4

cuenta += 1

end

La última vez que repite el ciclo, cuenta←5, y la comparación (5 < 5) es
falsa, así que ya no repite el bloque más. El uso de la palabra do también es
opcional.

until

La instrucción until, es similar al while, excepto que la expresión evaluada
tiene una lógica negativa: el bloque se repite mientras que la condición sea
falsa.


cuenta = 0

until cuenta >= 5 do

puts cuenta # imprime desde 0 hasta 4

cuenta += 1

end



for


for e in a # por cada elemento e de a, haga

puts e # imprima el valor de e

end # fin del ciclo


Cuando queremos repetir un ciclo cierto número de veces, usamos un rango,
donde escribimos los límites de la iteración separados por dos puntos, así:

for i in 5..10 # repetidamente va a asignar valores

puts i # desde i←5 hasta i←10 y los va a imprimir

end


Cuando usamos tres puntos, excluye el último valor del rango. Esto es útil
para iterar sobre los valores de un array (cuyo último índice es n-1):


a = ["a","b","c"]

for i in 0...a.size # size=3; asigna valores i entre 0..2

puts "#{i}:#{a[i]}" # evalua desde a[0] hasta a[2] y los imprime

end # imprime 0:a, 1:b, 2:c (un par por linea)


cuando se saben las veces a repetir

Cuando sabemos exactamente el número de repeticiones,podemos usar
times, que es más fácil:


5.times do

puts "hola"

end
Otra manera, usando la función upto() sobre los enteros:


1.upto(5) do

puts "Hola"

end

También existe la función correspondiente downto() sobre los enteros:


5.downto(1) do |i|

puts “#{i}:Hola” # resulta en 5:Hola, 4:Hola, etc por cada linea

end



step

Una cuenta que incremente por números diferentes de 1 se puede hacer con la
función step():


2.step(10, 2) do |i| # desde 2 hasta 10, incrementando de a 2

puts i # imprime i: 2, 4, 6, 8, 10

end


Aunque parezca increíble, la función step() también funciona sobre los reales,
con incrementos fraccionarios:


2.step(10, 0.5) do |r| # desde 2 hasta 10, incrementando de a 0.5

puts r # imprime r: 2.0, 2.5, 3.0, 3.5, etc

end



loop do

crea un ciclo potencialmente infinito. Para salirse del
ciclo se usa la instrucción break, junto con una condición. El ciclo anterior se
expresaría de la siguiente manera:


cuenta = 0

loop

break if cuenta >= 5

puts cuenta # imprime desde 0 hasta 4

cuenta += 1

end

Otra instrucción, loop, crea un ciclo potencialmente infinito. Para salirse del ciclo se usa la
instrucción break, junto con una condición. El ciclo anterior se expresaría de la siguiente manera:
cuenta = 0
loop
break if cuenta >= 5
puts cuenta
cuenta += 1
end