Comando for

Teoria Completa

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Nesse tópico nós iremos conversar sobre o último laço de repetição da abordagem que seguimos, estou me referindo ao comando de repetição for. De maneira geral, esse é um dos comandos de repetição mais utilizados, pois ele traz uma série de vantagens em relação aos outros, um bom exemplo é as facilidades em sua implementação. Por sinal, você sabe quais são elas?

Para entendermos de vez os chamados comandos ou laços de repetição, não podemos perder tempo.

Então, vamos nessa!

Comando for

O comando for, assim como todos os outros comandos de repetição, tem a função de executar diversas vezes as instruções presentes dentro de sua estrutura enquanto determinada condição for verdadeira.

Vale lembrar que sempre que falamos em condição, estamos nos referindo a uma comparação seja ela relacional ou lógica que gera como resultado um retorno booleano.

Certo, mas não precisamos pensar tanto para afirmarmos que todos os laços de repetição que vimos até agora fazem isso! Qual é a grande diferença do comando for, você sabe?

Calma jovem Padawan! Vamos falar disso agora mesmo.

O grande pulo do gato do comando for é que em seus parâmetros já é possível inicializar uma variável contadora, definir a condição de parada e definir a forma com que a variável contadora será incrementada ou decrementada a cada loop.

Ficou meio complexo? Então, vamos para um exemplo!

Suponha que nós tenhamos que desenvolver um programa que imprima todos os números no intervalo de 0 a 10 de forma decrescente.

Você tem alguma ideia de como fazer isso? Bom... Dá uma olhadinha nesse programa:

Nesse programa, uma variável contadora i foi declarada seguida da invocação de um comando de repetição for.

A parte que devemos nos atentar é que nos parâmetros do comando de repetição a variável contadora i já foi inicializada com o valor 10, da mesma forma que uma condição para a execução das instruções presentes na estrutura foi definida ( i ≥ 0 ) juntamente com o decremente da variável contadora, todos separados por ponto e vírgula.

O que irá acontecer é que a instrução de impressão na tela localizada dentro da estrutura será executada logo após o retorno verdadeiro da condição i ≥ 0 . Após isso, o decremento de i em uma unidade inteira será realizado, pois ele foi definido nos parâmetros do comando.

Portanto, nós não precisamos adicionar explicitamente uma instrução de decremento na estrutura, pois a definição feita nos parâmetros do comando garante que a cada loop executado a variável contadora i diminua, essa por sua vez em algum momento atingirá um valor menor que 0 e fará com que a condição de execução seja falsa e saia do laço de repetição.

Beleza, que tal mais um exemplo?

Suponha que tenhamos que desenvolver um programa que realize a impressão de todas as letras no alfabeto na tela.

Após o desenvolvimento, teríamos o seguinte código:

Você notou que esse programa é bem parecido com o anterior?

Para falar a verdade, a única adaptação que tivemos que fazer foi tornar a variável contadora i do tipo char, e, nos parâmetros do comando for, inicializá-la com o valor 65, definir a condição dos loops ( i ≤ 90 ) e o incremento de i.

Porém, um conhecimento importante para a realização desse exemplo é lembrar que o tipo char pode ser manipulado através de números inteiros, além disso devemos lembrar que o número 65 equivale ao caractere “A” e o número 90 ao caractere “Z” na tabela ASCII.

Fala sério... Mamão com açúcar, né?

IMPORTANTE! Lembre-se que o parâmetro do comando de repetição for é formado pelos seguintes itens:

  1. Inicialização de variáveis;
  2. Condição;
  3. Forma de atualização das variáveis.

De maneira geral, o comando de repetição for é definido da seguinte forma:

Nós acabamos de ver toda a teoria por trás do comando for, mas como tudo na programação, existem milhares de maneiras e situações para realizar a implementação desse comando. Por esse motivo, eu te convido a fazer os exercícios de fixação.

Te encontro na página aqui do lado!

Expandir

Exercício Resolvido #1

Universidade Tecnológica Federal do Paraná – UTFPR, Computação I – Estrutura de repetição for, exercício 01.

Crie um programa que imprima uma tabela de conversão de graus Fahrenheit para Celsius, conforme um intervalo definido pelo usuário. O algoritmo em C deve solicitar ao usuário o limite superior do intervalo e um valor de incremento.

Para a realização dos cálculos, considere a seguinte fórmula:

C = F - 32 * 5 9

Considere sempre o valor do limite inferior como 10.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

A primeira coisa que devemos fazer para resolver esse exercício é definir o escopo do nosso programa em C.

Passo 2

Com o escopo definido, nós agora podemos realizar a declaração das variáveis e constantes que serão úteis para o desenvolvimento e execução do programa.

Informações sobre as variáveis e constantes:

  • K é uma constante que armazenará o valor da divisão entre 5 e 9;
  • c é uma variável que armazenará o resultado da conversão de um valor na unidade Fahrenheit para a unidade Celsius;
  • limInf é uma variável inicializada com o valor 10 (limite inferior que o enunciado pede para ser considerado em todas as execuções do programa);
  • limSup é uma variável que armazenará o limite superior do intervalo;
  • inc é uma variável que armazenará o valor de incremento das conversões a serem realizadas dentro do intervalo;
  • i variável contadora de um laço de repetição do programa.

Passo 3

Com as variáveis e constantes declaradas e inicializadas, podemos requisitar os dados de entrada do programa ao usuário.

Nesse caso, os dados de entrada inseridos pelo usuário são: limite superior e o valor de incremento das conversões a serem realizadas.

Passo 4

Por fim, nós podemos utilizar a estrutura de repetição for para realizar as conversões e impressões de valores até o limite superior do intervalo.

A lógica consiste em atribuir como valor inicial da variável contadora no laço for o valor armazenado pela variável limInf (limite inferior). Como condição de execução temos que i deve ser menor ou igual ao valor armazenado pela variável limSup (limite superior). Ainda nos referindo aos parâmetros da estrutura de repetição, temos que definir o incremento da variável contadora a partir da soma de seu valor atual com o valor armazenado pela variável inc (incremento).

Com todos os parâmetros da estrutura de repetição for definidos, basta termos como instruções da estrutura a conversão para Celsius dos valores assumidos por i (assume-se que estes estão em Fahrenheit) a cada loop atribuídos a c, seguida da impressão da impressão dessa operação.

Vale lembrar que essa impressão possui 2 casas decimais para os valores em Celsius seguida de uma quebra de linha.

Resposta

Exercício Resolvido #2

Universidade Veiga de Almeida – UVA, Estruturas de repetição, adaptação do exercício 06.

Faça um algoritmo em C capaz de realizar o cálculo de rentabilidade de uma poupança, esse algoritmo deve receber como entrada o valor inicial e o valor dos aportes mensais (ambos em reais) que o usuário está disposto a guardar. Como saída, o programa deve imprimir na tela o montante após 12 meses aplicado a uma taxa de 0,5 % ao mês de rentabilidade.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Para iniciarmos o desenvolvimento desse algoritmo em C, devemos primeiramente definir o escopo dele.

Passo 2

Com o escopo definido, podemos realizar a declaração e inicialização das variáveis e constantes que serão úteis para o desenvolvimento e execução do programa.

Informações sobre as variáveis e a constante serão descritas a seguir:

  • TAXA é uma constante que armazenará a taxa de rentabilidade de 0,5 % ao mês;
  • montante é uma variável que armazenará o valor acumulado;
  • valInicial é uma variável que armazenará o valor inicial aplicado;
  • aporteMensal é uma variável que armazenará o valor dos aportes mensais;
  • i é uma variável contadora.

Passo 3

Com as variáveis declaradas e inicializadas, bem como todas as constantes definidas. Podemos requisitar a entrada de dados ao usuário do programa.

Nesse caso, os valores de entrada são: o valor inicial da aplicação e o valor dos aportes mensais.

Passo 4

Nós podemos utilizar uma estrutura de repetição for para a realização da simulação da aplicação através da repetição de instruções de soma e multiplicação.

A lógica consiste em antes de definir a estrutura, atribuir o valor presente em valInicial (valor inicial da aplicação) a variável montante.

Logo em seguida, realizar a definição do laço de repetição for com os seguintes parâmetros:

  • i deve ser iniciado com o valor 0;
  • O laço deve ser executado enquanto i for menor que 12 (12 loops);
  • A cada loop o valor de i deve ser incrementado em 1 unidade.

Com a estrutura definida, as instruções que serão repetidas consistem em acrescentar o valor da rentabilidade de 0,5 % ao mês ao montante (linha 13), tal operação ocorre através da multiplicação do atual valor de montante por 1,005 %. Em seguida, o aporte mensal é acrescentado ao valor de montante (linha 14), isso ocorre através da soma do valor atual presente em montante com o valor presente na variável aporteMensal.

Vale lembrar que implicitamente a cada loop o valor presente na variável contadora i é incrementado em uma unidade.

Passo 5

Ao fim da execução do laço de repetição, basta realizarmos a impressão do valor final da aplicação em reais, tal valor está presente na variável montante.

A impressão foi realizada com 2 casas decimais seguida de uma quebra de linha.

Resposta

Exercício Resolvido #3

Universidade Federal da Bahia – UFBA, Estrutura de Dados – Estruturas de repetição, Ernando Passos, exercício 02.

Faça um algoritmo em C que leia um número n, some todos os números inteiros de 1 a n e mostre o resultado obtido.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Para criarmos esse algoritmo em C, a primeira coisa que nós devemos fazer é definir o escopo do programa.

Passo 2

Com o escopo do programa definido, nós podemos realizar a declaração e inicialização de variáveis.

A seguir estão algumas informações sobre as variáveis:

  • n é uma variável que armazenará o último número que deverá ser somado (limite);
  • acumulado é uma variável que armazenará a soma de todos os elementos até n;
  • i é uma variável contadora.

Passo 3

Com as variáveis devidamente declaradas e inicializadas, podemos requisitar a entrada de dados ao usuário do programa.

Nesse exemplo, o dado de entrada é um número limite de acumulação n.

Passo 4

Tendo conhecimento do último número a ser soma, podemos utilizar uma estrutura de repetição for.

A definição do laço de repetição for deve ser realizada com os seguintes parâmetros:

  • i deve ser iniciado com o valor 1;
  • O laço deve ser executado enquanto i for menor que n (n loops);
  • A cada loop o valor de i deve ser incrementado em 1 unidade.

Com a estrutura definida, uma atribuição a variável acumulado deve ser realizada a cada loop do laço de repetição. Essa atribuição consiste em somar o valor atual presente em acumulado com o atual valor da variável contadora i (linha 10).

Passo 5

Ao término do laço de repetição, basta realizarmos a impressão do valor presente na variável acumulado, uma vez que ela possuirá a soma de todos os elementos de 1 até n.

Essa impressão está acompanhada de uma quebra de linha.

Resposta

Exercício Resolvido #4

Universidade Federal de Itajubá – UNIFEI, Informática 2 – Estruturas de repetição, Fabiana Guedes, exercício 09.

Faça um programa para calcular x y . Os valores de x e y serão fornecidos pelo usuário do programa.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Como sempre, precisamos definir o escopo do nosso programa.

Passo 2

Com o escopo do programa definido, nós podemos declarar e inicializar as variáveis necessárias.

Informações sobre as variáveis:

  • potencia armazenará o resultado da potenciação;
  • x armazenará o valor da base da potência inserida pelo usuário;
  • y armazenará o valor do expoente da potência inserida pelo usuário;
  • i é uma variável contadora.

Passo 3

Com as variáveis devidamente declaradas e inicializadas, nós podemos requisitar os dados de entrada do programa ao usuário.

Nesse caso, os dados de entrada são: a base e o expoente da potenciação.

Passo 4

Para calcular a potência com as informações inseridas pelo usuário, nós podemos utilizar uma estrutura de repetição for para a execução das consecutivas multiplicações.

A definição dessa estrutura deve ser realizada com os seguintes parâmetros:

  • i deve ser iniciado com o valor 0;
  • O laço deve ser executado enquanto i for menor que y;
  • A cada loop o valor de i deve ser incrementado em 1 unidade.

Passo 5

Ao término do laço de repetição, basta imprimirmos o valor armazenado pela variável potencia.

Essa impressão por sua vez será acompanhada de uma quebra de linha.

Resposta

Exercício Resolvido #5

Universidade Federal de Itajubá – UNIFEI, Informática – Estruturas de repetição, Fabiana Guedes, adaptação do exercício 05.

Faça um programa que mostre o apenas o n-ésimo termo da série de Fibonacci. Esse programa deve receber como entrada um número inteiro n maior que 2 (considere que 0 e 1 são conhecidos, sendo eles os 2 primeiros números da série).

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Para construirmos esse algoritmo em C precisamos definir o seu escopo de atuação.

Passo 2

Com o escopo do programa definido, nós podemos declarar e inicializar as variáveis que serão úteis para o desenvolvimento e execução do programa.

A seguir estão algumas informações sobre elas:

  • n armazenará o valor da posição de um determinado elemento da série;
  • i será uma variável contadora;
  • x e y serão responsáveis por armazenar os termos F k - 2 e F k - 1 de todo o processo até o elemento desejado da série, considere F k o termo atualmente processado pelo programa;
  • fibonacci (equivalente a F k ) armazenará a soma entre F k - 2 e F k - 1 de todo o processo até armazenar o valor de F n através da soma de F n - 2 e F n - 1 .

Passo 3

Com todas as variáveis declaradas e devidamente inicializadas, nós podemos requisitar a entrada do programa ao usuário.

Nesse caso, a entrada do programa será a posição n da série de Fibonacci.

Passo 4

Para realizar o cálculo da sequência, nós podemos utilizar uma estrutura de repetição for com o processamento consecutivo das operações até a obtenção do valor desejado.

Sendo que a definição dessa estrutura deve ser feita com os seguintes parâmetros:

  • i é atribuída com o valor 2 (excluindo os 2 primeiros termos da série que já são conhecidos);
  • A condição de execução da estrutura é i menor que n;
  • Com o incremento da variável contadora i em uma unidade a cada loop.

A lógica por traz desse laço de repetição está em somar os dois termos anteriores e atribuí-los a variável fibonacci atualizando os mesmos até obtermos o valor de F n .

Para entendermos melhor o que acontece, considere k o atual termo em processamento pelo laço de repetição. Dessa forma, a cada loop temos a seguinte operação F k = F k - 1 + F k - 2 (linha 09), mas como queremos F n , enquanto F k ≠ F n os termos que representam os elementos anteriores ao atual devem ser atualizados. Ou seja, F k - 2 se torna F k - 1 (linha 10) e F k - 1 se torna F k (linha 11) até o momento que obtivermos o elemento F n da série.

Passo 5

Depois disso tudo, basta imprimirmos o valor presente na variável fibonacci, uma vez que ao término do laço de repetição ela armazenará o elemento F n da série.

Vale ressaltar que essa impressão será seguida de uma quebra de linha.

Resposta

Exercício Resolvido #6

Elaboração própria.

Diferentemente das outras estruturas de repetição, a estrutura for define a inicialização da variável contadora, condição de execução e regra de incremento em seus parâmetros. Sendo assim, defina essa estrutura na linguagem C explicitando o espaço reservado para cada um desses parâmetros.

MOSTRAR SOLUÇÃO COMPLETA

Resposta

A figura a seguir ilustra a definição de estrutura de repetição for na linguagem C explicitando, através de comentários, como os parâmetros são reservados e dispostos para cada ação: