Utilización de memoria
Realizar las lecturas involucradas por Inspecciona y Avanza directamente del archivo donde reside el programa fuente puede ser ineficiente ya que el tiempo que se consume para leer 1 y 1024 caracteres es el mismo.
Por ello se considera la existencia de memoria de entrada (buffer) donde se puede depositar imágenes del contenido del archivo del programa fuente y donde se realicen Inspecciona y Avanza directamente en RAM.
Esta memoria de entrada tiene una capacidad de 1024 caracteres (o múltiplos de esta cantidad) que llamaremos N. La dirección de inicio de esta región la denominaremos Buffer.
La región se mantendrá dividida en dos partes, que se llenarán de manera alternativa bajo el siguiente algoritmo.
AP=AP+1 SI AP == Buffer+N/2 ( AP está al final del primer bloque y por lo tanto debe llenar el segundo ) ENTONCES i=Lectura(Buffer+N/2, N/2, archivo) SI i <N/2 ENTONCES Contenido(Buffer+N/2+i)=eof FSI SINO SI AP == Buffer+N ( AP está al final del segundo bloque y por lo tanto debe llenar el primero ) ENTONCES i=Lectura(Buffer, N/2, archivo) AP=Buffer SI i <N/2 ENTONCES Contenido(Buffer+i)=eof FSI FSI FSI
Este algoritmo representa el comportamiento de la función Avanza, quien determinará cuando transferir a memoria el contenido del archivo del programa fuente. La función Lectura (destino, n, fuente) requiere especificar la región de memoria (destino) donde se depositarán (n) caracteres del archivo (fuente).