Академический Документы
Профессиональный Документы
Культура Документы
9 de Agosto de 2012
Roteiro
Express oes relacionais Express oes l ogicas Comandos condicionais Exerc cios Informa c oes Extras: O comando switch
MC-102 Aula 04
9 de Agosto de 2012
2 / 40
Express ao
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;
MC-102 Aula 04
9 de Agosto de 2012
3 / 40
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.
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.
MC-102 Aula 04
9 de Agosto de 2012
5 / 40
< 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
MC-102 Aula 04
9 de Agosto de 2012
6 / 40
< 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
MC-102 Aula 04
9 de Agosto de 2012
7 / 40
< 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
MC-102 Aula 04
9 de Agosto de 2012
8 / 40
MC-102 Aula 04
9 de Agosto de 2012
9 / 40
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).
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.
MC-102 Aula 04
9 de Agosto de 2012
11 / 40
MC-102 Aula 04
9 de Agosto de 2012
12 / 40
MC-102 Aula 04
9 de Agosto de 2012
13 / 40
! < expressao >: Retorna verdadeiro quando a express ao e falsa e vice-versa. Sua tabela verdade e: Op1 V F Ret F V
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)
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.
MC-102 Aula 04
9 de Agosto de 2012
16 / 40
Bloco de comandos
Exemplo
main(void) { In cio do bloco de comandos int a; a=1; } Fim do bloco de comandos
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.
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"); }
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"); }
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 }
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); } }
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.
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"); }
MC-102 Aula 04
9 de Agosto de 2012
25 / 40
Comandos condicionais
MC-102 Aula 04
9 de Agosto de 2012
26 / 40
Comandos condicionais
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!
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.
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"); }
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.
MC-102 Aula 04
9 de Agosto de 2012
33 / 40
Exerc cios
MC-102 Aula 04
9 de Agosto de 2012
34 / 40
Exerc cios
MC-102 Aula 04
9 de Agosto de 2012
35 / 40
Sintaxe
switch (vari avel inteira) { case valor: comandos break; case valor: comandos break; }
MC-102 Aula 04
9 de Agosto de 2012
36 / 40
MC-102 Aula 04
9 de Agosto de 2012
37 / 40
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
MC-102 Aula 04
9 de Agosto de 2012
38 / 40
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 }
MC-102 Aula 04
9 de Agosto de 2012
39 / 40
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"); }
MC-102 Aula 04
9 de Agosto de 2012
40 / 40