quarta-feira, 18 de dezembro de 2013

18.05.02.04 Laço For e expressões Float

 

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