sexta-feira, 15 de outubro de 2010

Exercício Estruturado 2

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-)  
O desenho produzido após a execução do programa é:







 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!