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