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
exercicios [2019/04/30 10:31]
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
  
exercicios.txt · Last modified: 2019/04/30 10:44 by castilho