segunda-feira, 1 de fevereiro de 2010

Estruturas de Repetição:

Vamos aprender a nossa primeira de três estruturas de repetição, o comando while!

-While, é uma palavra inglesa que significa "enquanto", somente com isso, já podemos deduzir a sua funcionalidade.
Enquanto uma condição não for satisfeita, esse laço, como chamamos, se repetirá, até a condição ser satisfeita.

Antes de tudo, vamos analisar o quanto essa estrutura é importante!
Como escreveriamos um programa que, imprimisse os numeros de 1 a 5? Fácil, não?

#include<stdio.h>
int main(void)
{
printf("1\n");
printf("2\n");
printf("3\n");
printf("4\n");
printf("5\n");

getchar();
getchar();
}

Agora, escreva para mim um programa que mostra os 100 primeiros numeros positivos, ou melhor, os 10000 primeiros? Cansativo, não?
Acredito que, com isso, já possamos começar a estudar esse comando.

while, segue a mesma estrutura do if, que aprendemos nas aulas passadas, ou seja:

while(condicao){
comando 1
comando 2
.
.
comando n
}

No nosso exemplo, queriamos escrever um numero de 1 a 100, certo?
Ou seja, criamos uma variavel para fazer essa contabilização, dentro do laço while a incrementamos em 1, e enquanto ela não for maior que mil, esse laço se repetirá!

Um exemplo de como ficaria o programa:

#include<stdio.h>
int main(void)
{
int numero;
numero =1;
while(numero<=100){
printf("%i\n");
numero=numero+1;
}
getchar();
getchar();
}

ou seja, o programa começa com a variavel numero valendo 1, ela irá passar no laço e será verificado que 1 é menor que cem, entrará nesse laço, será impresso 1 no monitor e ela aumenta em 1, ou seja, o proxima valor de numero é 2, logo, ela repetirá esse processo, até numero valer 100, depois, a variavel valerá 101 e, como podemos notar, 101 não é menor que 100, logo, o laço se encerarrá e ela pulará para o proximo comando, que, no nosso caso sao os getchar..

Outro exemplo:

Fazer a soma dos numeros de 1 a 100.

#include<stdio.h>
int main(void)
{
int numero,soma;
numero =1;
soma=0;
while(numero<=100){
soma=soma+numero;
numero=numero+1;
}
printf("a soma dos numeros de 1 a 100 é %i",soma);
getchar();
getchar();
}

agora, você deve estar se perguntando, porque ele declarou soma= 0 ?
Veja o comando:

soma=soma+numero;

A parte a esquerda do igual, não é analizada, como bem sabemos, ela só será atribuida ao valor de soma+numero, agora, vamos analizar:

Se não declararmos zero no valor da soma, ficará:

soma+numero = ? + 1 = ??????

O programa compilará normalmente, PORÉM, você não especificou o valor de soma, logo, pode ter qualquer valor armazanado nessa variavel e o seu resultado com certeza não será o desejado.
Ou seja, se declararmos soma como zero, ficará:

soma=soma+numero=0+1
logo, soma valerá 1 agora e o numero, com o comando numero=numero+1, valerá 2.
Depois, soma=soma+numero=1+2=3, agora soma vale 3 e o numero com o incremento, passa a valer 3 também e assim sucessivamente até numero ser 100!
Espero que tenha ficado claro!
Qualquer duvida, deixe um comentário!

Ah, tarefa, claro ;p

1) Dado um inteiro positivo "n", somar os "n" primeiros numeros positivos.
2) Dado "n", imprimir os "n" primeiros impares positivos.

Mandem a resposta para meu email, se quiserem:
linguaemc@hotmail.com

Até mais!

Nenhum comentário:

Postar um comentário