Curso/Tutorial de Pascal (Turbo Pascal)
C/C++/C# HTML Java JavaScript Linux PHP Python Swift
 Principal
 Inicio
 Libros
 Librerías
 Bibliotecas
 Mapa Web
 
 Recursos
 Artículos
 Cursos
 Ejercicios
 Guías de uso
 Mini Diccionario 
  
 Sintaxis
 ANSI C
 Ordinogramas
 Pascal
 Pseudocódigo 
  
 Contenidos > 1.9 Entrada y salida estándar
En Pascal no existen palabras reservadas para realizar entradas y salidas. Para ello, el programador puede hacer uso de los procedimientos de entrada y salida estándar proporcionados por Pascal: ReadReadLn, o WriteWriteLn.


Los procedimientos Write y WriteLn

El procedimiento 
Write permite llevar hacia la salida estándar (la pantalla) los valores (datos) obtenidos de la evaluación de una lista de argumentos. La sintaxis de su llamada es:


Write( <expresión_1>, <expresión_2>, ..., <expresión_n> );
 

En programación, los argumentos (también llamados parámetros) se emplean para transferir datos de un programa (o subprograma) llamante a otro llamado, y viceversa (del llamado al llamante).

Cuando desde un programa llamante se invoca al procedimiento 
Write, a éste se le pasa una lista de argumentos (expresiones). Los valores (datos) obtenidos de la evaluación de esa lista de expresiones son los que se van a mostrar por la pantalla.

Ejemplo 1: En la llamada al procedimiento Write de nuestro primer programa, la lista de expresiones sólo contenía una expresión:

program EJE11011;

uses Crt;

begin
   ClrScr;
   Write( 'Hola mundo' )
end.


Por pantalla aparecerá:

Hola mundo

 

Ejemplo 2: Dada la constante

   NOMBRE = 'Raquel';

si escribimos

   Write( 'Hola ", NOMBRE );

por pantalla se verá:

Hola Raquel

 

Ejemplo 3: Si se ejecuta el programa

program EJE11301;

uses Crt;

var
   Nombre : String [7];
   Hermanos, Sobrinos : Integer;

begin
   ClrScr;

   Nombre := 'Timoteo';
   Hermanos := 2;
   Sobrinos := 4;

   Write( Nombre, ' tiene ', Hermanos,
          ' hermanos y ', Sobrinos, ' sobrinos.' )
end.

por pantalla se verá:

Timoteo tiene 2 hermanos y 4 sobrinos.

 

En general, cuando se diseña el algoritmo de un programa, el programador no se preocupa del lugar exacto de la pantalla en donde van a aparecer los datos de salida del programa, ya que, este aspecto suele concretarse en la codificación.

En Windows, la patanlla (de la consola) está compuesta por 25 filas (líneas) y 80 columnas, es decir, en pantalla se pueden visualizar 2000 caracteres a la vez (25*80).

En Turbo Pascal, al llamar al procedimiento
ClrScr se consigue borrar la pantalla y situar el cursor en la primera columna de la primera fila de la misma.

_ (cursor)

 

A partir de esa posición, se mostrarán por pantalla los datos de salida de dicho programa.

Ejemplo 4: Si se escribe

program EJE11331;

uses Crt;

begin
   ClrScr;
   Write( 'uno dos tres' )
end.
Programa (.PAS): 'Uso de Write'

por pantalla se verá el texto 'uno dos tres' pegado a la esquina superior izquierda de la misma.

uno dos tres

 

Hasta ahora, no nos hemos preocupado del lugar exacto de la pantalla donde queremos que se muestren los datos de salida. Sin embargo, si deseamos visualizar dicho texto en otro lugar de la pantalla, por ejemplo, a partir de la segunda columna de la tercera línea:

1-------9-------17------25  ... (columnas)


 uno dos tres

 

Esto se puede conseguir haciendo uso del procedimiento GotoXY, indicándole la columna y la fila en donde queremos situar el cursor en la pantalla. La sintaxis de su llamada es:


GotoXY( <columna>, <fila> );
 

De forma que, el código fuente del programa será:

program EJE11332;

uses Crt;

begin
   ClrScr;
   GotoXY( 23 );
   Write( 'uno dos tres' )
end.
Programa (.PAS): 'Uso de GotoXY'

La declaración del procedimiento ClrScr está en la unidad Crt.

Ejemplo 5: Si por pantalla se quiere ver

uno
dos
tres

 

podemos hacer uso del procedimiento 
WriteLn, que funciona igual que Write, con la diferencia de que después de mostrar por pantalla los valores obtenidos de la lista de expresiones, WriteLn realiza un salto de linea, posicionando el cursor en la primera columna de la fila siguiente, cosa que no hace Write.

Por tanto, para resolver el ejemplo 5 podemos escribir:

program EJE11333;

uses Crt;

begin
   ClrScr;
   WriteLn( 'uno' );
   WriteLn( 'dos' );
   WriteLn( 'tres' )
end.
Programa (.PAS): 'Uso de WriteLn'

Obsérvese que, si, en este ejemplo, en vez de 
WriteLn, hubiesemos utilzado Write:

program EJE11334;

uses Crt;

begin
   ClrScr;
   Write( 'uno' );
   Write( 'dos' );
   Write( 'tres' )
end.
Programa (.PAS): 'Uso de Write'
por pantalla se mostraría:

unodostres

 

Ejemplo 7: Para mostrar

1-------9-------17------25  ...
uno

dos

tres

 

escribiremos, por ejemplo:

program EJE11335;

uses Crt;

begin
   ClrScr;
   WriteLn( 'uno' );
   WriteLn;
   WriteLn( 'dos' );
   WriteLn;
   WriteLn( 'tres' )
end.
Programa (.PAS): 'Uso de WriteLn'


Los procedimientos Read y ReadLn

Los procedimientos
ReadReadLn permiten asignar a una o más variables, uno o más valores (datos) recibidos desde la entrada estándar (el teclado). Las sintaxis de sus llamadas son:


Read( <lista_de_variables> );
 


ReadLn( <lista_de_variables> );
 

Al igual que WriteWriteLn, también ReadLn funciona igual que Read, con la diferencia de que después de leer por teclado los valores introducidos por el usuario, ReadLn realiza un salto de linea, posicionando el cursor en la primera columna de la fila siguiente, y Read no realiza dicho salto.

Por otra parte, aunque en la <lista_de_variables> se puede escribir más de una variable, de momento, solamente estudiaremos el funcionamiento de ReadReadLn con una única variable.

Ejemplo 10: Dado el programa

program EJE11411;

uses Crt;

const PI = 3.141592;

var Area, Radio : Real;

begin
   ClrScr;

   Write( 'Introduzca radio: ' );
   ReadLn( Radio );
   Area := PI * Radio * Radio;
   Write( 'El area de la circunferencia es: ', Area )
end.
Programa (.PAS): 'Uso de ReadLn'

Si al ejecutarlo el usuario teclea, por ejemplo, el valor 3.8 para el radio, en pantalla se visualizará:

Introduzca radio: 3.8
El area de la circunferencia es:  4.5364588480E+01

 

Para que el área se muestre sólo con dos cifras decimales, es decir, 45.36 en vez de 4.5364588480E+01, en la segunda llamada al procedimiento Write se puede escribir Area:0:2 en vez de Area.

   Write( 'El area de la circunferencia es: ', Area:0:2 )

En pantalla se verá

Introduzca radio: 3.8
El area de la circunferencia es: 45.36

 

Aunque sólo se muestren dos cifras decimales, en memoria el Area seguirá valiendo 
45.364588. Se invita al lector a averiguar qué se mostrará por pantalla si, por ejemplo, se escribe: Area:2, Area:3, Area:7:2, Area:5:2, Area:5:1,...


Ejercicios Recomendados:
 Más información
Texto extraído del libro EMPEZAR DE CERO A PROGRAMAR EN PASCAL.
 Contenidos > Apartado siguiente
1.10 Comentarios