estructuras de control programación en c para electrónicos

61
ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Upload: nazario-correira

Post on 11-Apr-2015

109 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

ESTRUCTURAS DE CONTROL

Programación en C para electrónicos

Page 2: 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

Page 3: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 4: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 5: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

6

Estructuras de control - David Carmona 2010

Estructuras de control

Expresiones condicionales

Page 6: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 7: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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

Page 8: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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)

Page 9: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

10

Estructuras de control - David Carmona 2010

Estructuras de control

Sentencias if-else

Page 10: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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)

Page 11: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

12

Estructuras de control - David Carmona 2010

Sentencia if

Sintaxis:

.

.if (expresion) sentencia1;

sentencia2;..

expresion?

sentencia 1

sentencia 2

Si

No

Page 12: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

13

Ejemplo:

Page 13: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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;

Page 14: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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

Page 15: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

16

Ejemplo:

Page 16: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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;

Page 17: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 18: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 19: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

20

Ejemplo

Page 20: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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;

Page 21: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 22: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

23

Sintaxis general

if (expresion1) {sentenciaN;..}

else if (expresion2) {sentenciaM;

..}

..else if (expresionS) {sentenciaP;

..}

[else {sentenciaQ;..}]

sentenciaX;

Page 23: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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 ().

Page 24: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 25: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

26

Funcionamiento

expresion1?

SentenciaM

SentenciaN

Si

No

SentenciaP

expresion2?

expresionS?

SentenciaQ

No

No

Si

Si

SentenciaX

Page 26: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

27

Ejemplo

Page 27: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

28

Estructuras de control - David Carmona 2010

Estructuras de control

Sentencias switch

Page 28: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 29: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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;}]

}

Page 30: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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

Page 31: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 32: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

33

Ejemplo

Page 33: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 34: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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

Page 35: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

36

Ejemplo

Page 36: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 37: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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

Page 38: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

39

Ejemplo

Page 39: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

40

Estructuras de control - David Carmona 2010

Estructuras de control

Sentencias while

Page 40: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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;

..

}

Page 41: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

42

Funcionamiento

Condición?

Blq-sentencias

Si

No

Page 42: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 43: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

44

Ejemplo

Page 44: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

45

Estructuras de control - David Carmona 2010

Estructuras de control

Sentencias do-while

Page 45: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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);

Page 46: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

47

Funcionamiento

Blq-sentencias

Si NoCondición?

Page 47: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 48: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

49

Ejemplo

Page 49: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

50

Estructuras de control - David Carmona 2010

Estructuras de control

Sentencias for

Page 50: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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;..}

Page 51: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

52

Funcionamiento

Blq-sentencias

Si NoCondició

n?

Inicio

actualizacion

Page 52: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 53: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

54

Ejemplo

Page 54: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

55

Estructuras de control - David Carmona 2010

Estructuras de control

Bucles infinitos

Page 55: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 56: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

57

Bucle infinito con while

while (1){..bloque_sentenciasN;..}

Page 57: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

58

Bucle infinito con do while

do {..bloque_sentenciasN;..} while (1);

Page 58: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

Estructuras de control - David Carmona 2010

59

Bucle infinito con for

for ( ; 1 ; ){..bloque_sentenciasN;..

Page 59: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

60

Estructuras de control - David Carmona 2010

Estructuras de control

Sentencias break y continue.

Page 60: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.

Page 61: ESTRUCTURAS DE CONTROL Programación en C para electrónicos

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.