No Exercício Estruturado 2 foi proposto:
1º. Proporcionar a troca de idéias e experiências.
2º. Desenvolver a habilidade de discussão em grupo.
3º. Desenvolver a capacidade de análise, interpretação, crítica, levantamento de hipóteses, obtenção e organização de dados, comparação, resumo e observação.
4º. Escrever programas que utilizem os construtos fundamentais (entrada e saída de dados, estruturas padrões de controle --‐ seqüencial, condicional, iterativa --‐ e definição e uso de procedimentos e funções parametrizados).
5º. Aplicar técnicas de decomposição estrutural e refinamentos para a quebra de um programa em partes menores.
6º. Testar e depurar programas em uma linguagem de alto nível (Pascal).
7º. Documentar idéias e soluções com precisão e qualidade.
Respostas dos Desafios Propostos
Desafio 1-)
De acordo com o código fonte do Programa “Temperatura com procedimentos” vimos que:
1.1- O programa principal começa após a definição de todos os procedimentos que serão usados.
1.2- Os nomes dos procedimentos utilizados são ConverteFemC, ConverteRemC e ConverteKemC.
1.3- Os procedimentos são chamados no programa principal.
1.4- Sim, apesar de não ocorrer no programa Temperatura, os procedimentos podem ser chamados dentro de outros procedimentos ou funções, e temos um exemplo disso no desafio 2.
1.5- Os procedimentos são listados no início do programa.
1.6- As variáveis globais são: TemperaturaF, TemperaturaK e TemperaturaR.
1.7- As variáveis locais são: tempF, tempCF; tempR, tempCR; tempK, tempCK.
1.8- Não, pois as variáveis locais podem ser utlizadas onde forem definidas.
Desafio 2-)
Os comentários podem ser:
1) Após declaração variável: {Programa desenha cinco quadrados}
2) Após nome procedimento: {Desenha quadrado de lado 100}
3) Após nome procedimento 2:{Desenha quadrado do procedimento 1 e linha tamanho 100}
4) Inicio programa principal: {Executa quatro vezes o subprograma desenho2}
Desafio 3-)
De acordo com os dados e com as figuras este vemos que precisaremos utilizar de comandos para a execução da tartaruga-robô. Em todos os exemplos, percebe-se que o objetivo era deslocar o robô com uma determinada angulação, 100 passos a frente e isso sendo executado por uma determinada quantidade de vezes, obtendo assim, algumas figuras geométricas. Dessa forma, temos que:
· poli(100,144,5): o robô inclina-se com um ângulo de 144 graus e desloca-se 100 passos a frente durante 5 vezes O resultado é uma “estrela” de cinco pontas.
· Poli(100,175,36): o robô inclina-se com um ângulo de 175 graus e desloca-se 100 passos a frente durante 36 vezes. O resultado é um emaranhado de triângulos de pequenos ângulos internos.
· Poli(100,90,4): o robô inclina-se com um ângulo de 90 graus e desloca-se 100 passos a frente durante 4 vezes. O resultado é um quadrado.
· Poli(100,160,9): o robô inclina-se com um ângulo de 160 graus e desloca-se 100 passos a frente durante 9 vezes. O resultado é uma figura formada por cinco triângulos.
Desafio 4-)
Neste desafio é pedido o programa que gerou as figuras mostradas no desafio anterior, explicitando também que um mesmo procedimento desse programa tem de ser o mesmo aplicado para todas elas. Com isso, precisamos de varáveis chaves, como o lado(da figura geométrica), ângulo (inclinação do robô responsável pelas diferentes figuras) e n ( a quantidade de vezes que o robô se deslocará). Assim um programa possível e executável é:
program desafio3;
var lado, angulo, n , j :integer;
procedure poli;
var i:integer;
begin
for i:=1 to n do
begin
pdireita(angulo);
pfrente(lado);
end;
end;
Begin
For j:=1 to 4 do
begin
writeln('informe lado ');
readln(lado);
writeln('informe angulo');
readln(angulo);
writeln('informe n');
readln(n);
ul;
poli;
un;
ptras(100);
pdireita(90);
pfrente(200);
ul;
end;
Desafio 5-) Este é um desafio simples, pois não é dado um problema em si, mas exige-se que tenhamos conhecimento de geometria. A hipotenusa (H) de um triângulo retângulo de catetos a e b é dada por:
H² = (a² + b²)
Em PascaL, podemos usar suas funções embutidas e calcular a hipotenusa de um triângulo retângulo dados seus catetos. Para isso, utilizamos as variáveis
H, a, e b reais e calculamos a hipotenusa como a raiz quadrada(sqrt) da soma dos quadrados dos catetos (sqr(a) + sqr(b):
Function calculahipotenusa(a,b:real);
Begin
Hipotenusa:= sqrt(sqr(a) + sqr(b));
end;
Desafio 6-)
program Petrusdesafio6borboleta;
var A, B, C, V, diagonalbase, diagonalparalelepipedo, velocidadeconvertida, tempototal: real;
function diagonalbase(a,b:real): real;
begin
diagonalbase:= sqrt(power(a,2) + power(b,2));
end;
function diagonalparalelepipedo(a,b,c:real): real;
begin
diagonalparalelepipedo:= sqrt(power(c,2)+power(diagonalbase(a,b),2));
end;
function velocidadeconvertida(v:real): real;
begin
velocidadeconvertida:= v/3.6
end;
function tempototal(diagonalparalelepipedo, velocidadeconvertida: real): real;
begin
tempototal:= (diagonalparalelepipedo/velocidadeconvertida);
end;
begin
writeln('Digite a primeira medida em m: ');
readln(A);
writeln('Digite a segunda medida em m: ');
readln(B);
writeln('Digite a primeira medida em m: ');
readln(C);
writeln('Digite a velocidade da borboleta');
readln(V);
writeln('A diagonal do paralelpípedo é:');
writeln(diagonalparalelepipedo(a,b,c));
writeln('Avelocidadeconvertida é:');
writeln(velocidadeconvertida(v));
writeln('O tempo é igual a:');
writeln(tempototal(diagonalparalelepipedo(a,b,c), velocidadeconvertida(v)));
end.
Desafio 7-)
Neste desafio, a solução procurada é o desenho de uma espiral, de diferentes tamanhos e formatos. Para isso, no único procedimento criado precisa conter as variáveis inteiras que receberá a quantidade de segmentos da espiral (tamanho da espiral), o comprimento do segmento que a formará e o ângulo de inclinação do robô (formato da espiral), onde utilizamos N, Lado e Ângulo respectivamente, além dos simples comandos de deslocamento do robô – pfrente, pdireita -.
Program espirais;
var N, Lado, Ângulo, j: integer;
{N: quantidade de segmentos}
{Lado: comprimento do segmento inicial}
{Ângulo:inclinação do robô que dará origem a espiras de diferentes formatos}
procedure resultado;
var i: integer;
begin
for I := 1 to N do
begin
pfrente(Lado);
pdireita(Ângulo);
Lado:= Lado + 10;
end;
end;
begin
writeln(‘Informe N’);
readln(N);
writeln(‘Informe Lado’);
readln(Lado);
writeln(‘Informe Angulo’);
readln(Angulo);
ul;
resultado;
dr;
end.
Comentário

Nenhum comentário:
Postar um comentário
Obrigado pelo seu comentário!