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

Aula 4


             -------------------------------------------
             Instruções de ciclo: while, do...while, for
                              Exercícios
             -------------------------------------------

(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);}}


---------------------------------
Exercício
1) O que está mal? Comente...
   a) if(x>2) x=5
   b) if x>2 x==5;

---------------------------------



Instruções de ciclo, 3 variedades
   TIPO                              EXEMPLO
   ----------------------------------------------------
   while(<exp. cond>) <inst>         while(x>2){
                                        x--; 
                                        scanf("%d",&n); 
                                        s+=n;
                                     }
   do <inst> while(<exp. cond>)      do x+=2; while(x<10)
                                     (comparar com 
                                      while(x<10) x+=2;)
   for(...;...;...) <inst>           s=0;
                                     for(i=0;i<10;i++) 
                                       s+=i;
                                     (valor final de s??)



2) Exercício, valores finais...
----------------------------
   a) while(s>0) x+=2;         início: s=1,  x=0. Fim?
   b) do s=s+1; while(s>0);    início: s=-3,      Fim?
   c) while(s>0) do s=s+1;     início: s=-3,      Fim?
   d) for(i=0;i<=5;i++) s*=2;  início: s=1,       Fim?


Exemplo:
a) programa que, dado m, calcula e imprime 1+2+...+m

     s=0;    // soma a calcular
     i=0;    // num. de termos já somados  (ou s=1,i=1)
     while(...)
       ...
     printf

b) com... for(...;...;...)

Exercícios
----------
3) Ler uma sequência de números terminada por 0 (que já não faz parte
da sequência). Imprimir (3 programas distintos)
   a) a soma deles
   b) O maior deles
   c) O segundo maior deles.

Num só programa (que leia is dados uma só vêz!), imprimir os 3 valores
referidos.

4) Ler n e n números.
   Imprimir (3 programas distintos)
   a) a soma deles
   b) O maior deles
   c) O segundo maior deles.

5) a) Calcular o maior divisor comum entre a e b.
   Método: procurar o maior inteiro d, 1 <= d <= min(a,b),
   que divide a e b.
   b) Calcular o menor múltiplo comum entre a e b.

6) Traduzir uma instrução  
       for(E1;E2;E3) I
   numa instrução "while".


7) Escrever um programa que, dado n, determina a soma de todos
   os termos i+j com 1 <= i < j <= n.
   Por exemplo, para n=4, a soma obtida deve ser
   30 = (1+2)+(1+3)+(1+4)+(2+3)+(2+4)+(3+4).



PC/PI - página reservada - versão 2005.02.08

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