====== Examen Parcial - 75.41. Algoritmos y Programación II ====== **Cátedra:** ¿Mandrafina?\\ **Fecha:** Primera Oportunidad - Primer Cuatrimestre 2001\\ **Día:** 08/05/2001\\ **Tema:** 2 Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== ==== Punto I ==== Dado el siguiente procedimiento recursivo: Procedure IMPRYPERM(X,Y,Z:char; N: integer); Begin if N > 0 then begin Write(Z); IMPRYPERM(Y,Z,X,N-1); Write(X); IMPRYPERM(Z,X,Y,N-2); Write(Y) End End; Mostrar la salida producida para las siguientes llamadas: - IMPRYPERM('A','B','C',2); - IMPRYPERM('A','B','C',4); ==== Punto II ==== Dadas las siguientes declaraciones en Pascal desarrollar las tablas como lo haría el compilador: registro = record A: integer; B: boolean; C: real; case tipo: char of X: (D:array[1..5,1..15] of char;e:1..100;F:boolean); Y: (G: packed_array[1..20] pf char; H: integer); Z: (I: array[1..30] of char; J: integer); end; var R1,R2: registro; registros: array[1..20] of registro; Y suponiendo que la tabla de variables del programa se carga en la posición 100 de la memoria, decir cómo resuelve en tiempo de ejecución la dirección de memoria donde se realiza la asignación: R1.D[2,10] = 'T' ==== Punto III ==== Mostrar con diagramas lo que escribe el siguiente segmento de código: type Puntero = ^nodo; Nodo = record info: char; arriba,abajo: puntero end; var p,q,r: puntero; Begin new(p); new(q); new(r); p^.info:='B'; p^.abajo:=q; q^.abajo:=r; q^.info:='C'; r^.info:='D'; r^.abajo:=p; r^.arriba:=q; q^.arriba:=p; p^.arriba:=r; p^.abajo^.abajo:=p; q^.info:=q^.abajo^.info; p:=q; p^.arriba^.info:='A'; writeln(p^.info;q^.info;r^.info); End. ===== Resolución ===== ===== Discusión ===== Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.