Comando de Controle For

Vamos começar mais um artigo da série ALGORITMOS e hoje falaremos sobre mais um comando de controle de programa, o FOR. Confira!
PSEUDOCODIGO bubble sort switch case

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:

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:

comando FOR
Figura 1: 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.

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çãopara i de 1 até 10soma <- i + somaescreva iescreva soma

incremento  i = i + 1

1para i = 1 de 1 até 10 (V)

soma <- 1 + 0

soma <- 1

11

i = 1 + 1

i = 2

2para i = 2 de 1 até 10 (V)

soma <- 2 +  1

soma <- 3

 23

i = 2 + 1

i = 3

3para i = 3 de 1 até 10 (V)

soma <-  3 + 3

soma <- 6

 36

i = 3 + 1

i = 4

4para i = 4 de 1 até 10 (V)

soma <- 4 + 6

soma <- 10

410

i = 4 + 1

i = 5

5para i = 5 de 1 até 10 (V)

soma <- 5 + 10

soma <- 15

515

i = 5 + 1

i = 6

6para i = 6 de 1 até 10 (V)

soma <- 6 + 15

soma <- 21

 621

i = 6 + 1

i = 7

7para i = 7 de 1 até 10 (V)

soma <- 7 + 21

soma <- 28

728

i = 7 + 1

i = 8

8para i = 8 de 1 até 10 (V)

soma <- 8 + 28

soma <- 36

836

i = 8 + 1

i = 9

9para i = 9 de 1 até 10 (V) 

soma <- 9 + 36

soma <- 45

 945

i = 9 + 1

i = 10

10

para i = 10 de 1 até 10 (V)

 

soma <- 10 + 45

soma <- 55

 1055

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

C

C++

JAVA

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.

Outros artigos da série

<< Comando de Controle Switch CaseComando de Controle Do-While >>

Atuo como Professora de Informática e Computação desde 2001. Desde 2009 venho atuando como Docente no Ensino Superior em diversos cursos de Graduação e Pós Graduação Lato Sensu, tanto presenciais, quanto semipresenciais e à distância. Ministrei várias disciplinas onde ensino os estudantes a desenvolverem plataformas e sistemas computacionais. Orientei vários trabalhos acadêmicos, desenvolvi inúmeros materiais didáticos, trabalhei com pesquisa, ensino, extensão e inovação. Também ministrei palestras em vários eventos. Comecei meu Doutorado na área de Machine Learning - mais especificamente na area de Multi-label Classification - na UFSCar em 02/2019 e devo terminar em 01/2023. Também estudo canto, jogo vôlei, sou geek, nerd, otaku e gamer (twitch.tv/cissagatto)

Notificações
Notificar
guest
8 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
carlos
carlos
05/05/2018 21:29

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 »

Souza
Souza
03/11/2016 12:48

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.

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Souza
09/11/2016 09:26

Me diga depois se algum der problema!

Souza
Souza
Reply to  Elaine Cecília Gatto
09/11/2016 14:19

Ok! Tá bem tranquilo.

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Souza
18/11/2016 11:34

ótimo

Souza
Souza
02/11/2016 22:33

Só passando mais rápido.
Amanhã vou olhar com mais calma

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Souza
09/11/2016 09:25

legal Souza!!!! boa sorte =)

WEBINAR

Imagens de Ultrassom: Princípios e Aplicações

DATA: 26/10 ÀS 19:30 H