estructuras de control

Anuncio
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 SelectCase)
 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.
Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.
Control de Flujo con Java
Al igual que otros lenguajes, Java tiene sentencias de control de flujo y su sintaxis es muy similar
al del lenguaje C. Por lo tanto estas sentencias de flujo siguen el teorema de la programación
estructurada, conocido también como el teorema de Böhm y Jacopini que dice:
Un programa propio puede ser escrito utilizando únicamente tres tipos de estructuras de control de
secuencia:
 Secuencial
 Selectiva
 Repetitiva
Hay que recordar que un programa propio es aquel que cumple las propiedades de tener un solo
punto de entrada y uno de salida, donde toda sentencia (instrucción) del algoritmo es accesible, esto
es, existe al menos un camino que va desde el inicio hasta el fin del algoritmo, se puede seguir y
pasa a través de dicha sentencia y no tiene ciclos o bucles infinitos
1.1 Flujo secuencial
La estructura secuencial es trivial, esto es, una concatenación de instrucciones o sentencias
de principio a fin
Mas información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Estructuras_de_control
1.2 Selectiva simple
Hay de tres variantes de la estructura de control de flujo selectiva; la estructura
selectiva simple, la doble y la múltiple.
Estructura de control de flujo selectiva simple
Mas información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Estructuras_de_selecci%C3%B3n
1.2.1 La sentencia if
El siguiente diagrama nos da la sintaxis de la instrucción if, de decisión simple, entre paréntesis se
pone la expresión la cual debe dar un valor booleano true o false , ( en Java la expresión debe dar
un valor de verdad false o true, no es como en lenguaje C que la expresión puede dar cero y se toma
como falso y un valor diferente de cero como verdadero ), si es true la expresión es verdadera,
entonces se realiza el conjunto de sentencias, pero si es false se transfiere el control de flujo
después de la llave que cierra el ámbito del bloque if.
SINTAXIS:
if (expresion)
{
Sentencia(s)
}
1.2 Selectiva doble
A continuación vamos a analizar la estructura selectiva doble o también conocida como if - else .
Veamos el siguiente figura:
1.3.1 La sentencia if-else
El siguiente diagrama nos da la sintaxis de la instrucción if-else, de decisión doble, entre paréntesis
se pone la expresión la cual debe dar un valor booleano true o false . Si es true la expresión es
verdadera, entonces se realiza el primer conjunto de sentencias, pero si es false se transfiere el
control de flujo al segundo bloque de sentencias correspondente al else.
SINTAXIS:
if (EXPRESIÓN)
{
SENTENCIA(S)
}
else
{
SENTENCIA(S)
}
Mas información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Sentencia_if-else
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Operador_if-else
1.3 Selectiva múltiple
La última variante de la estructura de control de flujo selectiva; la estructura selectiva múltiple ,
utilizada para múltiples alternativas. Como veremos se utiliza el if else-if ... else-if else y el switch case. Como veremos, utilizamos el if múltiple cuando los valores que toma una variable que se
quiere determinar en la expresión booleana son continuos, y en el caso del switch - case cuando los
valores de expresión booleana son discretos.
1.4.1 La sentencia if else-if ... else-if else
El siguiente diagrama nos da la sintaxis de la instrucción if else-if ... else-if else, de decisión
múltiple. ( también conocidos como if encadenados ).
Entre paréntesis se pone la expresión1 la cual debe dar un valor booleano true o false , si es true
la expresión1 es verdadera, entonces se realiza el primer conjunto de sentencias, pero si es false
se transfiere el control de flujo al primer else-if para evaluar la expresión2. Si esta es true
entonces se ejecutan el segundo conjunto de sentencias , pero si es false entonces se transfiere el
control del flujo al siguiente else-if, y así sucesivamente hasta llegar al último else-if.
En caso de que ninguno de los if y else-if fueran true se ejecutará el último conjunto de sentencias
dentro del bloque else, el cual garantiza que por lo menos algo se hará si ninguno fue verdadero.
SINTAXIS:
if ( EXPRESION 1){
SENTENCIA(S)
} else
if (EXPRESION 2){
SENTENCIA(S)
} else
if (EXPRESION 3){
SENTENCIA(S)
} else
if (EXPRESION 4){
SENTENCIA(S)
}
1.4 Ciclo while
Estructura de control de flujo while ( mientras ), es una estructura de repetición o iteración.
1.5.1 La sentencia while
El siguiente diagrama nos muestra la sintaxis del ciclo repetitivo while, el cual funciona así:
primeramente se evalúa la expresión, si es true se ejecuta el bloque o conjunto de sentencias hasta
que de lo contrario si la expresión es false se transfiere el control después de la llave que cierra el
bloque de instrucciones. Debido a que la evaluación de la instrucción se hace al principio, el
conjunto o bloque de sentencias puede no ejecutarse ni una sola vez.
SINTAXIS:
while(EXPRESION)
{
SENTENCIAS
}
Mas información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Sentencia_while
1.5 Ciclo do-while
La estructura de control de flujo do-while (Repetir-hasta) es otra de las estructuras de repetición
que se usan frecuentemente.
1.6.1 La sentencia do-while
En el siguiente diagrama se muestra la sintaxis del ciclo repetitivo do-while, el cual funciona así:
primeramente se ejecuta el bloque o conjunto de sentencias por lo menos una vez desde el do
hasta el while donde lleva a cabo la evaluación la expresión , si es true se vuelve a repetir el ciclo
y a ejecutar por segunda vez el bloque de sentencias, si de lo contrario la expresión es false se
transfiere el control después del punto y coma ( ; ) que es el separador de sentencias e indicador del
final del ciclo.
SINTAXIS:
do
{
SENTENCIA(S)
}
while(EXPRESIÓN);
Mas información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Sentencia_do-while
1.6 Ciclo for
Estructura de control de flujo for ( Para ) es ampliamente utilizada como estructura de control de flujo
de ciclo cuando sabemos de antemano cuantas ciclos o iteraciones queremos.
1.7.1 La sentencia for
En el siguiente diagrama se muestra la sintaxis del ciclo repetitivo for, el cual funciona así:
primeramente se ejecuta la expresión1 ( que es la parte de inicialización de las variables contador
del ciclo o donde se asignan valores iniciales a los contadores ), después se evalúa pro primera vez
la expresión2 que es booleana y si da true entonces se ejecuta el bloque de sentencias, pero si da
false entonces se finaliza el ciclo transfiriéndose el control de flujo después de la llave que cierra el
bloque.
Se preguntará ¿ Cuándo se evalúa la expresion3 ? , esta se evalúa primeramente en la segunda
pasada o en la segunda iteración, y posteriormente se pasa a evaluar de nuevo la expresión2,
después se vuelve a hacer la prueba lógica de la expresión2 y así sucesivamente hasta que la
expresión2 sea false. Observe en el diagrama que la expresión1 solo se evalúa una vez ( en la
inicialización ).
SINTAXIS:
for(EXPRESION1;EXPRESIÓN2;EXPRESION3)
{
SENTENCIA(S)
}
Más información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Sentencia_for
1.7 Sentencia switch
La estructura de control de flujo selectiva múltiple, para el caso de varias alternativas ; Como
vimos a veces se utiliza el if else-if ... else-if else y el switch-case. Aquí veremos, que se
utiliza el switch-case cuando la expresión que se quiere determinar arroja valores que son
discretos para cada caso que se quiera evaluar.
1.8.1 La sentencia switch
En el siguiente diagrama se muestra la sintaxis de la sentencia switch y como podemos ver
primeramente se evalúa la expresión expr que esta dentro del paréntesis; después dependiendo de
el valor si es el caso de que valga c1 entonces se efectúa el bloque del primer conjunto de
sentencias hasta su rompimiento con la instrucción break la cual transfiere el control del flujo hasta
después de la última llave que cierra la sentencia switch.
El uso de break es importante porque si se omite se pasa a hacer el segundo , tercero, etc., bloques
de instrucciones.
Dependiendo del valor de expr, si es c2, ejecutaría el segundo bloque de sentencias, si el valor de
expr fuera c3 ejecutaría el tercer bloque de sentencias y así sucesivamente hasta los cn valores
posibles de expr.
SINTAXIS:
switch ( EXPRESION ) {
case 1 :
SENTENCIA(S);
break;
case 2 :
SENTENCIA(S);
break;
case n :
SENTENCIA(S);
break;
}
1.8.2 La sentencia switch con default
En el siguiente diagrama se muestra la sintaxis de la sentencia switch-default y como podemos es
una variante de la sentencia switch. La diferencia estriba en el uso de una alternativa que se puede
dar por omisión.
El uso de default es importante porque si expr no coincide con ninguno de los valores c1, ni c2, ... ,
cn entonces se ejecutan las sentencias del bloque default hasta el break que trasfiere el control de
flujo después de la llave que cierra de la sentencia switch.
SINTAXIS:
switch ( EXPRESION ) {
case 1 :
SENTENCIA(S);
break;
case 2 :
SENTENCIA(S);
break;
case n :
SENTENCIA(S);
break;
default :
SENTENCIA(S);
break;
}
Mas información en…
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Sentencia_switch
Descargar