Title: Iteracin
1Iteración
- La iteración permite modelar problemas en los
cuales una secuencia de instrucciones se ejecuta
repetidamente. - Pascal brinda mecanismos para expresar iteración
dependiendo de - Un contador de tipo escalar
- Una expresión lógica
2Iteración for
for
identificador
expresión
to
expresión
downto
instrucción
do
La instrucción (simple o bloque) que sigue al do
constituye el bloque iterativo. Ni las variables
que aparecen en las expresiones ni la variable de
control deben modificarse en el bloque iterativo.
3Iteración for
- program entrada
- var dato char
- i integer
- begin
- for i 1 to 5
- do
- begin
- read (dato)
- writeln (,dato,)
- end
- readln
- end.
4Iteración for
- program entrada
- var dato integer
- i integer
- begin
- for i 1 to 5
- do
- begin
- read (dato)
- writeln (,dato,)
- end
- readln
- end.
5Iteración for
- program entrada
- var dato real
- i integer
- begin
- for i 1 to 5
- do
- begin
- read (dato)
- writeln (,dato,)
- end
- readln
- end.
6Iteración while
expresión lógica
while
do
instrucción
La expresión lógica es la condición de corte de
la iteración. La instrucción que sigue al do
(simple o bloque) constituye el bloque iterativo.
Para evitar un bucle infinito en el bloque
iterativo debe modificarse al menos una de las
variables que aparecen en la expresión, de manera
consistente con la inicialización.
7Iteración while
- Escribir un segmento de programa que compute el
máximo común divisor entre dos números positivos
m y n, tales que m gt n aplicando el algoritmo de
Euclides - n si n es divisor de m
- mcd (m,n)
- mcd(n,m div n) en caso contrario
El enunciado ya especifica el algoritmo, se
simplifica el diseño.
8Iteración while
mcd (m,n) para m y n positivos, m gt n while (m
mod n 0)do begin aux m m n
n aux mod n end
Si el valor inicial de n es divisor de m el bucle
no llega a ejecutarse nunca. La especificación
del problema requiere validar los valores m y
n. Verificar con dos números que sean
relativamente primos.
9Iteración while
- Escribir un programa que lea un valor positivo m
y calcule el menor valor de n tal que -
- 12 22 32 ... n2 gt m
serie 0 n 0 while (serie lt m) do begin
n n1 serie serie sqr(n)
end
Si m es 15 n tiene que ser 4 m es 14 n tiene
que ser 3
10Iteración while
- Escribir un programa que lea un valor positivo m
y calcule el menor valor de n tal que -
- 12 22 32 ... n2 gt m
serie 0 n 0 while (serie lt m) do begin
n n1 serie serie sqr(n)
end
En la lectura es necesario validar m. Como m es
positivo el bucle se ejecuta al menos 1 vez
11Iteración while
- Escribir un programa que lea un valor positivo m
y calcule el menor valor de n tal que -
- 12 22 32 ... n2 gt m
serie 1 n 1 while (serie lt m) do begin
n n1 serie serie sqr(n)
end
El bloque iterativo no se ejecuta si m es 1
12Iteración while
- Escribir un programa que lea un valor positivo m
y calcule el menor valor de n tal que -
- 12 22 32 ... n2 gt m
serie 0 n 0 while (serie lt m) do begin
n n1 serie serie sqr(n)
end
Si m es 15 n tiene que ser 4 m es 14 n tiene
que ser 4
13Iteración while
- Escribir un programa que lea un valor positivo m
y calcule el mayor valor de n tal que -
- 12 22 32 ... n2 lt m
serie 0 n 0 while (serie lt m)do begin
n n 1 serie serie sqr(n)
end n n-1
Incluir comentarios que correspondan al
enunciado.
14Iteración repeat
expresión lógica
repeat
secuencia
until
15Iteración repeat
- Escribir un programa que lea un valor positivo m
y calcule el menor valor de n tal que -
- 12 22 32 ... n2 gt m
serie 0 n 0 repeat n n1
serie serie sqr(n) until (serie gt m )
La expresión lógica es la condición de corte de
la iteración. El bloque iterativo se ejecuta al
menos una vez.
16Iteración repeat
- Escribir un programa que lea un valor positivo n
y compute la siguiente secuencia, si el número es
par lo divide por 2, si es impar lo multiplica
por 3 y le suma 1. Repetir el proceso hasta que
el número sea menor a 2, en ese caso mostrar el
número y la cantidad de iteraciones. -
- Si m es 10 la secuencia es
- 5 16 8 4 2 1
- Y se muestra 6
- Si m es 1 la secuencia es
- 4 2 1
- Y se muestra 1 3
17Iteración repeat
iter 0 repeat if (n mod 2 0) then
n n div 2 else n n 3 1
iter iter 1 until (n lt
1) writeln(n,iter)
18Iteración repeat
- Escribir un programa que lea una secuencia de
caracteres hasta leer un . y cuente la cantidad
de letras a. -
- cont 0
- repeat
- read (car)
- if (car a)
- then cont cont 1
- until (car .)
En el bloque iterativo debe modificarse al menos
una de las variables que forma la expresión de
corte, para asegurar que el bucle termina.
19Iteración repeat
- Escribir un programa que lea una secuencia de
palabras separadas por un espacio y terminada con
. y muestre cada palabra en una línea. -
- cont 0
- repeat
- read (car)
- if (car ) then writeln
- else write (car)
- until (car .)
20Anidamiento
- Un sensor efectúa controles sobre un equipo una
cantidad de veces por día. Cada dato relevado se
representa con un número real. Para cada día los
datos se registran con el siguiente formato - n d1, d2, , dn
- Cuando no hay más valores sensados se ingresa un
0 en la cantidad de lecturas. - Escribir un programa que muestre para cada día el
promedio de los valores leídos en ese día. - Vamos a asumir que el formato de la lectura es el
esperado
21Anidamiento
- Por ejemplo
- 5 4.5 6.5 8.7 6.2 3.1 7 0.3 0.5 3.2 6.0 6.5 7.2
6.5 - 6 0 0 0.5 0.8 4.2 8.3 1 5.4 5 3.2 4.3 0 0 2.14 0
- Se lee el 5 y a continuación 5 valores reales
- Se lee el 7 y a continuación 7 valores reales
- Se lee el 6 y a continuación 6 valores reales
- Se lee el 1 y a continuación 1 valor real
- Se lee el 5 y a continuación 5 valores reales
- Se lee el 0 y termina
22Anidamiento
repetir leer n si n gt 0 procesar hasta
n 0
Refinamos la solución
repetir leer n si n gt 0 repetir n
veces leer valor acumular
mostrar hasta n 0
23Anidamiento
dia 1 repeat read (n) tot 0 if (n
gt 0)then begin for i 1 to n do
begin read (val) tot
tot val end writeln
(dia,dia, ,tot/n) end dia dia
1 until (n 0)
24La primera versión es un algoritmo muy informal
que nos permitió hallar la estructura del bucle
exterior Aplicamos refinamiento para obtener una
versión más cercana a la solución, reemplazamos
procesar por un algoritmo que indica cómo
procesar. El algoritmo está escrito en un
lenguaje de diseño, menos riguroso que el
lenguaje de programación. En la etapa de diseño
buscamos hallar la estructura de la solución y
decidir cuáles son los mecanismos de control más
adecuados.
25- En esta materia el desarrollo de un programa a
partir de una especificación de requerimientos de
un problema es un proceso que demanda varias
etapas - Analizar los requerimientos
- Diseñar un algoritmo
- Implementar el algoritmo en Pascal
- Verificar que el programa es correcto, es decir
corresponde a los requerimientos - En las materias que siguen las etapas se
modificarán.