Buscar

04 EstruturasdeControle

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

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

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ê viu 3, do total de 33 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

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

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ê viu 6, do total de 33 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

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

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ê viu 9, do total de 33 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

Prévia do material em texto

Estruturas de Controle
Introdução a Programação
Pitágoras
• Seleção
• Iteração
• Desvio
Roteiro
Laboratório de Programação I - Glaudiney Mendonça
2
• Realizam seleção de código
▫ if-else
▫ switch
• Lembrando
Seleção
Laboratório de Programação I - Glaudiney Mendonça
3
0 Falso
 0 Verdadeiro
Seleção
if
Laboratório de Programação I - Glaudiney Mendonça
4
if( expressao ) comando;
else comando;
expressao
Que resulte em um valor escalar (número)
Inteiro, caractere ou ponto flutuante 
(não recomendado por ser mais lento)
comando
Único comando, bloco ou nada
if expressao verdadeira
else expressao falsa
else Opcional
Exemplo
#include <stdio.h>
#include <stdlib.h>
int main()
{
int magic, guess;
magic = rand();
printf("Advinhe o número: ");
scanf("%d",&guess);
if (guess == magic)
printf("Certo!");
else printf("Errado!");
}
Seleção
if
Laboratório de Programação I - Glaudiney Mendonça
5
• Quando um if é objeto de outro if ou else
▫ O padrão C99 permite 15 níveis de aninhamento
▫ Na prática, os compiladores suportam mais
• else sempre se refere ao if mais próximo
▫ Que está no mesmo bloco 
▫ Que já não possua um if associado
Seleção
ifs Aninhados
Laboratório de Programação I - Glaudiney Mendonça
6
Seleção
ifs Aninhados
Laboratório de Programação I - Glaudiney Mendonça
7
Exemplo
if(i)
{
if(j) comando;
if(k) comando;
else comando;
}
else comando;
Seleção
if – Construção alternativa
Laboratório de Programação I - Glaudiney Mendonça
8
expressao ? expressao: expressao ;
expressao
Deve ser simples
Nunca outro comando de C
Exemplo
int x = 10;
int y = x>9 ? 100 : 200;
• O valor testado pelo if não se restringe a um 
valor booleano
▫ Basta que o valor analisado seja um número
Seleção
if
Laboratório de Programação I - Glaudiney Mendonça
9
0 Falso
 0 Verdadeiro
Seleção
if
Laboratório de Programação I - Glaudiney Mendonça
10
Exemplo
int main()
{
int a, b;
printf("Digite 2 números: ");
scanf("%d%d", &a, &b);
if (b)
printf("%d\n", a/b);
else
printf("Divisão por 0!");
}
• Comando de seleção múltipla
▫ Testa o valor de uma expressão contra uma lista 
de constantes inteiras ou de caracteres
▫ Quando coincidem, os comandos associados à 
constante são executados
Seleção
switch
Laboratório de Programação I - Glaudiney Mendonça
11
Seleção
switch
Laboratório de Programação I - Glaudiney Mendonça
12
switch( expressao ){
case constante1:
comandos
break;
case constante2:
comandos
break;
...
default:
comandos
}
expressao
Que resulte em um
valor inteiro ou caractere
constante
Valores que serão
comparados ao resultado
de expressao
default Opcional
break
Finaliza a execução
de um case
• Valor da expressão testado, na ordem, contra as 
constantes
• Os comandos de um valor coincidente serão 
executados até
▫ Encontrar um break ou
▫ Fim do switch ( } )
• C99 permite até 257 cases
▫ Na prática é bom utilizar menos, para melhor 
eficiência
Seleção
switch
Laboratório de Programação I - Glaudiney Mendonça
13
Seleção
switch
Laboratório de Programação I - Glaudiney Mendonça
14
Exemplo
int a, b; char op;
scanf("%d %c%d", &a, &op, &b)
switch(op){
case '+':
printf("Soma = %d", a+b); 
break;
case '-':
printf("Subtracao = %d", a-b);
break;
default:
printf("Operacao Invalida");
}
• Também chamados de laços
• Realizam repetição de comandos enquanto 
ocorra uma certa condição
▫ for
▫ while
▫ do-while
Iteração
Laboratório de Programação I - Glaudiney Mendonça
15
Iteração
for
Laboratório de Programação I - Glaudiney Mendonça
16
for( inicializacao ; condicao ; incremento )
comando;
inicializacao
Geralmente é um comando de atribuição 
da variável de controle do laço
condicao
Expressão relacional que determina 
quando o laço acaba
Enquanto for verdadeira, o laço não acaba
Testada a cada iteração do laço
incremento
Define como a variável de controle
varia cada vez que o laço é repetido
comando Único comando, bloco ou nada 
Iteração
for
Laboratório de Programação I - Glaudiney Mendonça
17
Exemplo
int main()
{
for(int x=1; x <= 100; x++)
printf("%d ",x);
}
Iteração
for
Laboratório de Programação I - Glaudiney Mendonça
18
Exemplo
int main()
{
for(int x=100; x != 65; x-=5)
{
int z = x*x;
printf("Quadrado de %d = %d",x,z);
}
}
Iteração
for
Laboratório de Programação I - Glaudiney Mendonça
19
Variações
Mais de uma variável for(x=0,y=0 ; x+y<10 ; ++x,++y)
Sem incremento for(x=0 ; x != 123 ; )
Sem inicialização for( ;x<10; )
Eterno for(;;)
Iteração
for
Laboratório de Programação I - Glaudiney Mendonça
20
Exemplo
int main()
{
char ch = '\0';
for(;;)
{
scanf("%c", &ch);
if (ch == 'A') 
break;
}
}
• Pode não possuir corpo
Iteração
for
Laboratório de Programação I - Glaudiney Mendonça
21
Exemplos
Percorrer
estruturas
for(int i=0 ; vetor[i] != 4 ; i++);
Perder tempo for(int i=0 ; i<=40000 ; i++ );
Iteração
while
Laboratório de Programação I - Glaudiney Mendonça
22
while( condicao )
comando;
condicao
Expressão relacional que determina 
quando o laço acaba
Enquanto for verdadeira, o laço não acaba
Testada a cada iteração do laço
comando Único comando, bloco ou nada 
Iteração
while
Laboratório de Programação I - Glaudiney Mendonça
23
Exemplo
int main()
{
int x=1;
while(x <= 100)
{
printf("%d ", x++);
}
}
Iteração
while
Laboratório de Programação I - Glaudiney Mendonça
24
Exemplo
int main()
{
float z;
int x=100;
while(x != 65) {
z = x*x;
printf("Quadrado de %d = %f",x, z);
x-=5;
}
}
Iteração
while
Laboratório de Programação I - Glaudiney Mendonça
25
Exemplo
int main()
{
char ch = '\0';
while(1)
{
scanf("%c", &ch);
if (ch == 'A') 
break;
}
}
Iteração
do-while
Laboratório de Programação I - Glaudiney Mendonça
26
do{
comando;
}while( condicao );
condicao
Expressão relacional que determina 
quando o laço acaba
Enquanto for verdadeira, o laço não acaba
Testada no final de cada iteração do laço
comando
Único comando, bloco ou nada 
Executado pelo menos uma vez
Iteração
do-while
Laboratório de Programação I - Glaudiney Mendonça
27
Exemplo
int main()
{
int x=1;
do
{
printf("%d ", x++);
} while (x <= 100);
}
Iteração
do-while
Laboratório de Programação I - Glaudiney Mendonça
28
Exemplo
int main()
{
float z;
int x=100;
do {
z = x*x;
printf("Quadrado de %d = %f",x, z);
x-=5;
} while (x != 65);
}
Iteração
do-while
Laboratório de Programação I - Glaudiney Mendonça
29
Exemplo
int main()
{
char ch = '\0';
do
{
scanf("%c", &ch);
if (ch == 'A') 
break;
} while(1);
}
• Realiza desvio incondicional:
▫ return
▫ break
▫ continue
Desvio
Laboratório de Programação I - Glaudiney Mendonça
30
• Retornar de uma função
• Se tiver um valor associado a ele, esse valor é o 
retorno da função
• } é o mesmo que um return sem valor
Desvio
return
Laboratório de Programação I - Glaudiney Mendonça
31
return expressao
expressao
Valor do tipo de retorno da função
Opcional
• Pode ser utilizado para finalizar
▫ Um case,ou
▫ Um laço qualquer, sem testar a condição
• Afeta o laço, ou switch, mais interno
• Para finaliza a aplicação como um todo
Desvio
break
Laboratório deProgramação I - Glaudiney Mendonça
32
exit( codigo );
codigo
É retornado ao SO
0 Saída normal
• Obriga que ocorra a próxima iteração do laço, 
pulando qualquer código intermediário
Desvio
continue
Laboratório de Programação I - Glaudiney Mendonça
33
Exemplo
void contaEspacos(char* str)
{
for(int space=0; *str; str++)
{
if (*str != ' ') continue;
space++;
}
}

Outros materiais