User Tools

Site Tools


exercicios

Differences

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

Link to this comparison view

Next revision
Previous revision
exercicios [2019/04/23 16:28]
castilho created
exercicios [2019/04/30 10:44]
castilho
Line 1: Line 1:
-Sugere-se que o leitor produza erros de sintaxe na sua cópia deste +   * Para compilar este programa em //Pascal//, descubra os erros e os corrija. 
-programa-fonte e que explore o compilador para começar a compreender + 
-as mensagens de erro e a procurar corrigi-los.+<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:​ Experimente,​ por exemplo, as seguintes alterações:​
Line 12: Line 81:
   *       ​escreva alomamãe com til na linha 1.   *       ​escreva alomamãe com til na linha 1.
  
-Faça uma alteração por vez e observe quais mensagens de erro serão +Faça uma alteração por vez e observe quais mensagens de erro serão retornadas pelo compilador. 
-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