Aula 3
-----------------------------
Instruções "if" e "if...else"
-----------------------------
2 formas (notar os "(", ")"):
if(<exp. cond>) <inst>
if(<exp. cond>) <inst> else <inst>
(em particular)
if(<exp. cond>) <inst> else if(<exp. cond>) <inst> else <inst>
\________________________________/
<inst>
<exp. cond>: expressão com valor lógico como x>2 || !(y>x)
<inst>: instrução
----------------------------------
Exercícios
1) Programa para Ler 3 valores a, b e c
Imprimir o maior deles
2) Reescreva o programa anterior definindo uma função
int maior(a,b)
que retorna o maior dos elementos a,b.
--------------------------------------------
Recordando...
até agora... o que pode ser uma instrução?
--------------------------------------------
- atribuição
- if(...) <inst>
- if(...) <inst> else <inst>
- ; (instrução nula)
- {<inst> <inst> ... <inst>}
(instrução composta: 0 ou mais instruções)
- return <expressão>;
----------------------------------
Exemplo:
if(x>2) {x++; y--;}
if(x>2) {}
if(x>2) {} else y--;
{scanf("%d",&x); {x*=2; printf("%d\n",x);}}
---------------------------------
3) O que está mal? Comente...
a) if(x>2) x=5
b) if x>2 x==5;
---------------------------------
4) a)
Escreva uma função que calcula o número de divisores de x que
são >=d. Note que os divisores de x podem ir de 1 a x.
Estrutura dessa função
// Nu. divisores de x entre d e x
int ndiv(int x,int d):
se d>x return 0
se x é divisível por d return 1+ndiv(x,d+1)
se x não é divisível por d return ndiv(x,d+1)
b) Um programa que determina se um dado inteiro é primo...
Programa principal
int main(){
int m;
scanf("%d",&m);
if(ndiv(m,1)==2)
printf(" é primo\n");
else
printf(" não é primo\n");
}
Comentários:
- ainda não aprendemos ciclos... reescreveremos "ndiv" de outro
modo usandociclos...
- porquê um argumento adicional em ndiv?
PC/PI - página reservada - versão 2005.02.08