Buscar

Aula05 If Aninhado2011

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 27 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 27 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 27 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 
d d ld d lcondicionais e de seleçãocondicionais e de seleção
Condicional
• seleção simples
• seleção dupla
• seleção múltipla
1
Comando condicional simplesComando condicional simples
C Linguagem algorítmica
if ( expressão lógica )
comando ;
se < expressão lógica >
< comando >;
< expressão lógica > verdadeira
1 só
 expressão lógica 
falsa < comando >
comando
< comando >
2
Comando condicional simplesComando condicional simples
if ( expressão lógica )
C Linguagem algorítmica
if ( expressão lógica )
{
comando1;
d
se < expressão lógica >
< comandoS >comandon;
}
< comandoS >
< expressão lógica > verdadeira expressão lógica 
falsa
< comando1 >
+ de 1
< comando2 > comando
3
Comando de seleção duplaComando de seleção dupla
C
se < expressão lógica >if (expressão lógica)
Linguagem algorítmica
p g
< comando >
senão
< comando >
( p g )
comando;
else 
comando;
< expressão lógica > verdadeirafalsa
< comando >< comando >
4
Comando de seleção duplaComando de seleção dupla
C
se < expressão lógica >if (expressão lógica)
Linguagem algorítmica
p g
< comando >
senão
< comando >
( p g )
comando;
else 
comando;
< expressão lógica > verdadeirafalsa
< comando1 >< comando1 >
+ de 1
< comando2 >< comando2 > comando
5
‘If’ aninhados‘If’ aninhados
if ( expressão lógica ) if (expressão lógica)comando;
lcomando ; elsecomando;
comando: comando: 
- comando simples 
- comando composto (entre chaves!)m mp ( )
Qualquer comando!Qualquer comando!
Inclusive outro if
Cuidado:
- else sempre se refere ao if mais próximo! 
Solução para modificar: uso de chaves.
6
‘Ifs’ encadeados‘Ifs’ encadeados
If (< condição >)
{
if (< condição 1 >)
if (< condição 2 >)
if (< condição 3 >)
< comando >;
if (< condição >)
if (< condição 3 >)
< comando >;
{
< comandos >;
if (< condição 1 >)
if (< condição 2 >)
if (< condição 3 >)}
< comandos >;
}
if (< condição 3 >)
< comando >;
else
d}
Quaisquer comandos
<comando>;
else
<comando>;Quaisquer comandoscomando ;
7
‘If’ encadeados ‘If’ encadeados –– cuidado !cuidado !
if (< condição 1 >) if (< condição 1 >)( ç )
if (< condição 2 >)
if (< condição 3 >)
< comando >;
( ç )
if (< condição 2 >)
{
if (< condição 3 >)< comando >;
else // do 2º if
<comando>; 
if (< condição 3 >)
< comando >;
}
else // do 2º if
<comando>;if (< condição 1 >)if (< condição 2 >)
{ ATENÇÃO: ao aninhar-
se ifs, usar chaves, se 
á i
{
if (< condição 3 >)
< comando >;
necessário, para que os 
elses correspondam 
aos ifs corretos ou para
else
<comando>;
} aos ifs corretos ou para 
documentação.
}
else
<comando>;
8
Em C:Em C:
/* Obtem coordenadas e informa localização, utilizando if: */
#include <stdio.h>
#include <stdlib.h>#include stdlib.h
int main ( )
{
float x , y; 
i tf("\ C d d ")printf("\n Coordenadas: x = ");
scanf("%f", &x);
printf(" e y = ");
scanf("%f", &y);
Refazer, 
d scanf( %f , &y);if ( x == 0 && y == 0 )
printf("\n Ponto na origem");
if ( x > 0 && y > 0 )
i tf("\ P t d t 1")
usando 
encadeamento!
printf("\n Ponto no quadrante 1");
if ( x < 0 && y > 0 )
printf("\n Ponto no quadrante 2");
if ( x < 0 && y < 0 )( y )
printf("\n Ponto no quadrante 3");
if ( x > 0 && y < 0 )
printf("\n Ponto no quadrante 4");
if ( 0 && ! 0 )if ( x == 0 && y != 0 )
printf("\n Ponto no eixo dos y");
if ( x != 0 && y == 0 )
printf("\n Ponto no eixo dos x");p ( );
printf("\n");
return 0;
} 9
/* Obtem coordenadas e informa localização, utilizando if_else */
// identifica origem e eixosg
{ 
if ( x == 0 ) // x = 0: possibilidade de origem ou eixo y
if (y == 0 ) // y também = 0: localizou origem
i tf("\ P t i ")printf("\n Ponto na origem");
else // só pode ser eixo y
printf("\n Ponto no eixo dos y"); 
else // x certamente é diferente de zero: não testa mais!else // x certamente é diferente de zero: não testa mais!
if ( y == 0 ) // localizou eixo y
printf("\n Ponto no eixo dos x");
else // só sobraram os quadrantes!!!q
if ( x > 0 ) // quadrantes 1 ou 4, dependendo de y
if ( y > 0 ) // quadrante 1
printf("\n Ponto no quadrante 1"); 
l // d 4 i ielse // quadrante 4, sem precisar mais testes
printf("\n Ponto no quadrante 4");
else // x é < 0: sobraram quadrantes 2 e 3, 
// dependendo de y// dependendo de y
if ( y > 0 )
printf("\n Ponto no quadrante 2");
else // sobrou x < 0 e y < 0: não precisa testarelse // sobrou x < 0 e y < 0: não precisa testar
printf("\n Ponto no quadrante 3");
} 
10
ExercícioExercícioExercícioExercício
• Tendo como dados de entrada o sexo 
(M ou F) e a altura de uma pessoa (em (M ou F) e a altura de uma pessoa (em 
metros), informe o peso ideal (em kg) , 
sabendo que para homens o pesosabendo que para homens o peso 
ideal é obtido por altura x 72,7 - 58 e, 
lh lt 62 1 44 7para mulheres, por altura x 62,1 - 44,7.
11
Tendo como dados de entrada o sexo (M ou F) e a altura de uma 
pessoa (em metros), informe o peso ideal (em kg) , sabendo que 
para homens o peso ideal é obtido por altura x 72 7 - 58 e parapara homens o peso ideal é obtido por altura x 72,7 58 e, para 
mulheres, por altura x 62,1 - 44,7.
Al it P Id lAlgoritmo PesoIdeal
{Ler sexo e altura e calcular peso ideal}
Entrada: sexo - M ou F - e altura (m);
Saída: peso ideal (kg)
1 - início
2 - ler sexo
3 - ler altura
4 - se sexo = ‘m’ // pode aceitar maiúscula
4.1 pesoideal := altura * 72.7 - 584.1 pesoideal : altura 72.7 58
4.2 senão 
4.2.1 pesoideal := altura * 62.1 - 44.7 // pode consistir sexo errado
5 - imprimir pesoideal5 - imprimir pesoideal
6 - fim
12
//Ler sexo e altura e calcular peso ideal:
#include <stdio.h>#include stdio.h
#include <stdlib.h>
int main()
{ { 
float altura,pesoideal;
char sexo;
printf("digite o sexo (M/F):\n");
Se digita outro
caractere???printf( digite o sexo (M/F):\n );
scanf("%c", &sexo); 
printf("digite a altura:\n");
scanf("%f" &altura);
Imprime 
resultado...
scanf( %f ,&altura);
if (sexo=='M' || sexo=='m')
pesoideal = altura*72 7 58;pesoideal = altura*72.7 - 58;
else if (sexo=='f' || sexo=='F')
pesoideal = altura*62.1 - 44.7;
else printf("sexo informado inválido\n");else printf( sexo informado inválido\n );
printf("seu peso ideal é %.2f kg\n",pesoideal); 
return 0; 
}}
13
//Ler sexo e altura e calcular peso ideal:
#include <stdio.h># nclude std o.h
#include <stdlib.h>
int main()
{ { 
float altura,pesoideal;
char sexo;
printf("digite o sexo (M/F):\n");
else
{printf( digite o sexo (M/F):\n );
scanf("%c", &sexo); 
printf("digite a altura:\n");
scanf("%f" &altura);
{
printf("sexo informado inválido\n");
pesoideal = 0;
}scanf( %f ,&altura);
if (sexo=='M' || sexo=='m')
pesoideal = altura*72 7 58;
}
if (pesoideal > 0)
printf("seu peso ideal é %.2f kg\n",pesoideal); 
pesoideal = altura*72.7 - 58;
else if (sexo=='f' || sexo=='F')
pesoideal = altura*62.1 - 44.7;
else printf("sexo informado inválido\n");else printf( sexo informado inválido\n );
printf("seu peso ideal é %.2f kg\n",pesoideal); 
return 0; 
}}
14
//Ler sexo e altura e calcular peso ideal:
#include <stdio.h>
#include <stdlib.h>
//Ler sexo e altura e calcular peso ideal:
#include <stdio.h>
#include <stdlib.h>
#i l d h // f l
int main()
{ 
fl t lt s id l
#include <ctype.h> // para usar funções toupper – maiúsculas – e tolower
int main()
{ float altura,pesoideal;
char sexo;
printf("digite o sexo (M/F):\n");
scanf("%c", &sexo); 
{ 
float altura,pesoideal;
char sexo;
printf("digite o sexo (M/F):\n");
scanf("%c" &sexo); ( , )printf("digite a altura:\n");scanf("%f",&altura);
if ((sexo=='M') || (sexo=='m'))
transformar minúscula em 
maiúscula ou vice versa
scanf( %c , &sexo); 
printf("digite a altura:\n");
scanf("%f",&altura);
if ( l ( ) ' ') // ( ( ) 'M‘)if ((sexo== M ) || (sexo== m ))pesoideal = altura*72.7 - 58;
else if ((sexo=='f') || (sexo=='F'))
pesoideal = altura*62.1 - 44.7;
ls
maiúscula ou vice-versaif ( tolower(sexo)=='m') // ou (toupper(sexo)=='M‘)
pesoideal = altura*72.7 - 58;
else if (tolower(sexo) =='f')
pesoideal = altura*62.1 - 44.7;else
{
printf("sexo informado inválido\n");
pesoideal = 0;
pesoideal altura 62.1 44.7;
else
{
printf("sexo informado inválido\n");
pesoideal = 0;p}
if (pesoideal > 0)
printf("seu peso ideal é %.2f kg\n",pesoideal); 
system("pause"); 
pesoideal = 0;
}
if (pesoideal > 0)
printf("seu peso ideal é %.2f kg\n",pesoideal); 
t 0 system( pause ); return 0; 
}
return 0; 
}
15
Exercícios propostosExercícios propostosExercícios propostosExercícios propostos
 l • Fazer o algoritmo e programa C para 
calcular e informar as raízes de uma 
equação do 2º grau. Os valores das 
variáveis a b e c devem ser variáveis a, b e c devem ser 
fornecidos via teclado.
16
Raízes de equação do 20 grau
início
Ler A, B, C
F
A = 0 Disc ←B2 – 4.A.C 
B √ DFV Disc < 0 -B+√ D2.A R1 ←
FV
V
-B-√ D
2 A 
R2 ←
Escrever
‘não é eq. 2o grau’
E
V
Escrever 
2.A Escrever
‘Raízes imaginárias’
Escrever 
R1, R2
fim17
Algoritmo Equação do Segundo Grau
{ informa as raízes de uma equação do segundo grau }{ q ç g g }
entradas: os 3 coeficientes da equação
saídas: as 2 raízes ou mensagens 
1. Ler os 3 coeficientes
2. se o primeiro coeficiente for nulo
escrever que não é eq. do segundo grau
senão 2.1 calcular o discriminante
2 2 se o discriminante for menor que zero2.2 se o discriminante for menor que zero
escrever que as raízes são imaginárias
senão 2.2.1 calcular as 2 raízessenão 2.2.1 calcular as 2 raízes
2.2.2 escrever as raízes calculadas
3. Terminar
18
// informa as raizes de uma equacao do segundo grau 
#include<stdio.h>
#include<math.h>
int main ( )
{
float a, b, c; // coeficientes da equacao
float disc; // discriminantefloat disc; // discriminante 
float r1, r2; // raizes
scanf(“%f”, &a);
scanf(“%f”, &b);
scanf(“%f”, &c);scanf( %f , &c);
if (a == 0)
{
printf(“\nNao eh equacao do segundo grau!”);
printf(“\nRaiz = %7 2f “ - c / b );printf( \nRaiz = %7.2f , - c / b );
}
else
{ 
disc = b * b – 4 * a * c;disc = b b – 4 a c;
if (disc < 0)
printf (“\nRaizes imaginarias !”);
else
{{ 
r1 = ( - b + sqrt ( disc ) ) / ( 2 * a );
r2 = ( - b - sqrt ( disc ) ) / ( 2 * a );
printf(“\nRaizes: %8.2f , %8.2f\n”, r1, r2);
}}
}
return 0;
}19
ExercícioExercícioExercícioExercício
Tendo como dados de entrada 3 valores 
inteiros e positivos, verificar se estes valores 
podem ser os lados de 1 triângulo. Em caso 
positivo, identificar o triângulo formado 
(eqüilátero, isósceles ou escaleno).
Saída: é a informação referente ao triângulo!
Objetivos: verificar se 3 valores inteiros 
d f 1 t iâ l itipodem formar 1 triângulo e, em caso positivo, se 
o triângulo formado é eqüilátero, isósceles ou 
escalenoescaleno.
20
ExercícioExercício
P t : Presupostos: 
• Nenhum lado de 1 triângulo pode ser maior ou 
igual a soma dos outros dois ladosigual a soma dos outros dois lados
• Escaleno: 3 lados diferentes 
• Isósceles: apenas 2 lados iguaisp g
• Equilátero: 3 lados iguais
E t té iEstratégia:
• Identificar seqüência eficaz.
21
ExercíciosExercícios:
Algoritmo EhTrianguloAlgoritmo EhTriangulo
{Ler valores e.....}
Entrada: a,b,c {3 valores inteiros, maiores que 0}
Saída: mensagem
1- Início
2- Ler a,b,c2 Ler a,b,c
3- Se (a > 0) e (b > 0) e (c > 0) {valores válidos}
3.1 se (a >= b + c) ou (b >= a + c) ou (c >= a + b) {não é triângulo}
3 1 1 escreve ‘ Não forma triângulo’3.1.1 escreve ‘ Não forma triângulo’
3.1.2 senão {é triângulo}
3.1.2.1 se (a=b) e (b=c) {identifica equilátero}
3.1.2.1.1 escreve ‘Triângulo Equilátero’ 
3.1.2.1.2 senão 
3.1.2.1.2.1 se (a=b) ou (b=c) ou (a=c)( ) ( ) ( )
3.1.2.1.2.1.1 escreve ‘Triângulo Isósceles’
3.1.2.1.2.1.2 senão escreve ‘Triângulo Escaleno’
3 2 senão escreve ‘Numeros fornecidos não são inteiros positivos’3.2 senão escreve Numeros fornecidos não são inteiros positivos
4 - Fim
22
/* verificar se 3 valores fornecidos são inteiros positivos e se podem 
formar 1 triângulo, identificando o tipo de triângulo formado */
#include<stdio h>#include stdio.h
#include<stdlib.h>
#include<math.h>
int main()()
{
int a,b,c;
// obtem valores:
printf("digite A:");
if (a>0 && b>0 && c>0) //valores informados válidos
{ // verifica se é triângulo:
if ( (a >= b + c) && (b >= c + a) && (c >= b + a))printf( digite A: );
scanf("%d",&a);
printf("digite B:");
scanf("%d",&b);
printf("di ite C:");
if ( (a >= b + c) && (b >= c + a) && (c >= b + a))
printf(" Valores informados não formam triângulo!");
else // se chega aqui, é triângulo!
if ( a==b && b==c) // identifica equilátero
â áprintf("digite C:");
scanf("%d",&c);
printf(" Valores informados formam um triângulo equilátero.");
else
if (a == b || b == c || c == a) // identifica isósceles
printf(" Valores informados formam um triângulo isósceles ");printf( Valores informados formam um triângulo isósceles. );
else // sobrou triângulo escaleno
printf(" Valores informados formam um triângulo escaleno.");
}
else // valores informados inválidoselse // valores informados inválidos
printf("\nForneca 3 valores inteiros e positivos!");
printf("\n");
system("pause"); 
 
y p
return 0; 
}
23
Ex:Ex: Fazer o trecho de um programa C que, dependendo
do conteúdo de “codigo”, atribua o conteúdo especificado
na tabela abaixo à variável “resultado”. 
Codigo ResultadoCodigo Resultado
1 Resultado + 5
2 Inalterado2 Inalterado
3 Resultado – 2
4 Inalterado
5 Resultado – 2
6 2* (Resultado +1)
7 Inalterado7 Inalterado
8 0
9 09 0
10 0
11 123
24
...
{ uso de seleção dupla}
if (Codigo == 1)
Ex:Ex: calcular expressões de acordo com 
a tabela abaixo
R lt dCódi
( g )
Resultado = Resultado + 5;
else 
if (Codigo == 3 || Codigo == 5)
Resultado + 51
Inalterado4
Resultado –23
Inalterado2
ResultadoCódigo
if (Codigo 3 || Codigo 5)
Resultado = Resultado – 2;
else 
if (Codigo == 6) 08
Inalterado7
2* (Resultado +1)6
Resultado –25
Inalterado4
if (Codigo == 6) 
Resultado = 2 * (Resultado + 1);
else 
if (C di > 7 & C di < 11)
12311
010
09
08
if (Codigo > 7 & Codigo < 11)
Resultado = 0;
else
código 
inválido?
if (Codigo == 11)
Resultado = 123;
...
Resultado = 123; 
else
Resultado = 123; 
elseelse 
If (Codigo == 4 || Codigo == 2 || Codigo == 7)
Resultado = Resultado;
else printf(“código inválido!”);
else 
If (Codigo != 4 & Codigo != 2 & Codigo != 7)
Resultado = Resultado;
else printf(“código inválido!”);p ( g );p ( g );
25
Exercícios
Ex: Ex: Faça o algoritmo e o programa C Ex: Ex: Faça o algoritmo e o programa C 
correspondente que recebe três valores reais, 
diferentes entre si e imprime os três valores diferentes entre si, e imprime os três valores 
em ordem crescente.
Estratégia:Estratégia:
d f d lIdentificar o maior e o menor deles.
26
//lê 3 nros reais e imprime em ordem crescente
fl t bfloat a,b,c;
{
printf("digite A,B,C:");
f("%f%f%f" & &b & )scanf("%f%f%f",&a, &b,&c);
If (a > b) && (a > c) {a é o maior valor}
if (b > c)if (b > c)
printf(“% 4.2 f”, c, “%4.2 f “, b, “%4.2f”, a) {e b maior que c}
else printf(“% 4.2f ”, b, “% 4.2 f “, c, “%4.2f”, a) {e c maior que b}
else
If (b > ) && (b > ) {b é i l }If (b > a) && (b > c) {b é o maior valor}
{
if a > c
printf (“% 4.2 f”, c,“% 4.2 f”, a, “% 4.2 f”, b); {e a maior que c}printf ( % 4.2 f , c, % 4.2 f , a, % 4.2 f , b); {e a maior que c}
else printf (“% 4.2 f”, a, “% 4.2 f”, c, “%4.2f”, b); {e c maior que 
a}
}
else {c é o maior valor}else {c é o maior valor}
if a > b
printf(“% 4.2 f”, b, “% 4.2f “, a, “%4.2f”, c);{e a maior que c}
else printf(“% 4.2 f ”, a, “% 4.2 f “, b, “%4.2f”, c) ; {e c maior que p f( , , , , , ) ; { q
a}
}
27

Outros materiais