Вы находитесь на странице: 1из 40

MC-102 Aula 04 Express oes Relacionais, L ogicas e Comandos Condicionais

Instituto de Computa c ao Unicamp

9 de Agosto de 2012

Roteiro

Express oes relacionais Express oes l ogicas Comandos condicionais Exerc cios Informa c oes Extras: O comando switch

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

2 / 40

Express ao

J a vimos que constantes e vari aveis s ao express oes.

Exemplo
a = 10; a = b; Vimos tamb em que opera c oes aritm eticas tamb em s ao express oes.

Exemplo
a = 2 + 2; a = 10 / 3; a = a + 1;

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

3 / 40

Express oes relacionais

Express oes relacionais s ao aquelas que realizam uma compara c ao entre duas express oes e retornam
1 2

Zero (0), se o resultado e falso Um (1), ou qualquer outro n umero diferente de zero, se o resultado e verdadeiro.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

4 / 40

Operadores Relacionais

Os operadores relacionais da linguagem C s ao: == : igualdade. ! = : diferente. > : maior que. < : menor que. >= : maior ou igual que. <= : menor ou igual que.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

5 / 40

Express oes relacionais

< expressao > == < expressao >: Retorna verdadeiro quando as express oes forem iguais. Ex: a == b < expressao > != < expressao >: Retorna verdadeiro quando as express oes forem diferentes. Ex: a != b

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

6 / 40

Express oes relacionais

< expressao > > < expressao >: Retorna verdadeiro quando a express ao da esquerda tiver valor maior que a express ao da direita. Ex: a > b < expressao > < < expressao >: Retorna verdadeiro quando a express ao da esquerda tiver valor menor que a express ao da direita. Ex: a < b

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

7 / 40

Express oes relacionais

< expressao > >= < expressao >: Retorna verdadeiro quando a express ao da esquerda tiver valor maior ou igual que a express ao da direita. Ex: a >= b < expressao > <= < expressao >: Retorna verdadeiro quando a express ao da esquerda tiver valor menor ou igual que a express ao da direita. Ex: a <= b

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

8 / 40

O que ser a impresso pelo programa?


#include <stdio.h> int main(){ int a, b; printf("%d\n", printf("%d\n", 9 > 3); (3*4)/2 != (2*3) );

a = 1; b = -1; printf("%d\n", a!=b); }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

9 / 40

Express oes l ogicas

Express oes l ogicas s ao aquelas que realizam uma opera c ao l ogica (ou, e, n ao, etc...) e retornam verdadeiro ou falso (como as express oes relacionais).

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

10 / 40

Operadores L ogicos

Na linguagem C temos os seguintes operadores l ogicos: &&: operador E. ||: operador OU. !: operador NAO.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

11 / 40

Express oes l ogicas


< expressao > && < expressao >: Retorna verdadeiro quando ambas as express oes s ao verdadeiras. Sua tabela verdade e: Op1 V V F F Op2 V F V F Ret V F F F

Qual o resultado da express ao l ogica abaixo?


a = 0; b = 0; (a == 0 && b == 0)

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

12 / 40

Express oes l ogicas


< expressao > || < expressao >: Retorna verdadeiro quando pelo menos uma das express oes e verdadeira. Sua tabela verdade e: Op1 V V F F Op2 V F V F Ret V V V F

Qual o resultado da express ao l ogica abaixo?


a = 0; b = 1; (a == 0 || b == 0)

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

13 / 40

Express oes l ogicas

! < expressao >: Retorna verdadeiro quando a express ao e falsa e vice-versa. Sua tabela verdade e: Op1 V F Ret F V

Qual o resultado da express ao l ogica abaixo?


a = 0; b = 1; !(a != b)

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

14 / 40

Simplica co es u teis

!(a == b) e equivalente a: (a != b) !(a != b) e equivalente a: (a == b) !(a > b) e equivalente a: (a <= b) !(a < b) e equivalente a: (a >= b) !(a >= b) e equivalente a: (a < b) !(a <= b) e equivalente a: (a > b)

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

15 / 40

Comandos condicionais
Um comando condicional e aquele que permite decidir se um determinado bloco de comandos deve ou n ao ser executado, a partir do resultado de uma express ao relacional ou l ogica.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

16 / 40

Bloco de comandos

um conjunto de instru E c oes agrupadas. Limitada pelos caracteres { e }.

Exemplo
main(void) { In cio do bloco de comandos int a; a=1; } Fim do bloco de comandos

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

17 / 40

Comandos condicionais

O principal comando condicional da linguagem C e o if, cuja sintaxe e: if (express~ ao relacional ou l ogica) comando; ou if (express~ ao relacional ou l ogica) { comandos } Os comandos s ao executados somente se a express ao relacional/l ogica for verdadeira.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

18 / 40

Comandos condicionais
O programa abaixo determina se um valor e mpar. #include <stdio.h> int main () { int a; scanf("%d", &a); if ((a % 2) != 0) { printf ("O valor e mpar.\n"); }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

19 / 40

Comandos condicionais
Lembrando como C representa os valores Falso e Verdadeiro, o programa pode ser alterado para: #include <stdio.h> int main () { int a; scanf("%d", &a); if (a % 2) { printf ("O valor e mpar.\n"); }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

20 / 40

Comandos condicionais

Uma varia c ao do comando if e o if/else, cuja sintaxe e: if (express~ ao relacional ou l ogica) { comandos executados se a express ao e verdadeira } else { comandos executados se a express ao e falsa }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

21 / 40

Comandos condicionais
Exemplo: Determinando o menor de dois n umeros: int main(void){ int a,b; scanf("%d", &a); scanf("%d", &b); if(a < b){ printf("O menor numero e: %d\n", a); }else{ printf("O menor numero e:%d\n",b); } }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

22 / 40

Comandos condicionais

Note que o if e um comando, e como tal pode aparecer dentro do bloco de comandos de outro if. Exemplo: Usando apenas operadores relacionais, vamos escrever um programa que l e um n umero e verica se este e: Par e menor que 100. Par e maior ou igual a 100. Impar e menor que 100. Impar e maior ou igual a 100.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

23 / 40

Comandos condicionais
#include <stdio.h> int main(){ int a; printf("Digite um n umero inteiro:"); scanf("%d", &a); if( a % 2 == 0){ if( a < 100) printf("O n umero e par e menor que 100\n"); else printf("O n umero e par e maior ou igual a 100\n"); }else{ if ( a < 100) printf("O n umero e mpar e menor que 100\n"); else printf("O n umero e mpar e maior que 100\n"); } }

Se voc e pudesse usar operadores l ogicos, como voc e poderia refazer este programa?
(Instituto de Computa c ao Unicamp) MC-102 Aula 04 9 de Agosto de 2012 24 / 40

Comandos condicionais
#include <stdio.h> int main(){ int a; printf("Digite um n umero inteiro:"); scanf("%d", &a); if( ( a % 2 == 0) && (a<100) ) printf("O n umero e par e menor que 100\n"); if( ( a % 2 == 0) && (a>=100) ) printf("O n umero e par e maior ou igual a 100\n"); if( ( a % 2 != 0) && (a<100) ) printf("O n umero e mpar e menor que 100\n"); if( ( a % 2 != 0) && (a>=100) ) printf("O n umero e mpar e maior que 100\n"); }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

25 / 40

Comandos condicionais

if (cond1) if (cond2) comando1; else comando2; Quando o comando2 e executado?

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

26 / 40

Comandos condicionais

if (cond1) if (cond2) comando1; else comando2; Quando o comando2 e executado?

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

27 / 40

Comandos condicionais

if (cond1) { if (cond2) comando1; } else comando2; Quando o comando2 e executado? Use chaves e indenta c ao para deixar claro a qual bloco de comando(s) pertence cada comando!

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

28 / 40

if-else-if Encaixados
Uma coisa muito comum em programa c ao e o teste de v arias alternativas. Podemos usar uma constru c ao simples com ifs: int main () { int ra; scanf("%d", &ra); if (ra == 10129) printf("Maria C^ andida Moreira Telles\n"); if (ra == 33860) printf("Larissa Garcia Alfonsi\n"); if (ra == 33967) printf("Leonardo Kozlowiski Kenupp\n"); if(.... .... }
(Instituto de Computa c ao Unicamp) MC-102 Aula 04 9 de Agosto de 2012 29 / 40

if-else-if Encaixados
Por em todos os testes condicionais ser ao executados!! Quando apenas uma de v arias alternativas e verdadeira podemos usar a constru c ao if-else-if: int main () { int a; scanf("%d", &a); if (a == 10129) printf("Maria C^ andida Moreira Telles\n"); else if (a == 33860) printf("Larissa Garcia Alfonsi\n"); else if (a == 33967) printf("Leonardo Kozlowiski Kenupp\n"); else if (.... .... else printf("Nenhum aluno com RA informado!"); }
(Instituto de Computa c ao Unicamp) MC-102 Aula 04 9 de Agosto de 2012 30 / 40

if-else-if Encaixados

Na constru c ao if-else-if quando uma condi c ao e verdadeira, o bloco de comandos correspondente ser a executado. Ap os a execu c ao do bloco de comandos as outras alternativas n ao ser ao testadas. Ou ltimo else (sem if) pode ser utilizado como uma op c ao padr ao quando nenhuma das condi c oes dos ifs e verdadeira.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

31 / 40

Exerc cios
A solu c ao abaixo est a correta para classicar um n umero como par e menor que 100, ou par e maior ou igual a 100, etc, como no exemplo visto anteriormente?
#include <stdio.h> int main(){ int a; printf("Digite um n umero inteiro:"); scanf("%d", &a); if( ( a % 2 == 0) && (a<100) ) printf("O n umero e par e menor que 100\n"); else if( a>=100 ) printf("O n umero e par e maior ou igual a 100\n"); if( ( a % 2 != 0) && (a<100) ) printf("O n umero e mpar e menor que 100\n"); else if (a>=100) printf("O n umero e mpar e maior que 100\n"); }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

32 / 40

Exerc cios

Escreva um programa que l e um n umero inteiro do teclado e imprime SIMse o n umero for par e maior do que 10, ou for mpar e menor do que 50. Caso contr ario o programa deve imprimir NAO.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

33 / 40

Exerc cios

Escreva um programa l e tr es n umeros e imprime o maior deles.

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

34 / 40

Exerc cios

Escreva um programa l e tr es n umeros e os imprime em ordem (ordem crescente).

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

35 / 40

Informa co es Extras: O comando switch


O objetivo do comando switch e simplicar uma constru c ao if-else-if encaixados quando as condi c oes ocorrem sobre uma vari avel inteira ou caracter:

Sintaxe
switch (vari avel inteira) { case valor: comandos break; case valor: comandos break; }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

36 / 40

Informa co es Extras: O comando switch


printf("Digite o RA: "); scanf("%d", &a); switch(a) { case 10129: printf("Maria C^ andida Moreira Telles\n"); break; case 33860: printf("Larissa Garcia Alfonsi\n"); break; case 33967: printf("Leonardo Kozlowiski Kenupp\n"); break; }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

37 / 40

Informa co es Extras: O comando switch

Os comandos come cam a ser executados a partir do ponto onde o valor da vari avel corresponde ao valor antes dos dois pontos (:). Executa todos os comandos at e que encontre um comando break ou que chegue ao nal do bloco de comandos do switch

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

38 / 40

Informa co es Extras. Valor padr ao

Voc e pode utilizar uma condi c ao default. A execu c ao dentro da alternativa default ocorre se nenhuma outra condi c ao foi verdadeira (assim como o u ltimo else do if-else-if encaixados).

Sintaxe
switch (vari avel inteira) { valor: comandos break; default: comandos }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

39 / 40

Informa co es Extras. Valor padr ao

printf("Digite o RA: "); scanf("%d", &a); switch(a) { case 10129: printf("Maria C^ andida Moreira Telles\n"); break; case 33860: printf("Larissa Garcia Alfonsi\n"); break; default: printf("O aluno n~ ao est a matriculado\n"); }

(Instituto de Computa c ao Unicamp)

MC-102 Aula 04

9 de Agosto de 2012

40 / 40

Вам также может понравиться