Créditos FEC-Unicam

Comandos de Entrada e Saída

read(lista-de-identificadores)
readln(lista-de-identificadores)
write(lista-de-identificadores e/ou constantes e/ou expressões)
writeln(lista-de-identificadores e/ou constantes e/ou expressões)

READ e READLN são os comandos de entrada usados em Pascal. lista-de-identificadores são os nomes das variáveis do tipo STRING, INTEGER, CHAR, ou REAL, cujos valores serão lidos na unidade de entrada. Os identificadores contidos na lista, devem estar separados por vírgula. A diferença entre estes dois comandos de entrada é que o comando READ lê os valores das variáveis da lista deixando o valor seguinte desta linha, se houver, disponível para o próximo comando de entrada. Ao contrário, o comando READLN lê os valores das variáveis da lista e salta, se houver, os valores restantes da linha. Assim o próximo comando de entrada não receberá esses valores adicionais contidos na linha. Os valores de entrada deverão estar separados por espaço(s) ou por fim de linha.

WRITE e WRITELN são os comandos de saída usados em Pascal. lista-de-identificadores são os nomes das variáveis do tipo STRING, INTEGER, CHAR, REAL ou BOOLEAN, cujos valores serão lidos na unidade de entrada. Os identificadores contidos na lista, devem estar separados por vírgula. Constantes e expressões de mesmo tipo podem aparecer nos comandos de saída. A diferença entre estes dois comandos é que o comando WRITE escreve os valores numa ou mais linhas, deixando que o próximo comando de saída continue escrevendo na última linha, se ainda houver espaço. Ao contrário, o comando WRITELN escreve os valores em uma ou mais linhas, de modo que o próximo comandos de saída comece a escrever após a última linha.

Exemplos:

read(x);
readln(nome, n ,y);
write(k, soma);
writeln(21, ´Nome´, n);
write(´Tabela de Preços´);
writeln(n, sqrt(n));

Formatação
Podemos generalizar as comandos de saída do Pascal da seguinte forma:

write(p1, ...,pn)
writeln(p1, ...,pn)

onde pi é um parâmetro com uma das formas:
- e
- e : e1
- e : e1 : e2

sendo e, e1, e2 expressões.

e representa o valor a ser escrito e pode ser do tipo INTEGER, REALM, CHAR, STRING ou BOOLEAN, podendo ser uma constante ou uma expressão.
e1 representa um valor inteiro positivo e indica o número mínimo de caracteres a ser escrito. Se e1 for insuficiente para representar o valor escrito, então será alocado mais espaço. Se e1 for excessivo, o espaço excedente será preenchido com brancos.
e2 só se aplica de e for do tipo REAL. e2 é um valor inteiro positivo e especifica o número de dígitos que devem ser escritos após o ponto decimal. Se e2 for omitido, então o valor real será escrito no formato exponencial.

Exemplo:

program exe1;

var a, b : real;
  k : char;

begin
  a := 3.2;
  b := 5.81;
  k := ´*´;
  writeln('resultado: ', a:5, ' + ', b:5, ' = ', a+b:5, k);
  writeln('resultado: ',a:5:1, ' + ', b:5:1, ' = ', a+b:5:1, k:1);
  writeln('resultado: ',a:5:2, ' + ', b:5:2, ' = ', a+b:5:2, k:2);
  writeln('resultado: ',a:5:3, ' + ', b:5:3, ' = ', a+b:5:3, k:3);
end.

Saída:

resultado: 3.2e+00 + 5.8e+00 = 9.0e+00*
resultado: 3.2 + 5.8 = 9.0*
resultado: 3.20 + 5.81 = 9.01 *
resultado: 3.200 + 5.810 = 9.010 *