jueves, 26 de marzo de 2015

Estructura if con anidamientos

Estructura IF con anidamientos

Existen las sentencias condicionales simples, que son aquellas que sólo se forman con un if, las condicionales compuestas, formadas con un if y un else asociado a ese if, y las anidadas que consisten en que dentro de una sentencia ifpodemos colocar otra sentencia if. Estas anidaciones se utilizan para crear programas donde se evalúan expresiones complejas.

Para que veas como funcionan los if anidados voy a ponerte varios ejemplos empezando desde lo más simple hasta lo más complejo y voy a marcarte cómo el compilador evalúa dichos ejemplos.

Comenzamos con las sentencias condicionales simples, que son las que sólo utiliza un if:

1  if (num==5){
2 sentencia1;
3 sentencia 2;
4 }

En esta condición el compilador actúa de la siguiente manera, el compilador llega a la línea 1, y evalúa la expresión num==5; si es cierta entra y realiza las sentencia1 y la sentencia 2, si es falsa se salta las lineas 2,3 y 4 y continua con el programa.

Continuamos con las sentencias condicionales compuestas, que son las que añaden al if unelse:

1 if(num==5){
2 sentencia1;
3 sentencia2;
4 }
5 else {
6 sentencia3;
7 sentencia4;
8 }

En este caso el compilador actúa de la siguiente manera; llega a la línea 1, evalúa la condición num==5. Si esta condición es cierta realiza lo que hay dentro del if , es decir, las sentencia1 y la sentencia2  e ignora todo lo que hay dentro del else, continuando el programa en la línea 8. En el caso de que num==5 sea falso el compilador ignora todo lo que hay dentro del if y se va a la línea 5 compilando lo que hay dentro del else, es decir, la sentencia3 y la sentencia4. Luego continua el programa a partir de la línea 8. Hay que tener claro que un else siempre está asociado a un if y lo que determina a cual va asociado depende de la disposición de las {}, vamos a verlo a continuación con los anidamientos.

Los if-else anidados son sentencias condicionales simples y compuestas, las cuales, consisten en dentro de una sentencia if se incluye otra sentencia if. Vamos a ver un ejemplo:

1 if(num==5){
2             sentencia1
3             sentencia2
4 }
5 else{
6              if(num<5){
7                           sentencia3;
8                           sentencia 4;
9               }
10             else{
11                          sentencia5;
12                          sentencia6;
13              }
14 }

Vamos a analizar este ejemplo, el compilador llegará a la línea 1 y evaluará la expresión condicional num==5, si es verdadera, entrará en el if y realizará la sentencia1 y la sentencia2, e ignorará todo el else posterior yendo a la línea 14 y continuando con el programa. En el caso de que num==5 sea falso, el compilador ignorará el if y entrará en elelse de la línea 5. Dentro de este else el compilador evaluará la condición de la línea 6  num<5, según la veracidad o falsedad de esta condición,el compilador ejecutará lo que hay dentro del if líneas 7 y 8 o por el contrario ejecutará lo que hay dentro del else líneas 11 y 12, a continuación el compilador continuará con la ejecución a partir de la línea 14.

Después de esta explicación, te voy a demostrar que anidar if tiene sus ventajas y su motivo de eficiencia. Viendo el código del último ejemplo y analizándolo podemos decir que es lo mismo que poner lo siguiente:

1 if(num==5){
2                 sentencia1;
3                 sentencia2;
4}
5 if(num<5){
6                 sentencia3;
7                 sentencia4;
8}
9if(num>5){
10               sentencia5;
11                sentencia6;
12 }

¿Que diferencia hay entre un código anidado y otro no anidado?. Pues esa es la cuestión en el no anidado el compilador evaluará las tres condiciones if, sin embargo, en el anidado como mucho evaluará sólo 2 condiciones if, por tanto el anidamiento es más eficiente. Este es el motivo del uso de los anidamientos.

No hay comentarios:

Publicar un comentario