Sentencia, secuencia y bloque

32
Sentencia, Secuencia y Bloque CLASE 07

Transcript of Sentencia, secuencia y bloque

Page 1: Sentencia, secuencia y bloque

Sentencia, Secuencia y BloqueCLASE 07

Page 2: Sentencia, secuencia y bloque

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.

Page 3: Sentencia, secuencia y bloque

Sentencia, Secuencia y Bloque

Page 4: 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.

Page 5: Sentencia, secuencia y bloque

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.

Page 6: Sentencia, secuencia y bloque

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

locales y globales sobre la conversión de

dólares a pesos mexicanos

Page 7: Sentencia, secuencia y bloque

EJEMPLO (EJ7_1)

Page 8: Sentencia, secuencia y bloque

EJEMPLO (EJ7_1)

Page 9: Sentencia, secuencia y bloque

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.

Page 10: Sentencia, secuencia y bloque

Declaraciones Globales y Locales

Page 11: Sentencia, secuencia y bloque

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:

Page 12: Sentencia, secuencia y bloque

Sentencias de Asignación

Page 13: Sentencia, secuencia y bloque

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

incremento/decremento

Page 14: Sentencia, secuencia y bloque

Sentencias de Asignación

Page 15: Sentencia, secuencia y bloque

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.

Page 16: Sentencia, secuencia y bloque

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.

Page 17: Sentencia, secuencia y bloque

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:

Page 18: Sentencia, secuencia y bloque

Sentencias de Selección

Page 19: Sentencia, secuencia y bloque

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:

Page 20: Sentencia, secuencia y bloque

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:

Page 21: Sentencia, secuencia y bloque

EJEMPLO (EJ7_2)

Page 22: Sentencia, secuencia y bloque

EJEMPLO (EJ7_2)

Page 23: Sentencia, secuencia y bloque

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

sintaxis:

Page 24: Sentencia, secuencia y bloque

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:

Page 25: Sentencia, secuencia y bloque

EJEMPLO (EJ7_3)

Page 26: Sentencia, secuencia y bloque

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:

Page 27: Sentencia, secuencia y bloque

ESTRUCTURAS DE CONTROL

Page 28: Sentencia, secuencia y bloque

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:

Page 29: Sentencia, secuencia y bloque

EJEMPLO (EJ7_4)

Page 30: Sentencia, secuencia y bloque

EJEMPLO (EJ7_4)

Page 31: Sentencia, secuencia y bloque

EJEMPLO (EJ7_5)

Page 32: Sentencia, secuencia y bloque

EJEMPLO (EJ7_5)