Aula 7: Matemática |
Nas
aulas anteriores (veja aula 5 e aula
6) we aprendemos como mostrar os resultados dos nossos cálculos
no ecrã. Com write e writeln os nossos programas
podem haver output. Cada programa deve haver output, mas
em muitos casos um programa também precisa de input. O utilizador
dá o seu nome, ou dá números para processar. Ou mais
simples, o utilizador quer haver controlo sobre o programa. Por exemplo,
o utilizador pode parar a execução do programa com o botão
'escape'.
Read(a, b, i); Nota que as variáveis não são obrigatoriamente do mesmo tipo. No exemplo acima podem ser do tipo real, boolean e integer respectivamente (ou outros tipos). Como exemplo PROGRAM ReadExample; VAR n1, n2: integer; begin
Quando, corremos o programa o ecrã mostrará a mensagem
A diferença entre Read e ReadLn é que ReadLn põe do lado toda a outra informação até o botão 'return'. Se o utilizador deu mais informação na mesma linha, o programa vai por isto do lado e não vai utilizar esta informação. Read não faz isso. No exemplo acima, se substituimos as instruções Read com ReadLn, o progrma vai atribuir 128 a n1, depois não vai utilizar o valor 31 e consequentemente vai parar e esperar para o utilizador dar um valor para n2. |
|
|
|
|
|
|
|
|
|
|
Estes quatro operators (operadores), quando usado para cálculos,
precisam dois operands. Em PASCAL fica um operador em ambas os lados.
Exemplos:
|
|
|
|
|
|
Estas instruções resultam em valores que podemos usar nas atribuições (aula 6). Exemplo:
c := 3 * a;
Outra veze nota a estrutura de atribuição: no lado esquerdo
do símbolo := temos uma (só, unica, 1) variável e
no outro lado pomos uma expressão que vai resultar num valor para
a variável. Este valor deve ser do mesmo tipo do que a variável.
Por exemplo, não faz sentido atribuir um valor inteiro a uma variável
do tipo boolean: i := TRUE;
Os operadores da secção anterior são usados
para cálculos do tipo floating point (vírgula flutuante).
Para cálculos do tipo inteiro (byte, word, integer, longint, etc),
o operação divisidir não existe. Em vez, existem dois
novos operadores. Imagine queremos calcular 7/3. Na escola primária
aprendemos que isto é igual a 2 com um resto de 1
a dividir por 3:
|
|
||
|
|
|
|
|
|
Em PASCAL existem dois operadores Div e Mod que reproducem
estes resultados. Exemplo:
|
|
|
|
|
|
Este operadores substituem o operdor / para números inteiros.
Os outros operadores ficam iguais (*, +, -).
VAR x, y, sum, diff, divis: real;
begin
WriteLn('Da o valor da variavel x:');
ReadLn(x);
Writeln('Da o valor de variavel y:');
ReadLn(y);
sum := x + y;
Writeln('A soma de ', x:0:4, ' e ',
y:0:4, ' e ', sum:0:4);
diff := x - y;
Writeln('A diferenca entre ', x:0:4,
' e ', y:0:4, ' e ', diff:0:4);
divis := x / y;
Writeln(x:0:4, ' dividir por ', y:0:4,
' da ', divis:0:4);
end.
will produce, when running:
Da o valor da variavel x:
3.4
Da o valor da variavel y:
1.8
A soma de 3.4000 e 1.8000 e 5.2000
A diferenca entre 3.4000 e 1.8000 e 1.6000
3.4000 dividir por 1.8000 da 1.8889
Nota o formato (:0:4), como explicado em aula 6.
PROGRAM IntegerCalculations;
VAR x, y, modd, divv: integer;
begin
WriteLn('Da o valor da variavel x:');
ReadLn(x);
Writeln('Da o valor de variavel y:');
ReadLn(y);
sum := x + y;
Writeln('A soma de ', x, ' e ', y,
' e ', sum);
diff := x - y;
Writeln('A differenca entre ', x,
' e ', y, ' e ', diff);
divv := x Div y;
modd := x Mod y;
Writeln(x, ' dividir por ', y, ' da
', divis, ' mais ', modd, '/', y);
end.
will produce, when running:
Da o valor da variavel x:
13
Da o valor da variavel y:
5
A soma de 13 e 5 e 18
A differenca entre 13 e 5 e 8
13 dividir por 5 da 2 mais 3/5