Vamos começar mais um artigo da série ALGORITMOS e hoje falaremos sobre mais um comando de controle de programa, o FOR.
Relembrando…
Aqui está uma pequena lista dos comandos de controle disponíveis nas linguagens de programação:
Estruturas Condicionais:
- IF/ELSE (SE/ENTÃO)
- SWITCH/CASE (CHAVE/CASO)
Estruturas de Repetição:
- WHILE (ENQUANTO)
- REPEAT/UNTIL (REPITA ATÉ QUE) ou DO/WHILE (FAÇA ENQUANTO)
- FOR (PARA)
Até o momento já vimos IF/ELSE, SWITCH/CASE, WHILE. Hoje vamos estudar o FOR e por último o REPEAT/UNTIL, como é chamado na linguagem PASCAL, ou DO/WHILE, como é chamado na maioria das outras linguagens.
Reforçando: As estruturas condicionais são aquelas estruturas de comando que executam determinadas ações diante da avaliação de uma condição. As estruturas de Repetição são aquelas estruturas de comando que executam determinadas ações repetidas vezes, até que uma condição seja atingida e a repetição pare.
FOR (PARA)
O comando FOR pode ser utilizado sempre que você precisar repetir um bloco de comandos. Mas cuidado, um bloco de comando deve ser repetido um número de vezes, isto é, a repetição deve ter um fim, caso contrário, o seu programa ficará em LOOP infinito.
Resumindo, se não tiver um fim, aqueles comandos ficarão executando eternamente, o programa ficará travado nisso e ninguém quer isso certo?! Na verdade, não é agradável quando isso acontece e, na maioria das vezes, o LOOP infinito ocorre por um erro de lógica ou um erro de digitação.
Além disso, deve haver uma forma de CONTAR quantas vezes o FOR foi executado, isto é, precisamos de um contador ou um INCREMENTADOR. No pseudocódigo apresentado aqui, pelo VisuALg, esse incrementador fica IMPLÍCITO, mas a maioria das linguagens de programação, implementa o incrementador de forma EXPLICITA. Mostrarei com o FOR é implementado em outras linguagens para que vocês compreendam melhor.
A estrutura FOR, portanto, repete a execução do bloco em um número definitivo de vezes pois ela possui limites fixos, devemos utilizar essa estrutura quando sabe-se de antemão o número de vezes que o laço deverá ser executado. A estrutura básica é a seguinte:
para V de VI até VF faca
comandos
fimpara
V é uma variável de controle que precisa ser do tipo inteiro, VI é o valor inicial da variável V e VF é o valor final da variável V. Fazemos a leitura da seguinte forma: para uma variável V com um valor inicial VI até atingir o valor final VF FAÇA. O comando FOR vai repetir todas as linhas de comando que estiverem dentro do seu bloco até que VF seja alcançado. Quando VF for alcançado, o FOR para e sai do bloco de comandos, retornando o controle para o programa principal. Como mencionei anteriormente, o contador é implícito no VisuAlg. A Figura 1 ilustra o comando FOR:

Observe que existe uma SETA que retorna sempre para o FOR. Essa SETA indica o LOOP, isto é, enquanto o valor VF não for atingido, os comandos serão repetidos. O comando de controle só sairá do LOOP quando VF for atingido, e esse momento é representado por uma seta saindo do comando FOR e indo para o FIM. Vamos ver um exemplo simples no VisuALg: somar os números de 1 a 10.
algoritmo "exemplo_for"
var
i, soma : inteiro
inicio
i <- 0
soma <- 0
escreval(" Programa SOMAR os números de 1 a 10")
para i de 1 ate 10 faca
soma <- i + soma
escreval(" Valor de i: ", i)
escreval(" Valor de soma: ", soma)
fimpara
fimalgoritmo
Listagem 1: pseudocódigo exemplo
Vamos analisar o pseudocódigo acima linha a linha:
Linha 1: nome do algoritmo.
Linha 3 e 4: declaração de variáveis.
Linha 6: inicio do algoritmo.
Linha 7: inicializando a variável i com o valor zero.
Linha 8: inicializando a variável soma com zero.
Linha 9: escreve uma mensagem de texto na tela.
Linha 11 a 15: comando For.
Linha 11: Nesta linha é definido o comando FOR – para i de 1 até 10 faça – isto é, para i começando em 1 e até alcançar o valor 10, execute os comandos deste bloco.
Linhas 12, 13 e 14: são os comandos que serão repetidos até que VF seja igual a 10.
Linha 12: Realiza uma soma cumulativa, soma <- i + soma, em que o valor da variável SOMA será sempre somado com o valor da variável I, armazenando o resultado dessa soma em SOMA.
Linha 13: escreve uma mensagem de texto na tela, informando o valor ATUAL da variável i.
Linha 14: escreve uma mensagem de texto na tela, informando o valor ATUAL da variável soma.
Linha 15: fim do bloco de comando PARA.
Linha 17: fim do pseudocódigo.
Bom, já entendemos, em partes, o que faz cada linha do pseudocódigo. Vamos agora ver o teste de mesa pra entender melhor o comando FOR. Na Tabela 1 eu inclui uma coluna que está como IMPLICITA no código, que é o incremento (i = i +1). Nessa coluna nós sempre vamos somar um ao valor de i, fazendo com que ele seja incrementado (somado) de 1 a cada vez que entrar no For.
Tabela 1: Teste de Mesa do comando FOR
| iteração | para i de 1 até 10 | soma <- i + soma | escreva i | escreva soma |
incremento i = i + 1 |
| 1 | para i = 1 de 1 até 10 (V) |
soma <- 1 + 0 soma <- 1 | 1 | 1 |
i = 1 + 1 i = 2 |
| 2 | para i = 2 de 1 até 10 (V) |
soma <- 2 + 1 soma <- 3 | 2 | 3 |
i = 2 + 1 i = 3 |
| 3 | para i = 3 de 1 até 10 (V) |
soma <- 3 + 3 soma <- 6 | 3 | 6 |
i = 3 + 1 i = 4 |
| 4 | para i = 4 de 1 até 10 (V) |
soma <- 4 + 6 soma <- 10 | 4 | 10 |
i = 4 + 1 i = 5 |
| 5 | para i = 5 de 1 até 10 (V) |
soma <- 5 + 10 soma <- 15 | 5 | 15 |
i = 5 + 1 i = 6 |
| 6 | para i = 6 de 1 até 10 (V) |
soma <- 6 + 15 soma <- 21 | 6 | 21 |
i = 6 + 1 i = 7 |
| 7 | para i = 7 de 1 até 10 (V) |
soma <- 7 + 21 soma <- 28 | 7 | 28 |
i = 7 + 1 i = 8 |
| 8 | para i = 8 de 1 até 10 (V) |
soma <- 8 + 28 soma <- 36 | 8 | 36 |
i = 8 + 1 i = 9 |
| 9 | para i = 9 de 1 até 10 (V) |
soma <- 9 + 36 soma <- 45 | 9 | 45 |
i = 9 + 1 i = 10 |
| 10 |
para i = 10 de 1 até 10 (V) |
soma <- 10 + 45 soma <- 55 | 10 | 55 |
i = 10 + 1 i = 11 |
| 11 |
para i = 11 de 1 até 10 FALSO | – | – | – | – |
Como podemos observar na tabela, a última coluna é a coluna do incremento, que fica implícito no VisuALg. Essa coluna sempre soma 1 ao valor de i, fazendo com que o valor 10 seja atingido e, assim, o FOR para de ser executado. A última linha não é executada pois 11 está fora do intervalo definido, de 1 até 10, então o FOR para de ser executado e o controle volta ao programa principal. O valor final da soma será 55, que é a soma de todos os números no intervalo entre 1 e 10. Vamos ver agora como fica a solução do mesmo problema em outras linguagens:
PASCAL
program exemplo_for;
var
i, soma : integer;
begin
i:=0;
soma:=0;
writeln(' Programa SOMAR os números de 1 a 10');
for i:=1 to 10 do
begin
soma := soma + i;
writeln(' O valor de i é: ', i);
writeln(' O valor de soma é: ', soma);
writeln('');
end;
readln();
end.
C
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, soma;
i = 0;
soma = 0;
printf(" \n Programa SOMAR os números de 1 a 10");
for (i=1; i<=10; i++){
soma = soma + i;
printf(" \n O valor de i é: %d", i);
printf(" \n O valor da soma é: %d", soma);
printf("\n");
}
return 0;
}
C++
#include <iostream>
using namespace std;
int main()
{
int i, soma;
i = 0;
soma = 0;
cout << " Programa Somar os números de 1 a 10" << endl;
for (i=1; i<=10; i++){
soma = soma + i;
cout << " \n O valor de i é: " << i;
cout << " \n O valor da soma é: " << soma;
cout<<"\n";
}
return 0;
}
JAVA
package somar;
public class Somar {
public static void main(String[] args) {
int i, soma;
i = 0;
soma = 0;
System.out.println(" Programa SOMAR os números de 1 a 10");
for(i=1; i<=10; i++){
soma = i + soma;
System.out.println(" \n O valor de i é: " + i);
System.out.println(" \n O valor da soma é: " + soma);
}
}
}
Observando a parte do comando FOR pra cada linguagem, percebemos que somente a sintaxe do o PASCAL é bem parecida com a sintaxe do VisuALg, deixando implícito o incremento:
for i:=1 to 10 do
As outras linguagens são praticamente iguais:
for ( i = 1; i<=10; i++)
isto é, explicitam o valor inicial de i, o valor limite de i e o incremento de i. Conseguiram notar a diferença? Em PASCAL lemos basicamente da seguinte forma: Para i começando em um até 10 faça. É exatamente como o pseudocódigo, já nas outras linguagens: para ( i começando em um, até i menor ou igual a 10, incremente i). Tudo bem? Se ainda não conseguiram entender, por favor, entrem em contato comigo para conversarmos melhor, ok?!
Conclusão
A estrutura do comando For é bem diferente dos comandos IF/ELSE, WHILE, SWITCH/CASE, entretanto é mais próximo do While, pois o WHILE também é um comando de repetição. A diferença básica entre FOR e WHILE é que no FOR precisamos de três valores para que a condição seja satisfeita – o valor inicial de i, o valor final de i e o incremento de i – enquanto que no While temos uma única condição que deve ser avaliada. No While, para que os comandos do bloco sejam executados, precisamos que a condição seja verdadeira. Já no FOR, os comandos do bloco serão executados até que o valor limite seja atingido.
Exercícios
1. Um funcionário de uma empresa recebe, anualmente, aumento salarial. Sabe-se que: a) esse funcionário foi contratado em 2000, com salário inicial de R$1.000,00; b) Em 2001, ele recebeu aumento de 1,5%, sobre o seu salário inicial; c) A partir de 2002 (inclusive), os aumentos salariais sempre corresponderam ao dobro do percentual do ano anterior. Faça um programa que determine o salário desse funcionário dos anos de 2000 à 2017. Apresente todos os valores.
2. Faça um programa que leia um valor N inteiro e positivo. Calcule e mostre o valor de E, conforme a fórmula a seguir: E = 1 + 1/1! + ½! + 1/3! + … + 1/N!
3. Faça um programa para calcular a tabuada de qualquer número digitado pelo usuário.
4. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados: a) código da cidade; b) número de veículos de passeio; c) número de acidentes de trânsito com vítimas. Deseja-se saber: a) Qual é o maior e qual é o menor índice de acidentes de trânsito e a que cidades pertencem; b) Qual é a média de veículos nas cinco cidades juntas; c) Qual é a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.










algoritmo “Trânsito” var cidade, veiculos, acidentes: vetor[1..5] de inteiro maior_indice, cidade_maior, menor_indice, cidade_menor, soma_veic, media, soma_2000, cont_2000, i: inteiro inicio soma_veic <- 0 soma_acidentes <- 0 soma_2000 <- 0 cont_2000 <- 0 para i de 1 ate 5 faca escreva ("Informe o código da cidade ", i) leia (cidade[i]) escreva ("Informe o número de automóveis: ") leia (veiculos[i]) escreva ("Informe o número de acidentes: ") leia (acidentes[i]) soma_veic <- soma_veic + veiculos[i] se (i = 1) entao menor_indice <- acidentes[1] / veiculos[1] cidade_menor <- cidade[1] maior_indice <- acidentes[1] / veiculos[1] cidade_maior acidentes[i]/veiculos[i]) entao menor_indice <- acidentes[i] / veiculos[i] cidade_menor <-… Leia mais »
=) que bom que você está conseguindo fazer!!!!
Como eu disse ontem, iria hoje olhar com mais calma.
Estou copiando todos os códigos na cara dura (hehehe) para depois estudá-los com mais calma ainda e testar todos e fazer alterações para encaixar ainda mais o conhecimento.
Só depois vou fazer todos exercícios.
Me diga depois se algum der problema!
Ok! Tá bem tranquilo.
ótimo
Só passando mais rápido.
Amanhã vou olhar com mais calma
legal Souza!!!! boa sorte =)