Frase criptografada: e i qipru upeiocmatla otusriouvmau oqee rcs oprihrd e ors
Frase descriptografada: eu vim aqui porque eu preciso compartilhar do teu sorriso
Petrus Ribeiro
A vida é feita de sonhos e é isso que nos mantém vivos!
terça-feira, 9 de novembro de 2010
Criptografia e Descriptografia
sábado, 23 de outubro de 2010
Cobra Norato
| Cobra Norato alcança o fundo da floresta, onde a terra é fabricada e as árvores passam a noite tecendo folhas em segredo. Está perdido em um escuro labirinto de árvores. |
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-)
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
Exercício Estruturado 1
No Exercício Estruturado 1 foi proposto:
1º. Proporcionar a troca de idéias e experiências.
2º. Desenvolver a hablidade 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.
Respostas dos Desafios Propostos
DESAFIO 1)
Os sete erros foram identificados de acordo com a linha e na resposta apresentamos a correção.
Linha 1: x := 1;
Linha 2: pfrente(100);
Linha 5: end;
Linha 6: y := 1;
Linha 6: to 9 do
Linha 6 e 7: Begin
Linha 8: pdireita(90);
Os sete erros foram identificados de acordo com a linha e na resposta apresentamos a correção.
Linha 1: x := 1;
Linha 2: pfrente(100);
Linha 5: end;
Linha 6: y := 1;
Linha 6: to 9 do
Linha 6 e 7: Begin
Linha 8: pdireita(90);
DESAFIO 2)
2.1) O programa irá escrever o valor de x. Como o comando de saída está dentro de uma estrutura de repetição (FOR) será impresso sete valores de x, de 1 a 7.
2.2) O programa irá escrever o valor de x acompanhado da frase “É o valor de i”. Como o comando de saída está dentro de uma estrutura de repetição (FOR) será impresso 3 valores de x, de 1 a 3;
2.3)Escreve o valor de I mais o valor de contador. A variável I varia de 1 a 10 enquanto a variável contador varia de 0.2 a 2.0.
2.1) O programa irá escrever o valor de x. Como o comando de saída está dentro de uma estrutura de repetição (FOR) será impresso sete valores de x, de 1 a 7.
2.2) O programa irá escrever o valor de x acompanhado da frase “É o valor de i”. Como o comando de saída está dentro de uma estrutura de repetição (FOR) será impresso 3 valores de x, de 1 a 3;
2.3)Escreve o valor de I mais o valor de contador. A variável I varia de 1 a 10 enquanto a variável contador varia de 0.2 a 2.0.
DESAFIO 3)
O enunciado do programa nos informa que Chico cresce 2 cm por ano enquanto Juca 3 cm por ano. Ao analisarmos o algorítmo verificamos que esse dado foi trocado no momento da implementação da equação que calcula a altura em função do tempo. Então o erro de lógica é identificado nas linhas 9 e 10. A estrutura correta seria:
O enunciado do programa nos informa que Chico cresce 2 cm por ano enquanto Juca 3 cm por ano. Ao analisarmos o algorítmo verificamos que esse dado foi trocado no momento da implementação da equação que calcula a altura em função do tempo. Então o erro de lógica é identificado nas linhas 9 e 10. A estrutura correta seria:
C <- C + 0.02;
J <- J + 0.03;
DESAFIO 4.1)
Para a resolução desse problema primeiramente vamos definir as variáveis.
Para a resolução desse problema primeiramente vamos definir as variáveis.
C : custo ao consumidor de um carro novo.
Pf: preço de fábrica.
Ld: percentual de lucro do distribuidor.
I : percentual de imposto.
O lucro do distribuidor é dado pela multiplicação do percentual de lucro do distribuidor pelo custo de fábrica. (Ld x Pf);
Valor correspondente ao imposto = I. Pf;
O preço final do veículo é o custo ao consumidor de um carro novo.
C: = Pf + LdxPf + IxPf;
O lucro do distribuidor é dado pela multiplicação do percentual de lucro do distribuidor pelo custo de fábrica. (Ld x Pf);
Valor correspondente ao imposto = I. Pf;
O preço final do veículo é o custo ao consumidor de um carro novo.
C: = Pf + LdxPf + IxPf;
DESAFIO 4.2)
Os dados abaixo são os que serão inseridos no programa, a partir dele calcularemos outras informações.
Os dados abaixo são os que serão inseridos no programa, a partir dele calcularemos outras informações.
Peso de saco de ração para cachorro (SC).
Peso de saco de ração para gato (SG).
Quantidade de ração para cada gato por dia (QG).
Quantidade de ração para cada cachorro por dia (QC).
T = TEMPO.
SCS = O QUE SOBRA DO SACO APÓS T TEMPOS.
SGS = O QUE SOBRA DO SACO APÓS T TEMPOS
>Transformando a quantidade de quilograma para grama
SC := SC X 1000;
SG := SG X 1000;
SCS := SC – 2(T X QC);
SGS:= SG -2(T X QG);
DESAFIO 4.3)
Para esse programa vamos considerar o número a ser inserido como inteiro e devido a isso terá no máximo 256 algarismos. A partir disso, elaboraremos uma função que, ao receber o número a ser invertido, calcula quantas casas ele possui, só assim será possível usar o comando de repetição para inverter.
Para esse programa vamos considerar o número a ser inserido como inteiro e devido a isso terá no máximo 256 algarismos. A partir disso, elaboraremos uma função que, ao receber o número a ser invertido, calcula quantas casas ele possui, só assim será possível usar o comando de repetição para inverter.
(Pseudocódigo para descobrir quantos algarismos o número possui)
Variáveis, num controle,T,X,Qalg : inteiras.
Num-> número a ser invertido.
Controle-> variável para procedimento.
T->número máximo de algarismos que uma variável inteira pode possuir.
Qalg->Quantidade de algarismos que o número possui.
X :=10256;
Controle receberá o valor inicial de 0.
While controle <>1
{IF (num/10t ) = 0 então controle continua valendo 0 e T:=T -1;
Else controle := 1 e Qalg:= T;}
(Pseudocódigo para inverter o algarismo inserido)
Variáveis:
Qalg = resultado do primeiro procedimento.
Rest = variável para percorrer as casas.
Casa = variável para fazer as divisões de unidade,dezena,centena e assim por diante.
Numinvert=resultado do número invertido
Rest := num;
Casa:= 1;
FOR(I = Qalg downto 1) do
{Numinvert := rest/10I x casa;
Rest := rest MOD 10I;
Casa := casa x 10;}
FIM DOS CÁLCULOS
RESULTADO FINAL
WRITE(Numinvert);
DESAFIO 5)
Caso 1)
Para esse programa pediremos ao usuário um número inteiro positivo de cada vez. O número que será lindo será chamado de NUM.
Para esse programa pediremos ao usuário um número inteiro positivo de cada vez. O número que será lindo será chamado de NUM.
M3 =CONTROLE SE O NÚMERO É NÚMERO MÚLTIPLO DE 3,INICIADO COM 0.
M5 =CONTROLE SE O NÚMERO É NÚMERO MÚLTIPLO DE 5,INICIADO COM 0.
IF NUM MOD 3= 0 M3 =1;
IF NUM MOD 5=0 M5 =1;
IF(M3 = 1 E M5 = 1){O NÚMERO É MULTIPLO DE 3 E 5}
ELSE
IF(M3=1 E M5=0){O NÚMERO É MÚLTIPLO DE 3}
ELSE
IF(M3=0 E M5=1){O NÚMERO É MÍLTIPLO DE 5}
ELSE{O NÚMERO NÃO É MÚLTIPLO}
Caso 2)
Um dado conjunto de valores é considerado triângulo se e somente se obedecer as 3 equações abaixo:
Um dado conjunto de valores é considerado triângulo se e somente se obedecer as 3 equações abaixo:
CONTROLE=0;
IF(A+B>C)CONTROLE = CONTROLE +1;
IF(A+C>B) CONTROLE = CONTROLE +1;
IF(B+C>A) CONTROLE = CONTROLE +1;
IF CONTROLE=3 O NÚMERO É UM TRIÂNGULO.
Caso 3)
Será recebido um número de cada vez:
Será recebido um número de cada vez:
MAIOR = variável que recebe o número de maior valor.
Ao ser inserido o primeiro número:
Maior = numinserido.
Depois para cada próximo numero:
IF numinserido > maior {maior = numinserido}
Se não for não modificaremos o valor de maior.
Assim quando for finalizada a inserção de dados o maior número será aquele da variável maior.
Caso 4)
Seguiremos o mesmo raciocínio do caso 3:
Seguiremos o mesmo raciocínio do caso 3:
DIGITE O PRIMEIRO NÚMERO:
RECEBA O VALOR DE NUM.
MAIOR = NUM;
MENOR =NUM;
DIGITE O PRÓXIMO NÚMERO: (NUM É UMA VARIÁVEL DINÂMICA).
IF NUM > MAIOR {MAIOR = NUM}
IF NUM < MENOR {MENOR = NUM}
WRITE MAIOR E MENOR.
Conclusão
O Exercício Estrurado 1 proporcionou a troca de conhecimento com outros estudantes e o aperfeiçoamento de nossos próprios métodos de aprendizagem.
quarta-feira, 13 de outubro de 2010
Guia de Auto Estudo 5
No Guia de Auto Estudo 5 foi proposto:
1º. Utilizar o PascaL para produzir a sua bandeira do Brasil.
1.1. A primeira delas terá cores aleatórias, a segunda terá as cores da bandeira do Brasil.
1.2. Utilize um menu para escolher qual das bandeiras será produzida.
1.3. As bandeiras devem ser produzidas a partir de procedimentos separados para cada uma das figuras.
1.4. Ela deve conter, no mínimo, duas estrelas.
1.5. A tarja branca e o texto ao centro são opcionais.
1.1. A primeira delas terá cores aleatórias, a segunda terá as cores da bandeira do Brasil.
1.2. Utilize um menu para escolher qual das bandeiras será produzida.
1.3. As bandeiras devem ser produzidas a partir de procedimentos separados para cada uma das figuras.
1.4. Ela deve conter, no mínimo, duas estrelas.
1.5. A tarja branca e o texto ao centro são opcionais.
Códido do Programa em PascaL
{*******************PROGRAM BANDEIRADOBRASILPETRUSLUISDASILVAGOMESRIBEIRO*******************}
program bandeiradobrasilpetrusluisdasilvagomesribeiro;
{Programa que desenha uma bandeira do Brasil na forma tradicional ou com cores aleatórias}
var opcao:integer; {Variável que armazenara a sua opção de bandeira}
procedure fazretangulo;
{Procedimento para criar o retângulo da bandeira}
var i: integer;
begin
if opcao=1
then begin
mudecorlapis (random(255),random(255),random(255));
end
else begin
mudecorlapis(22,157,15);
end;
for i:= 1 to 4 do
begin
pfrente(300);
pdireita(90);
pfrente(490);
pdireita(90);
end;
end;
procedure fazlosango;
{Procedimento para criar o losango da bandeira}
var i: integer;
begin
if opcao=1
then begin
mudecorlapis (random(255),random(255),random(255));
end
else begin
mudecorlapis(255,255,0);
end;
pdireita(60);
pfrente(275);
pdireita(60);
pfrente(275);
pdireita(120);
pfrente(275);
pdireita(60);
pfrente(275);
pdireita(120);
pfrente(275);
pdireita(60);
pfrente(275);
pdireita(120);
pfrente(275);
pdireita(60);
pfrente(275);
pdireita(120);
end;
procedure fazcirculo;
{Procedimento para criar o círculo da bandeira}
var i: integer;
begin
if opcao=1
then begin
mudecorlapis (random(255),random(255),random(255));
end
else begin
mudecorlapis(0,0,255);
end;
for i:= 1 to 720 do
begin
pfrente(1.5);
pdireita(1);
end;
end;
procedure fazestrelas;
{Procedimento para criar as estrelas da bandeira}
var i, j, k: integer;
begin
if opcao=1
then begin
mudecorlapis (random(255),random(255),random(255));
end
else begin
mudecorlapis(255,255,255);
end;
un;
pfrente(30);
ul;
for i:= 1 to 5 do
begin
pdireita(27);
pesquerda(81);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
un;
pfrente(20);
ul;
end;
un;
ptras(75);
ul;
for j:= 1 to 5 do
begin
pdireita(27);
pesquerda(81);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
un;
pfrente(20);
ul;
end;
un;
pdireita(90);
ptras(75);
ul;
for k:= 1 to 5 do
begin
pdireita(27);
pesquerda(81);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
pdireita(144);
pfrente(2);
pesquerda(72);
pfrente(2);
un;
pfrente(20);
ul;
end;
end;
procedure regulagemlosangoretangulo;
{Procedimento para alinhar o losango em relação ao retângulo}
var i: integer;
begin
pfrente(150);
pdireita(90);
pfrente(7);
pesquerda(90);
end;
procedure regulagemcirculolosango;
{Procedimento para alinhar o círculo em relação ao losango}
var i: integer;
begin
pdireita(30);
pfrente(150);
pesquerda(90);
end;
procedure regulagemestrelascirculo;
{Procedimento para alinhar as estrelas em relação ao círculo}
var i: integer;
begin
pdireita(90);
pfrente(30);
pdireita(90);
end;
procedure coloreretangulo;
{Procedimento para colorir o retângulo}
begin
pfrente(1);
pdireita(90);
pfrente(1);
if opcao=1
then begin
mudecorpreenche (random(255),random(255),random(255));
end
else begin
mudecorpreenche(22,157,15);
end;
pinte;
ptras(1);
pesquerda(90);
ptras(1);
end;
procedure colorelosango;
{Procedimento para colorir o losango}
begin
pfrente(1);
if opcao=1
then begin
mudecorpreenche (random(255),random(255),random(255));
end
else begin
mudecorpreenche(255,255,0);
end;
pinte;
ptras(1);
end;
procedure colorecirculo;
{Procedimento para colorir o círculo}
begin
pfrente(1);
pdireita(90);
pfrente(1);
if opcao=1
then begin
mudecorpreenche (random(255),random(255),random(255));
end
else begin
mudecorpreenche(0,0,255);
end;
pinte;
ptras(1);
pesquerda(90);
pesquerda(1);
end;
{********************Programa principal********************}
begin
write('Escolha uma opcao(1-Bandeira Aleatória,2-Bandeira Original) ');
readln(opcao); {Opção a ser escolhida}
clrscr;
ar;
fazretangulo;
coloreretangulo;
un;
regulagemlosangoretangulo;
ul;
fazlosango;
colorelosango;
un;
regulagemcirculolosango;
ul;
fazcirculo;
colorecirculo;
un;
regulagemestrelascirculo;
ul;
fazestrelas;
dr;
end.
Comentário
É possível utilizar o programa Pascal para a criação de desenhos, através do uso de procedimentos e estruturas de controle seqüencial, repetitiva e alternativa. Sendo muito favorável a sua utilização em várias áreas do mercado de trabalho. Entre elas cito a área de engenharia, para a criação de plantas, e a as áreas de marketing, publicidade e propaganda, onde o visual tem muita valorização.
Assinar:
Postagens (Atom)



