User Tools

Site Tools


exercicios

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
exercicios [2019/04/30 10:26]
castilho
exercicios [2019/04/30 10:44] (current)
castilho
Line 1: Line 1:
 +   * Para compilar este programa em //Pascal//, descubra os erros e os corrija.
 +
 +<code pascal>
 +(* programa que le um numero e retorna o ultimo algarismo *)
 +(* escrito por Marcos Castilho em 22/10/2002, com erros. ​ *)
 +program ultalgarismo;​
 +begin
 +        read (A)
 +        writeln (A mod 10);
 +end.
 +</​code>​
 +
 +   * Seja o seguinte programa em //Pascal//:
 +
 +<code pascal>
 +program ​ Misterio;
 +var nota1,​nota2,​media:​ integer;
 +begin
 +     ​readln(nota1,​nota2)
 +     while nota1 <> 0 do
 +          media:​=nota1+nota2/​2;​
 +          writeln(nota1,​nota2,​media);​
 +          readln(nota1,​nota2);​
 +end.
 +</​code>​
 +
 +      * Quantos são, e quais são, os erros de compilação deste programa?
 +      * Considerando que  você corrigiu os erros de compilação corretamente,​ o que faz este programa? Por exemplo, tente entrar com as notas 5 e 5. Depois tente com 0, 5. Rode o programa e veja se você acertou.
 +      * Considerando ​ a estrutura do  programa, os  nomes das variáveis ​ e a  endentação usada, ​ podemos afirmar ​ que  o programador cometeu alguns erros de lógica. Quantos são e quais são estes erros?
 +      * O que faz o programa faz após estas correções?​ Rode novamente com as notas 5 e 5 e depois 0 e 5 e confira se você acertou.
 +
 +   * Enumere e explique ​  todos os  erros  contidos no seguinte código //Pascal//:
 +
 +<code pascal>
 +program misterio2;
 +var
 +  m, g: real;
 +  N1, N2: integer;
 +begin
 +  readln(N1, N2);
 +  if (N1 > N2) then
 +    m := N2
 +  else
 +    m := N1;
 +  g:= 1;
 +  while g do
 +  begin
 +    if (N1 mod m = 0) AND (N2 mod m = 0) then
 +      g := 0;
 +    else
 +      m := m - 1;
 +  end;
 +  if (m := N1) then
 +    writeln('​O valor resultante eh: ' m);
 +end.
 +</​code>​
 +
 +
 +   * Considere o seguinte programa em //Pascal//.
 +
 +<code pascal>
 +program soma_dois;
 +var a, b, soma: longint;
 +
 +begin
 +   read (a,b);
 +   ​soma:​= a + b;
 +   ​writeln (a+b);
 +end.
 +</​code>​
 +
 +É importante entender as mensagens de erro do compilador. Por isso, sugere-se que o leitor produza erros de sintaxe na sua cópia deste programa-fonte (que está correto sintaticamente) e que explore o compilador para começar a compreender as mensagens de erro e a procurar corrigi-los.
 +
 +Experimente,​ por exemplo, as seguintes alterações:​
 +
 +  *       ​escreva //program// errado, por exemplo, //pogram//;
 +  *       ​escreva //writeln// errado, por exemplo, //​writenl//;​
 +  *       ​apague o ponto final após o //end// na última linha;
 +  *       ​esqueça de abrir ou de fechar as aspas da mensagem;
 +  *       ​esqueça de abrir ou de fechar os parênteses;​
 +  *       ​escreva alomamãe com til na linha 1.
 +
 +Faça uma alteração por vez e observe quais mensagens de erro serão retornadas pelo compilador.
 +
 +   * No programa abaixo, determine o  tipo de dados  das variáveis. Algumas delas podem ser tanto inteiras como reais, enquanto que algumas só podem ser de um tipo específico. Se puder, prefira um tipo ordinal.
 +  ​
 +<code pascal>
 +Program ex1;
 +var 
 +   A: <​completar>;​
 +   B: <​completar>;​
 +   C: <​completar>;​
 +   D: <​completar>;​
 +   E: <​completar>;​
 +    ​
 +begin        ​
 +     A := 1 + 2 * 3;
 +     B := 1 + 2 * 3 / 7;
 +     C := 1 + 2 * 3 \ DIV \ 7;
 +     D := 3 \ DIV \ 3 * 4.0;
 +     E := A + B * C - D
 +end.
 +</​code>​
 +
 +   * Fazer um programa em Free Pascal que leia do teclado um número real C representando uma temperatura na escala Celsius e imprima na tela a correspondente temperatura na escala Farenheit (F) calculada segundo a fórmula: C = 5*(F-32)/9. Veja um exemplo de execução incluindo entrada e saída:
 +
 +Exemplo de entrada:
 +28.7
 +
 +Saída esperada para a entrada acima:
 +8.3659999999999997E+001
 +
 +   * Fazer um programa em Free Pascal que leia do teclado um número real K representando uma velocidade em Kilômetros por hora (km/h) e imprima na tela a velocidade correspondente em milhas por hora (ml/h), lembrando que 1 milha = 1.609344 km.
 +
 +Exemplo de entrada:
 +105.4
 +
 +Saída esperada para a entrada acima:
 +6.5492523661815000E+001
 +
 +   * Fazer um programa em Free Pascal que leia do teclado um número inteiro que representa uma quantidade de segundos (unidade de medida de ângulo geométrico) e que imprima na tela o seu valor equivalente em graus, minutos e segundos. Se a quantidade de segundos for insuficiente para dar o valor 1 (um) em graus, o valor em graus deve ser 0 (zero). A mesma observação vale em relação aos minutos e segundos.
 +
 +Exemplo de entrada 1:
 +3600
 +
 +Saída esperada para a entrada acima:
 +1 graus, 0 minutos e 0 segundos
 +
 +Exemplo de entrada 2:
 +3500
 +
 +Saída esperada para a entrada acima:
 +0 graus, 58 minutos e 20 segundos ​
 +
 +   * Fazer um programa em Free Pascal que leia seis números (a11, a12, b1, a21, a22, b2) e imprima uma solução para o sistema de equações lineares abaixo:
 +
 +<​code>​
 + a11 x + a12 y = b1
 + a21 x + a22 y = b2
 +</​code>​
 +
 +O método de cálculo do sistema é indiferente,​ desde que o resolva independente dos valores informados. Veja um exemplo de execução incluindo entrada e saída:
 +
 +Exemplo de entrada:
 +2.0 1.0 11.0 5.0 7.0 13.0
 +
 +Saída esperada para a entrada acima:
 +x = 7.111
 +y = -3.222