Requisito previo: toma de decisiones , bucles
El lenguaje de programación Ruby proporciona algunas declaraciones además de bucles, condicionales e iteradores, que se utilizan para cambiar el flujo de control en un programa.
En otras palabras, estas declaraciones son una pieza de código que se ejecuta una tras otra hasta que la condición es verdadera y cuando la condición se vuelve falsa, el código termina. Las siguientes son las declaraciones que pueden alterar el flujo de control en un programa de Ruby:
- romper declaración
- próxima declaración
- declaración de rehacer
- declaración de reintento
- declaración de devolución
- instrucción lanzar/atrapar
declaración de ruptura
En Ruby, la instrucción Break se usa para salir de un bucle cuando la condición es verdadera. La declaración de interrupción se usa básicamente en el ciclo while porque en el ciclo while la salida se imprime hasta que la condición es verdadera, cuando la condición es falsa, el ciclo sale. La instrucción break se usa dentro del bucle. La declaración de ruptura se ejecuta mediante la palabra clave de ruptura . La declaración de ruptura también se puede usar en declaraciones de control de caso , mientras y for .
Sintaxis:
break
Ejemplo:
# Ruby program to illustrate break statement #!/usr/bin/ruby i = 1 # using while loop while true if i * 6 >= 30 # using break statement break # ending of if statement end puts i * 6 i += 1 # ending of while loop end |
Producción:
6 12 18 24
Explicación: En el ejemplo anterior, la instrucción break se usa para detener la ejecución del ciclo while cuando la condición if i * 6 >= 30 se vuelve verdadera. De lo contrario, el bucle va a infinito.
próxima declaración
En Ruby, la siguiente declaración se usa para saltar al siguiente iterador del ciclo dado. La siguiente declaración es idéntica a la declaración de continuación en lenguaje C y Java. Cuando se utilice la siguiente instrucción, no se realizará ninguna otra iteración. Generalmente, la siguiente declaración se usa en bucles for y while .
Sintaxis:
next
Ejemplo:
# Ruby program to illustrate next statement #!/usr/bin/ruby # using for loop for t in 0 ... 10 # using if statement if t == 5 then # using next statement next # ending of if end # displaying values puts t # end of for loop end |
Producción:
0 1 2 3 4 6 7 8 9
Explicación: En el programa anterior, 5 no se imprimirá en la salida debido a la siguiente instrucción. Entonces, aquí en 5 , la próxima declaración hará que se salte y continúe desde la siguiente declaración en el programa.
Declaración de rehacer
La instrucción redo se usa para reiniciar la iteración actual de un bucle o el iterador. Hay una diferencia entre la instrucción redo y next. La siguiente instrucción siempre transfiere el control al final del ciclo, donde la instrucción posterior al ciclo puede comenzar a ejecutarse, pero la instrucción redo transfiere el control nuevamente a la parte superior del bloque o ciclo para que la iteración pueda comenzar de nuevo.
Sintaxis:
redo
Ejemplo:
# Ruby program to demonstrate the redo statement # defining a variable val = 0 # using while loop which should give # output as 0,1,2,3 but here it will # output as 0,1,2,3,4 while (val < 4 ) # Control returns here when # redo will execute puts val val += 1 # using redo statement redo if val == 4 # ending of while loop end |
Producción:
0 1 2 3 4
Explicación: En el programa anterior, la instrucción redo transferirá el control a puts val, que es la primera expresión del ciclo while . No va a volver a probar la condición del bucle ni a buscar el siguiente elemento del iterador. Entonces, aquí while loop imprimirá 0,1,2,3,4 en lugar de 0,1,2,3 .
declaración de reintento (en desuso en versiones recientes)
La declaración de reintento se usa para reiniciar un iterador en función de una determinada condición o cualquier invocación de método desde el principio. En palabras simples, la declaración de reintento transfiere el control al principio. Por lo general, rara vez se usa una declaración de reintento. Solo funcionará hasta la versión 1.8 de Ruby .
Nota: la declaración de reintento se eliminó de la versión 1.9 de Ruby en adelante porque se considera una función de idioma obsoleta. Por lo tanto, difícilmente se ejecutará en IDE en línea porque usa principalmente una versión superior a 1.8 .
Sintaxis:
retry
Ejemplo:
# Ruby program to demonstrate the retry statement # variable var = 7 # Iterate 7 times from 0 to 7-1 var.times do |val| # display iteration number puts val # If we've reached 6 if val == 6 # Decrement val and user won't # reach 6 next time var = var - 1 # Restart the iteration # using retry statement retry # end of if end # end of do..end end |
Producción:
0 1 2 3 4 5 6 0 1 2 3 4 5
Explicación: En el programa anterior, cuando el control va a la declaración de reintento, transfiere ese control a var.times do |val| . Ahora aquí se actualiza el valor de la variable var, es decir , 5 . Por lo tanto, el usuario no llegará a 6 la próxima vez y la declaración de reintento no se ejecutará nuevamente.
declaración de devolución
Esto se usa para salir de un método, con o sin un valor. Siempre devuelve un valor a su llamador. Hay muchas opciones con la declaración de devolución. Si no se usa una expresión con la declaración de devolución, siempre devuelve el valor del método como nil. Una lista de expresiones después de la declaración de retorno siempre está separada por una coma (,). En este caso, el valor del método será una array que contiene los valores de esas expresiones especificadas.
Ejemplo:
# Ruby program to demonstrate the return statement #!/usr/bin/ruby # defining a method 'geeks' def geeks # variables of method val1 = 61 val2 = 55 # returning multiple values return val1, val2 # this statement will not execute puts "Hello Geeks" # end of the method end # variable outside the method to # store the return value of the method value = geeks # displaying the returned values puts value |
Producción:
55 61
Explicación: En el ejemplo anterior, el método geeks tiene una declaración de devolución que devuelve los dos valores, es decir, val1 y val2 , a quien llama. Aquí valor es la variable que almacenó los valores devueltos. El punto importante es que la declaración pone «Hello Geeks» después de la declaración de devolución no se ejecuta porque las declaraciones posteriores a la declaración de devolución no se ejecutarán dentro de un método.
Sentencia lanzar/atrapar
throw y catch se utilizan para definir una estructura de control que puede considerarse como una ruptura de varios niveles. throw se usa para romper el ciclo actual y transferir el control fuera del bloque catch . Lo mejor de throw es que puede romper el bucle o los métodos actuales o podemos decir que puede cruzar cualquier número de niveles. Aquí, catch define un » bloque etiquetado » de código que hace que salga por el bloque throw. Se discutirán más detalles en la sección Manejo de excepciones de Ruby.
Ejemplo:
# Ruby program to illustrate the throw/catch statement # for altering the control flow # defining a method def lessNumber(num) # using throw statement # here 'numberError' is its label throw :numberError if num < 10 # displaying result puts "Number is Greater than 10!" end # catch block catch :numberError do # calling method lessNumber( 11 ) lessNumber( 78 ) # exits catch block here lessNumber( 7 ) lessNumber( 4 ) end puts "Outside Catch Block" |
Producción:
Number is Greater than 10! Number is Greater than 10! Outside Catch Block
Explicación: En el programa anterior, 11 se pasa al método lessNumber para verificar si es mayor que 10 o no. 11 es mayor que 10, por lo que la declaración se imprimirá en la pantalla y se ejecutará la siguiente declaración del bloque catch . Ahora se pasa 78 a la llamada al método, que se verifica y es mayor que 10, por lo que la declaración se imprimirá en la pantalla. Pero tan pronto como se pasa 7, que es menor que 10 , se lanza: numberError hace que el bloque catch salga y todas las declaraciones se salten y se imprimirá la última declaración «Fuera del bloque Catch». Entonces, aquí, tan pronto como la condición se vuelve falsa , throw hace que el bloque catch salga de la ejecución del bloque catch.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA