4 - ENTRADA E SAÍDA DE DADOS

 

         A comunicação do computador com seus usuários é estabelecida por meio das unidades de entrada e saída. É através das unidades de entrada e saída que as informações entram para, ou saem do computador. Estas informações incluem programas, dados, mensagens de erro, etc. A entrada e a saída de dados são feitas com os comandos de entrada e de saída de dados. Em PASCAL, estes comandos são basicamente os comandos READ e WRITE, respectivamente, e suas variantes READLN e WRITELN.

 

4.1. ENTRADA LIVRE

         A leitura de dados é dita livre quando não obedece a nenhuma formatação especial: os dados são informados de maneira livre, sem observação de qualquer tipo de alinhamento. A leitura livre em PASCAL é feita com a utilização do comando READ com a seguinte forma geral:

 

    READ(ARQUIVO, LISTA_DE_VARIÁVEIS);

 

Onde:

READ - identifica o comando READ;

ARQUIVO - é um nome de arquivo. Se omitido, o compilador assumirá INPUT e os dados serão lidos do teclado do computador;

LISTA_DE_VARIÁVEIS - é uma lista de variáveis (uma ou mais) separadas por vírgulas.

 

         Ao ser executado, o comando READ lê os dados na seqüência em que forem digitados no teclado (ou que forem encontrados no arquivo informado) e transfere-os para as variáveis da LISTA_DE_VARIAVEIS, na seqüência em que aparecem no comando READ. Portanto, além de ler os dados do dispositivo físico (o teclado, neste caso) o comando READ efetua uma atribuição dos valores lidos às variáveis da LISTA_DE_VARIAVEIS.

O comando

 

     READ(A, B, C);

 

quando for executado, efetuará a leitura de três valores dos tipos especificados nas declarações de variáveis de A, B e C, respectivamente, e atribuirá estes valores às variáveis A, B e C, nesta seqüência. Deve haver correspondência entre os tipos dos valores digitados e aqueles das variáveis que estiverem sendo lidas, do contrário ocorrerá um erro na hora da execução do programa. Se forem digitados mais valores que a quantidade de variáveis da lista_de_variáveis, os valores excedentes estarão disponíveis para a próxima operação de leitura.

          A forma READLN tem funcionamento análogo ao da forma READ, exceto que após a execução completa do READLN o cursor mudará de linha na tela e novos dados serão lidos de, ou exibidos em, uma nova linha, o que não ocorre com a forma READ.

 

4.2. SAÍDA LIVRE

 

         A saída de valores (exibição, impressão, gravação) é livre quando o comando de saída não especifica nenhuma formatação especial: os dados são impressos, exibidos ou gravados em um formato padrão que varia de acordo com o tipo de dado e com o compilador. A saída livre de dados em PASCAL é feita com a utilização do comando WRITE, que tem a seguinte forma geral:

 

    WRITE(ARQUIVO, LISTA_DE_OBJETOS);

 

Onde:

WRITE - identifica o comando WRITE;

ARQUIVO - é um nome de arquivo. Se for empregado LST então a saída deste comando será direcionada para a impressora. Se o nome do arquivo for omitido, o compilador assumirá OUTPUT o que significa que os dados serão armazenados em um arquivo em disco ou então serão exibidos na tela do monitor de vídeo, dependendo do compilador que estiver sendo utilizado.

LISTA_DE_OBJETOS - é uma lista de constantes e/ou chamadas a funções e/ou variáveis que devem ser impressas, exibidas ou gravadas em disco (dependendo do compilador).

 

O comando

 

    WRITE(A, B, C);

 

quando for executado, efetuará a exibição dos valores das variáveis A, B e C na tela do monitor de vídeo ou gravará estes valores em um arquivo em disco (dependendo do compilador utilizado). A saída dos valores será feita na seqüência em que eles aparecem no comando e obedecerá a um formato padrão em função do tipo dos valores: a saída de valores reais será feita em forma de notação exponencial; a dos valores inteiros ocupará a quantidade mínima de posições necessárias para armazenar o número e seu sinal (se negativo); os literais ocuparão o número mínimo de posições necessárias para sua representação - no caso das constantes, ou então o número de posições com o qual o literal foi declarado em uma declaração de tipo - no caso das variáveis.

         A forma WRITELN tem funcionamento análogo ao da forma WRITE exceto que após a execução completa do WRITELN o cursor mudará de linha (na tela ou na impressora) ou de registro (no caso de arquivo em disco) e novos dados oriundos do próximo comando WRITE (ou WRITELN) serão impressos, exibidos ou gravados em uma nova linha, o que não ocorre com a forma WRITE.

 

4.3. ENTRADA COM FORMATAÇÃO

 

Você pode, opcionalmente, especificar um tamanho de campo para uma variável a ser lida. Isto é feito escrevendo-se o delimitador : (dois pontos) seguido de uma constante, uma variável ou uma expressão do tipo inteiro indicando o tamanho do campo a ser lido. Esta expressão indica o número de caracteres da linha de entrada que serão considerados para aquela variável que estiver sendo lida.

         Caso o número de caracteres indicado pelo tamanho do campo seja atingido durante a leitura então a próxima operação de leitura terá início a partir do primeiro caracter seguindo o campo lido. Se a operação de leitura for completada antes de processar todos os caracteres especificados (ao encontrar um espaço em branco, por exemplo, ou algum caracter estranho ao tipo de dado que estiver sendo lido) então o resto do campo será saltado.

O comando

 

    READ(A: 5, B: 3);

 

informa ao compilador que as variáveis A e B serão lidas com 5 e 3 posições da linha de entrada, respectivamente. Nem todos os compiladores PASCAL dispõem desta facilidade.

 

4.4. SAÍDA COM FORMATAÇÃO

 

          A exemplo do que ocorre com a entrada de dados, a saída também pode, opcionalmente, ser formatada. Cada objeto em um comando WRITE pode ter uma das formas:

          1. Objeto

          2. Objeto: tamanho1

          3. Objeto: tamanho1: tamanho2

 

Onde:

Objeto - pode ser uma expressão de qualquer dos tipos de dados apresentados e representa o valor a ser impresso, exibido ou gravado. As expressões tamanho1 e tamanho2 devem resultar em uma quantidade inteira.

Tamanho1 indica o tamanho total (número de posições) que se deseja utilizar para dar saída ao objeto.

Tamanho2 só pode ser utilizado para objetos do tipo real e indica o número de casas decimais que se deseja obter nos resultados. Os dados são alinhados à direita dentro do espaço reservado para a saída e mais posições serão automaticamente alocadas pelo compilador caso o espaço reservado em tamanho1 não seja suficiente.

 

Vejamos alguns exemplos:

 

    WRITE(1234: 6) produz '  1234'

    WRITE(1234: 1) produz '1234'

    WRITE('a': 6) produz '      a'

    WRITE(3.14159: 10: 4) produz '    3.1416'

 

          O programa apresentado a seguir determina a média parcial para um aluno da disciplina Introdução à Ciência da Computação, utilizando como entrada as notas das duas provas parciais e das quatro listas de exercícios, e utiliza impressão formatada. A média dos exercícios tem peso 2 e a média das provas parciais tem peso 8.

 

PROGRAM MEDIA;

    VAR P1, P2, E1, E2, E3, E4, MPARCIAL: REAL;

    /* P1 e P2 são as provas parciais */

    /* Cada Ei representa a nota da i-ésima lista de exercícios */

    M_PROVAS, M_EXERC: REAL; K: INTEGER;

BEGIN

    WRITELN('INFORME AS NOTAS DAS DUAS PROVAS');

    READLN(P1, P2);

    WRITELN('INFORME AS NOTAS DOS QUATRO EXERCICIOS');

    READLN(E1, E2, E3, E4);

    M_PROVAS := (P1 + P2) / 2.0;

    M_EXERC := (E1 + E2 + E3 + E4) / 4.0;

    M_PARCIAL := M_PROVAS * 0.8 + M_EXERC * 0.2;

    WRITELN('PROVA1=', P1: 5: 1, 'PROVA2=', P2: 5: 1);

    WRITELN('EXERCICIO1 =', E1: 5: 1, 'EXERCICIO2 =', E2:         5: 1; 'EXERCICIO3 =', E3: 5: 1, 'EXERCICIO4 =',           E4: 5: 1);

    WRITELN('MEDIA PARCIAL =', M_PARCIAL: 6: 2)

END.

 

4.5. EXERCÍCIOS PROPOSTOS

 

1. Escreva um programa em PASCAL para ler os lados de um triângulo retângulo e determinar a área e a hipotenusa do triângulo.

2. Escreva um programa em PASCAL para calcular a média aritmética de cinco (5) números reais lidos da unidade padrão de entrada. Os resultados devem ser impressos da seguinte forma:

          N1 = xxx.x N2 = xxx.x N3 = xxx.x N4 = xxx.x N5 = xxx.x

          MEDIA ARITMÉTICA = xxx.xx

3. Escreva um programa em PASCAL que leia cinco (5) valores reais e imprima:

          VALORES LIDOS:

          N1 = xxx.x N2 = xxx.x N3 = xxx.x N4 = xxx.x N5 = xxx.x

          MEDIA ARITMETICA DOS VALORES = xxx.xx

          SOMA DOS QUADRADOS DOS VALORES = xxxx.x

          QUADRADO DA SOMA DOS VALORES = xxxx.x

          CUBO DOS VALORES:     xxxxx.x xxxxx.x xxxxx.x xxxxx.x xxxxx.x

4. Escreva um programa em PASCAL que leia em decímetros o raio e a altura de um cilindro e calcule a área lateral e o volume desse corpo em centímetros quadrados e centímetros cúbicos, respectivamente.

5. Escreva um programa em PASCAL para calcular e imprimir os valores das áreas hachureadas nas figuras abaixo, para um valor do raio lido da unidade padrão de entrada.

6. Escreva em PASCAL um programa que leia uma distância em milhas e imprima o valor lido e os valores correspondentes em quilômetros, metros e polegadas.

7. Escreva um programa em PASCAL para ler um valor de temperatura em graus centígrados e converter o valor lido para graus Kelvin e Fahrenheit.

8. Escreva um programa em PASCAL que leia o valor de dois (2) ângulos alfa e beta em graus e transforme-os em radianos.

          radiano = (graus.pi) / 180

9. Escreva um programa em PASCAL que leia os valores referentes a percurso (em quilômetros) e tempo de viagem (em horas) para um determinado trecho de viagem e calcule a velocidade média para os valores considerados. Imprima todos os valores lidos e calculados.

10. Escreva um programa em PASCAL para ler o valor do raio de um círculo e imprimir:

         - o raio lido;

         - o diâmetro do círculo;

         - o valor do comprimento da circunferência e

         - o valor da área do círculo.

11. Escreva um programa em PASCAL para determinar a área da tora de raio interno a e raio externo b.

         volume = ¼P (a + b)(b - a)2

O programa imprimirá os resultados da seguinte forma:

         Valor do raio a = xxx

         Valor do raio b = xxx

         Volume da tora = xxxx.xxx

12. Escreva um programa completo em PASCAL para cálculo do raio de um círculo inscrito em um triângulo de lados a, b e c lidos da unidade padrão de entrada. Cálculo do raio

                     ________________

                   Öp(p - a) (p - b) (p - c)

               r = ------------------------------  , onde p = ½(a + b + c)

                                 p


O programa imprimirá:

          Lados do triângulo:

          Lado 1 = xxx Lado 2 = xxx Lado 3 = xxx

          Raio do círculo inscrito = xxx.xx

13. Escreva um programa em PASCAL para determinar a soma dos números ímpares compreendidos entre dois números pares positivos (X, Y), lidos da unidade padrão de entrada. Sugestão: utilize fórmulas de uma progressão aritmética:

          an = a1 + (n - 1)r; e     sn = (a1 + an) n / 2

14. Escreva um programa de computador usando a Linguagem PASCAL para ler valores para A, B, e C (variáveis do tipo inteiro) e escrever os valores lidos e as raízes da equação ax2 + bx + c = 0. Os resultados devem ser impressos do seguinte modo:

          Coeficientes:

          A = xxx B = xxx C = xxx

          Raízes da Equação:

          X1 = xxx.xx X2 = xxx.xx

15. Escreva um programa em PASCAL para calcular os rendimentos de uma caderneta de poupança, com saldo inicial lido da unidade padrão de entrada, durante o primeiro trimestre de 1997.

16. Escreva um programa PASCAL que leia os valores referentes ao consumo em litros de combustível, à quilometragem atual e quilometragem anterior para um determinado veículo, e calcule o percurso para as quilometragens consideradas e o percurso médio em Km/litro para o veículo. Imprima todos os valores lidos e calculados.

 

Avançar para o Capítulo Anterior     Voltar para o Índice     Avançar para o Próximo Capítulo