Problemas while
Demostración de la función log 2(x) es una macro, construyendo el correspondiente “programa while”apoyándome en macros conocidas ( * , + , también detalladas a continuación) : Programa while [log 2(x)] Secuencia de computaciónBegin z := 0; w := 0; v := x - w; while v != 0 do begin z := succ(z); w := w * x; v := x - w; end end
[a ( z, w, v)] Para x = 4:
a1(0 , 1 , 3); Inicialización a2(a1); Entra en el bucle while a3(1, 1, 3); a4(1, 2, 3); a5(1, 2, 2); a6(a5); Entra en elbucle while. a7(2, 2, 2); a8(2, 4, 2); a9(2, 4, 0); a10(a9); No entra en el bucle(v = 0).
Programa while [ x*y]
Begin z :=0; while y != 0 do begin z := z + x; y:= pred(y); end end
[a ( x, y, z)] Para x = 1, y = 2 :
a1(1, 2, 0); Inicializacióna2(a1); Entra en el bucle while. a3(1, 2, 1); a4(1, 1, 1); a5(a4); Entra en el bucle while; a6(1, 1, 2); a7(1, 0, 2); No entra enel bucle(y = 0).
Programa while [x+y]
begin z := x; while y != 0 do begin z := succ(z); y := pred(y); end end
[a ( x,y, z)] Para x = 1, y = 2 :
a1(1, 2, 1); a2(a1); a3(1, 2, 2); a4(1, 1, 2); a5(a4); a6(1, 1, 3); a7(1, 0 , 3); InicializaciónEntra en el bucle while.
Entra en el bucle while. No entra en el bucle(y = 0).
Benjamín Antomil Valledor – UO221658
Regístrate para leer el documento completo.