Buscar

Aula09 While1 2011

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Comandos Comandos for for aninhadosaninhadosmm ff
for ( <expressão 1> ; <expressão 2> ; <expressão3> ) 
<comando>
1 comando
Comando:
1 comando
...
- qualquer comando -> pode ser comando for
...
for (i = 1; i <= 10; i++)
{
scanf (“%d”, &n);
f (j 1 j j )
...
for (i = 1; i <= 5; i++)
for (j=1; j<=3; j++)for (j = 1;j < n; j++)
printf(“%d ”, j);
}
for (j 1; j< 3; j++)
printf(“%d %d”, i , j);
...
1
...
Ex: Processar as notas de 3 turmas de alunos.
Para cada turma, ler inicialmente o número de alunos da turma. 
Depois para cada aluno ler suas 3 notas calcular e informar a Depois, para cada aluno, ler suas 3 notas, calcular e informar a 
média. No final, fornecer a média das notas de cada turma.
//calcula media de alunos e media de uma turma
#include <stdio h>#include <stdio.h>
int main ( )
{
float n1, n2, n3; // notas de um aluno 
i t l // d l d tint nalunos; // numero de alunos de uma turma 
float media, soma;
int turma, al; // variavel de controle para turmas e alunos 
for (turma = 1; turma <=3 ;turma++) // para cada turma ( ) p
{
soma = 0; // soma as medias de todos os alunos desta turma 
scanf (“%d”, &nalunos); // obtem o número de alunos desta turma 
for (al = 1; al <= nalunos; al++) // para cada aluno desta turmafor (al 1; al < nalunos; al++) // para cada aluno desta turma 
{
scanf(“%f %f %f”, &n1, &n2, &n3); // obtem as notas de um aluno 
media = (n1 + n2 + n3)/3;
printf(“Media do al no %d %6 2f” al media)printf(“Media do aluno %d: %6.2f”, al, media); 
soma = soma + media; // acumula a media para esta turma 
} // do processamento de um aluno 
printf(“Media da turma %d: %7.2f”, turma , soma/nalunos);
2
} // do processamento de uma turma 
return 0;
}
Ex: Processar as notas dos alunos de uma turma.
Ler o número de alunos da turma. 
Para cada aluno ler suas 3 notas com FOR calcular e informar a Para cada aluno, ler suas 3 notas com FOR , calcular e informar a 
média. No final, dar a média da turma.
//calcula media de alunos e media de uma turma
#include <stdio h>#include <stdio.h>
int main ( )
{
float nota; // notas de um aluno 
float media, soma, somanota; , , ;
int nalunos, indnota turma, al; // variavel de controle para turmas e alunos 
for (turma = 1; turma <=3 ;turma++) // para cada turma 
{
soma = 0; // soma as medias de todos os alunos desta turma 
scanf (“%d” &nalunos); // obtem o numero de alunos desta turmascanf (“%d”, &nalunos); // obtem o numero de alunos desta turma 
for (al = 1; al <= nalunos; al++) // para cada aluno desta turma 
{ somanota=0;
for ( indnota= 1; indnota <= 3; indnota++)
{{ 
scanf(“%f , &nota); // obtem as notas de um aluno 
somanota += nota; // acumula as notas de um aluno 
}
media = somanota/3;
i tf(“M di d l %d %6 2f” l di ) C l ?printf(“Media do aluno %d: %6.2f”, al, media); soma += media; // acumula a media para esta turma } // do processamento de um aluno printf(“Media da turma %d: %7.2f”, turma , soma/nalunos);
} // do processamento de uma turma
Como resolver 
se o número de 
alunos da turma 
ã é h id
?
3
} // do processamento de uma turma 
return 0;
}
não é conhecido
Comandos iterativosComandos iterativosComandos iterativosComandos iterativos
•• para ... p
•• enquanto ... 
•• faça ... enquanto ...
4
Comando Comando whilewhile
enquanto <condição> while <condição>
Pseudolinguagem Linguagem C
enquanto <condição> 
<comando >
while <condição> 
<comando >
1 m d
condição
F
1 comando
d
V
comando
5
...
a = 6; b = 0;
Exemplos
6 0...
a = 1;
while (a < 5)
a = a + 1;
while ((a - 2) > (b + 1))
{
printf(“%d %d”, a , b);
6 0
5 0
4 0a = a + 1;
printf(“%d”, a);
...
a = a - 1;
}
printf(“%d”, a);
5
4 0
3
...
...
...
for (a = 1; a <= 5; a++)
printf(“%d”, a);
a = 1;
while (a <= 5)
{
...
a = 0;
while (a < 5)
{
1
2
1
2
3{ printf(“%d”, a);
a = a + 1;
}
{
a = a + 1;
printf(“%d”, a); 
}
3
4
5
3
4
5}printf(“%d”, a);...
}
printf(“%d”, a);...
5
6
5
5
6
Valor de a antes e depois 
do comando é diferente!!!
Comando Comando whilewhile : sintaxe: sintaxe
while (expressão condicional) 
{ 
ATENÇÃO:
as chaves só são 
obrigatórias quando // comando(s) a serem repetidos 
} 
obrigatórias quando 
mais de um comando
for controlado pelo 
while (laço de } 
// comandos após o while
( ç
repetição).
1. A condição definida em expressão condicional é avaliada:
9 se verdadeira:
i bloco de comandos é executado;i- bloco de comandos é executado;
ii-retorna ao cabeçalho
9 se falsa:
i-encerra comando whilei-encerra comando while.
Observação: A avaliação da condição do comando while ocorre antes do início 
do trecho a ser repetido: 
bloco subordinado pode não ser executado nenhuma vez!
7
p
...
ExemplosExemplos Utilização de variável inteira simulando booleana
O mesmo que testar se variável é ...
segue = 1;
while (segue)
{
...
s = 0;
f(“%d” & )
diferente de zero.
{
scanf(“%d”, &a);
if (a)
printf(“%d”, a);
l
scanf(“%d”, &a);
while (a)
{
else
segue = 0;
}
printf(“%d”, a);
s = s + 1;
scanf(“%d”, &a);...
...
parar = 0;
( , );
}
printf(“%d”, s);
...
while (!parar)
{
scanf(“%d”, &a);
if (a != 0)
...
1a f t t dif (a != 0)printf(“%d”, a);
else
parar = 1;
}
• 1a vez que a for testado
já deve ter um valor;
• s informa quantos valores
8
}
...
s informa quantos valores
foram lidos.
Ex: Processar as notas dos alunos de uma turma.
Para cada aluno, ler suas 3 notas, calcular e informar a média. 
Para encerrar entra a primeira nota com valor superior a 100, logo não 
válido válido. 
No final, informar a média da turma.
//Processa notas dos alunos de uma turma
#include <stdio.h>#include <stdio.h>
int main ( )
{
float n1, n2, n3; //notas de um aluno 
float media, soma;
int al; //variavel de contar alunos 
n1 = 1; // inicializar em qualquer valor menor ou igual 100 
0 l 0soma = 0; al = 0; 
while (n1 <= 100)
{
scanf(“%f %f %f” &n1 &n2 &n3);
Calcula média da 
n t inválidscanf( %f %f %f , &n1, &n2, &n3); // obtem as notas de um aluno 
media = (n1 + n2 + n3)/3;
soma = soma + media;
nota inválida
;
al = al + 1;
printf(“Media do aluno %d : %6.2f”, al, media); 
} // do processamento de um aluno 
f(“ %f / )
9
printf(“Media da turma: %f”, soma/al);
return 0;
}
Ex: Processar as notas dos alunos de uma turma.
Para cada aluno, ler suas 3 notas, calcular e informar a média. 
Para encerrar entrar com primeira nota >100. 
No final, informar a média da turma.
//Calcula media de alunos
Igual ao exemplo anterior, exceto por parar quando for lida a primeira nota com 
valor zero (não é nota válida, é só um sinal).
#include <stdio.h>
int main ( )
{
float n1 n2 n3; // notas de um alunofloat n1, n2, n3; // notas de um aluno 
float media, soma;
int al; // variavel de contar alunos 
soma = 0; al = 0; 
scanf (“%f %f %f” &n1 &n2 &n3); // obtem as notas do primeiro alunoscanf (“%f %f %f”, &n1, &n2, &n3); // obtem as notas do primeiro aluno 
while ((n1>= 0) && (n1<= 100))
{
media = (n1 + n2 + n3) / 3;( )
soma = soma + media;
al = al + 1;
printf(“Media do aluno %d: %7.2 “, al, media);
scanf (“%f %f %f”, &n1, &n2, &n3); // obtem as notas do proximo alunoscanf ( %f %f %f , &n1, &n2, &n3); // obtem as notas do proximo aluno 
} // fim do processamento de um aluno 
printf(“\nMedia da turma: %7.2f\n”, soma/al); 
return 0;
}
10
} Cuidado a tomar: 
se o ‘sinal de parada’ faz ou não parte dos dados.
Comando do...Comando do...whilewhile
faça do
Pseudolinguagem Linguagem C
ç
<comando >
enquanto <condição>
<comando >
while <condição>enquanto <condição> while <condição>1 m d
comando
1 comando
V
condição
V
F
11
F
...
ExemplosExemplos ...
achou = 0; // 0 = falso
1
...
do
a = 0;
do
{
1
do
{
scanf(“%d”,&numero);
i tf(“%d” )
1
2
3
{
scanf(“%d”,&numero);
printf(“%d”, numero)
}a = a + 1;
printf(“%d”, a);
}
hil ( < 5)
printf(“%d”, numero);
if (numero == 250)
achou = 1;
}
3
4
5
} 
while (numero != 250);
while (a < 5);
...
} 
while ( ! achou); // com achou = 1 pára
...
for (a = 1; a<=5; a++)
...
...
1
for (a = 1; a<=5; a++)
printf(“%d”, a);
do
{
scanf(“%d”, &numero);
i tf(“%d” )
a = 1;
do
{
printf(“%d” a);
1
2
3 printf(“%d”, numero);
printf(‘Outro ? (1 = sim / 0 = nao) ’);
scanf(“%d”, &resposta)
}
printf(“%d”, a);
a = a + 1;
}
while (a <= 5)
3
4
5
12
}
while (resposta == 1);
...
while (a <= 5)
printf(“%d”, a);...
5
6
ExemploExemplo
//escreve 20 vezes Bom dia
#include <stdio.h>
#include <stdlib.h> //para o comando de limpar a tela
int main ( )
{{
int cont,i;
system("color f1");
cont = 0;cont = 0; 
do
{ for (i=1;i<=cont;i++)
printf(" "); p ( );
printf("Bom Dia !!!\n");
cont = cont + 1;
}
hil ( t 20)while (cont < 20);
system("cls"); //Limpa tela
return 0; 
}
13
}
/*Programa Peso_ideal, utilizando o do-while como recurso para consistência do 
sexo informado: */
#include <stdio.h>
#include <stdlib.h> // para usar o system(“cls") 
#include <ctype.h> // para usar toupper
int main()
{{ 
float altura,pesoideal;
char sexo;
dodo
{ // laço para só ir adiante qundo sexo informado for correto
printf("digite o sexo M/F\n");
scanf(" %c", &sexo); // branco antes do %c faz com que ignore return
t ( )sexo = toupper(sexo);
} while (sexo != 'M' && sexo != 'F');
printf("digite a altura\n");
scanf("%f",&altura);scanf( %f ,&altura);
if (sexo=='M')
pesoideal = altura*72.7 - 58;
else
id l lt *62 1 44 7pesoideal = altura*62.1 - 44.7;
printf("seu peso ideal é %f/n",pesoideal); 
printf("o sexo eh %c\n",sexo); 
getchar();
14
getchar(); 
system(“cls"); 
return 0; 
}
Comando Comando whilewhile Diagramas de sintaxe
while expressão comandop comando
Comando Comando do...do...whilewhile
do comando expressãowhile
15
Comparação entre os Comparação entre os pp
Comandos de RepetiçãoComandos de Repetição
comando verifica condição repetições
Antes da 
execução
for início 0 ou +
Número de 
repetições é 
conhecidoconhecido
while início 0 ou + (?) 
Número de 
repetições não é ( )
conhecido
Número de 
repetições não é 
do-while final 1 ou + (?)
repetições não é 
conhecido e pelo 
menos uma 
execução deve 
16
execução deve 
ocorrer
//gera linhas de tracos, quantas o usuario desejar
#include <stdio.h>
int main ( )
{
int i, ch;
h 1 // 1 ich = 1; // 1 = sim
while (ch)
{
i = 1;
//quando ch for 0, while vai parar
i = 1;
while (i <= 80)
{
printf(“-”);
// escreve uma linha com 80 caracteres ‘-’ 
printf( - );
i = i + 1
} // fim do segundo while
dodo
{
printf(“\nOutra ? (1 = sim / 0 = nao) “);
scanf (“%d” , &ch);
// é
( , );
}
while (ch < 0 || ch >1 ); 
} // fim do primeiro while
t 0
// repete leitura até que
//valor fornecido seja válido 
17
return 0; 
}
Comandos de RepetiçãoComandos de Repetiçãopp
na Programação Estruturadana Programação Estruturada
 ó • Comandos de repetição só podem ser 
interrompidos por alterações previstas p p ç p
nas suas expressões
• A variável de controle do FOR só deve • A variável de controle do FOR só deve 
ser alterada pela operação do cabeçalho
• O uso de break para interromper 
repetições é absolutamente vetadorepetições é absolutamente vetado
18
1 – Complete o programa abaixo, de forma que os números pares 
entre 10 e 100 sejam gerados, somados e a que soma obtida seja 
informada na tela Para isto utilize o comando while o comando do while informada na tela. Para isto, utilize o comando while, o comando do_while 
e o comando for. A tela de execução do programa deve ser como 
mostrada abaixo.
/* soma pares e mostra equivalências entre for, while e do while: */
#include <stdio.h>
#include <stdlib.h>
int main ( )nt ma n ( )
{
system("color f1"); // muda cor neste comando!!!
int par, soma;
// usando while:// usando while:
...........
// usando do while:
...........
// usando for:// usando for:
............
return 0;
}
19
/* soma pares e mostra equivalências entre for, while e do while: */
#include <stdio.h>
int main ( )
{
i t int par, soma;
// usando while:
soma = 0;
par = 10; // valor inicial
hil ( 100)while (par <=100)
{
soma = soma + par;
par=par + 2;
}
// usando do while:
}
printf("\n\nWhile - soma = %d", soma);
soma = 0;
par = 10; // valor inicialpar = 10; // valor inicial
do
{
soma = soma + par;
par=par + 2;
// usando for:
p p ;
} while (par <=100);
printf("\n\nDo-while - soma = %d", soma);
f ( 10 0 100 2)for ( par = 10, soma = 0; par <=100; par=par + 2)
soma = soma + par;
printf("\n\nFor - soma = %d\n\n", soma);
20
return 0;
}

Outros materiais