MC102 |
VARIÁVEIS |
São lugares onde armazenamos e de onde lemos valores.
Devem ser declaradas antes de usadas. Veja onde declarar variáveis:
No programa | No procedimento |
---|---|
PROGRAM x; VAR variável : tipo; BEGIN ... END. |
PROCEDURE y; VAR variável ; tipo; BEGIN ... END; |
Uma variável declarada no programa é visível a partir de todo o programa (inclusive procedimentos) e é chamada de variável global.
Já uma variável declarada em um procedimento só é visível dentro deste procedimento, não podendo ser vista por elementos de fora dele. Tal variável é chamada de local.
Agora, o que acontece se temos uma variável local com um mesmo nome de uma variável global? Nada, só que dentro do procedimento onde esta local está declarada, a global não é vista.
Então, de forma geral, a declaração de uma variável é:
VAR var1 : tipo1; var2 : tipo2; var3, var4 : tipo3; |
O tipo da variável indica o tipo de dado que ela armazenará. O computador precisa desse dado para saber o quanto de memória vai reservar para guardar a variável. Veja alguns tipos numéricos:
INTEGER |
inteiros de -32768 a 32767 |
REAL | reais de 2.9E-39 a 1.7E38 (negativo inclusive) |
SHORTINT | inteiros de -128 a 127 |
WORD | inteiros de 0 a 65535 |
LONGINT | inteiros de -2147483648 a 2147483647 |
BYTE | inteiros de 0 a 255 |
CHAR | caracter |
Há outros tipos, mas esses são os tipos mais simples (outros serão vistos mais tarde).
ATRIBUIÇÕES |
Server para que possamos por valores nas variáveis. Sua sintaxe é:
variável := expressão; |
Onde "expressão" pode ser um número ou uma expressão matemática, por exemplo:
x := 3; |
O valor 3 é armazenado na variável x. |
y := 4; |
O valor 4 é armazenado na variável y. |
z := x + y; |
O valor que está em x é somado ao que está em y, sendo o resultado armazenado na variável z. |
Vale lembrar que quando guardamos um valor numa variável, o valor antigo que estiver lá será perdido.
Agora não confunda! x := 2 não quer dizer "x é igual a 2", mas sim "o valor 2 será guardado em x".
Assim:
Comando | Significado |
---|---|
x := y; |
uma cópia do valor que está em y será guardada em x. O valor que estava antes em x, se havia algum, será perdido. |
x := x; |
uma cópia do valor que está em x será guardada em x de volta, perdendo o valor antigo. |
Dessa forma podemos fazer coisas do tipo:
x := x + 1; |
O que isso faz? O computador pega o valor de x, soma 1 a esse e guarda o resultado novamente em x. Então, se x continha o valor 2, após a atribuição x := x + 1; ele conterá 3.
Viram? Isso mostra por que não podemos ver x:=2 como "x é igual a 2", pois senão x:=x+1 seria um erro matemático.
Agora que sabemos como abastecer valores em variáveis, como fazemos para escrever seus valores na tela?
Comando | O que faz |
---|---|
x := 2; |
Abasteço x com o valor 2. |
write(x); |
Escreve o valor de x na tela, no caso, 2. |
mas podemos enfeitar ainda mais, veja abaixo:
Comando | Saída |
---|---|
write('x = ',x);; |
x = 2 |
write('x = ',x,' (total)'); |
x = 2 (total) |
reparou nos espaços entre o "=" e o "'" e entre o "'" e "(total)"? São necessários, senão a saída seria x =2(total).
Agora vamos ver uma aplicação bem simples:
PROGRAM media; USES crt; {para entrada e saída} VAR p1 : REAL; {nota da prova 1} p2 : REAL; {nota da prova 2} p3 : REAL; {nota da prova 3} m : REAL; {média das provas} BEGIN {dou as 3 notas} p1 := 3.0; p2 := 5.5; p3 := 6.5; {calculo a média} m := (2*p1 + 3*p2 + 5*p3) / 10; writeln('A média de ',p1:3:2,', ',p2:3:2,' e ',p3:3:2,' é ',m:3:2,'.'); END. |
saída: A média de 3.00, 5.50 e 6.50 é 5.50. |
Veja a seguinte seqüência de comandos e a saída:
Comandos | Saída |
---|---|
x := 2; y := 3; write(x,y); |
23 |
Viu como as duas variáveis foram escritas lado a lado? Tome cuidado com isso!
Por fim, uma outra boa dica é sempre inicializar as variáveis antes de usá-las, atribuindo a elas um valor inicial.