Comando for em C

Ver Todos os Exercícios

Teoria

O comando for nos permite a fechar um laço de repetição, ou em inglês loop. Bora ver como ele funciona?! 😍

📢 Clique para ver mais:

Pra que serve o comando for na linguagem C

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. Se liga nesse 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.

Para resolver esse problema escrevemos o seguinte código:

Comando for: exemplo
Comando for: exemplo

Se fossemos traduzir pro português o comando for seria para, então o que o exemplo acima esta dizendo é: Para e , imprima em ordem decrescente.

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.

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 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 . Após isso, o decremento de 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.

Como usar o comando for

De uma forma geral o comando for tem a seguinte estrutura:

for (valor_inicial; condição_final; valor_incremento)
{
instruções;
}

Exemplo: Desenvolva um programa que realize a impressão de todas as letras no alfabeto na tela.


Para resolver esse exemplo precisamos relacionar uma variável contadora às letras do alfabeto, então após o desenvolvimento, teríamos o seguinte código:

Resolução do exemplo: Comando for
Resolução do exemplo: Comando for


A 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 , definir a condição dos loops e o incremento de . 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 equivale ao caractere “A” e o número ao caractere “Z” na tabela ASCII.


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

  • Inicialização de variáveis;
  • Condição;
  • Forma de atualização das variáveis.

Agora bora praticar com exercícios?!

Como usar o comando for

Exercícios Resolvidos

Exercício Resolvido #1

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #2

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #3

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #4

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

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #5

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).

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #6

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.

Passo 1

A figura a seguir ilustra a definição da 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:

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #7

Dado um número n inteiro e positivo, dizemos que n é perfeito se n for igual à soma de seus divisores positivos diferentes de n. Construa um programa em C que verifica se um dado número é perfeito. Exemplo: 6 é perfeito, pois 1 + 2 + 3 = 6 .

Passo 1

Vamos iniciar o desenvolvimento do programa definindo o seu escopo.

Passo 2

Agora vamos para a etapa de declaração e inicialização de variáveis.

Informações sobre as variáveis:

  • n é uma variável que será responsável por armazenar o número inserido como entrada do programa;
  • i é uma variável contadora;
  • somaDivisores é uma variável que armazenará a soma de todos os divisores do número n inserido;
  • marcador é uma variável booleana representativa que informará se o número n inserido é ou não perfeito.

Passo 3

Tendo em mãos as variáveis do programa, nós podemos requisitar a entrada do programa ao usuário.

Essa entrada nada mais é que o número n.

Passo 4

Após a instrução de leitura do número n que será inserido, nós podemos definir uma estrutura de repetição for para verificar a igualdade da soma dos divisores de n.

Vamos começar definindo os parâmetros da estrutura for. A variável contadora i deve ser inicializada com o valor 1, pois ela terá o papel de contar os divisores e divisões por 0 são indeterminadas. A condição de execução desse laço de repetição deve ser i menor que n. Além disso, a regra de incremento da variável contadora i deve ser de uma unidade por loop.

Basicamente, ao definirmos esses parâmetros estamos criando uma estrutura de repetição que começará em 1 e, com somas de 1 unidade por loop, irá repetir instruções até que esse valor seja igual a n – 1.

Em relação as instruções dentro do laço de repetição, temos um condicional que verificará se a divisão de n pelo número de i sendo processado é igual a 0 (verificação de divisor). Caso seja, a variável somaDivisores deve ser incrementada com o valor de i e uma nova verificação deve ser feita: se somaDivisores é igual a n. Caso verdadeiro marcador deve ser atribuída com 1 e break deve ser utilizado para encerrar os loops, pois o número é perfeito.

Passo 5

Por fim, basta verificarmos o valor armazenado na variável marcador para sabermos se o número é ou não perfeito.

Caso seja igual a 1, devemos imprimir que o número é perfeito. Caso contrário, se marcador ainda possuir o seu valor de inicialização (0), devemos imprimir que o número não é perfeito.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #8

Receber um inteiro positivo não nulo correspondente ao tamanho da lista de números fornecida pelo usuário. Em seguida, receber todos os números da lista e devolver o menor dele.

Passo 1

Como sempre, vamos começar definindo o escopo do nosso programa.

Passo 2

É claro que com o escopo definido, nós podemos também declarar e inicializar as variáveis que serão úteis.

Informações sobre as variáveis:

  • n é uma variável que será responsável por armazenar o número de elementos da lista;
  • i é uma variável contadora;
  • menor é uma variável que será responsável por armazenar o menor elemento da lista;
  • aux é uma variável que armazenará temporariamente os novos elementos lidos para realizar a comparação de menor.

Passo 3

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

Essa entrada nada mais é do que o número n.

Passo 4

Para realizarmos a verificação de menor número da lista, podemos utilizar uma estrutura de repetição for como base.

Vamos começar definindo os parâmetros da estrutura for. A variável contadora i deve ser inicializada com o valor 0. A condição de execução desse laço de repetição deve ser i menor que n. Além disso, a regra de incremento da variável contadora i deve ser de uma unidade por loop.

Basicamente, ao definirmos esses parâmetros estamos criando uma estrutura de repetição que começará em 0 e, com somas de 1 unidade por loop, irá repetir instruções até que esse valor seja igual a n – 1.

Em relação as instruções, devemos ter uma verificação de primeiro loop para que o valor lido ali seja armazenado na variável menor como uma suposição de menor número da lista. A partir disso, os outros loops consistirão em atribuir o novo valor inserido pelo usuário a variável aux, em seguida verificar se aux é menor que o valor armazenado pela variável menor e realizar a atribuição do valor de aux para menor em caso afirmativo.

Com isso, criamos uma suposição de menor valor que servirá apenas como base para as próximas inserções na lista. Porém, tal suposição será substituída ao se deparar com um valor mais baixo, garantindo assim que obtenhamos o menor valor da lista ao fim do programa.

Passo 5

Por fim, basta imprimirmos o conteúdo da variável menor.

Resposta

Ei, a resposta está no passo a passo :)