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

Estructuras De Control C++

elbort17 de Septiembre de 2013

2.814 Palabras (12 Páginas)427 Visitas

Página 1 de 12

Tema 3

Estructuras de control en C++

1

E.T.S.I. Telecomunicaci´on Laboratorio de Programaci´on 2

2

´Indice general

3.1. Bloques de sentencias

En C++ el concepto de bloque de sentencias se utilizar para agrupar un conjunto de

sentencias dentro de un ´ambito concreto del programa. Un bloque de sentencias es un

conjunto de instrucciones englobadas bajo llaves: ’{’ y ’}’.

Hay diferentes lugares, en un programa escrito en C++, donde podemos usar bloques

de c´odigo. Por ejemplo, en la sintaxis habitual de la funci´on main(), todas las instrucciones

que pertenecen a esta funci´on principal se escriben dentro de una llave de apertura

y una llave de cierre. Todo lo que hay entre esas dos llaves es el c´odigo de la funci´on

principal. De la misma manera, como se ver´a en el siguiente tema, cualquier otra funci´on

tiene sus llaves para agrupar las instrucciones que forman parte de ella.

Por otro lado, en C++ son posibles otros bloques de c´odigo que, como veremos en

este tema, est´an asociados a estructuras de control y que engloban un conjunto de instrucciones

que se ejecutan bajo las condiciones que controlan estas estructuras.

3.2. Operadores relacionales y l´ogicos

ANSI C++ define el tipo bool que tiene dos literales, false y true. Una expresi´on

booleana o l´ogica es, por consiguiente, una secuencia de operandos y operadores que se

combinan para producir uno de los valores false o true.

ANSI C no tiene tipos de datos l´ogicos o booleanos para representar los valores verdadero

o falso. En su lugar utiliza el tipo int para ese prop´osito, con el valor 0 representando

false y cualquier otro valor representando verdadero.

Operadores como == o <= que comprueban una relaci´on entre dos operandos se llaman

operadores relacionales y se utilizan en expresiones de la forma:

expresion1 operador_relacional expresion2

3

E.T.S.I. Telecomunicaci´on Laboratorio de Programaci´on 2

Los operadores relacionales se usan normalmente en sentencias de selecci´on y de

iteraci´on para comprobar una condici´on. Operadores relacionales en C++:

Operador Significado Ejemplo

== (¡Ojo!, no =) Igual a a == b

!= No igual a a != b

> Mayor que a > b

< Menor que a < b

>= Mayor o igual a >= b

<= Menor o igual a <= b

Ejemplos:

x < 5.75 b * b >= 5.0 * a * c

Los operadores l´ogicos se utilizan con expresiones para devolver un valor verdadero o

falso (true o false). Se denominan tambi´en operadores booleanos. Los operadores l´ogicos

de C++ son: not (!), and (&&) y or (||). El operador not produce falso si su operando es

verdadero, y viceversa. El operador and produce verdadero s´olo si ambos operandos son

verdaderos; si cualquiera de los operando es falso, produce falso. El operador or produce

verdadero si cualquiera de los operandos es verdadero, y falso en caso de que los dos

operandos sean falsos. Ejemplos:

!(7 == 5) (aNum > 5) && (letra == ’a’) a >= 5 || b == 3 && c <= 8

3.3. Precedencia de operadores

La precedencia de operadores determina el orden en que se eval´uan los operadores

en una expresi´on. Seguiremos como referencia la siguiente lista, donde los operadores de

cada grupo tiene prioridad sobre los del grupo siguiente:

1. ! (not) - (menos unario) + (m´as unario)

2. operadores multiplicativos: * / %

3. operadores aditivos: + - (binarios)

4. operadores relacionales de diferencia: < <= > >=

5. operadores relacionales de igualdad y desigualdad: == !=

6. operador l´ogico de conjunci´on: &&

4

Estructuras de control en C++

7. operador l´ogico de disyunci´on: ||

Adem´as de esta lista, tenemos que tener en cuenta los siguientes puntos:

Si dos operadores se aplican al mismo operando, el operador con m´as prioridad se

aplica primero.

Todos los operadores del mismo grupo tienen igual prioridad y asociatividad (se

expresan de izquierda a derecha).

Los par´entesis tienen la m´axima prioridad.

3.4. Estructuras de selecci´on

C++ tiene dos estructuras de control para la selecci´on, if (selecci´on simple y binaria)

y switch (selecci´on m´ultiple).

3.4.1. Estructura if

La sentencia if elige entre varias alternativas en base al valor de una o m´as expresiones

booleanas.

La notaci´on BNF de esta sentencia es la siguiente:

<sent_if> ::= if (<expres_bool>) <bloque_sent>

{else if (<expres_bool>) <bloque_sent>}

[else <sec_sent>]

donde <expres bool> es una expresi´on booleana y <sec sent> puede ser una sola sentencia

o un bloque de sentencias.

<sec_sent> ::= [’{’{<sentencia>}’}’|<sentencia>]

Las formas m´as sencillas de esta sentencia, son :

if (<expres_bool>) if (<expres_bool>)

<sentencia> <sentencia>

else

<sentencia>

if (<expres_bool>) if (<expres_bool>)

5

E.T.S.I. Telecomunicaci´on Laboratorio de Programaci´on 2

{ {

<sent 1> <sent 1>

... ...

<sent n> <sent n>

} }

else

{

<sent 1>

...

<sent n>

}

N´otese que en el caso en el que s´olo siga una sentencia al if no es necesario incluir

las llaves, pero s´ı lo es cuando lo siguen m´as de una sentencia.

Los programas a menudo realizan una serie de tests de los que s´olo uno ser´a verdadero.

Como ejemplo, consid´erese un programa para escribir en pantalla un mensaje diferente

correspondiente a un n´umero que representa una calificaci´on num´erica. En C++, utilizando

sentencias if anidadas, quedar´ıa:

if (Nota == 10)

cout << "Matricula de Honor";

else

if (Nota >= 9)

cout << "Sobresaliente";

else

if (Nota >= 7)

cout << "Notable";

else

if (Nota >= 5)

cout << "Aprobado";

else

cout << "Suspenso";

Sin embargo, C++ nos proporciona una forma m´as concisa de expresar lo anterior, completamente

equivalente:

if (Nota == 10)

cout << "Matricula de Honor";

6

Estructuras de control en C++

else if (Nota >= 9)

cout << "Sobresaliente";

else if (Nota >= 7)

cout << "Notable";

else if (Nota >= 5)

cout << "Aprobado";

else

cout << "Suspenso";

De esta ´ultima forma evitamos tener que usar numerosas sangr´ıas del c´odigo que

pueden dificultar la lectura. Por tanto, el criterio que se debe seguir para decidir el

anidamiento o no de estructuras selectivas es la legibilidad del c´odigo.

3.4.2. Estructura switch

Aunque la sentencia if de C++ es muy potente, en ocasiones su escritura puede

resultar tediosa, sobre todo en casos en los que el programa presenta varias elecciones

despu´es de chequear una expresi´on: selecci´on m´ultiple o multialternativa. En situaciones

donde el valor de una expresi´on determina qu´e sentencias ser´an ejecutadas es mejor

utilizar una sentencia switch en lugar de una if. Por ejemplo, la sentencia switch:

switch (operador) {

case + :

resultado = A + B;

break;

case - :

resultado = A - B;

break;

case * :

resultado = A * B;

break;

case / :

resultado = A / B;

break;

default :

cout << "Operador invalido";

}

7

E.T.S.I. Telecomunicaci´on Laboratorio de Programaci´on 2

tiene el mismo efecto que la siguiente sentencia if:

if (operador == +)

resultado = A + B;

else if (operador == -)

resultado = A - B;

else if (operador == *)

resultado = A * B;

else if (operador == /)

resultado = A / B;

else

cout << "Operador invalido";

En este ejemplo se observa que el valor de la expresi´on operador (en este caso s´olo una

variable) determina qu´e sentencias se van a ejecutar. Esta expresi´on recibe el nombre de

selector de la estructura selectiva m´ultiple. Tambi´en se puede apreciar la mayor simplicidad

de la primera sentencia.

La palabra reservada break permite que el flujo de programa se detenga justo despu´es

de la ejecuci´on de la sentencia anterior a ese break, impidiendo que se ejecuten las

sentencias correspondientes a las siguientes alternativas del switch. Por tanto, debemos

obligatoriamente acabar cada bloque de sentencias correspondiente a cada alternativa

con una sentencia break.

Por otro lado, la alternativa default es opcional y engloba un conjunto de sentencias

(que puede ser vac´ıo, contener una sola sentencia o varias) que se ejecutan en caso de

que ninguna de las alternativas

...

Descargar como (para miembros actualizados) txt (20 Kb)
Leer 11 páginas más »
Disponible sólo en Clubensayos.com