Procedimientos Read y Readln en Pascal

Los procedimientos predefinidos Read y ReadLn (contracción de Read Line), constituyen la base para las instrucciones de entrada estándar.

Las instrucciones de entrada proporcionan datos durante la ejecución de un programa. Las instrucciones para llamar a los procedimientosRead y ReadLnson de la siguiente forma:

Read(lista_de_variables);
ReadLn(lista_de_variables);

donde :

lista_de_variables: es una lista de identificadores de variables separados por comas, los datos que se pueden leer son : enteros, caracteres, o cadenas. No se puede leer un boolean o un elemento de tipo enumerado.

Los datos estructurados, arraysregistros o conjuntos, no se pueden leer globalmente y se suele recurrir a diseñar procedimientos específicos.

La acción de la instrucción es obtener, del teclado, tantos valores de datos como elementos hay en lista_de_variables. Los datos deberán ser compatibles con los tipos de las variables correspondientes en la lista.

Cada valor entero o real en el flujo de entrada puede ser representado como una secuencia de caracteres en alguna de las formas permitidas para tales números, y puede estar inmediatamente precedido por un signo más o un signo menos. Cada valor entero o real puede ser precedido por cualquier cantidad de caracteres blancos o fines de línea, pero no deberá haber blancos o fines de línea entre el signo y el número.

La diferencia entre las instrucciones Read y ReadLn consiste en que Read permite que la siguiente instrucción continúe leyendo valores en la misma línea; mientras que, con ReadLn la siguiente lectura se hará después de que se haya tecleado el carácter de fin de línea.

Cuando se tienen datos de tipo char en una instrucción Read, los caracteres blancos y los de fin de línea son considerados en el conteo de los elementos de las cadenas de caracteres mientras no se complete el total especificado para cada una de ellas. Cada fin de línea es tratado como un carácter, pero el valor asignado a la variable será un carácter blanco.

Es aconsejable que cada cadena de caracteres se lea en una instrucción Read o ReadLn por separado, para evitar el tener que ir contando hasta completar la cantidad exacta de caracteres que forman la cadena ( o de lo contrario se tendrán resultados sorpresivos y frustrantes al verificar los datos leídos ).

Ejemplo:

Var
 nombre  : string[30] ;
  edad    : integer;
  estatura :real;
    .
    .
    .
  ReadLn(nombre);
  ReadLn(edad);
  ReadLn(estatura);