This shows you the differences between two versions of the page.
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 | ||