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