M - LOGO - Provveditorato Viterbo
Transcript
M - LOGO - Provveditorato Viterbo
ALCEO SELVI M- LOGO SPUNTI OPERATIVI GIOCHI ED ESPERIENZE DI MATEMATICA CON LA TARTARUGA SOMMARIO iIndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. pag 3 Premessa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 5 1. Elementi introduttivi . . . . . . . . . . . . . . . . . 9 " 2. La tartaruga e lo schermo . . . . . . . . . . . . . . " 15 3. Poligoni con il comando ripeti . . . . . . . . . . . " 25 4. Le "geometrie" del Logo . . . . . . . . . . . . . . . " 35 5. Le procedure e il foglio. . . . . . . . . . . . . . . . . " 42 6. Spazio di lavoro e archivi . . . . . . . . . . . . . . . " 53 7. Procedure e variabili . . . . . . . . . . . . . . . . . . " 59 8. Trattamento dei numeri. . . . . . . . . . . . . . . . . ." 71 9. Cerchi e archi di raggio variabile. . . . . . . .. . " 79 10 Procedure ricorsive . . . . . . . . . . . . . . . . . . " 83 11. Creazione e uso di funzioni . . . . . . . . . . . . . . ." 89 12. Isometrie e funzioni trigonometriche . . . . . . . . " 107 13. Le liste e le parole . . . . . . . . . . . . . . . . . . . . " 113 Appendice A /1: Glossario M-Logo . . . . . . . . . . . " 121 Appendice A /2: Comandi Logo IBM . . . . . . . . . . " 149 Appendice B: Archivi e procedure M-Logo . . . . . " 155 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 176 Indice in dettaglio. . . . . . . . . . . . . . . . . . . . . . . . . " 177 1. Elementi pag. introduttivi PREFAZIONE IL LOGO NELLA DIDATTICA DI BASE I Programmi per la scuola primaria prescrivono, anche se sommessamente, l’introduzione dell’informatica fra le attività dell’area matematica e ciò, a parer nostro, può produrre nello scenario scolastico due effetti importanti: una maggiore apertura dei docenti all’uso dei computer e la conseguente necessità di trovare strade di accesso “soffice” alla programmazione di tali macchine. È da precisare, intanto, che il computer può entrare nella scuola in due modi abbastanza diversi, ciascuno corrispondente ad una diversa impostazione didattica. Può entrarvi come macchina per insegnare, ossia come semplice audiovisivo, anche se assai più potente di quelli attualmente in uso (videoregistratori, lavagne luminose, proiettori, ...). È l’utilizzazione più semplice e, forse, anche un po’ sorpassata, che non richiede un grande impegno al docente, soprattutto se egli utilizza software prefabbricato, ossia programmi didattici e videogiochi reperibili in commercio. Può entrarvi, però, anche come strumento che metta il bambino in condizione di imparare ad imparare, obiettivo questo didatticamente assai più ambizioso. In tal caso, con l’aiuto dell’elaboratore si crea un particolare ambiente di apprendimento, un laboratorio per imparare a organizzare il pensiero, ossia luogo dove il bambino sviluppa e mette alla prova quelle capacità che gli occorrono per confrontarsi criticamente con la realtà. In questa seconda prospettiva il Basic poco si presta ad esser presentato come primo linguaggio informatico. La sua intrinseca semplicità, è di natura meccanica, non culturale. Questo significa che saper usare il Basic implica necessariamente l’acquisizione di nozioni di «basso livello», calibrate sulla «meccanica» del particolare tipo di elaboratore usato. Il linguaggio Logo si propone, invece, come linguaggio di programmazione semplice, moderno, adatto all’uso scolastico elementare, in quanto ideato appositamente per scopi didattici, e largamente applicabile su elaboratori di diverso tipo. 5 1. Elementi introduttivi pag. 6 Il Logo intende essere però assai di più: vuoI proporsi come strumento docile e potente per facilitare l’applicazione delle metodiche per l’apprendimento attivo, suggerite nei Programmi vigenti. Con il Logo un elaboratore diventa una sorta di laboratorio per imparare ad organizzare il pensiero. La caratteristica più peculiare del Logo, che lo rende accessibile già a bambini di cinque anni, è la possibilità offerta all’utente di colloquiare in modo amichevole con un «animaletto »,la Tartaruga, «creatura» di forma triangolare che può «camminare» lungo lo schermo lasciando una traccia luminosa. Essa può essere definita anche oggetto-per-pensare, con cui il bambino sviluppa la propria conoscenza in situazioni naturali, mediante attività di esplorazione e di scoperta personali. La Tartaruga è in grado di ricevere ordini in linguaggio Tartaruga, linguaggio assai semplice, composto da pochissimi comandi del tipo: vai «avanti», vai «ndietro», gira a «destra», e così via. Il linguaggio Tartaruga costituisce il repertorio grafico del linguaggio Logo, che, nella sua integrità, occorre sottolinearlo, non è un linguaggio adatto solo per far giocare i bambini, ma è uno dei linguaggi di programmazione tra i più evoluti e potenti. La sfida eccitante che all’inizio si propone con Logo al bambino è quella di imparare a muovere la Tartaruga per farle realizzare disegni e progetti grafici. Sul video il bambino ottiene così immagini suggestive, che concretizzano i suoi progetti e che gli consentono di riflettere sul prodotto del proprio pensiero. In seguito egli potrà essere sollecitato a far uso di un’altra notevole caratteristica del Logo: il suo impianto procedurale. Questo, in pratica, consiste nella possibilità di risolvere un problema scomponendolo in sottoproblemi, ciascuno dei quali viene risolto da procedure (ossia da programmi), distinte, a cui l’utente può assegnare un nome scelto a piacere. Questa facoltà data al bambino di scomporre un problema complesso in problemi semplici lo incoraggia anche ad estendere il linguaggio base, inventando nuove istruzioni «Tartaruga» e potenziando, in tal modo, le proprie capacità simboliche. Va sottolineato che imparare ad usare gli elaboratori significa non tanto imparare un qualsiasi linguaggio di programmazione, quanto imparare ad usare tale linguaggio per «insegnare al computer» come risolvere un problema. 1. Elementi introduttivi Per fare un paragone, stiamo qui parlando della stessa differenza che c’è tra l’imparare a leggere e scrivere e imparare ad esprimere mediante la scrittura proprie idee e pensieri. Le prime esperienze in un ambiente di apprendimento basato su Logo avranno dunque non tanto l’obiettivo di far acquisire regole formali di comunicazione uomo-macchina, quanto piuttosto perseguiranno lo scopo di allenare i bambini al pensiero logico e di sviluppare le loro personali capacità di organizzazione spaziale. A proposito di organizzazione spaziale, non va sottovalutata la connessione esistente tra Logo e una disciplina di studio talvolta trascurata nella scuola di base: la geometria. L’approccio geometrico suggerito da Logo è più «naturale», sia rispetto a quello assiomatico della geometria euclidea, sia rispetto a quello analitico della geometria cartesiana. La geometria della Tartaruga è innanzitutto costruttiva: con il Logo il bambino impara la geometria perché deve insegnarla alla Tartaruga partendo dalle proprie esperienze spaziali. Questo semplice fatto apre vasti campi di applicazione della didattica della matematica, non solo per quella di base, ma dell’intero curriculo di studi. Per concludere, vogliamo ribadire il rilevante aspetto creativo che implica l’impiego del Logo nella didattica. Con o senza elaboratore, se desideriamo formare individui capaci di pensiero originale, per agevolare il progresso della società di domani, è evidente, allora, che una formazione intellettuale fondata su una scoperta attiva della realtà appare superiore rispetto a quella che consiste semplicemente nel fornire ai giovani traguardi precostituiti da perseguire e verità predefinite in cui credere. pag. 7 1. Elementi introduttivi pag. 8 1. Elementi pag. introduttivi ELEMENTI INTRODUTTIVI IL SISTEMA DI ELABORAZIONE DI DATI Per capire come funziona un elaboratore elettronico (o computer) confrontalo con una macchina che, per qualche aspetto, gli somiglia: una lavatrice. Come si può sintetizzare il lavoro che compie una lavatrice? In un primo momento la biancheria sporca viene introdotta insieme al detersivo, poi viene eseguito il lavaggio e alla fine viene estratta la biancheria pulita. Tutto questo procedimento è riassunto nello schema di Figura 1. Figura 1 biancheria sporca lavatrice biancheria pulita ENTRATA ELABORAZIONE USCITA La lavatrice non compie sempre le stesse azioni, ma è possibile scegliere il programma più adatto per il tipo di biancheria che si vuole lavare. Un programma è una sequenza di istruzioni che dice alla lavatrice che cosa deve fare (scaldare l’acqua, ruotare il cestello, ..... ). Mentre la lavatrice compie le azioni definite dal programma non è necessario alcun intervento esterno. Esiste dunque una fase di «trattazione automatica» della biancheria e la lavatrice può essere considerata come un esecutore automatico di programmi di lavaggio. In generale possiamo pensare a un esecutore automatico come a una macchina che esegue un insieme di azioni senza l’intervento dell’uomo. Per compiere il suo lavoro l''esecutore ha bisogno di un programma, ossia una lista di istruzioni scritte in un particolare linguaggio. 9 1. Elementi pag. introduttivi 10 Osserva ora le analogie che vi sono nel passare dalla «elaboratrice di biancheria» all’elaboratore elettronico. In Figura 2 è riportato uno schema analogo al precedente. Figura 2 dati iniziali ENTRATA elaboratore + programma ELABORAZIONE dati finali USCITA Come la lavatrice è un esecutore che aiuta a risolvere il problema del bucato, il computer può essere visto come un esecutore che aiuta a risolvere altri tipi di problemi. Il computer riceve informazioni (dati iniziali), li elabora e fornisce altre informazioni come risultati (dati finali). Anche in questo caso è indispensabile che qualcuno fornisca all’elaboratore un programma, o più programmi, senza i quali il computer sarebbe soltanto un insieme di circuiti e di altri dispositivi inutilizzabili. Il computer, dopo aver acquisito i programmi necessari, può allora compiere da solo una serie di operazioni in modo automatico. Pian piano, lavorando con questi appunti, sarai in grado di realizzare programmi per risolvere particolari problemi e potrai quindi concepire l’elaboratore come una specie di servitore ai tuoi ordini. Attenzione però: il computer è molto veloce, ma sa compiere solo alcune azioni, ognuna delle quali corrisponde a un particolare comando, ossia a una parola scritta in un particolare linguaggio che il tuo esecutore è in grado di comprendere. Le frasi dentro le quali si scrivono i comandi si chiamano istruzioni. Ecco alcune istruzioni che chiedono al computer di eseguire lo stesso compito, ossia sottrarre 4 da 10, ma in linguaggi diversi: STAMPA 10 - 4 PRINT 10 - 4 WRITE (10 - 4) linguaggio LOGO linguaggio BASIC linguaggio PASCAL Ogni riga rappresenta una istruzione, mentre STAMPA, PRINT e WRITE sono comandi. Ciascuna delle tre fasi rappresentata nello schema della Figura 2 viene svolta da una parte diversa del computer, che può essere pensato come un sistema, cioè come un insieme di dispositivi. Questi dispositivi sono: 1. Elementi pag. introduttivi a) L'unità d’ingresso (o di input), che ha la funzione di ricevere le informazioni in arrivo dall’esterno. b) L’unità centrale di elaborazione, che ha il compito di elaborare, cioè di trasformare le informazioni ricevute ricavandone delle nuove. Una particolare parte dell’unità centrale, chiamata memoria, serve per registrare sia i programmi, sia le informazioni. c) L’unità di uscita (o di output), che ha la funzione di comunicare all’esterno i risultati. Le unità d’ingresso e d’uscita vengono anche dette periferiche. Nella Figura 3, riportata sotto, è schematizzato un sistema di elaborazione di dati simile a quello che utilizzerai. Come puoi ben vedere nella Figura stessa, sono quattro le componenti fondamentali di questo sistema e sono: la tastiera, l'unità centrale, il monitor e l' unità a disco (drive). La tastiera è un’unità d’ingresso in quanto con essa possiamo scrivere alcune informazioni e farle ricevere dal computer. Il monitor è una unità di uscita: i risultati delle elaborazioni sono visualizzati mediante l’accensione di puntini luminosi (pixel) sullo schermo. Il drive è un’unità sia d’ingresso che di uscita: può infatti trasferire informazioni da un supporto magnetico (il dischetto) alla memoria del computer o viceversa. All'interno dell'unità centrale sono dislocati, infine, tutti i dispositivi elettronici che elaborano i dati che vi vengono inseriti con la tastiera. Molto spesso i personal computer hanno due o più drive. Per semplicità noi penseremo sempre che tu abbia a disposizione un solo drive. Anche se ve ne sono altri tutte le operazioni possono essere pensate riferite al drive chiamato A. unità centrale unità a disco (drive) monitor tastiera Figura 3 11 1. Elementi introduttivi Il sistema di dispositivi, meccanici ed elettronici, che costituiscono il computer viene spesso chiamato con il termine hardware, mentre i programmi che possono essere eseguiti dall’elaboratore vengono detti software. Per controllare le varie parti del sistema hardware è necessario un insieme di programmi che viene chiamato sistema operativo. Il sistema operativo controlla lo svolgimento degli altri programmi, permette di utilizzare le periferiche e serve anche per organizzare le informazioni che si trovano sui dischetti. Il sistema operativo che useremo si chiama DOS, sigla che significa Sistema Operativo su Disco. SCRIVERE CON LA TASTIERA La tastiera di un computer è molto simile a quella di una macchina da scrivere, con la differenza che, battendo (in computerese si dice digitando) i tasti , i caratteri non vengono scritti sulla carta, ma sullo schermo. Il computer gestisce lo schermo molto meglio di quanto si possa fare con un foglio di carta e ti permette, con estrema facilità, di correggere errori di scrittura, di cancellare, di inserire caratteri. Saprai sempre dove verrà scritto il carattere che batterai, perché nel punto corrispondente sullo schermo ci sarà un trattino o un quadratino lampeggiante, che si chiama cursore. Nella Figura 4, riportata nella pagina a fronte, è riprodotta una delle tastiere più utilizzate. Non importa se la tastiera che userai sarà diversa. Osserva quella della figura per notare alcune caratteristiche comuni a tutte le tastiere. Oltre ai tasti con le lettere, ve ne sono di altri tre tipi: a) tasti con due simboli (per esempio 5 e % oppure : e [ ); b) tasti funzionali (FI, F2...); c) tasti speciali con scritte e segni particolari (per esempio <INVIO> oppure <ALT>). Imparerai a usare la tastiera gradualmente! Per il momento vanno fatte alcune osservazioni generali. Per ottenere il carattere che si trova nella parte superiore di ogni tasto con due simboli, devi premere quest’ultimo mentre tieni schiacciato il tasto pag. 12 1. Elementi pag. introduttivi 13 Figura 4 Tasto SHIFT ALT GR + è → [ ALT GR + * → ] Frecce che comandaINVIO = ENTER = RETURN no i movimenti del cursore nel Foglio. <SHIFT>. Nella tastiera della Figura lo <SHIFT> è rappresentato con una freccia rivolta verso l’alto. Per esempio. se vuoi ottenere sullo schermo il punto esclamativo devi premere lo <SHlFT> e il tasto dove compare 1 e !. Quando in questi appunti si farà riferimento ai tasti funzionali o a quelli speciali verrà usata una notazione particolare. Se, per esempio, dovrai battere il tasto con scritto sopra F3, verrà scritto: batti <F3> , mettendo F3 fra i segni < e >, in modo che tu capisca che non devi scrivere i due caratteri F e 3, ma semplicemente battere il tasto funzionale corrispondente. Se digiti una informazione, essa compare sul video ma deve essere inviata all’unità centrale del computer, dopo aver controllato che sia corretta e completa. Per ferla entrare nell’elaboratore devi premere un tasto speciale che nelle tastiere può essere indicato con diversi nomi o segni (IMMIS, RETURN, ENTER...). Noi lo indicheremo sempre con <INVIO>. Particolarmente utile è anche la coppia che chiameremo tasti di interruzione in quanto serve per interrompere l’esecuzione di un programma. In MLOGO tale coppia è <CTRL> <PAUSA>. Ciò vuol dire che il tasto <CTRL> (abbreviazione di CONTROL) deve essere tenuto premuto mentre si batte il tasto <PAUSA>. Userai molto spesso la barra spaziatrice, che riconoscerai immediatamente nella tua tastiera perché è molto lunga. Essa serve a battere uno «spazio bianco» per separare una parola dall’altra. Ricorda che lo spazio bianco è per il computer un carattere come tutti gli altri e non, come si pensa nello scrivere con la penna, l’assenza di un carattere. Esso può quindi essere cancellato. 1. Elementi pag. introduttivi 14 Per muoverti all’interno del testo che devi scrivere hai a disposizione i tasti freccia, mentre per cancellare un carattere potrai utilizzare il tasto <BACKSPACE> (quello con una freccia orizzontale rivolta a sinistra), che fa fare un passo indietro al cursore eliminando il carattere che lo precede. Tabella 1 TASTI SPECIALI PER: DIGITA: far fare un passo indietro al cursore cancellando il carattere precedente BACKSPACE selezionare il carattere in alto di un tasto che ne ha due SHIFT far eseguire al computer la istruzione appena battuta o far acquisire il dato appena scritto INVIO muovere il cursore di uno spazio a destra senza cancellare TASTO FRECCIA muovere il cursore di uno spazio a sinistra senza cancellare TASTO FRECCIA battere uno «spazio bianco» per separare una parola dall’altra BARRA SPAZIO interrompere l’esecuzione di un programma TASTI INTERRUZ. PROGR. 2. La tartaruga e lo schermo LA TARTARUGA E LO SCHERMO ENTRIAMO NEL MONDO DEL LOGO Le operazioni che dovrai compiere per poter lavorare con il linguaggio LOGO sono le seguenti: 1) accendi il computer; 2) restando in ambiente DOS, inserisci il dischetto del LOGO nel drive denominato A ; 3) digita < A: > < INVIO> 4) digita <M-LOGO> < INVIO> Potrai notare che ogni volta che è in corso un’operazione di lettura (o, come vedremo in seguito, di scrittura), accanto al drive si accende una piccola luce ( verde, oppure rossa). Non estrarre o inserire mai un disco mentre questa luce è accesa! Al termine dell’operazione di lettura , ossia allo spegnersi della piccola luce, dovrebbe comparire la seguente scritta: M-LOGO per Olivetti M24 vers. 1.00 prodotto da RISCO srl - 04.04.85 ?RECUPERA “CORREDO. ML Se l’ultima riga della scritta compare in parte, oppure non compare affatto, digita la seguente istruzione: RECUPERA “CORREDO. ML < INVIO> Digita poi: PT MT < INVIO> Al centro dello schermo vedrai comparire un triangolino luminoso: è il “naso” della tartaruga che aspetta i tuoi comandi. Li potrai scrivere nello spazio che sta nella parte bassa dello schermo dove vedi lampeggiare un quadratino luminoso (il cursore), che sta a destra di un punto interrogativo. pag. 15 pag. 16 Manuale Logo LA TARTARUGA ESPLORA LO SCHERMO A questo punto potrai utilizzare una particolare "matita elettronica" che sarà al tuo servizio per eseguire tanti disegni: la tartaruga. FIGURA 1 Quando il linguaggio LOGO venne utilizzato le prime volte la tartaruga era un minuscolo robot meccanico che si muoveva sul pavimento e somigliava abbastanza a una tartaruga vera. Adesso nel computer la tartaruga è simboleggiata da un triangolino che somiglia alla punta di una freccia. Eccolo rappresentata sopra nella figura 1. La punta indica la direzione verso cui la tartaruga «guarda». Quando inizierai a lavorare con la tartaruga, la troverai al centro dello schermo, come appare nella figura. Chiameremo questo punto TANA. Lo schermo che utilizzerai più spesso è quello misto, ossia diviso in due parti: la parte superiore è riservata a ciò che devi disegnare, ossia alla grafica; quella inferiore, dove ritroverai il punto interrogativo e il cursore, è dedicata invece a ciò che devi scrivere, cioè al testo delle istruzioni. Puoi pensare che la tartaruga sia come una penna che, spostandosi su un foglio, lascia una traccia: il suo foglio è lo schermo e la traccia è un insieme di pixel che si accendono quando, nello spostarsi, il triangolino ci passa sopra. Ogni pixel corrisponde a un passo della tartaruga. La tartaruga ha alcune caratteristiche che ne determinano lo stato: a) si trova in una determinata posizione dello schermo; b) ha una direzione e un verso, indicati dalla punta della freccia, che determinano il suo orientamento; c) ha una penna che può tenere giù, per disegnare, o su per spostarsi senza disegnare; d) può essere visibile (in mostra), oppure invisibile (nascosta). pag. 2. La tartaruga e lo schermo E' anche possibile trasformare la penna in gomma, per cancellare linee, e viceversa la gomma in penna. Nella Tabella 1 riportata sotto, ci sono i comandi più semplici che modificano lo stato della tartaruga, mentre nella Tabella 2, che trovi nella pagina seguente, vi sono quelli, di uso più comune, relativi alla gestione dello schermo. Come puoi osservare nella tabella in basso, alcuni comandi sono seguiti da una parola scritta fra i segni < e >. In questi casi vogliamo indicarti che il comando deve essere accompagnato da un dato, cioè da un valore numerico necessario per la sua esecuzione. AVANTI, per esempio, deve essere seguito da un certo numero di passi. Chiameremo argomento ogni informazione che dobbiamo fornire a un comando affinché quest’ultimo possa essere eseguito correttamente. COMANDI RELATIVI ALLO STATO DELLA TARTARUGA AVANTI <PASSI> La tartaruga si sposta in avanti del numero di passi indicato nella stessa direzione. (Abbreviazione: A) INDIETRO <PASSI> La tartaruga si sposta indietro del numero di passi indicato. nella stessa direzione. (Abbreviazione: I) DESTRA <ANGOLO> La tartaruga compie una rotazione a destra del numero di gradi indicato, senza cambiare posizione, . (Abbreviazione: D) SINISTRA <ANGOLO> La tartaruga compie una rotazione a sinistra del numero di gradi indicato, senza cambiare laposizione. (Abbreviazione: S) TANA Riporta la tartaruga al centro dello schermo con direzione verso l’alto; se la penna è abbassata viene tracciata una linea. SU La tartaruga solleva la penna e, quando si sposta, non lascia la traccia sullo schermo . GIU La tartaruga abbassa la penna e, quando si sposta, lascia la traccia sullo schermo . CANCEPENNA La penna si trasforma in gomma, cancellando la traccia dove la tartaruga passa. Per trasformare la gomma in penna basta utilizzare GlU. NASTARTA Nasconde la tartaruga (Abbreviazione: NT) MOSTARTA Mostra la tartaruga. (Abbreviazione: MT) TABELLA 1 17 pag. 18 Manuale Logo COMANDI RELATIVI ALLO STATO DELLO SCHERMO PULISCISCHERMO (PS) Viene cancellato il disegno che è sullo schermo e la tartaruga viene riportata al centro dello schermo con direzione verso l’alto. PULISCITESTO (PT) Viene cancellata relativa al testo. ASCAMPO “CHIUSO Non permette alla tartaruga margini dello schermo. ASCAMPO “APERTO Permette alla tartaruga di spostarsi al di fuori dei margini ello schermo (senza essere visibile). ASCAMPO “CIRCOLARE Permette alla tartaruga di uscire dai margini dello schermo e di rientrare dalla parte opposta. E' lo stato che si ha quando si carica il Logo. ASSCHERMO “TARTA Rende visibile l’intero schermo grafico. ASSCHERMO “MISTO ASSCHERMO “COMANDI la parte dello di schermo uscire dai Divide lo schermo in modo da avere presenti contemporaneamente sia la grafica che il testo; viene così nascosta una parte dello schermo grafico. Riserva al testo tutto lo schermo, coprendo l’intero campo d’azione della tartaruga. TABELLA 2 Durante lo svolgimento delle esercitazioni seguenti, se hai difficoltà ad eseguire un comando oppure a rispondere ad una domanda, puoi consultare le tabelle 1 e 2. Avvertenza importante! Se lavori con M-LOGO e hai una stampante, puoi ottenere su carta una copia del disegno che realizzerai. Per far questo, prima di caricare lo M-LOGO, è necessario che, quando compare il segno A>, con il dischetto di M-LOGO inserito nel drive tu dia il comando DOS: GRAPHICS <INVIO>. Iniziamo ora a lavorare con la tartaruga. Batti, usando il tasto del numero 0 (e non quello della lettera O!): AVANTI 50 <INVIO> La tartaruga si sposta di 50 passi nella direzione indicata dal triangolino e quindi modifica la sua posizione, ma non la sua direzione. 2. La tartaruga e lo schermo Ricordiamo ancora una volta che ogni istruzione deve essere comunicata al computer battendo il tasto <INVIO>. D’ora in avanti non indicheremo più quando dovrai utilizzare questo tasto, ma tu non dimenticarlo! Prova a vedere che cosa succede se batti solamente: AVANTI , oppure se, senza lasciare lo spazio, batti: AVANTI50 Potrai notare che il computer risponde con un messaggio che ti segnala l’errore. Leggi sempre con attenzione i messaggi che il computer ti invia, perché possono essere utili per comprendere quali correzioni devi fare. Invece della parola AVANTI puoi usare la sua abbreviazione A. Prova a dare il comando: A 30 La tartaruga va sempre avanti per la sua strada, sulla verticale dello schermo. Quanti passi ha finora fatto? Che cosa si può fare per farle cambiare direzione? Batti: DESTRA 30 Che cosa osservi? Il comando DESTRA ha una sintassi analoga ad AVANTI, ma serve per cambiare la direzione della tartaruga, senza però modificare la posizione dove sta. L’argomento numerico di DESTRA non indica quindi un numero di passi ma un numero di gradi sessagesimali, ossia l'ampiezza angolare del cambiamento di direzione. Per far procedere la tartaruga lungo la sua nuova direzione devi utilizzare di nuovo AVANTI. Prova con: A 20 Se vuoi ricominciare a disegnare, partendo con la tartaruga nel centro dello schermo, devi dare il comando: TANA Che cosa fa la tartaruga? Digita ancora: A 20 e poi PS Che cosa accade? Anzichè scrivere e far eseguire una istruzione alla volta, in LOGO è possibile scriverne più di una su una stessa riga, separandole tra loro con uno spazio bianco. Verranno eseguite in sequenza, cioè una dopo l’altra, battendo alla fine il tasto <INVIO>. pag. 19 pag. 20 Manuale Logo Possiamo quindi ottenere di nuovo l'intera traccia precedente con: A 50 A 30 D 30 A 20 Ritorna alla tana e pulisci lo schermo con: PS Ogni volta che inizi un nuovo disegno devi dare questa istruzione. Prova ora: INDIETRO 100 , abbreviabile con I 100 La tartaruga è andata nella zone dello schermo in cui scrivi le istruzioni. Con l’aiuto della tabella 2, trova il modo per far scomparire tutte le istruzioni. Dopo aver riportato la tartaruga in tana con il comando PS, prova a digitare i comandi: S 70 A 250 Che cosa osservi? Per evitare che la tartaruga esca dallo schermo e rientri dalla parte opposta puoi utilizzare il comando: ASCAMPO "CHIUSO. Dopo averlo fornito, prova a ripetere le istruzioni precedenti e osserva che cosa accade. Per tornare alla situazione in cui la tartaruga esce dallo schermo e vi ritorna dalla parte opposta, puoi utilizzare il comando: ASCAMPO "CIRCOLARE. Digita ora i comandi per riportare la tartaruga in tana e ripulire lo schermo. Digita poi il comando: ASCAMPO "APERTO seguito da: S 70 A 250. Quale effetto diverso osservi rispetto alle due precedeni situazioni? Rimetti la tartaruga in tana e ripulisci lo schermo. Ora vogliamo ottenere un tratteggio come questo: Per prima cosa devi ruotare a destra la tartaruga di 90 gradi con l’istruzione: D 90 e devi farla procedere di un tratto, che scegliamo di 20 passi, con: A 20. A questo punto la tartaruga deve compiere un tratto senza lasciare la traccia e devi quindi sollevare la penna con: SU 2. La tartaruga e lo schermo Per farla procedere di altri 20 passi devi digitare: A 20 e devi poi riabbassare la penna con: GIU e procedere di nuovo per un tratto analogo al precedente con: A 20 e poi ancora: SU A 20 GIU A 20 SU A 20 GIU A 20. Infine per far scomparire la tartaruga devi usare: NASTARTA abbreviabile con NT. Abbiamo finito. L’insieme delle istruzioni date costituisce il programma per realizzare il tratteggio. Puoi ottenere lo stesso disegno anche con un programma diverso. Dopo essere ritornato nelle condizioni iniziali (non dimenticare di far ricomparire la tartaruga con: MT) procedi così: 1) ruota la tartaruga con: D 90 2) disegna un tratto orizzontale di 140 passi con: A 140 3) falla tornare indietro di 20 passi: I 20 4) trasforma la penna in gomma: CANCEPENNA 5) falla tornare indietro di 20 passi: I 20 6) trasforma la gomma in penna con: GIU 7) ripeti per due volte i comandi da 3 - 4 - 5 - 6 8) nascondi la tartaruga con: NT Se poi vuoi far ritornare la tartaruga in tana, devi infine dare i comandi: TANA MT Per finire, utilizza i comandi che hai imparato per scrivere prima sul quaderno e fare poi eseguire dal computer un programma che realizzi un disegno di tua scelta. Se lavori con lo M-LOGO e hai dato il comando Graphics, puoi anche stampare il tuo disegno. Basta premere il tasto <STAMP>. Ricorda però che Graphics deve essere battuto prima di caricare lo M-LOGO. SCHIACCIAMENTO Abbiamo già detto che le immagini si formano sullo schermo del monitor mediante l’accensione di pixel. La pagina su cui scrive il computer può quindi essere vista proprio come un foglio a quadretti, dove però ogni quadretto è acceso o spento. pag. 21 pag. 22 Manuale Logo Quando disegni con la tartaruga, un problema può essere creato dal fatto che i pixel, in realtà, non sono dei piccoli quadretti, ma dei rettangolini. Nella figura a fianco puoi osservare un reticolo di rettangoli (alcuni sono neri) ciascuno dei quali rappresenta un pixel avente la base che è lunga metà dell’altezza. Se pensiamo di far muovere la tartaruga di 10 passi in orizzontale e di 10 in verticale, otteniamo degli spostamenti che sono uno la metà dell’altro. Per evitare inconvenienti di questo tipo il LOGO fa opportuni aggiustamenti. Se, per esempio, lo schermo avesse dei pixel come quelli della figura, ogni spostamento in verticale dovrebbe essere dimezzato. Tu non sai come sono fatti i pixels del tuo computer perchè non li vedi. Il LOGO invece li conosce bene e puoi quindi chiedergli come sono digitando il comando: SCHIA Quale risposta il LOGO ti darà un numero decimale che esprime il rapporte tra la lunghezza della base del pixel e quella della sua altezza, ossia: numero decimale = lungh. base / lungh. altezza. Tieni però presente che nello scrivere numeri decimali il LOGO separa la parte intera del numero dalla sua parte non intera non mediante la solita virgola, ma mediante un punto. Inoltre, se la parte intera è costituita soltanto da uno zero, il LOGO non lo scrive. Così, per esempio, se egli ti risponde scrivendo .85 , tu dovrai leggerlo come se fosse 0.85 (ossia: 0,85). Prova ora a battere le istruzioni: A 50 I 50 D 90 A 50 I 50 NT Se non noti molta differenza fra la linea orizzontale e quella verticale, significa che gli aggiustamenti sullo schiacciamento compiuti dal LOGO sono adatti al tuo schermo. In caso contrario puoi intervenire con il comando: ASSCHIA <numero> che modifica il rapporto di schiacciamento delle immagini. 2. La tartaruga e lo schermo Se provi a scrivere: ASSCHIA 0.5 e a ripetere le istruzioni precedenti, dopo aver pulito lo schermo, ottieni una linea verticale più corta. Mentre se batti: ASSCHIA 1.5 la linea verticale risulta più lunga. Quando inizi a lavorare, dopo aver caricato il LOGO, il valore di schiacciamento è 0.85. Se le figure che disegnerai ti sembrano schiacciate, con un po’ di prove puoi trovare qual è il valore migliore per il monitor del tuo computer DAI PIXEL ALLE LINEE Un secondo problema, dovuto alla rappresentazione mediante pixel, si ha nel tracciare linee oblique. Nella figura in alto a sinistra nella pagina a fronte abbiamo disegnato una linea obliqua rappresentata nell'unico modo possibile, ossia annerendo una serie di quadretti. Come puoi osservare, non si ottiene una linea continua, ma un insieme di «gradini». Fai anche tu qualche prova annerendo "a scaletta" una serie di quadretti su carta quadrettata: più i quadretti sono piccoli, migliori saranno i risultati che otterrai. Anche sullo schermo grafico del computer le linee sono rappresentate in modo analogo. Tutte le immagini che appaiono sul video sono digitalizzate, trasformate cioè in pixel accesi o spenti. È quindi molto importante la definizione (o risoluzione) del video, ossia il numero dei pixel presenti in rapporto alla superficie. Più è grande la definizione del tuo computer, migliori sono i risultati grafici che puoi ottenere. IL COLORE Se hai un video a colori potrai continuare questa esplorazione divertendoti a ottenere immagini colorate, cambiando il colore della penna della tartaruga e del foglio su cui essa disegna. I comandi che potrai utilizzare sono: ASCOL <numero> Fa cambiare colore alla penna; l’argomento deve essere un numero compreso fra 0 e 3; ad ogni numero corrisponde un diverso colore. pag. 23 pag. 24 Manuale Logo ASTAVOLOZZA <numero> Fa cambiare la tavolozza in cui vengono scelti i quattro colori della penna; le tavolozze sono due, corrispondenti ai valori 0 e 1 dell’argomento. ASSFONDO <numero> Fa cambiare colore al foglio su cui disegna la tartaruga; ogni colore corrisponde a un valore dell’argomento fra 0 e 15. RIEMPI Colora la figura chiusa, all’interno della quale si trova la tartaruga, con il colore della penna; se la figura non è chiusa, colora tutto lo sfondo. IL LOGO CONOSCE L’ARITMETICA Quando, dopo un comando, il LOGO richiede un numero, che, come già sai, si chiama argomento del comando, al posto del numero puoi scrivere una espressione aritmetica da risolvere. Puoi esser certo che il LOGO, essendo un bravo “calcolatore”, la risolverà con assoluta esattezza. Così se scrivi: AVANTI 10*5 il LOGO calcola AVANTI 50 DESTRA 100/3 il LOGO calcola DESTRA 33.33333... INDIETRO 5+12 il LOGO calcola INDIETRO 17 AVANTI RADQ 144 il LOGO calcola AVANTI 12 PER USCIRE DAL LOGO Terminati i tuoi lavori, puoi uscire dal LOGO per poi spegnere il computer digitando il comando: CIAO A questo punto, se il tuo computer non rientra in DOS e si blocca, per sbloccarlo "resettalo" digitando simultaneamente i tre tasti : <CTRL ALT CANC> poi spegnilo. 3. Poligoni con il comando Ripeti POLIGONI CON IL COMANDO RIPETI IL COMANDO RIPETI. Il comando RIPETI ti fa risparmiare la fatica di dover ripetere più di una volta una istruzione singola, oppure una serie di istruzioni. Per usarlo basta che tu scriva, dopo la parola RIPETI, due argomenti: prima il numero delle ripetizioni che vuoi compiere e poi, racchiuse tra parentesi quadrate, l’istruzione o la lista di istruzioni da ripetere. Per esempio, batti separatamente le seguenti serie di istruzioni: RIPETI 4 [A 23] PS RIPETI 3 [A 30 D 60] PS RIPETI 8 [A 65 D 135] PS RIPETI 20 [D 50 A 15 D 60 A 10] Per ripetere 24 volte la serie di istruzioni: A 100 D 15 I 80, batti: PS RIPETI 24 [A 100 D 15 I 80]. Se la tartaruga parte dal centro dello schermo, la vedrai uscire da un lato dello schermo stesso e ricomparire dal lato opposto. Per evitare ciò, devi far cominciare i movimenti della tartaruga da una diversa posizione. Una buona posizione da cui potresti farla partire potrebbe essere, per esempio, 100 passi a sinistra dal centro e 100 passi più in basso. Per trasferire la Tartaruga in questa nuova posizione di partenza, batti: S 90 A 100 S 90 A 100 pag. 25 pag. 26 Manuale Logo Ora la Tartaruga è nel punto giusto, ma è rivolta verso il basso. Per darle l’orientamento giusto con cui effettuare le 24 ripetizioni potrai battere: D 180 Essa, però, nel muoversi ha disegnato una traccia. Digita PS riportando la tartaruga nella posizione iniziale e concellando la traccia in precedenza lasciata. Lo stesso spostamento realizzato prima, ma senza lasciare alcuna traccia, potrai ottenerlo scrivendo: SU S 90 A 100 5 90 A 100 D 180 GIU e la tartaruga sarà di nuovo pronta a compiere le ventiquattro ripetizioni. FREGI REALIZZATI CON IL COMANDO RIPETI Per riprodurre il fregio della Figura 1, prima di tutto devi individuare il modulo, cioè la parte che nel ripetersi realizza il disegno. Devi poi scrivere le istruzioni relative a tale modulo. Una soluzione potrebbe essere: A 10 D 90 A 10 D 90 A 10 S 90 A 10 Se però osservi come è orientata la tartaruga al termine della sua esecuzione, ti accorgi che non è possibile realizzare il disegno ripetendo questo modulo. Occorre che la tartaruga termini disponendosi nella stessa direzione che aveva all’inizio. Dobbiamo dunque aggiungere il comando S 90, che porta la tartaruga in posizione corretta. Figura 1 FREGIO MODULO pag. 3. Poligoni con il comando Ripeti Il modulo esatto sarà quindi: A 10 D 90 A 10 D 90 A 10 S 90 A 10 S 90 Per disegnare il fregio devi ripetere il modulo cinque volte: RIPETI 5 [A 10 D 90 A 10 D 90 A 10 S 90 A 10 S 90] Osservando le istruzioni riportate dentro il modulo, nota che alcune di esse si ripetono due volte. Puoi quindi utilizzare RIPETI all’interno di un altro RIPETI. La sequenza di istruzioni: A 10 D 90 A 10 D 90 può essere sintetizzata con: RIPETI 2 [A 10 D 90] e così pure: A 10 S 90 A 10 S 90 diventa: RIPETI 2 [A 10 S 90] Perciò il programma precedente sarà così strutturato: RIPETI 5 [RIPETI 2 [A 10 D 90] RIPETI 2 [A 10 S 90]] Considera ora il fregio della Figura 2: il modulo, a prima vista, sembra essere costituito da un semplice quadrato definito dalle istruzioni: RIPETI 4 [A 10 D 90] Tuttavia, per non disegnare sovrapposti i cinque quadrati, la tartaruga deve effettuare uno spostamento senza lasciare traccia alcuna: RIPETI 4 [A 10 D 90] SU D 90 A 20 D 90 GIU Il programma per disegnare il fregio è allora: RIPETI 5 [RIPETI 4 [A 10 D 90] SU D 90 A 20 S 90 GIU] Figura 2 27 pag. 28 Manuale Logo Con il comando RIPETI puoi ottenere figure complesse mediante la rotazione di figure più semplici. Osserva la Figura 3. Figura 3 Il programma che realizza il disegno è: RIPETI 6 [RIPETI 2 [A 40 D 90 A 20 D 90] D 360/6] Il modulo è formato da: RIPETI 2 [A 40 0 90 A 20 0 90] D 360/6 con il quale costruiamo il rettangolo e poi facciamo ruotare la tartaruga di un opportuno angolo Prova ora a scrivere i due programmi che servano a realizzare la Figura 4 e la Figura 5. Per scrivere il programma della Figura 5 tenta di utilizzare una parte del programma scritto per la Figura 4. Figura 4 Figura 5 REGOLA DEL GIRO COMPLETO. Giro completo attorno ad un poligono. Quando la Tartaruga disegna una figura geometrica avente forma di poligono e ritorna, sia alla posizione, sia all’orientamento di partenza, la somma dei cambiamenti di direzione che avrà effettuato sarà ogni volta un giro completo. pag. 3. Poligoni con il comando Ripeti Ciò significa che la tartaruga ha eseguito un certo numero di cambiamenti di direzione le cui ampiezze angolari, sommate tra loro, daranno sempre un totale di 360 gradi. Se desideri, per esempio, far disegnare alla tartaruga un triangolo equilatero, devi tener presente che è un poligono regolare con tre lati, e quindi con tre vertici. Figura 6 120° 120° Così, quando la tartaruga, camminando, arriva ad un vertice dovrai ordinarle di eseguire un cambiamento di direzione di ampiezza uguale ad un terzo di angolo giro, ovvero (360 : 3) gradi, ossia 120° (vedi Figura 6). Importanza degli angoli esterni. In circostanze simili, specie nel corso delle prime attività con la tartaruga, c’è il rischio di cadere facilmente in errore. Nel caso del disegno del triangolo equilatero, per esempio, per ciò che si è imparato scuola, si è convinti che, per disegnare quella figura, basta conoscere la misura degli angoli interni dello stesso triangolo, e non quella dei corrispondenti angoli esterni. Per tale motivi si è indotti ad ordinare alla tartaruga di effettuare, ad ogni vertice, un cambiamento di direzione di 60°, e non un cambiamento di direzione di 120° che, invece, è quello che occorre effettivamente eseguire. In queste circostanze, allora, la tartaruga obbedirà fedelmente ai comandi che le vengono dati e, anzichè disegnare ur triangolo equilatero, disegnerà un ... semiesagono. L’errore in cui si cade nasce dalla convinzione che, per costruire un triangolo basta considerare soltanto i suoi angoli interni, trascurando di considerare i suoi angoli esterni corrispondenti. Sono invece gli angoli esterni quelli che fondamentalmente interessano nel procedimento di costruzione. Essi, infatti, consentono di calcolare ciascun cambiamento di direzione che la tartaruga dovrà effettuare per muoversi su tutto il contorno del triangolo da disegnare. 120° 29 pag. 30 Manuale Logo Regola di calcolo per disegnare poligoni regolari. Dopo le considerazioni appena fatte, diventa assai semplice la strada per arrivare alla regola generale, con la quale tu potrai calcolare l’ampiezza di ciascun cambiamento di direzione per disegnare tutti i tipi di poligoni regolari. Se N è il numero dei lati di un poligono regolare, l’ampiezza di ciascun cambiamento di direzione da effettuare per disegnarlo, ossia l’ampiezza di ciascun angolo esterno del poligono stesso, sarà allora uguale ad una ampiezza di (360 : N) gradi. Ossia: l'ampiezza di un angolo giro divisa per il numero dei lati del poligono considerato. Così, per il quadrato (4 lati) ciascun cambiamento di direzione da effettuare sarà di (360 : 4) = 90°, per il pentagono regolare (5 lati) di (360 : 5) = 72°, per l’esagono regolare (6 lati) di (360 : 6) = 60°, ..... , e così seguito per tutti gli altri poligoni regolari, con numero di lati man mano crescente. È questa la regola che Papert, uno degli ideatori del LOGO, chiama come: regola del giro completo. Quando tu arrivi ad esser padrone di questa regola, avrai conquistato, secondo Papert, una idea matematica assai potente, destinata ad avere una influenza, positiva ed efficace, per i successivi sviluppi delle tue conoscenze matematiche. Ecco i programmi LOGO per i principali poligoni regolari: Triangolo equilatero RIPETI 3 [A 50 D 360/3] Quadrato RIPETI 4 [A 50 D 360/4] Pentagono regolare RIPETI 5 [A 50 D 360/5] Esagono regolare RIPETI 6 [A 50 D 360/6] ........ Formula generale (N lati, lungh. L) RIPETI N [A L D 360/N] CERCHI E ARCHI Riprendiamo la formula generale scritta sopra per disegnare un poligono regolare di lato lungo L e con N lati: RIPETI N [A L D 360/N] 3. Poligoni con il comando Ripeti Se attribuisci valori crescenti a N e valori decrescenti a L, ottieni dei poligoni il cui contorno assomiglia sempre di più a una circonferenza. In particolare quando N = 360 la rotazione diventa: 360/360 = 1. Se digiti: RIPETI 360 [A 1 D 1] ottieni il disegno di un poligono regolare di 360 lati di 1 passo. Poiché la tartaruga non può compiere un avanzamento minore di un pixel tale poligono può essere considerato la migliore approssimazione di un cerchio realizzabile con il computer. Una circonferenza disegnata in questo modo, cioè attraverso piccoli passi e minime rotazioni della tartaruga, si ottiene con un procedimento diverso da quello usato con il compasso. Con la tartaruga non si tiene conto della proprietà che possiedono i punti appartenenti a una circonferenza: l’equidistanza dal centro. Con il compasso invece la circonferenza viene disegnata come luogo dei punti che hanno uguale distanza da un punto fisso. La distanza viene chiamata raggio e il punto fisso centro. Anche se la tartaruga non considera la circonferenza nel modo tradizionale, è però in grado di disegnare circonferenze con raggi diversi. Per realizzarle basta far variare la misura dell’avanzamento. Puoi provare con: RIPETI 360 [A 2 D 1] Ottieni una circonferenza di 720 passi (360 x 2). La misura dell’avanzamento è uguale alla lunghezza della circonferenza divisa per il numero di ripetizioni. Puoi anche sostituire D con S, facendo compiere delle rotazioni a sinistra. Otterrai circonferenze simmetriche rispetto alle precedenti. Questa proprietà di simmetria è vera per qualsiasi figura, come vedremo meglio in seguito. Come possiamo fare per disegnare solo una parte di una circonferenza, ossia un suo arco? Volendo disegnare una semicirconferenza occorrerà ripetere 180 volte, e non 360 volte, la lunghezza dell’avanzamento e la rotazione della tartaruga: Analogamente, se vogliamo disegnare un quarto di circonferenza, dobbiamo fare 90 ripetizioni (1/4 di 360), mentre un sesto di circonferenza richiede 60 ripetizioni (1/6 di 360). pag. 31 pag. 32 Manuale Logo In generale il numero di npetizioni corrisponde alla misura in gradi dell’angolo aI centro che sottende l’arco di circonferenza disegnato. Per continuare le attività relative ai cerchi e agli archi puoi progettare i programmi che occorrono per realizzare le figure che sono sotto. Per la Figura 7, per esempio, il programma che lo realizza è il seguente: SU S 90 A 100 D 180 GIU RIPETI 90[A 1 S 1] RIPETI 540 [A 1 D 1] RIPETI 90[A 1 S 1] SU TANA GIU Figura 7 Figura 8 Figura 9 Figura 10 pag. 3. Poligoni con il comando Ripeti ESERCIZI 1. Quanti passi deve compiere la tartaruga per raggiungere il lato superiore dello schermo partendo dalla posizione centrale? 2. Quanti passi deve compiere per arrivare dal lato superiore a quello inferiore, oppure dal lato sinistro a quello destro? 3. Prova a disegnare le iniziali del tuo nome e del tuo cognome. Ecco, ad esempio, i comandi che occorrono per scrivere: - una L : S 90 A 50 D 90 A 100 - una I : A 100 - una V : S 15 A 100 I 100 D 30 A 100 - una T : A 100 S 90 A 25 I 50 5. Prova a disegnare una scalinata ripetendo un certo numero di volte la seguente serie di comandi: A 10 S 90 A 10 D 90 6. Prova a ripetere un certo numero di volte la seguente serie di comandi: A 10 S 140 A 30 S 199 Quale disegno compare? Quante volte devi ripetere la serie per avere il disegno della lama di una sega circolare? 7. Quale disegno compare con la seguente serie di comandi: A 100 I 200 A 100 S 45 A 100 I 200 A 100 S 45 A 100 I 200 A 100 S 45 A 100 I 200 A 100 Potresti ottenere lo stesso disegno con alcune ripetizioni ? Quante ? Ci sono serie più semplici di comandi ripetuti per avere lo stesso disegno? Come potresti realizzare lo stesso disegno usando anche il comando TANA? 33 pag. 34 Manuale Logo 8. Prepara una serie di istruzioni per portare la tartaruga in un determinato punto dello schermo, senza farle lasciare alcuna traccia. 9. Prepara una serie di istruzioni utilizzando l’istruzione RIPETI e la serie: A 100 D 36 I 70 10. Scrivi una serie di istruzioni per disegnare una figura di quattro lati. 11. Disegna un cerchio servendoti del comando RIPETI; quindi, senza pulire lo schermo, disegna un altro cerchio con numero di passi doppio, e poi un altro ancora con ampiezza di rotazione doppia. 12. Disegna un cerchio a destra ed uno analogo a sinistra. 13. Disegna un arco a destra, lungo un quarto di cerchio. 14. Disegna un altro arco lungo un quarto di cerchio, ma con passi doppi rispetto all’arco del progetto precedente. 15. Disegna un arco a sinistra lungo un sesto di cerchio, poi uno analogo a destra. (Suggerimento: usa la divisione e lascia fare i calcoli al LOGO). Figura 11: una faccia nelle varie fasi della sua costruzione. pag. 4. Le "geometrie" del LOGO LE "GEOMETRIE" DEL LOGO LO SCHERMO GRAFICO Con il comando SCHIA controlla l’indice di schiacciamento dello schermo e, se la tartaruga ti risponde con un numero diverso da .85, assegna all'indice questo valore ottimale con il comando: ASSCHIA 0.85 Digita poi PS. Ora la tartaruga è nella posizione TANA ed è rivolta verso l’alto. Può fare 117 passi prima di uscire dallo schermo e ricomparire nella parte inferiore. Se invece viene rivolta verso il basso, i passi che può fare sono 116 (Fig. 1). 117 PASSI 159 PASSI 160 PASSI 116 PASSI Sempre dalla posizione di TANA, Fig. 1: Indice di schiacciamento = 0.85 può muoversi di 160 passi quando è rivolta verso destra, ma solo di 159 quando è rivolta verso sinistra. Tenuto conto che la posizione di TANA occupa un passo che va aggiunto, sia a quelli del percorso verso il basso, sia a quelli del percorso verso sinistra, il totale dei passi che la tartaruga può compiere sullo schermo (ossia il totale dei pixels che la tartaruga, muovendosi, può accendere) sono: (117 x 2) x (160 x 2) = 234 x 320 = 74 880 Se con la primitiva ASSCHlA assegni un altro valore al rapporto di schiacciamento, viene modificato il campo verticale della tartaruga, mentre quello orizzontale resta invariato. Così, per esempio, se assegni all’indice di schiacciamento il valore di 1, i passi che la tartaruga ha a disposizione all’interno dello schermo sono : 100 verso l’alto, 99 + 1 = 100 verso il basso, 160 verso destra e 159 + 1 = 160 verso sinistra. 35 36 Manuale Logo Con l'indice di schiacciamento = 1, sullo schermo vi sono quindi 200 x 320 = 64 000 pixels a disposizione per i movimenti della tartaruga. Realizza alcune esperienze su quanto detto sopra. Digita il seguente comando: CAMPO Se la tartaruga ti risponde CIRCOLARE oppure APERTO, digita: ASCAMPO “CHIUSO Poi , sempre dalla TANA, fa’ compiere alla tartaruga un numero di passi maggiore, oppure minore, di quelli prima indicati e osserva che cosa accade. Ricorda che per riportare la tartaruga alla TANA e ripulire lo schermo puoi sempre usare il comando: PS. SISTEMI GEOMETRICI PER LA TARTARUGA La tartaruga si può muovere sullo schermo utilizzando due diversi “geometrie”, o, più precisamente, può percorrere la superficie dello schermo tenendo conto di due differenti sistemi geometrici che sono: - il sistema di riferimento intrinseco, ossia collocato dentro di lei, oppure - il sistema di riferimento estrinseco, ovvero presente al suo esterno. Il sistema di riferimento intrinseco Il primo sistema si chiama intrinseco ( o interno), perchè sta dentro il “corpo” di chiunque deve muoversi, e tu lo adoperi ogni giorno. A DESTRA Di solito, quando cammini sul pavimento di una stanza oppure dai a qualcuno le indicazioni per trovare una via della tua città, il sistema di riferimento che adoperi è quello relativo Fig. 2 AVANTI alla conformazione del tuo corpo. Nel muo# verti sul pavimento di una stanza puoi scegliere di spostarti in avanti o indietro, con! " servando sempre la stessa direzione, oppure di cambiar direzione girando a destra, op$ pure girando a sinistra (Fig. 2). INDIETRO A SINISTRA pag. pag. 4. Le "geometrie" del LOGO La stessa cosa accade al “corpo” della tartaruga. I comandi che le dai: AVANTI, INDIETRO, DESTRA, SINISTRA (con i rispettivi argomenti numerici) la tartaruga li interpreta in relazione al proprio “corpo”, ossia mediante un sistema di riferimento che sta al suo interno. Sono quindi i comandi che appartengono ad un particolare sistema di riferimento geometrico che chiamiamo “intrinseco”. AVANTI, INDIETRO, DESTRA, SINISTRA sono i comandi della geometria intrinseca del LOGO. Il sistema di riferimento cartesiano Il sistema di riferimento della tartaruga che chiamiamo “estrinseco” è costituito dalla sintesi di due componenti fondamentali che sono: - il sistema di riferimento cartesiano, - il sistema di riferimento polare. Il sistema di riferimento cartesiano , come forse sai già, somiglia molto a quello utilizzato nel noto gioco della “battaglia navale”. Questo sistema geometrico, quasi sempre rappresentato mediante il cosiddetto “diagramma (o grafico) cartesiano”, permette di individuare, mediante una coppia di numeri relativi, la posizione di numerosi punti riportati sopra un piano. Y +5 2° QUADRANTE x o delle ascisse e la seconda asse delle y o delle ordinate. I due assi dividono il piano in quattro angoli retti che si chiamano rispettivamente primo, secondo, terzo e quarto quadrante. +4 +3 cartesiani. Più precisamente: la prima si chiama asse delle Fig. 3 +6 semiasse positivo u +2 1° QUADRANTE +1 X' -6 -5 -4 -3 -2 -1 -1 semiasse negativo -2 3° QUADRANTE -3 -4 -5 O +1 +2 +3 +4 +5 +6 semiasse positivo semiasse negativo Osserva la Fig. 3 a fianco. Vi sono rappresentate due rette orientate perpendicolari: XX’ ed YY’, chiamate assi -6 Y' 4° QUADRANTE X 37 pag. 38 Manuale Logo Il punto O di intersezione dei due assi XX’ ed YY ’ è denominato origine e divide ciascun asse nelle semirette OX, OX’ ed OY, OY’. Queste si chiamano rispettivamente: OX semiasse positivo e OX’ semiasse negativo delle ascisse, OY semiasse positivo e OY’ semiasse negativo delle ordinate. Sulle quattro semirette è stata fissata una unità di misura per le lunghezze, (per esempio potrebbe essere il centimetro o, più in generale, un segmento di lunghezza prestabilita). Ciò fatto, disegniamo sul primo quadrante un qualsiasi punto P e conduciamo da esso le perpendicolari PH e PK rispettivamente all’asse x ed all’asse y. Le misure dei due segmenti: OH = KP e OK = HP si chiamano rispettivamente ascissa e ordinata del punto P ed entrambe prendono il nome di coordinate di tale punto . All’ascissa e all’ordinata di un punto si attribuisce il segno positivo, o il segno negativo, in dipendenza del fatto che i segmenti OH ed 0K che li hanno per misure appartengano ad un semiasse positivo, o ad un semiasse negativo. Così, per esempio (Fig. 4): Fig. 4 K P Q e l’ordinata OK = 4 e lo indichiamo con: P (2 ; 4); O R - il punto P ha l’ascissa OH = 2 H - il punto Q ha l’ascissa = -2 e l’ordinata = 3, e lo indichiamo con: Q (-2 ; 3). - il punto R ha l’ascissa = -3 e l’ordinata = -4, e lo indichiamo con R (-3 ; -4). Nel LOGO è presente, nascosto sotto lo schermo, un sistema di riferimento cartesiano che ha come unità di misura la lunghezza di un passo della tartaruga. Noi sullo schermo non vediamo questo diagramma, ma la tartaruga lo vede e lo conosce bene. Ragion per cui è in grado di obbedire ai comandi seguenti: VAX 50 che la fa andare al punto dello schermo di coordinate (5 ; 0) VAY -30 che la spostano al punto di coordinate (0 ; -30) VAXY [-40 20] che la conducono al punto di coordinate (-40 ; 20) pag. 4. Le "geometrie" del LOGO Prova ad effettuare gli spostamenti ora indicati. Disegna anche un triangolo equilatero con il “programma” di comandi: VAX 80 VAY 60 SU TANA GIU VAXY[80 60] TANA Se poi la tartaruga non sta in TANA e tu vuoi sapere quali sono le coordinate del punto in cui sta il LOGO ti fornisce i due comandi: XCOR e YCOR Digitando il primo ottieni come risposta la coordinata relativa all'asse X, mentre copn il secondo avrai la coordinata relativa all'asse Y. VAX , VAY, VAXY, XCOR, YCOR sono i comandi della geometria cartesiana del LOGO. Il sistema di riferimento polare Alcune volte, per stabilire una posizione, ti limiti a spostare lo sguardo fissandolo su oggetti facilmente identificabili. Così può capitare che, rivolgendoti a un amico tu dica: «Vedi laggiù l’entrata della scuola? Girati un po’ a sinistra. Luigi è il ragazzo con la cartella rossa a 20 circa metri da noi». Organizzi così lo spazio nella maniera più naturale a partire dalla tua posizione utilizzando una certa direzione e una determinata distanza. Situazioni di questo tipo possono avviarti alla conoscenza delle "coordinate polari" e queste puoi usarle in modo preciso indicando: la direzione di partenza, l’angolo da cui ruotare a partire da essa e la distanza dell'oggetto osservato (Fig. 5). s di ta nz a = 20 0 m Fig. 4 Nello studio delle coordinate polari dovresti partire dalla costruzione del concetto di angolo come cambiamento di direzione e dalla consapevolezza del suo doppio verso di rotazione, qual è, per esempio, il verso di percorrenza, orario e antiorario, sul cerchio e nei giochi di girotondo. Occorrerebbe poi che tu conquistassi l’idea dell’insieme delle direzioni che escono «a raggiera» nello spazio, partendo da te quale osservatore collocato nel centro di riferimento del sistema polare. 39 pag. 40 Manuale Fig. 5 Dir. 0° = 360° Dir. 40° = 400° Logo La tartaruga ha a sua disposizione anche il sistema di riferimento polare perchè, quando è collocata nella posizione TANA ed è rivolta verso l'alto, sta nella direzione di partenza di questo sistema di riferimento, ossia sta nella direzione 0 = 360 = 720 = ... (Fig. 5). Se ruota nel verso orario, ossia verso destra, aumenta il valore angolare della sua direzione, mentre accade il contrario quando ruota nel verso antiorario, ossia verso sinistra. I comandi del sistema polare per realizzare e valutare queste rotazioni sono rispettivamente: ASDIR <numero gradi> e DIR Con ASDIR la tartaruga ruota verso destra del numero di gradi indicati dall'argomento, se questo è un numero positivo, mentre ruota verso sinistra se il numero è negativo. La direzione rappresentata con una linea tratteggiata nella Fig. 5 si può quindi ottenere con i comandi: ASDIR 40 oppure ASDIR -320 Con il comando DIR il LOGO risponde indicando la direzione angolare sulla quale la tartaruga sta in quel momento disposta. Dopo aver modificato con ASDIR la direzione della tartaruga, puoi usare il comando AVANTI per effettuare lo spostamento che ritieni necessario per realizzare il disegno che desideri. ASDIR, DIR, AVANTI sono i comandi della geometria polare del LOGO. Il LOGO dispone infine di un comando con il quale il sistema di riferimento polare si collega al sistema di riferimento cartesiano. E' il comando: VERSO (vuole un lista di due argomenti numerici) La tartaruga, per esempio, sta in TANA e desideri mandarla lungo la direzione che passa per il punto di coordinate (30 ; 30). Digita allora VERSO [30 30 ]. Il LOGO ti risponderà: 45. È il valore angolare che devi fornire come argomento ad ASDIR per tracciare una linea che passi su quel punto. pag. 4. Le "geometrie" del LOGO 41 TABELLA DEI COMANDI DEI SISTEMI CARTESIANO E POLARE SISTEMA CARTESIANO VAX VAY VAXY Ordina alla tartaruga di spostarsi orizzontalmente fino al punto di ascissa uguale al numero fornito come argomento. Esempio: VAX 30 Ordina alla tartaruga di spostarsi verticalmente fino al punto di ordinata uguale al numero fornito come argomento. Esempio: VAY 45 Ordina alla tartaruga di andare nella posizione specificata dai due numeri che compongono la lista e che costituiscono le coordinate X e Y del punto in questione Esempio: VAXY [30 45] XCOR Risponde indicando l'ascissa del punto in cui si trova la tartaruga. Esempio: XCOR Risposta: 30 YCOR Risponde indicando l'ordinata del punto in cui sta la tartaruga. Esempio: YCOR Risposta: 45 DOVE SCRIPUNTO Risponde riportando una lista contenente le due coordinate del punto in cui sta la tartaruga. Esempio: DOVE Risposta: [30 45] Colora il punto le cui coordinate sono costituite dai due numeri che formano la lista che gli è stata data per argomento. Esempio: SCRIPUNTO [30 45] SISTEMA POLARE ASDIR Determina la direzione di avanzamento della tartaruga. Il suo argomento numericoindica la direzione scelta in gradi. Il sistema di riferimento imita quello della bussola: 0 gradi sono in alto (il Nord) e, ruotando nel verso orario, aumentano i gradi. Il cambiamento di direzione che si ottiene è indipendente dall'orientamento precedente: costituisce infatti un valore del tutto assoluto. Esempio: ASDIR 45 DIR Risponde indicando la direzione assoluta che ha la tartaruga in quel momento. Esempio: DIR Risposta: 45 VERSO Risponde indicando la direzione assoluta sulla quale va collocata la tartaruga per indirizzarla verso il punto le cui coordinate gli sono state date come argomento Esempio: VERSO [30 30] Risposta: 45 pag. 42 Manuale Logo LE PROCEDURE E IL FOGLIO PRIMITIVE E PROCEDURE Dopo aver imparato a pilotare la Tartaruga per eseguire disegni, puoi ora imparare come attribuire un nome a ciascun disegno e il LOGO ti consentirà di utilizzare questo nome quale nuovo comando da dare alla tartaruga. In questo modo, i nomi che potrai scegliere a piacere, quali per esempio TRIANGOLO, oppure PARETE, li potrai digitare sui tasti e, come per miracolo, i disegni da te creati e chiamati con questi nomi, appariranno di sullo schermo. Per ottenere questo straordinario risultato, però, dovrai avere in precedenza compilato le rispettive procedure. In LOGO una procedura è formata da una serie di comandi ordinati con molta esattezza e pensati per realizzare un certo disegno. Tali comandi possono essere sia parole primitive del LOGO, sia i nomi di altre procedure. Quindi: - una parola primitiva è un comando già presente nel LOGO; - il nome di una procedura sarà, invece, un nuovo comando da te definito. AVANTI, INDIETRO, SINISTRA, DESTRA, RIPETI sono parole primitive del LOGO. Come sai già, per usarle devi semplicemente digitarle sulla tastiera, facendole seguiredal rispettivo argomento numerico. Per le procedure, dopo avere in precedenza imparato a progettarle, a definirle ed eventualmente a correggerle, potrai fare la stessa cosa. COME DARE IL NOME AD UNA PROCEDURA Batti, per esempio, QUADRATO seguito da <INVIO>. Il LOGO, che ancora non conosce questa parola, ti risponderà: LA PROCEDURA QUADRATO NON ESISTE. 5. Le procedure e il foglio Con questo messaggio il LOGO intende dire che non è in grado di riconoscere la parola che tu hai digitato, nè come parola primitiva, nè come nome di una procedura. Insomma, non è nella condizione di eseguire quel tuo comando. Quando scegli in nome per una procedura è consigliabile che: - il nome richiami, in un certo qual modo, ciò che la procedura deve compiere; ad esempio, la procedura che servirà a disegnare un fiore potresti chiamarla, appunto: FIORE; - sia una parola facile da ricordare; - sia una parola breve e facile da scrivere; - non si possa facilmente confondere con un altro nome. AMBIENTE DI EDIZIONE DELLE PROCEDURE. Come già detto, per scrivere una procedura puoi cominciare a scegliere e a scriverne il nome. Nel nostro precedente esempio è stato scelto il nome QUADRATO, ma, naturalmente, puoi scegliere qualsiasi altro nome che preferisci. Per avvisare il LOGO che stai per scrivere una procedura, il nome da te scelto per la procedura stessa deve essere preceduto dal comando: PER seguito da uno spazio vuoto. Scriverai, per esempio: PER QUADRATO. A questo punto, quando premi il tasto <INVIO>, nella riga sotto a PER QUADRATO sparisce il punto interrogativo e, al suo posto, compare il carattere " > " seguito dal solito cursore lampeggiante. La presenza a capo riga del carattere " > " è il segnale che sei entrato nell'ambiente del LOGO dove si scrivono le procedure. Questo ambiente in "informatichese"si chiama: ambiente di edizione dellle procedure Tieni sempre presente che l'ambiente di edizione delle procedure è assai diverso da quello dei comandi immediati. pag. 43 pag. 44 Manuale Logo Nell'ambiente dei comandi immediati, non appena premi il tasto <INVIO>, il LOGO esegue subito i comandi scritti in precedenza da te, quali AVANTI, DESTRA, ecc. . Nell'ambiente dell’editore, invece, se scrivi le istruzioni: AVANTI, DESTRA e poi premi il tasto <INVIO>, il LOGO non esegue alcunché, ma aspetta che tu abbia scritto l’intera procedura, ossia che tu abbia elencato tutta le serie di istruzioni che costituiranno il corpo della procedura stessa. Come ti mostra anche lo schema riportato sotto, la procedura va definita stando dentro l'ambiente dell’editore, all'interno del quale sei tu ad "insegnare" al LOGO quali sono i comandi a cui deve obbedire per realizzare la procedura da te progettata. AMBIENTE DEI COMANDI IMMEDIATI PER "... FINE AMBIENTE DI EDIZIONE DELLE PROCEDURE Mentre sei nell’editore di procedure, puoi spostare il corsore usando i tasti con le frecce e puoi cancellare il carattere a sinistra del cursore usando il tasto <BACKSPACE>, esattamente allo stesso modo nel quale usi tali tasti nel mondo dei comandi immediati. Terminata la digitazione dell'intera procedura, per uscire dall'ambiente dell'editore e tornare a quello dei comandi immediati basta che tu concluda la procedura stessa scrivendo la parola FINE . Comincia a prendere confidenza con l’editore. Digita questi comandi: PER MUOVITI <INVIO> A 100 <INVIO> D 15 <INVIO> I 80 <INVIO> FINE Rileggi ora con attenzione le due procedure per assicurarti che: - i comandi siano stati scritti in modo corretto; - nei numeri vi siano zeri (0), e non o maiuscole (O); 5. Le procedure e il foglio - vi sia sempre uno spazio tra l’istruzione ed il suo argomento numerico. Controllata attentamente la scrittura, premi il tasto <INVIO> e il LOGO ti segnalerà di avere compreso i tuoi comandi scrivendo: fine della definizione di MUOVITI A questo punto ricomparirà sul video il punto interrogativo ( ? ) per segnalarti che la tartaruga è in attesa dei tuoi ordini. Hai scritto così la tua prima procedura, insegnando, in tal modo, un nuovo comando alla tartaruga. Questo nuovo comando è rappresentato dal nome MUOVITI da te scelto. Ora potrai vedere se la tua procedura funziona nel modo in cui l’avevi progettata e, per farlo, non ti rimane altro che provarla. ESECUZIONE DI PROCEDURE CON LA INVOCAZIONE Dopo aver definito la tua prima procedura, scrivi semplicemente: MUOVITI <INVIO> ll LOGO interpreta la tua scritta come comando di esecuzione della procedura redatta in precedenza e passa ad eseguirla immediatamente. Si dice, con un termine tecnico, che scrivendo: MUOVITI tu hai invocato la procedura per farla eseguire. Come per la primitiva: AVANTI 50 basta digitarlarla per farla eseguire, così ora basta digitare il nome: MUOVITI per comandare al LOGO di eseguire tutto quanto è stato prescritto nella procedura stessa. Questo è ciò che si chiama eseguire una procedura mediante la sua invocazione. PER CORREGGERE LE PROCEDURE C'È IL FOGLIO Se invochi una procedura nella quale hai, per caso, scritto male una parola, il LOGO ti invia un messaggio di errore. Per correggere l'errore commesso devi allora trasferirti in un ambiente particolare chiamato FOGLIO all'interno del quale si correggono le procedure sbagliate. pag. 45 pag. 46 Manuale Logo Le tappe di passaggio a questo ambiente, la successiva correzione della procedura sbagliata e il rientro nell'ambiente dei comandi immediati potrai percorrerle seguendo con attenzione le seguenti istruzioni: 1. Digita: EDITA "nomeprocedura (per esempio: EDITA "MUOVITI). Vedrai apparire una schermata particolare suddivisa in due parti. La superiore contiene la procedura da correggere. La inferiore inizia con una scritta in rosso e sotto ha la zona degli eventuali comandi da dare. In ambedue le zone si vede il cursore lampeggiante. 2. Per rendere attivo il cursore nella zona superiore digita il tasto: <INVIO> e procedi a correggere il testo della procedura spostando il cursore stesso mediante le frecce direzionali e il solito tasto di cancellazione del carattere precedente, ossia il tasto <BACKSPACE>. 3. Effettuata la correzione puoi tornare nell'ambiente dei comandi immediati digitando prima il tasto: <ESCAPE> e subito dopo simultaneamente i tasti: <CTRL> e <F4> Il procedimento di correzione degli errori in "informatichese" si chiama "togliere i bachi" dalla procedura. Questa strana espressione è la traduzione del termine inglese: debugging, che significa "eliminare gli errori" poichè, in inglese la parola: bug oltre a significare "baco", significa anche "errore". Esegui alcune volte di seguito la procedura MUOVITI e verificherai che la tartaruga, nel realizzare il disegno progettato per tale procedura, partirà ogni volta dalla posizione e dall’orientamento in cui si trovava alla fine dell’esecuzione del precedente ordine di: MUOVITI. Puoi dare anche qualche altro comando alla figura dello schermo, facendo ruotare e poi camminare la tartaruga, per esempio con i comandi: DESTRA 12 AVANTI 55 Questi comandi li puoi digitare, di volta in volta, pure direttamente, senza cioè doverli includere tra quelli della tua procedura. 5. Le procedure e il foglio GESTIONE DEL FOGLIO Puoi rendere visibile sullo schermo il contenuto del FOGLIO digitando il comando: MOSFOGLIO che che produce effetti abbastanza simili al comando EDITA. Invece con il comando: NASFOGLIO nascondi il FOGLIO, mantenendo però inalterato il suo contenuto. Un comando che devi tener ben presente è infine il comando: CANCEFOGLIO che cancella l’intero contenuto del FOGLIO. Questo comando pulisce completamente il FOGLIO e tutto ciò che contiene viene perduto. Fa' attenzione! Ogni volta che utilizzi il FOGLIO, prima di inserirci una nuova procedura con il comando EDITA, oppure prima di riportarci di nuovo una stessa procedura per una successiva correzione, è consigliabile ripulire il suo contenuto con il comando CANCEFOGLIO. PROCEDURE USATE DENTRO ALTRE PROCEDURE Come già detto, tra i pregi del LOGO c’è la caratteristica che il nome di una sua procedura può diventare una comando derivato e acquistare così la funzione svolta da un comando qualsiasi , svolgendo così lo stesso ruolo svolto, per esempio, dalle sue ordinarie parole primitive: AVANTI, DESTRA, RIPETI. Appare evidente, quindi, che i nomi delle procedure possono essere utilizzate anche dentro altre procedure con le stesse modalità con le quali si utilizzano gli ordinari comandi semplici. Nella pagina seguente troverai alcuni esempi di procedure annidate (ossia incluse) dentro altre procedure. pag. 47 pag. 48 Manuale Logo Per scrivere righe di commento nei programmi digita questa procedura: PER COMMENTO : ; FINE poi scrivi i programmi commentandoli nel modo indicato sotto. Ricorda che le parole scritte tra parentesi quadrate in ogni riga che inizia con il punto e virgola non avranno alcun effetto sul programma che le contiene. PER QUADRATO RIPETI 4 [AVANTI 50 DESTRA 90] ; [RIPETI, AVANTI E DESTRA SONO COMANDI SEMPLICI] ; [QUADRATO È UN COMANDO DERIVATO] FINE PER FINESTRA RIPETI 4 [QUADRATO SINISTRA 90] FINE PER DECORAZIONE FINESTRA DESTRA 45 FINESTRA ; [FINESTRA È ANCH’ESSO UN COMANDO DERIVATO] FINE Una procedura richiamata all’interno di un’altra prende il nome di SOTTOPROCEDURA. L’uso di sottoprocedure offre diversi vantaggi: - si accorciano, in primo luogo i programmi, che, altrimenti, sarebbero costituiti da lunghe sequenze di istruzioni. - viene resa più semplice la lettura, e quindi la comprensione, delle procedure stesse. Ciò accade soprattutto quando si ricorre all’accorgimento di usare, per le procedure adottate, denominazioni chiaramente esplicative. Non chiamare, per esempio, QQ una sottoprocedura che disegna due quadrati, ma chiamala, piuttosto, in modo più esplicito: DUEQUADRATI; - una volta che sia stata definita, una procedura potrà essere usata anche all’interno di altri programmi. In pratica, se si scelgono bene le procedure 5. Le procedure e il foglio di base, i loro nomi potranno costituire i termini di un tuo linguaggio personale, ossia un personale repertorio di procedure; - risulta, infine più facile progettare un programma scomponendolo in piccoli blocchi, ossia in sottoprogrammi man mano più semplici. Questo stile di programmazione viene chiamato, con termini tecnici: PROGRAMMAZIONE PER RAFFINAZIONE INCREMENTALE, oppure: PROGRAMMAZIONE A BLOCCHI. PROCEDURE PER DISEGNARE UN CAMPO DI GRANO Vediamo un esempio di quanto appena detto, proponendo una serie di procedure con le quali la tartaruga disegnerà un campo di grano. Ecco la procedura generale, o procedura madre: PER CAMPODIGRANO SU S 90 A 150 D 90 G1U RIPETI 18 [SPIGA SEMINARE] FINE La procedura SEMINARE, riportata appresso, serve per collocare ciascuna SPIGA in un posto diverso: PER SEMINARE D 90 SU A l6 GIU S 90 FINE A sua volta SPIGA è composta da alcune spighette unite assieme: PER SPIGA A 20 RIPETI 4 [SPIGHETTA A 5] I 40 FINE pag. 49 pag. 50 Manuale Logo Ecco, infine, la sottoprocedura più elementare per disegnare una coppia di SPIGHETTE: PER SPIGHETTE D 45 A 8 I 8 S 90 A 8 I 8 D 45 FINE Lo schema ad albero che è sotto mette in evidenza il collegamento gerarchico esistente tra le diverse procedure di CAMPODIGRANO, ciascuna delle quali è rappresentata da un blocco. SEMINARE CAMPODIGRANO SPIGHETTE SPIGA PROCEDURE PER DISEGNARE UN PUPAZZO. Altro esempio: è sistema di procedure per disegnare un PUPAZZO: PER PUPAZZO PER GAMBA CORPO GAMBASINISTRA GAMBE GAMBADESTRA BRACCIA FINE TESTA FINE PER GAMBASINISTRA D 30 I 30 S 90 PER CORPO A 30 I 30 A 5 I 5 D 90 A 30 S 30 FINE FINE PER BRACCIA PER GAMBADESTRA A 20 D 90 S 30 I 30 D 90 A 20 I 40 A 5 I 5 S 90 A 20 S 90 I 20 A 30 D 30 FINE FINE pag. 5. Le procedure e il foglio A te il compito di progettare la procedura TESTA e di disegnare lo schema ad albero nel quale vengano collegate in gerarchia i blocchi delle procedure di PUPAZZO. Per quel che riguarda la procedura TESTA potresti, per esempio, progettarne una di forma quadrata. È evidente che le istruzioni per la TESTA vanno accompagnate da altre che obblighino la Tartaruga a disegnarla nella posizione giusta, sopra la parte superiore del corpo. ESEMPI DI PROCEDURE E SOTTOPROCEDURE. Ecco una serie di procedure semplici che, come vedremo nel prossimo capitolo, potresti opportunamente memorizzare nell’archivio: FORME. PER QUADRATO RIPETI 4 [A 50 D 90] PER RETTANGOLO RIPETI 2 [A 30 D 90 A 80 D 90] FINE FINE PER TRIANGOLO PER ROMBO D30 S30 RIPETI 3 [A 50 D 120] RIPETI 2 [A 60 D 60 A 60 S 120] S 30 D 30 FINE FINE PER ESAGONO PER CERCHIO S30 NT RIPETI 6 [A 60 D 60] RIPETI 360 [A 1 D 1] D30 MT FINE FINE Ed ecco, a puro titolo di esempio, una serie di procedure da realizzare, prendendo dall’archivio FORME alcune delle procedure semplici poc’anzi proposte: PER STELLA.SEI RIPETI 6 [ROMBO D 360/6] FINE 51 pag. 52 Manuale Logo PER FINESTRA RIPETI 4 [QUADRATO S 360/4] FINE PER SPOSTABLOCCO S 135 SU A 120 GIU D 135 RIPETI 4 [QUADRATO A 50 D 90 A 50 S 90] FINE PER FIGURA.A RIPETI 8 [QUADRATO D 360/8] RIPETI 6 [ROMBO D 360/6] FINE ESERCIZI - Usa la procedura QUADRATO per scrivere una procedura generale che disegni un quadrato in ogni angolo dello schermo. - Usa la procedura QUADRATO per scrivere una procedura generale che disegni una fila di quadrati. - Usa la procedura QUADRATO per scrivere una procedura generale che disegni una torre di quadrati (Suggerimento: serviti della procedura risolutiva dell‘esercizio precedente). - Scrivi una procedura che disegni un quadrato, servendoti del comando RIPETI e usando una divisione per i cambiamenti di direzione. - Scrivi una procedura che disegni un triangolo, con il comando RIPETI e usando una divisione per i cambiamenti di direzione. - Scrivi una procedura che disegni un poligono di 9 lati. - Scrivi una procedura che disegni un poligono di 13 lati. - Scrivi una procedura che disegni una casa avente un quadrato per parete e un triangolo per tetto. - Scrivi procedura che disegni un albero avente un rettangolo per fusto e un ottagono per chioma. 6. Spazio di lavoro e archivi SPAZIO DI LAVORO E ARCHIVI COME CONSERVARE E VISUALIZZARE PROCEDURE. Conservazione di procedure Le procedure da te definite non rimangono per sempre nella memoria del computer. Quando esci dal LOGO egli le"dimentica", ossia si cancellano dalla memoria del computer. Per conservarle, per poterle riutilizzare, devi chiedere al LOGO di trascriverle in un archivio dentro una memoria esterna, detta anche memoria di massa, avente come supporto o il disco rigido interno alcomputer, oppure un dischetto esterno che dovrai, in precedenza opportunamente preparare per ricevere le procedure mediante l'operazione chiamata "formattazione". Il comando: CONSERVA ti permette di trascrivere in un archivio, su disco o su dischetto, le procedure che sono presenti nella memoria di lavoro del computer. Ma che cos'è la memoria di lavoro? Proviamo a descriverla con un paragone. Immagina che la memoria di lavoro del computer sia come il piano della tua scrivania. Sulla scrivania esegui i tuoi compiti quotidiani, scrivendo, a volte, lavori nuovi, oppure utilizzando copie di appunti che tiri fuori dai cassetti della scrivania stessa. Alla fine del tuo compito, per averne un altro esemplare, vai ad una fotocopiatrice, fai una copia dei lavori da te eseguiti e riponi la copia nei cassetti, ossia nel tuo archivio. Tutto ciò avviene anche con il LOGO quando si fa ricorso al disco interno, oppure ai dischetti. Quello che serve per lavorare in quel momento lo tieni nella memoria di lavoro del LOGO (piano della scrivania), che può accogliere anche diverse procedure (fogli vari con lavori diversi). pag. 53 pag. 54 Manuale Logo Quando vuoi archiviare le procedure presenti nella memoria di lavoro (che somigliano a ciò che sta sul piano della tua scrivania), usi il comando: CONSERVA, ed una copia di ciò che è presente in tale memoria viene trasferita da questa alla memoria esterna di massa, dove viene archiviata sul disco rigido o in un dischetto (li puoi pensare come cassetti di scrivania). Attenzione, però! Il comando: CONSERVA copia sul disco, in un solo archivio, tutto il contenuto della memoria di lavoro, che, come è stato già precisato, può essere costituito da diverse procedure. Così, come ogni procedura deve avere il proprio nome, così anche all’insieme delle procedure, costituenti un solo archivio, va attribuito il nome relativo. Il nome servirà a distinguere tale archivio da altri insiemi di procedure. A ciascun insieme, tra l’altro, conviene attribuire un nome particolare, che sia utile a richiamare il contenuto delle procedure componenti. Per esempio, per il gruppo di procedure proposte nella pagina 49, da te utilizzate per realizzare le prime esperienze di disegno con la tartaruga, un nome appropriato per archiviarle tutte quante in solo gruppo potrebbe essere quello già suggerito, ossia: FORME. Digita quindi: CONSERVA “FORME Fai attenzione ! Le virgolette che precedono il nome dell’archivio costituiscono una parte fondamentale del nome stesso. Queste virgolette iniziali non devi assolutamente dimenticarle, perchè altrimenti nella memoria di esterna di massa non viene conservato alcunchè. Senza le virgolette il LOGO, infatti, non sarebbe in grado di riconoscere quel nome come nome di un archivio. Così pure, se provi a recuperare un archivio senza premettere le virgolette, il LOGO non viene messo in grado di individuarlo. Devi stare anche attento al fatto che nell'archivio non vi sia un altro archivio avente lo stesso nome. Se nel disco o nel dischetto hai già conservato un precedente archivio sotto il nome di: FORME e vi memorizzi un nuovo archivio con la stessa denominazione, il vecchio archivio viene rimpiazzato dalle nuove procedure successivamente realizzate. In questo caso tutte le precedenti procedure che costituivano l’archivio FORME vengono sostituite e, in sostanza, cancellate dalla memoria di massa. 6. Spazio di lavoro e archivi Per visualizzare le procedure Per vedere sullo schermo i titoli delle procedure presenti nella memoria di lavoro del computer, batti: STITOLI che è l’abbreviazione della espressione: stampa titoli. Per vedere il testo di una procedura, sempre presente nella memoria di lavoro, batti il comando: SPROC seguito dal nome della procedura di cui intendi vedere il contenuto. Per esempio, se sai che la procedura MUOVITI è presente nella memoria di lavoro, puoi vedere il suo listato digitando: SPROC "MUOVITI Per vedere i listati di tutte le procedure presenti nella memoria di lavoro, digita: SPROC_IN In questo caso, se nella memoria di lavoro sono presenti numerose procedure, il loro contenuto scorrerà velocemente sullo schermo, senza darti tempo di esaminarle. Per ovviare a questo inconveniente digita prima STITOLI e vedrai il nome di tutte procedure presenti. Dopo di che potrai vedere il contenuto di ciascuna, visualizzandola una alla volta con il comando SPROC "... Infine per vedere i nomi di tutti gli archivi conservati nel disco con il quale sei in comunicazione in quel momento, batti: CATALOGO e sullo schermo il LOGO farà vedere l’elenco completo dei nomi degli archivi contenuti nel disco stesso. pag. 55 pag. 56 Manuale Logo COME RECUPERARE E CANCELLARE PROCEDURE Recupero di procedure In qualunque momento il LOGO ti consente di recuperare procedure dal disco o dal dischetto per trascriverle nella memoria di lavoro. In genere ciò si fa quando si comincia una nuova attività, ma talvolta può tornare utile richiamare una procedura da un disco per unirla ad altre già presenti nella memoria di lavoro. Nel grafico riportato sotto puoi vedere la coppia dei comandi da usare per trasferire procedure dalla memoria di lavoro alla memoria esterna, oppure da quest'ultima alla memoria di lavoro. PROCEDURE Conserva "... NELLA MEMORIA DI LAVORO PROCEDURE NELLA MEMORIA Recupera "... DI MASSA Come già detto, per vedere l’elenco degli archivi presenti su disco, puoi digitare: CATALOGO . Dopo di che potrai passare a recuperare l’archivio che desideri avere. Se questo, per esempio, è l’archivio: FORME, dovrai digitare: RECUPERA “FORME A questo punto vedrai accendersi la lucetta dell’unità a disco e quando questa si spegnerà digita: STITOLI e vedrai il titolo di tutte le procedure recuperate richiamando nella memoria di lavoro l'artchivio FORME Una piccola raccomandazione. Se nella memoria di lavoro hai in precedenza già trasferito l'archivio FORME e hai apportato qualche modifica ad alcune sue procedure, la versione di FORME contenuta nel disco e da te richiamata sostituirà totalmente quella modificata. 6. Spazio di lavoro e archivi Se desideri mantenere tutte e due le versioni, prima di recuperare dal disco la versione precedente, cambia il nome a quella contenuta nella memoria di lavoro servendoti del comando: EDITA. Nell'ambiente di edizione si può infatti cambiare il nome di una procedura, nello stesso modo in cui di cambiano i contenuti delle altre righe della procedura stessa. Come è stato già detto, per "spedire" poi tutte le procedure nell’archivio: FORME digita: CONSERVA "FORME. Cancellazione di procedure. Alcune volte può essere utile ripulire la memoria di lavoro cancellandovi tutte le procedure che vi sono presenti, specie quando si decide di cambiare attività e di recuperare un altro archivio. Per pulire la memoria di lavoro, batti: CANCEPROC_IN. Per cancellare una sola procedura nella memoria di lavoro batti: CANCEPROC seguito dal nome della procedura che desideri cancellare. Per esempio per cancellare dalla memoria di lavoro la procedura TRIANGOLO contenuta nell'archivio FORME digita: CANCEPROC "TRIANGOLO Però, prima di cancellare una procedura dalla memoria di lavoro, se non la vuoi perdere del tutto, accertati che nel disco ve ne sia una copia. Nella memoria di lavoro puoi anche cancellare di colpo alcune procedure scrivendo la lista dei loro nomi entro parentesi quadrate. Per esempio: CANCEPROC [CERCHIO, TRIANGOLO, RETTANGOLO]. Infine per cancellare da un disco un intero archivio il LOGO mette a tua disposizione il comando: CANCEARC pag. 57 58 Manuale Logo che deve essere seguito dal nome dell’archivio che desideri cancellare. Per esempio, per cancellare l’archivio FORME, puoi scrivere: CANCEARC "FORME Tieni presente che: CANCEARC cancella archivi nel disco, ma non ha alcun effetto sulle procedure contenute nella memoria di lavoro. Infine, se sei in comunicazione con il dischetto esterno contenuto nel drive A: , puoi passare a comunicare con il disco interno C: digitando: ASDISCO "C: oppure digita ASDISCO "A: , se da C: vuoi passare a comunicare con A: . ARCHIVI SPAZIO DI LAVORO COMANDI PER SPAZIO DI LAVORO E ARCHIVI DISCO pag. STITOLI Scrive il nome di tutte le procedure presenti nella memoria di lavoro. SPROC "....... Scrive il testo della procedura indicata come argomento. Esempio: SPROC "QUADRATO. SPROC_IN Scrive sul video il contenuto di tutte le procedure presenti nello spazione di lavoro. CANCEPROC "........ Cancella dallo spazio di lavoro la procedura il cui nome è indicato dopo le virgolette o tutte le procedure i cui nomi sono riportati nella lista racchiusa tra parente quadrate. CANCEPROC_IN Cancella dallo spazio di lavoro un insieme di procedure. Se non è seguito da alcun argomento vengono cancellate tutte le procedure presenti nello spazio di lavoro. CATALOGO Questo comando fornisce una lista di tutti gli archivi LOGO che sono presenti nel disco selezionato. RECUPERA ".... Legge dal disco tutte le procedure dell'archivio specificato dal nome e le trascrive nello spazio di lavoro. CONSERVA ".... Legge tutte le procedure presenti nello spazio di lavoro e le trascrive nel disco selezionato in un unico archivio avente lo stesso nome di quello indicato dopo le virgolette. CANCEARC ".... Cancella dal disco selezionato l'archivo indicato dal nome scritto dopo le virgolette. ASDISCO ".... Cambia l'indirizzo della comunicazione da una memoria di massa ad un'altra. Esempio: da "A: a "C:, o viceversa. 7. Procedure e variabili PROCEDURE E VARIABILI CHE COSA E’ UN ARGOMENTO VARIABILE. Per quanto facilmente riutilizzabile, la procedura QUADRATO disegna sempre lo stesso quadrato. Se desideri disegnare un quadrato più piccolo, o più grande, devi modificare il contenuto della stessa procedura, oppure ne devi scrivere direttamente un’altra. Visto che le istruzioni primitive sono in grado di accettare argomenti ogni volta diversi quali, per esempio: AVANTI 30 , AVANTI 40 , AVANTI 50 , ..... , non si potrebbe allora far accettare, pure alle procedure, argomenti anch’essi ogni volta diversi? In LOGO ciò è possibile. Per farlo, allorchè prepari una procedura, basta che tu scriva, dopo la denominazione della procedura stessa, un nome, che puoi scegliere a piacere, per denominare l’argomento numerico che intendi modificare di volta in volta. L’unico accorgimento che devi tenere ben presente è che il nome da te scelto: deve essere preceduto dai due punti ( : ). Ecco un esempio: PER QUADRATO :LATO RIPETI 4 [A :LATO D 90] FINE È stata scritta così una procedura che puoi usare per disegnare un quadrato il cui lato sia di lunghezza qualsiasi. Attento, però ! Ogni volta che desideri disegnare un quadrato utilizzando questa nuova procedura, devi sempre specificare la lunghezza del lato che desideri. Per far ciò, nel momento che invochi questa procedura, basta che tu indichi quale lunghezza scegli per il lato, scrivendone il valore numerico al posto di :LATO. pag. 59 pag. 60 Manuale Logo ARGOMENTO VARIABILE E ARGOMENTO ATTUALE. Così, per esempio, digitando prima: QUADRATO 50 , poi: QUADRATO 70 e infine: QUADRATO 90 , con queste tre invocazioni richiamerai la procedura: QUADRATO :LATO, definita in precedenza. La tartaruga disegnerà allora tre diversi quadrati: il primo con il lato di 50 passi, il secondo di 70 passi ed il terzo di 90 passi. In LOGO la scritta: :LATO si chiama: ARGOMENTO VARIABILE , oppure: ARGOMENTO FORMALE , o più semplicemente: VARIABILE. I valori di 50, 70, 90 , da te assegnati alla stessa procedura in ciascuna sua invocazione, si chiamano: ARGOMENTI (o VALORI) ATTUALI. Il LOGO, quando deve eseguire QUADRATO 50 (oppure 70, o 90) va a sostituire con questi valori il valore variabile indicato con l’argomento formale :LATO e ciò avviene ovunque sia stato riportato la espressione :LATO, all’interno della procedura in questione. A questo punto, è importante mettere in evidenza la differenza esistente tra il momento della definizione di una procedura ed il momento della sua invocazione. Se sei in fase di invocazione e scrivi QUADRATO :LATO, oppure, se sei in fase di definizione e scrivi QUADRATO 50, queste due scritte sono senza senso in ambedue i casi. Ciò perché: - nel primo caso stai tentando di invocare una procedura usando un argomento variabile, 7. Procedure e variabili - mentre nel secondo caso provi a definire una procedura, tentando di assegnarle un argomento attuale. Entrambe le istruzioni sono scritte, pertanto, in forma non corretta rispetto al contesto operativo in cui le hai digitate. PROCEDURE A LIVELLO SEMPRE PIU’ GENERALE. Considera, adesso, come con i seguenti tre modi di scrivere la procedura: QUADRATO, puoi arrivare a rendere man mano più generale il procedimento operativo (o algoritmo) necessario per disegnare un quadrato. Osserva che passi dalla prima alla seconda procedura introducendo l’uso di RIPETI, mentre passi dalla seconda alla terza ricorrendo anche all’uso dell’argomento variabile :LATO. PER QUADRATO AVANTI 50 DESTRA 90 AVANTI 50 DESTRA 90 AVANTI 50 DESTRA 90 AVANTI 50 DESTRA 90 FINE PER QUADRATO RIPETI 4 [AVANTI 50 DESTRA 90] FINE PER QUADRATO :LATO RIPETI 4 [A :LATO D 90] FINE Avere a disposizione algoritmi sempre più generali è importante, perchè è come possedere strumenti di lavoro sempre più versatili e, come tali, utilizzabili in situazioni diverse con un minimo di accorgimenti. Tieni allora sempre ben presente che le procedure che dovrai progettare: tanto più ti saranno utili quanto più le avrai progettate e realizzate nella forma più generale possibile. pag. 61 pag. 62 Manuale Logo PROCEDURE CON PIU’ ARGOMENTI VARIABILI. In tale prospettiva di lavoro, se riprendi in considerazione le diverse procedure che hai già progettato per TRIANGOLO, QUADRATO, PENTAGONO, ESAGONO, puoi, a questo punto, convenire che possono essere tutte quante riassunte nella procedura seguente, la quale si caratterizza per avere ben due argomenti variabili: PER POLIGONO :N.LATI :LUNGH. RIPETI :N.LATI [A :LUNGH. D 360/:N.LATI] FINE Definita questa procedura e richiamandola con la invocazione: POLIGONO 3 50 la tartaruga ti disegnerà un triangolo con il lato lungo 50 passi. Una sua successiva invocazione con: POLIGONO 6 30 ti servirà per ottenere il disegno di un esagono di lato 30. Se digiti invece l’invocazione: POLIGONO 30 6 otterrai il disegno di un .... trentagono di lato 6. In tal modo, avrai la prova che l’ordine dei valori numerici da assegnare agli argomenti variabili è assai importante. Se utilizzi la procedura POLIGONO come sottoprocedura, puoi facilmente produrre suggestivi disegni decorativi anche molto complessi. Ecco un primo esempio: PER POLIGONO :N :L RIPETI :N [A :L D 360/:N] FINE PER MULTIPOLIGONO :N :L RIPETI :N [D (360/:N) POLIGONO :L 40] FINE 7. Procedure e variabili Prova questa prima procedura invocandola con: MULTIPOLIGONO 10 5 Ed ecco un secondo esempio: PER POLIGONO :N :L RIPETI :N [A :L D 360/:N] FINE PER RUOTAPOLIGONO :N :L RIPETI (360 /:L) [D :L POLIGONO :N 50] FINE Il seguente terzo esempio ti propone una superprocedura con tre variabili, nella quale è inclusa una sottoprocedura con due variabili: PER RETTANGOLO :L1 :L2 RIPETI 2 [A :L1 D 90 A :L2 D 90] FINE PER VENTAGLIO :L1 :L2 :VOLTE SINISTRA :VOLTE * 5 RIPETI :VOLTE [RETTANGOLO :L1 :L2 D 10] TANA FINE Prova questa procedura invocandola con: VENTAGLIO 5 50 19 oppure con: VENTAGLIO 7 60 20 pag. 63 pag. 64 Manuale Logo ESEMPI DI PROCEDURE CON UNA O PIU’ VARIABILI. Esempi di procedure semplici. PER TRIANGOLO :L PER QUADRATO :L RIPETI 4 [A :L D 90] RIPETI 3 [A :L D 120] FINE FINE PER ESAGONO :L PER DECAGONO :L RIPETI 10 [A :L D 36] RIPETI 6 [A: L D 60] FINE FINE PER RETTANGOLO :L RIPETI 2 [A :L D 90 A (:L * 2) D 90] FINE PER ROMBO :L RIPETI 2[A :L D 60 A :L D 120] FINE Esempi di superprocedure: PER FINESTRA :L RIPETI 4 [QUADRATO :L S 90] FINE PER FIGURA :L RIPETI 8 [QUADRATO :L D 45] RIPETI 6 [ROMBO :L D 60] FINE PER STELLA :L FINESTRA :L D 45 FINESTRA :L S 45 FINE 7. Procedure e variabili FIGURE COMPLESSE CON LA PROCEDURA QUADRILATERO PER QUADRILATERO :L RIPETI 2 [A :L D 30 A :L D 150] FINE PER ELICA :L RIPETI 2 [QUADRILATERO :L D 180] FINE PER FARFALLINA :L RIPETI 3 [QUADRILATERO :L D 120] FINE PER GIRANDOLA :L RIPETI 4 [QUADRILATERO :L D 90] FINE PER CINQUE :L RIPETI 5 [QUADRILATERO :L D 72] FINE PER SUPERGIRANDOLA :L RIPETI 6 [QUADRILATERO :L D 60] FINE PER FIORELLINO :L RIPETI 9 [QUADRILATERO :L D 40] FINE PER MARGHERITA :L RIPETI 12 [QUADRILATERO :L D 30] FINE PER FIORE :L RIPETI 18 [QUADRILATERO :L D 20] FINE pag. 65 pag. 66 Manuale Logo PER CRISANTEMO :L NT RIPETI 36 [QUADRILATERO :L D 10] FINE PER SOLE NT RIPETI 72 [QUADRILATERO :L D 5] FINE Come puoi vedere, le procedure sono praticamente assai simili.Differiscono solo per il valore dell’angolo che determina ciascun cambiamento di direzione. Eppure quanti disegni diversi! Potresti riassumerle tutte quante nell’unica procedura che trovi riportata sotto, conservando sempre presente, ovviamente, QUADRILATERO nella memoria di lavoro. Se invochi questa procedura, assegnando sempre lo stesso valore valore ad :L , ma ogni volta un valore diverso a :VOLTE , otterrai lo stesso risultato di ciascuna della procedure riportate sopra. PER TANTIDISEGNI :L :VOLTE RIPETI :VOLTE [QUADRILATERO :L D (360/:VOLTE)] FINE NOMI E VALORI DELLE VARIABILI. Come sai già, nel LOGO puoi utilizzare una variabile in tutti quei casi in cui è possibile fare uso di un numero. Tieni presente che: - nel LOGO i nomi delle variabili possono essere di lunghezza decisa a piacere e possono contenere una combinazione di lettere, di numeri o di caratteri speciali, quali sono, per esempio, i caratteri: ! “ % $ & . - i caratteri che non puoi includere nei nomi delle variabili sono soltanto: i simboli delle operazioni (ossia: + - * / ), le parentesi tonde o quadrate (ossia: ( ) [ ] ) e il segno di apostrofo (ossia: ‘ ). 7. Procedure e variabili Tieni anche presente che: - il nome di una variabile devi scriverlo facendolo precedere dalle virgolette (ossia: “). Così, per esempio, “LUNGHEZZA è il nome di una variabile per la quale tu hai scelto, appunto, proprio quella denominazione; - il valore formale di una variabile devi invece scriverlo facendolo precedere dai due punti. Così la scritta :LUNGHEZZA rappresenta il valore formale della variabile alla quale tu hai deciso di attribuire il nome di: “LUNGHEZZA. TRE MODI PER DEFINIRE VARIABILI Nel LOGO le variabili possono essere definite in tre modi: - a livello di ARGOMENTO DELLE PROCEDURE; ed è questo il modo che tu già conosci; - a livello di variabile GLOBALE e questa definizione la puoi effettuare, sia all’interno di una procedura, sia, in via preliminare, al suo esterno; - a livello di variabile LOCALE e tale terzo tipo di variabile puoi definirla solamente dentro una procedura. Variabili globali La parola primitiva del LOGO: AS (abbreviazione di assegna) serve per definire una variabile e le attribuisce una valore che la stessa variabile conserva fino a che un successivo comando di AS , non glielo modifica, attribuendole un valore diverso. Le variabili create con AS si chiamano variabili globali. L’istruzione AS puoi usarla: - sia nel mondo dei comandi immediati, ossia all’esterno di una procedura, - sia nel mondo dell’editore, ossia dentro una procedura. pag. 67 pag. 68 Manuale Logo Tieni presente che il valore attribuito a una variabile mediante l’istruzione AS viene sempre conservato dal LOGO e viene usato in ogni procedura nella quale compare la stessa variabile. Per di più, tale valore verrà conservato allorchè effettui una copia di tale procedura, ossia quando trasferisci la procedura stessa dalla memoria di lavoro del computer alla memoria esterna su disco. Ed è appunto per tali ragioni che tale tipo di variabile prende il nome di variabile globale. Variabili locali Le variabili locali puoi, invece, definirle solamente nel mondo dell’editore dentro una procedura. In tal caso, mentre una procedura viene eseguita, la variabile conserva il suo valore. Quando invece la procedura si ferma, il valore della variabile viene cancellato e dimenticato. Se la stessa procedura viene, però, invocata di nuovo e poi eseguita, il LOGO riprende ancora il valore della variabile locale, per conservarlo fino al termine della esecuzione della procedura stessa. Il comando per localizzare il valore di una variabile solo dentro una procedura puoi darlo con la parola riservata: LOCALE Tale parola deve essere accompagnata dal nome che intendi dare alla variabile stessa. Per esempio: LOCALE "LUNGHEZZA Dopo tale definizione potrai attribuire un certo valore alla variabile in tal modo chiamata usando l’istruzione AS. Tieni presente che, quando usi AS dopo l’istruzione LOCALE, la variabile viene considerata dal LOGO come variabile locale, e non come variabile globale. Le variabili locali sono importanti, perchè evitano di sovraccaricare la memoria di lavoro affidandole il compito di dover registrare i valori di numerose variabili globali. pag. 7. Procedure e variabili Infatti, se usi variabili globali dove invece potresti usare variabili locali, occupi spazio della memoria di lavoro in cui potrebbero, invece, trovar posto altre procedure. Devi inoltre tener presente che, in procedure diverse e sotto un stesso nome, puoi avere più variabili locali, ma soltanto una variabile globale. Ecco alcuni esempi nei quali la variabile viene definita: - prima con AS, mediante comando diretto, e quindi non all’interno di una procedura. In questo caso la variabile assume il valore di variabile globale permanente; - successivamente, AS viene dopo una definizione di variabile realizzata con l’istruzione LOCALE, all’interno di una procedura. In questo caso, la variabile assume il valore di variabile locale momentanea. AS “PASSO 50 AVANTI :PASSO (la tartaruga avanza di 50 passi) AS “UN.QUARTO.DI.GIRO 90 DESTRA :UN.QUARTO.DI.GIRO (la tartaruga ruota di 90 gradi e destra) AS “LATO 100 AS “100 30 STAMPA :LATO STAMPA :100 + 100 (il LOGO scrive: 100) (il LOGO scrive: 130) PER TABELLINE LOCALE “NUM.A LOCALE “NUM.B AS “NUM.A ACASO 10 AS “NUM.B ACASO 10 ; [IL SIGNIFICATO DI ACASO LO CONOSCERAI IN SEGUITO] ; [ORA STA ATTENTO A SCRIVERE LA RIGA SUCCESSIVA] (STAMPA :NUM.A [PER] :NUM.B [=] :NUM.A * :NUM.B) FINE 69 pag. 70 Manuale Logo Questa procedura serve per scegliere a caso due numeri più piccoli di dieci e per avere il loro prodotto. Ricorda che per scrivere la sua sesta e settima riga come righe di spiegazione devi prima digitare la procedura COMMENTO riportata nel capitolo 5 all'inizio di pagina 46. Di regola l’istruzione STAMPA è in grado di trattare un solo argomento, che può consistere in una singola parola, oppure in una singola lista. In questo caso,però, STAMPA deve manipolare ben cinque argomenti, che sono: due valori di variabili (:NUM.A e :NUM.B) più due liste di "parole", ciascuna racchiusa tra parentesi quadrate (ossia: [PER] e [=], e infine il valore del prodotto di :NUM.A moltiplicato per :NUM.B. Per obbligare STAMPA ad accettare questa pluralità di argomenti, evitando che il LOGO dia un messaggio di errore, occorre racchiudere tutta l’intera riga della istruzione stessa dentro parentesi tonde. Ma torniamo ai problemi dell’utilizzazione della istruzione AS. Se con AS hai attribuito un certo valore a una determinata variabile e non ricordi più tale valore, puoi vederlo digitando l’istruzione COSA seguita dal nome della variabile di cui desideri ricordare il valore. Per esempio, avendo dato alla variabile "LATO il valore di 100 mediante l’struzione AS "LATO 100, se digiti COSA "LATO, il LOGO ti risponderà: RISULTATO 100. Se a questo punto desideri cancellare tale valore nella stessa variabile, ecco qual è il procedimento che devi seguire. Digita AS "LATO " (ossia: dopo la seconde virgolette digita uno spazio vuoto) e concludi con <INVIO>. Dopo di ciò digita ancora COSA "LATO e vedrai che il LOGO ti risponde RISULTATO: , ossia ti dà, quale risultato, uno spazio vuoto, ossia nulla. 8. Trattamento dei numeri TRATTAMENTO DEI NUMERI NEI NUMERI, IL PUNTO SOSTITUISCE LA VIRGOLA. Il LOGO usa senza alcuna difficoltà i numeri interi naturali, quali sono, per esempio, i numeri: 4, 67, 7 63, e i numeri reali, ossia, i numeri con la parte non intera (“decimale”) quali, per esempio: 4.37, 2.6. Per il LOGO, 7/2 (sette diviso due) è la stessa cosa di 3.5 (da leggere: tre punto cinque, ossia tre unità e cinque decimi, ). Poichè quasi sicuramente sei abituato a usare la virgola come segno di separazione tra la parte intera e quella non intera del numero, forse ora incontrerai qualche difficoltà a sostituirla con il punto. Considera, però, che tutte le macchine da calcolo, dalla piccole calcolatrici tascabili ai grandi computer, usano il punto come elemento di separazione. Di recente, anche la legge italiana ha stabilito che il punto vada usato nei numeri, come segno di separazione al posto della nota virgola. Quindi, d’ora in avanti, quando all’interno di un numero trovi un punto, devi interpretarlo come confine tra la sua parte intera e la sua parte non intera (comunemente, ma impropriamente, chiamata "decimale") e non, come tuttora erroneamente capita in alcuni testi di "matematica" (?), quale segno di separazione tra i gruppi di tre cifre: unità, migliaia, milioni. Tieni presente che, secondo le regole recentemente stabilite per la scrittura dei grandi numeri, queste terne di cifre vanno separate, in forma corretta, da un piccolo spazio vuoto in sostituzione del vecchio punto. Il punto va usato, pertanto, soltanto quale segno di confine tra la parte intera e la parte non intera (“decimale”). Abbiamo scritto il termine "decimale" tra virgolette in quanto, se tale termine viene riferito esclusivamente ai numeri non interi, questa espressione ci sembra impropria: nega infatti la possibilità di chiamare con lo stesso termine anche i numeri interi, scritti ordinariamente in notazione appunto decimale, ossia in base dieci. pag. 71 pag. 72 Manuale Logo LE QUATTRO OPERAZIONI NEL LOGO Nel LOGO le espressioni aritmetiche debbono essere scritte di continuo, come fossero sopra una sola riga e, con esse, non si può andare a capo, come talvolta capita quando vengono scritte su carta. I simboli usati per le quattro operazioni sono: + - * / . Indicano, rispettivamente, l’addizione, la sottrazione, la moltiplicazione e la divisione. Osserva che per la moltiplicazione dovrai usare l’asterisco (*) e non la lettera minuscola x . Analogamente la barra trasversale ( / ) dovrai usarla al posto dei due punti (:) , con i quali, nella scrittura corrente, viene indicata la divisione. Il LOGO ti dà immediatamente il risultato di una operazione aritmetica anche quando sei nei comandi diretti e la scrivi, concludendola con <INVIO>. Se scrivi, per esempio: 26 + 34 <INVIO> il LOGO ti risponde fulmineamente: 60 Quindi, potrai scrivere: AVANTI 24 + 36 e la tartaruga si sposterà di 60 passi in avanti. Per esempio, se scrivi: STAMPA 76 * 42 il LOGO ti risponderà scrivendo semplicemente: 3192 Similmente, digitando: DESTRA 360/5 la Tartaruga ruoterà di 72 gradi verso destra. 8. Trattamento dei numeri GERARCHIA DELLE OPERAZIONI. Tieni presente che nel calcolare il risultato di una serie di operazioni potresti incontrare alcune differenze con il modo di calcolare del LOGO. Per prevedere il risultato di una serie di operazioni diverse scritte in linea, occorre conoscere, infatti, quale regola segue il LOGO nel dare la precedenza ad alcune operazioni rispetto ad altre. Prova questi comandi: STAMPA (7 + 5 ) / 2 STAMPA 7 + 5 / 2 Nel primo caso il LOGO ti darà, come risultato: 6 in quanto, per la presenza delle parentesi, è obbligato a calcolare prima l’addizione: 7 + 5 e, solo successivamente, esegue la divisione per 2 sulla somma 12. Nel secondo caso, invece, mancando le parentesi, il LOGO dà la precedenza all’operazione di divisione (anche se la trova scritta dopo l’addizione). Esegue quindi l’operazione 5 diviso 2 e, ottenuto il risultato 2.5, passa ad addizionarlo a 7. In questo secondo caso il risultato finale sarà 9.5 (e non 12 come nel caso precedente). Le regole per risolvere le espressioni aritmetiche a cui obbedisce il LOGO - analogamente a quanto fanno quasi tutte le macchine da calcolo grandi e piccole - sono le seguenti: 1. - Prima di eseguire il calcolo il LOGO controlla le parentesi. Esegue per prime le operazioni che sono contenute nelle parentesi più interne e, per esse, segue le regole riportate al n. 2 e al n. 3. 2. - Il LOGO esegue poi le moltiplicazioni e le divisioni nell’ordine in cui le incontra da sinistra verso destra. Calcola, infatti: 8 / 2 = 4 (e non uguale a 0.25, come si otterrebbe se si effettuasse la divisione da destra verso sinistra, ossia 2 diviso 8) 3.- Le addizioni e le sottrazioni vengono infine eseguite per ultime e, anche queste operazioni, sono man mano risolte nell’ordine in cui stanno, da sinistra verso destra. pag. 73 pag. 74 Manuale Logo Prova ora a calcolare, usando solamente carta e matita, quale risultato ti darà il LOGO per le espressioni seguenti: 4 * 3 + 6 / 3 - 2 * (3 + 2) = 4 * (3 + 6) / (3 - 2) * 3 + 2 = 4 * (3 + 6) / ((3 - 2) * 3 + 2) = Digita poi ciascuna espressione sul computer in ambiente LOGO e controlla l’esattezza del risultato da te in precedenza calcolato solo con carta e matita. OPERATORI ARITMETICI (FUNZIONI NUMERICHE). I segni delle quattro operazioni si chiamano anche FUNZIONI NUMERICHE e producono un risultato che, nel linguaggio informatico, prende il nome di USCITA (in inglese: output). Così, scrivendo: 24 / 3 il LOGO ti risponderà, come sai già: 8 e il numero 8 rappresenta l’uscita della funzione di divisione, espressa con il segno: / e applicata alla coppia ordinata di numeri 24 e 3. Oltre alle quattro funzioni numeriche fondamentali, il LOGO è anche di utilizzare diversi altri operatori aritmetici che indichiamo di seguito. ACASO <num> ACASO è una funzione che, quale risultato, genera un numero estratto a caso in una quantità di interi scelta a piacere. Stabilirai tale quantità scrivendone l'entità subito dopo ACASO. Così, per esempio, se scrivi: ACASO 10 , otterrai un numero scelto a caso tra 0 e 9, mentre con ACASO 501, otterrai un numero scelto a caso tra 0 e 500. 8. Trattamento dei numeri ARCTAN <num> Il valore della funzione ARCTAN è l’arcotangente del suo argomento espressa in gradi sessagesimali. ARRO <num> ARRO arrotonda un numero non intero ("decimale") al suo intero più vicino. Così: ARRO 6.4 , dà in uscita: 6 ARRO 2.7, dà in uscita: 3 ARRO 20 / 3 , dà in uscita: 7 ASCIFRE <num> Determina il massimo numero di cifre significative del risultato di ogni operazione aritmetica e quindi condiziona il livello di precisione ottenibile nei calcoli. L’argomento di ASCIFRE può variare da 1 a 100 per le sole operazioni aritmetiche elementari. Se si utilizzano funzioni trascendenti deve essere invece limitato a 32. ASSO Fornisce il valore assoluto del suo argomento. Esempi: ASSO 58 - 20 = 38 ; ASSO 44 - 51 = 7 CIFRE Indica il numero delle cifre significative utilizzato nei calcoli numerici. Esempio: ASCIFRE 7 ; CIFRE 7 COS <num> Fornisce come valore il coseno dell’argomento. pag. 75 pag. 76 Manuale Logo DIFFERENZA <num> <num> Riporta la differenza del primo argomento numerico rispetto al secondo. Esempio: DIFFERENZA 300 356 = -56 Attenzione! Quando usi il segno “-” come operatore di sottrazione binaria devi inserire uno spazio prima del sottraendo. Se non osservi questa regola, il Logo legge il secondo argomento numerico semplicemente come numero negativo. Esempi: 23 * 3 -4 = 69 -4 ; 23 * 3 - 4 = 65 DIVISIONE <num> <num> DIVISIONE è l’operatore di divisione prefisso equivalente al segno di divisione “/” comunemente usato in forma infissa. Esempio: DIVISIONE 32 5 = 32 / 5 = 6.4 GRADI Questa funzione converte in gradi il numero dei radianti forniti dall’argomento. Esempio: GRADI PI = 180 INT <num> Il valore fornito da questa funzione è uguale alla parte intera del numero fornito come argomento. Esempio: INT 5,46 = 5 LOG10 <num> Questa funzione restituisce il logaritmo in base dieci del suo argomento. Esempio: LOG10 100 = 2 pag. 8. Trattamento dei numeri PI Il valore di PI è pi greco con una precisione pari al numero delle cifre significative stabilito con ASCIFRE (max. 32). Esempio: ASCIFRE 10 PI = 3.141592654 POTENZA <num> <num> Questa funzione riporta il primo argomento, considerato come base, elevato alla potenza specificata del secondo argomento, considerato come esponente. Esempio: POTENZA 4 3 = 4 3 = 64 PRODOTTO <num> <num> Il valore riportato da questa funzione è il prodotto dei suoi due argomenti numerici. Con questa funzione si possono anche utilizzare più di due argomenti, ma in questo caso l’istruzione va scritta tra parentesi tonde. Esempi: PRODOTTO 12 4 = 48 ; (PRODOTTO 3 5 10) = 150 QUOZIENTE <num> <num> Il valore restituito da questa funzione è la parte intera del quoziente dei suoi argomenti. Esempio: QUOZIENTE 12 5 = 2. Usando i due argomenti con l’operatore DIVISIONE, si avrebbe invece: DIVISIONE 12 5 = 12 / 5 = 2.4 RADIANTI <num> Converte i gradi in radianti. Esempio: RADIANTI 180 = 3.1415926 77 pag. 78 Manuale Logo RADQ <num> Il valore restituito da questa funzione è la radice quadrata del suo argomento. Esempio: RADQ 64 = 8 RESTO <num> <num> Questa funzione genera, come risultato, il resto della divisione eseguita tra i numeri fornitegli come argomenti. Esempi: RESTO 34 5 = 4 ; RESTO 56 8 = 0 SEN Il valore della funzione SEN è il seno trigonometrico del suo argomento. SOMMA <num> <num> Il valore di questa funzione è la somma dei suoi due argomenti. Con più di due argomenti si debbono usare le parentesi tonde. TAN <num> Il valore della funzione TAN è la tangente del suo argomento espresso in gradi sessagesimali. Esempio: TAN 56 = 1.4825602 Stai attento! Quando usi i numeri non interi ("decimali") con le funzioni QUOZIENTE e RESTO, il LOGO, prima di eseguire la divisione, "arrotonda" (ossia, approssima) automaticamente i due numeri all’intero più vicino. Questo accade per tutte le primitive del LOGO che, per argomento, richiedono numeri interi. 9. Cerchi e archi di raggio variabile CERCHI E ARCHI DI RAGGIO VARIABILE Il poligono che ottieni con la procedura: RIPETI 60 [A 2 D 360/60] appare del tutto simile ad un cerchio. La lunghezza del contorno di questo "cerchio", ossia la sua "circonferenza" che d’ora in avanti chiameremo a titolo assolutamente convenzionale CIRCONFERENZA, ti viene data dalla relazione generale: (relazione 1): LATO * 60 = CIRCONFERENZA In questa relazione, 60 è il numero dei lati, mentre LATO rappresenta la lunghezza di ciascun lato. Poichè, come sai, la lunghezza della circonferenza si calcola moltiplicando il doppio della lunghezza del RAGGIO per 3.1416, abbiamo questa seconda relazione: (relazione 2): CIRCONFERENZA = RAGGIO * 2 * 3.1416 Sostituendo il secondo membro della relazione 1 con il secondo membro della relazione 2 avremo: (relazione 3): LATO * 60 = RAGGIO * 2 * 3.1416 Se in quest'ultima relazione intendiamo calcolare il solo valore generale del LATO avremo: (relazione 3/1): LATO = RAGGIO * 2 * 3.1416 / 60 Quest’ultima uguaglianza ti dà la possibilità di realizzare una procedura per disegnare una CIRCONFERENZA di dimensioni variabili. Ciò perché, quando di volta in volta cambierai il valore numerico della variabile RAGGIO cambierà automaticamente anche il valore del LATO e quindi la dimensione di tutta la CIRCONFERENZA. pag. 79 pag. 80 Manuale Logo Ecco la procedura che potrai digitare: PER CERCHIO :RAGGIO LOCALE "LATO AS "LATO :RAGGIO * 2 * 3.1416 / 60 RIPETI 60 [A :LATO D 360 / 60] FINE Prova questa procedura invocandola alcune volte, ma dando, ogni volta, un diverso valore a :RAGGIO. Prova poi, per esempio, a realizzare la seguente superprocedura: PER TUNNEL NT CERCHIO 20 CERCHIO 40 CERCHIO 60 CERCHIO 80 CERCHIO 100 MT FINE Come sai già, l’iniziale comando NT, contenuto in quest'ultima procedura, nasconde la tartaruga allo scopo di farle disegnare più rapidamente ciascun cerchio. La procedura CERCHIO può essere facilmente modificata per disegnare archi di raggio variabile. Ecco una procedura per disegnare un arco il cui angolo al centro misura 90 gradi. PER ARCO.90 :RAGGIO LOCALE "LATO AS "LATO :RAGGIO * 2 * 3.1416 / 60 RIPETI 60/4 [A :LATO D 360 / 60] FINE Con le procedure seguenti potrai disegnare "petali" di grandezza variabile e, di seguito, "fiori" di grandezza variabile. Ecco le procedure: PER PETALO :RAGGIO RIPETI 2 [ARCO.90 :RAGGIO D 90] FINE 9. Cerchi e archi di raggio variabile PER FIORE :RAGGIO RIPETI 5 [PETALO :RAGGIO D 360 / 5] FINE Se desideri disegnare cerchi di raggio variabile, che abbiano però la posizione iniziale della tartaruga, ossia la sua TANA, dislocata al centro di ogni cerchio, ecco la procedura da digitare: PER CERCHIO.C :RAGGIO LOCALE "LATO AS "LATO :RAGGIO * 2 * 3.1416 / 60 SU S 90 A :RAGGIO D 90 GIU RIPETI 60 [A :LATO D 360/60] SU D 90 A :RAGGIO S 90 GIU FINE Puoi usare quest'ultima procedura per disegnare un bersaglio. Così: PER BERSAGLIO CERCHIO.C 20 CERCHIO.C 40 CERCHIO.C 60 CERCHIO.C 80 CERCHIO.C 100 FINE Con le procedure seguenti potrai disegnare poligoni regolari inscritti e circoscritti a cerchi di raggio variabile: PER TRIANGOLO. CIRCOSCRITTO : RAGGIO CERCHIO.C :RAGGIO SU A :RAGGIO * 2 D 150 GIU RIPETI 3 [A (2 * RADQ (4 * :RAGGIO * :RAGGIO) -(:RAGGIO * :RAGGIO)) D 120] SU TANA GIU FINE pag. 81 pag. 82 Manuale Logo PER TRIANGOLO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 150 GIU RIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO) - (:RAGGIO * :RAGGIO)) D 120] SU TANA GIU FINE PER QUADRATO.CIRCOSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 90 A :RAGGIO GIU RIPETI 4 [D 90 A (:RAGGIO * 2)] SU TANA GIU FINE PER QUADRATO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A RAGGIO D 135 GIU RIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) + (:RAGGIO * :RAGGIO)) D 90] SU TANA GIU FINE PER ESAGONO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 120 GIU RIPETI 6 [A RAGGIO D 60] SU TANA GIU FINE Digita tutte le procedure di questo capitolo, provale una ad una e, infine memorizzale, includendole tutte quante in un unico archivio che potrestri denominare CERCHI. 10. Procedure ricorsive PROCEDURE RICORSIVE INTRODUZIONE ALLA RICORSIVITA’ Procedure che non si fermano "mai". Finora le tue procedure sono state molto docili e si sono fermate ogni volta che tu stabilivi che lo facessero. Faremo adesso la conoscenza con un tipo di procedure che non riescono a fermarsi. Come sai già, in una procedura del LOGO puoi usare sia tutte le istruzioni primitive di questo linguaggio, sia tutti i nomi delle procedure, da te in precedenza definite e presenti nella memoria di lavoro. A questo punto ti puoi domandare: è possibile usare, dentro una procedura, il nome della procedura stessa ? Ossia, è possibile che una procedura possa chiamare se stessa dentro di sè. Sì, nel LOGO questa possibilità esiste e a questa strana e interessante caratteristica di programmazione viene dato il nome di ricorsività. Che cosa è la ricorsività. Esploriamo un po’ la potenza della ricorsività con qualche semplice esempio.Prova a immaginare che cosa succede dentro la procedura seguente, la quale, come puoi facilmente vedere esaminando la sua terza riga, chiama se stessa al proprio interno: PER CERCHIO AVANTI 1 DESTRA 1 CERCHIO FINE Quali comandi abbiamo dato alla tartaruga invocando la procedura CERCHIO ? 1. Vai avanti di un passo Ruota di un grado a destra Esegui CERCHIO pag. 83 pag. 84 Manuale Logo 2. Vai avanti di un passo Ruota di un grado a destra Esegui CERCHIO 3. Vai avanti di un passo Ruota di un grado a destra Esegui CERCHIO 4. Vai avanti ...... Come vedi la procedura CERCHIO, chiamando ogni volta se stessa, costringe la tartaruga ad andare avanti ininterrottamente. Quanto accade dentro la procedura ricorsiva CERCHIO puoi capirlo meglio ricordando questa nota filastrocca: 1. C’ERA UNA VOLTA UN RE SEDUTO SUL SOFÀ CHE DISSE ALLA SUA SERVA: "RACCONTAMI UNA STORIA". E LA SERVA INCOMINCIO’ 2. C’ERA UNA VOLTA UN RE SEDUTO SUL ...... Una procedura che chiama se stessa prima di esaurire le proprie istruzioni in teoria non si dovrebbe fermare "mai". Nella procedura CERCHIO, infatti, la tartaruga, conclusa la prima parte della procedura, passa ad eseguire la sua ultima istruzione, la quale, consistendo nel nome della procedura stessa, la obbliga a ricominciare tutta la procedura da capo. E così via, "indefinitamente". Come fermare una procedura ricorsiva. Se desideri interrompere l’esecuzione di una procedura di questo tipo, ha due possibilità: - di interromperla temporaneamente e, in questo caso, devi premere il tasto <PAUSA> collocato in alto a sinistra sulla tastiera. La procedura si fermerà e potrai farle ancora riprendere l’esecuzione premendo un tasto qualsiasi. 10. Procedure ricorsive - di interromperla definitivamente e, in questo caso, devi premere in simultanea i tasti <CTRL> e <PAUSA>. Una procedura, che prima di terminare usa se stessa come sottoprocedura, in termine tecnico viene chiamata procedura ricorsiva finale. Tieni presente che le procedure di questo tipo ti offrono un modo molto potente ed elegante di scrivere procedure di esecuzione "infinita". Esempi di procedure ricorsive. Ecco un altro esempio di procedura ricorsiva che, come sai già, potrai interrompere premendo contemporaneamente i tasti <CTRL> e <PAUSA>: PER QUADR.RICORS :LATO AVANTI :LATO DESTRA 90 QUADR.RICORS :LATO FINE Che cosa abbiamo ordinato di eseguire a QUADR.RICORS ? 1. Disegna un lato della lunghezza che ti ho dato Ruota di 90 gradi a destra Esegui QUADR.RICORS 2. Disegna un lato della lunghezza che ti ho dato Ruota di 90 gradi a destra Esegui QUADR.RICORS 3. Disegna un ...... Ma che cosa accadrebbe se il lato, oppure il cambiamento di direzione, fossero tali da non far ripassare la tartaruga sempre sullo stesso percorso? Prova a cambiare l’ampiezza della rotazione rendendola più piccola, o più grande, di 90 gradi. Così, per esempio: PER QUADR.RICORS :LATO AVANTI :LATO DESTRA 87 QUADR.RICORS :LATO FINE pag. 85 pag. 86 Manuale Logo Ancora un altro esempio. Prova a modificare la procedura POLIGONO, già proposta in precedenza, nel modo che segue: PER NUOVOPOLIGONO :LATO :ANG AVANTI :LATO DESTRA :ANG AVANTI :LATO DESTRA (:ANG * 2) NUOVOPOLIGONO :LATO :ANG FINE Prova ad invocare questa procedura digitando: NUOVOPOLIGONO 30 144 Interrompi l'esecuzione con <CTRL> + <PAUSA>, pulisci il video con PS e digita la nuova invocazione: NUOVOPOLIGONO 7 117 Vedrai che, in entrambi i casi, NUOVOPOLIGONO continua senza interruzione a disegnare la propria figura, riprendendo sempre il disegno con le grandezze iniziali di :LATO e di :ANG . RICORSIVITA’ E VARIAZIONI DI ARGOMENTI Come variare argomenti in procedura ricorsive. Un’altra interessante possibilità che ti viene offerta dalla ricorsività è quella di poter cambiare la lunghezza di un lato, ogni volta che viene disegnato, oppure l’ampiezza di un angolo, ogni volta che si effettua un cambiamento di direzione. Tieni presente che, quando il LOGO ti richiede un numero, tu hai diversi modo per proporglielo. - all’inizio hai scritto procedure assegnando, ad esempio, il valore di un lato in forma diretta (AVANTI 100). - poi ha imparato ad usare una variabile (AVANTI :LATO). - un terzo modo di dare un numero al LOGO a quello di fornirglielo mediante qualche operazione aritmetica, che lui è in grado di calcolare assai rapidamente (esempio: AVANTI :LATO + 3). 10. Procedure ricorsive Ecco un applicazione di questa terza nuova formulazione: PER SPI.QUA :LATO AVANTI :LATO DESTRA 90 SPI.QUA :LATO + 3 FINE Allorchè SPI.QUA chiama SPI.QUA al proprio interno, la lunghezza del lato aumenta di 3 passi e di conseguenza, anche se la rotazione rimane di 90 gradi, la Tartaruga non potrà mai ritornare sullo stesso percorso. Vediamo che cosa accade quando fai eseguire questa procedura invocandola con: SPI.QUA 10 1. SPI.QUA 10 Avanza 10 passi Ruota a destra di 90 gradi Esegue SPI.QUA 10 + 3 2. SPI.QUA 10 + 3 Avanza di 13 passi Ruota a destra di 90 gradi Esegue SPI.QUA 13 + 3 3. SPI.QUA 13 + 3 Avanza ... In questo modo, il secondo lato, ed ogni altro che viene dopo di lui, sarà di tre passi più lungo del procedente ed il disegno perde così l’aspetto di un quadrato e assume, invece, l’aspetto di spirale. Esempi di procedure con variazione di argomento. Ecco un primo esempio: PER POLISPI :L :A ASSCHERMO "CHIUSO AVANTI :L DESTRA :A POLISPI (:L + 1) :A FINE pag. 87 pag. 88 Manuale Logo Invoca questa procedura prima con: POLISPI 1 95 Poi con: POLISPI 1 90 E infine con: POLISPI 1 117 In questo modo ti renderai conto del comportamento della tartaruga durante l’esecuzione di ciascuna di queste procedure. Potrai anche veder l’effetto prodotto dall’argomento :LATO, la cui grandezza viene modificata attraverso la chiamata ricorsiva. La chiamata incrementa di un passo il valore della lunghezza ad ogni ciclo di esecuzione. Tutto ciò fa aumentare costantemente il "raggio della spirale", allontanando sempre più la tartaruga dal punto di partenza. Eseguite queste prove, richiama la procedura POLISPI con il comando EDITA "POLISPI, correggila sostituendo il comando ASSCHERMO "CHIUSO con il comando ASSCHERMO "CIRCOLARE, definisci la nuova procedura e ripeti le prove con i valori dati in precedenza. Vedrai , nel modo del tutto evidente, quale differenza esiste tra lo stato di ASSCHERMO "CHIUSO e lo stato di ASSCHERMO CIRCOLARE. POLISPI 1 88 POLISPI 1 118 POLISPI 1 90 POLISPI 1 92 POLISPI 1 120 POLISPI 1 122 11. Creazione e uso di funzioni CREAZIONE E USO DI FUNZIONI. LE FUNZIONI Che cosa è una funzione Finora hai creato interessanti sistemi grafici usando quasi esclusivamente le quattro istruzioni primitive : AVANTI, INDIETRO, DESTRA, SINISTRA, con l’istruzione RIPETI e adoperando qualche volta la ricorsività. Tu sai, però, che il LOGO mette a tua disposizione diverse altre istruzioni e con esse potresti quindi progettare e realizzare sistemi grafici ancora più interessanti e più attraenti di quelli prodotti fino ad ora. Per esempio, sai già che l’istruzione: ACASO <numero> ti mette in condizione di scrivere un nunero che il LOGO sceglierà a caso tra quelli compresi nell’intervallo tra 0 e numero -1. Di conseguenza, se ripeti diverse volte questa istruzione, avrai ogni volta un numero diverso dai precedenti, in quanto, come già detto, ogni numero viene scelto a caso. Così con l’istruzione: AVANTI ACASO 50 potrai far spostare la tartaruga in avanti di un numero di passi preso a caso, numero però che risulta comunque compreso tra 0 e 49. Ecco una procedura ricorsiva in cui viene utilizzata l’istruzione: ACASO. PER RIF_POS D 10 * ACASO 36 A 10 * ACASO 10 ST DOVE ASPETTA 50 RIF_POS FINE L’effetto di questa procedura è quello di muovere sullo schermo la tartaruga a caso, facendola fermare un po' in ciascuna tappa per comunicare le coordinate della posizione raggiunta. Dopo alcune tappe la tartaruga si fermerà e il LOGO ti invierà il messaggio di aiuto: HO FINITO I NODI. Per riprendere l'esplorazione dello schermo dovrai allora digitare LIBERA e invocare di nuovo la procedura RIF_POS. pag. 89 pag. 90 Manuale Logo In questo modo, ogni volta che eseguirai questa procedura ricorsiva, potrai vedere un tracciato grafico del tutto diverso dai tracciati grafici ottenuti con la stessa procedura in precedenza. Si chiama funzione l'istruzione che, partendo da uno o più valori prestabiliti, genera, come risultato, uno ed un sol valore. ACASO 50 è quindi una istruzione-funzione. Infatti essa, partendo dal valore di 50, genera un altro valore, che viene da lei scelto a piacere tra i numeri che vanno da 0 a 49. Come ricorderai, in LOGO esistono diverse altre funzioni che, per lo più, sono di tipo aritmetico. Ricordiamone alcune a titolo di esempio: La funzione: QUOZIENTE N1 N2 richiede due valori numerici, indicati con i simboli N1 ed N2, e genera come risultato il quoziente intero della divisione: N1 / N2. Così: QUOZIENTE 7 3 ti darà, come risultato, il valore 2 , anzichè produrre il valore 2.33333... che è il vero risultato della divisione 7 / 3 . Il resto intero della divisione: N1 / N2 potrai ottenerlo usando la funzione: RESTO N1 N2. Così: RESTO 7 3 ti darà, quale risultato, 1 , ossia il resto intero della divisione 7 / 3 . Funzioni create con l’istruzione RIPORTA. Allo stesso modo con il quale sei in grado di definire procedure, tu puoi altresì definire altre funzioni di cui avverti eventualmente la necessità. La parola primitiva che puoi utilizzare per produrre, quale risultato, quelle funzioni che intendi definire è l’istruzione: RIPORTA Ad essa va attribuito il significato seguente: esci da questa procedura e dammi il risultato dell’operazione ..... 11. Creazione e uso di funzioni L'istruzione: RIPORTA genera quindi il risultato di una certa operazione, chiudendo, però, la procedura nella quale è stata inserita. Segue un esempio, nel quale si crea la funzione: SOMMARE, attribuendole il compito di addizionare due numeri. Dopo di ciò, attraverso la definizione di un’altra funzione, lo stesso compito viene trasferito dalla funzione: SOMMARE alla funzione: ADDIZIONARE. PER SOMMARE :N1 :N2 RIPORTA :N1 + :N2 FINE PER ADDIZIONARE :N1 :N2 RIPORTA SOMMARE :N1 :N2 FINE Definite queste funzioni potrai scrivere indifferentemente: 5+7 SOMMA 5 7 SOMMARE 5 7 ADDIZIONARE 5 7 e il LOGO ti risponderà, in ogni caso: 12 Ecco un altro esempio: PER ELEVARE.AL.QUADRATO :N RIPORTA :N * :N FINE Questa procedura ti permette di calcolare il quadrato di un numero che puoi scegliere a piacere. Quando la invochi, il LOGO calcola per te il risultato della operazione: :N * :N e te lo scrive. Subito dopo la procedura si interrompe e il controllo del LOGO ritorna alla tastiera del computer, ossia a te che ci stai lavorando. pag. 91 pag. 92 Manuale Logo Ancora un esempio: PER DUE.DADI RIPORTA (ACASO 11) + 2 FINE Con questa procedura-funzione potrai generare numeri casuali compresi nell’intervallo da 2 a 12 , ottenendo il risultato complessivo che potresti ottenere con il lancio di una coppia di dadi. PROCEDURE-FUNZIONI RICORSIVE. Che cosa sono le procedure-funzioni ricorsive. Come sai già, due degli strumenti operativi molto importanti del linguaggio LOGO sono rappresentati dalle procedure ricorsive e dalle procedure funzioni e, quest’ultime, ti servono per portar fuori da una certa procedura un certo risultato che desideri ottenere. Come ricorderai, un esempio di procedura ricorsiva è la procedura CERCHIO: PER CERCHIO AVANTI 1 DESTRA 1 CERCHIO FINE Un esempio di procedura funzione è invece la procedura PITAGORA scritta appresso. Con essa potrai ottenere la radice quadrata, calcolata con la funzione: RADQ, della somma dei quadrati di due numeri, scelti da te a piacere. Per esempio, se scegli i numeri 3 e 4 , i loro quadrati sono rispettivamente: 9 (ossia il risultato di: 3 x 3) e 16 (ossia il risultato di 4 x 4) . Se calcoli la somma di questi due quadrati, hai: 9 + 16 = 25. Ebbene, PITAGORA ti calcola immediatamente la radice quadrata di 25, scrivendo 5 che è appunto la radice quadrata di 25 , ossia 5 è quel numero che, moltiplicato per se stesso, dà 25 come prodotto. Ecco la procedura PITAGORA: 11. Creazione e uso di funzioni PER PITAGORA :Nl :N2 RIPORTA RADQ ((:Nl * :N1) + (:N2 * :N2)) FlNE Tenteremo fra poco di mettere insieme l’idea di ricorsività con l’idea di procedura-funzione, ma, prima di farlo, occorre spiegare che cosa è un ALGORITMO. L’algoritmo euclideo del MCD Un algoritmo si puo definirlo, in forma del tutto semplice, come: procedimento operativo ben ordinato adatto per risolvere un problema. In matematica, uno degli algoritmi più famosi è il procedimento descritto appresso, con il quale si può calcolare, in modo del tutto facile, il massimo comun divisore (MCD) di due numeri: 1. - Prendi due numeri a piacere. Siano N1 e N2. 2. - Se sono uguali, l’algoritmo è concluso. N1 è il loro MCD. 3. - Se N1 è più piccolo di N2, scambia il loro posto. Ossia metti N1 al posto di N2, e N2 al posto di N1. 4. - Calcola ora la differenza di N1 - N2 e chiamala N1 5. - Ricomincia l’algoritmo da capo, usando il nuovo N1 e il vecchio N2. Questo algoritmo è conosciuto con il nome di algoritmo euclideo, perchè venne ideato da Euclide, grande matematico dell’Antica Grecia. Funzionamento dell'algoritmo euclideo. Per capire qual è il meccanismo di funzionamento dell’algoritmo euclideo, prova ad applicarlo su due numeri qualsiasi. Per farlo segui l'esempio proposto nella pagina seguente dove l'algoritmo in questione viene utilizzato per il calcolo del Massimo Comun Divisore dei numeri 12 e 30. pag. 93 pag. 94 Manuale N1 Logo N2 (per il passo n. 1) 12 30 (per il passo n. 3) 30 12 (per il passo n. 4) 18 12 6 12 (per il passo n. 3) 12 6 (per il passo n. 4) 6 6 (riprendere dal passo n. 2) (per il passo n. 4) (riprendere dal passo n. 2) (riprendere dal passo n. 2) (per il passo n. 2). 6 è il MCD di 12 e di 30 Dopo aver effettuato ulteriori prove con altre coppie numeriche, potrai convenire che il numero ottenuto quale risultato, alla conclusione di ciascuna prova, è, ogni volta, il massimo comun divisore dei due numeri di partenza. Questo algoritmo, come puoi facilmente vedere, non richiede l’uso di moltiplicazioni e di divisioni e nel suo passo n. 5 contiene una istruzione che somiglia molto ad una chiamata ricorsiva. Essa, tra l’altro, risulta espressa nello stesso "stile" nel quale viene espressa una procedura ricorsiva del LOGO. Procedura LOGO per l’algoritmo euclideo. Trovi di seguito la procedura LOGO adatta per eseguire l’algoritmo euclideo finalizzato alla ricerca del massimo comun divisore di due numeri scelti a piacere. Osserva che, nella procedura stessa, viene utilizzata: - ripetutamente l’istruzione: RIPORTA, quindi tale procedura è una procedura-funzione; - la ricorsività, quindi è anche una procedura ricorsiva. 11. Creazione e uso di funzioni PER EUCLIDE :N1 :N2 SE :N1 = :N2 [RIPORTA :N1] SE :N1 < :N2 [RIPORTA EUCLIDE :N2 :N1] [RIPORTA EUCLIDE (:N1 - :N2) :N2] FINE Dopo aver definito la procedura prova ad invocarla con: EUCLIDE 12 30 Vedrai che il LOGO ti risponderà immediatamente con: 6 che è, appunto, il numero più grande che divide sia il 12 , sia il 30 . Ossia è il loro MCD. ISTRUZIONI CONDIZIONALI (O, DI CONTROLLO) L’istruzione: SE... Nella procedura scritta prima per il calcolo del MCD hai usato per due volte l’istruzione: SE... Questa istruzione si chiama istruzione condizionale, o istruzione di controllo. Essa è costituita da almeno due parti ben distinte: un condizione preliminare seguita da un successivo comando. Ebbene il suo significato è il seguente: viene eseguito il comando solo nel caso che la condizione preliminare risulti VERA. Questo tipo di istruzione è una delle più importanti, se non la più importante, di qualsiasi linguaggio di programmazione per i computer. Esamina con attenzione la procedura: EUCLIDE. La sua prima istruzione SE ... entra in funzione solo se i due numeri scelti quali argomenti della procedura risultano essere uguali. pag. 95 pag. 96 Manuale Logo In questo caso la procedura si ferma, perchè l’istruzione RIPORTA la obbliga a farlo e, come risultato, viene dato il valore attuale di :N1. Se la condizione del primo SE ... non è vera, ossia se :N1 è diverso da :N2 , il LOGO passa alla seconda istruzione, che funziona in modo molto simile alla prima. Questa seconda istruzione SE ... entra in funzione solo alla condizione che :N1 abbia, in quel momento un valore minore di :N2 In questo caso l’invocazione originaria di EUCLIDE :N1 :N2 viene modificata e viene considerata invece come fosse EUCLIDE :N2 :N1, ossia vengono scambiati di posto i valori dei numeri proposti in ingresso. In pratica, questo significa che MCD di 8 e di 12, per esempio, viene calcolato ricominciando da capo l’algoritmo, considerando però come primo valore il 12 ,che viene assegnato ad :N1, e come secondo valore l’8, che viene assegnato ad :N2. Ciò che equivale chiaramente a concepire, in astratto, l’operazione di MCD quale operazione commutativa. Ossia: MCD (n, m) = MCD (m, n) Se, infine, nessuna delle due prime condizioni risulta essere vera, viene chiamata, in modo ricorsivo, l’intera procedura dall’inizio. I suoi argomenti vengono, però, modificati. Il primo sarà costituito dalla differenza tra :N1 e :N2 , che diventa il nuovo valore di :N1, mentre il secondo argomento conserva il precedente valore di :N2. Questa iterazione di chiamate ricorsive terminerà quando i due valori di :N1 e :N2 diventano uguali. In questo caso, ovviamente, il: MCD (n,m) = n in quanto n = m . Confronta ora la procedura in LOGO per il MCD, scritta all'inizio della pagina precedente, con il programma in BASIC scritto nella pagina accanto, sotto il relativo diagramma di flusso. Questo programma in BASIC consente anch'esso di calcolare il MCD di due numeri scelti a piacere. Nel confronto potrai notare come il LOGO sia assai più vicino alle espressioni del tuo linguaggio quotidiano rispetto al linguaggio BASIC, il quale è un linguaggio di programmazione tra i più usati, se non il più usato in assoluto. 11. Creazione e uso di funzioni 10 20 30 40 50 60 70 80 90 Input "Primo numero";A Input "Secondo numero";B IF A = B THEN 80 IF A > B THEN 60 C=A; A=B; B=C A=A-B GOTO 30 PRINT "MCD = "; A END Calcolo del minimo comune multiplo Con la procedura EUCLIDE è anche facile calcolare il minimo comune multiplo (mcm) dei due numeri considerati. Per questo nuovo calcolo vale, infatti, una formula assai elegante, ma poco usata. Essa permette di considerare il mcm di due numeri a partire dal loro MCD. Ecco la formula: mcm (n, m) = n * m / MCD (n, m) A seguito di tale formula si può allora realizzare la procedura seguente: PER MCM :N1 :N2 RIPORTA :N1 * :N2 / EUCLIDE :N1 :N2 FlNE pag. 97 pag. 98 Manuale Logo Altri esempi. Mediante procedure ricorsive, con il LOGO possono essere formulate e calcolate moltissime funzioni utili. Una di esse, per esempio, è la funzione FATTORIALE. Questa funzione matematica viene definita come: FATTORIALE (n) = 1 x 2 x 3 x .... x (n-1) x (n) Ricordiamo che il fattoriale di 1 è 1, quello di 2 è 2 (ossia: 1 x 2), quello di 3 è 6 (ossia: 1 x 2 x 3), quello di 4 è 24 (ossia: 1 x 2 x 3 x 4), .... Come si vede il risultato di tale funzione diventa rapidamente assai grande, anche se il numero considerato, ossia (n), aumenta di poco. E ciò lo sanno bene coloro che giocano al Totocalcio. Ecco la procedura LOGO con la quale potrai calcolare il fattoriale di un numero qualsiasi: PER FATTORIALE :N SE :N = 1 [RIPORTA 1] [RIPORTA (:N * FATTORIALE (:N - 1))] FINE L’istruzione SE .... ALTRIMENTI .... Altra istruzione condizionale, che svolge lo stesso compito di: SE ... è l’istruzione: SE ... ALTRIMENTI .... Il suo significato è il seguente: se la relazione scritta subito dopo SE è VERA, devi eseguire quanto viene prescritto dalla istruzione che viene subito dopo. Se invece tale relazione è FALSA, devi eseguire ciò che viene prescritto subito dopo ALTRIMENTI. Esempio: PER CONTAPER :AUM :NUM SE :NUM > 100 [STOP] ALTRIMENTI [SCRIVI FRASE :NUM “ CONTAPER :AUM (:NUM + :AUM)] FINE Questa procedura serve per effettuare operazioni di conteggio per :AUM , ossia per uno, per due, per tre, ..., partendo da un qualsiasi numero minore di 100 (:NUM), per arrivare fino a 100. 11. Creazione e uso di funzioni Nella procedura compaiono due novità, che sono: - la presenza della istruzione SCRIVI. Questa istruzione serve per scrivere sequenze di elementi in riga, anzichè in colonna come avviene quando si usa l’istruzione STAMPA. - la presenza delle virgolette alle quali occorre far seguire uno spazio vuoto. In questo modo i numeri che verranno scritti in riga da SCRIVI verranno separati ciascuno da uno spazio vuoto. Ciò in quanto ogni FRASE, che per il LOGO deve essere costituita da due elementi, sarà formata da un numero e da uno spazio vuoto. L’istruzione VERIFICA .... SEV.... SEF Altra istruzione condizionale è: VERIFICA ....SE_VERO .... SE_FALSO .... , per la quale va tenuto presente che SE_VERO si può abbreviare con SEV, mentre SE_FALSO è abbreviabile con SEF. Il suo significato è: verifica una determinata relazione (per esempio, se A > B). Se la relazione risulta VERA, esegui l’istruzione scritta subito dopo SE_VERO. Se l’istruzione risulta invece FALSA, esegui l’istruzione scritta subito dopo SE_FALSO. Ecco un esempio di applicazione di quest'altra istruzione condizionale: PER FATTURA ST [QUANTE BOTTIGLIE VUOLE?] AS "QUANT LEGGINUMERO VERIFICA :QUANTITA’ < 10 SEV [AS "PREZZO 3000] SEF [AS "PREZZO 2700] AS "IMPORTO :QUANT * :PREZZO ST (FRASE [IN TUTTO MI DEVE] :IMPORTO [LIRE]) FINE pag. 99 pag. 100 Manuale Logo PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI “NONNUMERO] RIPORTA :NUMERO FINE Questa procedura, che devi digitare assieme alla procedura LEGGINUMERO che l'accompagna, stampa una “fattura” per la vendita di bottiglie di vino aventi costo differente. Costano 3 000 lire l’una, quando vengono vendute meno di dieci alla volta. Mentre per quantità maggiori il loro prezzo unitario è di lire 2 700. Ecco un altro esempio: PER SPIRALE :LATO :ANG A :LATO D :ANG VERIFICA :LATO > 100 SE_VERO [STOP] SE_FALSO [SPIRALE (:LATO + 5) :ANG] FINE A pag. 77 hai già incontrato una procedura simile a questa. Era la procedura ricorsiva POLISPI :L :A che aveva l'inconveniente di non fermarsi; quindi doveva essere interrotta con i tasti <CTRL> <PAUSA>. Riprendi quella procedura e modificala con le innovazioni introdotte nella procedura SPIRALE con VERIFICA ... SE_VERO ... SE_FALSO ... . PROCEDURE INTERATTIVE Si dicono "interattive" quelle procedure con le quali si stabilisce una forma di dialogo tra l'operatore e il computer. Nella esecuzione di queste procedure il computer formula una o più domande all'operatore. Questo deve dargli le relative risposte. Il computer le controlla e fornisce l'esito del controllo effettuato. Di seguito sono riportate, quali esempi, due procedure interattive abbastanza semplici che puoi collegare allo studio della geometria e due piuttosto complesse da collegare con il mondo dei numeri. 11. Creazione e uso di funzioni Procedure PERIMETRO E AREA Ecco due procedure per proporre, in opposizione distintiva, le nozioni di perimetro e di area. Nella prima procedura dovrai scegliere una delle due nozioni. Il computer, a seconda della tua indicazione, disegnerà il contorno (ossia il perimetro) di un rettangolo oppure ti proporrà un rettangolo colorato nel suo interno. Ciascuno dei due disegni viene accompagnato da un commento esplicativo. Ovviamente il rettangolo potrai successivamente sostituirlo con qualsiasi altro poligono o figura. Per mandare in esecuzione questa procedura dovrai invocarla con PERIAREA. Sul video apparirà la richiesta: VUOI IL PERIMETRO O L'AREA? (P/A) Se digiterai P apparirà il contorno di un rettangolo con il messaggio: QUESTO È IL PERIMETRO, mentre se digiterai A apparirà un rettangolo colorato con il messaggio: QUESTA È L'AREA. La seconda procedura potrai attivarla digitando AREAPERI. Sullo schermo comparirà a caso il contorno di un rettangolo e oppure un rettangolo colorato e tu dovrai rispondere alla domanda: CHE COSA È, UN PERIMETRO O UN'AREA? (P/A) Se digiterai la risposta esatta (P, oppure A) il computer te la confermerà, mentre se darai la risposta sbagliata avrai un messaggio di rettifica. PROCEDURA PERIAREA PER PERIAREA PS PT NT ASCOL 1 + ACASO 3 ST [VUOI IL PERIMETRO O L’AREA? (P / A)] ST [ ] ST [PER FINIRE DIGITA F] SCELTA FINE PER AREA RIPETI 2 [A 70 D 90 A 90 D 90] D 5 SU A 10 GIU RIEMPI SU I 10 GIU S 5 FINE pag. 101 pag. 102 Manuale PER RETT RIPETI 2 [A 70 D 90 A 90 D 90] FINE PER SCELTA AS "SCE LC SE NON ELE? :SCE [P A F] [SCELTA] SE :SCE = "F [FINIRE] SE :SCE = "P [RETT MESSAGGIO] SE :SCE = "A [AREA MESSAGGIO] FINE PER MESSAGGIO SE :SCE = “P [PT ST [QUESTO E’ IL PERIMETRO]] SE :SCE = “A [PT ST [QUESTA E’ L’AREA]] ASPETTA 50 PERIAREA FINE PER FINIRE PT ST [CIAO ... ALLA PROSSIMA!!] [STOP] FINE PROCEDURA AREAPERI PER AREAPERI PS PT NT AS “E 1 + ACASO 2 SE :E = 1 [RETT] SE :E = 2 [AREA] ST [CHE COSA E’, PERIMETRO O AREA?] ST [ ] ST [P = PERIMETRO; A = AREA; F = FINE] RISPOSTA FINE PER RETT RIPETI 2 [A 70 D 90 A 90 D 90] FINE Logo 11. Creazione e uso di funzioni PER RISPOSTA AS "R LC SE NON ELE? :R [P A F] [RISPOSTA SE :R = "F [FINIRE] SE NON :R = "F [CONTROLLA AREAPERI] FINE PER CONTROLLA SE AMB (:R = "P) (:E = 1) [PT ST [ESATTO, BRAVO!]] SE AMB (:R = “A) (:E = 2) [PT ST [ESATTO, BRAVO!]] SE AMB (:R = “A) (:E = 1) [PT ST [SBAGLIATO, QUESTO E’ IL PERIMETRO]] SE AMB (:R = "P) (:E = 2) [PT ST [SBAGLIATO QUESTA E' L'AREA]] ASPETTA 100 FINE PER AREA RIPETI 2 [A 70 D 90 A 90 D 90] D 5 SU A 10 GIU RIEMPI SU I 10 GIU S 5 FINE PER FINIRE PT ST [CIAO ... ALLA PROSSIMA!!] [STOP] FINE Procedura TABELLINE La procedura interattiva TABELLINE ti può servire per approfondire lo studio delle tabelle moltiplicative. Al suo interno interno è inclusa la sottoprocedura ricorsiva di primo livello CONTROLLA. Dentro di questa c'è la sottoprocedura di secondo livello LEGGINUMERO, dalla quale si passa, mediante una scelta condizionale, alla sottoprocedura di terzo livello denominata OK. pag. 103 pag. 104 Manuale PER TABELLINE PT AS ‘ 1TENTAT 0 AS “X 1 + ACASO 10 AS “Y 1 + ACASO 10 (ST [QUANTO FA’] :X [PER] :Y [?]) CONTROLLA FINE PER DOMANDA (ST [QUANTO FA’] :X [PER] :Y [?]) CONTROLLA FINE PER CONTROLLA AS “TENTAT :TENTAT + 1 AS “RISP LEGGINUMERO SE :RISP = :X * :Y [0K] ST [ ] ST [ ] ST [HAI SBAGLIATO. TORNO A CHIEDERTI] ST [ ] DOMANDA FINE PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI “NONNUMERO] RIPORTA :NUMERO FINE PER 0K ST [ ] ST [BRAVO! HAI INDOVINATO] ST [ ] ST FRASE [ERRORI COMMESSI] :TENT - 1 [SCELTA] FINE PER FINIRE PT ST [CIAO ... AL PROSSIMO INCONTRO!] [BREAK] FINE Logo 11. Creazione e uso di funzioni PER SCELTA RIPETI 3 [ST [ ]] ST [VUOI CONTINUARE? C / F] ST [ ] ST [C = CONTINUARE; F = FINIRE] AS “SCE LC SE NON ELE? :SCE [C F] [SCELTA] SE :SCE = “C [TABELLINE] SE :SCE = “F [FINIRE] FINE Procedura INDOVINA Un’altra procedura interattiva è INDOVINA. Ti propone un gioco per indovinare, con il minor numero possibile di domande, un numero misterioso, compreso tra uno e cento e "pensato" dal computer. Nella procedura INDOVINA è inserita la sottoprocedura di primo livello GIOCO. La procedura GIOCO è ricorsiva e contiene due sottoprocedure di secondo livello inserite nel seguente ordine: prima LEGGINUMERO e dopo OK. PER INDOVINA PT ST [ ] AS “TENT 0 AS “NUM 1 + ACASO 100 ST [HO SCELTO UN NUMERO DA 1 A 100] ST [ ] ST [CERCA DI INDOVINARLO E SCRIVILO SOTTO] ST [ ] ST [IO TI AIUTERO’ CON QUALCHE INDICAZIONE] ST [ ] GIOCO FINE PER FINIRE PT ST [CIAO ... AL PROSSIMO INCONTRO!] [BREAK] FINE pag. 105 pag. 106 Manuale PER GIOCO AS “TENT :TENT + 1 AS “IND LEGGINUMERO SE :NUM = :IND [0K] SE :NUM > :IND [ST [IL MIO NUMERO E’ MAGGIORE]] SE :NUM < :IND [ST [IL MIO NUMERO E’ MINORE]] GIOCO FINE PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI “NONNUMERO] RIPORTA :NUMERO FINE PER 0K ST [ ] ST [BRAVO! HAI INDOVINATO] ST [ ] ST FRASE [ERRORI COMMESSI] :TENTAT - 1 [SCELTA] FINE PER SCELTA RIPETI 3 [ST [ ] ] ST [VUOI CONTINUARE? C / F] ST [ ] ST [C = CONTINUARE; F = FINIRE] AS “SCE LC SE NON ELE? :SCE [C F] [SCELTA] SE :SCE = “C [INDOVINA] SE :SCE = “F [FINIRE] FINE Logo 12. Isometrie piane e funzioni trigonometriche ISOMETRIE NEL PIANO CARTESIANO E FUNZIONI TRIGONOMETRICHE RICORDIAMO LA GEOMETRIA CARTESIANA Come ricorderai la geometria cartesiana organizza lo schermo della tartaruga come fosse un reticolato di quadratini attraversato in orizzontale dall’asse delle X, chiamato anche asse delle ascisse, e in verticale dall’asse delle Y, chiamato anche asse delle ordinate. La TANA si trova nel punto di incrocio dei due assi e, in questo punto, sia alla X, sia alla Y, viene attribuito il valore di 0. I valori di X aumentano andando verso destra e diminuiscono andando verso sinistra, diventando negativi subito a sinistra della TANA. Similmente, i valori di Y aumentano salendo in alto e diminuiscono scendendo in basso, diventando negativi subito sotto la Tana. Ricordiamo le istruzioni del LOGO già illustrate nel capitolo 4 (pagg. da 35 a 39) che puoi utilizzare per muovere la Tartaruga in questa sorta di "reticolato" che, in matematica, è noto sotto il nome di PIANO CARTESIANO VAX <num> VAY <num> XCOR YCOR VAXY [<num> <num>] Per spostare la tartaruga ad una certa distanza puoi mettere insieme due di queste istruzioni. Per esempio, con: VAX XCOR +50 puoi spostare la Tartaruga di 50 passi a destra senza farle cambiare la direzione. pag. 107 pag. 108 Manuale Logo Così con: VAXY [XCOR +30 YCOR -20] puoi spostare la tartaruga di 30 passi a destra e di 20 passi in basso senza farle cambiare direzione. Ecco una procedura nella quale puoi utilizzare alcune di queste istruzioni per disegnare sullo schermo gli assi del piano cartesiano: PER ASSI.CARTES PS NT VAX 135 VAX (-135) TANA VAY 125 VAY (-125) TANA FINE Di seguito trovi una serie di procedure per visualizzare le isometrie di un triangolo nel piano. Nella esecuzione delle isometrie gli assi cartesiani hanno il ruolo di assi per le simmetrie assiali e queste vengono collegate con le rispettive traslazioni e rotazioni. PROCEDURE PER LE ISOMETRIE DI UN TRIANGOLO Traslazioni. PER TRIANGOLO.1 SU VAXY [-100 -50] GIU VAXY [-100 -20] VAXY [-30 -50] VAXY [-100 -50] FINE PER TRIANGOLO.2 SU VAXY [50 50] GIU VAXY [50 80] VAXY [120 50] VAXY [50 50] FINE 12. Isometrie piane e funzioni trigonometriche PER TRASLAZIONE ASSI.CARTESIANI TRIANGOLO.1 ASSCHERMO "MISTO NT ST [TRASLAZIONE DI PASSO P = (X+150) (Y+100)] ASPETTA 100 TRIANGOLO.2 FINE Simmetrie PER TRIANGOLO.3 SU VAXY [-100 50] GIU VAXY [-100 20] VAXY [-30 5] VAXY [-100 20] FINE PER SIMMETRIA.X ASSI.CARTES TRIANGOLO.1 ASSSCHERMO "MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE X] ASPETTA 100 TRIANGOLO.3 FINE PER SIMMETRIA.Y ASSI.CARTES TRIANGOLO.1 ASSCHERMO "MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE Y] ASPETTA 100 TRIANGOLO.4 FINE pag. 109 pag. 110 Manuale Rotazioni PER TRIANGOLO.5 SU VAXY [100 50] GIU VAXY [100 20] VAXY [30 50] VAXY [100 50] FINE PER ROTAZIONE.A ASSI.CARTES TRIANGOLO.1 ASSCHERMO "MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE X] ASPETTA 100 TRIANGOLO .3 ST [SEGUITA DA] ST [SIMMETRIA RISPETTO ALL’ASSE DELLE Y] ASPETTA 100 TRIANGOLO.5 ST [EQUIVALE A ROTAZIONE DI CENTRO (0,0)] FINE PER ROTAZIONE.B ASSI.CARTES TRIANGOLO.1 ASSCHERMO "MISTO ST [SIMMETRIA RISPETTO ALL’ASSE DELLE Y] ASPETTA 100 TRIANGOLO.4 ST [SEGUITA DA] ST [SIMMETRIA RISPETTO ALL’ASSE DELLE X] ASPETTA 100 TRIANGOLO.5 ST [EQUIVALE A ROTAZIONE DI CENTRO (0, 0)] FINE Logo 12. Isometrie piane e funzioni trigonometriche RICORDIAMO LA GEOMETRIA POLARE Come sai già, per conoscere qual è la direzione attuale della Tartaruga c’è il comando DIR. Se batti DIR, il LOGO potrebbe risponderti 34.006 o qualunque altro numero di gradi che indica di quanto la tartaruga è girata verso destra (ossia, nel verso in cui ruotano le lancette dell’orologio) a partire dalla direzione verticale verso l’alto che va considerata quale DIREZIONE 0. L’istruzione DIR può essere usata dentro una procedura come condizione di blocco. Ecco, per esempio, come puoi utilizzarla dentro una procedura ricorsiva che disegna un cerchio: PER CERCHIO AVANTI 1 DESTRA 1 SE DIR = 0 [STOP] CERCHIO FINE Digita questa procedura, definiscila e poi provala. Dopo averla provata, richiamala nel modo di edizione e cancella la sua terza riga. Se la provi di nuovo, vedrai che in questo secondo caso la tartaruga continua a girare sul contorno del cerchio senza mai fermarsi. Perchè? Se vuoi assegnare alla tartaruga una certa direzione, serviti della istruzione ASDIR, il cui significato è: ASsegna DIRezione. ASDIR 45, per esempio, fa assumere alla Tartaruga la direzione di 45 gradi a destra rispetto alla direzione verso l’alto (0). Per cambiare di un certo angolo l’attuale direzione della Tartaruga puoi scrivere insieme le ultime due istruzioni. Per esempio, potresti digitare ASDIR DIR + 30 e la Tartaruga, in questo caso cambierebbe direzione di 30 gradi a destra, girando quindi nello stesso modo in cui ruoterebbe se ricevesse il comando DESTRA 30. Ricorda infine che l’istruzione VERSO richiede due argomenti numerici che vengono intepretati come le coordinate di un punto dello schermo. Questa istruzione riporta la misura in gradi dell’angolo formato, in rotazione destrorsa, dalla direzione 0 (zero) e dalla direzione congiungente la pag. 111 pag. 112 Manuale Logo posizione della tartaruga con il punto indicato. Anche questa istruzione puoi collegarla alle precedenti. Così, per esempio, digitando ASDIR VERSO 50 (-50) la tartaruga ruoterà in direzione di un punto che sta 50 passi a destra e 50 passi sotto rispetto al punto della TANA. FUNZIONI TRIGONOMETRICHE Nel disegno che è in basso viene rappresentato il significato operativo delle funzioni trigonometriche SEN e COS. SEN richiede come argomento una ampiezza angolare espressa in gradi. Ne calcola il seno, ossia l’ordinata ricavata dalla situazione cartesiana sono raffigurata. Per esempio: SEN 90 produce, come risposta: 1 COS richiede anch’essa come argomento una ampiezza angolare espressa in gradi. Ne calcola il coseno, ossia l’ascissa ricavata dalla situazione cartesiana sotto raffigurata. Per esempio: COS 180 produce, come risposta: -1. α SEN α COS α 13. Le liste e le parole. LE LISTE E LE PAROLE LE LISTE Una lista è una successione di oggetti Logo racchiusi tra parentesi quadrate. Gli oggetti si chiamano elementi della lista e possono essere numeri, parole (non precedute da apici) o altre liste (scritte in forma esplicita tra parentesi quadre). Per esempio: [ABELE CAINO] è una lista formata da due elementi che sono le parole “ABELE e “CAINO. Quando le parole sono elementi di una lista non devono essere precedute dalle virgolette. [1 2 3 4] è una lista formata da quattro elementi che sono i numeri 1, 2, 3 e 4. [1 1 1 1] è una lista formata da quattro elementi uguali tra di loro. [1 2 [3 4]] è una lista formata da tre elementi: i primi due sono i numeri 1 e 2; il terzo elemento è la lista formata dai numeri 3 e 4. [A] è una lista formata da un solo elemento, la parola A. [[A]] è una lista formata da un solo elemento, che a sua volta è una lista formata dal solo elemento, la parola A. [] è una lista vuota, ossia senza alcun elemento. [A :B] è una lista formata dalla parola A e dal valore della variabile B. pag. 113 pag. 114 Manuale Logo Operazioni sulle liste Un elemento si può mettere al primo o all’ ultimo posto di una lista usando i comandi: INPRI INULT AS “NUMERI [2 1] MOSTRA INPRI 3 :NUMERI [3 2 1] AS “NUMERI [2 3 4] MOSTRA INULT 5 :NUMERI [2 3 4 5] Si può creare una nuova lista a partire da due liste, da due parole o da una lista e una parola con la funzione FRASE MOSTRA FRASE [1 2 3] [4 5 6] [1 2 3 4 5 6] AS “NOME “LUDOVICO MOSTRA FRASE “CIAO :NOME [CIAO LUDOVICO] MOSTRA FRASE “BUONA "SERA [BUONA SERA] MOSTRA FRASE “LUPO [CAPRA CAVOLI] [LUPO CAPRA CAVOLI] Ma attenzione: MOSTRA FRASE [1 2 3] [1 2 3] [1 2 3 1 2 3] perchè in una lista, come abbiamo già visto nei primi esempi, ci possono anche essere elementi uguali e il comando FRASE si limita a concatenare gli elementi della prima lista a quelli della seconda. L’ultimo esempio consente di mettere in evidenza la differenza tra il concetto di lista e il concetto matematico di insieme: la lista, come dice il nome, è un elenco di “segni” dotato di una certa struttura che non ha nulla a che vedere con gli eventuali “significati” dei segni stessi. pag. 13. Le liste e le parole. Diverso è il risultato che si ottiene usando la funzione LISTA la quale riporta, come FRASE, una lista formata dai suoi argomenti, ma se qualcuno di questi è esso stesso una lista, come tale rimane nella lista risultato. MOSTRA LISTA [1 2 3] [4 5 6] AS “NOME [[1 2 3] [4 5 6]] “LUDOVICO MOSTRA LISTA “CIAO :NOME [CIAO LUDOVICO] MOSTRA LISTA “BUONA “SERA [BUONA SERA] MOSTRA LISTA “LUPO [CAPRA CAVOLI] [LUPO [CAPRA CAVOLI]] Come si può dare il nome a una lista Una lista può essere manipolata direttamente, scrivendola così come abbiamo fatto finora, al posto che le compete nelle operazioni che su di essa si vogliono eseguire. Può però anche essere assegnata come valore ad una variabile e, di conseguenza, essere nominata usando il nome della variabile. Per esempio si può dare il nome “FRATELLI alla lista [LUCA GIORGIO MARCO STEFANIA] mediante l’istruzione: AS “FRATELLI [LUCA GIORGIO MARCO STEFANIA]. Da questo momento in poi tutte le operazioni che si possono eseguire su una lista possono essere eseguite sul contenuto della variabile :FRATELLI, come negli esempi che seguono: MOSTRA INPRI “PROSDOCIMO :FRATELLI [PROSDOCIMO LUCA GIORGIO MARCO STEFANIA] MOSTRA INULT “LUIGI :FRATELLl [LUCA GIORGIO MARCO STEFANIA LUIGI] 115 pag. 116 Manuale Logo Che cosa si può ottenere da una lista Si può ottenere il primo o 1' ultimo elemento di una lista, con le funzioni PRI ULT Da una certa lista se ne può ottenere un’altra ricavata dalla prima eliminando il primo o 1' ultimo elemento, con i comandi MENPRI MENULT Infine si può sapere il numero di oggetti che compongono una lista, con la funzione: CONTA. STAMPA PRI [LUCA GIORGIO MARCO STEFANIA] LUCA MOSTRA ULT [LUCA GIORGIO MARCO STEFANIA] STEFANIA MOSTRA MENPRI [LUCA GIORGIO MARCO STEFANIA] [GIORGIO MARCO STEFANIA] STAMPA MENULT [LUCA GIORGIO MARCO STEFANIA] LUCA GIORGIO STEFANIA STAMPA CONTA [LUCA GIORGIO MARCO STEFANIA] 4 Ma fai attenzione: STAMPA CONTA [PIPPO PLUTO [QUI QUO QUA]] 3 in quanto la primitiva CONTA considera la lista [QUI QUO QUA] come un solo oggetto. Per ottenere un certo elemento di una lista si può usate la funzione ELE che richiede come argomenti il numero dell’elemento voluto e 1’oggetto in cui cercarlo (una lista, ma può essere anche una parola). pag. 13. Le liste e le parole. STAMPA ELE 2 :FRATELLI GIORGIO Per conoscere la posizione di un’elemento in un oggetto si può usare la primitiva POSELE Come si può leggere una lista da tastiera Il comando LEGGILISTA (che si abbrevia con LL) consente di leggere una lista direttamente dalla tastiera o dal dispositivo di lettura in funzione. La procedura che segue consente di “dichiarare” al Logo una collezione di cognomi, ciascuno seguito da una lista di nomi di persone che compongono quella famiglia. Stabiliamo che i nomi vanno fomiti sempre nello stesso ordine (padre, madre e figli, in ordine di età). PER FAMIGLIE AS “COGNOME PRI LEGGILISTA SE :COGNOME = “FINE [STOPl AS “FAMIGLIE INPRI :COGNOME :FAMIGLIE CHIAMA :COGNOME LEGGILISTA FAMIGLIE FINE AS “FAMIGLIE [ ] FAMIGLIE ROSSI ALBERTO LUISA GIORGIO MAURO NERI SIMONE MARGHERITA DIEGO ROBERTO FINE 117 pag. 118 Manuale Logo A questo punto abbiamo creato una piccola “anagrafe” di famiglie. Con semplicissime procedure come quella che segue possiamo “interrogare” la nostra anagrafe per riottenere i dati che abbiamo inseriti e le relazioni in essi implicitamente contenute. PER MADRE :FAMIGLIA RIPORTA PRI MENPRI :FAMIGLIA FINE STAMPA MADRE :ROSSI LUISA STAMPA MADRE : NERI MARGHERITA Liste di istruzioni Abbiamo detto che le liste sono delle successioni ordinate di oggetti, sappiamo però che anche le frasi che formano le istruzioni del Logo sono delle sequenze ordinate di oggetti (primitive, procedure e argomenti). Da questa identità discende un’altra proprietà delle liste: esse possono essere eseguite. La primitiva: ESEGUI <LISTA> esegue le istruzioni contenute nella lista. LE PAROLE Una parola in Logo è una successione arbitraria di lettere, numeri e simboli speciali ottenibili dalla tastiera; essepossono contenere al loro interno anche spazi bianchi. Che cosa si può fare con le parole Sulle parole si possono eseguire quasi tutte le azioni che si possono eseguire sulle liste (naturalmente gli ordini non sono sempre uguali a quelli che si usano per le liste). pag. 13. Le liste e le parole. Si possono unire due parole con la funzione PAROLA che corrisponde alla funzione FRASE per le liste. Esempio: STAMPA PAROLA “GIAN “CARLO GIANCARLO Si può ottenere il primo carattere di una parola o 1’ultimo rispettivamente con le funzioni PRI e ULT Esempi: STAMPA PRI “CARLOMAGNO C STAMPA ULT “NEMICO O Da una parola si possono ottenere parole senza la prima o l’ultima lettera con le funzioni MENPRI e MENULT: STAMPA MENPRI “CARLOMAGNO STAMPA MENULT “NEMICO ARLOMAGNO NEMIC Combinando le funzioni precedenti non è difficile ottenere alcune semplici “regole grammaticali” PER PLURALE :NOME SE ULT NOME = “A [RIPORTA PAROLA MENULT :NOME “E] SE ULT :NOME = “O [RIPORTA PAROLA MENULT :NOME “I] RIPORTA FRASE [NON SO FARE IL PLURALE DI] :NOME FINE Naturalmente questa regola funziona in tutti i casi regolari: non funziona invece per le eccezioni STAMPA PLURALE “AMICO AMICI STAMPA PLURALE “BANANA BANANE STAMPA PLURALE “DONNA DONNE Ma purtroppo: STAMPA PLURALE “UOVO UOVI STAMPA PLURALE “UOMO UOMI STAMPA PLURALE “POETA POETE 119 pag. 120 Manuale Logo Il che dimostra che la grammatica della lingua italiana non si può ricostruire con poche procedure. Sottolineiamo a questo punto in maniera esplicita che gli ordini INPRI e INULT, che valgono per le liste, non funzionano con le parole. Si può conoscere 1' ennesimo carattere di una parola con la funzione ELE STAMPA ELE 3 “LOGO G Si può sapere la lunghezza di una parola con la funzione CONTA STAMPA CONTA “LUDOVICO 8 Si possono confrontare due parole per decidere se una è uguale all’altra con il predicato UGUALE? STAMPA UGUALE? “LUDOVICO PAROLA “LUDOVI “CO VERO. Adulto e ragazzo affetti da "micromania": prima e dopo. (tratto da "C. Pratt, Micromania: la resistibile ascesa dei computer, Feltrinelli, 1984 pag. Appendice A: Glossario M-LOGO - LOGO IBM GLOSSARIO M-LOGO LOGO-IBM COMANDI DELLA GRAFICA ASCAMPO ASCAMPO “APERTO “CHIUSO FENCE “CIRCOLARE WRAP Il comando ASCAMPO, il cui argomento può essere soltanto una delle parole “APERTO, “CHIUSO o “CIRCOLARE, permette di stabilire le caratteristiche dello spazio in cui si muove la tartaruga. Se I’argomento di ASCAMPO è “APERTO, allora il campo in cui può muoversi la tartaruga non è limitato dai margini dello schermo ed essa potrà spostarsi anche al di fuori di esso (anche se, ovviamente, non sarà visibile). Se invece 1' argomento di ASCAMPO è la parola “CHIUSO, il campo della tartaruga viene limitato allo schermo. In questo caso un comando che portasse la tartaruga ad uscirne produrrebbe il messaggio “TARTA contro il MURO. Infine, quando ASCAMPO viene seguito dalla parola “CIRCOLARE, lo spazio in cui si muove la tartaruga viene trasformato in modo tale che se un comando porta la tartaruga ad uscire dallo schermo, essa riapparirà dal lato opposto e di qui continuerà il suo movimento. Quando viene fatto partire il Logo, il campo è CIRCOLARE. TANA ASCAMPO "APERTO AVANTI 1000 TANA ASCAMPO "CHIUSO AVANTI 1000 TARTA contro il MURO ASCOL <num> SETPC Il comando ASCOL assegna il colore, corrispondente a <num>, alla penna della tartaruga; 1' argomento può essere 0, 1, 2, o 3. Ricordiamo che, quando si disegna, mentre i colori disponibili sono 16, in ogni caso sullo schermo ne possono essere contemporaneamente presenti soltanto 4. Il colore 0, che si chiama colore di sfondo, può essere scelto tra tutti e sedici i colori disponibili e viene controllato mediante il comando ASSFONDO, che accetta come argomento un numero compreso tra 0 e 15. Gli altri 3 colori possono essere scelti in due combinazioni diverse, che si chiamano “tavolozze”: è possibile variare la “tavolozza” corrente con il comando ASTAVOLOZ2A, che può avere come argomento 0 o 1. A seconda dello sfondo e della tavolozza scelti, i numeri 0,..,3 corrisponderanno dunque a colori diversi. 121 pag. 122 Manuale Logo Si noti che il colore del triangolino raffigurante la tartaruga a volte non coincide con quello della penna: il simbolo della tartaruga viene infatti scritto, punto per punto, in un colore effettivo che è dato dalla composizione dal colore nominale della penna e del colore corrente del punto stesso, secondo la tabella seguente, che si riferisce ai colori mediante i numeri corrispondenti nella tavolozza. 0+l=1 1+1=0 1+2=3 0+2=2 2+2=0 2+3=1 0+3=3 3+3=0 3+1=2 ASTAVOLOZZA 1 ASCOL 3 ASCOL 5 a ASCOL non piace 5 come ingresso ASTAVOLOZZA 0 ASDIR <num> SETHEADING (SETH) Il comando ASDIR determina la direzione di avanzamento della tartaruga. L’argomento <num> indica la direzione prescelta in gradi. Come in un sistema di riferimento di tipo bussola, 0 gradi corrispondono al Nord (l’alto dello schermo) e, aumentando i gradi, si ruota la direzione in senso orario. Diversamente dai comandi DESTRA e SINISTRA, che fanno eseguire alla tartaruga una rotazione il cui risultato dipende dalla posizione precedente della tartaruga, il comando ASDIR assegna alla tartaruga una direzione assoluta, ovvero indipendente dalla direzione che la tartaruga aveva in precedenza. ASDIR 90 ASPENNA <lista> SETPEN Il comando ASPENNA assegna alla penna con cui disegna la tartaruga il modo, il colore e la tavolozza indicati in <lista>. Il primo dei tre elementi di <lista> specifica il modo (SU, GIU, CANCEPENNA o INVERPENNA); il secondo elemento è un numero compreso tra 0 e 3 che indica il colore da usare (vedi ASCOL); il terzo elemento può essere 0 o 1 e indica la “tavolozza” che si vuole usare (vedi ASTAVOLOZZA). ASPENNA [SU 2 0] ASPENNA [INVERPENNA 1 0] ASSCHERMO “COMANDI TEXTSCREEN (TS) “MISTO MIXEDSCREEN (MS) “TARTA FULLSCREEN (FS) La primitiva ASSCHERM0 determina il modo in cui viene utilizzato lo schermo grafico. Se Logo è partito utilizzando lo schermo monocromatico, prima di poter utilizzare lo schermo a colori per eseguire disegni, è necessario dare un comando ASSCHERMO “TARTA; questo serve infatti ad avvertire Logo dell’esistenza dello schermo grafico. pag. Appendice A: Glossario M-LOGO - LOGO IBM Se si cerca di eseguire un comando grafico, appartenente al mondo TARTA, senza aver dato il comando ASSCHERMO “TARTA, si otterrà il messaggio “a TARTA non piace questo schermo”. Se invece non si usa lo schermo monocromatico e Logo è partito dallo schermo grafico, ASSCHERMO “TARTA riserverà lo schermo intero ai disegni, eliminando le righe per i comandi. ASSCHERMO “COMANDI è il comando inverso: con esso tutto lo schermo viene riservato ai comandi e al testo. ASSCHERMO “MISTO, infine, divide lo schermo in una zona grafica e una zona testo. Mediante il comando ASRIGHE <num> si possono definire le grandezze rispettive delle due zone. ASSCHIA <num> SETSCRUNCH ASSCHIA determina il rapporto di schiacciamento delle immagini. Serve a compensare gli errori di proporzione dello schermo grafico. Se, per esempio, un programma che dovrebbe disegnare un cerchio produce un’ellisse sul vostro schermo, allora ASSCHIA permette di correggere le proporzioni della figura. L’argomento di ASSCHIA esprime il rapporto di schiacciamento desiderato tra la distanza verticale fra una riga di punti e la distanza orizzontale fra una colonna di punti. I valori validi di questo rapporto sono compresi fra 0.1 e 2.5. I punti grafici possono essere immaginati come dei piccolissimi rettangoli. Diminuendo il rapporto diminuisce l’altezza dei rettangolini, ed è così possibile ottenere dei “punti” più quadrati! Un effetto secondario di ASSCHIA è di modificare la dimensione verticale del campo della tartaruga. Per esempio, con SCHIA uguale a l, i punti vanno da 100 a -99 mentre con SCHIA uguale a 0.85, che è il valore di schiacciamento al momento della partenza di Logo, il limite inferiore è -116 e quello superiore 117. ASSCHIA 1.2 ASSFONDO <num> SETBG Un comando ASSFONDO assegna allo sfondo dello schermo grafico il colore corrispondente a <num>. Sono disponibili 16 colori diversi numerati da 0 a 15. La seguente tabella illustra tutte i colori possibili per ASSFONDO: 0 Nero 1 Blu 2 Verde 3 Azzurro 4 Rosso 5 Viola 6 Marrone 7 Grigio Chiaro 8 Grigio 9 Celeste lO Verde Chiaro 11 Azzurro Chiaro 12 Rosa 13 Viola Chiaro 14 Giallo 15 Bianco I colori contrassegnati con numeri maggiori di sette sono in realtà delle variazioni di luminosità. La C presente nel loro nome sta ad indicare una tonalità più luminosa del colore di base. I colori reali talvolta dipendono però moltissimo dalle caratteristiche del video utilizzato e dalla regolazione della luminosità. 123 pag. 124 Manuale AVANTI (A) <num> Logo FORWARD (FD) AVANTI fa avanzare la tartaruga, nella direzione in cui si trova, del numero di passi indicato dall’argomento. Dopo l’esecuzione di un comando AVANTI, la direzione della tartaruga non viene modilicata. L’argomento di AVANTI deve essere compreso tra -10000 e 10000 e, se è negativo, la tartaruga, anziché avanzare, indietreggia PER QUADRATO :LATO RIPETI 4 [AVANTI :LATO DESTRA 90] FlNE CAMPO Riporta la forma dello spazio nel quale si muove la tartaruga: APERTO, CHIUSO o CIRCOLARE.Per la descrizione dei tipi di spazio possibili per la tartaruga vedi ASCAMPO. CANCEPENNA PENERASE (PE) Trasforma la penna della tartaruga in una gomma da cancellare. Se lo stato in cui si trova la penna è CANCEPENNA la tartaruga, muovendosi, cancellerà dallo schermo tutti i punti che trova sul suo percorso (cancellare un punto significa assegnargli il colore dello sfondo). Per uscire dallo stato CANCEPENNA si deve assegnare un nuovo stato alla penna con SU, GIU’ o INVERPENNA. DESTRA (D) <num> RIGHT (RT) Fa ruotare la tartaruga in senso orario del numero di gradi indicato dall’argomento. La direzione della tartaruga che così si ottiene, dipende perciò dalla sua direzione precedente, oltre che dal numero di gradi fornito come argomento a DESTRA. PER TRIANGOLO.EQUILATERO :LATO RIPETI 3 [AVANTI :LATO D 120] FINE Notare che si deve dare il comando DESTRA 120, al posto del più intuitivo DESTRA 60, perché l’angolo comandato è relativo alla direzione precedente della tartaruga ed è quindi il supplementare dell’angolo interno della figura. DIR HEADING Il valore di DIR è la direzione assoluta che attualmente ha la tartaruga (vedi ASDIR). La direzione assoluta della tartaruga è l’angolo formato dall’asse di marcia della tartaruga e dalla verticale dello schermo. La direzione 0 corrisponde alla parte in alto dello schermo, la direzione 180 al basso e la direzione 90 alla destra. ASDIR 90 DESTRA 90 STAMPA DIR 135 SINISTRA 45 pag. Appendice A: Glossario M-LOGO - LOGO IBM DOVE POS DOVE è una funzione il cui valore è una lista contenente due coordinate (una ascissa e una ordinata) del punto in cui si trova la tartaruga. AS “POSIZIONE DOVE [53 38] GIU MOSTRA DOVE :POSIZIONE [53 38] PENDOWN (PD) Il comando GIU fa abbassare la penna della tartaruga sul disegno, in modo che, in seguito, la tartaruga, spostandosi, lascerà una traccia del suo passaggio. INDIETRO (I) <num> BACK (BK) Fa indietreggiare la tartaruga, nella direzione in cui si trova, del numero di passi indicato dall’argomento. L’argomento di INDIETRO deve essere un numero compreso tra -10000 e 10000. Se l’argomento è negativo, la tartaruga, anziché indietreggiare, avanza. INDIETRO 45 INVERPENNA INDIETRO -45 PENREVERSE (PX) Trasforma il modo di funzionare della penna della tartaruga. Dopo un comando INVERPENNA la tartaruga invertirà il colore dei punti su cui passa: se il punto ha il colore dello sfondo otterrà il colore della penna, se invece il punto ha un colore diverso da quello dello sfondo, viene cancellato. Cambiando lo stato della penna, con uno dei comandi SU, CANCEPENNA o GIU, 1'ordine INVERPENNA viene annullato. MOSTARTA (MT) SHOWTURTLE (ST) Il comando MOSTARTA rende visibile la tartaruga. Al momento dell’ ingresso nel Logo la tartaruga è in posizione visibile, ma non appare sullo schermo perchè questo è interamente riservato al testo (Vedi ASSCHERMO). Per utilizzare la tartaruga si deve indicare al Logo che esiste uno schermo grafico. Si può fornire questa indicazione dando i comandi ASSCHERMO “TARTA, oppure ASSCHERMO “MISTO. NASTARTA (NT) HIDETURTLE (HT) Rende la tartaruga invisibile. Anche se invisibile, la tartaruga accetta tutti i comandi normalmente; è quindi possibile disegnare con la tartaruga anche senza farla mai comparire sullo schermo. 125 pag. 126 Manuale PENNA Logo PEN Riporta una lista di tre elementi; il primo indica lo stato della penna (SU, GIU, CANCEPENNA o INVERPENNA) il secondo il colore attuale della penna. Infine il terzo indica la tavolozza selezionata MOSTRA PENNA [SU 1 0] PULISCI CLEAN Cancella tutti i disegni dallo schermo senza modificare la posizione della tartaruga. Si può usare PULISCI per realizzare delle animazioni o delle procedure in cui si vuol rappresentare un oggetto in movimento. Si può infatti disegnare 1'oggetto, spostare la tartaruga, cancellarlo e ridisegnarlo senza che la tartaruga debba ogni volta essere riposizionata, come accadrebbe usando il comando PULISCISCHERMO. PULISCI può anche servire per pulire la zona grafica prima di caricare un disegno da dischetto con RECUPERA_DIS. PULISCISCHERMO (PS) CLEARSCREEN (CS) Cancella tutti i disegni dallo schermo e riporta la tartaruga al centro dello schermo. Questo comando equivale alla sequenza di comandi PULISCI TANA. PULISCITESTO (PT) CLEARTEXT (CT) Il comando PULISCITESTO cancella le scritte presenti nella parte di schermo riservata ai comandi. Le scritte appartenenti al foglio o quelle che fanno parte dei disegni restano invariate. RIEMPI FILL Colora la figura all’ interno della quale si trova la tartaruga con il colore della penna. Se la figura non é chiusa, colora tutto lo sfondo. Per usare RIEMPI, prima di dare il comando si deve portare la tartaruga all’interno della figura . Nel far ciò è prudente dare il comando SU per evitare che la traccia lasciata entrando sia interpretata come un lato della figura stessa. Provare il comando con la seguente procedura: PER OUADRATO.PIENO :A NASTARTA RIPETI 4 [A :A D 90] SU D 45 A :A / 2 RIEMPI FINE Appendice A: Glossario M-LOGO - LOGO IBM SCHIA . SCRUNCH Il valore di SCHIA è il rapporto di schiacciamento (vedi ASSCHIA ) della immagine. SCHIA può servire per conoscere, all’interno di una procedura, di quanti punti all’incirca è composto il campo della tartaruga. Infatti mentre la dimensione orizzontale è sempre di 320 punti quella verticale varia leggermente al variare del fattore di schiacciamento (é uguale a 200 per SCHIA = 1). SCRIPUNTO <lista> DOT Colora il punto, le cui coordinate sono i due numeri che compongono la lista, con il colore di penna corrente. SCRIPUNTO [45 78] SFONDO BACKGRUOUND (BK) Il valore di SFONDO è il codice del colore assegnato allo schermo che può variare da 0 a15. Per una più completa spiegazione del funzionamento del meccanismo del colore vedi anche ASTAVOLOZZA, ASSFONDO e ASCOL. Per visualizzare la gamma dei colori si può utilizzare la procedura seguente. PER RUOTACOLORI ASSFONDO 0 RIPETI 15 [ASPETTA 50 ASSFONDO SFONDO + 1] FINE SINISTRA (S) <num> LEFT (LT) Fa ruotare la tartaruga su se stessa in senso antiorario del numero di gradi indicato dall’argomento. Dopo 1'esecuzione di questo ordine la direzione assunta dalla tartaruga dipenderà anche dalla direzione precedente. SU PENUP (PU) Fa sollevare la penna della tartaruga. Se la penna è in posizione alzata, durante i suoi spostamenti la tartaruga non scrive sullo schermo. La procedura seguente serve per visualizzare gli effetti di questo comando PER LINEASPEZZATA :B RIPETI 8 [ SU A :B / 16 GIU A :B /16] FINE VATANA (TANA) HOME Porta la tartaruga al centro dello schermo nella direzione 0. Serve a condurla nella posizione di coordinate 0,0 prima di iniziare un disegno. pag. 127 pag. 128 Manuale VAX <num> Logo SETX Ordina alla tartaruga di spostarsi orizzontalmente fino al punto di ascissa pari al numero fornito come argomento. VAXY <lista> SETXY Ordina alla tartaruga di andare alla posizione specificata dai due numeri che compongono la lista. (le coordinate x e y del punto). Esempio VAXY [20 50] VAY <num> SETY Fa spostare la tartaruga verticalmente fino a raggiungere il punto di coordinata verticale uguale al suo argomento. VERSO <num> <num> TOWARDS Il valore della funzione VERSO è la direzione assoluta (vedi ASDIR) che si deve assegnare alla tartaruga perché essa si trovi pronta ad avanzare verso il punto specificato dalle coordinate fornite come argomenti. XCOR XCOR La funzione XCOR indica l’ascissa della posizione della tartaruga. YCOR YCOR La funzione YCOR segnala l’ordinata della posizione della tartaruga. NOTE 1. Le forme abbreviate delle primitive, se esistono, sono riportate tra parentesi. 2. Gli argomenti dei comandi sono riportati assai spesso in forma abbreviata tra i segni < e > . I significati delle abbreviazioni sono : num = numero, par = parola, ogg = oggetto, arch = archivio. 3. Le primitive scritte in corsivo, a destra di quelle in grassetto su ogni riga di intestazione, sono le parole corrispondenti del Logo-IBM nella versione in inglese. 4. Il contrassegno # indica che in quella istruzione va inserito il numero di argomenti specificato. Se si vuole usare un numero maggiore, o minore, di argomenti, l’intera istruzione va scritta entro parentesi tonde Appendice A: Glossario M-LOGO - LOGO IBM NUMERI E OPERAZIONI ACASO <num> RANDOM Funzione il cui valore è un numero scelto a caso tra i numeri interi non negativi minori della parte intera dell’argomento. Esempio: RIPETI 4 [STAMPA A CASO 5678] ARCTAN <num> ARCTAN Il valore della funzione ARCTAN è l’arcotangente del suo argomento espressa in gradi sessagesimali. ARRO <num> Questa funzione fornisce il numero intero ottenuto arrotondando il valore del suo argomento. L’arrotondamento si effettua all’intero più vicino. Esempi: ARRO 3.4999 = 3 ; ARRO 3.50001 = 4 ASCIFRE <num> SETPRECISION Determina il massimo numero di cifre significative del risultato di ogni operazione aritmetica e quindi condiziona il livello di precisione ottenibile nei calcoli. L’argomento di ASCIFRE può variare da 1 a 100 per le sole operazioni aritmetiche elementari. Se si utilizzano funzioni trascendenti deve essere invece limitato a 32. ASSO <num> Fornisce il valore assoluto del suo argomento. Esempi: ASSO 58 - 20 = 38 ; ASSO 44 - 51 = 7 CIFRE Indica il numero delle cifre significative utilizzato nei calcoli numerici. Esempio ASCIFRE 7 ; CIFRE 7 COS <num> COS Fornisce come valore il coseno dell’argomento. pag. 129 pag. 130 Manuale DIFFERENZA <num> <num> Logo DIFFERENCE Riporta la differenza del primo argomento numerico rispetto al secondo. Esempio: DIFFERENZA 300 356 = -356 Attenzione! Quando si usa il segno “-” come operatore di sottrazione binaria va inserito uno spazio prima del sottraendo. Se non si osserva questa regola il Logo legge il secondo argomento numerico semplicemente come numero negativo. Esempi: 23 * 3 -4 = 69 -4 ; 23 * 3 - 4 = 65 DIVISIONE <num> DIVISIONE è l’operatore di divisione prefisso equivalente al segno di divisione “/” comunemente usato in forma infissa. Esempio: DIVISIONE 32 5 = 32 / 5 = 6.4 GRADI <num> Questa funzione converte in gradi il numero dei radianti forniti dall’argomento. Esempio: GRADI PI = 180 INT <num> INT Il valore fornito da questa funzione è uguale alla parte intera del numero fornito come argomento. Esempio: INT 5,46 = 5 LOG10 <num> Questa funzione restituisce il logaritmo in base dieci del suo argomento. Esempio: LOG10 100 = 2 PI Il valore di PI è pi greco con una precisione pari al numero delle cifre significative stabilito con ASCIFRE (max. 32). Esempio: ASCIFRE 10 PI = 3.141592654 POTENZA <num> <num> Questa funzione riporta il primo argomento, considerato come base, elevato alla potenza specificata del secondo argomento, considerato come esponente. Esempio: POTENZA 4 3 = 4 3 = 64 Appendice A: Glossario M-LOGO - LOGO IBM PRODOTTO <num> <num> PRODUCT # Il valore riportato da questa funzione è il prodotto dei suoi due argomenti numerici. Con questa funzione si possono anche utilizzare più di due argomenti, ma in questo caso l’istruzione va scritta tra parentesi tonde. Esempi: PRODOTTO 12 4 = 48 ; (PRODOTTO 3 5 10) = 150 QUOZIENTE <num> <num> QUOTIENT Il valore restituito da questa funzione è la parte intera del quoziente dei suoi argomenti. Es.: QUOZIENTE 12 5 = 2. Usando i due argomenti con l’operatore DIVISIONE, si avrebbe invece: DIVISIONE 12 5 = 12 / 5 = 2.4 RADIANTI <num> Converte i gradi in radianti. Per questa conversione si utilizzi la seguente procedura: PER GRADI.IN.RADIANTI :A RIPORTA :A / 180 * PI FINE Ecco l’esempio di una sua applicazione: GRADI.IN.RADIANTI 180 = 3.1415926 RADQ <num> SQRT Il valore restituito da questa funzione è la radice quadrata del suo argomento. Esempio: RADQ 64 = 8 RESTO <num> <num> REMAINDER Questa funzione genera, come risultato, il resto della divisione eseguita tra i numeri fornitegli come argomenti. Esempi: RESTO 34 5 = 4 ; resto 56 8 = 0 RIACASO RERANDOM Azzera la sequenza di numeri pseudo-casuali utilizzati da ACASO. RIACASO permette, cioè, di utilizzare più volte la stessa sequenza di numeri pseudo-casuali. SEN <num> SIN Il valore della funzione SEN è il seno trigonometrico del suo argomento. pag. 131 pag. 132 Manuale SOMMA <num> <num> Logo SUM # Il valore di questa funzione è la somma dei suoi due argomenti. Con più di due argomenti si debbono usare le parentesi tonde. TAN Il valore della funzione TAN è la tangente del suo argomento espresso in gradi sessagesimali. Esempio: TAN 56 = 1.4825602 PAROLE E FRASI CONTA <par> / <lista> COUNT Questa funzione riporta il numero di oggetti che costituiscono il suo argomento. L’argomento può essere una lista o una parola: se è una lista, il valore di CONTA è uguale al numero di elementi della lista; quando invece CONTA è applicato ad una parola, il suo valore è il numero di caratteri che costituiscono la parola stessa. STAMPA CONTA [CANE SERPENTE] STAMPA CONTA “ALFABETO ELE <num> <par> / <lista> 2 8 ITEM La primitiva ELE è una funzione che restituisce in uscita quell’elemento del suo secondo argomento il cui numero d’ordine è indicato dal primo argomento. Il secondo argomento può essere una parola, oppure una lista. Se è una parola, ELE frornirà un carattere. Se il secondo argomento di ELE è invece una lista, ELE restituirà una parola o una lista. Se il valore del primo argomento di ELE è maggiore del numero di elementi del secondo argomento, si otterrà il messaggio d’errore: “ ..... non ha abbastanza elementi”. Esempi: STAMPA ELE 2 “CANE A MOSTRA ELE 3 [CANE GATTO MUCCA GALLINA] FRASE <ogg> <ogg> MUCCA SENTENCE # Il valore fornito da questa primitiva è una lista costituita dagli argomenti di FRASE: a differenza di LISTA però, se un argomento è esso stesso una lista, nella lista che FRASE fornisce come valore appariranno gli elementi di tale lista e non la lista stessa. FRASE fornisce cioè una lista formata dai suoi argomenti che non sono liste e dagli elementi delle liste fornite come argomenti. Per difetto FRASE richiede due argomenti; se questi sono in numero diverso, si deve racchiudere tra parentesi tonde FRASE e tutti i suoi argomenti. Esempi: Appendice A: Glossario M-LOGO - LOGO IBM MOSTRA FRASE “BUE [CANE SERPENTE CASA] [BUE CANE SERPENTE CASA] MOSTRA (FRASE “SERIO “BUFFONE “RIDICOLO) [SERIO BUFFONE RIDICOLO] INPRI <ogg> <lista> FPUT lNPRl è una funzione che fornisce una lista ottenuta scrivendo l’argomento <oggetto> al primo posto del’argomento <lista>. Ecco due esempi: MOSTRA INPRI “BUE [CANE SERPENTE CASA] [BUE CANE SERPENTE CASA] MOSTRA INPRI [BETA GAMMA] [[ALFA GAMMA] [A B C]] [[BETA GAMMA] [ALFA GAMMA] [ABC]] INULT <ogg> <lista> LPUT La funzione INULT fornisce la lista ottenuta inserendo <ogg> alla fine di <lista>. Esempi: MOSTRA INULT “BUE [CANE SERPENTE CASA] [CANE SERPENTE CASA BUE] MOSTRA lNULT [BETA GAMMA] [[ALFA GAMMA] [A B C]] [[ALFA GAMMA] [A B C] [BETA GAMMA]] LEGGICAR (LC) READCAR (RC) Questa primitiva è una funzione il cui valore è un carattere che viene letto dall’ archivio o dispositivo di lettura corrente. Quando Logo deve valutare LEGGICAR e il dispositivo di lettura corrente è la CONSOLE, l’esecuzione della primitiva non termina finché non viene premuto un tasto. Il carattere corrispondente al tasto premuto non apparirà sullo schermo. Provare questo comando con la seguente procedura che consente di disegnare con la tartaruga premendo più volte i tasti F , R e L . La procedura va interrotta premendo i tasti <CTRL PAUSA>. PER DISEGNA AS “CARATTERE LEGGICAR SE :CARATTERE = “A [A 5] SE :CARATTERE = “D [D 10] SE :CARATTERE = “S [S 10] DISEGNA FINE LEGGILISTA (LL) READLIST LEGGILISTA è una funzione che fornisce come valore una lista letta dalla tastiera o dal dispositivo di lettura attivo in quel momento. Gli elementi della lista riportata sono le parole e le liste che Logo incontra nella lettura fino al primo delimitatore di linea (<RETURN> nel caso della CONSOLE) che non sia contenuto in una sottolista, o fino alla fine dell’ archivio. pag. 133 pag. 134 Manuale Logo AS “RISPOSTA LEGGILISTA IO SONO LA RISPOSTA Digitando STAMPA :RISPOSTA Logo risponde con: IO SONO LA RISPOSTA LEGGIPAROLA (LP) READWORD (RW) Questa primitiva è una funzione il cui valore è la prima parola di una linea letta dall’ archivio o dispositivo di lettura corrente; il resto della linea, se presente, viene scartato. Le parentesi quadre, inoltre, vengono saltate. Se la linea non contiene alcuna parola, LEGGIPAROLA riporta la parola vuota. Per leggere interamente una linea, si possono usare LEGGILISTA e LEGGISTRINGA. Quando Logo deve valutare LEGGIPAROLA e il dispositivo di lettura corrente è la CONSOLE, l’esecuzione della primitiva non termina finché non viene premuto il tasto <RETURN>. AS “X LEGGIPAROLA PAROLONE Digitando :X Logo risponde con la scritta PAROLONE STAMPA LEGGIPAROLA Digitando: IO SONO UNA PAROLA Logo risponde con la scritta: LISTA <ogg> <ogg> IO LIST # Il valore della funzione LISTA è una lista formata dai suoi argomenti, che possono essere parole o liste essi stessi. Per difetto LISTA richiede due argomenti; se questi sono in numero diverso, si deve racchiudere tra parentesi tonde LISTA e tutti i suoi argomenti. LISTA crea anche liste di una sola parola. Se i suoi argomenti sono liste produce una lista di liste, contrariamente a FRASE che produrrebhe una lista avente come elementi quelli delle liste fornite come argomenti. AS “ANIMALI LISTA “BUE [CANE SERPENTE TORO] MOSTRA :ANIMALI [BUE [CANE SERPENTE TORO]] AS “UMORI (LISTA “SERIO “BUFFONE “RIDICOLO) MOSTRA :UMORI [SERIO BUFFONE RIDICOLO] MENPRI <par> / <lista> BUTFIRST (BF) Il valore della funzione MENPRI è il suo argomento privato del suo primo elemento. Se il suo argomento è una parola, il valore sarà una parola, nel caso sia una lista, sarà una lista. MOSTRA MENPRI [CANE SERPENTE CASA] [SERPENTE CASA] MOSTRA MENPRI [[ALFA GAMMA] [A B C] [4 5 78]] [[A B C] [4 5 78]] MOSTRA MENPRI “MASTRO ASTRO pag. Appendice A: Glossario M-LOGO - LOGO IBM MENULT <par> / <lista> BUTLAST (BL) Il valore della funzione MENULT è il suo argomento privato del suo ultimo elemento. MOSTRA MENULT [CANE SERPENTE CASA] [CANE SERPENTE] MOSTRA MENULT [[ALFA GAMMA] [A B C] [4 5 78]] [[ALFA GAMMA [A B C]] MOSTRA MENULT “MAI MA MOSTRA <ogg> SHOW Scrive sullo schermo uno o più oggetti che possono essere parole o liste, andando a capo dopo aver completato 1' ordine. Contrariamente a SCRIVI e STAMPA se 1’oggetto è una lista, MOSTRA lo scrive fra parentesi quadre. MOSTRA “CAVOLO MOSTRA [SEDIA TAVOLO CUCINA] PAROLA <par> <par> CAVOLO [SEDIA TAVOLO CUCINA] WORD # Riporta la parola ottenuta concatenando i suoi argomenti. Di norma PAROLA richiede due argomenti. Se questi sono in numero diverso, si deve racchiudere PAROLA con tutti i suoi argomenti tra parentesi tonde. MOSTRA PAROLA “PESCE “CANE PESCECANE MOSTRA (PAROLA “TRI “ANGOLO “SCALENO) TRIANGOLOSCALENO PRI <par> / <lista> FIRST Riporta il primo elemento del suo argomento. Se l’argomento è una lista riporta il suo primo elemento, se è una parola il primo carattere. MOSTRA PRI [CANE SERPENTE CASA] MOSTRA PRI [[ALFA GAMMA] [A B C] [4 5 78]] MOSTRA PRI “DONNA SCRIVI (SC) <ogg> CANE [ALFA GAMMA] D TYPE # Scrive un oggetto, che può essere una parola o una lista, sul dispositivo di uscita corrente senza farlo seguire da un delimitatore di linea. Per scrivere più di un oggetto si devono racchiudere primitiva e argomenti fra parentesi tonde; in questo caso gli oggetti non saranno separati da uno spazio. Se l' oggetto è una lista verrà scritto senza parentesi quadre. SCRIVI “TAVOLO TAVOLO SCRIVI [SEDIA TAVOLO CUCINA] SCRIVI ”AGAS SEDIA TAVOLO CUCINAAGAS 135 pag. 136 Manuale STAMPA (ST) <ogg> Logo PRINT (PR) # STAMPA scrive uno o più oggetti, che possono essere parole o liste, sullo schermo o sul dispositivo di uscita corrente. Dopo aver scritto gli oggetti indicati, STAMPA scrive un delimitatore di linea. Sullo schermo questo ha 1'effetto di portare il cursore all’ inizio della riga successiva. Se gli oggetti da scrivere sono più di uno, primitiva e argomenti devono essere racchiusi fra parentesi tonde. In questo caso saranno scritti sulla stessa riga ma separati da uno spazio. STAMPA “CAVOLO STAMPA “MELONE CAVOLO MELONE STAMPA [SEDIA TAVOLO CUCINA] SEDIA TAVOLO CUCINA (STAMPA “MELONE “ANGURIA [GRANDE ABBUFFATA]) MELONE ANGURIA GRANDE ABBUFFATA ULT <par> / <lista> LAST Riporta 1' ultimo elemento del suo argomento. Se 1' argomento è una lista, riporta 1’ultimo elemento della lista. Se è una parola, stampa il suo ultimo carattere. STAMPA ULT [CANE SERPENTE CASA] CASA STAMPA ULT [[ALFA GAMMA] [A B C] [4 5 78]] 4 5 78 STAMPA ULT “UOMO O PROCEDURE E VARIABILI AS <par> <ogg> MAKE Questa prirnitiva assegna il valore <ogg> alla variabile identificata da <par>. <ogg> può rappresentare qualunque oggetto Logo, e può anche derivare dalla valutazione di una espressione. La variabile assegnata con AS ha valore “globale”: viene memorizzata nella memoria di lavoro e riguarda tutte le procedure in essa presenti. Esempi: AS “ ALBERO “MELO :ALBERO MELO AS “CASE (7 * 4) + 6 COSA “CASE 34 AS “ANIMALI [BUE TORO MUCCA] MOSTRA :ANIMALI [BUE TORO MUCCA] Appendice A: Glossario M-LOGO - LOGO IBM CANCEFOGLIO Cancella l’intero contenuto del foglio. Dopo questo comando il foglio non conterrà più alcunchè e il contenuto precedente sarà perduto. Prima di utilizzare il foglio, per editare una nuova procedura, è consigliabile ripulirlo dal precedente contenuto. La dimensione del foglio può essere prescelta prima di entrare in Logo, con il comando di sistema operativo SET FOGLlO=<num> che permette di scegliere il numero di caratteri massimo e quindi permette di adattare la dimensione del foglio alle esigenze. CANCEPROC <par> / lista> ERASE (ER) Cancella dallo spazio di lavoro la procedura i cui nome è <par>, oppure tutte le procedure cui nomi sono contenuti in <lista>. Esempi: CANCEPROC “CANE Cancella la procedura CANE CANCEPROC [CANE TOPO] Cancella le procedure CANE e TOPO. CANCEPROC_IN (<par> / <lista>) ERALL Questa primitiva permette di cancellare dallo spazio di lavoro un insieme di procedure. Se CANCEPROC_IN non è seguita da alcun argomento, verranno eliminate tutte le procedure presenti nello spazio di lavoro, escluse quelle contenute nei pacchetti nascosti. E’ possibile però cancellare soltanto le procedure di un determinato pacchetto o insieme di pacchetti. Nel primo caso CANCEPROC_IN sarà seguito dal nome del pacchetto di cui si vogliono cancellare le procedure, nel secondo caso da una lista contenente tutti i nomi dei pacchetti le cui procedure si vogliono eliminare dallo spazio di lavoro. La presenza di un argomento opzionale impone alcune precauzioni: non si devono scrivere altre istruzioni sulla stessa riga dopo CANCEPROC_IN. Logo infatti le interpreterebbe come argomento di CANCEPROC_IN. Esempio: STlTOLl PER PROCEDURA1 PER PROCEDURA2 PER PROCEIDURA3 PER ALTREPROCEDURE CANCEPROC_IN STITOLI A questo punto sul video non appare alcuna scritta poichè le predette procedure sono state tutte cancellate CANCETUTTO_IN (<par> / <lista>) Questa primitiva, oltre a cancellare tutte le procedure, cancella anche le variabili globali memorizzate nello spazio di lavoro mediante il comando AS. Soltanto quest’ultime si possono cancellare anche con i comandi CANCEVAR o CANCEVAR_IN. Esempio: STITOLI PER OUADRATO PER CASA AS “LATO 32 AS “FAVOLA “VERO CANCETUTTO_IN STlTOLI A questo punto sul video non appare più alcuna scritta poichè sia le procedure, sia le variabili sono state tutte cancellate. pag. 137 pag. 138 Manuale COSA <par> Logo THINGH COSA fornisce il valore della parola assegnatale come argomento (vedi AS). Se 1’argomento di COSA è espresso come letterale, ad esempio COSA “ASINO la primitiva COSA può essere sostituita dai due punti “:” : Così anziché COSA “X possiamo scrivere il più breve :X. In quest’ultimo caso si deve prestare attenzione a non mettere spazi fra i due punti e la parola che segue. Se però 1' argomento di COSA non è una parola, ma una funzione che riporta una parola come risultato, non si possono usare i due punti. Logo cercherebbe infatti di valutare il titolo della funzione come se si trattasse di una variabile, anziché eseguirla per ottenerne il valore, che vogliamo sia attribuito come argomento a COSA. Esempi: AS “CASA “GRATTACIELO COSA “CASA AS “NUMERO “DATO AS “DATO 34521 COSA COSA “NUMERO 34521 COSA “DATO 34521 EDITA <par> / <lista> GRATTACIELO COSA “NUMERO DATO COSA :NUMERO 34521 EDIT (ED) Questa primitiva consente di entrare nel foglio, dove è possibile modificare e correggere procedure definite in precedenza e presenti nello spazio di lavoro. Per far ciò occorre digitare EDITA “nomeprocedura. Entrati così nel foglio di edizione occorre premere il tasto <Enter> e si entra così nella zona in alto del foglio dove è riportata la procedura da modificare. Dopo averla modificata, per uscire dal foglio occorre premere il tasto “Escape> e subito dopo in simultanea i tasti <CTRL F4>. Si ritorna così nell’ambiente di lavoro del Logo. LOCALE <par> / <lista> LOCAL Questa primitiva permette di definire una variabile come “locale” in riferimento ad una singola procedura oppure ad un blocco di procedure, ossia viene attribuita esclusivamente a quella procedura o a quel blocco. Questa nozione sottintende il concetto di “ambiente” di una variabile. L’ambiente di una variabile è l’insieme di procedure e istruzioni nelle quali è possibile riferirsi a tale variabile, come oggetto identificato in modo univoco, avente un determinato valore che si può utilizzare e modificare. Quando una variabile viene definita al livello comandi del Logo mediante il comando AS (assegnazione globale della variabile), essa è accessibile sia a livello comandi, sia a quello di tutte le procedure; e il suo ambiente coincide perciò con lo spazio di lavoro. Se invece, per esernpio la parola AZ viene definita come variabile “locale” nella procedura PINCOPALLINO, ossia se PINCOPALLINO contiene una istruzione del tipo LOCALE “AZ, allora la parola AZ ed il suo valore sono accessibili soltanto nella procedura PINCOPALLINO, nelle procedure richiamate dalla procedura PINCOPALLINO, nelle procedure richiamate da queste ultime, e così via. Al di sopra di PINCOPALLINO, AZ è sconosciuta, e lo stesso nome “AZ si può usare per identificare un altra variabile, che resta ben distinta dalla AZ di PINCOPALLINO. Il valore di quest’ultima può essere usato e modificato soltanto da istruzioni che fanno parte di una delle procedure appartenenti al suo ambiente. Poter dichiarare una variabile come locale riferita a un certo blocco di procedure, impedendo alle altre procedure di modificarne il valore, sopprime la fonte di molti errori. Permette infatti di considerare le procedure come delle “scatole nere” che eseguono delle operazioni sui loro argomenti senza influenzare in alcun modo il resto del programma. Appendice A: Glossario M-LOGO - LOGO IBM I parametri di una procedura sono sempre parole locali; il comando LOCALE si utilizza quindi solo per le parole che non vengono passate come parametri o per quelle create con i comandi AS e CHIAMA all’ intemo della procedura o dalle procedure da essa richiamate. L’argomento di LOCALE è una parola, oppure, se si vogliono dichiarare come locali più parole, una lista di tali parole. Esempi: LOCALE “ALBERO rende locale la parola ALBERO. LOCALE [CASA BOSCO] rende locali le parole CASA e BOSCO. MOSFOGLIO Il comando rende visibile il foglio del Logo, cioè 1' ambiente dedicato alla manipolazione dei testi delle procedure. Questo comando lavora in modo molto simile al comando EDITA. NASFOGLIO Il comando NASFOGLIO nasconde il foglio senza alterare però in alcun modo il suo contenuto. PER <par> TO Apre la scrittura del corpo di una procedura. Effettuata l’intera operazione la si deve chiudere battendo la parola FINE. Il primo argomento di PER diventerà il nome della procedura. Dopo il primo argomento si possono scrivere altre parole precedute dal due punti, che diventeranno le denominazioni delle variabili della procedura, come illustrato nell’esempio. La primitiva PER ha una caratteristica particolare: essa vuole sempre una parola letterale come argomento e accetta come tale anche una parola priva delle virgolette. Sono corretti per esempio sia PER “CASA che PER CASA. Esempio: PER CASA :LATO PARETE SALIRE TETTO FlNE PER PARETE :LATO RIPETI 4[A :LATO D 90] FINE PER TETTO :LATO RIPETI 3[A :LATO D 120] FINE PER SALIRE :LATO A :LATO D 30 FINE SPROC <par> PO Scrive il testo della procedura indicata come argomento. Esempio: Dopo aver definito la procedura TETTO :LATO, digitando SPROC “TETTO il Logo mostrerà sul video il testo della procedura stessa, ossia: PER TETTO :LATO RIPETI 3[A :LATO D 120] FINE pag. 139 pag. 140 Manuale SPROC_IN <par> <lista> Logo POALL Scrive sul video il contenuto di tutte le procedure presenti nello spazio di lavoro, salvo quelle di pacchetti nascosti. Per quest’ultime occorre specificare nome del pacchetto e, se i pacchetti sono più di uno, dovranno essere chiamati sotto forma di lista. Esempi: SPROC_IN Scrive il contenuto di tutte le procedure esistenti nello spazio di lavoro. PROC_IN “ARTE Scrive il contenuto delle procedure del pacchetto denominato ARTE STITOLI <par> / <lista> Scrive i titoli di tutte le procedure escluse quelle dei pacchetti nascosti. Per quest’ ultime bisogna specificare il nome del pacchetto. Se i pacchetti sono più di uno, dovranno essere invocati sotto forma di lista. ARCHIVI E PERIFERICHE ASDISCO <par> SETDISK Seleziona l’unità disco con la quale si vuole lavorare. Indica cioè al Logo l’unità disco sulla quale cercare gli archivi che verranno nominati in seguito, oppure scrivere i nuovi. Alla partenza di Logo 1’unità selezionata è quella che lo era a livello di sistema operativo. ASDISCO “A ARCHIVIO? “PROVA VERO ASDlSCO “C ARCHIVlO? “PROVA FALSO Logo conferma che l’archivio “PROVA è presente nell’unità a disco “A, ma non in “C. CANCEARC <nome archivio> ERASEFILE Cancella dal disco l’archivio indicato.Gli archivi cancellati non sono più recuperabili. In altre parole gli effetti di CANCEARO sono irreversibili. Bisogna quindi fare attenzione a non cancellare archivi ancora necessan. CAT [GIACOMO MLOGO.EXE MIEIDATI] CANCEARC “GIACOMO CAT [MLOGO.EXE MIEIDATI] CATALOGO (CAT) (<nome archivio>) DIR Questa funzione fornisce una lista di tutti gli archivi presenti sul disco selezionato (vedi ASDlSCO). La sintassi usata nel comando CATALOGO è simile a quella del comando DIR del DOS e svolge le stesse funzioni. Se CATALOGO non è seguito da alcun argomento, verrà fornita una lista contenente tutti gli archivi presenti sul disco già scelto come unità per archiviare, o estrarre archivi. pag. Appendice A: Glossario M-LOGO - LOGO IBM L’ argomento di CATALOGO permette di selezionare gli archivi che andranno a far parte della lista. Se è presente un argomento, solo gli archivi il cui nome è uguale alla parola fornita saranno inclusi nella lista. E’ possibile ottenere un catalogo parziale degli archivi includendo nella parola fornita come argomento i caratteri e ?. Un nome di archivio è considerato uguale alla parola, se contiene un qualsiasi carattere al posto del punto interrogativo e qualsiasi carattere o sequenza di caratteri al posto dell’ asterisco. Inoltre 1' argomento di CATALOGO può anche contenere 1' indicazione dell’ unità disco da usare: basterà infatti far cominciare la parola con la lettera che indica 1' unità disco seguita dai due punti. Ricordiamo che i due punti e 1' asterisco sono caratteri autodelimitanti, e devono quindi essere scritti preceduti dal carattere”\”. MOSTRA CATALOGO [DATI.ML LOGOl.ML LOGOTEST CORREDO.ML ARCH.MIO] MOSTRA CATALOGO “A\:\*.ML [CORREDO.ML DATI.ML LOGOl.ML] CONSERVA <nome archivio> (<nom>) SAVE Scrive gli oggetti (procedure e parole) presenti in memoria sul dispositivo specificato dal pnimo argomento. Il secondo arromento, facoltativo, permette di scrivere solo il contenuto di uno o più pacchetti. Se i pacchetti che si vogliono conservare sono più d’uno, i loro nomi vanno forniti sotto forma di lista. CONSERVA “MlEPROC Scrive il contenuto dello spazio di lavoro sul file MIEPROC CONSERVA “STAMPANTE Scrive il contenuto dello spazio di lavoro sulla stampante. CONSERVA “XX “TAVOLO Scrive il contenuto del pacch. TAVOLO sull’archivio XX. CONSERVA_DIS <nome archivio> SAVEPIC Salva l’immagine attualmente presente sullo schermo grafico nell’ archivio indicato dall’ argomento. Le immagini conservate possono in un secondo tempo essere recuperate con il comando RECUPERA_DlS. E’ anche possibile usare CONSERVA_DIS per stampare il disegno con la stampante grafica: se come archivio si indica la “STAMPANTE, questo comando copia il contenuto dello schermo grafico sulla stampante. CONSERVA_DIS “STAMPANTE funziona però solo se è stato eseguito il comando GRAPHICS a livello di sistema operativo. Questo comando carica in memoria le routines di pilotaggio della stampante grafica.Poiché GRAPHICS occupa uno spazio equivalente a circa 160 nodi si è preferito renderne il caricamento facoltativo. RECUPERA <nome archivio> (<par>) LOAD Permette di recuperare valori e procedure scritti in un archivio. RECUPERA legge le istruzioni contenute nell’ archivio e le esegue come se fossero state battute da tastiera. Le procedure dovranno quindi essere scritte negli archivi nella forma PER ..... ...... FINE e le variabili come AS “NOME <oggetto>. Il comando CONSERVA esegue automaticamente questa operazione sugli oggetti in memoria. Il secondo argomento, facoltativo, permette di formare un pacchetto con gli oggetti letti. 141 pag. 142 Manuale Logo Una forma particolare del comando RECUPERA “FOGLIO permette di leggere le procedure scritte o corrette usando il foglio. RECUPERA “MIEPROC Carica in memoria il contenuto dell’ archivio MIEPROC. RECUPERA_DIS <nome archivio> LOADPIC Recupera 1' immagine conservata nell’ archivio il cui nome viene fornito come argomento e la disegna sullo schermo. L’immagine recuperata si sovrappone ad eventuali immagini presenti sullo schermo, se si vuole evitare questo si deve dare il comando PULISCI prima di RECUPERA_DIS. I disegni devono esser stati salvati con il comando CONSERVA_DIS. COMANDI DI CONTROLLO AMB <valore logico> <valore logico> La funzione logica AMB ha valore VERO se tutti i suoi argomenti sono veri. In caso contrario, e cioè se almeno uno degli argomenti è falso, AMB ha valore FALSO. Se gli argomenti di AMB sono più di due si dovrà racchiudere primitiva ed argomenti fra parentesi tonde. AMB si usa generalmente in congiunzione con le primitive VERIFICA o SE per realizzare dei test multipli. ASMODO <num> La primitiva ASMODO permette di stabilIre lo stato del controllore del video. Il controllore video è quella pane del calcolatore che stabilisce la modalità di presentazione degli oggetti sul video. ASMODO permette, ad esempio, di ottenere delle righe di 80 caratteri sullo schermo colore o testi di più di quattro colori diversi. Le modalità possibili sono sei e sono rappresentate dai numeri da 0 a 4, per quelle corrispondenti allo schermo colore, e 7 per la modalità relativa allo schermo monocromatico. L’ unica modalità grafica, cioè, in cui è possibile disegnare, è la modalità 4. Poiché le modalità da 0 a 4 sono applicabili solo allo schermo grafico, mentre la modalità 7 si può applicare solo allo schermo monocromatico. Si deve prestare attenzione a non tentare di assegnare al controllore video una modalità relativa ad uno schermo inesistente, ad esempio ASMODO 7, quando non si possiede uno schermo monocromatico. Un errore di questo tipo rischia addirittura di far si che Logo “si perda” nella ricerca di uno schermo inesistente rifiutando qualsiasi ulteriore comando e costringa a spegnere la macchina per riacquistare il controllo. Gli schermi grafici non a colori, come per esempio quello dell’ Olivetti M 24, sono considerati analogi agli schermi a colori e non possono funzionare in modalità 7. Alla partenza Logo è nella modalità 4, se a livello di sistema operativo si sta usando lo schermo a colori. E’ in modo 7, se si sta invece usando lo schermo monocromatico. Appendice A: Glossario M-LOGO - LOGO IBM Ecco le caratteristiche delle sei modalità: MODO 0: Modalità testo, in bianco e nero, 40 colonne. MODO 1: Modalità testo, a colori, 40 colonne. MODO 2: Modalità testo, in bianco e nero, 80 colonne. MODO 3: Modalità testo, a colori, 80 colonne. MODO 4: Modalità grafica 320 x 200 punti e 4 colori. MODO 7: Modalità testo in bianco e nero, 25 righe per 80 colonne su schermo monocromatico. ASPETTA <numero> Il comando ASPETTA arresta i esecuzione del programma per la durata indicata dal suo argomento. La durata è espressa in cicli di sistema, ognuno dei quali dura circa 50 millesimi di secondo. L’ esempio seguente produrrà una pausa di circa 10 secondi prima di far ricomparire il “?” ed aspettare il comando successivo. ASPETTA 200 BREAK Interrompe 1' esecuzione del programma e riporta il Logo al livello comandi. Equivale a premere la combinazione di tasti <CTRL> <PAUSA>. La differenza fra il comando BREAK ed il comando STOP è molto importante: STOP riporta il controllo dalla procedura in corso di esecuzione alla procedura che ha chiamato (che generalmente non è il livello comandi), mentre BREAK riporta sempre al livello comandi. CIAO . DOS Questa primitiva provoca 1' uscita dal Logo e il ritomo al livello comandi del sistema operativo. Lasciando il Logo il calcolatore cercherà 1' interprete dei comandi del sistema operativo (archivio COMMAND.COM) che dovrà quindi essere sul dischetto che si trova nell’ unità disco da cui era stato effettuato il “boostrap” del sistema operativo. CONTINUA Questa primitiva permette di riprendere l'esecuzione di un programma dopo un’interruzione provocata dal comando PAUSA. Se però, nel corso della pausa, si è verificato un errore, il comando CONTINUA produrrà il messaggio: non posso fare CONTINUA. INDICE Questa primitiva fornisce una lista di tutte le parole che Logo conosce. Faranno parte della lista tutte le parole, inclusi i nomi delle primitive, delle procedure e delle variabili. La lista presenta le parole in ordine alfabetico. pag. 143 pag. 144 Manuale Logo LIBERA Esegue una pulizia della memoria eliminando gli oggetti che non hanno più utilità e recuperando i nodi ad essi assegnati. Il Logo esegue automaticamente questa operazione ogni volta che esaurisce la memoria, ma, poiché impiega un certo tempo per eseguirla, è utile poter decidere il momento, durante 1' esecuzione di un programma, in cui eseguire l’operazione di pulizia della memoria. È utile inoltre dare un comando LIBERA prima di un comando NODI, per conoscere qual è effettivamente lo spazio di memoria che ci rimane disponibile; altrimenti il numero di nodi liberi può risultare minore di quello reale, per via del fatto che alcune zone di memoria possono risultare occupate mentre in realtà non lo sono più. LISTA? LISTP Il valore del predicato di LISTA? è VERO se il valore del suo argomento è una lista, altrimenti è falso AS "ELENCO [RINA LUCA, PIPPO] AS "ELENCO "CARLO LISTA? :ELENCO LISTA? :ELENCO VERO FALSO NODI La funzione NODI fornisce il numero di nodi ancora liberi. Il Logo misura la memoria in nodi, ognuno dei quali corrisponde a cinque celle di memoria (Bytes). Il numero totale di nodi disponibili dipende dalla quantità di memoria installata e dal numero di nodi occupati da parole e procedure. Prima di eseguire la primitiva NODI è consigliabile eseguire il comando LIBERA per evitare che Slogo consideri come occupati anche i nodi che contengono informazioni non più valide. NODI 3457 LIBERA NON <valore logico> NODI 6784 NOT Riporta il valore logico opposto rispetto al suo argomento. (VERO se 1' argomento è FALSO e viceversa). NON "VERO FALSO NON "A = "B VERO NONTRACCIARE (NTRA) Annulla il comando TRACCIA. Dopo 1' esecuzione del comando NONTRACCIARE, quando il Logo segue i comandi, questi non saranno più tracciati sullo schermo. Ovviamente, se non era stato dato il comando TRACCIA, NONTRACCIARE non ha nessun effetto (vedi TRACCIA). pag. Appendice A: Glossario M-LOGO - LOGO IBM NUMERO? NUMBERP Il valore di NUMERO? è VERO se il suo argomento è un numero, altrimenti è FALSO. AS "ELENCO [A B C D] MOSTRA NUMERO? :ELENCO STAMPA NUMERO? 56 VERO STAMPA NUMERO? 3456 VERO OPPURE <valore logico> <valore logico> (O) FALSO OR Il valore dell’ espressione è VERO se almeno uno degli argomenti è vero. Se nessuno degli argomenti è VERO il valore dell’espressione è FALSO. Se gli argomenti sono più di due si devono usare le parentesi tonde. A causa dell’ ordine di valutazione delle istruzioni del Logo, se i valori logici sono forniti da funzioni, è consigliabile usare le parentesi tonde intorno a ciascuna di esse per essere sicuri che il Logo ne calcoli il valore prima di eseguire 1' OPPURE. Particolarmente critici da questo punto di vista sono gli operatori infissi = < > i cui argomenti devono sempre essere fra parentesi se non sono letterali. Se non si osserva questa precauzione, si rischia che il Logo esegua 1' operatore prima di calcolare i due elementi da paragonare e poi usi il risultato, (VERO o FALSO) negli altri calcoli. Un esempio chiarirà meglio questa indicazione. STAMPA OPPURE SOMMA 23 45 = 68 "FALSO A SOMMA non piace FALSO come argomento. STAMPA OPPURE (SOMMA 23 45) = 68 "FALSO VERO QUI <parola> Dà un nome ad una riga di istruzioni afflnchè il comando VAI possa identificarla. L’ argomento deve essere una parola letterale non il risultato di una funzione; ad esempio QUI “PINCOPALLINO è corretto mentre QUI RIPORTA PAROLA e QUI PAROLA “ALFA “BETA non lo sono. E’ bene dare alle etichette dei nomi comprensibili che servano anche a ricordare la posizione della riga nella procedura. PER LEGGINUMERO QUI "NONNUMERO AS "NUMERO LEGGIPAROLA SE NON NUMERO? NUMERO [VAI “NONNUMERO] RIPORTA :NUMERO FINE RIPETI <num> <lista> REPEAT Esegue le istruzioni racchiuse tra parentesi quadre nella lista per un numero di volte pari al primo argomento. RIPETI 3 [STAMPA [SONOBRAVO]] SONO BRAVO SONO BRAVO SONO BRAVO 145 pag. 146 Manuale RIPORTA <ogg> Logo OUTPUT (OP) Termina una procedura e trasmette un oggetto alla procedura chiamante, cioé la procedura che contiene l’ordine di esecuzione della procedura corrente. Se non c’è una procedura chiamante restituisce la gestione di Logo all’operatore. RIPORTA é il comando che permette di definire delle nuove fùnzioni. Senza di esso sarebbe impossibile trasferire valori da una procedura ad un altra se non tramite variabili comuni ad entrambe le procedure. La seguenti procedure riportano la posizione di un oggetto in un altro. PER VALORE.ASSOLUTO :NUM SE :NUM > 0 [RIPORTA -:N] [RIPORTA :N] FINE SE <valore logico> <lista di istr.> (ALTRIMENTI <lista di istr.>) IF Esegue la lista se <valore logico> è VERO, altrimenti passa all’ istruzione successiva. Se si utilizza il formato facoltativo, la lista che segue ALTRIMENTI sarà eseguita solo se il controllo ha dato il risultato falso e quindi non è stata eseguita la prima delle due liste. AS “PROVA “VERO SE PROVA [STAMPA “SI] SI SE NON PROVA [STAMPA “SI] NO ALTRIMENTI [STAMPA “NO] ALTRIMENTI [STAMPA “NO] SE_FALSO (SEF ) <lista dì istruz.> IFFALSE (IFF) Se 1' ultimo controllo (VERIFICA o SE) ha dato risultato FALSO, esegue la lista. Il comando SE_FALSO è in tutto e per tutto simile al comando ALTRIMENTI. Il cornando SE infatti agisce anche come VERIFICA per cui SE_FALSO utilizzerà il risultato dell’ ultimo comando di controllo dato in ordine di tempo, senza distinguere in alcun modo se si trattava di un SE o di un VERIFICA. AS “Nl 33 AS “N29 VERIFICA :Nl < :N2 SEF [STAMPA [ERA FALSO]] ERA FALSO SE_VERO (SEV) <lista dl istruz> IFTRUE (IFT) Se 1’ultimo controllo VERIFICA ha dato risultato vero, esegue la lista, altrimenti passa all’ istruzione successiva. Il comando SE_VERO accetta la clausola ALTRIMENTI, ma si può anche utilizzare al suo posto il comando SE_FALSO. AS “N1 33 AS “N2 941 VERlFICA :N1 < :N2 SEV [STAMPA [NON ERA FALSO]] NON ERA FALSO pag. Appendice A: Glossario M-LOGO - LOGO IBM STOP Chiude 1'esecuzione procedura chiamante. STOP della procedura corrente e trasferisce il controllo alla STOP ha lo stesso effetto di FINE, mentre FINE però serve a logo per segnare la fine della procedura, e di conseguenza può comparire solo al termine della procedura, STOP può essere usato quante volte si vuole per indicare che la procedura deve terminare al verificarsi di una data condizione. PER “SCRIVINUMERI.DA.A : A :B SE A > :B [STOP] STAMPA :A SCRIVINUMERl.DA.A :A + 1 :B FINE TRACCIA Serve per chiedere il tracciamento di procedure e primitive. TRACCIA, senza argomento, traccia tutte le procedure e le primitive, con argomento solo quelle specificate. Tracciare una primitiva significa mostrare su schermo il suo nome e il valore calcolato per gli argomenti subito prima della sua esecuzione. Tracciare una procedura significa mostrare il suo nome e il valore calcolato per gli argomenti all’ingresso, il suo nome e 1' eventuale valore riportato all’ uscita. TRACCIA permette di seguire L'esecuzione di un programma per poter rintracciare gli eventuali errori. VAI <parola> Ordina al programma di continuare 1'esecuzione dall’istruzione che segue QUI <parola>. QUI <parola> deve trovarsi nella stessa procedura di VAI. Si consiglia di limitare l’uso di questo comando perchè i programmi potrebbero risultare piuttosto lenti. VERIFICA <valore logico> TEST Esegue un controllo il cui risultato influenzerà i comandi SE_VERO e SE_FALSO eseguiti successivamente all’ intemo della procedura. VERIFICA LEGGLISTA = [QUESTA E’ UNA RIGA] QUESTA NON E’ UNA RIGA SEF [ST “FALSO] FALSO 147 pag. 148 Manuale ALTRE PRIMITIVE M-LOGO NON COMMENTATE ACCHIAPPA DEF? PULSANTE? ARCAPERTI DEFINISCI (DF) PUNTO ARCHIVIO? DISCO RECUPERA_QUADRO ASCII DOVELEGGI REGISTRA ASCOLTESTO DOVESCRIVI RIGA ASCOM ELE? RINOMINA ASCURSORE ERRORE SCHERMO ASECO ESEGUI SCI ASMAIUSCOLE ESP SCOPRI ASPROP (AP) FINELEGGI? SCRICAR ASRIGHE FINESCRIVI? SCRIVI_A ASSFONCAR FOGLIO? SCRIVI_SU ASTASTO (AT) LANCIA SLISTEPROP ASTAVOLOZZA LEGGISTRINGA STRINGA ASTEMPO LEGGI_A STUTTO_IN CANCEPROP LEGGI_DA SUCC CANCEPROP_IN LISTARIF SUCHESCRIVI CANCEVAR LISTAPROP SUONA CANCEVAR_IN LN SVAR_IN CARATTERE (CAR) LUNGARC TARTA? CHIAMA MAIUSCOLE TASTIERA CHIUDI MISURA TASTO CHIUDITUTTO MODO TASTO? COLORE NONREGISTRARE (NREG) TAVOLOZZA COSTESTO PAC TEMPO CONSERVA_QUADRO PACTUTTO TESTO COPIADEF PARTE UGUALE? COPRI PAUSA ULTLINEA COSA? POSELE VUOTO? CURSORE PREC ZITTO DACHELEGGI PRIMITIVA? DEC PROP Logo pag. Appendice A/2: Glossario M-LOGO - LOGO IBM 149 COMANDI LOGO-IBM Note: Le forme abbreviate delle primitive, se esistono, vengono riportate tra parentesi. Gli argomenti dei comandi sono indicati in corsivo e quelli tra parentesi sono facoltativi. Il contrassegno # indica che nella istruzione va inserito il numero di argomenti specificato. Quando gli argomenti sono di più, o di meno,l’intera istruzione deve essere scritta tra parentesi. Esempi: LISTA “A “B ; (LISTA “A) ; (LISTA “A “B “C) Turtle Graphics BACK (BK) n Moves turtle n steps back. PEN Outputs pen state: list containing mode (PD, PU, PE, PX), color, and palette. BACKGROUND (BG) Outputs number representing background color for graphics screen. PENCOLOR (PC) Outputs number representing pen color. CLEAN Erases graphics screen without affecting turtle. PENDOWN (PD) Puts pen down. CLEARSCREEN (CS) Erases screen, moves turtle to [0 0], sets heading to 0. PENERASE (PE) Puts eraser down. DOT pos Puts a dot of the current pen color at the coordinates specified bypos. PENREVERSE (PX) Puts reversing pen down. FENCE Fences turtle within edges of screen. FILL Fills in a closed shape with the current pen color. FORWARD (FD) n Moves turtle n steps forward. HEADING Outputs turtle’s heading (its direction) in degrees. HIDETURTLE (HT) Makes turtle invisible. HOME Moves turtle to [0 0] and sets heading to 0. LEFT (LT) n Turns turtle n degrees left (counterclockwise). LOADPIC filespec Loads screen image infilespec directly onto screen. PALETTE (PAL) Outputs number for the palette of colors PENUP (PU) Raises pen. POS Outputs position of turtle in coordinates. RIGHT (RT) n Turns turtle n degrees right (clockwise). SAVEPIC filespec Saves screen image in filespec. SCRUNCH Outputs current aspect ratio of screen. SETBG n Sets background in graphics to color number n. SETHEADING (SETH) n Sets turtle’s heading (direction) to n degrees. SETPAL n Sets the palette of colors to n. SETPC n Sets pen color to n pag. 150 . SETPEN penlist Sets pen to list of mode, color, and palette. SETPOS pos Moves turtle to coordinates specified by pos .SETSCRUNCH n Sets aspect ratio of screen to n. SETSHAPE n Changes the turtle’s shape to a pattern specified by ASCII code n. SETX x Moves turtle horizontally to position with xcoordinate. SETY y Moves turtle vertically to position with y-coordinate. SHAPE Outputs the turtle’s current shape. SHOWNP Outputs TRUE if turtle is visible. SHOWTURTLE (ST) Makes turtle visible. SNAP n Copies image under turtle onto the turtle’s shape and stores it in ASCII code n. STAMP Stamps copy of turtle’s shape onto the screen. TOWARDS pos Outputs heading turtle would have if facing the coordinates specified by pos. WINDOW Removes boundaries from turtle field. WRAP Makes turtle field wrap around edges of screen. XCOR Outputs x-coordinate of turtle’s position. YCOR Outputs y-coordinate of turtle’s position. Words and Lists ASCII char Outputs ASCII code for the char (character) Manuale Logo BUTFIRST (BF) ogg Outputs all but first element of its input. BUTLAST (BL) ogg Outputs all but last element of its input. CHAR n Outputs character whose ASCII code is n. COUNT ogg Outputs the number of elements in its input. EMPTYP ogg Outputs TRUE if ogg is empty list or empty word. EQUALP ogg1 ogg2 Outputs TRUE if its inputs are equal. FIRST ogg Outputs first element of its input. FPUT ogg list Outputs list formed by putting its first input at beginning of list. ITEM n ogg Outputs nth element of its input. LAST ogg Outputs last element of its input. LIST ogg1 ogg2 # Outputs list of its inputs, preserving their list structure. LISTP ogg Outputs TRUE if ogg is a list. LPUT ogg list Outputs list formed by putting its first input at end~of list. MEMBERP ogg1 ogg2 Outputs TRUE if its first input is an element of its second input. NUMBERP ogg Outputs TRUE if ogg is a number. SENTENCE (SE) ogg1 ogg2 # Outputs list of its inputs. WORD word1 word2 # Outputs word made up of its inputs. WORDP ogg Outputs TRUE if ogg is a word. pag. Appendice A/2: Glossario M-LOGO - LOGO IBM Variables 151 PRODUCT a b #Outputs product of its inputs. EDNS (package(list)) Stands for EDit NameS. Starts Logo editor (containing variables in package(list)). QUOTIENT a b Outputs a divided by b. LOCAL name # Makes name local. RANDOM n Outputs random non-negative integer less than n. MAKE name ogg Gives the value ogg to the variable name. REMAINDER a b Outputs remainder of a divided by b. NAME ogg name Makes ogg the value of name. RERANDOM Makes RANDOM act reproducibly. NAME P name Outputs TRUE if name has a value. ROUND n Outputs n rounded off to nearest integer. THING name Outputs the value of name. SETPRECISION n Sets current precision of numbers to n. Arithmetic Operations SIN a Outputs sine of a degrees. ARCTAN y (x) Outputs arctangent of y or x/y in degrees. SQRT n Outputs square root of n. COS a Outputs cosine of a degrees. SUM a b # Outputs sum of its inputs. DIFFERENCE a b Outputs b subtracted from a. Defining and Modifying Procedures EFORM n a Outputs n in scientific notation using a digits. COPYDEF newname name Copies definition of name onto newname. EXP a Outputs e to the power of a. DEFINE name list Makes list the definition of name. FORM n a (b) Outputs number n with a digits before the decimal point and b digits after it. DEFINEDP word Outputs TRUE if word is the name of a procedure. INT n Outputs integer portion of n. LN a Outputs log of a to the base e. PI Outputs mathematical constant pi greco. POWER n a Outputs n to the power of a. PRECISION Outputs the number of significant digits a number is rounded to when used by Logo. EDIT (ED) Starts Logo editor (containing named procedures). PRIMITIVEP name Outputs TRUE if name is a primitive. TEXT name Outputs definition of procedure name as a list. TO name (inputs) Begins defining procedure name pag. 152 Flow of Control Manuale Logo OR pred1 pred2 #Outputs TRUE if any of its inputs are TRUE. CATCH name list Runs list; returns when THROW name is run. Communicating with the Outside World CO (ogg) Resumes a procedure after a pause. Outputs obj to PAUSE. ERROR Outputs list of information about most recent error. GO word Transfers control to LABELword. IF pred list1 (list2) Ifpred is TRUE, runs list1; otherwise, list2. IFFALSE (IFF) list Runs list if most recent TEST was FALSE. IFTRUE (IFT) list Runs list if most recent TEST was TRUE. LABEL word Creates a labeled line for use by GO. OUTPUT (OP) ogg Returns control to calling procedure with obi as output. PAUSE Suspends running of the procedure. ALLOPEN Outputs a list of devices/files which are currently open. BUTTONP n Outputs TRUE if button on paddle or joystick n is down. CLOSE device/ filespec Closes a currently opened device/filespec. CLOSEALL Closes all currently opened files and devices. DIR ((drive:)/filespec) Displays names of files on disk. DISK Outputs the current disk drive. .DOS Releases control to the Disk Operating System. DRIBBLE device/filespec Starts process of sending a copy of text on the screen to device/filespec. REPEAT n list Runs list n times. EDITFILE infilespec (outflkspec) Starts Logo editor with the contents of infilespec. Saves infilespec under outflkspec. RUN list Runs list; outputs what list outputs. ERASEFILE filespec Erases file filespec from diskette. STOP Stops procedure and returns control to caller. FILELEN filespec Outputs the length in bytes of filespec. TEST pred Determines whether pred is TRUE or FALSE. FILEP filespec Outputs TRUE if filespecexists. THROW name Transfers control to corresponding CATCH. KEYP Outputs TRUE if a key has been typed but not yet read. Logical Operations NODRIBBLE Turns off dribble process and closes the dribble file. AND pred1 pred2 #Outputs TRUE if all of its inputs are TRUE. NOT pred Outputs TRUE if pred is FALSE. OPEN device/filespec Opens devicefilespec. pag. Appendice A/2: Glossario M-LOGO - LOGO IBM 153 PADDLE n Outputs rotation of dial on paddle n or position of stick on joystick n. SETWRITEPOS n Sets the file position for writing into the current filespec. POFILE filespec Prints out the contents of filespec. SHOW ogg Prints its input followed by carriage return and line feed - with brackets for lists. PRINT (PR) ogg #Prints its input followed by carriage return and linefeed, but doesn’t print the outer brackets of lists. READCHAR (RC) Outputs character read by the current file or device (default is keyboard). Waits, if necessary. READCHARS (RCS) n Outputs n characters read by the current file or device (default is keyboard). Waits, if necessary. READEOFP Outputs TRUE if the position of thefilespec being read is the end of the file. READER Outputs the name of current device/filespec opened for reading. READLIST (RL) Outputs line read by current file or device (default is keyboard). Waits, if necessary. READPOS Outputs reader position of current file being read. TONE freq dur Produces a sound of frequencyfreq for duration dur. TYPE ogg #Prints its input, but not the outer brackets of lists. WAIT n Causes a pause of about n 18ths of a second. WRITEOFP Outputs TRUE if the write pointer is at the end of the filespec being written. WRITEPOS Outputs position of write pointer in file currently being written to. WRITER Outputs name of current device/filespec open for writing Text and Screen CAPS Outputs TRUE if Caps Lock key is disabled and false if active. READWORD (RW) Outputs first word read by current file or device (default is keyboard). Waits, if necessary. CLEARTEXT (CT) Clears text portion of screen. SETCOM n bdrt parity databits stopbits Sets the serial communications line. CURSOR Outputs position of cursor on screen. SETDISK dnve: Sets disk to drive:. FULLSCREEN (FS) Devotes entire screen to graphics. Same as F4 key. SETREAD device/filespec Sets the device/filespec from which the output of RC, RC 5, RL, and RW will be read. MIXEDSCREEN (MS) Allows both text and graphicson the screen. Same as F2 key. SETREADPOS n Sets the file position for reading the current filespec. SCREEN Outputs 1 or 2, depending on whether you are working with one or two screens. SETWRITE device/filespec Sets the destination of inputs to PRINT, TYPE, SHOW, PO, and POFILE. SETCAPS pred TRUE disables Caps Lock key; FALSE enables it. SETCURSORpos Puts cursor at the screen position specified by pos. pag. 154 Manuale Logo SETSCREEN n Sets number of screens to 1 or 2. PACKAGE package name (list) Puts named procedure(s) in package SETTC colorlist Sets text colors to colorlist (foreground, background). PKGALL package Puts in package everything not already packaged. SETTEXT n Sets text portion of graphics screen to n lines from bottom. SETWIDTH n (a) Sets width of screen to n columns. Second input moves text a columns to right or left. TEXTCOLOR (TC) Outputs a list of the numbers for current text colors. TEXTSCREEN (TS) Devotes entire screen to text. Same as Fl key. WIDTH Outputs current width of screen. Workspace Management BURY package Buries procedures and variable names contained in package. PO name(list) Prints definitions of named procedure(s). POALL (package( list)) Prints definitions of procedures (in package(list)). PONS (package(list)) Prints names and values of variables (in package(list)). POPS (package(list)) Prints definitions of procedures (in package(list)). POTS (package(list)) Prints title lines of procedures (in package(list)). RECYCLE Performs a garbage collection. REPARSE Reparses procedures. SAVE device/filespec (package(list)) Writes whole workspace or package(list) onto device/filespec. CONTENTS Outputs list of all names, procedure names, and other words in workspace. UNBURY package Unburies procedures and names in package. ERALL (package(list)) Erases everything (in (package(list). Property Lists ERASE (ER) name(list) Erases named procedure(s). ERN name(list) Erases named variable(s). ERNS (package(list)) Erases variables (contained in package(list)). ERPS (package(list)) Erases procedures (contained in package(list)). GPROP name prop Outputs value of prop property of name. PLIST name Outputs property list of name. PPROP name prop obj Gives property prop with value obj to name. LOAD fllespec (package) Loads filefilespec into workspace (into package). PPS (package(list)) Prints property list(s) of everything (in package(list)). NODES Outputs number of free nodes. REMPROP name prop Removes property prop from property list of name. pag. 155 Allegato B: Archivi e procedure ARCHIVI DI GRAFICA PROCEDURE E SOTTOPROCEDURE SEMPLICI C O M P.Q U A PER QUADRATO RIPETI 4 [A 30 D 90] FINE PER PIZZ08 RIPETI 8 [NOVE.QUADRATI D 45] FINE Sottoprocedura fondamentale Come la precedente. PER FILA.QUADRATI RIPETI 3 [QUADRATO D 90 A 30 S 90] FINE PER TORRE.QUADRATI S 90 FILA.QUADRATI FINE Contiene una chiamata di primo livello della sottoprocedura fondamentale. Contiene una chiamata di secondo livello. PER FILASIN.QUADRATI S 90 RIPETI 3 [QUADRATO A 30] FINE PER TORRESIN.QUADRATI D 90 FILASIN. QUADRATI FINE Come sopra. Come sopra. PER FINESTRA RIPETI 4 [QUADRATO S 90] FINE PER TRENTASEI.QUADR RIPETI 4 [NOVE.QUADRATI D 90] FINE Come sopra. Contiene una chiamata di terzo livello PER NOVE.QUADRATI NT RIPETI 4 [FILA.QUADRATI S 90] FINE PER AVVIA SU S 90 A 155 D 90 I 125 GIU FINE Altra procedura fondamentale. Al secondo livello chiama la sottoprocedura "Fila.quadrati" che, a sua volta, chiama la sottoprocedura "Quadrato" PER PIZZO RIPETI 12 [NOVE.QUADRATI D 30] FINE PER QUA.QUA AVVIA RIPETI 4 [QUADRATO SU A 255 D 90 GIU] FINE Contiene una invocazione di terzo livello: chiama "Nove.quadrati", che chiama "Fila.quadrati" che, a sua volta, chiama "Quadrato" Contiene due chiamate al primo livello: una chiama la procedura fondamentale "Avvia" e l'altra chiama la procedura fondamentale "Quadrato". pag. 156 Manuale Logo C O M P. T R I PER TRI RIPETI 3 [A 30 D 120] FINE Sottoprocedura fondamentale PER DENT.TRI S 90 RIPETI 3 [TORRE1.TRI S 120] FINE Con chiamata di terzo livello. PER FILA.TRI S 90 RIPETI 3 [TRI A 30] FINE Con chiamata di primo livello. PER TORRE3.TRI TORRE2.TRI A 15 D 90 A 30 FINE Come sopra. PER FILADES.TRI D 30 RIPETI 4 [TRI D 60 A 30 S 60] FINE PER VETRATA.TRI RIPETI 3 [FILA.TRI D 210] FINE Come sopra . Con chiamata di secondo livello. PER TORRE1.TRI D 90 FILA.TRI FINE PER DENT3.TRI RIPETI 3 [DENT.TRI S 30] FINE Con chiamata di secondo livello. PER TORRE2.TRI D 90 FILA.TRI D60 A 30 D 120 D 90 FILA.TRI FINE Con doppia chiamata di secondo livello. PER TORRE4.TRI D 90 RIPETI 3 [TRI D 60 A 30 S 60 I 15] TRI FINE Con doppia chiamata di primo livello. Con chiamata di quarto livello. PER FILAVETRATA RIPETI 3 [VETRATA.TRI S 90 A 90 D 90] FINE Con chiamata di terzo livello. PER SPOSTAMENTO SU I 116 D 90 A 120 S 90 GIU NT FINE Procedura fondamentale. PER GRAN.TRI SPOSTAMENTO RIPETI 3 [FILAVETRATA D 120] SU TANA GIU FINE Con duplice chiamata: una di primo livello e l'altra di quarto livello. pag. 157 Allegato B: Archivi e procedure PUPAZZO AULA PER PUPAZZO CORPO GAMBE BRACCIA TESTA FINE PER AULA SU I 70 GIU FILA.BANCHI RIPETI 2 [RITORNO FILA.BANCHI] AS “INIZIO [AUTO] FINE PER CORPO A 30 I 30 FINE PER BANCO SEDIA SPOSTAMENTO TAVOLO FINE PER GAMBE GAMBASINISTRA GAMBADESTRA FINE PER GAMBADESTRA S 30 I 30 D 90 A 5 I 5 S 90 A 30 D 30 FINE PER GAMBASINISTRA D 30 I 30 S 90 A 5 I 5 D 90 A 30 S 30 FINE PER BRACCIA A 20 D 90 A 20 I 40 A 20 S 90 I 20 FINE PER TESTA A 30 S 90 A 5 RIPETI 3 [D 90 A 10] D 90 A 5 TANA NT FINE PER FILA.BANCHI PAVIMENTO RIPETI 5 [BANCO SPOSTAMENTO] FINE PER PAVIMENTO D 90 A 150 I 300 S 90 FINE PER RITORNO SU S 90 A 150 D 90 A 70 GIU FINE PER SEDIA A 40 I 20 D 90 A 16 D 90 A 20 FINE PER SPOSTAMENTO S 90 A 10 S 90 FINE PER TAVOLO A 30 D 90 A 25 D 90 A 30 FINE pag. 158 Manuale Logo ESTATE PER ESTATE ASSFONDO 15 ASCOL 2 CAMPODIGRANO SU S 40 A 80 GIU SOLE SU TANA GIU FINE PER CAMPODIGRANO SU S 90 A 150 D 90 GIU RIPETI 19 [SPIGA SEMINARE] S 90 A 310 TANA NT FINE PER SPIGA A 20 RIPETI 4 [SPIGHETTA A 5] I 40 FINE BANDIERA PER BANDIERA ASTA DRAPPO ROSSO VERDE FINE PER ASTA ASSFONDO 15 ASCOL 1 A 80 FINE PER DRAPPO D 90 A 60 D 90 A 40 D 90 A 60 I 20 D 90 A 40 I 40 S 90 I 20 D 90 A 40 I 40 SU TANA GIU FINE PER ROSSO SU VAXY [10 50] GIU ASCOL 2 RIEMPI FINE PER VERDE SU VAXY [50 50] GIU ASCOL 1 RIEMPI SU TANA GIU FINE PER SPIGHETTA D 45 A 8 I 8 S 90 A 8 I 8 D 45 FINE AUTO PER SEMINARE D 90 SU A 16 GIU S 90 FINE PER SOLE RIPETI 10 [ARCO RAGGIO] SU D 90 A 20 ASCOL 2 RIEMPI FINE PER ARCO RIPETI 12 [A 1 D 3] FINE PER RAGGIO SU S 90 A 5 GIU A 20 SU I 25 D 90 GIU FINE PER AUTO SU VAX -70 GIU ASSFONDO 15 ASCOL 6 A 30 SCATOLA A 10 D 90 A 50 SU A 10 S 90 GIU RETTANGOLO SU S 90 A 10 GIU D 90 A 50 D 90 A 80 D 90 A 80 SCATOLA A 10 D 90 A 35 CERCHIO A 60 CERCHIO A 35 TANA SU A 10 ASCOL 3 RIEMPI VATANA GIU FINE PER CERCHIO RIPETI 72 [A 1.5 S 5] FINE PER RETTANGOLO RIPETI 2 [A 40 D 90 A 60 D 90] FINE PER SCATOLA RIPETI 4 [S 90 A 10] FINE pag. 159 Allegato B: Archivi e procedure PROCEDURE E SOTTOPROCEDURE CON VARIABILI F I G U R E. 1 PER DECAGONO :L RIPETI 10 [A :L D 360 / 10] FINE PER ESAGONO :L RIPETI 6 [A :L D 360 / 6] FINE PER FIGURA :L RIPETI 8 [QUADRATO :L D 45] RIPETI 6 [ROMBO :L D 60] FINE PER FINESTRA :L RIPETI 4 [QUADRATO :L S 90] FINE PER QUADRATO :L RIPETI 4 [A :L D 90] FINE PER QUINQUA :L RIPETI 4 [RIPETI 4 [A :L D 90] D 90 A :L] FINE PER RETTANGOLO :L RIPETI 2 [A :L D 90 A (:L * 3) D 90] FINE PER ROMBO :L RIPETI 2 [A :L D 60 A :L D 120] FINE PER STELLA :L FINESTRA :L D 45 FINESTRA :L S 45 FINE PER TRIANGOLO :L RIPET I 3 [A :L D 120] FINE F I G U R E. 2 PER CINQUE :L RIPETI 5 [QUADRILATERO :L D 360 / 5] FINE PER CRISANTEMO :L RIPETI 36 [QUADRILATERO :L D 360 / 36] FINE PER ELICA :L RIPETI 2 [QUADRILATERO :L D 180] FINE PER FARFALLA :L RIPETI 3 [QUADRILATERO :L D 120] FINE PER FIORE :L RIPETI 18 [QUADRILATERO :L D 360 / 18] FINE PER FIORELLINO :L RIPETI 9 [QUADRILATERO :L D 360 / 9] FINE PER GIRANDOLA :L RIPETI 4 [QUADRILATERO :L D 90] FINE PER MARGHERITA :L RIPETI 12 [QUADRILATERO :L D 360 / 12] FINE PER QUADRILATERO :L RIPETI 2 [A :L D 30 A :L D 150] FINE PER SOLE :L RIPETI 72 [QUADRILATERO :L D 360 / 72] FINE PER SUPERGIRANDOLA :L RIPETI 6 [QUADRILATERO :L D 360 / 6] FINE PER TANTIDISEGNI :L :VOLTE RIPETI :VOLTE [QUADRILATERO :L D 360 / :VOLTE] FINE pag. 160 Manuale Logo CERCHI PER CERCHIO :RAGGIO LOCALE “LATO AS “LATO 2 * :RAGGIO * 3.1416 / 60 RIPETI 60 [A :LATO D 360/60] FINE PER CERCHIO.C :RAGGIO LOCALE “NL AS “NL 2 * :RAGGIO * 3.1416 / 60 SU S 90 A :RAGGIO D 90 GIU RIPETI 60 [A :NL D 360/60] SU D 90 A :RAGGIO S 90 GIU FINE PER ESAGONO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU S 90 A :RAGGIO D 120 GIU RIPETI 6 [A :RAGGIO D 60] SU TANA GIU FINE PER QUADRATO.CIRCOSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU S 90 A :RAGGIO D 90 A :RAGGIO GIU RIPETI 4 [D 90 A (:RAGGIO * 2)] SU TANA GIU FINE PER QUADRATO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU S 90 A :RAGGIO D 135 GIU RIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) + (:RAGGIO * :RAGGIO)) D 90] SU TANA GIU FINE PER TRIANGOLO.CIRCOSCRITTO : RAGGIO CERCHIO.C :RAGGIO SU A :RAGGIO * 2 D 150 GIU RIPETI 3 [A (2 * RADQ (4 * :RAGGIO * :RAGGIO) - (:RAGGIO * :RAGGIO)) D 120] SU TANA GIU FINE PER TRIANGOLO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU S 90 A :RAGGIO D 150 GIU RIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO) - (:RAGGIO * :RAGGIO)) D 120] SU TANA GIU FINE F I G U R E. 3 PER MULTIPOLIGONO :N :L RIPETI :N [D (360 / :N) POLIGONO :L 40] FINE PER POLIGONO :N :L RIPETI :N [A :L D 360 / :N] FINE PER QUADRATO :L RIPETI 4 [A :L D 90] FINE PER RETTANGOLO :L1 :L2 RIPETI 2 [A :Ll D 90 A :L2 D 90] FINE PER RUOTAPOLIGONO :N :L RIPETI (360 / :L) [D :L POLIGONO :N 50] FINE PER TURBINA :L :N RIPETI :N [A (2 * :L) QUADRATO :L I (2 * :L) D 360 / :N] FINE PER VENTAGLIO :L1 :L2 :VOLTE SINISTRA :VOLTE * 5 RIPETI :VOLTE [RETTANGOLO :Ll :L2 D 10] TANA FINE pag. 161 Allegato B: Archivi e procedure PINOCCHI PER PINOCCHIO :L ASSCHERMO “TARTA SU I 50 GIU NT GAMBE TRONCO SPOST1 BRACCIO SPOST2 COLLO TESTA VISO NASO :L CAPPELLO SPOST3 FINE PER SPOST2 SU I 50 D 90 A 15 D 90 GIU FINE PER GAMBE GAMBA A 25 S 90 GAMBA FINE PER TESTA A 10 S 90 A 10 D 90 RETTANGOLO 35 35 FINE PER COLLO RETTANGOLO 10 15 FINE PER GAMBA S 180 RETTANGOLO 50 10 A 60 D 90 RETTANGOLO 20 10 D 90 A 60 D 90 FINE PER VISO A 10 S 90 I 15 A 15 D 90 A 15 S 90 SU I 10 GIU I 5 A 10 I 5 D 90 I 5 A 10 I 5 S 90 SU A 10 GIU D 90 I 10 FINE PER RETTANGOLO :L1 :L2 RIPETI 2 [A :L1 D 90 A :L2 D 90] FINE PER NASO :L LOCALE “ALFA LOCALE “IPOTENUSA AS “ALFA ARCTAN :L / 20 AS “IPOTENUSA RADQ (:L * :L + 20 * 20) S 90 A :L D (90 + :ALFA) A :IPOTENUSA D (180 - :ALFA) A 20 D 180 FINE PER TRONCO I 40 S 90 RETTANGOLO 80 45 FINE PER SPOST1 A 70 D 90 SU A 30 D 90 FINE PER CAPPELLO A 20 D 90 I 5 S 60 RIPETI 3 [A 45 D 120] FINE PER BRACCIO GIU RETTANGOLO 40 10 A 40 RETTANGOLO 10 10 FINE PER SPOST3 SU TANA GIU FINE SORPRESE PER RUOTACOLORI ASSFONDO 0 RIPETI 15 [ASPETTA 50 ASSFONDO SFONDO + 1] FINE PER SORPRESA :PASSO :INCR SE :PASSO > 80 [STOP] A :PASSO D 90 SORPRESA (:PASSO + :INCR) :INCR I :PASSO S 90 FINE pag. 162 Manuale Logo VEDUTA PER VEDUTA ASSCHERMO “TARTA ASSFONDO 14 ASCOL 9 TERRENO PS TERRENO ASCOL 7 CASA 30 SU S 90 A 90 D 90 GIU ASCOL 6 ALBERO 60 SU D 70 A 125 GIU ASCOL 2 SOLE SU TANA NT GIU FINE PER RETTANGOLO :LATO1 :LATO2 RIPETI 2 [A :LATO1 D 90 A :LATO2 D 90] FINE PER TERRENO SU I 100 D 90 GIU A 150 I 300 A 150 S 90 FINE PER TETTO :MISURA TRIANGOLO :MISURA * 3 FINE PER CASA :MISURA FACCIATA :MISURA A :MISURA * 3 D 30 TETTO :MISURA S 30 I :MISURA * 3 FINE PER FACCIATA :MISURA MURA MISURA D 90 A :MISURA / 3 S 90 PORTONE :MISURA SU D 90 A :MISURA * 2 S 90 A :MISURA * 1.5 GIU FINESTRA :MISURA SU I :MISURA * 1.5 S 90 A :MISURA * 2 + :MISURA / 3 D 90 GIU FINE PER FINESTRA :MISURA RIPETI 4 [QUADRATO :MISURA / 2 D 90] FINE PER TRIANGOLO :MISURA RIPETI 3 [A :MISURA D 120] FINE PER ALBERO :MISURA RETTANGOLO :MISURA :MISURA / 8 A :MISURA S 90 A :MISURA / 16 * 3 D 40 POLIGONO 8 :MISURA / 2 FINE PER POLIGONO :N.LATI :DIST RIPETI :N.LATI [A :DIST D 360 / :N.LATI] FINE PER MURA :MISURA QUADRATO :MISURA * 3 FINE PER SOLE RIPETI 10 [ARCO RAGGIO] FINE PER QUADRATO :LATO RIPETI 4 [A :LATO D 90] FINE PER ARCO RIPETI 12 [A 1 D 3] FINE PER PORTONE :MISURA RETTANGOLO :MISURA * 2 :MISURA FINE PER RAGGIO SU S 90 A 5 GIU A 20 SU I 25 D 90 GIU FINE TERRENO FACCIATA CASA TETTO VEDUTA MURA QUADRATO PORTONE RETTANGOLO FINESTRA QUADRATO TRIANGOLO RETTANGOLO ALBERO POLIGONO ARCO SOLE RAGGIO STRUTTURA DELLA PROCEDURA "VEDUTA pag. 163 Allegato B: Archivi e procedure PROCEDURE CON ISTRUZIONE CONDIZIONALE E RICORSIVITÀ. QUADR_2 PER QUADR :LATO RIPETI 4 [A :LATO D 90] FINE PER QQ1 :LATO SE :LATO < 5 [STOP] RIPETI 4 [A :LATO QQl :LATO / 2 D 90] FINE Sottoprocedura fondamentale con una variabile denominata:lato Procedura con una variabile, una istruzione condizionale (se verifichi questa condizione, fermati) e una chiamata ricorsiva (nella terza riga la procedura chiama se stessa). PER QQ2 :LATO SE :LATO < 5 [STOP] RIPETI 4 [A :LATO D 90] QQ2 :LATO / 2 FINE Come sopra PER TANTIQUADR :VOLTE SE :VOLTE = 0 [ST0P] QUADR 50 D 45 TANTIQUADR :VOLTE - 1 FINE Procedura complessa: contiene una variabile, una istruzione condizionale, chiama la sottoprocedura "Quadr" e include anche una chiamata ricorsiva (nella quarta riga). PER QUADRATI.CRESCENTI :LATO SE :LATO = 130 [STOP] QUADR :LATO QUADRATI.CRESCENTI :LATO + 10 FINE Come sopra PER QUADRATI.CONCENTRICI :LATO SE :LATO = 150 [STOP] QUADR :LATO SU S 90 A 5 D 90 I 5 GIU QUADRATI.CONCENTRICI :LATO + 10 FINE Come sopra PER TANTIQUADRATI :VOLTE :LATO SE :VOLTE < 1 [STOP] QUADR :LATO D :VOLTE * 4 TANTIQUADRATI :VOLTE - 1 :LATO FINE Procedura complessa: contiene ben due variabili, una istruzione condizionale, chiama la sottoprocedura "Quadr" e include anche una chiamata ricorsiva (nella quinta riga). PER QUADR.CRESC :LATO VAXY [-65 -65] QUADRATI.CONCENTRICI :LATO FINE Procedura molto complessa. Chiama, al secondo livello, la procedura ricorsiva "Quadrati.concentrici" che, a sua volta, nel proprio interno, chiama la procedura fondamentale "Quadr". pag. 164 Manuale Logo OROLOGIO PER CRONOMETRO QUADRANTE LANCETTA FINE PER QUADRANTE LOCALE “ORA AS “ORA 0 RIPETI 12 [ORE :ORA AS “ORA :ORA + 1] FINE PER LANCETTA GIU ASCOL 1 A 50 ASPETTA 10 CANCEPENNA I 50 DESTRA 360 / 225 LANCETTA FINE PER ORE :0 SU D :0 *30 A 40 GIU A 3 0 SU TANA GIU FINE ARIANNA PER ARIANNA PS PT PREPARA MUOVI FINE PER MUOVI AS “M LC SE NON ELE? :M [A D S I F] [MUOVI] SE :M = “A [A 10] SE :M = “D [D 10] SE :M = “S [S 10] SE :M = “I [I 10] SE :M = “F [STOP] MUOVI FINE PER PREPARA SU AS “P LC SE NON ELE? :P [A 5 D I V] [PREPARA] SE :P = “A [A 10] SE :P = “D [D 10] SE :P = “S [Sw 10] SE :P = “I [I 10] SE :P = “V [GIU STOP] PREPARA FINE ALBERI PER ALBERO.NATALE :L SU I 100 GIU TRONCO :L A :L CHIOMA :L SU TANA GIU NT FINE PER ALBERO1 :LUNGH :BIFORC SE :BIFORC = 0 [STOP] D 45 A :LUNGH ALBERO1 :LUNGH :BIFORC - 1 I :LUNGH S 90 A :LUNGH ALBERO2 :LUNGH :BIFORC - 1 I :LUNGH D 45 FINE PER ALBERO2 :LUNGH SE :LUNGH < 5 [STOP] D 45 A :LUNGH ALBERO2 :LUNGH / 2 I :LUNGH S 90 A :LUNGH ALBERO2 :LUNGH / 2 I :LUNGH D 45 FINE PER CHIOMA :L S 90 RAMIS :L D 120 RAMID :L S 90 FINE PER RAMID :L A 2 * :L / 3 D 120 A :L / 4 S 120 A :L D 120 A :L / 2 S 120 A 2 * :L D 120 A :L FINE PER RAMIS :L A :L D 120 A 2 * :L S 120 A :L / 2 D 120 A :L S 120 A :L / 4 D 120 A 2 * :L / 3 FINE PER TRONCO :L RIPETI 2 [A :L D 90 A :L / 4 D 90] FINE pag. 165 Allegato B: Archivi e procedure CAMPOFIO ANGOLO PER ANGOLO PS PT PREPARA SEGMENTO RUOTARE LATO SEGMENTO FINE PER BOCCIOLO RIPETI 2 [PETALO D 120] FINE PER LATO PT ST [VERSO QUALE LATO? D / S] AS “LATO LC SE NON ELE? :LATO [D S] [LATO] SE :LATO = “D [D :G] SE :LATO = “S [S :G] FINE PER PREPARA SU AS “P LC SE NON ELE? :P [A S D I V] [PREPARA] SE :P = “A [A 10] SE :P = “S [S 10] SE :P = “D [D 10] SE :P = “I [I 10] SE :P = “V [GIU STOP] PREPARA FINE PER CAMPOFIORITO RIPETI 10 [SU I 50 GIU NT STELO 50 + ACASO 50 PIANTARE SU A 50 GIU] SU TANA GIU FINE PER FIORE RIPETI 8 [PETALO D 90] FINE PER PETALO RIPETI 45 [A 1 D 1] D 135 RIPETI 45 [A 1 D 1] FINE PER PIANTARE SU D 90 A 30 GIU S 90 FINE PER RUOTARE PT ST [DI QUANTI GRADI ?] AS “G LP SE NON NUMERO? :G [RUOTARE] FINE PER STELO :ALTEZZA A :ALTEZZA SE :ALTEZZA > 80 [FIORE] [BOCCIOLO] ASDIR 0 I :ALTEZZA FINE PER SEGMENTO GIU A 100 SU I 100 GIU FINE DIST.POS PER DIST.TANA RIPORTA RADQ SOMMA XCOR * XCOR YCOR * YCOR ¼?’RIPORTA RADQ SOMMA XCOR * XCOR YCOR * YCOR FINE PER DISTANZA :POSl :P052 RIPORTA RADQ SOMMA QUADRATO (PRI :POS1) - (PRI :POS2) QUADRATO (ULT :POS1) (ULT POS2) FINE PER QUADRATO :NUM RIPORTA :NUM * :NUM FINE PER RIF_POS D 10 * ACASO 36 A 10 * ACASO 10 ST DOVE ASPETTA 100 RIF_POS FINE pag. 166 Manuale Logo CASACRE.CRE PER CASA :L PARETE :L SPO5T :L TETTO :L FINE PER CASACRESCE :L CASA :L SE :L > 60 [STOP] PARTAVAN :L CASACRESCE (:L + 10) FINE PER DIMMI ST [DIGITA SU I 70 S 90 A 140 D 90 GIU CASACRESCE 30] FINE PER PARETE :L RIPETI 4 [A :L D 90] FINE PER PARETECRESCE :L PARETE :L PARETECRESCE (:L + 10) FINE PER PARTAVAN :L SU D 90 A (:L + 10) S 90 GIU FINE PER PARTAVANCRESCE :L PARTAVAN :L PARTAVANCRESCE (:L + 10) FINE PER SPOST :L A :L D 30 FINE PER SPOSTCRESCE :L SPOST :L SPOSTCRESCE (:L + 10) PER TETTO :L RIPETI 3 [A :L D 120] S 30 I :L FINE PER TETTOCRESCE :L TETTO :L TETTOCRESCE (:L + 10) FINE DIREZ PER DIR.OB VERSI.POSSIBILI AS “VERSO LC SE NON ELE? :VERSO [1 2 3 4] [DIR.OB] LUNGHEZZA SE :VERSO = “1 [AS “DIR ACASO 90 ASDIR - :DIR A :PASSI] SE :VERSO = “2 [ASDIR ACASO 90 A :PASSI] SE :VERSO = “3 [AS “DIR ACASO 90 ASDIR :DIR + 180 A :PASSI] SE :VERSO = “4 [AS “DIR ACASO 90 ASDIR 180 - :DIR A :PASSI] FINE PER DIR.OR PT ST [SCEGLI IL VERSO : ] ST [1 = DA DESTRA A SINISTRA] ST [2 = DA SINISTRA A DESTRA] AS “VERSO LC SE NON ELE? :VERSO [1 2] [DIR.OR] SE :VERSO = “1 [ASDIR -90] SE :VERSO = “2 [ASDIR 90] LUNGHEZZA GIU A :PASSI FINE PER DIR.VE PT ST [SCEGLI IL VERSO : ] ST [1 = DAL BASSO IN ALTO] ST [2 = DALL’ALTO IN BASSO] AS “VERSO LC SE NON ELE? :VERSO [1 2] [DIR.VE] SE :VERSO = “1 [ASDIR 0] SE :VERSO = “2 [ASDIR 180] LUNGHEZZA GIU A :PASSI FINE PER DIREZ PT ST [SCEGLI LA DIREZIONE : ] ST [1 = ORIZZONTALE] ST [2 = VERTICALE] ST [3 = OBLIQUA] AS “D LC SE NON ELE? :D [1 2 3] [DIREZ] SE :D = “1 [DIR.OR] SE :D = “2 [DIR.VE] SE :D = “3 [DIR.OB] FINE pag. 167 Allegato B: Archivi e procedure MURO PER DISEGNA.IL.MURO SE CAMPO = “CHIUSO [DISEGNA.MURO] FINE PER DISEGNA.MURO LOCALE “CONDIZIONE. PRECEDENTE AS “CONDIZIONE.PRECEDENTE (LISTA DOVE PENNA DIR) SU VAXY [-159 116] ASDIR 90 GIU RIPETI 2 [A 318 D 90 A 232 D 90] SU VAXY PRI :CONDIZIONE.PRECEDENTE ASPENNA ULT MENULT :CONDIZIONE.PRECEDENTE ASDIR ULT :CONDIZIONE.PRECEDENTE FINE RAGNATEL.A SPIRALI PER POLIALTERNO :L :ANG A :L D :ANG SE DIR = 0 [STOP] POLIALTERNO :ANG :L FINE PER POLIGONALE :LATO :ANG LOCALE “PARTENZA AS “PARTENZA DIR A :LATO D :ANG SE DIR = :PARTENZA [STOP] POLIGONALE :LATO :ANG FINE PER SPIRALI :L :ANG A :L D :ANG SE :L > 100 [STOP] SPIRALI (:L + 5) :ANG FINE PER SPIRASEG :L :ANG A :L D :ANG SE :L > 80 [STOP] SPIRASEG (:L + 5) :ANG FINE PER RAGNATELA :LATO TELA :LATO RAGNO FINE PER SPIRIDUZ :L :ANG :RID SE :L < 5 LSTOP] A :L D :ANG SPIRIDUZ (:L - :RID) :ANG :RID FINE PER RAGNO MT ASCOL 3 D 30 RIPETI 4 [ZAMPAD I 20 S 90 I 30 D 15] S 120 RIPETI 4 [ZAMPAS I 20 D 90 I 30 S 15] D 90 ASCOL 2 FINE PER SPIRVAR :L :ANG :INCR A :L D :ANG SE :L > 100 [STOP] SPIRVAR (:L + :INCR) :ANG :INCR FINE PER TELA :LATO SE LATO > 100 [STOP] NT RIPETI 6 [TRIANGOLOB :LATO D 60] TELA LATO + 10 FINE PER TRIANGOLOB :LATO RIPETI 3 [A :LATO D 120] FINE PER ZAMPAD A 30 D 90 A 20 FINE PER ZAMPAS A 30 S 90 A 20 FINE PER VOLUTA :L :ANG A :L D :ANG SE :ANG > 100 [STOP] VOLUTA :L (:ANG + 10) FINE PER VOLUTAVAR :L :ANG :INCR A :L D :ANG SE :ANG > 100 (STOP] VOLUTAVAR :L (:ANG + :INCR) :INCR FINE pag. 168 Manuale Logo ARCHIVI DI MATEMATICA CERCHI PER CERCHIO :RAGGIO LOCALE "LATO AS "LATO :RAGGIO * 2 * 3.1416 / 60 RIPETI 60 [A :LATO D 360 / 60] FINE PER TUNNEL NT CERCHIO 20 CERCHIO 40 CERCHIO 60 CERCHIO 80 CERCHIO 100 MT FINE PER ARCO.90 :RAGGIO LOCALE "LATO AS "LATO :RAGGIO * 2 * 3.1416 / 60 RIPETI 60/4 [A :LATO D 360 / 60] FINE PER PETALO :RAGGIO RIPETI 2 [ARCO.90 :RAGGIO D 90] FINE PER FIORE :RAGGIO RIPETI 5 [PETALO :RAGGIO D 360 / 5] FINE PER CERCHIO.C :RAGGIO LOCALE "LATO AS "LATO :RAGGIO * 2 * 3.1416 / 60 SU S 90 A :RAGGIO D 90 GIU RIPETI 60 [A :LATO D 360/60] SU D 90 A :RAGGIO S 90 GIU FINE PER BERSAGLIO CERCHIO.C 20 CERCHIO.C 40 CERCHIO.C 60 CERCHIO.C 80 CERCHIO.C 100 FINE PER TRIANGOLO. CIRCOSCRITTO : RAGGIO CERCHIO.C :RAGGIO SU A :RAGGIO * 2 D 150 GIU RIPETI 3 [A (2 * RADQ (4 * :RAGGIO * :RAGGIO) - (:RAGGIO * :RAGGIO)) D 120] SU TANA GIU FINE PER TRIANGOLO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 150 GIU RIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO) - (:RAGGIO * :RAGGIO)) D 120] SU TANA GIU FINE PER QUADRATO.CIRCOSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 90 A :RAGGIO GIU RIPETI 4 [D 90 A (:RAGGIO * 2)] SU TANA GIU FINE PER QUADRATO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A RAGGIO D 135 GIU RIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) + (:RAGGIO * :RAGGIO)) D 90] SU TANA GIU FINE PER ESAGONO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 120 GIU RIPETI 6 [A RAGGIO D 60] SU TANA GIU FINE pag. 169 Allegato B: Archivi e procedure CALCOLI CONICHE PER ADDIZIONI ASMODO 1 PT AS “A ACASO 20 AS “B ACASO 20 (STAMPA [QUAL E’ LA SOMMA DI] :A “+ :B) AS “RISULT LP VERIFICA :RISULT = SOMMA :A :B SEV [STAMPA [RISPOSTA ESATTA]] SEF [STAMPA FRASE [RISPOSTA SBAGLIATA. LA SOMMA E’] SOMMA :A :B] FINE PER ABS :X SE :X < O [RIPORTA - :X] [RIPORTA :X] FINE PER TABELLINE ASMODO 1 STAMPA [ ] STAMPA [ ] AS “A ACASO 10 + 1 AS “B ACASO 10 + 1 (STAMPA [QUANTO FA] :A “PER :B) AS “RISULT LP VERIFICA :RISULT = PRODOTTO :A :B SEV [STAMPA [RISPOSTA ESATTA]] SEF [STAMPA FRASE [RISPOSTA SBAGLIATA. RISPOSTA GIUSTA] PRODOTTO :A :B] TABELLINE FINE PER GRAFICO.P :X :A LOCALE “Y AS “Y ( :X * :X) / (4 * :A) SE OPPURE ( :Y > 124) ( :Y < -124) [STOP] VAXY FRASE :X :Y GIU GRAFICO.P :X + 5 :A FINE PER ASSI NT ASSFONDO 1 ASCOL 2 VAXY [155 0] TANA VAXY [-155 O] TANA VAXY [0 125] TANA VAXY [0 -125] TANA ASCOL 6 FINE PER PARABOLA :A ASSCHERMO “TARTA ASSI SU GRAFICO.P (- RADQ (118 * 4 * ABS :A)) :A ASPETTA 100 ASSCHERMO “MISTO ST [PARABOLA DI EQUAZIONE : ] FUN_TRIG PER CERCHIO :RAGGIO AS ‘NL 2 * :RAGGIO * 3.1416 / 60 SU S 90 A :RAGGIO D 90 GIU RIPETI 60 [A :NL D 360/60] SU D 90 A :RAGGIO S 90 GIU FINE PER COSECANTE :ANG ST QUOZIENTE 1 SEN :ANG FINE PER COSENO :ANG CERCHIO 100 ASDIR 90 A 100 I 100 S :ANG A 100 RIPORTA XCOR / 100 FINE PER COTANGENTE :ANG ST QUOZIENTE COS :ANG SEN :ANG FINE PER SECANTE :ANG ST QUOZIENTE 1 COS :ANG FINE PER SENO :ANG CERCHIO 100 ASDIR 90 A 100 I 100 S :ANG A 100 RIPORTA YCOR ,/ 100 FINE PER TANGENTE :ANG ST QUOZIENTE SEN :ANG COS :ANG FINE pag. 170 Manuale Logo CONNETTI.VI PER CONNETTIVO.E PT LOCALE “X LOCALE “Y LOCALE “Z AS “X ACASO 100 AS “Y ACASO 100 AS “Z ACASO 100 STAMPA (FRASE :X “< :Y [\ E (= AND)] :Y “< :Z) ST [ ] SE AMB :X <:Y :Y < :Z [STAMPA “VERO] [STAMPA “FALSO] ST [ ] ST [ ] ST [DUE RELAZIONI,] ST [UNITE CON LA CONGIUNZIONE “E “,] ST [DANNO “VERO “, SOLTANTO QUANDO] ST [TUTTE E DUE RISULTANO VERE] FINE PER CONNETTIVO . NON PT LOCALE “X LOCALE “Y AS “X ACASO 100 AS “Y ACASO 100 ST (FRASE :X [NON < (= NON MINORE DI)] :Y) ST [ ] VERIFICA :X < :Y SEV [ST “FALSO] SEF [ST “VERO] ST [ ] ST [UNA RELAZIONE.] ST [(IN QUESTO CASO E’ LA RELAZIONE “MINORE DI “)] ST [NEGATA CON IL CONNETTIVO “NON “,] ST [RISULTA VERA QUANDO E’ FALSA.] ST [MENTRE RISULTA FALSA QUANDO E’ > VERA.] FINE PER CONNETTIVO.O PT LOCALE “X LOCALE “Y LOCALE “Z AS “X ACASO 100 AS “Y ACASO 100 AS “Z ACASO 100 STAMPA (FRASE :X “< :Y [\ O (= OR)] :Y “< :Z) ST [ ] VERIFICA OPPURE ( :X < :Y) ( :Y < :Z) SEV [STAMPA “VERO] SEF [STAMPA “FALSO] ST [ ] ST [ ] ST [DUE RELAZIONI,] ST [UNITE CON LA DISGIUNZIONE “O “ INCLUSIVA.] ST [DANNO “VERO “, QUANDO E’ VERA L’UNA.] ST [OPPURE QUANDO E’ VERA L’ALTRA.] ST [OPPURE QUANDO SONO VERE TUTTE E DUE.] ST [ ] ST [DANNO INVECE “FALSO “ SOLTANTO NEL CASO] ST [CHE TUTTE E DUE RISULTANO FALSE] FINE GRAF.RETTA PER ASSI NT ASSFONDO 1 ASCOL 2 VAXY [155 0] TANA VAXY [-155 0] TANA VAXY [0 125] TANA VAXY [0 -125] TANA ASCOL 6 FINE PER GRAFICO.RETTA1 :X SE :X = 180 [STOP] VAXY FRASE (:X - 100) ((:X + 25) - 100) GIU GRAFICO.RETTA1 :X + 1 FINE PER RETTA1 ASSCHERMO “TARTA ASSI SU GRAFICO.RETTA1 0 ASPETTA 100 ASSCHERMO “MISTO STAMPA [RETTA DI EQUAZIONE : = Y + 25] STAMPA [E’ RAPPRESENTATA NELL’INTERVALLO : ] STAMPA [DA (- 100, -75) A (100,125)] FINE X pag. 171 Allegato B: Archivi e procedure FUNZIONI PER CUBO :NUM RIPORTA :NUM * QUADRATO :NUM FINE PER ERONE :A :B :C AS “X :A + :B AS "Y :A + :C AS “Z :B + :C VERIFICA (OPPURE ( :X < :C) ( :Y < :B) ( :Z < A) SEV [RIPORTA FERMATI :A :B :C [CAMBIA I DATI]] SEF [RIPORTA PROSEGUI :A :B :C] FINE PER EUCLIDE :Nl :N2 SE :N1 = :N2 [RIPORTA :N1] SE :N1<:N2 [RIPORTA EUCLIDE :N2 :N1] [RIPORTA EUCLIDE (:N1 - :N2) :N2] FINE MCD_MCM PER MCD :A :B SE :A = :B [RIPORTA :A] SE :A < :B [RIPORTA MCD :B :A] [RIPORTA MCD (:A - :B) :B] FINE PER MCD1 :A :B VERIFICA :A > :B SEV [AS “A :A - :B] SEF [AS “B :B - A] ST FRASE :A :B SE :A = :B [RIPORTA :A] RIPORTA MCD1 :A :B FINE PER FATTORIALE :N SE :N = 1 [RIPORTA 1] [RIPORTA :N * FATTORIALE (:N - 1)] FINE PER MCD2 :LISTA SE 2 = CONTA :LISTA [RIPORTA MCD1 PRI :LISTA ULT :LISTA] AS “LISTA INPRI (MCD1 ELE 1 :LISTA ELE 2 :LISTA) MENPRI MENPRI :LISTA RIPORTA MCD2 :LISTA FINE PER FERMATI :A :B :C STAMPA [DATI SBAGLIATI] STAMPA [NON SI PUO’ DISEGNARE UN TRIANGOLO] STAMPA (FRASE [CON LATI DI LUNGHEZZA] :A :B :C) FINE PER MCDVELOX :A E SE :A - (:B * INT :A / :B) = 0 [RIPORTA :B] [RIPORTA MCDVELOX :B (:A - (:E * INT :A / :B))] FINE PER IPOTENUSA :CAT1 :CAT2 RIPORTA RADQ ((QUADRATO CAT1) + (QUADRATO :CAT2)) FINE PER OPPOSTO :NUM RIPORTA - ( :NUM) FINE PER PROSEGUI A :B :C AS “P ( :A + :B + :C) / 2 STAMPA [AREA DEL TRIANGOLO] STAMPA (FRASE [CON LATI DI] :A “, :B “, :C “: RIPORTA RADQ (:P * (:P - A) * (:P - :B) * (:P - :C))) FINE PER QUADRATO :NUM RIPORTA :NUM * :NUM FINE PER MCM :A :B VERIFICA :A > :B SEV [AS “MAGGIORE :A AS “INCREMENTO :A AS “MINORE :B] SEF [AS “MAGGIORE :B AS “INCREMENTO :B AS “MINORE :A] QUI “0 ST FRASE :MAGGIORE :MINORE VERIFICA (:MAGGIORE / :MINORE) = INT (:MAGGIORE / MINORE) SEV [ST FRASE [IL MCM E’] :MAGGIORE STOP] SEF [AS “MAGGIORE (:MAGGIORE + :INCREMENTO)] VAI “0 FINE PER MCM1 :A :B [RIPORTA (:A * :B) / MCD :A :B] FINE pag. 172 Manuale Logo HANOI PER HANOI :N :A :B :C ASMODO 2 PT VERIFICA :N = 1 SEV [SPOSTARE] SEF [RISOLUZIONE] FINE PER METTERE :L STAMPA (FRASE [METTERE IN] CAR 32 :L) FINE PER RISOLUZIONE RISOLVI (:N - 1) :A :C :B RISOLVI 1 :A :B :C RISOLVI (:N - 1) :C :B :A FINE PER SPIEGAZIONI ASMODO 2 STAMPA [ ] STAMPA [ATTIVARE LE PROCEDURE CON L’INVOCAZIONE : ] STAMPA [ ] STAMPA [HANOI 3 (OPPURE : 4, 5. .....) “A “B “C] FINE PER SPOSTARE TOGLIERE :A METTERE :B FINE PER TOGLIERE :L SCRIVI (FRASE [TOGLIERE DA] CAR 32 :L CAR 32) FINE PER RISOLVI :N :A :B :C VERIFICA :N = 1 SEV [SPOSTARE] SEF [RISOLUZIONE] FINE INDOVINA PER INDOVINA PT ST [ ] AS “TENT 0 AS “NUM 1 + ACASO 100 ST [HO SCELTO UN NUMERO DA 1 A 100] ST [ ] ST [CERCA DI INDOVINARLO E SCRIVILO SOTTO] ST [ ] ST [IO TI AIUTERO’ CON QUALCHE INDICAZIONE] ST [ ] GIOCO FINE PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI “NONNUMERO] RIPORTA :NUMERO FINE PER FINIRE PT ST [CIAO ... AL PROSSIMO INCONTRO!] [BREAK] FINE PER 0K ST [ ] ST [BRAVO! HAI INDOVINATO] ST [ ] ST FRASE [ERRORI COMMESSI] :TENTAT -1 [SCELTA] FINE PER GIOCO AS “TENT :TENT + 1 AS “IND LEGGINUMERO SE :NUM = :IND [0K] SE :NUM > :IND [ST [IL MIO NUMERO E’ MAGGIORE]] SE :NUM < :IND [ST [IL MIO NUMERO E’ MINORE]] GIOCO FINE PER SCELTA RIPETI 3 [ST [ ] ] ST [VUOI CONTINUARE? C / F] ST [ ] ST [C = CONTINUARE; F = FINIRE] AS “SCE LC SE NON ELE? :SCE [C F] [SCELTA] SE :SCE = “C [INDOVINA] SE :SCE = “F [FINIRE] FINE pag. 173 Allegato B: Archivi e procedure ISOMETRI.E PER ASSI.CARTES PS NT VAX 135 VAX -135 TANA A 125 I 250 TANA ASSCHERMO “TARTA MT FINE ASSCHERMO “MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE Y] ASPETTA 100 TRIANGOLO.4 FINE PER ROTAZIONE.A ASSI .CARTES TRIANGOLO.1 ASSCHERMO “MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE X] ASPETTA 100 TRIANGOLO.3 ST [SEGUITA DA] ST [SIMMETRIA RISPETTO ALL’ASSE DELLE Y] ASPETTA 100 TRIANGOLO.5 ST [EQUIVALE A ROTAZIONE] FINE PER TRASLAZIONE ASSI .CARTES TRIANGOLO.1 ASSCHERMO “MISTO NT ST [TRASLAZIONE DI PASSO P = (X + 150) (Y + 100)] ASPETTA 100 TRIANGOLO.2 FINE PER ROTAZIONE.B ASSI .CARTES TRIANGOLO.1 ASSCHERMO “MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE Y] ASPETTA 100 TRIANGOLO.4 ST [SEGUITA DA] ST [SIMMETRIA RISPETTO ALL’ASSE DELLE X] ASPETTA 100 TRIANGOLO.5 ST [EQUIVALE A ROTAZIONE] FINE PER SIMMETRIA.X ASSI .CARTES TRIANGOLO.1 ASSCHERMO “MISTO NT ST [SIMMETRIA RISPETTO ALL’ASSE DELLE X] ASPETTA 100 TRIANGOLO.3 FINE PER SIMMETRIA.Y ASSI .CARTES TRIANGOLO.1 PER TRIANGOLO.1 SU VAXY [-100 -50] GIU VAXY [-100 -20] VAXY [-30 -50] VAXY [-100 -50] FINE PER TRIANGOLO.2 SU VAXY [50 50] GIU VAXY [50 80] VAXY [120 50] VAXY [50 50] FINE PER TRIANGOLO.3 SU VAXY [-100 50] GIU VAXY [-100 20] VAXY [-30 50] VAXY [-100 50] FINE PER TRIANGOLO.4 SU VAXY [100 -50] GIU VAXY [100 -20] VAXY [30 -50] VAXY [100 -50] FINE PER TRIANGOLO.5 SU VAXY [100 50] GIU VAXY [100 20] VAXY [30 50] VAXY [100 50] FINE pag. 174 Manuale Logo PERIAREA PER PERIAREA PS PT NT ASCOL 1 + ACASO 3 ST [VUOI IL PERIMETRO O L’AREA? (P / A)] ST [ ] ST [PER FINIRE DIGITA F] SCELTA FINE PER AREA RIPETI 2 [A 70 D 90 A 90 D 90] D 5 SU A 10 GIU RIEMPi SU I 10 GIU S 5 FINE PER RETT RIPETI 2 [A 70 D 90 A 90 D 90] FINE PER SCELTA AS "SCE LC SE NON ELE? :SCE [P A F] [SCELTA] SE :SCE = "F [FINIRE] SE :SCE = "P [RETT MESSAGGIO] SE :SCE = "A [AREA MESSAGGIO] FINE PER MESSAGGIO SE :SCE = “P [PT ST [QUESTO E’ IL PERIMETRO]] SE :SCE = “A [PT ST [QUESTA E’ L’AREA]] ASPETTA 50 PERIAREA FINE PER FINIRE PT ST [CIAO ... ALLA PROSSIMA!!] [STOP] FINE AREAPERI PER AREAPERI PS PT NT AS “E 1 + ACASO 2 SE :E = 1 [RETT] SE :E = 2 [AREA] ST [CHE COSA E’, PERIMETRO O AREA?] ST [ ] ST [P = PERIMETRO; A = AREA; F = FINE] RISPOSTA FINE PER RISPOSTA AS "R LC SE NON ELE? :R [P A F] [RISPOSTA SE :R = "F [FINIRE] SE NON :R = "F [CONTROLLA AREAPERI] FINE PER CONTROLLA SE AMB (:R = "P) (:E = 1) [PT ST [ESATTO, BRAVO!]] SE AMB (:R = “A) (:E = 2) [PT ST [ESATTO, BRAVO!]] SE AMB (:R = “A) (:E = 1) [PT ST [SBAGLIATO, QUESTO E’ IL PERIMETRO]] SE AMB (:R = "P) (:E = 2) [PT ST [SBAGLIATO QUESTA E' L'AREA]] ASPETTA 100 FINE PER AREA RIPETI 2 [A 70 D 90 A 90 D 90] D 5 SU A 10 GIU RIEMPI SU I 10 GIU S 5 FINE PER RETT RIPETI 2 [A 70 D 90 A 90 D 90] FINE PER FINIRE PT ST [CIAO ... ALLA PROSSIMA!!] [STOP] FINE pag. 175 Allegato B: Archivi e procedure TABELLIN.E PER TABELLINE PT AS ‘1TENTAT 0 AS “X 1 + ACASO 10 AS “Y 1 + ACASO 10 (ST [QUANTO FA’] :X [PER] :Y [?]) CONTROLLA FINE PER DOMANDA (ST [QUANTO FA’] :X [PER] :Y [?]) CONTROLLA FINE PER CONTROLLA AS “TENTAT :TENTAT + 1 AS “RISP LEGGINUMERO SE :RISP = :X * :Y [0K] ST [ ] ST [ ] ST [HAI SBAGLIATO. TORNO A CHIEDERTI] ST [ ] DOMANDA FINE PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI “NONNUMERO] RIPORTA :NUMERO FINE PER 0K ST [ ] ST [BRAVO! HAI INDOVINATO] ST [ ] ST FRASE [ERRORI COMMESSI] :TENT - 1 [SCELTA] FINE PER FINIRE PT ST [CIAO ... AL PROSSIMO INCONTRO!] [BREAK] FINE PER SCELTA RIPETI 3 [ST [ ]] ST [VUOI CONTINUARE? C / F] ST [ ] ST [C = CONTINUARE; F = FINIRE] AS “SCE LC SE NON ELE? :SCE [C F] [SCELTA] SE :SCE = “C [TABELLINE] SE :SCE = “F [FINIRE] FINE pag. 176 Manuale Logo BIBLIOGRAFIA Abelson H., Disessa A., La geometria della Tartaruga, Muzzio Edit., Padova, 1986. Baldi E., Divizio M., Logo: potenza e semplicità, Gr. Ed. Jackson, Milano, 1984. Bergamini M., Frascaroli C., Termanini D., Informatica con il Logo, Zanichelli, Bologna, 1992 Bitter G. G., Watson N. R., Il Logo per l’Apple II, Tecniche Nuove, Milano, 1984. Ciancarini P., Io parlo Logo, Edicomp, Roma, 1985. Comune di Perugia, Assessorato ai servizi socio-educativi (a cura di P. Lollini), Supporti del computer all’educazione, Comune di Perugia, 1992. Lariccia G., Le radici dell’informatica, Sansoni, Firenze, 1981. Leone A, Moschini M., Con Logo insegno io, S. E. I., Torino, 1987. Lollini P., Didattica e computer, La Scuola, Brescia, 1985. Moller A., Programmare in Logo, J. C. E. , Milano, 1985. Novelli L., I fantastici mondi di Logo, Mondadori, Milano, 1985. Papert S., Mind storms: bambini, computers e cretività, Ediz. Emme, Milano, 1984. Pentiraro E., Computer è facile, Laterza, Bari, 1984. Reggini H. C., Logo, ali per la mente, Mondadori, Milano, 1984. Watt D., Il Logo per il Commodore 64, McGraw-Hill, Milano, 1986. pag. 177 Allegato B: Archivi e procedure INDICE PREFAZIONE ( 5 ) Il Logo nella didattica di base ( 5 ) ELEMENTI INTRODUTTIVI ( 9 ) Il sistema di elaborazione di dati ( 12 ) Scrivere con la tastiera LA TARTARUGA E LO SCHERMO ( 15 ) Entriamo nel mondo del Logo ( 15 ) La Tartaruga esplora lo schermo ( 16 ) Schiacciamento ( 21 Dai pixel alle linee ( 23 ) Il colore ( 23 ) Il Logo conosce l’aritmetica ( 24 ) Per uscire dal Logo ( 24 ) POLIGONI CON IL COMANDO RIPETI ( 25 ) Il comando Ripeti ( 25 ) Fregi realizzati con il comando Ripeti ( 26 ) Regola del giro completo ( 28 ) Giro completo attorno a un poligono ( 28 ) Importanza degli angoli esterni ( 29 ) Regola di calcolo per disegnare poligoni regolari ( 30 ) Cerchi e archi ( 30 ) Esercizi ( 33 ) LE “GEOMETRIE” DEL LOGO ( 35 ) Lo schermo grafico ( 35 ) Sistemi geometrici per la Tartaruga ( 36 ) Sistema di riferimento intrinseco ( 36 ) Sistema di riferimento cartesiano ( 37 ) Sistema di riferimento polare ( 39 ) LE PROCEDURE E IL FOGLIO ( 42 ) Primitive e procedure( 42 ) Come dare il nome a una procedura( 42 ) pag. 178 Manuale Logo Ambiente di edizione delle procedure ( 43 ) Esecuzione di procedure con la invocazione ( 45 ) Per correggere procedure c’è il foglio ( 45 ) Gestione del foglio ( 47 ) Procedure dentro altre procedure ( 47 ) Procedure per disegnare un campo di grano ( 49 ) Procedure per disegnare un pupazzo ( 50 ) Esempi di procedure e di sottoprocedure ( 51 ) Esercizi ( 52 ) SPAZIO DI LAVORO E ARCHIVI ( 53 ) Conservare e visualizzare procedure ( 53 ) Conservazione di una procedura ( 53 ) Visualizzazione di una procedura ( 55 ) Recuperare e cancellare procedure ( 56 ) Recupero di procedure ( 56 ) Cancellazione di procedure ( 57 ) PROCEDURE E VARIABILI ( 59 ) Che cosa è un argomento variabile ( 59 ) Argomento variabile e argomento attuale ( 60 ) Procedure a livello sempre più generale ( 61 ) Procedure con più argomenti variabili ( 62 ) Esempi di procedure con una o più variabili ( 64 ) Figure complesse con la procedura Quadrilatero ( 65 ) Nomi e valori delle variabili ( 66 ) Tre modi per definire variabili ( 67 ) Variabili globali ( 67 ) Variabili locali ( 68 ) TRATTAMENTO DEI NUMERI ( 71 ) Nei numeri il punto sostituisce la virgola ( 71 ) Le quattro operazioni nel Logo ( 72 ) Gerarchia delle operazioni ( 73 ) Operatori aritmetici (funzioni numeriche) ( 74 ) CERCHI E ARCHI DI RAGGIO VARIABILE ( 79 ) Allegato B: Archivi e procedure PROCEDURE RICORSIVE ( 83 ) Introduzione alla ricorsività ( 83 ) Procedure che non si fermano “mai” ( 83 ) Che cosa è la ricorsività ( 83 ) Come fermare una procedura ricorsiva ( 84 ) Esempi di procedure ricorsive ( 85 ) Ricorsività e variazione di argomenti ( 86 ) Variare argomenti in procedure ricorsive ( 86 ) Procedure con variazione di argomento ( 87 ) CREAZIONE E USO DI FUNZIONI ( 89 ) Le funzioni ( 89 ) Che cosa è una funzione ( 89 ) Funzioni create con l’istruzione Riporta ( 90 ) Procedure-funzioni ricorsive ( 92 ) Che cosa sono le procedure-funzioni ricorsive ( 92 ) L’algoritmo di Euclide per il MCD ( 93 ) Come funziona l’algoritmo di euclideo ( 93 ) Procedura Logo per l’algoritmo euclideo ( 94 ) Istruzioni condizionali (o, di controllo) ( 935 ) L’istruzione Se … ( 95 ) Diagramma di flusso ( 97 ) Calcolo del minimo comune multiplo ( 97 ) Altri esempi ( 98 ) L’istruzione Se … Altrimenti … ( 98 ) L’istruzione Verifica … Se_vero … Se_falso … ( 99 ) Procedure interattive ( 100 ) Procedure Perimetro e Area ( 101 ) Procedura Tabellone ( 103 ) Procedura Indovina ( 105 ) ISOMETRIE E FUNZIONI TRIGONOMETRICHE ( 107 ) Ricordiano la geometria cartesiana ( 107 ) Procedure per le isometrie del triangolo ( 108 ) Traslazioni ( 108 ) Simmetrie ( 109 ) Rotazioni ( 110 ) Ricordiamo la geometria polare ( 111 ) pag. 179 pag. 180 Manuale Logo Funzioni trigonometriche ( 112 ) LE LISTE E LE PAROLE ( 113 ) Le liste ( 113 ) Operazioni sulle liste ( 114 ) Come dare il nome a un lista ( 115 ) Che cosa si può ottenere da una lista ( 116 ) Come si può leggere una lista da tastiera ( 117 ) Liste di istruzioni ( 118 ) Le parole ( 118 ) Che cosa si può fare con le parole ( 118 ) GLOSSARIO M-LOGO - LOGO IBM ( 121 ) Comandi per la grafica ( 121 ) Numeri e operazioni ( 129 ) Parole e frasi ( 132 ) Procedure e variabili ( 136 ) Archivi e periferiche ( 140 ) Comandi di controllo ( 142 ) Altre primitive M-Logo non commentate ( 148 ) COMANDI LOGO IBM ( 149 ) ARCHIVI DI GRAFICA ( 155 ) Procedure e sottoprocedure semplici ( 155 ) Procedure e sottoprocedure con variabili ( 159 ) Procedure con istruzioni condizionali e ricorsività ( 163 ) ARCHIVI DI MATEMATICA ( 168 ) BIBLIOGRAFIA ( 176 ) INDICE ( 177 )