8. Comando de Repetição com Variável de Controle

A noção de percorrer uma série ordenada de coisas, realizando alguma tarefa com ou sobre os elementos dessa série, é chamada de iteração (ou repetição). Toda linguagem de programação oferece uma estrutura de looping com variável de controle definindo o número de execuções do laço lógico.

8.1 Sintaxe e funcionamento

Como a variável de controle pode ser referenciada dentro da instrução, e ela é repetida entre os dois limites, a cada iteração uma instrução (comando simples ou bloco) é executada.

No caso da variação ser crescente, o comando fica sendo:

Algoritmo:

PARA <VC> DE <Valor1> ATÉ <Valor2> PASSO <+1> FAÇA

<Comando>

Em Delphi:

for <VC>:=<Valor1> to <Valor2> do

<Comando>;

Fluxograma:

Figura 8.1 – Fluxograma – Comando For...to...do

.

.

.

 

Exercícios

 

26. Elaborar um Programa Delphi para calcular e exibir a Soma dos N primeiros termos da seqüência:

Solução:

procedure TForm1.Button1Click(Sender: TObject);
var
 n, i, j, c: Integer;
 x, f, s: Double;
begin
 n:=StrToInt(Edit1.Text);
 x:=StrToFloat(Edit2.Text);
 s:=0;                 
 c:=1;                       // 1ª parcela positiva
 for i:=1 to n do
  begin
   f:=1;                     // Essas 3 linhas calculam
   for j:=1 to 2*i do        // o fatorial de 2i
    f:=f*j;                  // e armazenam em f
   s:=s+IntPower(x,2*i)/f*c;
   c:=-c;                    // Troca de sinal
  end;
 Edit3.Text := FloatToStr(s);
end;

.

.

.

29. Elaborar um Programa Delphi para calcular e exibir a Soma de todos os valores de uma lista.

Solução:

{ Adicionar }
procedure TForm1.Button1Click(Sender: TObject); 
begin
 if Edit1.Text <> ''                   // Se a Edit1
  then ListBox1.Items.Add(Edit1.Text); // não estiver
                                       // vazia, insere
                                       // na ListBox1
 Edit1.Clear;                          // Limpa a Edit1
 Edit1.SetFocus;                       // Volta o Foco 
                                       // para a Edit1
end;

{ Remover }
procedure TForm1.Button2Click(Sender: TObject);
begin
 // Se tiver algum item selecionado, deleta o mesmo
 if ListBox1.ItemIndex <> -1 
  then ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

{ Limpar }
procedure TForm1.Button3Click(Sender: TObject);
begin
 Edit1.Clear;     // Apaga o conteúdo da Edit1
 Edit2.Clear;     // Apaga o conteúdo da Edit2
 ListBox1.Clear;  // Apaga o conteúdo do ListBox1
 Edit1.SetFocus;  // Volta o Foco para a Edit1
end;

{ Calcular }
procedure TForm1.Button4Click(Sender: TObject);
var
 i, n: Integer;
 s, x: Double;
begin
 s:=0;
 n:= ListBox1.Items.Count;           // Quant. de itens
 for i:=0 to n-1 do                  // 1º índice é 0
  begin
   x:=StrToFloat(ListBox1.Items[i]); // x é o item na
                                     // posição i
   s:=s+x;
  end;
 Edit2.Text:=FloatToStr(s);
end;

{ Sair }
procedure TForm1.Button5Click(Sender: TObject);
begin
 Close;
end;

Comentário:

Devemos lembrar que os itens de um ListBox começam a ser numerados pelo índice 0. Por exemplo, quando temos 10 itens dentro de um ListBox os índices variam de 0 a 9 e não de 1 a 10. Por isso o comando For varia de 0 até a quantidade de itens menos 1.

.

.

.

67. Dada uma lista de valores, elaborar um Programa Delphi para calcular e exibir a Média dos valores Positivos, a Porcentagem de valores Negativos e a Quantidade de valores Nulos.

Solução:

{ Calcular }
procedure TForm1.Button4Click(Sender: TObject);
var
 qpos, qneg, qnul, i, n: Integer;
 m, p, spos, x: Double;
begin
 spos:=0;                    // Soma dos Positivos
 qpos:=0;                    // Quantidade de Positivos
 qneg:=0;                    // Quantidade de Negativos
 qnul:=0;                    // Quantidade de Nulos
 n:=ListBox1.Items.Count;
 for i:=0 to n-1 do
  begin
   x:=StrToFloat(ListBox1.Items[i]);
   if x>0
    then begin
          spos:=spos+x;      // Soma dos Positivos
          qpos:=qpos+1;      // Quantidade de Positivos
         end;
   if x<0 then qneg:=qneg+1; // Quantidade de Negativos
   if x=0 then qnul:=qnul+1; // Quantidade de Nulos
  end;
 p:=qneg/n*100               // Porcentagem Negativos
 m:=spos/qpos;               // Média dos Positivos
 Edit2.Text:=FloatToStr(m);
 Edit3.Text:=FloatToStr(p);
 Edit4.Text:=FloatToStr(qnul);
end;

.

.

.

74. Elaborar um programa Delphi para calcular a integral numérica da função f(x)=sen(x)+1 em um intervalo [a,b] qualquer, utilizando o Método dos Trapézios. O usuário deve ter a liberdade de escolher o intervalo e o número de divisões.

X0 = a

Xn = b

h = (b-a)/n

Xi = X0 + i*h

Yi = Sen(Xi) + 1

Área = h (Y0/2 + Yn/2 + Y1 + Y2 + Y3 + ... + Y n-1)