Sentencia, secuencia y bloque
Transcript of Sentencia, secuencia y bloque
Sentencia, Secuencia y BloqueCLASE 04
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)