Programando o Computador com PascaL:
Um ambiente para Auto-aprendizagem.
Resolução dos desafios propostos no Capítulo 4
Resolução do Desafio 4.1
program desafio41;
{Desafio 4.1}
{ desenha um triangulo usando
procedimento}
procedure triangulo;
var i : integer;
begin
pdireita(30);
for i := 1 to 3 do
begin
pfrente(100);
pdireita(120);
end;
end; {triangulo}
begin
{Chama (ativa)o procedimento triangulo}
triangulo;
end.
Resolução do Desafio 4.2
program desafio42;
{Desafio 4.2 }
{ Desenha 5 quadrados }
procedure quadrado;
Resolução dos Desafios do Capítulo 4
Página 1
var i : integer;
begin
for i := 1 to 4 do
begin
pfrente(100);
pdireita(90);
end;
end; {quadrado}
begin
{desenha um quadrado, posiciona e
desenha outro até completar os
cinco }
quadrado;
un;
pfrente(200);
ul;
quadrado;
un;
pfrente(100);
pdireita(90);
pfrente(300);
pdireita(90);
ul;
quadrado;
un;
pfrente(200);
ul;
quadrado;
un;
pdireita(90);
pfrente(100);
ul;
quadrado;
dr;
end.
Resolução dos Desafios do Capítulo 4
Página 2
Resolução do desafio 4.3
program Desafio43;
{ Desafio 4.3}
{ Declaração da procedure Quadrado}
Procedure Quadrado;
{ Este procedimento traça um quadrado de lado
igual a 100 }
var J :integer;
begin
for J := 1 to 4 do
begin
PFrente(90);
Pdireita(90);
end;
end; { Fim da declaração da procedure
Quadrado }
begin { Inicio do programa }
ul;
Quadrado;
{primeiro quadrado da base }
pdireita(90);
un;
pfrente(135);
pesquerda(90);
ul;
Quadrado;
Pesquerda(90);
Resolução dos Desafios do Capítulo 4
Página 3
un;
PFrente(70);
pdireita(90);
pfrente(90);
ul;
Quadrado;
Dr;
end. { Fim do Programa }
Resolução do Desafio 4.4
program desafio44;
{ Desafio 4.4}
{ Desenha quatro quadrados }
var j : integer;
{ controle do número de
vezes (quadrados) }
procedure quadrado;
var i : integer; { controle do número de lados}
begin
for i := 1 to 4 do
begin
pfrente(100);
pdireita(90);
end;
end; {quadrado}
procedure quadradoElinhaSemtraco;
{ desenha um quadrado visível
e uma linha invisível à sua esquerda}
begin
Resolução dos Desafios do Capítulo 4
Página 4
quadrado;
pfrente(100);
un;
pfrente(100);
ul;
end; {quadradoElinha}
begin
{ Programa principal:
chama quatro vezes o subprograma
quadradoElinha }
ul;
for j := 1 to 4 do
begin
quadradoELinhaSemtraco;
pesquerda(90);
end;
end.
Resolução do Desafio 4.5
program desafio45;
{ Desafio 4.5 }
var n : integer;
procedure quadrado;
{ Desenha um quadrado }
var i : integer;
begin
for i := 1 to 4 do
begin
pfrente(50);
pdireita(90);
end;
end; { quadrado }
procedure linhaEQuadrado;
{ desenha uma linha e um quadrado }
begin
Resolução dos Desafios do Capítulo 4
Página 5
pfrente(100);
pesquerda(90);
quadrado;
pdireita(90);
ptras(100);
end; { linhaEQuadrado}
begin
for n := 1 to 8 do
begin
linhaEQuadrado;
pdireita(45);
end;
end.
Resolução do desafio 4.6
program desafio46;
{ Desafio 4.6 }
procedure triangulo (lado : integer);
{ desenha um triangulo equilátero de lado dado
}
var i : integer;
begin
pdireita(30);
for i := 1 to 3 do
begin
pfrente(lado);
pdireita(120);
end;
end; {triangulo}
begin
{ faz as chamadas }
triangulo(150);
pesquerda(30);
triangulo(80);
pesquerda(30);
Resolução dos Desafios do Capítulo 4
Página 6
triangulo(30);
end.
Resolução do Desafio 4.7
program desafio47;
{ Desafio 4.7 }
procedure triangulo (lado : integer);
{ desenha um triangulo equilátero de lado
dado }
var i : integer;
begin
pdireita(30);
for i := 1 to 3 do
begin
pfrente(lado);
pdireita(120);
end;
end; {triangulo}
begin
{ faz as chamadas }
triangulo(150);
triangulo(80);
triangulo(30);
end.
Resolução do Desafio 4.8
program desafio48;
{ desafio 4.8}
var j : integer;
{variavel de controle do
programa principal
controla o número de
Resolução dos Desafios do Capítulo 4
Página 7
triângulos }
procedure triangulo (lado : integer);
{ desenha um triangulo equilátero de lado
dado }
var i : integer; { controla o número de
lados }
begin
pdireita(30);
for i := 1 to 3 do
begin
pfrente(lado);
pdireita(120);
end;
end; {triangulo}
begin
{ Programa principal }
for j := 1 to 5 do
begin
triangulo(100);
pfrente(100);
end;
end.
Resolução do Desafio 4.9
program Desafio49;
{ Desafio 4.9 }
{ Desenha uma casinha de lado dados }
procedure casinha (lado : integer);
procedure triangulo (lado : integer);
{ desenha um triangulo equilátero de lado
dado }
var i : integer;
begin
Resolução dos Desafios do Capítulo 4
Página 8
pdireita(30);
for i := 1 to 3 do
begin
pfrente(lado);
pdireita(120);
end;
end; {triangulo}
procedure quadrado( lado : integer);
{ procedimento quadrado de lado dado }
var i : integer;
begin
for i := 1 to 4 do
begin
pfrente(lado);
pdireita(90);
end;
end; { fazquadrado }
begin
{ desenha uma casinha }
quadrado(lado);
pfrente(lado);
triangulo(lado);
end; { casinha}
begin
casinha(100);
end.
{ desenha a casinha }
Resolução do Desafio 4.10
program desafio410;
{ Desafio 4.10 }
{ Desenha uma casinha de lado dado
e uma casinha invertida à direita
Resolução dos Desafios do Capítulo 4
Página 9
da primeira }
procedure casinha (lado : integer);
procedure triangulo (lado : integer);
{ desenha um triangulo equilátero de
lado dado }
var i : integer;
begin
pdireita(30);
for i := 1 to 3 do
begin
pfrente(lado);
pdireita(120);
end;
end; {triangulo}
procedure quadrado( lado : integer);
{ procedimento quadrado de lado dado }
var i : integer;
begin
for i := 1 to 4 do
begin
pfrente(lado);
pdireita(90);
end;
end; { fazquadrado }
begin
{ desenha uma casinha }
quadrado(lado);
pfrente(lado);
triangulo(lado);
end; { casinha}
begin
casinha(100);
pdireita(60);
pfrente(200);
pdireita(90);
casinha(100);
{ desenha a casinha }
{ desenha a casinha
invertida}
Resolução dos Desafios do Capítulo 4
Página 10
end.
Resolução do Desafio 4.11
program desafio411;
{ Desafio 4.11 }
{ Desenha uma rua com duas casinhas }
procedure casinha (lado : integer);
procedure triangulo (lado : integer);
{ desenha um triangulo equilátero de
lado dado }
var i : integer;
begin
pdireita(30);
for i := 1 to 3 do
begin
pfrente(lado);
pdireita(120);
end;
end; {triangulo}
procedure quadrado( lado : integer);
{ procedimento quadrado de lado dado }
var i : integer;
begin
for i := 1 to 4 do
begin
pfrente(lado);
pdireita(90);
end;
end; { fazquadrado }
begin
{ desenha uma casinha }
quadrado(lado);
pfrente(lado);
triangulo(lado);
end; { casinha}
Resolução dos Desafios do Capítulo 4
Página 11
begin
{ Programa principal }
{ Desenha a rua }
casinha( 100);
un;
pdireita(60);
pfrente(150);
pesquerda(90);
ul;
casinha(50);
un;
pdireita(60);
pfrente(160);
pdireita(135);
ul;
pfrente(300);
end.
Resolução do Desafio 4.12
program desafio412;
{ Desafio 4.12 }
procedure pentagono (lado : integer);
{ Desenha um pentágono}
var L : Integer;
begin
pesquerda(18);
for L := 1 to 5 do
begin
Pfrente (lado);
Pdireita(72);
end;
Resolução dos Desafios do Capítulo 4
Página 12
end; {pentagono}
begin
{ Programa principal }
{ ativa o procedimento pentagono}
pentagono (100);
end.
Resolução do Desafio 4.13
program desafio413;
{ Desafio 4.13}
procedure hexagono (lado : integer);
{ Desenha um hexágono}
var L : Integer;
begin
pesquerda(30);
{posiciona}
for L := 1 to 6 do
begin
Pfrente (lado);
Pdireita(60);
end;
end; {pentagono}
begin
{ Programa principal }
{ ativa o procedimento hexagono}
hexagono(80);
end.
Resolução dos Desafios do Capítulo 4
Página 13
Resolução do Desafio 4.14
program desafio414;
{ Desafio 4.14}
{ Desenha um octógono: umn polígono regular
de 8 lados}
procedure octogono (lado : integer);
{ Desenha um octógono}
var L : Integer;
begin
pesquerda(45);
{posiciona}
for L := 1 to 8 do
begin
Pfrente (lado);
Pdireita(45);
end;
end; {octogono}
begin
{ Programa principal }
{ ativa o procedimento octogono}
octogono(90);
end.
Resolução do Desafio 4.15
program desafio415;
{ Desafio 4.15}
{ Desenha um polígono regular
dados o número de lados, o comprimento
do lado e o ângulo externo do polígono }
procedure poligono (lado : integer;
numLados : integer;
angulo : integer);
{ Desenha um poligono regular}
Resolução dos Desafios do Capítulo 4
Página 14
{ lado: é o comprimento do lado }
{ numLados : é o número de lados do poligono }
{ angulo: é o ângulo externo do polígono }
var L : Integer;
begin
for L := 1 to numLados do
begin
Pfrente (lado);
Pdireita(angulo);
end;
end; {poligono}
begin
{ Programa principal }
{ ativa o procedimento poligono}
poligono( 40, 6, 60);{ desenha um hexagono }
poligono( 40, 8, 45);{ desenha um octógono }
end.
Resolução do Desafio 4.16
program desafio416;
{ Desafio 4.16}
{ Desenha um polígono regular
dados o número de lados, o comprimento
do lado e o ângulo externo do polígono }
procedure poligono (lado : integer;
numLados : integer;
angulo : integer);
{ Desenha um poligono regular}
{ lado: é o comprimento do lado }
{ numLados : é o número de lados do poligono }
{ angulo: é o ângulo externo do polígono }
var L : Integer;
begin
Resolução dos Desafios do Capítulo 4
Página 15
for L := 1 to numLados do
begin
Pfrente (lado);
Pdireita(angulo);
end;
end; {poligono}
begin
{ Programa principal }
{ ativa o procedimento poligono}
{ desenha um quadrado }
poligono( 40, 4, 90);
end.
Resolução do Desafio 4.17
program desafio417;
{ Desafio 4.17}
{ Desenha um triangulo equilátero como
um polígono regular,
dados o número de lados, o comprimento
do lado e o ângulo externo do polígono }
procedure poligono (lado : integer;
numLados : integer;
angulo : integer);
{ Desenha um poligono regular}
{ lado: é o comprimento do lado }
{ numLados : é o número de lados do poligono }
{ angulo: é o ângulo externo do polígono }
var L : Integer;
begin
for L := 1 to numLados do
begin
Pfrente (lado);
Pdireita(angulo);
end;
Resolução dos Desafios do Capítulo 4
Página 16
end; {poligono}
begin
{ Programa principal }
{ ativa o procedimento poligono}
{ desenha um triângulo equilátero }
poligono( 40, 3, 120);
end.
Resolução do Desafio 4.18
program Desafio418;
{ Desafio 4.18 }
procedure retangulo ( ladomaior : integer;
ladomenor : integer);
var i : integer;
begin
for i := 1 to 2 do
begin
pfrente(ladomaior);
pdireita(90);
pfrente(ladomenor);
pdireita(90);
end;
end; { retangulo}
begin
retangulo( 100, 200);
end.
Resolução dos Desafios do Capítulo 4
Página 17
Resolução do Desafio 4.19
program Desafio419;
procedure retangulo ( ladomaior : integer;
ladomenor : integer);
var i : integer;
begin
for i := 1 to 2 do
begin
pfrente(ladomaior);
pdireita(90);
pfrente(ladomenor);
pdireita(90);
end;
end; { retangulo}
begin
retangulo( 100, 100);
end.
Resolução do desafio 4.20
program Desafio420;
{Desafio 4.20 }
{ Desenha uma série de oito poligonos
regulares, começando do octógono e
diminuindo o número de
lados até chegar ao triângulo }
var j : integer;
Resolução dos Desafios do Capítulo 4
Página 18
procedure poligono( lado : integer;
numeroDeLados : integer);
{Desenha um poligono regular de lado dado }
var
i
: integer;
begin
pesquerda( abs ( 90 –
( 360 div numeroDeLados)));
for i := 1 to numeroDeLados do
begin
pfrente(lado);
pdireita (360 div numeroDeLados);
end;
end; {poligono}
begin
for j := 3 to 8 do
begin
poligono( 50,j);
un;
pfrente(100 );
ul;
end;
dr;
end.
Resolução do desafio 4.21
Resolução dos Desafios do Capítulo 4
Página 19
Resolução do desafio 4.22
program Desafio422;
procedure poli( lado, angulo, arestas :
integer);
var i : integer;
begin
for i := 1 to arestas do
begin
pfrente(lado);
pdireita(angulo);
end;
end; {Poli}
begin
un;
pesquerda(90);
pfrente (400);
mudedirecao(90);
ul;
poli( 100, 151,31);
un;
pfrente (180);
ul;
mudedirecao(90);
poli(100,144,5);
un;
pfrente (180);
ul;
mudedirecao(90);
poli(100,90,4);
un;
pfrente (180);
ul;
mudedirecao(90);
poli(100,160,9);
end.
Fim da resolução dos desafios do capítulo 4
Resolução dos Desafios do Capítulo 4
Página 20
Download

Programando o Computador com PascaL: Um ambiente para Auto