Aula 4Aulas teóricas - notas...Aula 2Aula 3

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

Aula 4Aulas teóricas - notas...Aula 2Aula 3