quarta-feira, 27 de outubro de 2010

Serpente (She)


Os nativos de serpente são pensadores profundos e talvez devido a isso não se expressem bem com os outros e prefira confiar na sua própria sabedoria inata. A Serpente é um signo cármico, por isso deve se cuidar, pois sua vida pode acabar em triunfo ou tragédia, só depende das ações passadas dele. As pessoas que nasceram sob o signo de Serpente odeiam futilidade, e preferem se entregar a própria filosofia. Maioria das vezes a filosofia deles é realmente a mais acertada.

Cobra Norato

Cobra Norato alcança o fundo da floresta, onde a terra é fabricada e as árvoes passam a noite tecendo folhas em segredo. Está perdido em um escuro labirinto de árvores.

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}


Exercício Estruturado 1

Desafio 1. Encontrar 7 erros na sintaxe nas estruturas dadas. 

  ) For x 1 to 10 do (O correto é For := 1 to 10 do
2˚ ) pfrente(100) ( o correto é pfrente(100);)
3˚) end ( o correto é end.)
4˚) pdireita(90) (o correto é pdireita(90);)
5˚ e 6˚ ) for y = 1  to 9 ( o correto é for y:=1 to 9 do)
7˚) Entre a primeira e a segunda linha do 1.2 falta um begin

Desafio 2
2.1) Estará escrito
1
2
3
4
5
6
7

2.2)
1 é o valor de i
2 é o valor de i
3 é o valor de i

2.3) i=1 i=2 i=3 sucessivamente ate i=10 um resultado em cada linha
 Para o contador, começando do zero. 0.2*10=2
Contador = 2 ( é o que aparecerá na tela)


Desafio 3

algoritmo altura
declare anos inteiro; a, c, j,cf, jf: real
c = 1.5;
j = 1.1;
anos = a;
 inicio
cf = c + 0.03 * a;
jf = j + 0.02 * a;
anos = a + 1;
fim
enquanto cf = jf
escreva a;
fim algoritmo.

Desafio 4


Desafio 4
4.1)
Dado o preço de fábrica (PRECO), calcula-se
LUCRO = PRECO*PERCENTUAL DE LUCRO
IMPOSTO = PRECO * PERCENTUAL DE IMPOSTO
PRECO FINAL = PRECO+ LUCRO+ IMPOSTO

4.2)
Considerando   sacog : Peso do dos sacos de rações de gatos em gramas
                        Sacoc: peso dos sacos de rações de cachorros em gramas
                        Racaog: Quantidade de ração fornecida para gatos por dia em gramas
                        Racaoc: Quantidade de ração fornecida para cães por dia em gramas
                        Dias: Numero de dias para consumo dos animais
                        Numsacosc: Maior ou igual número inteiro de sacos que devem ser comprados para cães
                        Numsacosg; Maior ou igual número inteiro de sacos que devem ser comprados para gatos
                        Restoc: O quanto restará de ração nos sacos para cães
                        Restog: o quanto restará de ração nos sacos para gatos
Calcula-se:
Converta kilos para gramas
Sacog <- Sacog*1000
Sacoc<- sacoc*1000
(Racaog*2*dias)/sacog  = numsacosg
(Racaoc*2*dias)/sacoc =numsacosc
Que para os valores dados no problema será:
90*2*5/2000 = 0,45 = maior inteiro = 1 saco
200*2*5/5000 = 0,4 = maior inteiro = 1 saco
(Racaoc*numsacosc) - (Racaoc*2*dias) = restoc
(Racaog*numsacosg) - (Racaog*2*dias) = restog
2000*1 – 90*2*5 = 1100g
5000*1 – 200*2*5 = 3000g

4.3)
Entre com um número X
X DIV 100= a
(X - a*100) DIV 10 = b
(X-(a*100+b*10)) = c
Y = c*100 + b*10 + a {Numero invertido}

Programa FONTE PASCAL
Problema 1
program solucaoproblema1;
{Programa feito pelo Grupo formado por Fernanda Morais, Paula Amaral, Ricardo Pires e Marlon Xavier }
var
    fabrica, perclucro, percimposto, lucro, imposto, preco: real;

begin

    {Entrada de Dados}
        writeln ('Forneça o valor do preço de fábrica do carro');
            readln(fabrica);
        Writeln ('Forneça o percentual de lucro do distribuidor');
            readln(perclucro);
        Writeln ('Forneça o percentual de impostos aplicados ao preço de fábrica');
            readln(percimposto);
   
    {Conversão}
        lucro:=(perclucro/100)*fabrica;
        imposto:=(percimposto/100)*fabrica;
        preco:=lucro+imposto+fabrica;


    {Saída de dados}
        Writeln(lucro, ' reais é o valor do lucro do distribuidor');
        writeln(imposto, ' reais é o valor do imposto aplicado ao preço de fábrica');
        Writeln(preco,' reais é o valor do preço total do carro');

 end.

Problema 2

program solucaoproblema2;
{Programa feito pelo grupo formado por Fernanda Morais, Paula Amaral, Ricardo Pires, Marlon Xavier}
{Programa do Exercicio Estruturado 1 Desafio 4.2}

var
    pesog, pesoc, quantg, quantc, restoc, restog, sacosc, sacosg:integer;
    dias: integer;


begin
      {Entrada de Dados}
        Writeln('Forneça o peso do saco de ração dos gatos');
            readln(pesog);
        Writeln('Forneça o peso do saco de ração dos cachorros');
            readln(pesoc);
        Writeln('Forneça a quantidade de ração fornecida para cada gato por dia');
            readln(quantg);
        writeln('Forneça a quantidade de ração fornecida para cada cachorro por dia');
            readln(quantc);
        Writeln('Forneça o número de dias para calculo do consumo de ração');
            readln(dias);

    {Conversão}
        pesog:=pesog*1000;
        pesoc:=pesoc*1000;
        sacosg:= (quantc*2*dias) div pesog;
        restog:= (pesog) - (quantg*2*dias)mod pesog;
        sacosc:=(quantc*2*dias)div pesoc;
        restoc:= (pesoc) - (quantc*2*dias)mod pesoc;
    {Saída de dados}
        writeln(restog, 'gramas é o que restará no saco de ração dos gatos');
        writeln(restoc, 'gramas é o que restará no saco de ração dos cachorros');


  end.
 
Problema 3

program solucaoproblema3;
{Programa feito pelo grupo formado por Fernanda Morais, Paula Amaral, Ricardo Pires, Marlon Xavier}
{Exercicio estruturado 1  - Programa do desafio 4.3}

var  x, y, a, b, c: integer;
 
    begin
          writeln('Forneça o número para inversão');
            readln(x);


    {Conversão}
        a:= (x div 100);
        b:= (x mod 100) div 10;
        c:=(x mod 100) mod 10;
        y:=(100*c)+(10*b)+(a);

    {Saída de dados}
        Writeln(y);
                    end.
Desafio 5

 
Caso 1
Obtenha o número X;
Divida x por 3
Dvidida x por 5
Se o resto for diferente de zero não é múltiplo de 5
Se o resto for igual a zero para as duas divisões o numero é múltiplo de 3 e de 5
Se o resto não for igual a zero para nenhuma das divisões o numero não é múltiplo de 3 nem de 5.
Se o resto for igual a zero apenas para Divisão por 3, o numero é apenas múltiplo de 3
Se o resto for igual a zero apenas para Divisão por 5, o numero é apenas múltiplo de 5
Caso 2
Observar
 Se a> b+c e b>a+c e c>b+a, é um triangulo
Se não, não é triangulo.
Caso 3
Comparar se um é maior que o outro
Exemplo: dado a, b, c
a>b?
se sim, a> c? se sim, a é o maior número.se não c é o maior numero.

Caso 4
O mesmo do caso 4 porém frisando também o menor numero
Exemplo
a>b? se sim,
a>c? se sim, a é o maior número (1 caso)
se não c é o maior número (2caso)
se a é o maior numero (1)
c>b? se sim, b é o menor número
se não, c é o menor número.

Comentário

Apesar de bem trabalhoso, esse exercicio estruturado foi o que eu mais pude praticar meus conhecimentos de programação.