Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

23
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais

Transcript of Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

Page 1: 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

Page 2: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos 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;

Page 3: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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.

Page 4: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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

Page 5: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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.

Page 6: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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;

}

Page 7: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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

Page 8: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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

Page 9: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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;

Page 10: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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”);

Page 11: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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

Page 12: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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”);

Page 13: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

Comando condicional

• Equivalências:

if (exp1){comando1;

}else if (exp2){

comando1;}

if (exp1 || exp2){comando1;

}

Page 14: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

Comando condicional

• Equivalências:

if (exp1 && exp2){comando1;

}

if (exp1){ if (exp2){ comando1; }}

Page 15: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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.

Page 16: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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");

Page 17: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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");

Page 18: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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

Page 19: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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;}

Page 20: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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 =

½

Page 21: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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;}

Page 22: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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

Page 23: Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 3 Comandos Condicionais.

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