Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.
-
Upload
diogo-varejao-de-sequeira -
Category
Documents
-
view
215 -
download
1
Transcript of Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.
Algoritmos e Programação MC102
Prof. Paulo MirandaIC-UNICAMP
Aula 3Comandos Condicionais
Mais Operadores• C tem vários operadores que permitem comprimir comandos.
variável op= expressão; variável = (variável) op (expressão);
Operador Exemplos
++ i++; equivale a i = i +1;
- - i--; equivale a i = i – 1;
+= i += 2; equivale a i = i + 2;
- = d -= 3; equivale a d = d – 3;
*= x *= y+1; equivale a x = x*(y+1);
/= t /= 2.5; equivale a t = t / 2.5;
%= p %= 5; equivale a p = p%5;
Operadores Relacionais
Operador Função
> maior
>= maior ou igual
< menor
<= menor ou igual
== igualdade
!= diferente
• São usados para fazer comparações. Retornam zero (0) ou um (1) dependendo da expressão ser falsa ou verdadeira respectivamente.
• Possuem menor precedência que a dos operadores aritméticos.
Operadores Relacionais
• Exemplo:int main(){
int teste1,teste2;teste1 = (10 < 30);teste2 = (20==25);printf(“Teste1= %d, teste2= %d\n”,teste1,teste2);return 0;
}
• Saída: Teste1= 1, teste2= 0
Operadores Lógicos• C possui 3 operadores chamados lógicos:
Operador Função
&& lógico E
|| lógico OU
! lógico de negação
Exemplos
exp1 && exp2 É verdadeira se as duas exp1 e exp2 forem verdadeiras.
exp1 || exp2 É verdadeira se uma das duas exp1 ou exp2 for verdadeira ou se as duas forem verdadeiras.
! exp1 É verdadeira se exp1 for falsa.
Operadores Lógicos
• Exemplo:int main(){
int teste;float x,y;scanf(“%f %f”,&x,&y);teste = ((x>y && x<5.0)|| y<2.0) ;printf(“Teste: %d\n”,teste);return 0;
}
Comando condicional• Queremos que o computador execute instruções
diferentes, dependendo de alguma condição lógica.– Ex: Cálculo das raízes de uma equação de segundo
grau, precisa tratar em especial o caso de raízes imaginárias.
– Estrutura condicional simples– Estrutura condicional composta
Estrutura condicional simples• Permite a escolha de um grupo de instruções (bloco de comandos)
quando uma determinada condição lógica é satisfeita.
comando1;if (expressão){
// bloco de comandos.comando2;comando3;:
}comandoN;
comando1;
comando2;
comando3;
comandoN;
expressão1 0
Estrutura condicional composta
comandoX;if (expressão){
// bloco de comandos.
comando1;:
} else{ // bloco de
comandos.comandoA;comandoB;:
}comandoY;
• Permite a escolha de um bloco de comandos, quando uma condição é satisfeita, e de um outro bloco quando a condição não é satisfeita.
comandoX;
comando1;
comando2;
comandoY;
expressão1 0
comandoA;
comandoB;
Comando condicional
• Exemplos:int a,b;scanf(“%d %d”,&a,&b);if(a%2==0)
printf(“Número par!\n”);else
printf(“Número ímpar!\n”);
if(a%b==0)printf(“a é divisível por b!\n”);
Comando condicional
• Exemplo: Maior entre três valores.
int a,b,c;scanf(“%d %d %d”,&a,&b,&c);if(a>b && a>c) printf(“a é o maior\n”);else{ if(b>a && b>c) printf(“b é o maior\n”); else printf(“c é o maior\n”);}
Comandos if-else ANINHADOS
Comando condicional
• Exemplo: Maior entre três valores.
int a,b,c;scanf(“%d %d %d”,&a,&b,&c);if(a>b && a>c) printf(“a é o maior\n”);else if(b>a && b>c) printf(“b é o maior\n”);else printf(“c é o maior\n”);
Comando condicional
• Equivalências:
if (exp1){comando1;
}else if (exp2){
comando1;}
if (exp1 || exp2){comando1;
}
Comando condicional
• Equivalências:
if (exp1 && exp2){comando1;
}
if (exp1){ if (exp2){ comando1; }}
Comando condicional
• Problema: Comparação entre datas– Escreva um programa que determina a data
cronologicamente maior de duas datas fornecidas pelo usuário.
– Cada data deve ser fornecida por três valores inteiros onde o primeiro representa um dia, o segundo um mês e o terceiro um ano.
Comando condicional• Problema: Comparação entre datas
int d1,m1,a1; //Primeira data.int d2,m2,a2; //Segunda data.scanf("%d/%d/%d",&d1,&m1,&a1);scanf("%d/%d/%d",&d2,&m2,&a2);
if(a1>a2 || (a1==a2 && m1>m2) || (a1==a2 && m1==m2 && d1>d2)) printf("Data1 é maior!\n");else if(a1==a2 && m1==m2 && d1==d2) printf("Datas são iguais!\n");else printf("Data2 é maior!\n");
Comando condicional• Problema: Comparação entre datas
int d1,m1,a1; //Primeira data.int d2,m2,a2; //Segunda data.scanf("%d/%d/%d",&d1,&m1,&a1);scanf("%d/%d/%d",&d2,&m2,&a2);
if(a1>a2 || (a1==a2 && (m1>m2 || (m1==m2 && d1>d2)))) printf("Data1 é maior!\n");else if(a1==a2 && m1==m2 && d1==d2) printf("Datas são iguais!\n");else printf("Data2 é maior!\n");
Funções matemáticas• Várias funções matemáticas estão disponíveis em C.
Função Descriçãosqrt raiz quadrada
pow potência
log10 logarítmo na base 10
sin seno
cos cosseno
tan tangente
asin arco-seno
round arredonda o valor
Para utilizar essas funções precisamos incluir suas definições, usando #include <math.h>. Para compilar o programa temos que linkar com a biblioteca matemática acrescentando o parâmetro –lm:Ex: gcc teste.c –o teste –lm
Funções matemáticas• Exemplo:
#include <math.h>#define PI 3.14159265int main(){ double a,b; a = 1.0; b = exp(a); // atribui 2.718282 para b. a = 4.0; a = pow(a, 3.0); // atribui 64.0 para a. b = log10(100); // atribui 2.0 para b. a = sin(PI/4.0); // atribui 0.707107 para a. return 0;}
Funções matemáticas
• Problema: Raízes da equação do segundo graua.x² + b.x + c = 0– Escreva um programa que, dados os coeficientes a, b e c da
equação acima, calcula suas raízes e exiba o resultado na tela. O programa deve tratar raízes reais e imaginárias.
• Δ = b² - 4.a.c (discriminante)
-b ± (Δ)2.ax =
½
Problema: Raízes da equação do segundo grau#include <math.h>
int main(){ float a,b,c,Delta,x1,x2,real,img; scanf("%f %f %f",&a,&b,&c); Delta = b*b - 4*a*c; if(Delta>=0.0){ // raízes reais. x1 = (-b + sqrt(Delta))/(2*a); x2 = (-b - sqrt(Delta))/(2*a); printf("raizes x1= %f, x2= %f\n",x1,x2); } else{ // raízes imaginárias. real = -b/(2*a); img = sqrt(-Delta)/(2*a); printf("raizes x= %f +- %fi\n",real,img); } return 0;}
Comando condicional
• Problema: Diferença entre horas– Leia dois conjuntos de hora, minuto e segundo e calcule a
diferença entre os dois. Por exemplo:
• Entre com o primeiro horário: 02h 10m 01s• Entre com o segundo horário: 01h 20m 03s• A diferença é: 0h 49m 58s
Operadores Lógicos
• Problema: Região e expressões lógicas– Determine qual a expressão lógica que produz verdadeiro para
qualquer ponto x e y na regiao hachurada e falso caso contrário.
5 1000
10