while y do while
TRANSCRIPT
![Page 1: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/1.jpg)
Tema 4
Estructuras de Control Iterativas
![Page 2: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/2.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/3.jpg)
Iteraciones en c Sentencia while Sentencia do-while Sentencia for
![Page 4: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/4.jpg)
Sentencia while
while (condición) { bloque_instrucciones; }
¿condición?
V
F
Bloque de instrucciones
![Page 5: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/5.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/6.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/7.jpg)
Ejemplo
![Page 8: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/8.jpg)
Iteraciones en c Sentencia while Sentencia do-while Sentencia for
![Page 9: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/9.jpg)
Sentencia do-while
do { bloque_instrucciones; }while (condición);
¿condición?
V
F
Bloque de instrucciones
![Page 10: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/10.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/11.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/12.jpg)
Ejemplo
![Page 13: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/13.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/14.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/15.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/16.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/17.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/18.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/19.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/20.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/21.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/22.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/23.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/24.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/25.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/26.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/27.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/28.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/29.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/30.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/31.jpg)
Iteraciones en c Sentencia while Sentencia do-while Sentencia for
![Page 32: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/32.jpg)
Sentencia for
for (inicialización; condición; actualización)
{ bloque_instrucciones; }
¿condición?
V
F
Bloque de instrucciones
Inicialización
Actualización
![Page 33: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/33.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/34.jpg)
Equivalencia for - while
inicialización;while (condición) {
bloque_instrucciones;
actualización: }
for (inicialización; condición; actualización)
{
bloque_instrucciones;
}
![Page 35: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/35.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/36.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/37.jpg)
![Page 38: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/38.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/39.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/40.jpg)
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: while y do while](https://reader033.vdocuments.mx/reader033/viewer/2022052208/557628b9d8b42a4e1c8b52f0/html5/thumbnails/41.jpg)
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
)(