Sentencia, secuencia y bloque

Post on 12-Apr-2017

189 views 0 download

Transcript of Sentencia, secuencia y bloque

Sentencia, Secuencia y BloqueCLASE 07

Sentencia, Secuencia y Bloque En C++ la unidad básica de acción es la sentencia, y expresamos la composición de sentencias

como una secuencia de sentencias terminadas cada una de ellas por el carácter “punto y coma“

(;), de tal forma que su flujo de ejecución es secuencial, es decir, se ejecuta una sentencia, y

cuando esta termina, entonces se ejecuta la siguiente sentencia, y así sucesivamente.

Un bloque es una unidad de ejecución mayor que la sentencia, y permite agrupar una secuencia

de sentencias como una unidad. Para ello enmarcamos la secuencia de sentencias entre dos

llaves para formar un bloque. Es posible el anidamiento de bloques.

Sentencia, Secuencia y Bloque

Declaraciones Globales y Locales

Distinguiremos dos clases de declaraciones: globales y locales.

Entidades globales son aquellas que han sido definidas fuera de cualquier bloque. Su ámbito de

visibilidad comprende desde el punto en el que se definen hasta el final del fichero. Respecto a

su tiempo de vida, se crean al principio de la ejecución del programa y se destruyen al finalizar

este. Normalmente serán constantes simbólicas, definiciones de tipos, declaración de prototipos

de subprogramas y definiciones de subprogramas.

Declaraciones Globales y Locales

Entidades locales son aquellas que se definen dentro de un bloque. Su ámbito de visibilidad

comprende desde el punto en el que se definen hasta el final de dicho bloque. Respecto a su

tiempo de vida, se crean en el punto donde se realiza la definición, y se destruyen al finalizar el

bloque. Normalmente serán constantes simbólicas y variables locales.

EJEMPLO 1(EJ7_1) Programa que hace el uso de variables

locales y globales sobre la conversión de

dólares a pesos mexicanos

EJEMPLO (EJ7_1)

EJEMPLO (EJ7_1)

Declaraciones Globales y Locales

Respecto al ámbito de visibilidad de una entidad, en caso de declaraciones de diferentes

entidades con el mismo identificador en diferentes niveles de anidamiento, la entidad visible

será aquella que se encuentre declarada en el bloque de nivel de anidamiento más

interno. Es decir, cuando se solapa el ámbito de visibilidad de dos entidades con el

mismo identificador, en dicha zona de solapamiento será visible el identificador

declarado/definido en el bloque más interno. Sin embargo, no es una buena practica de

programación ocultar identificadores al redefinirlos en niveles de anidamiento mas internos, ya

que conduce a programas difíciles de leer y propensos a errores.

Declaraciones Globales y Locales

Sentencias de Asignación La sentencia de asignación permite asignar a una variable el

resultado de evaluar una expresión aritmética expresada en notación

infija, de tal forma que primero se evalúa la expresión, considerando

las reglas de precedencia y asociatividad de los operadores y a

continuación el valor resultante se asigna a la variable, que pierde.

Por ejemplo:

Sentencias de Asignación

Sentencias de Asignación Además, se definen las siguientes sentencias de

incremento/decremento

Sentencias de Asignación

Sentencias de Asignación Nota: las sentencias de asignación vistas anteriormente se pueden

utilizar en otras formas muy diversas, pero nosotros restringiremos

su utilización a la expresada anteriormente, debido a que otras

utilizaciones pueden dificultar la legibilidad y aumentar las

posibilidades de cometer errores de programación.

Sentencias de Asignación Nota: las sentencias de asignación vistas anteriormente se pueden

utilizar en otras formas muy diversas, pero nosotros restringiremos

su utilización a la expresada anteriormente, debido a que otras

utilizaciones pueden dificultar la legibilidad y aumentar las

posibilidades de cometer errores de programación.

Sentencias de Selección Las sentencias de selección alteran el flujo secuencial de ejecución

de un programa, de tal forma que permiten seleccionar flujos de

ejecución alternativos y excluyentes dependiendo de expresiones

lógicas. La más simple de todas es la sentencia de selección

condicional if cuya sintaxis es la siguiente:

Sentencias de Selección

Sentencias de Selección y cuya semántica consiste en evaluar la expresión lógica, y si su

resultado es Verdadero (true) entonces se ejecuta la secuencia de

sentencias entre las llaves. Ejemplo de programa que imprime el

valor mayor de tres números:

EJEMPLO (EJ7_2) y cuya semántica consiste en evaluar la expresión lógica, y si su

resultado es Verdadero (true) entonces se ejecuta la secuencia de

sentencias entre las llaves. Ejemplo de programa que imprime el

valor mayor de tres números:

EJEMPLO (EJ7_2)

EJEMPLO (EJ7_2)

ESTRUCTURAS DE CONTROL Otra posibilidad es la sentencia de selección condicional compuesta, que tiene la siguiente

sintaxis:

EJEMPLO (EJ7_3) y cuya semántica consiste en evaluar la expresión lógica, y si su resultado

es Verdadero (true) entonces se ejecuta la <secuencia de sentencias v> .

Sin embargo, si el resultado de evaluar la expresión lógica es Falso (false)

entonces se ejecuta la <secuencia de sentencias f> .

La sentencia de selección condicional se puede encadenar de la

siguiente forma con el flujo de control esperado:

EJEMPLO (EJ7_3)

ESTRUCTURAS DE CONTROL La sentencia switch es otro tipo de sentencia de selección en la cual la secuencia de sentencias

alternativas a ejecutar no se decide en base a expresiones lógicas, sino en función del valor que

tome una determinada expresión de tipo ordinal, es decir, una relación de igualdad entre el

valor de una expresión y unos determinados valores constantes de tipo ordinal especificados. Su

sintaxis es la siguiente:

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE CONTROL en la cual se evalúa la expresión, y si su valor coincide con <valor 1> entonces se

ejecuta la <secuencia de sentencias 1> . Si su valor coincide con <valor 2> o con

<valor 3> se ejecuta la <secuencia de sentencias 2> y así sucesivamente. Si el

valor de la expresión no coincide con ningún valor especificado, se ejecuta la

secuencia de sentencias correspondiente a la etiqueta default (si es que existe).

Nótese que la sentencia break; termina la secuencia de sentencias a ejecutar

para cada caso. Ejemplo:

EJEMPLO (EJ7_4)

EJEMPLO (EJ7_4)

EJEMPLO (EJ7_5)

EJEMPLO (EJ7_5)