RESUMO Como o prprio ttulo sugere este texto apresenta um panorama geral da linguagem de programao Logo. Neste, so mostradas de forma conjunta vrias primitivas relacionadas programao grfica e simblica, com o intuito de minimizar a segmentao existente entre o "universo da Tartaruga" e o "universo das listas". Embora o material possua um carter amplo, a abordagem de cada primitiva procura caracterizar suas peculiaridades, sua funcionalidade, incorporando um linguajar mais tcnico que auxilia o entendimento de alguns aspectos da atividade de programao. O material possui o contedo acima descrito em forma de texto e, tambm algumas sugestes de projetos sem, no entanto, esgot-los. Estes servem para desencadear, no leitor, idias de novos projetos. Embora os exemplos do material utilizem a implementao do Superlogo verso 3.0, todos eles podem ser definidos usando-se outras verses do Logo. NIED - Memo N o 35 2000 Tartaruga, Figuras, Palavras, Listas e Procedimento: Um primeiro passeio pelo Logo SuperLogo 3.0 Helosa Vieira da Rocha (e-mail: heloisa@dcc.unicamp.br) Fernanda M. P. Freire (e-mail: ffreire@unicamp.br) Maria Elisabette B.B. Prado (e-mail: bprado@unicamp.br) Ncleo de Informtica Aplicada Educao - Nied Universidade Estadual de Campinas - Unicamp Cidade Universitria "Prof. Zeferino Vaz" Prdio V da Reitoria 2 o Piso 13083-970 - Campinas - SP Telefones: ++ 55 (19) 788-8136 ou 788-7350 Fac-smile: ++ 55 (19) 788-8136 ou 788-7350 (Ramal 30) http://www.nied.unicamp.br CONTEDO Manipulando a tartaruga 2 Repetindo uma seqncia de aes 5 Outras possibilidades do Logo 6 Escrevendo na tela 6 Compreendendo a natureza dos parmetros 7 Conhecendo as operaes 8 Separando elementos 10 Buscando e contando elementos 13 Construindo estruturas 14 Concatenando elementos 16 Conhecendo os predicados 17 Conhecendo os operadores lgicos e relacionais 18 Definindo procedimentos 20 Estruturando um projeto simples 23 Consideraes Finais 30 Bibliografia 31 Tartaruga, Figuras, Palavras, Listas e Procedimento: Um primeiro passeio pelo Logo APRESENTAO Este texto resultado de nossa experincia no fornecimento de diversos cursos de programao Logo aos mais distintos usurios. fato conhecido que o aprendizado de programao Logo visto como necessariamente dividido em duas etapas: Logo grfico e Logo simblico. Isto tem conduzido uma estrutura de cursos bastante interessante. Existe um curso de Logo onde somente se trabalha no universo grfico da linguagem, e quando muito se introduz objetos de animao. Em seguida, quando solicitado, apresentado um curso denominado Logo Avanado, onde so trabalhadas as operaes com palavras e listas. Isto tem gerado um senso comum de que a linguagem Logo dividida em partes bastante diferentes e raramente, pode-se ver projetos englobando os assim divididos universos da linguagem, que na realidade so um s. E com isso, uma programao mais avanada de Logo raramente possvel. tambm fato conhecido a extrema dificuldade de se transpor a barreira criada entre as duas partes da linguagem. A maioria das pessoas que programam Logo dificilmente programam problemas que no sejam grficos. Assim, obtm-se uma viso distorcida do potencial de Logo enquanto uma linguagem de programao de propsito geral. Por esta razo, iniciamos em nossos cursos, com bastante sucesso, uma abordagem integrada da linguagem. O curso inicial de Logo no se restringe mais a comandos grficos e, sim, oferece um "passeio" significativo por todos os comandos e operaes da linguagem. Neste "passeio" procuramos ressaltar as diferenas conceituais entre as primitivas sem, contudo, separ-las em dois grandes conjuntos. Outro aspecto que tambm acrescentamos aos nossos cursos foi um tratamento mais tcnico da linguagem. Por ser Logo uma linguagem essencialmente dirigida a aprendizes, comum verificar que ela, mesmo em cursos de formao de profissionais, tratada com muita informalidade e, muitas vezes, com uma certa infantilidade. Acreditamos que no se pode ignorar que Logo computacional, e portanto formal e tcnica. Ignorar esses aspectos dificulta Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 2 o entendimento de muitos conceitos inerentes a qualquer linguagem de programao. Por exemplo, muito comum programadores de Logo terem como conceito de varivel somente o de parmetro. Comprovamos que a introduo precoce de conceitos como a natureza da primitiva, natureza dos parmetros, ordem de execuo de operaes, etc. no dificultam em nada o iniciante em programao, pelo contrrio, facilitam o entendimento do funcionamento da linguagem em que esto aprendendo a se expressar. Este texto a primeira parte do material de apoio que estamos utilizando para atender estes objetivos. importante frisar que simplesmente o uso do texto no ir viabilizar o que pretendemos. Existe associada toda uma postura pedaggica, pois de forma alguma pretendemos menosprezar a dificuldade que programar com autonomia em uma linguagem que possui, pelo menos, dois diferentes paradigmas. Manipulando a Tartaruga A tartaruga um cursor grfico que aparece no centro da tela grfica. Para fazer desenhos basta moviment-la na tela de modo que ela deixe traos pelo seu caminho. H quatro comandos bsicos que movimentam a tartaruga. Os comandos PARAFRENTE n o (PF n o ) e PARATRS n o (PT n o ) fazem a tartaruga andar e os comandos PARADIREITA n o (PD n o ) e PARAESQUERDA n o (PE n o ) giram a tartaruga 1 . Ao usar esses comandos necessrio especificar o nmero de passos ou a medida do grau do giro.
1 A maior parte dos comandos do Logo possui uma forma abreviada que simplifica a digitao. Aps a apresentao de cada comando adotaremos a forma abreviada do mesmo. Para maiores detalhes consulte o manual de referncia da implementao usada. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 3 Observe a seqncia dos comandos e acompanhe o efeito da mesma 2 . TAT PF 50 PD 90 PF 50 PE 45 PT 25 PD 45 A tartaruga definida por uma posio em relao a um sistema de coordenadas cartesianas (x, y) cujo ponto [0 0] representa o centro da tela grfica e por uma orientao em relao a um eixo imaginrio cujo ponto inicial 0. Os comandos PF e PT alteram a posio da tartaruga e os comandos PD e PE a sua orientao. Os nmeros que seguem os comandos PF, PT, PD, PE so chamados de parmetros ou entradas. Existem comandos em Logo que no precisam de parmetro como o comando TARTARUGA (TAT). Da mesma forma, h comandos que precisam de mais de um parmetro. No exemplo mostrado os parmetros usados so nmeros mas, um parmetro pode ser tambm uma palavra ou uma lista como veremos adiante. A omisso de um parmetro quando ele necessrio produz uma mensagem de erro. Para movimentar a tartaruga sem deixar traos usa-se o comando USENADA (UN) seguido de um comando que desloca a tartaruga. Analogamente, para apagar um trao na tela existe o comando USEBORRACHA (UB). Para retornar ao trao digita-se o comando USELPIS (UL). O comando DESAPAREATAT (DT) torna a tartaruga invisvel e o comando APAREATAT (AT) faz retornar a sua figura. Ambos so teis durante a realizao de um desenho. Se for necessrio recomear um desenho ou iniciar um novo pode-se usar o comando TAT que limpa a tela e recoloca a tartaruga na sua posio e orientao originais.
2 Os exemplos que sero apresentados usam como referncia o software SuperLogo verso 3.0. As primitivas acentuadas devero ser digitadas com letras minsculas. Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 4 As figuras abaixo mostram o uso desses comandos. TAT PF 10 UN PF 20 ----------------------------------------------------------------------------------------------------------------------- DT UL PF20 ----------------------------------------------------------------------------------------------------------------------- UB PT 20 AT ----------------------------------------------------------------------------------------------------------------------- TAT -------------------------------------------------------------------------------------------------- A cor do trao da tartaruga pode ser mudada alterando-se a cor do lpis da tartaruga atravs do comando MUDECL n o que significa mude a cor do lpis. Para se obter um melhor contraste pode-se modificar a cor da tela por meio do comando MUDECF n o que significa mude a cor do fundo. Cada nmero usado como parmetro desses comandos corresponde a uma cor pr-estabelecida pelas diferentes implementaes da linguagem Logo. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 5 Repetindo uma seqncia de aes Um comando bastante til do repertrio do Logo o comando REPITA. Ele usado quando se quer efetuar uma mesma ao, ou seqncia de aes, um determinado nmero de vezes. O REPITA precisa de dois parmetros: um nmero e uma lista. O nmero refere-se ao nmero de vezes que a lista deve ser repetida e a lista refere-se a ao que deve ser realizada. Portanto, a forma genrica desse comando : REPITA <nmero> <lista> O comando REPITA pode ser usado em vrios contextos, entre eles, para desenhar figuras geomtricas. REPITA 4 [ PF 50 PD 90 ] --------------------------------------------------------------------------------------------------------------------- REPITA 4 [ REPITA 4 [ PF 50 PD 90 ] PD 90 ] --------------------------------------------------------------------------------------------------------------------- Outro exemplo de uso do comando REPITA a execuo do comando REPITA 4 [ MUDECF 5 ESPERE 200 MUDECF 0 ESPERE 200 ] que provoca mudanas alternadas da cor do fundo da tela. Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 6 Outras Possibilidades do Logo Como vimos o lpis da tartaruga pode assumir diferentes cores. Com este recurso pode- se pintar reas perfeitamente delimitadas da tela, atravs do comando PINTE. Para pintar necessrio seguir alguns passos. Veja um exemplo de como proceder para pintar o interior de um quadrado: REPITA 4 [ PF 60 PD 90 ] UN PD 45 PF 20 UL MUDECP 0 PINTE Observe que para pintar a tartaruga deve ser levada, sem lpis, para dentro da regio a ser pintada. Em seguida para pintar ela deve estar usando lpis com a cor de preenchimento desejada. Para mudar somente a cor da linha de uma figura, a tartaruga deve estar sobre a mesma. Escrevendo na Janela Grfica Pode-se escrever na tela atravs do comando ROTULE. Este comando precisa de um parmetro que pode ser um nmero, ou uma palavra ou uma lista. Por exemplo, os comandos: ROTULE "LOGO UN PT 20 ROTULE [ Maria gosta de Jos ] PT 20 ROTULE 1998 produziriam como resultado: LOGO Maria gosta de Jos 1998 Observe que quando a entrada do comando ROTULE uma lista os colchetes no aparecem impressos na Janela Grfica. O comando ROTULE s imprime o contedo da lista usada como parmetro. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 7 Compreendendo a natureza dos parmetros Como j foi dito, existem comandos que precisam de parmetro. Esses parmetros possuem diferentes naturezas: podem ser nmeros, palavras ou listas. Palavra uma seqncia de caracteres precedida por aspas ( " ). Como por exemplo: "casa "123 "dx40 "345F Nmero um tipo especial de palavra, que dispensa o uso de aspas para facilitar as operaes aritmticas. Um nmero constitudo somente por dgitos, podendo ser um valor inteiro ou real (com ponto decimal). Exemplo: 123 354.5 1.5 48 Lista um conjunto de palavras, nmeros ou listas escrito entre colchetes ( [ ] ). Como por exemplo: [ abacaxi casa 32 ] Esta lista possui 3 elementos: os dois primeiros so palavras e o ltimo nmero; ou, todos so palavras. Observe que quando uma palavra elemento de uma lista no precisa vir precedida por aspas. [ [pastel] hamburger pizza ] O elemento de uma lista tambm pode ser uma lista como o caso do primeiro elemento desse exemplo. [ [coca cola] guaran suco ] Esta lista possui 3 elementos: o primeiro uma lista e os dois ltimos so palavras. Neste caso o primeiro elemento da lista tambm uma lista de dois elementos que so palavras. Existe a definio de lista vazia que denotada por [ ] e palavra vazia que denotada por aspas seguida por um espao em branco: " . Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 8 Conhecendo as Operaes Operaes so primitivas que possibilitam a passagem de informaes. As operaes retornam valores que so utilizados por comandos ou por outras operaes. H operaes que lidam com o universo da Tartaruga, outras que manipulam exclusivamente nmeros e que so denominadas de operaes aritmticas, e outras ainda, que lidam com palavras e listas. Vejamos alguns exemplos de cada uma delas: MOSTRE CF O comando MOSTRE (MO) imprime na Janela de Comandos o resultado da operao CORDOFUNDO (CF) que um nmero que corresponde cor do fundo da Janela Grfica. MOSTRE CL O comando MOSTRE imprime na Janela de Comandos o resultado da operao CORDOLPIS (CL) que uma lista com nmero correspondentes ltima cor assumida pelo lpis da tartaruga. MOSTRE D O comando MOSTRE imprime na Janela de Comandos o resultado da operao DIREO (D) que um nmero que corresponde ltima orientao da tartaruga. MOSTRE POS O comando MOSTRE imprime na Janela de Comandos o resultado da operao POSIO (POS) que uma lista que corresponde posio adotada pela tartaruga de acordo com o sistema de coordenadas cartesianas (eixo x e eixo y respectivamente). As operaes aritmticas como: + - * / precisam de parmetros sempre numricos e produzem como resultado, tambm, um nmero. Por exemplo: PF 50 * 2 Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 9 O comando PF desloca a tartaruga 100 passos que corresponde ao resultado da operao de multiplicao de 50 por 2 REPITA 6 [PT 50 PE 360/6] O comando PE gira a tartaruga 60 graus que corresponde ao resultado da operao de diviso. PT 5 + 6 + 15 + 5 O comando PT desloca a tartaruga 31 passos que o resultado das trs operaes de adio. PD 3 * D O comando PD gira a tartaruga um determinado nmero. Este nmero o resultado da operao de multiplicao que, por sua vez, usa como um dos parmetros o resultado da operao D. 3 Observe como o interpretador Logo faz a avaliao dessa instruo, supondo-se que a tartaruga estivesse orientada em 30. H um extenso conjunto de operaes que lidam com palavras e listas. Ele pode ser subdividido de acordo com diferentes funes: operaes que separam elementos, que buscam e contam elementos, que constrem estruturas e que concatenam elementos. A seguir apresentaremos as diferentes operaes de acordo com as suas funes:
3 Geralmente em Logo, usa-se parnteses para modificar a ordem de prioridade dos operadores. Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 10 Separando Elementos Existe, basicamente, dois tipos de operaes que facilitam a separao de elementos de palavras e listas. Operaes que retornam o primeiro ou o ltimo elemento de uma palavra ou de uma lista: PRIMEIRO (PRI) e LTIMO (ULT). E, operaes que retornam o restante de uma palavra ou de uma lista sem o primeiro ou sem o ltimo elemento da palavra ou da lista: SEMPRIMEIRO (SP) e SEMLTIMO (SU). Essas operaes no aceitam palavras ou listas vazias como parmetro. Veja alguns exemplos: MOSTRE PRI "abacaxi O comando MOSTRE imprime na Janela de Comandos o resultado da operao PRI que a palavra a MOSTRE PRI [ a b c ] O comando MOSTRE imprime na Janela de Comandos o resultado da operao PRI que a palavra a MOSTRE SP "abacaxi O comando MOSTRE imprime na Janela de Comandos o resultado da operao SP que a palavra bacaxi MOSTRE SP [a b c ] O comando MOSTRE imprime na Janela de Comandos o resultado da operao SP que a lista [ b c] MOSTRE SU amora O comando MOSTRE imprime na tela o resultado da operao SU que a palavra amor MOSTRE PRI 5476 O comando MOSTRE PRI 5476 imprime na Janela de Comandos o resultado da operao PRI que o nmero 5 Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 11 MOSTRE SU 6791 O comando MOSTRE imprime na Janela de Comandos o resultado da operao SU que o nmero 679 MOSTRE SU [2 4 6] O comando MOSTRE imprime na Janela de Comandos o resultado da operao SU que a lista [ 2 4 ] Observe que as operaes SP e SU retornam valores que so sempre da mesma natureza do seus parmetros. Isto , se o parmetro da operao SP for uma palavra o resultado ser uma palavra e se o parmetro for uma lista, o resultado ser uma lista. Pode-se tambm, combinar essas operaes para obter operaes mais sofisticadas. Suponha que se queira imprimir a letra m da palavra ameixa. Pode-se combinar as operaes da seguinte forma: MOSTRE PRI SP "ameixa A forma de execuo deste comando pode ser descrita pela seguinte seqncia de passos: l. O interpretador reconhece o comando MOSTRE e sabendo que ele precisa de um parmetro continua lendo a instruo... 2. Em seguida o interpretador encontra a operao PRI e reconhece que o seu resultado ser o parmetro do comando MOSTRE. 3. O interpretador sabe que a operao PRI precisa de um parmetro e continua ento lendo a instruo sob o controle da operao PRI. 4. A prxima palavra encontrada SP que reconhecida como o nome de uma operao que tambm precisa de um parmetro. O interpretador continua lendo sob o controle da operao SP. "Observe que MOSTRE e PRI esto suspensos aguardando os seus parmetros." 5. encontrada a palavra ameixa que reconhecida como parmetro da operao SP. 6. A operao SP resolvida retornando a palavra meixa. 7. Este valor passado para a operao PRI como seu parmetro. A operao PRI efetivada retornando o valor m. Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 12 8. Este valor o parmetro de MOSTRE que ento executado imprimindo na Janela de Comandos a palavra m. Veja a representao dessa avaliao: Pode-se obter o valor da coordenada y 4 da tartaruga atravs da operao POS. Para tanto necessria uma combinao de operaes do tipo: MOSTRE ULT POS Esquematicamente e supondo-se que a tartaruga esteja na posio [30 50], a avaliao do comando seria feita pelo interpretador Logo da seguinte maneira: Ou ainda, para se obter a letra c da lista [a b [ c d e ] f] pode-se fazer: MOSTRE PRI PRI SP SP [a b [c d e] f] ou MOSTRE PRI SU SU ULT SU [a b [c d e] f] MO imprime mna janela de comandos MO imprime 50na janela de comandos Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 13 Um aspecto importante dessa forma de notao o mecanismo de avaliao que precisa ser bem compreendido para se operar com palavras e listas de modo geral. Observe que todas as operaes em Logo, com exceo das aritmticas, so pr-fixas, ou seja, o operador escrito antes dos respectivos operandos. Buscando e Contando Elementos Para selecionar um determinado elemento de uma palavra ou de uma lista usa-se a operao ELEMENTO. Essa operao precisa de dois parmetros: um nmero e uma palavra ou lista. O nmero indica a posio do elemento desejado da palavra ou da lista. ELEMENTO nmero <palavra ou lista> O nmero indica a posio do elemento desejado da palavra ou da lista. Veja alguns exemplos: MOSTRE ELEMENTO 2 [casa [pneu carro]] O comando MOSTRE imprime na Janela de Comandos o resultado da operao ELEMENTO que a lista [pneu carro] MOSTRE ELEMENTO 5 "boneca O comando MOSTRE imprime na Janela de Comandos o resultado da operao ELEMENTO que a palavra c Quando se deseja saber o nmero total de elementos de uma palavra ou lista pode-se usar a operao NUMELEM. Essa operao s tem um parmetro que o prprio objeto. MOSTRE NUMELEM [[abc]] O comando MOSTRE imprime na Janela de Comandos o resultado da operao NUMELEM que o nmero 1 MOSTRE NUMELEM "abc
4 A operao COORY n retorna o valor da coordenada y da tartaruga . Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 14 O comando MOSTRE imprime na Janela de Comandos o resultado da operao NUMELEMENTO que o nmero 3. Construindo Estruturas Pode-se construir estruturas do tipo palavras atravs da operao PALAVRA (PAL) e do tipo listas atravs das operaes LISTA e SENTENA (SN). Todas essas operaes precisam de pelo menos dois parmetros 5. A seguir apresentamos exemplos de cada uma dessas operaes: MOSTRE PAL "cachorro "quente O comando MOSTRE imprime na Janela de Comandos o resultado da operao PAL que a palavra cachorroquente MOSTRE (PAL 34 57 28) O comando MOSTRE imprime na Janela de Comandos o resultado da operao PAL que a palavra 345728 A operao PAL precisa de parmetros que sejam palavras. A diferena entre as operaes LISTA e SN bastante sutil. Por essa razo apresentaremos o mesmo exemplo para as duas operaes para facilitar a comparao entre elas. Ambas as operaes aceitam tanto listas quanto palavras como entrada. MOSTRE LISTA 45 80 O comando MOSTRE imprime na Janela de Comandos o resultado da operao LISTA que a lista [45 80] MOSTRE SN 45 80 O comando MOSTRE imprime na Janela de Comandos o resultado da operao SN que a lista [45 80]
5 Pode-se aumentar o nmero de entradas dessas operaes usando-se parnteses antes de digitar o nome da operao e aps a ltima entrada. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 15 A operao LISTA coloca em uma lista os parmetros usados mantendo a natureza dos mesmos. Nesse exemplo, a operao SN idntica. O seu resultado uma lista cujos elementos so as palavras usadas como entradas. Veja outros exemplos: MOSTRE (LISTA [tudo] [bem] [Jos]) O comando MOSTRE imprime na Janela de Comandos o resultado da operao LISTA que a lista [[tudo] [bem] [ Jos]] MOSTRE (SN [tudo] [bem] [Jos]) O comando MOSTRE imprime na Janela de Comandos o resultado da operao SN que a lista [tudo bem Jos] MOSTRE LISTA [Bom] "Dia O comando MOSTRE imprime na Janela de Comandos o resultado da operao LISTA que a lista [[Bom] Dia] MOSTRE SN [Bom] "Dia O comando MOSTRE imprime na Janela de Comandos o resultado da operao SN que a lista [Bom Dia] Observe que nestes exemplos operao LISTA no altera a natureza das entradas; nesse exemplo, elas continuam sendo lista e palavra enquanto elementos do resultado final. O mesmo no acontece com a operao SN; o resultado final apresenta elementos que so palavras, independentemente da natureza original dos parmetros. Mais exemplos: MOSTRE LISTA [ 8 ] [3 [6] ] O comando MOSTRE imprime na Janela de Comandos o resultado da operao LISTA que a lista [[8] [3 [6]]] MOSTRE SN [ 8 ] [3 [6] ] O comando MOSTRE imprime na Janela de Comandos o resultado da operao SN que a lista [8 3 [6]] Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 16 Note como a operao SN trata os parmetros quando esses so listas constitudas por sub-listas. A operao retorna uma lista cujos elementos so palavras e listas. O parmetro que originariamente era lista torna-se uma palavra da lista final. A sub-lista do parmetro original torna-se uma lista na lista final. Resumindo, a operao LISTA retorna uma lista de suas entradas e a operao SN retorna uma lista dos elementos de suas entradas. Concatenando Elementos Qualquer palavra ou lista pode ser adicionada a uma outra lista. A operao JUNTENOINCIO (JI) adiciona uma palavra ou lista no incio de uma determinada lista e a operao JUNTENOFIM (JF) adiciona uma palavra ou lista no fim de uma dada lista. Portanto, o primeiro parmetro dessas operaes pode ser uma palavra ou lista e o segundo sempre uma lista. O resultado final dessas operaes sempre uma lista. Vejamos alguns exemplos: MOSTRE JF [coca] [[cachorro quente] hamburger pastel] O comando MOSTRE imprime na Janela de Comandos o resultado da operao JF que a lista [[cachorro quente] hamburger pastel [coca]] MOSTRE JI "fim [[comeo]] O comando MOSTRE imprime na Janela de Comandos o resultado da operao JI que a lista [ fim [comeo]] MOSTRE JF "incio [ ] O comando MOSTRE imprime na Janela de Comandos o resultado da operao JF que a lista [incio] MOSTRE JI 30 [ de maro de 1961] O comando MOSTRE imprime na Janela de Comandos o resultado da operao JI que a lista [30 de maro de 1961] MOSTRE JF PRI D SP POS Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 17 O comando MOSTRE imprime na Janela de Comandos o resultado da operao JF que uma lista. Veja a avaliao desta instruo supondo que a tartaruga est na posio [10 20] com a direo de 90: Conhecendo os Predicados So denominados de predicados as operaes que retornam valores booleanos identificados pelas palavras VERD e FALSO que representam verdadeiro e falso respectivamente. Por exemplo VISVEL uma operao que retorna a palavra VERD se a tartaruga est visvel na tela e FALSO caso contrrio e, portanto, um predicado. Dentre as operaes de manipulao de palavras e listas existem predicados definidos para saber se um determinado objeto uma palavra, uma lista, um elemento de uma estrutura etc. Por exemplo, LISTA um predicado que tem um parmetro que pode ser uma palavra ou uma lista e retorna VERD se for lista e FALSO caso contrrio. MO Imprime [20 9] 90 Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 18 PALAVRA outro predicado que tem um parmetro, que pode ser uma palavra ou lista. Retorna VERD se o parmetro for uma palavra e FALSO se for uma lista. Com funcionamento anlogo existe o predicado NMERO que verifica se o parmetro um nmero ou no. VAZIA tambm um predicado que tem como parmetro uma palavra ou lista. Retorna VERD se o parmetro for uma palavra vazia ou uma lista vazia e FALSO caso contrrio. MOSTRE (LISTA [abacaxi]) Imprime na Janela de comandos o resultado da operao LISTA [abacaxi], que Verd MOSTRE (LISTA abacaxi) Imprime na Janela de comandos o resultado da operao LISTA abacaxi, que Falso Conhecendo os Operadores Lgicos e Relacionais Os operadores lgicos: OU, E e NO operam sobre os predicados e produzem VERD ou FALSO de acordo com a seguinte tabela, denominada Tabela Verdade: PRED 2 PRED 1 OU E NO PRED 1 F F F F V F V V F V V F V F F V V V V F A leitura desta tabela se faz da seguinte maneira: considerando a primeira linha, tem-se que se PRED 1 (predicado 1) FALSO e PRED 2 (predicado 2) tambm FALSO, a operao OU aplicada aos dois predicados retorna o valor FALSO, a operao E tambm retorna FALSO e a operao NO PRED 1 retorna VERD. Observe que as operaes OU e E so binrias, ou seja, precisam de dois operandos, e a operao NO unria, precisa de um operando. MOSTRE E (NMERO 123) (PALAVRA PRI [ 123 456]) O comando MOSTRE imprime na Janela de Comandos a o resultado do operador lgico E que a palavra VERD. Neste caso os parnteses servem para clarificar a operao desejada. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 19 Acompanhe este esquema de avaliao: MOSTRE OU (LISTA "ana) (NMERO [680]) O comando MOSTRE imprime na Janela de Comandos o resultado do operador lgico OU que a palavra FALSO MOSTRE NO LISTA [5 6 7] O comando MOSTRE imprime na Janela de Comandos o resultado do operador lgico NO que a palavra FALSO Os operadores relacionais: maior ( > ), menor ( < ) e igual ( = ) so usados na construo de expresses lgicas que retornam VERD ou FALSO. Por exemplo: MOSTRE 738 > 725 O comando MOSTRE imprime na Janela de Comandos o resultado do operador relacional > que a palavra VERD MO imprime verd na janela de comandos Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 20 MOSTRE 7 = 7.0 O comando MOSTRE imprime na Janela de Comandos o resultado do operador relacional = que a palavra VERD MOSTRE "Paulo = [Paulo] O comando MOSTRE imprime na Janela de Comandos o resultado do operador relacional = que a palavra FALSO O operador relacional = possui tambm uma notao prfixa que SOIGUAIS. Veja mais exemplos: MOSTRE SOIGUAIS " [ ] O comando MOSTRE imprime na Janela de Comandos o resultado do operador relacional SOIGUAIS que a palavra FALSO MOSTRE SOIGUAIS [ ] [ elemento] O comando MOSTRE imprime na Janela de Comandos o resultado do operador relacional SOIGUAIS que a palavra FALSO MOSTRE SOIGUAIS (PRI POS ) COORX O comando MOSTRE imprime na Janela de Comandos o resultado do operador relacional SOIGUAIS comparando o resultado da operao PRI POS e da operao COORX , que VERD. Definindo Procedimentos Os comandos e operaes vistos at aqui fazem parte do conjunto de primitivas da linguagem Logo e podem ser usados na definio de novas palavras, isto , na criao de procedimentos que expandem o conjunto inicial de primitivas da linguagem de programao. A criao de novas palavras possvel graas atividade de programao. Embora o mecanismo de definir programas em Logo seja bastante simples, a atividade de programao extremamente interessante porque obriga o usurio a pensar no processo de soluo de um problema e no domnio de conhecimento que ser utilizado neste processo. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 21 Alm disso a nica maneira de se ter controle sobre o computador, de modo a faz-lo produzir qualquer resultado que se deseje. Na maioria das implementaes da linguagem Logo, para se definir um procedimento necessrio estar no modo de edio ou no editor de programas. Suponha que se queira definir um tringulo equiltero com o lado de tamanho 100. A seqncia de comandos a serem dados a Tartaruga poderia ser: PF 100 PD 120 PF 100 PD 120 PF 100 PD 120 ou REPITA 3 [ PF 100 PD 120 ] Se desejssemos definir um procedimento Logo que desenhasse este tringulo deveramos, dentro do modo de edio, teclar: APRENDA TRINGULO PF 100 PD 120 PF 100 PD 120 PF 100 PD 120 FIM ou APRENDA TRINGULO REPITA 3 [ PF 100 PD 120 ] FIM Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 22 Ao sairmos do modo de edio e retornarmos ao modo direto de uso podemos dar o comando TRINGULO para a Tartaruga, obtendo-se o resultado desejado, como pode ser visto na figura: Neste caso, dizemos que TRINGULO passa a fazer parte do elenco de comandos que a Tartaruga conhece assim como: UB, TAT etc.. Todo procedimento em Logo tem: 1. Uma linha ttulo que consiste no uso do comando APRENDA seguido de um nome 6 que referencia o procedimento 2. Um corpo, representado pelo conjunto de comandos que executaro aquele procedimento 3. Uma linha de finalizao que consiste no uso do comando FIM Portanto, um procedimento em Logo uma seqncia finita de comandos que se caracteriza por duas coisas: o uso do comando APRENDA seguido de um nome e o uso do comando FIM que assinala o trmino das instrues pertencentes ao procedimento. Existe em Logo o conceito de rea de trabalho que uma regio de memria do computador onde todos os procedimentos definidos durante uma sesso de trabalho ficam armazenados. No exemplo do TRINGULO, ao sairmos do modo de edio, o procedimento que define o tringulo fica armazenado na rea de trabalho enquanto se est usando o Logo. Se desejarmos um armazenamento permanente em disquete ou disco rgido isto dever ser feito usando-se comandos para manipulao de arquivos especficos de cada implementao. 7 Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 23 Estruturando um Projeto Simples Uma vez definido um procedimento ele pode ser usado na definio de outros procedimentos. Por exemplo, o procedimento TRINGULO visto anteriormente pode ser reutilizado nos seguintes contextos: APRENDA CATAVENTO REPITA 8 [ PF 100 TRINGULO PT 100 PD 45 ] FIM --------------------------------------------------------------------------------------------------------- APRENDA TREVO REPITA 4 [ TRINGULO PD 90 ] PT 150 FIM
6 O nome de um procedimento pode, a princpio, ser qualquer palavra mas, uma vez definido o procedimento, ele passa a ser mais uma palavra do repertrio do Logo cuja escrita precisa ser rigorosamente respeitada. 7 Vide manual de referncia sobre gerenciamento da rea de trabalho na implementao do SuperLogo. Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 24 Quando um procedimento usado como comando de um outro procedimento, diz-se que o primeiro um subprocedimento do segundo. No exemplo, TRINGUL0 um subprocedimento de TREVO. Suponhamos que se queira implementar procedimentos que desenhem uma casa como a da figura a seguir: princpio, pode-se criar um nico procedimento que descreve passo-a-passo as aes da Tartaruga. Poderamos, ento, definir o seguinte procedimento: APRENDA CASA PF 100 PD 90 PF 100 PD 90 PF 100 PD 90 PF 100 PD 90 PF 100 PD 30 PF 100 PD 120 PF 100 FIM Apesar de ser uma soluo, esta forma de definir nem sempre a mais adequada. No desenvolvimento de projetos mais complexos acaba-se tendo procedimentos excessivamente longos e de difcil entendimento. Imagine o trabalho do usurio para descobrir um giro da Tartaruga equivocado no meio de um procedimento de 50 linhas! Da a necessidade de introduzirmos a noo de estruturao de procedimentos. Vejamos ento, duas maneiras diferentes de estruturar o projeto casa: APRENDA CASA1 Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 25 PAREDE TELHADO FIM APRENDA PAREDE REPITA 5 [ PF 100 PD 90 ] FIM APRENDA TELHADO REPITA 3 [ PF 100 PE 120 ] FIM Esquematicamente, o interpretador Logo, funcionaria da seguinte maneira, durante o processo de execuo do procedimento CASA1: APRENDA PAREDE --- FIM APRENDA CASA1 PAREDE TELHADO FIM APRENDA TELHADO --- FIM O subprocedimento PAREDE uma variao de um quadrado. O nmero de repeties usado pelo comando REPITA deixa a Tartaruga em uma posio ideal, j adequada para a execuo do subprocedimento seguinte que TELHADO. Este, por sua vez, usa um giro para a esquerda que possibilita o acerto do TELHADO sobre a PAREDE. Note que essa soluo implica a antecipao da posio e da direo da Tartaruga ao trmino de um subprocedimento e incio do seguinte. Outra forma de estruturar o projeto casa seria assim: APRENDA CASA2 QUADRADO ACERTATAT TRINGULO FIM APRENDA QUADRADO Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 26 REPITA 4 [PF 100 PD 90 ] FIM APRENDA ACERTATAT PF 100 PD 30 FIM APRENDA TRINGULO REPITA 3 [ PF 100 PD 120 ] FIM Veja a representao esquemtica da execuo de CASA2 pelo interpretador Logo: APRENDA QUADRADO --- FIM APRENDA ACERTAT --- FIM APRENDA CASA2 QUADRADO ACERTAT TRINGULO FIM APRENDA TRINGULO --- FIM Neste caso, optou-se por um subprocedimento intermedirio - ACERTATAT - que faz o acerto da posio e direo da Tartaruga possibilitando o arranjo entre as duas figuras bsicas que compem o desenho original: QUADRADO e TRINGULO. Os procedimentos QUADRADO e TRINGULO possuem duas caractersticas bastante importantes do Logo: a modularidade e a transparncia. Diz-se que um procedimento modular quando ele independente do seu contexto de uso e, portanto, pode ser reutilizado em muitas outras situaes. Por exemplo, o QUADRADO poderia ser usado para fazer uma composio de quadrados como essa: Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 27 APRENDA COMPOSIO REPITA 3 [QUADRADO UN PF 25 PD 90 PF 25 UL PE 90] FIM Procedimentos como esse facilitam a atividade de programao. O prprio usurio vai criando um arsenal de ferramentas que ele j sabe como funciona. A transparncia de um procedimento parte da modularidade no sentido de que ela torna os procedimentos mais fceis de serem manipulados. Um procedimento grfico transparente faz com que a Tartaruga comece e termine o desenho na mesma posio e direo. Dessa maneira, o usurio no precisa se preocupar com a ltima posio ou direo da Tartaruga para idealizar o procedimento seguinte. Se ele dispe de peas modulares e transparentes ele passa a se ocupar dos procedimentos de ligao, anlogos ao procedimento ACERTATAT do exemplo anterior. Entretanto, modularidade e transparncia no se restringem direo e posio da Tartaruga. preciso compreender essas caractersticas de forma mais abrangente. Ao realizar um projeto computacional o usurio precisa pensar sobre o estado inicial dos vrios objetos que ele estiver manipulando: cor do fundo da tela, cor do lpis, arranjo inicial de posio e orientao, tartaruga com ou sem lpis, aparente ou no etc... Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 28 A DIVERSIDADE DE DESCRIES E A DIVERSIDADE DA ESTRUTURAO DE PROCEDIMENTOS Diferentes descries dos problemas permitem diversas formas de estruturar os procedimentos que solucionam os mesmos. Observemos a figura a seguir e algumas solues possveis: Descrio 1 A Tartaruga desenha dois quadrados sobrepostos. H um giro entre eles para dispor os quadrados. Em seguida, a Tartaruga desenha um feixe de semi-retas APRENDA QUADRADO REPITA 4 [ PF 100 PD 90 ] FIM APRENDA FEIXE REPITA 8 [ PF 50 PT 50 PD 45 ] FIM APRENDA QUADRADOS1 QUADRADO PF 50 PD 90 UN PT 20 PE 45 UL QUADRADO UN PD 45 PF 70 UL FEIXE FIM Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 29 Descrio 2 A Tartaruga desenha um feixe de semi-retas e, depois dois quadrados sobrepostos. Mantendo um giro entre eles. APRENDA FEIXE REPITA 8 [ PF 50 PT 50 PD 45 ] FIM APRENDA QUADRADO REPITA 4 [PF 100 PD 90 ] FIM APRENDA QUADRADOS2 FEIXE PT 50 PE 90 PT 50 QUADRADO PF 50 PD 90 UN PT 20 PE 45 UL QUADRADO FIM Descrio3 A Tartaruga desenha um quadrado pequeno e vira um pouco. No total ela desenha 8 quadrados e, portanto o giro entre casa quadrado de 45 graus. APRENDA QUAPEQUENO REPITA 4 [ PF 50 PD 90 ] FIM APRENDA QUADRADOS3 REPITA 8 [ QUAPEQUENO PD 45 ] FIM A leitura dos procedimentos nos permite observar a diversidade de descries na implementao de um mesmo projeto. Selecionamos apenas algumas das descries possveis neste contexto. Nosso objetivo no apontar a melhor descrio. Ao contrrio, queremos salientar a maleabilidade da atividade de programao que permite a cada pessoa utilizar, criar e descobrir suas prprias estratgias. A atividade de programao, assim compreendida, colabora no sentido de evitar o estabelecimento de solues padronizadas. Dessa forma, aquele que est aprendendo a programar pode Tartarugas, Figuras, Palavras, Listas e Procedimento : Um primeiro passeio pelo Logo 30 adquirir flexibilidade tanto na tarefa de resoluo de problemas quanto no conhecimento dos recursos oferecidos pela linguagem computacional. CONSIDERAES FINAIS Nosso intuito ao desenvolver este material foi o de organizar informaes computacionais relevantes para o leitor que deseja aprofundar e/ou formalizar seus conhecimentos sobre a linguagem Logo do ponto de vista computacional. No se trata, portanto, de um manual organizador de "aulas" de um curso de Logo. Seu uso independe de um curso e vice-versa. Muitas vezes temos usado este texto como um material de apoio durante os cursos; outras, somente o recomendamos aps a experincia do curso. Em outras palavras, sua leitura depende do contexto e do objetivo de uso da linguagem Logo. Note-se, por exemplo, que a definio de procedimentos iniciada quase no final deste material. Essa escolha restringe-se a um critrio de organizao de um material escrito e no abordagem utilizada em laboratrio durante a realizao de cursos. Helosa Vieira da Rocha, Fernanda M. P. Freire & Maria Elisabette Brisola Brito Prado 31 BIBLIOGRAFIA ABELSON, N. e ABELSON, A. Logo for the Macintosh: An Introduction Through Object Logo. Paradigm Software Inc, Cambridge, MA, 1992. Manual do SuperLogo, NIED, UNICAMP, 1994. PC Logo for Windows: Tutorial, Reference and Glossary. Harvard Associados Inc, 1994.