Mudanças entre as edições de "MCO018703 2018 1 AULA06"
Ir para navegação
Ir para pesquisar
(Criou página com ' ----- link=MCO018703_2018_1_AULA05 link=MCO018703_2018_1#Aulas link=MCO018703_2018_1_AULA07') |
|||
Linha 1: | Linha 1: | ||
+ | ==O comando ''while()'': teste da repetição no começo == | ||
+ | |||
+ | ;O comando '''while''' tem a seguinte forma geral | ||
+ | |||
+ | while (condição) declaração; | ||
+ | |||
+ | ou | ||
+ | |||
+ | while (condição) | ||
+ | { | ||
+ | declaração1; | ||
+ | declaração2; | ||
+ | } | ||
+ | |||
+ | |||
+ | Podemos ver que a estrutura ''while'' testa uma condição. Se esta for verdadeira<br> | ||
+ | a declaração é executada e faz-se o teste novamente, e assim por diante.<br> | ||
+ | |||
+ | O comando ''while'' permite implementar ''loops'' com controle no início: | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | main() | ||
+ | { | ||
+ | int contador; | ||
+ | |||
+ | contador=0; | ||
+ | while (contador<5) { | ||
+ | printf("valor do contador = %d\n", contador); | ||
+ | contador=contador+1; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | Variação do exemplo anterior: | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | main() | ||
+ | { | ||
+ | int contador; | ||
+ | |||
+ | contador=0; | ||
+ | while (contador<5) { | ||
+ | printf("valor da expressão = contador < 5 é %d\n", contador<5); | ||
+ | printf("valor do contador = %d\n", contador); | ||
+ | contador=contador+1; | ||
+ | } | ||
+ | printf("NO FINAL a expressão contador < 5 é %d\n", contador<5); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | Vamos ver a correspondência do comando ''while'' com um fluxograma: | ||
+ | |||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | ! style="background: #FFD700;" | Fluxograma | ||
+ | ! style="background: #FFD700;" | C | ||
+ | ! style="background: #FFD700;" | Comentário | ||
+ | |- | ||
+ | | |[[imagem:fluxo5.jpg|200px]] | ||
+ | ||<syntaxhighlight lang=c>while(contador<5) { | ||
+ | printf("Entre com x\n"); | ||
+ | scanf("%f",&x); | ||
+ | soma=soma+x; | ||
+ | contador = contador + 1; | ||
+ | }</syntaxhighlight>|| O comando ''while()'' aplicado sobre um bloco de instruções.<br>Note que se for uma instrução simples,<br>as chaves podem ser omitidas. | ||
+ | |} | ||
+ | |||
+ | '''NOTE''' que no exemplo anterior o contador inicialmente DEVE conter um valor válido. | ||
+ | |||
+ | ==Comando ''do while'': controle do ''loop'' no final== | ||
+ | |||
+ | ;O comando ''do while'' tem a seguinte forma geral | ||
+ | |||
+ | do { | ||
+ | declaração1; | ||
+ | declaração2; | ||
+ | } while (condição); | ||
+ | |||
+ | Nesta variação o comando ''do while()'' permite a repetição de uma ou mais instruções, com controle do ''loop'' no final.<br> | ||
+ | Isto permite que o bloco seja executado pelo menos uma vez. | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | main() | ||
+ | { | ||
+ | int contador; | ||
+ | |||
+ | contador=0; | ||
+ | do { | ||
+ | printf("valor do contador = %d\n", contador); | ||
+ | contador=contador+1; | ||
+ | } while (contador<5); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | ! style="background: #FFD700;" | Fluxograma | ||
+ | ! style="background: #FFD700;" | C | ||
+ | ! style="background: #FFD700;" | Comentário | ||
+ | |- | ||
+ | | |[[imagem:fluxoDoWhile-Eraldo.jpg|200px]] | ||
+ | ||<syntaxhighlight lang=c> | ||
+ | contador = 0; | ||
+ | do { | ||
+ | scanf("%d",&x); | ||
+ | soma=soma+x; | ||
+ | if (soma>150) | ||
+ | y=z+x; | ||
+ | contador++; | ||
+ | } while(contador<5); | ||
+ | </syntaxhighlight>|| Note que instruções ''while'' e ''if'' são tratadas como instruções normais<br> | ||
+ | que podem ser aninhadas normalmente em outros comandos. | ||
+ | |} | ||
+ | |||
+ | =Loop Infinito= | ||
+ | |||
+ | É possível implementar loops infinitos com qualquer uma das instruções acima. | ||
+ | |||
+ | Exemplo com comando ''while'': | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | main() | ||
+ | { | ||
+ | while(1) { | ||
+ | /* Este bloco se executará infinitamente */ | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | =Exercícios= | ||
+ | |||
+ | #Elabore um programa que lê um número inteiro e imprime todos os números pares entre 0 e este número. | ||
+ | #Elabore um programa que lê um número inteiro e imprime todos os números impares entre 1 e este número. | ||
+ | #Elabore um programa que lê um número inteiros relativos a quantos elementos que computar da sequecia fibonacci, em que o segundo elemento é sempre a soma dos dos primeiros, por exemplo: (1+0=1, 1+1=2, 2+1=3, 2+3=5, 3+5=8, =5+8=13, 8+13=21 e assim por diante). Lembre que os dois primeiros elementos considerados são 1). | ||
Edição das 19h03min de 5 de março de 2018
O comando while(): teste da repetição no começo
- O comando while tem a seguinte forma geral
while (condição) declaração;
ou
while (condição) { declaração1; declaração2; }
Podemos ver que a estrutura while testa uma condição. Se esta for verdadeira
a declaração é executada e faz-se o teste novamente, e assim por diante.
O comando while permite implementar loops com controle no início:
#include <stdio.h>
main()
{
int contador;
contador=0;
while (contador<5) {
printf("valor do contador = %d\n", contador);
contador=contador+1;
}
}
Variação do exemplo anterior:
#include <stdio.h>
main()
{
int contador;
contador=0;
while (contador<5) {
printf("valor da expressão = contador < 5 é %d\n", contador<5);
printf("valor do contador = %d\n", contador);
contador=contador+1;
}
printf("NO FINAL a expressão contador < 5 é %d\n", contador<5);
}
Vamos ver a correspondência do comando while com um fluxograma:
NOTE que no exemplo anterior o contador inicialmente DEVE conter um valor válido.
Comando do while: controle do loop no final
- O comando do while tem a seguinte forma geral
do { declaração1; declaração2; } while (condição);
Nesta variação o comando do while() permite a repetição de uma ou mais instruções, com controle do loop no final.
Isto permite que o bloco seja executado pelo menos uma vez.
#include <stdio.h>
main()
{
int contador;
contador=0;
do {
printf("valor do contador = %d\n", contador);
contador=contador+1;
} while (contador<5);
}
Loop Infinito
É possível implementar loops infinitos com qualquer uma das instruções acima.
Exemplo com comando while:
main()
{
while(1) {
/* Este bloco se executará infinitamente */
}
}
Exercícios
- Elabore um programa que lê um número inteiro e imprime todos os números pares entre 0 e este número.
- Elabore um programa que lê um número inteiro e imprime todos os números impares entre 1 e este número.
- Elabore um programa que lê um número inteiros relativos a quantos elementos que computar da sequecia fibonacci, em que o segundo elemento é sempre a soma dos dos primeiros, por exemplo: (1+0=1, 1+1=2, 2+1=3, 2+3=5, 3+5=8, =5+8=13, 8+13=21 e assim por diante). Lembre que os dois primeiros elementos considerados são 1).