La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Estructuras de Control Iterativas

Presentaciones similares


Presentación del tema: "Estructuras de Control Iterativas"— Transcripción de la presentación:

1 Estructuras de Control Iterativas
Tema 4 Estructuras de Control Iterativas

2 Estructuras iterativas
Repiten n veces la ejecución de un bloque de instrucciones n finito o infinito n conocido o desconocido a priori

3 Iteraciones en c Sentencia while Sentencia do-while Sentencia for

4 Bloque de instrucciones
Sentencia while while (condición) { bloque_instrucciones; } ¿condición? V F Bloque de instrucciones

5 Semántica de while while: (0-n veces) Evaluar la condición
Si el resultado es falso, acabar el bucle (seguir con la instrucción siguiente al while) Si el resultado es verdadero, ejecutar el bloque de instrucciones completo y volver a empezar

6 Ejemplo Escribir la tabla de multiplicar del 8. int mult = 1;
while (mult <= 10) { printf (“\n%d x %d = %d”, 8, mult, 8*mult); mult = mult +1; }

7 Ejemplo

8 Iteraciones en c Sentencia while Sentencia do-while Sentencia for

9 Bloque de instrucciones
Sentencia do-while do { bloque_instrucciones; }while (condición); ¿condición? V F Bloque de instrucciones

10 Semántica de do-while do while: (1-n veces)
Ejecutar el bloque de instrucciones completo Evaluar la condición Si el resultado es falso, acabar el bucle (seguir con la instrucción siguiente al do-while) Si el resultado es verdadero, volver a empezar

11 Ejemplo Leer un número comprendido entre 1 y 100 int num; do {
printf (“\nEscribe un valor entre 1 y 100: ”); scanf(“%d”, &num); } while (num < 1 || num >100);

12 Ejemplo

13 Diseño de la iteración Control de la iteración
¿Cuándo acaba la iteración? (condición de salida) ¿Cómo inicializar la condición? ¿Cómo se actualiza la condición?

14 Diseño de la iteración Control de la iteración Proceso de la iteración
¿Qué es lo que hay que repetir? ¿Cómo inicializarlo? ¿Cuál es el estado al final del bucle?

15 Diseño de la iteración Control de la iteración Proceso de la iteración
Comprobación del diseño a través de trazas

16 Ejemplo resuelto Leer un valor a y escribir su tabla de multiplicar.
Se usará un contador b que tomará valores de 1 a 10 para multiplicar al valor de a.

17 Control de la iteración
¿Cuándo acaba la iteración? (condición de salida) Cuando b valga 11 ¿Cómo inicializar la condición? Al principio b valdrá 1 ¿Cómo se actualiza la condición? En cada iteración b se incrementará en 1

18 Proceso de la iteración
¿Qué es lo que hay que repetir? Mostrar el valor a*b y saltar de línea ¿Cómo inicializarlo? No hace falta ¿Cuál es el estado al final del bucle? Se habrá mostrado la tabla de multiplicar de a

19 Algoritmo Inicialización Control Proceso INICIO LEER (a) b=1 b<=10
ESCRIBIR a*b Saltar de línea b=b+1 V F FIN Algoritmo

20 Código void main() { int a,b,c; printf(“\n Introduce un número: ”);
scanf(“%d”,&a); b=1; while (b <= 10) c=a*b; printf (“ %d x %d es = %d \n”,a,b,c); b=b+1; } system(“pause”);

21 Comprobación (trazas)
4 1 2 8 3 12 16 5 20 6 24 .. 10 40

22 Ejemplo/ ejercicio 1 Implementar una eurocalculadora
Dependiendo de la opción ‘P’ o ‘E’ convertirá de euros a pesetas o viceversa Tras cada conversión el programa preguntará si se va a realizar otro cálculo

23 Algoritmo (con do-while)
F Calcular num en pesetas Escribir resultado en pesetas ¿Qué deseas (P/E)? opc ¿opc == ‘P’? V ¿Qué número? num Calcular num en euros Escribir resultado en euros ¿Más números (S/N)? resp ¿resp == ‘S’? FIN

24 Algoritmo (con while) resp=‘S’ FIN ¿Qué deseas (P/E)? opc
Calcular num en pesetas Escribir resultado en pesetas ¿Más números (S/N)? resp F ¿opc == ‘P’? V Calcular num en euros Escribir resultado en euros ¿Qué deseas (P/E)? opc ¿Qué número? num ¿resp == ‘S’? FIN

25 Ejemplo/ ejercicio 2 Calcular la primera potencia de 2 que sea mayor o igual que un número dado Leer Numero ¿Potencia<Numero? Escribir Potencia V F Potencia = 1 Potencia = Potencia * 2

26 Código (con while) /* numero > 1 */ { potencia=1; /* 20 = 1 */
while (potencia < numero) potencia = potencia*2; } printf(“La potencia buscada es %d”, potencia);

27 Ejemplo/ ejercicio 3 Contar los caracteres introducidos por teclado hasta encontrar un punto (que también se cuenta) Leer car (un carácter) ¿car !=‘.’? Escribir num V F num = 1 num = num +1 Leer car

28 Código (con while) { num=1; scanf(“%c”, &car); while (car != ‘.’)
num= num+1; } printf(“Número total de caracteres: %d”, num);

29 Código (con do-while) { num=0; do { num= num+1; scanf(“%c”, &car); }
while (car != ‘.’); printf(“Número total de caracteres: %d”, num);

30 Ejercicios Imprimir los números del 1 al 10 cinco veces
Mostrar las tablas de multiplicar del 1 al 9 Mostrar los múltiplos de 6 del 0 al 10000 Mismo ejercicio, pero de 10 en 10, es decir, cada 10 números mostrados, pedir que se pulse una tecla para continuar Pedir 2 números y escribir todos los enteros que hay entre ambos Pedir un valor n e imprimir las n primeras potencias de n

31 Iteraciones en c Sentencia while Sentencia do-while Sentencia for

32 Bloque de instrucciones
Sentencia for for (inicialización; condición; actualización) { bloque_instrucciones; } ¿condición? V F Bloque de instrucciones Inicialización Actualización

33 Semántica de for for: (número de veces conocido a priori)
Ejecutar la inicialización Evaluar la condición Si el resultado es falso, acabar el bucle (seguir con la instrucción siguiente al for) Si el resultado es verdadero, ejecutar el bloque de instrucciones completo y ejecutar la actualización

34 Equivalencia for - while
for (inicialización; condición; actualización) { bloque_instrucciones; } inicialización; while (condición) { bloque_instrucciones; actualización: }

35 Ejemplo Mostrar en pantalla los primeros n números pares
scanf (“%d”, &n) for (i=1; i<=n; i= i+1) { printf(“\n %d”, 2*i); } scanf (“%d”, &n) i=1; while (i<=n) { printf(“\n %d”, 2*i); i= i+1; }

36 Estructuras iterativas
¿Cuando utilizar una u otra? for cuando el número de iteraciones sea conocido do while cuando la iteración se ejecute como mínimo una vez while en el resto de casos

37 Ejercicios

38 Ejercicio factorial Pedir un número y mostrar por pantalla su factorial Propuesta: comprobar que el número es positivo, y pedirlo cuantas veces haga falta mientras no lo sea

39 while i = 1 fact = fact * i i = i + 1 Leer el número  num fact = 1
Escribir resultado ¿num <0? No se puede Calcular num! i = 1 ¿i <= num? fact = fact * i i = i + 1 Escribir fact V F

40 for (i=1;i<=num;i=i+1)
Leer el número  num ¿num == 0? fact = 1 Escribir resultado ¿num <0? No se puede calcular num! fact = 1; Repetir desde que i vale 1 hasta que i valga num, i=i+1; fact = fact * i; Escribir fact SI NO for (i=1;i<=num;i=i+1) {fact=fact*i;}

41 Más ejercicios Pedir 2 números positivos y calcular su Máximo Común Divisor y su mínimo común múltiplo Calcular el mínimo, el máximo y la media de una serie de números enteros que termina en 0 Propuesta: ídem pero considerando sólo los positivos Pedir n y m y calcular el valor


Descargar ppt "Estructuras de Control Iterativas"

Presentaciones similares


Anuncios Google