Faça isto todas essas vezes!
No post anterior, vimos como realizar a repetição de um bloco de comandos por um número indeterminado de vezes. Finalizando esta repetição quando um determinado valor fosse digitado (o famoso FLAG).
E quando sabemos exatamente quantas vezes queremos que um bloco seja repetido?
Imagine um programa que calcule a média aritmética de 15 valores inteiros digitados pelo usuário.
Já sabemos a quantidade de valores que serão digitados, neste caso, 15. Esta é a quantidade de vezes que devemos pedir ao usuário que digite um valor inteiro, ler este valor e somá-lo a um total para que, depois, possamos fazer a média dos valores digitados.
Vamos a um código para exemplificar isto.
//PROGRAMA QUE CALCULA A MÉDIA ARITMÉTICA ENTRE 15 VALORES INTEIROS
#include <stdio.h>
#include <stdlib.h>
const int MAXDIGIT=15;
int main(){
int valor, total=0, contador;
float media;
contador=0;
while (contador < MAXDIGIT){
printf("Digite um valor inteiro positivo: ");
scanf("%d",&valor);
total += valor;
contador++;
}
media = total / MAXDIGIT;
printf("A media entre os %d valores digitados eh %.2f\n",MAXDIGIT, media);
system ("pause");
}
Observe a utilização de uma constante inteira MAXDIGIT. Poderíamos usar diretamente o número 15, que é a quantidade de repetições que desejamos; no entanto, usar uma constante torna este código mais fácil de ser alterado. Se desejarmos mudar o valor de repetições de 15 para 10, por exemplo, só precisaríamos alterar a linha 5. Se tivéssemos usado o valor diretamente, teríamos que alterar as linhas 11, 17 e 18. Num código pequeno como este, isto não é tão vantajoso, mas imagine num código onde este valor aparecesse muitas outras vezes.
Dito isto, vamos ao que, no post de hoje, realmente nos interessa neste código: as linhas 10, 11 e 15.
Na linha 10 nós 'zeramos' uma variável inteira chamada contador. Esta variável poderia ter qualquer outro nome (o mais usado é i), mas escolhi este para deixar bem claro qual a função dela.
Para que o computador repita um bloco de comandos por um determinado número de vezes, ele deve saber quantas vezes este bloco já foi repetido para, assim, saber quando deve parar de repetí-lo. Por isto, o uso desta variável, que é chamada de variável contadora ou contador.
Na linha 15 esta variável é incrementada, depois que os comandos do bloco foram executados; ou seja, seria como se ele 'dissesse': fiz outra vez.
Na linha 11 é feita a verificação de quantas vezes a repetição já foi realizada. Se ainda não chegou ao número de vezes desejado, o bloco será repetido. Uma vez atingido o número de repetições desejado, o bloco é 'pulado' e o comando seguinte a ele é executado, neste caso, a linha 17 que calcula a média dos valores digitados.
A sintaxe do comando de repetição while com um número de repetições determinado é esta:
contador = 0;
while (contador < Número de repetições desejado){
.
.
.
contador++;
}
Existe uma outra forma de executar esta repetição no C. Utilizando um comando de repetição específico para uso com número de repetições determinado: o for.
A sintaxe do comando de repetições for é esta:
for(contador = 0; contador < Número de repetições desejado; contador++){
.
.
.
}
Percebeu alguma coisa em comum com a sintaxe do comando de repetição while com um número de repetições determinado? Outra coisa que deve ser observada, são os ; dentro dos (). Eles indicam o fim de cada comando de controle da repetição.
Observe o mesmo código do exemplo anterior usando o comando de repetição for.
//PROGRAMA QUE CALCULA A MÉDIA ARITMÉTICA ENTRE 15 VALORES INTEIROS
#include <stdio.h>
#include <stdlib.h>
const int MAXDIGIT=15;
int main(){
int valor, total=0, contador;
float media;
for(contador = 0; contador < MAXDIGIT; contador++){
printf("Digite um valor inteiro positivo: ");
scanf("%d",&valor);
total += valor;
}
media = total / MAXDIGIT;
printf("A media entre os %d valores digitados eh %.2f\n",MAXDIGIT, media);
system ("pause");
}
Qual dos dois usar? Você decide! Uma grande maioria de programadores profissionais prefere esta 2ª versão, que utiliza o for.
Por hoje é só pessoal. Até a próxima.
Hm, entendi.
ResponderExcluirVlw! ;)
Uma duvida quando eu colocar no for contador = 0;
ResponderExcluirsempre que ele repetir ele não vai atribuir o valor 0 novamente nã0 ? Obrigado
cara muito bom suas explicaçoes, poderia me dar uma ajuda no que diz respeito a infraçoes de transito.
ResponderExcluirEstou a criar um programa com repetiçao do...while, no qual estou usando if com switch no caso do art ter mais de um inciso e art sem inciso apenas if.
estou com problema pois o contador esta contando apenas o ultimo art digitado.
outro caso é que gostaria de incluir neste programa a soma das multas informadas
" Parabéns. Simples, direto e objetivo. Show !! Marcus - SL RS " Skype: marcus.analista1
ResponderExcluirBoa noite,
ResponderExcluirnão estou conseguindo elaborar meu algoritimo e passa-lo para linguagem c no Dev C++, por favor, me ajudem!
Estou desde às 8h da manhã e nada.
O enunciado é o seguinte:
Elaborar um algoritimo que ajude na seguinte tarefa:
Qual sistema operacional usa? IOS ou ANDROID?
Todo dia a pesquisa deverá recomeçar, mas os valores do dia anterior deverão ser salvos.
Você deverá escrever um algoritimo que ajude na coleta de dados e na análise deles:
Quantas pessoas foram entrevistadas?, qual a quantidade de usuários de um sistema e de outro?, qual a idade média dos seus entrevistados?