Programando_com_Pascal
146 pág.

Programando_com_Pascal


DisciplinaGeometria Analítica15.283 materiais389.755 seguidores
Pré-visualização50 páginas
com a mesma entrada, dada na mesma forma, geraria a tela:
Digite tres número reais: 8.43 6.1 13.145
A média dos números 8.4300000000E+00, 6.1000000000E+00 e 13.1450000000 é 9.2250000000E+00
Certamente o leitor já percebeu que estamos supondo que a primeira coluna da tela do computador 
coincide com a margem esquerda do livro.
Como os exemplos anteriores mostram, o padrão utilizado pelos compiladores Pascal é exibir os números 
de ponto flutuante na forma de notação científica, utilizando 10 casas decimais. Um outro padrão adotado é 
exibir o que deve ser exibido a partir da posição do cursor. Estes padrões podem ser alterados acrescentando-
se parâmetros aos identificadores de variáveis, às expressões ou às mensagens que são argumentos de 
comandos de saída. Num comando de saída, após um identificador de variável, ou de uma expressão, ou de 
uma mensagem, pode-se acrescentar :n, definindo que o valor daquele argumento será exibido utilizando-se 
n colunas, a partir da posição do cursor. Por exemplo, se o conteúdo de uma variável A, do tipo integer, é 56, 
a execução do comando
write(A); 
exibe na tela o número 56 a partir da primeira coluna:
56
enquanto que a execução do comando 
write(A:20) 
exibe na tela o número 56 a partir da 19ª coluna:
 56
De modo semelhante, o comando
write('Estou aprendendo a programar em Pascal'); 
exibe na tela a mensagem dada a partir da primeira coluna:
Estou aprendendo a programar em Pascal
enquanto que o comando
write('Estou aprendendo a programar em Pascal':60);
exibe a mensagem a partir da coluna 23 (já que a mensagem possui 38 caracteres):
 Estou aprendendo a programar em Pascal
Na hipótese de valores do tipo real, pode-se acrescentar um segundo parâmetro :d para definir que o 
número de ponto flutuante seja exibido como número decimal com d casas decimais. Por exemplo, se o 
conteúdo de uma variável Area, do tipo real, é 58.2362 o comando
write(A); 
exibe na tela o valor 5.8236200000E+01; o comando 
write(A:8); 
exibe na tela o valor 5.82E+01; e o comando 
write(A:8:2);
exibe 58.24, arredondado para duas casas. 
A utilização dos dois parâmetros permite que se alinhe à direita a exibição de números reais (valores 
monetários, por exemplo). Se os conteúdos das variáveis do tipo real a, b e c são 1.235, 567.891 e 42.4589, a 
seqüência de instruções
writeln(a:20:2);
writeln;
writeln(b:20:2);
writeln;
writeln(c:20:2);
exibe na tela
 1.25
 567.89
42.46
2.9 Comando de atribuição
A seção 2.6 apresentou o comando que permite que os dados de entrada sejam armazenados em 
variáveis. Agora veremos como armazenar dados gerados durante a execução de um programa. Enfatizando 
o que foi dito na seção 1.7 relativo ao fato de que algoritmos podem manipular dados gerados por execuções 
de instruções anteriores, considere um programa para o cálculo da média de uma relação de números. 
Naturalmente a quantidade de números da relação (se não foi fornecida a priori) deve ser de alguma forma 
determinada e armazenada em alguma variável para que possa ser utilizada no cálculo final da média 
pretendida. 
O armazenamento de dados gerados pelo próprio programa, alterações no conteúdo de variáveis e 
determinações de resultados finais de um processamento é feito através do comando de atribuição que deve 
ser escrito com a seguinte sintaxe.
Identificador de variável := expressão;
A expressão do segundo membro pode se resumir a um valor constante pertencente ao tipo de dado da 
variável do primeiro membro, caso em que o valor é armazenado naquela variável. Se não for este o caso, a 
expressão é avaliada e, se for do mesmo tipo da variável do primeiro membro, o resultado é nela 
armazenado.
Por exemplo, se a e b são variáveis do tipo real, a seqüência de comandos
a := 2.8;
b := a*a/2;
armazenará em a o valor 2.8 e em b o valor 3.92.
Outro detalhe interessante é que a expressão do segundo membro pode envolver a própria variável do 
primeiro membro. Neste caso, o conteúdo anterior da variável será utilizado para a avaliação da expressão e 
será substituído pelo valor desta expressão. Por exemplo, se i é uma variável do tipo integer ou do tipo real o 
comando 
i := i + 1; 
faz com que o seu conteúdo seja incrementado de uma unidade. Veremos que comandos deste tipo são muito 
comuns em programação.
Além da possibilidade de se dar entrada através do comando readln, pode-se dar entrada em caracteres 
utilizando-se a função pré-definida ReadKey. Para isto, deve-se atribuir a uma variável do tipo char a função 
citada e esta atribuição será executada quando o usuário digitar alguma tecla. Quando isto é feito, o caractere 
correspondente à tecla digitada é armazenado na variável do primeiro membro do comando de atribuição.
Por exemplo, a execução do programa
uses Crt;
var c: char;
begin
 writeln('Digite um caractere');
 c := ReadKey;
 writeln(' Voce digitou ', c, '.');
end.
com a digitação da letra A deixa a tela de trabalho da seguinte forma
Digite um caractere
Voce digitou a letra A.
Vale a pena notar que a tecla digitada não aparece na tela de trabalho como quando se dá entrada num 
dado através do comando readln. Por exemplo, na execução do programa 
var c: char;
begin
writeln('Digite um caractere');
readln(c);
writeln(' Voce digitou ', c, '.');
end.
a digitação do caractere A deixa a tela da seguinte forma:
Digite um caractere
A
Voce digitou a letra A.
Como a função ReadKey pertence à unidade Crt, é indispensável a instrução uses Crt; na primeira versão 
deste exemplo. Se esta unidade não for relacionada no programa, o compilador não reconhecerá a função 
pretendida e haverá um erro de compilação. 
2.10 Exemplos Parte I
1. Voltando ao programa do cálculo da média de três números dados, observe que a média foi calculada e 
exibida, mas não foi armazenada. Se este programa fizesse parte de um programa maior (e isto normalmente 
acontece! Não se usa computação para uma questão tão simples!) e esta média fosse necessária em outra 
parte do programa, aquele trecho teria que ser reescrito. É uma boa prática, portanto, que resultados finais de 
processamento sejam armazenados em variáveis, sendo então os conteúdos destas variáveis exibidos através 
do comando writeln. Assim, o programa referido ficaria melhor escrito da seguinte forma.
{Programa que determina a média de três números dados}
program MediaDe3Versao3;
var a, b, c, Media : real;
begin
writeln('Digite três números reais');
readln(a, b, c);
Media := (a + b + c)/3;
writeln('A média dos números ', a,' , ', b ,' e ', c,' é ', Media);
end.
2. Agora apresentaremos um programa que, recebendo um número inteiro como entrada, fornece o 
algarismo da casa das unidades deste número, questão discutida na seção 1.6. Como vimos naquela seção, o 
algarismo procurado é o resto da divisão do número dado por 10. Temos então o seguinte programa (no 
capítulo 6 veremos um programa que necessita da solução desta questão):
{Programa que determina o algarismo da casa das unidades de um inteiro dado}
program AlgarismoDasUnidades;
var n, Unid : integer;
begin
writeln('Digite um inteiro');
readln(n);
Unid := n mod 10;
writeln('O algarismo das unidades de ', n, ' é ', Unid);
end.
3. Se quiséssemos um programa para inverter um número com dois algarismos (por exemplo, se a 
entrada fosse 74, a saída deveria ser 47), poderíamos utilizar o seguinte fato: se x e y são os algarismos de 
um número (casa das dezenas e das unidades, respectivamente), então este número é x . 10 + y. Assim, a 
inversão seria y . 10 + x (no exemplo, 74 = 7 . 10 + 4; 47 = 4 . 10 + 7). Desta forma, basta extrair os dois 
algarismos do número dado