+ All Categories
Home > Documents > M - L O G O - USR LAZIO-AT di Viterbo nuovo sito/grillo... · Può entrarvi, però, anche come...

M - L O G O - USR LAZIO-AT di Viterbo nuovo sito/grillo... · Può entrarvi, però, anche come...

Date post: 18-Feb-2019
Category:
Upload: vocong
View: 220 times
Download: 0 times
Share this document with a friend
180
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
Transcript

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 8 pag.

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 )


Recommended