A maior rede de estudos do Brasil

Grátis
146 pág.
livro programando com pascal - jaime evaristo

Pré-visualização | Página 12 de 50

pois ela é "carregada" na memória juntamente com o 
sistema. A unidade Dos contém procedimento e funções que permitem ao compilador Pascal interagir com o 
sistema operacional DOS; a unidade Graph contém procedimentos que permitem incluir gráficos nos 
programas e a unidade Printer permite interações do sistema com impressoras. Há uma outra unidade, 
denominada Overlay, que contém procedimentos e funções com objetivos que este livro não pretende 
alcançar.
Afora os tipos de dados do sistema, como explicado na seção 2.1, é possível definir novos tipos através 
da seguinte sintaxe:
type Identificador = caracterização do tipo de dado;
Por exemplo, um programa que manipula dias da semana pode ter uma definição de um tipo de dado 
como:
type Dias = (seg, ter, qua, qui, sex, sab, dom);
As formas para a caracterização de um tipo de dado que se está definindo serão estudadas 
posteriormente.
Além de definições de tipos definidos pelo usuário, esta área também é utilizada para associar 
identificadores a tipos pré-definidos. Isto é importante quando o tipo pré-definido é estruturado e vai ser 
utilizado como parâmetros de procedimentos ou e funções. 
Os procedimentos e as funções são conjuntos de definições, declarações e comandos (a partir deste 
ponto, utilizaremos comando como sinônimo de instrução), com estrutura idêntica à estrutura de um 
programa, sendo também chamados de subprogramas ou subrotinas. Estes elementos serão estudados no 
capítulo 5 e lá veremos que a utilização de procedimentos e funções facilita a tarefa de programação e 
permite que programas sejam de mais fácil compreensão através de leitura (a facilidade de compreensão de 
um programa através de sua leitura é normalmente referida como legibilidade do programa).
2.7 Entrada dos dados de entrada
Vimos anteriormente que a maioria dos programas manipula dados que são fornecidos pelo usuário 
durante a execução do programa. Estes dados, repetindo, constituem a entrada do programa e devem ser 
armazenados em variáveis. Por exemplo, um programa para determinação das raízes de uma equação do 
segundo grau deve receber como entrada os valores dos três coeficientes da equação, valores identificam a 
equação. 
A entrada de dados é feita em Pascal através do comando de entrada que deve ser escrito com a sintaxe
readln(Lista de identificadores);
em que os identificadores são separados por vírgulas.
Quando da execução de um comando de entrada o processamento é interrompido, a tela de edição é 
substituída pela tela do usuário e o sistema fica aguardando que o usuário digite um número de valores 
(possivelmente seguidos da digitação da tecla <enter> ou da barra de espaços) igual ao número de variáveis 
da lista de variáveis (à medida que são digitados, os valores aparecem na tela do usuário). A conclusão da 
entrada dos dados é feita com a digitação da tecla <enter> e quando isto é feito o sistema armazena os dados 
digitados na variável respectiva, no sentido da ordem da colocação da variável na lista. 
Por exemplo, o programa
program LeAno;
var Ano : integer;
begin
 readln(Ano);
end.
é um programa em Pascal que armazena na variável Ano um valor inteiro digitado no teclado (ou seja, para 
nada serve, pois o inteiro armazenado naquela posição de memória "evanesce" quando a execução do 
programa é encerrada).
É bom observar que, em alguns casos, a digitação de um valor de um tipo diferente do tipo da variável 
provoca erro de execução. Por exemplo, se na execução do "programa" anterior fosse digitado 3.25 ou x, 
ocorreria um erro de execução (a execução seria interrompida) e o sistema emitiria a mensagem:
Error 106: Invalid numeric format
Se a variável Ano tivesse sido declarada como char e na execução fosse dado como entrada o valor 234, 
não haveria erro de execução e o que seria armazenado seria o caractere 2. 
2.8 Saída de dados
A exibição dos resultados do processamento e de mensagens é feita através dos comandos de saída de 
sintaxes
write(Lista de identificadores/Expressão/Mensagem);
ou
writeln(Lista de identificadores/Expressão/Mensagem);
em que as barras utilizadas têm o significado do conectivo e/ou da linguagem comum.
Quando um argumento de um comando de saída é um identificador de variável, a execução do comando 
redunda na exibição do conteúdo desta variável; quando é uma expressão, esta é avaliada e o seu resultado é 
exibido; quando é uma "mensagem" escrita entre apóstrofos, esta mensagem é exibida integralmente.
Por exemplo, o programa
program DeclaracaoImportante;
begin
 writeln('Estou aprendendo a programar em Pascal');
end.
exibe na tela a mensagem:
Estou aprendendo a programar em Pascal.
enquanto que o programa
program MediaDe3Versao1;
var a, b, c : real;
begin
 readln(a, b, c);
 write((a + b + c)/2);
end. 
executado para a entrada 8, 6, 13 exibe na tela o valor 9.0000000000E+00, que é a média dos três números 
dados, escrita na notação científica.
Aproveitando o ensejo para dizer que os sistemas que implementam a linguagem Pascal disponibilizam 
uma constante pré-definida, identificada por Pi, cujo valor é o número irracional pi, o programa abaixo 
fornece a área de um círculo de raio dado.
program AreaCirculo;
var Raio : real;
begin
readln(Raio);
write(Pi*Raio*Raio);
end. 
A possibilidade de que mensagens possam ser exibidas permite que o próprio programa facilite a sua 
execução e que torne compreensíveis os resultados fornecidos. Da forma em que está escrito, a execução do 
programa acima que fornece a média de três números dados é dificultada pelo fato de que a execução do 
comando readln faz com que o sistema aguarde a digitação dos números pretendidos (o cursor fica 
simplesmente piscando na tela do usuário) e o usuário pode não saber o que está se passando. Além disto, a 
execução do comando writeln exibe apenas o resultado da expressão, sem indicação a que aquele valor se 
refere. Assim, o programa referido ficaria muito melhor da seguinte forma.
program MediaDe3Versao2;
var a, b, c : real;
begin
write('Digite três números reais: '); 
readln(a, b, c);
writeln('A média dos números ', a,' , ', b , ' e ', c, ' é ', (a + b + c) / 3) );
end. 
O primeiro comando write emite a mensagem "Digite três números reais:" indicando o que o usuário 
deve fazer para o programa continuar a ser executado, enquanto o segundo, além de fornecer a média 
esperada, indica o que aquele valor significa. 
A diferença entre os comandos write e writeln é que o segundo ao final da exibição dos seus argumentos 
"exibe" o caractere de código ASCII 13, o que provoca uma mudança de linha. Assim, após a execução de 
um comando writeln o próximo caractere a aparecer na tela, via um comando de entrada ou via um comando 
de saída, será exibido na linha seguinte àquela que contém a exibição dos argumentos do referido comando 
writeln. Dizemos que o cursor (sinal intermitente, também chamado ponto de inserção, que indica a posição 
onde o próximo caractere a ser exibido, sê-lo-á,) muda de linha. O comando writeln inclusive pode não 
possuir argumentos. Neste caso, sua execução provoca apenas mudança de linha do cursor.
Por exemplo, o programa acima executado para a entrada 8.43, 6.1, 13.145, sendo a entrada de cada um 
deles separada por espaços, geraria a seguinte tela:
Digite três números 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
enquanto que o programa
program MediaDe3Versao2;
var a, b, c : real;
begin
write('Digite tres números reais: '); 
readln(a, b, c);
writeln;
writeln;
writeln('A média dos números ', a,' , ', b , ' e ', c, ' é ', (a + b + c) / 3) );
end.
executado