You are on page 1of 396

Sumrio Apresentao, p. 1 Breve comentrio sobre a linguagem de programao Logo J. A. Valente Requisitos mnimos do sistema, p. 3 Instalao e inicializao, p.

3 Por onde comear, p. 4 Kit Educacional Multimdia SuperLogo, p. 7 Exemplos e Projetos Suporte tcnico, p. 102 Ajuda do SuperLogo, p. 103 Crditos, p. 395 Apresentao Breve comentrio sobre a linguagem de programao Logo Por Jos Armando Valente

Logo uma linguagem de programao que foi desenvolvida no Massachusetts Institute of Technology (MIT), Boston, Estados Unidos, por um grupo de pesquisadores liderados pelo professor Seymour Papert. Como linguagem de programao, serve para nos comunicarmos com o computador. Entretanto, apresenta caractersticas especialmente elaboradas para implementar uma metodologia de ensino baseada no computador (metodologia Logo) e para explorar aspectos do processo de aprendizagem. Principalmente este ltimo objetivo entender o processo de aprendizagem faz com que o Logo seja uma linguagem de programao bastante simples de ser utilizada e assimilada. O Logo foi desenvolvido por volta de 1968. Conta-se que a idia surgiu durante um jantar em que estavam Seymour Papert, Wallace Feurzeig (diretor do grupo de Tecnologia Educacional da Bolt, Beranek e Newman BBN), Cynthia Solomon (pesquisadora pertencente BBN) e Daniel Bobrow (na poca, estudante de ps-graduao do MIT). Nesse jantar algum props a criao de uma linguagem de programao que fosse bastante poderosa e capaz de substituir o Basic. Dessa idia nasceu Logo, uma linguagem com capacidade de processar listas e de permitir a criao de novos procedimentos. Entretanto, nessa poca o Logo no dispunha de capacidade grfica, j que os computadores de ento no possuam essa facilidade. Por meio da sua

utilizao e inmeras pesquisas, Papert conseguiu dar quele Logo uma nova roupagem e uma estrutura filosfica, sendo por isso considerado hoje o pai do Logo. O Logo tem, assim, duas razes: uma computacional e outra filosfica. Do ponto de vista computacional, as caractersticas do Logo que contribuem para que ele seja uma linguagem de programao de fcil assimilao so: explorao de atividades espaciais, fcil terminologia e a capacidade de se criar novos termos ou procedimentos. A explorao de atividades espaciais tem sido a porta de entrada do Logo. Essas atividades permitem o contato quase que imediato do aprendiz com o computador. Essas atividades espaciais facilitam muito a compreenso da filosofia pedaggica do Logo por parte dos especialistas em computao. Por outro lado, elas fazem com que os aspectos computacionais da linguagem de programao Logo sejam acessveis aos especialistas em educao. Com as atividades espaciais, a proposta utilizar esses conceitos nas atividades de comandar uma tartaruga mecnica a se mover no espao ou atividades de desenhar na tela do computador (atividades grficas). Isso se deve ao fato de essas atividades envolverem conceitos espaciais adquiridos nos primrdios da nossa infncia, quando comeamos a engatinhar. Entretanto, esses conceitos permanecem no nvel intuitivo. Por exemplo, a criana aprende, sem grande dificuldade, a ir da sua casa at a padaria. Essa atividade desenvolvida sem ela se dar conta de que est usando conceitos como distncia, ngulo reto para virar esquinas etc. A proposta da atividade grfica do Logo utilizar esses conceitos nas atividades de comandar a tartaruga. No processo de comandar a tartaruga para ir de um ponto a outro, esses conceitos devem ser explicitados. Isso fornece as condies para o desenvolvimento de conceitos espaciais, numricos, geomtricos, uma vez que a criana pode exercit-los, depur-los e utiliz-los em diferentes situaes. Os domnios de aplicao do Logo esto em permanente desenvolvimento, com o objetivo de atrair um maior nmero de usurios e motivar os alunos a usar o computador para elaborar as mais diferentes atividades. Entretanto, o objetivo no deve ser concentrado no produto que o aluno desenvolve, mas na filosofia de uso do computador e como ele est facilitando a assimilao de conceitos que permeiam as diversas atividades. Portanto, o processo de ensino-aprendizagem revela-se o cerne do Logo.

Requisitos mnimos do sistema Computador 486/66 ou superior Windows 95, 98, NT ou superior 16 MB de memria RAM Disco rgido com 10 M B de espao livre Unidade de CD-ROM de dupla velocidade Placa de vdeo SVGA, 256 cores Placa de som compatvel com Windows Mouse Instalao e inicializao do programa O Kit Educacional Multimdia SuperLogo executado a partir da sua unidade de CD-ROM. Porm, so necessrios 10 M B de espao no disco rgido para o armazenamento de alguns arquivos de programa. O programa de instalao cria automaticamente um diretrio no seu disco rgido principal chamado C:\Arquivos de programas\SuperLogo. O Kit Educacional Multimdia SuperLogo deve ser iniciado a partir da rea de trabalho do Windows. Para instalar o programa 1. Verifique se o Windows 95 (ou superior) est aberto e em execuo no seu computador. 2. Insira o CD do Kit Educacional Multimdia SuperLogo na unidade de CDROM. Depois de alguns instantes, uma caixa de dilogo exibida. Caso no rode, v em Iniciar\Executar\D:\Setup. Para executar a interface de apresentao, clique em D:\SuperLogo.exe. 3. Clique em Instalar. 4. Siga as instrues na tela para completar o processo de instalao. 5. Clique no boto Iniciar. Escolha Programas. Em seguida escolha SuperLogo.

Por onde comear Os principiantes podem iniciar o uso do Logo sem precisar ter conhecimento algum de programao; basta aprender a comandar a tartaruga. Se souber como utilizar a tartaruga grfica, ela permitir que o usurio desenvolva conhecimentos de geometria. surpreendente como voc pode dominar os conceitos de programao desde que compreenda o conceito da tartaruga. Observe alguns exemplos simples: Desenhe um quadrado utilizando a tartaruga: PARAFRENTE 100 PARADIREITA 90 PARAFRENTE 100 PARADIREITA 90 PARAFRENTE 100 PARADIREITA 90 PARAFRENTE 100 PARADIREITA 90 Isso foi fcil, mas exigiu muita digitao; vamos tentar novamente: REPITA 4 [PF 100 PD 90] Trata-se do mesmo quadrado feito de duas formas diferentes. Observamos que havia redundncia de cdigo em nosso primeiro exemplo; assim, pedimos para o Logo repetir a mesma sentena quatro vezes. Tambm usamos formas abreviadas dos mesmos comandos. Mas ainda podemos melhorar. Quando um item muito utilizado, ele pode ser programado e simplesmente ser chamado quando necessrio. Veja o exemplo: EDITE quadrado <Editor ir aparecer> APRENDA QUADRADO REPITA 4 [PF 100 PD 90] FIM <fechar o Editor e salvar> QUADRADO

QUADRADO Para que servem os comandos APRENDA e FIM? Eles definem um procedimento (um pequeno programa) para desenhar um quadrado. O APRENDA pode ser compreendido como uma instruo do tipo faa alguma coisa; o FIM finaliza a instruo do APRENDA. Uma vez que o quadrado foi definido, pode ser chamado mais vezes. Isso tudo o que voc precisa para obter um quadrado agora basta digitar o nome do procedimento: quadrado. Mas h um problema: ele desenha apenas quadrados de 100 por 100. No seria melhor se pudssemos desenhar quadrados de qualquer tamanho? Veja como fcil: EDITE quadrado APRENDA QUADRADO :tamanho REPITA 4 [PF :tamanho PD 90] SAIR QUADRADO 100 QUADRADO 200 Observe que tudo o que fizemos foi substituir 100 por uma varivel chamada :tamanho. Agora, quando chamamos o quadrado, precisamos especificar o tamanho desejado. No exemplo acima pedimos para o LOGO desenhar um quadrado de 100 por 100 e outro de 200 por 200. Observe que os dois-pontos : em frente palavra tamanho informam ao Logo que tamanho uma varivel. Mas ainda podemos melhorar. Voc pode perguntar: o que h de errado agora? Bem, no seria melhor se pudssemos desenhar outra coisa alm de um quadrado, como, por exemplo, um tringulo? APRENDA TRINGULO :tamanho REPITA 3 [PF :tamanho PD 120] FIM APRENDA QUADRADO :tamanho REPITA 4 [PF :tamanho PD 90] FIM APRENDA PENTGONO :tamanho REPITA 5 [PF :tamanho PD 72]

FIM TRINGULO 100 QUADRADO 100 PENTGONO 100 Isso exige muita digitao (e programadores no gostam de digitar). Por que isso acontece? Porque muitas coisas podem sair errado e, quando preciso fazer uma alterao, ela geralmente tem de ser feita em diversos lugares. Nem sempre procedimentos menores so melhores, mas geralmente ajudam. Vamos tentar de novo. APRENDA POLGONO :tamanho :lados REPITA :lados [PF :tamanho PD 360.0/:lados] FIM POLGONO 100 3 POLGONO 100 4 POLGONO 100 5 O que aconteceu com TRINGULO, QUADRADO e PENTGONO? POLGONO age agora como todos os polgonos possveis, de lados iguais e com apenas uma linha de cdigo! Agora a seqncia repetida tantas vezes quanto estiver definido na varivel :lados e gira (PD) a quantidade de graus apropriada para aquela forma. Voc pode no acreditar, mas isso PROGRAMAO. Agora que j temos um programa, salv-lo no disco rgido uma tima idia. Todas as edies foram feitas dentro da memria do Logo, e no no disco. Veja como fcil salvar seu trabalho: SALVE FORMAS.LG SAIR Se voc for utilizar essas definies novamente, ter de recarreg-las. Como fazer para recarregar seu trabalho? CARREGUE FORMAS.LG

Kit Educacional Multimdia SuperLogo Exemplos e Projetos

O Kit Educacional Multimdia SuperLogo oferece um ambiente pleno de multimdia, incorporando todos os recursos do Windows e vrias novas tecnologias, como manipulao de placa de som e comandos de TCP/IP (protocolo de comunicao via Internet). Alm disso, o Kit contm dois conjuntos de programas: Exemplos e Projetos. Os programas de Exemplos mostram como utilizar e explorar alguns conceitos relativamente simples de programao, que do margem a muitas variaes e efeitos interessantes. Os Projetos so exemplos multidisciplinares concretos, que podem ser aproveitados na ntegra ou usados como base para a construo de novas aplicaes. Os programas computacionais do Kit devem ser vistos como pequenas sementes que crescem de acordo com os interesses e objetivos de cada usurio. Eles podem servir de referncia para que cada usurio crie seus prprios projetos. Pode-se, por exemplo, reformular um determinado projeto para atender a uma necessidade educacional especfica ou para entender mais a fundo um conceito computacional.

1. Barrasobe, barradesce 2. Com fuso ou confuso? 3. Outra vez, outra vez, olha o que a Tat fez 4. PegaRato 5. Pintura mutante 6. Projetando o Universo 7. Tecendo anis 8. Viagem em 3Dimenses

barrasobe, barradesce

Nome do arquivo: bar_sobedesce.lgo / ordena_bar.lgo Comando para executar: demograf / demosort

Descrio geral Essas duas ilustraes trabalham com grficos de barras. O primeiro monta grficos de barras e varia os dados aleatoriamente, montando um novo grfico com esses dados. O segundo coloca na tela barras de tamanhos aleatrios e ordena essas barras em ordem decrescente. A ordenao feita visualmente. Com relao ao segundo programa, o usurio deve fornecer a quantidade de barras que deseja observar. Quanto menor o nmero delas, mais rpida ser a ordenao. Ambos os projetos trabalham com o conceito de vetor, bastante semelhante ao de listas. Para o programa de montagem do grfico de barras, interessante observar que o vetor organizado para que os valores maiores se posicionem no centro do vetor, ficando tambm centralizado no grfico. J para o segundo projeto, isso no deve ser feito, uma vez que o objetivo do programa ordenar o vetor. Os nmeros so distribudos aleatoriamente pelo vetor e a princpio so vistas barras de diferentes tamanhos dispostas na janela grfica. O procedimento de ordenao inicializado e as barras comeam a se mover para as suas respectivas posies. O mtodo de ordenao utilizado o Bublesort, ou mtodo da bolha, que consiste em percorrer o vetor de valores n vezes (n o nmero de elementos), fazendo uma verificao com o prximo elemento do vetor, caso este prximo seja maior (ou menor, caso a ordenao seja crescente ou decrescente), e depois trocando-se as posies desses dois

elementos. Assim, ao final de cada passo, pelo menos um elemento estar em sua posio correta. Uma sugesto para o segundo programa alter-lo de tal forma que se faa a verificao das trocas de posio. Quando o algoritmo percorrer todo o vetor e no fizer nenhuma troca, isso significa que j est ordenado, evitando verificaes redundantes. Em um nvel mais avanado, poderamos utilizar outros algoritmos de ordenao. Que tal tentar tambm fazer um programa que ordene alfabeticamente uma lista de palavras dadas? Estrutura geral
Demograf
(Chamada do programa dos grficos)

Grfico_barras
(Monta o grfico)

Inicia_vetor
(Cria vetor e zero elementos)

Registro
(Ajusta vetor)

Uma_barra
(Desenha uma barra)

Dados_vetor
(Cria valor para vetor)

Um_valor
(Cria valor aleatrio)

Demosort
(Procedimento principal)

Monta_tabela
(Cria vetor)

Ordena
(Ordena tabela)

grfico_barras.especial
(Monta grfico)

Umabarra.especial
(Desenha uma barra)

Ordena.umpasso
(Percorre vetor uma vez)

Ordena.par
(Ordena par de elementos)

Trocapos
(Inverte posio de dois elementos)

Referncia: e-mail enviado lista logo-l@gsn.org por Fred Gilham (gilham@csl.sri.com).

Com fuso ou Confuso? Nome do arquivo: Mundo.lgo Comando para executar: Mapa ou apresentao Descrio geral Um excelente exemplo de programa para introduzir conceitos de fusos horrios. O programa simula a rotao do planeta. Note que o mapa dividido fisicamente em 24 partes iguais, mostrando porm a diviso poltica dos fusos. O usurio deve digitar mapa na linha de comandos, para visualizar apenas o modo de rotao, ou ento apresentao, para ver uma pequena apresentao que mostra um pouco mais sobre os fusos horrios. Este programa mostra a facilidade que o SuperLogo oferece ao trabalhar com diversas figuras (bitmaps), pois cada fuso horrio visto na tela um bitmap diferente. Essa facilidade est centrada no comando mudendicebitmap que cria diversas reas de transferncia para que as figuras possam ser coladas posteriormente na janela grfica. Quando o modo de rotao se inicia, o programa carrega os 24 bitmaps dos respectivos fusos e um bitmap para o rodap que mostra o horrio em cada fuso. Depois de carregados, os bitmaps so colados na janela grfica um ao lado do outro, para a formao do mapamndi. Durante a rotao, cada bitmap recortado e colado na posio do bitmap anterior a ele, fazendo isso continuamente e dando-se a impresso de movimento do globo. No modo apresentao, existem linhas apontando para os pontos dos quais se deseja falar. Neste caso, a movimentao do mapa se d apenas quando necessrio. O conceito de fusos horrios no to simples de se entender. Este projeto pode ajudar bastante. Pode-se tambm fazer uso do Logo-3d para mostrar o planeta na forma esfrica, melhorando o entendimento do porqu dos fusos horrios.

Estrutura geral
Mapa
(Procedimento principal)

Carregarfuso
(Carrega bitmaps de rodap)

Indicebit
(Carrega bitmaps dos fusos)

Rotao
(Troca bitmaps de posio)

Criamapa
(Cola os bitmaps)

Outra vez, outra vez, olhe o que a Tat fez Nome do arquivo: Outravez.lgo Comando para executar: Outravez

Descrio geral A prpria natureza do fractal recursiva. Portanto, o ponto forte do exemplo a capacidade que o SuperLogo tem de lidar com procedimentos recursivos. Este exemplo demonstra 10 tipos de desenhos que utilizam a recurso grfica.

O usurio ir visualizar uma apresentao completa de todos os tipos de fractais que contm este programa por meio do procedimento Fractais. Para visualizar individualmente cada fractal, basta digitar o nome do procedimento que gera cada um deles (consulte a estrutura geral para ver os nomes). Crie novos procedimentos recursivos utilizando figuras geomtricas simples (tringulo, quadrado). Ao ligar essas figuras de tamanhos diferentes voc ter efeitos bastante interessantes. Por exemplo: tente criar um simples quadrado de maneira recursiva. Outra figura que pode ser gerada recursivamente uma espiral. Preste ateno na condio de parada da recurso para evitar chamadas sem fim do procedimento (recurso infinita). Analise os procedimentos, modifique os parmetros de chamada e tente entender os efeitos alcanados.

Estrela

Cruzacruza

Floco de Neve

Tapete

Tringulos

Von Koch

rvores

Colcha

Carpete

Estrutura Geral

Carpete
(Chamada do carpete)

Fractais
(Procedimento Principal)

Cruzacruza
(Chamada do cruzacruza)

Carpete_vira
(Rotaciona 90 graus)

rvore1 Carpete_anda
(anda com a Tat) (Chamada da rvore)

Carpete_preencha
(Pinta quadrados)

Vk8 Flocodeneve
(Chamada do Floco de neve) (Chamada para o Vk

rvore2
(Chamada da rvore)

Flocodeneve_elevao
(Desenha as elevaes do floco)

vk8_gen
(Gera o fractal de Von Koch)

Tapete
(Chamada do tapete)

Colcha
(Chamada da Colcha)

Estrela
(Chamada da estrela)

Colcha_triangulo
(Desenha tringulo da colcha)

Tapete_fractal
(Gira Tat de 60 graus)

Estrela_draw
(Repete desenho do tringulo de estrela)

Tapete_recurso
(Procedimento recursivo do tapete)

Estrela_monta
(Desenha tringulo estilizado)

tapete_tringulo
(Desenha tringulos para o tapete)

Pega Rato
Nome do arquivo: Andetat.lgo Comando para executar: Andetat Descrio geral Este programa faz com que a tartaruga se movimente em direo posio do ponteiro do mouse. Durante o movimento ela deixa um rastro com cores variadas, escolhidas aleatoriamente pelo prprio programa. A cada passo da tartaruga verificada se a posio desta igual posio do ponteiro do mouse. Quando coincidem, uma mensagem emitida e o programa pra. O controle sobre as atividades do mouse o ponto forte desse projeto, que consta basicamente deste controle: de acordo com a posio do ponteiro a direo da tartaruga alterada, tendo-se a impresso de que a tartaruga est tentando pegar o ponteiro. Outro aspecto interessante deste projeto reside no fato de que o corpo principal consta de apenas um procedimento, ou seja, com poucas linhas de cdigo possvel fazer coisas bastante interessantes no SuperLogo. Que tal implementar este procedimento para duas tartarugas? Voc pode deixar o trao da tartaruga de uma nica cor e controlar se ela j passou por determinado ponto. Assim, possvel implementar um procedimento que no permita que a tartaruga passe atravs de um trao deixado por ela: trata-se do conceito do conhecido jogo Cobras. Estrutura geral

Andetat
(Procedimento nico)

Pintura mutante Nome do arquivo: FigurasDegrade.lgo / Mosaico.lgo Comando para executar: Efeitos / Mosaico

Descrio geral O principal objetivo dessas ilustraes demonstrar a capacidade e as possibilidades de trabalho com cores usando o SuperLogo. A primeira delas mostra algumas figuras geomtricas coloridas em construo, utilizando uma determinada seqncia de cores que d a impresso de degrade. A segunda ilustrao cria figuras geomtricas aleatrias com cores tambm aleatrias formando um mosaico na janela grfica. Tente aumentar o nmero de figuras geomtricas apresentadas, acrescentando diferentes sons para cada uma delas e fazendo uma associao de cores, figuras e sons.

Estrutura geral Figuras degrade


Efeitos
(Procedimento principal)

Hexagonodegrade
(Desenha hexgonos concntricos)

Desenhodegrade
(Desenha trs hexgonos coloridos)

Triangulodegrade (Desenha tringulos concntricos) Quadradodegrade


(Desenha quadrados concntricos)

Circulodegrade
(Desenha crculos concntricos)

Mosaico
Mosaico
(Procedimento principal)

Figuras
(Chamada para desenho das figuras)

Quadrado
(Desenha quadrado/pinta)

Tringulo
(Desenha tringulo e pinta)

Crculo
(Desenha crculo e pinta)

Elipse
(Desenha elipse/pinta)

i t )

Projetando o Universo Nome do arquivo: Comando para executar : Descrio geral Este exemplo desenha um sistema solar composto por diversos planetas com tamanhos e rbitas aleatrias (ou seja, a cada execuo, um resultado diferente obtido) usando as primitivas tridimensionais do Logo. O principal objetivo fornecer ao usurio um projeto que usa as primitivas do Logo3d e que pode ser objeto de estudos interessantes no campo da fsica e da astronomia. Aps iniciar a execuo do exemplo, surge uma caixa de questo solicitando ao usurio que entre com o nmero de planetas a serem desenhados. Ficaria interessante tambm permitir ao usurio alterar as rbitas e os tamanhos dos planetas (nesta verso, essas caractersticas so aleatrias). Pode-se pesquisar os valores relativos reais entre o tamanho dos planetas e as rbitas do nosso sistema solar e us-los no programa. Experimente! Voc se lembra do cometa Halley? Que tal mapear uma tartaruga com a trajetria do cometa Halley e observ-la voar pelo sistema solar? Para a aumentar a preciso do desenho, possvel desenhar rbitas elpticas em vez de circulares. Voc pode mover os planetas atravs de suas rbitas, ou ento salvar esses quadros como .bmp e depois fazer um gif animado para colocar em uma pgina na internet. O cu o limite para sua criatividade, ou melhor, o universo... Projetando_universo.lgo Projetando_universo

Estrutura geral
Projetando_universo (Procedimento inicial)

Sol
(desenha um Sol amarelo no centro do sistema)

Planetas

(desenha os planetas)

Esfera

(desenha uma esfera)

Tecendo anis Nome do arquivo: Comando para executar: Descrio geral Neste exemplo, que utiliza comandos de manipulao da tartaruga em trs dimenses, realizado o desenho de uma figura toride (ou rosquinha). O principal objetivo fornecer ao usurio um primeiro contato com as primitivas do Logo3D e possibilitar um embasamento para o desenvolvimento de outros projetos. Fica mais fcil explicar como o toro desenhado usando uma esfera como exemplo. Coloque-se no centro de uma esfera e imagine que voc tem uma arma laser que pode cortar ou marcar a superfcie. Agora voc atira em um ponto na superfcie (ponto A), depois move seu feixe 5 graus (:passo) para baixo e atira em um outro ponto (ponto B). Em seguida move o feixe 5 graus para a direita e atira em outro ponto (C). Agora 5 graus para cima, outro ponto. Ao conectar os 4 pontos com uma corda, ter o polgono. Repita o Tecendo_aneis.lgo Tecendo_aneis

processo at completar toda a volta e depois eleve seu feixe para "varrer" o "andar" superior, e assim sucessivamente. Que tal tentar desenhar uma esfera, um cubo, uma pirmide e outras figuras tridimensionais? Voc pode usar esse conjunto de figuras para compor desenhos, como casas e pequenas cidades. Outro problema interessante seria desenvolver procedimentos gerais para o desenho de poliedros regulares, no qual o parmetro de entrada o nmero de faces [poliedros esto para o mundo 3d assim como os polgonos esto para o mundo 2d exemplos de poliedros: tetraedro (pirmide), hexaedro (cubo), e outros]. Estrutura geral
Tecendo_aneis

(Procedimento inicial)

Esqueleto
(desenha as diversas fatias que formam a figura toroidal)

Fatia
(desenha um cilindro aberto)

PeguePonto
(envia o valor do ponto correspondente a um raio)

Viagem em 3Dimenses Nome do arquivo: Comando para executar: Descrio geral Este exemplo um visualizador de arquivos do tipo ".3dv", um formato padro para figuras vetorais de 3D. Neste caso, desenhamos um nibus espacial (space shuttle). O principal objetivo fornecer ao usurio uma perspectiva das possibilidades de integrao do SuperLogo com outros formatos de arquivos com objetos tridimensionais. Que tal tentar desenhar esse nibus espacial usando somente comandos do Logo3d, sem o auxlio do arquivo .3dv? Se quiser, pesquise na internet outros arquivos do tipo .3dv e tente us-los neste exemplo (sero necessrios alguns pequenos ajustes no programa). Outra possibilidade verificar a existncia de outros formatos de arquivos com objetos 3d e analisar a possibilidade de integr-los ao SuperLogo. Estrutura geral
Viagem_3d
(Procedimento inicial)

Viagem_3d.lgo Viagem_3d

Carregue_objeto (carrega a lista de vetores do arquivo)

Mostre_objeto (desenha o objeto)

Projetos
1. Ponteiro a ponteiro 2. Calendrio curioso 3. De (+) a (-) s (*) se (/) 4. Mister Baskara 5. L vem bomba 6. Frmula Tat 7. Cata carta 8. Aperta o n 9. OXO, XOX deu empate! (verso usurio versus computador e verso usurio versus usurio) 10. Tatgoshi 11. E com vocs... MovimentaSom 12. Tirando som de A a Z 13. Dr. Birutat 14. Fbrica de portugus maluco 15. A palavra ... 16. Deu branco no texto! 17. Fuja: calorias vista! 18. De AA a aa, que bicho vai dar? 19. Conexo tartaruga

Ponteiro a ponteiro Nome do arquivo: Comando para executar:


Apresentao como diz a msica: o tempo no pra. Pois isso verdade at para ele mesmo! Pense um momento no relgio de sol e nos relgios de pulso que utilizam energia solar. O sol continua o mesmo, mas sua utilizao para medir o tempo mudou muito. Conhecer a evoluo dos relgios uma maneira bastante curiosa de aprender muitos assuntos: medidas de tempo, meridianos, movimentao do nosso planeta, engrenagens, oscilao de tomos, horrio biolgico, fontes de energia e por a afora. Uma infinidade de conhecimentos interrelacionados que detonaram a cincia em geral. Num piscar de olhos, saltamos do velho cuco da vov para os modernos relgios que usam beats como medida de tempo mundial. Este projeto apresenta um relgio simples e funcional que pode alavancar outras implementaes. Afinal, uma coisa saber ler as horas. Outra coisa usar todas aquelas noes a respeito do valor de uma hora, um minuto, um segundo e transform-las em um programa computacional que implementa um relgio de verdade. Confira!

Ponteiro_a_ponteiro.lgo Relgio

O que faz este programa? Este programa desenha na tela um relgio de ponteiros com a hora real do sistema.

Instrues de uso Aps carregar o arquivo Ponteiro_a_ponteiro.lgo e clicar em Iniciar na tela de apresentao, ser exibido um relgio de ponteiros que marca a hora do sistema.

Aspectos de programao em Logo Neste projeto, destacamos comandos de manipulao de hora e tambm o temporizador do Logo. Faz parte deste projeto entender o processo de

funcionamento do relgio e as relaes entre os ngulos formados pelos seus ponteiros e as divises do tempo em hora, minuto e segundo.

Estrutura geral do projeto

Relgio
(procedimento inicial)

Desenha_marcas
(desenha o relgio)

Inicializa_variveis
(prepara as variveis)

Peguehora
(devolve a hora do sistema)

Atualizarel
(atualiza os ponteiros do relgio chamado pelo temporizador)

Plotehora
(desenha o ponteiro das horas)

Ploteminuto
(desenha o ponteiro dos minutos)

Plotesegundos
(desenha o ponteiro dos minutos)

Principais procedimentos
aprenda Relgio ;procedimento inicial ;(...) Desenha_marcas ;desenha o relgio ativetemporizador 1 1000 [Atualizarel] ;atualiza o relgio a partir do temporizador a cada 1 seg (1000 ms) fim

aprenda Atualizarel ;atualiza os ponteiros do relgio local "horacerta atr "horacerta Peguehora local "nhora atr "nhora primeiro :horacerta local "nmin atr "nmin primeiro semprimeiro :horacerta local "nseg atr "nseg primeiro semprimeiro semprimeiro :horacerta Ploteseg :seg se no soiguais :min :nmin [Plotemin :min ~ se no soiguais :hora :nhora~ [Plotehora :hora ~ Plotehora :nhora ]~ Plotemin :nmin ] Ploteseg :nseg

;(...)
fim aprenda Plotehora :hora ;desenha o ponteiro da hora useinversor mudeespessuradolpis [5 5] muded :hora*30 pf 50 un pt 50 fim aprenda Peguehora ;devolve a hora do sistema envie parse map "Trata_2pontos ~ pri semprimeiro semprimeiro semprimeiro diahora fim

aprenda Trata_2pontos :a ;analisa o formato da hora do sistema - trata o caractere ":" seno soiguais ": :a [envie caractere 32] [envie :a] fim

Sugestes Voc gosta de viajar? Que tal trabalhar com fusos horrios e fazer vrios relgios, que podem ser colocados em um aeroporto informando a hora das principais capitais mundiais? No gostou muito do relgio de ponteiros? Tente ento implementar um relgio digital (dica para iniciar: construa um procedimento para desenhar um dgito de 0-9 do relgio digital). E se voc colocar o relgio de ponteiros inserido em um cenrio interessante? Por exemplo, desenhar o Big Ben de Londres (voc pode utilizar imagens bitmap para auxili-lo ou, se quiser, trabalhar com os comandos do Logo3D). Se voc for fascinado por problemas de fsica, estude o Paradoxo dos Gmeos (voc pode encontrar isso em livros de Fsica Moderna) e tambm sobre a Teoria da Relatividade de Einstein e tente implementar dois relgios o que ficaria na Terra e o que ficaria na nave espacial (ser que isso possvel?) voc possivelmente ir constatar efeitos muito interessantes! Calendrio curioso calendario.lgo Nome do arquivo: Procedimentos para executar: Dia (para um dia qualquer) Data_nascimento (para datas de nascimento)
Apresentao

Este projeto, a partir de medidas de tempo (dias, meses e anos), resgata uma srie de conceitos de geografia (porque essas medidas? o que as definiram?), de histria (ser que todos os povos usam o mesmo calendrio? como a medida do tempo evoluiu ao longo da histria?) e de matemtica (que algoritmos usar?) para produzir um programa computacional interdisciplinar e, ao mesmo tempo, bastante curioso. Nem todos vo se lembrar, mas h algum tempo, nos almanaques e revistas, havia uma verso impressa deste programa em formato de calendrio de bolso... todo mundo tinha um, mas no sabia muito o que estava por trs para implement-lo. A verso computacional em SuperLogo faz exatamente isso: possibilita ao usurio pensar nos conceitos e algoritmos que calculam o dia da semana em funo de uma data qualquer.

O que faz este programa? A partir de uma data dada como entrada, o programa calcula o dia da semana em que ela ocorreu (ou ir ocorrer), e o intervalo de tempo em dias que j se passaram (ou que faltam passar) at a data atual. Existem duas verses. A verso Dia calcula o dia da semana a que se refere uma data qualquer dada como entrada pelo usurio. Por exemplo: dia 17/12/2002 esta data pode se referir ao passado ou ao futuro, tanto faz. Alm disso, ele calcula o nmero de dias que faltam para chegar aquela data, ou ao contrrio, quantos dias j se passaram dela. A outra verso, Data_nascimento, faz o mesmo, alm de informar o signo correspondente data. Instrues de uso Aps carregar o arquivo Calendario.lgo e clicar em Iniciar na tela de apresentao, o usurio pode escrever Dia na Janela de Comandos, para a verso sem signo, ou Data_nascimento para a verso com signo. Ser ento exibida uma caixa para que o usurio digite a data desejada (no formato dd/mm/aaaa dia, ms, ano) e ento o programa realiza os clculos e imprime o resultado na Janela Grfica. Aspectos de programao Logo Neste projeto so utilizadas vrias operaes matemticas em Logo (soma, quociente, inteiro, produto) em combinao com primitivas de manipulao de listas (pri, sp, ult). Procedimentos com parmetros e que retornam valores so muito utilizados. Outro conceito interessante o de variveis locais (procedimento J_d_n). Estruturas que trabalham com condicionais (se, seno) so necessrias em vrios dos procedimentos (no Signo, por exemplo). O procedimento Zeller, que calcula um nmero (de Zeller) necessrio para o algoritmo do dia da semana, em conjunto com o procedimento Dia.da.semana, so exemplos que utilizam todos esses conceitos citados.

Estrutura geral do projeto1


Msg_erro
(trata erros na entrada dos dados)

Data_nascimento
(procedimento inicial)

Signo
(retorna o signo para uma determinada data)

Dia.da.semana
(calcula o dia da semana e tambm o nmero de dias que passaram ou que faltam)

Nova_data
(retorna a data atual no formato dd mm aa)

Zeller
(nmero necessrio para o algoritmo do clculo do dia da
semana)

Delta_dias
(calcula o nmero de dias entre :data e a data atual)

J_d_n
(calcula o Julian Day Number a partir de uma data no calendrio gregoriano)

apresentada a estrutura da verso Data_nascimento. A verso Dia idntica, exceto por esta no chamar o procedimento signo.

Principais procedimentos
aprenda Dia

;usado para qualquer data ;(a nica diferena para o ;data_nascimento que no ;retorna o signo...)

aprenda Nova_data :data_atual ;ajusta a data atual para o formato dd mm ;aaaa se soiguais pri sp :data_atual "Jan [envie (lista pri sp sp :data_atual "01 ltimo :data_atual)]

;(...)
atr "dn caixadequesto [Dia da Semana][Digite a data no formato dd/mm/aaaa]

;(...)

se ou soiguais pri sp :data_atual "Dec soiguais pri sp :data_atual "Dez [envie (lista pri sp sp :data_atual "12 ltimo :data_atual)] fim

;(...)
Esctela sentena [Hoje ] Nova_data diahora Dia.da.semana :dnn fim

aprenda Dia.da.semana :data_usuario ;procedimento que escreve o dia da semana para uma data

aprenda Zeller :dia :mes :ano ;calcula o numero de Zeller (ver documentao) ;varaveis locais usadas para auxiliar os clculos local "c local "m local "a seno menor :mes 3 ~ [ atr "m soma :mes 10 atr "a ~ soma :ano -1 ][ atr "m soma :mes -2 ~ atr "a :ano] atr "c Div :a 100 atr "a resto :a 100 envie resto (soma :dia +(div (26*:m - 2) 10) -(2*:c) :a div :a 4 div :c 4) 7 fim

Esctela (sentena :data_usuario "| --> | elemento soma 1 Zeller elemento 1 :data_usuario elemento 2 :data_usuario ~
elemento 3 :data_usuario [Domingo Segunda-feira Tera-feira Quarta-feira Quinta-feira Sexta-feira Sbado]) Delta dias :data usuario Nova data diahora aprenda Delta_dias :data1 :data_atual ;calcula o nmero de dias entre :data1 e ;:data_atual

;numero exato de dias no intervalo atr "delta (J_d_n :data_atual) - (J_d_n :data1)

;numero aproximado de anos intervalo atr "aproxano inteiro :delta/365


se soiguais :aproxano 0 [atr "a1 [ ] ] se maior :aproxano 0 [atr "a1 (sentena [( pouco mais de ] :aproxano [ ano(s) ) ] ) ] se menor :aproxano 0 [atr "a1 (sentena [( pouco mais de ] oposto :aproxano [ ano(s) ) ] ) ] se soiguais :delta 0 [Esctela [As duas datas so as mesmas...]] se maior :delta 0 [Esctela (sentena [J se passaram exatamente ] :delta [ dias ] :a1 [ de ] :data1 )] se menor :delta 0 [Esctela (sentena [Ainda faltam exatamente ] oposto :delta ~ [ dias ] :a1 [ para ] :data1)]

no

aprenda J_d_n :data_greg ;calcula o julian_day_number a partir de uma data no cal. gregoriano local "dia atr "dia pri :data_greg local "m atr "m pri sp :data_greg local "y atr "y ltimo :data_greg se :m < 3 [atr "m :m + 12 atr "y :y - 1] envie :dia + (inteiro (153 * :m - 457) / 5) + 365 * :y + (inteiro :y / 4) - (inteiro :y / 100) + (inteiro :y / 400) + 1721118.5 fim

Sugestes O nmero de dias calculado exato. Como, a partir desse valor, chegar ao nmero exato de anos e meses correspondentes (lembre-se de que voc deve levar em conta os anos bissextos)? O usurio pode tambm ser mais preciso, fornecendo ao usurio o nmero de horas, minutos e at segundos que j passaram da data inicial (as informaes para a data atual j so obtidas por meio da primitiva diahora no cdigo do projeto original). Se voc gosta de assuntos esotricos, que tal brincar com um pouco de numerologia ou horscopo chins, baseado na data de nascimento da pessoa? Gosta de finanas? Com o algoritmo que calcula o nmero de dias voc pode, por exemplo, fazer um programa que calcula os rendimentos de uma aplicao financeira ou calcular o quanto de juros devido a ser pago em uma conta atrasada. Veja a referncia [1] para obter mais detalhes sobre os diversos algoritmos que trabalham com datas, o conceito de Dia Juliano e Dia Gregoriano e outros tpicos interessantes.

Referncia Date Algorithms Peter Baum, in http://www.capecod.net/~pbaum/date/index.htm

De (+) a (-) s (*) se (/) Nome do arquivo: Comando para executar: Apresentao Voc tem idia de como a calculadora do Windows foi implementada? No? Acha que difcil? Um desafio apenas para os programadores de carteirinha? Pois bem: o SuperLogo possui todos os recursos para projetar uma calculadora. D uma olhada neste projeto. Utilizando operaes matemticas bsicas disponveis no Logo e primitivas que permitem fazer uma interface agradvel, o usurio pode criar sua prpria calculadora e utiliz-la como um acessrio personalizado em outros projetos. Preste ateno no modo como os procedimentos descrevem as parcelas para efetuar cada uma das operaes implementadas. No deixe de conferir! Calc.lgo Calc

O que faz este programa? Este programa implementa uma calculadora simples, que realiza as quatro operaes bsicas (soma, subtrao, multiplicao e diviso).

Instrues de uso Aps carregar o arquivo Calc.lgo e clicar em Iniciar na tela de apresentao, ser apresentada uma pequena calculadora com as quatro operaes bsicas. Pode-se ento digitar os valores, clicar nas operaes desejadas, da mesma forma que se opera uma calculadora comum de bolso (ateno: os nmeros podem ser digitados no teclado ou diretamente nos botes da calculadora, mas as operaes devem ser acionadas somente por meio dos botes). Existe ainda o boto Limpar (limpa o contedo da memria) e tambm o boto Fechar.

Aspectos de programao Logo Neste projeto so utilizadas vrias operaes matemticas em Logo (soma, quociente, inteiro, produto) em combinao com comandos de interface. As operaes matemticas podem ser observadas no procedimento faaoperao, no qual, de acordo com a operao escolhida e os operandos (o conceito de condicional utilizado atravs da primitiva se do Logo), o clculo realizado e exibido do display da calculadora. Com relao aos recursos de interface, este projeto bem interessante pois mostra ao usurio as capacidades de desenvolvimento de aplicativos que o SuperLogo fornece. O procedimento preparar trata da criao da janela e dos botes usados na calculadora.

Estrutura geral do projeto

Calc
(procedimento Inicial)

Preparar
(cria a calculadora)

Algarismo
(nmeros)

Estado
(operaes)

Negue
(inverte o sinal)

Faaoperao
(faz o clculo)

Limpe
(limpa a memria)

Principais procedimentos
aprenda Cal ;procedimento inicial criejanela "main "calc [Calculadora simples] 80 80 100 90 preparar fim
aprenda Preparar ;cria os elementos de interface ;variveis locais, usadas para facilitar o posicionamento dos botoes local "margemx atribua "margemx 5 local "margemy atribua "margemy 20 local "tamanhox atribua "tamanhox 10 local "tamanhoy atribua "tamanhoy 10 criecaixacombinao "calc "c1 :margemx 5 :tamanhox*9 12

crieboto "calc "bponto ". :margemx+:tamanhox*0 :margemy+:tamanhoy*3 :tamanhox :tamanhoy ~ [algarismo ".] crieboto "calc "b0 "0 :margemx+:tamanhox*1 :margemy+:tamanhoy*3 :tamanhox :tamanhoy [algarismo 0] crieboto "calc "bnegue "- :margemx+:tamanhox*2 :margemy+:tamanhoy*3 :tamanhox :tamanhoy [negue] crieboto "calc "b1 "1 :margemx+:tamanhox*0 :margemy+:tamanhoy*2 :tamanhox :tamanhoy [algarismo 1] ;(...) crieboto "calc "b9 "9 :margemx+:tamanhox*2 :margemy+:tamanhoy*0 :tamanhox :tamanhoy [algarismo 9] crieboto "calc "bmultiplicar "* :margemx+:tamanhox*4 :margemy+:tamanhoy*0 :tamanhox :tamanhoy ~ [estdo 1] crieboto "calc "bdividir "/ :margemx+:tamanhox*4 :margemy+:tamanhoy*1 :tamanhox :tamanhoy ~ [estdo 2] crieboto "calc "badicionar "+ :margemx+:tamanhox*4 :margemy+:tamanhoy*2 :tamanhox :tamanhoy ~ [estdo 3] crieboto "calc "bsubtrair "- :margemx+:tamanhox*4 :margemy+:tamanhoy*3 :tamanhox :tamanhoy ~ [estdo 4] crieboto "calc "bigual "= :marx+:tamanhox*4 :margemy+:tamanhoy*4+:tamanhoy/2 :tamanhox :tamanhoy ~ [Faaoperao] crieboto "calc "blimpar "Limpar :margemx :margemy+:tamanhoy*4+:tamanhoy/2 :tamanhox*3 :tamanhoy ~ [limpe] crieboto "calc "bfim "Fechar :margemx+:tamanhox*6 :margemy+:tamanhoy*4+:tamanhoy/2 :tamanhox*3 ~ :tamanhoy [meufim] fim

aprenda Faaoperao ;realiza a operao (sinal de =) local "resposta local "segundoarg atribua "segundoarg textodacaixacombinao "c1 se :operao = 1 [atribua "resposta (pri2 :priarg) * (pri2 :segundoarg)] se :operao = 2 [se soiguais pri2 :segundoarg 0 [msg_div_zero pare] atribua "resposta (pri2 :priarg) / (pri2 :segundoarg)] se :operao = 3 [atribua "resposta (pri2 :priarg) + (pri2 :segundoarg)] se :operao = 4 [atribua "resposta (pri2 :priarg) - (pri2 :segundoarg)] adtextonacxcomb "c1 :resposta fim

Sugestes Seria interessante aumentar o nmero de funes da calculadora: incluir porcentagem e raiz quadrada, por exemplo. Por que voc no tenta? Quer uma calculadora mais completa ainda? Experimente fazer uma calculadora cientfica o Logo fornece uma srie de funes matemticas bsicas que podem ajud-lo nesse projeto. Quanto interface, que tal possibilitar ao usurio realizar todas as operaes tanto na janela quanto no teclado alfanumrico do computador? Voc pode usar primitivas do SuperLogo como asciitecla. Mister Baskara Nome do arquivo: Baskara.lgo Comando para exexutar: Baskara Apresentao Delta. O que isso quer dizer? Lembra o Nilo, a pedra da Gvea, o alfabeto grego? No, aqui o usurio poder explorar um outro delta. Um delta que tem a ver com nmeros reais e complexos, parbola, raiz, coeficientes, negativo e positivo...Uma srie de conceitos matemticos que permitem aprender um pouco mais as equaes de 2 grau. Certo dia uma mamadeira foi flagrada voando do 5 andar de um edifcio. Voc sabia que a equao de 2 grau pode ser til para medir a velocidade da queda da mamadeira voadora? Pois , s vezes aquilo que aprendemos na escola parece distante da realidade, mas as coisas no so assim no. Neste projeto, o usurio encontrar uma aplicao especfica que auxilia o entendimento do comportamento desse tipo de funo. Pode no parecer, mas isso ajuda a compreender alguns fenmenos da fsica. D uma olhada!

O que faz este programa? O objetivo deste projeto calcular as razes de equaes do segundo grau, mostrando ao usurio um esboo do grfico da equao, para uma visualizao da distribuio dessas razes. O programa lida tanto com razes reais quanto complexas. o usurio quem escolhe a equao. Instrues de uso Aps carregar o arquivo Baskara.lgo e clicar em Iniciar, o programa apresenta ao usurio o tipo de equao que ser utilizado (ax2+bx+c). Em seguida sero abertas caixas pedindo os coeficientes a, b e c, nessa ordem. O coeficiente a precisa ser diferente de zero, por se tratar de uma equao de 2o grau. Feita a digitao dos dados, as razes sero calculadas e mostradas no lado esquerdo da tela, enquanto um esboo do grfico ser feito em seu centro. Aspectos de programao Logo Este projeto une clculos e a parte grfica do Logo de maneira bastante eficiente. Trata, ainda, com nmeros reais e complexos e define a operao que calcula o valor de delta.

Estrutura geral do projeto


Baskara
(Procedimento principal)

Le_coeficientes
(L a, b e c )

Razes_reais
(Atribui valores reais a x1 e x2)

Razes_no_reais
(Atribui valores complexos a x1 e x2)

Descrio
(Mostra os valores das razes)

Mostra_equao
(Mostra equao conforme coeficientes de entrada)

Plota_esquema_grfico
(Esboa esquema grfico)

Delta
(Calcula o valor de delta)

Principais procedimentos
aprenda Baskara ;Faz a chamada do programa. Verifica o sinal de delta para calcular a resposta (real/imaginria) e tambm para verificar o nmero de razes

(...) se ou ((delta :a :b :c) >0)((delta :a :b :c)=0) [raizes_reais] se (delta :a :b :c) <0 [raizes_no_reais] (...) se (delta :a :b :c) >0 [atr "nraizesreais 2] (...) fim

aprenda Razes_reais ;se delta for positivo ou zero. atribui a x1 e x2 os valores das razes reais atr "x1 formnum (((-1)*:b) + raizq (delta :a :b :c))/(2*:a) 4 3 atr "x2 formnum (((-1)*:b) - raizq (delta :a :b :c))/(2*:a) 4 3 fim

aprenda Razes_no_reais

;se delta for negativo atribui os valores no reais a x1 e x2 atr "deltaim raizq((-1)*(delta :a :b :c)) atr "x1 (sn (-1)*:b "+ formnum :deltaim 4 3 "*i) atr "x2 (sn (-1)*:b "- formnum :deltaim 4 3 "*i) fim

aprenda Delta :a :b :c envie (:b*:b)-(4*:a*:c) fim

;calcula o valor de delta da equao

Sugestes H um grande nmero de variaes que se pode fazer a partir deste programasemente. Pode-se colocar uma escala no esboo grfico. Pode-se colocar os valores das razes quando estas forem reais. O ponto mnimo ou mximo da parbola tambm pode ser calculado. Note que o esboo grfico neste programa leva questo da trajetria dos projteis que vista no projeto L vem bomba!. Pode-se inserir apresentaes para que o clculo das razes seja mostrado passo-a-passo. Um outro aspecto que pode ser aprofundado neste projeto a introduo aos nmeros complexos. As mesmas idias podem ser utilizadas para tratar de equaes de primeiro grau, ou seja, equao da reta. Pode-se tambm traar o grfico de diferentes tipos de equao (polinomiais ou no).

L vem bomba Nome do arquivo: Artilharia.lgo Comando para executar: Artilharia Apresentao Catapultas, canhes, fogos de artifcio, tiro ao alvo. Provavelmente Robin Hood sabia muito bem qual era a inclinao necessria do seu arco e flecha para acertar seus inimigos. Muitas noes esto envolvidas neste projeto: equao de 2 grau, vetores, velocidades, ngulos, gravidade, tipos de movimentos etc. Veja como esses conceitos so aplicados para fazer funcionar um canho e aproveite para aprender um pouco mais sobre o assunto. Projetos que funcionam como jogos de simulao propiciam a explorao de parmetros diferentes e, conseqentemente, a correlao entre eles, propiciando o entendimento de cada resultado alcanado. Aventurese!

O que faz este programa? Este projeto simula a trajetria de um projtil lanado por um canho considerando: o valor de inclinao do canho, a velocidade inicial de lanamento do projtil e o ambiente fsico em que o canho se encontra. Todos esses dados so fornecidos pelo usurio no momento de execuo do programa.

Instrues de uso Aps carregar o arquivo Artilharia.lgo e clicar em Iniciar, uma janela para a entrada dos parmetros do tiro apresentada ao usurio, ou seja, os valores de entrada para a velocidade inicial do projtil, do ngulo do canho, e da escolha do ambiente do tiro para clculo da gravidade local. Aps isso, pressione o boto Ok para verificar o alcance do projtil caso fosse lanado com esses parmetros. Nesse ponto tambm mostrado um vetor indicando a direo e o sentido do tiro. O tamanho do vetor indica a velocidade inicial para o projtil. Caso as escolhas estejam de acordo com o que se deseja, pressiona-se o boto Fogo para lanar o projtil. Este deixa sua trajetria desenhada na tela. Esta trajetria pode ter espessura e cor de trao alterados pelo usurio por meio das barras de rolagem. O boto Fim encerra o programa. Aspectos de programao Logo Este programa usa uma srie de operaes trigonomtricas disponveis no Logo (seno, coseno); define uma operao para o clculo da gravidade (calcgrav); manipula arquivos de figuras (carreguebitmap) e de sons (toquewave) e utiliza diversos comandos para criao de janelas e botes (Mostrecaixamensagem, crieboto, apaguejanela). A trajetria do projtil e representada decompondo-se o movimento da Tat nos eixos cartesianos (movx, movy).

Estrutura geral do projeto


Artilharia
(Procedimento inicial)

Opes Posicionaalvo
(Coloca o alvo em uma posio aleatria) (Caixa para entrada de parmetros)

Mudaespessura
(muda espessura do trao)

Apagavetor
(Apaga o vetor desenhado anteriormente)

Finaliza
(Verifica se o tiro foi certeiro)

Veralcance
(Calcula o alcance do projtil)

Desvetor
(Desenha um vetor prximo ao canho)

Verangulo
(Limita o ngulo de tiro entre 0 e 90)

Alteracor
(altera a cor do trao)

Lana Calcgrav
(Envia o valor da gravidade conforme o local escolhido) (Faz o lanamento do projtil )

Atribuies
(calcula a velocidade nos eixos)

Movx
(Faz o movimento da Tat no eixo x

movy
(Faz o movimento da Tat no eixo y)

Principais procedimentos
aprenda Artilharia ;procedimento que inicia o programa. zerando as variveis e carregando os bitmaps (...) opes (...) fim aprenda Opes ;monta caixa principal de opes. nessa caixa que o usurio entra com os parmetros do tiro (local do tiro, vel. inicial e ngulo. nela tambm que o usurio dispara o tiro. ;gravidade criebotordio "principal "grupograv "gravTerra "Terra 120 25 35 10 (...) criebarrarolagem "principal "bcor 108 75 40 10 [mudeesttico "cor elemento 1+int (0.04*barrarolagem "bcor) :cores atr "ncor int (0.04*barrarolagem "bcor) alteracor] (...) crieboto "principal "btnok "Ok 5 85 25 10 [atr "angulo pri textodacaixacombinao "entraang verangulo :angulo atr "velocidade pri textodacaixacombinao "entrapot desvetor :angulo :velocidade veralcance calcgrav 9.8] crieboto "principal "btnfogo "Fogo 35 85 25 10[lana :angulo :velocidade finaliza apagavetor :angulo :velocidade] (...) fim aprenda Calcgrav :gravidade ;calcula e envia o valor da gravidade de acordo com a seleo feita nos botes de rdio. Os valores utilizados so valores reais (...) envie :gravidade

aprenda Finaliza ;verifica a posio em

ul seno e (maior pri pos :posalvo-45 (...) fim

que o tiro caiu para ver se acertou o alvo

aprenda Lana :angulo :velocidade ;faz o movimento balstico da tartaruga (...) atribuies at (...) enquanto [no (elemento 2 pos) <-35] [movx pe 90 movy pd 90 atr "vely :vely-(calcgrav)*:dt un] (...) fim

aprenda Atribuies ;calcula os valores das velocidade nos eixos cartesianos (...) atr "velx :velocidade*cos :angulo atr "vely :velocidade*sen :angulo fim

Sugestes Este projeto pode ser bastante explorado em diversos aspectos. Pode-se, por exemplo, limitar o alcance do tiro por meio do valor obtido no clculo do alcance, ou seja, caso o alcance tiver um valor que ultrapassar os limites da tela, o tiro no permitido, ou ento ao atingir o limite da tela, o projtil explode. Outra sugesto colocar um obstculo entre o canho e o alvo; assim, o usurio ter de variar o ngulo visando transpor o obstculo e atingir o alvo. O fator vento no foi considerado nessa verso inicial. um outro aspecto interessante a ser explorado. Em um nvel um pouco mais avanado, pode-se calcular qual a velocidade inicial necessria para que o projtil entre em rbita (isso depende da gravidade do local em que se encontra o canho) e, a partir desses dados, limitar a velocidade inicial, emitindo mensagens de que o tiro levou o projtil a entrar em rbita. Cada planeta do sistema solar possui uma acelerao da gravidade diferente, tente descobri-las. Depois insira esses valores no programa.

Referncia: http://educar.sc.usp.br/fisica/projlogo.html - Simulaes em SuperLogo: Movimento Retilneo Uniforme e Movimento Uniformemente Variado.

Frmula Tat Nome do arquivo: FormulaTat.lgo Comando para executar: Corrida Apresentao Emerson Fittipaldi, Nelson Piquet, Ayrton Senna. Durante muitos anos, foi muito fcil acertar quem ganharia uma corrida de Frmula 1! Felizmente, tivemos muitas alegrias e emoes! Que tal bolar sua prpria pista de frmulatat? Neste projeto, apresentamos uma pequena amostra de como ela pode ser feita. Faa a sua aposta e aguarde o resultado! Voc poder aprender a fazer animao por meio do Logo e a lidar com nmeros aleatrios que garantem a surpresa no final da competio. Boa sorte!

O que faz este programa Este programa coloca quatro tartarugas na janela grfica para apostar uma corrida. O usurio deve apostar em uma das quatro e tentar acertar qual ir ganhar. Ao som de um tiro ser dada a largada.

Instrues de uso Aps carregar o arquivo FormulaTat.lgo e clicar em Iniciar, o programa pede ao usurio que escolha uma das quatro tartarugas como vencedora. O usurio deve, obrigatoriamente, escolher um nmero entre 1 e 4, caso contrrio a caixa de entrada volta a aparecer. Aps digitar corretamente um dos nmeros das tartarugas, a corrida tem incio e s termina quando uma delas atinge uma certa posio na tela, que, no nosso caso, tido como a linha de chegada. Aps o trmino da corrida, o programa emite uma mensagem dizendo se a aposta feita pelo usurio teve xito ou no.

Aspectos de programao Logo Este programa utiliza o conceito de recurso, mltiplas tartarugas e nmeros aleatrios. Estrutura geral do projeto
Corrida
(Procedimento principal)

Posicionetat
(Posiciona as tats)

Corra
(Sorteia uma tat e pe frente)

Desenhapista
(Desenha o traado da pista)

Pdio
(Desenha o pdio e coloca a vencedora)

Ganhou
(Mostra mensagem acerto/erro)

Quadrado
(Desenha os quadrados do grid)

Principais procedimentos
aprenda Corrida

(...) corra (...) fim

;procedimento principal que faz as chamadas de desenho de pista posicionamento das tats, alm de pedir a aposta do usurio.

aprenda Corra

;ativa aleatoriamente uma tat e a coloca 2 passos frente das demais. se ((pri pos)=280) [pare] atat sorteienmero(4)

(...)
corra fim

Sugestes O usurio pode tentar fazer uma corrida com outros traados, usando a posio da tartaruga como parmetro para as curvas. Pode tambm inserir um nmero maior de tartarugas na pista original. Usando o conceito de listas em Logo, pode armazenar em uma lista as trs tartarugas mais sorteadas, conhecendo, assim, as trs primeiras colocadas e podendo depois colocar seus respectivos nmeros no pdio.

Cata carta Nome do arquivo: CataCarta.lgo Comando para executar: Catacarta Apresentao Como anda sua memria? Voc se lembra de onde colocou suas chaves? Seu guarda-chuva? Largou as compras no supermercado? Onde est seu carro? Ser que foi roubado ou voc simplesmente no se recorda mais como deve fazer para chegar at ele?... Hum... a coisa vai mal...Tente ento observar a quantas andam a sua ateno e memria espacial. E mais: voc tambm pode analisar como est sua capacidade para fazer inferncias e relaes indiretas a respeito de um domnio de conhecimento qualquer... Tudo isso depender das informaes que escolher para compor seu banco de dados: pares de figuras idnticas, invenes e inventores, msicas e cantores, datas e celebraes, objetos relacionados entre si, smbolo qumico e o nome do elemento correspondente, estados e capitais, operaes matemticas diversas e seus resultados...uma infinidade de possibilidades.

O que faz este programa? Neste projeto, 18 cartas vo sendo viradas pelo jogador e devem ser memorizadas por ele. O objetivo parear as cartas para elimin-las da tela. Os pares podem ser formados por igualdade ou por afinidade entre elas, isto , assuntos correlacionados.

Instrues de uso Aps carregar o arquivo Memoria.lgo e clicar em Iniciar, aparecer uma caixa com botes de rdio em que o usurio deve escolher o tipo de par que as cartas formaro: igualdade ou afinidade. Escolhido o tipo de paridade, o programa ir sortear as posies das cartas na janela grfica. As cartas sero dispostas de maneira aleatria. A tela mapeada para receber o clique do mouse em cada carta. Clicando fora de qualquer carta nada acontece, exceto no espao reservado ao boto Parar, que termina o jogo antes que se descubram todas as cartas. Quando todas as cartas so descobertas, uma mensagem aparece parabenizando o usurio.

Aspectos de programao Logo Destaca-se o uso de figuras bitmap e de diversas tartarugas. As figuras so carregadas de diferentes diretrios, dependendo da escolha do usurio (igualdade/afinidade). Cada bitmap de carta representado por uma tartaruga por meio do comando tartarugabitmap. Elas esto escondidas por um outro bitmap colocado em cima da tartaruga. Quando o usurio clica em cima de uma carta, esse bitmap retirado da tela, mostrando ao usurio a carta (tartaruga). Se o usurio acertar o par, as cartas so escondidas por meio do comando desapareatat; caso contrrio, o bitmap que esconde as cartas volta a aparecer.

Estrutura geral do projeto


Catacarta
(Procedimento Principal)

Escolhebanco
(Opo do tipo de jogo)

Montatela
(Dispe as cartas na tela)

Comparar
(Abre cartas e as compara)

Exclui_carta
(Tira as cartas da tela)

Escolhe_carta
(Mapea a tela para escolha da carta)

Principais procedimentos
aprenda Catacarta ;chamada do jogo. (...) atr "pares [[0 1] [2 3] [4 5] [6 7] [8 9] [10 11] [12 13] [14 15] [16 17] [1 0] [3 2] [5 4] [7 6] [9 8] [11 10] [13 12] [15 14] [17 16]] ;Pares possveis de serem formados (...) fim aprenda Comparar ;toma o nmero da carta e a mostra se ela j no tiver sido tirada (...) enquanto [(:carta=-1)] [escolhe_carta] ;caso o usurio clique fora de uma carta se :carta=100 [tat pare] ;opo de parada (...) seno (elemento (lista :c1 :c2) :pares)[exclui_carta :c1 :c2][atat :c1 dt atat :c2 dt] ;exclui a carta da tela em caso de acerto fim

Sugestes Uma implementao simples que o usurio pode fazer neste projeto criar a possibilidade de que dois jogadores disputem uma partida. Alm disso, podese criar mais bancos para aumentar a gama de cartas a serem utilizadas. Podese inclusive criar nveis de dificuldade mostrando a posio das cartas antes de ocult-las. Aperta o n Nome do arquivo: Forca.lgo Comando para executar: Forca

Apresentao Trata-se do popular jogo da forca. A brincadeira prev o uso de variadas estratgias e bons momentos de diverso! Geralmente as pessoas bolam palavras pouco usuais para dificultar a descoberta do jogador. A verso em Logo apresentada tem uma novidade interessante. O jogador pode pedir uma dica ao computador para facilitar a descoberta da palavra-alvo. Da mesma forma, o jogador pode acrescentar novas palavras e suas respectivas dicas. A natureza da dica pode ser muito variada: um sinnimo, uma definio, um assunto correlacionado, um trocadilho...Escrever a dica parte da brincadeira tambm! Em termos educacionais, percebe-se que o Aperta o n pode ser usado de inmeras maneiras... tudo depende da criatividade do usurio. A nica forma de tirar o pescoo da corda pensar em vrias coisas ao mesmo tempo nmero de letras, letras mais usadas na lngua, contedo da dica, regras ortogrficas - enquanto se diverte com o jogo! Mais uma observao: o usurio pode aproveitar esse mesmo jogo para brincar com outros idiomas e explorar qualquer domnio de conhecimento.

O que faz este programa? Basicamente, o usurio tem de adivinhar a palavra secreta, tendo como pista apenas o nmero de letras que compe a palavra. A cada acerto, a letra desvendada; a cada erro, um pedao do boneco desenhado, podendo-se errar um mximo de seis vezes. Cada tentativa do usurio aparece em uma janela de letras usadas. Nesta verso do jogo da forca existe a opo de se mostrar uma dica para facilitar a descoberta da palavra.

Instrues de uso Aps carregar o arquivo Forca.lgo e clicar em Iniciar, aparecer uma caixa com botes de rdio em que o usurio deve escolher um tema entre os dez propostos. Escolhido o tema, o programa pede a opo entre jogar ou inserir uma palavra no banco de dados, de acordo com o tema escolhido. Na opo de inserir palavras, ser pedido ao usurio a palavra a ser inserida e em seguida a dica a respeito daquela palavra. A palavra e sua respectiva dica sero gravadas no respectivo arquivo relacionado ao assunto escolhido. Ser pedido ao usurio a opo de ver ou no a dica. Do lado esquerdo ser montado o alfabeto para que se possa escolher uma letra com o clique do mouse sobre a letra. No centro da tela aparecer a dica, os traos relativos ao nmero de letras da palavra e, do lado direito, uma caixa que mostra quais letras j foram utilizadas. Quando o usurio clica em uma letra que j tenha sido utilizada, um aviso de que aquela letra j foi usada emitido. O jogo termina quando o usurio adivinha a palavra ou ento quando erra pela sexta vez. Aspectos de programao Logo Neste projeto, interessante notar o uso de arquivos em Logo. Os assuntos so lidos e gravados em arquivos textos comuns com a seguinte seqncia: palavra 1 dica 1

palavra 2 dica 2 ... e assim sucessivamente. Quando o jogo se inicia, aberto um arquivo e feita a leitura nessa seqncia, colocando as palavras e dicas em uma lista para que possam ser sorteadas. Para gravar, o processo parecido: o programa abre o arquivo e insere a palavra e a dica no final dele. Aps qualquer uma dessas operaes, o arquivo deve, obrigatoriamente, ser fechado. Estrutura geral do projeto

Forca (Procedimento inicial)

Escolhetema
(Cria caixa para escolha dos temas)

Jogo (Controle do jogo)

Atribuitema
(Verifica tema escolhido nos botes de rdio)

Carregabanco
(Abre arquivo do tema e coloca nas variveis)

Opes (Opes iniciais: inserir palavra/jogar)

Tentativas (Insere letra na caixa de letras

Montatela
(Monta a tela grfica para o jogo)

Inserepalavra
(Pede palavra e dica ao usurio)

Rotulaletra
(Abre letra)

JaConsta (Avisa quando a letra j foi usada)

Entraletra
(Mapeia a tela para escolha das letras)

Gravabanco (Insere e grava palavra e dica no

Trataacento (Trata das letras com acento e

Enforca
(Desenha um pedao do boneco)

Principais procedimentos
aprenda Forca

;procedimento principal que inicia o jogo e faz as atribuies iniciais

(...) escolhetema

(...) carregabanco (palavra "assuntos/ :temaesc ".txt) (...) enquanto [:n=0] [atr "n sorteienmero ((numelem :palavras)+1)] ;sorteia um nmero para escolha da palavra e da dica (...) opes ;Chamada de procedimento para opes iniciais: Jogo/insero seno ou (:op="A)(:op="a) [tat at forca][jogo] fim

;Chama procedimento para escolha do tema

aprenda Carregabanco :arq ;carrega as palavras e as dicas do arquivo para serem usados durante o jogo abraparaler :arq (...) fechearq :arq fim

aprenda Jogo

Aprenda Opes

(...) se :contaacerto=numelem :palavra [ toquewave "aplauso.wav 0 mostrecaixamensagem (sentena "Fim "de "jogo)(sentena "Parabns)] fim

;monta a caixa de letras usadas e faz a contagem dos erros e acertos

aprenda Inserepalavra

(...) atribua "palavra minscula pri caixadequesto [Insira a palavra](lista :temaesc ": ) (...) gravabanco (palavra "assuntos/ :temaesc ".txt) :palavra :dica fim

;Monta tela para o usurio entrar com a palavra e dica no banco

aprenda gravabanco :arq :palins :dicains ;grava uma palavra e uma dica no banco escolhido (...) fechearq :arq fim

Sugestes

Em vez de a dica ser textual, pode-se implement-la por meio de figuras e sons. O usurio pode tambm inserir novos assuntos. Deixar uma letra aparente pode ser uma outra forma de facilitar a descoberta da palavra. No lugar do sorteio da palavra, pode-se criar uma maneira de escolher uma determinada palavra do banco de dados.

OXO, XOX deu empate!


Verso usurio x computador

Nome do arquivo: Comando para executar: Apresentao

Jogovel.lgo Jogo.da.velha

Todo mundo j brincou um dia de jogo da velha: rabiscando num guardanapo, na areia mida da praia, escondido no fundo da classe. Com certeza, o desafio de fazer uma verso computadorizada deste jogo no est no desenho do tabuleiro nem nas peas dos jogadores. O desafio outro. preciso prestar ateno na diversidade de estratgias que os jogadores usam. A implementao de um jogo tem esse aspecto interessante. Se voc no quer desenvolver um jogo "viciado", que sempre faz as mesmas jogadas e torna-se enfadonho, a dica : preste muita ateno no modo como as pessoas jogam o jogo da velha. Depois s descrever essas estratgias em Logo e "alimentar" a inteligncia do seu prprio jogo. No se esquea de personaliz-lo, criando uma interface agradvel e dando seu toque pessoal. Apresentamos duas verses: usurio versus computador e usurio versus usurio.

O que faz este programa? Neste programa, o usurio joga o conhecido "Jogo da Velha" contra o computador, que usa uma srie de estratgias para tentar ganhar o jogo.

Instrues de uso Aps carregar o arquivo Jogovel.lgo e clicar em Iniciar na tela de apresentao, o tabuleiro ser desenhado na tela e ser solicitado ao primeiro jogador que escolha sua marca no jogo (X ou O). No jogo da velha temos dois jogadores, um com a marca X e outro com O, e eles alternadamente marcam uma posio em um tabuleiro de 3x3 posies. O primeiro jogador que conseguir completar uma linha (vertical, horizontal ou diagonal) vence o jogo. Para efetuar a jogada, basta dizer a posio de acordo com o formato linha coluna (exemplo: linha a, coluna 3 ! a 3). As jogadas so alternadas entre o jogador e o computador, que jogar automaticamente (por meio de uma srie de estratgias contidas no programa), e assim que houver um vencedor, ele avisar quem ganhou. Aspectos de programao Logo Neste projeto, o conceito de listas de propriedades (veja o procedimento Represente.tabuleiro) introduzido. A definio de vrios predicados (ver procedimento Duas.ocupadas.uma.livre) bem explorada. A possibilidade de construir programas que apresentam, de certa maneira, um comportamento inteligente (baseado em uma srie de estratgias programadas) outro conceito fundamental. Neste Jogo da Velha, o computador joga tentando quatro estratgias bsicas (em ordem de prioridade): 1. 2. 3. 4. Tentar fechar o jogo, se possvel (preenchendo uma linha). Tentar impedir que o adversrio vena o jogo na prxima jogada. Jogar em uma posio nos cantos ou no centro, se possvel. Sortear uma das posies livres (pior estratgia).

Estrutura geral do projeto

Jogo.da.velha
(procedimento Inicial)

Tabuleiro
(desenha tabuleiro)

Inicialize.variaveis
(inicia as variveis)

Represente.tabuleiro
(representa o tabuleiro na memria)

Escolha.marca
(jogador escolhe a marca)

Jogue
(recursivo)

Jogo.terminado
(verifica fim de jogo)

Jogador
(usurio joga)

Computador
(computador joga)

Quem.ganhou
(verifica o ganhador)

Tstentrada
(testa entrada)

Jogada
(verifica se casa ocupada)

Desenhe.marca
(desenha a marca X/O)

Registre.jogada
(registra na memria a jogada)

Jogada.computador
(tenta as diversas estratgias)

Duas.ocupadas.uma.livre
(estratgia)

Sorteie.posio Canto.ou.centro
(estratgia) (estratgia)

3Posio.livre
(estratgia)

Umalivre
(estratgia auxiliar)

Principais procedimentos
aprenda Jogo.da.velha ;procedimento inicial ;(...) Inicialize.variveis ;prepara as variveis necessrias Represente.tabuleiro :posies Jogue ;incio do jogo fim aprenda Represente.tabuleiro :pos ;representa o tabuleiro na lista de ;propriedades se vazia :pos [pare] coloqueprop primeiro primeiro :pos ltimo primeiro :pos "$ Represente.tabuleiro sp :pos fim

aprenda Jogue ;procedimento recursivo do jogo Jogador ;usurio joga se Jogo.terminado :posies [Esct1 Quem.ganhou :linhas termine pare] mudecl "vermelho Esct1 [Aguarde... computador pensando.] espere 50 Computador ;computador joga Esct1 [ ] se Jogo.terminado :posies [Esct1 Quem.ganhou :linhas termine pare] Jogue ;nova jogada... fim

aprenda Jogador ;usurio jogando

coloque caixadequesto [Aonde voc quer jogar agora?] [Formato linha coluna - exemplo: a 3] "posio ;(...)
Desenhe.marca :marca.jogador :posio ;desenha a marca Registre.jogada :marca.jogador :posio ;registra a jogada na memria fi

aprenda Computador ;computador jogando Jogada.computador

;(...)
Desenhe.marca :marca.computador :posio Registre.jogada :marca.computador :posio fim

aprenda Jogada.computador ;tenta as diversas estratgias para o computador se Duas.ocupadas.uma.livre :marca.computador [pare] ;tenta ganhar se Duas.ocupadas.uma.livre :marca.jogador [pare] ;impede usurio de ganhar se Canto.ou.centro :cantocentro [pare] ;joga nos cantos ou no centro

Sorteie.posio [ [b 1] [b 3] [a 2] [c 2] ] ;sorteia uma das posies da lista


fim

aprenda Duas.ocupadas.uma.livre :marca ;retorna verdadeiro se existir uma linha ;onde aparece a mesma marca em duas posies e a terceira posio livre coloque 3Posio.livre :linhas :marca "posio seno vazia :posio [envie "falso] [envie "verd] fim

aprenda 3Posio.livre :l :m ;percorre a lista em :l, tomando cada sublista (uma linha) e retornando a posio onde ocorre a condio especificada em Duas.ocupadas.uma.livre se vazia :l [envie [ ] ] se no vazia Umalivre pri pri :l pri sp pri :l ltimo pri :l :m [envie Umalivre pri pri :l pri sp pri :l ltimo pri :l :m] envie 3Posio.livre sp :l :m fim

Sugestes O procedimento Jogue foi definido de maneira que sempre o usurio comea a jogar. Que tal tentar fazer com que o jogador que vai iniciar o jogo seja escolhido por sorteio? Voc tambm pode tentar eliminar o aspecto previsvel das estratgias usadas pelo computador, incluindo alguns sorteios (exemplo: quando existir mais de um canto livre, escolher um deles aleatoriamente). Uma estratgia mais complexa tentar escolher uma posio que permite completar mais de uma seqncia (com isso, o jogo estaria praticamente ganho na jogada seguinte). Gostou do Logo3D? Ento o que voc acha de elaborar um Jogo da Velha em 3 dimenses ? Vamos l! Referncia LOGO : conceitos, aplicaes e projetos, Jos Armando Valente & Ann Berger Valente, So Paulo, McGraw-Hill, 1988.

OXO, XOX deu empate!2


Verso usurio x usurio

Nome do arquivo: jogovel2.lgo Comando para executar: jogo.da.velha2 O que faz este programa? Nesta verso, o usurio joga o conhecido "jogo da velha" contra outro usurio. Diferentemente do Jogo da Velha 1, o computador limita-se a verificar a validade da jogada e quem ganhou o jogo quando este acabar. Instrues de uso Aps carregar o arquivo jogovel2.lgo, e clicar em Iniciar na tela de apresentao, o tabuleiro ser desenhado na tela e ser solicitado ao jogar que digite seu nome e depois que escolha sua marca no jogo (X ou O). As regras so as mesmas do jogo da velha tradicional (ganha quem conseguir primeiro preencher uma linha, coluna ou diagonal com sua marca), e para efetuar a jogada basta dizer a posio de acordo com o formato linha coluna (exemplo: linha a, coluna 3 ! a 3). Nesta verso o computador se limita a informar o final do jogo e quem foi o vencedor.

Devido similaridade desta verso 2 com a verso 1 do Jogo da Velha, sero destacadas apenas as diferenas entre as duas verses. Vrios procedimentos usados so os mesmos, portanto para maiores detalhes consulte o material sobre a verso 1 ou a prpria listagem do projeto.

Estrutura geral do projeto

Jogo.da.velha2
(proc. Inicial)

Tabuleiro
(des. tabuleiro)

Inicialize.variaveis
(inic. as variveis)

Represente.tabuleiro
(repr. do tabul. na memria)

Escolha.marca
(jogadores escolhem as marcas)

Jogue
(recursivo)

Jogo.terminado
(verif. fim de jogo)

Tstentrada
(testa entrada)

Jogada
(ver. se casa ocupada)

Desenhe.marca
(desenha a marca X/O)

Registre.jogada
(registra na mem. a jogada)

Quem.ganhou
(verif. o ganhador)

troca.marca
(troca o jogador)

Referncia
LOGO : conceitos, aplicaes e projetos, Jos Armando Valente McGraw-Hill, 1988. & Ann Berger Valente, So Paulo,

Tatgoshi Nome do arquivo: Tatgoshi.lgo Comando para executar: Tatgoshi Apresentao Algum j ouviu isso? Quando a gente gosta claro Que a gente Cuida... Fala que me ama S que da boca pra fora...( Sozinho Peninha) Pois . No adianta dizer que gosta e quer bem. preciso fazer muito mais: pequenas aes que garantem o bem-estar de quem a gente gosta. Que tal criar um ser amado virtual? Transformar a tartaruga em um pequeno robozinho que precisa de seus cuidados: carinho, alimentao, passeios, higiene. Tudo o que voc mesmo precisa para manter mente e corpo em perfeita harmonia. Quando surgiu o bichinho virtual, foi uma verdadeira febre. As crianas adoraram, mas os professores ficaram incomodados com tantos bips bips no meio da aula. O negcio tirar partido daquilo que a moada curte. Que tal aproveitar a ocasio para falar de responsabilidade, solidariedade, afetividade, ecologia e desenvolver uma conscincia voltada para os valores que realmente importam humanidade? Podese falar at mesmo de disciplina. Sem falar que muitos assuntos esto relacionados entre si, formando uma verdadeira teia: biologia, qumica, histria, geografia, tica, economia, esttica, poltica. Eu cuidarei do seu jantar Do cu e do mar E de voc e de mim... (Nando Reis ... ) Cuide. Do seu Tatgoshi, das pessoas que esto sua volta, da MeTerra e de voc mesmo!

O que faz este programa? Este programa simula um bichinho de estimao, semelhante aos famosos bichinhos virtuais. O objetivo do jogo fazer com que o bichinho permanea vivo o mximo de tempo possvel (mas ele nunca ultrapassa a idade de 30 anos). Instrues de uso Aps carregar o arquivo Tatgoshi.lgo e clicar em Iniciar, o programa ativa um temporizador que a cada contagem decresce as variveis de controle do bichinho. Caso o usurio queira uma pausa no jogo, pode fazer o bichinho dormir. Este comando desativa o temporizador at que seja clicado o boto acordar. Cada caixa com seu respectivo boto auto-explicativa. As barrinhas grficas logo acima do bichinho indicam o estado em que se encontra cada varivel de controle. necessrio cuidar para que o nvel de limpeza e de peso no cheguem a zero. O bichinho pode morrer por vrios motivos: 1) Inanio (motivo: alimentao inadequada); 2) Obesidade (motivo: excesso de alimentao); 3) Doenas (motivo: falta de limpeza); 4) Idade avanada. Alm disso, o usurio tem a opo de terminar o jogo clicando sobre o boto Fim. Caso o bichinho morra devido idade avanada, o usurio atingiu o objetivo do jogo. Aspectos de programao Logo Este programa trabalha com aspectos bastante interessantes para o controle de variveis. Por exemplo, a varivel de controle de peso do bichinho alterada de acordo com o comportamento da alimentao e da idade do bichinho. O comportamento do Tatgoshi depende exclusivamente de todas as variveis que controlam seus estados de humor, carncia, higiene, fome etc.

Estrutura geral do projeto

Tatgoshi
(Procedimento principal)

Mostraidade
(Mostra idade na janela grfica)

Criarcomandos
(Cria as janelas de controle)

Iniciavar
(Zera variveis de controle)

Acordar
(Retoma as atividades)

Calculapeso
(Faz clculo do peso)

Negar
(Desenha negao)

Verificaestado Inserepeso
(Insere valor na lista de clculo do peso) (Verifica variveis de controle)

Veridade
(Escolhe idade do fim do jogo)

Dormir
(Paralisa as atividades)

Decrescevariveis
(Decresce variveis de controle)

Final
(Verifica motivo da morte)

Banhar
(D banho)

Brincar
(Brinca)

Acariciar (Faz carinho)

Estudar
(Estuda)

Alimentar
(Alimenta)

Finaliza
(Encerra o programa)

Mudaestado
(Altera barra grfica)

Principais procedimentos
aprenda Tatgoshi ;procedimento principal Mudefjangr[[MS Sans Serif] 22 0 0 0 10] Iniciavar ;zera variveis Criarcomandos ;cria janelas de controle acordar ;retoma as atividades fim aprenda Acordar aprenda Verificaestado :idade ;verifica estado do Tatgoshi e manda mensagem de acordo com cada varivel se :alimento=0 [esc [estou com fome]] (...) fim aprenda Calculapeso :ListaPesos ;Calcula o peso atual do bichinho (...) enquanto [no vazia :ListaPesos] [Atr "peso :peso+ pri :ListaPesos Atr "ListaPesos sp :ListaPesos] (...) fim

(...) decrescevariveis (...) ativetemporizador 1 5000 [decrescevariveis inserepeso verificaestado :contaidade calculapeso :UltPesos atr "contaidade :contaidade+2 veridade :contaidade] fim

;reinicia a atividade do bichinho e decresce as variveis uma vez

aprenda Veridade :idade ;verifica a idade do Tatgoshi (...) Se (:idade = 200)[Esc (sentena "me "sinto "velho) enquanto [:idadefim<200][Atr "idadefim sorteienmero(300)]] se :idade=:idadefim [final :idadefim "idade] fim

aprenda Decrescevariveis

;a cada contagem decresce as variveis de estado se :alimento>0 [Atr "alimento :alimento-1] (...) mudaestado [-200 170] "Felicidade :carinho*10 (...) se ou ((resto :contaidade 10)=0)(:contaidade=0)[mostraidade] fim ;verifica o motivo da morte do bichinho se :motivo="peso [Esc [Meu peso estava excessivo]] (...) espere 20 finaliza fim
aprenda Final :idade :motivo aprenda Alimentar ;incrementa alimentao Atr "alimento :alimento+3

Procedimentos chamados pelos botes das janelas de controle do bichinho.

(...)
mudaestado [-200 150] "Alimentao :alimento*12.5 fim

Sugestes Este projeto pode ser enriquecido de diversas formas. Em relao alimentao, pode-se variar o cardpio fazendo com que o bichinho coma frutas, verduras, doces, cereais, para que se consiga controlar seu peso e, portanto, sua longevidade. Aproveitando o projeto ponteiro_a_ponteiro e modificando a contagem do tempo, pode-se utiliz-lo para controlar os horrios de alimentao, estudo, brincadeira, descanso do Tatgoshi. O bichinho tambm pode estudar at a universidade, basta fazer o estudo em diferentes nveis. Tente relacionar a afetividade de seu bichinho a outras variveis. Por exemplo: acarici-lo demasiadamente pode deix-lo mimado, sem vontade de tomar banho ou se alimentar no horrio indicado. E com vocs... MovimentaSom! Nome do arquivo: Comando para executar: Apresentao Voc gosta de msica? J pensou em criar sua prpria trilha sonora ou fazer a sonoplastia de seus programas computacionais? Transformar rudo em som com sentido trabalho mesmo para artista! Este projeto pode ajudar a compreender um pouco melhor alguns dos aspectos que compem o fenmeno sonoro, como altura e durao. medida que o usurio vai mexendo com uma srie de parmetros, pode produzir seqncias de sons bem interessantes, de forma interativa. Depois, s criar um arquivo prprio e reutilizar em outros projetos para criar efeitos sonoros inesperados, como uma histria em quadrinhos cujo enredo contado por meio de sons. A representao grfica dos sons gerados pelo programa no s permite a compreenso da funo de cada parmetro, como tambm produz efeitos visuais bem bonitos. Afine-se! Movimenta_som.lgo Movimenta_som

O que faz este programa? Neste programa, pode-se produzir seqncias de sons a partir de determinadas alturas e duraes escolhidas pelo usurio. Para auxiliar a compreenso do fenmeno sonoro, o usurio pode acionar uma representao grfica do movimento sonoro escolhido. Tambm a partir desse projeto possvel estabelecer uma correspondncia entre o nome tradicional dos sons (notas musicais) e os comandos MIDI (nmeros que representam as freqncias dos sons). Instrues de uso Aps carregar o arquivo Movimenta_som.lgo e clicar em Iniciar na tela de apresentao, uma janela com as caixas Seqncia, Altura inicial, Durao inicial e Quantidade de notas exibida. Altere esses parmetros como desejar e ento clique em Toque (se Grfico estiver selecionado, um desenho correspondente ao som ser produzido pela tartaruga na tela). Estas seqncias estaro sendo, alm de tocadas, armazenadas na memria (em uma lista). Depois de produzir diversos sons, voc pode clicar em Toque Tudo para ouvir (e ver) toda a seqncia de sons produzida (at o ltimo Toque Tudo a memria limpa). No programa, temos as seguintes caixas e botes: 1. Seqncias: lista de conjuntos de notas que tem direes e velocidade predeterminadas com as seguintes caractersticas: Permanece sem variao de altura e durao das notas Permanece_acelera sem variao de altura e diminuindo o valor da durao das notas (acelerando) Permanece_desacelera sem variao de altura e aumentando o valor da durao das notas (desacelerando) Desce diminuio de altura (caminha do agudo para o grave) e sem variao na durao das notas

Desce_acelera diminuio de altura (caminha do agudo para o grave) e diminuindo o valor da durao das notas (acelerando) Desce_desacelera diminuio de altura (caminha do agudo para o grave) e aumentando o valor da durao das notas (desacelerando) Sobe - aumento da altura (caminha do grave para o agudo) e sem variao na durao das notas Sobe_acelera aumento da altura (caminha do grave para o agudo) e diminuindo o valor da durao das notas (acelerando) Sobe_desacelera aumento da altura (caminha do grave para o agudo) e aumentando o valor da durao das notas (desacelerando) 2. Altura: o parmetro sonoro que diz respeito freqncia do som. o universo do grave-agudo e representado, na notao tradicional, pelas notas e pelo nmero que est em frente do nome (C3 o d central, o C2 um d mais grave e o C4 um d mais agudo). Aparece tambm ao lado do nome da nota o nmero MIDI correspondente. 3. Durao: determina o tempo de emisso do som a partir da seguinte relao: 60 corresponde a 1 segundo. 4. Quantidade de notas: especifica o nmero de notas que compe a seqncia de som escolhida. 5. Toca: toca uma determinada seqncia de sons com os respectivos valores escolhidos pelo usurio. 6. Toca Tudo: toca todas as seqncias feitas e, em seguida, limpa a memria.

Aspectos de programao Logo Neste projeto so trabalhados principalmente os comandos que envolvem o tratamento de sons no SuperLogo (comandos MIDI). Usa-se tambm a manipulao de listas para produzir as seqncias musicais. A recurso um conceito muito importante usado neste projeto. No procedimento tocaseqsons, a recurso usada para percorrer a lista da seqncia de sons e assim tocar o som correspondente (primitiva faa). Observe que a cada chamada recursiva, o parmetro alterado ( usada a primitiva sp semprimeiro). Esta possibilidade de usar recurso com a

mudana no parmetro de chamada poderosa e pode ser usada em muitas outras situaes. Estrutura geral do projeto
Movimenta_som
(procedimento Inicial)

Info
(cria a janela de instrues)

Caixacombv
(volume)

Janseqsons
(cria a janela de controle)

Restauratela
(limpa a tela)

Caixacombdu
(durao)

Caixacombsom Tocaseqsons
(toca a seqncia na memria) (seqncias)

Armazenaseqsons Desce
(altera som)

Permanece(alt era som)_ Permanece_acelera


(altera som)

(armazena a seqncia de sons)

Sobe Desce_acelera
(altera som) (altera som)

Sobe_acelera
(altera som)

Desce_desacelera(altera
som)

Permanece_desacelera(alter
a som)

Sobe_desacelera
(altera som)

Soarver
(toca a nota + grfico)

S
(procedimento auxiliar)

Grafo
(desenha grfico)

Sommidi
(mensagem para o midi)

Principais procedimentos
aprenda Combinasom ;procedimento principal atr "seqsons [ ] Info ;janela de instrues Janseqsons ;cria janela de controle fim

aprenda Janseqsons ;cria a janela de controle Restauratela criejanela "main "movesom [Seqncias de sons: Combinando ALTURA E DURAO] 5 150 350 70 Caixacombaltu "movesom crieesttico "movesom "estseq [Seqncia] 5 0 40 10 ;(...) criecaixamarcao "movesom "grupo "marcao [Grfico] 235 10 45 13 crieboto "movesom "boto "Toque 230 30 30 15 [Armazenaseqsons Vermarca] crieboto "movesom "boto3 [Toque Tudo] 265 30 40 15 [Tocaseqsons :seqsons atr "seqsons [ ] ] crieboto "movesom "boto2 "Fechar 310 30 30 15 [apaguejanela "movesom tat atr "seqsons [ ] ] Caixacombsom "movesom fim

aprenda Tocaseqsons :seqsons ;toca a seqncia de sons armazenada na memria se :seqsons = [] [atribua "seqsons [ ] pare] faa pri :seqsons Tocaseqsons sp :seqsons fim aprenda Armazenaseqsons ;armazena a seqncia de sons em uma fila inserefila "seqsons (lista pri textodacaixacombinao "combsom ~ pri textodacaixacombinao "altu1 ~ pri textodacaixacombinao "du1 ~ pri textodacaixacombinao "vezesrepet) fim

aprenda Desce_acelera :nota :duraao :v Soarver :nota :duraao :v -3 -2 fim

aprenda S :nota :duraao Sommidi :nota :duraao 127 0 0 fim

aprenda Sommidi :nota :duraao :volume :timbre :canal coloque abramidi "nomesaidamidi mensagemmidi (lista 192+:canal :timbre) mensagemmidi (lista 144+:canal :nota :volume ) espere :duraao mensagemmidi (lista 128+:canal :nota :volume - :volume) fechemidi fim

aprenda Soarver :nota :duraao :v :p1 :p2 ;toca a nota e desenha o grfico correspondente se ou :v = 0 :duraao < 1 [pare] Grafo :nota :duraao ;grfico S :nota :duraao ;nota Soarver (:nota + :p1) (:duraao + :p2) (:v - 1) :p1 :p2 un fim

Sugestes Que tal tentar exportar os sons produzidos para um arquivo de forma que possam ser executados no futuro? D uma olhada no projeto Tirando som de A a Z para uma idia de como trabalhar com manipulao de arquivos e comandos de midi. Voc tambm pode tentar mudar o desenho que a tartaruga faz. Gosta de violino? Saxofone? Ento tente mudar o timbre para simular diversos instrumentos musicais. Outra idia interessante: voc pode fazer a sonoplastia de um outro projeto uma cena de trnsito, por exemplo. Tirando som de A a Z Nome do arquivo: Comando para executar: Apresentao Que tal transformar o teclado alfanumrico do seu computador em um teclado sonoro? Para quem gosta de composio musical, este projeto cai muito bem. Explorando diferentes instrumentos musicais e timbres variados, pode-se compor msicas para todos os gostos. Explore os diversos ritmos brasileiros: samba, ax, bossa nova, rock. Embarque nessa e d uma viajada pelo mundo: passe pelo tango em Buenos Aires, dance com os cubanos ao som de uma rumba ou v at o outro lado do oceano para ouvir um bom fado! Aproveite para conhecer a histria e a cultura desses lugares. Pesquise sobre as caractersticas geogrficas e econmicas de cada lugar e aprenda muito mais. Com os recursos de gravao e exportao de sons, voc encontrar neste projeto uma ferramenta extremamente til que poder se incorporado a qualquer outro projeto computacional. Experimente! Tirando_som.lgo Teclado

O que faz este programa? Este programa simula um teclado musical eletrnico usando os comandos de interao com a interface Midi. possvel criar msicas, grav-las e depois export-las para usar em outros projetos do SuperLogo. Instrues de uso Aps carregar o arquivo Tirando_som.lgo e clicar em Iniciar na tela de apresentao, uma janela (figura ao lado) ser exibida. Nela, possvel configurar os diversos parmetros do teclado midi (volume, oitava, canal), alm do instrumento musical. Aps escolher o instrumento na caixa de listagem, clique em Selecionar para ativ-lo. Para tocar as notas, voc deve usar o teclado: a tecla C representa o primeiro D da oitava selecionada; na linha do teclado iniciada pelo A encontram-se os sustenidos, as teclas pretas do piano. Existe ainda o recurso do gravador. Por meio do boto Gravar, o gravador registra todas as notas tocadas at que o boto Parar seja pressionado. possvel ento ouvir o som gravado e at mesmo export-lo para um arquivo do Logo contendo um aprenda nome_da_msica (boto exportar) que pode ser usado em outros projetos feitos em Logo. Aspectos de programao Logo Neste projeto so usados os recursos da interface midi que o SuperLogo oferece. Alm disso, o conceito de manipulao de arquivos utilizado para implementar o recurso de exportao da msica produzida. Veja no procedimento Tecla_pressionada um exemplo de como mandar uma mensagem para a interface midi com o objetivo de tocar uma determinada nota musical (neste procedimento tambm usado a primitiva asciitecla, que devolve o valor ascii da tecla pressionada).

O procedimento Exportar faz uso das primitivas do SuperLogo relacionadas com a manipulao e escrita de arquivos. Este um recurso poderoso (mas no to complicado) do SuperLogo e que vale a pena conhecer. Estrutura geral do projeto
Teclado
(procedimento inicial)

Configura_midi
(cria os elementos de interface) Usurio pressiona/solta tecla

Inicializa
(prepara as caixas de listagem)

Tecla_pressionada
(toca a nota correspondente a tecla pressionada)

Tecla_solta
(para de tocar a nota correspondente a tecla solta)

Gravador_mensagem
(grava a nota) Procedimentos chamados devido a eventos em elementos da interface (botes, barras de rolagem etc.)

Canal
(barra de rolagem Canal)

Instrumento
(seleo do instrumento musical caixa de listagem)

Exportar
(exporta a msica gravada para um arquivo do Logo)

Oitava
(barra de rolagem Oitava)

Gravador_inicia
(inicia a gravao)

Meu_fim
(exporta a msica gravada para um arquivo do Logo)

Volume
(barra de rolagem volume)

Gravador_pare
(encerra a gravao/execuo)

Mude_velocidade_grava
(barra de rolagem velocidade)

Gravador_toca
(toca a seqncia de notas gravadas)

Principais procedimentos
aprenda Teclado ;(...)

;procedimento inicial

(ativetecla [Tecla_solta])

[Tecla_pressionada]

;(...) Configura_midi ;cria os elementos de interface Inicializa ;prepara as caixas de listagem da janela principal e as demais variveis ;(...) fi
aprenda Tecla_pressionada ;verifica a tecla e comea a tocar a nota correspondente local "atecla atr "atecla asciitecla local "nota atr "nota elemento :atecla :omapa se no soiguais :nota -10 [~ mensagemmidi (lista 144+:canal :oitava+:nota :velocidade) se :gravando [Gravador_mensagem (lista 144+:canal :oitava+:nota :velocidade)]~ ] fim

aprenda Gravador_mensagem :arg ;adiciona ao vetor de notas gravadas a nota :arg atr "contador_gravacao :contador_gravacao + 1 atribuaelemvetor :contador_gravacao :notasgravadas :arg fim

aprenda Exportar ;exporta a msica gravada para um arquivo do Logo contendo um aprenda nome_da_msica ;(...) incio da manipulao do arquivo abraparaescrever :arquivo_exportado mudeescrita :arquivo_exportado ;a partir de agora, ao usar a primitiva esc, estamos escrevendo no arquivo e no mais na janela de comandos esc sentena [aprenda] :nome_musica esc [esc abramidi] esc (lista "repita :contador_gravacao (lista "mensagemmidi "elemento "cv :notasgravadas "espere :veloci_grava) ) esc [fechemidi] esc [fim] mudeescrita [ ] fechearq :arquivo_exportado ;(...) fim

Sugestes Neste projeto, exportamos a msica produzida para um arquivo contendo um procedimento em Logo. Que tal estudar a possibilidade de gravar as msicas geradas no formato midi (.mid) do Windows? Dr. BiruTat Nome do arquivo: Comando para exexutar: Apresentao Voc j pensou em bancar um cientista da Inteligncia Artificial? Este projeto tem uma raiz histrica muito interessante. Ele foi inspirado em um dos primeiros grandes projetos da rea de IA. Saber como manter uma conversao sem dvida requer colocar inteligncia no programa computacional. Para isso, nada como a conversa entre um psiquiatra e seu cliente: eis o desafio deste projeto. Bolar assuntos possveis que tenham algum tipo de ligao no to simples como parece. Modificar oportunamente o fluxo de execuo do programa produz resultados bem interessantes que imitam uma conversao real. Tente pensar em como seria seu psiquiatra: sisudo, calado, brincalho, astuto? Que personalidade voc criaria para ele? Brinque um pouquinho, ser muito divertido! O que faz este programa? Este programa simula a interao entre um psiquiatra e seu paciente. O psiquiatra pode manter uma conversa com o paciente sobre qualquer assunto, pois o programa no toma partido na conversa ele simplesmente cria condies para que ela continue. Dr_birutat.lgo Psiquiatra

Instrues de uso Aps carregar o arquivo Dr_birutat.lgo e clicar em Iniciar na tela de apresentao, o psiquiatra iniciar a conversa fazendo uma pergunta na Janela de Comandos. Voc deve acompanhar a conversa na Janela de Comandos e interagir com o programa por meio da caixa de questo.

Aspectos de programao em Logo

O aspecto mais importante deste projeto a manipulao de listas, em conjunto com a possibilidade de tornar os programas inteligentes. O procedimento Palavra.chave um exemplo onde so usadas primitivas de manipulao de listas (item, sortel). A inteligncia do programa est na capacidade de manipulao da sentena fornecida pelo usurio e no grau de sofisticao da resposta. O programa processa a sentena fornecida procurando palavras-chave, verbos etc. e, baseado nestas informaes, constri a resposta. Em vrios casos, a resposta to apropriada que os usurios tm a sensao de que esto conversando com um psiquiatra.

Estrutura geral do projeto

Psiquiatra
(procedimento inicial)

Preparao
(ajuste inicial dos bancos)

Mensagem.de.suporte
(caso onde nada foi digitado)

Conversa
(controla o dilogo)

Palavra.chave
(procura uma palavra.chave)

Verbo
(procura um verbo)

Pronome
(procura um pronome)

Frase.geral
(responde com uma frase geral

Procure.verbo
(procura um verbo da lista de verbos)

Procure.pronome
(procura um pronome da lista de pronomes )

Substitui.verbo
(procura o verbo e constri sufixo usando o verbo encontrado)

Substitui.pronome
(procura o pronome e constri sufixo usando o encontrado)

Tem.resp
(foi encontrada uma estratgia)

Principais procedimentos
aprenda Psiquiatra ;procedimento inicial ;(...) Preparao ;ajuste dos bancos

;(...)
Conversa fim

;incio da conversa

aprenda Conversa ;controla o dilogo coloque caixadequesto [Dr. BiruTat - Digite aqui] ~ [Acompanhe a conversa na Janela de Comandos] "frase ;(...) ;tenta responder por uma das 4 estratgias a seguir Palavra.chave Verbo Pronome Frase.geral ;(...) Conversa ;chamada recursiva fim

aprenda Palavra.chave ;procura uma palavra chave no texto digitado ;(...) se item [raiva chato chata nervoso nervosa] :frase ~ [esc sentena [Dr. BiruTat : ] [por que isto irrita voc tanto ?] Tem.resp pare] se item [deprimido deprimida aborrecido aborrecida chorar lgrimas dor dores triste] :frase ~ [esc sentena [Dr. BiruTat : ] sortel [[sinto muito saber sobre isso][por que voc sente isso?]] Tem.resp pare] ;(...) fim aprenda Verbo ;tenta construir a resposta a partir de verbos se :tem.resposta [pare] se ou Procure.verbo :verbos.pres Procure.verbo :verbos.pas [esc (sentena [Dr. BiruTat : ] sortel :prefixos.de.verbo :sufixo) Tem.resp] fim aprenda Substitui.verbo :lista1 :lista2 ; ;constri o sufixo da frase usando o verbo se vazia :lista2 [envie "falso]

aprenda Procure.verbo :lista.verbos ;procura um verbo da lista se vazia :lista.verbos [envie "falso]

se Substitui.verbo pri :lista.verbos :frase [envie "verd]


envie Procure.verbo sp :lista.verbos fim

se soiguais pri :lista1 pri :lista2 [coloque ji ltimo :lista1 sp :lista2 "sufixo envie "verd]
envie Substitui.verbo :lista1 sp :lista2 fim

Sugestes A partir deste programa podemos pensar em outras situaes nas quais o dilogo entre pessoas importante. Por exemplo: pode-se simular um garom de um restaurante. Voc deve apresentar ao fregus o cardpio, pedir que ele selecione o que deseja e ir adicionando seus pedidos em uma lista. Pode, por exemplo, dividir o cardpio em vrias categorias (entrada, prato principal, salada, sobremesa etc.) e servi-las uma de cada vez. Ao final, pode fazer o fechamento da conta e at permitir que o cliente escolha a forma de pagamento. Referncia: LOGO: conceitos, aplicaes e projetos, Jos Armando Valente & Ann Berger Valente, So Paulo, McGraw-Hill, 1988.

Fbrica de portugus maluco Nome do arquivo: Comando para executar: Apresentao Divirta-se a valer com as frases inesperadas que esta fbrica pode criar! Quase sempre o programa acerta a sintaxe da frase mas, quanto ao sentido, coisa para doido! Alm disso, quem oferece a matria-prima para a fbrica o usurio: d asas sua imaginao e garanta originalidade sua fbrica. De uma forma interativa e bastante gostosa, pode-se brincar um pouquinho com a Lngua Portuguesa analisando suas caractersticas, regularidades, excees. Se preferir, mude de idioma: what about playing a game? Experimente tambm armazenar no banco de dados informaes de um domnio especfico, por exemplo, Histria. Imagine s quanta confuso vai dar! Se a sua preocupao educacional, acrescente uma opo para guardar as frases corretas. A professora gritou o mouse de maneira encantadora. Epa! Uma frase maluca apareceu por aqui! Fabrica_portugues.lgo Fbrica

O que faz este programa? Este programa gera (quase sempre) frases sintaticamente corretas, mas muitas vezes semanticamente malucas, a partir de um banco de dados formado por colees de sujeitos + verbos + objetos + complementos.

Instrues de uso Aps carregar o arquivo Fabrica_portugues.lgo e clicar em Iniciar na tela de apresentao, ser exibida uma janela de controle contendo seis botes: Montar frase, Inserir sujeito, Inserir verbo, Inserir objeto, Inserir complemento e Fechar. Para que o programa crie as frases aleatoriamente a partir do banco de dados, basta clicar em Montar frase. Tambm possvel adicionar novos termos ao banco de dados por meio dos demais botes (Inserir sujeito, por exemplo).

Aspectos de programao Logo A manipulao de listas o principal conceito usado neste programa. Operaes de insero e sorteio de elementos so as mais usadas. No procedimento montafrase, por exemplo, so usadas operaes de listas como sentena e sorteieelemento (sortel). J no procedimento inssuj, observamos o uso da primitiva juntenofim (jf), usada para inserir elementos no final de uma lista.

Estrutura geral do projeto


Fbrica
(procedimento Inicial)

Menucontrole
(menu com os botes)

Jogo
(inicia o jogo)

Inssuj
(insere sujeito)

Insver
(insere verbo)

Inscomp1
(insere objeto)

Inscomp2
(insere complemento)

Testa_entrada
(testa a entrada)

Montafrase
(monta a frase louca a partir de um sorteio das diversas listas do banco)

Principais procedimentos

aprenda Montafrase ;monta a frase louca a partir de um sorteio das diversas listas do banco rotule sentena sortel :sujeitos sentena sortel :aes ~ sentena sortel :complementos sortel :complementos2 fim

aprenda Inssuj ;inserir sujeito

(...)
atr "sujeitos jf tst caixadequesto [Inserir sujeito] [Digite o sujeito da frase ...] :sujeitos

(...)
fim

Sugestes Que tal criar um boto para listar todas as frases que foram criadas? Ou ento um boto para guardar somente as frases que o usurio considerar como corretas? Seria interessante podermos exportar as frases que mais gostamos para um arquivo texto, que depois pode ser impresso. D uma olhada nos projetos Tirando som de A a Z e Deu branco no texto! para ver exemplos de manipulao de arquivos em Logo. possvel tambm algumas abordagens interessantes voltadas ao ensino de lnguas, como, por exemplo, concordncia, verificao da semntica da frase formada, entre outras atividades.

A palavra ... A_palavra_e.lgo Nome do arquivo: Comando para executar: Frases Apresentao O Ministrio da Sade adverte: ______ causa muitos males sade. Adivinhar a palavra que falta muito fcil, no? Sabe por qu? Porque faz parte da nossa cultura "televisiva" ouvir e ler esta frase quase todos os dias. Agora tente esta: Nos ltimos dez anos, o Brasil conquistou timos resultados no ________ . E ento? Conseguiu? Um pouquinho mais complicado, no ? Afinal, h vrias possibilidades: vlei, automobilismo, futebol, vlei de praia, cinema, Grammy... (veja s, pelo menos nos esportes e nas artes vamos indo bem!). Perceba como uma frase deste tipo desencadeia muitas idias e, conseqentemente, aciona vrios conhecimentos ao mesmo tempo. Um jogo desse tipo pode ser superinteressante. Alm de tratar de vrios assuntos e testar conhecimentos, pode-se recorrer ao conjunto de dicas que o jogo fornece. Ento, exercite-se!

O que faz este programa? O programa apresenta uma frase (ou um pequeno texto) contendo lacunas. O usurio deve preencher as lacunas dando palavras como entrada (uma de cada vez, mas sem uma ordem especfica). O usurio pode buscar

auxlio na dica da palavra que se encontra ao lado da lacuna. O uso de textos mais longos faz parte do projeto "Deu branco no texto!".

Instrues de uso Aps carregar o arquivo A_palavra_e.lgo e clicar em Iniciar na tela de apresentao, uma janela com as opes Inserir nova frase e Jogar ser apresentada. Para jogar, selecione esta opo e clique Ok. Uma frase ser ento apresentada na tela, j com as lacunas (e as respectivas dicas ao lado de cada lacuna). na caixa de questo Tentativa que devem ser digitadas as tentativas de palavras. No h nenhuma ordem para tentar as palavras (apenas tente uma de cada vez). Conforme o usurio for acertando, as lacunas iro sendo preenchidas e, ao terminar, ele ser informado se conseguiu completar a frase (ou o pequeno texto). Ao escolher a opo Inserir nova frase, o usurio deve digitar a frase, depois as palavras a serem retiradas e as respectivas dicas. O jogo ser ento executado com essa frase inserida e, ao terminar, haver a opo de confirmar ou no a nova insero.

Aspectos de programao Logo Este projeto trabalha principalmente com manipulao de listas e recurso. Em vrios procedimentos so usadas diversas operaes de listas, como, por exemplo, trocar um determinado elemento de uma lista (Trocaelem), contar o nmero de caracteres em uma frase no formato de lista (Contacaracteres), alm de operaes bsicas como insero (juntenofim, juntenoincio), remoo (retire) e consulta de elementos na lista (elem, pri, elemento). Outro recurso poderoso, a recurso, pode ser observado tanto no procedimento Montajogo quanto em Trocaelem. No procedimento Trocaelem, por exemplo, a chamada recursiva feita sobre os valores dos parmetros modificados (no caso :lista sem o primeiro elemento).

Estrutura geral do projeto


Frases
(procedimento Inicial)

Limpatela
(prepara a tela)

Jogo
(inicia o jogo)

Inserirnovo
(mdulo de insero)

Contacaracteres
(conta os caracteres de uma frase)

Jogada
(responsvel pela tentativa)

Tente
(verifica se a tentativa correta )

Montajogo
(remonta a frase retirando as palavras a serem escondidas)

Sublinhado
(prepara um sublinhado do mesmo tamanho da palavra)

Trocaelem
(troca um elemento por outro em uma lista)

Rotonde
(rotula um texto em um local especfico)

Principais procedimentos
aprenda Jogo ; inicia o mdulo do jogo, sorteando uma frase do banco

;(...) local "jogada listafrase

atr

"jogada

sortel

;escreve na Tela Rotonde 50 Montajogo pri :jogada pri sp :jogada ;responsvel pelas tentativas do usurio Jogada pri :jogada pri sp :jogada Frases fim

aprenda Jogada :jfrase :jpal ; responsavel pela Jogada (tentativa) enquanto[no vazia :jpal][ Tente pri caixadequesto [Tentativa][Tente uma palavra] numelem :jpal Limpatela Rotonde 50 Montajogo :jfrase :jpal ~ se (vazia :jpal)[Toqueaudio "aplauso mostrecaixamensagem [Parabns!][Voc acertou todas as palavras!]] ] fim

aprenda Montajogo :frase :palavra ; remonta a frase retirando as palavras a serem escondidas se (vazia :palavra) [envie :frase] se (meuelem meupri meupri :palavra :frase) [envie montajogo trocaelem :frase meupri meupri :palavra sentena sublinhado meupri meupri :palavra sp meupri :palavra sp :palavra ] envie montajogo :frase sp :palavra fim

aprenda Tente :tentativa :j ;verifica se a palavra jogada parte da frase para [i 1 :j] [se(meuelem :tentativa elemento :i :jpal) [atr "jpal retire elemento :i :jpal :jpal PARE]] mostrecaixamensagem [Jogo da frase com lacunas][Tente outra palavra...] fim

aprenda Trocaelem :lista :velho :novo ; dada uma lista, troca um elemento por outro se (vazia :lista)[envie [ ]] se (soiguais pri :lista :velho) [envie trocaelem ji pri :novo ji pri sp :novo sp :lista :velho :novo] envie ji pri :lista trocaelem sp :lista :velho :novo fim

Sugestes Que tal buscar na tentativa do usurio se ele digitou algo prximo de uma das palavras corretas (por exemplo, uma subseqncia da palavra), ou se ele digitou a palavra mas cometeu algum erro de ortografia? Tente implementar outros tipos de dicas: imagens e sons, por exemplo, associados a uma lacuna.

Deu branco no texto! Nome do arquivo: Comando para executar: Apresentao Ah, no!!! O computador apagou algumas palavras! E agora? Este projeto apresenta um texto todo esburacado. A brincadeira consiste em descobrir as palavras que lhe do sentido. A, sim, que a coisa fica legal. Porque muitas vezes d para mudar sutilmente seu sentido original sem que haja comprometimento da inteligibilidade do texto todo. Trata-se de um exerccio criativo com a lngua, que envolve alguns conhecimentos especficos: saber quando um verbo ou um substantivo o que falta ali, qual a regncia de um certo verbo ou a concordncia verbal e nominal. No h dica alguma disponvel no projeto, o usurio precisa interpretar o que l. Pode-se variar indefinidamente o tipo de texto, tanto em relao ao seu estilo literrio quanto em relao ao assunto que comenta. Tambm pode ser bem explorado no ensino de lnguas. D uma ! Temos certeza de que este vai interess-lo! O que faz este programa? Este programa apresenta um texto com diversas lacunas3. Cabe ao usurio tentar encontrar as palavras que esto faltando, realizando um exerccio de interpretao do texto. Tambm existe a possibilidade de inserir novos textos no banco. Deu_branco.lgo Deu_branco

Instrues de uso Aps carregar o arquivo Deu_branco.lgo e clicar em Iniciar na tela de apresentao, uma janela com as opes Inserir novo texto no banco e Jogar ser apresentada. Para jogar, selecione esta opo e clique Ok. Um texto ser ento apresentado na Janela de Comandos (somente no caso do texto ser
3

Este projeto uma verso do A palavra ... e por esta razo tem alguns procedimentos idnticos. Aqui, nos deteremos nos procedimentos especficos deste projeto que ainda no foram comentados.

pequeno, ele ser apresentado na Janela Grfica), j com as lacunas. na caixa de questo Tentativa que devem ser digitadas as de palavras para o preenchimento das lacunas. No h nenhuma ordem para tentar as palavras (apenas tente uma de cada vez). Conforme for acertando, as lacunas iro sendo preenchidas e, ao terminar, voc ser informado de que concluiu o preenchimento do texto. Ao escolher a opo Inserir novo texto no banco, digite o nome do arquivo com o texto4 (este j deve se encontrar no subdiretrio textos deste projeto). Veja abaixo como deve estar o texto:
Na linha seguinte ao texto, digite === (3 sinais de igual) e na outra linha comece a digitar as palavras que deseja retirar do texto. Aps a ultima palavra, na linha seguinte digite novamente === Exemplo: blabla bla bla blabla bla palavra1 bla bla bla palavra2 bla bla blablabla === palavra1 palavra2 ===

O jogo ser executado com este texto para que voc possa conferi-lo. Ao terminar, confirme ou no a insero do texto no banco. Aspectos de programao em Logo O principal diferencial deste projeto com relao ao projeto A palavra ... so os recursos usados para trabalhar com arquivos. D uma olhada no procedimento Preparejogo para verificar como esse aspecto utilizado. Consulte tambm a documentao do projeto A palavra ... para verificar como feita a manipulao de listas e a definio dos procedimentos recursivos.

O arquivo deve estar no formato .txt puro, ou seja, sem formatao. Pode-se usar qualquer editor de texto para produzi-lo.

Estrutura geral do projeto

Deu_branco
(procedimento Inicial)

Carregabanco
(inicializa o banco)

Limpatela
(prepara a tela)

Chamados por botes

Jogo
(inicia o jogo)

Inserirnovo
(insere texto no banco)

Preparejogo
(prepara o arquivo)

Rotonde
(rotula um texto em um local especfico)

Jogada
(responsvel pela tentativa)

Tente
(verifica se a tentativa correta )

Montajogo
(remonta a frase retirando as palavras a serem escondidas)

Sublinhado
(prepara um sublinhado do mesmo tamanho da palavra)

Trocaelem
(troca um elemento por outro em uma lista)

Principais procedimentos5
aprenda Preparejogo :nomearq ;l o texto do arquivo fechetodosarq ;fecha eventuais arquivos abertos abraparaler :nomearq ;abre o arquivo para leitura mudeleitura :nomearq ;muda o modo de leitura para o arquivo ;agora vamos ler... atr "l leial enquanto [& no elemento "=== :l no fimarq] [atr "jfrase sentena :jfrase :l atr "l leial] enquanto [no fimarq] [atr "l leial se meuelem meupri :l :jfrase [atr "jpal jf :l :jpal]] mudeleitura [ ] ;volta o modo de leitura para o teclado fechearq :nomearq ;fecha o arquivo ;(...) fim

Sugestes

Que tal buscar na tentativa do usurio se ele digitou algo prximo de uma das palavras corretas (por exemplo, uma subseqncia da palavra, ou ento se ele digitou a palavra mas cometeu algum erro de ortografia)? Tente implementar outros tipos de dicas: imagens e sons, por exemplo, associados a uma lacuna. Pode-se alimentar o banco de texto com os mais diversos assuntos, que podem ser usados em praticamente qualquer disciplina (exemplos: preenchimento de fatos histricos, personagens importantes, dados geogrficos, conceitos fsicos, exerccios de lnguas, entre outros).

Destaque para o procedimento que difere dos demais encontrados em A palavra .... Recomendamos a consulta da documentao do referido projeto.

Fuja: calorias vista! Nome do arquivo: Comando para executar: Apresentao Foi-se o tempo em que arroz, feijo, bife, batatinha frita e salada era a nossa refeio "quase" diria. Embora os nutricionistas continuem afirmando que uma tima refeio, quem que pode comer uma comidinha caseira todos os dias? Cada vez mais os fast foods entram em nossas vidas. Agora temos que nos preocupar com nossas necessidades nutricionais e aprender mais sobre o assunto. Bolar um cardpio implica conhecer nossos prprios hbitos (sedentarismo, vida de atleta, atleta de escritrio etc.) e tambm conhecer o valor nutricional dos alimentos e os horrios adequados para consumi-los. Integrando conceitos de biologia, nutrio, matemtica, culinria, qumica (e at onde nossa imaginao puder levar pense, por exemplo, nos cardpios exticos dos mexicanos, indianos, chineses e por que eles consomem o que consomem; vem a a histria, geografia e muito mais), este programa bem diversificado conceitualmente. O que faz este programa? A partir das informaes da pirmide alimentar a respeito das quantidades recomendadas para o consumo dirio, este projeto analisa as trs refeies dirias do usurio caf da manh, almoo e jantar e aponta as mudanas necessrias para balancear sua refeio. Calorias_a_vista.lgo Refeio

Na pirmide, os alimentos esto agrupados primariamente de acordo com os nutrientes que eles fornecem, e no, simplesmente, pela quantidade de calorias. Para a maioria dos grupos alimentares, a unidade de poro comparvel quantidade tipicamente relatada nas pesquisas de consumo

alimentar. Por exemplo: 1/2 xcara de vegetais cozidos ou 1 xcara de vegetais folhosos crus. Assim, as pores so simples. Apenas para os grupos das carnes, as pores variam mais e so medidas em gramas.

Pirmide alimentar

Instrues de uso Aps carregar o arquivo Refeicao.lgo e clicar em Iniciar na tela de apresentao, uma caixa de questo ir aparecer solicitando que o usurio digite a quantidade de pores de cada grupo de alimentos (pes, vegetais, frutas, laticnios e carnes) em cada uma das trs refeies dirias (caf da manh, almoo e jantar). O programa realiza ento os clculos do total de pores ingeridas por grupo de alimentos e imprime na tela se a refeio foi balanceada ou no (e em quais grupos e em que quantidade houve o excesso, se este existir). Aspectos de programao Logo Neste projeto introduzido o conceito de vetor em Logo: um vetor pode ser considerado uma espcie de lista, s que com um tamanho fixo que predeterminado na sua inicializao e tambm com seus elementos indexados o acesso direto ao elemento. Os vetores so teis neste projeto, pois o nmero de informaes fixo (so sempre cinco grupos alimentares, por exemplo) obviamente tambm poderamos ter usado listas na implementao: que tal voc tentar fazer isso? Alm de manipulao de vetores (procedimento entra_ref), algumas operaes matemticas simples so usadas no clculo do total de pores

ingeridas em cada refeio e na comparao destes valores com os considerados ideais (procedimentos analisa_dados e soma_tudo ). Iteraes usando enquanto so utilizadas na manipulao dos vetores (para preencher os valores, por exemplo (ver entra_ref). Variveis locais tambm so utilizadas para auxiliar a manipulao dos dados dentro de um determinado procedimento.

Estrutura geral do projeto


Refeio
(procedimento inicial)

Entra_ref
(entrada dos dados)

Analisa_dados
(consumo por categoria)

Soma_tudo
(soma todos os valores)

Resultado
(resultado final)

Testa_entrada
(testa a coerncia da entrada)

Esctela
(escreve na Janela Grfica e muda a linha)

Msg_erro
(mensagem de erro)

Principais procedimentos
aprenda Refeio

;procedimento inicial

;;;;;;;;;;;;;;;; ;entrada dos dados... local "caf atr "caf entra_ref [Caf da Manh] local "alm atr "alm entra_ref [Almoo] local "jan atr "jan entra_ref [Janta] ;;;;;;;;;;;;;;;; Resultado Soma_tudo Analisa_dados :caf ~ Analisa_dados :alm Analisa_dados :jan fim aprenda Analisa_dados :ref ;analisa a lista com ;uma refeio devolve um vetor com os ;consumos de cada categoria local "vetor_valores atr "vetor_valores {0 0 0 0 0} local "i atr "i 1

;percorrendo o vetor e atribuindo valores aos ;elementos


enquanto [no maior :i numelem :ref] ~ [atribuaelemvetor :i :vetor_valores pri elemento :i :ref ~ atr "i :i + 1] envie :vetor_valores fim

aprenda Resultado :ref_dia ;compara os valores consumidos nas refeies com uma tabela e verifica se est ou no de acordo atr "valores [11 4.5 3 3 190]

aprenda Soma_tudo :cafe :almoco :janta ;dados os 3 vetores de quantidades, um para cada refeio, soma os trs e devolve o vetor com os valores de todas as refeies do dia local "vetsoma atr "vetsoma {0 0 0 0 0} local "i atr "i 1 enquanto [no maior :i 5] [ ~ stribuaelemvetor :i :vetsoma (soma ~ elemento :i :cafe elemento :i :almoco ~ elemento :i :janta) atr "i :i + 1] envie :vetsoma fim

(...)
seno menor elemento 1 :valores ~ elemento 1 :ref_dia [esctela (sentena [Voc est excedendo em ] ~ diferena elemento 1 ~ :ref_dia elemento 1 ~ :valores [pores a quantidade de pes!] ) ] ~

[Esctela [Refeio Balanceada em relao ao grupo de pes.]


(...) fim

Sugestes

Quer saber quantas calorias est ingerindo por dia? Ento pesquise sobre as calorias fornecidas por cada um dos diferentes tipos de alimentos que constam na pirmide e depois calcule o total de calorias consumidas durante as trs refeies do dia. Que tal diferenciar as dietas de acordo com a idade e o sexo do usurio? Voc tambm pode mostrar os resultados da dieta que o usurio forneceu, por meio de grficos na tela (em vez de texto somente veja o exemplo barrasobe, barradesce), comparando as informaes fornecidas por ele com as que constam na pirmide.

Referncia Projeto: Guia da pirmide alimentar usando Logo / Luciana Alivim Santos Romani, Sabine Sirimarco Gomes, in http://www.cnptia.embrapa.br/~luciana/disciplinas/mo642/proj_logo.html

De AA a aa, que bicho vai dar? Nome do arquivo: Comando para executar: Apresentao A gentica tem sido alvo de muitas discusses na atualidade. Quem no ouviu falar da Srta. Dolly? Ela e seu criador ganharam pginas e pginas nos jornais do mundo inteiro. Porm, para entender como a Engenharia Gentica chegou a esse ponto, preciso conhecer alguns conceitos elementares. Neste projeto, aproveitamos o "dom natural" dos coelhos para a procriao para explorar algumas dessas noes. Tomando essa espcie de mamfero como exemplo, pode-se produzir diferentes tipos de cruzamento para aprender um pouco mais sobre como funciona a famosa Lei de Mendel. Noes como fentipo/ gentipo, recessivo/dominante podem ser exploradas neste programa computacional. Esta discusso remete a outros assuntos do maior interesse: as influncias socioculturais e geogrficas que incidem no desenvolvimento da vida animal (inclusive sobre as nossas vidas), as mutaes genticas, as condies ambientais do planeta etc. Por meio de um programa de simulao feito em Logo, podese mexer vontade nos parmetros do programa computacional com o objetivo de produzir os mais loucos resultados e analis-los. Este projeto favorece o estabelecimento de diversas relaes que interferem no fenmeno em si a um s tempo. Trata-se de uma boa maneira de entender a vida. O que faz este programa? Este programa simula a transmisso de caractersticas genticas at a 2 gerao de coelhos, como, por exemplo, a cor dos olhos [claros (aa) ou escuros (Ax)] e a cor da pele [albina (cc) ou aguti (Cx)]. No cruzamento de um casal, para cada filho sorteia-se um gene do pai e um da Coelhos.lgo Coelhos

me, formando ento a caracterstica do filho. Deve-se lembrar que as duas caractersticas (cor dos olhos e da pele) so independentes.

Instrues de uso Aps carregar o arquivo Coelhos.lgo e clicar em Iniciar na tela de apresentao, duas janelas sero apresentadas. Deve-se ento escolher as caractersticas do casal 1 (cor dos olhos e tipo de plo) em uma janela e do casal do 2 na outra. Ento, a partir de um painel com botes, pode-se cruzar a 1 gerao (faa isso vrias vezes para ver as diferentes possibilidades), a 2 gerao ou at mesmo ir mudando as caractersticas de um dos casais e verificando o que ocorre. O resultado apresentado na tela composto pelo fentipo e abaixo dele pelo gentipo.

Aspectos de programao Logo Neste projeto, pode-se destacar o conceito de iteraes (comando repita) e tambm operaes de manipulao de listas e palavras. O uso do comando repita (para realizar iteraes) em conjunto com a operao cv (conte-vezes retorna o nmero da repetio que est sendo executada) pode ser observado no procedimento Cruzar. Destaca-se o procedimento Juntapalavra, no qual, dadas 2 palavras, monta-se uma terceira, formada por uma slaba da primeira (sorteada) e uma slaba da segunda (tambm sorteada) e esta palavra ser usada no cruzamento dos coelhos um cromossomo do pai e um da me. Elementos de interface podem ser encontrados no procedimento Centrodecontrole1.

Estrutura geral do projeto


Coelhos
(procedimento Inicial)

Centrodecontrole1
(botes de controle)

Chamados por botes

Casal1
Chamados por botes (configura gentipo)

Casal2
(configura gentipo)

Cruzar
(nmeros)

Cruzar2
(operaes)

Filhos1
(filhos casal1)

Desenhacoelho
(carrega o bitmap correspondente do coelho)

Filhos2
(filhos casal2)

Filhos3
(filhos 2 gerao)

Fentipopelo
(retorna o fentipo do pelo do coelho)

Juntapalavra
(dadas 2 slabas monta uma palavra

Fentipoolhos
(retorna o fentipo dos olhos do coelho)

Sorteiaslaba
(sorteia uma slaba de uma palavra)

Principais procedimentos
aprenda Coelhos ;procedimento inicial atr "1ger "falso atr "2ger "falso tat dt un Centrodecontrole1 ;configurao dos casais Casal1 Casal2 fim
aprenda Centrodecontrole1 ;janela central de controle criejanela "main "centrocontrole1 [Coelhos e Gentica] 40 40 120 150 crieboto "centrocontrole1 "btcruzar1 [Cruzar - 1a Gerao] 10 10 95 20 [Cruzar] crieboto "centrocontrole1 "btcruzar2 [Cruzar - 2a Gerao] 10 35 95 20 [Cruzar2] crieboto "centrocontrole1 "btmudacasal1 [Mudar Gentipo do Casal 1] 10 60 95 20 [Casal1 se :1ger [Cruzar]] crieboto "centrocontrole1 "btmudacasal2 [Mudar Gentipo do Casal 2] 10 85 95 20 [Casal2 se :1ger [Cruzar]] crieboto "centrocontrole1 "btfecha [Fechar esta janela] 10 110 95 20 [apaguejanela "centrocontrole1] fim

aprenda Cruzar ;cruza a primeira gerao de coelhos ;(... trechos principais)

;prepara os filhos do casal 1 Filhos1 6 :p1pelo :p1olhos :m1pelo :m1olhos ;prepara os filhos do casal 2 Filhos2 6 :p2pelo :p2olhos :m2pelo :m2olhos ;desenha os filhos na tela repita 3 [Desenhacoelho Fentipopelo elemento cv :gpfilho1 Fentipoolhos elemento cv :gofilho1 soma cv*80 -410 -75 mudexy soma cv*85 -410 -75 rotule lista elemento cv :gpfilho1 elemento cv :gofilho1 ] fim

aprenda Filhos1 :cruzamentos :ppai :opai :pme :ome ;filhos casal1 atr "gpfilho1 [ ] ;pelo - gentipo atr "gofilho1 [ ] ;olhos - gentipo repita :cruzamentos [atr "gpfilho1 ~ jf juntapalavra :ppai :pme :gpfilho1] repita :cruzamentos [atr "gofilho1 ~ jf juntapalavra :opai :ome :gofilho1] fim

aprenda Juntapalavra :palavra1 :palavra2 ;dadas 2 palavras, monta uma terceira ;formada por uma slaba da primeira e uma ;slaba da segunda

;;;;;;;;;;;;;;;;;; ;sorteia uma ordem para executar (sortear ;primeiro da pal 1 e depois da 2 e vice-versa)
seno (sorteienmero 2)=0 ~ [envie lista sorteiaslaba :palavra1 sorteiaslaba :palavra2] ~ [envie lista sorteiaslaba :palavra2 sorteiaslaba :palavra1] aprenda Fentipopelo :gentipo ;dado o gentipo, retorna o fentipo seno (ou (no maior ascii primeiro :gentipo ascii "Z) (no maior ascii ltimo :gentipo ascii "Z )) [envie "Aguti] [envie "Albino] fim

aprenda Desenhacoelho :pelo :olho :px :py ;desenha o coelho... un mudexy :px :py se(:pelo = "Aguti)[seno(:olho = "Claros) [carreguebitmap cagucla.bmp] [carreguebitmap "caguesc.bmp]] se(:pelo = "Albino)[seno(:olho = "Claros) [carreguebitmap "calbcla.bmp] [carreguebitmap "calbesc.bmp]] fim

Sugestes Ser que se aplicarmos as regras da probabilidade obteremos resultados mais precisos do que no caso de sortearmos os cruzamentos? Tentar fazer isso e observar os resultados pode ajudar a compreender melhor os fenmenos que ocorrem. Que tal estudar e inserir caractersticas como hemofilia e polidactilia, que se manifestam s em pessoas do sexo masculino? Voc j pensou como sua rvore genealgica? Que tal pesquisar com seus pais e avs caractersticas como cor dos olhos e tentar simular sua famlia? Observe em seus pais algumas caractersticas fenotpicas como cor dos olhos, do cabelo e da pele e verifique como seriam seus possveis irmos (se voc tem irmos, as caractersticas fenotpicas coincidem com as obtidas em seu programa?). possvel at tentar prever que cor de olhos tero seus filhos (caso voc j no os tenha).

Conexo tartaruga Nome do arquivo: Comando para executar: Apresentao A tnica do momento trabalhar colaborativamente via rede. Voc j tentou? Consegue dividir e discutir suas idias com um parceiro? O trabalho em equipe tem sido bastante incentivado nos ltimos tempos, ainda mais agora que a web pode encurtar a distncia entre as pessoas. Quer experimentar? Aventure-se! O SuperLogo dispe de recursos para o trabalho colaborativo. Agora possvel desenvolver um mesmo projeto em tempo real, tirar dvidas e palpitar no trabalho alheio. Assim, pode-se comparar diferentes formas de resoluo de um mesmo projeto, incorporar aos seus programa procedimentos de outros usurios, aumentando em muito as possibilidades de trabalho com o Logo. Conexao_tat.lgo Conexao_tat

O que faz este programa? Este programa torna possvel a conexo de dois computadores via rede (Internet, por exemplo) e a realizao de uma sesso de batepapo em conjunto com a execuo de comandos em Logo na mquina remota. Tambm possvel, por meio do procedimento exporta_proc, exportar pela rede um procedimento da mquina local para a mquina remota (esse procedimento passa ento a fazer parte do Editor de Procedimentos da outra mquina, permitindo ao outro usurio execut-lo, edit-lo, salv-lo etc.). Instrues de uso Aps carregar o arquivo Conexao_tat.lgo e clicar em Iniciar na tela de apresentao, uma caixa de questo ir aparecer solicitando que voc digite o nome da mquina com a qual deseja se conectar. Ser ento exibida outra caixa de questo solicitando que voc digite seu nome ou apelido (assim voc ser identificado de maneira mais simples na sesso). Depois, uma caixa de mensagem solicitar que voc (e o outro usurio em sua mquina remota) pressionem Ok quando as duas mquinas estiverem prontas6 . A partir de agora a conexo est estabelecida e possvel conversar com o outro usurio por meio de bate-papo (chat) ou ento enviar comandos para serem executados na outra mquina, bastando para isso preceder a frase que contm os comandos do seguinte caractere: # . Exemplo: # pf 30 pd 90 (os espaos so importantes). Se quiser, voc pode exportar um procedimento que esteja em seu Editor para o Editor da mquina remota. Basta digitar (na caixa de questo mesmo) Exporta_proc "nome_do_procedimento (sem o caractere #).

Voc s deve pressionar Ok se essa mensagem tambm tiver aparecido para o outro usurio. Para ter certeza de que a mensagem chegou para o seu parceiro, pode-se, caso vocs no estejam no mesmo ambiente, usar outros programas (como ICQ ou IRC) para conversar e sincronizar a conexo.

Aspectos de programao em Logo Neste projeto, destaca-se os aspectos que possibilitam o desenvolvimento de aplicativos que usem os recursos de rede do SuperLogo (veja os procedimentos Par_na_rede e Envia_dados para exemplificar as primitivas de rede). Estrutura geral do projeto
Conexao_tat
(procedimento inicial)

Rede
(inicia a rede)

Par_na_rede
(estabelece a conexo)

Envia_dados
(inicia o modo bate-papo com Logo remoto)

Exporta_proc
(exporta um procedimento para a mquina remota)

Principais procedimentos
aprenda Conexao_tat

;procedimento inicial

Rede caixadequesto [Nome da Mquina] ~ [Qual o nome da mquina para


aprenda Rede :maqremota ;mquina remota o nome da outra mquina com a qual voc deseja se conectar

;(...)
Par_na_rede :maqremota ;estabelece a conexo Envia_dados ;inicia o modo bate-papo com logo remoto fim aprenda Par_na_rede :maqremota ;conecta com outra mquina na rede

;(...)
seno aceiteconexo 5124 [] [faa recebavalorconexoaceita] ~ [mostrecaixamensagem "Situao [Pressione Ok quando as duas mquinas estiverem prontas]] ~ [mostrecaixamensagem "Situao [Falha na Recepo da Rede]] se no ligueconexo :maqremota 5124 [esc [Pronto]] []~ [mostrecaixamensagem "Situao [Falha no Envio da Rede]] fim aprenda Envia_dados ;bate-papo integrado com o Logo remoto comando precedido de # ou apenas texto

enquanto [1=1] [atr "texto caixadequesto [Bate papo - Digite aqui] [Comando precedido de # ou texto] ~
seno soiguais pri :texto "Exporta_proc [faa :texto] [ seno soiguais pri :texto "# ~ [faa sp :texto ignore envievalorconexo sp :texto] ~ [esc (sentena :nome [> ] :texto) ~ ignore envievalorconexo (lista "esc "sn "sn :nome [> ] :texto) ] ] ] fim aprenda Exporta_proc :nome_proc ;exporta um procedimento para a mquina remota seno definido :nome_proc [ atr "proc texto :nome_proc ~ atr "np pal "" :nome_proc ignore envievalorconexo (lista "defina :np :proc) ~ ignore envievalorconexo (lista "esc "sn :np [ definido pela mquina remota.]) ~ esc sn :np [ definido.] ] [esc sn sn [No h nenhum procedimento com o nome ] :nome_proc [ definido.]] fim

Sugestes Que tal modificar o projeto OXO, OXO deu empate! para funcionar a distncia? Com os comandos de rede possvel implementar programas que conversem com FTP, telnet ou mesmo sendmail. Pesquise sobre esses protocolos na rede e tente implementar um programa que envia um e-mail, por exemplo. Se estiver na Internet, use o SuperLogo em conjunto com outros programas que permitem video-conferncia, por exemplo, para discutir com outras pessoas problemas e atividades a serem realizadas no SuperLogo.

Ajuda, projetos, exemplos, manual eletrnico e site Quase todos os comandos contidos no arquivo de ajuda possuem um exemplo de como utiliz-lo. D uma olhada nos exemplos em Ajuda. Aps a execuo do SuperLogo, os Projetos esto localizados em D:\Projetos (ou no diretrio padro do CD). O usurio deve abrir as extenses .lgo de cada projeto. Os Exemplos esto em D:\Exemplos. O manual eletrnico do Kit Educacional Multimdia SuperLogo instalado automaticamente. Caso no consiga l-lo, v em D:\manual\manual.pdf. Consulte o site www.superlogo.com.br para ver o manual online, fazer downloads de novos projetos, saber as ltimas novidades e contribuir com sugestes e programas.

Suporte tcnico Em caso de dvidas ou esclarecimentos tcnicos sobre qualquer um de nossos produtos, entre em contato com nosso servio de suporte tcnico, de segunda a sexta-feira, no horrio das 08h30 s 18h00, pelo telefone (011) 3154-0305, pelo fax (011) 3154-0342 ou pelo e-mail: suporte.tec@divertire.com.br.

Ajuda do SuperLogo Copyright 1989 Reitores da Universidade da Califrnia. Este software pode ser copiado e distribudo para fins educativos e de pesquisa, e no para fins lucrativos, desde que este copyright e esta declarao estejam includos em todas as cpias. Copyright 1993-1997 George Mills. Este software pode ser copiado e distribudo para fins educativos e de pesquisa, e no para fins lucrativos, desde que este copyright e esta declarao estejam includos em todas as cpias. EDITOR DE PROCEDIMENTOS JANELA DE COMANDOS MENU INICIANDO E SAINDO DO SUPERLOGO SINTXE PRIMITIVAS PARA DADOS ESTRUTURADOS ENTRADA E SADA ARITMTICA OPERAES LGICAS GRFICOS GERENCIADOR DA REA DE TRABALHO ESTRUTURAS DE CONTROLE COMANDOS DE MACRO ERRO DE PROCESSAMENTO VARIVEIS ESPECIAIS COMANDOS DE AJUDA COMANDOS DE DIRETRIO FUNES DO WINDOWS FUNES DE BITMAPS REDE MULTIMDIA/MDIA/SOM ABREVIATURAS

EDITOR DE PROCEDIMENTOS Quando voc sai do Editor de Procedimentos, o SuperLogo carrega as definies revisadas e altera a rea de trabalho de acordo com a nova configurao. A ltima ao de sair (e salvar) do editor a que prevalece.

Verifique tambm se voc realmente excluiu os procedimentos, listas de propriedades ou nomes. No editor, eles so apagados (veja Elimine) do ambiente de trabalho no momento em que voc sai (e salva) a sesso de edio. Erros de edio Editando com a rea de transferncia Ajuda sensvel a contexto Menu do Editor de Procedimentos Erros de edio Se um erro ocorrer enquanto voc estiver editando, entre novament no Editor. Essa situao ocorre freqentemente quando uma continuao ~ est perdida dentro da lista. Quando o editor recarrega, voc colocado no incio da definio que provocou o erro. Verifique a janela de comando para obter uma dica sobre o problema ocorrido enquanto o editor carregava. Editando com a rea de transferncia O editor do SuperLogo e muitos controles suportam a rea de transferncia. A rea de transferncia onde a maior parte dos aplicativos do Windows armazena os dados durante as operaes de recortar e colar. Isso significa que quando voc recorta um texto de um aplicativo, como o Bloco de Notas, ele pode ser copiado no editor do SuperLogo (e o inverso tambm ocorre). A Ajuda do Windows suporta a rea de transferncia. Isso significa que voc pode copiar exemplos neste documento diretamente para o editor (veja o comando Ajuda). A Caixa de entrada tambm suporta a rea de transferncia. Somente uma linha de texto suportada entre a caixa de entrada e a rea de transferncia. Observe que a caixa de entrada no tem um menu de edio semelhante ao editor. Voc deve usar teclas de atalho para as aes desejadas (para recortar CTRL e X, para copiar CTRL e C, para colar CTRL e V). A Caixa de listagem de sada/retorno de comando tambm suporta a rea de transferncia. Isto significa que voc pode converter o cdigo que havia inserido no controlador em procedimento copiando o Controlador de Sada para a rea de transferncia e colando-o no editor. Ou selecionar o texto gerado e col-lo em ouro aplicativo. Ajuda sensvel a contexto

Tanto a caixa Editor quanto a Caixa de listagem de sada/retorno de comando do SuperLogo so compatveis com Ajuda sensvel a contexto. Se voc selecionar uma palavra-chave (como PARAFRENTE) nesses locais (o clique duplo funciona melhor no editor) poder solicitar que o SuperLogo pesquise-a sem precisar navegar pelo Menu Ajuda. Basta perguntar clicando com o boto direito do mouse (ou pressionando a tecla F1); as abreviaes so admitidas. Veja tambm Ajuda sensvel a contexto para recuperar a informao a partir do sistema de ajuda (como um cdigo de exemplo) e voc poder trabalhar com ela. Menu do Editor de Procedimentos O menu editor mostra como voc se comunica com o editor para executar algumas tarefas. Menu rea de Trabalho Menu Editar Menu Pesquisar Menu Formatar Menu Testar Menu Ajuda Menu rea de Trabalho Comando rea de Trabalho Atualizar Comando rea de Trabalho Imprimir Comando rea de Trabalho Sair

Comando rea de Trabalho Atualizar Atualiza o contedo do Editor de Procedimentos na rea de Trabalho (ou seja, as alteraes feitas passam a valer sem a necessidade de Sair do Editor). Comando rea de Trabalho Imprimir Imprime o contudo do Editor de Procedimentos. Comando rea de Trabalho Sair Sai do editor e exibe uma mensagem perguntando se voc deseja salvar seu

trabalho no espao de trabalho do SuperLogo. Quando voc sai do editor, o SuperLogo carrega as novas definies e as modifica de acordo com o espao de trabalho. Veja tambm Erros de edio.

Menu Editar Comando Editar Desfazer Comando Editar Recortar Comando Editar Copiar Comando Editar Colar Comando Editar Limpar Comando Editar Limpar tudo Comando Editar Desfazer Desfaz a ltima operao de edio. Comando Editar Recortar Copia o texto selecionado para a rea de transferncia e o exclui. Veja tambm Editando com a rea de transferncia. Comando Editar Copiar Copia o texto selecionado para a rea de transferncia. Veja tambm Editando com a rea de transferncia. Comando Editar Colar Cola o texto na rea de transferncia de acordo com a posio do cursor. Se tiver algum texto selecionado, ele sera substitudo pelo texto colado. Veja tambm Editando com a rea de transferncia. Comando Editar Limpar Exclui o texto selecionado. Comando Editar Limpar tudo

Exclui o texto todo. Menu Pesquisar Comando Pesquisar Localizar Comando Pesquisar Substituir Comando Pesquisar Prximo

Comando Pesquisar Localizar Realiza a busca de uma palavra no texto contido no Editor de Procedimentos.

Comando Pesquisar Substituir Realiza a busca e substituio de uma palavra por outra no texto contido no Editor de Procedimentos. Comando Pesquisar Prximo Tenta encontrar a prxima ocorrncia da palavra pesquisada usado o comando Localizar do menu Pesquisar.

Menu Formatar Comando Formatar Fonte Comando Formatar Fonte possvel alterar a fonte no Editor de Procedimentos selecionando o comando Fonte do menu Formatar e escolhendo a fonte desejada. A nova fonte ser aplicada no texto inteiro, e no apenas no texto selecionado. A fonte escolhida permanecer selecionada at que seja iniciada uma nova sesso do SuperLogo.

Menu Testar Comando Teste

Comando Teste Voc pode testar seu cdigo selecionando uma seo do cdigo e clicando em Teste no menu Testar (ou tecla de atalho <Ctrl>+<t>). Esta ao ir selecionar cada uma das linhas e envi-las para execuo na Janela de Comandos. Lembre-se de que se voc selecionar cdigo que possui variveis ou outro contedo que precisa ser definido na seleo ou j definido no espao de trabalho. Usar este recurso a mesma coisa que digitar a seleo dentro da Janela de Comandos.

Menu Ajuda Comando Ajuda ndice Comando Ajuda Editor Comando Ajuda Busca por Tpico Comando Ajuda ndice Apresenta a ajuda do SuperLogo. Veja tambm Ajuda sensvel a contexto. Comando Ajuda Editor Apresenta a ajuda do Editor. Veja tambm Ajuda sensvel a contexto. Comando Ajuda Busca por Tpico Pesquisa pelo tpico selecionado pelo mouse na linha on-line da ajuda.Veja tambm Ajuda sensvel a contexto.

JANELA DE COMANDOS A Janela de Comandos onde voc instrui o SuperLogo a fazer o que voc deseja. A caixa mais importante da Janela de Comandos a caixa de entrada, localizada esquerda. Para obter informaes sobre os diferentes controles, veja as caixas especficas abaixo.

Caixa de entrada Caixa de listagem sada/retorno de comando Boto Executar Boto Estado Boto Restaurar Janela Grfica Boto Restaurar Janela Comandos Boto rastrear Boto terminar Boto reiniciar Boto passoapasso Boto Pausa Boto Parar Boto Tat Caixa de entrada A caixa de entrada est ligada Caixa de listagem sada/retorno de comando e ao Boto executar. Voc tambm pode editar o texto que est na caixa de entrada. Se o que estiver digitando no couber na caixa de entrada, ela rolar automaticamente. Uma vez digitado o comando, ser necessrio execut-lo. Para isso voc pode teclar Enter ou clicar sobre o boto executar. Usando as setas para cima ou para baixo, voc pode pular automaticamente para a Caixa de listagem sada/retorno de comando. Esse controle tambm suporta a Ajuda sensvel a contexto e Editando com a rea de transferncia. Caixa de listagem sada/retorno de comando Na caixa de listagem sada/retorno de comando sero gravadas todas as entradas digitadas na Caixa de entrada. Voc pode selecionar um comando clicando sobre a linha desejada ou usando as setas para cima ou para baixo. Se algo estiver fora do campo de viso, utilize a barra de rolagem. Quando voc clica em uma linha, automaticamente ela copiada para a caixa de entrada. Um duplo clique executar o que est sendo apontado. Esse controle tambm suporta Ajuda sensvel a contexto e Editando com a rea de transferncia. Boto Executar O boto executar executa o que estiver na Caixa de entrada. Boto Estado Esse boto abre uma janela que mostra diversos parmetros do SuperLogo no momento. Veja tambm os comandos Estado e Semestado.

Boto Restaurar Janela Grfica Apaga a Janela Grfica, restaurando todos os parmetros da tartaruga (cor do lpis, espessura, cor de preenchimento) para o padro. Boto Restaurar Janela de Comandos Apaga o contedo da caixa de listagem na Janela de Comandos.

Boto Pausa Esse boto interrompe o SuperLogo e permite que voc examine variveis e faa alteraes, entre outras coisas. Uma vez interrompida a execuo por meio do boto pausa, o SuperLogo mostrar em que lugar voc interrompeu. Para continuar voc dever digitar o comando Continue. Voc tambm pode digitar um comando Pausa dentro do cdigo para agir como um Ponto de Interrupo. Boto Parar Esse boto interrompe os procedimentos em execuo. Boto Tat Apaga a tela grfica, colocando a tartaruga na sua posio original , com direo 0 (norte). Veja comando Tartaruga. MENU O MENU onde voc executa as tarefas avanadas no SUPERLOGO, como o carregar um programa do SUPERLOGO, carregar uma imagem BITMAP, configurar uma impressora ou at mesmo ler um arquivo de ajuda. Veja o item Menu para obter mais informaes. Menu arquivo Menu procedimento Menu modo de execuo Menu bitmap Menu formatar Menu zoom Menu ajuda Menu arquivo

Comando novo arquivo Comando abrir arquivo Comando salvar arquivo Comando salvar arquivo como Comando salvar tudo Comando sair arquivo Comando novo arquivo Limpa todos os procedimentos correntes carregados na memria. Assemelhase inicializao de uma nova sesso. Comando abrir arquivo Permite carregar um arquivo do SuperLogo do disco para a memria e ento este poder ser executado ou editado. Veja tambm o comando Carregue. Comando salvar arquivo Permite salvar no disco tudo o que est na memria. Veja tambm o comando Salve. Comando salvar arquivo como Faz o mesmo que o Comando salvar arquivo, porm permite que seja digitado um novo nome para o arquivo. Comando salvar tudo Faz o mesmo que o Comando salvar arquivo mais o Comando salvar bitmap, ou seja, permite gravar a memria em um arquivo do SuperLogo e a imagem na tela em um arquivo bitmap. Comando sair arquivo Utilizado para finalizar o SuperLogo. Veja tambm o comando Sair.

Menu procedimento Comando novo procedimento Comando editar procedimento Comando editar todos Comando apagar procedimento Comando apagar todos

Comando novo procedimento utilizado para inserir um procedimento novo no Editor de Procedimentos. Ser exibida uma janela do editor, onde poder ser inserido o novo procedimento. Comando editar procedimento utilizado para editar procedimentos que j esto carregados (ou que foram desenvolvidos) na memria. Voc ter uma janela com todos os procedimentos existentes, onde poder selecionar um deles para editar. Veja tambm o comando Edite. Comando editar todos utilizado para editar procedimentos que j esto carregados (ou que foram desenvolvidos) na memria. O Editor de Procedimentos ser mostrado e ser ento possvel editar todos os procedimentos que esto na memria.

Comando apagar procedimento Permite apagar os procedimentos que j esto carregados (ou que foram desenvolvidos) na memria. Voc ter uma janela com todos os procedimentos existentes, na qual dever selecionar o procedimento a apagar. Veja tambm o comando Elimine. Comando apagar todos Permite apagar todos os procedimentos que j esto carregados (ou que foram desenvolvidos) na memria. Veja tambm o comando Eltudo.

Menu modo de execuo Comando rastrear Comando passo-a-passo Comando rastrear O comando rastrear usado para depurao de programas. Clique novamente para inibir o rastreamento. Voc pode habilitar ou desabilitar o rastreamento mesmo enquanto estiver executando o SuperLogo. Observe que o comando rastrear funciona independentemente do que voc est rastreando com o comando rastrear. Veja tambm os comandos Rastrear e Norastreie.

Comando passo-a-passo O comando passo-a-passo ativa um procedimento simples e direto para a depurao de seus programas. Clique novamente para desativar esse recurso. Voc pode deixar essa ferramenta ativada ou desativada durante a execuo do SuperLogo.Veja tambm os comandos Passoapasso e Nopassoapasso.

Menu bitmap O menu bitmap inclui comandos que permitem a voc operar arquivos bitmap. Para maiores informaes, veja o menu especfico. Comando novo bitmap Comando abrir bitmap Comando salvar bitmap Comando salvar bitmap como Comando configurar pgina Comando imprimir bitmap Comando rea ativa do bitmap Comando novo bitmap Esse comando limpa o trabalho feito no vdeo e cria um novo ambiente para as coisas novas que sero desenvolvidas. Comando carregar bitmap Esse comando permite que voc leia uma imagem que est na pasta. O formato desse arquivo tem de seguir o padro Bitmap do Windows (extenso .BMP). Voc pode fazer com que esses arquivos interajam com outros aplicativos, como o Paint Brush. Observe que eles podem ser grandes e por isso levam algum tempo para carregar. Veja tambm o comando Carreguebitmap. Veja tambm a seo Usando cores. Comando salvar bitmap Permite que voc salve uma gravura (imagem bitmap) do seu trabalho no disco do computador. Se sua imagem foi gerada com um programa SuperLogo, voc no precisa salv-la a menos que queira us-la com outro aplicativo como Paint Brush ou similar. Veja tambm o comando Salvebitmap.

O formato do arquivo a ser salvo deve seguir o padro Bitmap do Windows (extenso .BMP). Voc pode fazer com que esses arquivos interajam com outros aplicativos, como o Paint Brush. Observe que eles podem ser grandes e por isso levam algum tempo para carregar. Veja tambm Comando rea ativa do bitmap. Comando salvar bitmap como Faz o mesmo que o Comando salvar bitmap, porm permite que seja digitado um novo nome para o arquivo.

Comando configurar pgina Esse comando permite configurar a pgina antes de efetuar a impresso. Comando imprimir bitmap Permite imprimir o trabalho (tela grfica do SuperLogo) na impressora selecionada. Comando rea ativa do bitmap Permite selecionar a rea de trabalho a imprimir ou salvar. A proposta inicial dessa opo performance e espao. Voc no precisa ficar esperando o software construir uma imagem por inteiro. Ele ocupa menos tempo e menos memria para imprimir e menos espao em disco para salvar uma imagem parcialmente. Como um efeito colateral, voc pode definir onde sua imagem termina na pgina selelecionando diferentes extenses Voc tambm pode definir a rea ativa com o comando Selecionereaativa do SuperLogo.

Menu formatar O menu formatar permite que voc altere algumas das caractersticas do SuperLogo. Comando formatar tamanho do lpis Comando formatar fonte da Janela Grfica Comando formatar fonte da Janela de Comandos Comando formatar cor do lpis Comando formatar cor de preenchimento Comando formatar cor do fundo

Comando formatar tamanho do lpis Esse comando permite que voc selecione o tamanho do lpis com o qual a tartaruga ir desenhar. Voc tambm pode selecionar o tamanho do lpis usando o comando Mudeespessuradolpis e obt-lo com o comando Espessuradolpis. Comando formatar fonte da Janela Grfica Esse comando define a fonte com a qual o comando Rotule ir escrever. A fonte tambm pode ser definida com o comando Mudefontejanelagrfica e ser obtida com o comando Fontejanelagrfica. Comando formatar fonte da Janela de Comandos Esse comando define a fonte que ser utilizada na Janela de Comandos do SuperLogo. Comando formatar cor do lpis Esse comando define a cor do lpis que a tartaruga ir usar para escrever. A cor do lpis tambm pode ser definida com o comando Mudecl e obtida com o comando Cl. Comando formatar cor de preenchimento Esse comando define a cor de preenchimento com a qual a tartaruga ir pintar (comando Pinte). A cor de preenchimento tambm pode ser definida com o comando Mudecp e obtida com o comando Cp. Comando formatar cor do fundo Esse comando define a cor do fundo da tela. A cor do fundo tambm pode ser definida com o comando Mudecf e obtida com o comando Cf. Menu zoom O menu zoom permite que voc restaure o fator de zoom (aproximao ou distanciamento da imagem). Comando mais zoom Comando menos zoom Comando zoom normal Comando mais zoom Esse comando permite que voc aumente o zoom. Voc tambm pode selecionar o fator de zoom utilizando o comando Zoom.

Comando menos zoom Esse comando permite que voc diminua o zoom. Voc tambm pode selecionar o fator de zoom utilizando o comando Zoom. Comando zoom normal Esse comando permite que voc restaure o zoom. Voc tambm pode selecionar o fator de zoom utilizando o comando Zoom. Menu ajuda O menu ajuda permite que voc aprenda mais sobre o SuperLogo. Para obter mais informaes, selecione o nome do comando desejado no menu Ajuda. Veja tambm o comando Ajuda. Comando ndice da ajuda Comando mci ajuda Comando usando a ajuda Comando demo Comando comandos bsicos Comando notas adicionais Comando sobre o SuperLogo Comando ndice da ajuda Este comando abre o ndice da ajuda do SuperLogo. Comando mci ajuda Este comando abre o arquivo de ajuda Mci. Ele explica a sintaxe dos argumentos para o comando Mci. (multimdia) Comando usando a ajuda Este comando abre um ndice com tpicos explicando o funcionamento da ajuda.. Comando demo Executa o programa DEMO a partir da biblioteca do SuperLogo. Comando comandos bsicos possvel escolher alguns comandos bsicos do SuperLogo e execut-los como exemplo.

Comando notas adicionais Utiliza o Bloco de Notas para exibir as notas de verso para a verso do SuperLogo. Comando sobre Oferece alguns detalhes sobre o SuperLogo, como sua verso. INICIANDO E SAINDO DO SUPERLOGO Para iniciar o programa, basta clicar no cone SuperLogo. Para sair, digite o comando Sair. Ou selecione Comando sair arquivo. Se voc chamar um procedimento que no estava definido, o SuperLogo primeiro verifica em um arquivo no diretrio atual chamado nome_proc.lgo, onde "nome_proc" o nome do procedimento em letras minsculas. Se esse arquivo existir, o SuperLogo o carrega. Se o procedimento solicitado ainda estiver indefinido, ou se no h nenhum arquivos desses, o SuperLogo verifica no diretrio de biblioteca se existe um arquivo chamado nome_proc (sem a extenso ".LGO") e, caso exista, o carrega. Se nenhum arquivo contiver uma definio para o procedimento, ento o SuperLogo envia uma mensagem de erro. SINTXE Em nomes de procedimentos, variveis e listas de propriedades so diferenciadas letras maisculas de minsculas. Dentro de colchetes, as palavras so delimitadas apenas por espaos e colchetes. [2+3] uma lista que contm uma palavra. Depois de um sinal de aspas fora dos colchetes, uma palavra imediatamente delimitada por um espao, um colchete ou um parntese. Uma linha (uma linha de instruo ou uma que lida por Leialista ou Leiapalavra) pode ser prosseguida na linha seguinte se seu ltimo caractere um til (~). Leiapalavra preserva o til e a ltima linha; Leialista, no. Um ponto-e-vrgula inicia um comentrio em uma linha de estrutura. O SuperLogo ignora os caracteres a partir do ponto-e-vrgula at o final da linha. Um til como o ltimo caractere indica que ainda h uma linha de continuao, mas no uma continuao do comentrio.

Um ponto-e-vrgula no possui nenhum significado especial em linhas de dados lidas por Leiapalavra ou Leialista, mas, como uma linha, pode ser analisada novamente usando Runparse e, assim, os comentrios sero reconhecidos. Se for digitado um til no final para a continuao da linha, o SuperLogo interpretar o til como um caractere de prompt para a linha de exibio. Para adicionar um outro caractere delimitador (incluindo um ponto-e-vrgula ou um til) em uma palavra, coloque uma barra invertida (\) antes dela. Se o ltimo caractere da linha uma barra invertida, ento o caractere da nova linha que sucede a barra invertida ser parte da ltima palavra na linha e a linha continua na linha seguinte. Para adicionar uma barra invertida em uma palavra, use \\. Tudo isso aplica-se s linhas de dados lidas como Leiapalavra ou Leialista, assim como para as linhas de instruo. No SuperLogo no h nenhum "caractere de prompt" nem <CR> (retorno de carro carriage return) passado da caixa de controle de entrada da Janela de Comandos. Porm, o SuperLogo possui o caractere de comando "\n", que pode ser interpretado como um <CR>. Exemplo: escreva "Ol\ncomo\nvai\nvoc Ol como vai voc Isso ir funcionar em um procedimento ou em uma caixa de controle de entrada. Uma notao alternativa para incluir outros caracteres de delimitao em palavras colocar um grupo de caracteres dentro de duas barras verticais (|). Todos os caracteres colocados dentro de barras verticais so interpretados como se fossem letras. Na leitura dos dados com Leiapalavra, as barras verticais so preservadas na palavra resultante. Na leitura dos dados com Leialista (ou o resultado a partir de Parse ou Runparse de uma palavra), as barras verticais no aparecem explicitamente; todos os caracteres potencialmente delimitadores (incluindo espaos, colchetes, parnteses e operadores de infixos) aparecem como se tivessem sido inseridos com uma barra invertida. Ainda possvel usar uma barra invertida dentro das barras verticais, os nicos caracteres que

exigem o uso da barra invertida neste contexto so a prpria barra invertida e a barra vertical. Os caracteres inseridos entre barras verticais so sempre especiais, mesmo que a palavra ou lista que os contm seja posteriormente interpretada com Parse ou Runparse. Podemos afirmar o mesmo para um caractere inserido aps uma barra invertida, exceto quando uma palavra que est entre aspas contendo um caractere entre barras invertidas reinterpretado, o caractere entre barras invertidas perde sua qualidade especial e age, conseqentemente, como se fosse digitado normalmente. Essa distino importante somente se voc est construindo uma expresso do Logo em partes, para ser feita posteriormente, e quer usar parnteses. Por exemplo: ESCREVA FAA (SN " \ ( 2 "+ 3 "\) ) ir escrever 5, mas FAA (SN "ATRIBUA ""| ( | 2) ir criar uma varivel cujo nome um parnteses de abertura. (Cada exemplo pode falhar se as barras verticais e as barras invertidas estiverem trocadas.)

PRIMITIVAS PARA DADOS ESTRUTURADOS Construtores Seletores Modificadores Predicados (Dados) Operaes Construtores Palavra Lista Sentena Juntenoincio Juntenofim Vetor Matriz Listaparavetor

Vetorparalista Combine Inverte Gerenome Palavra Palavra pal

palavra1 palavra2 palavra1 palavra2

Retorna uma palavra composta pela concatenao de palavra1 e palavra2. Se houver mais de dois parmetros de entrada, deve-se usar parnteses. Exemplo: esc pal "LO "GO LOGO esc (pal "a "pren "der) aprender Lista lista objeto1 objeto2 Retorna uma lista constituda por objeto1 e objeto2. Se houver mais de dois parmetros de entrada deve-se usar parnteses. Exemplo: mostre lista "a "b [a b] coloque [a b] "letras coloque lista :letras "c "letras mostre :letras [[a b] c] mostre (lista "L "O "G "O) [L O G O] mostre lista [1 2 3] [a b c]

[[1 2 3][a b c]] Sentena sentena sn

objeto1 objeto2 objeto1 objeto2

Retorna uma lista formada pela concatenao de objeto1 e objeto2. Se houver mais de dois parmetros de entrada deve-se usar parnteses. Exemplo: mostre sn "cachorro "quente [cachorro quente] coloque (sn [criar] "com "LOGO) "frase esc :frase criar com LOGO Juntenoincio juntenoincio objeto lista ji objeto lista Retorna a lista do parmetro de entrada acrescida do objeto no seu incio. Exemplo: esc ji "l [o g o] logo mostre ji "1 [2 3 4] [1 2 3 4]

Juntenofim juntenofim objeto lista jf objeto lista Retorna a lista do parmetro de entrada acrescida do objeto no seu final.

Exemplo: coloque jf "u [a e i o] "vogais esc :vogais aeiou mostre jf "5[1 2 3 4] [1 2 3 4 5] Vetor vetor nmero (vetor nmero origem) Retorna um vetor de nmero elementos. O primeiro parmetro um nmero inteiro e positivo que corresponde ao tamanho do vetor. Uma vez definido um vetor, seus elementos so listas vazias at que sejam substitudos por outros elementos por meio do comando Atribuaelemvetor. O segundo parmetro um nmero inteiro que corresponde ao valor de origem do vetor. A partir deste valor sero indexadas todas as demais posies do vetor. O primeiro elemento do vetor o elemento1, a menos que a origem seja dada na entrada (segundo parmetro); neste caso, o primeiro elemento do vetor ter este nmero como ndice (geralmente 0 usado como origem). Exemplo: atribua "meuvetor (vetor 3 0) mostre :meuvetor {[] [] []} atribuaelemvetor 2 :meuvetor 1 atribuaelemvetor 1 :meuvetor 2 atribuaelemvetor 0 :meuvetor 3 mostre :meuvetor {3 2 1} Uma outra forma de inicializar o vetor do exemplo acima (utilizando o smbolo @) : atr "meuvetor {3 2 1}@0 mostre :meuvetor {3 2 1}

Matriz matriz (matriz

lista lista origem)

Retorna uma matriz (vetor multidimensional). O primeiro parmetro uma lista formada de um ou mais nmeros inteiros positivos que definem o tamanho desta matriz. Para uma matriz bidimensional, o primeiro elemento da lista refere-se ao nmero de linhas e o segundo elemento refere-se ao nmero de colunas. O segundo parmetro um nmero inteiro que corresponde ao valor de origem da matriz. A partir deste valor sero indexadas todas as demais posies da matriz. Caso o segundo parmetro seja omitido, o primeiro elemento da matriz bidimensional ser o elemento [1 1]. Exemplo: atribua "jogo (matriz [2 3]0) atribuaelmatriz [0 0] :jogo 1 atribuaelmatriz [0 1] :jogo 2 atribuaelmatriz [0 2] :jogo 3 atribuaelmatriz [1 0] :jogo 4 atribuaelmatriz [1 1] :jogo 5 atribuaelmatriz [1 2] :jogo 6 mostre :jogo {{1 2 3}{4 5 6}} Outra forma de se definir uma matriz atribuindo valor: atribua "jogo {{o x x}{x o x}{x o o}}@0 mostre :jogo {{o x x}{x o x}{x o o}} Listaparavetor listaparavetor lista lpv lista (listaparavetor lista origem) (lpv lista origem) Retorna um vetor de mesmo tamanho e com os mesmos elementos da lista dada como parmetro de entrada. O segundo parmetro um nmero

inteiro que corresponde ao valor de origem do vetor a partir do qual todas as demais posies sero indexadas. Caso o segundo parmetro seja omitido, o primeiro elemento do vetor ser o elemento 1. Exemplo: mostre listaparavetor [1 2 3] {1 2 3} Vetorparalista vetorparalista vetor vpl vetor Retorna uma lista formada pelos mesmos elementos do vetor dado como parmetro de entrada. Exemplo: mostre vetorparalista {1 2 3} [1 2 3] mostre vetorparalista {azul amarelo verde} [azul amarelo verde]

Combine combine objeto1 objeto2 Se o segundo parmetro for uma palavra, retorna o mesmo resultado da operao Palavra. Se o segundo parmetro for uma lista, retorna o mesmo resultado da operao Juntenoincio. Exemplo: esc combine "a "b ab mostre combine "a [b] [a b] esc combine "12 "34

1234 mostre combine [a] [12 34] [[a] 12 34]

Inverte inverte

objeto

Retorna uma lista invertida ou seja, uma lista com os mesmos elementos do objeto de entrada, porm em ordem invertida. Exemplo: mostre inverte[1 2 3] [3 2 1] mostre inverte "abc [c b a] Gerenome gerenome gn Retorna nomes de g1 a gn dependendo do nmero de vezes que executado Exemplo: atribua gerenome 1 mostre :g1 1 atribua gerenome "ol mostre :g2 ol Seletores Primeiro Primeiros ltimo

Semprimeiro Semprimeiros Semltimo Elemento Elementomatriz Sorteieelemento Retire Retiredup

Primeiro primeiro pri

objeto objeto

Retorna o primeiro elemento de objeto. Se objeto for uma palavra, retorna o primeiro caracter da palavra. Se objeto for uma lista, retorna o primeiro elemento da lista. Se objeto for um vetor, retorna a origem do vetor (isto , o ndice do primeiro elemento do vetor). Exemplo: esc pri [a b c d] a esc pri "LOGO L esc pri [[L][O][G][O]] L esc pri {a b c} 1 esc pri {a b c}@0 0 Primeiros primeiros [lista1 lista2 ... listan] pris [lista1 lista2 ... listan] Retorna uma lista contendo o Primeiro elemento de cada lista de entrada

(lista1, lista2,..., listan). Se algum elemento das listas de entrada for vazio, retornar erro. Exemplo: mostre primeiros [[1 2 3][a b c ]] [1 a]

ltimo ltimo ult

objeto objeto

Retorna o ltimo elemento do objeto. Se objeto for uma palavra, retorna o ltimo caractere da palavra. Se objeto for uma lista, retorna o ltimo elemento da lista. esc ltimo [1 2 3] 3 esc ult "aqui i Semprimeiro semprimeiro sp

objeto objeto

Retorna objeto sem seu primeiro elemento. Exemplo: esc sp "LOGO OGO coloque [1 2 3] "x esc sp :x 23 Semprimeiros semprimeiros lista1 lista2 .... listan sps lista1 lista2 .... listan

Retorna uma lista contendo as listas de entrada sem seus primeiros elementos. Se algum dos parmetros de entrada for vazio, retornar uma mensagem de erro. Exemplo: mostre sps [[1 2 3][a b c]] [[2 3][b c] mostre sps [[abc][51 43]] [[][43]] Semltimo semltimo su

objeto objeto

Retorna objeto sem seu ltimo elemento. Exemplo: esc su "LOGO LOG coloque [1 2 3] "x esc su :x 12 Elemento elemento nmero objeto elem nmero objeto Retorna o elemento de posio nmero no objeto. Se objeto for uma palavra, retorna caractere que est na posio nmero da palavra. Se objeto for uma lista, retorna o elemento que est na posio nmero da lista. Se objeto for um vetor, retorna o elemento que est na posio nmero do vetor. O nmero inicial para listas e palavras 1; o nmero inicial para vetores especificado quando o vetor criado. Exemplo: esc elemento 4 "praia i

esc elemento 3 [rosa cravo violeta] violeta atr "x [azul verde] esc elemento 2 :x verde esc elemento 2 {janeiro fevereiro maro}@0 maro Elementomatriz elementomatriz elmatriz lista matriz lista matriz

Retorna o elemento lista de matriz. A entrada lista deve ser formada de um ou mais nmeros inteiros positivos, onde o primeiro elemento indica a linha e o segundo elemento indica a coluna. O segundo parmetro a definio de uma matriz multi-dimensional onde o elemento ser pesquisado. mostre elementomatriz [2 2] {{0 1} {2 3}} 3 mostre elementomatriz [2] {{0 5 1} {2 5 3}} {2 5 3}

Sorteieelemento sorteielemento sortel objeto objeto

Retorna aleatoriamente um elemento de objeto, o qual pode ser uma lista ou uma palavra. Exemplo : mostre sorteieelemento [1 2 3] 2

mostre sorteieelemento [1 2 3] 3 mostre sortel "cola o mostre sortel "cola l

Retire retire objeto1 objeto2

(procedimento de biblioteca)

Retorna objeto2 aps retirar o objeto1 especificado, sem distino de letras maisculas e/ou minsculas. Exemplo: mostre retire "b [a b c b] [a c] mostre retire "e "Ol Ol

Retiredup retiredup objeto (procedimento de biblioteca) Retorna o objeto dado aps retirar a(s) repetio(es) do(s) elemento(s) duplicado(s), sem distino de letras maisculas e/ou minsculas. O elemento duplicado que permanece na sada da operao sempre o que estiver ocupando a posio mais direita do parmetro. Exemplo: mostre retiredup [a b c b] [a c b] mostre retiredup "Ol

Ol

Modificadores Atribuaelemvetor Atribuaelmatriz Inserepilha Retirepilha Inserefila Retirefila

Atribuaelemvetor atribuaelemvetor elemento vetor valor atrelemvetor elemento vetor valor Comando que atribui o novo valor ao elemento do vetor. Valor no pode ser uma lista ou um vetor que contm vetor. Exemplo: atribua "meuvetor (vetor 3 0) atribuaelemvetor 2 :meuvetor 1 atribuaelemvetor 1 :meuvetor 2 atribuaelemvetor 0 :meuvetor 3 mostre :meuvetor {3 2 1 }

Atribuaelmatriz atribuaelmatriz lista matriz valor Atribui o novo valor ao elemento da matriz definido em lista. Exemplo: atribua "minhamatriz (matriz [2 3]0) atribuaelmatriz [0 0] :minhamatriz 1 atribuaelmatriz [0 1] :minhamatriz 2

atribuaelmatriz [0 2] :minhamatriz 3 atribuaelmatriz [1 0] :minhamatriz 4 atribuaelmatriz [1 1] :minhamatriz 5 atribuaelmatriz [1 2] :minhamatriz 6 mostre :minhamatriz {{1 2 3}{4 5 6}}

Inserepilha inserepilha pilha objeto ip pilha objeto Insere o objeto na pilha. A pilha deve ser uma lista cujo valor inicial vazio. Os novos objetos so includos no topo da lista. Para retirar o ltimo objeto colocado na lista use o comando Retirepilha. Exemplo: atribua "minhapilha [] inserepilha "minhapilha 8 inserepilha "minhapilha 6 mostre :minhapilha [6 8] mostre retirepilha "minhapilha 6 mostre :minhapilha [8]

Retirepilha retirepilha pilha rp pilha Retira e retorna o objeto mais recente inserido na pilha por meio do comando Inserepilha. Exemplo:

atribua "minhapilha [] inserepilha "minhapilha 4 inserepilha "minhapilha 7 mostre :minhapilha [7 4] mostre retirepilha "minhapilha 7 mostre :minhapilha [4] mostre retirepilha "minhapilha 4 mostre :minhapilha []

Inserefila inserefila fila objeto if fila objeto Insere o objeto na fila. A fila deve ser uma lista cujo valor inicial vazio. Os novos objetos so includos no final da lista. Para retirar o objeto mais antigo colocado na fila use o comando Retirefila. Exemplo: atribua "minhafila [] inserefila "minhafila 1 inserefila "minhafila 3 mostre :minhafila [1 3]

Retirefila retirefila objeto rf objeto

Retira e retorna o objeto mais recente inserido na fila por meio do comando Inserefila. Exemplo: atribua "minhafila [] inserefila "minhafila 5 inserefila "minhafila 9 mostre :minhafila [5 9] mostre retirefila "minhafila 5 mostre :minhafila [9] mostre retirefila "minhafila 9 mostre "minhafila []

Predicados (Dados) palavra lista vetor vazia Soiguais anterior elemento subseqncia nmero Tembarrainvertida palavra palavra

objeto

epalavra

objeto

Retorna a palavra verd sempre que o objeto for uma palavra. Caso contrrio, retorna a palavra falso. Exemplo: esc palavra "casa verd coloque [tartaruga] "animal esc pal :animal falso

lista lista objeto Retorna a palavra verd sempre que o objeto for uma lista. Caso contrrio, retorna a palavra falso. Exemplo: coloque [a b c d] "letras esc lista :letras verd coloque 2 "num esc lista :num falso vetor vetor objeto Retorna a palavra verd sempre que o objeto for um vetor. Caso contrrio, retorna a palavra falso. Exemplo:

mostre vetor "casa falso mostre vetor {azul amarelo verde} verd

vazia vazia objeto Retorna a palavra verd sempre que o objeto de entrada for vazio. Caso contrrio, retorna a palavra falso. Exemplo: coloque [azul] "cor esc vazia sp :cor verd coloque " "vazia esc vazia :vazia verd

Soiguais soiguais objeto1 objeto2 Retorna verd (verdadeiro) se as entradas objeto1 e objeto2 so iguais. Caso contrrio, retornam FALSO. Dois nmeros so iguais se eles possuem o mesmo valor numrico. Duas palavras no-numricas so iguais se elas contm os mesmos caracteres na mesma ordem. Caso haja uma varivel chamada ignorecaixaalta definida como verd, ento uma letra maiscula possui o mesmo valor que uma letra minscula. (Este o valor definido como padro.) Duas listas so iguais se os seus membros so iguais. Um vetor igual somente a ele prprio; dois vetores criados separadamente nunca so iguais, mesmo que seus elementos sejam iguais. Exemplo: mostre so iguais 1 1 verdadeiro

mostre soiguais 1 2 falso mostre soiguais [1 2 3] [1 2 3] verdadeiro mostre soiguais [1 2 3] [3 2 1] falso anterior anterior palavra1 palavra2 eanterior palavra1 palavra2 Retorna a palavra verd se palavra1 vem antes de palavra2, conforme a tabela ASCII (ordem alfabtica). Caso contrrio, retorna a palavra falso. Lembre-se de que se as entradas forem nmeros, o resultado pode no corresponder a menor; por exemplo, anterior 3 12 falso porque 3 aparece antes de 1. Observao: a comparao feita caractere a caractere. Exemplo: mostre anterior "abc "abd verd mostre anterior "abd "abc falso mostre anterior "3 "123 falso

elemento elemento objeto1 objeto2 eelemento objeto1 objeto2 Se objeto2 for uma lista ou um vetor, retorna a palavra verd se objeto1 for igual a um membro ou a um elemento de objeto2; caso contrrio, retorna a palavra falso. Se objeto2 for uma palavra, retorna verd se objeto1 estiver contido em objeto2; caso contrrio, retorna falso.

mostre elemento 1 [1 2 3] verd mostre elemento 4 [1 2 3] falso

subseqncia subseqncia objeto1 objeto2 esubseq objeto1 objeto2 Se objeto1 for uma lista ou um vetor, retorna VERD, se objeto1 for igual (Soiguais) a um membro ou elemento de objeto2, caso contrrio retorna FALSO. Se objeto2 for uma palavra, retorna VERD se objeto1 for igual (Soiguais) a uma substring do objeto2, caso contrrio retorna FALSO. Note que seu comportamento para palavras diferente de outros comandos, por exemplo, para que elemento objeto1 objeto2 retornasse VERD, objeto1 deveria ser um nico caractere. Exemplo: mostre subseqncia "ab "abc verd mostre subseqncia "ac "abc falso

nmero nmero enumero

objeto objeto

Retorna a palavra verd sempre que o objeto for um nmero. Caso contrrio, retorna a palavra falso. Exemplo: esc nmero [1 2] falso

esc nmero 3 verd

Tembarrainvertida tembarrainvertida caractere tembarrainv caractere Emite VERDADEIRO se a entrada caractere foi digitada originalmente no SuperLogo com uma barra invertida (\) antes dela para prevenir interpretao sinttica especial, de outra forma, emite FALSO. (Na Europa, emite VERDADEIRO somente se o caractere um espao com uma barra invertida, um caractere de tabulao, uma nova linha ou um desses a seguir: ()[]+-*/=<>:;\~?) Exemplo: mostre tembarrainvertida "a falso Operaes Numelem Ascii Rawascii Caractere Minscula Maiscula Parse Runparse Diahora Tempomili Numelem numelem objeto Retorna o nmero de elementos que compem objeto. Se objeto for uma palavra, retorna o nmero de caracteres da palavra; se objeto for uma lista ou um vetor, retorna o nmero de elementos da lista ou vetor.

Exemplo: esc numelem [renato e alice] 3 esc nel "flvio 6

Ascii ascii caractere Retorna o valor correspondente ao caractere de entrada na tabela ASCII. O caractere pode ser uma letra, um nmero ou um caractere especial. O valor retornado um nmero inteiro entre 0 e 255. Exemplo: esc ascii "A 65 esc ascii "1 49 esc ascii "a 97

Rawascii rawascii caractere Retorna o inteiro (nos Estados Unidos, entre 0 e 127) que representa o caractere no cdigo ASCII. Exemplo: mostre rawascii "a 97 mostre rawascii "A

65 mostre rawascii "b 98 Caractere caractere nmero car nmero Retorna o caractere correspondente a nmero na tabela ASCII. O parmetro de entrada deve variar entre 0 e 255. Exemplo: esc car 65 A esc car 91 [

Minscula minscula palavra minus palavra Retorna uma cpia da palavra de entrada com todas as letras maisculas alteradas para letras minsculas. Algumas letras precedidas de "\" no sero convertidas. Exemplo: \n, o qual interpretado como caracter de fim de linha. Exemplo: mostre minscula "Casa casa mostre minscula "PROJETO projeto

Maiscula maiscula palavra

maius

palavra

Retorna uma cpia da palavra de entrada com todas as letras maisculas alteradas para minsculas. Algumas letras precedidas de "\" no sero convertidas. Exemplo: \n, o qual interpretado como caractere de fim de linha. Exemplo: mostre maiscula "Casa CASA mostre maiscula "projeto PROJETO

Parse parse

palavra

Retorna a lista que resultaria se a entrada palavra fosse inserida em resposta a uma operao. Ou seja, Parse Leiapalavra possui o mesmo valor que Leialista para a mesma leitura de caracteres.

Exemplo: mostre parse "Ol [Ol] Runparse runparse objeto Retorna a lista que resultaria se a entrada objeto (palavra ou lista) fosse digitada como uma linha de instruo; caracteres como operadores de infixo e parnteses so membros separados da sada. Note que as sublistas de uma lista runparsed no so runparsed por elas prprias. Exemplo: mostre runparse "a<b [a < b]

Diahora diahora dh Retorna o dia e a hora corrente do sistema no formato de lista. Observao: retornar na lngua do pas que estiver definido no Windows. Exemplo: mostre diahora [qua jul 14 23:34:08 1993]

Tempomili tempomili Retorna a data e hora de inicializao do Windows em milisegundos, usado para o registro preciso de data/hora. Exemplo: atribua "inicio tempomili repita 36 [circunferncia 100 pd 5] mostre tempomili - :inicio 8189 ENTRADA E SADA

Observao: se existir uma varivel denominada profundidadeimpresso com um valor inteiro no negativo, ento listas complexas e estrututras de vetores sero impressas apenas at a profundidade permitida. Isto , membros de membros de ...de membros vo ser exibidos apenas at certa distncia. Os elementos ou membros omitidos por estarem em uma profundidade alm do limite so indicados por uma reticncias para cada um; assim, uma lista com profundidade acima do limite de dois elementos ser escrita como [... ...]. Se existir uma varivel denominada tamanhoimpresso com um valor inteiro no negativo, apenas um certo nmero de elementos ou membros de qualquer vetor ou lista sero impressos a partir do incio. Uma nica reticncias substitui todos os objetos ausentes da estrutura. O tamanho limite tambm se

aplica ao nmero de caracteres impressos em uma palavra; contudo, um tamanholimitedeimpresso entre 0 e 9 ser sempre tratado como se fosse 10 quando aplicado a palavras. Esse limite se aplica no apenas ao objeto impresso de nvel mais alto, mas a qualquer subestrutura dentro dele. Escreva Guardeparaescrever Mostre Leialista Leiapalavra Leiacaractere Leiacaracteres Shell Abraparaler Abraparaescrever Abraparaadicionar Abraparaatualizar Fechearq Arqabertos Fechetodosarq Eliminearq Registre Noregistre Mudeleitura Mudeescrita Arqleitura Arqescrita Mudeposleitura Mudeposescrita Posleitura Posescrita fimarq

Escreva escreva esc

objeto objeto

Comando que imprime a entrada ou entradas para o fluxo de escrita atual (inicialmente o terminal). Todas as entradas so escritas em uma linha simples, separadas por espaos, terminando com uma nova linha. Se uma entrada uma lista, os colchetes no so colocados ao seu redor, mas os colchetes so colocados ao redor das sublistas. Colchetes sempre so inseridos ao redor de vetores. Se houver mais de um parmetro de entrada, deve-se usar parnteses.

Exemplo: escreva "Ol Ol escreva [Ol como vai voc] Ol como vai voc

Guardeparaescrever guardeparaescrever (guardeparaescrever

objeto objeto1 objeto2 ...)

Comando que escreve a entrada ou entradas como Escreva, exceto quando nenhum caractere da linha nova impresso no final e mltiplas entradas no so separadas por espao. Nota: os caracteres que voc escreve usando Guardeparaescrever no aparecero na tela at que seja escrito o caractere de uma linha nova (por exemplo, usando Escreva ou Mostre) ou at que o SuperLogo tente fazer a leitura a partir do teclado (atendendo solicitao do seu programa). Esta buferizao torna o programa muito mais rpido do que ele seria se cada caractere aparecesse imediatamente, na maioria dos casos o efeito no desagrada.

Exemplo: guardeparaescrever "Ol guardeparaescrever "Ol guardeparaescrever "Are escreva "Voc OlComoVaiVoc Mostre mostre

objeto

mo objeto (mostre objeto1 objeto2 ...) Mostra na janela de comandos o objeto, conservando os colchetes externos se o objeto for uma lista ou as chaves, se o objeto for um vetor. Exemplo: mostre "LOGO LOGO mostre [aprendendo com LOGO] [aprendendo com LOGO] mostre leial (digite LOGO e clique Ok) [LOGO] mo {sol terra mar} {sol terra mar}

Leialista leialista leial Permite a entrada de caractere, palavra, frase ou arquivo via teclado, retornando uma lista. Se a entrada for um arquivo, o retorno da leitura de fim de arquivo ser uma palavra vazia (e no uma lista vazia). Se a entrada contm barra invertida (\), barra vertical ( | ) ou til (~), esses caracteres no faro parte da lista de sada pois eles sero tratados no seu uso efetivo. O ponto-e-vrgula (;) no ser tratado como comentrio. Exemplo: mostre leialista (digite: LOGO teste e clique Ok) [LOGO teste]

coloque leialista "a (digite: casa bela e clique Ok) mostre :a [casa bela]

Leiapalavra leiapalavra leiap Permite a entrada de um caractere, palavra, frase ou arquivo via teclado, retornando uma palavra. Se a entrada for um arquivo, o retorno da leitura de fim de arquivo ser uma lista vazia (e no uma palavra vazia). Nos casos em que o til (~) for usado para continuao de linha, a palavra de retorno incluir o til (~) e os caracteres da nova linha, mostrando exatamente o que o usurio entrou. Barras verticais tambm sero preservadas na sada, mas o caracter seguinte barra invertida ter 128 somado a sua representao. Exemplo: mostre leiapalavra (digite: casa bela e clique Ok) casa bela coloque leiapalavra "a (digite: LOGO teste e clique Ok) mostre :a LOGO teste

Leiacaractere leiacaractere leiac Permite a entrada de um caractere via teclado, retornando uma palavra. Se a entrada for um arquivo, o retorno da leitura de fim de arquivo ser uma lista vazia. Os caracteres barra invertida ( \ ), barra vertical ( | ) e til (~) no tem significado especial para este comando.

Exemplo: esc leiacaractere o LOGO espera a entrada de um caractere qualquer. Digite a e clique Ok. a coloque leiacaractere "letra o LOGO espera a entrada de um caractere qualquer. Digite 2 e clique Ok. esc :letra 2

Leiacaracteres leiacaracteres nmero leiacs nmero (No compatvel com o SuperLogo quando o leitor [] (teclado), Veja Ativetecla) L caracteres numricos a partir do fluxo de leitura e emite esses caracteres como uma palavra. Se o fluxo de leitura um arquivo, e o final do arquivo alcanado, LEIACARACTERES emite a lista vazia (no a palavra vazia). Se o fluxo de leitura um terminal, echoing desativado quando LEIACARACTERES invocado, e permanece assim at que Leialista ou Leiapalavra sejam invocados ou seja escrito um prompt do SuperLogo. Os caracteres barra invertida e til no possuem nenhum significado especial neste contexto. Exemplo: abraparaescrever "texto.txt mudeescrita "texto.txt escreva Ol mudeescrita [] fechearq "texto.txt abraparaler "texto.txt mudeleitura "texto.txt mostre leiacs 5 Ol

Mudeleitura [] Fechearq "texto.txt Shell shell comando Usado para executar arquivos (.exe por exemplo). Se comando uma lista literal em uma linha de instruo, e se voc quer que seja enviado um caractere de barra invertida Shell, use \\ para pegar a barra invertida por meio do SuperLogo. A sada um booleano (verd ou falso) baseado em uma execuo bem-sucedida. Exemplo: mostre shell [notepad c:\\teste.txt] verdadeiro

Abraparaler abraparaler arquivo abraler arquivo Abre o arquivo para leitura apontando para o incio dele. Exemplo: abraparaler "nomes.dat mudeleitura "nomes.dat repita 2 [mostre leialista] [marcos] [paulo] mudeleitura [] fechearq "nomes.dat

Abraparaescrever abraparaescrever arquivo abraesc arquivo Abre o arquivo para escrita. Se o arquivo j existe, ele ser deletado e

um novo arquivo vazio ser criado. Exemplo: abraparaescrever "cores.dat mudeescrita "cores.dat escreva "vermelho escreva "azul mudeescrita [] fechearq "cores.dat abraparaler "cores.dat mudeleitura "cores.dat repita 2 [mostre leialista] [vermelho] [azul] mudeleitura [] fechearq "cores.dat

Abraparaadicionar abraparaadicionar arquivo abraadi arquivo Abre o arquivo para adicionar novos dados. Se o arquivo j existe, ele ser mantido e os novos dados sero colocados no final dele. Exemplo: abraparaescrever "semana.dat mudeescrita "semana.dat escreva "segunda escreva "tera mudeescrita [] fechearq "semana.dat abraparaadicionar "semana.dat mudeescrita "semana.dat escreva "quarta escreva "quinta mudeescrita []

fechearq "semana.dat abraparaler "semana.dat mudeleitura "semana.dat repita 4 [mostre leialista] [segunda] [tera] [quarta] [quinta] mudeleitura [] fechearq "semana.dat

Abraparaatualizar abraparaatualizar arquivo abraatu arquivo Abre o arquivo para leitura e escrita apontando para o final dele. Observao: cada arquivo aberto tem somente uma posio, a qual serve para leitura e escrita ao mesmo tempo, portanto todos os comandos que operam com arquivos faro com que essa posio seja alterada. Exemplo: abraparaescrever "frutas.dat mudeescrita "frutas.dat escreva "uva escreva "banana mudeescrita [] fechearq "frutas.dat abraparaatualizar "frutas.dat mudeleitura "frutas.dat repita 2 [mostre leialista] [uva] [banana] mudeescrita "frutas.dat mudeposescrita 4

escreva "laranja mudeescrita [] mudeleitura "frutas.dat mudeposleitura 0 repita 3 [mostre leialista] [uva] [banana] [laranja] fechearq "frutas.dat

Fechearq fechearq arquivo Fecha o arquivo especificado. Exemplo: abraparaescrever "estaes.dat mudeescrita "estaes.dat escreva "primavera escreva "vero escreva "outono escreva "inverno mudeescrita [] fechearq "estaes.dat Arqabertos arqabertos Retorna uma lista cujos elementos membros so os nomes dos arquivos abertos. Exemplo: abraparaescrever "semana.dat abraparaescrever "meses.dat mostre arqabertos [meses.dat semana.dat]

Fechetodosarq fechetodosarq Fecha todos os arquivos abertos. Exemplo: fechetodosarq abraparaescrever "nomes.dat abraparaescrever "cidades.dat mostre arqabertos [cidades.dat nomes.dat] fechetodosarq mostre arqabertos []

Eliminearq eliminearq arquivo Elimina o arquivo especificado, o qual no poder estar aberto. Exemplo: abraparaescrever "cores.dat mudeescrita "cores.dat escreva "azul escreva "amarelo mudeescrita [] fechearq "cores.dat abraparaler "cores.dat mudeleitura "cores.dat repita 2 [mostre leialista] [azul] [amarelo] mudeleitura [] fechearq "cores.dat eliminearq "cores.dat

abraparaler "cores.dat erro: arquivo no encontrado

Registre registre arquivo Cria um novo arquivo de entrada e registra neste arquivo todas as coisas que so lidas por meio do teclado ou escritas no vdeo. O objetivo criar uma cpia de uma sesso SUPERLOGO, que contm caracteres, prompt e instrues. Exemplo: registre "comandos.dat pf 100 pd 90 noregistre abraparaler "comandos.dat mudeleitura "comandos.dat repita 3 [mostre leialista] [pf 100] [pd 90] [noregistre] mudeleitura [] fechearq "comandos.dat

Noregistre noregistre Pra de registrar informaes no arquivo definindo com registre e fecha este arquivo. Exemplo: registre "comandos.dat pf 100 pd 90 noregistre

abraparaler "comandos.dat mudeleitura "comandos.dat repita 3 [mostre leialista] [pf 100] [pd 90] [noregistre] mudeleitura [] fechearq "comandos.dat

Mudeleitura mudeleitura arquivo Ativa o arquivo para leitura de dados, o qual ser usado por Leialista, etc. necessrio que o arquivo tenha sido anteriormente aberto com ou Abraparaatualizar. Abraparaler Se no lugar do arquivo for especificado uma lista vazia, a leitura de dados ser por meio do teclado. Exemplo: abraparaescrever "meses.dat mudeescrita "meses.dat escreva "janeiro escreva "fevereiro mudeescrita [] fechearq "meses.dat abraparaler "meses.dat mudeleitura "meses.dat repita 2 [mostre leialista] [janeiro] [fevereiro] mudeleitura [] fechearq "meses.dat

Mudeescrita

mudeescrita arquivo mudeesc arquivo Ativa o arquivo para gravao de dados, o qual ser usado por Escreva, etc... necessrio que o arquivo tenha sido anteriormente aberto com Abraparaescrever, Abraparaadicionar ou Abraparaatualizar. Se no lugar do arquivo for especificada uma lista vazia, os dados sero mostrados no vdeo. Exemplo: abraparaescrever "tarefas.dat mudeescrita "tarefas.dat escreva "estudar escreva "lavar mudeescrita [] fechearq "tarefas.dat abraparaler "tarefas.dat mudeleitura "tarefas.dat repita 2 [mostre leialista] [estudar] [lavar] mudeleitura [] fechearq "tarefas.dat

Arqleitura arqleitura Retorna o nome do arquivo ativo para leitura. Se o retorno for uma lista vazia, a leitura de dados ser feita por meio do teclado. Exemplo: abraparaler "semana.dat mudeleitura "semana.dat mostre arqleitura semana.dat fechearq "semana.dat

Arqescrita arqescrita Retorna o nome do arquivo ativo para gravao. Se o retorno for uma lista vazia, os dados sero mostrados no vdeo. Exemplo: abraparaescrever "semana.dat mudeescrita "semana.dat mostre arqescrita semana.dat

Mudeposleitura mudeposleitura nmero Modifica o ponteiro do arquivo de leitura. O prximo Leialista (ou comando similar) comear a partir da posio definida em nmero. Por exemplo, Mudeposleitura 0 comear a ler no incio do arquivo. Este comando no tem sentido se a leitura de dados estiver sendo feita por meio do teclado. Exemplo: abraparaescrever "cores.dat mudeescrita "cores.dat escreva "verde escreva "vermelha mudeescrita [] fechearq "cores.dat abraparaler "cores.dat mudeleitura "cores.dat mostre leialista [verde] mudeposleitura 0

mostre leialista [verde] mudeleitura [] fechearq "cores.dat

Mudeposescrita mudeposescrita nmero Modifica o ponteiro do arquivo de sada. O prximo Escreva (ou comando similar) comear a partir da posio definida em nmero. Por exemplo, mudeposescrita 0 comear a escrever no incio do arquivo. Este comando no tem sentido se a sada estiver sendo feita por meio do vdeo. Exemplo: abraparaescrever "jogos.dat mudeescrita "jogos.dat escreva "peteca mudeposescrita 0 escreva "bon mudeescrita [] fechearq "jogos.dat abraparaler "jogos.dat mudeleitura "jogos.dat mostre leialista [bon] mostre leialista [a] mudeleitura [] fechearq "jogos.dat

Posleitura posleitura Retorna a posio do arquivo de leitura de dados.

Exemplo: abraparaescrever "animal.dat mudeescrita "animal.dat escreva "cavalo escreva "gato mudeescrita [] fechearq "animal.dat abraparaler "animal.dat mudeleitura "animal.dat repita 2 [mostre posleitura mostre leialista] 0 [cavalo] 8 [gato] mudeleitura [] fechearq "animal.dat

Posescrita posescrita Retorna a posio do arquivo de gravao de dados. Exemplo: abraparaescrever "esportes.dat mudeescrita "esportes.dat atribua "pontos [] atribua "pontos jf posescrita :pontos escreva "natao atribua "pontos jf posescrita :pontos escreva "corrida atribua "pontos jf posescrita :pontos mudeescrita []

fechearq "esportes.dat mostre :pontos [0 9 18]

fimarq fimarq Retorna verd se no h mais caracteres para serem lidos do arquivo de entrada; retorna falso caso contrrio. Exemplo: abraparaescrever "cores.dat mudeescrita "cores.dat escreva "vermelho escreva "amarelo mudeescrita [] fechearq "cores.dat abraparaler "cores.dat mudeleitura "cores.dat repita 2 [mostre leialista mostre fimarq ] [vermelho] falso [amarelo] verd mudeleitura [] fechearq "cores.dat

Comunicaes

Abraporta Fecheporta Descarregueporta Mudemodoporta Leiavetorporta

Leiacaractereporta Escrevavetorporta Escrevacaractereporta Portaentrada Portasada Portaentradab Portasadab PortaJoystick Carreguedll Chamedll Liberedll Abraporta abraporta palavra Usado para obter acesso s portas seriais e paralelas do computador. Uma vez que a porta desejada estiver aberta, voc pode ler (Leiavetorporta, Leiacaractereporta) ou gravar (Escrevavetorporta, Escrevacaractereporta). As caractersticas da porta podem ser modificadas com Mudemodoporta. Apenas uma porta pode ser aberta por vez. Uma vez encerrado o uso de uma porta, esta dever ser fechada com Fecheporta. No confundir este comando com Portaentrada e Portasada, que so para portas de comunicao com o hardware. Observao: em palavra dever ser definida a porta a ser aberta: com1-com4 e lpt1-lpt3. Exemplo: abraporta "com1 fecheporta

Fecheporta fecheporta Fecha uma porta que foi aberta com o comando Abraporta. Exemplo:

abraporta "com1 fecheporta

Descarregueporta descarregueporta nmero Descarrega as filas para as porta de entrada ou sada. Observao: em nmero dever ser especificado a fila a ser descarregada: 0 (sada) ou 1 (entrada). Exemplo: abraporta "com1 descarregueporta 1 fecheporta

Mudemodoporta mudemodoporta palavra mudemp palavra Usado para modificar as caractersticas (velocidade, paridade, data bits e stop bits) da porta, as quais tambm podem ser modificadas pelo cone PORTAS do Painel de Controle do Windows. Observao: em palavra deve ser definido o que se quer modificar ("com: velocidade, paridade, data, stop) no mesmo formato do comando MODE do DOS. Exemplo: abraporta "com1 mudemodoporta "com1:9600,n,8,1 fecheporta

Leiavetorporta

leiavetorporta nmero1 nmero2 leiavp nmero1 nmero2 L a porta que est aberta e armazena os dados em um vetor de buffer definido em nmero2. O comando tentar ler tantos caracteres quanto for o valor de nmero2, (se estiverem disponveis), e devolver o atual nmero de bytes lidos. nmero1: o nmero de caracteres a serem lidos pela porta. Voc pode usar um nmero maior que o tamanho do vetor apenas para preenche-lo. nmero2: um vetor de buffer para onde os dados sero transferidos.

Exemplo: abraporta "com1 escreva sentena [Enviando...] escrevavetorporta 3 listaparavetor mapeie [ascii ?] vetorparalista listaparavetor "at Enviando 2 atribua "y escrevacaractereporta 13 espere 60 atribua "buff {0 0 0 0 0 0 0 0 0 0} escreva sentena [Recebendo...] leiavetorporta 10 :buff Recebendo 9 escreva sentena [Data Rx...] mapeie [car ?] retire [] vetorparalista :buff Data RX...at|| ok | fecheporta

Leiacaractereporta leiacaractereporta leiacp L um byte da porta que est aberta e o devolve como um inteiro. O comando retornar "-1" se nenhum caractere estiver disponvel.

Exemplo: abraporta "com1 atribua "y escrevacaractereporta ascii "a atribua "y escrevacaractereporta ascii "f atribua "y escrevacaractereporta 13 espere 60 escreva "lendo... lendo... repita 10 [atribua "x leiacaractereporta se no :x=-1 [escreva car :x]] escreva " at || ok | fecheporta

Escrevavetorporta escrevavetorporta nmero1 nmero2 escvp nmero1 nmero2

Envia um dado vetor de buffer para a porta que est aberta. Este comando devolve o nmero atual de bytes enviados. nmero1: o nmero de caracteres a serem escritos. nmero2: um vetor de buffer onde os dados de sada sero lidos. sada: o nmero de bytes escritos na porta. Exemplo: abraporta "com1 escreva sentena [Enviando...] escrevavetorporta 3 listaparavetor mapeie [ascii ?] vetorparalista listaparavetor "at Enviando 2 atribua "y escrevacaractereporta 13 espere 60 atribua "buff {0 0 0 0 0 0 0 0 0 0}

escreva sentena [Recebendo...] leiavetorporta 10 :buff Recebendo 9 escreva sentena [Data Rx...] mapeie [car ?] retire [] vetorparalista :buff Data RX...at|| ok | fecheporta

Escrevacaractereporta escrevacaractereporta nmero esccp nmero Envia um byte para a porta que est aberta e retorna o nmero de bytes enviados (0 ou 1). nmero: sada: o byte que ser enviado para a porta. o nmero de bytes escritos (0 ou 1).

Exemplo: abraporta "com1 atribua "y escrevacaractereporta ascii "a atribua "y escrevacaractereporta ascii "f atribua "y escrevacaractereporta 13 espere 60 escreva "lendo... lendo... repita 10 [atribua "x leiacaractereporta se no :x=-1 [escreva car :x]] escreva " at || ok | fecheporta

Portaentrada portaentrada

id_da_porta

Este comando vai ler 2 bytes (word) da porta especificada em id_da_porta e retorn-los com um inteiro. O id_da_porta especifica uma porta de "hardware". No confunda este comando com Abraporta e Leiacaractereporta que so para comunicao via portas Serial e Parelela. Veja tambm Portaentradab e Portasada. id_da_porta: voc deseja ler. (INTEIRO) Especifica de qual porta de hardware

Exemplo: mostre portaentrada 198 25730

Portasada portasada id_da_porta dado portasaida id_da_porta dado Este comando vai escrever dado como 2 bytes na porta especificada em id_da_porta. O id_da_porta especifica uma porta de "hardware". No confunda este comando com Abraporta e Escrevacaractereporta que so para comunicao via portas Serial e Parelela. Veja tambm Portasadab e Portaentrada. id_da_porta: (INTEIRO) Especifica em qual porta de hardware voc deseja escrever. dado: (INTEIRO) So os 2 bytes de dados que devem ser escritos na porta.

Exemplo: portasada 198 0

Portaentradab portaentradab id_da_porta

Este comando vai ler 1 byte (caractere) da porta especificada em id_da_porta e retorn-lo com um inteiro. O id_da_porta especifica uma porta de "hardware". No confunda este comando com Abraporta e Leiacaractereporta que so para comunicao via portas Serial e Parelela. Veja tambm Portaentrada e Portasadab. id_da_porta: (INTEIRO) Especifica de qual porta de hardware voc deseja ler.

Exemplo: mostre portaentradab 198 130 Portasadab portasadab id_da_porta dado portasaidab id_da_porta dado Este comando vai escrever dado como 1 byte na porta especificada em id_da_porta. O id_da_porta especifica uma porta de "hardware". No confunda este comando com Abraporta e Escrevacaractereporta que so para comunicao via portas Serial e Parelela. Veja tambm Portasada e Portaentradab. id_da_porta: (INTEIRO) Especifica em qual porta de hardware voc deseja escrever. dado: (INTEIRO) o byte de dados que deve ser escrito na id_da_porta. Exemplo: portasadab 198 0

PortaJoystick portajoystick [portajoystick

mscara id_da_porta]

Este comando ir ler o valor do canal da porta de joystick especificada pela mscara. Voc pode ler o estado do boto diretamente usando

Portaentrada 513. Se nada estiver conectado ao canal de porta do game, o comando sair de funcionamento e retornar -1. mscara: (INTEIRO) Especifica que canal voc deseja ler para a porta do game (1, 2, 4 ou 8). id_da_porta: (INTEIRO) Especifica a porta de hardware a partir da qual voc deseja fazer a leitura (o padro 513). Exemplo: repita 10000 [mostre PortaJoystick 1] <Movimente o JoyStick para ver o resultado>

Carreguedll carreguedll nomedll Carrega a dll (Dynamic Linked Library Biblioteca de Ligao Dinmica) chamada nomedll no SuperLogo. Uma vez carregada, voc pode chamar funes da dll usando Chamedll e assim que voc terminar de trabalhar com a dll ou precisar usar outra dll voc pode liberar a dll com o comando Liberedll. nomedll: (PALAVRA) especifica qual dll voc deseja carregar (nomes de dll precisam necessariamente terminar em .dll). Exemplo: carreguedll "user.exe liberedll

Chamedll chamedll

[tipo_funo funo tipo1 arg1 tipo2 arg2 tipo3 arg3 ...]

Este comando chamar a funo especificada e ter como sada o retorno da funo como tipo tipo_funo. Ele vai passar como parmetros da funo arg1 como tipo1, arg2 como tipo2 e assim por diante. A funo deve estar dentro da dll que foi carregada com o comando Carreguedll. A lista dada deve ter um nmero par de elementos e conter pelo menos 4 itens (tipo_funo, funo, tipo1 e arg1) mesmo que arg1 no seja usado. Este

comando bastante conhecido por usurios experientes e voc deve ser familiar com as convenes de chamada do Windows para utiliz-lo. Se voc no associar apropriadamente a lista de argumentos, os resultados podem ser indesejveis (inclusive o Windows pode travar). Esta funo pode trabalhar com uma grande variedade de funes, mas certamente no trabalhar com todas. Porm, como ela permite que se utilize funes externas ao SuperLogo, voc pode escrever sua prpria dll com uma interface de chamadas compatvel para acessar interfaces mais complexas. Note que se a lista de argumentos for void (no retornar valores) deve-se usar [... "v 0].

tipo_funo: argumento. Onde: v void w word l dword f double s lpstr

(palavra) especifica de qual tipo a funo ou o

funo: (palavra) o nome da funo a ser chamada. arg: (objeto) Qualquer tipo suportado pelo Logo que possa ser mapeado a um dos tipos acima. Exemplo: carreguedll "user.exe chamedll [w MessageBox w 0 s MyMessage s [Hello How are you] w 0] <veja a caixa de mensagem> liberedll

Liberedll liberedll Este comando vai liberar a dll que foi carregada com Carreguedll. Exemplo:

carreguedll "user,exe liberedll

Acesso ao mouse e teclado Temarq Ativetecla Desativetecla Asciitecla Ativemouse Desativemouse Posmouse Limpejanelacomandos

Temarq temarq Retorna verd se houver caracteres esperando para serem lidos. Se a entrada for um arquivo, este comando equivalente a fimarq. Se a entrada for o teclado, ento o eco desligado e o terminal colocado em modo cbreak (um caracter por vez em vez de uma linha por vez). Ela permanece nesse modo at que alguma leitura de modo-de-linha seja registrada (ex.: Leialista).

Ativetecla ativetecla tecla Habilita a rastrear diretamente os eventos do teclado. Para saber qual tecla est envolvida utilize Asciitecla em seu procedimento. Lembre-se de que a Janela Grfica do SuperLogo precisa ter o foco para capturar os eventos principais. Voc pode mudar o foco para a Janela de Comandos do SuperLogo usando o comando Mudefocojangr. Exemplo: ativetecla [escreva car asciitecla] mudefocojangr (Digite: a)

a (Digite: b) b desativetecla

Desativetecla desativetecla Desabilita o rastreamento de eventos do teclado. Exemplo: ativetecla [escreva car asciitecla] mudefocojangr (Digite: a) a (Digite: b) b desativetecla

Asciitecla asciitecla Retorna o valor (em ascii) da ltima tecla pressionada ou liberada. Exemplo: ativetecla [escreva car asciitecla] mudefocojangr (Digite: a) a (Digite: b) b desativetecla

Lembre-se de que a Janela Grfica do SuperLogo precisa estar sob o foco (selecionada) quando voc pressiona as teclas.

Ativemouse ativemouse lista1 lista2 lista3 lista4 lista5 Habilita o controle direto dos eventos do mouse. Para saber onde se encontrava o mouse quando um boto foi apertado ou quando foi movido use Posmouse no seu procedimento de boto ou movimentao. Observe que a Janela Grfica deve ter o foco para interceptar comandos do mouse. Lembrese de que todos os "retornos de chamada" para o mouse so executados automaticamente no modo Monotarefa. lista1: uma lista de comandos LOGO (ou um nome de procedimento) a serem executados quando o boto esquerdo do mouse for pressionado. lista2: uma lista de comandos LOGO (ou um nome de procedimento) a serem executados quando o boto esquerdo do mouse for liberado. lista3: uma lista de comandos LOGO (ou um nome de procedimento) a serem executados quando o boto direito do mouse for pressionado. lista4: uma lista de comandos LOGO (ou um nome de procedimento) a serem executados quando o boto direito do mouse for liberado. lista5: uma lista de comandos LOGO (ou um nome de procedimento) a serem executados quando o mouse movimentado. Exemplo: un ativemouse [mudepos posmouse ul][un][][][mudepos posmouse] => mova o mouse na janela [SuperLogo para Windows] e pressione o boto esquerdo para desenhar. desativemouse

Desativemouse desativemouse Desabilita o controle dos eventos do mouse.

Exemplo: un ativemouse [mudepos posmouse ul][un][][][mudepos posmouse] => mova o mouse na janela [Slogo para Windows] e pressione o boto esquerdo para desenhar. desativemouse

Posmouse posmouse Retorna a posio do mouse no ltimo evento do mouse. Primeiramente o mouse precisa ser ativado por meio do comando Ativemouse. Exemplo: un ativemouse [mudepos posmouse ul][un][][][mudepos posmouse] => mova o mouse na janela [Slogo para Windows] e pressione o boto esquerdo para desenhar. desativemouse

Limpejanelacomandos limpejanelacomandos ljc Apaga o contedo da Janela de Comandos. Exemplo: escreva "teste teste ljc

ARITMTICA

Operaes numricas Predicados (Aritmticos) Nmeros randmicos Formatao de impresso Operaes bitwise Operaes numricas Soma Diferena Oposto Produto Quociente Resto Inteiro Arredonde Abs Sinal Raizq Potncia Exponencial Log10 Ln Pi Tan Tanrad Sen Senrad Cos Cosrad Arctan Arctanrad Arcsen Arcsenrad Arccos Arccosrad

Soma soma nmero1 nmero2

(soma nmero1 nmero2...nmeron) Retorna o valor da soma dos nmeros especificados Exemplo: esc soma 200 300 500 pf (soma 50 30 20)

Diferena diferena nmero1 nmero2 Retorna o resultado da diferena entre nmero1 e nmero2. Exemplo: esc diferena 50 10 40

Oposto oposto nmero Retorna o valor oposto do nmero (ou resultado de expresso) dado como parmetro. Exemplo: mostre oposto -3 3 mostre oposto 3 + 4 -7 mostre oposto -3 + 4 -1

Produto

produto (produto

nmero1 nmero2 nmero1 nmero2...nmeron)

Retorna o produto dos nmeros especificados. Exemplo: esc produto 300 2 600 coloque 5 "n1 coloque 6 "n2 esc produto :n1 :n2 30

Quociente quociente nmero1 nmero2 Retorna o quociente da diviso inteira de nmero1 por nmero2. Exemplo: esc quociente 1000 2 500 coloque 50 "n1 coloque 25 "n2 esc quociente :n1 :n2 2 esc quociente 100 quociente 10 2 20

Resto resto nmero1 nmero2 Retorna o valor do resto da diviso inteira de nmero1 por nmero2. Exemplo:

esc resto 10 3 1 atribua "a 5 atribua "b 3 esc resto :a :b 2

Inteiro inteiro nmero Envia sua entrada com a parte fracionada removida; por exemplo, um inteiro com o mesmo sinal que o da entrada, cujo valor absoluto o maior inteiro menor ou igual ao valor absoluto da entrada. Dentro dos computadores, os nmeros so representados de duas formas diferentes, uma para inteiros e outra para nmeros com partes fracionadas. Porm, na maioria dos computadores, o maior nmero que pode ser representado em formato inteiro menor que o maior inteiro que pode ser representado (mesmo com preciso exata) em formato de ponto flutuante (frao). A operao INTEIRO sempre emitir um nmero cujo valor matematicamente um inteiro, mas se sua entrada muito grande, a sada pode no ser em formato inteiro. Nesse caso, operaes como Resto, que exigem uma entrada em inteiro, no aceitaro esse nmero.

Exemplo: mostre int 8.2 8 mostre int 8.7 8

Arredonde arredonde nmero Retorna nmero, arredondado para o inteiro mais prximo. Exemplo:

esc arredonde 2.45 2 esc arredonde 2.5 3

Abs abs nmero

(procedimento de biblioteca)

Retorna o valor absoluto (magnitude) da sua entrada. Exemplo: mostre abs 5 5 mostre abs -5 5

Sinal sinal nmero

(procedimento de biblioteca)

Retorna o sinal (-1 se negativo, 0 se zero e 1 se positivo) de nmero. til, por exemplo, quando voc deseja tirar o sinal de um nmero e aplic-lo a outro. Exemplo: mostre sinal 5 1 mostre sinal 0 0 mostre sinal -98.6 -1

Raizq raizq nmero

Retorna a raiz quadrada de nmero. Exemplo: esc raizq 2 1.41

Potncia potncia nmero1 nmero2 Retorna nmero1 (base) elevado potncia de nmero2 (expoente). Se nmero1 for negativo, ento nmero2 precisa ser inteiro. Exemplo: mostre potncia 2 3 8 mostre potncia 2 -3 0,125 mostre potncia 9 0 1 mostre potncia -2 3 -8

Exponencial exponencial nmero Retorna e (2.718281828+) elevado potncia de nmero. Exemplo: mostre exponencial 2 7.38905609...

Log10 log10 nmero Retorna o logaritmo na base 10 de nmero. Exemplo: mostre log10 1 0 mostre log10 100 2

ln ln nmero Retorna o logaritmo natural (base e) de nmero. Exemplo: mostre ln 1 0 mostre ln exp 2 2

Pi pi

(procedimento de biblioteca) Retorna o valor de pi (3.141592653586793227020265931059839203954)

Exemplo: mostre senrad pi/2 1

Tan tan ngulo_graus Retorna a tangente de ngulo_graus (valor do ngulo medido em graus). Veja tambm Tanrad.

Exemplo: mostre tan 0 0 mostre tan 90 Error mostre tan 45 1 Tanrad tanrad ngulo_rad Retorna a tangente de ngulo_rad (valor do ngulo medido em radianos). Veja tambm Tan. Exemplo: mostre tanrad 0 0 mostre tanrad pi/2 Error mostre tanrad pi/4 1

Sen sen ngulo_graus Retorna o valor do seno de ngulo_graus (valor do ngulo medido em graus).. Veja tambm Senrad.

Exemplo: esc sen 0 0.00 esc sen 90 1

Senrad senrad ngulo_rad Retorna o seno de ngulo_rad (valor do ngulo medido em radianos). Veja tambm Sen. Exemplo: atribua "pi 4 * arctanrad 1 mostre senrad 0 0 mostre senrad :pi 1.2e-16

Cos cos ngulo_graus Retorna o cosseno de ngulo_graus (valor do ngulo medido em graus).. Veja tambm Cosrad. Exemplo: esc cos 45 0.707... esc cos 90 0 esc cos 180

-1

Cosrad cosrad ngulo_rad Retorna o cosseno de ngulo_rad (valor do ngulo medido em radianos). Veja tambm Cos. Exemplo: atribua "pi 4 * arctanrad 1 mostre cosrad 0 1 mostre cosrad :pi -1

Arctan arctan nmero (arctan nmero1 nmero2) Retorna o arcotangente, em graus, de nmero. Com 2 entradas (x y), retorna o arcotangente de y/x, se x for diferente de zero, ou 90 ou -90 dependendo do sinal de y, se x = zero. Exemplo: esc arctan 1 45 esc arctan 0 0

Arctanrad arctanrad nmero (arctanrad nmero1 nmero2)

Retorna o arcotangente, em radianos. Com 2 entradas (x,y), retorna o arcotangente de y/x, se x for diferente de zero, ou pi/2 ou -pi/2 dependendo do sinal de y, se x for igual a zero. Exemplo: mostre arctanrad 1 0.785398163397448

Arcsen arcsen nmero Retorna o arcoseno de nmero, em graus. Veja tambm Arcsenrad. Exemplo: mostre arcsen 0.5 30 mostre arcsen sen 45 45

Arcsenrad arcsenrad nmero Retorna o arcoseno de nmero, em radianos. Veja tambm Arcsen. Exemplo: mostre (arcsenrad 1) - pi/2 verdadeiro

Arccos arccos nmero Retorna o arcocosseno de nmero, em graus. Veja tambm Arccosrad. Exemplo: mostre arccos 0.5 60

mostre arccos cos 45 45 Arccosrad arccosrad nmero Retorna o arcocosseno de nmero, em radianos. Veja tambm Arccos. Exemplo: mostre (arccosrad (raizq 2)/2) = pi/4 verdadeiro

Predicados (Aritmticos) menor maior menor menor nmero1 nmero2 Retorna verd se nmero1 for menor que nmero2. Caso contrrio, retorna falso. Exemplo: mostre menor 4 3 falso mostre menor 7 9 verd

maior maior nmero1 nmero2 Retorna verd se nmero1 for maior que nmero2. Caso contrrio, retorna falso.

Exemplo: mostre maior 5 6 falso mostre maior 8 3 verd

Nmeros randmicos Sorteienmero sorteienmero sortnum

nmero nmero

Retorna um nmero aleatrio inteiro e positivo entre 0 (zero) e o nmero especificado. Exemplo: esc sorteienmero 40 (ser gerado um nmero aleatoriamente) esc sorteienmero 40 (ser gerado um nmero aleatoriamente) esc sorteienmero 40 (ser gerado um nmero aleatoriamente)

Resorteienmero resorteienmero nmero resortnum nmero Reproduz o resultado do comando Sorteienmero. Originalmente a sequncia dos nmeros randmicos diferente para cada vez que o LOGO usado. Se for necessrio que a mesma sequncia seja repetida, use resorteienmero antes da primeira chamada do Sorteienmero. Se for necessrio mais de uma sequncia de repetio, resorteienmero deve ser seguido de um nmero inteiro; cada entrada possvel seleciona uma sequncia

nica de nmeros. Exemplo: (resorteienmero 1234) repita 2 [mostre sorteienmero 10] 6 3 (resorteienmero 1234) repita 2 [mostre sorteienmero 10] 6 3

Formatao de impresso Formatanmero Formatanmero formatanmero nmero1 nmero2 nmero3 formnum nmero1 nmero2 nmero3 Retorna uma palavra contendo uma representao numrica de nmero1, possivelmente precedida por espaos, com a quantidade de caractere definida em nmero2, incluindo exatamente o nmero de dgitos indicado em nmero3 depois do ponto decimal. Se nmero3 (preciso) for 0, ento no existir casas decimais. nmero1: (NMERO) Nmero a ser formatado. nmero2: (INTEIRO) Largura total mnima, incluindo o ponto decimal. nmero3: (INTEGER) Nmero de dgitos que aparecero depois do ponto decimal. Exemplo: mostre formatanmero 123.1 10 10 123.1000000000

Operaes bit-a-bit

Bite Bitou Bitxou Bitno Deslocabitsa Deslocabitsl

Bite bite (bite

nmero1 nmero2 nmero1 nmero2 nmero3...)

Retorna o resultado da operao lgica e bit-a-bit nas entradas, as quais devem ser nmeros inteiros. Exemplo: mostre bite 5 2 0 mostre bite 12 5 4

Bitou bitou nmero1 nmero2 (bitou nmero1 nmero2 nmero3...) Retorna o resultado da operao lgica ou bit-a-bit nas entradas, as quais devem ser nmeros inteiros. Exemplo: mostre bitou 5 2 7 mostre bitou 5 1 5

Bitxou bitxou (bitxou

nmero1 nmero2 nmero1 nmero2 nmero3...)

Retorna o resultado da operao lgica ou exclusivo bit-a-bit nas entradas, as quais devem ser nmeros inteiros. Exemplo: mostre bitxou 5 2 7 mostre bitxou 5 1 4

Bitno bitno nmero Retorna o resultado da operao lgica no (inverso binria) sobre a entrada, que deve ser um nmero inteiro. Exemplo: mostre bitno 1 -2 mostre bitno 5 -6

Deslocabitsa deslocabitsa nmero1 nmero2 Retorna o nmero1 deslocado aritmticamente para a esquerda nmero2 bits. Se nmero2 for negativo, o deslocamento para a direita. As entradas precisam ser valores inteiros. Exemplo: mostre deslocabitsa 5 2 20

mostre deslocabitsa 20 -1 10

Deslocabitsl deslocabitsl nmero1 nmero2 Retorna o nmero1 deslocado logicamente para a esquerda nmero2 bits. Se nmero2 negativo, a mudana para a direita com preenchimento de zeros. As entradas precisam ser valores inteiros. Exemplo: mostre deslocabitsl 5 2 20 mostre deslocabitsl 20 -1 10

OPERAES LGICAS E Ou No E E (E

predicado1 predicado2 predicado1 predicado2...predicadon)

Retorna a palavra verd se os parmetros de entrada forem verdadeiros. Caso contrrio, retorna a palavra falso. Todas as entradas (predicados) precisam retornar ou verd ou falso.

Exemplo: mostre e "verdadeiro "falso falso mostre e "verdadeiro "verdadeiro

verdadeiro mostre e soiguais [a] [b] falso

Ou ou (ou

predicado1 predicado2 predicado1 predicado2 ... predicadon)

Retorna a palavra verd se uma das entradas for verdadeira. Caso contrrio retorna falso. Todas as entradas (predicados) precisam retornar ou verd ou falso. Exemplo: mostre ou "verdadeiro "falso verdadeiro mostre ou "falso "falso falso mostre ou soiguais 2 5 soiguais A A verd

No no predicado Retorna a palavra verd se o predicado for falso. Caso contrrio, retorna a palavra falso.

Exemplo: no "verdadeiro falso no soiguais (2+2) 4 falso

GRFICOS O centro da janela de imagens a localizao [0 0] da tartaruga. X positivo direita; Y positivo acima. As direes (ngulos) so medidas em graus no sentido horrio a partir do eixo Y positivo (12:00), diferentemente da tradicional conveno matemtica que mede os ngulos no sentido anti-horrio a partir do eixo X positivo (3:00). Vrias tartarugas so admitidas, mas tartarugas dinmicas e deteco de coliso no so suportados.

Mltiplas tartarugas Movimentos da tartaruga Operaes para movimentao da tartaruga Controle da tartaruga e janela Usando cores Operaes para tartarugas e janelas Controle de lpis Operaes para lpis Mltiplas tartarugas Ativetartaruga Tartarugaativa Tartarugabitmap Semtartarugabitmap Ativetartaruga ativetartaruga atat

tartaruga tartaruga

Seleciona a tartaruga ativa. Cada tartaruga mantm sua prpria Direo (orientao em 2D/3D), Posio e Controle de Lpis . Cada tartaruga pode ser representada como um bitmap por meio do comando Tartarugabitmap. Note que as tartarugas comeam no 0, que a tartaruga padro. Existe um limite de 1024 tartarugas, o que significa que o maior valor de tartaruga 1023. Todas as tartarugas entre 0 e a tartaruga de valor mais elevado selecionadas sero "ativadas". Ento no escolha tartaruga entre 100 e 200 se

voc precisa de apenas 2 tartarugas. Um Rg ou Tartaruga ir selecionar automaticamente a tartaruga 0 e desativar todas as outras.

Exemplo: repita 8 [ativetartaruga contevezes-1 pf 10*contevezes] Existem 3 tipos especiais de tartaruga utilizados quando no modo Logo3D. Tartaruga -1: Sua posio representa omde seus olhos esto ao visualisar um cena no modo 3D (padres para [400 400 600]). Sua orientao no importa. Tartaruga -2: Sua posio representa para onde seus olhos esto olhando esto ao visualisar um cena no modo 3D (padres para [0 0 0]). Sua Orientao representa qual a direo para cima na tela (padres para [0 0 0], a posio do eixo Y para cima). Tartaruga -3: Sua posio representa onde a fonte de luz est posicionada (padres para [0 0 1000]). Sua Orientao no importa. Esta tartaruga s importante quando voc estiver utilizando Inciopolgono e Fimpoligono.

Estas tartarugas especiais nunca so so exibidas ou transformadas em imagem bitmap. Cada vez que voc entrar no modo Logo3d, todas as tartarugas especiais retornam para sua posio e orientao originais. Exemplo 2 (3D): logo3d tat ;Desenha um cubo a partir do ponto de vantagem padro repita 4 [repita 4 [pf 100 pd 90] pf 100 cabeceiparafrente 90] tat ativetartaruga -1 mudexyz 500 500 500 ativetartaruga 0 ;Desenha um cubo a partir do ponto de vantagem padro repita 4 [repita 4 [pf 100 pd 90] pf 100 cabeceieparafrente 90]

Tartarugaativa

tartarugaativa tatativa Retorna o nmero correspondente a tartaruga que est ativa. Para alterar a tartaruga ativa, veja Ativetartaruga. Exemplo: ativetartaruga 8 mostre tartaruga 8

Tartarugabitmap tartarugabitmap tatbmp Mapeia a tartaruga ativa (veja Ativetartaruga) para o bitmap correspondente do buffer (veja Recortebitmap e Mudendicebitmap). Se o buffer de bitmap 0 estiver mapeado na rea de transferncia, ento a tartaruga 0 (quando mapeada a um bitmap com este comando) ser mapeada rea de transferncia. Isto , se voc selecionar a tartaruga 0 e acionar Tartarugabitmap ento a tartaruga ser o contedo da rea de transferncia. Note que a rea de transferncia deve conter um bitmap. Tente desenhar uma figura no Paint e copiar uma parte para rea de transferncia, ento retorne ao SuperLogo e selecione a tartaruga 0 (a padro) e execute este comando. Tanto Semtartarugabitmap como Tat vo restaurar a tartaruga para seu formato normal (isto no apaga o bitmap correspondente). Exemplo: tat un rotule 1 pt 20 ul recortebitmap 20 20 tararugabitmap pf 100

Semtartarugabitmap semtartarugabitmap semtatbmp Este comando faz o oposto de Tartarugabitmap. Ele remove o mapeamento da tartaruga corrente do buffer de bitmap correspondente. Exemplo: tat un rotule 1 pt 20 ul recortebitmap 20 20 tartarugabitmap pf 100 semtartarugabitmap Movimentos da tartaruga Parafrente Paratrs Paraesquerda Paradireita Roleparaesquerda Roleparadireita Cabeceieparafrente Cabeceieparatrs Mudeposio Mudeposxyz Mudexy Mudexyz Mudex Mudey Mudez Paracentro Mudedireo Mudedireorolagem

Mudedireocabeceio Mudeorientao Arcoelipse Elipse Arco Circunferncia Parafrente parafrente nmero pf nmero Movimenta a tartaruga para frente o nmero de passos, ou seja, desloca a tartaruga no sentido em que ela estiver apontando. Exemplo: tat pf 50

Paratrs paratrs pt

nmero nmero

Movimenta a tartaruga para trs o nmero de passos, ou seja, desloca a tartaruga no sentido oposto ao que ela estiver apontando. Exemplo: tat pt 50

Paraesquerda paraesquerda nmero pe nmero Gira a tartaruga para a esquerda o nmero especificado em graus. Exemplo:

tat pe 60

Paradireita paradireita nmero pd nmero Gira a tartaruga para a direita o nmero especificado em graus. Exemplo: tat pd 45

Roleparaesquerda roleparaesquerda ngulo rolepe ngulo Rola a tartaruga (para o seu lado esquerdo) de acordo com o ngulo especificado, medido em graus (1/360 de uma circunferncia). Este comando deve ser executado no modo Logo3d. Exemplo: logo3d roleparaesquerda 45 repita 3 [pf 100 paraesquerda 120]

Roleparadireita roleparadireita ngulo rolepd ngulo Rola a tartaruga (para o seu lado direito) de acordo com o ngulo especificado, medido em graus (1/360 de uma circunferncia). Este comando deve ser executado no modo Logo3d. Exemplo:

logo3d roleparadireita 45 repita 3 [pf 100 paradireita 120]

Cabeceieparafrente cabeceieparafrente ngulo cabeceiepf ngulo Inclina o nariz da tartaruga para baixo de acordo com o ngulo especificado, medido em graus (1/360 de uma circunferncia). Este comando deve ser executado no modo Logo3d. Exempo: logo3d cabeceieparafrente 45 repita [pf 100 paradireita 120]

Cabeceieparatrs cabeceieparatrs ngulo cabeceiept ngulo Inclina o nariz da tartaruga para cima de acordo com o ngulo especificado, medido em graus (1/360 de uma circunferncia). Este comando deve ser executado no modo Logo3d.

Exemplo: logo3d cabeceieparatrs 45 repita 3 [pf 100 paradireita 120]

Mudeposio mudeposio mudepos

lista lista

Movimenta a tartaruga para uma posio absoluta da tela. O argumento uma lista de dois nmeros, onde o primeiro representa a coordenada X e o

segundo representa a coordenada Y. Exemplo: tat mudepos [0 100] mudepos [100 100] mudepos 100 0] mudepos [0 0]

Mudeposxyz mudeposxyz

lista

Move a tartaruga para uma coordenada X, Y, Z absoluta. O argumento uma lista de trs nmeros, as coordenadas X, Y e Z. Este comando deve ser executado no modo Logo3d. Veja tambm Posxyz. Exemplo: (desenhe um cubo) logo3d ; Agora desenhe um cubo mudeposxyz [0 100 0] mudeposxyz [100 100 0] mudeposxyz [100 0 0] mudeposxyz [0 0 0] mudeposxyz [0 0 100] mudeposxyz [100 0 100] mudeposxyz [100 100 100] mudeposxyz [0 100 100] mudeposxyz [0 0 100] mudeposxyz [0 100 100] mudeposxyz [0 100 0] mudeposxyz [100 100 0] mudeposxyz [100 100 100] mudeposxyz [100 0 100] mudeposxyz [100 0 0]

Mudexy mudexy

nmero1 nmero2

Movimenta a tartaruga para uma posio absoluta de tela. O argumento so dois nmeros onde nmero1 representa a coordenada X e nmero2 representa a coordenada Y. Exemplo: tat mudexy 0 100 mudexy 100 100 mudexy 100 0 mudexy 0 0

Mudexyz mudexyz

nmero1 nmero2 nmero3

Move a tartaruga para uma posio 3D absoluta na tela. Os trs argumentos so nmeros, as coordenadas X, Y e Z. Este comando elaborado para ser usado no modo Logo3d. Veja tambm Posxyz. nmero1: (NMERO) A coordenada X desejada. nmero2: (NMERO) A coordenada Y desejada. nmero3: (NMERO) A coordenada Z desejada. Exemplo: (desenha algumas ondas sinuosas em 3D) logo3d para [i 0 360 10] ~ [ para [j 0 360] [mudexyz :j :i*sen :j -:i] un mudexyz 0 0 -:i ul ] Mudex mudex

nmero

Movimenta a tartaruga at o ponto com coordenada X especificado por nmero, o qual representa a coordenada X, mantendo inalteradas sua coordenada Y e sua direo. Exemplo: tat mudex 300

Mudey mudey

nmero

Movimenta a tartaruga para o ponto especificado por nmero, o qual representa a coordenada Y, mantendo inalteradas sua coordenada X e sua direo. Exemplo: tat pd 90 pf 290 mudey 180

Mudez mudez

nmero

Move a tartaruga ao longo do eixo Z a partir de sua posio atual at uma nova coordenada Z absoluta. O argumento a nova coordenada Z. Este comando elaborado para executar em modo Logo3d. Veja tambm Mudex e Mudey. Exemplo: logo3d un mudex 100 rt mudez 100 mudey 100 mudez 0 mudey 0 Paracentro

paracentro pc Movimenta a tartaruga para o centro da tela (posio [0 0]), sem alterar sua direo. Exemplo: tat pf 100 pd 90 pf 100 pc

Mudedireo mudedireo ngulo muded ngulo mudedc ngulo Coloca a tartaruga em uma nova direo absoluta. O argumento o ngulo (a direo muda em graus no sentido horrio a partir do eixo Y positivo). Veja tambm Direo. Se voc est no modo Logo3d, a direo (em graus) positiva a partir do eixo X positivo at o eixo Y positivo girando em torno do eixo Z.

Exemplo: muded 45 mostre direo 45 Mudedireorolagem mudedireorolagem

ngulo

Rola a tartaruga para uma nova direo de rolagem. O argumento um ngulo, em graus, que positivo a partir do eixo X para o eixo Z negativo, rolando em torno do eixo Y. importante checar Compreendendo sua orientao em 3D. Este comando elaborado para executar em modo Logo3d. Veja tambm Direorolagem.

Exemplo: logo3d mudedireorolagem 45 mostre direorolagem 45

Mudedireocabeceio mudedireocabeceio ngulo Muda a direo de cabeceio da tartaruga (nariz). O argumento um ngulo, em graus, que positiva a partir do eixo Z negativo at a posio do eixo Y, girando em torno do eixo X. importante checar Compreendendo sua orientao em 3D. Este comando elaborado para executar em modo Logo3d. Veja tambm Direocabeceio.

Exemplo: logo3d mudedireocabeceio 45 mostre direocabeceio 45

Mudeorientao mudeorientao lista

(procedimento de biblioteca)

Define uma nova orientao absoluta para a tartaruga. O argumento uma lista [direorolagem direocabeceio direo] em graus. importante checar Compreendendo sua orientao em 3D. Este comando elaborado para executar em modo Logo3d. Veja tambm o comando Orientao.

Exemplo: mudeorientao [180 45 90] mostre orientao [180 45 90]

Arcoelipse

arcoelipse ngulo eixo_menor eixo_maior inciongulo O comando Arcoelipse no move a tartaruga. Ele desenha uma parte ou toda a elipse baseado na direo da tartaruga, a posio da tartaruga e os argumentos fornecidos. A elipse comea na parte de trs da tartaruga e faz a varredura de acordo com o valor do ngulo de incio definido em inciongulo. O tamanho baseado nos valores eixo_menor e eixo_maior. A posio atual da tartaruga ser no centro da elipse. O eixo_menor a menor distncia entre a elipse e o ponto central. O eixo_maior a maior distncia entre a elipse e o ponto central.

Exemplo: arcoelipse 360 100 200 0 tat arcoelipse 90 50 50 0 tat arcoelipse 90 50 50 90 Exemplo (um barril em 3D): logo3d repita 72 [arcoelipse 90 100 150 45 rolepd 5]

Elipse elipse

eixo_menor eixo_maior

(procedimento de biblioteca)

O comando Elipse no move a tartaruga. Ele desenha uma elipse baseado na direo da tartaruga, a posio da tartaruga e os argumentos fornecidos. O tamanho baseado nos valores eixo_menor e eixo_maior. A posio atual da tartaruga ser no centro da elipse. O eixo_menor a menor distncia entre a elipse e o ponto central. O eixo_maior a maior distncia entre a elipse e o ponto central.

Exemplo: elipse 100 200

tat elipse 50 50 tat elipse 50 50 Exemplo (tornado em 3D): logo3d tat repita 72 [elipse 200 100 rolepd 5 pf 5] Arco arco ngulo raio

(procedimento de biblioteca)

O procedimento Arco no move a tartaruga. Ele desenha um arco (parte de uma circunferncia) baseado na posio e na direo da tartaruga e nos argumentos fornecidos. O arco inicia na parte de trs da cabea da tartaruga e continua seu trajeto de acordo com o ngulo. O tamanho baseado no raio. A posio atual da tartaruga ser no centro do arco. Um arco com raio no valor de 360, obviamente, desenhar uma circunferncia. Exemplo: arco 360 100 arco 90 50

Circunferncia circunferncia circunferencia

raio raio

(procedimento de biblioteca)

O procedimento circunferncia no move a tartaruga. Ele desenha uma circunferncia baseado na posio da tartaruga e nos argumentos fornecidos. O tamanho baseado no raio. A posio atual da tartaruga ser no centro do circunferncia. Exemplo: circunferncia 100 circunferncia 50 Exemplo (uma esfera em 3D):

logo3d repita 72 [circunferncia 100 rolepd 5]

Operaes para movimentao da tartaruga Posio Posxyz Coorx Coory Coorz Direo Direorolagem Direocabeceio Orientao Direopara Direoparaxyz Distncia Distnciaxyz Pixel Proporo Posio posio pos Retorna uma lista composta de dois nmeros referentes posio atual (coordenadas [X,Y]) da tartaruga. Exemplo: tat pd 45 pf 200 esc pos 141.42 141.42

Posxyz posxyz

Retorna a posio atual da tartaruga, como uma lista de trs nmeros, as coordenadas X, Y e Z. Este comando elaborado para executar no modo Logo3d. Exemplo: logo3d mudeposxyz [100 100 50] mostre posxyz [100 100 50]

Coorx coorx

(procedimento de biblioteca)

Retorna o valor da coordenada cartesiana X da posio atual da tartaruga. No estado inicial do LOGO a coordenada X da tartaruga 0. Exemplo: tat pd 90 pf 100 pe 90 pf 100 esc coorx 100

Coory coory

(procedimento de biblioteca)

Retorna o valor da coordenada cartesiana Y da posio atual da tartaruga. No estado inicial do LOGO a coordenada Y da tartaruga 0. Exemplo: tat pe 90 pf 100 pd 90 pf 100 esc coory 99.999...

Coorz coorz (procedimento de biblioteca) Retorna um nmero, a coordenada Z da tartaruga. Este comando elaborado para executar em modo Logo3d.

Exemplo: logo3d mudez 100 mostre coorz 100

Direo direo direcao d Retorna um nmero entre 0 e 360, equivalente direo da tartaruga. O ngulo medido no sentido anti-horrio. Exemplo: tat pd 270 pf 100 pd 90 esc d 0.00 pe 90 esc d 270

Direorolagem direorolagem dcrol Retorna o ngulo de rolagem da tartaruga em graus. importante checar Compreendendo sua orientao em 3D. Veja tambm Mudedireorolagem. Este comando elaborado para executar em modo Logo3d.

Exemplo: mudedireorolagem 90 mostre direorolagem 90

Direocabeceio direocabeceio dccab Retorna o ngulo de cabeceio da tartaruga em graus. importante checar Compreendendo sua orientao em 3D. Veja tambm Mudedireocabeceio. Este comando elaborado para executar em modo Logo3d. Exemplo: mudedireocabeceio 90 mostre direocabeceio 90

Orientao orientao

(biblioteca de procedimento)

Emite uma lista [direorolagem direocabeceio direo] contendo os diversos ngulos que determinam a orientao da tartaruga em graus. importante checar Compreendendo sua orientao em 3D. Veja tambm Mudeorientao. Este comando elaborado para executar em modo Logo3d.

Exemplo: mudeorientao [180 45 90] mostre orientao [180 45 90]

Direopara direopara lista direcaopara lista Retorna um nmero que equivale ao ngulo que a tartaruga deve girar para poder atingir o ponto na tela especificado por lista. Esta lista dever ser composta de dois elementos onde o primeiro elemento indica a coordenada x e o segundo elemento indica a coordenada y. Exemplo:

tat mostre direopara [100 100] 45

Direoparaxyz direoparaxyz lista direcaoparaxyz lista Retorna uma lista, contendo [direorolagem direocabeceio direo] por meio da qual a tartaruga deve ser orientada de modo que ela aponte a partir de sua posio atual para a posio definida pelas coordenadas fornecidas como argumento lista [x y z]. importante checar Compreendendo sua orientao em 3D. Este comando elaborado para executar em modo Logo3d.

Exemplo: mostre direoparaxyz [100 100 0] [0 0 45] mudeorientao direoparaxyz [100 100 100] pf distnciaxyz [100 100 100]

Distncia distncia lista

(procedimento de biblioteca)

Retorna um nmero, a distncia que a tartaruga precisa percorrer em linha reta para alcanar a posio dada por lista [x y].

Exemplo: mostre direopara [0 100] 100 mostre direopara [300 400] 500 muded direopara [300 400] pf distncia [300 400]

Distnciaxyz distnciaxyz lista

(procedimento de biblioteca)

Retorna um nmero, a distncia que a tartaruga precisa percorrer em linha reta para alcanar a posio fornecida como argumento em lista [x y z]. Este comando elaborado para executar em modo Logo3d. Exemplo: mostre direoparaxyz [0 100 0] 100 mostre direoparaxyz [100 100 100] 173.205080756888 mudeorientao direoparaxyz [100 100 100] pf distnciaxyz [100 100 100]

Pixel pixel Retorna uma lista de nmeros que representa a intensidade das cores vermelho, verde e azul do pixel corrente sob a tartaruga.

Exemplo: tat mostre pixel [255 255 255] pf 100 mostre pixel [255 255 255] pt 100 mostre pixel [0 0 0]

Proporo proporo proporcao

Retorna uma lista contendo dois nmeros, os fatores de proporo X e Y, usados por Mudeproporo. (Mas lembre-se de que Mudeproporo pega dois nmeros como entradas, e no uma lista de nmeros.) Exemplo: mudeproporo 2.0 1.0 repita 4 [pf 100 pd 90] mostre proporo [2 1]

Controle da tartaruga e janela Apareatat Desapareatat Apaguedesenho Tartaruga Tirelimite Aumentelimite Ponhalimite Pinte Rotule Mudejanelagrfica Fontejanelagrfica Tamanhorotule Mudeproporo Zoom Rolex Roley Mudefoco Foco Mudeestadojanela Apareatat apareatat at Faz com que a tartaruga aparea na tela, na sua ltima posio. Para tornar a tartaruga invisvel use o comando Desapareatat (dt).

Exemplo: tat dt pf 100 at

Desapareatat desapareatat dt Faz a tartaruga desaparecer da tela, tornando-a invisvel. uma boa idia executar este comando quando estiver fazendo um desenho complexo, porque ocultar a tartaruga aumenta substancialmente a velocidade de processamento para os desenhos. Exemplo: tat pf 40 dt

Apaguedesenho apaguedesenho ad Apaga todos os traos deixados na tela, sem modificar a posio e direo da tartaruga. Exemplo: tat pf 100 ad

Tartaruga tartaruga tat

Apaga a tela grfica, colocando a tartaruga na sua posio original , com direo 0 (norte). Como Paracentro e Apaguedesenho. Exemplo: tat pf 100 pd 90 un pf 100 tat pf 100

Tirelimite tirelimite Informa tartaruga para que ela entre no modo tirelimite: a partir desse momento, se for solicitado tartaruga que ela se mova para alm dos limites de uma janela de desenho, ela ir "dobrar" e reaparecer no lado oposto da janela. A borda superior dobrada at a borda inferior, e a borda esquerda dobrada para a direita. (Portanto a janela topologicamente equivalente a um toro.) Este o modo inicial da tartaruga. Compare com Aumentelimite e Ponhalimite. Exemplo: aumentelimite pf 950 tat tirelimite pf 950 Aumentelimite aumentelimite al Informa tartaruga para que ela entre no modo aumentelimite: a partir desse momento, se for solicitado tartaruga que ela se mova para alm dos

limites de uma janela de desenho, ela ir move-se para fora da tela. A parte visvel da janela de desenho considerada exatamente como parte de um plano de desenho infinito; a tartaruga pode estar em qualquer lugar no plano. (Se voc perder a tartaruga, Paracentro a trar de volta ao centro da janela.) Compare com Tirelimite e Ponhalimite. Exemplo: aumentelimite pf 950 tat tirelimite pf 950

Ponhalimite ponhalimite pl Coloca limite na tela, no permitindo que a tartaruga se movimente fora do campo de viso da tela. Se isso acontecer, retornar uma menssagem de erro. Comparar Tirelimite e Aumentelimite. Exemplo: tat tirelimite pf 900 ponhalimite pf 900 =>tartaruga fora dos limites Logo3d Instrui a tartaruga a entrar no modo de perspectiva (Logo tridimensional); ela adiciona uma terceira dimenso (eixo Z). Logo3d um termo usado para descrever como ns iremos visualizar um mundo tridimensional em uma superfcie bidimensional. Voc precisa estar familiarizado com o uso do SuperLogo em 2D antes de comear a trabalhar com composies 3D. Tudo o que voc aprendeu sobre 2D aplica-se aos projetos 3D (modo de perspectiva). Por exemplo, se voc criou um cdigo de um desenho em 2D, digamos, uma estrela, voc pode executar o mesmo cdigo e colocar a estrela nos seis lados de

um cubo dando tartaruga as coordenadas 3D e a orientao corretas antes de voc chamar seu cdigo 2D para desenhar a estrela. Podemos fazer uma analogia da tartaruga no mundo 3D com os avies. Os avies possuem trs controles para manipul-los por meio do espao 3D. Elevadores no trreo (lanamento), um leme deriva (guinada) e ailerons nas asas (giro). O SuperLogo sempre teve um leme (Direita/Esquerda) e voc costumava voar em apenas um plano geomtrico. Mas agora o SuperLogo oferece os controles adicionais, ailerons (Roleparadireita/Roleparaesquerda) e elevadores (Cabeceieparatrs/Cabeceieparafrente) para manobras no espao 3D. Agora voc possui um nmero infinito de planos (quero dizer, geomtricos) para sobrevoar, e cada um deles permite qualquer orientao. Uma vez qaue voc est no plano desejado, poder comear a usar seus familiares comandos (Parafrente, Paratrs, Paraesquerda e Paradireita) para movimentar-se. Leia tambm a seo Compreendendo sua orientao em 3D. Veja a seguir um resumo da relao entre os comandos em 2D e os em 3D. Muitos comando esto repetidos em ambas as colunas simplesmente porque eles no so afetados pelo modo 3D.
2D mudexy mudex (y permanece inalterado) mudey (x permanece inalterado) coorx coory posio mudeposio direopara distncia direo 3D mudexy (z permanece inalterado) mudexyz mudex (y e z permanecem inalterados) mudey (x e z permanecem inalterados) mudez coorx coory coorz posio (z solto) posxyz mudeposio (z permanece inalterado) mudeposxyz direopara direoparaxyz distncia distnciaxyz direo direorolagem direocabeceio orientao mudedireo

mudedireo

paradireita (pd)

paraesquerda (pe)

aumentelimite tirelimite ponhalimite ativetartaruga 0-1023

mudedireorolagem mudedireocabeceio mudeorientao paradireita (pd) (no plano atual) roleparadireita (rolepd) cabeceieparatrs (cabeceiept) paraesquerda (pe) (no plano atual) roleparaesquerda (rolepe) cabeceieparafrente (cabeceiepf) logo3d

ativetartaruga 0-1023 ativetartaruga -1 ( a posio de seus olhos) ativetartaruga -2 ( para onde voc est olhando) arcoelipse (excelente para esferas)

arcoelipse

Limitaes: Existem vrios comandos que funcionaro no modo 3D, mas ainda possuiro um comportamento 2D. Suas aes iro ocorrer nas coordenadas X, Y e Z corretas. Mas a orientao ser limitada a um plano 2D. Por exemplo, voc no pode desenhar um texto com Rotule em seis lados do cubo. Mas se voc quisesse rotular os oito vrtices do cubo, cada rtulo pode ser posicionado corretamente em cada vrtice utilizando movimentadores 3D. Rotule Recortebitmap Colebitmap Copiebitmap Blocobmp Pinte Pixel O modo Logo3d no remove linhas ocultas ("hidden lines"). Para isso, os objetos precisam ser compostos de polgonos. O modo Logo3d no permite movimentar dinamicamente o olho. Isso porque o SuperLogo no armazenas seus objetos (seus vetores) em 3D por razes de desempenho. Ele os armazena em um bitmap 2D, como ele sempre faz. Entretanto, voc pode fazer uma manipulao dinmica "rpida" de duas outras maneiras.

Uma maneira simples manter sua cena o mais simples possvel (de acordo com a capacidade de seu computador). Basta limpar a tela e alterar a viso de olho (tartaruga -1) ou a posio dos objetos e desenhar novamente. Vale a pena lembrar que objetos curvos (como aqueles inspirados em elipses) geram muitos vetores. A outra opo gravar cada "cena" em um bitmap e reproduzi-los de acordo com a taxa que voc desejar. No importa se voc esteja "gravando" cenas 2D ou 3D, ela ser a mesma. Isto depender de quanta memria voc possui no seu computador. Pinte pinte Pinta uma regio da janela de desenho que contm a tartaruga e delimitada por linhas que tinham sido desenhadas anteriormente.

Exemplos: repita 4 [pf 100 pd 90] pd 45 un pf 20 pinte

Pinte pode ser usado no modo Logo3d quando a rea a ser pintada estiver delimitada e voc for pintar somente o que estiver na visualizao plana. Por exemplo, se voc possui um cubo, no desenhe todos os seis lados, somente trs podem ser visualizados, ento desenhe somente esses lados e pinte-os. Exemplo (3D): aprenda quadrado :cor repita 4 [pf 100 pd 90] un pd 45 pf 50 mudecp :cor pinte pt 50 pe 45 ul

fim aprenda cubo logo3d rolepd 45 cabeceieparafrente 45 quadrado [255 0 0] rolepd 90 quadrado [0 255 0] cabeceieparatrs 90 quadrado [0 0 255] fim

Rotule rotule

texto

A entrada, que pode ser uma palavra ou uma lista, escrita na tela. Se texto for uma lsita, quaisquer sublistas sero delimitadas por colchetes, mas o texto inteiro no delimitado por colchetes. Voc pode escrever qualquer objeto do Logo (nmeros, listas e strings). A cor do texto determinada por Mudecl. A posio do texto determinada pela posio da tartaruga. A fonte do texto determinada por Mudefontejanelagrfica ou Mudefjangr. O ngulo do texto determinado pela cabea (direo) da tartaruga. O tamanho do texto pode ser detemindado por Tamanhorotule. Exemplo: rotule "Ol Rotule pode ser usado no modo Logo3d, mas o texto no ficar no mesmo plano que o da tartaruga, embora fique na posio correta. Ele ainda seguir a direo da tartaruga para definir a orientao do texto. Exemplo (Rotule o eixo 3D)

aprenda eixo mudefontejanelagrfica[[Courier New] -19 0 0 700 0 0 0 0 3 2 1 49] pd 90 mudey 200 rotule "+Y mudey -200 rotule "-Y mudey 0 mudex 200 rotule "+X mudex -200 rotule "-X mudex 0 mudez 200 rotule "+Z mudez -200 rotule "-Z mudez 0 pe 90 fim logo3d tat ativetartaruga -1 mudeposxyz [600 600 800] ativetartaruga 0 eixo

Mudefontejanelagrfica mudefontejanelagrfica fonte A entrada uma lista que descreve completamente uma fonte. Uma fonte determina quais de seus caracteres aparecem na tela quando voc est usando o comando Rotule. As fontes disponveis dependem de seu computador. O SuperLogo possui duas maneiras de especificar a fonte que voc deseja. O modo mais fcil de utilizar fontes no SuperLogo selecionando a fonte desejada a partir do Menu e capturando os atributos utilizando o comando Fontejanelagrfica.

fonte:

(LISTA) que contm a seguinte informao: [ [Nome_da_fonte] Altura Largura Orientao Espessura Itlico Sublinhado Grifado Conjunto_Char Prec_saida ClipPrecision Qualidade PitchAndFamily].

Onde: Nome_da_fonte: (LISTA) Especifica o nome da fonte. Altura: (INTEIRO) Especifica a altura desejada, em unidades lgicas, para a fonte. Se este valor maior que zero, ele especifica a altura da clula da fonte. Se ele inferior a zero, especifica a altura do caractere da fonte. Largura: (INTEIRO) Especifica a largura desejada, em unidades lgicas, para a fonte. Orientao: (INTEIRO) Especifica a orientao desejada, em graus, para a fonte. Espessura: (INTEIRO) Especifica a espessura da fonte. Este membro varia entre 0 e 900 em incrementos de 100. Um valor 0 significa que est sendo utilizada a largura padro. Itlico: (INTEIRO) Especifica uma fonte em itlico, se for diferente de zero. Sublinhado: (INTEIRO) Especifica uma fonte sublinhada, se for diferente de zero. Grifado: (INTEIRO) Especifica uma fonte grifada, se for diferente de zero. Conjunto_Char: (INTEIRO) Especifica o conjunto de caracteres da fonte. Prec_saida: (INTEIRO) Especifica a preciso de sada da fonte. ClipPrecision: (INTEIRO) Especifica a Clip Precision da fonte. Qualidade: (INTEIRO) Especifica a qualidade da fonte. PitchAndFamiliy: (INTEIRO) Especifica o tipo e famlia da fonte. Nota: se voc digitar erroneamente o nome da fonte, mudefontejanelagrfica ir relacionar quais fontes esto disponveis. Exemplo: mudefontejanelagrfica [[Times New Roman] -24 0 0 400 0 0 0 0 3 2 1 18] rotule "Ol

Fontejanelagrfica fontejanelagrfica

Retorna uma lista com as propriedade da fonte ativa para a Janela Grfica do SuperLogo. Veja Mudefontejanelagrfica para definies dos membros da LISTA. Exemplo: mudefontejanelagrfica [[Times New Roman] -24 0 0 400 0 0 0 0 3 2 1 18] mostre fontejanelagrfica [[Times New Roman] -24 0 0 400 0 0 0 0 3 2 1 18]

Tamanhorotule tamanhorotule texto Este comando ir retorna o tamanho do texto [largura altura] quando impresso na tela. A entrada, que pode ser uma palavra ou uma lista, a mesma que voc definiria para Rotule. Voc pode usar esta informao para construir outras formas do comando Rotule. Tambm possvel utilizar esta informao para "preparar" um local para o texto (por exemplo, colocando-o dentro de um quadro ou escolhendo um segundo plano).

Exemplo: mostre tamanhorotule "Ol [44 24]

Mudeproporo mudeproporo escala_x escala_y (No necessrio no SuperLogo, mas est disponvel para usurios que gostam de "desajustar deliberadamente a taxa de aspecto"). Ajusta a taxa de aspecto e escala da exibio grfica. Depois de usar este comando, todos os movimentos da tartaruga sero ajustados pela multiplicao das extenses horizontal e vertical do movimento pelos dois nmeros fornecidos como entradas. Por exemplo, aps a instruo de movimento "mudeproporo 2 1" com um valor de 45 graus ir mover-se duas

vezes tanto no sentido horizontal quanto no vertical. Se seus quadrados no ficarem fora de esquadro, tente isto. (Como outra alternativa, voc pode mudar deliberadamente a taxa de aspecto para desenhar uma elipse.)

Exemplo: mudeproporo 2.0 1.0 repita 4 [pf 100 pd 90] mostre proporo [2 1]

Zoom zoom escala Este comando permite alterar a escala da Janela Grfica do SuperLogo.O argumento a quantidade de zoom (escala) usada. Um nmero maior que 1,0 torna as coisas maiores (por exemplo, 2,0 torna as coisas duas vezes maiores), um nmero menor que 1,0 torna as coias menortes (0,5 faz as coisas ficarem 50% menores). Se uma imagem existente est na tela quando voc d um zoom nela, ela ir aumentar ou diminuir (a propsito, isto demora um pouco), de acordo com a quantidade de zoom (ela pode parecer um pouco serrilhada). Se voc "desenhar" enquanto d zoom, as coisas no parecero serrilhadas. Veja tambm o Menu Zoom.

Embora as coisas possam parecer serrilhadas, o SuperLogo trata tudo como se o zoom fosse normal (1,0) e imprime somente no modo normal. Aps retornar para o modo normal de zoom, 1,0, sua imagem no ficar mais esticada ou encolhida. Em outras palavras, com um zoom de 1,0, as linhas nunca ficam serrilhadas, mesmo que voc as tenha desenhado utilizando um zoom de 0,5 ou 2,0. NOTA: Este recurso funciona melhor se voc escolher um zoom que um "mltiplo" de dois. Por exemplo 2, 4, 8, 1/2 (0,5), 1/4 (0,25), 1/8 (0,125) etc. Exemplo: repita 4 [pf 100 pd 90] zoom 0,5

zoom 2,0 Rolex rolex nmero Permite ao SuperLogo controlar o rolamento horizontal da tela. Um nmero positivo faz a tela rolar para direita e um nmero negativo faz a tela rolar para a esquerda. Se nmero for zero, a tela assume a posio central (com relao ao eixo x). Exemplo: repita 10 [rolex 10]

Roley roley nmero Permite ao SuperLogo controlar o rolamento vertical da tela. Um nmero positivo faz a tela rolar para baixo e um nmero negativo faz a tela rolar para cima. Se nmero for zero, a tela assume a posio central (com relao ao eixo y). Exemplo: repita 10 [roley 10]

Mudefoco mudefoco palavra Habilita o SuperLogo a controlar a janela selecionada, a qual passar a ter o foco. A janela a ser selecionada especificada em palavra. Veja tambm Foco. Exemplo: mudefoco [Janela de Comandos]

Foco foco Retorna o cabealho da janela com o foco corrente (correntemente selecionado). Veja tambm Mudefoco. Exemplo: mostre foco [Janela de Comandos]

Mudeestadojanela mudeestadojanela nome_janela estado Este comando permite controlar o estado (0, 1, 2 etc) das janelas (por exemplo: Ocultar, Exibir etc.) do ttulo (nome_janela) fornecido. Tenha cuidado ao usar este comando. Estados: estado 0: Oculta a janela e ativa outra. estado 1: Ativa e exibe a janela. Se a janela estiver maximizada ou minimizada, o Windows a restaura ao seu tamanho e posio originais. Um aplicativo precisa usar este sinalizador quando est exibindo a janela pela primeira vez. estado 2: Ativa a janela e a exibe minimizada. estado 3: Ativa a janela e a exibe maximizada. estado 4: Exibe a janela minimizada. A janela ativa permanece ativa. estado 5: Ativa a janela e a exibe em seu tamanho e posio atuais. estado 6: Minimiza a janela especificada e ativa a prxima janela exibida na ordem de A a Z. estado 7: Exibe a janela em seu tamanho e posio mais recentes. A janela ativa permanece ativa. estado 8: Exibe a janela em seu estado atual. A janela ativa permanece ativa. estado 9: Ativa e exibe a janela. Se a janela estiver minimizada ou maximizada, o Windows a restaura ao seu tamanho e posio originais. Um aplicativo precisa especificar este indicador quando restaurar a janela minimizada. estado 10: Reservado.

Exemplo: Para maximizar: mudeestadojanela [Janela de Comandos] 3

Usando cores Vrios comandos (Mudecl, Mudecp, Mudecf) existem no SuperLogo para especificar as cores e suas intensidades. A entrada representa o quanto de vermelho, verde e azul voc quer em cada cor, variando de 0 a 255. Por meio dessas combinaes possvel atingir um total de 16.7 milhes de cores. Exemplo de como configurar alguns lpis comuns: mudecl [000 000 000] mudecl [255 255 255] mudecl [255 000 000] mudecl [000 255 000] mudecl [000 000 255] ou ou ou ou ou mudecl preto mudecl branco mudecl vermelho mudecl verde mudecl azul

Para permitir uma maior compatibilidade com outros recursos do SuperLogo, implementaes e simplicidade para os programadores inicinantes no SuperLogo, o programa tambm trabalha com um modo simples de ndice de cores. Exemplo: mostre cl [0 0 0] mudecl 5 mostre cl 5 mudecl [255 0 0] mostre cl [255 0 0] Veja a seguir o ndice de cores: 0 -> [ 0 0 0]

1 -> [ 0 0 255] 2 -> [ 0 255 0] 3 -> [ 0 255 255] 4 -> [255 0 0] 5 -> [255 0 255] 6 -> [255 255 0] 7 -> [255 255 255] 8 -> [155 96 59] 9 -> [197 136 18] 10 -> [100 162 64] 11 -> [120 187 187] 12 -> [255 149 119] 13 -> [144 113 208] 14 -> [255 163 0] 15 -> [183 183 183]

Compreendendo sua orientao em 3D A vida em 2D simples: Direo afetada por Paraesquerda, Paradireita e Mudedireo. Mas em 3D, no modo Logo3d as coisas so um pouco mais complicadas: Direo afetada por Paraesquerda, Paradireita e Mudedireo. Direorolagem afetado por Roleparaesquerda, Roleparadireita e Mudedireorolagem. Direocabeceio afetado por Cabeceieparatrs, Cabeceieparafrente e Mudedireocabeceio. No entanto, h mais para fazer do que isso. Direorolagem tambm pode afetar sua Direo, assim como Direocabeceio tambm pode afetar Direorolagem etc. O modo mais fcil para entender isso seguindo um exemplo: logo3d paradireita 90 (mostre arredonde direorolagem arredonde direocabeceio arredonde direo) 0 0 90 tat

cabeceieparafrente 90 roleparadireita 90 cabeceieparatrs 90 (mostre arredonde direorolagem arredonde direocabeceio arredonde direo) 0 0 90 Mas no se preocupe, o SuperLogo torna tudo isso fcil, basta que voc entenda algumas regras bsicas para no ficar completamente perdido no espao 3D. Os controles de tartaruga Direorolagem, Direocabeceio e Direo afetam um ao outro, mas somente naquilo que importante. O mais importante que uma alterao em Direo (com Paradireita, Paraesquerda ou Mudedireo) no ir afetar Direorolagem ou Direocabeceio. por isso que voc pode usar muto do seu cdigo 2D no ambiente 3D. H tambm uma outra regra para ser compreendida, voc no pode dizer simplesmente: logo3d mudedireorolagem 45 mudedireocabeceio 45 muded 45 (mostre arredonde direorolagem arredonde direocabeceio arredonde direo) 45 45 45 E esperar conseguir uma orientao absoluta de 45, 45, 45. Veja: tat paradireita 45 roleparadireita 30 cabeceieparatrs 30 ; Agora tente configurar sozinho novamente 45,45,45 mudedireorolagem 45 mudedireocabeceio 45 muded 45 (mostre arredonde direorolagem arredonde direocabeceio arredonde direo) 248 29 45 Mas no se preocupe porque h uma soluo, ela chamada Mudeorientao. tat

paradireita 45 roleparadireita 30 cabeceieparatrs 30 ; Agora tente configurar sozinho novamente 45,45,45 mudeorientao [45 45 45] (mostre arredonde direorolagem arredonde direocabeceio arredonde direo) 45 45 45 Mudeorientao compreende as interaes entre Direorolagem, Direocabeceio e Direo. Tudo o que Mudeorientao precisa fazer colocar as coisas na ordem correta. Ela basicamente retorna sua Orientao atual e aplica a solicitada. Ela faz isso seguindo uma ordem bastante especfica. Sua Orientao atual tambm pode ser relatada ou salva utilizando o comando Orientao. tat paradireita 45 mostre orientao [0 0 45] atribua "minha_orient orientao paradireita 90 cabeceieparatrs 180 mudeorientao :minha_orient mostre orientao [0 0 45] H tambm um outro comando referente a sua Orientao, que Direoparaxyz. Direoparaxyz emitir uma orientao que compatvel com Mudeorientao. mudeorientao direoparaxyz [100 100 0] mostre orientao [0 0 45] pf distnciaxyz [100 100 0] mostre posxyz [100 100 0] Aps dizer tudo isso,voc realmente no precisa pensar em termos de Orientao absoluta. Orientao e Mudeorientao na maioria das vezes sero usadas para salvar, relatar e recuperar sua Orientao (o mesmo que voc faz com Direo e Mudedireo em planos 2D). E, como explicado anteriomente, alteraes em sua direo com

Paradireita, Paraesquerda e Mudedireo tm apenas o mesmo efeito que no plano 2D (sua Direo). Voc tambm deve estar pensando em fazer o mesmo em planos 2D. No preciso ficar sempre preocupado com sua Direo absoluta em 2D, na maioria das vezes, ela relativa a sua Direo atual. Ela no possui nenhuma diferena em 3D, exceto pelo fato de voc possuir mais opes de movimento. Imagine que voc est em um avio e que est no cockpit da tartaruga. Agora decida para onde deseja ir.

Desenhando slidos 3D Os slidos 3D no SuperLogo utilizam todos os comandos 3D padro, com exceo de alguns poucos comandos adicionais que ajudam o SuperLogo a entender o que voc est desenhando. Para eliminao de linhas ocultas ou de superfcies ocultas, voc precisa definir superfcies (e no apenas vetores). As superfcies so apenas polgonos preenchidos. Basta que voc informe ao SuperLogo quando estar iniciando uma superfcie e quando terminar. Se voc usou somente vetores para desenhar uma caixa, o SuperLogo pode no reconhecer se ele uma caixa fechada de seis lados (um cubo slido) ou uma caixa de quatro lados com a parte superior e a inferior abertas. Vetores sozinhos so ambguos quando utilizados junto com superfcies. O SuperLogo no modo 3D ir cuidar do preenchimento correto dos polgonos de acordo com a cor desejada baseando-se na fonte de luz, nas obstrues e na cor da superfcie. Veja os novos comandos: Inciopolgono: Inicia um novo polgono (uma superfcie preenchida) Finaliza a definio do polgono e o exibe. Fimpolgono: Desenhepolgono: Sombreia e exibe todos os polgonos que foram exibidos. Ativetartaruga -3: Use esta tartaruga para posicionar a fonte de luz. Mudeiluminao: Use para definir como os objetos precisam ser iluminados. Se voc desenhou uma caixa em 3D (com seis polgonos) e todos eles foram criados com a mesma cor, o que voc ver algo parecido com um octgono preenchido. A cor final resultado do efeito produzido pelo ngulo da superfcie entre seu olhar (Atat -1) e a fonte de luz (Atat -3).

O modelo de iluminao 3D no SuperLogo muito poderoso e utiliza algumas da tcnicas mais modernas, mas ele exige alto desempenho. Ele no cria efeitos de sombra e refletivos, por exemplo. s vezes voc poder ver falhas de pixels em seus trabalhos. Isto normal e um artefato do algoritmo na implementao. Inciopolgono Fimpoligono Desenhepolgono Mudeiluminao Iluminao Inciopolgono inciopolgono Inciopolgono informa ao SuperLogo que voc deseja definir um polgono. Cada movimento subseqente resultar na adio da coordenada de destino na lista de vrtices do polgono. A definio finalizada com a utilizao do comando Fimpoligono. Para visualizar TODOS os polgonoes definidos como polgonos com formas, voc precisa utilizar o comando Desenhepolgono. Certifique-se de que voc esteja dominando as Restries de polgonos. Exemplo: aprenda quadrado inciopolgono repita 4 [pf 100 pd 90] fimpoligono fim logo3d repita 72 [quadrado rolepd 5] desenhepolgono

Fimpoligono fimpoligono Fimpoligono informa ao SuperLogo que voc completou a definio de um polgono que voc comeou quando usou o comando Inciopolgono. Observe que a coordenada atual no adicionada como um vrtice do polgono quando voc usar o

comando Fimpoligono. Mas o movimento que voc fez para chegar at a coordenada atual ser includo. Certifique-se de que voc esteja dominando as Restries de polgonos. Exemplo: aprenda quadrado inciopolgono repita 4 [pf 100 pd 90] fimpoligono fim logo3d repita 72 [quadrado rolepd 5] desenhepolgono

Desenhepolgono desenhepolgono Desenhepolgono pede para o SuperLogo apagar a tela e exibir todos os polgonos definidos com Inciopolgono e Fimpoligono. Somente polgonos sombreados sero mostrados. Os polgonos sero iluminados de acordo com a posio da fonte de luz utilizando Ativetartaruga -3 e parmetro de iluminao usando Mudeiluminao. Certifique-se de que voc esteja dominando as Restries de Polgonos. Lembre-se de que, se voc precisar adicionar outras coisas ao seu desenho, como Rotule ou BITMAPs etc., dever faz-lo depois do ltimo Desenhepolgono. Vale a pena lembrar que voc pode usar Desenhepolgono imediatamente depois de qualquer Fimpoligono para ver se os polgonos ficam sombreados medida que seu programa constri seus objetos. Mas lembre-se de que Desenhepolgono uma operao pesada e pode deixar seu programa consideravelmente lento se voc cham-lo a cada Fimpoligono. Exemplo: aprenda quadrado inciopolgono repita 4 [pf 100 pd 90]

fimpoligono fim logo3d repita 72 [quadrado rolepd 5] desenhepolgono

Mudeiluminao mudeiluminao lista Define como os objetos sero iluminados. O argumento uma lista de dois nmeros que variam entre 0,0 e 1,0, a quantidade de luz ambiente e difusa. Luz ambiente define o quo brilhante fica a iluminao da cena, quanto maior o nmero, mais brilhante a luz. Luz difusa no uma propriedade da fonte de luz, mas uma propriedade que define a suavidade da superfcie (quanta luz ela dispersa). Um valor alto significa que os objetos so suaves e reflexivos (como uma placa de mrmore), um valor baixo significa que os objetos so rsticos (como o giz). Para posicionar a luz, use Ativetartaruga -3. Veja tambm Iluminao.

Exemplo 1: mudeiluminao [0.3 0.6] mostre iluminao [0.3 0.6] Exemplo 2: aprenda quadrado inciopolgono repita 4 [pf 100 pd 90] fimpoligono fim tat logo3d limpepaleta mudecl [255 0 0] mudecf [0 0 0] repita 72 [quadrado rolepd 5] desenhepolgono

repita 50 [mudeiluminao (lista (sorteienmero 100)/100 (sorteienmero 100)/100) escreva iluminao espere 60]

Iluminao iluminao Retorna os atributos de iluminao, uma lista de dois nmeros, contendo os valores de Luz ambiente e Luz difusa. Veja tambm Mudeiluminao. Exemplo: mudeiluminao [0.3 0.6] mostre iluminao [0.3 0.6]

Restries de polgonos 1: Os trs primeiros vrtices de um polgono precisam formar um tringulo. 2: Um polgono precisa ser convexo. 3: Um polgono precisa ser plano (sem valores de cabeceieparatrs, cabeceieparafrente, rolepd, rolepe) entre inciopolgono/fimpoligono. Todas essas propriedades ocorrem muito naturalmente no Logo. Nota 1: o tringulo pode ser extremamente baixo. Isto legal: inciopolgono atribua "minha_pos posxyz pf 100 pd 0.00000001 pf 100 mudepos :minha_pos fimpoligono Isto NO legal (mesmo que seja para criar um polgono convexo.) inciopolgono

atribua "minha_pos posxyz pf 50 pf 50 pd 90 pf 100 mudepos :minha_pos fimpoligono Nota 2: O que significa convexo? Selecione duas coordenadas quaisquer dentro do polgono e una-as com uma linha reta. Se essa linha ficar fora do polgono, significa que ele no convexo. Tringulos, quadrados, circunferncias etc. so convexos. A letra "E", como um polgono, no convexa. Isto legal repita 4 [pf 100 pd 90] Isto NO legal repita 4 [pf 50 pd 90 repita 3 [pf 25 pe 90] pd 180 pf 50 pd 90] Nota 3: O que significa plano? O polgono precisa ser plano. Isto legal repita 4 [pf 100 pd 90] Isto NO legal repita 4 [pf 50 pd 90 pd 90 repita 3 [pf 25 pe 90] pd 180 rolepe 90 pf 50 pd 90] Note em 2 e 3:

Voc pode superar as restries 2 e 3 quebrando o objeto em polgonos mais simples que atendam s regras. Voc pode usar Circunferncia, Elipse, Arco e Arcoelipse. Exemplo (usando Circunferncia): logo3d repita 36 ~ [inciopolgono circunferncia 100 fimpoligono rolepd 10] desenhepolgono

Operaes para tartarugas e janelas visvel visvel visvel Retorna a palavra verd sempre que a tartaruga estiver em estado visvel. Caso contrrio, retorna a palavra falso. Ver Apareatat e Desapareatat. Exemplo: dt esc visvel falso at esc visvel verd

Controle de lpis A tartaruga carrega uma caneta capaz de desenhar figuras. A qualquer momento a caneta pode ser movida PARA CIMA (neste caso, mover a

tartaruga no muda o que est na tela) ou PARA BAIXO (nesse caso, a tartaruga deixa um rasto). Se a caneta estiver para baixo, ela pode funcionar em um dos trs seguintes modos: Uselpis (desenha linhas quando a tartaruga se move), Useborracha (apaga quaisquer linhas que possam ter sido desenhadas naquele caminho anteriormente) ou Useinversor (inverte o status de cada ponto ao longo do caminho da tartaruga).

Usenada Uselpis Useborracha Useinversor Restauralpis Mudecl Mudecp Mudecf Mudeespessuradolpis Mudelpis Limpepaleta Usenada usenada un Levanta a caneta (a tartaruga no deixa rastro ao se movimentar). Veja Uselpis. Exemplo: repita 10 [pf 10 un pf 10 pf]

Uselpis uselpis ul Abaixa a caneta, ou seja, a tartaruga passa a riscar ao se movimentar. Veja Usenada. Exemplo: useinversor pf 100

pt 100 uselpis pf 100 pt 100

Useborracha useborracha ub Abaixa a caneta e muda o modo para Borracha (ou seja, a tartaruga apaga por onde passar). Para restaurar a caneta ao modo normal use Uselpis. Exemplo: pf 100 useborracha pt 100 Useinversor useinversor ui Abaixa a caneta e define o modo como Inversor (inverte o status dos pontos por onde a tartaruga passar). Para restaurar a caneta ao modo normal use Uselpis. Exemplo: useinversor pf 100 pt 100 uselpis pf 100 pt 100

Restauralpis restauralpis

(procedimento de biblioteca)

Define o estado da caneta para a inicializao padro (espessura, cor e modo Uselpis).

Exemplo: useinversor pf 100 restauralpis pt 100 Mudecl mudecl

vetor_da_cor

Define a caneta como vetor_da_cor. O vetor_da_cor uma lista [vermelho verde azul] de intensidades. A cor da caneta afeta o texto desenhado (Rotule) e qualquer linha desenhada com a tartaruga (usando, por exemplo, Parafrente). Para uma explicao dos argumentos, veja Usando Cores. vetor_da_cor: (LISTA) Lista de trs inteiros representando as intensidades Vermelho, Verde e Azul, cada uma variando de 0 a 255. Exemplo: repita 255 [mudecl (lista contevezes 0 0) pf 100 pt 100] Exemplo 2:(um erro muito comum em Logo) atribua "vermelho 100 atribua "verde 100 atribua "azul 100 mudecl [:vermelho :verde :azul] <falhar> mudecl (lista :vermelho :verde :azul) <funcionar> Mudecp mudecp vetor_da_cor Define a cor de preenchimento como vetor_da_cor. O vetor_da_cor uma lista de intensidades [vermelho verde azul]. A cor de preenchimento afeta os comandos Pinte e Blocobmp. Para uma explicao dos argumentos, veja Usando Cores. vetor_da_cor: (LISTA) Lista dos trs primeiros inteiros que representam as intensidades Vermelho, Verde e Azul, cada um variando de 0 a 255. Exemplo:

tat repita 4 [pf 100 pd 90] pd 45 un pf 20 mudecp [0 255 0] pinte tat repita 4 [pf 100 pd 90] pd 45 un pf 20 mudecp [125 125 125] pinte

Mudecf mudecf vetor_da_cor Define a cor do fundo como vetor_da_cor. O vetor_da_cor uma lista de intensidades [vermelho verde azul]. A cor da tela define imediatamente a cor de segundo plano. Para uma explicao dos argumentos, veja Usando Cores. vetor_da_cor: (LISTA) Lista dos trs inteiros que representam as intensidades Vermelho, Verde e Azul, cada um variando de 0 a 255. Exemplo: mudecf [0 0 0] mudecf [255 255 255] repita 4 [pf 100 pd 90]

Mudeespessuradolpis mudeespessuradolpis espessura A espessura uma lista de dois nmeros, largura e altura. O SuperLogo usa somente a largura deles. Portanto basta estabelecer o mesmo valor para ambos.

Exemplo:

mudeespessuradolpis [5 5]

Mudelpis mudelpis lista (procedimento de biblioteca) Define a posio e o modo do lpis de acordo com a informao na lista de entrada, que pode ser tirada de uma invocao anterior de Lpis. lista: (LISTA) Uma lista representando o lpis como segue [uselpis modotrao espessurtadolpis cl uselpis]. Exemplo: tat repita 4 [pf 100 pd 90] atribua "meu_lpis lpis mudeespessuradolpis [20 20] tat repita 4 [pf 100 pd 90] mudelpis :meu_lpis tat repita 4 [pf 100 pd 90] Limpepaleta limpepaleta Este comando limpa a paleta de cores. A paleta de cores preenchida usando-se os comandos Mudecl, Mudecf e Mudecp. A paleta suportada somente quando as janelas esto no modo de 256 cores (veja Usando cores). Depois que voc esgotar a janela de cores, ir escolher a combinao mais prxima. Por exemplo, se o comando: repita 256 [mudecl (lista contevezes 0 0)] relatado, ele pode preencher a paleta com 256 sombras de vermelho. Neste momento, a paleta pode estar cheia. Se voc agora queria 256 sombras de verde, elas podero no estar disponveis (e combinadas com vermelho). Para que elas estejam disponveis, voc deve abrir mo das 256 sombras de vermelho. Voc pode fazer isso "limpando a paleta". Se voc deseja um amplo leque de cores, ento selecione na paleta. Por exemplo, o cdigo a seguir poderia lhe oferecer 216 cores, cobrindo uma ampla variedade. Uma vez as poucas cores, esquerda na paleta, so usadas, as janelas tero algo ressonante

para combinar com as solicitaes (ao contrrio do exemplo acima, no qual somente as sombras dos vermelhos so combinadas). repita 6 [ atribua "vermelho contevezes*40~ repita 6 [atribua "verde contevezes*40~ repita 6 [atribua "azul contevezes*40~ mudecl (lista :vermelho :verde :azul)]~ ]~ ] Lembre-se tambm de que carregar arquivos .BMP (Carreguebitmap) utiliza cores da paleta. Que mais uma vez pode ser limpo com o comando limpepaleta. Limpar a tela NO limpa a paleta. Exemplo: repita 256 [mudecl (lista contevezes 0 0)] estado semestado limpepaleta estado semestado Operaes para lpis uselpis Modotrao Cl Cp Cf Espessuradolpis Lpis uselpis uselpis euselapis Retorna verd se o lpis est ativado e falso caso contrrio. Exemplo:

tat pf 50 mostre uselpis verd usenada pf 50 mostre uselpis falso

Modotrao modotrao mt Retorna uma das palavras: lpis, borracha ou inversor de acordo como a tartaruga est operando. Exemplo: uselpis mostre modotrao lpis useborracha mostre modotrao borracha useinversor mostre modotrao inversor

Cl cl

(procedimento de biblioteca)

Retorna a cor do lpis em uma lista que contm a combinao das tonalidades anteriormente especificadas.

Exemplo: mudecl [100 200 50] mostre cordolpis [100 200 50]

Cp cp

(procedimento de biblioteca)

Retorna a cor de preenchimento em uma lista que contm a combinao das tonalidades anteriormente especificadas. Exemplo: mudecp [100 200 50] mostre cordepreenchimento [100 200 50]

Cf cf

(procedimento de biblioteca)

Retorna a cor do fundo da tela em uma lista que contm a combinao das tonalidades anteriormente especificadas. Exemplo: mudecf [100 200 50] mostre cordofundo [100 200 50]

Espessuradolpis espessuradolpis espl Retorna o tamanho do lpis em uma lista que contm largura e

comprimento. Observao: a largura no usada no SuperLogo. Exemplo: mudeel [20 20] pf 100 mostre espessuradolpis [20 20] mudeel [1 1] pf 100 mostre espessuradolpis [1 1]

Lpis Lpis

(procedimento de biblioteca)

Retorna uma lista contendo a posio, modo e caractersticas do lpis para ser usado por Mudelpis. Exemplo: tat repita 4 [pf 100 pd 90] un pd 90 pf 200 pe 90 ul atribua "x lpis mudeespessuradolpis [20 20] repita 4 [pf 100 pd 90] un pd 90 pf 200 pe 90 ul mudelpis :x repita 4 [pf 100 pd 90]

GERENCIADOR DA REA DE TRABALHO Definio de procedimento

Definio de variveis Listas de propriedades Predicados (rea de trabalho) Operaes (rea de trabalho) Inspeo Controle de rea de trabalho Definio de procedimento Aprenda Fim Defina Texto Todotexto Copie

Aprenda aprenda nome_proc :parmetro1 :parmetro2 ... Comando que prepara o Logo para aceitar uma definio de procedimento. O procedimento ser chamado nome_proc e no precisa ser exatamente um procedimento com esse nome. Os parmetros sero chamadas parmetro1, parmetro2 etc. permitido qualquer nmero de entradas, incluindo nenhuma. Os nomes dos procedimentos e entradas respeitam letras maisculas e minsculas. As entradas podem ser zero ou mais entradas opcionais, representada pela seguinte notao: [:nomedaentrada padro.valor.expresso] Exemplo: aprenda proced :lista_ent [:valor_inicial primeiro :lista_ent] Se o procedimento invocado por proced [a b c] ento o parmero :lista_ent ter o valor [A B C] e o parmetro :valor_inicial ter o valor A. Se o procedimento invocado por

(proced [a b c] "x) ento :lista_ent ter o valor [A B C] e :valor_inicial ter o valor X.

O nmero de entradas PADRO para um procedimento, que o nmero de entradas que ser aceito se sua invocao no for feita entre parnteses, geralmente igual ao nmero mnimo. Se voc quiser um nmero padro diferente, pode indic-lo fornecendo o valor padro desejado como o ltimo contedo na linha APRENDA. Exemplo: aprenda proced :in1 [:in2 "onoono] [:in3] 3 Este procedimento possui um nmero mnimo de entradas, trs entradas padro e um mximo definido como infinito. O Logo responde ao comando APRENDA acessando o modo de definio de procedimento. A exibio dos caracteres muda de "?" para ">" (surge uma caixa de dilogo do SuperLogo) e quaisquer instrues que voc digitar torna-se parte da definio at que voc digite uma linha contendo apenas a palavra Fim. Exemplo: aprenda ecoe :vezes :objeto repita :vezes [esc :thing] fim ecoe 2 "Ol Ol Ol ecoe 3 "At logo At logo At logo At logo Fim fim

No se trata realmente de um comando. Finaliza a definio de um procedimento. Veja tambm Aprenda. Exemplo: aprenda casa esc "casa fim

Defina defina nome lista Define um procedimento com nome e um texto com lista. Se j existe um procedimento com nome, esta nova definio substitui a anterior. Em lista deve ser definida uma lista cujos elementos so sublistas. O primeiro elemento deve ser uma sublista de parmetros, ou seja, palavras para os nomes dos parmetros requeridos. As demais sublistas devero ser parte do corpo do procedimento onde cada sublista uma linha do corpo do procedimento. (No h nenhuma linha Fim na entrada de texto.)

Exemplo: defina "tarefa [[a b][escreva :a][escreva :b]] tarefa "msica "dana msica dana

Texto texto nome Retorna a listagem do procedimento nome na forma esperada por Defina: uma lista de listas, onde a primeira sublista o nome do procedimento e o resto so sublistas do corpo do procedimento. O comando texto no retorna informaes dos formatos usados quando o procedimento foi definido, tal como linhas de continuao e espaos extras. Exemplo:

defina "tarefa [[a b][escreva :a][escreva :b] tarefa "msica "dana msica dana mostre texto "tarefa [[a b][escreva :a][escreva :b]]

Copie copie nomenovo nomeantigo Comando que torna nomenovo um procedimento idntico a nomeantigo. O ltimo pode ser uma primitiva. Caso nomenovo j tenha sido definido, sua definio anterior perdida. Se nomenovo j era uma primitiva. As definies criadas por Copie no so salvas por Salve; as primitivas nunca so salvas, e os procedimentos definidos pelo usurio criados por Copie so abandonados. Nota: dialetos do Logo diferem quanto ordem de parmetros para Copie. Esse dialeto usa "ordem Atribua" e no "ordem Coloque."

Exemplo: aprenda Bem-vindo escreva "Ol fim Bem-vindo Ol copie "digaol "Bem-vindo digaol Ol

Definio de variveis

Atribua Coloque Local Contedo

Atribua atribua atr

palavra objeto palavra objeto

Define uma varivel designada por palavra e com contedo objeto. Os nomes de variveis respeitam maisculas e minsculas. Caso j exista uma varivel com o mesmo nomo, seu valor alterado. Se no existir, criada uma nova varivel global.

Exemplo: atr "co [boxer pastor] mostre :co [boxer pastor] atr "nome "carmen esc :nome carmen

Coloque coloque col

objeto palavra objeto palavra

Define uma varivel denominada por palavra com contedo objeto. Esse comando anlogo primitiva Atribua. Os nomes de variveis respeitam maisculas e minsculas. Caso j exista uma varivel com o mesmo nomo, seu valor alterado. Se no existir, criada uma nova varivel global. o mesmo que Atribua, mas com os parmetros em ordem invertida. Exemplo:

coloque "teresa "nome col [azul branco verde ] "cores esc :nome teresa mostre :cores [azul branco verde]

Local local palavra (local palavra1 palavra2...) Aceita como parmetro uma ou mais palavras, ou uma lista de palavras. Uma varivel criada para cada uma dessas palavras, com a prpria palavra como nome. As variveis so locais para o procedimento correntemente executado; uma varivel que local para um procedimento vlida para qualquer subprocedimento invocado por este procedimento. As variveis criadas por Local no tem valor inicial; deve-se atribuir a elas um valor (usando Atribua) antes que o procedimento faa uma tentativa de ler seus valores. Exemplo: aprenda inicia atribua "contador 1 escreva :contador fim inicia 1 mostre :contador 1 aprenda inicia2 local "soma atribua "soma 10 escreva :soma

fim inicia2 10 mostre :soma =>soma no tem valor

Contedo contedo nomevarivel Retorna o valor da varivel cujo nome um parmetro. Se h mais de uma varivel, escolhida a varivel mais interna daquele nome.

Exemplo: atribua "frase [Ol como voc vai] mostre contedo "frase [Ol como voc vai] mostre :frase [Ol como voc vai]

Lista de propriedades Observao: os nomes de listas de propriedade sempre diferenciam caracteres maisculos e minsculos. Coloqueprop coloqueprop palavra1 palavra2 objeto Adiciona uma propriedade para a lista de propriedades definida em palavra1 com o nome definido em palavra2 e contedo definido em nmero. Exemplo: coloqueprop "lista1 "p1 1 coloqueprop "lista1 "p2 2 coloqueprop "lista2 "p1 [texto 3]

coloqueprop "lista2 "p2 20 mostre prop "lista1 "p2 2 mostre prop "lista1 "p1 1 mostre prop "lista2 "p1 [texto 3] mostre prop "lista2 "p2 20

Propriedade propriedade palavra1 palavra2 prop palavra1 palavra2 Retorna o valor da propriedade palavra2 na lista de propriedades palavra1, ou uma lista vazia caso no exista tal propriedade. Exemplo: coloqueprop "lista1 "p1 1 coloqueprop "lista1 "p2 2 coloqueprop "lista2 "p1 [texto 3] coloqueprop "lista2 "p2 20 mostre prop "lista1 "p2 2 mostre prop "lista1 "p1 1 mostre prop "lista2 "p1 [texto 3] mostre prop "lista2 "p2 20 Retireprop

retireprop palavra1 palavra2 Remove a propriedade palavra2 da lista de propriedades palavra1. Exemplo: coloqueprop "lista1 "p1 1 coloqueprop "lista1 "p2 2 mostre listaprop "lista1 [p2 2 p1 1] retireprop "lista1 "p1 mostre listaprop "lista1 [p2 2]

Listaprop listaprop palavra Retorna uma lista cujos elementos mpares so nomes e os elementos pares so valores da lista de propriedades palavra. Exemplo: coloqueprop "lista1 "p1 1 coloqueprop "lista1 "p2 2 mostre listaprop "lista1 [p1 1 p2 2]

Predicados (rea de trabalho) procedimento primitiva definido nome macro procedimento procedimento objeto eprocedimento objeto

Retorna a palavra verd sempre que o objeto for um procedimento na rea de trabalho. Caso contrrio, retorna a palavra falso. Exemplo: Aprenda casa Pf 100 pd 90 Pe 50 pf 100 ... fim esc procedimento "casa verd (caso a rea de trabalho contenha um procedimento denominado casa)

primitiva primitiva eprimitiva

objeto objeto

Retorna verdadeiro sempre que o objeto for uma primitiva LOGO. Caso contrrio, retorna a palavra falso. Exemplo: esc primitiva "espere verd coloque "tat "apelido esc eprimitiva :apelido verd esc eprimitiva 6 falso

definido definido edefinido

objeto objeto

Retorna verdadeiro se objeto for um procedimento definido pelo usurio por

meio do comando defina. Exemplo: defina "abc [[a b][esc :a][esc :b]] mostre definido "cab falso mostre definido "abc verd nome nome objeto Retorna verdeiro se a entrada definida em objeto for o nome de uma varivel. Caso contrrio, retorna falso. Exemplo: coloque [Henrique] "pessoa esc nome "pessoa verd defina "abc [[a b] [esc :a] [esc :b]] esc nome "abc falso

macro MACRO nome Emite VERDADEIRO se a entrada for o nome de uma macro definida pelo usurio, incluindo uma macro de biblioteca. (Mas o Logo no tem conhecimento de uma macro de biblioteca at que o procedimento seja invocado.) verdade:(BOOLEANO) Verdade se o nome for uma macro definida. nome:(PALAVRA) Nome da macro definida a seer testada. Exemplo:

mostre macro "abc falso .defmacro "abc [[a b] [escreva :a] [escreva :b]] mostre macro "abc verdadeiro

Operaes (rea de trabalho) Desenterrados Enterrados Procedimentos Nomes Listaprops Listanomes Listalistaprops

Desenterrados desenterrados Retorna uma lista com trs sublistas contendo os nomes de procedimentos, variveis e listas de propriedades respectivamente. Esta lista inclui todos os tens desenterrados que esto na rea de trabalho. As variveis e propriedades podem no estar visveis no Editor de comandos Exemplo: eltudo aprenda processo fim atribua "nome1 1 coloqueprop "propriedade1 "p1 1 mostre desenterrados [[processo][nome1][propriedade1]]

Enterrados

enterrados Retorna uma lista com trs sublistas contendo os nomes de procedimentos, variveis e listas de propriedades respectivamente. Esta lista inclui todos os tens enterrados que esto na rea de trabalho. Exemplo: mots mostre enterrados [[ mots ] [] []]

Procedimentos procedimentos procs Retorna uma lista com os nomes de todos os procedimentos desenterrados e definidos pelo usurio que esto na rea de trabalho. Note que isto uma lista de nomes, no uma lista de contedo. Portanto pode-se usar esta lista como parmetros passados para um procedimento. Exemplo: eltudo aprenda rotina fim aprenda programa fim mostre procedimentos [programa rotina]

Nomes nomes Retorna uma lista que contm a primeira sublista vazia (sem nenhum nome de

procedimento), seguida de uma sublista de todos os nomes de variveis que esto na rea de trabalho. Exemplo: eltudo atribua "nota2 20 atribua "nota1 10 mostre nomes [[][nota1 nota2]]

Listaprops listaprops Retorna uma lista que contm duas sublistas vazias (sem indicar procedimentos e/ou variveis) seguida de uma sublista de todas as listas de propriedades desenterradas que esto na rea de trabalho. Exemplo: coloqueprop "lista1 "p1 1 mostre listaprops [[][][lista1]]

Listanomes listanomes lnomes

objeto objeto

Retorna uma lista que contm a primeira sublista vazia seguida de uma sublista com o(s) nome(s) na ordem de entrada. Isto til em conjunto com procedimentos de controle da rea de trabalho que requerem uma lista de nomes como entrada. Exemplo: mostre listanomes [nota2 nota1] [[][nota2 nota1]]

Listalistaprops listalistaprops llistaprops

objeto objeto

Retorna uma lista que contm duas sublistas vazias seguidas por uma sublista com o(s) nome(s) definidos como entrada. Isto til em conjunto com procedimentos de controle da rea de trabalho que requerem uma lista de listas de procedimentos como entrada. Exemplo: mostre listalistaprops [gato vaca] [[][][gato vaca]]

Inspeo Motudo Mops Mons Molprops Mon Molprop Mostrettulos Mot

Motudo Motudo (procedimento de biblioteca) Exibe na tela todas as definies que esto na rea de trabalho. A definies so mostradas em uma lista contendo 3 sublistas que indicam os procedimentos, variveis e propriedades. Exemplo: eltudo aprenda semana1 escreva "segunda

fim atribua a 0 motudo [[semana1] [a] [] ]

Mops Mops (procedimento de biblioteca) Exibe o corpo de todos os procedimentos desenterrados que esto na rea de trabalho. Exemplo: eltudo aprenda semana2 escreva "tera fim mops aprenda semana2 escreva tera fim

Mons Mons (procedimento de biblioteca) Exibe uma lista com duas sublistas com a primeira sublista vazia e a segunda contendo os nomes das variveis que est na rea de trabalho.

Exemplo: atribua "nota3 3 mons [ [ ] [nota3] ]

Molprops Molprops (procedimento de biblioteca) Exibe uma lista com trs sublistas com as duas primeiras sublistas vazias, e a terceira contendo os nomes das propriedades desenterras. Exemplo: coloqueprop "lista3 "p3 3 molprops [ [ ] [ ] [lista3] ]

Mon Mon objeto (procedimento de biblioteca) Exibe uma lista com duas sublistas sendo a primeira vazia e a segunda formada por objeto Objeto pode ser uma lista ou uma palavra. Exemplo: atribua "nota1 10 atribua "nota2 20 mon [nota1 nota2] [ [ ] [nota1 nota2] ] mon lista nota1 nota2 [ [ ] [10 20] ]

Molprop molprop objeto (procedimento de biblioteca) Exibe na tela a(s) definio(es) da(s) lista(s) de propriedade(s) especificada(s) em objeto, o qual pode ser uma lista ou uma palavra. Exemplo: coloqueprop "lista1 "p1 1 molprop [lista1] [ [ ] [ ] [lista1] ]

Mostrettulos mostrettulos mots Exibe na tela uma lista contendo os ttulos dos procedimentos desenterrados contidos na rea de trabalho. Exemplo: eltudo aprenda curso fim aprenda novo fim mostrettulos [curso novo] mots [curso novo]

Mot Mot objeto (procedimentos de biblioteca) Exibe o corpo do procedimento especificado em objeto. Exemplo: eltudo aprenda curso1 fim mot curso1 aprenda curso1 fim

Controle de rea de trabalho Elimine Eltudo Enterre Enterretudo Enterrenome Desenterre Destudo Desnome Rastreie Norastreie Passoapasso Nopassoapasso Edite Edtudo Edps Edns Edlprops Edm Edlprop Salve Salvelista Carregue Semestado Estado Elimine elimine el

objeto objeto

Elimina da rea de trabalho o procedimento especificado em objeto, o qual pode ser um nome ou uma lista. Exemplo: eltudo aprenda quadrado fim aprenda janela fim

mops [janela quadrado] elimine [janela] mops [ quadrado]

Eltudo Eltudo (procedimento de biblioteca) Elimina todos os procedimentos, variveis ou propriedades definidas na rea de trabalho. Exemplo: eltudo aprenda janela fim aprenda bola fim Atribua x 0 mops [bola janela] mo :x 0 eltudo mops mo :x

Enterre enterre objeto Enterra os procedimentos, variveis e listas de propriedade definidos em objeto. Um item enterrado no includo nas listas de retorno Contedos, Procedimentos, Variveis e Listas de propriedades, mas includo na lista de

retorno enterrados. Portanto, itens enterrados no so impressos por Motudo ou gravados por Salve. Portanto cuidado ao enterrar procedimentos, eles podero ser perdidos no momento em que voc deixar o programa. Exemplo: aprenda tempo escreva [o dia est ensolarado] fim aprenda semana escreva [domingo dia de festa] fim mots aprenda semana aprenda tempo enterre "tempo mots aprenda semana tempo o dia est ensolarado

Enterretudo Enterretudo (procedimento de biblioteca) Enterra todos os procedimentos, variveis e listas de propriedades definidos na rea de trabalho. Exemplo: eltudo aprenda casa escreva [A casa amarela] fim

aprenda escola escreva [A escola verde] fim mots aprenda casa aprenda escola enterretudo mots casa A casa amarela escola A escola verde

Enterrenome enterrenome objeto Enterra a varivel definida em objeto. Exemplo: atribua "x 10 atribua "y 20 mons [ [ ] [x y] ] enterrenome [x] mons [ [ ] [y] ] mostre :x 10 mostre :y

20

Desenterre desenterre lista des lista Desenterra os procedimentos, variveis e listas de propriedade especificadas em lista. Isso implica que os tens especificados voltaro a ser vistos em Contedo, etc. Observao: o parmetro lista formado de sublistas onde a primeira sublista representa procedimentos; a segunda sublista representa variveis e a terceira sublista representa lista de propriedade. Exemplo: eltudo atribua "nota1 10 atribua "nota2 20 mons [ [ ] [nota1 nota2] ] enterrenome "nota1 mons [ [ ] [nota2] ] des [[][nota1][]] mons [ [ ] [nota1 nota2] ]

Destudo destudo Desenterra todos os procedimentos, variveis e listas de propriedades que foram enterradas. Exemplo:

eltudo atribua "Carlos 10 atribua "Paulo 20 mons [ [ ] [Carlos Paulo] ] enterrenome "Carlos mons [ [ ] [Paulo] ] destudo mons [ [ ] [Carlos Paulo] ]

Desnome desnome objeto Desenterra todos os nomes (variveis) especificadas em objeto que foram enterradas por meio do comando Enterrenome. Exemplo: eltudo atribua "meninas 10 atribua "meninos 12 mons [ [ ] [meninas meninos] ] enterrenome [meninas] mons [ [ ] [meninos] ] desnome [meninas] mons [ [ ] [meninas meninos] ]

Rastreie rastreie objeto Verificar tambm o comando NoRastreie Marca os itens especificados para rastrear. Sempre que um procedimento rastreado uma mensagem impressa, dando os valores atuais de entrada. Existe no menu do Logo na opo Modos de execuo um item denominado rastrear que quando est marcado, produz o mesmo efeito do comando Rastreie. Exemplo: aprenda meuprog :a escreva :a fim meuprog "saldo saldo rastreie "meuprog meuprog "saldo (meuprog "saldo) saldo meuprog terminou norastreie "meuprog meuprog "saldo saldo

Norastreie norastreie objeto Desliga o rastreamento para os objetos especificados. Veja tambm o comando Rastreie e opo rastrear no item Modo de execuo no menu do Logo

Exemplo: aprenda rotina :a escreva :a fim rotina "saldo saldo rastreie "rotina rotina "saldo retorna mensagem: (rotina "saldo) saldo norastreie "rotina rotina "saldo saldo

Passoapasso PASSOAPASSO objeto Comando que marca os items nomeados para as etapas do passo a passo. Sempre que um procedimento passo a passo invocado, cada linha de instruo do corpo do procedimento escrita antes de ser executada, e o Logo aguarda at que o usurio clique no boto Ok. Exemplo: aprenda meuprog pf 10 pd 90 pf 20 pe 90 end meuprog passoapasso "meuprog <Cada linha de meuprog ser exibida e aguardar pelo OK para passar prxima linha> meuprog

nopassoapasso "meuprog meuprog Nopassoapasso nopassoapasso objeto Desliga passoapasso para os objetos especificados. Veja tambm Passoapasso e a opo Passo a Passo no menu Modo de execuo Exemplo: aprenda roti pf 50 pd 90 pt 50 pe 90 fim roti passoapasso "roti => cada linha a ser executada ser mostrada e aguardar pelo <Ok> para executar a prxima linha. roti nopassoapasso "roti roti

Edite edite objeto ed objeto Edita a definio do objeto especificado usando o editor do LOGO. Exemplo: aprenda quadra tat

repita 4 [pf 180 pd 190] fim quadra edite "quadra =>mude 190 por 90 e finalize edio quadra

Edtudo Edtudo (procedimento de biblioteca) Edita todo o contedo da rea de trabalho. Exemplo: aprenda desenho atribua "x "crculo tat repita 4 [pf 100 pd 90] pd 45 un pf 30 rotule :x ul fim desenho edtudo =>troque "crculo por "quadrado e finalize edio. desenho

Edps Edps (procedimento de biblioteca) edita todos os procedimentos da rea de trabalho. Exemplo: eltudo aprenda tempo escreva [dia de sol] fim

aprenda semana escreva "segunda fim tempo dia de sol semana segunda edps =>troque sol por chuva =>troque segunda por domingo =>finalize edio tempo dia de chuva semana domingo

Edns Edns (procedimento de biblioteca) Edita todos os nomes da rea de trabalho. Exemplo: aprenda tri tat repita 3 [pf 300 pd 120] pd 150 un pf 50 rotule :x ul fim atribua "x "quadrado tri edns =>mude quadrado por tringulo e finalize edio

tri

Edlprops Edlprops (procedimento de biblioteca) Edita todas as listas de propriedades da rea de trabalho. Edn edn objeto Edita o nome definido em objeto. Exemplo: aprenda cores escreva :cor fim atribua "cor "amarelo cores amarelo edn "cor =>mude amarelo por vermelho e finalize edio. cores vermelho

Edlprop edlprop objeto Edita a lista de propriedade definida em objeto. Salve salve nome-arquivo

Salva as definies de todos procedimentos, variveis e listas de propriedade no enterrados em nome-arquivo. Exemplo: eltudo aprenda aula escreva "matemtica fim aprenda esporte escreva "natao fim mots aprenda aula aprenda esporte salve "programas.lgo eltudo mostrettulos carregue "programas.lgo mostrettulos aprenda aula aprenda esporte

Salvelista salvelista lista nome-arquivo salvel lista nome-arquivo Salva em nome-arquivo as definies dos procedimentos, variveis e listas de propriedade de acordo com os parmetros lista. Esta lista contm 3 sublistas onde na primeira sublista so especificados os procedimentos, na segunda sublista so especificados as variveis e na terceira sublista so especificadas as listas de propriedades. Exemplo:

eltudo aprenda rotina1 escreva "primeiro fim aprenda rotina2 escreva "segundo fim mostrettulos aprenda rotina1 aprenda rotina2 salvel [[rotina1][][]] "rots.lgo eltudo mostrettulos carregue "rots.lgo mots aprenda rotina1 Carregue CARREGUE nome-arquivo Comando que l instrues a partir do arquivo nomeado e as executa. O arquivo pode ter definies de procedimento com Aprenda, e so aceitas mesmo que j exista um procedimento com o mesmo nome. Se o arquivo registra uma lista de valores para uma varivel chamada iniciar, ento essa lista executada como uma lista de instrues depois que o arquivo carregado. importante compreender que o arquivo executado, no copiado, no espao de trabalho: Se o Logo v um APRENDA, ento ele define o procedimento (o cdigo dentro da definio no executado). Se o Logo v um ATRIBUA, ele ir atribuir aquele nome. Se o Logo v que o cdigo est fora da definio de procedimento, ele ser executado na ordem de surgimento. Nome-arquivo:(PALAVRA) Nome do arquivo a ser carregado.

Exemplo: aprenda meuprog1 escreva "Ol1 fim aprenda meuprog2 escreva "Ol2 fim mostrettulos aprenda meuprog1 aprenda meuprog2 salve "meuprogs.lgo eltudo mostrettulos carregue "meuprogs.lgo mostrettulos aprenda meuprog1 aprenda meuprog2

Semestado SEMESTADO Este comando fecha a janela que exibe o estado da tartaruga. Veja tambm comando estado. Quando a janela de estado fechada com o mouse por meio do cone x, o efeito produzido o mesmo. Exemplo: estado semestado

Estado

ESTADO Este comando possui o mesmo efeito que o Boto Estado. Ou seja, ele exibe a janela de estado. Veja tambm o comando Semestado. Exemplo: estado semestado

ESTRUTURAS DE CONTROLE Comandos de controle Iterao baseada em modelo

Comandos de controle Faa Faaenvie Repita Contevezes Se Seno Teste Severd Sefalso Verdadeiro Falso Pare Envie Pegue Lance Erro Pausa Continue Multitarefa Monotarefa Verifiqueeventos

Mudecursorespera Termine Espere Ativetemporizador Desativetemporizador Sair .maybeoutput ignore ` (crase)

Faa faa lista Executa as instrues em LOGO contidas na lista. Haver retorno se a lista contm uma expresso que retorne. Exemplo: tat faa [esc "LOGO] LOGO faa [mostre pri "abc] a Faaenvie faaenvie lista Executa as instrues especificadas em lista devolvendo uma lista vazia se estas instrues no retornam nada ou uma lista cujo nico membro o resultado da lista de instrues contidas em lista. til para a inveno de estruturas de controle do tipo comando-ou-operao: Exemplo: atribua "conjunto [pri [1 2 3]] atribua "resposta faaenvie :conjunto mostre :resposta

[1]

Repita repita nmero lista Executa nmero vezes as instrues contidas em lista. Exemplo: tat repita 2 [esc "LOGO] LOGO LOGO repita 4 [repita 4 [pf 100 pd 90] pd 90] Desenha 4 quadrados Contevezes contevezes cv Esta operao pode ser usada apenas dentro do lao de um comando Repita. Retorna o nmero de repeties que foram efetuadas, incluindo o atual. Exemplo: repita 3 [esc (lista "este " "loop cv)] este loop 1 este loop 2 este loop 3

Se Se condio lista Comando ou operao em que: se a condio possui o valor VERDADEIRO, ento SE executa a lista Se a condio possui o valor FALSO, ento SE no faz nada. Caso seja fornecida um terceira entrada, SE age como Seno.

Usar SE causa erro se a primeira entrada (condio) no for um tipo booleano (VERDADEIRO nem FALSO) Para que haja compatibilidade com verses anteriores do Logo, se uma instruo SE no estiver entre parnteses, mas a primeira coisa na linha de instruo depois da segunda expresso de entrada uma lista literal (por exemplo, uma lista em colchetes), a instruo SE tratada como se ela fosse Seno, mas enviada uma mensagem de aviso. Se esta instruo aparecer no corpo do procedimento, a mensagem surge apenas na primeira vez em que o procedimento invocado em cada sesso do Logo. condio: (BOOLEANO) Expresso a ser testada para comprovao. lista: (LISTA) Lista das instrues do Logo a serem executadas se condio for VERDADEIRO. Exemplo: se 1=1 [escreva [Sim ele verdadeiro]] [escreva [No ele falso]] Sim ele verdadeiro se 1=0 [escreva [Sim ele verdadeiro]] [escreva [No ele falso]] No ele falso Exemplo 2: aprenda max :a :b envie (se :a > :b [:a] [:b]) fim mostre max 1 2 2 Seno SENO condio lista1 lista2 Comando ou operao em que, se a condio possui o valor VERADEIRO, ento SENO executa lista1. Se a primeira entrada possui o valor FALSO, ento SENO executa lista2. SENO envia um valor se a lista contm uma expresso que devolve um valor. condio:(BOOLEANO) Expresso a ser testada

lista1:(LISTA) Lista de instrues do Logo a serem executadas se condio for VERDADEIRO. lista2:(LISTA) Lista de instrues do Logo a serem executadas se condio for FALSO. Exemplo: seno 1=1 [escreva [Sim ele verdadeiro]] [escreva [No ele falso]] Sim ele verdadeiro seno 1=0 [escreva [Sim ele verdadeiro]] [escreva [No ele falso]] No ele falso Exemplo (onde seno envia um valor) aprenda max :a :b envie seno :a > :b [:a] [:b] fim mostre max 1 2 2 Teste teste predicado Avalia o predicado e armazena verd ou falso de acordo com o resultado do predicado. Este contedo armazenado poder ser usado posteriormente com os comandos Severd ou Sefalso. O uso deste comando teste local para o procedimento no qual est sendo usado portanto, qualquer correspondente Severd ou Sefalso deve ser usado no mesmo procedimento ou subprocedimento. Teste no tem utilidade quando executado a partir da janela de comandos. Exemplo: aprenda tarefa :entrada teste 1= :entrada escreva [avaliando a entrada...] severd [esc [A entrada o nmero um.]] sefalso [esc[A entrada no o nmero um.]] fim tarefa 1

avaliando a entrada... A entrada o nmero um. tarefa 2 avaliando a entrada... a entrada no o nmero um.

Severd severd lista Executa as instrues definidas em lista se a operao Teste executada mais recentemente retornou verd. Observao: o teste deve ter sido executado dentro do mesmo procedimento ou subprocedimento. Exemplo: eltudo aprenda tarefa :entrada teste 1= :entrada escreva [avaliando a entrada...] severd [esc [A entrada o nmero um.]] sefalso [esc[A entrada no o nmero um.]] fim tarefa 1 avaliando a entrada... A entrada o nmero um.

Sefalso sefalso lista Executa as instrues definidas em lista se a operao Teste executada mais recentemente retornou falso. Observao: o teste deve ter sido executado dentro do mesmo procedimento ou subprocedimento.

Exemplo: eltudo aprenda tarefa :entrada teste 1= :entrada escreva [avaliando a entrada...] severd [esc [A entrada o nmero um.]] sefalso [esc[A entrada no o nmero um.]] fim tarefa 0 avaliando a entrada... A entrada no o nmero um.

Verd Verd (formato especial) Palavra reservada que indica uma condio positiva. Exemplo: mostre 1=1 verd se "verd [esc [Verdadeiro sempre verdadeiro]] Verdadeiro sempre verdadeiro

Falso Falso (formato especial) Palavra reservada que indica uma condio negativa. Exemplo: mostre 1=0 falso

seno "falso [esc [Verdadeiro]][esc[Falso falso]] Falso falso

Pare pare Encerra a execuo do procedimento atual e transfere o controle da execuo para o procedimento que o chamou. S usado dentro de procedimentos. Exemplo: aprenda tri :x se :x = " [pare] esc :x tri sp :x fim tri "LOGO LOGO OGO GO O

Envie envie objeto Comando utilizado em procedimentos. O procedimento que contm a primitiva Envie produz como sada objeto, retornando o controle ao procedimento que o chamou. Comando que encerra a execuo do procedimento no qual ele aparece. Esse procedimento devolve um valor para o contexto no qual ele foi invocado. No confunda: ENVIE um comando, mas o procedimento que invoca ENVIE uma operao. Exemplo: aprenda rotina envie [teste de envie] fim

mostre rotina [teste de envie]

Pegue PEGUE nome lista Executa os comandos ou operaes definidos em lista e retorna o resultado da execuo desta lista. Se, enquanto executa a lista de instrues, uma operao Lance for executada com a palavra igual palavra do Lance, ento a execuo da lista de instrues ser interrompida e a operao Pegue devolve o valor obtido para lance. Se o nome a palavra Erro, ento qualquer condio de erro que surgir durante a execuo da lista de instruo possui o efeito de Lance Erro em vez de emitir uma mensagem de erro e retornar ao nvel superior. PEGUE no funciona caso seja detectado um erro. Alm disso, durante a execuo da lista de instruo, a varivel TRATAERRO no funciona temporariamente. (Se existir um erro enquanto Trataerro possui um valor, esse valor tomado como uma lista de instruo para ser executado depois da exibio da mensagem de erro. Normalmente o valor de Trataerro, se qualquer, a lista [Pausa].) nome:(PALAVRA) lista:(LISTA) proteo de PEGUE. Exemplo: aprenda meuprog2 escreva [Antes de lanar] lance "tag1 escreva [Ns nunca tivemos porque ns devolvemos] fim aprenda meuprog1 pegue "tag1 [meuprog2] escreva [Eu voltei] fim meuprog1 Antes de lanar Nome do tag a ser LANADO. Lista de instrues do Logo a ser executada sob a

Eu voltei

Lance lance palavra (lance palavra lista) Este comando deve ser usado junto com o comando Pegue e com a palavra igual palavra definida em Pegue. Caso lance for usado com apenas uma entrada, o Pegue no retornar nada. Se lance usado com duas entradas, a segunda fornecer um valor de retorno para Pegue. Lance "toplevel pode ser usado para finalizar todos os procedimentos em andamento, pausas interativas e retornar para o prompt de instrues de nvel superior. Tem o mesmo efeito de ^C (interrupo da execuo) ou clicar o boto parar do LOGO. Lance "erro pode ser usado para gerar uma condio de erro. Se o erro no for pego ser mostrada uma mensagem (lance erro) com uma indicao usual de onde o erro ocorreu. Se uma segunda entrada foi fornecida (aps o parmetro erro), esta segunda entrada ser usada como a mensagem de erro no lugar da mensagem padro. Alm disso (neste caso), a indicao do lugar do erro no ser a localizao de lance, mas sim a localizao da chamada do procedimento que tem o lance. Isso permite que procedimentos definidos pelo usurio gerem mensagens de erro como se fossem primitivas. Nota.: neste caso, o pegue erro correspondente, se existir, no retornar nada, j que a segunda entrada do lance no considerada um valor de retorno. Lance "sistema imediatamente abandona o LOGO, retornando ao sistema operacional, sem mostrar a mensagem usual e sem deletar nenhum arquivo temporrio do Editor. Exemplo: eltudo aprenda rotina2 escreva [Antes lance...] (lance "rot1 [Precisamos voltar...]) esc [nunca passamos aqui porque lance retornou...] fim aprenda rotina1

mostre pegue "rot1 [rotina2] escreva [Voltamos...] fim rotina1 Antes lance... [Precisamos voltar...] Voltamos...

Erro Erro lista Retorna a lista que descreve o erro obtido, se existir. Se no ocorreu nenhum erro desde o ltimo caso de erro, uma lista vazia ser retornada. A lista de erro contm quatro elementos: um inteiro, correspondente ao tipo de erro ocorrido, o texto da mensagem de erro, o nome do procedimento no qual o erro ocorreu e a linha de instruo em que o erro ocorreu. Exemplo: eltudo aprenda rotina pf 1000 fim ponhalimite pegue "erro [rotina] mostre erro [3[tartaruga fora dos limites]rotina[pf 1000]]

Pausa PAUSA Inicia uma pausa interativa. O sistema pedir ao usurio instrues por meio de um prompt. Na janela de comandos o usurio ver o procedimento que executou a pausa. Variveis locais daquele procedimento estaro disponveis durante a pausa. Pausa devolve algo se for finalizada por um Continue com parmetro.

Se a varivel Trataerro existir, e ocorrer uma condio de erro, os contedos dessa varivel so executados como uma lista de instruo. Normalmente Trataerro recebe o valor [Pausa] fornecendo uma pausa interativa na ocorrncia de um erro. Isso permite que o usurio verifique os valores das variveis no momento da ocorrncia do erro. Exemplo: tat eltudo aprenda rotina repita 80[pd 2 se 40=cv[pausa]] escreva [feito!] fim rotina => Modo Pausa (digite CONTINUE para sair) 80 => Modo Pausa (digite CONTINUE para sair) feito!

Continue continue continue co

valor valor

Finaliza a pausa interativa atual, retornando ao contexto de chamada de Pausa. Se for passado um parmetro, o valor usado como o resultado da Pausa; seno, Pausa no retorna nada. O comando continue pode ser usado sem seu parmetro padro. Exemplo: tat eltudo aprenda rotina repita 80[pd 2 se 40=cv[pausa]] escreva [feito!]

fim rotina => Modo Pausa (digite CONTINUE para sair) 80 => Modo Pausa (digite CONTINUE para sair) feito! aprenda rotina Esc Pausa fim rotina => Modo Pausa (digite CONTINUE para sair) => Continue Exemplo Exemplo

Multitarefa MULTITAREFA instrui o LOGO a deixar que outros programas utilizem o computador enquanto o Logo est sendo executado. MONOTAREFA instrui o LOGO a no permitir que outros programas usem o computador enquanto o Logo est sendo executado. O padro MULTITAREFA. Note que a prpria janela de comando como outro programa. Ou seja, se voc optar por Monotarefa, a janela de comando ir perder seu controle o que significa que o Boto Parar no funcionar at que seja configurado MUILTITAREFA, ou o Logo fica inativo novamente. A razo de existir o estado de monotarefa que o LOGO executa mais rapidamente se ele puder puder controlar sozinho o computador. Veja tambm o comando Monotarefa. Voc pode alcanar o melhor, ou ambos os mundos (de desempenho e multitarefa) fazendo (e entendo) o seguinte. Digamos que voc tenha muitos loops aninhados em seu cdigo. O loop mais interno aquele em que executada a maioria das tarefas. Porm no h nenhuma necessidade de executar no modo MULTITAREFA o loop mais interno. Exemplo:

Ns temos 3 casos: Caso 1 (Usurio em controle por 10.000 operaes, desempenho mais baixo): multitarefa repita 100 [repita 100 [ (trabalho a ser feito) ] ] Caso 2 (Sem o controle de 10.000 operaes, bom desempenho): monotarefa repita 100 [repita 100 [(trabalho a ser feito)]] Caso 3 (Usurio fora de controle por 100 operaes, ainda bom desempenho): repita 100[monotarefa ~ repita 100 [ (trabalho a ser feito)]~ multitarefa] Monotarefa MONOTAREFA MONOTAREFA solicita que o LOGO no permita que os programas utilizem o computador enquanto o LOGO estiver trabalhando. O padro MULTITAREFA. Veja tambm o comando Multitarefa. Exemplo: Veja o exemplo do comando Multitarefa.

Verifiqueeventos verifiqueeventos Tem executar duas vezes o comando Multitarefa. Ele basicamente verifica se existem eventos esperando para serem processados. Alguns comandos que permitem chamadas de retorno, rodam no estado monotarefa. Se o cdigo da chamada de retorno curto e rpido, no haver nenhum

problema, mas, se for longo, o usurio no ter controle durante esse perodo. Se o usurio espalhar as instrues, ele no perder o controle por um perodo to longo. Este comando pode ser usado como alternativa para colocar os comandos multitarefa e monotarefa para computar laos complexos e intensivos. Voc pode encapsular todo o procedimento dentro de um par monotarefa e multitarefa e ento, colocar verifiqueeventos de forma adequada no seu lao. Exemplo: ativemouse[repita 72 [repita 4 [pf 100 pd 90] pd 5]] [] [] [] [] <agora clique com o mouse na Tela do SuperLogo> <observe que enquanto ele est desenhando voc no pode INTERROMPLO, porque o mouse no responder> ativemouse [repita 72 [repita 4 [pf 100 pd 90] pd 5 verifiqueeventos]] [] [] [] [] <agora clique com o mouse na Tela do SuperLogo> <observe que enquanto ele est desenhando voc PODE INTERROMPLO>

Mudecursorespera mudecursorespera mce Muda o cursor para a forma de ampulheta. O objetivo indicar duas coisas: a operao que iniciou vai levar algum tempo, e durante esse tempo, o usurio no ter controle sobre o windows (monotarefa). Esta funo s funciona em monotarefa. Uma vez em multitarefa, o cursor apropriado ser usado no prximo evento envolvendo o cursor. Isto significa que voc deve chamar Monotarefa antes de cada Mudecursorespera. Se voc decidir usar Multitarefa momentaneamente, durante um clculo computacional, voc dever usar mudecursorespera novamente ou seja, o uso do mudecursorespera deve estar sempre entre dois comandos monotarefa. Exemplo: repita 100[monotarefa~

mudecursorespera~ repita 100 [(trabalho a ser feito)]~ mudecursorseta~ multitarefa] Termine TERMINE Similar a clicar o Boto Parar, mas sob o comando do LOGO. Exemplo: multitarefa repita 1000 [pf 100 pt 100 pd 1] =>clicar o boto parar parando... Espere ESPERE tempo Provoca uma pausa antes de executar o prximo comando. Essa pausa est sob o comando do LOGO. tempo:(INTEIRO) Tempo de espera adiado em 1/60 de segundo. Exemplo: Pf 100 espere 60 pd 90 Ativetemporizador ATIVETEMPORIZADOR id intervalo [chamada] Este comando ativa um temporizador identificado por id (1-31) para chamar os comandos logo em chamada a cada intervalo (em milisegundos) de tempo. Ele ser ativado a cada intervalo at que voc digite o comando DESATIVETEMPORIZADOR . Este comando te d um poder muito grande de programao, contudo ele pode gerar inmeros problemas se no for utilizado corretamente.

Voc pode desativar o temporizador a qualquer momento. Isto significa que voc pode at mesmo desativar o timer dentro de sua prpria chamada (isso causa uma nica execuo do temporizador). Voc tambm pode ativar um temporizador a qualquer momento, mesmo dentro de uma chamada. O comando PARAR vai desativar todos os timers que estiverem ativos. Voc deve ter certeza que voc consegue manipular os temporizadores (usar os comandos ATIVETEMPORIZADOR e DESATIVETEMPORIZADOR) antes que eles executem novamente (intervalo). Se isso no for feito, voc eventualmente provocar uma "Sobrecarga de Pilha" e o LOGO vai travar. Voc deve tambm se assegurar que o cdigo de chamada livre de erros. Caso contrrio, voc pode vir a gerar inmeras caixas de confirmao ("OK") e isso eventualmente provoca "Sobrecarga de Pilha". uma boa idia salvar seu cdigo frequentemente no disco quando estiver desenvolvendo programas que usam o temporizador. Mesmo que no tenha nenhum erro na chamada do temporizador, ele ainda pode vir a provocar erros pois interage diretamente com as rotinas de interrupo de tempo do Windows. Portanto, tenha cuidado. Voc pode "bloquear" todos os temporizadores de executarem (interroperem) qualquer cdigo, incluindo a chamada, utilizando o comando MONOTAREFA. Voc pode "restaurar" a execuo utilizando o comando MULTITAREFA. Bloqueios no causam a perda de execues do temporizador. Todos os eventos so empilhados e sero executados to logo o temporizador seja desbloqueado. Portanto, no bloqueie um temporizador por muito tempo. Cada temporizador pode ter chamadas diferente ou a mesma chamada. Exemplo: ativetemporizador 1 200 [mudecll (lista sorteienmero 256 sorteienmero 256 sorteienmero 256)] ;nota o SuperLogo voltou e o temporizador est executando (alterando o lpis randomicamente) repita 72 [repita 4 [pf 100 pd 90] pd 5] desativetemporizador 1

Desativetemporizador DESATIVETEMPORIZADOR id Este comando desativa o temporizador ATIVETEMPORIZADOR e identificado por id ativado por

id:(INTEIRO) Identificador do Temporizador (1-31) para desativar. Exemplo: ativetemporizador 1 200 [mudecl (lista sortnum 256 sortnum 256 sortnum 256)] ;note que a cada execuo do temporizador o SLogoW muda randomicamente a cor do lpis repita 72 [repita 4 [pf 100 pd 90] pd 5] desativetemporizador 1

Sair sair Sai do LOGO, retornando para o sistema operacional. Caso o trabalho no esteja salvo ou tenha sofrido alguma alterao, uma caixa de confirmao ser exibida. Exemplo: sair

.Maybeoutput .MAYBEOUTPUT valor

(formulrio especial)

Funciona como Envie, exceto pelo fato de que a expresso que fornece o valor de entrada pode no fornecer um valor, neste caso, o efeito semelhante a Pare. Recomendado para uso em definies de estruturas de controle, para os casos em que voc no sabe se alguma expresso gera valor. valor:(CONTEDO) Qualquer contedo do Logo que possa gerar sada.

Exemplo: Aprenda chamada :funo [:entradas] 2 .maybeoutput aplique :funo :entradas fim (chamada "escreva "a "b "c) abc escreva (chamada "palavra "a "b "c) abc Uma alternativa a Faaenvie. mais fcil e rpido de usar, pelo fato de criar uma exceo s regras de avaliao do Logo. (Em princpio, ele deveria ser um erro se a expresso que deveria fornecer uma entrada a algo no tivesse um valor.)

Ignore ignore objeto No executa nada, usado quando uma expresso calculada para um efeito colateral e seu valor atual no importante. Exemplo: eltudo aprenda programa :entrada escreva :entrada envie nel :entrada fim programa "testando testando no me disse o que fazer com 8 em programa ignore programa "testando testando

` (crase) ` lista (procedimento de biblioteca)

Retorna uma lista a partir da lista de entrada, efetuando algumas substituies. Se um membro da lista de entrada a palavra ","(vrgula) ento o membro seguinte deve ser uma lista de instrues que produz uma sada quando executada. Este valor de sada substitui a vrgula e a lista de instrues. Se um membro da lista de entrada a palavra ",@" (vrgula, arroba) ento o membro seguinte deve ser uma lista de instrues que devolve uma lista quando executada. Os membros dessa lista substituiro a ,@ e a lista de instrues. Exemplo mos `[nota1 nota2 ,[sp[10 20 30]]nota ,@[sp[1 2 3 ]]] [nota1 nota2 [20 30] nota 2 3]

Para para lista1 lista2 A primeira entrada lista1 deve ser uma lista contendo 3 ou 4 membros: (1) uma palavra que ser usada como o nome de uma varivel local; (2) uma palavra ou lista que ser calculada por um Faa para determinar um nmero que representa o valor inicial da varivel; (3) uma palavra ou lista que ser calculada para determinar um nmero que representa o valor limite da varivel; (4) uma palavra ou lista opcional que ser calculada para determinar o intervalo de contagem. Se o quarto elemento estiver faltando, o valor assumido ser 1 ou -1, dependendo se o valor inicial for menor ou maior que o final. A segunda entrada, lista2, uma lista de instrues. O comando para executar essa lista repetidamente, associando, a cada vez, um novo valor varivel de controle. Primeiramente, o valor inicial associado varivel de controle, e esse valor comparado com o valor limite. Para estar completo quando o sinal de sua varivel de controle for igual ao sinal do intervalo de contagem. (se nenhum intervalo de contagem for especificado, a lista de instrues executada ao menos uma vez. Um intervalo de contagem especificado pode fazer com que nada seja executado). Em condies normais, a lista executada e o valor do intervalo de contagem adicionado varivel de controle e retornado ao passo da comparao. Exemplo: para [i 2 7 1.5] [escreva :i] 2 3.5

5 6.5

Faaenquanto faaenquanto lista1 listai2 Executa repetidamente as instrues de lista1 enquanto o resultado de lista2 for verdadeiro. O comando executa primeiro a lista1 e depois verifica o resultado de lista2, portanto, pelo menos uma vez a lista1 ser executada. A lista2 deve ser uma lista de expresses cujo retorno deve ser verdadeiro ou falso. Exemplo: atribua "i 0 faaenquanto [atribua "i :i+1 escreva :i][:i<3] 1 2 3

Enquanto enquanto lista1 lista2 Executa repetidamente as instrues de lista2 enquanto o resultado de lista1 for verdadeiro. O comando verifica primeiro o resultado de lista1, portanto as instrues de lista2 podero no ser executadas. A lista1 deve ser uma lista de expresses cujo retorno deve ser verdadeiro ou falso. Exemplo: atribua "i 0 enquanto [:i<3][atribua "i :i+1 escreva :i] 1 2 3

Faaat faaat lista1 lista2

Executa repetidamente as instrues de lista1 enquanto o resultado de lista2 for falso. O comando executa primeiro a lista1 e depois verifica o resultado de lista2, portanto, as instrues de lista1 sero executadas pelo menos uma vez. A lista2 deve ser uma lista de expresses cujo retorno deve ser verdadeiro ou falso. Exemplo: atribua "i 0 faaat [atribua "i :i+1 escreva :i][:i>3] 1 2 3 4

Atque atque lista1 lista2 Executa repetidamente as instrues de lista2 enquanto o resultado de lista1 for falso. O comando verifica primeiro o resultado de lista1, portanto, as instrues de lista2 podero no ser executadas. A lista1 deve ser uma lista de expresses cujo retorno deve ser verdadeiro ou falso. Exemplo: atribua "i 0 atque [:i>3] [atribua "i :i+1 escreva :i] 1 2 3 4

Iterao baseada em modelo Os procedimentos nesta seo so ferramentas de iterao baseadas na idia de um "modelo". Uma generalizao de uma lista de instruo ou uma lista de expresso na qual os "slots" so fornecidos para a ferramenta para inserir dados variados. Podem ser usados diferentes formatos do modelo.

O formato mais comumente usado para um modelo o "explicit-slot", ou o "ponto de interrogao". Exemplo: mostre mapeie [? * ?] [2 3 4 5] [4 9 16 25] Neste exemplo, a ferramenta MAPEIE avaliou o modelo [? * ?] repetidamente, com cada um dos membros da lista de dados [2 3 4 5] substitudo por pontos de interrogao. O mesmo valor foi usado para cada ponto de interrogao em uma determinada avaliao. Algumas ferramentas permitem que mais de um elemento seja substitudo em paralelo; nesses casos os slots so identificados por ?1 para o primeiro elemento, ?2 para o segundo e assim por diante. Exemplo: mostre (mapeie [(palavra ?1 ?2 ?1)] [a b c] [d e f]) [ada beb cfc] Se o modelo deseja computar o nmero do elemento, o formulrio (? 1) equivalente a ?1, logo (? ?1) significa o elemento cujo nmero fornecido em elemento nmero 1. Algumas ferramentas permitem designaes de slots adicionais, como mostrado nas descries individuais. A segunda forma do modelo o "procedimento nomeado". Se o modelo uma palavra, em vez de uma lista, ela tomada como o nome de um procedimento. Esse procedimento precisa aceitar um nmero de entradas igual ao nmero de slots de dados paralelos fornecido pela ferramenta; o procedimento aplicado a todos os dados disponveis. Ou seja, se os dados de ?1 a ?3 estiverem disponveis, o modelo "PROC equivalente a [PROC ?1 ?2 ?3]. Exemplo: mostre (mapeie "palavra [a b c] [d e f]) [ad be cf] aprenda prod_esc :a :b; produto escalar a e b devem ser listas numricas

envie aplique "soma (Mapeie "produto :a :b) fim A terceira forma do modelo chamada "named-slot" ou forma "lambda". Esta forma indicada por uma lista de modelos contendo mais de um elemento, cujo primeiro elemento a prpria lista. O primeiro elemento tirado como uma lista de nomes; variveis locais so criadas com esses nomes e fornecidos os dados disponveis como seus valores. O nmero de nomes precisa ser igual ao nmero de dados disponveis. Esta forma requerida princiapalmente quando uma ferramenta de iterao precisa ser usada dentro da lista de modelos de outra, e a notao ? pode ser ambgua no modelo mais interno. Essas ferramentas de iterao so verses extendidas daquelas do Apndice B do livro Computer Science Logo Style, Volume 3: Advanced Topics by Brian Harvey [MIT Press, 1987]. As extenses so feitas primariamente para permitir nmeros de variveis de entradas. Aplique Invoque Paracada Mapeie Mapeie.se Filtro Busque Reduza Mapeiecruzado Cascata Cascata.2 Transfira Geraintseq Geraracseq Aplique APLIQUE modelo lista Comando ou operao que executa o modelo, preenchendo seus parmetros com os membros da lista de entrada. O nmero de membros na lista de entrada precisa ser um nmero aceitvel de parmetros para o modelo.

ilegal aplicar a primitiva Aprenda como um modelo, mas qualquer outra permitida. modelo:(PALAVRA) Modelo a ser aplicado. lista:(LISTA) Lista de contedo a serem aplicados.

Exemplo: mostre aplique "soma [1 2 3] 6

Invoque (procedimento de biblioteca) Invoque modelo entrada Invoque modelo entrada1 entrada2 ... Comando ou operao semelhante a Aplique, exceto que as entradas so fornecidas como expresses separadas, em vez de uma lista. sada:(CONTEDO) Qualquer contedo que o modelo puder emitir. entrada:(LISTA) Contedo a ser aplicado. Entrada1:(LISTA) Primeiro contedo a ser aplicado. Entrada2:(LISTA) Segundo contedo a ser aplicado. modelo:(PALAVRA) Modelo a ser aplicado. Exemplo: mostre (invoque "soma 1 2 3) 6

Paracada PARACADA listadedados listademodelos (procedimento biblioteca) (PARACADA listadedados1 listadedados2 ... listademodelos)

de

Comando que avalia a listademodelos repetidamente, uma para cada elemento da listadedados. Se for fornecida mais de uma lista de dados, cada uma delas

precisa ter o mesmo tamanho. (A entrada de dados pode ser palavras, neste caso o modelo avaliado uma vez por cada caractere. listadedados:(LISTA) Lista de contedos a serem operados um vez. listadedados1:(LISTA) Primeira lista de contedos a serem operados um vez. listadedados2:(LISTA) Segunda lista de contedos a serem operados um vez. listademodelos:(LISTA) Lista de modelos a serem executados. Em um modelo, o smbolo ?REST representa a poro de entrada de dados direita do membro que est sendo usado atualmente como o preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento ?REST substitudo por [C D E]. Em um modelo, o smbolo # representa a posio na entrada de dados do membro que est sendo usado atualmente com o preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento # ser substitudo por 2. Exemplo: paracada [a b c d] [escreva (sn "index # "valor ? "rest ?rest)] index 1 valor a rest b c d index 2 valor b rest c d index 3 valor c rest d index 4 valor d rest Mapeie (procedimento de biblioteca) MAPEIE listademodelos dados (MAPEIE listademodelos dados1 dados2 ...) Emite uma palavra ou lista, dependendo do tipo de entrada de dados, do mesmo tamanho que a entrada de dados. (Se forem fornecidas mais de uma entrada de dados, a sada ser do mesmo tipo que a de dados1.) Cada elemento da sada o resultado da avaliao de listademodelos, preenchendo os parmetros com o(s) elemento(s) correspondente(s) da(s) entrada(s) de dados. (Todas as entradas de dados precisam ter o mesmo tamanho.) No caso da sada de uma palavra, os resultados da avaliao do modelo precisam ser palavras, e eles so concatenados com Palavra. dados:(LISTA) Lista dos elementos de dados a serem mapeados.

dados1:(LISTA) Primeira lista dos elementos de dados a serem mapeados. dados2:(LISTA) Segunda lista dos elementos de dados a serem mapeados. listademodelos:(LISTA) Lista dos modelos em que ser aplicado mapeamento. Em um modelo, o smbolo ?REST representa a poro da entrada de dados direita do membro que est sendo usado atualmente como preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento ?REST ser substitudo por [C D E]. Se os slots paralelos estiverem sendo usados, ento {?REST 1) fica com ?1 etc. Em um modelo, o smbolo # representa a posio na entrada de dados do membro que est sendo usado atualmente como preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento # ser substitudo por 2. Exemplo: mostre (Mapeie "lista [a b c] [d e f]) [[a d] [b e] [c f]]

Mapeie.se (procedimento de biblioteca) MAPEIE.SE listademodelos dados (MAPEIE.SE listademodelos dados1 dados2 ...) Emite uma lista constituda pela avaliao de listademodelos repetidamente e concatenando os resultados usando SENTENA. Ou seja, os membros da sada so membros dos resultados da avaliaes. A lista de sada pode, por conseqncia, ser de um tamanho diferente daquele da(s) entrada(s) de dados. (Se o resultado de uma avaliao for uma lista vazia, ele no contribui nada para a sada final.) As entradas de dados podem ser palavras ou listas. dados:(LISTA) Lista de elementos de dados a serem mapeados. dados1:(LISTA) Primeira lista dos elementos de dados a serem mapeados. dados2:(LISTA) Segunda lista dos elementos de dados a serem mapeados. listademodelos:(LISTA) Lista dos modelos em que ser aplicado mapeamento.

Em um modelo, o smbolo ?REST representa a poro da entrada de dados direita do membro que est sendo usado atualmente como preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento ?REST ser substitudo por [C D E]. Se os slots paralelos estiverem sendo usados, ento {?REST 1) fica com ?1 etc. Em um modelo, o smbolo # representa a posio na entrada de dados do membro que est sendo usado atualmente como preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento # ser substitudo por 2. Exemplo: mostre (Mapeie.se "lista [a b c] [d e f]) [a d b e c f]

Filtro Filtro modelos dados

(procedimento de biblioteca)

Envia uma palavra ou lista, dependendo do tipo de entrada de dados, contendo um subconjunto de membros (para uma lista) ou caracteres (para uma palavra) da entrada. O modelo avaliado uma vez por cada membro ou caractere dos dados, e ele precisa produzir um valor VERDADEIRO ou FALSO. Se o valor VERDADEIRO, ento a entrada correspondente constituinte includa na sada. dados:(LISTA) List of data elements to be filtered. modelos:(PALAVRA) Lista dos modelos Verdadeiro-Falso para filtrar os dados. Em um modelo, o smbolo ?REST representa a poro da entrada de dados direita do membro que est sendo usado atualmente como preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento ?REST ser substitudo por [C D E]. Em um modelo, o smbolo # representa a posio na entrada de dados do membro que est sendo usado atualmente como preenchedor ?. Ou seja, se a entrada de dados [A B C D E] e o modelo est sendo avaliado com ? substitudo por B, ento # ser substitudo por 2.

Exemplo: aprenda vowelp :arg se :arg="a [envie "verdadeiro] se :arg="e [envie "verdadeiro] se :arg="i [envie "verdadeiro] se :arg="o [envie "verdadeiro] se :arg="u [envie "verdadeiro] envie "falso fim escreva filtro "vowelp "elephant eea

Busque Busque objeto dados

(procedimento de biblioteca)

Envia o elemento da entrada de dados (de uma lista ou de uma palavra) para o qual o valor produzido pela avaliao do objeto com aquele elemento em seu parmetro VERDADEIRO. Caso no haja nenhum elemento, emitida a lista vazia. dados:(LISTA) Lista de elementos de dados a serem pesquisados. objeto:(PALAVRA) Lista de modelos Verdadeiro-Falso para encontrar dados. Exemplo: aprenda buscar1 :arg se :arg=1 [envie "verd] envie "falso fim mostre (busque "buscar1 [2 4 3 0]) [] mostre (busque "buscar1 [2 1 3 0]) 1

Reduza REDUZA modelo dados

(procedimento de biblioteca)

Envia um resultado aplicando o modelo para acumular os elementos da entrada de dados. O modelo precisa ser uma funo de dois parmetros. Normalmente ele uma funo associativa do tipo "Soma. Se a entrada de dados possui apenas um elemento (membro em uma lista ou caractere em uma palavra), a sada esse elemento. De outra forma, o elemento aplicado primeiro com ?1 preenchido com o elemento prximo-ao-ltimo e ?2 com o ltimo elemento. Em seguida, caso haja mais elementos, o modelo aplicado com ?1 preenchido com o prximo elemento esquerda e ?2 com o resultado a partir da avaliao anterior. Este processo continua at que todos os elementos tenham sido utilizados. A entrada de dados pode no estar vazia. dados:(LISTA) Lista de elementos de dados para reduzir. modelo:(PALAVRA) Modelo para fazer a reduo. Nota: Se o modelo , como Soma, o nome do procedimento que capaz de aceitar arbitrariamente muitas entradas, ento mais eficiente usar Aplique em vez de REDUZA. A ltima boa para procedimentos associativos que so escritos para aceitar exatamente duas entradas. Exemplo: aprenda max :a :b envie seno :a > :b [:a] [:b] Fim escreva reduza "max [2 3 8 7 9 0] 9 Opcionalmente, REDUZA pode ser usado para escrever MAX como um procedimento que aceita qualquer nmero de entradas, assim como faz SOMA: aprenda max [:entradas] 2 se vazia :entrada [(lance "erro [entradas no suficientes para max])]

envie reduza [seno ?1 > ?2 [?1] [?2]] :entradas fim escreva (max 2 3 8 7 9 0) 9

Mapeiecruzado (procedimento de biblioteca) MAPEIECRUZADO modelo dados (MAPEIECRUZADO modelo dados1 dados2 ...) Devolve uma lista contendo os resultados das avaliaes do modelo. Cada lista de dados contribui para um parmetro no modelo; o nmero de parmetros igual ao nmero de entradas de dados. Como um caso especial, se for fornecida apenas uma entrada de lista de dados, essa lista considerada uma lista das listas de dados, e cada um de seus membros contribui com valores para um parmetro. MAPEIECRUZADO diferente de Mapeie, pois em vez de tirar os membros das entradas de dados em paralelo, ele tira todas as combinaes de membros das entradas de dados, que no precisam ser do mesmo tamanho.

dados:(LISTA) Lista dos elementos de dados para mapeiecruzado. dados1:(LISTA) Primeira lista do elementos de dados para mapeiecruzado. dados2:(LISTA) Segunda lista do elementos de dados para mapeiecruzado. modelo:(PALAVRA) Modelo para realizar cross mapping. Exemplo: mostre (mapeiecruzado [palavra ?1 ?2] [a b c] [1 2 3 4]) [a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4]

Cascata (prodedimento de biblioteca) CASCATA testefinal modelo valorinicial (CASCATA testefinal modelo1 valorinicial1 modelo2 valorinicial2 ...) (CASCATA testefinal modelo1 valorinicial1 modelo2 valorinicial2 ... modelofinal)

Devolve o resultado da aplicao de um modelo (ou vrios modelos, veja Iterao baseada em modelo) repetidamente, com um valor dado para preencher o parmetro na primeira vez, e o resultado de cada aplicao preenche o parmetro para o aplicativo seguinte. No caso mais simples, CASCATA possui trs entradas. O modelo um modelo de expresso de um parmetro. Esse modelo avaliado algumas vezes (talvez nenhuma). Na primeira avaliao, o parmetro preenchido com a entrada de valorinicial; nas avaliaes seguintes, o parmetro preenchido com o resultado da avaliao anterior. O nmero de avaliaes determinado pela entrada do testefinal. Pode ser ou inteiro no negativo, que nesse caso o modelo avaliado muitas vezes, ou pode ser um modelo de expresso de predicado, e nesse caso ele avaliado (com o mesmo preenchedor de parmetro que ser usado para avaliao da segunda entrada) repetidamente, e a avaliao CASCATA continua com predicado FALSO. (Em outras palavras, o modelo predicado indica a condio para parar.) testefinal:(LISTA) Modelo de teste final. modelo:(PALAVRA) Modelo para realizar cascata. valorinicial:(THING) Valor inicial para iterao inicial. modelo1:(PALAVRA) Primeiro modelo paralelo para realizar cascata. valorinicial1:(CONTEDO) Primeiro modelo inicial para a iterao inicial. modelo2:(PALAVRA) Segundo modelo paralelo para realizar cascata. valorinnicial2:(CONTEDO) Segundo valor inicial paralelo para a iterao inicial. modelofinal:(PALAVRA) Modelo final para realizar cascata. Se o modelo no for avaliado nenhuma vez, a sada de CASCATA a terceira (valorinicial) entrada. De outra forma, a sada o valor produzido pela ltima avaliao do modelo. Modelos CASCATA podem incluir o smbolo # para representar o nmero de vezes que o modelo foi avaliado. Esse parmetro preenchido com 1 na primeira avaliao, 2 na segunda, e assim por diante. Exemplo: mostre cascata 5 [jf # ?] [] [1 2 3 4 5]

mostre cascata 5 [# * ?] 1 120 Muitos resultados podem ser computados em paralelo fornecendo pares de entrada inicial adicionais como entradas para CASCATA. Neste caso, todos os modelos (incluindo o modelo testefinal, se usado) possuem vrios parmetros, com o nmero dos parmetros igual ao nmero de pares de entrada. Em cada rodade de avaliaes, ?2 representa o resultado da avaliao do segundo modelo na rodada anterior. Se o nmero total de entradas (incluindo a primeira entrada testefinal) um nmero mpar, ento a sada de CASCATA o valor final do primerio modelo. Se o nmero total de entradas par, ento a ltima entrada um modelo que avaliado uma vez, depois de realizado o teste final, para determinar a sada de CASCATA. Exemplo: aprenda fibonacci :n sada (cascata :n [?1 + ?2] 1 [?1] 0) fim

Cascata.2 (procedimento de biblioteca) CASCATA.2 testefinal modelo1 valorinicial1 modelo2 valorinicial2 Devolve o resultado de invocar Cascata com as mesmas entradas. A nica diferena que o nmero padro de entradas cinco, em vez de trs. testefinal:(LISTA) Modelo de Teste Final. modelo1:(PALAVRA) Primeiro modelo paralelo para realizar cascata. valorinicial1:(CONTEDO) Primeiro valor inicial paralelo para a iterao inicial. modelo2:(PALAVRA) Segundo modelo paralelo para realizar cascata. valorinicial2:(THING) Segundo valor inicial paralelo para a iterao inicial. Exemplo: aprenda fibonacci :n envie cascata.2 :n [?1 + ?2] 1 [?1] 0 fim

Transfira (procedimnento de biblioteca) TRANSFIRA testefinal modelo entrada Emite o resultado da avaliao repetida da entrada modelo. O modelo avaliado uma vez por cada membro da lista entrada.. Depois de cada avaliao do modelo, o valor resultante torna-se a nova sada. testefinal:(LISTA) Modelo de teste final. modelo:(PALAVRA) Modelo para realizar a transferncia. entrada:(CONTEDO) Valor inicial para a iterao inicial. No modelo, o smbolo ?IN representa o elementeo atual de entrada; o smbolo ?OUT representa a sada atual. No precisam ser uados outros smbolos de parmetro. Se a primeira entrada (testefinal) uma lista vazia, a avaliao continua at que todos os membros da inbasket tenham sido utilizados. Se no, a primeira entrada precisa ser um modelo de expresso de predicado, e a avaliao continua at que o valor desse modelo seja VERDADEIRO ou a inbasket seja esgotada. Exemplo (para cada palavra na ltima entrada, se essa palavra j parte do resultado, esquea-a; se no, inclu essa palavra no resultado. O resultado, inicialmente, vazio.): mostre transfer [] [seno elemento ?in ?out [?out] [jf ?in ?out]] [A B C B D E F B C G] [A B C D E F G]

Geraintseq Geraintseq final incio (procedimento de biblioteca) Autor: Erich Neuwirth <neuwirth@smc.univie.ac.at> Gera uma lista seqencial desde incio at final. Se incio for maior que final ento ser criada uma lista decrescente. Veja tambm Geracseq. incio:(INTEIRO) Inicial o intervalo da seqncia para a sada.

final:(INTEIRO) Finaliza o intervalo da seqncia para a sada. mostre geraintseq 3 7 [3 4 5 6 7] mostre geraintseq 7 3 [7 6 5 4 3] Geraracseq Geraraqseq incio numeroelementos final (procedimento de biblioteca) Autor: Erich Neuwirth <neuwirth@smc.univie.ac.at> Gera uma lista ordenada de numeroelementos igualmente espaada de nmeros racionais comeando com incio e terminando com final. Veja tambm Geraintseq. listaseqencial:(LISTA) Lista de nmeros entre de e at. incio:(NMERO) Inicia o intervalo da seqncia para a sada. final:(NMERO) Termina o intervalo da seqncia para a sada. nmeroelementos:(INTEIRO) Nmero de elementos para gerar a lista de sada. mostre geraracseq 3 5 9 [3 3.25 3.5 3.75 4 4.25 4.5 4.75 5] mostre rseq 3 5 5 [3 3.5 4 4.5 5]

COMANDOS DE MACRO .macro .defmacro

.macro .MACRO nome_proc :entrada1 :entrada2 ...

(formato especial)

Uma macro um tipo especial de procedimento cuja sada avaliada pelas instrues do Logo no contexto do chamador da macro. .MACRO como Aprenda, exceto pelo fato de que o novo procedimento inicia uma macro. nome_proc:(PALAVRA) Nome do procedimento de macro definido (mas no precedido por um ["]). entrada1:(PALAVRA) Primeiro argumento para o procedimento de macro definido (precedido por um [:]). entrada2:(PALAVRA) Segundo argumento para o procedimento de macro definido (precedido por um [:]). As macros so teis para a inveno de novas estruturas de controle comparveis a Repita, Se e outras. Como algumas estruturas de controle podem ser quase, mas no todas, duplicadas primariamente por procedimentos do Logo. Por exemplo, aqui est um procedimento comum da verso de Repita: aprenda meu.repita :num :instrues se :num=0 [pare] faa :instrues meu.repita :num-1 :instrues fim Esta verso funciona bem para a maioria dos propsitos. meu.repita 5 [escreva "ol] Mas ela no funciona se as instrues a serem carregadas incluem Envie, Para ou Local. Por exemplo, considere este procedimento: aprenda exemplo escreva [Adivinhe minha palavra secreta. Voc tem trs chances.] repita 3 [guardeparaescrever "|?? | ~ se leiapalavra = "secreto [esc "Certo! pare]] escreva [Sinto muito, a palavra era "secreto"!] fim

Este procedimento trabalho como escrito, mas se for usado MEU.REPITA em vez de REPITA, ele no funcionar porque Pare ir parar MEU.REPITA, em vez de parar EXEMPLO, como desejado. A soluo tornar MEU.REPITA uma macro. Em vez de executar um procedimento, uma macro precisa retornar uma lista contendo instrues do Logo. O contedo daquela lista avaliado como se ele aparecesse no lugar da chamada da macro. Veja aqui uma verso em macro de Repita: .macro meu.repita :num :instrues se :num=0 [envie []] envie sentena :instrues ~ (lista "meu.repita :num-1 :instrues) fim Toda macro uma operao -- ela sempre precisa emitir algo. Mesmo no caso bsico, MEU.REPITA emite uma lista de instruo vazia. Para mostrar como MEU.REPITA funciona, vamos ver o exemplo a seguir: meu.repita 5 [escreva "ol] Para este exemplo, MEU.REPITA emitir a lista de instruo [escreva "ol meu.repita 4 [escreva "ol]] O Logo, ento, executas essas instrues no lugar da invocao original de MEU.REPITA; que escreve "ol" uma vez e invoca outra repetio. A tcnica exibida acima, embora muito simples de entender, possui o problema de ser vagarosa porque cada repetio tem de construir uma lista de instruo para avaliao. Outro mtodo tonar meu.repita uma macro que trabalhe exatamente como uma verso no-macro, a menos que as instrues que sero repetidas incluam Envie ou Pare. .macro meu.repita :num :instrues pegue "repita.peguetag ~ [envie repita.done faaenvie [repita1 :num :instrues]] envie [] fim

aprenda repita1 :num :instrues se :num=0 [lance "repita.peguetag] faa :instrues .maybeoutput repita1 :num-1 :instrues fim aprenda repita.done :repita.resultado se vazia :repita.resultado [envie [pare]] envie lista "envie pri :repita.resultado fim Se as instrues no incluem Pare ou Envie, ento REPITA1 alcanar sua base e invocar Lance. Como resultado, a ltima linha de instruo de meu.repita emitir uma lista vazia, portanto a segunda avaliao do resultado da macro no dar em nada. Mas se ocorrer um Pare ou Envie, ento REPITA.DONE emitir uma instruo Pare ou Envie que ser re-executada no contexto chamador. Os comandos de definio de macro possuem nomes comeando com um ponto porque as macros so um recurso avanado do Logo; fcil ver-se em problemas definindo uma macro que no termina, ou falhando ao construir a lista de instruo apropriadamente. Usurios Lisp devem notar que as macros do Logo NO so de formatos especiais. Ou seja, as entradas para a macro so avaliadas normalmente, medida que elas deveriam ser para qualquer outro procedimento Logo. Ela apenas a sada da macro que manuseada extraordinariamente.

.Defmacro .DEFMACRO

nome_proc texto

.DEFMACRO como DEFINA com as mesmas excees_macro de .MACRO. nome_proc:(PALAVRA) Nome do procedimento de macro definido. texto:(LISTA) Definio do procedimento de macro como uma lista. Exemplo:

Veja DEFINA e .MACRO.

ERRO DE PROCESSAMENTO Caso ocorra um erro, o Logo segue os seguintes passos. Primeiro, caso haja uma varivel disponvel chamada Trataerro, o Logo pega o seu valor como uma lista de instruo e executa as instrues. A operao Erro pode ser usada dentro de instrues (uma vez) para examinar a condio do erro. Se a lista de instruo invoca PAUSA, a mensagem de erro escrita antes da pausa. Alguns erros so "corrigveis"; para um desses erros, se a lista de instruo emitir um valor, esse valor usado no lugar da expresso que causou o erro. (Se TRATAERRO invoca Pausa e o usurio, depois, invoca Continue com uma entrada, sua entrada torna a sada de PAUSA e depois a sada da lista de instruo TRATAERRO.) Isto possvel para uma lista de instruo TRATAERRO para produzir um valor imprprio ou nenhum valor quando um solicitado. Como resultado, a mesma condio de erro poderia retornar sempre por causa de seu mecanismo. Para evitar esse perigo, se a mesma condio de erro ocorrer duas vezes em uma linha a partir de uma lista de instruo TRATAERRO sem interao com o usurio, a mensagem escrita e o controle retorna para o nvel superior. "Sem interao com o usurio" significa que TRATAERRO invoca PAUSA e o usurio fornece um valor incorreto, este mecanismo de preveno contra loops no surte efeito e o usurio precisa tentar novamente. Caso no haja nenhum valor TRATAERRO disponvel, o Logo manipula o erro gerando um Lance "ERRO interno. (Um programa de usurio tambm pode gerar uma condio de erro deliberadamente invocando LANCE.) Se este lance no capturada por um Pegue "ERRO no programa do usurio, ele eventualmente capturado pelo loop de instruo de nvel superior ou por um loop de pausa, que escreve a mensagem de erro. Uma invocao de PEGUE "ERRO em um programa de usurio libera TRATAERRO localmente, portanto o efeito que, independente do valor de TRATAERRO o PEGUE "ERRO mais local ter precedncia. Se ocorrer uma sobrecarga de ponto flutuante durante uma operao aritmtica, ou uma funo matemtica de duas entradas (como Potncia) invocada com uma combinao ilegal de entradas, a mensagem "no admite"

refere-se ao segundo operando, mas precisa ser pego de acordo com a combinao.

VARIVEIS ESPECIAIS O Logo tem uma ao especial se qualquer um dos nomes de variveis a seguir existir. Elas seguem as regras de escopo normais, portanto um procedimento pode configurar uma delas localmente para limitar a ao de seu efeito. Comandos especiais

Trataerro Profundidadeimpresso Tamanhoimpresso Iniciar Dadosmquina

Trataerro TRATAERRO Uma lista de instruo que ser executada caso haja um erro. Normalmente possui o [Pausa] para permitir depurao interativa. Exemplo: ponhalimite pf 1000 Tartaruga fora dos limites atribua "Trataerro [escreva [Voc realmente a assoprou]] pf 1000 Voc realmente a assoprou

Profundidadeimpresso PROFUNDIDADEIMPRESSO Se um inteiro no negativo, indica a profundidade mxima da estrutura de sublista que ser escrita por Escreva etc. Exemplo: escreva [[1 [2 [3 [4 [5]]]]]] [1 [2 [3 [4 [5]]]]]] atribua "profundidadeimpresso 4 escreva [[1 [2 [3 [4 [5]]]]]] [1 [2 [3 [... ...]]]]

Tamanhoimpresso TAMANHOIMPRESSO Se um inteiro no negativo, indica o nmero mximo de elementos em qualquer lista que ser escrita por Escreva etc. escreva [1 2 3 4 5 6] 123456 atribua "tamanhoimpresso 4 escreva [1 2 3 4 5 6] 1 2 3 4 ...

Iniciar Iniciar Se registrado um valor de lista em um arquivo carregado por Carregue, esse valor executado como uma listadeinstruo depois de carregado.

Exemplo: aprenda meuprograma escreva "Ol fim

atribua "iniciar [meuprograma] salve "meuprograma.lg carregue "meuprograma.lg Ol

Dadosmquina DADOSMQUINA Este comando exibe as caractersticas da mquina em uma lista. Onde a lista possui o seguinte formato [Windows Verso-Windows BitMap-largura BitMap-altura Palheta-de-cores]. Onde Palheta-de-cores um 1 se verdadeiro e 0 se falso. Pode ser usado para escrever cdigo que comatvel entre mltiplas plataformas. Windows 3.0 = 30 Windows 3.1 = 31 NT/Windows 95 = 40 Exemplo: mostre Dadosmquina [1 31 1000 1000 0]

COMANDOS DE AJUDA Ajuda Socorro Ajuda AJUDA (AJUDA palavra-chave) Este comando possui duas formas (com e sem um argumento de palavrachave). Sem uma palavra-chave, o Logo entrar na janela inicial de ajuda do LOGO. Com um argumento de palavra-chave o Logo ir pesquisar a ajuda do Windows pela palavra-chave. Voc pode inserir a palavra-chave inteira ou apenas uma parte dela.

palavra-chave:(PALAVRA) Uma palavra-chave que voc, normalmente, poderia inserir em um mecanismo de pesquisa da ajuda. Exemplo: ajuda "introduo ;(Abre a ajuda na introduo) Para ajuda sensvel a contexto, veja o comando Edite. Note tambm que a Ajuda do Windows permite que voc Copie texto da Ajuda para a rea de Transferncia. Desde que o Editor dentro do Logo tambm seja compatvel com rea de Transferncia, isto significa que voc pode copiar exemploes de dentro da Ajuda para o Editor, salv-los e, depois, execut-los. Para fazer isso: Selecione o Texto desejado Clique em EDITAR no menu do arquivo de Ajuda. Selecione COPIAR Abra o Editor do Logo. posicione o cursor onde voc deseja inserir o texto de exemplo. Clique em EDITAR no menu Editar. Selecione Colar (agora ele est no Editor). Socorro SOCORRO (SOCORRO

nomedoarquivo nomedoarquivo palavra-chave)

Este comando possui duas formas (com e sem um argumento de palavrachave). Sem uma palavra-chave, o Logo ir abrir a ajuda do Windows no NOMEDOARQUIVO desejado no incio do mesmo. Com um argumento de palavra-chave, o Logo ir pesquisar a ajuda do Windows NOMEDOARQUIVO para a palavra-chave. Voc precisa inserir a palavrachave completa. nomedoarquivo:(PALAVRA) Um caminho para um arquivo de ajuda que voc deseja abrir. palavra-chave:(PALAVRA) Uma palavra-chave que voc, normalmente, poderia inserir em um mecanismo de pesquisa da ajuda.

Exemplo: (socorro "c:\\minhaajuda "introduo) ; (Abre a ajuda em introduo)

COMANDOS DE DIRETRIO Mostrearquivos Mostrediretrios Mudedir Voltedir Criedir Removadir

Mostrearquivos MOSTREARQUIVOS Emite uma lista de arquivos contidos no diretrio atual. Exemplo: mostre mostrearquivos [logo.doc slogo.exe LOGICEX.BMP LICENSE.TXT SUPERLOGO.TXT mcistrwh.hlp LOGO.CNT]]

Mostrediretrios MOSTREDIRETRIOS MODIR Emite uma lista contendo os diretrios no diretrios atual. mostrediretrios [EXEMPLOS LOGOLIB .. .]

Mudedir mudedir diretrio

anlogo ao comando chdir (cd) do Dos. O parmetro tem que ser uma palavra (o nome do diretrio com o qual se deseja trabalhar). Voc pode usar o comando Dir para ver procedimentos e diretrios. Veja tambm Voltedir e Criedir. Exemplo: mudedir "exemplos => Transferido para c:\logo\exemplos voltedir => retornado para c:\logo

Voltedir voltedir volta (em 1 nvel) a rvore de diretrios. equivalente ao comando mudedir. Ver tambm Mudedir e Criedir. Exemplo: mudedir "exemplos => transferido para c:\logo\exemplos voltedir => volta para c:\logo

Criedir criedir diretrio cria um diretrio e muda o diretrio atual para o novo diretrio. O parmetro deve ser uma palavra (o nome do diretrio a ser criado). Voc pode usar o comando Dir para listar os arquivos e diretrios no diretrio atual. Uma vez criado o diretrio, possvel voltar (Voltedir) ao diretrio anterior e criar outro.

Exemplo: criedir "lixo => agora em diretrio recm criado lixo voltedir => retornado para c:\logo

Removadir Removadir diretrio Remove (apaga) um diretrio. O parmetro deve ser uma palavra (o nome de um diretrio existente). impossvel remover um diretrio se este for o diretrio atual, ou se o diretrio no estiver vazio (Dir no deve retornar nada enquanto for usado no diretrio a ser removido). Portanto, para ter certeza que ser possvel remov-lo, use o comando dir e verifique se ele existe, ento mude para o diretrio a ser removido (mudedir), use dir novamente e confirme que est vazio, volte ao diretrio anterior (Voltedir) e remova-o. Ver tambm Criedir. Exemplo: criedir "lixo => agora em diretrio recm-criado lixo voltedir => retornado para c:\logo removadir "lixo => diretrio do Slogo lixo removido

FUNES DO WINDOWS Esta seo descreve como o programador em LOGO pode criar poderosas Interfaces Grficas com o Usurio (Graphical User Interfaces -- GUIs). A maioria das GUIs possui uma Interface de Programao de Aplicativo (Application Programming Interface -- API), que o que esta seo estar abordando em relao ao Windows. Tanto a GUI quanto a API mantm um relacionamento pai-filho. Ou seja, o Windows e os controles aparecem

(graficamente) de modo aninhado (no qual um fica dentro de outro). A aparncia aninhada mantida no cdigo que voc desenvolve para exibi-la. Para cada comando "CRIEalgo" preciso especificar um pai que identifica o relacionamento. Quando um pai de qualquer tipo "APAGUEalgo" ento todos os seus "filhos" e controles do Windows tambm sero. Cada funo (comando) do Windows especifica um "nome". Nos comandos "CRIEalgo" ele est l para nomear o "algo" para que posteriormente ele possa ser referido. Na maioria dos outros comando, ele utilizado como um "manipulador" para identificar a Janela ou controle com o qual voc deseja se comunicar. E terceiro, ela tambm usada para fazer meno ao "pai" da Janela ou controle que "possui" este novo "algo". Quando os controles esto em janelas, as coordenadas usadas em todas as funes do Windows esto no sistema de coordenadas do Windows (e NO o sistema de coordenadas da tartaruga). Ou seja, eixo Y numerado de maneira inversa (nmeros Positivos so para baixo). A origem NO no meio da tela, ela no canto superior esquerdo da janela. Quando os controles esto na janela de imagens, as coordenadas sero o sistemas de coordenadas da tartaruga.

Comandos de janela Comandos de dilogo Comandos de caixa de listagem Comandos de caixa de combinao Comandos de barra de rolagem Comandos de boto Comandos estticos Comandos de caixa de grupo Comandos de caixa de marcao Comandos de boto de rdio Comandos de rastreio Janelas modais versus no-modais Janelas predefinidas Exemplos de janelas Comandos de janela

Criejanela Apaguejanela Criejanela criejanela pai nome ttulo posiox posioy largura altura criejan pai nome ttulo posiox posioy largura altura Cria uma janela que poder ser usada como uma rea de trabalho na qual voc pode acrescentar vrios objetos ou controles. Voc pode adicionar objetos como botes, barras de rolagem, caixas de listagem etc. JANELA. (veja Janelas modais versus janelas no-modais)

Pai: (palavra) nome da janela do Windows que possuir esta nova janela. Se esta for a primeira janela criada use "main como nome do pai. Nome: (palavra) identifica a janela (provavelmente para que esta janela vire pai ou controle de outra janela) e deve ser nico. Ttulo: (palavra) ttulo da janela. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova janela. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo da nova janela. Largura: (inteiro) largura da nova janela. Altura: (inteiro) altura da nova janela.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 apaguejanela "minhajanela

Apaguejanela Apaguejanela nome apjan nome Fecha (elimina) a janela com o nome dado. Note que todas as janelas filhas e os controles destas janelas tambm sero eliminados. Nome: (palavra) identifica a janela a ser eliminada

Exemplo: criejanela "main "minhajanela "meuttulo 0 0 100 apaguejanela "minhajanela

100

Comandos de dilogo Criedilogo Apaguedilogo

Criedilogo criedilogo pai nome ttulo posiox posioy largura altura ajuste criedialogo pai nome ttulo posiox posioy largura altura ajuste Cria uma janela de dilogo. Uma janela de dilogo usada como uma rea de trabalho onde voc pode acrescentar outras janelas ou controles. Pode-se acrescentar coisas como: botes, barra de rolamento, caixas de listagem, etc, na janela de dilogo. Esta funo similar a criejanela com a diferena de no devolver o controle janela que a chamou at que a janela seja fechada. Ver Janelas modais versus no-modais. Pai: (palavra) nome da janela de dilogo que possuir esta nova janela. Se esta for a primeira janela criada, use main como nome do pai. Nome: (palavra) identifica a janela de dilogo (provavelmente para que esta janela vire pai ou controle de outra janela) e deve ser nico. Ttulo: (palavra) ttulo da janela de dilogo. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova janela de dilogo. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo da nova janela de dilogo. Largura: (inteiro) largura da nova janela de dilogo. Altura: (inteiro) altura da nova janela de dilogo. Ajuste: (lista) uma (pequena) lista de comandos do LOGO (ou nome de procedimento) para executar quando a janela de dilogo criada. O comando a ser executado , na maioria das vezes, outras funes crie para adicionar controles janela de dilogo. Isso ocorre porque criedilogo no devolve o controle ao programa at que a janela seja fechada, impossibilitando adicionar

controles janela de dilogo. Portanto, certifique-se de que tenha algum boto (ok, fim, fechar, cancelar ou qualquer outro) que chamar apaguedilogo para esta janela.

Exemplo: aprenda meuajuste crieboto "meudilogo "meuok "ok 25 25 50 50 [apaguedilogo "meudilogo] fim criedilogo "main "meudilogo "meuttulo 20 20 100 100 [meuajuste]

Apaguedilogo Apaguedilogo Apdialogo

nome nome

Fecha (elimina) a janela de dilogo com o nome dado. Note que todas as janelas filhas e os controles sero apagados. Nome: (palavra) identifica a janela de dilogo que voc quer fechar.

Exemplo: aprenda majuste crieboto "meudilogo "meuok "ok 25 25 50 50 [apaguedilogo "meudilogo] fim criedilogo "main "meudilogo "meuttulo 20 20 100 100 [majuste] Comandos de caixa de listagem Criecaixalistagem Apaguecaixalistagem Selecionecaixalistagem Adicionecaixalistagem

Retiredacaixalistagem Criecaixalistagem criecaixalistagem pai nome posiox posioy largura altura criecxlist pai nome posiox posioy largura altura cria uma caixa de listagem. Uma caixa de listagem usada para dar aos usurios uma relao de itens. Pai: (palavra) nome da janela de dilogo que ir conter esta nova caixa de listagem. Nome: (palavra) usado para identificar esta caixa de listagem. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova caixa de listagem. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo da nova caixa de listagem. Largura: (inteiro) largura da nova caixa de listagem. Altura: (inteiro) altura da nova caixa de listagem. Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixalistagem "minhajanela "minhalista 25 25 50 50 apaguejanela "minhajanela

Apaguecaixalistagem apaguecaixalistagem nome apcxlist nome Fecha (elimina) a caixa de listagem com o nome dado. nome: (palavra) usado para identificar a caixa de listagem a ser fechada.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixalistagem "minhajanela "minhalista 25 25 50 50 apaguecaixalistagem "minhalista apaguejanela "minhajanela

Selecionecaixalistagem selecionecaixalistagem nome selcxlist nome Solicita caixalistagem o item selecionado e retorna uma cpia deste. Nome: (palavra) identifica a caixadelistagem para a qual ser feita a solicitao. Exemplo: aprenda desenho tat se soiguais [tringulo] selecionecaixalistagem "minhalista [repita 3[pf 100 pd 120]] se soiguais [quadrado] selecionecaixalistagem "minhalista [repita 4[pf 100 pd 90]] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixalistagem "minhajanela "minhalista 20 20 50 50 adicionenacaixalistagem "minhalista[tringulo] adicionenacaixalistagem "minhalista [quadrado] crieboto "minhajanela "meudesenho "desenhe 20 70 50 25 [desenho] <selecione uma figura e aperte desenho> apaguejanela "minhajanela

Adicionenacaixalistagem adicionenacaixalistagem nome item adnacxlist nome item adiciona o "item" caixa de listagem com o nome dado. Nome: (palavra) identifica a caixa de listagem na qual se quer adicionar um item. Item: (palavra) o item a ser inserido na caixa de listagem. Exemplo:

aprenda desenho tat se soiguais [tringulo] selecionecaixalistagem "minhalista [repita 3[pf 100 pd 120]] se soiguais [quadrado] selecionecaixalistagem "minhalista [repita 4[pf 100 pd 90]] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixalistagem "minhajanela "minhalista 25 25 50 50 adicionenacaixalistagem "minhalista [tringulo] adicionenacaixalistagem "minhalista [quadrado] crieboto "minhajanela "meudesenho "desenhe 25 70 50 25 [desenho] <selecione uma figura e aperte desenho> apaguejanela "minhajanela

Retiredacaixalistagem retiredacaixalistagem nome ndice retiredacxlist nome ndice elimina o item ndice da caixa de listagem. Nome: (palavra) identifica a caixa de listagem da qual ser apagado o item. ndice: (inteiro) ndice do item que ser apagado (comeando no 0). Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixalistagem "minhajanela "minhalista 20 20 50 50 adicionenacaixalistagem "minhalista [tringulo] adicionenacaixalistagem "minhalista [quadrado] adicionenacaixalistagem "minhalista [hexgono] retiredacaixalistagem "minhalista 1 apaguejanela "minhajanela

Comandos de caixa de combinao

Criecaixacombinao Apaguecaixacombinao Textodacaixacombinao Adicionetextonacaixacombinao Adicionenacaixacombinao Retiredacaixacombinao Criecaixacombinao criecaixacombinao criecxcomb

pai nome posiox posioy largura altura pai nome posiox posioy largura altura

Cria uma caixa de combinao. Uma caixa de combinao usada para dar ao usurio uma seleo de itens fornecendo a este usurio a opo de entrar com seu prprio item que no esteja listado. A caixa de combinao uma juno de dois controles (a caixa de listagem e um controle de edio). Se voc deseja criar um controle de edio, mude a altura para um tamanho no qual a caixa de combinao no caiba. Pai: (palavra) nome da janela de dilogo que ir conter esta nova caixa de combinao. Nome: (palavra) usado para identificar esta caixa de listagem. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova caixa de combinao. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo da nova caixa de combinao. Largura: (inteiro) largura da nova caixa de combinao. Altura: (inteiro) altura da nova caixa de combinao. Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixacombinao "minhajanela "meucomb 25 25 50 50 apaguejanela "minhajanela

Apaguecaixacombinao apaguecaixacombinao nome apcxcomb nome Fecha (elimina) a caixa de combinao com o nome dado.

Nome: eliminar.

(palavra) identifica a caixa de combinao que voc quer

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixacombinao "minhajanela "meucomb 25 25 50 50 apaguecaixacombinao "meucomb apaguejanela "minhajanela

Textodacaixacombinao Textodacaixacombinao textodacxcomb

nome nome

Solicita caixa de combinao o contedo da sua parte de edio (que pode estar selecionado ou no). Nome: (palavra) identifica a caixa de combinao. Exemplo: aprenda figura tat atr "lados primeiro textodacaixacombinao "meucomb repita :lados [pf 50 pd 360.0/:lados] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixacombinao "minhajanela "meucomb 25 25 50 50 adicionenacaixacombinao "meucomb [3] adicionenacaixacombinao "meucomb [4] adicionenacaixacombinao "meucomb [5] adicionenacaixacombinao "meucomb [6] crieboto "minhajanela "meudesenho "desenhe 25 70 50 25 [figura] <selecione ou entre com o nmero de lados na caixa de combinao e pressione o boto desenho> apaguejanela "minhajanela

Adicionetextonacaixacombinao

adicionetextonacaixacombinao adtextonacxcomb

nome texto nome texto

Define o contedo da parte de edio da caixa de combinao para texto. Nome: (palavra) identifica a caixa de combinao. Texto: (palavra) item a ser inserido para o componente de edio da caixa de combinao. Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixacombinao "minhajanela "meucomb 25 25 50 50 adicionenacaixacombinao "meucomb [3] adicionenacaixacombinao "meucomb [4] adicionenacaixacombinao "meucomb [5] adicionenacaixacombinao "meucomb [6] adicionetextonacaixacombinao "meucomb [3] apaguejanela "minhajanela

Adicionenacaixacombinao adicionenacaixacombinao nome item adnacxcomb nome item Adiciona o item na caixa de combinao com o nome dado. Note que os itens na caixa de listagem so automaticamente ordenados quando so inseridos. Nome: (palavra) identifica a caixa de combinao na qual se deseja fazer a adio. Item: (lista) item a ser inserido ao componente caixa de listagem da caixa de combinao.

Exemplo: aprenda figura tat atr "lados primeiro mostretextodacaixacombinao "meucomb repita :lados [pf 50 pd 360.0/:lados] fim

criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixacombinao "minhajanela "meucomb 25 25 50 50 adicionenacaixacombinao "meucomb [3] adicionenacaixacombinao "meucomb [4] adicionenacaixacombinao "meucomb [5] adicionenacaixacombinao "meucomb [6] crieboto "minhajanela "meudesenho "desenhe 25 70 50 25 [figura] <selecione ou entre com o nmero de lados na caixa de combinao e pressione o boto desenho> apaguejanela "minhajanela

Retiredacaixacombinao retiredacaixacombinao retiredacxcomb

nome ndice nome ndice

Elimina um item referente ao ndice determinado da caixa de combinao com o nome dado. Nome: (palavra) identifica a caixa de combinao de onde ser apagado um item. ndice: (inteiro) ndice do item a ser apagado (comeando no 0). Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixacombinao "minhajanela "meucomb 25 25 50 50 adicionenacaixacombinao "meucomb [3] adicionenacaixacombinao "meucomb [4] adicionenacaixacombinao "meucomb [5] adicionenacaixacombinao "meucomb [6] retiredacaixacombinao "meucomb 1 apaguejanela "minhajanela

Comandos de barra de rolagem Criebarrarolagem Apaguebarrarolagem Mudebarrarolagem

Barrarolagem

criebarrarolagem criebarrarolagem pai nome posiox posioy largura altura chamada criebarrarol pai nome posiox posioy largura altura chamada Cria uma barra de rolagem. Uma barra de rolagem um controle usado para solicitar do usurio o valor de uma varivel (apesar desta funo poder ser definida para outras coisas). tambm comum ligar a barra de rolagem a um controle esttico para informar o usurio da sua condio (apesar de no ser nescessrio). Obs: no esquecer de ajustar o intervalo e o valor inicial da barra de rolagem usando Mudebarraderolagem. A orientao (vertical ou horizontal) da barra de rolagem determinada pela maior dimenso, isto , se x > y ento ser horizontal, caso contrrio, vertical. Pai: (palavra) nome da janela que possuir a barra de rolagem. Nome: (palavra) identifica a barra de rolagem e deve ser nico. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova barra de rolagem. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo da nova barra de rolagem. largura: (inteiro) largura da nova barra de rolagem. Altura: (inteiro) altura da nova barra de rolagem. Chamada: (lista) pequena lista de comandos LOGO (ou um nome de procedimento) a ser(em) executado(s) quando o usurio ajusta a barra de rolagem. comum chamar um procedimento que informa o usurio do estado da barra de rolagem.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criebarrarolagem "minhajanela "meurol 25 25 50 25 [muded barrarolagem "meurol] mudebarrarolagem "meurol 0 360 0 <tente mover a barra de rolagem e observe o que acontece com a Tat> apaguejanela "minhajanela

Apaguebarrarolagem apaguebarrarolagem nome apbarrarol nome Fecha (elimina) a barra de rolagem com o nome dado. Nome: (palavra) identifica a barra de rolagem e ser fechada.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criebarrarolagem "minhajanela "meurolamento 25 50 50 25 [] apaguebarrarolagem "meurolamento apaguejanela "minhajanela

Mudebarrarolagem mudebarrarolagem mudebarrarol

nome Mnimo Mximo posio nome Mnimo Mximo posio

Ajusta o alcance e a posio atual da barra de rolagem. Este comando pode ser usado quantas vezes for necessrio. Nome: (palavra) identifica a barra de rolagem que se quer ajustar. Mnimo: (inteiro) limite inferior da barra de rolagem. Mximo: (inteiro) limite superior da barra de rolagem. Posio: (inteiro) posio atual (e sada) da barra de rolagem. Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criebarrarolagem "minhajanela "meurol 25 50 50 25 [muded barrarolagem "meurol] mudebarrarolagem "meurol 0 360 0 <tente mover a barra de rolagem e observe o que acontece com a tartaruga> apaguejanela "minhajanela

Barrarolagem

barrarolagem

nome

Retorna a posio da barra de rolagem com o nome dado. Nome: (palavra) identifica a barra de rolagem a ser retornada a posio.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criebarrarolagem "minhajanela "meurol 25 25 50 25 [muded barrarolagem meurol] mudebarrarolagem "meurol 0 360 0 <tente mover a barra de rolagem e observe o que acontece com a tartaruga> apaguejanela "minhajanela

Comandos de boto Crieboto Apagueboto Mudetextoboto Crieboto crieboto pai nome rtulo posiox posioy largura altura chamada criebt pai nome rtulo posiox posioy largura altura chamada Cria um boto. Um boto permite ao usurio disparar eventos. A nica funo de um boto executar a chamada. Pai: (palavra) nome da janela que possuir este novo boto. Nome: (palavra) identifica o boto. Rtulo:(lista) identifica o rtulo do boto. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo do novo boto. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo do novo boto. Largura: (inteiro) largura do novo boto. Altura: (inteiro) altura do novo boto.

Chamada: (lista) pequena lista de comandos do LOGO (ou nome de procedimento) a executar quando o usurio clicar o boto. Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 crieboto "minhajanela "meuesquerdo "esquerda 10 40 40 40 [pf 20 pe 1] crieboto "minhajanela "meudireito "direita 50 40 40 40 [pf 20 pd 1] <clique esquerda e direita repetidamente e observe a tartaruga> apaguejanela "minhajanela

Apagueboto apagueboto nome apbt nome fecha (elimina) o boto com o nome dado. Nome: (palavra) identifica o boto a ser eliminado. Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 crieboto "minhajanela "meuboto "puxe 25 25 25 25 [esc "puxado] apagueboto "meuboto apaguejanela "minhajanela

Mudetextoboto MUDETEXTOBOTO nome texto MUDETEXTOBOTAO nome texto Este comando substituir os contedos do controle do BOTO nome com "texto". nome:(PALAVRA) usado para identificar o controle de BOTO que voc deseja atualizar. texto:(LISTA) usado como os novos contedos do controle de BOTO. Exemplo:

criejanela "main "minhajanela "meuttulo 0 0 100 100 [] atribua "Pushed 0 crieboto "minhajanela "meuboto :Pushed 25 25 25 25 [atribua "Pushed :Pushed + 1 Mudetextoboto "meuboto :Pushed] apagueboto "meuboto apaguejanela "minhajanela

Comandos de textos estticos Crieesttico Apagueesttico Mudeesttico Crieesttico crieesttico pai nome texto posiox posioy largura altura crieestat pai nome texto posiox posioy largura altura Cria um controle esttico. Um controle esttico usado simplesmente para exibir um texto. O nome do comando pode ser um pouco ambguo uma vez que o controle esttico pode ser bastante dinmico usando o comando Mudeesttico. Pai: (palavra) nome da janela que ir possuir este novo comando esttico. Nome: (palavra) identifica este controle esttico e deve ser nico. Texto: (lista) contedo inicial do controle esttico. Posiox: (inteiro) posio x onde ser colocado o canto esquerdo superior do novo controle esttico. Posioy: (inteiro) posio y onde ser colocado o canto direito superior do novo controle esttico. Largura: (inteiro) largura do novo controle esttico. Altura: (inteiro) altura do novo controle esttico.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 crieesttico "minhajanela "meuesttico [direo 0] 25 25 50 25 apaguejanela "minhajanela

Apagueesttico apagueesttico apestat

nome nome

Fecha (elimina) o controle esttico com o nome dado. Nome: (palavra) identifica o controle esttico a ser eliminado.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 crieesttico "minhajanela "meuesttico [isto esttico] 25 25 50 25 apagueesttico "meuesttico apaguejanela "minhajanela

Mudeesttico mudeesttico mudeest

nome texto nome texto

Troca o contedo do controle esttico com texto. Nome: (palavra) identifica o controle esttico a ser ajustado. Texto: (lista) contm o novo contedo do controle esttico.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 crieesttico "minhajanela "meuesttico [direo 0] 25 25 50 25 repita 360[pd 1 mudeesttico "meuesttico sn [Direo=]direo] apaguejanela "minhajanela

Comandos de caixa de grupo Criecaixagrupo Apaguecaixagrupo

Criecaixagrupo criecaixagrupo pai nome posiox posioy largura altura criecxgrupo pai nome posiox posioy largura altura Cria uma caixa de grupo. Uma caixa de grupo de controle nico do Windows. nico porque tudo o que ele faz agrupar botes de rdio (Criebotordio) e caixas de marcao (Criecaixamarcao) graficamente e logicamente. Botes de rdio e caixas de marcao devem pertencer a uma caixa de grupo. Note tambm que um boto de rdio e uma caixa de marcao colocados em uma caixa de grupo ainda usam como origem a janela e no a caixa de grupo. Pai: (palavra) janela que possuir a caixa de grupo. Nome: (palavra) identifica esta caixa de grupo e deve ser nico. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova caixa de grupo. Posioy: (inteiro) posio y onde ser colocado o canto superior esquerdo da nova caixa de grupo. Largura: (inteiro) largura da nova caixa de grupo. Altura: (inteiro) altura da nova caixa de grupo. Exemplo: aprenda vermarca seno caixamarcao "escondetat [dt] [at] fim criejanela "main "mjanela "mttulo 20 20 100 100 criecaixagrupo "mjanela "mcaixa 10 10 80 40 criecaixamarcao "mjanela "mcaixa "escondetat [desapareatat] 20 20 60 20 crieboto "mjanela "mboto "faa 40 50 25 25 [vermarca] ;Selecione o item e clique sobre o boto. apaguejanela "mjanela

Apaguecaixagrupo apaguecaixagrupo nome apcxgrupo nome Fecha (elimina) a caixa de grupo com o nome dado.

Nome:

(palavra) identifica a caixa de grupo a ser eliminada.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 40 apaguecaixagrupo "meugrupo apaguejanela "minhajanela

Comandos de caixa de marcao criecaixamarcao apaguecaixamarcao caixamarcao ajustecaixamarcao Criecaixamarcao criecaixamarcao pai grupo nome rtulo posiox posioy largura altura criecxmarca pai grupo nome rtulo posiox posioy largura altura Cria uma caixa de marcao. Uma caixa de marcao usada para dar ao usurio uma seleo de dois estados (verdadeiro e falso). Uma caixa de marcao deve ser associada com uma caixa de grupo (criecaixagrupo). Pai: (palavra) nome da janela que possuir a caixa de marcao. Grupo: (palavra) nome da caixa de grupo que ir ser associado caixa de marcao. Nome: (palavra) identifica a caixa de marcao e deve ser nico. Rtulo:(lista) rtulo desta caixa de marcao. Posiox: (inteiro) posio x onde ser colocado o canto superior esquerdo da nova caixa de marcao. Posioy:(inteiro) posio y onde ser colocado o canto superior esquerdo a nova caixa de marcao. Largura: (inteiro) largura da nova caixa de marcao. Altura: (inteiro) altura da nova caixa de marcao.

Exemplo: aprenda verificamarca

seno caixamarcao "escondetat [dt] [at] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "minhacaixadegrupo 10 10 80 40 criecaixamarcao "minhajanela "minhacaixadegrupo "escondetat [desapareatat] 20 20 60 20 crieboto "minhajanela "meuboto "faa 40 50 25 25 [verificamarca] apaguejanela "minhajanela

Apaguecaixamarcao apaguecaixamarcao nome apcxmarca nome Fecha (elimina) a caixa de marcao com o nome dado. Nome: (palavra) identificaa a caixa de marcao a ser eliminada.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 40 criecaixamarcao "minhajanela "meugrupo "minhamarca [me marque] 20 20 60 20 apaguecaixamarcao "minhamarca apaguejanela "minhajanela

Caixamarcao caixamarcao nome nome cxmarca Retorna o estado (verdadeiro ou falso) de uma caixa de marcao. Nome: (palavra) identifica a caixa de marcao a ser verificado o estado.

Exemplo: aprenda vermarca seno caixamarcao "escondetat [dt] [at]

fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "minhacaixadegrupo 10 10 80 40 criecaixamarcao "minhajanela "minhacaixadegrupo "escondetat [desapareatat] 20 20 60 20 crieboto "minhajanela "meuboto "faa 40 50 25 25 [vermarca] apaguejanela "minhajanela

Ajustecaixamarcao ajustecaixamarcao nome estado ajcxmarca nome estado Altera o estado da caixa de marcao de acordo com o parmetro estado (verdadeiro ou falso) passado Nome: (palavra) identifica a caixa de marcao a ser alterada. Estado: (palavra) estado a ser atribudo caixa de marcao (verdadeiro ou falso).

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 40 criecaixamarcao "minhajanela "meugrupo "minhamarca [marque me] 20 20 60 20 ajustecaixamarcao "minhamarca "verd ajustecaixamarcao "minhamarca "falso apaguejanela "minhajanela

Comandos de boto de rdio criebotordio apaguebotordio botordio ajustebotordio

Criebotordio criebotordio pai grupo nome rtulo posiox posioy largura altura criebtradio pai grupo nome rtulo posiox posioy largura altura Cria um boto de rdio. Um boto de rdio usado para dar ao usurio uma relao de dois estados (verdadeiro e falso). O usurio ser restrito a ter apenas um boto de rdio verdadeiro num grupo de botes num determinado momento. Um boto de rdio deve ser associado a uma caixa de grupo (criecaixagrupo). Pai: (palavra) nome da janela que possuir o boto de rdio. Grupo:(palavra) nome da caixa de grupo que ir se rassociado ao novo boto de rdio. Nome: (palavra) identifica o boto de rdio e deve ser nico. Rtulo:(lista) rtulo deste novo boto de rdio. Posiox:(inteiro) posio x onde ser colocado o canto superior esquerdo do novo boto de rdio. Posioy:(inteiro) posio y onde ser colocado o canto superior esquerdo do novo boto de rdio. Largura:(inteiro) largura do novo boto de rdio. Altura: (inteiro) altura do novo boto de rdio.

Exemplo: aprenda verrdio seno botordio "esconde [dt][at] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 60 criebotordio "minhajanela "meugrupo "esconde [desapareatat] 20 20 60 20 criebotordio "minhajanela "meugrupo "mostre [apareatat] 20 40 60 20 crieboto "minhajanela "meuboto "v 40 70 25 20 [verrdio] apaguejanela "minhajanela

Apaguebotordio apaguebotordio nome apbtradio nome

Fecha (elimina) o boto de rdio com o nome dado. Nome: (palavra) identifica o boto de rdio a ser eliminado.

Exemplo: criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 60 criebotordio "minhajanela "meugrupo "meurdio [aperte me] 20 20 60 20 apaguebotordio "meurdio apaguejanela "minhajanela

Botordio botordio nome btradio nome retorna o estado (verdadeiro ou falso) do boto de rdio. Nome: estado. (palavra) identifica o boto de rdio do qual se quer obter o

Exemplo: aprenda verrdio seno botordio "esconde [dt][at] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 60 criebotordio "minhajanela "meugrupo "esconde [desapareatat] 20 20 60 20 criebotordio "minhajanela "meugrupo "mostre [apareatat] 20 40 60 20 crieboto "minhajanela "meuboto "v 40 70 25 20 [verrdio] apaguejanela "minhajanela

Ajustebotordio ajustebotordio nome estado

ajbtradio

nome estado

Altera o estado do boto de rdio de acordo com o parmetro estado (verdadeiro ou falso). Note que o usurio tem apenas um boto de rdio verdadeiro. Este comando pode violar isto, portanto, deve-se usar este comando mantendo um estado correto, isto , se alterar um boto de rdio para verdadeiro, ento certifique-se de que alterou todos os outros botes de rdio na mesma caixa de grupo para falso. Nome: (palavra) identifica o boto de rdio a ser alterado. Estado:(especial) estado (verdadeiro ou falso) para o qual ser alterado.

Exemplo: aprenda verrdio seno botordio "esconde [dt][at] fim criejanela "main "minhajanela "meuttulo 20 20 100 100 criecaixagrupo "minhajanela "meugrupo 10 10 80 60 criebotordio "minhajanela "meugrupo "esconde [desapareatat] 20 20 60 20 criebotordio "minhajanela "meugrupo "mostre [apareatat] 20 40 60 20 crieboto "minhajanela "meuboto "v 40 70 25 20 [verrdio] ajustebotordio mostre verd ajustebotordio esconde falso apaguejanela "minhajanela

Comandos de rastreio Rastreiejanela Rastreijanela RASTREIEJANELA nome Este comando ir escrever a rvore (hierarquia de janelas), iniciando na janela chamada nome se fornecida, de outra forma, ela ir exibir todos os controles e janelas.

nome:(PALAVRA) usado para identificar a janela-raiz que voc deseja escrever. criejanela "main "minhajanela "meuttulo 0 0 100 100 [] criecaixalistagem "minhajanela "minhalista 25 0 50 50 crieboto "minhajanela "meudesenho "Desenhe 25 50 50 25 [Esc "Clique] rastreiejanela minhajanela Window minhajanela Boto meudesenho ListBox minhalista apaguejanela "minhajanela

Janelas modais versus no-modais A progamao em Windows apresenta dois modos, Modal e No-Modal. O primeiro (CRIEDILOGO) semelhante ao modelo de programao nomodal (o aplicativo est sob controle). Do mesmo modo, digamos que voc, no meio de uma programao, decide exibir uma informao ao usurio (por exemplo, leialista). Ou seja, o processamento paralisado at que a informao seja adquirida e outros componentes do aplicativo estejam inacesveis para o usurio. Por exemplo, exibir ao usurio um nome de arquivo para abrir um documento Modal. No modo No-Modal (CRIEJANELA) as tabelas so transformadas, a Janela (usurio) est em controle. Por exemplo o controlador no LOGO NoModal. O programa agora est inativo. O aplicativo executado quando o usurio aciona um evento (como o pressionamento de um boto). Janelas completas personalizadas esto disponveis tanto no modo Modal quanto no modo No-Modal. Janelas pr-definidas Janelas predefinidas permitem que voc acesse caixas de dilogo muito comuns que esto disponveis no Windows. Mostrecaixamensagem Caixasimno CaixaSeleo

Caixadequesto Dilogoabrearq Dilogosalvearq Janelaeditearq

Mostrecaixamensagem mostrecaixamensagem ttulo corpo mostrecxmsg ttulo corpo Pra o processamento e mostra uma janela de mensagem usando ttulo e corpo. O processamento continua a partir do momento que o usurio clica o boto de ok. Note tambm que a janela de comandos do LOGO tambm fica desabilitada at que ok seja clicado. Ttulo: (lista) rtulo do ttulo da janela. Corpo: (lista) texto a ser mostrado na caixa de mensagem. A caixa ser ajustada automaticamente.

Exemplo: mostrecaixamensagem [ttulo][este o corpo]

Caixasimno CAIXASIMNO Ttulo mensagem Este comando ir interromper o processamento e exibir uma mensagem usando um ttulo da janela e uma mensagem . O processamento no continuar at que o usurio clique no boto Sim ou em No. Lembramos que o controlador do LOGO fica desativado at que um boto seja clicado. Depois que um boto clicado, este comando ir emitir VERDADEIRO para Sim e FALSO para No. Ttulo: (LISTA) o ttulo da janela. mensagem : (LISTA) usado para preencher uma caixa de mensagem com um determinado texto. A caixa ter seu tamanho redimensionado automaticamente. Exemplo:

mostre caixasimno [Pergunta] [Voc gosta do Logo?] => clicando em sim verdadeiro

Caixaseleo CAIXASELEO ttulo lista Este comando interromper o processamento e exibir uma mensagem com a barra de ttulo e uma lista com as opes. O processamento no continuar at que o usurio clique no boto OK ou em CANCELAR. Note que o controlador do LOGO fica desativado at que um boto seja clicado. Depois que o boto OK clicado o comando ir exibir um ndice correspondente para o elemento atualmente selecionado (1 para a opo 1, 2 para a opo 2) e 0 se o usurio clicar em CANCELAR.

ttulo: (LISTA) ttulo da janela. lista: (LISTA) uma lista de itens dentre os quais o usurio pode fazer sua escolha. Exemplo: mostre Caixaseleo [Escolha cor] [Vermelho Verde Azul] <selecione verde e clique em OK> 2 Caixadequesto CAIXADEQUESTO Ttulo mensagem Este comando ir interromper o processamento e exibir uma mensagem com a barra de ttulo e a mensagem. O processamento no continuar at que o usurio clique no boto Sim ou em No. Lembramos que o controlador do LOGO fica desativado at que um boto seja clicado. Depois que um boto clicado, este comando exibir o que o usurio escolheu como resposta.

Ttulo:

(LISTA) o ttulo da janela.

Mensagem: (LISTA) usado para preencher a caixa de mensagem com o texto fornecido. A caixa no ser redimensionada automaticamente, permanecendo pequena. Exemplo: mostre caixadequesto [Questo] [Voc gosta do Logo?] >Digite um texto e escolha OK. [Sim, eu gosto.]

Dilogoabrearq DILOGOABREARQ arquivo Este comando exibir a caixa de dilogo padro "ARQUIVO ABRIR". Ela NO abre um arquivo, ela apenas permite que o usurio selecione o arquivo desejado usando a Interface Grfica com o Usurio. O argumento arquivo usado para definir os padres do nome, diretrio e/ou extenso. A sada o nome de arquivo completamente especificado que o usurio selecionou. no caso de o usurio selecionar Cancelar, a sada ser uma lista vazia ([]). arquivo: (PALAVRA) Especifica o diretrio padro, nome de arquivo e/ou extenso do nome de arquivo. ("*" so permitidas como nome do arquivo ou extenso). Exemplo: mostre dilogoabrearq [c:\\Arquivos de Programas\\Superlogo\\*.txt] <Ir exibir todos os arquivos terminando em ".txt" no diretrio especificado>

Dilogosalvearq DILOGOSALVEARQ arquivo Este comando exibir uma janela de caixa de dilogo padro "ARQUIVO SALVAR". Ela NO salva um arquivo, ela apenas permite que o usurio selecione o arquivo desejado usando a Interface Grfica com o Usurio. O argumento arquivo usado para definir os padres do nome, diretrio e/ou

extenso. A sada o nome de arquivo completamente especificado que o usurio selecionou. no caso de o usurio selecionar Cancelar, a sada ser uma lista vazia ([]). nomedearquivo:(PALAVRA) Especifica o diretrio padro, nome de arquivo e/ou extenso do nome de arquivo. ("*" so permitidas como nome do arquivo ou extenso). Exemplo: mostre dilogosalvearq [c:\\Arquivos de Programas\\Superlogo\\*.txt] <Isto ir sxibir todos os arquivos terminados em ".txt" no diretrio especificado>

Janelaeditarq JANELAEDITARQ arquivo retorno Este comando exibir um editor padro nos nomes de arquivo fornecidos. Quando o usurio sair do editor os contedos do retorno de chamada sero executados. nomedoarquivo:(PALAVRA) Especifica o arquivo a ser editado. retornodechamada:(LISTA) uma (pequena) lista de comando do Logo (ou um nome de procedimento) para ser executado quando o usurio sair do Logo. Exemplo: janelaeditearq dilogoabrearq "[c:\\Arquivos de Programas\\Superlogo\\*.txt] [Escreva "Concludo]

Exemplos de janelas Observao: para os casos no-modais a configurao deve ser chamada aps o retorno de CRIEJANELA. E para o caso modal a configurao tem de ser chamada DURANTE o CRIEDILOGO porque ele no retorna at que a janela seja fechada.

Aps colocar os procedimentos no editor digite janela na Janela de comandos do Logo. Aparentenmente voc no notar diferena alguma, porm repare que na forma modal voc no consegue utilizar a Janela de comandos, o que no acontece na forma no-modal aprenda janela ; Para exemplo no-modal use esta linha criejanela "main "d1 [Desenhe Figuras] 0 0 150 110 configurar ;Crie janela principal ; Para exemplo modal use esta linha ; criedilogo "main "d1 [Desenhe Figuras] 0 0 150 110 [configurar] ;Crie janela principal fim aprenda configurar crieesttico "d1 "st4 [Selecione Forma] 5 10 70 10 ; Rotule a caixa de listagem criecaixalistagem "d1 "l1 5 25 80 40 ;Crie caixa de Listagem com 3 itens adicionenacaixalistagem "l1 "QUADRADO adicionenacaixalistagem "l1 "TRINGULO adicionenacaixalistagem "l1 "HEXGONO crieesttico "d1 "st11 [Vermelho] 100 10 50 10 ;Rotule a barra de rolagem criebarrarolagem "d1 "s1 100 25 10 50 [meuvermelho] ;Cria a barra de rolagem e chama meuvermelho quando alterada mudebarrarolagem "s1 1 255 125 meuvermelho ;Altera limites da barra crieboto "d1 "b1 "Fechar 5 80 40 10 [meufinal] ;Crie boto para chamar meufinal crieboto "d1 "b3 "Limpar 55 80 35 10 [Tat] ;Crie boto para limpar janela grfica crieboto "d1 "b2 "Desenhar 100 80 35 10 [Desenhar] ;Crie boto para chamar desenhar fim ; execute esta rotina quando pressionar o boto Desenhar aprenda desenhar

mudecl (lista barrarolagem "s1 0 0) ;Altera cor do lpis de acordo com a posio da barra de rolagen ; Desenhe a forma apropriada de acordo com a caixa de listagem se soiguais [HEXGONO] selecionecaixalistagem "l1 [repita 6 [pf 100 pd 60]] se soiguais [QUADRADO] selecionecaixalistagem "l1 [repita 4 [pf 100 pd 90]] se soiguais [TRINGULO] selecionecaixalistagem "l1 [repita 3 [pf 100 pd 120]] fim ; execute esta rotina quando o boto Fechar pressionado aprenda meufinal ; Para exemplo no-modal use isto apaguejanela "d1 ; Para exemplo modal use isto ; apaguedilogo "d1 fim ; execute esta rotina quando a barra de rolagem VERMELHO ajustada aprenda meuvermelho mudeesttico "st11 (sentena [Vermelho] barrarolagem "s1) ;Atuliza o valor mostrado no esttico em vermelho fim

FUNES DE BITMAPS As funes de bitmap permitem a manipulao de imagens dentro da Janela grfica do Super Logo. Comandos bitmap Recortebitmap Copiebitmap Colebitmapndice

Colebitmap Mudebitmap Mudendicebitmap ndicebitmap Mudemodobitmap Modobitmap Blocobmp Carreguebitmap Salvebitmap Tambmp Tamanhobitmap Carreguegif Salvegif Tamgif Selecionereaativa reaativa Recortebitmap RECORTEBITMAP largura altura RECORTEBMP largura altura Este comando ir "recortar" parte da imagem e coloc-la dentro da memria do Logo (rea de Transferncia se ndicebitmap 0). A qualquer momento posteriormente voc pode "col-lo" (Colebitmap) novamente dentro da imagem. O LOGO ir recortar iniciando na posio da tartaruga com uma largura do primeiro arguemnto e uma altura do segundo argumento. Veja tambm Mudendicebitmap. largura:(INTEIRO) Especifica a largura do bitmap a ser recortado. altura:(INTEIRO) Especifica a altura do bitmap a ser recortado. Nota: Voc pode pensar que essas funes so de 1 pixel em largura e altura quando ns comearmos a us-las, mas elas realmente no so. A razo que, se voc desenha um quadrado com, digamos, "repita 4 [pf 2 pd 90]" quantos pixels de altura ele ter? Ele ter 3 Pixels, e no 2. A razo disso um pouco complicada, mas, em resumo, o modo como o Logo desenha que ele possui uma linha imaginria abaixo do centro de cada pixel. Se um pixel intersecionado (dividido), ento ele aceso. A distncia do centro dos pixels representando o lado esquerdo do quadrado para o centro direita do quadrado a distncia correta (2 pixels). Mas ns temos de ativar ou desativar

o pixel inteiro. O Logo os ativa para mostrar a linha. Isto adiciona 1/2 pixel em cada lado, deixando o quadrado com 3x3 pixels de tamanho. Os lados dos bitmaps no vo do "centro do pixel ao centro do pixel" como linhas, eles vo do pixel inteiro ao pixel inteiro. Exemplo: mudeespessuradolpis [2 2] repita 72 [repita 4 [pf 100 pd 90] mudecl (lista contevezes*3 0 0) pd 5] un mudexy -50 -50 recortebitmap 100 100 tat un repita 36 [pf 150 colebitmap pt 150 pd 10]

Copiebitmap copiebitmap largura altura copiebmp largura altura "Copia" uma parte da imagem ativa na tela e a coloca na memria do LOGO (rea de transferncia se ndicebitmap 0). Posteriormente voc poder "colar" (Colebitmap) de volta a imagem. O LOGO vai comear a copiar na posio da tartaruga com a largura do primeiro argumento e a altura do segundo argumento. Veja tambm Mudendicebitmap. Exemplo: tat mudeel [2 2] repita 72 [repita 4 [pf 100 pd 90] mudecl (lista cv*3 0 0) pd 5] un mudexy -50 -50 copiebitmap 100 100 tat un repita 36 [pf 150 colebitmap pt 150 pd 10] ul

Colebitmapndice COLEBITMAPNDICE ndice x y Este comando ir "colar" de volta as coordenadas x, y do bitmap no ndice, a imagem que foi "cortada" (Recortebitmap) dentro do ndice atual (ou na rea de Transferncia do ndice 0). Veja tambm Mudendicebitmap e Mudemodobitmap. No confunda os ndices, h o ndice atual e aquele em que voc deseja colar. As coordenadas x, y especificam onde posicionar o canto inferior esquerdo da imagem a colada relativa relativa ao canto inferior esquerdo da imagem de destino. Por que voc precisaria de um comando? Porque o cu o limite quando o assunto a utilizao de animao de limpeza rpida (sem oscilao). Por exemplo, digamos que voc tem uma bola rolando em um segundo plano. Voc precisa apagar a bola, colocar o segundo plano para trs e desenhar a bola em sua nova posio. O problema que o usurio ver voc apagando a bola e ficar momentaneamente sem ela na tela. Isso causa uma oscilao, se voc faz qualquer coisa na memria (este comando lhe permite fazer isso) e apenas desenha (cola) na tela, a bola na posio 1 imediatamente precedida pela bola na posio 2 (a posio 1 ser cancelada) o usurio no ver oscilao alguma. Lembre-se que o ndice de destino precisa ter uma imagem para colar. ndice:(INTEIRO) Especifica qual bitmap voc deseja colar. x:(INTEIRO) Especifica a coordenada x definida para o ndice de destino. y:(INTEIRO) Especifica a coordenada y definida para o ndice de destino. Exemplo: ; Desenhe um bloco vermelho 100x100 no Buffer de Bitmap 1 mudendicebitmap 1 mudecpl [255 0 0] blocobmp 100 100 copiebitmap 100 100 ; Desenhe um bloco verde 50x50 no Buffer de Bitmap 2 tat mudendicebitmap 2 mudecpl [0 255 0] blocobmp 50 50

copiebitmap 50 50 ; Reserve 100x100 de espao no Buffer de Bitmap 3 tat mudendicebitmap 3 copiebitmap 100 100 ; Copie 1 a 3 mudendicebitmap 1 Colebitmapndice 3 0 0 ; Copie 2 a 3 mudendicebitmap 2 Colebitmapndice 3 25 25 ; Cole 3 para a Tela mudendicebitmap 3 colebitmap Colebitmap Colebitmap Colebmp "Cola" de volta a imagem que foi "recortada" (Recortebitmap) ou "copiada" (Copiebitmap) para a memria do LOGO (ou rea de transferncia se o ndice for 0). O LOGO sempre vai "colar" na posio da tartaruga com a tartaruga sendo o canto inferior esquerdo da figura colada. Veja tambm Mudendicebitmap e Mudemodobitmap. Exemplo: tat mudeel [2 2] repita 72 [repita 4 [pf 100 pd 90] mudecl (lista cv*3 0 0) pd 5] un mudexy -50 -50 recortebitmap 100 100 tat un repita 36 [pf 150 colebitmap pt 150 pd 10] ul Mudebitmap mudebitmap mudebmp

largura altura largura altura

Redimensiona a imagem "recortada" ou "copiada" (Recortebitmap ou Copiebitmap) corrente dentro das dimenses especificadas. Posteriormente voc poder "colar" (Colebitmap) de volta a imagem. O LOGO vai ajustar a imagem "recortada" ou "copiada" para a largura do primeiro argumento e a altura do segundo argumento. A imagem "recortada" ou "copiada" original substituda pela sua imagem recm "ajustada". Voc pode permanentemente "escalonar" sua imagem com mudebitmap. O zoom ao contrrio, apenas v a imagem temporariamente numa escala diferente.

Exemplo: tat mudeel [2 2] repita 72[repita 4[pf 100 pd 90]mudecl(lista cv*3 0 0)pd 5] un mudexy -50 -50 recortebitmap 100 100 tat colebitmap tat mudebitmap 200 100 colebitmap ul

Mudendicebitmap mudendicebitmap mudeindbmp

ndice ndice

Muda o buffer de recorte ou cole bitmap corrente de acordo com o ndice. O ndice pode variar de 0 at 1023. Seu propsito permitir que vrias imagens possam ser guardadas na memria prontas para uma colagem rpida em animaes. O ndice 0 o default e tambm se comporta usando a rea de transferncia como o buffer de recorte. Isto , se voc "recortar" uma imagem no Paint voc pode col-la diretamente no LOGO. O inverso tambm verdadeiro, se voc "recortar" uma imagem no LOGO ela vlida para o Paint. Use ndicebitmap para obter a configurao atual.

Exemplo: tat mudendicebitmap 0 repita 3[pf 50 pd 120] recortebitmap 100 100 tat mudendicebitmap 1 repita 4[pf 50 pd 90] recortebitmap 100 100 tat mudemodobitmap 3 un dt repita 72[pf 50 colebitmap pt 50 pd 5] mudendicebitmap 0 repita 72 [pf 100 colebitmap pt 100 pd 5] ul

ndicebitmap ndicebitmap Indbmp Retorna o ndice de bitmap corrente especificado por Mudendicebitmap. Exemplo: mudendicebitmap 99 mostre ndicebitmap 99

Mudemodobitmap mudemodobitmap modo mudemodobmp modo Muda o modo de bitmap corrente conforme o modo. O modo pode variar de 1 a 9. Seu propsito permitir que imagens sejam coladas usando mtodos diferentes: algumas vezes voc quer que o fundo da tela seja apagado e outras

vezes no. Algumas vezes voc pode querer inverter a imagem antes de colla e outras vezes no. Existem 9 mtodos: Modo1: pega cpia da memria e depois copia para a tela. Modo2: pega cpia da memria ou cpia da tela e depois copia para a tela. Modo3: pega cpia da memria e cpia da tela e depois copia para a tela. Modo4: pega cpia da memria xor cpia da tela e depois copia para a tela. Modo5: pega cpia da memria e o inverso da tela e depois copia para a tela. Modo6: pega o inverso da memria e depois copia para a tela. Modo7: pega cpia da memria ou cpia da tela e depois inverte para a tela. Modo8: pega o inverso da memria ou cpia da tela e depois copia para a tela. Modo9: pega o inverso da tela e copia para a tela.

Exemplo: tat un repita 9[mudecp(lista cv*25 cv*25 cv*25) blocobmp 50 5 pf 5] mudexy 0 0 recortebitmap 50 50 pd 90 mudecp [125 125 125] mudexy -250 -50 blocobmp 550 150 mudexy -200 0

repita 9[mudemodobitmap cv colebitmap pf 50] ul

Modobitmap modobitmap modobmp Retorna o modo corrente de bitmap usado por Mudemodobitmap. Exemplo: mudemodobitmap 8 mostre modobitmap 8 Blocobmp blocobmp largura altura Dsenha um retngulo opaco com as dimenses dadas. A cor vai ser a cor de Mudecp Exemplo: blocobmp 200 100 mudecp 10 blocobmp 100 200

Carreguebitmap carreguebitmap carreguebmp

arquivo arquivo

Tem a mesma funo que o comando abrir na opo bitmap do menu. Seu nico parmetro deve descrever o caminho e o nome do arquivo de bitmap a ser carregado. Veja tambm o comando Salvebitmap. Exemplo: carreguebitmap "c:\\windows\\bolhas.bmp

Salvebitmap

salvebitmap salvebmp

arquivo arquivo

Permite a voc salvar uma FIGURA (imagem bitmap) do seu trabalho no disco rgido do computador. LEMBRE-SE se sua imagem foi criada com um programa LOGO no preciso salv-la como uma imagem, a menos que voc queira usar a imagem em outro aplicativo, como o Paint, ou como um papel de parede. Seu parmetro o caminho que descreve um arquivo de bitmap a ser salvo. Veja tambm os comandos Carreguebitmap e reaativa. O formato do arquivo em que voc salva as figuras conhecido como Bitmap (.BMP). possvel manipular esses arquios em outro aplicativos, como o Paint. importante lembrar que esses arquivos podem ser GRANDES e demorar um pouco para serem carregados. Arquivo:(PALAVRA) Caminho e nome do arquivo ou bitmap a ser salvo. Exemplo: repita 72 [repita 4[pf 100 pd 90]pd 5] salvebitmap "meuarq.bmp tat carreguebitmap "meuarq.bmp

Tambmp tamanho TAMBMP Este comando exibe o tamanho do bitmap especificado pelo Mudendicebitmap atual. Ele emitir [0 0] caso nenhum bitmap esteja carregado. tamanho:(LISTA) de 2 inteiros representando [Largura Altura] do bitmap carregado. Exemplo: mostre tambmp [0 0] copiebitmap 100 200 mostre tambmp

[100 200]

Tamanhobitmap Tamanhobitmap arquivo Estre comando exibir o tamanho do bitmap especificado por uma de suas entradas, que pode ser uma palavra que descreve o arquivo de bitmap que tem seu tamanho exibido. tamanho:(LISTA) de 2 inteiros representando [Largura Altura] do bitmap carregado. arquivo:(PALAVRA) Nome do arquivo do bitmap para exibir o tamanho. Exemplo: mostre tamanhobitmap "c:\\windows\\forest.bmp [256 256]

Carreguegif CARREGUEGIF arquivo Este arquivo ir carregar a imagem GIF passada no parmetro, que precisa ser uma palavra que descreve o arquivo a ser carregado. Este comando o mesmo que o menu Comando carregar bitmap. Veja tambm o comando Salvegif. arquivo:(PALAVRA) Nomo do arquivo GIF a ser carregado. Exemplo: carreguegif "c:\\windows\\winlogo.gif

Tamgif TAMGIF nome

Este comando ir devolver uma lista com o tamanho da imagem GIF especificada por sua entrada que precisa ser uma palavra que descreve o arquivo que contm o GIF a ser carregado. nome:(PALAVRA) Nome do arquivo GIF a ter seu tamanho exibido. Exemplo: mostre tamgif "c:\\windows\\winlogo.gif [401 47]

Salvegif SALVEGIF nome (SALVEGIF nome atraso append lao maxcor corvetor) Este comando permite que voc salve uma imagem GIF de seu trabalho no disco do computador, de modo que ela possa ser usada em pginas Web ou no e-mail. Em sua primeira forma a entrada precisa ser uma palavra que descreve o arquivo a ser salvo. A segunda forma permite diversas opes: Voc pode salvar um quadro de animao GIF (conjuntos de imagens bitmap compactadas). O atraso especifica quanto tempo, em milisegundos, o quadro demora para ser exibido. O argumento append especifica se voc est iniciando uma nova animao ou adicionando uma nova a uma animao j existente. O argumento lao especifica quantas vezes a animao ser exibida ( -1 = sem loop (padro), 0 = loop infinito, n = loop n vezes). Voc pode especificar a profundidade mxima de cor com maxcor, as opes so 1 (2 cores), 4 (16 cores), ou 8 (256 cores) bits por pixel (8 o padro). Se sua imagem no utiliza muitas cores, possvel reduzir significativamente o tamanho do arquivo GIF usando usando esta opo. possvel especificar qual cor na imagem voc deseja que fique transparente no formulrio[VERMELHO VERDE AZUL] por meio de transcorvetor (para funcionar confiavelmente, voc precisa estar no modo de vdeo de 256 cores). Veja tambm os comandos Carreguegif e reaativa.

Estes comando salva em um formato conhecido como GIF (Graphics Interchange Format) e foi criado pela CompuServe. O formato popular na WWW (World Wide Web). E to conhecido assim por vrias razes. Uma delas que ele um formato compactado e as figuras podem ser carregadas rapidamente. A segunda razo que ele compatvel com "entrelaamento". O entrelaamento permite que a imagem seja parcialmente visvel enquanto ela carregada (ela aparece ofuscada e vai se tornando cada vez mais ntida). Outra razo que ela permite os GIFs animados. GIFs animados permitem que vrias imagens sejam agrupadas em um arquivo com um determinado intervalo entre elas para dar a impresso de movimento. nome:(PALAVRA) Nome de arquivo do GIF a ser salvo. atraso:(INTEIRO) Atraso em milisegundos para o quadro. append:(BOOLEANO) Verdadeiro para adicionar quadro. Falso para nova animao. lao:(INTEIRO) Controle de looping (-1 = sem loop (padro) , 0 = loop infinito, n = loop n vezes). maxcor:(INTEIRO) Profundidade de cor mxima em bits por pixel (1 (2 cores), 4 (16 cores), 8 (256 cores, padro)). transcorvetor:(LISTA) Lista de trs inteiros representando as intensidades Vermelho, Verde e Azul, cada uma delas variando dentro do intervalo 0-255, que voc deseja configurar como cor transparente. Notas: SALVEGIF funcionar melhor quando seu computador estiver no modo de 256 cores. Voc pode chamar Limpepaleta entre cada quadro porque cada quadro possui sua prpria "Paleta de Cores". Exemplo (Imagem Simples): repita 72 [repita 4 [pf 100 pd 90] pd 5] salvegif "meuarquivo.gif tat carreguegif "meuarquivo.gif Exemplo (GIF Animado): tat

selecionereaativa [-150 -150 150 150] ; Marque para indicar que ns no adicionamos o primeiro quadro atribua "append "Falso repita 36 [ repita 4 [pf 100 pd 90] pd 10~ (salvegif "meuarquivo.gif 0 :append 0) ~ ; Salve um quadro (sem atraso e loop infinito) atribua "append "Verdadeiro ] <Agora abra o arquivo meuarquivo.gif com seu navegador Internet (por exemplo, o Netscape ou o Internet Explorer)

Selecionereaativa SELECIONEREAATIVA rea O mesmo que o item de menu Comando rea ativa do bitmap. Ele define a rea ativa para leitura e gravao de bitmaps. Veja tambm reaativa. rea:(LISTA) de 4 inteiros representando [XLow YLow XHigh YHigh]. Exemplo: blocobmp 100 100 selecionereaativa [0 0 50 50] salvebmp "meuarquivo.bmp tat carreguebitmap "meuarquivo.bmp ;Veja como somente parte da imagem foi recuperada

reaativa REAATIVA Este comando ir devolver a rea ativa atual definida por Selecionereaativa.

Exemplo: selecionereaativa [-10 -10 10 10] mostre reaativa

[-10 -10 10 10]

REDE Uma rede permite que o SuperLogo se comunique com o resto do mundo. Existem inmeras formas de uma rede e o SuperLogo usarem apenas um formato. Este formato conhecido como soquetes TCP/IP (conhecido originalmente como o protocolo padro da Internet). O SuperLogo pode receber dados de outros computadores ou enviar. Os outros computadores no precisam estar executando o SuperLogo, embora isto seja recomendvel. possvel enviar e receber dados em qualquer tipo de conexo. E voc pode ter pelo menos dois tipos de conexes, uma que voc iniciou e outra que voc aceitou. SuperLogo Networking assume que o protocolo TCP/IP est disponvel e que est operando por meio do que chamamos de WINSOCK.DLL (SuperLogo de 16 bits) ou WSOCK32.DLL (SuperLogo de 32 bits). A Microsoft oferece o protocolo TCP/IP para Windows 3.11 gratuitamente. A empresa inclui o protocolo TCP/IP em Windows 95 e Windows NT. Mas ele no precisa ser, necessariamente, instalado e configurado em ambas as plataformas. H tambm um protocolo TCP/IP de domnio pblico conhecido como Trumpet, que pode ser usado no Windows 3.1. As redes TCP/IP podem rodar sobre uma grande variedade de dispositivos, incluindo modems (PPP), cabos LapLink etc. A CompuServe, A Microsoft Network, a America Online e os provedores de servio Internet particulares (ISPs), todos oferecem acesso via TCP/IP aos computadores interconectados no mundo todo. Isto significa que voc pode estar no Brasil e seu amigo no Japo, ambos com o SuperLogo aberto, e mesmo assim um poder desenhar na tela do outro ou criar jogos em que ambos possam participar. Desde que um encontre o outro. Inicializerede Terminerede Aceiteconexo Noaceiteconexo Envievalorconexoaceita Recebavalorconexoaceita Ligueconexo

Desligueconexo Envievalorconexo Recebavalorconexo Dispositivos relacionados (alm do SuperLogo): DNS (Domain Name Service): O TCP/IP serve apenas para interpretar os endereos de mquina que possuem o seguinte formato: 21.100.200.5 (note que cada campo numrico precisa ser menor do que 255). Mas os nmeros no possuem nenhum significado e so difceis de serem memorizados pelos seres humanos, ento as mquinas registram nomes. O DNS basicamente uma mquina que mantm um banco de dados contendo a relao de interpretao desses nomes para nmeros. As mquinas DNS trocam informaes umas com as outras para compartilharem dados. O SuperLogo usa os nomes DNS quando tenta estabelecer uma conexo. O DNS no exigido para que a configurao de uma pequena rede TCP/IP mantenha-se funcionando. PING: um simples (geralmente um programa de linha de comando) teste de conecticidade de rede. A maioria das implementaes TCP/IP incluem um programa PING. Para us-lo, basta digitar "PING n_remoto", onde n_remoto a mquina com a qual voc deseja estabelecer uma conexo. O PING ir informar se capaz de localizar a mquina e quanto tempo demora para fazer isso. Enquanto o PING funcionar no preciso se preocupar com o uso de qualquer outro software TCP/IP (incluindo os comandos de rede do SuperLogo). O PING aceitar ambas as formas de endereamento (nmero ou nome). Se ele falhar como o nome, ento voc pode tentar com o nmero (caso o saiba). Se o nmero funciona, mas o nome no existe, isso significa que existe um problema com o DNS. Nenhum DNS: Caso no exista nenhum servidor DNS, voc pode usar o arquivo HOSTS (normalmente armazenado na pasta C:\Windows). A Microsoft freqentemente inclui no Windows um arquivo HOSTS chamado HOSTS.SAM (copie HOSTS.SAM para HOSTS. e edite-o). Trata-se simplesmente de um banco de dados que faz o mapeamento dos endereos em forma de nome para nmeros. Se usar um arquivo HOSTS, ento cada mquina da rede precisar usar uma cpia do mesmo arquivo HOSTS com o nome para mapear todas as mquinas na rede. Voc pode ter tanto o DNS quanto um arquivo HOSTS, normalmente este ltimo verificado antes do DNS ser solicitado.

Soquetes e Servios: Os servios so para os soquetes o que o DNS para os endereos de rede. Os servios mapeiam os "nomes de servio" como (TELNET, FTP e POPMAIL) para nmeros de portas de soquete. Voc pode encontrar um arquivo Services em C:\Windows, e poder consult-lo como desejar. O SuperLogo no compatvel com os nomes Service para nmeros de porta de soquete, ele usa apenas nmeros de porta de soquete. Mas se voc deseja conectar-se a um servio como o TELNET, ou operar como um servidor TELNET, ento basta pesquisar o arquivo Services. Geralmente os nmeros de soquete menores que 5000 so reservados para servios como TELNET e FTP. melhor usar nmeros de soquete maiores que 5000. Redes: Se voc tiver uma rede privada sob seu controle total, pode fazer praticamente tudo o que desejar. Se todas as mquinas forem PCs Windows, ento provavelmente voc ter que trabalhar sem um servidor DNS (e usar um arquivo HOSTS). Geralmente os servidores DNS so mquinas UNIX. Se voc faz parte de uma rede muito grande, precisar pedir o auxlio dos administradores da rede. Caso j esteja trabalhando em rede usando o Netware, bem possvel que esteja executando tanto o TCP/IP quanto o Netware simultaneamente (na verdade, isso muito simples no Windows 95). Provedores de servio: Alguns provedores de servio no oferecem a voc um nome, registrando seu nmero de TCP/IP "dinamicamente". Alguns provedores "recortam" completamente sua rede para acessar um aplicativo que lhe oferea todos os servios de que precisa. E talvez eles no ofeream o acesso WinSock. Se o Netscape funcionar, ento o SuperLogo tambm dever trabalhar normalmente. Permitir que voc receba dados uma tarefa mais complexa, o outro aplicativo precisa estar pronto para localiz-lo pelo nome ou pelo menos por um endereo de nmero, se eles usarem um arquivo HOSTS. Se voc sabe o nome de sua mquina, mas mas no sabe seu endereo, use o teste PING para obt-lo, basta digitarr PING nomedasuamquina e anotar o nmero que aparecer.

Inicializerede INICIALIZEREDE (INICIALIZEREDE synchronous_dns) Ativa o recurso de rede no SuperLogo. Como opo, voc pode cham-lo com o sinalizador SYNCHRONOUS_DNS como 0 (Asynchronous Default) ou 1

(Synchronous). O Asynchronous DNS mais seguro de usar (menos provvel de causar uma "queda" do SuperLogo durante uma pesquisa de nomes na rede). Mas algumas pilhas WinSock tm problemas com ele (por exemplo, o Trumpet WinSock). Caso aparea para voc a mensagem "Host no Encontrado" e voc tiver certeza de que o DNS est funcionando (por exemplo, o ping do host est OK) ento tente configurar seu sinalizador como 1. synchronous_dns:(INTEIRO) 1 para Synchronous e 0 para Asynchronous (padro). Exemplo: INICIALIZEREDE TERMINEREDE

Terminerede Desativa o recurso de rede no SuperLogo. Exemplo: INICIALIZEREDE TERMINEREDE

Aceiteconexo ACEITECONEXO socket enviar receber Este comando permitir que voc aceite uma conexo sobre rede no soquete. Para obter os dados recebidos chame Recebavalorconexoaceita em seu cdigo receber. Para desativar o recebimento chame o comando Noaceiteconexo. Quando os dados estiverem disponveis, o cdigo de receber ser executado. Quando voc realmente enviar os dados com Envievalorconexoaceita, ele poder retornar falso (indicando que ele no est pronto para enviar). Se isto acontecer, voc precisa esperar at que o cdigo enviar seja executado antes de tentar enviar os dados novamente. Lembre-se que voc no pode simplesmente enviar os dados a partir do retorno de chamada enviar, ele no ser executado a menos que o primeiro envio seja bloqueado.

soquete:(INTEIRO) um nmero utilizado para identificar qual soquete deve ser atendido. enviar:(LISTA) uma lista (pequena) dos comando do Logo (ou um nome de procedimento) para ser executado quando os dados esto prontos para serem enviados. receber:(LISTA) uma lista (pequena) dos comando do Logo (ou um nome de procedimento) para ser executado quando os dados esto disponveis. O retorno de chamada ENVIAR ser chamado na seguinte ordem pelas seguintes razes: 1: Problema Aceito com Sucesso 2: Conexo Aceita 3: Pronto para Enviar 4: Pronto para Enviar (depois de um envio de Erro) 5: Pronto para Enviar (depois de um envio de Erro) . . . n: Pronto para Enviar (depois de um envio de Erro)

O retorno de chamada RECEBER ser chamado na seguinte ordem pelas seguintes razes: 1: Dados Reais Recebidos 2: Dados Reais Recebidos . . . n: Dados Reais Recebidos Exemplo: inicializerede ; Inicia a rede ; Espere algum conect-lo no soquete 5124 mostre aceiteconexo 5124 [escreva [pronto para enviar]] [escreva [pronto para receber]] verd noaceiteconexo terminerede

Noaceiteconexo NOACEITECONEXO Este comando ir desabilitar as conexes de chegada aceitas. Exemplo: inicializerede ; Inicie a rede ; Espere algum conect-lo ao soquete 5124 mostre aceiteconexo 5124 [escreva [pronto para enviar]] [escreva [pronto para receber]] verd noaceiteconexo terminerede Envievalorconexoaceita ENVIEVALORCONEXOACEITA dados Este comando ir enviar a sada dados do soquete aceito. Quando voc enviar dados com este comando, ele pode retornar Falso (o que significa que ele no est pronto para enviar). Se isto acontecer, voc precisa esperar at que o cdigo de retorno de chamada enviar de Aceiteconexo seja executado e depois tente enviar os dados novamente.

dados:(LISTA) o valor dos dados que voc deseja enviar por meio da rede. Exemplo: (O receptor envia dados para quem estiver conectado) inicializerede ; Inicie a rede ; Espere algum conect-lo ao soquete 5124 mostre aceiteconexo 5124 [escreva [Ok para Enviar Novamente]] [] verd ; Conecte NomedaMinhaMquina no soquete 5124 (meu) mostre aceiteconexo "NomedaMinhaMquina 5124 [] [esc recebavalorconexoaceita] verd espere 100 ; Espere um pouco at que a conexo seja restabelecida

OK para Enviar Novamente OK para Enviar Novamente OK para Enviar Novamente mostre envievalorconexoaceita [Quem voc que est me chamando] ; Envie alguns dados verdadeiro espere 100 ; Espere um pouco antes que ns descartemos as coisas Quem voc que me chamou desligueconexo noaceiteconexo terminerede Recebavalorconexoaceita RECEBAVALORCONEXOACEITA Este comando ir devolver o valor dos ltimos dados de rede recebidos no soquete aceito. Ele mais adequado para chamar este procedimento em seu cdigo de retorno de chamada receber de seu comando Aceiteconexo. Ele ser perdido na prxima vez que a rede aceitar retorno de chamada de recebimento.

Exemplo:(O Iniciador (conector) envia dados para quem tiver aceito a conexo) inicializerede ; Inicie a rede ; Espere algum conect-lo ao soquete 5124 mostre aceiteconexo 5124 [] [escreva recebavalorconexoaceita] verd ; Conecte NomedaMinhaMquina no soquete 5124 (meu) mostre envievalorconexoaceita "NomedaMinhaMquina 5124 [escreva [Ok enviar de novo]] [] verd espere 100 ; Espere um pouco at que a conexo seja restabelecida OK para Enviar Novamente OK para Enviar Novamente OK para Enviar Novamente mostre envievalorconexo [Ol, obrigado por aceitar minha chamada] ; Envie alguns dados verd

espere 100 ; Espere um pouco antes que ns descartemos as coisas Ol, obrigado por aceitar minha chamada desligueconexo noaceiteconexo terminerede

Ligueconexo Ligueconexo NomedaMquina socket enviar receber Este comando permitir que voc inicie uma conexo sobre a rede para o soquete em NomedaMquina. Para desativar a conexo basta chamar o comando Desligueconexo. Para obter os dados recebidos chame Recebavalorconexoaceita em seu cdigo de retorno de chamada receber. Quando voc realmente enviar os dados com Envievalorconexoaceita, ele poder retornar Falso (indicando que ele no est pronto para enviar). Se isto acontecer, voc precisa esperar at que o cdigo de retorno de chamada enviar seja executado antes de tentar enviar os dados novamente. Lembre-se de que voc no pode simplesmente enviar os dados a partir do cdigo de retorno de chamada enviar, ele no ser executado a menos que o primeiro envio seja bloqueado. NomedaMquina:(LISTA) um nome de host TCP/IP do DNS ou um arquivo Hosts. soquete:(INTEIRO) um nmero usado para identificar qual soquete enviar. enviar:(LISTA) uma lista (pequena) de comandos do Logo (ou um nome de procedimento) para executar quando os dados estiverem prontos para serem enviados. receber:(LISTA) uma lista (pequena) de comandos do Logo (ou um nome de procedimento) para executar quando os dados estiverem prontos para serem enviados.. O retorno de chamada ENVIAR ser chamado na seguinte ordem pelas seguintes razes: 1: Problema Aceito com Sucesso 2: Conexo Aceita 3: Pronto para Enviar 4: Pronto para Enviar (depois de um envio de Erro) 5: Pronto para Enviar (depois de um envio de Erro) .

. . n: Pronto para Enviar (depois de um envio de Erro)

O retorno de chamada RECEBER ser chamado na seguinte ordem pelas seguintes razes: 1: Dados Reais Recebidos 2: Dados Reais no Recebidos

Exemplo:(este exemplo considera que a mquina remota est atenta ao soquete 5124) inicializerede ; Inicie a rede mostre ligueconexo "nomedamquinaremota 5124 [escreva [pronto para enviar novamente]] [escreva [Eu tenho algo]] verd desligueconexo terminerede Desligueconexo DESLIGUECONEXO Este comando ir desabilitar o recurso que permite o envio de dados. Exemplo: inicializerede ; Inicie a rede mostre ligueconexo "nomedamquinaremota 5124 [escreva [pronto para enviar novamente]] [escreva [Eu tenho algo]] verdadeiro desligueconexo terminerede

Envievalorconexo ENVIEVALORCONEXO dados

Este comando ir enviar os DADOS do soquete aberto. Quando voc enviar dados com este comando, ele pode retornar Falso (indicando que no estava pronto para enviar). Se isto acontecer, voc precisa esperar at que o procedimento de retorno de chamada enviar de LIGUECONEXO seja executado e depois tente enviar os dados novamente.

dados:(LISTA) o valor dos dados que voc deseja enviar por meio da rede. Exemplo:(O Iniciador (conector) envia dados para quem tiver aceito a conexo) inicializerede ; Inicie a rede ; Espere algum conect-lo ao soquete 5124 mostre aceiteconexo 5124 [] [escreva recebavalorconexoaceita] verd ; Conecte a NomedaMinhaMquina no soquete 5124 mostre aceiteconexo "NomedaMinhaMquina 5124 [escreva [OK enviar novamente]] [] verda espere 100 ; Espere um pouco at que a conexo seja restabelecida OK Enviar Novamente OK Enviar Novamente OK Enviar Novamente mostre envievalorconexo [Ol, obrigado por pegar minha chamada] ; Envie alguns dados verd espere 100 ; Espere um pouco antes que ns descartemos as coisas Ol, obrigado por pegar minha chamada desligueconexo noaceiteconexo terminerede Recebavalorconexo RECEBAVALORCONEXO Este comando ir emitir o valor dos ltimos dados de rede recebidos no soquete de conexo. melhor chamar este procedimento em seu cdigo de

retorno de chamada receber de seu comando Aceiteconexo. Ele ser perdido no prximo retorno de chamada recebido na rede. dados:(LISTA) o valor do ltimo dado recebido na rede. Exemplo:(O receptor Envia os Dados Para Quem Estiver Conectado) inicializerede ; Inicie a rede ; Espere algum conect-lo ao soquete 5124 mostre aceiteconexo 5124 [escreva [Ok Enviar Novamente]] [] verdadeiro ; Conecte a NomedaMinhaMquina no soquete 5124 (meu) mostre ligueconexo "NomedaMinhaMquina 5124 [] [escreva recebavalorconexo] verdadeiro espere 100 ; Espere um pouco at que a conexo seja restabelecida Ok Enviar Novamente Ok Enviar Novamente Ok Enviar Novamente mostre envievalorconexoaceita [Quem voc que me chamou] ; Envie alguns dados verdadeiro espere 100 ; Espere um pouco antes de descartarmos as coisas Quem voc que me chamou desligueconexo noaceiteconexo terminerede MULTIMDIA/MDIA/SOM Multimdia no Logo significa que voc, como um programador logo, pode trabalhar com dispositivos multimdia, como cd-players, placas de som e outros. Comandos MIDI Comandos Sound Wave Comandos de som Comandos de multimdia Comandos MIDI

Abramidi Fechemidi Mensagemmidi Tabela MIDI Controle de MIDI Glossrio MIDI Instrumentos MIDI Abramidi ABRAMIDI ABRAMIDI id Este comando abre o dispositivo MIDI e o acessa por meio de um driver de dispositivo MIDI. O driver de dispositivo escolhido depende de vrios fatores. No formato 1 (sem argumentos) o MIDI-MAPPER inicialmente usado. No formato 2 (argumento de id especificado) permite que voc escolha qualquer drive MIDI disponvel no seu sistema. O id inicia em 0 e vai at 1 menos o nmero de drivers MIDI disponveis. Para determinar qual id mapear para qual driver experimente diversos comandos ABRAMIDI que aumentam o id. ABRAMIDI ir exibir o nome do driver que est sendo utilizado.

Id:(INTEIRO) um ndice que especifica qual dispositivo MIDI voc deseja abrir. Quando no fornecido nenhum id, ele seleciona o driver de dispositivo MIDI MAPPER. Basicamente, o MIDI permite que voc gere som em sua placa de som. Voc precisar instalar os drivers do Windows apropriados para sua placa de som funcionar. A maioria das placas de som vem com player MIDI que basicamente l as mensagens MIDI a partir do arquivo e as repassa para o driver MIDI. Se voc tem seu player MIDI funcionando no Windows, ento o SuperLogo tambm dever funcionar. Os comandos MIDI no SuperLogo no utilizam arquivos MIDI (.MID ou .MDI). Em vez disso, voc deve construir diretamente seqncias de mensagens MIDI e envi-las para o dispositivo MIDI. bom lembrar que voc pode manipular (reproduzir) arquivos MIDI usando o comando MCI. Voc pode imaginar os comandos MIDI no SuperLogo como um teclado programvel. Ele opera somente se o vnculo entre seu teclado programvel (comandos MIDI) e seu alto-falante for MIDI.

Disponvel apenas para Windows 3.1 ou sistemas compatveis. Veja tambm os comandos Mensagemmidi e Fechemidi. Exemplo: ESCREVA ABRAMIDI [MIDI Mapper] FECHEMIDI Fechemidi FECHEMIDI Este comando fecha o dispositivo MIDI. No h entradas nem sadas. Veja tambm o comando Abramidi. Exemplo: ESCREVA ABRAMIDI [MIDI Mapper] FECHEMIDI Mensagemmidi MENSAGEMMIDI mensagem A entrada precisa ser uma lista. Voc j precisa conhecer o comando Abramidi para usar este comando. Mensagem:(LISTA) Uma mensagem MIDI em um dos 3 formatos explicados abaixo. Estes so os 3 formatos de mensagens MIDI, o formato Curto, o formato Longo e o formato Exclusivo do Sistema. Mensagem de formato Curto: [estado dado1 dado2] O formato Curto o mais comum e sempre uma lista de 3 inteiros. O primeiro inteiro conhecido como o BYTE DE ESTADO (tambm conhecido como um BYTE DE COMANDO). Ele precisa ser seguido de 2 bytes de dados,

mesmo que a mensagem exija somente 1 (basta usar 0). estado:(INTEIRO) Na terminologia MIDI este o byte de estado dado 1:(INTEIRO) Byte de dado 1 do cdigo de comando MIDI. dado 2:(INTEIRO) Byte de dado 2 do cdigo de comando MIDI. Mensagem de formato Longo: [estado dado1 dado2 estado dado1 dado2...] O formato Longo semelhante ao formato Curto, mas a lista de inteiros contm muitas mensagens curtas . Mensagem de formato Exclusivo de Sistema: [240 dado1 dado2 dado3 dado4...] O formato EXCLUSIVO DE SISTEMA precisa ser precedido do byte de estado exclusivo do sistema 240 (FO hex). Depois ele pode ser seguido por qualquer quantidade de bytes de dados. dado1:(INTEIRO) Primeiro byte de dado especfico para seu dispositivo MIDI. dado2:(INTEIRO) Primeiro byte de dado especfico para seu dispositivo MIDI. e assim por diante... Veja a Tabela MIDI que basicamente uma Especificao da Mensagem MIDI. Esta documentao no tem como objetivo ensinar tudo sobre o recurso MIDI. Mas h informao suficiente aqui para auxiliar nos primeiros passos. Para obter maiores informaes a respeito, experimente comprar um livro sobre MIDI (por exemplo, Midi basics, de Akira Otsuka e Akihiko Nakajima). Exemplo: ESCREVA ABRAMIDI [MIDI Mapper] MENSAGEMMIDI (LISTA 192+13 56 0 192+13 56 0)

MENSAGEMMIDI (LISTA 144+13 100 100) FECHEMIDI Tabela MIDI


NOME DE COMANDO CDIGO DE COMANDO BYTE DE DADO 1 BYTE DE DADO 2

Muda Controle 176 + Canal Muda Programa 192 + Canal Presso do Canal 208 + Canal Roda do Tom 224 + Canal Exclusivo do Sistema 240 Indefinido 241 Posio da Faixa 242 Seleo da Faixa 243 Indefinido 244 Indefinido 245 Solicitao de Tom 246 Fim do Exclusivo 247 Tempo do Relgio 248 Indefinido 249 Incio 250 Continua 251 Para 252 Indefinido 253 Indefinido 254 Cancela Sistema 255

0-127 Controle de MIDI0-127 MSB 0-127 Programa No usado 0-127 Presso No usado 0-127 LSB 0-127 MSB 0-127 Id Codifica Qualquer Nm. de Bytes No usado No usado 0-127 LSB 0-127 MSB 0-127 Faixa No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado No usado

Veja tambm o Glossrio MIDI.

Controle de MIDI
NOME DO COMANDO CDIGO DO COMANDO BYTE DE DADO 1 BYTE DE DADO 2

Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle Muda Controle

176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal 176 + Canal

0 Indefinido 0-127 MSB 1 Modulao 0-127 MSB 2 Controlador de Pausa 0-127 MSB 3 Contnuo 0-127 MSB 4 Controlador de Fundo 0-127 MSB 5 Durao do Portamento 0-127 MSB 6 Entrada de Dados 0-127 MSB 7 Volume Principal 0-127 MSB 8-31 Indefinido 0-127 MSB 32-63 LSB de 0-31 0-127 LSB 64 Pedal Descarregador 0:Off 127:On 65 Portamento 0:Off 127:On 66 Sostenuto 0:Off 127:On 67 Pedal Pianssimo 0:Off 127:On 68-92 Indefinido 0:Off 127:On 93 Refro 0:Off 127:On 94 Celeste 0:Off 127:On 95 Fraseador 0:Off 127:On 96 Entrada de Dados + 1 0:Off 127:On 97 Entrada de Dados - 1 0:Off 127:On 98-121 Indefinido 0:Off 127:On 122 Controle Local 0-127 123 Todas As Notas Desativadas 0 124 Modo Omni Desativado 0-15 125 Modo Omni Ativado 0 126 Mono on/Poly off 0 127 Poly on/Mono off 0

Veja tambm o Glossrio MIDI.

Glossrio MIDI Canal: um canal um nmero entre 0-15 que corresponde aos canais 1-16. Tom: um tom um nmero entre 0-127 e corresponde a uma nota no instrumento. Velocidade: a velocidade um nmero entre 0-127 e corresponde ao quo rpido a chave (ou string) pressionada ou solta (a maioria da terminologia refere-se aos teclados). 0 (zero) significa que est solto.

Presso: uma presso um nmero entre 0-127 e corresponde s caractersticas de como a chave acionada. Programa: um programa um nmero entre 0-127 e corresponde ao instrumento em uso. Veja tambm a tabela Instrumentos MIDI. MSB: Most Significant Bits (Bits Mais Significativos). LSB: Least Significant Bits (Bits Menos Significativos). Id Code: Usado para introduzir o Modo Exclusivo de Sistema, especificado pelo fabricante do dispositivo. Faixa: Uma faixa um rtmo

Instrumentos MIDI Piano 0 Piano de cauda acstico 1- Piano de cauda acstico 2- Piano de cauda eltrico 3- Piano Honky-tonk 4- Piano Rhodes 5- Piano Chorused 6- Cravo 7- Clarinete Percusso cromtica 8- Celeste 9- Sistrol 10- Caixinha de msica 11- Vibrafone 12- Marimba 13- Xilofone 14- Tubular bells 15- Ctara

rgo 16 rgo Hammond 17 rgo percussivo 18 - rgo de rock 19 rgo de igreja 20 rgo de tubos 21 Acordeo 22 Harmnica 23 Tango acordeo Guitarra 24 Guitarra acstica (nilon) 25 Guitarra acstica (ao) 26 Guitarra eltrica (jazz) 27 Guitarra eltrica (clean) 28 Guitarra eltrica (muted) 29 Guitarra overdriven 30 Guitarra de distoro 31 Guitarra harmnica Baixo 32 Baixo acstico 33 Baixo eltrico (finger) 34 Baixo eltrico (pick) 35 Baixo fretless 36 Baixo slap 1 37 Baixo slap 2 38 Baixo Synth 1 39 Baixo Synth 2 Cordas 40 Violino 41 Viola 42 Violoncelo 43 Contrabaixo 44 Tremolo strings 45 Pizzicato strings 46 Harpa orquestral 47 Tmpano

Conjunto 48 Conjunto de cordas 1 49 Conjunto de cordas 2 50 Sintetizador de cordas 1 51 Sintetizador de cordas 2 52 Choir aahs 53 Voice oohs 54 Sintetizador de voz 55 Orquestra hit Metais 56 Trumpete 57 Trombone 58 Tuba 59 Trumpete mudo 60 Corneta francesa 61 Brass section 62 Sintetizador de metais 1 63 - Sintetizador de metais 2 Instrumento de sopro 64 - Saxofone soprano 65 - Saxofone alto 66 Saxofone tenor 67 Saxofone bartono 68 Obo 69 Corneta inglesa 70 Fagote 71 Clarinete Instrumentos de tubo 72 Flautim 73 Flauta 74 Flauta de ponta 75 Flauta p 76- Bottle de sopro 77- Shakuhachi 78- Apito 79- Ocarina

Synth Lead 80 Lead 1 (square) 81 Lead 2 (sawtooth) 82 Lead 3 (caliope lead) 83 Lead 4 (chiff lead) 84 Lead 5 (charang) 85 Lead 6 (voice) 86 Lead 7 (fifths) 87 Lead 8 (brass + lead) Sintetizador almofada 88 Pad 1 (new age) 89 Pad 2 (warm) 90 Pad 3 (polysynth) 91 Pad 4 (choir) 92 Pad 5 (bowed) 93 Pad 6 (metallic) 94 Pad 7 (halo) 95 Pad 8 (sweep) Sintetizador de efeitos 96 FX 1 (chuva) 97 FX 2 (trilha sonora) 98 FX 3 (cristal) 99 FX4 (atmosfera) 100 FX 5 (brightness) 101 FX 6 (duendes) 102 FX 7 (ecos) 103 FX 8 (sci-fi) tnicos 104 Ctara 105 Banjo 106 Shamisen 107 Koto 108 Kalimba 109 Gaita de foles 110 Rabeca 111 Shanai

Percusso 112- Sino 113 Agog 114 Steel drums 115 Woodblock 116 Bateria taiko 117 Tom meldico 118 Sintetizador de bateria 119 Prato reverso Efeitos sonoros 120 Guitar fret noise 121 Som de respirao 122 Barulho do mar batendo em uma encosta 123 Barulho de pssaros 124 Campainha de telefone 125 Helicptero 126 Aplausos 127 Metralhadora

Comandos de som wave Toquewave Toquewave TOQUEWAVE arquivo sinalizadores O arquivo precisa ter extenso .WAV. Os sinalizadores descrevem como o som precisa ser reproduzido. Esse recurso tambm existe no comando MCI, mas com um controle mais preciso. Porm, esse som no exige uma placa de som real para ser utilizado. Existe um driver pblico da Microsoft chamado SPEAKER (.EXE, .DRV, .ZIP,... ), que capaz de emular os recursos do arquivo wave no alto-falante do PC. Arquivo (PALAVRA): O nome do arquivo .WAV. Sinalizadores(INTEIRO): Um sinalizador para indicar como voc quer que o som seja reproduzido. As opes so as seguintes:

0 = Synchronous - no retorna at que esteja concludo. 1 = Asynchronous - retorna imediatamente enquanto o som ainda est sendo reproduzido. 2 = No usa o som padro se aquele que foi especificado no puder ser encontrado. 4 = Som na memria (no aceito). 8 = Continua a fazer o loop do som at que outro comando de som seja chamado. 16 = No pra um som que j est sendo executado. Observao: esses tags podem ser combinados com outros. Exemplo: toquewave c:\\windows\\tada.wav 1 +8 toquewave [] 0

Comando de som Som Som som [freqncia durao] som [freqncia durao freqncia durao ...] A entrada tem de ser uma lista de pares. Cada par especifica uma freqncia (em hertz) e uma durao (tempo). O SupeLogo no pode iniciar outras aplicaes enquanto um vetor de som est sendo tocado. Quanto maior a freqncia, mais agudo ser o som. Quanto maior a durao, mais longo ser o som. O som s poder sair no PC Speaker e s funcionar no Windows. Exemplo: som [100 200] repita 4 [som [100 200 150 200 200 200]] Comandos multimdia Mci

Mci Mci lista-de-comandos-mci (Mci retorno lista-de-comandos-mci) A lista-de-comandos-mci precisa ser uma lista. O comando Mci pode ou no emitir uma lista dependendo do comando Mci que voc acionou. A interface Mci poderosa. Ela abre a porta para permitir que o Logo controle qualquer dispositivo multimdia Windows. Isso inclui placas de som, players de CDROM, filmes em vdeo e muito mais. Na segunda forma, se a lista-decomandos-mci usa a opo notificar, ento seu cdigo de retorno ser executado quando o comando for concludo. O mecanismo de retorno permite que voc, por exemplo, execute um arquivo wave e seja notificado quando ele for concludo, de modo que possa iniciar outro imediatamente, sem precisar esperar. O comando Mci projetado para permitir que voc, como um programador em Logo, escreva procedimentos para manipular dispositivos multimdia. Agora voc pode vincular sons s etapas de criao de um desenho. Pode narrar seu prprio slide show e at mesmo fazer uma gravao perguntando o nome do usurio com sua prpria voz. retorno:(LISTA) uma lista (pequena) de comandos do Logo (ou um nome de procedimento) para executar quando o comando Mci finalizado se voc usa a funo notificar em vez de esperar. A interface Mci permite que voc inicie um dispositivo e, opcionalmente, espere at que ele termine ou notifique-o quando tiver concludo a solicitao. Exemplo: aprenda it_som escreva mci [open c:\\windows\\media\\Chimes.wav type waveaudio alias wa1] escreva mci [open c:\\windows\\media\\logoff.wav type waveaudio alias wa2] mci [seek wa1 to start] mci [play wa1 wait] repita 2 [mci [seek wa2 to start] mci [play wa2 wait]] mci [close wa1]

mci [close wa2] fim Observao: o emulador de placa de som de alto-falantes da Microsoft NO compatvel com Mci. Abreviaes Esta seo tem como principal objetivo fornecer AJUDA online. Lista com algumas abreviaes Lista com algumas abreviaes + Esta uma abreviao para Soma. PT Abreviao de Paratrs. SPS Abreviao de Semprimeiros. SP Abreviao de Semprimeiro. SU Abreviao de Semltimo. TAT Abreviao de Tartaruga. LJC Abreviao de Limpejanelacomandos. CO Abreviao de Continue. ED Abreviao de Edite.

EL Abreviao de Elimine. ELARQ Abreviao de Eliminearq. PF Abreviao de Parafrente. DT Abreviao de Desapareatat. SF Abreviao de Sefalso. EUSELAPIS Abreviao de uselpis SV Abreviao de Severd. PE Abreviao de Paraesquerda. UB Abreviao de Useborracha. UL Abreviao de Uselpis. UI Abreviao de Useinversor. UN Abreviao de Usenada. ESC Abreviao de Escreva. LEIAC

Abreviao de Leiacaractere. LEIACS Abreviao de Leiacaracteres. LEIAL Abreviao de Leialista. PD Abreviao de Paradireita. LEIAP Abreviao de Leiapalavra. SN Abreviao de Sentena. AT Abreviao de Apareatat. Abreviao de Diferena. / Abreviao de Quociente. = Abreviao de Soiguais. > Abreviao de maior. < Abreviao ee menor. * Abreviao de Produto.

Crditos Ncleo de Informtica Aplicada Educao (Nied/Unicamp) Coordenao geral Jos Armando Valente Coordenador do Ncleo Docente do Instituto de Artes - Departamento de Multimeios da Unicamp Coordenao de desenvolvimento Helosa Vieira da Rocha Pesquisadora do Ncleo Docente do Instituto de Computao da Unicamp Coordenao pedaggica Fernanda Maria Pereira Freire Maria Ceclia Martins Maria Elisabette Brisola Brito Prado Pesquisadoras do Ncleo Equipe de desenvolvimento Alexandre Oberhuber Daniel Henrique Alves Ivo Jos Garcia dos Santos Estagirios do Ncleo e alunos da Unicamp

Divertire/Melhoramentos Diretora executiva Andra Caran Diretor de desenvolvimento Carlos Seabra

Gerente editorial Bete Abreu Produo Alexandre Hakomaru Wallace Garcia Marco Pace Vitor Novais Ilustraes Mrcia Alevi Multimdia Danilo Oliveira, Alexandre Hakomaru Embalagem Nathalia S Cavalcante Um agradecimento especial a todas as pessoas que participaram do beta-teste.