Estructuras bsicas de control del flujo de ejecucin LA ITERACIN EN C - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

Estructuras bsicas de control del flujo de ejecucin LA ITERACIN EN C

Description:

double suma = 0.0; int primero, ultimo, temp; ... suma = (double) primero ; cout suma endl; ... suma = (double) TiempoFallo; ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 26
Provided by: luishern
Category:

less

Transcript and Presenter's Notes

Title: Estructuras bsicas de control del flujo de ejecucin LA ITERACIN EN C


1
Estructuras básicas de control del flujo de
ejecuciónLA ITERACIÓN EN C
Departamento de Sistemas Informáticos y
Programación
  • Facultad de CC. FísicasLaboratorio de
    Programación curso 05/06 TEMA 3

2
Contenido
  • La iteración en C
  • Bucles a priori, la instrucción
  • while
  • Bucles a posteriori, la instrucción
  • do.. while
  • Bucles controlados por contador, la instrucción
  • for

3
Estructura de la iteración en C
  • En C la estructura de un bucle consta siempre
    de
  • Una instrucción de repetición, delimita la
    sección repetitiva del código y controla su
    ejecución
  • while
  • for
  • do...while
  • Una condición, el código (cuerpo del bucle) se
    ejecuta sólo si la condición es verdadera.
  • Una instrucción para inicializar correctamente el
    valor de la condición.
  • Una instrucción en el cuerpo del bucle que
    garantice su interrupción.

4
Bucles a priori while
  • while(condición) instrucción
  • while(condición)
  • secuencia de instrucciones

Condición debe ser tipo bool
5
Bucles a priori while
  • int cuenta
  • while (cuenta lt 10)
  • cout ltlt cuenta

int cuenta 1 while (cuenta lt 10) cout ltlt
cuenta
6
Bucles a priori while
  • int cuenta 1
  • while (cuenta lt 10)
  • cout ltlt cuenta
  • cuenta

7
Bucles a priori while
  • // Salida de este programa?
  • include ltiostream.hgt 
  • int main ()
  • int i 10
  • while (i gt 1)
  • cout ltlt i ltlt
  • i--
  • return 0

8
Bucles a priori while
  • // Salida de este programa?
  • include ltiostream.hgt 
  • int main ()
  • int n 10, p, x 1
  • while (n ! 0)
  • if (n 2 1) p p x
  • cout ltlt p
  • n (int) n / 2
  • return 0

9
Bucles a priori while
  • // Salida de este programa?
  • include ltiostream.hgt 
  • int main ()
  • int x 1
  • while (x gt 0)
  • x--
  • if (x 0) x 1
  • return 0

10
Bucles a priori while
ejemplo while
  • // Ejemplo programa que calcule cuadrado y cubo
    de los n primeros naturales

11
Bucles a priori while
ejemplo while
  • include ltiostream.hgt
  • include ltiomanip.hgt 
  • int main ()
  • int num
  • cout ltlt Este programa calcula el cuadrado y el
    cubo de los n primeros naturales ltlt \n
  • cout ltlt Introduzca valor del numero máximo del
    que desea calcular cuadrado y cubo ltlt \n
  • cin gtgt num
  • cout ltlt NUMERO\tCUADRADO\tCUBO\n
  • cout ltlt ------ -------- ----\n
  • int i 1 //Variable para llevar la iteracion
  • while (i lt num)
  • cout ltlt setw(3) ltlt i ltlt \t
  • ltlt setw(3) ltlt ii ltlt \t
  • ltlt setw(3) ltlt iii ltlt \t ltltendl
  • i
  • return 0

12
Bucles a priori while
ejemplo while
  • // Ejemplo programa que sume y promedie de los
    enteros en el rango especificado

13
Bucles a priori while
ejemplo while
  • include ltiostream.hgt
  • include ltiomanip.hgt 
  • int main ()
  • int cuenta
  • double suma 0.0
  • int primero, ultimo, temp
  • cout ltlt Este programa calcula la suma y el
    promedio del rango de enteros\nintroducidos por
    Vd. ltlt \n
  • cout ltlt Introduzca limite inferior del rango
    ltlt \n
  • cin gtgt primero
  • cout ltlt Introduzca limite superior del rango
    ltlt \n
  • cin gtgt ultimo
  • if (primero gt ultimo)
  • temp primero
  • primero ultimo
  • ultimo temp
  • cout ltlt Suma de enteros desde ltlt primero ltlt
    hasta ltlt ultimo ltlt
  • while (primero lt ultimo)

14
Bucles a priori while
ejemplo centinelas while
  • // Ejemplo cálculo de la vida media de los
    circuitos. El usuario introduce valores
    correspondientes a los tiempos de fallo de las
    componentes de un circuito electrónico. La vida
    media del circuito es la media de los tiempos de
    fallo de sus componentes. Para marcar el fin de
    la introducción de datos el usuario introduce un
    valor negativo.

15
Bucles a priori while
ejemplo centinelas while
  • include ltiostream.hgt
  • include ltiomanip.hgt 
  • int main ()
  • int cuenta 0
  • double suma 0.0
  • int TiempoFallo 
  • cout ltlt Este programa calcula la vida media de
    un circuito.
  • ltlt \n
  • //Validez de var control en la 1ª vuelta
  • cout ltlt Introduzca tiempo de fallo de
    componente (0 para terminar)
  • cin gtgt TiempoFallo
  • while (TiempoFallo ! 0)
  • cuenta
  • suma (double) TiempoFallo
  • cout ltlt Introduzca tiempo de fallo de
    componente (0 para terminar)
  • cin gtgt TiempoFallo
  •  
  • //Compruebo que al menos hay un dato

16
Bucles a priori while
  • include ltiostream.hgt
  • int main ()
  • int cuenta 0
  • char caracter
  • bool FaltaLeer true
  • const char centinela _at_
  • while (FaltaLeer)
  • cuenta
  • cin ltlt cuenta
  • if (caracter centinela)
  • FaltaLeer false
  • cout ltlt Se han introducido ltlt cuenta ltlt
    caracteres.
  • return 0
  •  

ERROR?
17
Bucles a priori while
  • include ltiostream.hgt
  • int main ()
  • int cuenta 0
  • char caracter
  • bool FaltaLeer true
  • const char centinela _at_
  • while (FaltaLeer)
  • cuenta
  • cin ltlt cuenta
  • if (caracter centinela)
  • FaltaLeer false
  • cout ltlt Se han introducido ltlt cuenta ltlt
    caracteres.
  • return 0
  •  

ERROR?
18
Bucles a priori while
  • ERRORES EN LA CONDICIÓN
  • Utilización de en lugar de .
  • Fallos al codificar relaciones entre varias
    variables.
  • Cuidado con el y el ! cuando se comparen
    cantidades reales. Es mucho más seguro comparar a
    menor con una cantidad aceptablemente pequeña

19
Bucles a posteriori do...while
  • do
  • instrucción
  • while(condición)
  • do
  • secuencia de instrucciones
  • while(condición)

El cuerpo del bucle se ejecuta siempre al menos
una vez
20
Bucles a posteriori do...while
ejemplo centinelas do...while
  • // Ejemplo cálculo de la vida media de los
    circuitos. El usuario introduce valores
    correspondientes a los tiempos de fallo de las
    componentes de un circuito electrónico. La vida
    media del circuito es la media de los tiempos de
    fallo de sus componentes. Para marcar el fin de
    la introducción de datos el usuario introduce un
    valor negativo.

21
Bucles a posteriori do...while
ejemplo centinelas do...while
  • include ltiostream.hgt
  • include ltiomanip.hgt 
  • int main ()
  • int cuenta 0
  • double suma 0.0
  • int TiempoFallo 
  • cout ltlt Este programa calcula la vida media de
    un circuito.
  • ltlt \n
  • do
  • cout ltlt Introduzca tiempo de fallo de
    componente (0 para terminar)
  • cin gtgt TiempoFallo
  • if ( TiempoFallo ! 0) cuenta
  • while (TiempoFallo ! 0)
  • if (cuenta ! 0)
  • cout ltlt Vida Media del circuito ltlt
    suma/cuenta
  • else cout ltlt No ha introducido datos
  • return 0

22
Bucles a posteriori do...while
ejemplo revisiones de validez do...while
  • // Ejemplo Se solicita al usuario introducir un
    numero válido en el rango 1000 y 1999.
  • do
  • cout ltlt Introduzca un numero entre 1000 y
    1999
  • cin gtgt Numero
  • while ((Numero lt1000) (Numero gt 1999))

23
Bucles a posteriori do...while
  • Es útil en cualquier situación en la que sea
    necesario ejecutar al menos una vuelta del ciclo.
  • Especialmente adecuado cuando se leen datos del
    teclado hasta detectar un carácter centinela
  • Diferencia básica con WHILE ejecuta el cuerpo
    del bucle al menos una vez (WHILE puede no llegar
    a ejecutarse nunca)
  • Cualquier estructura do..while es reemplazable
    mediante un while con una vuelta adicional del
    bucle.

24
Bucles con contador for
  • for(inicialización condición incremento)
    instrucción
  • La inicialización normalmente es una instrucción
    de asignación que se utiliza para inicializar la
    variable de control del bucle.
  • La condición es una expresión relacional que
    determina cuándo finaliza el bucle.
  • El incremento define cómo cambia la variable de
    control cada vez que se repite el bucle.
  • int main()
  • for(int x 1 x lt 100 x)
  • cout ltlt x
  • return 0

Declaración de la variable de control
directamente dentro del for
Aunque la forma de las secciones puede ser
bastante complicada, usaremos esta forma sencilla
25
Interrupción de iteraciones break y continue
  • La instrucción break
  • Además de terminar los case de una instrucción
    switch,sirve para forzar la terminación
    inmediata de un bucle
  • for(t 0 t lt 100 t)
  • cout ltlt t
  • if(t 10) break // salir del for
  • La instrucción continue Fuerza una nueva
    iteración en un bucle
  • do
  • cin gtgt x
  • if(x lt 0) continue // ignorar lo que sigue y
    volver
  • cout ltlt x // a comprobar la
    condición
  • while(x ! 100)
Write a Comment
User Comments (0)
About PowerShow.com