quarta-feira, 27 de outubro de 2010

Exercício Estruturado 2

Desafio 1
{***********PROGRAM TEMPERATURACOMPROCEDIMENTO******************}
program temperaturacomprocedimento;
{**programa que faz a conversão de temperaturas Farnenheit, Kelvin e Rankine para Centigrados**}
var temperaturaF, temperaturaK, temperaturaR: real; { temperaturas }

{***********PROCEDURE CONVERTE TEMPERATURA FARNENHEIT EM CELSIUS**************}
procedure converteFemC (tempF: real);
{**Procedimento que converte a temperatura Farnenheit para Celsius**}
var tempCF: real; {temperatura convertida de Farhenheit para Celsius}
begin
{** Conversao - Farhenheit para Celsius**}
tempCF := (5/9)*(tempF-32);
{**Saida de dados**}
writeln(tempF,' graus Farhenheit corresponde a ',tempCF,' graus C');
end;

{***********PROCEDURE CONVERTE TEMPERATURA RANKINE EM CELSIUS******************}
procedure converteRemC (tempR: real);
{**Procedimento que converte a temperatura Rankine para Celsius**}
var tempCR: real; { temperatura convertida de Rankine para Celsius }
begin
{**Conversao - Rankine para Celsius**}
tempCR := (tempR-32-459.67)/1.8;
{**Saida de dados**}
writeln(tempR, ' Rankine corresponde a ', tempCR, ,' graus C'); end;

{***********PROCEDURE CONVERTE TEMPERATURA KELVIN EM CELSIUS******************}
procedure converteKemC (tempK: real);
{Procedimento que converte a temperatura Kelvin para Celsius}
var tempCK: real; {temperatura convertida de Kelvin para Celsius }
begin
{**Conversao - Kelvin para Celsius**}
tempCK := tempK - 273.15;
{**Saida de dados**}
writeln(tempK, ' Kelvin corresponde a ', tempCK, ,' graus C'); end;

{******************Programa principal**************************}
begin
{Entrada de dados}
writeln('Forneca a temperatura em Farhenheit');
readln(temperaturaF);
writeln('Forneca a temperatura em Rankine');
readln(temperaturaR);
writeln('Forneca a temperatura em Kelvin');
readln(temperaturaK);
{************** Chamada dos procedimentos *****************************}
converteFemC (temperaturaF);
converteRemC (temperaturaR);
converteKemC (temperaturaK);
end.

1.1.           Identifique onde começa o programa principal (faça uma marcação);
Marcado em amarelo
1.2.           Quais são os nomes dos procedimentos utilizados?  
Convertefemc; Converteremc; Convertekemc
1.3.           Onde os procedimentos são chamados?
No programa principal, Marcado em verde
1.4.           Eles podem ser chamados dentro de outro procedimento ou função?
-       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.  Onde os procedimentos são listados no programa? (no  início, no meio, no fim?)
No inicio
1.6.           Identifique as variáveis globais (do programa principal); (faça uma marcação);
Marcado em Rosa
1.7.           Identifique as variáveis locais (dos procedimentos); (faça uma marcação);
Marcado em vermelho

1.8.         As variáveis locais podem ser usadas no programa principal? Por que?       
Não, pois as variáveis locais podem ser utlizadas onde forem definidas.

Desafio 2 –Procedimentos– lógica de programação e comentários
O programa abaixo tem como saída um desenho. Qual desenho é produzido após a execução do programa abaixo? Faça seu desenho. Após compreender a execução do programa, inclua as linhas de comentários explicativas.
 
program desenho;
var j : integer;
{número de repetições do desenho}
procedure desenho
{Procedure cria um quadrado}
var i : integer;
begin
for i := 1 to 4 do
begin
pfrente(100);
pdireita(90);
end;
end;
procedure desenho2;
{Procededure cria outro quadrado}
begin
desenho1;
pesquerda(90);
pfrente(100);
end;
begin
{ Programa Principal}
for j := 1 to 4 do
begin
desenho2;
end;
end.


 Desafio 3

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 ponta
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
program desafio4
var i : integer;
procedure poli (cl,ai,nl : integer);
 begin
  for i:= 1 to nl do
   begin
    pfrente(cl);
    pdireita(ai);
   end;
 end;
begin
 clrscr;
 un;
 pesquerda(90);
 pfrente(450);
 pdireita(90);
 ul;
 poli (100,90,4);
 pdireita(90);
 un;
 pfrente(160);
 pesquerda(90);
 ul;
 poli (100,175,36);
 un;
 pfrente(100);
 pesquerda(90);
 pfrente(100);
 pesquerda(90);
 ul;
 poli (100,160,9);
 pdireita(90);
 un;
 pfrente(100);
 pesquerda(90);
 ul;
 poli (100,144,5);
 dr;
end.

Desafio 5
A fórmula da hipotenusa (h) de um triângulo é: h2 = a2 + b2
                                                                             h =   √a2 + b2 
Passando para a linguagem usada em PascaL, temos:
h := sqrt(sqr(a) + sqr(b) )

Desafio 6
program borboleta;
var x , y , z , D , v ,t:real;
begin
    writeln('escreva o comprimento da sala em metros:');
readln(x);
    writeln('escreva a largura da sala em metros');
readln(y);
    writeln('escreva a altura da sala em metros');
readln(z);
{calculo da diagonal do paralelepípedo}
D:= sqrt(sqr(x) + sqr(y) + sqr(z));
{calculo do tempo gasto para percorrer a distancia d}
v:=10/3.6;
t:= D/v;
writeln('o valor do tempo que a borboleta gasta para percorrer de um canto do chão da sala até a extremidade oposta no alto da parede em segundos e:', t);
end.

Desafio 7
a)
program desafio7a;
{desenha um quadrado em caracol}
 procedure quadrado;
{desenha um quadrado em caracol}
var i,j,k,l : real;
   begin
writeln('Escreva o valor de i');
readln (i);
writeln ('Escreva o valor de j<i');
readln (j);
writeln('Escreva o valor de k<j');
readln (k);
writeln ('Escreva o valor de l<k');
readln (l);
      for i >j>k>l do
        begin
              pdireita(90);
pfrente(i);
              pesquerda(90);
pfrente (i);
pesquerda(90);
pfrente (j);
pesquerda(90);
pfrente (j);
pesquerda(90);
pfrente(k);
pesquerda(90);
pfrente(k);
pesquerda(90);
pfrente(l);
pesquerda(90);
pfrente(l)
          end;
end; {desafio7a}

b)
program desafio7b;
{desenha triângulos em caracol}
 procedure trangulos;
{desenha triângulos em caracol }
var I,j,k,l : integer;
   begin
writeln('Escreva o valor de i');
readln (i);
writeln ('Escreva o valor de j>i');
readln (j);
writeln('Escreva o valor de k>j');
readln (k);
writeln ('Escreva o valor de l>k');
readln (l);
      for i <j<k<l do
        begin
              pfrente(i);
              pdireita(120);
            pfrente(i);
            pdireita(120);
            pfrente(j);
              pdireita(120);
            pfrente(j);
            pdireita(120);
            pfrente(k);
              pdireita(120);
            pfrente(k);
            pdireita(120);
            pfrente(l);
              pdireita(120);
            pfrente(l);
       end;
end; {desafio7b}

c)
program desafio7c;
{desenha um quadrado grande em caracol}
 procedure quadradogrande;
{desenha um quadrado em caracol}
var i,j,k,l : real;
   begin
writeln('Escreva o valor de i');
readln (i);
writeln ('Escreva o valor de j<i');
readln (j);
writeln('Escreva o valor de k<j');
readln (k);
writeln ('Escreva o valor de l<k');
readln (l);
      for i >j>k>l do
        begin
              pdireita(90);
pfrente(i);
              pesquerda(90);
pfrente (i);
pesquerda(90);
pfrente (j);
pesquerda(90);
pfrente (j);
pesquerda(90);
pfrente(k);
pesquerda(90);
pfrente(k);
pesquerda(90);
pfrente(l);
pesquerda(90);
pfrente(l)
          end;
béguin
(quadradogrande (i=3i/2, j=3j/2,k=3k/2,l=3l/2))
end; {desafio7c}

d)
program desafio7d;
{desenha triângulos  grandes em caracol}
 procedure trangulos grandes;
{desenha trangulos  em caracol}
var i,j,k,l,m : real;
   begin
writeln('Escreva o valor de i');
readln (i);
writeln ('Escreva o valor de j>i');
readln (j);
writeln('Escreva o valor de k>j');
readln (k);
writeln ('Escreva o valor de l>k');
readln (l);
writeln ('Escreva o valor de m>l');
readln (m);
 for i <j<k<l < m do
        begin
              pfrente(i);
              pdireita(120);
            pfrente(j);
              pdireita(120);
            pfrente(k);
              pdireita(120);
            pfrente(l);
              pdireita(120);
            pfrente(m);
       end;
end; {desafio7d}


Nenhum comentário:

Postar um comentário