Aula 6: Atribuição e constantes


 Write and Writeln formatado

Utilizar write e writeln sem especificar o formato irá mostrar os valores na forma standart, que é a notação científica para reais e 'com tanto sítios quanto os necessários ' para inteiros.

  PROGRAM WritelnUnformatted;

  Var r: real;
      i: integer;

  begin
    writeln('Real r = ', r);
    writeln('Integer i = ', i, '!!');
  end.

saída:

  Real r = 3.00000E-2
  Integer i = 1!!

Para mudar a forma como os valores são apresentados, poderemos especificar a largura do texto, e , para as variáveis do tipo vírgula flutuante (real, double, extended), o número de casas depois do ponto flutuante, tal como mostra o programa abaixo:

  PROGRAM WritelnFormatted;

  Var r: real;
      i: integer;

  begin
    writeln('Real r = ', r:8:6);
    writeln('Integer i = ', i:5, '!!');
  end.

saida:

  Real r = 0.030000
  Integer i =     1!!

O real r é mostrado com um total de 8 espaços reservados, e 6 dígitos depois do ponto flutuante. O inteiro i é escrito com 5 espaços de texto. Como neste caso apenas 1 dígito é sufuciente, o resto, 4 espaços, é preenchido por espaços vazios.


Atribuição

Na aula passada (aula 5), tínhamos visto como é que podemos atribuir um valor inicial a uma variável. Agora iremos ver como o valor de uma variável pode ser alterada no meio do programa.

Atribuir um novo valor a uma variável estamos a fazer uma atribuição. Em PASCAL isto é feito com o operador
 
 






No lado esquerdo deste operador colocamos a variável, no lado direito coloca-se o novo valor ou expressão que produzirá o novo valor. Exemplos:

  a := 3;
  b := 3*a;
  c := Cos(t);

O símbolo := é pronunciado como "será" ou "virá a ser". Isto para distingui-lo do usual símbolo matemático =. Nesta altura, é interessante fazer uma comparação entre o símbolo matemático = e o símbolo de atribuição nas linguagens de programação (:= no PASCAL). Como exemplo repare na seguinte equação matemática

  a = a + 1

Isto, como nós sabemos, não tem uma solução para a. (Na comparação, outro exemplo: a = a2- 2, tem uma solução: a = 2)

Em linguagens de programação, de qualquer modo , deveremos ler a equação de uma forma diferente:

a := a + 1;

que quer dizer: (o novo valor de a)     (será)    (o antigo valor de a)      (mais 1)
Ou, por outras palavras: primeiro o valor de a é carregado a partir da memória, a seguir 1 é adicionado a ele, e finalmente o resultado é colocado de volta na memória.Isto é fundamentalmente diferente da equação matemática. Exactamente por esta razão, em PASCAL  o símbolo := foi inventado para a atribuição. Para prevenir confusão. Na maioria de outras linguagens de programação o símbolo = é usado , o que é confuso, especialmente para o programador iniciante.É por isto que o estudante é aconselhado a pronunciar o símbolo de atribuição como "será" ou "virá a ser" em vez de "é" ou "igual".


Constantes

As constantes diferem das variáveis por não poderem sofrer uma atribuição durante o decorrer de um programa. Uma vez atríbuido um valor, o mesmo não pode ser alterado. A vantagem disto é que podemos definir um valor num sítio do programa e a partir do momento que foi definido pode ser utilizado assim que seja necessário em qualquer parte do programa. Considere o exemplo de p.É muito mais fácil  definir este valor apenas uma vez do que estar a escrever 3.1415926535 cada vez que precisamos dele. O programa tornarse-á mais legível desta forma.
A definição das constante fazemos no memso sítio onde são definidas as variáveis, mas com a palavra CONST, logo por exemplo:

  PROGRAM ConstExample;

  VAR angle: real;
      tan: real;
  CONST PI = 3.1415926;

  begin
    angle := 45.0;
    angle := PI*angle/180.0;
    tan := Sin(angle)/Cos(angle);
  end.

Note a forma como a constante é escrita, em letras MAÍUSCULAS. Lembre-se que PASCAL é caso não sensitivo e nós poderemos misturar maíusculas e minúsculas quando bem queremos. Ainda assim, o uso de maíusculas para constantes é uma convenção útil a que o estudante é aconselhado a seguir.Qualquer programador lendo o seu programa pode rapidamente visualizar que  está a trabalhar com uma constante e que não pode alterar o seu valor.

Detalhes técnicos interessantes: Para ser mais preciso, para constantes nenhum espaço em memória é reservado tal como nas variáveis. Em vez disso, o compilador,  cada vez que encontra o nome da nossa constante no nosso texto, irá substitui-la pelo seu valor.Não temos que nos preocupar com os detalhes.Resumindo temos apenas que assumir que a constante é uma variável que não pode mudar o seu valor.

Consider o seguinte programa:

  PROGRAM InterestRateExample;

  VAR money: real;
  CONST TAXA = 4.3;

  begin
    money := 99.0;
    money := money*(1.0+TAXA/100.0);
  end.

No caso da interest rate mudar, nós só teremos que alterar o nosso programa num sítio (provavelmente algures no início). Isto evita erros e inconsistências no programa alterado.Se nos esquecer-mos de alterar isto num sítio o programa irá erros criar erros na saída, e agora imagine um programa com milhares de linhas de código PASCAL.


Exemplo

Em seguida é mostrado o exemplo de um programa que utiliza  intruções de atribuição, variáveis e constantes. O lado direito mostra o valor das variáveis depois de cada linha
 
valor de a
depois da execução da linha 
valor de b
depois da execução da linha
PROGRAM Assign;

VAR a: real;
    b: real;
CONST C = 4.3;

begin
  a := 1;
  b := C;
  a := a + b + C;
end.


 
 
 
 

undefined
1.0
1.0
9.6


 
 
 
 

undefined
undefined
4.3
4.3


Teste rápido:

Para testar o seu conhecimento sobre o que aprendeu nesta lição, click aqui para um teste on-line. Nota que esta não é a forma do teste final.
 

Peter Stallinga. Universidade do Algarve, 23 fevereiro 2002
translated by Eduardo Bentes