tema 4 estructuras de control iterativas. estructuras iterativas repiten n veces la ejecución de...

41
Tema 4 Estructuras de Control Iterativas

Upload: lucia-solomon

Post on 22-Jan-2016

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Tema 4

Estructuras de Control Iterativas

Page 2: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Estructuras iterativas Repiten n veces la ejecución de un

bloque de instrucciones n finito o infinito n conocido o desconocido a priori

Page 3: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Iteraciones en c Sentencia while Sentencia do-while Sentencia for

Page 4: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Sentencia while

while (condición) { bloque_instrucciones; }

¿condición?

V

F

Bloque de instrucciones

Page 5: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 6: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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;

}

Ejemplo

Page 7: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Ejemplo

Page 8: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Iteraciones en c Sentencia while Sentencia do-while Sentencia for

Page 9: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Sentencia do-while

do { bloque_instrucciones; }while (condición);

¿condición?

V

F

Bloque de instrucciones

Page 10: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 11: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Ejemplo Leer un número comprendido entre 1 y

100int num; do

{ printf (“\nEscribe un valor entre 1 y 100:

”);scanf(“%d”, &num);

} while (num < 1 || num >100);

Page 12: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Ejemplo

Page 13: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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?

Page 14: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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?

Page 15: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 16: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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.

Page 17: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 18: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 19: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Inicialización

Control

Proceso

INICIO

LEER (a)

b=1

b<=10

ESCRIBIR a*bSaltar de línea

b=b+1

V F

FIN

Algoritmo

Page 20: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Códigovoid 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”);}

Page 21: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

a b c

4 1 4

4 2 8

4 3 12

4 4 16

4 5 20

4 6 24

.. .. ..

4 10 40

Comprobación (trazas)

Page 22: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 23: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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’?V F FIN

Page 24: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Algoritmo (con while)resp=‘S’

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’?

V

FFIN

Page 25: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 26: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Código (con while)

/* numero > 1 */

{

potencia=1; /* 20 = 1 */

while (potencia < numero)

{

potencia = potencia*2;

}

printf(“La potencia buscada es %d”, potencia);

}

Page 27: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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 +1Leer car

Page 28: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Código (con while){

num=1;scanf(“%c”, &car);while (car != ‘.’)

{num= num+1;scanf(“%c”, &car);

}printf(“Número total de caracteres: %d”, num);

}

Page 29: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Código (con do-while){

num=0;

do {

num= num+1;

scanf(“%c”, &car);

}

while (car != ‘.’);printf(“Número total de caracteres: %d”, num);

}

Page 30: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 31: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Iteraciones en c Sentencia while Sentencia do-while Sentencia for

Page 32: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Sentencia for

for (inicialización; condición; actualización)

{ bloque_instrucciones; }

¿condición?

V

F

Bloque de instrucciones

Inicialización

Actualización

Page 33: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 34: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Equivalencia for - while

inicialización;while (condición) {

bloque_instrucciones;

actualización: }

for (inicialización; condición; actualización)

{

bloque_instrucciones;

}

Page 35: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

Ejemplo Mostrar en pantalla los primeros n

números paresscanf (“%d”, &n)i=1;while (i<=n) { printf(“\n %d”,

2*i); i= i+1; }

scanf (“%d”, &n)for (i=1; i<=n; i=

i+1) { printf(“\n %d”,

2*i); }

Page 36: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 37: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito
Page 38: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

Page 39: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

while Leer el número num

¿num == 0? fact = 1Escribir resultado

¿num <0?No se puede

Calcular num!

fact = 1i = 1

¿i <= num?fact = fact * i

i = i + 1Escribir fact V

V

V

F

F

F

Page 40: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

for Leer el número num

¿num == 0? fact = 1Escribir resultado

¿num <0? No se puedecalcular num!

fact = 1;

Repetir desde que i vale 1 hasta quei valga num, i=i+1;

fact = fact * i;

Escribir fact

SI

SI

NO

NO

for (i=1;i<=num;i=i+1)

{fact=fact*i;}

Page 41: Tema 4 Estructuras de Control Iterativas. Estructuras iterativas  Repiten n veces la ejecución de un bloque de instrucciones  n finito o infinito

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

n

i

m

j

jiz0 0

)(