Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe...

32
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones puede quedar determinada por una variable de control que toma valores dentro de un rango escalar o por una expresión lógica. En el primer caso hablamos de iteración con contador en el segundo de iteración con condición.

Transcript of Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe...

Page 1: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración

La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces.

La cantidad de iteraciones puede quedar determinada por una variable de control que toma valores dentro de un rango escalar o por una expresión lógica.

En el primer caso hablamos de iteración con contador en el segundo de iteración con condición.

Page 2: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

Escriba un programa en Pascal que lea dos valores enteros x y n y calcule y muestre:

∑𝑘=0

𝑛

𝑘 . 𝑥❑−𝑥❑

n = 3 y x =5

Computa0x5 – 5 + 1x5 – 5 + 2x5 – 5 + 3x5 – 5

Page 3: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

∑𝑘=0

𝑛

𝑘 . 𝑥❑−𝑥❑

program Sigma1;var k,n: integer; x,suma:integer;begin … suma := 0; for k := 0 to n do suma := suma + k*x - x; writeln ('Suma ',suma:10);end.

Realizar una traza para dos casos de prueba.

Page 4: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

Escriba un programa en Pascal que lea un valor entero n seguido por una secuencia de n enteros y compute:

∑𝑘=1

𝑛

𝑘 .𝑥 𝑘❑

n = 3 y la secuencia es 2 -5 7

Computa1x2 + 2x-5 + 3x7

Page 5: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

program Sigma2;var k,n: integer; x,suma:integer;begin suma := 0; writeln('Ingrese una secuencia de ',n:4,' elementos '); for k := 1 to n do begin readln(x); suma := suma + k*x ; end; writeln ('Suma ',suma:10);end.

∑𝑘=1

𝑛

𝑘 .𝑥 𝑘❑

Page 6: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

Escriba un programa en Pascal que lea los valores de x, m y n y calcule y muestre:

∑𝑗=0

𝑚

∑𝑘=0

𝑛− 1

(𝑚− 𝑗) . 𝑥❑−𝑘 .𝑥❑

Por ejemplo si m=2, n=3y x=5

(2x5 – 0x5)+ (2x5 – 1x5)+(2x5 – 2x5)+

(1x5 – 0x5)+ (1x5 – 1x5)+(1x5 – 2x5)+

(0x5 – 0x5)+ (0x5 – 1x5)+(0x5 – 2x5)

Page 7: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

program Sigma3;var j,k,n,m: integer; x,suma:integer;begin … suma := 0; for j := 0 to m do for k := 0 to n-1 do suma := suma + (m-j)*x - k*x; writeln ('Suma ',suma:10);end.

∑𝑗=0

𝑚

∑𝑘=0

𝑛− 1

(𝑚− 𝑗) . 𝑥❑−𝑘 .𝑥❑

Realizar una traza para dos casos de prueba.

Page 8: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

Escriba un programa en Pascal que lea un valor n y una secuencia de n ternas de valores y compute:

∑𝑗=1

𝑛

∏𝑘=1

3

𝑥 𝑗 ,𝑘❑ ∑

𝑗=1

𝑛

𝑥 𝑗 ,1 .𝑥 𝑗 ,2 .𝑥𝑗 ,3❑

Page 9: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: forprogram Sigma4;… suma:=0; for j := 1 to n do begin prod := 1; for k := 1 to 3 do begin read(x); prod := prod * x ; end; readln(); suma := suma + prod; end; …end.

∑𝑗=1

𝑛

∏𝑘=1

3

𝑥 𝑗 ,𝑘❑

Page 10: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

program Sigma4;var j,k,n: integer; x,suma,prod:integer;begin…

end.

Realizar una traza para dos casos de prueba.

Page 11: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

Una fábrica asigna a cada artículo un código formado por tres caracteres. El primero es una letra A, B o C, el segundo carácter es un dígito 3, 4, 5 o 6, el tercer es nuevamente una letra x o y.

Escriba un segmento de programa que muestre una tabla con todos los códigos posibles, agrupando los dos códigos que coinciden en los dos primeros caracteres en una misma línea.

Page 12: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

A 3 x A 3 y

A 4 x A 4 y

A 5 x A 5 y

A 6 x A 6 y

B 3 x B 3 y

writeln (letra,digito,’x’,’ ‘, letra,digito,’y’);

Page 13: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

A 3 x A 3 y

A 4 x A 4 y

A 5 x A 5 y

A 6 x A 6 y

for digito := 3 to 6 do writeln (letra,digito,’x’,’ ‘, letra,digito,’y’);

Page 14: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

A 3 x A 3 y

A 4 x A 4 y

A 5 x A 5 y

A 6 x A 6 y

B 3 x B 3 y

B 4 x B 4 y

B 5 x B 5 y

B 6 x B 6 y

Page 15: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

for letra := ‘A´ to ‘C’do for digito := 3 to 6 do writeln (letra,digito,’x’,’ ‘, letra,digito,’y’);

Page 16: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

Una fábrica asigna a cada artículo un código formado por tres caracteres. El primero es una letra A, B o C, el segundo carácter es un dígito 3, 4, 5 o 6, el tercer es nuevamente una letra v, w, x, y y z.

Escriba un segmento de programa que muestre una tabla con todos los códigos posibles, agrupando los cinco códigos que coinciden en los dos primeros caracteres en una misma línea.

Page 17: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración: for

for letra := ‘A´ to ‘C’do for digito := 3 to 6 do begin for tercer := ‘x’ to ‘z’ do write(letra,digito,tercero, ’ ‘); writeln ; end

Page 18: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Escriba un programa que decida si un número N es primo.

Iteración while

Un números natural N es un número primo si tiene solo dos divisores, 1 y N.

Una alternativa intuitiva para decidir si un número primo es hallar el conjunto de divisores.

Una alternativa más eficiente es hallar un divisor distinto a 1 y a N porque en ese caso podemos asegurar que N no es primo.

Page 19: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Escriba un programa que decida si un número N es primo.

Iteración while

Si 2 es un divisor de N entonces N no es primo, no importa si tiene o no otros divisores.

Análogamente si 3, 4, …, son divisores de N, entonces N no tiene divisores.

Una alternativa aun más eficiente es saltear los números pares que no son primos, pero por el momento el principal objetivo es la iteración.

Page 20: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Escriba un programa que decida si un número N entero positivo es primo.

Iteración while

N mod 2 = 0 si computa true N no es primo

N mod 3 = 0 si computa true N no es primo

Para generalizar podemos usar dos variables, una variable entera y una variable booleana.

Page 21: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

{Procesamiento}

d:=2;

esPrimo := true;

while (d < N) and (esPrimo = true)

do

if N mod d = 0 then

esPrimo := false

else

d := d + 1;

Iteración while

Page 22: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

program NEsPrimo;{Decide si un número N ingresado por consola es primo, asumiendo N > 1}var N,d : integer; esPrimo : boolean;begin{Entrada} write ('Ingrese N '); readln (N);{Procesamiento}…{Salida}…end.

Iteración while

Page 23: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

program NEsPrimo;…begin{Entrada}…{Procesamiento}…{Salida} if esPrimo then writeln(n:4,' es primo ') else writeln(n:4,' no es primo') ;

end.

Iteración while

Page 24: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración while

Hacemos la traza para N

4

19

45

Page 25: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración while

expresión lógica

while do instrucción

La instrucción del while es el bloque iterativo.

Cuando la expresión lógica es falsa se produce la

condición de corte de la iteración.

En el bloque iterativo debe modificarse al menos una de las variables de la expresión lógica, para permitir que la expresión lógica se haga falsa y el bucle termine.

Page 26: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Escriba un programa que muestre la suma de los dígitos de un número entero positivo N.

Iteración while

Por ejemplo si N= 605 la suma es 11.

Page 27: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración while

{Procesamiento} M:=N; suma := 0; while (M > 0) do begin suma := suma + M mod 10; M := M div 10; end;

Realizar una traza para dos casos de prueba.

Page 28: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Escriba un programa que decida si un dígito entre 1 y 9 está en un número entero positivo N.

Iteración while

Por ejemplo si d=3 y N= 605 d no está en N.si d=3 y N= 305 d está en N.si d=3 y N= 6035 d está en N.si d=3 y N= 6053 d está en N.si d=3 y N= 6303 d está en N.

Page 29: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración while

{Procesamiento} esta:= false; M:=N; while (M > 0) and (esta = false) do if M mod 10 = d then esta := true else M := M div 10;

Page 30: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración while

program dEstaenN;{Decide si un dígito d está en N }var N,M,d : integer; esta : boolean;begin{Entrada} write ('Ingrese N '); readln (N); write ('Ingrese el dígito '); readln (d);

Page 31: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Iteración while

program dEstaenN;…begin{Entrada}…{Procesamiento}…{Salida} if esta then writeln(d:4,' está en ',N:4) else writeln(d:4,' no está en ',N:4) ;end.

Page 32: Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.

Escriba un programa que muestre la posición menos significativa en la que aparece un dígito d en un número N. Si d no está en N, muestra 0.

Iteración while

Por ejemplo si d=3 y N= 605 la salida es 0.si d=3 y N= 1305 la salida es 3.si d=3 y N= 6035 la salida es 2.