o comando if - unicamp
Post on 28-Nov-2021
2 Views
Preview:
TRANSCRIPT
if - else
O comando if
O comando condicional permite incluir no programa trechos de codigo quedependem de uma ou mais condicoes para sua execucao.
O comando condicional tem duas formas basicas:
if(condicao) comando
if(condicao) comando1 else comando2
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 1 / 26
if - else
O comando if
if(condicao) comando
if(condicao) comando1 else comando2
A condicao e uma expressao qualquer cujo valor e calculado ao se executaro comando condicional.
um valor diferente de zero para a condicao indica verdadeiro
um valor igual a zero indica falso.
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 2 / 26
if - else
Exemplos de uso do if
if(a > 10) b=0;
if(c − 10) d = 3;
if(e ∗ 32 >= 789)a = b + 32 − k;
if(n%2) printf(”O numero %d e’ impar! \n”,n);
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 3 / 26
if - else
Exemplos de uso do if - else
if(a == 10) b = 0;else b = 25;
if(c − 10) d = 3;else c = 34/d ;
if(e ∗ 32 <= 789) a = b + 32 − k;else a = 0;
if(n%2)printf(”O numero %d e’ impar! \n”,n);
elseprintf(”O numero %d e’ par! \n”,n);
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 4 / 26
Operadores Relacionais
Operadores Relacionais
< ........ ”menor que”<= ..... ”menor ou igual a”== ..... ”igual a”! = ...... ”diferente de”>= ..... ”maior ou igual a”> ....... “maior que”
Todos os operadores relacionais tem a mesma precedencia, que e menorque a precedencia dos operadores aritmeticos.
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 5 / 26
Operadores Relacionais
Mais exemplos
if(a! = b)a = a − b;
elseb = b − 3;
——————————————————–if(a! = b)
a− = b;else
b− = 3;——————————————————if(1 <= a <= 3)
printf(“\n o valor de a e um numero primo”);else
b− = 3;
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 6 / 26
Operadores Relacionais Bloco de comandos
if-else e blocos de comandos
As vezes e necessario executar mais de uma operacao quando umacondicao e satisfeita.
Nesse caso, o bloco dos comandos que devem ser executados deve serlimitado por ”{”e ”}”.
Exemplo:
if(a < b){
t = a;a = b;b = t;
}else i + +;
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 7 / 26
Operadores Relacionais Erro comum
Cuidado com o sinal de igual ”==”
int saldo = 2000;
if(saldo==0)printf(”Voce esta quebrado!\n”);
elseprintf(”Seu saldo e’: %d”,saldo);
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 8 / 26
Operadores Relacionais Erro comum
Cuidado com o sinal de igual ”==”
int saldo = 2000;
if(saldo=0)printf(”Voce esta quebrado!\n”);
elseprintf(”Seu saldo e’: %d”,saldo);
O compilador nao considera isso um erro! Cuidado!
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 9 / 26
if’s aninhados
Aninhando Sentencas
O exemplo a seguir responde se um dado numero e positivo ou negativo ese e par ou ımpar.
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 10 / 26
if’s aninhados
Aninhando Sentencas
int main(void){ int num;
// Obtem um numero do usuarioprintf(”\n Entre com um numero inteiro: ”);scanf(”%d”,&num);// Imprime mensagem dizendo se o numero e’ positivo ou negativo e par ou imparif(num >= 0) {
if(num%2==0)print(”O numero e’ par e positivo.\n”);
elseprint(”‘O numero e’ impar e positivo.\n”’);
}else {
if(num%2==0)print(”O numero e’ par e negativo.\n”);
elseprint(”O numero e’ impar e negativo.\n”);
}return 0;
}Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 11 / 26
if’s aninhados
Regra da Associacao
Regra da associacao: um if esta associado com a ultima ocorrencia do ifsem else.
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 12 / 26
if’s aninhados
Exemplo incorreto
int main(void){ int car;
// Obtem o numero de carros num estacionamentoprintf(”\n Entre com um numero de carros: ”);scanf(”%d”,&car);/* Imprime uma mensagem dizendo se ha mais de 10 carros ou se naoha carros no estacionamento */if(car != 0)
if(car > 10)print(”Ha mais de 10 carros no estacionamento.\n”);
elseprint(”Nao ha carros no estacionamento.\n”);
return 0;}
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 13 / 26
if’s aninhados
O que esta acontecendo?
int main(void){ int car;
// Obtem o numero de carros num estacionamentoprintf(”\n Entre com um numero de carros: ”);scanf(”%d”,&car);/* Imprime uma mensagem dizendo se ha mais de 10 carros ou se naoha carros no estacionamento */if(car != 0)
if(car > 10)print(”Ha mais de 10 carros no estacionamento.\n”);
elseprint(”Nao ha carros no estacionamento.\n”);
return 0;}
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 14 / 26
if’s aninhados
Corrigindo o problema: use ”{”e ”}”.
int main(void){ int car;
printf(”\n Entre com um numero de carros: ”);scanf(”%d”,&car);/* Imprime uma mensagem dizendo se ha mais de 10 carros ou se naoha carros no estacionamento */if(car != 0){
if(car > 10)print(”Ha mais de 10 carros no estacionamento.\n”);
}else
print(”Nao ha carros no estacionamento.\n”);return 0;
}Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 15 / 26
Operadores Logicos
if-else aninhados ou operadores logicos
Todos os programas ate agora consideraram o comando if com condicoessimples:
b!=0
contador < 5
Quando mais de uma condicao precisa ser testada, precisamos usarsentencas if-else aninhadas.
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 16 / 26
Operadores Logicos
if-else aninhados ou operadores logicos
if(num>=0)if(num%2==0)
printf(”Numero par positivo. \n”);
Nos podemos usar operadores logicos!!! Veja:
if((num>=0)&&(num%2==0))printf(”Numero par positivo. \n”);
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 17 / 26
Operadores Logicos
Operadores Logicos
&& E (todas as condicoes precisam ser verdadeiras)
|| OU (basta que uma das condicoes seja verdadeira)
! NAO/NEGACAO
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 18 / 26
Operadores Logicos
Operadores Logicos: operacao de negacao
Cada expressao resulta num valor logico:
0 falso
1 verdadeiro
A operacao de negacao pode ser usada da seguinte forma:
!expressao
E executa o seguinte papel:
!0 e 1
!1 e 0
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 19 / 26
Operadores Logicos
Operadores Logicos: operacao de negacao
Exemplo:
if(num>0 && !(num%2))printf(”Numero par e positivo. \n”);
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 20 / 26
Operadores Logicos
Operadores Logicos: operacao de negacao
Outro exemplo:
suponha que quero fazer um calculo que so e valido para numeros parespositivos.
Eu posso avisar ao usuario se ele nao digitar um numero que satisfaca ascondicoes:
printf(”digite um numero par positivo: ”);scanf(”%d”,&num);if(!(num>0 && num%2==0))
printf(”O numero digitado nao satisfaz as condicoes. \n”);
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 21 / 26
Operadores Logicos
Operadores Logicos: precedencias
O operador de negacao tem precedencia mais alta que os outrosoperadores logicos.
Os operadores logicos && e || tem precedencia menor que osoperadores relacionais.
Os operadores logicos && e || tem precedencia maior que a operacaode atribuicao.
O operador && tem precedencia maior que o operador ||.
precedencia menor = e executado depois!
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 22 / 26
Operadores Logicos
Operadores Logicos: precedencias
Como a precedencia dos operadores logicos e menor que a dos operadoresrelacionais, nao e necessario usar parenteses em expressoes como:
x>=3 && x<=50
x==1 || x==2 || x==3
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 23 / 26
Operadores Logicos
Exemplo
O programa a seguir verifica se os valores de lado1, lado2 e lado3 podemser lados de um triangulo reto.
Usaremos o fato de que os lados tem que ser valores positivos e que oquadrado de um dos lados e igual a soma dos quadrados dos outros doislados.
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 24 / 26
Operadores Logicos
Exemplo
int maind(void){ int lado1, lado2, lado3, q1, q2, q3;
printf(”Entre com o tamanho dos lados do triangulo: ”);scanf(”%d %d %d”,&lado1, &lado2, &lado3);q1=lado1*lado1;q2=lado2*lado2;q3=lado3*lado3;if(lado1>0 && lado2>0 && lado3>0){
if(s1==s2+s3 —— s2==s1+s3 —— s3==s1+s2)printf(”\n Trinagulo reto! \n”);
elseprintf(”\n Nao e’ um triangulo reto!\n”);
}else
printf(”‘\n Nao pode ser um triangulo: tem lados negativos!\n”);return 0;
}
Sheila de Almeida (sheila@ic.unicamp.br) (IC-UNICAMP)Comando Condicional agosto - 2007 25 / 26
top related