Table Of ContentProgramação para Arquitectura
AntónioMenezesLeitão
Setembro2012
ii
Conteúdo
Prefácio vii
1 Programação 1
1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 LinguagensdeProgramação . . . . . . . . . . . . . . 4
1.1.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 ALinguagemRacket . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Sintaxe,SemânticaePragmática . . . . . . . . . . . . 6
1.2.2 SintaxeeSemânticadoRacket . . . . . . . . . . . . . 7
1.2.3 OAvaliador . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 ElementosdaLinguagem . . . . . . . . . . . . . . . . . . . . 8
1.3.1 Números . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2 Combinações . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3 Indentação . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.4 AvaliaçãodeCombinações . . . . . . . . . . . . . . . 13
1.3.5 CadeiasdeCaracteres . . . . . . . . . . . . . . . . . . 14
1.4 DefiniçãodeFunções . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.1 Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 FunçõesPré-Definidas . . . . . . . . . . . . . . . . . . . . . . 20
1.6 AritméticaemRacket . . . . . . . . . . . . . . . . . . . . . . . 22
1.7 AvaliaçãodeNomes . . . . . . . . . . . . . . . . . . . . . . . 24
1.8 ExpressõesCondicionais . . . . . . . . . . . . . . . . . . . . . 25
1.8.1 ExpressõesLógicas . . . . . . . . . . . . . . . . . . . . 25
1.8.2 ValoresLógicos . . . . . . . . . . . . . . . . . . . . . . 25
1.9 Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.9.1 PredicadosAritméticos . . . . . . . . . . . . . . . . . 26
1.10 OperadoresLógicos . . . . . . . . . . . . . . . . . . . . . . . . 26
1.11 Predicadoscomnúmerovariáveldeargumentos . . . . . . . 27
1.12 Reconhecedores . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.13 Selecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.14 SelecçãoMúltipla . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.15 VariáveisLocais . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.16 VariáveisGlobais . . . . . . . . . . . . . . . . . . . . . . . . . 36
iii
iv CONTEÚDO
1.17 Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2 Modelação 39
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2 Coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.3 OperaçõescomCoordenadas . . . . . . . . . . . . . . . . . . 41
2.4 CoordenadasBidimensionais . . . . . . . . . . . . . . . . . . 44
2.5 CoordenadasPolares . . . . . . . . . . . . . . . . . . . . . . . 45
2.6 ModelaçãoGeométricaBidimensional . . . . . . . . . . . . . 49
2.7 EfeitosSecundários . . . . . . . . . . . . . . . . . . . . . . . . 53
2.8 Sequenciação . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.9 AOrdemDórica . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.10 ParametrizaçãodeFigurasGeométricas . . . . . . . . . . . . 59
2.11 Documentação . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.12 Depuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.12.1 ErrosSintáticos . . . . . . . . . . . . . . . . . . . . . . 67
2.12.2 ErrosSemânticos . . . . . . . . . . . . . . . . . . . . . 68
2.13 ModelaçãoTridimensional . . . . . . . . . . . . . . . . . . . . 69
2.13.1 SólidosPré-Definidos . . . . . . . . . . . . . . . . . . 69
2.14 CoordenadasCilíndricas . . . . . . . . . . . . . . . . . . . . . 82
2.15 CoordenadasEsféricas . . . . . . . . . . . . . . . . . . . . . . 84
2.16 ModelaçãodeColunasDóricas . . . . . . . . . . . . . . . . . 86
2.17 ProporçõesdeVitrúvio . . . . . . . . . . . . . . . . . . . . . . 88
3 Recursão 97
3.1 Introduçãosub . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.2 RecursãoemArquitectura . . . . . . . . . . . . . . . . . . . . 101
3.3 DepuraçãodeProgramasRecursivos . . . . . . . . . . . . . . 108
3.4 TemplosDóricos . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.5 AOrdemJónica . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.6 RecursãonaNatureza . . . . . . . . . . . . . . . . . . . . . . 133
4 Estado 139
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.2 Aleatoriedade . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.2.1 NúmerosAleatórios . . . . . . . . . . . . . . . . . . . 140
4.3 Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.4 EscolhasAleatórias . . . . . . . . . . . . . . . . . . . . . . . . 144
4.4.1 NúmerosAleatóriosFraccionários . . . . . . . . . . . 146
4.4.2 NúmerosAleatóriosnumIntervalo . . . . . . . . . . 147
4.5 PlaneamentoUrbano . . . . . . . . . . . . . . . . . . . . . . . 152
CONTEÚDO v
5 Estruturas 161
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.2 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.2.1 Pares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.2.2 RepresentaçãoGráficadePares . . . . . . . . . . . . . 165
5.3 TiposRecursivos . . . . . . . . . . . . . . . . . . . . . . . . . 166
5.4 RecursãoemListas . . . . . . . . . . . . . . . . . . . . . . . . 166
5.4.1 PredicadossobreListas . . . . . . . . . . . . . . . . . 171
5.4.2 Enumerações . . . . . . . . . . . . . . . . . . . . . . . 173
5.5 Polígonos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.5.1 EstrelasRegulares . . . . . . . . . . . . . . . . . . . . 176
5.5.2 PolígonosRegulares . . . . . . . . . . . . . . . . . . . 180
5.6 LinhasPoligonaiseSplines . . . . . . . . . . . . . . . . . . . . 182
5.7 Treliças . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.7.1 DesenhodeTreliças . . . . . . . . . . . . . . . . . . . 187
5.7.2 GeraçãodePosições . . . . . . . . . . . . . . . . . . . 192
5.7.3 TreliçasEspaciais . . . . . . . . . . . . . . . . . . . . . 197
6 Formas 203
6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
6.2 GeometriaConstrutiva . . . . . . . . . . . . . . . . . . . . . . 203
6.3 Superfícies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.3.1 Trifólios,QuadrifólioseOutrosFólios . . . . . . . . . 210
6.4 ÁlgebradeFormas . . . . . . . . . . . . . . . . . . . . . . . . 217
6.5 CortedeRegiões . . . . . . . . . . . . . . . . . . . . . . . . . 228
6.6 Extrusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
6.6.1 ExtrusãoSimples . . . . . . . . . . . . . . . . . . . . . 234
6.6.2 ExtrusãoaoLongodeumCaminho . . . . . . . . . . 245
6.6.3 ExtrusãocomTransformação . . . . . . . . . . . . . . 247
6.7 ColunasdeGaudí . . . . . . . . . . . . . . . . . . . . . . . . . 249
6.8 Revoluções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
6.8.1 SuperfíciesdeRevolução . . . . . . . . . . . . . . . . 253
6.8.2 SólidosdeRevolução . . . . . . . . . . . . . . . . . . . 258
6.9 InterpolaçãodeSecções . . . . . . . . . . . . . . . . . . . . . 263
6.9.1 InterpolaçãoporSecções . . . . . . . . . . . . . . . . . 263
6.9.2 InterpolaçãocomGuiamento . . . . . . . . . . . . . . 264
7 Transformações 267
7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.2 Translação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
7.3 Escala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.4 Rotação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
7.5 Reflexão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
7.6 AÓperadeSydney . . . . . . . . . . . . . . . . . . . . . . . . 272
vi CONTEÚDO
8 OrdemSuperior 283
8.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
8.2 FachadasCurvilíneas . . . . . . . . . . . . . . . . . . . . . . . 283
8.3 FunçõesdeOrdemSuperior . . . . . . . . . . . . . . . . . . . 289
8.4 FunçõesAnónimas . . . . . . . . . . . . . . . . . . . . . . . . 291
8.5 AFunçãoIdentidade . . . . . . . . . . . . . . . . . . . . . . . 297
8.6 FunçõesdeOrdemSuperiorsobreListas . . . . . . . . . . . . 300
8.6.1 Mapeamento . . . . . . . . . . . . . . . . . . . . . . . 300
8.6.2 Filtragem . . . . . . . . . . . . . . . . . . . . . . . . . 301
8.6.3 Redução . . . . . . . . . . . . . . . . . . . . . . . . . . 301
8.7 GeraçãodeModelosTridimensionais . . . . . . . . . . . . . . 303
9 RepresentaçãoParamétrica 315
9.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
9.2 ComputaçãodeFunçõesParamétricas . . . . . . . . . . . . . 316
9.3 ErrosdeArredondamento . . . . . . . . . . . . . . . . . . . . 318
9.4 Mapeamentoseenumerações . . . . . . . . . . . . . . . . . . 321
9.4.1 EspiraldeFermat . . . . . . . . . . . . . . . . . . . . . 322
9.4.2 CissóidedeDiocles . . . . . . . . . . . . . . . . . . . . 325
9.4.3 LemniscatadeBernoulli . . . . . . . . . . . . . . . . . 327
9.4.4 CurvadeLamé . . . . . . . . . . . . . . . . . . . . . . 329
9.5 Precisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
9.5.1 AmostragemAdaptativa . . . . . . . . . . . . . . . . 336
9.6 SuperfíciesParamétricas . . . . . . . . . . . . . . . . . . . . . 340
9.6.1 AFaixadeMöbius . . . . . . . . . . . . . . . . . . . . 341
9.7 Superfícies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
9.7.1 Helicoide . . . . . . . . . . . . . . . . . . . . . . . . . 351
9.7.2 Mola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
9.7.3 Conchas . . . . . . . . . . . . . . . . . . . . . . . . . . 355
9.7.4 Cilindros,Cones,eEsferas . . . . . . . . . . . . . . . 357
9.8 AAdegaYsios . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
9.9 NormaisaumaSuperfície . . . . . . . . . . . . . . . . . . . . 369
9.10 ProcessamentodeSuperfícies . . . . . . . . . . . . . . . . . . 372
10 Epílogo 381
Prefácio
Este livro nasceu em 2007, após um convite para leccionar uma disciplina
introdutória de Programação aos alunos de Arquitectura do Instituto Su-
perior Técnico (IST). A motivação original para a introdução da disciplina
no curso de Arquitectura era a mesma que para muitos outros cursos: à
semelhança da Matemática e da Física, a Programação tornou-se parte da
formaçãobásicadequalqueralunodoIST.
Comestapremissa,nãopareciaserumadisciplinaqueviesseadesper-
tar grande interesse nos alunos de Arquitectura, particularmente porque
era pouco clara a contribuição que ela pudesse ter para o curso. Para con-
trariaressaimpressãoinicial, decidiincorporarnoprogramadadisciplina
algumas aplicações da Programação em Arquitectura. Nesse sentido, fui
falar com alunos e docentes de Arquitectura, e pedi-lhes que me explicas-
semoquefaziamecomoofaziam. Oquevieouvifoirevelador.
Apesar dos enormes progressos que as ferramentas de Computer-Aided
Design (CAD) vieram trazer à profissão, a verdade é que a sua utilização
continua manual, laboriosa, repetitiva, aborrecida. A elaboração de um
modelo digital numa ferramenta de CAD implica uma enorme atenção ao
pormenor, impedindo a concentração no fundamental: a ideia. Frequen-
temente, os obstáculos encontrados acabam por forçar o Arquitecto a ter
de simplificar a ideia original. Infelizmente, esses obstáculos não termi-
namcomacriaçãodomodelo. Pelocontrário,agravam-sequandosurgea
inevitávelnecessidadedealteraçõesaomodelo.
Em geral, as ferramentas de CAD são concebidas para facilitar a reali-
zaçãodastarefasmaiscomuns,emdetrimentodeoutrasmenosfrequentes
oumaissofisticadas. Naverdade,paraoArquitectointeressadoemmode-
larformasmaiscomplexas,aferramentadeCADpoderáapresentarsérias
limitações. E,contudo,essaslimitaçõessãoapenasaparentes,poisépossí-
velultrapassá-lasporintermédiodaprogramação. Aprogramaçãopermite
queumaferramentadeCADsejaampliadacomnovascapacidades,elimi-
nandoosobstáculosqueimpedemotrabalhodoArquitecto.
A actividade da programação é intelectualmente muito estimulante,
masétambémumdesafio. Implicadominarumanovalinguagem,implica
adoptarumanovaformadepensar. Frequentemente,esseesforçofazmui-
tos desistirem, mas os que conseguem ultrapassar as dificuldades iniciais
vii
viii PREFÁCIO
ficamcomacapacidadedeirmaislongenacriaçãodesoluçõesarquitectó-
nicasinovadoras.
EstelivropretendeiraoencontrodessesArquitectos.
Capítulo 1
Programação
1.1 Introdução
A transmissão de conhecimento é um dos problemas que desde cedo pre-
ocupouahumanidade. Sendoohomemcapazdeacumularconhecimento
ao longo de toda a sua vida, é com desânimo que enfrenta a ideia de que,
comamorte,todoesseconhecimentoseperca.
Para evitar esta perda, a humanidade inventou toda uma série de me-
canismosdetransmissãodeconhecimento. Oprimeiro,atransmissãooral,
consistenatransmissãodoconhecimentodeumapessoaparaumgrupore-
duzidodeoutraspessoas,decertaformatransferindooproblemadaperda
de conhecimento para a geração seguinte. O segundo, a transmissão es-
crita,consisteemregistaremdocumentosoconhecimentoquesepretende
transmitir. Estaformatemagrandevantagemde,porumlado,poderche-
gar a muitas mais pessoas e, por outro, de reduzir significativamente o
riscodeseperderoconhecimentoporproblemasdetransmissão. Defacto,
a palavra escrita permite preservar por muito tempo e sem qualquer tipo
deadulteraçãooconhecimentoqueoautorpretendeutransmitir.
Égraçasàpalavraescritaquehojeconseguimoscompreendereacumu-
lar um vastíssimo conjunto de conhecimentos, muitos deles registados há
milharesdeanosatrás.
Infelizmente, nem sempre a palavra escrita conseguiu transmitir com
rigor aquilo que o autor pretendia. A língua natural tem inúmeras ambi-
guidadeseevoluisubstancialmentecomotempo,oquelevaaqueainter-
pretaçãodostextossejasempreumatarefasubjectiva. Querquandoescre-
vemosumtexto,querquandoolemoseointerpretamos,existemomissões,
imprecisões,incorrecçõeseambiguidadesquepodemtornaratransmissão
de conhecimento falível. Se o conhecimento que se está a transmitir for
simples, o receptor da informação, em geral, consegue ter a cultura e ima-
ginação suficientes para conseguir ultrapassar os obstáculos. No caso da
transmissão de conhecimentos mais complexos já isso poderá ser muito
1
2 CAPÍTULO1. PROGRAMAÇÃO
maisdifícil.
Quando se exige rigor na transmissão de conhecimento, fazer depen-
deracompreensãodesseconhecimentodacapacidadedeinterpretaçãode
quem o recebe pode ter consequências desastrosas e, de facto, a história
da humanidade está repleta de acontecimentos catastróficos cuja causa é,
tão somente, uma insuficiente ou errónea transmissão de conhecimento,
ouumadeficientecompreensãodoconhecimentotransmitido.
Para evitar estes problemas, inventaram-se linguagens mais rigorosas.
Amatemática,emparticular,tem-seobssessivamentepreocupadoaolongo
dosúltimosmilénioscomaconstruçãodeumalinguagemondeorigorseja
absoluto. Istopermitequeatransmissãodoconhecimentomatemáticoseja
muitomaisrigorosaquenasoutrasáreas,reduzindoaomínimoessenciala
capacidadedeimaginaçãonecessáriadequemestáaabsorveresseconhe-
cimento.
Paramelhorpercebermosdoqueestamosafalar,consideremosumcaso
concretodetransmissãodeconhecimento,porexemplo,ocálculodofacto-
rialdeumnúmero. Seassumirmos,comopontodepartida,queapessoaa
quemqueremostransmitiresseconhecimentojásabedeantemãooquesão
osnúmeroseasoperaçõesaritméticas,podemosdizer-lhequeparacalcular
o factorial de um número qualquer, terá de multiplicar todos os números desde a
unidade até esse número. Infelizmente, esta descrição é demasiado extensa
e, pior, é pouco rigorosa, pois não dá ao ouvinte a informação de que os
números que ele tem de multiplicar são apenas os números inteiros. Para
evitarestasimprecisõese,simultaneamente,tornarmaiscompactaainfor-
mação a transmitir, a Matemática inventou todo um conjunto de símbolos
e conceitos cujo significado deve ser compreendido por todos. Por exem-
plo,paraindicarasequênciadenúmerosinteirosentre1e9,aMatemática
permite-nos escrever 1,2,3,...,9. Do mesmo modo, para evitarmos falar
de“umnúmeroqualquer,”aMatemáticainventouoconceitodevariável: um
nome que designa qualquer “coisa” e que pode ser reutilizado em várias
partes de uma afirmação matemática com o significado óbvio de repre-
sentar sempre essa mesma “coisa.” Deste modo, a linguagem Matemática
permite-nos formular a mesma afirmação sobre o cálculo do factorial nos
seguintestermos:
n! = 1 2 3 n
× × ×··· ×
Será a definição anterior suficientemente rigorosa? Será possível inter-
pretá-la sem necessitar de imaginar a intenção do autor? Aparentemente,
simmas,naverdade,háumdetalhedadefiniçãoqueexigeimaginação: as
reticências. Aquelas reticências indicam ao leitor que ele terá de imaginar
o que deveria estar no lugar delas. Embora a maioria dos leitores imagine
correctamente que o autor pretendia a multiplicação dos sucessores dos
númerosanteriores,leitoreshaverácujaimaginaçãodelirantepoderálevá-
losatentarsubstituiraquelasreticênciasporoutracoisaqualquer.
Description:caso do AutoCAD, a linguagem de programação empregue é o AutoLisp, um dialecto de uma Assim, se quisermos intro- duzir um novo nome