|
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: Read
y ReadLn,
o Write
y WriteLn.
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á:
Ejemplo
2:
Dada la constante
NOMBRE = 'Raquel';
si escribimos
Write( 'Hola ", NOMBRE );
por pantalla
se verá:
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.
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. |
por
pantalla se verá el texto 'uno dos tres'
pegado a la esquina superior izquierda de la misma.
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( 2, 3 );
Write( 'uno dos
tres' )
end. |
La declaración del procedimiento ClrScr está
en la unidad Crt.
Ejemplo
5: Si por pantalla se quiere ver
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. |
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. |
por pantalla se
mostraría:
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. |
Los procedimientos Read y ReadLn
Los procedimientos Read
y ReadLn
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 Write
y WriteLn,
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 Read
y ReadLn
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. |
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:
|
|
|
|
|