ENTRADA E SAÍDA DE DADOS

 

 

·       As informações que entram para, ou saem do computador incluem programas, dados, mensagens de erro, etc.

·       A entrada e a saída de dados são feitas através de 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.

 

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 (entrada padrão);

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

 

·       O comando READ lê os dados na seqüência em que forem digitados no teclado (ou que forem encontrados no arquivo informado) e os atribui às variáveis da LISTA_DE_VARIAVEIS, na seqüência em que aparecem no comando READ.

 

Exemplo:

 

       READ(A, B, C);

 

·       Este comando 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;

·       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.

 

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).

 

Exemplo:

 

     WRITE(A, B, C);

 

·       Este comando 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.

·       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:

·       reais - em forma de notação exponencial;

·       inteiros - ocupará a quantidade mínima de posições necessárias para armazenar o número e seu sinal, se negativo;

·       literais ou cadeias de caracteres - 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).

 

ENTRADA COM FORMATAÇÃO

 

·       Pode-se especificar um tamanho de campo para uma variável a ser lida escrevendo-se o delimitador “:” (dois pontos) seguido do número de caracteres da linha de entrada que serão considerados para aquela variável que estiver sendo lida, expresso através de uma constante, uma variável ou uma expressão do tipo inteiro.

·       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 caractere 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 caractere estranho ao tipo de dado que estiver sendo lido) então o resto do campo será saltado.

·       O comando:

 

Exemplo:

 

     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.

 

SAÍDA COM FORMATAÇÃO

 

·       A saída também pode ser formatada. Cada objeto em um comando WRITE pode ter uma das formas:

 

objeto

objeto: tamanho1

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.

-         tamanho1 – expressão inteira que indica o número total de posições que se deseja utilizar para dar saída ao objeto.

-         tamanho2 - só para objetos do tipo real, expressão inteira que 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.

 

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;

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

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

    VAR

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

       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.

 

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.