A L C E O S E L V I
M - L O G O
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 introduttivi 5 pag.
IL LOGO NELLA DIDATTICA DI BASE
I Programmi per la scuola primaria prescrivono, anche se sommessamen-te, 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 conseguentenecessità di trovare strade di accesso “soffice” alla programmazione di talimacchine.
È da precisare, intanto, che il computer può entrare nella scuola in duemodi abbastanza diversi, ciascuno corrispondente ad una diversa impostazionedidattica.
Può entrarvi come macchina per insegnare, ossia come semplice audiovi-sivo, anche se assai più potente di quelli attualmente in uso (videoregistra-tori, lavagne luminose, proiettori, ...). È l’utilizzazione più semplice e,forse, anche un po’ sorpassata, che non richiede un grande impegno aldocente, soprattutto se egli utilizza software prefabbricato, ossia program-mi didattici e videogiochi reperibili in commercio.
Può entrarvi, però, anche come strumento che metta il bambino incondizione di imparare ad imparare, obiettivo questo didatticamente assaipiù ambizioso. In tal caso, con l’aiuto dell’elaboratore si crea un particolareambiente di apprendimento, un laboratorio per imparare a organizzare ilpensiero, ossia luogo dove il bambino sviluppa e mette alla prova quellecapacità che gli occorrono per confrontarsi criticamente con la realtà.
In questa seconda prospettiva il Basic poco si presta ad esser presentatocome primo linguaggio informatico. La sua intrinseca semplicità, è di naturameccanica, non culturale. Questo significa che saper usare il Basic implicanecessariamente 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 programma-zione semplice, moderno, adatto all’uso scolastico elementare, in quantoideato appositamente per scopi didattici, e largamente applicabile su elabo-ratori di diverso tipo.
PREFAZIONE
1. Elementi introduttivi 6 pag.
Il Logo intende essere però assai di più: vuoI proporsi come strumentodocile e potente per facilitare l’applicazione delle metodiche per l’appren-dimento attivo, suggerite nei Programmi vigenti. Con il Logo un elaboratorediventa una sorta di laboratorio per imparare ad organizzare il pensiero.
La caratteristica più peculiare del Logo, che lo rende accessibile già abambini di cinque anni, è la possibilità offerta all’utente di colloquiare inmodo amichevole con un «animaletto »,la Tartaruga, «creatura» di formatriangolare che può «camminare» lungo lo schermo lasciando una traccialuminosa. Essa può essere definita anche oggetto-per-pensare, con cui ilbambino sviluppa la propria conoscenza in situazioni naturali, medianteattività 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 Tartarugacostituisce il repertorio grafico del linguaggio Logo, che, nella sua integrità,occorre sottolinearlo, non è un linguaggio adatto solo per far giocare ibambini, ma è uno dei linguaggi di programmazione tra i più evoluti epotenti.
La sfida eccitante che all’inizio si propone con Logo al bambino è quelladi imparare a muovere la Tartaruga per farle realizzare disegni e progettigrafici. Sul video il bambino ottiene così immagini suggestive, checoncretizzano i suoi progetti e che gli consentono di riflettere sul prodottodel proprio pensiero.
In seguito egli potrà essere sollecitato a far uso di un’altra notevolecaratteristica del Logo: il suo impianto procedurale. Questo, in pratica,consiste nella possibilità di risolvere un problema scomponendolo insottoproblemi, ciascuno dei quali viene risolto da procedure (ossia daprogrammi), distinte, a cui l’utente può assegnare un nome scelto a piacere.
Questa facoltà data al bambino di scomporre un problema complesso inproblemi semplici lo incoraggia anche ad estendere il linguaggio base,inventando nuove istruzioni «Tartaruga» e potenziando, in tal modo, leproprie capacità simboliche.
Va sottolineato che imparare ad usare gli elaboratori significa non tantoimparare un qualsiasi linguaggio di programmazione, quanto imparare adusare tale linguaggio per «insegnare al computer» come risolvere un proble-ma.
1. Elementi introduttivi 7 pag.
Per fare un paragone, stiamo qui parlando della stessa differenza che c’ètra l’imparare a leggere e scrivere e imparare ad esprimere mediante lascrittura proprie idee e pensieri.
Le prime esperienze in un ambiente di apprendimento basato su Logoavranno dunque non tanto l’obiettivo di far acquisire regole formali dicomunicazione uomo-macchina, quanto piuttosto perseguiranno lo scopo diallenare i bambini al pensiero logico e di sviluppare le loro personali capacitàdi organizzazione spaziale.
A proposito di organizzazione spaziale, non va sottovalutata la connes-sione esistente tra Logo e una disciplina di studio talvolta trascurata nellascuola di base: la geometria. L’approccio geometrico suggerito da Logo èpiù «naturale», sia rispetto a quello assiomatico della geometria euclidea, siarispetto a quello analitico della geometria cartesiana.
La geometria della Tartaruga è innanzitutto costruttiva: con il Logo ilbambino impara la geometria perché deve insegnarla alla Tartaruga parten-do dalle proprie esperienze spaziali. Questo semplice fatto apre vasti campidi 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 impli-ca l’impiego del Logo nella didattica. Con o senza elaboratore, se desideria-mo formare individui capaci di pensiero originale, per agevolare il progressodella società di domani, è evidente, allora, che una formazione intellettualefondata su una scoperta attiva della realtà appare superiore rispetto a quellache consiste semplicemente nel fornire ai giovani traguardi precostituiti daperseguire e verità predefinite in cui credere.
1. Elementi introduttivi 9 pag.
Figura 1
biancheriapulita
ENTRATA USCITA
lavatricebiancheriasporca
ELABORAZIONE
Per capire come funziona un elaboratore elettronico (o computer) con-frontalo con una macchina che, per qualche aspetto, gli somiglia: unalavatrice.
Come si può sintetizzare il lavoro che compie una lavatrice? In un primomomento la biancheria sporca viene introdotta insieme al detersivo, poiviene eseguito il lavaggio e alla fine viene estratta la biancheria pulita. Tuttoquesto procedimento è riassunto nello schema di Figura 1.
La lavatrice non compie sempre le stesse azioni, ma è possibile scegliereil programma più adatto per il tipo di biancheria che si vuole lavare. Unprogramma è una sequenza di istruzioni che dice alla lavatrice che cosa devefare (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 «trattazioneautomatica» della biancheria e la lavatrice può essere considerata come unesecutore automatico di programmi di lavaggio.
In generale possiamo pensare a un esecutore automatico come a unamacchina che esegue un insieme di azioni senza l’intervento dell’uomo. Percompiere il suo lavoro l''esecutore ha bisogno di un programma, ossia unalista di istruzioni scritte in un particolare linguaggio.
IL SISTEMA DI ELABORAZIONE DI DATI
ELEMENTI INTRODUTTIVI
1. Elementi introduttivi 10 pag.
Osserva ora le analogie che vi sono nel passare dalla «elaboratrice dibiancheria» all’elaboratore elettronico. In Figura 2 è riportato uno schemaanalogo al precedente.
Come la lavatrice è un esecutore che aiuta a risolvere il problema delbucato, il computer può essere visto come un esecutore che aiuta a risolverealtri tipi di problemi. Il computer riceve informazioni (dati iniziali), lielabora e fornisce altre informazioni come risultati (dati finali).
Anche in questo caso è indispensabile che qualcuno fornisca all’elabora-tore un programma, o più programmi, senza i quali il computer sarebbesoltanto un insieme di circuiti e di altri dispositivi inutilizzabili. Il computer,dopo aver acquisito i programmi necessari, può allora compiere da solo unaserie di operazioni in modo automatico.
Pian piano, lavorando con questi appunti, sarai in grado di realizzareprogrammi per risolvere particolari problemi e potrai quindi concepirel’elaboratore come una specie di servitore ai tuoi ordini. Attenzione però:il computer è molto veloce, ma sa compiere solo alcune azioni, ognuna dellequali corrisponde a un particolare comando, ossia a una parola scritta in unparticolare linguaggio che il tuo esecutore è in grado di comprendere. Lefrasi dentro le quali si scrivono i comandi si chiamano istruzioni. Eccoalcune istruzioni che chiedono al computer di eseguire lo stesso compito,ossia sottrarre 4 da 10, ma in linguaggi diversi:
STAMPA 10 - 4 linguaggio LOGOPRINT 10 - 4 linguaggio BASICWRITE (10 - 4) linguaggio PASCAL
Ogni riga rappresenta una istruzione, mentre STAMPA, PRINT e WRITEsono comandi.
Ciascuna delle tre fasi rappresentata nello schema della Figura 2 vienesvolta da una parte diversa del computer, che può essere pensato come unsistema, cioè come un insieme di dispositivi. Questi dispositivi sono:
USCITAENTRATA
dati iniziali dati finali
Figura 2
elaboratore+
programma
ELABORAZIONE
1. Elementi introduttivi 11 pag.
a) L'unità d’ingresso (o di input), che ha la funzione di ricevere leinformazioni 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. Unaparticolare parte dell’unità centrale, chiamata memoria, serve perregistrare sia i programmi, sia le informazioni.
c) L’unità di uscita (o di output), che ha la funzione di comunicareall’esterno i risultati.
Le unità d’ingresso e d’uscita vengono anche dette periferiche.
Nella Figura 3, riportata sotto, è schematizzato un sistema di elabora-zione di dati simile a quello che utilizzerai.
Come puoi ben vedere nella Figura stessa, sono quattro le componentifondamentali di questo sistema e sono: la tastiera, l'unità centrale, ilmonitor e l' unità a disco (drive).
La tastiera è un’unità d’ingresso in quanto con essa possiamo scriverealcune informazioni e farle ricevere dal computer. Il monitor è una unità diuscita: i risultati delle elaborazioni sono visualizzati mediante l’accensionedi puntini luminosi (pixel) sullo schermo. Il drive è un’unità sia d’ingressoche 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 idati che vi vengono inseriti con la tastiera.
Molto spesso i personal computer hanno due o più drive. Per sempli-cità noi penseremo sempre che tu abbia a disposizione un solo drive. Anchese ve ne sono altri tutte le operazioni possono essere pensate riferite al drivechiamato A.
unità a disco(drive)
monitor
unitàcentrale
Figura 3tastiera
1. Elementi introduttivi 12 pag.
Il sistema di dispositivi, meccanici ed elettronici, che costituiscono ilcomputer viene spesso chiamato con il termine hardware, mentre i pro-grammi che possono essere eseguiti dall’elaboratore vengono detti software.
Per controllare le varie parti del sistema hardware è necessario uninsieme di programmi che viene chiamato sistema operativo. Il sistemaoperativo controlla lo svolgimento degli altri programmi, permette diutilizzare le periferiche e serve anche per organizzare le informazioni che sitrovano sui dischetti.
Il sistema operativo che useremo si chiama DOS, sigla che significaSistema Operativo su Disco.
La tastiera di un computer è molto simile a quella di una macchina dascrivere, 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 conun foglio di carta e ti permette, con estrema facilità, di correggere errori discrittura, di cancellare, di inserire caratteri. Saprai sempre dove verràscritto il carattere che batterai, perché nel punto corrispondente sulloschermo ci sarà un trattino o un quadratino lampeggiante, che si chiamacursore.
Nella Figura 4, riportata nella pagina a fronte, è riprodotta una delletastiere più utilizzate. Non importa se la tastiera che userai sarà diversa.Osserva quella della figura per notare alcune caratteristiche comuni a tuttele 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 fattealcune osservazioni generali.
Per ottenere il carattere che si trova nella parte superiore di ogni tastocon due simboli, devi premere quest’ultimo mentre tieni schiacciato il tasto
SCRIVERE CON LA TASTIERA
1. Elementi introduttivi 13 pag.
<SHIFT>. Nella tastiera della Figura lo <SHIFT> è rappresentato con unafreccia rivolta verso l’alto. Per esempio. se vuoi ottenere sullo schermo ilpunto esclamativo devi premere lo <SHlFT> e il tasto dove compare 1 e !.
Quando in questi appunti si farà riferimento ai tasti funzionali o a quellispeciali verrà usata una notazione particolare. Se, per esempio, dovraibattere il tasto con scritto sopra F3, verrà scritto: batti <F3> , mettendoF3 fra i segni < e >, in modo che tu capisca che non devi scrivere i duecaratteri F e 3, ma semplicemente battere il tasto funzionale corrispondente.
Se digiti una informazione, essa compare sul video ma deve essere inviataall’unità centrale del computer, dopo aver controllato che sia corretta ecompleta. Per ferla entrare nell’elaboratore devi premere un tasto specialeche 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 interru-zione in quanto serve per interrompere l’esecuzione di un programma. In M-LOGO tale coppia è <CTRL> <PAUSA>. Ciò vuol dire che il tasto <CTRL>(abbreviazione di CONTROL) deve essere tenuto premuto mentre si batteil tasto <PAUSA>.
Userai molto spesso la barra spaziatrice, che riconoscerai immediata-mente nella tua tastiera perché è molto lunga. Essa serve a battere uno«spazio bianco» per separare una parola dall’altra. Ricorda che lo spaziobianco è per il computer un carattere come tutti gli altri e non, come si pensanello scrivere con la penna, l’assenza di un carattere. Esso può quindi esserecancellato.
INVIO =ENTER =RETURN
TastoSHIFT
ALT GR + è → [
ALT GR + * → ]Frecce che comanda-no i movimenti delcursore nel Foglio.
Figura 4
1. Elementi introduttivi 14 pag.
Per muoverti all’interno del testo che devi scrivere hai a disposizione itasti freccia, mentre per cancellare un carattere potrai utilizzare il tasto<BACKSPACE> (quello con una freccia orizzontale rivolta a sinistra), chefa fare un passo indietro al cursore eliminando il carattere che lo precede.
Tabella 1TASTI SPECIALI
DIGITA:PER:
TASTOFRECCIA
TASTOFRECCIA
BARRASPAZIO
SHIFT
INVIO
TASTIINTERRUZ.
PROGR.
battere uno «spazio bianco» perseparare una parola dall’altra
interrompere l’esecuzione di unprogramma
far fare un passo indietro alcursore cancellando il carattereprecedente
far eseguire al computer la istru-zione appena battuta o far acqui-sire il dato appena scritto
selezionare il carattere in alto diun tasto che ne ha due
muovere il cursore di uno spa-zio a destra senza cancellare
muovere il cursore di uno spa-zio a sinistra senza cancellare
BACKSPACE
2. La tartaruga e lo schermo 15 pag.
Le operazioni che dovrai compiere per poter lavorare con il linguaggioLOGO sono le seguenti:
1) accendi il computer;
2) restando in ambiente DOS, inserisci il dischetto del LOGO neldrive 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 unapiccola luce ( verde, oppure rossa). Non estrarre o inserire mai un discomentre questa luce è accesa!
Al termine dell’operazione di lettura , ossia allo spegnersi della piccolaluce, 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 compareaffatto, 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 nellospazio che sta nella parte bassa dello schermo dove vedi lampeggiare unquadratino luminoso (il cursore), che sta a destra di un punto interrogativo.
ENTRIAMO NEL MONDO DEL LOGO
LA TARTARUGA E LO SCHERMO
pag. Manuale Logo16
FIGURA 1
A questo punto potrai utilizzare unaparticolare "matita elettronica" che saràal tuo servizio per eseguire tanti dise-gni: la tartaruga.
Quando il linguaggio LOGO venneutilizzato le prime volte la tartarugaera un minuscolo robot meccanico chesi muoveva sul pavimento e somigliavaabbastanza a una tartaruga vera.
Adesso nel computer la tartaruga è simboleggiata da un triangolino chesomiglia 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 delloschermo, come appare nella figura. Chiameremo questo punto TANA. Loschermo 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, è dedicatainvece a ciò che devi scrivere, cioè al testo delle istruzioni.
Puoi pensare che la tartaruga sia come una penna che, spostandosi su unfoglio, lascia una traccia: il suo foglio è lo schermo e la traccia è un insiemedi pixel che si accendono quando, nello spostarsi, il triangolino ci passasopra. 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, chedeterminano il suo orientamento;
c) ha una penna che può tenere giù, per disegnare, o su per spostarsisenza disegnare;
d) può essere visibile (in mostra), oppure invisibile (nascosta).
LA TARTARUGA ESPLORA LO SCHERMO
2. La tartaruga e lo schermo 17 pag.
E' anche possibile trasformare la penna in gomma, per cancellare linee, eviceversa la gomma in penna.
Nella Tabella 1 riportata sotto, ci sono i comandi più semplici chemodificano lo stato della tartaruga, mentre nella Tabella 2, che trovi nellapagina seguente, vi sono quelli, di uso più comune, relativi alla gestionedello schermo.
Come puoi osservare nella tabella in basso, alcuni comandi sono seguitida una parola scritta fra i segni < e >. In questi casi vogliamo indicarti cheil comando deve essere accompagnato da un dato, cioè da un valorenumerico necessario per la sua esecuzione. AVANTI, per esempio, deveessere seguito da un certo numero di passi. Chiameremo argomento ogniinformazione che dobbiamo fornire a un comando affinché quest’ultimopossa essere eseguito correttamente.
La tartaruga si sposta in avanti del numero di passiindicato nella stessa direzione. (Abbreviazione: A)
La tartaruga si sposta indietro del numero di passi indica-to. nella stessa direzione. (Abbreviazione: I)
La tartaruga compie una rotazione a destra del numero digradi indicato, senza cambiare posizione, . (Abbreviazio-ne: D)
La tartaruga compie una rotazione a sinistra del numero digradi indicato, senza cambiare laposizione. (Abbreviazio-ne: S)
Riporta la tartaruga al centro dello schermo con direzioneverso l’alto; se la penna è abbassata viene tracciata unalinea.
La tartaruga solleva la penna e, quando si sposta, nonlascia la traccia sullo schermo .
La tartaruga abbassa la penna e, quando si sposta, lasciala traccia sullo schermo .
La penna si trasforma in gomma, cancellando la tracciadove la tartaruga passa. Per trasformare la gomma inpenna basta utilizzare GlU.
Nasconde la tartaruga (Abbreviazione: NT)
Mostra la tartaruga. (Abbreviazione: MT)
COMANDI RELATIVI ALLO STATO DELLA TARTARUGA
AVANTI<PASSI>
INDIETRO<PASSI>
DESTRA<ANGOLO>
SINISTRA<ANGOLO>
TANA
SU
GIU
CANCEPENNA
NASTARTA
MOSTARTA TABELLA 1
pag. Manuale Logo18
COMANDI RELATIVI ALLO STATO DELLO SCHERMO
Viene cancellato il disegno che è sullo schermoe la tartaruga viene riportata al centro delloschermo con direzione verso l’alto.
Viene cancellata la parte dello schermorelativa al testo.
Non permette alla tartaruga di uscire daimargini dello schermo.
Permette alla tartaruga di spostarsi al di fuoridei margini ello schermo (senza essere visibile).
Permette alla tartaruga di uscire dai marginidello schermo e di rientrare dalla parte opposta.E' lo stato che si ha quando si carica il Logo.
Rende visibile l’intero schermo grafico.
Divide lo schermo in modo da avere presenticontemporaneamente sia la grafica che il testo;viene così nascosta una parte dello schermografico.
Riserva al testo tutto lo schermo, coprendol’intero campo d’azione della tartaruga.
TABELLA 2
PULISCISCHERMO (PS)
PULISCITESTO (PT)
ASCAMPO “CHIUSO
ASCAMPO “APERTO
ASCAMPO “CIRCOLARE
ASSCHERMO “TARTA
ASSCHERMO “MISTO
ASSCHERMO “COMANDI
Durante lo svolgimento delle esercitazioni seguenti, se hai difficoltà adeseguire un comando oppure a rispondere ad una domanda, puoi consultarele tabelle 1 e 2.
Avvertenza importante! Se lavori con M-LOGO e hai una stampan-te, puoi ottenere su carta una copia del disegno che realizzerai. Per farquesto, prima di caricare lo M-LOGO, è necessario che, quandocompare il segno A>, con il dischetto di M-LOGO inserito nel drive tudia il comando DOS: GRAPHICS <INVIO>.
Iniziamo ora a lavorare con la tartaruga. Batti, usando il tasto del numero0 (e non quello della lettera O!): AVANTI 50 <INVIO>
La tartaruga si sposta di 50 passi nella direzione indicata dal triangolinoe quindi modifica la sua posizione, ma non la sua direzione.
2. La tartaruga e lo schermo 19 pag.
Ricordiamo ancora una volta che ogni istruzione deve essere comunicataal 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 , oppurese, senza lasciare lo spazio, batti: AVANTI50
Potrai notare che il computer risponde con un messaggio che ti segnalal’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 adare il comando: A 30
La tartaruga va sempre avanti per la sua strada, sulla verticale delloschermo. Quanti passi ha finora fatto? Che cosa si può fare per farlecambiare direzione?
Batti: DESTRA 30
Che cosa osservi?
Il comando DESTRA ha una sintassi analoga ad AVANTI, ma serve percambiare la direzione della tartaruga, senza però modificare la posizionedove sta. L’argomento numerico di DESTRA non indica quindi un numerodi passi ma un numero di gradi sessagesimali, ossia l'ampiezza angolare delcambiamento di direzione.
Per far procedere la tartaruga lungo la sua nuova direzione devi utilizzaredi nuovo AVANTI. Prova con: A 20
Se vuoi ricominciare a disegnare, partendo con la tartaruga nel centrodello 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 unospazio bianco. Verranno eseguite in sequenza, cioè una dopo l’altra, batten-do alla fine il tasto <INVIO>.
pag. Manuale Logo20
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 leistruzioni.
Dopo aver riportato la tartaruga in tana con il comando PS, prova adigitare i comandi:
S 70 A 250
Che cosa osservi?
Per evitare che la tartaruga esca dallo schermo e rientri dalla parteopposta puoi utilizzare il comando: ASCAMPO "CHIUSO.
Dopo averlo fornito, prova a ripetere le istruzioni precedenti e osservache cosa accade.
Per tornare alla situazione in cui la tartaruga esce dallo schermo e viritorna dalla parte opposta, puoi utilizzare il comando: ASCAMPO "CIR-COLARE.
Digita ora i comandi per riportare la tartaruga in tana e ripulire loschermo. Digita poi il comando: ASCAMPO "APERTO seguito da: S 70A 250. Quale effetto diverso osservi rispetto alle due precedeni situazioni?
Rimetti la tartaruga in tana e ripulisci lo schermo. Ora vogliamo ottenereun tratteggio come questo:
Per prima cosa devi ruotare a destra la tartaruga di 90 gradi conl’istruzione: D 90 e devi farla procedere di un tratto, che scegliamo di 20passi, con: A 20.
A questo punto la tartaruga deve compiere un tratto senza lasciare latraccia e devi quindi sollevare la penna con: SU
2. La tartaruga e lo schermo 21 pag.
Per farla procedere di altri 20 passi devi digitare: A 20 e devi poiriabbassare la penna con: GIU e procedere di nuovo per un tratto analogoal precedente con: A 20 e poi ancora: SU A 20 GIU A 20 SU A 20 GIUA 20. Infine per far scomparire la tartaruga devi usare: NASTARTAabbreviabile con NT.
Abbiamo finito. L’insieme delle istruzioni date costituisce il programmaper realizzare il tratteggio.
Puoi ottenere lo stesso disegno anche con un programma diverso. Dopoessere ritornato nelle condizioni iniziali (non dimenticare di far ricomparirela 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 sulquaderno e fare poi eseguire dal computer un programma che realizzi undisegno di tua scelta.
Se lavori con lo M-LOGO e hai dato il comando Graphics, puoi anchestampare il tuo disegno. Basta premere il tasto <STAMP>. Ricorda però cheGraphics deve essere battuto prima di caricare lo M-LOGO.
SCHIACCIAMENTO
Abbiamo già detto che le immagini si formano sullo schermo del monitormediante l’accensione di pixel. La pagina su cui scrive il computer puòquindi essere vista proprio come un foglio a quadretti, dove però ogniquadretto è acceso o spento.
pag. Manuale Logo22
Quando disegni con la tartaruga, un problema può esserecreato dal fatto che i pixel, in realtà, non sono dei piccoliquadretti, ma dei rettangolini. Nella figura a fianco puoiosservare un reticolo di rettangoli (alcuni sono neri) ciascu-no dei quali rappresenta un pixel avente la base che è lungametà dell’altezza. Se pensiamo di far muovere la tartaruga di10 passi in orizzontale e di 10 in verticale, otteniamo deglispostamenti che sono uno la metà dell’altro.
Per evitare inconvenienti di questo tipo il LOGO fa opportuniaggiustamenti. Se, per esempio, lo schermo avesse dei pixel come quellidella 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 sonodigitando il comando:
SCHIA
Quale risposta il LOGO ti darà un numero decimale che esprime ilrapporte 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 laparte intera del numero dalla sua parte non intera non mediante la solitavirgola, ma mediante un punto.
Inoltre, se la parte intera è costituita soltanto da uno zero, il LOGO nonlo scrive. Così, per esempio, se egli ti risponde scrivendo .85 , tu dovraileggerlo 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 LOGOsono adatti al tuo schermo. In caso contrario puoi intervenire con ilcomando:
ASSCHIA <numero>
che modifica il rapporto di schiacciamento delle immagini.
2. La tartaruga e lo schermo 23 pag.
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 dischiacciamento è 0.85. Se le figure che disegnerai ti sembrano schiacciate,con un po’ di prove puoi trovare qual è il valore migliore per il monitordel tuo computer
DAI PIXEL ALLE LINEE
Un secondo problema, dovuto alla rappresentazione mediante pixel, si hanel tracciare linee oblique. Nella figura in alto a sinistra nella pagina a fronteabbiamo disegnato una linea obliqua rappresentata nell'unico modo possi-bile, ossia annerendo una serie di quadretti. Come puoi osservare, non siottiene una linea continua, ma un insieme di «gradini». Fai anche tu qualcheprova 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 inmodo analogo. Tutte le immagini che appaiono sul video sono digitalizzate,trasformate cioè in pixel accesi o spenti. È quindi molto importante ladefinizione (o risoluzione) del video, ossia il numero dei pixel presenti inrapporto 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 diverten-doti a ottenere immagini colorate, cambiando il colore della penna dellatartaruga 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. Manuale Logo24
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.
RIEMPIColora 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 scrivereuna espressione aritmetica da risolvere. Puoi esser certo che il LOGO,essendo un bravo “calcolatore”, la risolverà con assoluta esattezza. Così sescrivi:
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 ilcomputer digitando il comando:
CIAO
A questo punto, se il tuo computer non rientra in DOS e si blocca, persbloccarlo "resettalo" digitando simultaneamente i tre tasti :
<CTRL ALT CANC>
poi spegnilo.
3. Poligoni con il comando Ripeti 25 pag.
POLIGONI CON IL COMANDO RIPETI
IL COMANDO RIPETI.
Il comando
RIPETI
ti fa risparmiare la fatica di dover ripetere più di una volta una istruzionesingola, 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 traparentesi 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 latodello schermo stesso e ricomparire dal lato opposto. Per evitare ciò, devi farcominciare i movimenti della tartaruga da una diversa posizione. Una buonaposizione da cui potresti farla partire potrebbe essere, per esempio, 100passi 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. Manuale Logo26
Ora la Tartaruga è nel punto giusto, ma è rivolta verso il basso. Per darlel’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 inprecedenza 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 ilmodulo, cioè la parte che nel ripetersi realizza il disegno. Devi poi scriverele 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 suaesecuzione, ti accorgi che non è possibile realizzare il disegno ripetendoquesto modulo. Occorre che la tartaruga termini disponendosi nella stessadirezione che aveva all’inizio.
Dobbiamo dunque aggiungere il comando S 90, che porta la tartaruga inposizione corretta.
Figura 1
FREGIO MODULO
3. Poligoni con il comando Ripeti 27 pag.
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 diesse si ripetono due volte. Puoi quindi utilizzare RIPETI all’interno di unaltro 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, sembraessere costituito da un semplice quadrato definito dalle istruzioni:
RIPETI 4 [A 10 D 90]
Tuttavia, per non disegnare sovrapposti i cinque quadrati, la tartarugadeve 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
pag. Manuale Logo28
Con il comando RIPETI puoi ottenere figure complessemediante la rotazione di figure più semplici. Osserva laFigura 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 diun opportuno angolo
Prova ora a scrivere i due programmi che servano a realizzare la Figura4 e la Figura 5.
Per scrivere il programma della Figura 5 tenta di utilizzare una parte delprogramma scritto per la Figura 4.
REGOLA DEL GIRO COMPLETO.
Giro completo attorno ad un poligono.
Quando la Tartaruga disegna una figura geometrica avente forma dipoligono e ritorna, sia alla posizione, sia all’orientamento di partenza, lasomma dei cambiamenti di direzione che avrà effettuato sarà ogni volta ungiro completo.
Figura 4
Figura 5
Figura 3
3. Poligoni con il comando Ripeti 29 pag.
Ciò significa che la tartaruga ha eseguito un certo numerodi cambiamenti di direzione le cui ampiezze angolari, somma-te tra loro, daranno sempre un totale di 360 gradi.
Se desideri, per esempio, far disegnare alla tartaruga untriangolo equilatero, devi tener presente che è un poligonoregolare con tre lati, e quindi con tre vertici.
Così, quando la tartaruga, camminando, arriva ad un ver-tice dovrai ordinarle di eseguire un cambiamento di direzione di ampiezzauguale ad un terzo di angolo giro, ovvero (360 : 3) gradi, ossia 120° (vediFigura 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, bastaconoscere la misura degli angoli interni dello stesso triangolo, e non quelladei corrispondenti angoli esterni.
Per tale motivi si è indotti ad ordinare alla tartaruga di effettuare, ad ognivertice, un cambiamento di direzione di 60°, e non un cambiamento didirezione di 120° che, invece, è quello che occorre effettivamente eseguire.
In queste circostanze, allora, la tartaruga obbedirà fedelmente ai comandiche le vengono dati e, anzichè disegnare ur triangolo equilatero, disegneràun ... semiesagono.
L’errore in cui si cade nasce dalla convinzione che, per costruire untriangolo basta considerare soltanto i suoi angoli interni, trascurando diconsiderare i suoi angoli esterni corrispondenti.
Sono invece gli angoli esterni quelli che fondamentalmente interessanonel procedimento di costruzione. Essi, infatti, consentono di calcolareciascun cambiamento di direzione che la tartaruga dovrà effettuare permuoversi su tutto il contorno del triangolo da disegnare.
120°
120°
120°
Figura 6
pag. Manuale Logo30
Regola di calcolo per disegnare poligoni regolari.
Dopo le considerazioni appena fatte, diventa assai semplice la strada perarrivare alla regola generale, con la quale tu potrai calcolare l’ampiezzadi ciascun cambiamento di direzione per disegnare tutti i tipi di poligoniregolari.
Se N è il numero dei lati di un poligono regolare, l’ampiezza di ciascuncambiamento di direzione da effettuare per disegnarlo, ossia l’ampiezza diciascun angolo esterno del poligono stesso, sarà allora uguale ad unaampiezza di (360 : N) gradi. Ossia: l'ampiezza di un angolo giro divisa peril numero dei lati del poligono considerato.
Così, per il quadrato (4 lati) ciascun cambiamento di direzione daeffettuare 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 manocrescente.
È questa la regola che Papert, uno degli ideatori del LOGO, chiama come:regola del giro completo. Quando tu arrivi ad esser padrone di questaregola, avrai conquistato, secondo Papert, una idea matematica assai poten-te, destinata ad avere una influenza, positiva ed efficace, per i successivisviluppi 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 poligonoregolare di lato lungo L e con N lati:
RIPETI N [A L D 360/N]
3. Poligoni con il comando Ripeti 31 pag.
Se attribuisci valori crescenti a N e valori decrescenti a L, ottieni deipoligoni il cui contorno assomiglia sempre di più a una circonferenza. Inparticolare 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é latartaruga non può compiere un avanzamento minore di un pixel tale poligo-no può essere considerato la migliore approssimazione di un cerchiorealizzabile con il computer.
Una circonferenza disegnata in questo modo, cioè attraverso piccoli passie minime rotazioni della tartaruga, si ottiene con un procedimento diversoda quello usato con il compasso. Con la tartaruga non si tiene conto dellaproprietà che possiedono i punti appartenenti a una circonferenza:l’equidistanza dal centro. Con il compasso invece la circonferenza vienedisegnata come luogo dei punti che hanno uguale distanza da un puntofisso. La distanza viene chiamata raggio e il punto fisso centro.
Anche se la tartaruga non considera la circonferenza nel modo tradizio-nale, è però in grado di disegnare circonferenze con raggi diversi. Perrealizzarle 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’avanza-mento è uguale alla lunghezza della circonferenza divisa per il numero diripetizioni.
Puoi anche sostituire D con S, facendo compiere delle rotazioni a sinistra.Otterrai circonferenze simmetriche rispetto alle precedenti. Questa proprie-tà 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 larotazione della tartaruga:
Analogamente, se vogliamo disegnare un quarto di circonferenza, dob-biamo fare 90 ripetizioni (1/4 di 360), mentre un sesto di circonferenzarichiede 60 ripetizioni (1/6 di 360).
pag. Manuale Logo32
In generale il numero di npetizioni corrisponde alla misura in gradidell’angolo aI centro che sottende l’arco di circonferenza disegnato.
Per continuare le attività relative ai cerchi e agli archi puoi progettare iprogrammi che occorrono per realizzare le figure che sono sotto. Per laFigura 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 10Figura 9
3. Poligoni con il comando Ripeti 33 pag.
ESERCIZI
1. Quanti passi deve compiere la tartaruga per raggiungere il lato superio-re dello schermo partendo dalla posizione centrale?
2. Quanti passi deve compiere per arrivare dal lato superiore a quelloinferiore, oppure dal lato sinistro a quello destro?
3. Prova a disegnare le iniziali del tuo nome e del tuo cognome. Ecco, adesempio, 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 laseguente 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 ildisegno 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 200A 100 S 45 A 100 I 200 A 100
Potresti ottenere lo stesso disegno con alcune ripetizioni ? Quante ? Cisono serie più semplici di comandi ripetuti per avere lo stesso disegno?Come potresti realizzare lo stesso disegno usando anche il comandoTANA?
pag. Manuale Logo34
8. Prepara una serie di istruzioni per portare la tartaruga in un determi-nato punto dello schermo, senza farle lasciare alcuna traccia.
9. Prepara una serie di istruzioni utilizzando l’istruzione RIPETI e laserie: 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, senzapulire 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 doppirispetto all’arco del progetto precedente.
15. Disegna un arco a sinistra lungo un sesto di cerchio, poi uno analogoa destra. (Suggerimento: usa la divisione e lascia fare i calcoli al LOGO).
Figura 11: una faccia nelle varie fasi della sua costruzione.
4. Le "geometrie" del LOGO 35 pag.
LE "GEOMETRIE" DEL LOGO
LO SCHERMO GRAFICO
Con il comando SCHIA controlla l’indice di schiacciamento delloschermo e, se la tartaruga ti risponde con un numero diverso da .85, assegnaall'indice questo valore ottimale con il comando:
ASSCHIA 0.85
Digita poi PS. Ora la tartaruga ènella posizione TANA ed è rivoltaverso l’alto. Può fare 117 passi pri-ma di uscire dallo schermo e ricom-parire nella parte inferiore. Se inve-ce viene rivolta verso il basso, i passiche può fare sono 116 (Fig. 1).
Sempre dalla posizione di TANA,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 versosinistra, 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 dischiacciamento, viene modificato il campo verticale della tartaruga, mentrequello 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.
117 PASSI
116 PASSI
159 PASSI 160 PASSI
Fig. 1: Indice di schiacciamento = 0.85
pag. Manuale Logo36
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 seguentecomando:
CAMPO
Se la tartaruga ti risponde CIRCOLARE oppure APERTO, digita:
ASCAMPO “CHIUSO
Poi , sempre dalla TANA, fa’ compiere alla tartaruga un numero di passimaggiore, oppure minore, di quelli prima indicati e osserva che cosa accade.Ricorda che per riportare la tartaruga alla TANA e ripulire lo schermo puoisempre 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 scher-mo 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.
Di solito, quando cammini sul pavimento di una stanza oppure dai aqualcuno le indicazioni per trovare una via della tua città, il sistema di
riferimento che adoperi è quello relativoalla conformazione del tuo corpo. Nel muo-verti sul pavimento di una stanza puoi sce-gliere di spostarti in avanti o indietro, con-servando sempre la stessa direzione, oppuredi cambiar direzione girando a destra, op-pure girando a sinistra (Fig. 2).
Fig. 2 AVANTI
INDIETRO
!"
A DESTR
A
A SI
NIS
TRA #
$
4. Le "geometrie" del LOGO 37 pag.
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 unsistema di riferimento che sta al suo interno. Sono quindi i comandi cheappartengono ad un particolare sistema di riferimento geometrico chechiamiamo “intrinseco”.
AVANTI, INDIETRO, DESTRA, SINISTRA sono icomandi 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 aquello utilizzato nel noto gioco della “battaglia navale”.
Questo sistema geometrico, quasi sempre rappresentato mediante ilcosiddetto “diagramma (o grafico) cartesiano”, permette di individuare,mediante una coppia di numeri relativi, la posizione di numerosi puntiriportati sopra un piano.
Osserva la Fig. 3 a fianco.Vi sono rappresentate due ret-te orientate perpendicolari:XX’ ed YY’, chiamate assicartesiani. Più precisamente:la prima si chiama asse dellex o delle ascisse e la secondaasse delle y o delle ordinate. Idue assi dividono il piano inquattro angoli retti che si chia-mano rispettivamente primo,secondo, terzo e quarto qua-drante.
Fig. 3
-6 -5 -4 -3 -2 -1 +1 +2 +3 +4 +5 +6
+6
+5
+4
+3
+2
+1
-1
-2
-3
-4
-5
-6
Y'
Y
XX'
2° QUADRANTE
3° QUADRANTE
O
sem
iass
e po
sitiv
ose
mia
sse
nega
tivo
semiasse positivosemiasse negativo
1° QUADRANTE
4° QUADRANTE
u
pag. Manuale Logo38
Il punto O di intersezione dei due assi XX’ ed YY ’ è denominato originee divide ciascun asse nelle semirette OX, OX’ ed OY, OY’. Queste sichiamano rispettivamente: OX semiasse positivo e OX’ semiasse negativodelle 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 segmentodi lunghezza prestabilita). Ciò fatto, disegniamo sul primo quadrante unqualsiasi punto P e conduciamo da esso le perpendicolari PH e PK rispetti-vamente 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 entrambeprendono il nome di coordinate di tale punto .
All’ascissa e all’ordinata di un punto si attribuisce il segno positivo, o ilsegno negativo, in dipendenza del fatto che i segmenti OH ed 0K che lihanno per misure appartengano ad un semiasse positivo, o ad un semiassenegativo.
Così, per esempio (Fig. 4):
- il punto P ha l’ascissa OH = 2e l’ordinata OK = 4 e lo indi-chiamo con: P (2 ; 4);
- il punto Q ha l’ascissa = -2 el’ordinata = 3, e lo indichiamocon: Q (-2 ; 3).
- il punto R ha l’ascissa = -3 el’ordinata = -4, e lo indichiamocon R (-3 ; -4).
Nel LOGO è presente, nascosto sotto lo schermo, un sistema di riferi-mento cartesiano che ha come unità di misura la lunghezza di un passo dellatartaruga. Noi sullo schermo non vediamo questo diagramma, ma la tarta-ruga lo vede e lo conosce bene. Ragion per cui è in grado di obbedire aicomandi 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)
PQ
R
Fig. 4K
O H
4. Le "geometrie" del LOGO 39 pag.
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 lecoordinate 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 dellageometria cartesiana del LOGO.
Il sistema di riferimento polare
Alcune volte, per stabilire una posizione, ti limiti a spostare lo sguardofissandolo su oggetti facilmente identificabili. Così può capitare che, rivol-gendoti a un amico tu dica: «Vedi laggiù l’entrata della scuola? Girati unpo’ a sinistra. Luigi è il ragazzo con la cartella rossa a 20 circa metri danoi». Organizzi così lo spazio nella maniera più naturale a partire dalla tuaposizione utilizzando una certa direzione e una determinata distanza.
Situazioni di questo tipo possonoavviarti alla conoscenza delle "coor-dinate polari" e queste puoi usarle inmodo preciso indicando: la direzionedi partenza, l’angolo da cui ruotare apartire da essa e la distanza dell'og-getto osservato (Fig. 5).
Nello studio delle coordinate polari dovresti partire dalla costruzione delconcetto di angolo come cambiamento di direzione e dalla consapevolezzadel suo doppio verso di rotazione, qual è, per esempio, il verso dipercorrenza, orario e antiorario, sul cerchio e nei giochi di girotondo.Occorrerebbe poi che tu conquistassi l’idea dell’insieme delle direzioni cheescono «a raggiera» nello spazio, partendo da te quale osservatore colloca-to nel centro di riferimento del sistema polare.
Fig. 4
distanza = 200 m
pag. Manuale Logo40
Dir. 0° = 360°Dir. 40° = 400°
Fig. 5 La tartaruga ha a sua disposizione an-che il sistema di riferimento polare perchè,quando è collocata nella posizione TANAed è rivolta verso l'alto, sta nella direzio-ne di partenza di questo sistema di riferi-mento, ossia sta nella direzione 0 = 360 =720 = ... (Fig. 5).
Se ruota nel verso orario, ossia verso destra, aumenta il valore angolaredella sua direzione, mentre accade il contrario quando ruota nel versoantiorario, ossia verso sinistra.
I comandi del sistema polare per realizzare e valutare queste rotazionisono rispettivamente:
ASDIR <numero gradi> e DIR
Con ASDIR la tartaruga ruota verso destra del numero di gradi indicatidall'argomento, se questo è un numero positivo, mentre ruota verso sinistrase il numero è negativo. La direzione rappresentata con una linea tratteggia-ta 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 angolaresulla quale la tartaruga sta in quel momento disposta.
Dopo aver modificato con ASDIR la direzione della tartaruga, puoi usareil comando AVANTI per effettuare lo spostamento che ritieni necessarioper realizzare il disegno che desideri.
ASDIR, DIR, AVANTI sono i comandi della geometriapolare del LOGO.
Il LOGO dispone infine di un comando con il quale il sistema di riferimen-to 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 ladirezione che passa per il punto di coordinate (30 ; 30). Digita alloraVERSO [30 30 ]. Il LOGO ti risponderà: 45. È il valore angolare che devifornire come argomento ad ASDIR per tracciare una linea che passi su quelpunto.
4. Le "geometrie" del LOGO 41 pag.
TABELLA DEI COMANDI DEI SISTEMI CARTESIANO E POLARE
SISTEMA CARTESIANO
SISTEMA POLARE
Determina la direzione di avanzamento della tartaruga. Il suoargomento numericoindica la direzione scelta in gradi. Il sistemadi riferimento imita quello della bussola: 0 gradi sono in alto (ilNord) e, ruotando nel verso orario, aumentano i gradi. Il cambia-mento di direzione che si ottiene è indipendente dall'orientamentoprecedente: costituisce infatti un valore del tutto assoluto.Esempio: ASDIR 45
Risponde indicando la direzione assoluta che ha la tartaruga inquel momento.Esempio: DIR Risposta: 45
Risponde indicando la direzione assoluta sulla quale va collocatala tartaruga per indirizzarla verso il punto le cui coordinate glisono state date come argomento Esempio: VERSO [30 30] Risposta: 45
Ordina alla tartaruga di spostarsi orizzontalmente fino al punto diascissa uguale al numero fornito come argomento.Esempio: VAX 30
Ordina alla tartaruga di spostarsi verticalmente fino al punto diordinata uguale al numero fornito come argomento.Esempio: VAY 45
Ordina alla tartaruga di andare nella posizione specificata dai duenumeri che compongono la lista e che costituiscono le coordinateX e Y del punto in questioneEsempio: VAXY [30 45]
Risponde indicando l'ascissa del punto in cui si trova la tartaruga.Esempio: XCOR Risposta: 30
Risponde indicando l'ordinata del punto in cui sta la tartaruga.Esempio: YCOR Risposta: 45
Risponde riportando una lista contenente le due coordinate delpunto in cui sta la tartaruga.Esempio: DOVE Risposta: [30 45]
Colora il punto le cui coordinate sono costituite dai due numeriche formano la lista che gli è stata data per argomento.Esempio: SCRIPUNTO [30 45]
VAX
VAY
VAXY
XCOR
YCOR
DOVE
SCRIPUNTO
ASDIR
VERSO
DIR
pag. Manuale Logo42
LE PROCEDURE E IL FOGLIO
PRIMITIVE E PROCEDURE
Dopo aver imparato a pilotare la Tartaruga per eseguire disegni, puoi oraimparare 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 esempioTRIANGOLO, oppure PARETE, li potrai digitare sui tasti e, come permiracolo, i disegni da te creati e chiamati con questi nomi, appariranno disullo schermo.
Per ottenere questo straordinario risultato, però, dovrai avere in prece-denza compilato le rispettive procedure.
In LOGO una procedura è formata da una serie di comandi ordinati conmolta esattezza e pensati per realizzare un certo disegno. Tali comandipossono 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 paroleprimitive del LOGO. Come sai già, per usarle devi semplicemente digitarlesulla tastiera, facendole seguiredal rispettivo argomento numerico.
Per le procedure, dopo avere in precedenza imparato a progettarle, adefinirle 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, cheancora non conosce questa parola, ti risponderà:
LA PROCEDURA QUADRATO NON ESISTE.
5. Le procedure e il foglio 43 pag.
Con questo messaggio il LOGO intende dire che non è in grado diriconoscere la parola che tu hai digitato, nè come parola primitiva, nè comenome di una procedura. Insomma, non è nella condizione di eseguire queltuo comando.
Quando scegli in nome per una procedura è consigliabile che:
- il nome richiami, in un certo qual modo, ciò che la procedura devecompiere; ad esempio, la procedura che servirà a disegnare un fiorepotresti 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 sceglieree a scriverne il nome. Nel nostro precedente esempio è stato scelto il nomeQUADRATO, ma, naturalmente, puoi scegliere qualsiasi altro nome chepreferisci.
Per avvisare il LOGO che stai per scrivere una procedura, il nome da tescelto 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 PERQUADRATO sparisce il punto interrogativo e, al suo posto, compare ilcarattere " > " seguito dal solito cursore lampeggiante.
La presenza a capo riga del carattere " > " è il segnale che sei entratonell'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 è assaidiverso da quello dei comandi immediati.
pag. Manuale Logo44
Nell'ambiente dei comandi immediati, non appena premi il tasto <IN-VIO>, il LOGO esegue subito i comandi scritti in precedenza da te, qualiAVANTI, DESTRA, ecc. .
Nell'ambiente dell’editore, invece, se scrivi le istruzioni: AVANTI, DE-STRA e poi premi il tasto <INVIO>, il LOGO non esegue alcunché, maaspetta che tu abbia scritto l’intera procedura, ossia che tu abbia elencatotutta le serie di istruzioni che costituiranno il corpo della procedura stessa.
Come ti mostra anche lo schema riportato sotto, la procedura va definitastando dentro l'ambiente dell’editore, all'interno del quale sei tu ad "inse-gnare" al LOGO quali sono i comandi a cui deve obbedire per realizzare laprocedura da te progettata.
Mentre sei nell’editore di procedure, puoi spostare il corsore usando itasti con le frecce e puoi cancellare il carattere a sinistra del cursore usandoil tasto <BACKSPACE>, esattamente allo stesso modo nel quale usi talitasti nel mondo dei comandi immediati.
Terminata la digitazione dell'intera procedura, per uscire dall'ambientedell'editore e tornare a quello dei comandi immediati basta che tu concludala 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);
AMBIENTE DEICOMANDIIMMEDIATI
AMBIENTE DIEDIZIONE DELLE
PROCEDUREFINE
PER "...
5. Le procedure e il foglio 45 pag.
- vi sia sempre uno spazio tra l’istruzione ed il suo argomento numerico.
Controllata attentamente la scrittura, premi il tasto <INVIO> e il LOGOti segnalerà di avere compreso i tuoi comandi scrivendo:
fine della definizione di MUOVITI
A questo punto ricomparirà sul video il punto interrogativo ( ? ) persegnalarti che la tartaruga è in attesa dei tuoi ordini.
Hai scritto così la tua prima procedura, insegnando, in tal modo, unnuovo comando alla tartaruga. Questo nuovo comando è rappresentato dalnome MUOVITI da te scelto. Ora potrai vedere se la tua procedura funzionanel modo in cui l’avevi progettata e, per farlo, non ti rimane altro cheprovarla.
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 dellaprocedura redatta in precedenza e passa ad eseguirla immediatamente.
Si dice, con un termine tecnico, che scrivendo: MUOVITI tu hai invocatola 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 dieseguire 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 unaparola, il LOGO ti invia un messaggio di errore.
Per correggere l'errore commesso devi allora trasferirti in un ambienteparticolare chiamato FOGLIO all'interno del quale si correggono le proce-dure sbagliate.
pag. Manuale Logo46
Le tappe di passaggio a questo ambiente, la successiva correzione dellaprocedura sbagliata e il rientro nell'ambiente dei comandi immediati potraipercorrerle seguendo con attenzione le seguenti istruzioni:
1. Digita:
EDITA "nomeprocedura (per esempio: EDITA "MUOVITI).
Vedrai apparire una schermata particolare suddivisa in due parti. Lasuperiore contiene la procedura da correggere. La inferiore inizia conuna 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 cursorestesso mediante le frecce direzionali e il solito tasto di cancellazionedel carattere precedente, ossia il tasto <BACKSPACE>.
3. Effettuata la correzione puoi tornare nell'ambiente dei comandi imme-diati 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 traduzionedel 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 chela tartaruga, nel realizzare il disegno progettato per tale procedura, partiràogni volta dalla posizione e dall’orientamento in cui si trovava alla finedell’esecuzione del precedente ordine di: MUOVITI.
Puoi dare anche qualche altro comando alla figura dello schermo, facendoruotare 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 47 pag.
GESTIONE DEL FOGLIO
Puoi rendere visibile sullo schermo il contenuto del FOGLIO digitandoil 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 puliscecompletamente il FOGLIO e tutto ciò che contiene viene perduto.
Fa' attenzione! Ogni volta che utilizzi il FOGLIO, prima diinserirci una nuova procedura con il comando EDITA, oppureprima di riportarci di nuovo una stessa procedura per una succes-siva correzione, è consigliabile ripulire il suo contenuto con ilcomando CANCEFOGLIO.
PROCEDURE USATE DENTRO ALTRE PROCEDURE
Come già detto, tra i pregi del LOGO c’è la caratteristica che il nome diuna sua procedura può diventare una comando derivato e acquistare così lafunzione svolta da un comando qualsiasi , svolgendo così lo stesso ruolosvolto, per esempio, dalle sue ordinarie parole primitive: AVANTI, DE-STRA, RIPETI.
Appare evidente, quindi, che i nomi delle procedure possono essereutilizzate anche dentro altre procedure con le stesse modalità con le quali siutilizzano gli ordinari comandi semplici.
Nella pagina seguente troverai alcuni esempi di procedure annidate(ossia incluse) dentro altre procedure.
pag. Manuale Logo48
Per scrivere righe di commento nei programmi digita questa procedura:
PER COMMENTO : ;
FINE
poi scrivi i programmi commentandoli nel modo indicato sotto. Ricorda chele parole scritte tra parentesi quadrate in ogni riga che inizia con il punto evirgola 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 diSOTTOPROCEDURA. L’uso di sottoprocedure offre diversi vantaggi:
- si accorciano, in primo luogo i programmi, che, altrimenti, sarebberocostituiti da lunghe sequenze di istruzioni.
- viene resa più semplice la lettura, e quindi la comprensione, delle proce-dure stesse. Ciò accade soprattutto quando si ricorre all’accorgimento diusare, per le procedure adottate, denominazioni chiaramente esplicative.Non chiamare, per esempio, QQ una sottoprocedura che disegna duequadrati, ma chiamala, piuttosto, in modo più esplicito: DUEQUADRATI;
- una volta che sia stata definita, una procedura potrà essere usata ancheall’interno di altri programmi. In pratica, se si scelgono bene le procedure
5. Le procedure e il foglio 49 pag.
di base, i loro nomi potranno costituire i termini di un tuo linguaggiopersonale, ossia un personale repertorio di procedure;
- risulta, infine più facile progettare un programma scomponendolo inpiccoli 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 diprocedure 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 collocareciascuna 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. Manuale Logo50
Ecco, infine, la sottoprocedura più elementare per disegnare una coppiadi 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 collegamentogerarchico esistente tra le diverse procedure di CAMPODIGRANO, ciascu-na delle quali è rappresentata da un blocco.
CAMPODIGRANOSPIGA SPIGHETTE
SEMINARE
PROCEDURE PER DISEGNARE UN PUPAZZO.
Altro esempio: è sistema di procedure per disegnare un PUPAZZO:
PER PUPAZZO
CORPO
GAMBE
BRACCIA
TESTA
FINE
PER CORPO
A 30 I 30
FINE
PER BRACCIA
A 20 D 90
A 20 I 40
A 20 S 90 I 20
FINE
PER GAMBASINISTRA
D 30 I 30 S 90
A 5 I 5 D 90
A 30 S 30
FINE
PER GAMBADESTRA
S 30 I 30 D 90
A 5 I 5 S 90
A 30 D 30
FINE
PER GAMBA
GAMBASINISTRA
GAMBADESTRA
FINE
5. Le procedure e il foglio 51 pag.
A te il compito di progettare la procedura TESTA e di disegnarelo schema ad albero nel quale vengano collegate in gerarchia i blocchi delleprocedure di PUPAZZO.
Per quel che riguarda la procedura TESTA potresti, per esempio, proget-tarne una di forma quadrata. È evidente che le istruzioni per la TESTAvanno accompagnate da altre che obblighino la Tartaruga a disegnarla nellaposizione giusta, sopra la parte superiore del corpo.
ESEMPI DI PROCEDURE E SOTTOPROCEDURE.
Ecco una serie di procedure semplici che, come vedremo nel prossimocapitolo, potresti opportunamente memorizzare nell’archivio: FORME.
PER QUADRATO
RIPETI 4 [A 50 D 90]
FINE
PER TRIANGOLO
D30
RIPETI 3 [A 50 D 120]
S 30
FINE
PER ESAGONO
S30
RIPETI 6 [A 60 D 60]
D30
FINE
Ed ecco, a puro titolo di esempio, una serie di procedure da realizzare,prendendo dall’archivio FORME alcune delle procedure semplici poc’anziproposte:
PER STELLA.SEI
RIPETI 6 [ROMBO D 360/6]
FINE
PER RETTANGOLO
RIPETI 2 [A 30 D 90 A 80 D 90]
FINE
PER ROMBO
S30
RIPETI 2 [A 60 D 60 A 60 S 120]
D 30
FINE
PER CERCHIO
NT
RIPETI 360 [A 1 D 1]
MT
FINE
pag. Manuale Logo52
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 chedisegni un quadrato in ogni angolo dello schermo.
- Usa la procedura QUADRATO per scrivere una procedura generale chedisegni una fila di quadrati.
- Usa la procedura QUADRATO per scrivere una procedura generale chedisegni una torre di quadrati (Suggerimento: serviti della procedurarisolutiva dell‘esercizio precedente).
- Scrivi una procedura che disegni un quadrato, servendoti del comandoRIPETI e usando una divisione per i cambiamenti di direzione.
- Scrivi una procedura che disegni un triangolo, con il comando RIPETI eusando 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 paretee un triangolo per tetto.
- Scrivi procedura che disegni un albero avente un rettangolo per fusto eun ottagono per chioma.
6. Spazio di lavoro e archivi 53 pag.
SPAZIO DI LAVORO E ARCHIVI
COME CONSERVARE E VISUALIZZARE PROCEDURE.
Conservazione di procedure
Le procedure da te definite non rimangono per sempre nella memoria delcomputer. Quando esci dal LOGO egli le"dimentica", ossia si cancellanodalla memoria del computer.
Per conservarle, per poterle riutilizzare, devi chiedere al LOGO ditrascriverle in un archivio dentro una memoria esterna, detta anche memoriadi massa, avente come supporto o il disco rigido interno alcomputer, oppureun dischetto esterno che dovrai, in precedenza opportunamente preparareper ricevere le procedure mediante l'operazione chiamata "formattazione".
Il comando:
CONSERVA
ti permette di trascrivere in un archivio, su disco o su dischetto, le procedureche sono presenti nella memoria di lavoro del computer.
Ma che cos'è la memoria di lavoro? Proviamo a descriverla con unparagone. Immagina che la memoria di lavoro del computer sia come ilpiano della tua scrivania. Sulla scrivania esegui i tuoi compiti quotidiani,scrivendo, a volte, lavori nuovi, oppure utilizzando copie di appunti che tirifuori dai cassetti della scrivania stessa.
Alla fine del tuo compito, per averne un altro esemplare, vai ad unafotocopiatrice, fai una copia dei lavori da te eseguiti e riponi la copia neicassetti, ossia nel tuo archivio.
Tutto ciò avviene anche con il LOGO quando si fa ricorso al discointerno, oppure ai dischetti.
Quello che serve per lavorare in quel momento lo tieni nella memoria dilavoro del LOGO (piano della scrivania), che può accogliere anche diverseprocedure (fogli vari con lavori diversi).
pag. Manuale Logo54
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 vienetrasferita da questa alla memoria esterna di massa, dove viene archiviata suldisco rigido o in un dischetto (li puoi pensare come cassetti di scrivania).
Attenzione, però! Il comando: CONSERVA copia sul disco, in un soloarchivio, 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ì ancheall’insieme delle procedure, costituenti un solo archivio, va attribuito ilnome relativo. Il nome servirà a distinguere tale archivio da altri insiemi diprocedure.
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 teutilizzate per realizzare le prime esperienze di disegno con la tartaruga, unnome appropriato per archiviarle tutte quante in solo gruppo potrebbeessere quello già suggerito, ossia: FORME. Digita quindi:
CONSERVA “FORME
Fai attenzione ! Le virgolette che precedono il nome dell’archivio costi-tuiscono 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 quelnome come nome di un archivio.
Così pure, se provi a recuperare un archivio senza premettere le virgolet-te, il LOGO non viene messo in grado di individuarlo.
Devi stare anche attento al fatto che nell'archivio non vi sia un altroarchivio avente lo stesso nome. Se nel disco o nel dischetto hai già conser-vato un precedente archivio sotto il nome di: FORME e vi memorizzi unnuovo archivio con la stessa denominazione, il vecchio archivio vienerimpiazzato dalle nuove procedure successivamente realizzate. In questocaso tutte le precedenti procedure che costituivano l’archivio FORMEvengono sostituite e, in sostanza, cancellate dalla memoria di massa.
6. Spazio di lavoro e archivi 55 pag.
Per visualizzare le procedure
Per vedere sullo schermo i titoli delle procedure presenti nella memoriadi lavoro del computer, batti:
STITOLI
che è l’abbreviazione della espressione: stampa titoli.
Per vedere il testo di una procedura, sempre presente nella memoria dilavoro, batti il comando:
SPROC
seguito dal nome della procedura di cui intendi vedere il contenuto. Peresempio, se sai che la procedura MUOVITI è presente nella memoria dilavoro, 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 numeroseprocedure, il loro contenuto scorrerà velocemente sullo schermo, senzadarti tempo di esaminarle.
Per ovviare a questo inconveniente digita prima
STITOLI
e vedrai il nome di tutte procedure presenti. Dopo di che potrai vedere ilcontenuto di ciascuna, visualizzandola una alla volta con il comando
SPROC "...
Infine per vedere i nomi di tutti gli archivi conservati nel disco con ilquale sei in comunicazione in quel momento, batti:
CATALOGO
e sullo schermo il LOGO farà vedere l’elenco completo dei nomi degliarchivi contenuti nel disco stesso.
pag. Manuale Logo56
COME RECUPERARE E CANCELLARE PROCEDURE
Recupero di procedure
In qualunque momento il LOGO ti consente di recuperare procedure daldisco 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 usareper trasferire procedure dalla memoria di lavoro alla memoria esterna,oppure da quest'ultima alla memoria di lavoro.
Come già detto, per vedere l’elenco degli archivi presenti su disco, puoidigitare:
CATALOGO .
Dopo di che potrai passare a recuperare l’archivio che desideri avere. Sequesto, per esempio, è l’archivio: FORME, dovrai digitare:
RECUPERA “FORME
A questo punto vedrai accendersi la lucetta dell’unità a disco e quandoquesta si spegnerà digita:
STITOLI
e vedrai il titolo di tutte le procedure recuperate richiamando nella memoriadi lavoro l'artchivio FORME
Una piccola raccomandazione. Se nella memoria di lavoro hai in prece-denza già trasferito l'archivio FORME e hai apportato qualche modifica adalcune sue procedure, la versione di FORME contenuta nel disco e da terichiamata sostituirà totalmente quella modificata.
PROCEDURE
NELLA MEMORIA
DI LAVORO
PROCEDURE
NELLA MEMORIA
DI MASSA
Conserva "...
Recupera "...
6. Spazio di lavoro e archivi 57 pag.
Se desideri mantenere tutte e due le versioni, prima di recuperare daldisco la versione precedente, cambia il nome a quella contenuta nellamemoria di lavoro servendoti del comando: EDITA.
Nell'ambiente di edizione si può infatti cambiare il nome di una procedu-ra, nello stesso modo in cui di cambiano i contenuti delle altre righe dellaprocedura 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 cancellandovitutte le procedure che vi sono presenti, specie quando si decide di cambiareattività 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 percancellare dalla memoria di lavoro la procedura TRIANGOLO contenutanell'archivio FORME digita:
CANCEPROC "TRIANGOLO
Però, prima di cancellare una procedura dalla memoria di lavoro, se nonla vuoi perdere del tutto, accertati che nel disco ve ne sia una copia.
Nella memoria di lavoro puoi anche cancellare di colpo alcune procedurescrivendo 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 tuadisposizione il comando:
CANCEARC
pag. Manuale Logo58
COMANDI PER SPAZIO DI LAVORO E ARCHIVI
CANCEPROC"........
CANCEPROC_IN
CATALOGO
RECUPERA "....
CONSERVA "....
STITOLI
SPROC".......
SPROC_IN
CANCEARC "....
ASDISCO "....
Scrive il nome di tutte le procedure presenti nella memoriadi lavoro.
Scrive il testo della procedura indicata come argomento.Esempio: SPROC "QUADRATO.
Scrive sul video il contenuto di tutte le procedure presentinello spazione di lavoro.
Cancella dallo spazio di lavoro la procedura il cui nome èindicato dopo le virgolette o tutte le procedure i cui nomisono riportati nella lista racchiusa tra parente quadrate.
Cancella dallo spazio di lavoro un insieme di procedure. Senon è seguito da alcun argomento vengono cancellate tuttele procedure presenti nello spazio di lavoro.
Questo comando fornisce una lista di tutti gli archivi LOGOche sono presenti nel disco selezionato.
Legge dal disco tutte le procedure dell'archivio specificatodal nome e le trascrive nello spazio di lavoro.
Legge tutte le procedure presenti nello spazio di lavoro ele trascrive nel disco selezionato in un unico archivioavente lo stesso nome di quello indicato dopo le virgolette.
Cancella dal disco selezionato l'archivo indicato dal nomescritto dopo le virgolette.
Cambia l'indirizzo della comunicazione da una memoria dimassa ad un'altra. Esempio: da "A: a "C:, o viceversa.
che deve essere seguito dal nome dell’archivio che desideri cancellare. Peresempio, per cancellare l’archivio FORME, puoi scrivere:
CANCEARC "FORME
Tieni presente che: CANCEARC cancella archivi nel disco, ma non haalcun effetto sulle procedure contenute nella memoria di lavoro.
Infine, se sei in comunicazione con il dischetto esterno contenuto neldrive 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: .
SP
AZI
O D
I LA
VO
RO
AR
CH
IVI
DIS
CO
7. Procedure e variabili 59 pag.
CHE COSA E’ UN ARGOMENTO VARIABILE.
Per quanto facilmente riutilizzabile, la procedura QUADRATO disegnasempre lo stesso quadrato. Se desideri disegnare un quadrato più piccolo, opiù grande, devi modificare il contenuto della stessa procedura, oppure nedevi scrivere direttamente un’altra.
Visto che le istruzioni primitive sono in grado di accettare argomenti ognivolta diversi quali, per esempio: AVANTI 30 , AVANTI 40 , AVANTI 50, ..... , non si potrebbe allora far accettare, pure alle procedure, argomentianch’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 cheintendi modificare di volta in volta.
L’unico accorgimento che devi tenere ben presente è che il nome da tescelto: 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 unquadrato il cui lato sia di lunghezza qualsiasi.
Attento, però ! Ogni volta che desideri disegnare un quadrato utilizzandoquesta nuova procedura, devi sempre specificare la lunghezza del lato chedesideri.
Per far ciò, nel momento che invochi questa procedura, basta che tuindichi quale lunghezza scegli per il lato, scrivendone il valore numerico alposto di :LATO.
PROCEDURE E VARIABILI
pag. Manuale Logo60
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 di50 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 suainvocazione, si chiamano:
ARGOMENTI (o VALORI) ATTUALI.
Il LOGO, quando deve eseguire QUADRATO 50 (oppure 70, o 90) vaa sostituire con questi valori il valore variabile indicato con l’argomentoformale :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 esistentetra il momento della definizione di una procedura ed il momento della suainvocazione.
Se sei in fase di invocazione e scrivi QUADRATO :LATO, oppure, se seiin fase di definizione e scrivi QUADRATO 50, queste due scritte sono senzasenso in ambedue i casi.
Ciò perché:
- nel primo caso stai tentando di invocare una procedura usando un argo-mento variabile,
7. Procedure e variabili 61 pag.
- mentre nel secondo caso provi a definire una procedura, tentando diassegnarle un argomento attuale.
Entrambe le istruzioni sono scritte, pertanto, in forma non correttarispetto 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 procedi-mento operativo (o algoritmo) necessario per disegnare un quadrato.
Osserva che passi dalla prima alla seconda procedura introducendol’uso di RIPETI, mentre passi dalla seconda alla terza ricorrendo ancheall’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 nellaforma più generale possibile.
pag. Manuale Logo62
PROCEDURE CON PIU’ ARGOMENTI VARIABILI.
In tale prospettiva di lavoro, se riprendi in considerazione le diverseprocedure che hai già progettato per TRIANGOLO, QUADRATO, PEN-TAGONO, ESAGONO, puoi, a questo punto, convenire che possonoessere tutte quante riassunte nella procedura seguente, la quale si caratte-rizza 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 suasuccessiva invocazione con:
POLIGONO 6 30
ti servirà per ottenere il disegno di un esagono di lato 30. Se digiti invecel’invocazione:
POLIGONO 30 6
otterrai il disegno di un .... trentagono di lato 6. In tal modo, avrai la provache l’ordine dei valori numerici da assegnare agli argomenti variabili è assaiimportante.
Se utilizzi la procedura POLIGONO come sottoprocedura, puoi facil-mente produrre suggestivi disegni decorativi anche molto complessi. Eccoun 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 63 pag.
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 varia-bili, 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. Manuale Logo64
ESEMPI DI PROCEDURE CON UNA O PIU’ VARIABILI.
Esempi di procedure semplici.
PER TRIANGOLO :L
RIPETI 3 [A :L D 120]
FINE
PER ESAGONO :L
RIPETI 6 [A: L D 60]
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
PER QUADRATO :L
RIPETI 4 [A :L D 90]
FINE
PER DECAGONO :L
RIPETI 10 [A :L D 36]
FINE
7. Procedure e variabili 65 pag.
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. Manuale Logo66
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.Differisconosolo per il valore dell’angolo che determina ciascun cambiamento di direzio-ne. Eppure quanti disegni diversi!
Potresti riassumerle tutte quante nell’unica procedura che trovi riportatasotto, conservando sempre presente, ovviamente, QUADRILATERO nellamemoria di lavoro.
Se invochi questa procedura, assegnando sempre lo stesso valore valoread :L , ma ogni volta un valore diverso a :VOLTE , otterrai lo stesso risultatodi 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 incui è possibile fare uso di un numero.
Tieni presente che:
- nel LOGO i nomi delle variabili possono essere di lunghezza decisa apiacere e possono contenere una combinazione di lettere, di numeri o dicaratteri speciali, quali sono, per esempio, i caratteri: ! “ % $ & .
- i caratteri che non puoi includere nei nomi delle variabili sono soltanto: isimboli delle operazioni (ossia: + - * / ), le parentesi tonde o quadrate(ossia: ( ) [ ] ) e il segno di apostrofo (ossia: ‘ ).
7. Procedure e variabili 67 pag.
Tieni anche presente che:
- il nome di una variabile devi scriverlo facendolo precedere dalle virgolette(ossia: “). Così, per esempio, “LUNGHEZZA è il nome di una variabileper la quale tu hai scelto, appunto, proprio quella denominazione;
- il valore formale di una variabile devi invece scriverlo facendolo precederedai due punti. Così la scritta :LUNGHEZZA rappresenta il valoreformale 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 modoche 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 definirlasolamente 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 stessavariabile conserva fino a che un successivo comando di AS , non glielomodifica, 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. Manuale Logo68
Tieni presente che il valore attribuito a una variabile mediante l’istruzioneAS viene sempre conservato dal LOGO e viene usato in ogni procedura nellaquale compare la stessa variabile.
Per di più, tale valore verrà conservato allorchè effettui una copia di taleprocedura, ossia quando trasferisci la procedura stessa dalla memoria dilavoro del computer alla memoria esterna su disco.
Ed è appunto per tali ragioni che tale tipo di variabile prende il nome divariabile globale.
Variabili locali
Le variabili locali puoi, invece, definirle solamente nel mondo dell’edito-re dentro una procedura. In tal caso, mentre una procedura viene eseguita,la variabile conserva il suo valore. Quando invece la procedura si ferma, ilvalore della variabile viene cancellato e dimenticato.
Se la stessa procedura viene, però, invocata di nuovo e poi eseguita, ilLOGO riprende ancora il valore della variabile locale, per conservarlo finoal termine della esecuzione della procedura stessa.
Il comando per localizzare il valore di una variabile solo dentro unaprocedura puoi darlo con la parola riservata:
LOCALE
Tale parola deve essere accompagnata dal nome che intendi dare allavariabile stessa. Per esempio:
LOCALE "LUNGHEZZA
Dopo tale definizione potrai attribuire un certo valore alla variabile intal modo chiamata usando l’istruzione AS.
Tieni presente che, quando usi AS dopo l’istruzione LOCALE, la varia-bile viene considerata dal LOGO come variabile locale, e non come variabileglobale.
Le variabili locali sono importanti, perchè evitano di sovraccaricare lamemoria di lavoro affidandole il compito di dover registrare i valori dinumerose variabili globali.
7. Procedure e variabili 69 pag.
Infatti, se usi variabili globali dove invece potresti usare variabili locali,occupi spazio della memoria di lavoro in cui potrebbero, invece, trovarposto altre procedure.
Devi inoltre tener presente che, in procedure diverse e sotto un stessonome, 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 unaprocedura. In questo caso la variabile assume il valore di variabile globalepermanente;
- successivamente, AS viene dopo una definizione di variabile realizzatacon 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
STAMPA :LATO
(il LOGO scrive: 100)
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
AS “100 30
STAMPA :100 + 100
(il LOGO scrive: 130)
pag. Manuale Logo70
Questa procedura serve per scegliere a caso due numeri più piccoli didieci e per avere il loro prodotto. Ricorda che per scrivere la sua sesta esettima riga come righe di spiegazione devi prima digitare la proceduraCOMMENTO 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 [=], einfine 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 tuttal’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 nonricordi più tale valore, puoi vederlo digitando l’istruzione COSA seguitadal nome della variabile di cui desideri ricordare il valore.
Per esempio, avendo dato alla variabile "LATO il valore di 100 mediantel’struzione AS "LATO 100, se digiti COSA "LATO, il LOGO ti risponderà:RISULTATO 100. Se a questo punto desideri cancellare tale valore nellastessa variabile, ecco qual è il procedimento che devi seguire.
Digita AS "LATO " (ossia: dopo la seconde virgolette digita uno spaziovuoto) e concludi con <INVIO>. Dopo di ciò digita ancora COSA "LATOe vedrai che il LOGO ti risponde RISULTATO: , ossia ti dà, qualerisultato, uno spazio vuoto, ossia nulla.
8. Trattamento dei numeri 71 pag.
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 laparte 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 diseparazione tra la parte intera e quella non intera del numero, forse oraincontrerai qualche difficoltà a sostituirla con il punto.
Considera, però, che tutte le macchine da calcolo, dalla piccole calcola-trici tascabili ai grandi computer, usano il punto come elemento di separa-zione. Di recente, anche la legge italiana ha stabilito che il punto vada usatonei 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 nonintera (comunemente, ma impropriamente, chiamata "decimale") e non,come tuttora erroneamente capita in alcuni testi di "matematica" (?), qualesegno di separazione tra i gruppi di tre cifre: unità, migliaia, milioni.
Tieni presente che, secondo le regole recentemente stabilite per lascrittura dei grandi numeri, queste terne di cifre vanno separate, in formacorretta, da un piccolo spazio vuoto in sostituzione del vecchio punto.
Il punto va usato, pertanto, soltanto quale segno di confine tra la parteintera e la parte non intera (“decimale”). Abbiamo scritto il termine "deci-male" tra virgolette in quanto, se tale termine viene riferito esclusivamenteai numeri non interi, questa espressione ci sembra impropria: nega infatti lapossibilità di chiamare con lo stesso termine anche i numeri interi, scrittiordinariamente in notazione appunto decimale, ossia in base dieci.
TRATTAMENTO DEI NUMERI
pag. Manuale Logo72
LE QUATTRO OPERAZIONI NEL LOGO
Nel LOGO le espressioni aritmetiche debbono essere scritte dicontinuo, come fossero sopra una sola riga e, con esse, non si può andare acapo, 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 divisio-ne. Osserva che per la moltiplicazione dovrai usare l’asterisco (*) e non lalettera minuscola x . Analogamente la barra trasversale ( / ) dovrai usarlaal posto dei due punti (:) , con i quali, nella scrittura corrente, viene indicatala divisione.
Il LOGO ti dà immediatamente il risultato di una operazione aritmeticaanche 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 73 pag.
GERARCHIA DELLE OPERAZIONI.
Tieni presente che nel calcolare il risultato di una serie di operazionipotresti 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 pre-cedenza 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 lapresenza 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 prece-denza all’operazione di divisione (anche se la trova scritta dopo l’addizio-ne). Esegue quindi l’operazione 5 diviso 2 e, ottenuto il risultato 2.5, passaad addizionarlo a 7.
In questo secondo caso il risultato finale sarà 9.5 (e non 12 come nel casoprecedente).
Le regole per risolvere le espressioni aritmetiche a cui obbedisce il LOGO- analogamente a quanto fanno quasi tutte le macchine da calcolo grandi epiccole - sono le seguenti:
1. - Prima di eseguire il calcolo il LOGO controlla le parentesi. Esegue perprime 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 leincontra da sinistra verso destra. Calcola, infatti: 8 / 2 = 4 (e nonuguale a 0.25, come si otterrebbe se si effettuasse la divisione dadestra verso sinistra, ossia 2 diviso 8)
3.- Le addizioni e le sottrazioni vengono infine eseguite per ultime e, anchequeste operazioni, sono man mano risolte nell’ordine in cui stanno, dasinistra verso destra.
pag. Manuale Logo74
Prova ora a calcolare, usando solamente carta e matita, quale risultato tidarà 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 econtrolla l’esattezza del risultato da te in precedenza calcolato solo concarta e matita.
OPERATORI ARITMETICI (FUNZIONI NUMERICHE).
I segni delle quattro operazioni si chiamano anche FUNZIONI NUME-RICHE e producono un risultato che, nel linguaggio informatico, prende ilnome 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 conil segno: / e applicata alla coppia ordinata di numeri 24 e 3.
Oltre alle quattro funzioni numeriche fondamentali, il LOGO è anche diutilizzare diversi altri operatori aritmetici che indichiamo di seguito.
ACASO <num>
ACASO è una funzione che, quale risultato, genera un numero estrattoa 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 acaso tra 0 e 9, mentre con ACASO 501, otterrai un numero scelto a casotra 0 e 500.
8. Trattamento dei numeri 75 pag.
ARCTAN <num>
Il valore della funzione ARCTAN è l’arcotangente del suo argomentoespressa 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 ognioperazione aritmetica e quindi condiziona il livello di precisione ottenibilenei calcoli.
L’argomento di ASCIFRE può variare da 1 a 100 per le sole operazioniaritmetiche elementari. Se si utilizzano funzioni trascendenti deve essereinvece 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. Manuale Logo76
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 sottrazionebinaria devi inserire uno spazio prima del sottraendo. Se non osservi questaregola, il Logo legge il secondo argomento numerico semplicemente comenumero negativo.
Esempi: 23 * 3 -4 = 69 -4 ; 23 * 3 - 4 = 65
DIVISIONE <num> <num>
DIVISIONE è l’operatore di divisione prefisso equivalente al segno didivisione “/” 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’argo-mento.
Esempio: GRADI PI = 180
INT <num>
Il valore fornito da questa funzione è uguale alla parte intera del numerofornito come argomento.
Esempio: INT 5,46 = 5
LOG10 <num>
Questa funzione restituisce il logaritmo in base dieci del suo argomento.
Esempio: LOG10 100 = 2
8. Trattamento dei numeri 77 pag.
PI
Il valore di PI è pi greco con una precisione pari al numero delle cifresignificative 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 comeesponente.
Esempio: POTENZA 4 3 = 43 = 64
PRODOTTO <num> <num>
Il valore riportato da questa funzione è il prodotto dei suoi due argomentinumerici. Con questa funzione si possono anche utilizzare più di dueargomenti, 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 deisuoi 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
pag. Manuale Logo78
RADQ <num>
Il valore restituito da questa funzione è la radice quadrata del suoargomento.
Esempio: RADQ 64 = 8
RESTO <num> <num>
Questa funzione genera, come risultato, il resto della divisione eseguitatra 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 ingradi sessagesimali.
Esempio: TAN 56 = 1.4825602
Stai attento! Quando usi i numeri non interi ("decimali") con le funzioniQUOZIENTE e RESTO, il LOGO, prima di eseguire la divisione,"arrotonda" (ossia, approssima) automaticamente i due numeri all’interopiù vicino.
Questo accade per tutte le primitive del LOGO che, per argomento,richiedono numeri interi.
9. Cerchi e archi di raggio variabile 79 pag.
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 "circonferen-za" che d’ora in avanti chiameremo a titolo assolutamente convenzionaleCIRCONFERENZA, ti viene data dalla relazione generale:
(relazione 1): LATO * 60 = CIRCONFERENZA
In questa relazione, 60 è il numero dei lati, mentre LATO rappresenta lalunghezza di ciascun lato.
Poichè, come sai, la lunghezza della circonferenza si calcola moltiplican-do il doppio della lunghezza del RAGGIO per 3.1416, abbiamo questaseconda relazione:
(relazione 2): CIRCONFERENZA = RAGGIO * 2 * 3.1416
Sostituendo il secondo membro della relazione 1 con il secondo membrodella relazione 2 avremo:
(relazione 3): LATO * 60 = RAGGIO * 2 * 3.1416
Se in quest'ultima relazione intendiamo calcolare il solo valore generaledel LATO avremo:
(relazione 3/1): LATO = RAGGIO * 2 * 3.1416 / 60
Quest’ultima uguaglianza ti dà la possibilità di realizzare una proceduraper disegnare una CIRCONFERENZA di dimensioni variabili. Ciò perché,quando di volta in volta cambierai il valore numerico della variabile RAG-GIO cambierà automaticamente anche il valore del LATO e quindi ladimensione di tutta la CIRCONFERENZA.
CERCHI E ARCHI
DI RAGGIO VARIABILE
pag. Manuale Logo80
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 procedu-ra, nasconde la tartaruga allo scopo di farle disegnare più rapidamenteciascun cerchio.
La procedura CERCHIO può essere facilmente modificata per disegnarearchi di raggio variabile. Ecco una procedura per disegnare un arco il cuiangolo 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 varia-bile 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 81 pag.
PER FIORE :RAGGIO
RIPETI 5 [PETALO :RAGGIO D 360 / 5]
FINE
Se desideri disegnare cerchi di raggio variabile, che abbiano però laposizione iniziale della tartaruga, ossia la sua TANA, dislocata al centro diogni 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 ecircoscritti 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. Manuale Logo82
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 chepotrestri denominare CERCHI.
10. Procedure ricorsive 83 pag.
PROCEDURE RICORSIVE
INTRODUZIONE ALLA RICORSIVITA’
Procedure che non si fermano "mai".
Finora le tue procedure sono state molto docili e si sono fermate ognivolta che tu stabilivi che lo facessero. Faremo adesso la conoscenza con untipo di procedure che non riescono a fermarsi.
Come sai già, in una procedura del LOGO puoi usare sia tutte le istruzioniprimitive di questo linguaggio, sia tutti i nomi delle procedure, da te inprecedenza definite e presenti nella memoria di lavoro.
A questo punto ti puoi domandare: è possibile usare, dentro una proce-dura, il nome della procedura stessa ? Ossia, è possibile che una procedurapossa chiamare se stessa dentro di sè.
Sì, nel LOGO questa possibilità esiste e a questa strana e interessantecaratteristica di programmazione viene dato il nome di ricorsività.
Che cosa è la ricorsività.
Esploriamo un po’ la potenza della ricorsività con qualche sempliceesempio.Prova a immaginare che cosa succede dentro la procedura seguen-te, 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 proceduraCERCHIO ?
1. Vai avanti di un passo
Ruota di un grado a destra
Esegui CERCHIO
pag. Manuale Logo84
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 capirlomeglio 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 istruzioniin teoria non si dovrebbe fermare "mai".
Nella procedura CERCHIO, infatti, la tartaruga, conclusa la prima partedella procedura, passa ad eseguire la sua ultima istruzione, la quale,consistendo nel nome della procedura stessa, la obbliga a ricominciare tuttala procedura da capo. E così via, "indefinitamente".
Come fermare una procedura ricorsiva.
Se desideri interrompere l’esecuzione di una procedura di questo tipo, hadue possibilità:
- di interromperla temporaneamente e, in questo caso, devi premere il tasto<PAUSA> collocato in alto a sinistra sulla tastiera. La procedura sifermerà e potrai farle ancora riprendere l’esecuzione premendo un tastoqualsiasi.
10. Procedure ricorsive 85 pag.
- di interromperla definitivamente e, in questo caso, devi premere insimultanea 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 presenteche le procedure di questo tipo ti offrono un modo molto potente ed elegantedi scrivere procedure di esecuzione "infinita".
Esempi di procedure ricorsive.
Ecco un altro esempio di procedura ricorsiva che, come sai già, potraiinterrompere 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. Manuale Logo86
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 conPS e digita la nuova invocazione:
NUOVOPOLIGONO 7 117
Vedrai che, in entrambi i casi, NUOVOPOLIGONO continua senzainterruzione a disegnare la propria figura, riprendendo sempre il disegno conle 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 vienedisegnato, oppure l’ampiezza di un angolo, ogni volta che si effettua uncambiamento di direzione.
Tieni presente che, quando il LOGO ti richiede un numero, tu hai diversimodo per proporglielo.
- all’inizio hai scritto procedure assegnando, ad esempio, il valore di un latoin 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 mediantequalche operazione aritmetica, che lui è in grado di calcolare assairapidamente (esempio: AVANTI :LATO + 3).
10. Procedure ricorsive 87 pag.
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 dellato aumenta di 3 passi e di conseguenza, anche se la rotazione rimane di 90gradi, la Tartaruga non potrà mai ritornare sullo stesso percorso.
Vediamo che cosa accade quando fai eseguire questa procedura invocan-dola 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 unquadrato 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. Manuale Logo88
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 tartarugadurante l’esecuzione di ciascuna di queste procedure.
Potrai anche veder l’effetto prodotto dall’argomento :LATO, la cuigrandezza viene modificata attraverso la chiamata ricorsiva.
La chiamata incrementa di un passo il valore della lunghezza ad ogni ciclodi esecuzione. Tutto ciò fa aumentare costantemente il "raggio dellaspirale", allontanando sempre più la tartaruga dal punto di partenza.
Eseguite queste prove, richiama la procedura POLISPI con il comandoEDITA "POLISPI, correggila sostituendo il comando ASSCHERMO"CHIUSO con il comando ASSCHERMO "CIRCOLARE, definisci lanuova procedura e ripeti le prove con i valori dati in precedenza.
Vedrai , nel modo del tutto evidente, quale differenza esiste tra lo statodi ASSCHERMO "CHIUSO e lo stato di ASSCHERMO CIRCOLARE.
POLISPI 1 90 POLISPI 1 92POLISPI 1 88
POLISPI 1 118 POLISPI 1 120 POLISPI 1 122
11. Creazione e uso di funzioni 89 pag.
CREAZIONE E USO DI FUNZIONI.
LE FUNZIONI
Che cosa è una funzione
Finora hai creato interessanti sistemi grafici usando quasi esclusivamentele quattro istruzioni primitive : AVANTI, INDIETRO, DESTRA, SINI-STRA, con l’istruzione RIPETI e adoperando qualche volta la ricorsività.
Tu sai, però, che il LOGO mette a tua disposizione diverse altre istruzionie 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 incondizione di scrivere un nunero che il LOGO sceglierà a caso tra quellicompresi nell’intervallo tra 0 e numero -1. Di conseguenza, se ripetidiverse volte questa istruzione, avrai ogni volta un numero diverso daiprecedenti, in quanto, come già detto, ogni numero viene scelto a caso.
Così con l’istruzione: AVANTI ACASO 50 potrai far spostare la tarta-ruga in avanti di un numero di passi preso a caso, numero però che risultacomunque compreso tra 0 e 49. Ecco una procedura ricorsiva in cui vieneutilizzata 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 latartaruga a caso, facendola fermare un po' in ciascuna tappa per comunicarele coordinate della posizione raggiunta. Dopo alcune tappe la tartaruga sifermerà e il LOGO ti invierà il messaggio di aiuto: HO FINITO I NODI. Perriprendere l'esplorazione dello schermo dovrai allora digitare LIBERA einvocare di nuovo la procedura RIF_POS.
pag. Manuale Logo90
In questo modo, ogni volta che eseguirai questa procedura ricorsiva,potrai vedere un tracciato grafico del tutto diverso dai tracciati graficiottenuti 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 dalvalore di 50, genera un altro valore, che viene da lei scelto a piacere tra inumeri 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, indicaticon i simboli N1 ed N2, e genera come risultato il quoziente intero delladivisione: 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 lafunzione: 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 puoialtresì 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 edammi il risultato dell’operazione .....
11. Creazione e uso di funzioni 91 pag.
L'istruzione: RIPORTA genera quindi il risultato di una certa operazio-ne, chiudendo, però, la procedura nella quale è stata inserita.
Segue un esempio, nel quale si crea la funzione: SOMMARE, attribuen-dole il compito di addizionare due numeri. Dopo di ciò, attraverso ladefinizione di un’altra funzione, lo stesso compito viene trasferito dallafunzione: 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 chepuoi 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 ritornaalla tastiera del computer, ossia a te che ci stai lavorando.
pag. Manuale Logo92
Ancora un esempio:
PER DUE.DADI
RIPORTA (ACASO 11) + 2
FINE
Con questa procedura-funzione potrai generare numeri casuali compresinell’intervallo da 2 a 12 , ottenendo il risultato complessivo che potrestiottenere 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 linguag-gio LOGO sono rappresentati dalle procedure ricorsive e dalle procedurefunzioni e, quest’ultime, ti servono per portar fuori da una certa proceduraun certo risultato che desideri ottenere.
Come ricorderai, un esempio di procedura ricorsiva è la proceduraCERCHIO:
PER CERCHIO
AVANTI 1 DESTRA 1
CERCHIO
FINE
Un esempio di procedura funzione è invece la procedura PITAGORAscritta 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. Peresempio, 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 lasomma 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 numeroche, moltiplicato per se stesso, dà 25 come prodotto.
Ecco la procedura PITAGORA:
11. Creazione e uso di funzioni 93 pag.
PER PITAGORA :Nl :N2
RIPORTA RADQ ((:Nl * :N1) + (:N2 * :N2))
FlNE
Tenteremo fra poco di mettere insieme l’idea di ricorsività con l’idea diprocedura-funzione, ma, prima di farlo, occorre spiegare che cosa è unALGORITMO.
L’algoritmo euclideo del MCD
Un algoritmo si puo definirlo, in forma del tutto semplice, come: proce-dimento operativo ben ordinato adatto per risolvere un problema.
In matematica, uno degli algoritmi più famosi è il procedimento descrittoappresso, con il quale si può calcolare, in modo del tutto facile, il massimocomun 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 mettiN1 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 ilvecchio 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 eucli-deo, prova ad applicarlo su due numeri qualsiasi.
Per farlo segui l'esempio proposto nella pagina seguente dove l'algoritmoin questione viene utilizzato per il calcolo del Massimo Comun Divisore deinumeri 12 e 30.
pag. Manuale Logo94
N1 N2
(per il passo n. 1) 12 30
(per il passo n. 3) 30 12
(per il passo n. 4) 18 12
(riprendere dal passo n. 2)
(per il passo n. 4) 6 12
(riprendere dal passo n. 2)
(per il passo n. 3) 12 6
(per il passo n. 4) 6 6
(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, potraiconvenire che il numero ottenuto quale risultato, alla conclusione di ciascu-na prova, è, ogni volta, il massimo comun divisore dei due numeri dipartenza.
Questo algoritmo, come puoi facilmente vedere, non richiede l’uso dimoltiplicazioni e di divisioni e nel suo passo n. 5 contiene una istruzioneche somiglia molto ad una chiamata ricorsiva.
Essa, tra l’altro, risulta espressa nello stesso "stile" nel quale vieneespressa una procedura ricorsiva del LOGO.
Procedura LOGO per l’algoritmo euclideo.
Trovi di seguito la procedura LOGO adatta per eseguire l’algoritmoeuclideo finalizzato alla ricerca del massimo comun divisore di due numeriscelti a piacere. Osserva che, nella procedura stessa, viene utilizzata:
- ripetutamente l’istruzione: RIPORTA, quindi tale procedura è unaprocedura-funzione;
- la ricorsività, quindi è anche una procedura ricorsiva.
11. Creazione e uso di funzioni 95 pag.
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 duevolte l’istruzione: SE...
Questa istruzione si chiama istruzione condizionale, o istruzione dicontrollo. Essa è costituita da almeno due parti ben distinte: un condizionepreliminare seguita da un successivo comando. Ebbene il suo significato è ilseguente: viene eseguito il comando solo nel caso che la condizionepreliminare 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 istruzioneSE ... entra in funzione solo se i due numeri scelti quali argomenti dellaprocedura risultano essere uguali.
pag. Manuale Logo96
In questo caso la procedura si ferma, perchè l’istruzione RIPORTA laobbliga 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 moltosimile alla prima.
Questa seconda istruzione SE ... entra in funzione solo alla condizioneche :N1 abbia, in quel momento un valore minore di :N2 In questo casol’invocazione originaria di EUCLIDE :N1 :N2 viene modificata e vieneconsiderata invece come fosse EUCLIDE :N2 :N1, ossia vengono scam-biati di posto i valori dei numeri proposti in ingresso.
In pratica, questo significa che MCD di 8 e di 12, per esempio, vienecalcolato ricominciando da capo l’algoritmo, considerando però comeprimo 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 diMCD quale operazione commutativa. Ossia:
MCD (n, m) = MCD (m, n)
Se, infine, nessuna delle due prime condizioni risulta essere vera, vienechiamata, in modo ricorsivo, l’intera procedura dall’inizio. I suoi argomentivengono, però, modificati. Il primo sarà costituito dalla differenza tra :N1e :N2 , che diventa il nuovo valore di :N1, mentre il secondo argomentoconserva 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 dellapagina precedente, con il programma in BASIC scritto nella pagina accanto,sotto il relativo diagramma di flusso. Questo programma in BASIC consenteanch'esso di calcolare il MCD di due numeri scelti a piacere.
Nel confronto potrai notare come il LOGO sia assai più vicino alleespressioni del tuo linguaggio quotidiano rispetto al linguaggio BASIC, ilquale è un linguaggio di programmazione tra i più usati, se non il più usatoin assoluto.
11. Creazione e uso di funzioni 97 pag.
10 Input "Primo numero";A20 Input "Secondo numero";B30 IF A = B THEN 8040 IF A > B THEN 6050 C=A; A=B; B=C60 A = A - B70 GOTO 3080 PRINT "MCD = "; A90 END
Calcolo del minimo comune multiplo
Con la procedura EUCLIDE è anche facile calcolare il minimo comunemultiplo (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. Manuale Logo98
Altri esempi.
Mediante procedure ricorsive, con il LOGO possono essere formulate ecalcolate moltissime funzioni utili. Una di esse, per esempio, è la funzioneFATTORIALE. 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), quellodi 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 assaigrande, anche se il numero considerato, ossia (n), aumenta di poco. E ciò losanno bene coloro che giocano al Totocalcio.
Ecco la procedura LOGO con la quale potrai calcolare il fattoriale di unnumero 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 vienesubito dopo. Se invece tale relazione è FALSA, devi eseguire ciò che vieneprescritto 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 minoredi 100 (:NUM), per arrivare fino a 100.
11. Creazione e uso di funzioni 99 pag.
Nella procedura compaiono due novità, che sono:
- la presenza della istruzione SCRIVI. Questa istruzione serve per scriveresequenze di elementi in riga, anzichè in colonna come avviene quando siusa 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 verrannoseparati ciascuno da uno spazio vuoto. Ciò in quanto ogni FRASE, che peril LOGO deve essere costituita da due elementi, sarà formata da un numeroe 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, seA > B). Se la relazione risulta VERA, esegui l’istruzione scritta subito dopoSE_VERO. Se l’istruzione risulta invece FALSA, esegui l’istruzione scrittasubito 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. Manuale Logo100
PER LEGGI NUMERO
QUI “NONNUMERO
AS “NUMERO LEGGIPAROLA
SE NON NUMERO? :NUMERO [VAI “NONNUMERO]
RIPORTA :NUMERO
FINE
Questa procedura , che devi d ig i tare ass ieme a l la proceduraLEGGINUMERO che l'accompagna, stampa una “fattura” per la vendita dibottiglie di vino aventi costo differente. Costano 3 000 lire l’una, quandovengono vendute meno di dieci alla volta. Mentre per quantità maggiori illoro 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 laprocedura ricorsiva POLISPI :L :A che aveva l'inconveniente di nonfermarsi; quindi doveva essere interrotta con i tasti <CTRL> <PAUSA>.Riprendi quella procedura e modificala con le innovazioni introdotte nellaprocedura SPIRALE con VERIFICA ... SE_VERO ... SE_FALSO ... .
PROCEDURE INTERATTIVE
Si dicono "interattive" quelle procedure con le quali si stabilisce unaforma di dialogo tra l'operatore e il computer. Nella esecuzione di questeprocedure il computer formula una o più domande all'operatore. Questodeve dargli le relative risposte. Il computer le controlla e fornisce l'esito delcontrollo effettuato. Di seguito sono riportate, quali esempi, due procedureinterattive abbastanza semplici che puoi collegare allo studio della geome-tria e due piuttosto complesse da collegare con il mondo dei numeri.
11. Creazione e uso di funzioni 101 pag.
Procedure PERIMETRO E AREA
Ecco due procedure per proporre, in opposizione distintiva, le nozioni diperimetro e di area. Nella prima procedura dovrai scegliere una delle duenozioni. Il computer, a seconda della tua indicazione, disegnerà il contorno(ossia il perimetro) di un rettangolo oppure ti proporrà un rettangolocolorato nel suo interno. Ciascuno dei due disegni viene accompagnato daun commento esplicativo. Ovviamente il rettangolo potrai successivamentesostituirlo con qualsiasi altro poligono o figura.
Per mandare in esecuzione questa procedura dovrai invocarla conPERIAREA. 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 rettangolocolorato con il messaggio: QUESTA È L'AREA.
La seconda procedura potrai attivarla digitando AREAPERI. Sulloschermo comparirà a caso il contorno di un rettangolo e oppure un rettan-golo 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. Manuale Logo102
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
11. Creazione e uso di funzioni 103 pag.
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 lostudio delle tabelle moltiplicative. Al suo interno interno è inclusa lasottoprocedura ricorsiva di primo livello CONTROLLA. Dentro di questac'è la sottoprocedura di secondo livello LEGGINUMERO, dalla quale sipassa, mediante una scelta condizionale, alla sottoprocedura di terzo livellodenominata OK.
pag. Manuale Logo104
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
11. Creazione e uso di funzioni 105 pag.
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 perindovinare, con il minor numero possibile di domande, un numero misterio-so, compreso tra uno e cento e "pensato" dal computer.
Nella procedura INDOVINA è inserita la sottoprocedura di primo livelloGIOCO. La procedura GIOCO è ricorsiva e contiene due sottoproceduredi secondo livello inserite nel seguente ordine: prima LEGGINUMERO edopo 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. Manuale Logo106
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
12. Isometrie piane e funzioni trigonometriche 107 pag.
ISOMETRIE NEL PIANO CARTESIANO
E FUNZIONI TRIGONOMETRICHE
RICORDIAMO LA GEOMETRIA CARTESIANA
Come ricorderai la geometria cartesiana organizza lo schermo dellatartaruga come fosse un reticolato di quadratini attraversato in orizzontaledall’asse delle X, chiamato anche asse delle ascisse, e in verticale dall’assedelle 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 andandoverso sinistra, diventando negativi subito a sinistra della TANA. Similmen-te, i valori di Y aumentano salendo in alto e diminuiscono scendendo inbasso, diventando negativi subito sotto la Tana.
Ricordiamo le istruzioni del LOGO già illustrate nel capitolo 4 (pagg. da35 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> VAXY [<num> <num>]
XCOR YCOR
Per spostare la tartaruga ad una certa distanza puoi mettere insieme duedi queste istruzioni.
Per esempio, con:
VAX XCOR +50
puoi spostare la Tartaruga di 50 passi a destra senza farle cambiare ladirezione.
pag. Manuale Logo108
Così con:
VAXY [XCOR +30 YCOR -20]
puoi spostare la tartaruga di 30 passi a destra e di 20 passi in bassosenza farle cambiare direzione.
Ecco una procedura nella quale puoi utilizzare alcune di queste istruzioniper 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 untriangolo nel piano. Nella esecuzione delle isometrie gli assi cartesianihanno il ruolo di assi per le simmetrie assiali e queste vengono collegate conle 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 109 pag.
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. Manuale Logo110
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
12. Isometrie piane e funzioni trigonometriche 111 pag.
RICORDIAMO LA GEOMETRIA POLARE
Come sai già, per conoscere qual è la direzione attuale della Tartarugac’è il comando DIR. Se batti DIR, il LOGO potrebbe risponderti
34.006
o qualunque altro numero di gradi che indica di quanto la tartaruga è girataverso destra (ossia, nel verso in cui ruotano le lancette dell’orologio) apartire dalla direzione verticale verso l’alto che va considerata quale DI-REZIONE 0.
L’istruzione DIR può essere usata dentro una procedura come condizionedi blocco. Ecco, per esempio, come puoi utilizzarla dentro una proceduraricorsiva 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 dinuovo, vedrai che in questo secondo caso la tartaruga continua a girare sulcontorno del cerchio senza mai fermarsi. Perchè?
Se vuoi assegnare alla tartaruga una certa direzione, serviti della istruzio-ne ASDIR, il cui significato è: ASsegna DIRezione. ASDIR 45, peresempio, fa assumere alla Tartaruga la direzione di 45 gradi a destra rispettoalla direzione verso l’alto (0).
Per cambiare di un certo angolo l’attuale direzione della Tartaruga puoiscrivere insieme le ultime due istruzioni. Per esempio, potresti digitareASDIR DIR + 30 e la Tartaruga, in questo caso cambierebbe direzione di30 gradi a destra, girando quindi nello stesso modo in cui ruoterebbe sericevesse il comando DESTRA 30.
Ricorda infine che l’istruzione VERSO richiede due argomenti numericiche vengono intepretati come le coordinate di un punto dello schermo.Questa istruzione riporta la misura in gradi dell’angolo formato, in rotazio-ne destrorsa, dalla direzione 0 (zero) e dalla direzione congiungente la
pag. Manuale Logo112
posizione della tartaruga con il punto indicato. Anche questa istruzione puoicollegarla alle precedenti.
Così, per esempio, digitando ASDIR VERSO 50 (-50) la tartarugaruoterà in direzione di un punto che sta 50 passi a destra e 50 passi sottorispetto al punto della TANA.
FUNZIONI TRIGONOMETRICHE
Nel disegno che è in basso viene rappresentato il significato operativodelle funzioni trigonometriche SEN e COS.
SEN
richiede come argomento una ampiezza angolare espressa in gradi. Necalcola il seno, ossia l’ordinata ricavata dalla situazione cartesiana sonoraffigurata. Per esempio: SEN 90 produce, come risposta: 1
COS
richiede anch’essa come argomento una ampiezza angolare espressa ingradi. Ne calcola il coseno, ossia l’ascissa ricavata dalla situazione cartesianasotto raffigurata. Per esempio: COS 180 produce, come risposta: -1.
COS α α α α α
SEN α α α α α
ααααα
13. Le liste e le parole. 113 pag.
LE LISTE E LE PAROLE
LE LISTE
Una lista è una successione di oggetti Logo racchiusi tra parentesiquadrate. Gli oggetti si chiamano elementi della lista e possono esserenumeri, parole (non precedute da apici) o altre liste (scritte in formaesplicita 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 precedutedalle 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 terzoelemento è 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 formatadal 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. 114 Manuale Logo
Operazioni sulle liste
Un elemento si può mettere al primo o all’ ultimo posto di una lista usandoi 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 unalista 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 possonoanche essere elementi uguali e il comando FRASE si limita a concatenare glielementi della prima lista a quelli della seconda.
L’ultimo esempio consente di mettere in evidenza la differenza tra ilconcetto di lista e il concetto matematico di insieme: la lista, come dice ilnome, è un elenco di “segni” dotato di una certa struttura che non ha nullaa che vedere con gli eventuali “significati” dei segni stessi.
13. Le liste e le parole. 115 pag.
Diverso è il risultato che si ottiene usando la funzione
LISTA
la quale riporta, come FRASE, una lista formata dai suoi argomenti, ma sequalcuno di questi è esso stesso una lista, come tale rimane nella listarisultato.
MOSTRA LISTA [1 2 3] [4 5 6] [[1 2 3] [4 5 6]]
AS “NOME “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ì comeabbiamo fatto finora, al posto che le compete nelle operazioni che su di essasi vogliono eseguire.
Può però anche essere assegnata come valore ad una variabile e, diconseguenza, essere nominata usando il nome della variabile.
Per esempio si può dare il nome “FRATELLI alla lista [LUCA GIORGIOMARCO STEFANIA] mediante l’istruzione: AS “FRATELLI [LUCAGIORGIO MARCO STEFANIA].
Da questo momento in poi tutte le operazioni che si possono eseguire suuna 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]
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 primaeliminando il primo o 1' ultimo elemento, con i comandi
MENPRI
MENULT
Infine si può sapere il numero di oggetti che compongono una lista, conla 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 unsolo 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 incui cercarlo (una lista, ma può essere anche una parola).
13. Le liste e le parole. 117 pag.
STAMPA ELE 2 :FRATELLI GIORGIO
Per conoscere la posizione di un’elemento in un oggetto si può usare laprimitiva
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 dilettura in funzione.
La procedura che segue consente di “dichiarare” al Logo una collezionedi cognomi, ciascuno seguito da una lista di nomi di persone che compon-gono 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
pag. 118 Manuale Logo
A questo punto abbiamo creato una piccola “anagrafe” di famiglie.
Con semplicissime procedure come quella che segue possiamo “interro-gare” la nostra anagrafe per riottenere i dati che abbiamo inseriti e lerelazioni 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 sonodelle sequenze ordinate di oggetti (primitive, procedure e argomenti).
Da questa identità discende un’altra proprietà delle liste: esse possonoessere eseguite.
La primitiva:
ESEGUI <LISTA>
esegue le istruzioni contenute nella lista.
LE PAROLE
Una parola in Logo è una successione arbitraria di lettere, numeri esimboli speciali ottenibili dalla tastiera; essepossono contenere al lorointerno anche spazi bianchi.
Che cosa si può fare con le parole
Sulle parole si possono eseguire quasi tutte le azioni che si possonoeseguire sulle liste (naturalmente gli ordini non sono sempre uguali a quelliche si usano per le liste).
13. Le liste e le parole. 119 pag.
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 rispettivamentecon 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 letteracon le funzioni MENPRI e MENULT:
STAMPA MENPRI “CARLOMAGNO ARLOMAGNO
STAMPA MENULT “NEMICO NEMIC
Combinando le funzioni precedenti non è difficile ottenere alcunesemplici “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 funzionainvece 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
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 INPRIe 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’altracon 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
Appendice A: Glossario M-LOGO - LOGO IBM 121 pag.
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 dellospazio in cui si muove la tartaruga.
Se I’argomento di ASCAMPO è “APERTO, allora il campo in cui può muoversi latartaruga non è limitato dai margini dello schermo ed essa potrà spostarsi anche al difuori di esso (anche se, ovviamente, non sarà visibile).
Se invece 1' argomento di ASCAMPO è la parola “CHIUSO, il campo della tartarugaviene limitato allo schermo. In questo caso un comando che portasse la tartaruga aduscirne produrrebbe il messaggio “TARTA contro il MURO.
Infine, quando ASCAMPO viene seguito dalla parola “CIRCOLARE, lo spazio in cuisi muove la tartaruga viene trasformato in modo tale che se un comando porta la tartarugaad uscire dallo schermo, essa riapparirà dal lato opposto e di qui continuerà il suomovimento.
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 dellatartaruga; 1' argomento può essere 0, 1, 2, o 3.
Ricordiamo che, quando si disegna, mentre i colori disponibili sono 16, in ogni casosullo 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 coloridisponibili e viene controllato mediante il comando ASSFONDO, che accetta comeargomento 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 corrisponderannodunque a colori diversi.
COMANDI DELLA GRAFICA
GLOSSARIO M-LOGO LOGO-IBM
pag. Manuale Logo122
Si noti che il colore del triangolino raffigurante la tartaruga a volte non coincide conquello della penna: il simbolo della tartaruga viene infatti scritto, punto per punto, in uncolore effettivo che è dato dalla composizione dal colore nominale della penna e delcolore corrente del punto stesso, secondo la tabella seguente, che si riferisce ai colorimediante 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’argo-mento <num> indica la direzione prescelta in gradi. Come in un sistema di riferimentodi tipo bussola, 0 gradi corrispondono al Nord (l’alto dello schermo) e, aumentando igradi, si ruota la direzione in senso orario.
Diversamente dai comandi DESTRA e SINISTRA, che fanno eseguire alla tartarugauna rotazione il cui risultato dipende dalla posizione precedente della tartaruga, ilcomando ASDIR assegna alla tartaruga una direzione assoluta, ovvero indipendentedalla 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, ilcolore e la tavolozza indicati in <lista>.
Il primo dei tre elementi di <lista> specifica il modo (SU, GIU, CANCEPENNA oINVERPENNA); il secondo elemento è un numero compreso tra 0 e 3 che indica il coloreda usare (vedi ASCOL); il terzo elemento può essere 0 o 1 e indica la “tavolozza” chesi 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 schermografico. Se Logo è partito utilizzando lo schermo monocromatico, prima di poterutilizzare lo schermo a colori per eseguire disegni, è necessario dare un comandoASSCHERMO “TARTA; questo serve infatti ad avvertire Logo dell’esistenza delloschermo grafico.
Appendice A: Glossario M-LOGO - LOGO IBM 123 pag.
Se si cerca di eseguire un comando grafico, appartenente al mondo TARTA, senzaaver dato il comando ASSCHERMO “TARTA, si otterrà il messaggio “a TARTA nonpiace questo schermo”.
Se invece non si usa lo schermo monocromatico e Logo è partito dallo schermografico, ASSCHERMO “TARTA riserverà lo schermo intero ai disegni, eliminando lerighe per i comandi. ASSCHERMO “COMANDI è il comando inverso: con esso tutto loschermo viene riservato ai comandi e al testo.
ASSCHERMO “MISTO, infine, divide lo schermo in una zona grafica e una zonatesto. Mediante il comando ASRIGHE <num> si possono definire le grandezzerispettive delle due zone.
ASSCHIA <num> SETSCRUNCH
ASSCHIA determina il rapporto di schiacciamento delle immagini. Serve a compen-sare gli errori di proporzione dello schermo grafico. Se, per esempio, un programma chedovrebbe disegnare un cerchio produce un’ellisse sul vostro schermo, allora ASSCHIApermette di correggere le proporzioni della figura.
L’argomento di ASSCHIA esprime il rapporto di schiacciamento desiderato tra ladistanza 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. Dimi-nuendo 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 campodella tartaruga. Per esempio, con SCHIA uguale a l, i punti vanno da 100 a -99 mentrecon SCHIA uguale a 0.85, che è il valore di schiacciamento al momento della partenzadi 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 colorecorrispondente 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 diluminosità. La C presente nel loro nome sta ad indicare una tonalità più luminosa delcolore di base. I colori reali talvolta dipendono però moltissimo dalle caratteristiche delvideo utilizzato e dalla regolazione della luminosità.
pag. Manuale Logo124
AVANTI (A) <num> FORWARD (FD)
AVANTI fa avanzare la tartaruga, nella direzione in cui si trova, del numero di passiindicato dall’argomento. Dopo l’esecuzione di un comando AVANTI, la direzione dellatartaruga 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, CHIUSOo CIRCOLARE.Per la descrizione dei tipi di spazio possibili per la tartaruga vediASCAMPO.
CANCEPENNA PENERASE (PE)
Trasforma la penna della tartaruga in una gomma da cancellare. Se lo stato in cui sitrova la penna è CANCEPENNA la tartaruga, muovendosi, cancellerà dallo schermotutti i punti che trova sul suo percorso (cancellare un punto significa assegnargli il coloredello sfondo). Per uscire dallo stato CANCEPENNA si deve assegnare un nuovo statoalla 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 direzioneprecedente, 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 DESTRA60, 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 dellatartaruga e dalla verticale dello schermo. La direzione 0 corrisponde alla parte in altodello schermo, la direzione 180 al basso e la direzione 90 alla destra.
ASDIR 90 DESTRA 90 SINISTRA 45
STAMPA DIR 135
Appendice A: Glossario M-LOGO - LOGO IBM 125 pag.
DOVE POS
DOVE è una funzione il cui valore è una lista contenente due coordinate (una ascissae una ordinata) del punto in cui si trova la tartaruga.
AS “POSIZIONE DOVE MOSTRA DOVE
[53 38] :POSIZIONE [53 38]
GIU PENDOWN (PD)
Il comando GIU fa abbassare la penna della tartaruga sul disegno, in modo che, inseguito, 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 INDIETRO -45
INVERPENNA PENREVERSE (PX)
Trasforma il modo di funzionare della penna della tartaruga. Dopo un comandoINVERPENNA la tartaruga invertirà il colore dei punti su cui passa: se il punto ha ilcolore dello sfondo otterrà il colore della penna, se invece il punto ha un colore diversoda 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 nelLogo 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. Sipuò fornire questa indicazione dando i comandi ASSCHERMO “TARTA, oppureASSCHERMO “MISTO.
NASTARTA (NT) HIDETURTLE (HT)
Rende la tartaruga invisibile. Anche se invisibile, la tartaruga accetta tutti i comandinormalmente; è quindi possibile disegnare con la tartaruga anche senza farla maicomparire sullo schermo.
pag. Manuale Logo126
PENNA 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 terzoindica 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 vuolrappresentare un oggetto in movimento.
Si può infatti disegnare 1'oggetto, spostare la tartaruga, cancellarlo e ridisegnarlosenza che la tartaruga debba ogni volta essere riposizionata, come accadrebbe usando ilcomando PULISCISCHERMO.
PULISCI può anche servire per pulire la zona grafica prima di caricare un disegno dadischetto 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 schermoriservata ai comandi. Le scritte appartenenti al foglio o quelle che fanno parte dei disegnirestano 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’internodella figura . Nel far ciò è prudente dare il comando SU per evitare che la traccia lasciataentrando 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 RIEMPIFINE
Appendice A: Glossario M-LOGO - LOGO IBM 127 pag.
SCHIA . SCRUNCH
Il valore di SCHIA è il rapporto di schiacciamento (vedi ASSCHIA ) dellaimmagine. SCHIA può servire per conoscere, all’interno di una procedura, di quantipunti all’incirca è composto il campo della tartaruga. Infatti mentre la dimensioneorizzontale è sempre di 320 punti quella verticale varia leggermente al variare del fattoredi 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 ilcolore di penna corrente.
SCRIPUNTO [45 78]
SFONDO BACKGRUOUND (BK)
Il valore di SFONDO è il codice del colore assegnato allo schermo che può variare da0 a15. Per una più completa spiegazione del funzionamento del meccanismo del colorevedi anche ASTAVOLOZZA, ASSFONDO e ASCOL. Per visualizzare la gamma deicolori 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 indicatodall’argomento. Dopo 1'esecuzione di questo ordine la direzione assunta dalla tartarugadipenderà anche dalla direzione precedente.
SU PENUP (PU)
Fa sollevare la penna della tartaruga. Se la penna è in posizione alzata, durante i suoispostamenti la tartaruga non scrive sullo schermo. La procedura seguente serve pervisualizzare 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 nellaposizione di coordinate 0,0 prima di iniziare un disegno.
pag. Manuale Logo128
VAX <num> SETX
Ordina alla tartaruga di spostarsi orizzontalmente fino al punto di ascissa pari alnumero fornito come argomento.
VAXY <lista> SETXY
Ordina alla tartaruga di andare alla posizione specificata dai due numeri checompongono 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 coordinataverticale uguale al suo argomento.
VERSO <num> <num> TOWARDS
Il valore della funzione VERSO è la direzione assoluta (vedi ASDIR) che si deveassegnare alla tartaruga perché essa si trovi pronta ad avanzare verso il punto specificatodalle 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 diintestazione, sono le parole corrispondenti del Logo-IBM nella versione in inglese.
4. Il contrassegno # indica che in quella istruzione va inserito il numero di argomentispecificato. Se si vuole usare un numero maggiore, o minore, di argomenti, l’interaistruzione va scritta entro parentesi tonde
Appendice A: Glossario M-LOGO - LOGO IBM 129 pag.
NUMERI E OPERAZIONI
ACASO <num> RANDOM
Funzione il cui valore è un numero scelto a caso tra i numeri interi non negativiminori 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 ingradi sessagesimali.
ARRO <num>
Questa funzione fornisce il numero intero ottenuto arrotondando il valore del suoargomento. 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 operazionearitmetica e quindi condiziona il livello di precisione ottenibile nei calcoli.
L’argomento di ASCIFRE può variare da 1 a 100 per le sole operazioni aritmeticheelementari. 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 ; ASSO44 - 51 = 7
CIFRE
Indica il numero delle cifre significative utilizzato nei calcoli numerici. EsempioASCIFRE 7 ; CIFRE 7
COS <num> COS
Fornisce come valore il coseno dell’argomento.
pag. Manuale Logo130
DIFFERENZA <num> <num> 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 vainserito uno spazio prima del sottraendo. Se non si osserva questa regola il Logo leggei l secondo a rgomento numer ico sempl icemente come numero nega t ivo .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 comeargomento. 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 significativestabilito con ASCIFRE (max. 32).
Esempio: ASCIFRE 10 PI = 3.141592654
POTENZA <num> <num>
Questa funzione riporta il primo argomento, considerato come base, elevato allapotenza specificata del secondo argomento, considerato come esponente.
Esempio: POTENZA 4 3 = 43 = 64
Appendice A: Glossario M-LOGO - LOGO IBM 131 pag.
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 casol’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 suoiargomenti. Es.: QUOZIENTE 12 5 = 2. Usando i due argomenti con l’operatoreDIVISIONE, 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 numerifornitegli come argomenti.
Esempi: RESTO 34 5 = 4 ; resto 56 8 = 0
RIACASO RERANDOM
Azzera la sequenza di numeri pseudo-casuali utilizzati da ACASO. RIACASOpermette, 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. Manuale Logo132
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 unaparola, il suo valore è il numero di caratteri che costituiscono la parola stessa.
STAMPA CONTA [CANE SERPENTE] 2STAMPA CONTA “ALFABETO 8
ELE <num> <par> / <lista> ITEM
La primitiva ELE è una funzione che restituisce in uscita quell’elemento del suosecondo argomento il cui numero d’ordine è indicato dal primo argomento.
Il secondo argomento può essere una parola, oppure una lista. Se è una parola, ELEfrornirà 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 delsecondo argomento, si otterrà il messaggio d’errore: “ ..... non ha abbastanza elementi”.Esempi:
STAMPA ELE 2 “CANE AMOSTRA ELE 3 [CANE GATTO MUCCA GALLINA] MUCCA
FRASE <ogg> <ogg> SENTENCE
# Il valore fornito da questa primitiva è una lista costituita dagli argomenti diFRASE: a differenza di LISTA però, se un argomento è esso stesso una lista, nella listache FRASE fornisce come valore appariranno gli elementi di tale lista e non la listastessa. FRASE fornisce cioè una lista formata dai suoi argomenti che non sono liste edagli elementi delle liste fornite come argomenti.
Per difetto FRASE richiede due argomenti; se questi sono in numero diverso, sideve racchiudere tra parentesi tonde FRASE e tutti i suoi argomenti. Esempi:
PAROLE E FRASI
SOMMA <num> <num> SUM
# Il valore di questa funzione è la somma dei suoi due argomenti. Con più di dueargomenti si debbono usare le parentesi tonde.
TAN
Il valore della funzione TAN è la tangente del suo argomento espresso in gradisessagesimali.
Esempio: TAN 56 = 1.4825602
Appendice A: Glossario M-LOGO - LOGO IBM 133 pag.
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 <ogget-to> 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 è laCONSOLE, 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 latartaruga premendo più volte i tasti F , R e L . La procedura va interrotta premendo i tasti<CTRL PAUSA>.
PER DISEGNAAS “CARATTERE LEGGICARSE :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 tastierao dal dispositivo di lettura attivo in quel momento.
Gli elementi della lista riportata sono le parole e le liste che Logo incontra nellalettura fino al primo delimitatore di linea (<RETURN> nel caso della CONSOLE) chenon sia contenuto in una sottolista, o fino alla fine dell’ archivio.
pag. Manuale Logo134
AS “RISPOSTA LEGGILISTAIO SONO LA RISPOSTADigitando 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 è laCONSOLE, l’esecuzione della primitiva non termina finché non viene premuto il tasto<RETURN>.
AS “X LEGGIPAROLAPAROLONEDigitando :X Logo risponde con la scritta PAROLONESTAMPA LEGGIPAROLA
Digitando: IO SONO UNA PAROLA Logo risponde con la scritta: IO
LISTA <ogg> <ogg> LIST
# Il valore della funzione LISTA è una lista formata dai suoi argomenti, che possonoessere parole o liste essi stessi.
Per difetto LISTA richiede due argomenti; se questi sono in numero diverso, si deveracchiudere tra parentesi tonde LISTA e tutti i suoi argomenti. LISTA crea anche listedi una sola parola. Se i suoi argomenti sono liste produce una lista di liste, contrariamen-te a FRASE che produrrebhe una lista avente come elementi quelli delle liste fornitecome 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 “MASTROASTRO
Appendice A: Glossario M-LOGO - LOGO IBM 135 pag.
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 acapo dopo aver completato 1' ordine. Contrariamente a SCRIVI e STAMPA se 1’oggettoè una lista, MOSTRA lo scrive fra parentesi quadre.
MOSTRA “CAVOLO CAVOLOMOSTRA [SEDIA TAVOLO CUCINA] [SEDIA TAVOLO CUCINA]
PAROLA <par> <par> WORD
# Riporta la parola ottenuta concatenando i suoi argomenti.
Di norma PAROLA richiede due argomenti. Se questi sono in numero diverso, sideve racchiudere PAROLA con tutti i suoi argomenti tra parentesi tonde.
MOSTRA PAROLA “PESCE “CANEPESCECANE
MOSTRA (PAROLA “TRI “ANGOLO “SCALENO)TRIANGOLOSCALENO
PRI <par> / <lista> FIRST
Riporta il primo elemento del suo argomento. Se l’argomento è una lista riporta il suoprimo elemento, se è una parola il primo carattere.
MOSTRA PRI [CANE SERPENTE CASA] CANEMOSTRA PRI [[ALFA GAMMA] [A B C] [4 5 78]] [ALFA GAMMA]MOSTRA PRI “DONNA D
SCRIVI (SC) <ogg> TYPE
# Scrive un oggetto, che può essere una parola o una lista, sul dispositivo di uscitacorrente senza farlo seguire da un delimitatore di linea.
Per scrivere più di un oggetto si devono racchiudere primitiva e argomenti fraparentesi tonde; in questo caso gli oggetti non saranno separati da uno spazio.
Se l' oggetto è una lista verrà scritto senza parentesi quadre.
SCRIVI “TAVOLO TAVOLOSCRIVI [SEDIA TAVOLO CUCINA] SCRIVI ”AGAS
SEDIA TAVOLO CUCINAAGAS
pag. Manuale Logo136
STAMPA (ST) <ogg> PRINT (PR)
# STAMPA scrive uno o più oggetti, che possono essere parole o liste, sullo schermoo sul dispositivo di uscita corrente.
Dopo aver scritto gli oggetti indicati, STAMPA scrive un delimitatore di linea. Sulloschermo 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 essereracchiusi fra parentesi tonde. In questo caso saranno scritti sulla stessa riga ma separatida uno spazio.
STAMPA “CAVOLO STAMPA “MELONECAVOLOMELONE
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, riporta1’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 “UOMOO
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 unaespressione. La variabile assegnata con AS ha valore “globale”: viene memorizzata nellamemoria 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 137 pag.
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, pereditare una nuova procedura, è consigliabile ripulirlo dal precedente contenuto.
La dimensione del foglio può essere prescelta prima di entrare in Logo, con ilcomando di sistema operativo SET FOGLlO=<num> che permette di scegliere il numerodi caratteri massimo e quindi permette di adattare la dimensione del foglio alleesigenze.
CANCEPROC <par> / lista> ERASE (ER)
Cancella dallo spazio di lavoro la procedura i cui nome è <par>, oppure tutte leprocedure cui nomi sono contenuti in <lista>. Esempi:
CANCEPROC “CANE Cancella la procedura CANECANCEPROC [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 proce-dure. Se CANCEPROC_IN non è seguita da alcun argomento, verranno eliminate tuttele procedure presenti nello spazio di lavoro, escluse quelle contenute nei pacchettinascosti.
E’ possibile però cancellare soltanto le procedure di un determinato pacchetto oinsieme di pacchetti. Nel primo caso CANCEPROC_IN sarà seguito dal nome delpacchetto di cui si vogliono cancellare le procedure, nel secondo caso da una listacontenente tutti i nomi dei pacchetti le cui procedure si vogliono eliminare dallo spaziodi lavoro.
La presenza di un argomento opzionale impone alcune precauzioni: non si devonoscrivere altre istruzioni sulla stessa riga dopo CANCEPROC_IN. Logo infatti le inter-preterebbe come argomento di CANCEPROC_IN. Esempio:
STlTOLlPER PROCEDURA1 PER PROCEDURA2PER PROCEIDURA3 PER ALTREPROCEDURE
CANCEPROC_IN STITOLIA questo punto sul video non appare alcuna scritta poichè le predette procedure sono statetutte cancellate
CANCETUTTO_IN (<par> / <lista>)
Questa primitiva, oltre a cancellare tutte le procedure, cancella anche le variabiliglobali memorizzate nello spazio di lavoro mediante il comando AS. Soltanto quest’ul-time 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, siale variabili sono state tutte cancellate.
pag. Manuale Logo138
COSA <par> THINGH
COSA fornisce il valore della parola assegnatale come argomento (vedi AS).
Se 1’argomento di COSA è espresso come letterale, ad esempio COSA “ASINO laprimitiva COSA può essere sostituita dai due punti “:” : Così anziché COSA “X possiamoscrivere il più breve :X. In quest’ultimo caso si deve prestare attenzione a non metterespazi fra i due punti e la parola che segue.
Se però 1' argomento di COSA non è una parola, ma una funzione che riporta unaparola come risultato, non si possono usare i due punti. Logo cercherebbe infatti divalutare il titolo della funzione come se si trattasse di una variabile, anziché eseguirlaper ottenerne il valore, che vogliamo sia attribuito come argomento a COSA. Esempi:
AS “CASA “GRATTACIELO COSA “CASA GRATTACIELOAS “NUMERO “DATO AS “DATO 34521 COSA “NUMERO DATOCOSA COSA “NUMERO 34521 COSA “DATO 34521 COSA :NUMERO 34521
EDITA <par> / <lista> EDIT (ED)
Questa primitiva consente di entrare nel foglio, dove è possibile modificare ecorreggere procedure definite in precedenza e presenti nello spazio di lavoro. Per far ciòoccorre digitare EDITA “nomeprocedura. Entrati così nel foglio di edizione occorrepremere il tasto <Enter> e si entra così nella zona in alto del foglio dove è riportata laprocedura da modificare. Dopo averla modificata, per uscire dal foglio occorre premereil 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 aduna singola procedura oppure ad un blocco di procedure, ossia viene attribuita esclusi-vamente a quella procedura o a quel blocco.
Questa nozione sottintende il concetto di “ambiente” di una variabile. L’ambientedi una variabile è l’insieme di procedure e istruzioni nelle quali è possibile riferirsi a talevariabile, come oggetto identificato in modo univoco, avente un determinato valore chesi può utilizzare e modificare.
Quando una variabile viene definita al livello comandi del Logo mediante il comandoAS (assegnazione globale della variabile), essa è accessibile sia a livello comandi, sia aquello 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” nellaprocedura PINCOPALLINO, ossia se PINCOPALLINO contiene una istruzione del tipoLOCALE “AZ, allora la parola AZ ed il suo valore sono accessibili soltanto nellaprocedura PINCOPALLINO, ne l le p rocedure r i ch iamate da l la p roceduraPINCOPALLINO, nelle procedure richiamate da queste ultime, e così via.
Al di sopra di PINCOPALLINO, AZ è sconosciuta, e lo stesso nome “AZ si può usareper 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 fannoparte 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 moltierrori. Permette infatti di considerare le procedure come delle “scatole nere” cheeseguono delle operazioni sui loro argomenti senza influenzare in alcun modo il resto delprogramma.
Appendice A: Glossario M-LOGO - LOGO IBM 139 pag.
I parametri di una procedura sono sempre parole locali; il comando LOCALE siutilizza quindi solo per le parole che non vengono passate come parametri o per quellecreate con i comandi AS e CHIAMA all’ intemo della procedura o dalle procedure da essarichiamate.
L’argomento di LOCALE è una parola, oppure, se si vogliono dichiarare come localipiù 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 manipo-lazione dei testi delle procedure. Questo comando lavora in modo molto simile alcomando EDITA.
NASFOGLIO
Il comando NASFOGLIO nasconde il foglio senza alterare però in alcun modo il suocontenuto.
PER <par> TO
Apre la scrittura del corpo di una procedura. Effettuata l’intera operazione la si devechiudere battendo la parola FINE.
Il primo argomento di PER diventerà il nome della procedura. Dopo il primoargomento si possono scrivere altre parole precedute dal due punti, che diventeranno ledenominazioni delle variabili della procedura, come illustrato nell’esempio.
La primitiva PER ha una caratteristica particolare: essa vuole sempre una parolaletterale 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 PER PARETE :LATO PARETE RIPETI 4[A :LATO D 90] SALIRE FINE TETTOFlNE
PER TETTO :LATO PER SALIRE :LATO RIPETI 3[A :LATO D 120] A :LATO D 30FINE FINE
SPROC <par> PO
Scrive il testo della procedura indicata come argomento. Esempio:
Dopo aver definito la procedura TETTO :LATO, digitando SPROC “TETTO il Logomostrerà sul video il testo della procedura stessa, ossia:
PER TETTO :LATO RIPETI 3[A :LATO D 120]FINE
pag. Manuale Logo140
SPROC_IN <par> <lista> 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 pacchet-to 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, dovrannoessere invocati sotto forma di lista.
ASDISCO <par> SETDISK
Seleziona l’unità disco con la quale si vuole lavorare. Indica cioè al Logo l’unità discosulla 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 sistemaoperativo.
ASDISCO “A ARCHIVIO? “PROVA VEROASDlSCO “C ARCHIVlO? “PROVA FALSOLogo 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 fareattenzione a non cancellare archivi ancora necessan.
CAT [GIACOMO MLOGO.EXE MIEIDATI]CANCEARC “GIACOMOCAT [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 delDOS 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à perarchiviare, o estrarre archivi.
ARCHIVI E PERIFERICHE
Appendice A: Glossario M-LOGO - LOGO IBM 141 pag.
L’ argomento di CATALOGO permette di selezionare gli archivi che andranno a farparte della lista. Se è presente un argomento, solo gli archivi il cui nome è uguale allaparola fornita saranno inclusi nella lista.
E’ possibile ottenere un catalogo parziale degli archivi includendo nella parolafornita come argomento i caratteri e ?. Un nome di archivio è considerato uguale allaparola, se contiene un qualsiasi carattere al posto del punto interrogativo e qualsiasicarattere 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 devonoquindi 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 specificatodal 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 vannoforniti sotto forma di lista.
CONSERVA “MlEPROC Scrive il contenuto dello spazio di lavoro sul file MIEPROCCONSERVA “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 indicatodall’ argomento. Le immagini conservate possono in un secondo tempo essere recuperatecon il comando RECUPERA_DlS.
E’ anche possibile usare CONSERVA_DIS per stampare il disegno con la stampantegrafica: se come archivio si indica la “STAMPANTE, questo comando copia il contenutodello schermo grafico sulla stampante.
CONSERVA_DIS “STAMPANTE funziona però solo se è stato eseguito il comandoGRAPHICS a livello di sistema operativo. Questo comando carica in memoria le routinesdi pilotaggio della stampante grafica.Poiché GRAPHICS occupa uno spazio equivalentea 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 leistruzioni 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 esegueautomaticamente questa operazione sugli oggetti in memoria. Il secondo argomento,facoltativo, permette di formare un pacchetto con gli oggetti letti.
pag. Manuale Logo142
Una forma particolare del comando RECUPERA “FOGLIO permette di leggere leprocedure 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 comeargomento 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. Incaso 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 argomentifra parentesi tonde.
AMB si usa generalmente in congiunzione con le primitive VERIFICA o SE perrealizzare dei test multipli.
ASMODO <num>
La primitiva ASMODO permette di stabilIre lo stato del controllore del video. Ilcontrollore video è quella pane del calcolatore che stabilisce la modalità di presentazionedegli oggetti sul video. ASMODO permette, ad esempio, di ottenere delle righe di 80caratteri 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 quellecorrispondenti allo schermo colore, e 7 per la modalità relativa allo schermomonocromatico. L’ unica modalità grafica, cioè, in cui è possibile disegnare, è lamodalità 4.
Poiché le modalità da 0 a 4 sono applicabili solo allo schermo grafico, mentre lamodalità 7 si può applicare solo allo schermo monocromatico. Si deve prestare attenzio-ne a non tentare di assegnare al controllore video una modalità relativa ad uno schermoinesistente, 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 ricercadi uno schermo inesistente rifiutando qualsiasi ulteriore comando e costringa a spegnerela macchina per riacquistare il controllo.
Gli schermi grafici non a colori, come per esempio quello dell’ Olivetti M 24, sonoconsiderati 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 usandolo schermo a colori. E’ in modo 7, se si sta invece usando lo schermo monocromatico.
Appendice A: Glossario M-LOGO - LOGO IBM 143 pag.
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 dalsuo argomento. La durata è espressa in cicli di sistema, ognuno dei quali dura circa 50millesimi di secondo.
L’ esempio seguente produrrà una pausa di circa 10 secondi prima di far ricomparireil “?” 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: STOPriporta il controllo dalla procedura in corso di esecuzione alla procedura che ha chiamato(che generalmente non è il livello comandi), mentre BREAK riporta sempre al livellocomandi.
CIAO . DOS
Questa primitiva provoca 1' uscita dal Logo e il ritomo al livello comandi delsistema operativo.
Lasciando il Logo il calcolatore cercherà 1' interprete dei comandi del sistemaoperativo (archivio COMMAND.COM) che dovrà quindi essere sul dischetto che si trovanell’ 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’inter-ruzione provocata dal comando PAUSA. Se però, nel corso della pausa, si è verificato unerrore, il comando CONTINUA produrrà il messaggio: non posso fare CONTINUA.
INDICE
Questa primitiva fornisce una lista di tutte le parole che Logo conosce. Faranno partedella lista tutte le parole, inclusi i nomi delle primitive, delle procedure e delle variabili.
La lista presenta le parole in ordine alfabetico.
pag. Manuale Logo144
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 lamemoria, ma, poiché impiega un certo tempo per eseguirla, è utile poter decidere ilmomento, durante 1' esecuzione di un programma, in cui eseguire l’operazione di puliziadella memoria.
È utile inoltre dare un comando LIBERA prima di un comando NODI, per conoscerequal è effettivamente lo spazio di memoria che ci rimane disponibile; altrimenti ilnumero di nodi liberi può risultare minore di quello reale, per via del fatto che alcunezone 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] LISTA? :ELENCO VERO
AS "ELENCO "CARLO LISTA? :ELENCO FALSO
NODI
La funzione NODI fornisce il numero di nodi ancora liberi. Il Logo misura la memoriain nodi, ognuno dei quali corrisponde a cinque celle di memoria (Bytes).
Il numero totale di nodi disponibili dipende dalla quantità di memoria installata e dalnumero di nodi occupati da parole e procedure.
Prima di eseguire la primitiva NODI è consigliabile eseguire il comando LIBERA perevitare che Slogo consideri come occupati anche i nodi che contengono informazioni nonpiù valide.
NODI 3457 LIBERA NODI 6784
NON <valore logico> 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 hanessun effetto (vedi TRACCIA).
Appendice A: Glossario M-LOGO - LOGO IBM 145 pag.
NUMERO? NUMBERP
Il valore di NUMERO? è VERO se il suo argomento è un numero, altrimenti è FALSO.
AS "ELENCO [A B C D] MOSTRA NUMERO? :ELENCO FALSO
STAMPA NUMERO? 56 VERO
STAMPA NUMERO? 3456 VERO
OPPURE <valore logico> <valore logico> (O) OR
Il valore dell’ espressione è VERO se almeno uno degli argomenti è vero. Se nessunodegli 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 sonoforniti da funzioni, è consigliabile usare le parentesi tonde intorno a ciascuna di esse peressere 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 cuiargomenti devono sempre essere fra parentesi se non sono letterali. Se non si osservaquesta precauzione, si rischia che il Logo esegua 1' operatore prima di calcolare i dueelementi da paragonare e poi usi il risultato, (VERO o FALSO) negli altri calcoli. Unesempio 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; adesempio QUI “PINCOPALLINO è corretto mentre QUI RIPORTA PAROLA e QUIPAROLA “ALFA “BETA non lo sono.
E’ bene dare alle etichette dei nomi comprensibili che servano anche a ricordare laposizione della riga nella procedura.
PER LEGGINUMERO QUI "NONNUMERO AS "NUMERO LEGGIPAROLA SE NON NUMERO? NUMERO [VAI “NONNUMERO] RIPORTA :NUMEROFINE
RIPETI <num> <lista> REPEAT
Esegue le istruzioni racchiuse tra parentesi quadre nella lista per un numero di volte pari alprimo argomento.
RIPETI 3 [STAMPA [SONOBRAVO]]SONO BRAVO SONO BRAVO SONO BRAVO
pag. Manuale Logo146
RIPORTA <ogg> OUTPUT (OP)
Termina una procedura e trasmette un oggetto alla procedura chiamante, cioé laprocedura che contiene l’ordine di esecuzione della procedura corrente. Se non c’è unaprocedura chiamante restituisce la gestione di Logo all’operatore.
RIPORTA é il comando che permette di definire delle nuove fùnzioni. Senza di essosarebbe impossibile trasferire valori da una procedura ad un altra se non tramite variabilicomuni 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 succes-siva.
Se si utilizza il formato facoltativo, la lista che segue ALTRIMENTI sarà eseguitasolo se il controllo ha dato il risultato falso e quindi non è stata eseguita la prima delledue liste.
AS “PROVA “VEROSE PROVA [STAMPA “SI] ALTRIMENTI [STAMPA “NO]SISE NON PROVA [STAMPA “SI] ALTRIMENTI [STAMPA “NO]NO
SE_FALSO (SEF ) <lista dì istruz.> IFFALSE (IFF)
Se 1' ultimo controllo (VERIFICA o SE) ha dato risultato FALSO, esegue la lista. Ilcomando SE_FALSO è in tutto e per tutto simile al comando ALTRIMENTI.
Il cornando SE infatti agisce anche come VERIFICA per cui SE_FALSO utilizzerà ilrisultato dell’ ultimo comando di controllo dato in ordine di tempo, senza distinguere inalcun modo se si trattava di un SE o di un VERIFICA.
AS “Nl 33 AS “N29 VERIFICA :Nl < :N2SEF [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, altrimentipassa all’ istruzione successiva.
Il comando SE_VERO accetta la clausola ALTRIMENTI, ma si può ancheutilizzare al suo posto il comando SE_FALSO.
AS “N1 33 AS “N2 941 VERlFICA :N1 < :N2SEV [STAMPA [NON ERA FALSO]]NON ERA FALSO
Appendice A: Glossario M-LOGO - LOGO IBM 147 pag.
STOP STOP
Chiude 1'esecuzione della procedura corrente e trasferisce il controllo allaprocedura chiamante.
STOP ha lo stesso effetto di FINE, mentre FINE però serve a logo per segnare la finedella procedura, e di conseguenza può comparire solo al termine della procedura, STOPpuò essere usato quante volte si vuole per indicare che la procedura deve terminare alverificarsi di una data condizione.
PER “SCRIVINUMERI.DA.A : A :BSE A > :B [STOP]STAMPA :ASCRIVINUMERl.DA.A :A + 1 :B
FINE
TRACCIA
Serve per chiedere il tracciamento di procedure e primitive. TRACCIA, senzaargomento, traccia tutte le procedure e le primitive, con argomento solo quellespecificate.
Tracciare una primitiva significa mostrare su schermo il suo nome e il valorecalcolato per gli argomenti subito prima della sua esecuzione.
Tracciare una procedura significa mostrare il suo nome e il valore calcolato per gliargomenti all’ingresso, il suo nome e 1' eventuale valore riportato all’ uscita.
TRACCIA permette di seguire L'esecuzione di un programma per poter rintracciaregli 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 potrebberorisultare piuttosto lenti.
VERIFICA <valore logico> TEST
Esegue un controllo il cui risultato influenzerà i comandi SE_VERO e SE_FALSOeseguiti successivamente all’ intemo della procedura.
VERIFICA LEGGLISTA = [QUESTA E’ UNA RIGA]QUESTA NON E’ UNA RIGASEF [ST “FALSO]FALSO
pag. Manuale Logo148
ALTRE PRIMITIVE M-LOGO NON COMMENTATE
PULSANTE?
PUNTO
RECUPERA_QUADRO
REGISTRA
RIGA
RINOMINA
SCHERMO
SCI
SCOPRI
SCRICAR
SCRIVI_A
SCRIVI_SU
SLISTEPROP
STRINGA
STUTTO_IN
SUCC
SUCHESCRIVI
SUONA
SVAR_IN
TARTA?
TASTIERA
TASTO
TASTO?
TAVOLOZZA
TEMPO
TESTO
UGUALE?
ULTLINEA
VUOTO?
ZITTO
DEF?
DEFINISCI (DF)
DISCO
DOVELEGGI
DOVESCRIVI
ELE?
ERRORE
ESEGUI
ESP
FINELEGGI?
FINESCRIVI?
FOGLIO?
LANCIA
LEGGISTRINGA
LEGGI_A
LEGGI_DA
LISTARIF
LISTAPROP
LN
LUNGARC
MAIUSCOLE
MISURA
MODO
NONREGISTRARE (NREG)
PAC
PACTUTTO
PARTE
PAUSA
POSELE
PREC
PRIMITIVA?
PROP
ACCHIAPPA
ARCAPERTI
ARCHIVIO?
ASCII
ASCOLTESTO
ASCOM
ASCURSORE
ASECO
ASMAIUSCOLE
ASPROP (AP)
ASRIGHE
ASSFONCAR
ASTASTO (AT)
ASTAVOLOZZA
ASTEMPO
CANCEPROP
CANCEPROP_IN
CANCEVAR
CANCEVAR_IN
CARATTERE (CAR)
CHIAMA
CHIUDI
CHIUDITUTTO
COLORE
COSTESTO
CONSERVA_QUADRO
COPIADEF
COPRI
COSA?
CURSORE
DACHELEGGI
DEC
Appendice A/2: Glossario M-LOGO - LOGO IBM pag. 149
COMANDI LOGO-IBM
Note:
Le forme abbreviate delle primitive, se esistono, vengono riportate tra parentesi. Gli argomenti dei comandi sono indicati in corsivo equelli tra parentesi sono facoltativi.Il contrassegno # indica che nella istruzione va inserito il numero di argomenti specificato. Quando gli argomenti sono di più, o dimeno,l’intera istruzione deve essere scritta tra parentesi. Esempi: LISTA “A “B ; (LISTA “A) ; (LISTA “A “B “C)
Turtle Graphics
BACK (BK) nMoves turtle n steps back.
BACKGROUND (BG)Outputs number representing background color forgraphics screen.
CLEANErases graphics screen without affecting turtle.
CLEARSCREEN (CS)Erases screen, moves turtle to [0 0], sets heading to 0.
DOT posPuts a dot of the current pen color at the coordinatesspecified bypos.
FENCEFences turtle within edges of screen.
FILLFills in a closed shape with the current pen color.
FORWARD (FD) nMoves turtle n steps forward.
HEADINGOutputs turtle’s heading (its direction) in degrees.
HIDETURTLE (HT)Makes turtle invisible.
HOMEMoves turtle to [0 0] and sets heading to 0.
LEFT (LT) nTurns turtle n degrees left (counterclockwise).
LOADPIC filespecLoads screen image infilespec directly onto screen.
PALETTE (PAL)Outputs number for the palette of colors
PENOutputs pen state: list containing mode (PD, PU,PE, PX), color, and palette.
PENCOLOR (PC)Outputs number representing pen color.
PENDOWN (PD)Puts pen down.
PENERASE (PE)Puts eraser down.
PENREVERSE (PX)Puts reversing pen down.
PENUP (PU)Raises pen.
POSOutputs position of turtle in coordinates.
RIGHT (RT) nTurns turtle n degrees right (clockwise).
SAVEPIC filespecSaves screen image in filespec.
SCRUNCHOutputs current aspect ratio of screen.
SETBG nSets background in graphics to color number n.
SETHEADING (SETH) nSets turtle’s heading (direction) to n degrees.
SETPAL nSets the palette of colors to n.
SETPC nSets pen color to n
pag. Manuale Logo150
.SETPEN penlistSets pen to list of mode, color, and palette.
SETPOS posMoves turtle to coordinates specified by pos
.SETSCRUNCH nSets aspect ratio of screen to n.
SETSHAPE nChanges the turtle’s shape to a pattern specified byASCII code n.
SETX xMoves turtle horizontally to position with x-coordinate.
SETY yMoves turtle vertically to position with y-coordinate.
SHAPEOutputs the turtle’s current shape.
SHOWNPOutputs TRUE if turtle is visible.
SHOWTURTLE (ST)Makes turtle visible.
SNAP nCopies image under turtle onto the turtle’s shapeand stores it in ASCII code n.
STAMPStamps copy of turtle’s shape onto the screen.
TOWARDS posOutputs heading turtle would have if facing thecoordinates specified by pos.
WINDOWRemoves boundaries from turtle field.
WRAPMakes turtle field wrap around edges of screen.
XCOROutputs x-coordinate of turtle’s position.
YCOROutputs y-coordinate of turtle’s position.
Words and Lists
ASCII charOutputs ASCII code for the char (character)
BUTFIRST (BF) oggOutputs all but first element of its input.
BUTLAST (BL) oggOutputs all but last element of its input.
CHAR nOutputs character whose ASCII code is n.
COUNT oggOutputs the number of elements in its input.
EMPTYP oggOutputs TRUE if ogg is empty list or empty word.
EQUALP ogg1 ogg2Outputs TRUE if its inputs are equal.
FIRST oggOutputs first element of its input.
FPUT ogg listOutputs list formed by putting its first input atbeginning of list.
ITEM n oggOutputs nth element of its input.
LAST oggOutputs last element of its input.
LIST ogg1 ogg2# Outputs list of its inputs, preserving their liststructure.
LISTP oggOutputs TRUE if ogg is a list.
LPUT ogg listOutputs list formed by putting its first input atend~of list.
MEMBERP ogg1 ogg2Outputs TRUE if its first input is an element of itssecond input.
NUMBERP oggOutputs 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 oggOutputs TRUE if ogg is a word.
Appendice A/2: Glossario M-LOGO - LOGO IBM pag. 151
Variables
EDNS (package(list)) Stands for EDit NameS.Star ts Logo edi tor (conta in ing var iables inpackage(list)).
LOCAL name# Makes name local.
MAKE name oggGives the value ogg to the variable name.
NAME ogg nameMakes ogg the value of name.
NAME P nameOutputs TRUE if name has a value.
THING nameOutputs the value of name.
Arithmetic Operations
ARCTAN y (x)Outputs arctangent of y or x/y in degrees.
COS aOutputs cosine of a degrees.
DIFFERENCE a bOutputs b subtracted from a.
EFORM n aOutputs n in scientific notation using a digits.
EXP aOutputs e to the power of a.
FORM n a (b)Outputs number n with a digits before the decimalpoint and b digits after it.
INT nOutputs integer portion of n.
LN aOutputs log of a to the base e.
PIOutputs mathematical constant pi greco.
POWER n aOutputs n to the power of a.
PRECISIONOutputs the number of significant digits a numberis rounded to when used by Logo.
PRODUCT a b#Outputs product of its inputs.
QUOTIENT a bOutputs a divided by b.
RANDOM nOutputs random non-negative integer less than n.
REMAINDER a bOutputs remainder of a divided by b.
RERANDOMMakes RANDOM act reproducibly.
ROUND nOutputs n rounded off to nearest integer.
SETPRECISION nSets current precision of numbers to n.
SIN aOutputs sine of a degrees.
SQRT n Outputs square root of n.
SUM a b# Outputs sum of its inputs.
Defining and Modifying Procedures
COPYDEF newname nameCopies definition of name onto newname.
DEFINE name listMakes list the definition of name.
DEFINEDP wordOutputs TRUE if word is the name of a procedure.
EDIT (ED)Starts Logo editor (containing named procedures).
PRIMITIVEP nameOutputs TRUE if name is a primitive.
TEXT nameOutputs definition of procedure name as a list.
TO name (inputs)Begins defining procedure name
pag. Manuale Logo152
Flow of Control
CATCH name listRuns list; returns when THROW name is run.
CO (ogg)Resumes a procedure after a pause. Outputs obj toPAUSE.
ERROROutputs list of information about most recent error.
GO wordTransfers control to LABELword.
IF pred list1 (list2)Ifpred is TRUE, runs list1; otherwise, list2.
IFFALSE (IFF) listRuns list if most recent TEST was FALSE.
IFTRUE (IFT) listRuns list if most recent TEST was TRUE.
LABEL wordCreates a labeled line for use by GO.
OUTPUT (OP) oggReturns control to calling procedure with obi asoutput.
PAUSESuspends running of the procedure.
REPEAT n listRuns list n times.
RUN listRuns list; outputs what list outputs.
STOPStops procedure and returns control to caller.
TEST predDetermines whether pred is TRUE or FALSE.
THROW nameTransfers control to corresponding CATCH.
Logical Operations
AND pred1 pred2#Outputs TRUE if all of its inputs are TRUE.
NOT predOutputs TRUE if pred is FALSE.
OR pred1 pred2#Outputs TRUE if any of its inputs are TRUE.
Communicating with the Outside World
ALLOPENOutputs a list of devices/files which are currentlyopen.
BUTTONP nOutputs TRUE if button on paddle or joystick n isdown.
CLOSE device/ filespecCloses a currently opened device/filespec.
CLOSEALLCloses all currently opened files and devices.
DIR ((drive:)/filespec) Displays names of files ondisk.
DISKOutputs the current disk drive.
.DOSReleases control to the Disk Operating System.
DRIBBLE device/filespecStarts process of sending a copy of text on thescreen to device/filespec.
EDITFILE infilespec (outflkspec)Starts Logo editor with the contents of infilespec.Saves infilespec under outflkspec.
ERASEFILE filespecErases file filespec from diskette.
FILELEN filespecOutputs the length in bytes of filespec.
FILEP filespecOutputs TRUE if filespecexists.
KEYPOutputs TRUE if a key has been typed but not yetread.
NODRIBBLETurns off dribble process and closes the dribble file.
OPEN device/filespecOpens devicefilespec.
Appendice A/2: Glossario M-LOGO - LOGO IBM pag. 153
PADDLE nOutputs rotation of dial on paddle n or position ofstick on joystick n.
POFILE filespecPrints out the contents of filespec.
PRINT (PR) ogg#Prints its input followed by carriage return andlinefeed, but doesn’t print the outer brackets oflists.
READCHAR (RC)Outputs character read by the current file or device(default is keyboard). Waits, if necessary.
READCHARS (RCS) nOutputs n characters read by the current file ordevice (default is keyboard). Waits, if necessary.
READEOFPOutputs TRUE if the position of thefilespec beingread is the end of the file.
READEROutputs the name of current device/filespec openedfor reading.
READLIST (RL)Outputs line read by current file or device (defaultis keyboard). Waits, if necessary.
READPOSOutputs reader position of current file being read.
READWORD (RW)Outputs first word read by current file or device(default is keyboard). Waits, if necessary.
SETCOM n bdrt parity databits stopbitsSets the serial communications line.
SETDISK dnve:Sets disk to drive:.
SETREAD device/filespecSets the device/filespec from which the output ofRC, RC 5, RL, and RW will be read.
SETREADPOS nSets the file position for reading the current filespec.
SETWRITE device/filespecSets the destination of inputs to PRINT, TYPE,SHOW, PO, and POFILE.
SETWRITEPOS nSets the file position for writing into the currentfilespec.
SHOW oggPrints its input followed by carriage return and linefeed - with brackets for lists.
TONE freq durProduces a sound of frequencyfreq for duration dur.
TYPE ogg#Prints its input, but not the outer brackets of lists.
WAIT nCauses a pause of about n 18ths of a second.
WRITEOFPOutputs TRUE if the write pointer is at the end ofthe filespec being written.
WRITEPOSOutputs position of write pointer in file currentlybeing written to.
WRITEROutputs name of current device/filespec open forwriting
Text and Screen
CAPSOutputs TRUE if Caps Lock key is disabled andfalse if active.
CLEARTEXT (CT)Clears text portion of screen.
CURSOROutputs position of cursor on screen.
FULLSCREEN (FS)Devotes entire screen to graphics. Same as F4 key.
MIXEDSCREEN (MS)Allows both text and graphicson the screen. Sameas F2 key.
SCREENOutputs 1 or 2, depending on whether you areworking with one or two screens.
SETCAPS predTRUE disables Caps Lock key; FALSE enables it.
SETCURSORposPuts cursor at the screen position specified by pos.
pag. Manuale Logo154
SETSCREEN nSets number of screens to 1 or 2.
SETTC colorlistSets t ex t co lors to co lor l i s t ( fo reground ,background).
SETTEXT nSets text portion of graphics screen to n lines frombottom.
SETWIDTH n (a)Sets width of screen to n columns. Second inputmoves 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.
WIDTHOutputs current width of screen.
Workspace Management
BURY packageBuries procedures and variable names contained inpackage.
CONTENTSOutputs list of all names, procedure names, andother words in workspace.
ERALL (package(list))Erases everything (in (package(list).
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)).
LOAD fllespec (package)Loads filefilespec into workspace (into package).
NODESOutputs number of free nodes.
PACKAGE package name (list)Puts named procedure(s) in package
PKGALL package Puts in package everything not already packaged.
PO name(list)Prints definitions of named procedure(s).
POALL (package( list))Prints definitions of procedures (in package(list)).
PONS (package(list))Pr in t s names and va lues o f var iab les ( inpackage(list)).
POPS (package(list))Prints definitions of procedures (in package(list)).
POTS (package(list))Prints title lines of procedures (in package(list)).
RECYCLEPerforms a garbage collection.
REPARSEReparses procedures.
SAVE device/filespec (package(list))Writes whole workspace or package(list) ontodevice/filespec.
UNBURY packageUnburies procedures and names in package.
Property Lists
GPROP name propOutputs value of prop property of name.
PLIST nameOutputs property list of name.
PPROP name prop objGives property prop with value obj to name.
PPS (package(list))Pr in t s p roper ty l i s t ( s ) o f every th ing ( inpackage(list)).
REMPROP name propRemoves property prop from property list of name.
Allegato B: Archivi e procedure pag. 155
PER QUADRATORIPETI 4 [A 30 D 90]
FINE
Sottoprocedura fondamentale
PER FILA.QUADRATIRIPETI 3 [QUADRATO D 90 A 30 S 90]
FINE
Contiene una chiamata di primo livello della sottoprocedurafondamentale.
PER FILASIN.QUADRATIS 90 RIPETI 3 [QUADRATO A 30]
FINE
Come sopra.
PER FINESTRARIPETI 4 [QUADRATO S 90]
FINE
Come sopra.
PER NOVE.QUADRATINTRIPETI 4 [FILA.QUADRATI S 90]
FINE
Al secondo livello chiama la sottoprocedura "Fila.quadrati"che, a sua volta, chiama la sottoprocedura "Quadrato"
PER PIZZORIPETI 12 [NOVE.QUADRATI D 30]
FINE
Contiene una invocazione di terzo l ivello: chiama"Nove.quadrati", che chiama "Fila.quadrati" che, a sua volta,chiama "Quadrato"
PER PIZZ08RIPETI 8 [NOVE.QUADRATI D 45]
FINE
Come la precedente.
PER TORRE.QUADRATIS 90 FILA.QUADRATI
FINE
Contiene una chiamata di secondo livello.
PER TORRESIN.QUADRATID 90FILASIN. QUADRATI
FINE
Come sopra.
PER TRENTASEI.QUADRRIPETI 4 [NOVE.QUADRATI D 90]
FINE
Contiene una chiamata di terzo livello
PER AVVIA SU S 90 A 155 D 90 I 125 GIUFINE
Altra procedura fondamentale.
PER QUA.QUAAVVIARIPETI 4 [QUADRATO SU A 255 D 90GIU]
FINE
Contiene due chiamate al primo livello: una chiama laprocedura fondamentale "Avvia" e l'altra chiama laprocedura fondamentale "Quadrato".
ARCHIVI DI GRAFICAPROCEDURE E SOTTOPROCEDURE SEMPLICI
C O M P.Q U A
pag. 156 Manuale Logo
C O M P. T R I
PER DENT.TRIS 90RIPETI 3 [TORRE1.TRI S 120]
FINE
Con chiamata di terzo livello.
PER TORRE3.TRITORRE2.TRIA 15 D 90 A 30
FINE
Come sopra.
PER VETRATA.TRIRIPETI 3 [FILA.TRI D 210]
FINE
Con chiamata di secondo livello.
PER DENT3.TRIRIPETI 3 [DENT.TRI S 30]
FINE
Con chiamata di quarto livello.
PER FILAVETRATARIPETI 3 [VETRATA.TRI S 90 A 90 D90]
FINE
Con chiamata di terzo livello.
PER SPOSTAMENTOSU I 116 D 90 A 120 S 90 GIU NTFINE
Procedura fondamentale.
PER GRAN.TRISPOSTAMENTORIPETI 3 [FILAVETRATA D 120]SU TANA GIU
FINE
Con duplice chiamata: una di primo livello e l'altra diquarto livello.
PER TRIRIPETI 3 [A 30 D 120]
FINE
Sottoprocedura fondamentale
PER FILA.TRIS 90RIPETI 3 [TRI A 30]
FINE
Con chiamata di primo livello.
PER FILADES.TRID 30RIPETI 4 [TRI D 60 A 30 S 60]
FINE
Come sopra.
PER TORRE1.TRID 90FILA.TRI
FINE
Con chiamata di secondo livello.
PER TORRE2.TRID 90FILA.TRID60 A 30 D 120 D 90FILA.TRI
FINE
Con doppia chiamata di secondo livello.
PER TORRE4.TRID 90RIPETI 3 [TRI D 60 A 30 S 60 I 15]TRI
FINE
Con doppia chiamata di primo livello.
Allegato B: Archivi e procedure pag. 157
PER PUPAZZOCORPOGAMBEBRACCIATESTA
FINE
PER CORPOA 30 I 30
FINE
PER GAMBEGAMBASINISTRAGAMBADESTRA
FINE
PER GAMBADESTRAS 30 I 30 D 90A 5 I 5 S 90A 30 D 30
FINE
PER GAMBASINISTRAD 30 I 30 S 90A 5 I 5 D 90A 30 S 30
FINE
PER BRACCIAA 20 D 90A 20 I 40A 20 S 90 I 20
FINE
PER TESTAA 30 S 90 A 5RIPETI 3 [D 90 A 10]D 90 A 5 TANA NT
FINE
PER AULASU I 70 GIUFILA.BANCHIRIPETI 2 [RITORNO FILA.BANCHI]AS “INIZIO [AUTO]
FINE
PER BANCOSEDIASPOSTAMENTOTAVOLO
FINE
PER FILA.BANCHIPAVIMENTORIPETI 5 [BANCO SPOSTAMENTO]
FINE
PER PAVIMENTOD 90 A 150 I 300 S 90
FINE
PER RITORNOSU S 90 A 150 D 90 A 70 GIU
FINE
PER SEDIAA 40 I 20 D 90 A 16 D 90 A 20
FINE
PER SPOSTAMENTOS 90 A 10 S 90
FINE
PER TAVOLOA 30 D 90 A 25 D 90 A 30
FINE
A U L AP U P A Z Z O
pag. 158 Manuale Logo
PER ESTATEASSFONDO 15ASCOL 2CAMPODIGRANOSU S 40 A 80 GIUSOLESU TANA GIU
FINE
PER CAMPODIGRANOSU S 90 A 150 D 90 GIURIPETI 19 [SPIGA SEMINARE]S 90 A 310TANA NT
FINE
PER SPIGAA 20 RIPETI 4 [SPIGHETTA A 5]I 40
FINE
PER SPIGHETTAD 45 A 8 I 8 S 90 A 8 I 8 D 45
FINE
PER SEMINARED 90 SU A 16 GIU S 90
FINE
PER SOLERIPETI 10 [ARCO RAGGIO]SU D 90 A 20 ASCOL 2 RIEMPI
FINE
PER ARCORIPETI 12 [A 1 D 3]
FINE
PER RAGGIOSU S 90 A 5 GIU A 20SU I 25 D 90 GIU
FINE
E S T A T E
PER BANDIERAASTADRAPPOROSSOVERDE
FINE
PER ASTAASSFONDO 15 ASCOL 1 A 80
FINE
PER DRAPPOD 90 A 60 D 90 A 40 D 90 A 60 I 20D 90 A 40 I 40 S 90 I 20 D 90 A 40I 40 SU TANA GIU
FINE
PER ROSSOSU VAXY [10 50] GIU ASCOL 2 RIEMPI
FINE
PER VERDESU VAXY [50 50] GIU ASCOL 1 RIEMPISU TANA GIU
FINE
B A N D I E R A
PER AUTOSU VAX -70 GIU ASSFONDO 15 ASCOL 6A 30 SCATOLA A 10 D 90 A 50SU A 10 S 90 GIU RETTANGOLOSU S 90 A 10 GIUD 90 A 50 D 90 A 80 D 90 A 80SCATOLA A 10 D 90 A 35CERCHIO A 60 CERCHIO A 35 TANASU A 10 ASCOL 3 RIEMPI VATANA GIU
FINE
PER CERCHIORIPETI 72 [A 1.5 S 5]
FINE
PER RETTANGOLORIPETI 2 [A 40 D 90 A 60 D 90]
FINE
PER SCATOLARIPETI 4 [S 90 A 10]
FINE
A U T O
Allegato B: Archivi e procedure pag. 159
F I G U R E. 1 F I G U R E. 2
PROCEDURE E SOTTOPROCEDURE CON VARIABILI
PER DECAGONO :LRIPETI 10 [A :L D 360 / 10]
FINE
PER ESAGONO :LRIPETI 6 [A :L D 360 / 6]
FINE
PER FIGURA :LRIPETI 8 [QUADRATO :L D 45]RIPETI 6 [ROMBO :L D 60]
FINE
PER FINESTRA :LRIPETI 4 [QUADRATO :L S 90]
FINE
PER QUADRATO :LRIPETI 4 [A :L D 90]
FINE
PER QUINQUA :LRIPETI 4 [RIPETI 4 [A :L D 90] D 90 A :L]
FINE
PER RETTANGOLO :LRIPETI 2 [A :L D 90 A (:L * 3) D 90]
FINE
PER ROMBO :LRIPETI 2 [A :L D 60 A :L D 120]
FINE
PER STELLA :LFINESTRA :L D 45FINESTRA :L S 45
FINE
PER TRIANGOLO :LRIPET I 3 [A :L D 120]
FINE
PER CINQUE :LRIPETI 5 [QUADRILATERO :L D 360 / 5]
FINE
PER CRISANTEMO :LRIPETI 36 [QUADRILATERO :L D 360 / 36]
FINE
PER ELICA :LRIPETI 2 [QUADRILATERO :L D 180]
FINE
PER FARFALLA :LRIPETI 3 [QUADRILATERO :L D 120]
FINE
PER FIORE :LRIPETI 18 [QUADRILATERO :L D 360 / 18]
FINE
PER FIORELLINO :LRIPETI 9 [QUADRILATERO :L D 360 / 9]
FINE
PER GIRANDOLA :LRIPETI 4 [QUADRILATERO :L D 90]
FINE
PER MARGHERITA :LRIPETI 12 [QUADRILATERO :L D 360 / 12]
FINE
PER QUADRILATERO :LRIPETI 2 [A :L D 30 A :L D 150]
FINE
PER SOLE :LRIPETI 72 [QUADRILATERO :L D 360 / 72]
FINE
PER SUPERGIRANDOLA :LRIPETI 6 [QUADRILATERO :L D 360 / 6]
FINE
PER TANTIDISEGNI :L :VOLTERIPETI :VOLTE [QUADRILATERO :L D 360/ :VOLTE]
FINE
pag. 160 Manuale Logo
PER MULTIPOLIGONO :N :LRIPETI :N [D (360 / :N) POLIGONO :L 40]
FINE
PER POLIGONO :N :LRIPETI :N [A :L D 360 / :N]
FINE
PER QUADRATO :LRIPETI 4 [A :L D 90]
FINE
PER RETTANGOLO :L1 :L2RIPETI 2 [A :Ll D 90 A :L2 D 90]
FINE
PER RUOTAPOLIGONO :N :LRIPETI (360 / :L) [D :L POLIGONO :N 50]
FINE
PER TURBINA :L :NRIPETI :N [A (2 * :L) QUADRATO :L I (2 *:L) D 360 / :N]
FINE
PER VENTAGLIO :L1 :L2 :VOLTESINISTRA :VOLTE * 5RIPETI :VOLTE [RETTANGOLO :Ll :L2 D10]TANA
FINE
PER CERCHIO :RAGGIOLOCALE “LATOAS “LATO 2 * :RAGGIO * 3.1416 / 60RIPETI 60 [A :LATO D 360/60]
FINE
PER CERCHIO.C :RAGGIOLOCALE “NLAS “NL 2 * :RAGGIO * 3.1416 / 60SU S 90 A :RAGGIO D 90 GIURIPETI 60 [A :NL D 360/60]SU D 90 A :RAGGIO S 90 GIU
FINE
PER ESAGONO.INSCRITTO :RAGGIOCERCHIO.C :RAGGIOSU S 90 A :RAGGIO D 120 GIURIPETI 6 [A :RAGGIO D 60]SU TANA GIU
FINE
PER QUADRATO.CIRCOSCRITTO :RAGGIOCERCHIO.C :RAGGIOSU S 90 A :RAGGIO D 90 A :RAGGIOGIURIPETI 4 [D 90 A (:RAGGIO * 2)]SU TANA GIU
FINE
PER QUADRATO.INSCRITTO :RAGGIOCERCHIO.C :RAGGIOSU S 90 A :RAGGIO D 135 GIURIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) +(:RAGGIO * :RAGGIO)) D 90]SU TANA GIU
FINE
PER TRIANGOLO.CIRCOSCRITTO : RAGGIOCERCHIO.C :RAGGIOSU A :RAGGIO * 2 D 150 GIURIPETI 3 [A (2 * RADQ (4 * :RAGGIO *:RAGGIO) - (:RAGGIO * :RAGGIO)) D 120]SU TANA GIU
FINE
PER TRIANGOLO.INSCRITTO :RAGGIOCERCHIO.C :RAGGIOSU S 90 A :RAGGIO D 150 GIURIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO)- (:RAGGIO * :RAGGIO)) D 120]SU TANA GIU
FINE
F I G U R E. 3C E R C H I
Allegato B: Archivi e procedure pag. 161
P I N O C C H I
PER PINOCCHIO :LASSCHERMO “TARTASU I 50 GIU NTGAMBE TRONCO SPOST1BRACCIO SPOST2COLLO TESTA VISONASO :L CAPPELLO SPOST3
FINE
PER GAMBEGAMBA A 25 S 90 GAMBA
FINE
PER GAMBAS 180 RETTANGOLO 50 10A 60 D 90 RETTANGOLO 20 10D 90 A 60 D 90
FINE
PER RETTANGOLO :L1 :L2RIPETI 2 [A :L1 D 90 A :L2 D 90]
FINE
PER TRONCOI 40 S 90 RETTANGOLO 80 45
FINE
PER SPOST1A 70 D 90 SU A 30 D 90
FINE
PER BRACCIOGIU RETTANGOLO 40 10A 40 RETTANGOLO 10 10
FINE
PER SPOST2SU I 50 D 90 A 15 D 90 GIU
FINE
PER COLLORETTANGOLO 10 15
FINE
PER TESTAA 10 S 90 A 10 D 90RETTANGOLO 35 35
FINE
PER VISOA 10 S 90 I 15 A 15 D 90 A 15 S 90SU I 10 GIU I 5 A 10 I 5 D 90 I 5A 10 I 5 S 90 SU A 10 GIU D 90 I 10
FINE
PER NASO :LLOCALE “ALFA LOCALE “IPOTENUSAAS “ALFA ARCTAN :L / 20AS “IPOTENUSA RADQ (:L * :L + 20 * 20)S 90 A :L D (90 + :ALFA) A :IPOTENUSAD (180 - :ALFA) A 20 D 180
FINE
PER CAPPELLOA 20 D 90 I 5 S 60RIPETI 3 [A 45 D 120]
FINE
PER SPOST3SU TANA GIU
FINE
PER SORPRESA :PASSO :INCRSE :PASSO > 80 [STOP]A :PASSO D 90SORPRESA (:PASSO + :INCR) :INCRI :PASSO S 90
FINE
PER RUOTACOLORIASSFONDO 0RIPETI 15 [ASPETTA 50 ASSFONDOSFONDO + 1]
FINE
S O R P R E S E
pag. 162 Manuale Logo
PER VEDUTAASSCHERMO “TARTA ASSFONDO 14ASCOL 9 TERRENO PS TERRENOASCOL 7 CASA 30 SU S 90 A 90 D 90GIU ASCOL 6 ALBERO 60 SU D 70 A 125GIU ASCOL 2 SOLE SU TANA NT GIUFINE
PER TERRENOSU I 100 D 90 GIUA 150 I 300 A 150 S 90FINE
PER CASA :MISURAFACCIATA :MISURA A :MISURA * 3 D 30TETTO :MISURA S 30 I :MISURA * 3FINE
PER FACCIATA :MISURAMURA MISURA D 90 A :MISURA / 3 S 90PORTONE :MISURA SU D 90 A :MISURA * 2S 90 A :MISURA * 1.5 GIU FINESTRA:MISURASU I :MISURA * 1.5 S 90A :MISURA * 2 + :MISURA / 3 D 90 GIUFINE
PER MURA :MISURAQUADRATO :MISURA * 3FINE
PER QUADRATO :LATORIPETI 4 [A :LATO D 90]FINE
PER PORTONE :MISURARETTANGOLO :MISURA * 2 :MISURAFINE
PER RETTANGOLO :LATO1 :LATO2RIPETI 2 [A :LATO1 D 90 A :LATO2 D 90]
FINE
PER FINESTRA :MISURARIPETI 4 [QUADRATO :MISURA / 2 D 90]
FINE
PER TETTO :MISURATRIANGOLO :MISURA * 3
FINE
PER TRIANGOLO :MISURARIPETI 3 [A :MISURA D 120]
FINE
PER ALBERO :MISURARETTANGOLO :MISURA :MISURA / 8A :MISURA S 90A :MISURA / 16 * 3 D 40POLIGONO 8 :MISURA / 2
FINE
PER POLIGONO :N.LATI :DISTRIPETI :N.LATI [A :DIST D 360 / :N.LATI]
FINE
PER SOLERIPETI 10 [ARCO RAGGIO]
FINE
PER ARCORIPETI 12 [A 1 D 3]
FINE
PER RAGGIOSU S 90 A 5 GIU A 20 SU I 25 D 90 GIU
FINE
V E D U T A
TERRENO
FACCIATA
ALBERORETTANGOLO
QUADRATO
FINESTRA QUADRATO
TETTO TRIANGOLO
CASA
POLIGONO
ARCOSOLE
RAGGIO
MURARETTANGOLOPORTONE
STRUTTURA DELLA
PROCEDURA "VEDUTA
VEDUTA
Allegato B: Archivi e procedure pag. 163
PROCEDURE CON ISTRUZIONE CONDIZIONALE E RICORSIVITÀ.
Come sopra
Procedura con una variabile, una istruzionecondizionale (se verifichi questa condizione,fermati) e una chiamata ricorsiva (nella terzariga la procedura chiama se stessa).
Q U A D R _ 2
PER QUADR :LATORIPETI 4 [A :LATO D 90]
FINE
PER QQ1 :LATOSE :LATO < 5 [STOP]RIPETI 4 [A :LATO QQl :LATO / 2 D 90]
FINE
PER QQ2 :LATOSE :LATO < 5 [STOP]RIPETI 4 [A :LATO D 90]QQ2 :LATO / 2
FINE
PER TANTIQUADR :VOLTESE :VOLTE = 0 [ST0P]QUADR 50 D 45TANTIQUADR :VOLTE - 1
FINE
PER QUADRATI.CRESCENTI :LATOSE :LATO = 130 [STOP]QUADR :LATOQUADRATI.CRESCENTI :LATO + 10
FINE
PER QUADRATI.CONCENTRICI :LATOSE :LATO = 150 [STOP]QUADR :LATOSU S 90 A 5 D 90 I 5 GIUQUADRATI.CONCENTRICI :LATO + 10
FINE
PER TANTIQUADRATI :VOLTE :LATOSE :VOLTE < 1 [STOP]QUADR :LATOD :VOLTE * 4TANTIQUADRATI :VOLTE - 1 :LATO
FINE
PER QUADR.CRESC :LATOVAXY [-65 -65]QUADRATI.CONCENTRICI :LATO
FINE
Come sopra
Procedura complessa: contiene una variabile,una is t ruz ione cond iz iona le , ch iama lasottoprocedura "Quadr" e include anche unachiamata ricorsiva (nella quarta riga).
Come sopra
Procedura complessa: contiene ben duevariabili, una istruzione condizionale, chiamala sottoprocedura "Quadr" e include anche unachiamata ricorsiva (nella quinta riga).
Procedura molto complessa. Chiama, alsecondo l ivel lo, la procedura r icorsiva"Quadrati.concentrici" che, a sua volta, nelproprio interno, chiama la procedura fonda-mentale "Quadr".
Sottoprocedura fondamentale con una variabi-le denominata:lato
pag. 164 Manuale Logo
O R O L O G I O
PER CRONOMETROQUADRANTELANCETTA
FINE
PER QUADRANTELOCALE “ORAAS “ORA 0RIPETI 12 [ORE :ORA AS “ORA :ORA + 1]
FINE
PER LANCETTAGIU ASCOL 1 A 50ASPETTA 10 CANCEPENNAI 50 DESTRA 360 / 225LANCETTA
FINE
PER ORE :0SU D :0 *30 A 40 GIU A 3 0SU TANA GIU
FINE
PER ALBERO.NATALE :LSU I 100 GIUTRONCO :LA :LCHIOMA :LSU TANA GIU NT
FINE
PER ALBERO1 :LUNGH :BIFORCSE :BIFORC = 0 [STOP]D 45 A :LUNGHALBERO1 :LUNGH :BIFORC - 1I :LUNGH S 90 A :LUNGHALBERO2 :LUNGH :BIFORC - 1I :LUNGH D 45
FINE
PER ALBERO2 :LUNGHSE :LUNGH < 5 [STOP]D 45 A :LUNGHALBERO2 :LUNGH / 2I :LUNGH S 90 A :LUNGHALBERO2 :LUNGH / 2I :LUNGH D 45
FINE
PER CHIOMA :LS 90 RAMIS :L D 120 RAMID :L S 90
FINE
PER RAMID :LA 2 * :L / 3 D 120A :L / 4 S 120A :L D 120A :L / 2 S 120A 2 * :L D 120 A :L
FINE
PER RAMIS :LA :L D 120A 2 * :L S 120A :L / 2 D 120A :L S 120A :L / 4 D 120A 2 * :L / 3
FINE
PER TRONCO :L RIPETI 2 [A :L D 90 A :L / 4 D 90]FINE
A L B E R I
PER ARIANNAPS PTPREPARAMUOVI
FINE
PER MUOVIAS “M LCSE 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 PREPARASU AS “P LCSE 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
A R I A N N A
Allegato B: Archivi e procedure pag. 165
PER ANGOLOPS PT PREPARASEGMENTORUOTARELATOSEGMENTO
FINE
PER LATOPT ST [VERSO QUALE LATO? D / S]AS “LATO LCSE NON ELE? :LATO [D S] [LATO]SE :LATO = “D [D :G]SE :LATO = “S [S :G]
FINE
PER PREPARASU AS “P LCSE 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 RUOTAREPT ST [DI QUANTI GRADI ?]AS “G LPSE NON NUMERO? :G [RUOTARE]
FINE
PER SEGMENTOGIU A 100 SU I 100 GIU
FINE
A N G O L O C A M P O F I O
PER BOCCIOLO RIPETI 2 [PETALO D 120]FINE
PER CAMPOFIORITORIPETI 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 PETALORIPETI 45 [A 1 D 1]D 135RIPETI 45 [A 1 D 1]
FINE
PER PIANTARE SU D 90 A 30 GIU S 90FINE
PER STELO :ALTEZZAA :ALTEZZASE :ALTEZZA > 80 [FIORE][BOCCIOLO] ASDIR 0I :ALTEZZA
FINE
PER DIST.TANA RIPORTA RADQ SOMMA XCOR * XCORYCOR * YCOR¼?’RIPORTA RADQ SOMMA XCOR * XCORYCOR * YCORFINE
PER DISTANZA :POSl :P052 RIPORTA RADQ SOMMA QUADRATO
(PRI :POS1) - (PRI :POS2) QUADRATO(ULT :POS1) (ULT POS2)
FINE
PER QUADRATO :NUM RIPORTA :NUM * :NUMFINE
PER RIF_POSD 10 * ACASO 36A 10 * ACASO 10ST DOVEASPETTA 100RIF_POS
FINE
D I S T . P O S
pag. 166 Manuale Logo
D I R E Z
PER DIR.OBVERSI.POSSIBILIAS “VERSO LCSE NON ELE? :VERSO [1 2 3 4] [DIR.OB]LUNGHEZZASE :VERSO = “1 [AS “DIR ACASO 90ASDIR - :DIR A :PASSI]SE :VERSO = “2 [ASDIR ACASO 90 A:PASSI]SE :VERSO = “3 [AS “DIR ACASO 90ASDIR :DIR + 180 A :PASSI]SE :VERSO = “4 [AS “DIR ACASO 90ASDIR 180 - :DIR A :PASSI]
FINE
PER DIR.ORPT ST [SCEGLI IL VERSO : ]ST [1 = DA DESTRA A SINISTRA]ST [2 = DA SINISTRA A DESTRA]AS “VERSO LCSE NON ELE? :VERSO [1 2] [DIR.OR]SE :VERSO = “1 [ASDIR -90]SE :VERSO = “2 [ASDIR 90]LUNGHEZZAGIU A :PASSI
FINE
PER DIR.VEPT ST [SCEGLI IL VERSO : ]ST [1 = DAL BASSO IN ALTO]ST [2 = DALL’ALTO IN BASSO]AS “VERSO LCSE NON ELE? :VERSO [1 2] [DIR.VE]SE :VERSO = “1 [ASDIR 0]SE :VERSO = “2 [ASDIR 180]LUNGHEZZAGIU A :PASSI
FINE
PER DIREZPT ST [SCEGLI LA DIREZIONE : ]ST [1 = ORIZZONTALE]ST [2 = VERTICALE]ST [3 = OBLIQUA]AS “D LCSE NON ELE? :D [1 2 3] [DIREZ]SE :D = “1 [DIR.OR]SE :D = “2 [DIR.VE]SE :D = “3 [DIR.OB]
FINE
CASACRE.CRE
PER CASA :LPARETE :LSPO5T :LTETTO :L
FINE
PER CASACRESCE :LCASA :LSE :L > 60 [STOP]PARTAVAN :LCASACRESCE (:L + 10)
FINE
PER DIMMI ST [DIGITA SU I 70 S 90 A 140 D 90 GIUCASACRESCE 30]FINE
PER PARETE :L RIPETI 4 [A :L D 90]FINE
PER PARETECRESCE :L PARETE :L PARETECRESCE (:L + 10)FINE
PER PARTAVAN :LSU D 90 A (:L + 10) S 90 GIU
FINE
PER PARTAVANCRESCE :LPARTAVAN :LPARTAVANCRESCE (:L + 10)
FINE
PER SPOST :L A :L D 30FINE
PER SPOSTCRESCE :L SPOST :L SPOSTCRESCE (:L + 10)
PER TETTO :L RIPETI 3 [A :L D 120] S 30 I :LFINE
PER TETTOCRESCE :L TETTO :L TETTOCRESCE (:L + 10)FINE
Allegato B: Archivi e procedure pag. 167
PER DISEGNA.IL.MURO SE CAMPO = “CHIUSO
[DISEGNA.MURO]FINE
PER DISEGNA.MUROLOCALE “CONDIZIONE. PRECEDENTEAS “CONDIZIONE.PRECEDENTE (LISTADOVE PENNA DIR)SUVAXY [-159 116]ASDIR 90GIURIPETI 2 [A 318 D 90 A 232 D 90]SUVAXY PRI :CONDIZIONE.PRECEDENTEASPENNA ULT MENULT:CONDIZIONE.PRECEDENTEASDIR ULT :CONDIZIONE.PRECEDENTE
FINE
M U R O
PER POLIALTERNO :L :ANGA :L D :ANGSE DIR = 0 [STOP]POLIALTERNO :ANG :LFINE
PER POLIGONALE :LATO :ANGLOCALE “PARTENZAAS “PARTENZA DIRA :LATO D :ANGSE DIR = :PARTENZA [STOP]POLIGONALE :LATO :ANG
FINE
PER SPIRALI :L :ANGA :L D :ANGSE :L > 100 [STOP]SPIRALI (:L + 5) :ANG
FINE
PER SPIRASEG :L :ANGA :L D :ANGSE :L > 80 [STOP]SPIRASEG (:L + 5) :ANG
FINE
PER SPIRIDUZ :L :ANG :RIDSE :L < 5 LSTOP]A :L D :ANGSPIRIDUZ (:L - :RID) :ANG :RID
FINE
PER SPIRVAR :L :ANG :INCRA :L D :ANGSE :L > 100 [STOP]SPIRVAR (:L + :INCR) :ANG :INCR
FINE
PER VOLUTA :L :ANGA :L D :ANGSE :ANG > 100 [STOP]VOLUTA :L (:ANG + 10)
FINE
PER VOLUTAVAR :L :ANG :INCRA :L D :ANGSE :ANG > 100 (STOP]VOLUTAVAR :L (:ANG + :INCR) :INCR
FINE
S P I R A L I
RAGNATEL.A
PER RAGNATELA :LATOTELA :LATORAGNO
FINE
PER RAGNOMT ASCOL 3 D 30 RIPETI 4 [ZAMPAD I20 S 90 I 30 D 15]S 120 RIPETI 4 [ZAMPAS I 20 D 90 I 30 S15] D 90 ASCOL 2
FINE
PER TELA :LATOSE 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 20FINE
PER ZAMPAS A 30 S 90 A 20FINE
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 MTFINE
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 GIUFINE
PER BERSAGLIO CERCHIO.C 20 CERCHIO.C 40 CERCHIO.C 60 CERCHIO.C 80 CERCHIO.C 100FINE
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 GIUFINE
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 GIUFINE
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 GIUFINE
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 GIUFINE
PER ESAGONO.INSCRITTO :RAGGIO CERCHIO.C :RAGGIO SU 5 90 A :RAGGIO D 120 GIU RIPETI 6 [A RAGGIO D 60] SU TANA GIUFINE
Allegato B: Archivi e procedure pag. 169
CONICHE
PER ABS :XSE :X < O [RIPORTA - :X][RIPORTA :X]
FINE
PER ASSINT ASSFONDO 1 ASCOL 2VAXY [155 0] TANAVAXY [-155 O] TANAVAXY [0 125] TANAVAXY [0 -125] TANAASCOL 6
FINE
PER GRAFICO.P :X :ALOCALE “YAS “Y ( :X * :X) / (4 * :A)SE OPPURE ( :Y > 124) ( :Y < -124)[STOP]VAXY FRASE :X :YGIUGRAFICO.P :X + 5 :A
FINE
PER PARABOLA :AASSCHERMO “TARTAASSI SUGRAFICO.P (- RADQ (118 * 4 * ABS :A))
:AASPETTA 100ASSCHERMO “MISTOST [PARABOLA DI EQUAZIONE : ]
CALCOLI
PER ADDIZIONIASMODO 1 PTAS “A ACASO 20AS “B ACASO 20(STAMPA [QUAL E’ LA SOMMA DI] :A “+:B)AS “RISULT LPVERIFICA :RISULT = SOMMA :A :BSEV [STAMPA [RISPOSTA ESATTA]]SEF [STAMPA FRASE [RISPOSTASBAGLIATA. LA SOMMA E’] SOMMA :A:B]
FINE
PER TABELLINEASMODO 1 STAMPA [ ] STAMPA [ ]AS “A ACASO 10 + 1AS “B ACASO 10 + 1(STAMPA [QUANTO FA] :A “PER :B)AS “RISULT LPVERIFICA :RISULT = PRODOTTO :A :BSEV [STAMPA [RISPOSTA ESATTA]]SEF [STAMPA FRASE [RISPOSTASBAGLIATA. RISPOSTA GIUSTA]PRODOTTO :A :B]TABELLINE
FINE
PER COTANGENTE :ANG ST QUOZIENTE COS :ANG SEN :ANGFINE
PER SECANTE :ANG ST QUOZIENTE 1 COS :ANGFINE
PER SENO :ANGCERCHIO 100 ASDIR 90A 100 I 100 S :ANG A 100RIPORTA YCOR ,/ 100
FINE
PER TANGENTE :ANG ST QUOZIENTE SEN :ANG COS :ANGFINE
PER CERCHIO :RAGGIOAS ‘NL 2 * :RAGGIO * 3.1416 / 60SU S 90 A :RAGGIO D 90 GIURIPETI 60 [A :NL D 360/60]SU D 90 A :RAGGIO S 90 GIU
FINE
PER COSECANTE :ANG ST QUOZIENTE 1 SEN :ANGFINE
PER COSENO :ANGCERCHIO 100 ASDIR 90A 100 I 100 S :ANG A 100RIPORTA XCOR / 100
FINE
FUN_TRIG
pag. 170 Manuale Logo
ST [NEGATA CON IL CONNETTIVO “NON“,]ST [RISULTA VERA QUANDO E’ FALSA.]ST [MENTRE RISULTA FALSA QUANDOE’ > VERA.]
FINE
PER CONNETTIVO.OPT LOCALE “X LOCALE “Y LOCALE “ZAS “X ACASO 100AS “Y ACASO 100AS “Z ACASO 100STAMPA (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’ VERAL’UNA.]ST [OPPURE QUANDO E’ VERAL’ALTRA.]ST [OPPURE QUANDO SONO VERETUTTE E DUE.]ST [ ]ST [DANNO INVECE “FALSO “SOLTANTO NEL CASO]ST [CHE TUTTE E DUE RISULTANOFALSE]
FINE
PER CONNETTIVO.EPT LOCALE “X LOCALE “Y LOCALE “ZAS “X ACASO 100AS “Y ACASO 100AS “Z ACASO 100STAMPA (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 “, SOLTANTOQUANDO]ST [TUTTE E DUE RISULTANO VERE]
FINE
PER CONNETTIVO . NONPT LOCALE “X LOCALE “YAS “X ACASO 100AS “Y ACASO 100ST (FRASE :X [NON < (= NON MINOREDI)] :Y)ST [ ]VERIFICA :X < :YSEV [ST “FALSO]SEF [ST “VERO]ST [ ]ST [UNA RELAZIONE.]ST [(IN QUESTO CASO E’ LARELAZIONE “MINORE DI “)]
CONNETTI.VI
PER ASSINT ASSFONDO 1 ASCOL 2VAXY [155 0] TANAVAXY [-155 0] TANAVAXY [0 125] TANAVAXY [0 -125] TANAASCOL 6
FINE
PER GRAFICO.RETTA1 :XSE :X = 180 [STOP]VAXY FRASE (:X - 100) ((:X + 25) - 100)GIUGRAFICO.RETTA1 :X + 1
FINE
PER RETTA1ASSCHERMO “TARTAASSI SUGRAFICO.RETTA1 0ASPETTA 100ASSCHERMO “MISTOSTAMPA [RETTA DI EQUAZIONE : X= Y + 25]STAMPA [E’ RAPPRESENTATANELL’INTERVALLO : ]STAMPA [DA (- 100, -75) A (100,125)]
FINE
GRAF.RETTA
Allegato B: Archivi e procedure pag. 171
FUNZIONI
PER CUBO :NUM RIPORTA :NUM * QUADRATO :NUMFINE
PER ERONE :A :B :CAS “X :A + :B AS "Y :A + :CAS “Z :B + :CVERIFICA (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 :N2SE :N1 = :N2 [RIPORTA :N1]SE :N1<:N2 [RIPORTA EUCLIDE :N2 :N1][RIPORTA EUCLIDE (:N1 - :N2) :N2]
FINE
PER FATTORIALE :NSE :N = 1 [RIPORTA 1][RIPORTA :N * FATTORIALE (:N - 1)]
FINE
PER FERMATI :A :B :CSTAMPA [DATI SBAGLIATI]STAMPA [NON SI PUO’ DISEGNARE UNTRIANGOLO]STAMPA (FRASE [CON LATI DILUNGHEZZA] :A :B :C)
FINE
PER IPOTENUSA :CAT1 :CAT2 RIPORTA RADQ ((QUADRATO CAT1) + (QUADRATO :CAT2))FINE
PER OPPOSTO :NUM RIPORTA - ( :NUM)FINE
PER PROSEGUI A :B :CAS “P ( :A + :B + :C) / 2STAMPA [AREA DEL TRIANGOLO]STAMPA (FRASE [CON LATI DI] :A “, :B “,:C “:RIPORTA RADQ (:P * (:P - A) * (:P - :B) *(:P - :C)))
FINEPER QUADRATO :NUM RIPORTA :NUM * :NUMFINE
MCD_MCM
PER MCD :A :BSE :A = :B [RIPORTA :A]SE :A < :B [RIPORTA MCD :B :A][RIPORTA MCD (:A - :B) :B]
FINE
PER MCD1 :A :BVERIFICA :A > :BSEV [AS “A :A - :B]SEF [AS “B :B - A]ST FRASE :A :BSE :A = :B [RIPORTA :A]RIPORTA MCD1 :A :B
FINE
PER MCD2 :LISTASE 2 = CONTA :LISTA [RIPORTA MCD1PRI :LISTA ULT :LISTA]AS “LISTA INPRI (MCD1 ELE 1 :LISTAELE 2 :LISTA) MENPRI MENPRI :LISTARIPORTA MCD2 :LISTA
FINE
PER MCDVELOX :A ESE :A - (:B * INT :A / :B) = 0 [RIPORTA:B][RIPORTA MCDVELOX :B (:A - (:E * INT:A / :B))]
FINE
PER MCM :A :BVERIFICA :A > :BSEV [AS “MAGGIORE :A AS“INCREMENTO :A AS “MINORE :B]SEF [AS “MAGGIORE :B AS“INCREMENTO :B AS “MINORE :A]QUI “0ST FRASE :MAGGIORE :MINOREVERIFICA (: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
PER SPIEGAZIONIASMODO 2STAMPA [ ]STAMPA [ATTIVARE LE PROCEDURECON L’INVOCAZIONE : ]STAMPA [ ]STAMPA [HANOI 3 (OPPURE : 4, 5. .....)“A “B “C]
FINE
PER SPOSTARETOGLIERE :AMETTERE :B
FINE
PER TOGLIERE :L SCRIVI (FRASE [TOGLIERE DA] CAR 32:L CAR 32)FINE
PER HANOI :N :A :B :CASMODO 2 PT VERIFICA :N = 1SEV [SPOSTARE] SEF [RISOLUZIONE]
FINE
PER METTERE :L STAMPA (FRASE [METTERE IN] CAR 32:L)FINE
PER RISOLUZIONERISOLVI (:N - 1) :A :C :BRISOLVI 1 :A :B :CRISOLVI (:N - 1) :C :B :A
FINE
PER RISOLVI :N :A :B :CVERIFICA :N = 1SEV [SPOSTARE]SEF [RISOLUZIONE]
FINE
HANOI
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 SCRIVILOSOTTO] ST [ ] ST [IO TI AIUTERO’ CON QUALCHEINDICAZIONE] ST [ ] GIOCOFINE
PER FINIRE PT ST [CIAO ... AL PROSSIMO INCONTRO!][BREAK]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]] GIOCOFINE
PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI“NONNUMERO] RIPORTA :NUMEROFINE
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
INDOVINA
Allegato B: Archivi e procedure pag. 173
PER ASSI.CARTESPS NTVAX 135 VAX -135 TANAA 125 I 250 TANAASSCHERMO “TARTA MT
FINE
PER ROTAZIONE.AASSI .CARTESTRIANGOLO.1ASSCHERMO “MISTO NTST [SIMMETRIA RISPETTO ALL’ASSEDELLE X]ASPETTA 100TRIANGOLO.3ST [SEGUITA DA]ST [SIMMETRIA RISPETTO ALL’ASSEDELLE Y]ASPETTA 100TRIANGOLO.5ST [EQUIVALE A ROTAZIONE]
FINE
PER ROTAZIONE.BASSI .CARTESTRIANGOLO.1ASSCHERMO “MISTO NTST [SIMMETRIA RISPETTO ALL’ASSEDELLE Y]ASPETTA 100TRIANGOLO.4ST [SEGUITA DA]ST [SIMMETRIA RISPETTO ALL’ASSEDELLE X]ASPETTA 100TRIANGOLO.5ST [EQUIVALE A ROTAZIONE]
FINE
PER SIMMETRIA.XASSI .CARTESTRIANGOLO.1ASSCHERMO “MISTO NTST [SIMMETRIA RISPETTO ALL’ASSEDELLE X]ASPETTA 100TRIANGOLO.3
FINE
PER SIMMETRIA.YASSI .CARTESTRIANGOLO.1
ASSCHERMO “MISTO NTST [SIMMETRIA RISPETTO ALL’ASSEDELLE Y]ASPETTA 100TRIANGOLO.4
FINE
PER TRASLAZIONEASSI .CARTESTRIANGOLO.1ASSCHERMO “MISTO NTST [TRASLAZIONE DI PASSO P = (X +150) (Y + 100)]ASPETTA 100TRIANGOLO.2
FINE
PER TRIANGOLO.1SU VAXY [-100 -50]GIU VAXY [-100 -20]VAXY [-30 -50]VAXY [-100 -50]
FINE
PER TRIANGOLO.2SU VAXY [50 50]GIU VAXY [50 80]VAXY [120 50]VAXY [50 50]
FINE
PER TRIANGOLO.3SU VAXY [-100 50]GIU VAXY [-100 20]VAXY [-30 50]VAXY [-100 50]
FINE
PER TRIANGOLO.4SU VAXY [100 -50]GIU VAXY [100 -20]VAXY [30 -50]VAXY [100 -50]
FINE
PER TRIANGOLO.5SU VAXY [100 50]GIU VAXY [100 20]VAXY [30 50]VAXY [100 50]
FINE
ISOMETRI.E
pag. 174 Manuale Logo
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] RISPOSTAFINE
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 100FINE
PER AREA RIPETI 2 [A 70 D 90 A 90 D 90] D 5 SU A 10 GIU RIEMPI SU I 10 GIU S 5FINE
PER RETT RIPETI 2 [A 70 D 90 A 90 D 90]FINE
PER FINIRE PT ST [CIAO ... ALLA PROSSIMA!!] [STOP]FINE
PER PERIAREA PS PT NT ASCOL 1 + ACASO 3 ST [VUOI IL PERIMETRO O L’AREA? (P / A)] ST [ ] ST [PER FINIRE DIGITA F] SCELTAFINE
PER AREA RIPETI 2 [A 70 D 90 A 90 D 90] D 5 SU A 10 GIU RIEMPi SU I 10 GIU S 5FINE
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’ ILPERIMETRO]] SE :SCE = “A [PT ST [QUESTA E’ L’AREA]] ASPETTA 50 PERIAREAFINE
PER FINIRE PT ST [CIAO ... ALLA PROSSIMA!!] [STOP]FINE
PERIAREA AREAPERI
Allegato B: Archivi e procedure pag. 175
TABELLIN.E
PER TABELLINE PT AS ‘1TENTAT 0 AS “X 1 + ACASO 10 AS “Y 1 + ACASO 10 (ST [QUANTO FA’] :X [PER] :Y [?]) CONTROLLAFINE
PER DOMANDA (ST [QUANTO FA’] :X [PER] :Y [?]) CONTROLLAFINE
PER CONTROLLA AS “TENTAT :TENTAT + 1 AS “RISPLEGGINUMERO SE :RISP = :X * :Y [0K] ST [ ] ST [ ] ST [HAI SBAGLIATO. TORNO ACHIEDERTI] ST [ ] DOMANDAFINE
PER LEGGI NUMERO QUI “NONNUMERO AS “NUMERO LEGGIPAROLA SE NON NUMERO? :NUMERO [VAI
“NONNUMERO] RIPORTA :NUMEROFINE
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.
Allegato B: Archivi e procedure pag. 177
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 pag. 179
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. 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 )