Ejemplos sobre repetición

Anuncio
Ejemplos sobre repetición
Tecnologías en Educación
Matemática
Dr. Carlos Gonzalía
Problema:
𝑌
𝑋
Consideremos el problema de definir un
algoritmo que calcule la potenciación 𝑋 𝑌 , con
X e Y naturales (incluyendo al cero).
Hay muchos algoritmos distintos para resolver
esto, veamos la forma que adoptan en Pascal.
𝑌
𝑋 :
prod := 1;
For i:= 1 to Y do
prod := prod * X;
For-do
𝑌
𝑋 :
For-downto
prod := 1;
For i := Y downto 1 do
prod := prod * X;
𝑌
𝑋 :
While
prod := 1;
i := 1;
While i<=Y do
begin
prod := prod* X;
i := i+1
end;
𝑌
𝑋 :
While (ojo con el contador!)
prod := 1;
i := 0;
While i<Y do
begin
prod := prod* X;
i := i+1
end;
𝑌
𝑋 :
While (contador reverso)
prod := 1;
i := Y;
While i>0 do
begin
prod := prod* X;
i := i-1
end;
𝑌
𝑋 :
Repeat (mal!)
prod := 1;
i := 1;
{ i:= 0 también está mal!}
Repeat
prod := prod *X;
i := i+1
Until i>Y;
𝑌
𝑋 :
Repeat (bien!)
prod := 1;
If Y>0
then begin
i := 1;
Repeat
prod := prod *x;
i := i+1
Until i>Y;
end
𝑌
𝑋 :
Repeat (contador reverso)
prod := 1;
If Y>0
then begin
i := Y;
Repeat
prod := prod *x;
i := i-1
Until i=0;
end
𝑌
𝑋
sin producto
Supongamos que carecemos del producto de
enteros como operación primitiva.
Entonces debemos calcular un producto a*b
como la suma repetida de a, b veces.
Esto convierte a cualquiera de los ejemplos
anteriores en uno con ciclos anidados.
𝑌
𝑋 :
For-do anidados
prod := 1;
For i:= 1 to Y do
begin
{ prod := prod * X }
suma := 0;
for j := 1 to X do
suma := suma+prod;
prod := suma
end;
𝑌
𝑋 :
While anidados
prod := 1;
i := 1;
While i<=Y do begin
{ prod := prod*X }
j := 1;
suma := 0;
While j<=X do begin
suma := suma+prod;
j:= j+1
end;
prod := suma;
i := i+1
end;
𝑌
𝑋 :
Repeat anidados
If X=0 then prod := 0
else if Y=0 then prod := 1
else begin
i := 1;
Repeat
j := 1;
Repeat
{ prod := prod*X }
suma := suma+prod;
j := j+1
Until j>X;
prod := suma;
i := i+1
Until i>Y;
end
Descargar