ESTRUCTURAS DE CONTROL
Programación en C para electrónicos
Estructuras de control - David Carmona 2010
2
Índice
Expresiones condicionales. Sentencias if-else.
If-else múltiples. Sentencias switch. Sentencias while Sentencias do-while Sentencias for
Estructuras de control - David Carmona 2010
4
Control del flujo de ejecución Las sentencias de un programa se ejecutan
de manera secuencial, es decir: una detrás de otra en el mismo orden en el que están escritas.
En muchas ocasiones necesitaremos que los programas que escribimos sean capaces de “tomar decisiones”.
Esto implica que nuestro programa debe ser capaz de valorar una expresión y realizar distintas acciones en función del resultado.
Estructuras de control - David Carmona 2010
5
Control del flujo de ejecución El lenguaje C dispone de varias
sentencias que permiten modificar el flujo secuencial de ejecución del programa.
Estas sentencias se pueden agrupar como: Bifurcaciones:
Permiten elegir entre dos o más opciones. Bucles:
Permiten ejecutar repetidamente un conjunto de sentencias tantas veces como se desee.
6
Estructuras de control - David Carmona 2010
Estructuras de control
Expresiones condicionales
Estructuras de control - David Carmona 2010
7
Expresiones condicionales
Son aquellas expresiones que tienen como resultado valores true o false. False = 0. True = cualquier cose que de cómo
resultado un valor distinto de 0. Normalmente son expresiones que
utilizan los operadores relacionales y lógicos.
Estructuras de control - David Carmona 2010
8
Operadores relacionales.
Operador Significado Ejemplo
< Menor que a<b
> Mayor que a>3
<= Menor o igual 2<=b
>= Mayor o igual a>=3
== Igual a==b
!= Distinto 4!=3
?: Expresión condicional
Estructuras de control - David Carmona 2010
9
Operadores lógicos
Operadores
Significado ejemplo
! NOT (true si la expresión es false) !(a>b)
&& AND (true si las dos expresiones son true)
(a>b)&&(a!=3)
|| OR (true si alguna de las dos es true) (a>b)||(a!=3)
10
Estructuras de control - David Carmona 2010
Estructuras de control
Sentencias if-else
Estructuras de control - David Carmona 2010
11
Sentencia if
La sentencia if, permite ejecutar o no una sentencia en función de si se cumple o no una condicion.
Sintaxis:if (expresion) sentencia1;sentencia2;
Funcionamiento: Se evalúa expresion. Si el resultado de la expresión es true, se ejecuta la sentencia1 y a continuación la sentencia2.
Si expresion es false, entonces se ejecuta directamente la sentencia2. (sentencia1 no se ejecutaría)
12
Estructuras de control - David Carmona 2010
Sentencia if
Sintaxis:
.
.if (expresion) sentencia1;
sentencia2;..
expresion?
sentencia 1
sentencia 2
Si
No
Estructuras de control - David Carmona 2010
13
Ejemplo:
Estructuras de control - David Carmona 2010
14
Sentencia if
En ocasiones, necesitaremos ejecutar de forma condicional un conjunto de sentencias y no una solo.
Para ello basta con sustituir en la sintaxis anterior la sentencia1 por el grupo de sentencias que se desee encerradas entre llaves ({ }).
Sintaxis:if (expresion)
{
sentencia1;
..
sentenciaN;
}
sentenciaM;
15
Estructuras de control - David Carmona 2010
Sentencia if
Sintaxis:
.if (expresion) {sentencia1;..sentenciaN}
sentenciaM;.
expresion?
sentencia 1
sentencia M
Si
No
sentencia N
Bloque de sentencias
Estructuras de control - David Carmona 2010
16
Ejemplo:
Estructuras de control - David Carmona 2010
17
Sentencia if-else
Esta sentencia permite realizar acciones diferentes en función de si se cumple o no una condición.
Sintaxis:
if (expresion) sentencia1;
elsesentencia2;
sentencia3;
Estructuras de control - David Carmona 2010
18
Sentencia if-else
Funcionamiento: Se evalúa expresion. Si el resultado de la expresión es true, se
ejecuta la sentencia1 y a continuación la sentencia3. sentencia2 no se ejecuta.
Si expresion es false, entonces se ejecuta la sentencia2 y a continuación la sentencia3. Sentencia1 no se ejecuta.
Las sentencias que vienen a continuación de la sentencia if – else se ejecutan siempre.
Estructuras de control - David Carmona 2010
19
Sentencia if-else
expresion?
sentencia 1
sentencia 2
Si
No
Sentencia 3
Las sentencias 1 y 2 son mutuamente excluyentes.
Estructuras de control - David Carmona 2010
20
Ejemplo
Estructuras de control - David Carmona 2010
21
Sentencia if-else
Se pueden sustituir las sentencias condicionales por bloques de sentencias.
Sintaxis:if (expresion)
{sentenciaN;..}
else{sentenciaM;..}
sentenciaX;
Estructuras de control - David Carmona 2010
22
Sentencias if – else múltiples Las sentencias if – else permiten realizar dos
operaciones distintas en función de una condición.
Para ejecutar una opción entre varias partes del programa según se cumpla una condición entre varias, se necesita “anidar” sentencias if else.
Un sentencia if –else multiple está formada por varios if-else, de forma que uno de ellos es la sentencia que se ejecuta cuando se cumple o no una condición.
Estructuras de control - David Carmona 2010
23
Sintaxis general
if (expresion1) {sentenciaN;..}
else if (expresion2) {sentenciaM;
..}
..else if (expresionS) {sentenciaP;
..}
[else {sentenciaQ;..}]
sentenciaX;
Estructuras de control - David Carmona 2010
24
Funcionamiento
Se evalúa la 1ª condición (expresion1): Si se cumple se ejecuta el bloque de sentenciaN. Después se salta hasta el final de la sentencia.
(sentenciaX). Si no se cumple expresion1, se evalúa la
expresion2. Si se cumple se ejecuta el bloque de sentenciaM. Después se salta hasta el final de la sentencia if-
else. (sentenciaX). Así sucesivamente hasta el último else if ().
Estructuras de control - David Carmona 2010
25
Funcionamiento
Opcionalmente podemos encontrar un último bloque de sentencias sin condición (else). Este bloque de sentencias (sentenciaQ) se
ejecuta solo cuando no se cumplen ninguna de las expresiones condicionales de la sentencia. (expresion..).
Cuando se cumple una expresión, ya no se evalúa ninguna de las expresiones condicionales restantes.
Estructuras de control - David Carmona 2010
26
Funcionamiento
expresion1?
SentenciaM
SentenciaN
Si
No
SentenciaP
expresion2?
expresionS?
SentenciaQ
No
No
Si
Si
SentenciaX
Estructuras de control - David Carmona 2010
27
Ejemplo
28
Estructuras de control - David Carmona 2010
Estructuras de control
Sentencias switch
Estructuras de control - David Carmona 2010
29
Sentencia SWITCH
Funciona de manera similar a una sentencia if-else múltiple.
En esta sentencia, la expresión que se evalúa como condición no tiene un resultado binario (true o false).
Se compara el resultado de la expresión con una lista de casos posibles, y se ejecuta una(s) sentencia(s) en función de la coincidencia.
Estructuras de control - David Carmona 2010
30
Sintaxis de SWITCH
switch (expresion){case caso1:
{bloque_sentencias1;}
case caso2:{bloque_sentencias2;}
…case casoN:
{bloque_sentenciasN;}
[default:{bloqueXdefecto;}]
}
Estructuras de control - David Carmona 2010
31
Sintaxis de SWITCH
Caso1
caso2
Caso3
caso4
Blq-sent1
Blq-sent2
Blq-sent3
Blq-sent4
Si
Si
Si
Si
No
No
No
No
Estructuras de control - David Carmona 2010
32
Funcionamiento
En la sentencia switch se evalúa el valor de la expresion, y se compara con los casos indicados en las clausulas case.
Cuando el resultado coincide con alguno de los casos, se ejecuta el bloque de sentencias del caso coincidente.
Después se ejecutan los bloques de sentencias de los casos escritos a continuación hasta el final de la sentencia switch.
Estructuras de control - David Carmona 2010
33
Ejemplo
Estructuras de control - David Carmona 2010
34
Caso por defecto
Opcionalmente se puede incluir una clausula por defecto. La clausula default, se ejecuta cuando el
resultado de la expresión no coincide con ninguno de los casos.
Si no se incluye la clausula default, y expresion no coincide con ningún caso, la sentencia switch no tiene ningún efecto.
Estructuras de control - David Carmona 2010
35
Sintaxis de SWITCH
Caso1
caso2
Caso3
Blq-sent1
Blq-sent2
Blq-sent3
Blq-Defecto
Si
Si
Si
default
No
No
No
Estructuras de control - David Carmona 2010
36
Ejemplo
Estructuras de control - David Carmona 2010
37
Sentencia break
La sentencia break se utiliza para “romper” el flujo de ejecución.
Usado dentro de una sentencia o bloque de sentencias finaliza la ejecución de la sentencia en el momento de su ejecución.
En las sentencias switch, se utiliza para hacer que cada caso ejecute un bloque de sentencias diferente.
Estructuras de control - David Carmona 2010
38
Funcionamiento
Caso1:
Blq-sent1;break;
Blq-sent2;break;
Si
No
Blq-sent3;break;
Caso2:
CasoN:
Blq-defecto
No
default
Si
Si
Estructuras de control - David Carmona 2010
39
Ejemplo
40
Estructuras de control - David Carmona 2010
Estructuras de control
Sentencias while
Estructuras de control - David Carmona 2010
41
Sentencia while
La sentencia while se utiliza para repetir un bloque de sentencias mientras se cumpla una determinada condición.
Sintaxis:while (expresion)
{
..
bloque_sentenciasN;
..
}
Estructuras de control - David Carmona 2010
42
Funcionamiento
Condición?
Blq-sentencias
Si
No
Estructuras de control - David Carmona 2010
43
Funcionamiento
Se evalúa el resultado de expresion. Si es falso se salta el bloque de sentencias y
se continua la ejecución del programa fuera de la sentencia while.
Si es verdadero se ejecuta el bloque de sentencias. Cuando finaliza la ejecución del bloque se vuelve
a evaluar el resultado de expresion y se repite el procedimiento.
El bloque de sentencias puede que no se ejecute ninguna vez.
Estructuras de control - David Carmona 2010
44
Ejemplo
45
Estructuras de control - David Carmona 2010
Estructuras de control
Sentencias do-while
Estructuras de control - David Carmona 2010
46
Sentencia do - while
Funciona de manera similar al bucle while. La condición se evalúa después de ejecutar el bloque
de sentencias. Sintaxis:
do{..bloque_sentenciasN;..}
while (expresion);
Estructuras de control - David Carmona 2010
47
Funcionamiento
Blq-sentencias
Si NoCondición?
Estructuras de control - David Carmona 2010
48
Funcionamiento
Cuando se llega a una sentencia do while, primero se ejecuta el bloque de sentencias.
Después se evalúa el resultado de expresion. Si es cierta, se vuelve a ejecutar el bloque
de sentencias y se repite el procedimiento. Si es falsa, se termina la ejecución del
bloque de sentencias y se continua con el programa.
El bloque de sentencias se ejecuta al menos una vez.
Estructuras de control - David Carmona 2010
49
Ejemplo
50
Estructuras de control - David Carmona 2010
Estructuras de control
Sentencias for
Estructuras de control - David Carmona 2010
51
Sentencia for
Se utiliza para repetir un bloque de sentencias un determinado número de veces.
Sintaxis:for (inicio; condicion; actualizacion){..bloque_sentenciasN;..}
Estructuras de control - David Carmona 2010
52
Funcionamiento
Blq-sentencias
Si NoCondició
n?
Inicio
actualizacion
Estructuras de control - David Carmona 2010
53
Funcionamiento
1. Primero se ejecuta la sentencia inicio. Normalmente se trata de iniciar una variable
contador.
2. A continuación se evalúa el resultado de la expresión de condicion.
Si es falsa se termina la ejecución del bucle for y se continua con el programa.
Si es cierta se ejecuta el bloque de sentencias y la sentencia de actualizacion. Después se repite el paso 2.
Estructuras de control - David Carmona 2010
54
Ejemplo
55
Estructuras de control - David Carmona 2010
Estructuras de control
Bucles infinitos
Estructuras de control - David Carmona 2010
56
Bucles infinitos
Bucle infinito es aquel ciclo que se repite de forma indefinida.
Por definición un bucle debe contener condiciones que establezcan cuándo empieza y cuándo acaba, de manera que, mientras las condiciones se cumplan, ejecute una secuencia de código de manera repetitiva.
En el caso de ciclo infinito, la condicion de finalización se establece de forma que no se alcance nunca y el bucle sigue ejecutando el segmento de código indefinidamente.
Estructuras de control - David Carmona 2010
57
Bucle infinito con while
while (1){..bloque_sentenciasN;..}
Estructuras de control - David Carmona 2010
58
Bucle infinito con do while
do {..bloque_sentenciasN;..} while (1);
Estructuras de control - David Carmona 2010
59
Bucle infinito con for
for ( ; 1 ; ){..bloque_sentenciasN;..
60
Estructuras de control - David Carmona 2010
Estructuras de control
Sentencias break y continue.
Estructuras de control - David Carmona 2010
61
Break
La sentencia break se utiliza para “romper” el flujo de ejecución.
Usado dentro de una sentencia o bloque de sentencias finaliza la ejecución de la sentencia en el momento de su ejecución.
En el caso de los bucles y las bifurcaciones, se termina la ejecución del bucle aunque la condicion para salir del mismo no se cumpla.
Estructuras de control - David Carmona 2010
62
Continue
La sentencia continue se utiliza para terminar “una” ejecución de un bucle.
Cuando se ejecuta la sentencia continue, salta el resto de sentencias que faltan para la ejecución del bucle y se inicia siguiente ejecución del mismo bucle.
Top Related