Buscar

Programação Estruturada - Estruturas de Controle

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 29 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 29 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 29 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

PROGRAMAÇÃO ESTRUTURADA
UNIDADE 5:
COMANDOS DE CONTROLE DE FLUXO
Estruturas de Decisão
• Permitir testes para decidir ações alternativas:
• if
• if - else
• switch
• (?:) Operador Ternário
3
Comando if
if (condição)
instrução;
#include <stdio.h>
main ( )
{
char ch;
ch = getchar ( );
if (ch == ‘p’)
printf (“você pressionou a tecla p”);
}
if (condição) {
instrução1;
intrução2;
}
#include <stdio.h> 
main ( )
{
if (getchar()) == ‘p’ ) {
printf (“ você digitou p”);
printf (“ pressione outra tecla ”);
getchar( );
}
}
4
if aninhados 
• Se um comando if está dentro do outro if, dizemos que o 
if interno está aninhado.
#include <stdio.h>
main ( )
{
char ch;
printf (“ digite uma letra 
entre A e Z”);
ch = getchar ( );
if (ch >= ‘A’)
if (ch < = ‘Z’)
printf (“ você acertou”);
}
#include <stdio.h>
main ( )
{
char ch;
printf (“ digite uma letra 
entre A e Z”);
ch = getchar ( );
if ((ch >= ‘A’) && (ch < = ‘Z’))
printf (“ você acertou”);
}
5
Comando if-else
• O comando if só executa a instrução caso a 
condição de teste seja verdadeira, nada fazendo 
se a expressão for falsa.
• O comando else executará uma instrução ou um 
conjunto de instruções se a expressão for falsa.
6
Comando if-else
if (condição) 
instrução;
else
instrução;
#include <stdio.h>
main ( )
{ 
if (getchar ( ) == ‘p’)
printf (“ você digitou p”);
else
printf (“ você não digitou p”);
}
7
Exemplo: Evitar-se divisões por Zero, usando 
recursos do comando if-else.
include <stdio.h>
main()
{
int a,b;
printf(“Digite 2 números: “);
scanf(“%d %d”,&a,&b);
if (b)
printf(“%f”,a/b);
else
printf(“Nao posso dividir por 
zero\n”);
}
8
Comando if-else aninhados
if (condição1)
instrução
else if (condição2)
instrução
else if (condição3)...
#include <stdio.h> 
main ( )
{
int número;
scanf (“ % d”, &número);
if (número < 0)
printf (“número menor que zero”);
else if (número < 10)
printf (“ número  e < 10”);
else if (número < 100)
printf (“número  10 e < 100);
else
printf (“número 100”);
}
9
Como o computador decide 
de qual if o else pertence?
EX1:
if (n > 0)
if (a > b){
z = a;
calculafatorial(z);
}
else 
z = b;
Ex1: Quando n > 0 e a < b
Ex2: Quando n < 0
• else é sempre associado ao if mais interno
• quando z = b será executado?
Ex2:
if (n > 0) {
if (a > b)
z = a;
} else
z = b;
10
Exemplo 1: Programa Adulto, Jovem ou Velho.
#include <stdio.h>
main()
{
int i;
printf(“Digite sua idade: “);
scanf(“%d”,&i);
if (i > 70)
printf(“Esta Velho!”);
else
if (i > 21)
printf(“Adulto”);
else
printf(“Jovem”);
}
11
Exemplo 2: Maior entre três números
main()
{
int a,b,c;
printf(“Digite o 1º Número: “);
scanf(“%d”,&a);
printf(“\nDigite o 2º Número: “);
scanf(“%d”,&b);
printf(“\nDigite o 3º Número: “);
scanf(“%d”,&c);
if (a > b)
if (a > c)
printf(“\nO Maior é %d”,a);
else 
printf(“\nO Maior é %d”,c);
else 
if (b > c)
printf(“\nO Maior é %d”,b);
else 
printf(“\nO Maior é %d”,c);
}
main()
{
int a,b,c,d;
cls();
printf(“Digite o 1º Número: “);
scanf(“%d”,&a);
printf(“\nDigite o 2º Número: “);
scanf(“%d”,&b);
printf(“\nDigite o 3º Número: “);
scanf(“%d”,&c);
if (a > b)
d = a;
else
d = b;
if (c > d)
printf(“\nO Maior é %d”,c);
else
printf(“\nO Maior é %d”,d);
}
12
Exemplo 3: Dados 2 números apresente-os ordenados.
main()
{
int a,b,t;
printf(“Digite o 1º Número: “);
scanf(“%d”,&a);
printf(“\nDigite o 2º Número: “);
scanf(“%d”,&b);
if (a < b) {
t = a;
a = b;
b = t;
}
printf(“\nOrdenados: %d e %d “,b,a);
}
13
Comando ?:
• Forma compacta de expressar uma instrução if –
else
• (condição) ? expressão1 : expressão2
• Max = (num1 > num2) ? num1 : num2
• Note:
if (num1 > num2) max = num1;
else max = num2;
• Exemplo:
ABS = (num < 0) ? - num : num; 
14
Comando switch
• Forma de se substituir o comando if – else ao se 
executar vários testes
• Diversas vezes precisamos determinar se um 
valor encontra-se numa lista de valores. Apesar 
de podermos usar uma seqüência de ifs, este 
recurso além de não ser elegante, por vezes 
confunde o entendimento do programa. 
Vejamos uma opção melhor: o comando switch.
15
Comando switch
switch <variável> {
case <constante 1> :
<comandos>;
[break;]
case <constante 2> :
<comandos>;
[break;]
case <constante 3> :
<comandos>;
[break;]
[default :
<comandos>;]
}
OBS:
•“ variável” deve ser uma variável do 
tipo inteiro ou caracter;
•“break” serve para terminar a 
seqüência de comandos em 
execução, por serem opcionais, se 
forem suprimidos permitem que o 
“case” a seguir seja executado, sem 
haver qualquer quebra na seqüência 
do processamento.
16
Comando Switch - Ex: uma calculadora
#include <stdio.h>
main ( )
{
char op;
float num 1, num 2;
printf (“ digite um n.o, um operador e um n.o”);
scanf (“ %f %c %f”, &num1, &op, &num2);
switch (op) {
case ‘+’:
printf (“ = %f”, num 1 + num 2);
break:
case ‘-’:
printf (“ = %f”, num 1 - num 2);
break;
default:
printf (“ operador inválido”);
}
}
17
Estruturas de Repetição
#include <stdio.h>
main ( )
{
printf (“1”);
printf (“2”);
: : :
printf (“10”);
}
saída: 1 2 3 4 ... 10
Exercício: Implemente um código para imprimir os algarismos de 1 até 10.
Repita o exercício e faça de 1 até 1000.
18
Estruturas de Repetição
• for, while, do-while
• repetir uma seqüência de comandos
#include<stdio.h>
main ( )
{
int num;
for (num = 1; num <= 1000; num++)
printf (“ % d”, num);
}
Saída: 1 2 3 ... 1000
19
Comando for
for (<início>;<condição>;<incremento>) <comando>;
Na forma mais simples:
• Inicialização:
• expressão de atribuição
• sempre executada uma única vez
• Teste:
• condição que controla a execução do laço
• é sempre avaliada a cada execução
• verdadeiro continua a execução
• falso para a execução 
20
Comando for
•Incremento:
• define como a variável de controle será alterada
• é sempre executada após a execução do corpo do laço
Exemplo: imprimindo números pares
#include<stdio.h>
main ( )
{
int número;
for ( número = 2; número < 10; número += 2 )
printf (“ %d”, número);
}
Saída 2 4 6 8
21
Comando for
• Flexibilidade: qualquer expressão de um laço “for” pode 
conter várias instruções separadas por vírgula.for (x=0,y=0;x+y<100;++x,y=y+x) 
printf(“%d”,x+y);
Esta instrução inicializaria x e y com zero, incrementando x de 1 em 1 e y receberia 
seu valor acrescido do de x. O resultado a cada iteração seria impresso desta forma: 0 
(x=0 e y=0) 2 (x=1 e y=1) 5 (x=2 e y=3) 9 14 e assim sucessivamente.
22
Comando for - Exemplo
Exemplo 1: Contagem simples com condição no teste “for”.
main()
{
int i,j,resposta;
char feito = ‘ ‘;
for (i=1;i<100 && feito != ‘N’;i++) {
for (j=1;j<10;j++) {
printf(“Quanto e’ %d + %d? “,i,j);
scanf(“%d”,&resposta);
getchar(); /* limpar o buffer do teclado */
if (resposta != i+j)
printf(“Errou!\n);
else
printf(“Acertou!\n”);
}
printf(“Mais? (S/N) “);
scanf(“%c”,&feito);
getchar(); /* limpar o buffer do teclado */
}
}
23
Comando for – loop infinito
• A ausência de condições de inicialização, continuidade e 
terminação, causarão um processo contínuo e 
teoricamente infinito (veremos posteriormente a 
intrução break, que tem a capacidade de encerrarum 
processo assemelhado ao exemplificado).
for(;;)
printf(“Este loop rodará eternamente!\n”);
24
Comando for – Loop Vazio
• A presença do ponto e vírgula finalizando o 
comando, força a execução do loop sem que seja 
executado qualquer outro comando.
for(i=0;i<10;i++);
25
Comando for – Loop Finito
• Ao contrário de outras linguagens que não permitem o término do 
loop a não ser quando a condição de finalização for satisfeita, a 
linguagem C permite que um loop seja interrompido antes de seu 
término normal (desestruturação) sem que exista qualquer tipo de 
inconveniente. O comando “break” causa essa interrupção.
for(;;) {
scanf(“%c”,&c);
if (c == ‘A’) 
break; 
/*interrompe o que deveria ser um laço eterno*/
}
printf(“Fim do Loop!”);
26
Comando while
while <condição> <comando>;
Exemplo: Contagem
#include <stdio.h>
main()
{
int i=0;
while (i < 10) {
printf(“%d”,i);
i++;
}
}
• O loop se repete, 
enquanto a condição for 
verdadeira
27
Comando do - while
• Ao contrário das estruturas “for” e “while” que testam a 
condição no começo do loop, “do / while” sempre a 
testa no final, garantido a execução ao menos uma vez 
da estrutura.
do {
<comandos>;
} while <condição>;
Exemplo: Término determinado pelo 
usuário.
#include <stdio.h>
main()
{
int num;
do {
scanf(“%d”,&num);
} while (num < 100);
}
28
/ * testa a capacidade de adivinhar uma letra * /
#include <stdio.h>
main ( ) {
char ch;
int tentativas; 
do {
printf (“digite uma letra”);
scanf(“%c”, ch); getchar ( );
tentativas = 1;
while ( ch!= ‘t’) {
printf (“%c é incorreto \n”, ch);
tentativas++;
printf (“tente novamente \n”);
}
printf (“%c é correto”, ch);
printf (“acertou em %d vezes”, tentativas);
printf (“continua? (s / n):”);
scanf(“%c”,ch); getchar( );
} while (ch == ‘s’);
} 
29

Outros materiais