Segue uma versão melhorada do programa:
$
include "seed7_05.s7i";
include "float.s7i";
const
proc: main is func
local
const integer: lower is 0;
const integer: upper is 300;
const integer: increment is 20;
var integer: fahr is 0;
var float: celsius is 0.0;
begin
for fahr range lower to upper step increment do
celsius := flt(5 * (fahr - 32)) / 9.0;
writeln(fahr lpad 3 <& "
" <& celsius digits 2 lpad 6);
end for;
end func;
Para usar o tipo float é necessário incluir a biblioteca float.s7i.
A variável celsius do tipo float de ser inicializada com 0.0, ao invés
de 0.
Para especificar contagem "de..até" e valor de passo.
A sintaxe do laço for é:
for
[variável] range [valor inicial] to [valor final] step [passo] do
end
for
Se o passo for 1.
A sintaxe do laço for é:
for
[variável] range [valor inicial] to [valor final] do
end
for
E se o passo for -1
Pode-se escrever:
for
[variável] range [valor inicial] downto [valor final] do
end
for
Uma vez que Seed7 é fortemente tipada, valores do tipo integer e float não podem ser misturados em expressões.
Consequentemente a expressão inteira
5 *
(fahr - 32)
é convertida para float através da função flt().
Pela mesma razão, é usado "/" para divisão e o 9 na notação
9.0.
O operador <& é usado para concatenar elementos antes da escrita na tela.
Se o operando a direita do operador <& não for do tipo string,
ele é convertido para string usando a função str().
O operador lpad converte o valor da variável fahr do tipo integer para uma string e preenche com espaços na esquerda até que a string
alcance o comprimento de 3.
O operador digits converte o valor de 'celsius' para uma string com dois dígitos decimais.
A string resultante é
preenchida até alcançar o comprimento de 6.
Nenhum comentário:
Postar um comentário