MC102 |
Exercício 1: Escreva um programa que determine quanto tempo leva para um corpo cair de determinada altura a partir do repouso. Use a função Sqrt para obter a raiz.
Exercício 2: Qual é a saída do seguinte código? (assuma que soma e cont são integer).
soma := 33; cont := 1; WHILE cont < 12 DO BEGIN soma := soma + cont; cont := cont + 2 END; writeln('Os números são: ',cont,' e ',soma) |
Exercício 3: Qual a saída do seguinte código? (assuma todas as variáveis são integer).
num := 0; WHILE num <= 5 DO BEGIN num := num + 1; write(num) END; |
num := 17; exp := 0; pot := 1; WHILE pot < num DO BEGIN exp := exp + 1; pot := pot * 2 END; writeln('2 na potência ', exp:1,' excede ', num:2); |
num := 1; WHILE num <> 10 DO BEGIN writeln(num); num := num*2 END; writeln(num); |
Exercício 4: Qual a saída do seguinte código? Assuma que chegou1 e chegou2 são booleanas. As outras variáveis são integer.
dest1 := 15; dest2 := 27; local1 := 20; local2 := 20; chegou1 := false; chegou2 := false; WHILE (NOT chegou1) AND (NOT chegou2) DO BEGIN local1 := local1 - 1; {se move uma unidade por instante} local2 := local2 + 2; {se move 2 X mais rápido} chegou1 := (local1 <= dest1); chegou2 := (local2 >= dest2); writeln('Os viajantes estão em ',local1:2,' e ',local2:2) END; writeln('As posições finais dos viajantes são ',local1:2,' e ',local2:2) |
Exercício 5: Eis uma confusão que as pessoas fazem. O que o segmente escreve?
t := 1; WHILE t = 1 DO BEGIN write('Oba'); t := 2; write('Abo') END; |
Exercício 6: O que podemos concluir sobre um corpo de um WHILE que não altera nenhuma das variáveis mencionadas na condição?
Exercício 7: Se não houvesse um REPEAT, como você usaria WHILE para fazer a mesma coisa?
Exercício 8: Qual é a saída do seguinte programa? Assuma que a entrada é 2 e 3. Preste bem atenção no que faz e use um diagrama de execução para testar o programa.
PROGRAM P; VAR a,b,x,y : integer; PROCEDURE Q(VAR q,a:integer; b,r : integer); VAR x,z : integer; BEGIN read(x); z := -x; x := x+1; q := 2*q + a; b := 1 + z - 2*x; writeln(q,a,b,r,x,z) END; BEGIN a := 1; b := 2; x := 7; y := 11; writeln(a,b,x,y); Q(a,b,x,y); writeln(a,b,x,y); Q(b,a,x-y,y); writeln(a,b,x,y) END. |
Exercício 9: Qual a saída do seguinte programa?
PROGRAM P; VAR x,y,z : integer; PROCEDURE Ordena(VAR prim,seg,ter: integer); PROCEDURE Troca(VAR n1,n2:integer); VAR aux : integer; BEGIN aux := n1; n1 := n2; n2 := aux END; {Troca} BEGIN IF prim > seg THEN Troca(prim,seg); IF seg > ter THEN BEGIN Troca(seg,ter); IF prim > seg THEN Troca(prim,seg) END END; {Ordena} BEGIN x := 90; y := 25; z := 50; Ordena(x,y,z); writeln(x,y,z); x := 6; y := 2; z := 1; Ordena(x,y,z); writeln(x,y,z) END. |
Exercício 10: Qual seria a saída do programa acima se "ter" fosse um parâmetro por valor em vez de por referência?