ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Sentencias De Selección


Enviado por   •  9 de Septiembre de 2012  •  719 Palabras (3 Páginas)  •  444 Visitas

Página 1 de 3

§1 Sinopsis

Las sentencias de selección, también llamadas de control de flujo, permiten decidir entre distintos cursos de acción en función de ciertos valores. En C++ existen tres tipos de estas sentencias de selección:

• if...else .

• else if .

• switch .

Recuerde que de no ser por estas sentencias, el flujo de ejecución del programa estaría siempre constreñido a la ejecución de sus sentencias en el orden en que están colocadas en el fuente.

§2 if … else

En su forma abreviada, cuando no existe la cláusula else, esta sentencia permite escoger entre ejecutar o no una sentencia, en función del resultado de una expresión lógica. En su forma ampliada, cuando la cláusula else está presente, permite escoger entre dos opciones alternativas.

§2.1 Sintaxis

if ( <condición> ) <sentencia1>;

[ else <sentencia2>; ]

§2.2 Descripción

<condición> debe ser una expresión relacional ( 4.9.12) que devuelve un valor lógico, es decir, un bool ( 3.2.1b), y estar obligatoriamente entre paréntesis. Pueden declararse variables dentro de la <condición>. Por ejemplo, la siguiente es una sintaxis válida:

if (int val = func(arg))

val = z ;

else val = y;

El ámbito de la variable val incluye toda la sentencia if, incluyendo, en su caso, el bloque <sentencia2> de else. La cláusula else es opcional, pero no puede haber sentencias entre el if y else. Recuerde las precauciones indicadas respecto de las expresiones relacionales ( 4.9.12), ya que son motivo frecuente de error en este tipo de sentencias.

<sentencia1>. Es una sentencia o bloque de código que se ejecuta si <condicion> se evalúa como cierto (true != 0).

<sentencia2> es una sentencia o bloque de código que se ejecuta si existe un else y <condicion> resulta falso (false == 0)

Puesto que el if simplemente chequea el valor resultante de <condicion> (igual o desigual a cero), las dos expresiones siguientes son equivalentes:

if ( expresion ) <sentencia> ;

if ( expresion !=0 ) <sentencia> ;

La forma más general es:

if (<condicion>) {

<sentencia1>;

}

else {

<sentencia2>;

}

§2.3 Ejemplos

Uno sencillo:

if (salida == 'S') break;

Otro ejemplo:

if (a > b)

z = a;

else

z = b;

Se podría haber escrito de forma más comprimida:

if (a > b) z = a;

else z = b;

También:

a > b ? z = a : z = b ;

o mejor aún:

z = (a > b ? a : b);

Otro ejemplo:

if (int val = func(count)) { /* sentencias */ }

else { // otra vía de acción

cout << "val es falso";

}

Puesto que la cláusula else es opcional, en los if... else anidados podría haber ambigüedad sobre a qué if corresponde un else; esto se evita asociando el else al if más interno sin else. Por ejemplo, en los dos trozos de código siguientes, el primero tiene una indentación que no se corresponde con la realidad lógica del programa.

// mal indentado: ------------

if ( n > 0 )

if ( a > b )

z = a;

else

z = b;

// bien indentado: -----------

if ( n > 0 )

if ( a > b )

z = a;

else

z = b;

§3 else if

Estas sentencias no representan en realidad nada nuevo, solo una sucesión de if else anidados, aunque de uso muy frecuente, por lo que haremos una consideración especial de este caso.

if ( <expresion1> )

<sentencia1> ;

else if ( <expresion2> )

<sentencia2> ;

else if ( <expresion3> )

<sentencia3> ;

else

<sentencia4> ;

En realidad, a la luz de lo expuesto en el apartado anterior, su indentación correcta sería:

if ( <expresion1> )

<sentencia1> ;

else

if ( <expresion2> )

<sentencia2> ;

else

if ( <expresion3> )

<sentencia3> ;

else

<sentencia4> ;

...

Descargar como  txt (3.7 Kb)  
Leer 2 páginas más »
txt