Sei sulla pagina 1di 180

ALCEO SELVI

M- LOGO

SPUNTI OPERATIVI

GIOCHI ED ESPERIENZE
DI MATEMATICA
CON LA TARTARUGA
SOMMARIO

iIndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. pag 3
Premessa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 5

1. Elementi introduttivi . . . . . . . . . . . . . . . . . " 9


2. La tartaruga e lo schermo . . . . . . . . . . . . . . " 15
3. Poligoni con il comando ripeti . . . . . . . . . . . " 25

4. Le "geometrie" del Logo . . . . . . . . . . . . . . . " 35


5. Le procedure e il foglio. . . . . . . . . . . . . . . . . " 42
6. Spazio di lavoro e archivi . . . . . . . . . . . . . . . " 53

7. Procedure e variabili . . . . . . . . . . . . . . . . . . " 59


8. Trattamento dei numeri. . . . . . . . . . . . . . . . . ." 71
9. Cerchi e archi di raggio variabile. . . . . . . .. . " 79

10 Procedure ricorsive . . . . . . . . . . . . . . . . . . " 83


11. Creazione e uso di funzioni . . . . . . . . . . . . . . ." 89
12. Isometrie e funzioni trigonometriche . . . . . . . . " 107

13. Le liste e le parole . . . . . . . . . . . . . . . . . . . . " 113


Appendice A /1: Glossario M-Logo . . . . . . . . . . . " 121
Appendice A /2: Comandi Logo IBM . . . . . . . . . . " 149

Appendice B: Archivi e procedure M-Logo . . . . . " 155


Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 176
Indice in dettaglio. . . . . . . . . . . . . . . . . . . . . . . . . " 177
1. Elementi introduttivi pag. 5

PREFAZIONE

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 conseguente
necessità di trovare strade di accesso “soffice” alla programmazione di tali
macchine.

È da precisare, intanto, che il computer può entrare nella scuola in due


modi abbastanza diversi, ciascuno corrispondente ad una diversa impostazione
didattica.

Può entrarvi come macchina per insegnare, ossia come semplice 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 al
docente, 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 in


condizione di imparare ad imparare, obiettivo questo didatticamente assai
più ambizioso. In tal caso, con l’aiuto dell’elaboratore si crea un particolare
ambiente di apprendimento, un laboratorio per imparare a organizzare il
pensiero, ossia luogo dove il bambino sviluppa e mette alla prova quelle
capacità che gli occorrono per confrontarsi criticamente con la realtà.

In questa seconda prospettiva il Basic poco si presta ad esser presentato


come primo linguaggio informatico. La sua intrinseca semplicità, è di natura
meccanica, non culturale. Questo significa che saper usare il Basic implica
necessariamente l’acquisizione di nozioni di «basso livello», calibrate sulla
«meccanica» del particolare tipo di elaboratore usato.

Il linguaggio Logo si propone, invece, come linguaggio di programma-


zione semplice, moderno, adatto all’uso scolastico elementare, in quanto
ideato appositamente per scopi didattici, e largamente applicabile su elabo-
ratori di diverso tipo.
1. Elementi introduttivi pag. 6

Il Logo intende essere però assai di più: vuoI proporsi come strumento
docile e potente per facilitare l’applicazione delle metodiche per l’appren-
dimento attivo, suggerite nei Programmi vigenti. Con il Logo un elaboratore
diventa una sorta di laboratorio per imparare ad organizzare il pensiero.

La caratteristica più peculiare del Logo, che lo rende accessibile già a


bambini di cinque anni, è la possibilità offerta all’utente di colloquiare in
modo amichevole con un «animaletto »,la Tartaruga, «creatura» di forma
triangolare che può «camminare» lungo lo schermo lasciando una traccia
luminosa. Essa può essere definita anche oggetto-per-pensare, con cui il
bambino sviluppa la propria conoscenza in situazioni naturali, mediante
attività di esplorazione e di scoperta personali.

La Tartaruga è in grado di ricevere ordini in linguaggio Tartaruga,


linguaggio assai semplice, composto da pochissimi comandi del tipo: vai
«avanti», vai «ndietro», gira a «destra», e così via. Il linguaggio Tartaruga
costituisce il repertorio grafico del linguaggio Logo, che, nella sua integrità,
occorre sottolinearlo, non è un linguaggio adatto solo per far giocare i
bambini, ma è uno dei linguaggi di programmazione tra i più evoluti e
potenti.

La sfida eccitante che all’inizio si propone con Logo al bambino è quella


di imparare a muovere la Tartaruga per farle realizzare disegni e progetti
grafici. Sul video il bambino ottiene così immagini suggestive, che
concretizzano i suoi progetti e che gli consentono di riflettere sul prodotto
del proprio pensiero.

In seguito egli potrà essere sollecitato a far uso di un’altra notevole


caratteristica del Logo: il suo impianto procedurale. Questo, in pratica,
consiste nella possibilità di risolvere un problema scomponendolo in
sottoproblemi, ciascuno dei quali viene risolto da procedure (ossia da
programmi), distinte, a cui l’utente può assegnare un nome scelto a piacere.

Questa facoltà data al bambino di scomporre un problema complesso in


problemi semplici lo incoraggia anche ad estendere il linguaggio base,
inventando nuove istruzioni «Tartaruga» e potenziando, in tal modo, le
proprie capacità simboliche.

Va sottolineato che imparare ad usare gli elaboratori significa non tanto


imparare un qualsiasi linguaggio di programmazione, quanto imparare ad
usare tale linguaggio per «insegnare al computer» come risolvere un proble-
ma.
1. Elementi introduttivi pag. 7

Per fare un paragone, stiamo qui parlando della stessa differenza che c’è
tra l’imparare a leggere e scrivere e imparare ad esprimere mediante la
scrittura proprie idee e pensieri.

Le prime esperienze in un ambiente di apprendimento basato su Logo


avranno dunque non tanto l’obiettivo di far acquisire regole formali di
comunicazione uomo-macchina, quanto piuttosto perseguiranno lo scopo di
allenare i bambini al pensiero logico e di sviluppare le loro personali capacità
di organizzazione spaziale.

A proposito di organizzazione spaziale, non va sottovalutata la connes-


sione esistente tra Logo e una disciplina di studio talvolta trascurata nella
scuola di base: la geometria. L’approccio geometrico suggerito da Logo è
più «naturale», sia rispetto a quello assiomatico della geometria euclidea, sia
rispetto a quello analitico della geometria cartesiana.

La geometria della Tartaruga è innanzitutto costruttiva: con il Logo il


bambino impara la geometria perché deve insegnarla alla Tartaruga parten-
do dalle proprie esperienze spaziali. Questo semplice fatto apre vasti campi
di applicazione della didattica della matematica, non solo per quella di base,
ma dell’intero curriculo di studi.

Per concludere, vogliamo ribadire il rilevante aspetto creativo che impli-


ca l’impiego del Logo nella didattica. Con o senza elaboratore, se desideria-
mo formare individui capaci di pensiero originale, per agevolare il progresso
della società di domani, è evidente, allora, che una formazione intellettuale
fondata su una scoperta attiva della realtà appare superiore rispetto a quella
che consiste semplicemente nel fornire ai giovani traguardi precostituiti da
perseguire e verità predefinite in cui credere.
1. Elementi introduttivi pag. 8
1. Elementi introduttivi pag. 9

ELEMENTI INTRODUTTIVI

IL SISTEMA DI ELABORAZIONE DI DATI

Per capire come funziona un elaboratore elettronico (o computer) con-


frontalo con una macchina che, per qualche aspetto, gli somiglia: una
lavatrice.

Come si può sintetizzare il lavoro che compie una lavatrice? In un primo


momento la biancheria sporca viene introdotta insieme al detersivo, poi
viene eseguito il lavaggio e alla fine viene estratta la biancheria pulita. Tutto
questo procedimento è riassunto nello schema di Figura 1.

Figura 1

biancheria lavatrice biancheria


sporca pulita
ENTRATA ELABORAZIONE USCITA

La lavatrice non compie sempre le stesse azioni, ma è possibile scegliere


il programma più adatto per il tipo di biancheria che si vuole lavare. Un
programma è una sequenza di istruzioni che dice alla lavatrice che cosa deve
fare (scaldare l’acqua, ruotare il cestello, ..... ).

Mentre la lavatrice compie le azioni definite dal programma non è


necessario alcun intervento esterno. Esiste dunque una fase di «trattazione
automatica» della biancheria e la lavatrice può essere considerata come un
esecutore automatico di programmi di lavaggio.

In generale possiamo pensare a un esecutore automatico come a una


macchina che esegue un insieme di azioni senza l’intervento dell’uomo. Per
compiere il suo lavoro l''esecutore ha bisogno di un programma, ossia una
lista di istruzioni scritte in un particolare linguaggio.
1. Elementi introduttivi pag. 10

Osserva ora le analogie che vi sono nel passare dalla «elaboratrice di


biancheria» all’elaboratore elettronico. In Figura 2 è riportato uno schema
analogo al precedente.

Figura 2

elaboratore
dati iniziali + dati finali
programma
ENTRATA ELABORAZIONE USCITA

Come la lavatrice è un esecutore che aiuta a risolvere il problema del


bucato, il computer può essere visto come un esecutore che aiuta a risolvere
altri tipi di problemi. Il computer riceve informazioni (dati iniziali), li
elabora e fornisce altre informazioni come risultati (dati finali).

Anche in questo caso è indispensabile che qualcuno fornisca all’elabora-


tore un programma, o più programmi, senza i quali il computer sarebbe
soltanto un insieme di circuiti e di altri dispositivi inutilizzabili. Il computer,
dopo aver acquisito i programmi necessari, può allora compiere da solo una
serie di operazioni in modo automatico.

Pian piano, lavorando con questi appunti, sarai in grado di realizzare


programmi per risolvere particolari problemi e potrai quindi concepire
l’elaboratore come una specie di servitore ai tuoi ordini. Attenzione però:
il computer è molto veloce, ma sa compiere solo alcune azioni, ognuna delle
quali corrisponde a un particolare comando, ossia a una parola scritta in un
particolare linguaggio che il tuo esecutore è in grado di comprendere. Le
frasi dentro le quali si scrivono i comandi si chiamano istruzioni. Ecco
alcune istruzioni che chiedono al computer di eseguire lo stesso compito,
ossia sottrarre 4 da 10, ma in linguaggi diversi:

STAMPA 10 - 4 linguaggio LOGO


PRINT 10 - 4 linguaggio BASIC
WRITE (10 - 4) linguaggio PASCAL

Ogni riga rappresenta una istruzione, mentre STAMPA, PRINT e WRITE


sono comandi.

Ciascuna delle tre fasi rappresentata nello schema della Figura 2 viene
svolta da una parte diversa del computer, che può essere pensato come un
sistema, cioè come un insieme di dispositivi. Questi dispositivi sono:
1. Elementi introduttivi pag. 11

a) L'unità d’ingresso (o di input), che ha la funzione di ricevere le


informazioni in arrivo dall’esterno.

b) L’unità centrale di elaborazione, che ha il compito di elaborare, cioè


di trasformare le informazioni ricevute ricavandone delle nuove. Una
particolare parte dell’unità centrale, chiamata memoria, serve per
registrare sia i programmi, sia le informazioni.

c) L’unità di uscita (o di output), che ha la funzione di comunicare


all’esterno i risultati.

Le unità d’ingresso e d’uscita vengono anche dette periferiche.

Nella Figura 3, riportata sotto, è schematizzato un sistema di elabora-


zione di dati simile a quello che utilizzerai.

Come puoi ben vedere nella Figura stessa, sono quattro le componenti
fondamentali di questo sistema e sono: la tastiera, l'unità centrale, il
monitor e l' unità a disco (drive).

La tastiera è un’unità d’ingresso in quanto con essa possiamo scrivere


alcune informazioni e farle ricevere dal computer. Il monitor è una unità di
uscita: i risultati delle elaborazioni sono visualizzati mediante l’accensione
di puntini luminosi (pixel) sullo schermo. Il drive è un’unità sia d’ingresso
che di uscita: può infatti trasferire informazioni da un supporto magnetico
(il dischetto) alla memoria del computer o viceversa. All'interno dell'unità
centrale sono dislocati, infine, tutti i dispositivi elettronici che elaborano i
dati che vi vengono inseriti con la tastiera.

Molto spesso i personal computer hanno due o più drive. Per sempli-
cità noi penseremo sempre che tu abbia a disposizione un solo drive. Anche
se ve ne sono altri tutte le operazioni possono essere pensate riferite al drive
chiamato A.

unità
centrale

unità a disco
(drive)

monitor
tastiera
Figura 3
1. Elementi introduttivi pag. 12

Il sistema di dispositivi, meccanici ed elettronici, che costituiscono il


computer 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 un


insieme di programmi che viene chiamato sistema operativo. Il sistema
operativo controlla lo svolgimento degli altri programmi, permette di
utilizzare le periferiche e serve anche per organizzare le informazioni che si
trovano sui dischetti.

Il sistema operativo che useremo si chiama DOS, sigla che significa


Sistema Operativo su Disco.

SCRIVERE CON LA TASTIERA

La tastiera di un computer è molto simile a quella di una macchina da


scrivere, con la differenza che, battendo (in computerese si dice digitando)
i tasti , i caratteri non vengono scritti sulla carta, ma sullo schermo.

Il computer gestisce lo schermo molto meglio di quanto si possa fare con


un foglio di carta e ti permette, con estrema facilità, di correggere errori di
scrittura, di cancellare, di inserire caratteri. Saprai sempre dove verrà
scritto il carattere che batterai, perché nel punto corrispondente sullo
schermo ci sarà un trattino o un quadratino lampeggiante, che si chiama
cursore.

Nella Figura 4, riportata nella pagina a fronte, è riprodotta una delle


tastiere più utilizzate. Non importa se la tastiera che userai sarà diversa.
Osserva quella della figura per notare alcune caratteristiche comuni a tutte
le tastiere. Oltre ai tasti con le lettere, ve ne sono di altri tre tipi:
a) tasti con due simboli (per esempio 5 e % oppure : e [ );
b) tasti funzionali (FI, F2...);
c) tasti speciali con scritte e segni particolari (per esempio <INVIO>
oppure <ALT>).

Imparerai a usare la tastiera gradualmente! Per il momento vanno fatte


alcune osservazioni generali.

Per ottenere il carattere che si trova nella parte superiore di ogni tasto
con due simboli, devi premere quest’ultimo mentre tieni schiacciato il tasto
1. Elementi introduttivi pag. 13

Figura 4

Tasto ALT GR + è → [ Frecce che comanda-


SHIFT ALT GR + * → ] INVIO = no i movimenti del
ENTER =
RETURN cursore nel Foglio.

<SHIFT>. Nella tastiera della Figura lo <SHIFT> è rappresentato con una


freccia rivolta verso l’alto. Per esempio. se vuoi ottenere sullo schermo il
punto esclamativo devi premere lo <SHlFT> e il tasto dove compare 1 e !.

Quando in questi appunti si farà riferimento ai tasti funzionali o a quelli


speciali verrà usata una notazione particolare. Se, per esempio, dovrai
battere il tasto con scritto sopra F3, verrà scritto: batti <F3> , mettendo
F3 fra i segni < e >, in modo che tu capisca che non devi scrivere i due
caratteri F e 3, ma semplicemente battere il tasto funzionale corrispondente.

Se digiti una informazione, essa compare sul video ma deve essere inviata
all’unità centrale del computer, dopo aver controllato che sia corretta e
completa. Per ferla entrare nell’elaboratore devi premere un tasto speciale
che nelle tastiere può essere indicato con diversi nomi o segni (IMMIS,
RETURN, ENTER...). Noi lo indicheremo sempre con <INVIO>.

Particolarmente utile è anche la coppia che chiameremo tasti di 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 batte
il 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 spazio
bianco è per il computer un carattere come tutti gli altri e non, come si pensa
nello scrivere con la penna, l’assenza di un carattere. Esso può quindi essere
cancellato.
1. Elementi introduttivi pag. 14

Per muoverti all’interno del testo che devi scrivere hai a disposizione i
tasti freccia, mentre per cancellare un carattere potrai utilizzare il tasto
<BACKSPACE> (quello con una freccia orizzontale rivolta a sinistra), che
fa fare un passo indietro al cursore eliminando il carattere che lo precede.

Tabella 1
TASTI SPECIALI
PER: DIGITA:
far fare un passo indietro al
cursore cancellando il carattere BACKSPACE
precedente

selezionare il carattere in alto di


un tasto che ne ha due
SHIFT

far eseguire al computer la istru-


zione appena battuta o far acqui- INVIO
sire il dato appena scritto

muovere il cursore di uno spa- TASTO


zio a destra senza cancellare FRECCIA

muovere il cursore di uno spa- TASTO


zio a sinistra senza cancellare FRECCIA

battere uno «spazio bianco» per BARRA


separare una parola dall’altra SPAZIO

interrompere l’esecuzione di un TASTI


programma INTERRUZ.
PROGR.
2. La tartaruga e lo schermo pag. 15

LA TARTARUGA E LO SCHERMO

ENTRIAMO NEL MONDO DEL LOGO

Le operazioni che dovrai compiere per poter lavorare con il linguaggio


LOGO sono le seguenti:

1) accendi il computer;

2) restando in ambiente DOS, inserisci il dischetto del LOGO nel


drive denominato A ;

3) digita < A: > < INVIO>


4) digita <M-LOGO> < INVIO>

Potrai notare che ogni volta che è in corso un’operazione di lettura (o,
come vedremo in seguito, di scrittura), accanto al drive si accende una
piccola luce ( verde, oppure rossa). Non estrarre o inserire mai un disco
mentre questa luce è accesa!

Al termine dell’operazione di lettura , ossia allo spegnersi della piccola


luce, dovrebbe comparire la seguente scritta:

M-LOGO per Olivetti M24 vers. 1.00

prodotto da RISCO srl - 04.04.85

?RECUPERA “CORREDO. ML

Se l’ultima riga della scritta compare in parte, oppure non compare


affatto, digita la seguente istruzione:

RECUPERA “CORREDO. ML < INVIO>


Digita poi:

PT MT < INVIO>
Al centro dello schermo vedrai comparire un triangolino luminoso: è il
“naso” della tartaruga che aspetta i tuoi comandi. Li potrai scrivere nello
spazio che sta nella parte bassa dello schermo dove vedi lampeggiare un
quadratino luminoso (il cursore), che sta a destra di un punto interrogativo.
pag. 16 Manuale Logo

LA TARTARUGA ESPLORA LO SCHERMO

A questo punto potrai utilizzare una


particolare "matita elettronica" che sarà
al tuo servizio per eseguire tanti dise-
gni: la tartaruga.

Quando il linguaggio LOGO venne


utilizzato le prime volte la tartaruga
era un minuscolo robot meccanico che
FIGURA 1 si muoveva sul pavimento e somigliava
abbastanza a una tartaruga vera.

Adesso nel computer la tartaruga è simboleggiata da un triangolino che


somiglia alla punta di una freccia. Eccolo rappresentata sopra nella figura 1.
La punta indica la direzione verso cui la tartaruga «guarda».

Quando inizierai a lavorare con la tartaruga, la troverai al centro dello


schermo, come appare nella figura. Chiameremo questo punto TANA. Lo
schermo che utilizzerai più spesso è quello misto, ossia diviso in due parti:
la parte superiore è riservata a ciò che devi disegnare, ossia alla grafica;
quella inferiore, dove ritroverai il punto interrogativo e il cursore, è dedicata
invece a ciò che devi scrivere, cioè al testo delle istruzioni.

Puoi pensare che la tartaruga sia come una penna che, spostandosi su un
foglio, lascia una traccia: il suo foglio è lo schermo e la traccia è un insieme
di pixel che si accendono quando, nello spostarsi, il triangolino ci passa
sopra. Ogni pixel corrisponde a un passo della tartaruga.

La tartaruga ha alcune caratteristiche che ne determinano lo stato:

a) si trova in una determinata posizione dello schermo;

b) ha una direzione e un verso, indicati dalla punta della freccia, che


determinano il suo orientamento;

c) ha una penna che può tenere giù, per disegnare, o su per spostarsi
senza disegnare;

d) può essere visibile (in mostra), oppure invisibile (nascosta).


2. La tartaruga e lo schermo pag. 17

E' anche possibile trasformare la penna in gomma, per cancellare linee, e


viceversa la gomma in penna.

Nella Tabella 1 riportata sotto, ci sono i comandi più semplici che


modificano lo stato della tartaruga, mentre nella Tabella 2, che trovi nella
pagina seguente, vi sono quelli, di uso più comune, relativi alla gestione
dello schermo.

Come puoi osservare nella tabella in basso, alcuni comandi sono seguiti
da una parola scritta fra i segni < e >. In questi casi vogliamo indicarti che
il comando deve essere accompagnato da un dato, cioè da un valore
numerico necessario per la sua esecuzione. AVANTI, per esempio, deve
essere seguito da un certo numero di passi. Chiameremo argomento ogni
informazione che dobbiamo fornire a un comando affinché quest’ultimo
possa essere eseguito correttamente.

COMANDI RELATIVI ALLO STATO DELLA TARTARUGA

AVANTI La tartaruga si sposta in avanti del numero di passi


<PASSI> indicato nella stessa direzione. (Abbreviazione: A)

INDIETRO La tartaruga si sposta indietro del numero di passi indica-


<PASSI> to. nella stessa direzione. (Abbreviazione: I)

La tartaruga compie una rotazione a destra del numero di


DESTRA gradi indicato, senza cambiare posizione, . (Abbreviazio-
<ANGOLO> ne: D)

La tartaruga compie una rotazione a sinistra del numero di


SINISTRA
gradi indicato, senza cambiare laposizione. (Abbreviazio-
<ANGOLO>
ne: S)

Riporta la tartaruga al centro dello schermo con direzione


TANA verso l’alto; se la penna è abbassata viene tracciata una
linea.

La tartaruga solleva la penna e, quando si sposta, non


SU
lascia la traccia sullo schermo .

La tartaruga abbassa la penna e, quando si sposta, lascia


GIU
la traccia sullo schermo .

La penna si trasforma in gomma, cancellando la traccia


CANCEPENNA dove la tartaruga passa. Per trasformare la gomma in
penna basta utilizzare GlU.

NASTARTA Nasconde la tartaruga (Abbreviazione: NT)

MOSTARTA Mostra la tartaruga. (Abbreviazione: MT) TABELLA 1


pag. 18 Manuale Logo

COMANDI RELATIVI ALLO STATO DELLO SCHERMO

Viene cancellato il disegno che è sullo schermo


PULISCISCHERMO (PS) e la tartaruga viene riportata al centro dello
schermo con direzione verso l’alto.

Viene cancellata la parte dello schermo


PULISCITESTO (PT)
relativa al testo.

Non permette alla tartaruga di uscire dai


ASCAMPO “CHIUSO
margini dello schermo.

Permette alla tartaruga di spostarsi al di fuori


ASCAMPO “APERTO
dei margini ello schermo (senza essere visibile).

Permette alla tartaruga di uscire dai margini


ASCAMPO “CIRCOLARE dello schermo e di rientrare dalla parte opposta.
E' lo stato che si ha quando si carica il Logo.

ASSCHERMO “TARTA Rende visibile l’intero schermo grafico.

Divide lo schermo in modo da avere presenti


ASSCHERMO “MISTO contemporaneamente sia la grafica che il testo;
viene così nascosta una parte dello schermo
grafico.

ASSCHERMO “COMANDI Riserva al testo tutto lo schermo, coprendo


l’intero campo d’azione della tartaruga.
TABELLA 2

Durante lo svolgimento delle esercitazioni seguenti, se hai difficoltà ad


eseguire un comando oppure a rispondere ad una domanda, puoi consultare
le tabelle 1 e 2.

Avvertenza importante! Se lavori con M-LOGO e hai una stampan-


te, puoi ottenere su carta una copia del disegno che realizzerai. Per far
questo, prima di caricare lo M-LOGO, è necessario che, quando
compare il segno A>, con il dischetto di M-LOGO inserito nel drive tu
dia il comando DOS: GRAPHICS <INVIO>.

Iniziamo ora a lavorare con la tartaruga. Batti, usando il tasto del numero
0 (e non quello della lettera O!): AVANTI 50 <INVIO>

La tartaruga si sposta di 50 passi nella direzione indicata dal triangolino


e quindi modifica la sua posizione, ma non la sua direzione.
2. La tartaruga e lo schermo pag. 19

Ricordiamo ancora una volta che ogni istruzione deve essere comunicata
al computer battendo il tasto <INVIO>. D’ora in avanti non indicheremo più
quando dovrai utilizzare questo tasto, ma tu non dimenticarlo!

Prova a vedere che cosa succede se batti solamente: AVANTI , oppure


se, senza lasciare lo spazio, batti: AVANTI50

Potrai notare che il computer risponde con un messaggio che ti segnala


l’errore. Leggi sempre con attenzione i messaggi che il computer ti invia,
perché possono essere utili per comprendere quali correzioni devi fare.

Invece della parola AVANTI puoi usare la sua abbreviazione A. Prova a


dare il comando: A 30

La tartaruga va sempre avanti per la sua strada, sulla verticale dello


schermo. Quanti passi ha finora fatto? Che cosa si può fare per farle
cambiare direzione?

Batti: DESTRA 30

Che cosa osservi?

Il comando DESTRA ha una sintassi analoga ad AVANTI, ma serve per


cambiare la direzione della tartaruga, senza però modificare la posizione
dove sta. L’argomento numerico di DESTRA non indica quindi un numero
di passi ma un numero di gradi sessagesimali, ossia l'ampiezza angolare del
cambiamento di direzione.

Per far procedere la tartaruga lungo la sua nuova direzione devi utilizzare
di nuovo AVANTI. Prova con: A 20

Se vuoi ricominciare a disegnare, partendo con la tartaruga nel centro


dello schermo, devi dare il comando:

TANA

Che cosa fa la tartaruga? Digita ancora:

A 20 e poi PS

Che cosa accade?

Anzichè scrivere e far eseguire una istruzione alla volta, in LOGO è


possibile scriverne più di una su una stessa riga, separandole tra loro con uno
spazio bianco. Verranno eseguite in sequenza, cioè una dopo l’altra, batten-
do alla fine il tasto <INVIO>.
pag. 20 Manuale Logo

Possiamo quindi ottenere di nuovo l'intera traccia precedente con:

A 50 A 30 D 30 A 20

Ritorna alla tana e pulisci lo schermo con: PS

Ogni volta che inizi un nuovo disegno devi dare questa istruzione.

Prova ora: INDIETRO 100 , abbreviabile con I 100

La tartaruga è andata nella zone dello schermo in cui scrivi le istruzioni.


Con l’aiuto della tabella 2, trova il modo per far scomparire tutte le
istruzioni.

Dopo aver riportato la tartaruga in tana con il comando PS, prova a


digitare i comandi:

S 70 A 250

Che cosa osservi?

Per evitare che la tartaruga esca dallo schermo e rientri dalla parte
opposta puoi utilizzare il comando: ASCAMPO "CHIUSO.

Dopo averlo fornito, prova a ripetere le istruzioni precedenti e osserva


che cosa accade.

Per tornare alla situazione in cui la tartaruga esce dallo schermo e vi


ritorna dalla parte opposta, puoi utilizzare il comando: ASCAMPO "CIR-
COLARE.

Digita ora i comandi per riportare la tartaruga in tana e ripulire lo


schermo. Digita poi il comando: ASCAMPO "APERTO seguito da: S 70
A 250. Quale effetto diverso osservi rispetto alle due precedeni situazioni?

Rimetti la tartaruga in tana e ripulisci lo schermo. Ora vogliamo ottenere


un tratteggio come questo:

Per prima cosa devi ruotare a destra la tartaruga di 90 gradi con


l’istruzione: D 90 e devi farla procedere di un tratto, che scegliamo di 20
passi, con: A 20.

A questo punto la tartaruga deve compiere un tratto senza lasciare la


traccia e devi quindi sollevare la penna con: SU
2. La tartaruga e lo schermo pag. 21

Per farla procedere di altri 20 passi devi digitare: A 20 e devi poi


riabbassare la penna con: GIU e procedere di nuovo per un tratto analogo
al precedente con: A 20 e poi ancora: SU A 20 GIU A 20 SU A 20 GIU
A 20. Infine per far scomparire la tartaruga devi usare: NASTARTA
abbreviabile con NT.

Abbiamo finito. L’insieme delle istruzioni date costituisce il programma


per realizzare il tratteggio.

Puoi ottenere lo stesso disegno anche con un programma diverso. Dopo


essere ritornato nelle condizioni iniziali (non dimenticare di far ricomparire
la tartaruga con: MT) procedi così:
1) ruota la tartaruga con: D 90
2) disegna un tratto orizzontale di 140 passi con: A 140
3) falla tornare indietro di 20 passi: I 20
4) trasforma la penna in gomma: CANCEPENNA
5) falla tornare indietro di 20 passi: I 20
6) trasforma la gomma in penna con: GIU
7) ripeti per due volte i comandi da 3 - 4 - 5 - 6
8) nascondi la tartaruga con: NT
Se poi vuoi far ritornare la tartaruga in tana, devi infine dare i comandi:
TANA MT

Per finire, utilizza i comandi che hai imparato per scrivere prima sul
quaderno e fare poi eseguire dal computer un programma che realizzi un
disegno di tua scelta.

Se lavori con lo M-LOGO e hai dato il comando Graphics, puoi anche


stampare il tuo disegno. Basta premere il tasto <STAMP>. Ricorda però che
Graphics deve essere battuto prima di caricare lo M-LOGO.

SCHIACCIAMENTO

Abbiamo già detto che le immagini si formano sullo schermo del monitor
mediante l’accensione di pixel. La pagina su cui scrive il computer può
quindi essere vista proprio come un foglio a quadretti, dove però ogni
quadretto è acceso o spento.
pag. 22 Manuale Logo

Quando disegni con la tartaruga, un problema può essere


creato dal fatto che i pixel, in realtà, non sono dei piccoli
quadretti, ma dei rettangolini. Nella figura a fianco puoi
osservare un reticolo di rettangoli (alcuni sono neri) ciascu-
no dei quali rappresenta un pixel avente la base che è lunga
metà dell’altezza. Se pensiamo di far muovere la tartaruga di
10 passi in orizzontale e di 10 in verticale, otteniamo degli
spostamenti che sono uno la metà dell’altro.

Per evitare inconvenienti di questo tipo il LOGO fa opportuni


aggiustamenti. Se, per esempio, lo schermo avesse dei pixel come quelli
della figura, ogni spostamento in verticale dovrebbe essere dimezzato.

Tu non sai come sono fatti i pixels del tuo computer perchè non li vedi.
Il LOGO invece li conosce bene e puoi quindi chiedergli come sono
digitando il comando:

SCHIA

Quale risposta il LOGO ti darà un numero decimale che esprime il


rapporte tra la lunghezza della base del pixel e quella della sua altezza, ossia:
numero decimale = lungh. base / lungh. altezza.

Tieni però presente che nello scrivere numeri decimali il LOGO separa la
parte intera del numero dalla sua parte non intera non mediante la solita
virgola, ma mediante un punto.

Inoltre, se la parte intera è costituita soltanto da uno zero, il LOGO non


lo scrive. Così, per esempio, se egli ti risponde scrivendo .85 , tu dovrai
leggerlo come se fosse 0.85 (ossia: 0,85).

Prova ora a battere le istruzioni:

A 50 I 50 D 90 A 50 I 50 NT

Se non noti molta differenza fra la linea orizzontale e quella verticale,


significa che gli aggiustamenti sullo schiacciamento compiuti dal LOGO
sono adatti al tuo schermo. In caso contrario puoi intervenire con il
comando:

ASSCHIA <numero>

che modifica il rapporto di schiacciamento delle immagini.


2. La tartaruga e lo schermo pag. 23

Se provi a scrivere: ASSCHIA 0.5 e a ripetere le istruzioni precedenti,


dopo aver pulito lo schermo, ottieni una linea verticale più corta.

Mentre se batti: ASSCHIA 1.5 la linea verticale risulta più lunga.

Quando inizi a lavorare, dopo aver caricato il LOGO, il valore di


schiacciamento è 0.85. Se le figure che disegnerai ti sembrano schiacciate,
con un po’ di prove puoi trovare qual è il valore migliore per il monitor
del tuo computer

DAI PIXEL ALLE LINEE

Un secondo problema, dovuto alla rappresentazione mediante pixel, si ha


nel tracciare linee oblique. Nella figura in alto a sinistra nella pagina a fronte
abbiamo disegnato una linea obliqua rappresentata nell'unico modo possi-
bile, ossia annerendo una serie di quadretti. Come puoi osservare, non si
ottiene una linea continua, ma un insieme di «gradini». Fai anche tu qualche
prova annerendo "a scaletta" una serie di quadretti su carta quadrettata: più
i quadretti sono piccoli, migliori saranno i risultati che otterrai.

Anche sullo schermo grafico del computer le linee sono rappresentate in


modo analogo. Tutte le immagini che appaiono sul video sono digitalizzate,
trasformate cioè in pixel accesi o spenti. È quindi molto importante la
definizione (o risoluzione) del video, ossia il numero dei pixel presenti in
rapporto alla superficie. Più è grande la definizione del tuo computer,
migliori sono i risultati grafici che puoi ottenere.

IL COLORE

Se hai un video a colori potrai continuare questa esplorazione diverten-


doti a ottenere immagini colorate, cambiando il colore della penna della
tartaruga e del foglio su cui essa disegna.

I comandi che potrai utilizzare sono:

ASCOL <numero>
Fa cambiare colore alla penna; l’argomento deve essere un numero
compreso fra 0 e 3; ad ogni numero corrisponde un diverso colore.
pag. 24 Manuale Logo

ASTAVOLOZZA <numero>
Fa cambiare la tavolozza in cui vengono scelti i quattro colori della penna;
le tavolozze sono due, corrispondenti ai valori 0 e 1 dell’argomento.

ASSFONDO <numero>
Fa cambiare colore al foglio su cui disegna la tartaruga; ogni colore
corrisponde a un valore dell’argomento fra 0 e 15.

RIEMPI
Colora la figura chiusa, all’interno della quale si trova la tartaruga, con
il colore della penna; se la figura non è chiusa, colora tutto lo sfondo.

IL LOGO CONOSCE L’ARITMETICA

Quando, dopo un comando, il LOGO richiede un numero, che, come già


sai, si chiama argomento del comando, al posto del numero puoi scrivere
una espressione aritmetica da risolvere. Puoi esser certo che il LOGO,
essendo un bravo “calcolatore”, la risolverà con assoluta esattezza. Così se
scrivi:

AVANTI 10*5 il LOGO calcola AVANTI 50

DESTRA 100/3 il LOGO calcola DESTRA 33.33333...

INDIETRO 5+12 il LOGO calcola INDIETRO 17

AVANTI RADQ 144 il LOGO calcola AVANTI 12

PER USCIRE DAL LOGO

Terminati i tuoi lavori, puoi uscire dal LOGO per poi spegnere il
computer digitando il comando:

CIAO

A questo punto, se il tuo computer non rientra in DOS e si blocca, per


sbloccarlo "resettalo" digitando simultaneamente i tre tasti :

<CTRL ALT CANC>

poi spegnilo.
3. Poligoni con il comando Ripeti pag. 25

POLIGONI CON IL COMANDO RIPETI

IL COMANDO RIPETI.

Il comando

RIPETI
ti fa risparmiare la fatica di dover ripetere più di una volta una istruzione
singola, oppure una serie di istruzioni.

Per usarlo basta che tu scriva, dopo la parola RIPETI, due argomenti:
prima il numero delle ripetizioni che vuoi compiere e poi, racchiuse tra
parentesi quadrate, l’istruzione o la lista di istruzioni da ripetere.

Per esempio, batti separatamente le seguenti serie di istruzioni:

RIPETI 4 [A 23]

PS RIPETI 3 [A 30 D 60]

PS RIPETI 8 [A 65 D 135]

PS RIPETI 20 [D 50 A 15 D 60 A 10]

Per ripetere 24 volte la serie di istruzioni: A 100 D 15 I 80, batti:

PS RIPETI 24 [A 100 D 15 I 80].

Se la tartaruga parte dal centro dello schermo, la vedrai uscire da un lato


dello schermo stesso e ricomparire dal lato opposto. Per evitare ciò, devi far
cominciare i movimenti della tartaruga da una diversa posizione. Una buona
posizione da cui potresti farla partire potrebbe essere, per esempio, 100
passi a sinistra dal centro e 100 passi più in basso.
Per trasferire la Tartaruga in questa nuova posizione di partenza, batti:

S 90 A 100 S 90 A 100
pag. 26 Manuale Logo

Ora la Tartaruga è nel punto giusto, ma è rivolta verso il basso. Per darle
l’orientamento giusto con cui effettuare le 24 ripetizioni potrai battere:

D 180

Essa, però, nel muoversi ha disegnato una traccia. Digita

PS

riportando la tartaruga nella posizione iniziale e concellando la traccia in


precedenza lasciata.

Lo stesso spostamento realizzato prima, ma senza lasciare alcuna traccia,


potrai ottenerlo scrivendo:

SU S 90 A 100 5 90 A 100 D 180 GIU

e la tartaruga sarà di nuovo pronta a compiere le ventiquattro ripetizioni.

FREGI REALIZZATI CON IL COMANDO RIPETI

Per riprodurre il fregio della Figura 1, prima di tutto devi individuare il


modulo, cioè la parte che nel ripetersi realizza il disegno. Devi poi scrivere
le istruzioni relative a tale modulo.

Una soluzione potrebbe essere:

A 10 D 90 A 10 D 90 A 10 S 90 A 10

Se però osservi come è orientata la tartaruga al termine della sua


esecuzione, ti accorgi che non è possibile realizzare il disegno ripetendo
questo modulo. Occorre che la tartaruga termini disponendosi nella stessa
direzione che aveva all’inizio.

Dobbiamo dunque aggiungere il comando S 90, che porta la tartaruga in


posizione corretta.

Figura 1

FREGIO MODULO
3. Poligoni con il comando Ripeti pag. 27

Il modulo esatto sarà quindi:

A 10 D 90 A 10 D 90 A 10 S 90 A 10 S 90

Per disegnare il fregio devi ripetere il modulo cinque volte:

RIPETI 5 [A 10 D 90 A 10 D 90 A 10 S 90 A 10 S 90]

Osservando le istruzioni riportate dentro il modulo, nota che alcune di


esse si ripetono due volte. Puoi quindi utilizzare RIPETI all’interno di un
altro RIPETI. La sequenza di istruzioni:

A 10 D 90 A 10 D 90

può essere sintetizzata con:

RIPETI 2 [A 10 D 90]

e così pure:

A 10 S 90 A 10 S 90

diventa:

RIPETI 2 [A 10 S 90]

Perciò il programma precedente sarà così strutturato:

RIPETI 5 [RIPETI 2 [A 10 D 90] RIPETI 2 [A 10 S 90]]

Considera ora il fregio della Figura 2: il modulo, a prima vista, sembra


essere costituito da un semplice quadrato definito dalle istruzioni:

RIPETI 4 [A 10 D 90]

Tuttavia, per non disegnare sovrapposti i cinque quadrati, la tartaruga


deve effettuare uno spostamento senza lasciare traccia alcuna:

RIPETI 4 [A 10 D 90] SU D 90 A 20 D 90 GIU

Il programma per disegnare il fregio è allora:

RIPETI 5 [RIPETI 4 [A 10 D 90] SU D 90 A 20 S 90 GIU]

Figura 2
pag. 28 Manuale Logo

Figura 3 Con il comando RIPETI puoi ottenere figure complesse


mediante la rotazione di figure più semplici. Osserva la
Figura 3.

Il programma che realizza il disegno è:

RIPETI 6 [RIPETI 2 [A 40 D 90 A 20 D 90] D 360/6]

Il modulo è formato da:

RIPETI 2 [A 40 0 90 A 20 0 90] D 360/6

con il quale costruiamo il rettangolo e poi facciamo ruotare la tartaruga di


un opportuno angolo

Prova ora a scrivere i due programmi che servano a realizzare la Figura


4 e la Figura 5.

Per scrivere il programma della Figura 5 tenta di utilizzare una parte del
programma scritto per la Figura 4.

Figura 4

Figura 5

REGOLA DEL GIRO COMPLETO.

Giro completo attorno ad un poligono.


Quando la Tartaruga disegna una figura geometrica avente forma di
poligono e ritorna, sia alla posizione, sia all’orientamento di partenza, la
somma dei cambiamenti di direzione che avrà effettuato sarà ogni volta un
giro completo.
3. Poligoni con il comando Ripeti pag. 29

Ciò significa che la tartaruga ha eseguito un certo numero Figura 6


di cambiamenti di direzione le cui ampiezze angolari, somma-
120°
te tra loro, daranno sempre un totale di 360 gradi.

Se desideri, per esempio, far disegnare alla tartaruga un


triangolo equilatero, devi tener presente che è un poligono
120°
regolare con tre lati, e quindi con tre vertici.
120°

Così, quando la tartaruga, camminando, arriva ad un ver-


tice dovrai ordinarle di eseguire un cambiamento di direzione di ampiezza
uguale ad un terzo di angolo giro, ovvero (360 : 3) gradi, ossia 120° (vedi
Figura 6).

Importanza degli angoli esterni.


In circostanze simili, specie nel corso delle prime attività con la tartaruga,
c’è il rischio di cadere facilmente in errore.

Nel caso del disegno del triangolo equilatero, per esempio, per ciò che si
è imparato scuola, si è convinti che, per disegnare quella figura, basta
conoscere la misura degli angoli interni dello stesso triangolo, e non quella
dei corrispondenti angoli esterni.

Per tale motivi si è indotti ad ordinare alla tartaruga di effettuare, ad ogni


vertice, un cambiamento di direzione di 60°, e non un cambiamento di
direzione di 120° che, invece, è quello che occorre effettivamente eseguire.

In queste circostanze, allora, la tartaruga obbedirà fedelmente ai comandi


che le vengono dati e, anzichè disegnare ur triangolo equilatero, disegnerà
un ... semiesagono.

L’errore in cui si cade nasce dalla convinzione che, per costruire un


triangolo basta considerare soltanto i suoi angoli interni, trascurando di
considerare i suoi angoli esterni corrispondenti.

Sono invece gli angoli esterni quelli che fondamentalmente interessano


nel procedimento di costruzione. Essi, infatti, consentono di calcolare
ciascun cambiamento di direzione che la tartaruga dovrà effettuare per
muoversi su tutto il contorno del triangolo da disegnare.
pag. 30 Manuale Logo

Regola di calcolo per disegnare poligoni regolari.


Dopo le considerazioni appena fatte, diventa assai semplice la strada per
arrivare alla regola generale, con la quale tu potrai calcolare l’ampiezza
di ciascun cambiamento di direzione per disegnare tutti i tipi di poligoni
regolari.

Se N è il numero dei lati di un poligono regolare, l’ampiezza di ciascun


cambiamento di direzione da effettuare per disegnarlo, ossia l’ampiezza di
ciascun angolo esterno del poligono stesso, sarà allora uguale ad una
ampiezza di (360 : N) gradi. Ossia: l'ampiezza di un angolo giro divisa per
il numero dei lati del poligono considerato.

Così, per il quadrato (4 lati) ciascun cambiamento di direzione da


effettuare sarà di (360 : 4) = 90°, per il pentagono regolare (5 lati) di (360
: 5) = 72°, per l’esagono regolare (6 lati) di (360 : 6) = 60°, ..... , e così
seguito per tutti gli altri poligoni regolari, con numero di lati man mano
crescente.

È questa la regola che Papert, uno degli ideatori del LOGO, chiama come:
regola del giro completo. Quando tu arrivi ad esser padrone di questa
regola, avrai conquistato, secondo Papert, una idea matematica assai poten-
te, destinata ad avere una influenza, positiva ed efficace, per i successivi
sviluppi delle tue conoscenze matematiche.

Ecco i programmi LOGO per i principali poligoni regolari:


Triangolo equilatero RIPETI 3 [A 50 D 360/3]
Quadrato RIPETI 4 [A 50 D 360/4]
Pentagono regolare RIPETI 5 [A 50 D 360/5]
Esagono regolare RIPETI 6 [A 50 D 360/6]
........
Formula generale (N lati, lungh. L) RIPETI N [A L D 360/N]

CERCHI E ARCHI

Riprendiamo la formula generale scritta sopra per disegnare un poligono


regolare di lato lungo L e con N lati:

RIPETI N [A L D 360/N]
3. Poligoni con il comando Ripeti pag. 31

Se attribuisci valori crescenti a N e valori decrescenti a L, ottieni dei


poligoni il cui contorno assomiglia sempre di più a una circonferenza. In
particolare quando N = 360 la rotazione diventa: 360/360 = 1.

Se digiti:

RIPETI 360 [A 1 D 1]

ottieni il disegno di un poligono regolare di 360 lati di 1 passo. Poiché la


tartaruga non può compiere un avanzamento minore di un pixel tale poligo-
no può essere considerato la migliore approssimazione di un cerchio
realizzabile con il computer.

Una circonferenza disegnata in questo modo, cioè attraverso piccoli passi


e minime rotazioni della tartaruga, si ottiene con un procedimento diverso
da quello usato con il compasso. Con la tartaruga non si tiene conto della
proprietà che possiedono i punti appartenenti a una circonferenza:
l’equidistanza dal centro. Con il compasso invece la circonferenza viene
disegnata come luogo dei punti che hanno uguale distanza da un punto
fisso. La distanza viene chiamata raggio e il punto fisso centro.

Anche se la tartaruga non considera la circonferenza nel modo tradizio-


nale, è però in grado di disegnare circonferenze con raggi diversi. Per
realizzarle basta far variare la misura dell’avanzamento. Puoi provare con:

RIPETI 360 [A 2 D 1]
Ottieni una circonferenza di 720 passi (360 x 2). La misura dell’avanza-
mento è uguale alla lunghezza della circonferenza divisa per il numero di
ripetizioni.

Puoi anche sostituire D con S, facendo compiere delle rotazioni a sinistra.


Otterrai circonferenze simmetriche rispetto alle precedenti. Questa 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 la
rotazione della tartaruga:

Analogamente, se vogliamo disegnare un quarto di circonferenza, dob-


biamo fare 90 ripetizioni (1/4 di 360), mentre un sesto di circonferenza
richiede 60 ripetizioni (1/6 di 360).
pag. 32 Manuale Logo

In generale il numero di npetizioni corrisponde alla misura in gradi


dell’angolo aI centro che sottende l’arco di circonferenza disegnato.

Per continuare le attività relative ai cerchi e agli archi puoi progettare i


programmi che occorrono per realizzare le figure che sono sotto. Per la
Figura 7, per esempio, il programma che lo realizza è il seguente:

SU S 90 A 100 D 180 GIU

RIPETI 90[A 1 S 1]

RIPETI 540 [A 1 D 1]

RIPETI 90[A 1 S 1]

SU TANA GIU

Figura 7 Figura 8

Figura 9 Figura 10
3. Poligoni con il comando Ripeti pag. 33

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 quello
inferiore, oppure dal lato sinistro a quello destro?

3. Prova a disegnare le iniziali del tuo nome e del tuo cognome. Ecco, ad
esempio, i comandi che occorrono per scrivere:

- una L : S 90 A 50 D 90 A 100

- una I : A 100

- una V : S 15 A 100 I 100 D 30 A 100

- una T : A 100 S 90 A 25 I 50

5. Prova a disegnare una scalinata ripetendo un certo numero di volte la


seguente serie di comandi:

A 10 S 90 A 10 D 90

6. Prova a ripetere un certo numero di volte la seguente serie di comandi:

A 10 S 140 A 30 S 199

Quale disegno compare? Quante volte devi ripetere la serie per avere il
disegno della lama di una sega circolare?

7. Quale disegno compare con la seguente serie di comandi:

A 100 I 200 A 100 S 45 A 100 I 200 A 100 S 45 A 100 I 200


A 100 S 45 A 100 I 200 A 100

Potresti ottenere lo stesso disegno con alcune ripetizioni ? Quante ? Ci


sono serie più semplici di comandi ripetuti per avere lo stesso disegno?
Come potresti realizzare lo stesso disegno usando anche il comando
TANA?
pag. 34 Manuale Logo

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 la


serie: A 100 D 36 I 70

10. Scrivi una serie di istruzioni per disegnare una figura di quattro lati.

11. Disegna un cerchio servendoti del comando RIPETI; quindi, senza


pulire lo schermo, disegna un altro cerchio con numero di passi doppio,
e poi un altro ancora con ampiezza di rotazione doppia.

12. Disegna un cerchio a destra ed uno analogo a sinistra.

13. Disegna un arco a destra, lungo un quarto di cerchio.

14. Disegna un altro arco lungo un quarto di cerchio, ma con passi doppi
rispetto all’arco del progetto precedente.

15. Disegna un arco a sinistra lungo un sesto di cerchio, poi uno analogo
a destra. (Suggerimento: usa la divisione e lascia fare i calcoli al LOGO).

Figura 11: una faccia nelle varie fasi della sua costruzione.
4. Le "geometrie" del LOGO pag. 35

LE "GEOMETRIE" DEL LOGO

LO SCHERMO GRAFICO

Con il comando SCHIA controlla l’indice di schiacciamento dello


schermo e, se la tartaruga ti risponde con un numero diverso da .85, assegna
all'indice questo valore ottimale con il comando:

ASSCHIA 0.85
Digita poi PS. Ora la tartaruga è
nella posizione TANA ed è rivolta 117 PASSI

verso l’alto. Può fare 117 passi pri-


ma di uscire dallo schermo e ricom- 159 PASSI 160 PASSI
parire nella parte inferiore. Se inve-
ce viene rivolta verso il basso, i passi
che può fare sono 116 (Fig. 1). 116 PASSI

Sempre dalla posizione di TANA, Fig. 1: Indice di schiacciamento = 0.85


può muoversi di 160 passi quando è
rivolta verso destra, ma solo di 159 quando è rivolta verso sinistra.

Tenuto conto che la posizione di TANA occupa un passo che va aggiunto,


sia a quelli del percorso verso il basso, sia a quelli del percorso verso
sinistra, il totale dei passi che la tartaruga può compiere sullo schermo
(ossia il totale dei pixels che la tartaruga, muovendosi, può accendere) sono:

(117 x 2) x (160 x 2) = 234 x 320 = 74 880

Se con la primitiva ASSCHlA assegni un altro valore al rapporto di


schiacciamento, viene modificato il campo verticale della tartaruga, mentre
quello orizzontale resta invariato.

Così, per esempio, se assegni all’indice di schiacciamento il valore di 1,


i passi che la tartaruga ha a disposizione all’interno dello schermo sono :
100 verso l’alto, 99 + 1 = 100 verso il basso, 160 verso destra e 159 +
1 = 160 verso sinistra.
pag. 36 Manuale Logo

Con l'indice di schiacciamento = 1, sullo schermo vi sono quindi 200 x 320


= 64 000 pixels a disposizione per i movimenti della tartaruga.

Realizza alcune esperienze su quanto detto sopra. Digita il seguente


comando:

CAMPO
Se la tartaruga ti risponde CIRCOLARE oppure APERTO, digita:

ASCAMPO “CHIUSO
Poi , sempre dalla TANA, fa’ compiere alla tartaruga un numero di passi
maggiore, oppure minore, di quelli prima indicati e osserva che cosa accade.
Ricorda che per riportare la tartaruga alla TANA e ripulire lo schermo puoi
sempre usare il comando: PS.

SISTEMI GEOMETRICI PER LA TARTARUGA

La tartaruga si può muovere sullo schermo utilizzando due diversi


“geometrie”, o, più precisamente, può percorrere la superficie dello 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 a


qualcuno le indicazioni per trovare una via della tua città, il sistema di
riferimento che adoperi è quello relativo
Fig. 2
AVANTI alla conformazione del tuo corpo. Nel muo-
# verti sul pavimento di una stanza puoi sce-
A SINISTRA

A DESTRA

gliere di spostarti in avanti o indietro, con-


" !
servando sempre la stessa direzione, oppure
$ di cambiar direzione girando a destra, op-
pure girando a sinistra (Fig. 2).
INDIETRO
4. Le "geometrie" del LOGO pag. 37

La stessa cosa accade al “corpo” della tartaruga. I comandi che le dai:

AVANTI, INDIETRO, DESTRA, SINISTRA


(con i rispettivi argomenti numerici)

la tartaruga li interpreta in relazione al proprio “corpo”, ossia mediante un


sistema di riferimento che sta al suo interno. Sono quindi i comandi che
appartengono ad un particolare sistema di riferimento geometrico che
chiamiamo “intrinseco”.

AVANTI, INDIETRO, DESTRA, SINISTRA sono i


comandi della geometria intrinseca del LOGO.

Il sistema di riferimento cartesiano


Il sistema di riferimento della tartaruga che chiamiamo “estrinseco” è
costituito dalla sintesi di due componenti fondamentali che sono:

- il sistema di riferimento cartesiano,

- il sistema di riferimento polare.

Il sistema di riferimento cartesiano , come forse sai già, somiglia molto a


quello utilizzato nel noto gioco della “battaglia navale”.

Questo sistema geometrico, quasi sempre rappresentato mediante il


cosiddetto “diagramma (o grafico) cartesiano”, permette di individuare,
mediante una coppia di numeri relativi, la posizione di numerosi punti
riportati sopra un piano.

Osserva la Fig. 3 a fianco. Y Fig. 3


Vi sono rappresentate due ret- u
+6
te orientate perpendicolari:
semiasse positivo

+5

XX’ ed YY’, chiamate assi +4


2° QUADRANTE 1° QUADRANTE
+3
cartesiani. Più precisamente:
+2
la prima si chiama asse delle +1
x o delle ascisse e la seconda X' -6 O
X
-5 -4 -3 -2 -1 +1 +2 +3 +4 +5 +6
-1
asse delle y o delle ordinate. I semiasse negativo semiasse positivo

-2
semiasse negativo

due assi dividono il piano in


-3
3° QUADRANTE 4° QUADRANTE
quattro angoli retti che si chia- -4
mano rispettivamente primo, -5
-6
secondo, terzo e quarto qua-
drante. Y'
pag. 38 Manuale Logo

Il punto O di intersezione dei due assi XX’ ed YY ’ è denominato origine


e divide ciascun asse nelle semirette OX, OX’ ed OY, OY’. Queste si
chiamano rispettivamente: OX semiasse positivo e OX’ semiasse negativo
delle ascisse, OY semiasse positivo e OY’ semiasse negativo delle ordinate.

Sulle quattro semirette è stata fissata una unità di misura per le lunghezze,
(per esempio potrebbe essere il centimetro o, più in generale, un segmento
di lunghezza prestabilita). Ciò fatto, disegniamo sul primo quadrante un
qualsiasi punto P e conduciamo da esso le perpendicolari PH e PK 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 entrambe


prendono il nome di coordinate di tale punto .

All’ascissa e all’ordinata di un punto si attribuisce il segno positivo, o il


segno negativo, in dipendenza del fatto che i segmenti OH ed 0K che li
hanno per misure appartengano ad un semiasse positivo, o ad un semiasse
negativo.

Fig. 4 Così, per esempio (Fig. 4):


K P - il punto P ha l’ascissa OH = 2
Q e l’ordinata OK = 4 e lo indi-
chiamo con: P (2 ; 4);

O H
- il punto Q ha l’ascissa = -2 e
l’ordinata = 3, e lo indichiamo
con: Q (-2 ; 3).
R - il punto R ha l’ascissa = -3 e
l’ordinata = -4, e lo indichiamo
con R (-3 ; -4).

Nel LOGO è presente, nascosto sotto lo schermo, un sistema di riferi-


mento cartesiano che ha come unità di misura la lunghezza di un passo della
tartaruga. Noi sullo schermo non vediamo questo diagramma, ma la tarta-
ruga lo vede e lo conosce bene. Ragion per cui è in grado di obbedire ai
comandi seguenti:
VAX 50 che la fa andare al punto dello schermo di coordinate (5 ; 0)
VAY -30 che la spostano al punto di coordinate (0 ; -30)
VAXY [-40 20] che la conducono al punto di coordinate (-40 ; 20)
4. Le "geometrie" del LOGO pag. 39

Prova ad effettuare gli spostamenti ora indicati.

Disegna anche un triangolo equilatero con il “programma” di comandi:

VAX 80 VAY 60 SU TANA GIU VAXY[80 60] TANA

Se poi la tartaruga non sta in TANA e tu vuoi sapere quali sono le


coordinate del punto in cui sta il LOGO ti fornisce i due comandi:

XCOR e YCOR

Digitando il primo ottieni come risposta la coordinata relativa all'asse X,


mentre copn il secondo avrai la coordinata relativa all'asse Y.

VAX , VAY, VAXY, XCOR, YCOR sono i comandi della


geometria cartesiana del LOGO.

Il sistema di riferimento polare


Alcune volte, per stabilire una posizione, ti limiti a spostare lo sguardo
fissandolo su oggetti facilmente identificabili. Così può capitare che, rivol-
gendoti a un amico tu dica: «Vedi laggiù l’entrata della scuola? Girati un
po’ a sinistra. Luigi è il ragazzo con la cartella rossa a 20 circa metri da
noi». Organizzi così lo spazio nella maniera più naturale a partire dalla tua
posizione utilizzando una certa direzione e una determinata distanza.

Situazioni di questo tipo possono


avviarti alla conoscenza delle "coor-
dinate polari" e queste puoi usarle in 20
0
m

=
a
modo preciso indicando: la direzione s ta
nz
di
di partenza, l’angolo da cui ruotare a
partire da essa e la distanza dell'og-
Fig. 4
getto osservato (Fig. 5).

Nello studio delle coordinate polari dovresti partire dalla costruzione del
concetto di angolo come cambiamento di direzione e dalla consapevolezza
del suo doppio verso di rotazione, qual è, per esempio, il verso di
percorrenza, orario e antiorario, sul cerchio e nei giochi di girotondo.
Occorrerebbe poi che tu conquistassi l’idea dell’insieme delle direzioni che
escono «a raggiera» nello spazio, partendo da te quale osservatore colloca-
to nel centro di riferimento del sistema polare.
pag. 40 Manuale Logo

Fig. 5 La tartaruga ha a sua disposizione an-


che il sistema di riferimento polare perchè,
Dir. 0° = 360°
Dir. 40° = 400°
quando è collocata nella posizione TANA
ed è 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 angolare
della sua direzione, mentre accade il contrario quando ruota nel verso
antiorario, ossia verso sinistra.

I comandi del sistema polare per realizzare e valutare queste rotazioni


sono rispettivamente:

ASDIR <numero gradi> e DIR

Con ASDIR la tartaruga ruota verso destra del numero di gradi indicati
dall'argomento, se questo è un numero positivo, mentre ruota verso sinistra
se il numero è negativo. La direzione rappresentata con una linea 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 angolare


sulla quale la tartaruga sta in quel momento disposta.

Dopo aver modificato con ASDIR la direzione della tartaruga, puoi usare
il comando AVANTI per effettuare lo spostamento che ritieni necessario
per realizzare il disegno che desideri.

ASDIR, DIR, AVANTI sono i comandi della geometria


polare del LOGO.

Il LOGO dispone infine di un comando con il quale il sistema di 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 la


direzione che passa per il punto di coordinate (30 ; 30). Digita allora
VERSO [30 30 ]. Il LOGO ti risponderà: 45. È il valore angolare che devi
fornire come argomento ad ASDIR per tracciare una linea che passi su quel
punto.
4. Le "geometrie" del LOGO pag. 41

TABELLA DEI COMANDI DEI SISTEMI CARTESIANO E POLARE

SISTEMA CARTESIANO

VAX Ordina alla tartaruga di spostarsi orizzontalmente fino al punto di


ascissa uguale al numero fornito come argomento.
Esempio: VAX 30
Ordina alla tartaruga di spostarsi verticalmente fino al punto di
VAY ordinata uguale al numero fornito come argomento.
Esempio: VAY 45
Ordina alla tartaruga di andare nella posizione specificata dai due
VAXY numeri che compongono la lista e che costituiscono le coordinate
X e Y del punto in questione
Esempio: VAXY [30 45]
Risponde indicando l'ascissa del punto in cui si trova la tartaruga.
XCOR
Esempio: XCOR Risposta: 30
Risponde indicando l'ordinata del punto in cui sta la tartaruga.
YCOR Esempio: YCOR Risposta: 45
Risponde riportando una lista contenente le due coordinate del
DOVE punto in cui sta la tartaruga.
Esempio: DOVE Risposta: [30 45]
Colora il punto le cui coordinate sono costituite dai due numeri
SCRIPUNTO che formano la lista che gli è stata data per argomento.
Esempio: SCRIPUNTO [30 45]

SISTEMA POLARE

Determina la direzione di avanzamento della tartaruga. Il suo


ASDIR
argomento numericoindica la direzione scelta in gradi. Il sistema
di riferimento imita quello della bussola: 0 gradi sono in alto (il
Nord) e, ruotando nel verso orario, aumentano i gradi. Il cambia-
mento di direzione che si ottiene è indipendente dall'orientamento
precedente: costituisce infatti un valore del tutto assoluto.
Esempio: ASDIR 45

DIR Risponde indicando la direzione assoluta che ha la tartaruga in


quel momento.
Esempio: DIR Risposta: 45
Risponde indicando la direzione assoluta sulla quale va collocata
VERSO la tartaruga per indirizzarla verso il punto le cui coordinate gli
sono state date come argomento
Esempio: VERSO [30 30] Risposta: 45
pag. 42 Manuale Logo

LE PROCEDURE E IL FOGLIO

PRIMITIVE E PROCEDURE

Dopo aver imparato a pilotare la Tartaruga per eseguire disegni, puoi ora
imparare come attribuire un nome a ciascun disegno e il LOGO ti consentirà
di utilizzare questo nome quale nuovo comando da dare alla tartaruga.

In questo modo, i nomi che potrai scegliere a piacere, quali per esempio
TRIANGOLO, oppure PARETE, li potrai digitare sui tasti e, come per
miracolo, i disegni da te creati e chiamati con questi nomi, appariranno di
sullo schermo.

Per ottenere questo straordinario risultato, però, dovrai avere in prece-


denza compilato le rispettive procedure.

In LOGO una procedura è formata da una serie di comandi ordinati con


molta esattezza e pensati per realizzare un certo disegno. Tali comandi
possono essere sia parole primitive del LOGO, sia i nomi di altre procedure.
Quindi:
- una parola primitiva è un comando già presente nel LOGO;
- il nome di una procedura sarà, invece, un nuovo comando da te definito.

AVANTI, INDIETRO, SINISTRA, DESTRA, RIPETI sono parole


primitive del LOGO. Come sai già, per usarle devi semplicemente digitarle
sulla tastiera, facendole seguiredal rispettivo argomento numerico.

Per le procedure, dopo avere in precedenza imparato a progettarle, a


definirle ed eventualmente a correggerle, potrai fare la stessa cosa.

COME DARE IL NOME AD UNA PROCEDURA

Batti, per esempio, QUADRATO seguito da <INVIO>. Il LOGO, che


ancora non conosce questa parola, ti risponderà:

LA PROCEDURA QUADRATO NON ESISTE.


5. Le procedure e il foglio pag. 43

Con questo messaggio il LOGO intende dire che non è in grado di


riconoscere la parola che tu hai digitato, nè come parola primitiva, nè come
nome di una procedura. Insomma, non è nella condizione di eseguire quel
tuo comando.

Quando scegli in nome per una procedura è consigliabile che:


- il nome richiami, in un certo qual modo, ciò che la procedura deve
compiere; ad esempio, la procedura che servirà a disegnare un fiore
potresti chiamarla, appunto: FIORE;
- sia una parola facile da ricordare;
- sia una parola breve e facile da scrivere;
- non si possa facilmente confondere con un altro nome.

AMBIENTE DI EDIZIONE DELLE PROCEDURE.

Come già detto, per scrivere una procedura puoi cominciare a scegliere
e a scriverne il nome. Nel nostro precedente esempio è stato scelto il nome
QUADRATO, ma, naturalmente, puoi scegliere qualsiasi altro nome che
preferisci.

Per avvisare il LOGO che stai per scrivere una procedura, il nome da te
scelto per la procedura stessa deve essere preceduto dal comando:

PER

seguito da uno spazio vuoto. Scriverai, per esempio:

PER QUADRATO.

A questo punto, quando premi il tasto <INVIO>, nella riga sotto a PER
QUADRATO sparisce il punto interrogativo e, al suo posto, compare il
carattere " > " seguito dal solito cursore lampeggiante.

La presenza a capo riga del carattere " > " è il segnale che sei entrato
nell'ambiente del LOGO dove si scrivono le procedure. Questo ambiente in
"informatichese"si chiama: ambiente di edizione dellle procedure

Tieni sempre presente che l'ambiente di edizione delle procedure è assai


diverso da quello dei comandi immediati.
pag. 44 Manuale Logo

Nell'ambiente dei comandi immediati, non appena premi il tasto <IN-


VIO>, il LOGO esegue subito i comandi scritti in precedenza da te, quali
AVANTI, DESTRA, ecc. .

Nell'ambiente dell’editore, invece, se scrivi le istruzioni: AVANTI, DE-


STRA e poi premi il tasto <INVIO>, il LOGO non esegue alcunché, ma
aspetta che tu abbia scritto l’intera procedura, ossia che tu abbia elencato
tutta le serie di istruzioni che costituiranno il corpo della procedura stessa.

Come ti mostra anche lo schema riportato sotto, la procedura va definita


stando dentro l'ambiente dell’editore, all'interno del quale sei tu ad "inse-
gnare" al LOGO quali sono i comandi a cui deve obbedire per realizzare la
procedura da te progettata.

PER "...
AMBIENTE DEI AMBIENTE DI
COMANDI EDIZIONE DELLE
IMMEDIATI PROCEDURE
FINE

Mentre sei nell’editore di procedure, puoi spostare il corsore usando i


tasti con le frecce e puoi cancellare il carattere a sinistra del cursore usando
il tasto <BACKSPACE>, esattamente allo stesso modo nel quale usi tali
tasti nel mondo dei comandi immediati.

Terminata la digitazione dell'intera procedura, per uscire dall'ambiente


dell'editore e tornare a quello dei comandi immediati basta che tu concluda
la procedura stessa scrivendo la parola FINE .

Comincia a prendere confidenza con l’editore. Digita questi comandi:

PER MUOVITI <INVIO>

A 100 <INVIO>

D 15 <INVIO>

I 80 <INVIO>

FINE
Rileggi ora con attenzione le due procedure per assicurarti che:
- i comandi siano stati scritti in modo corretto;
- nei numeri vi siano zeri (0), e non o maiuscole (O);
5. Le procedure e il foglio pag. 45

- vi sia sempre uno spazio tra l’istruzione ed il suo argomento numerico.

Controllata attentamente la scrittura, premi il tasto <INVIO> e il LOGO


ti segnalerà di avere compreso i tuoi comandi scrivendo:

fine della definizione di MUOVITI

A questo punto ricomparirà sul video il punto interrogativo ( ? ) per


segnalarti che la tartaruga è in attesa dei tuoi ordini.

Hai scritto così la tua prima procedura, insegnando, in tal modo, un


nuovo comando alla tartaruga. Questo nuovo comando è rappresentato dal
nome MUOVITI da te scelto. Ora potrai vedere se la tua procedura funziona
nel modo in cui l’avevi progettata e, per farlo, non ti rimane altro che
provarla.

ESECUZIONE DI PROCEDURE CON LA INVOCAZIONE

Dopo aver definito la tua prima procedura, scrivi semplicemente:

MUOVITI <INVIO>

ll LOGO interpreta la tua scritta come comando di esecuzione della


procedura redatta in precedenza e passa ad eseguirla immediatamente.

Si dice, con un termine tecnico, che scrivendo: MUOVITI tu hai invocato


la procedura per farla eseguire.

Come per la primitiva: AVANTI 50 basta digitarlarla per farla eseguire,


così ora basta digitare il nome: MUOVITI per comandare al LOGO di
eseguire tutto quanto è stato prescritto nella procedura stessa. Questo è ciò
che si chiama eseguire una procedura mediante la sua invocazione.

PER CORREGGERE LE PROCEDURE C'È IL FOGLIO

Se invochi una procedura nella quale hai, per caso, scritto male una
parola, il LOGO ti invia un messaggio di errore.

Per correggere l'errore commesso devi allora trasferirti in un ambiente


particolare chiamato FOGLIO all'interno del quale si correggono le proce-
dure sbagliate.
pag. 46 Manuale Logo

Le tappe di passaggio a questo ambiente, la successiva correzione della


procedura sbagliata e il rientro nell'ambiente dei comandi immediati potrai
percorrerle seguendo con attenzione le seguenti istruzioni:

1. Digita:
EDITA "nomeprocedura (per esempio: EDITA "MUOVITI).
Vedrai apparire una schermata particolare suddivisa in due parti. La
superiore contiene la procedura da correggere. La inferiore inizia con
una scritta in rosso e sotto ha la zona degli eventuali comandi da dare.
In ambedue le zone si vede il cursore lampeggiante.

2. Per rendere attivo il cursore nella zona superiore digita il tasto:


<INVIO>
e procedi a correggere il testo della procedura spostando il cursore
stesso mediante le frecce direzionali e il solito tasto di cancellazione
del carattere precedente, ossia il tasto <BACKSPACE>.
3. Effettuata la correzione puoi tornare nell'ambiente dei comandi 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 traduzione
del termine inglese: debugging, che significa "eliminare gli errori" poichè,
in inglese la parola: bug oltre a significare "baco", significa anche "errore".

Esegui alcune volte di seguito la procedura MUOVITI e verificherai che


la tartaruga, nel realizzare il disegno progettato per tale procedura, partirà
ogni volta dalla posizione e dall’orientamento in cui si trovava alla fine
dell’esecuzione del precedente ordine di: MUOVITI.

Puoi dare anche qualche altro comando alla figura dello schermo, facendo
ruotare e poi camminare la tartaruga, per esempio con i comandi:

DESTRA 12 AVANTI 55

Questi comandi li puoi digitare, di volta in volta, pure direttamente,


senza cioè doverli includere tra quelli della tua procedura.
5. Le procedure e il foglio pag. 47

GESTIONE DEL FOGLIO

Puoi rendere visibile sullo schermo il contenuto del FOGLIO digitando


il comando:

MOSFOGLIO

che che produce effetti abbastanza simili al comando EDITA.

Invece con il comando:

NASFOGLIO

nascondi il FOGLIO, mantenendo però inalterato il suo contenuto.

Un comando che devi tener ben presente è infine il comando:

CANCEFOGLIO

che cancella l’intero contenuto del FOGLIO. Questo comando pulisce


completamente il FOGLIO e tutto ciò che contiene viene perduto.

Fa' attenzione! Ogni volta che utilizzi il FOGLIO, prima di


inserirci una nuova procedura con il comando EDITA, oppure
prima di riportarci di nuovo una stessa procedura per una succes-
siva correzione, è consigliabile ripulire il suo contenuto con il
comando CANCEFOGLIO.

PROCEDURE USATE DENTRO ALTRE PROCEDURE

Come già detto, tra i pregi del LOGO c’è la caratteristica che il nome di
una sua procedura può diventare una comando derivato e acquistare così la
funzione svolta da un comando qualsiasi , svolgendo così lo stesso ruolo
svolto, per esempio, dalle sue ordinarie parole primitive: AVANTI, DE-
STRA, RIPETI.

Appare evidente, quindi, che i nomi delle procedure possono essere


utilizzate anche dentro altre procedure con le stesse modalità con le quali si
utilizzano gli ordinari comandi semplici.

Nella pagina seguente troverai alcuni esempi di procedure annidate


(ossia incluse) dentro altre procedure.
pag. 48 Manuale Logo

Per scrivere righe di commento nei programmi digita questa procedura:

PER COMMENTO : ;
FINE

poi scrivi i programmi commentandoli nel modo indicato sotto. Ricorda che
le parole scritte tra parentesi quadrate in ogni riga che inizia con il punto e
virgola non avranno alcun effetto sul programma che le contiene.

PER QUADRATO
RIPETI 4 [AVANTI 50 DESTRA 90]
; [RIPETI, AVANTI E DESTRA SONO COMANDI SEMPLICI]
; [QUADRATO È UN COMANDO DERIVATO]
FINE

PER FINESTRA
RIPETI 4 [QUADRATO SINISTRA 90]
FINE

PER DECORAZIONE
FINESTRA
DESTRA 45
FINESTRA
; [FINESTRA È ANCH’ESSO UN COMANDO DERIVATO]
FINE

Una procedura richiamata all’interno di un’altra prende il nome di


SOTTOPROCEDURA. L’uso di sottoprocedure offre diversi vantaggi:

- si accorciano, in primo luogo i programmi, che, altrimenti, sarebbero


costituiti da lunghe sequenze di istruzioni.

- viene resa più semplice la lettura, e quindi la comprensione, delle proce-


dure stesse. Ciò accade soprattutto quando si ricorre all’accorgimento di
usare, per le procedure adottate, denominazioni chiaramente esplicative.
Non chiamare, per esempio, QQ una sottoprocedura che disegna due
quadrati, ma chiamala, piuttosto, in modo più esplicito: DUEQUADRATI;

- una volta che sia stata definita, una procedura potrà essere usata anche
all’interno di altri programmi. In pratica, se si scelgono bene le procedure
5. Le procedure e il foglio pag. 49

di base, i loro nomi potranno costituire i termini di un tuo linguaggio


personale, ossia un personale repertorio di procedure;

- risulta, infine più facile progettare un programma scomponendolo in


piccoli blocchi, ossia in sottoprogrammi man mano più semplici.

Questo stile di programmazione viene chiamato, con termini tecnici:

PROGRAMMAZIONE PER RAFFINAZIONE INCREMENTALE,

oppure: PROGRAMMAZIONE A BLOCCHI.

PROCEDURE PER DISEGNARE UN CAMPO DI GRANO

Vediamo un esempio di quanto appena detto, proponendo una serie di


procedure con le quali la tartaruga disegnerà un campo di grano.

Ecco la procedura generale, o procedura madre:

PER CAMPODIGRANO
SU S 90 A 150 D 90 G1U
RIPETI 18 [SPIGA SEMINARE]
FINE

La procedura SEMINARE, riportata appresso, serve per collocare


ciascuna SPIGA in un posto diverso:

PER SEMINARE
D 90
SU A l6 GIU
S 90
FINE

A sua volta SPIGA è composta da alcune spighette unite assieme:

PER SPIGA
A 20
RIPETI 4 [SPIGHETTA A 5]
I 40
FINE
pag. 50 Manuale Logo

Ecco, infine, la sottoprocedura più elementare per disegnare una coppia


di SPIGHETTE:

PER SPIGHETTE
D 45 A 8 I 8
S 90 A 8 I 8
D 45
FINE

Lo schema ad albero che è sotto mette in evidenza il collegamento


gerarchico esistente tra le diverse procedure di CAMPODIGRANO, ciascu-
na delle quali è rappresentata da un blocco.

SEMINARE
CAMPODIGRANO
SPIGA SPIGHETTE

PROCEDURE PER DISEGNARE UN PUPAZZO.

Altro esempio: è sistema di procedure per disegnare un PUPAZZO:

PER PUPAZZO PER GAMBA


CORPO GAMBASINISTRA
GAMBE GAMBADESTRA
BRACCIA FINE
TESTA
FINE PER GAMBASINISTRA
D 30 I 30 S 90
PER CORPO A 5 I 5 D 90
A 30 I 30 A 30 S 30
FINE FINE

PER BRACCIA PER GAMBADESTRA


A 20 D 90 S 30 I 30 D 90
A 20 I 40 A 5 I 5 S 90
A 20 S 90 I 20 A 30 D 30
FINE FINE
5. Le procedure e il foglio pag. 51

A te il compito di progettare la procedura TESTA e di disegnare


lo schema ad albero nel quale vengano collegate in gerarchia i blocchi delle
procedure di PUPAZZO.

Per quel che riguarda la procedura TESTA potresti, per esempio, proget-
tarne una di forma quadrata. È evidente che le istruzioni per la TESTA
vanno accompagnate da altre che obblighino la Tartaruga a disegnarla nella
posizione giusta, sopra la parte superiore del corpo.

ESEMPI DI PROCEDURE E SOTTOPROCEDURE.

Ecco una serie di procedure semplici che, come vedremo nel prossimo
capitolo, potresti opportunamente memorizzare nell’archivio: FORME.

PER QUADRATO PER RETTANGOLO

RIPETI 4 [A 50 D 90] RIPETI 2 [A 30 D 90 A 80 D 90]

FINE FINE

PER TRIANGOLO PER ROMBO

D30 S30

RIPETI 3 [A 50 D 120] RIPETI 2 [A 60 D 60 A 60 S 120]

S 30 D 30

FINE FINE

PER ESAGONO PER CERCHIO


S30 NT
RIPETI 6 [A 60 D 60] RIPETI 360 [A 1 D 1]
D30 MT
FINE FINE

Ed ecco, a puro titolo di esempio, una serie di procedure da realizzare,


prendendo dall’archivio FORME alcune delle procedure semplici poc’anzi
proposte:

PER STELLA.SEI
RIPETI 6 [ROMBO D 360/6]
FINE
pag. 52 Manuale Logo

PER FINESTRA
RIPETI 4 [QUADRATO S 360/4]

FINE

PER SPOSTABLOCCO
S 135 SU A 120 GIU D 135
RIPETI 4 [QUADRATO A 50 D 90 A 50 S 90]
FINE

PER FIGURA.A
RIPETI 8 [QUADRATO D 360/8]
RIPETI 6 [ROMBO D 360/6]
FINE

ESERCIZI

- Usa la procedura QUADRATO per scrivere una procedura generale che


disegni un quadrato in ogni angolo dello schermo.

- Usa la procedura QUADRATO per scrivere una procedura generale che


disegni una fila di quadrati.

- Usa la procedura QUADRATO per scrivere una procedura generale che


disegni una torre di quadrati (Suggerimento: serviti della procedura
risolutiva dell‘esercizio precedente).

- Scrivi una procedura che disegni un quadrato, servendoti del comando


RIPETI e usando una divisione per i cambiamenti di direzione.

- Scrivi una procedura che disegni un triangolo, con il comando RIPETI e


usando una divisione per i cambiamenti di direzione.

- Scrivi una procedura che disegni un poligono di 9 lati.

- Scrivi una procedura che disegni un poligono di 13 lati.

- Scrivi una procedura che disegni una casa avente un quadrato per parete
e un triangolo per tetto.

- Scrivi procedura che disegni un albero avente un rettangolo per fusto e


un ottagono per chioma.
6. Spazio di lavoro e archivi pag. 53

SPAZIO DI LAVORO E ARCHIVI

COME CONSERVARE E VISUALIZZARE PROCEDURE.

Conservazione di procedure
Le procedure da te definite non rimangono per sempre nella memoria del
computer. Quando esci dal LOGO egli le"dimentica", ossia si cancellano
dalla memoria del computer.

Per conservarle, per poterle riutilizzare, devi chiedere al LOGO di


trascriverle in un archivio dentro una memoria esterna, detta anche memoria
di massa, avente come supporto o il disco rigido interno alcomputer, oppure
un dischetto esterno che dovrai, in precedenza opportunamente preparare
per ricevere le procedure mediante l'operazione chiamata "formattazione".

Il comando:

CONSERVA

ti permette di trascrivere in un archivio, su disco o su dischetto, le procedure


che sono presenti nella memoria di lavoro del computer.

Ma che cos'è la memoria di lavoro? Proviamo a descriverla con un


paragone. Immagina che la memoria di lavoro del computer sia come il
piano della tua scrivania. Sulla scrivania esegui i tuoi compiti quotidiani,
scrivendo, a volte, lavori nuovi, oppure utilizzando copie di appunti che tiri
fuori dai cassetti della scrivania stessa.

Alla fine del tuo compito, per averne un altro esemplare, vai ad una
fotocopiatrice, fai una copia dei lavori da te eseguiti e riponi la copia nei
cassetti, ossia nel tuo archivio.

Tutto ciò avviene anche con il LOGO quando si fa ricorso al disco


interno, oppure ai dischetti.

Quello che serve per lavorare in quel momento lo tieni nella memoria di
lavoro del LOGO (piano della scrivania), che può accogliere anche diverse
procedure (fogli vari con lavori diversi).
pag. 54 Manuale Logo

Quando vuoi archiviare le procedure presenti nella memoria di lavoro


(che somigliano a ciò che sta sul piano della tua scrivania), usi il comando:
CONSERVA, ed una copia di ciò che è presente in tale memoria viene
trasferita da questa alla memoria esterna di massa, dove viene archiviata sul
disco rigido o in un dischetto (li puoi pensare come cassetti di scrivania).

Attenzione, però! Il comando: CONSERVA copia sul disco, in un solo


archivio, tutto il contenuto della memoria di lavoro, che, come è stato già
precisato, può essere costituito da diverse procedure.

Così, come ogni procedura deve avere il proprio nome, così anche
all’insieme delle procedure, costituenti un solo archivio, va attribuito il
nome relativo. Il nome servirà a distinguere tale archivio da altri insiemi di
procedure.

A ciascun insieme, tra l’altro, conviene attribuire un nome particolare,


che sia utile a richiamare il contenuto delle procedure componenti.

Per esempio, per il gruppo di procedure proposte nella pagina 49, da te


utilizzate per realizzare le prime esperienze di disegno con la tartaruga, un
nome appropriato per archiviarle tutte quante in solo gruppo potrebbe
essere quello già suggerito, ossia: FORME. Digita quindi:

CONSERVA “FORME

Fai attenzione ! Le virgolette che precedono il nome dell’archivio 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 quel
nome 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 altro
archivio 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 un
nuovo archivio con la stessa denominazione, il vecchio archivio viene
rimpiazzato dalle nuove procedure successivamente realizzate. In questo
caso tutte le precedenti procedure che costituivano l’archivio FORME
vengono sostituite e, in sostanza, cancellate dalla memoria di massa.
6. Spazio di lavoro e archivi pag. 55

Per visualizzare le procedure

Per vedere sullo schermo i titoli delle procedure presenti nella memoria
di lavoro del computer, batti:

STITOLI

che è l’abbreviazione della espressione: stampa titoli.

Per vedere il testo di una procedura, sempre presente nella memoria di


lavoro, batti il comando:

SPROC

seguito dal nome della procedura di cui intendi vedere il contenuto. Per
esempio, se sai che la procedura MUOVITI è presente nella memoria di
lavoro, puoi vedere il suo listato digitando:

SPROC "MUOVITI

Per vedere i listati di tutte le procedure presenti nella memoria di lavoro,


digita:

SPROC_IN

In questo caso, se nella memoria di lavoro sono presenti numerose


procedure, il loro contenuto scorrerà velocemente sullo schermo, senza
darti tempo di esaminarle.

Per ovviare a questo inconveniente digita prima

STITOLI

e vedrai il nome di tutte procedure presenti. Dopo di che potrai vedere il


contenuto di ciascuna, visualizzandola una alla volta con il comando

SPROC "...

Infine per vedere i nomi di tutti gli archivi conservati nel disco con il
quale sei in comunicazione in quel momento, batti:

CATALOGO

e sullo schermo il LOGO farà vedere l’elenco completo dei nomi degli
archivi contenuti nel disco stesso.
pag. 56 Manuale Logo

COME RECUPERARE E CANCELLARE PROCEDURE

Recupero di procedure
In qualunque momento il LOGO ti consente di recuperare procedure dal
disco o dal dischetto per trascriverle nella memoria di lavoro.

In genere ciò si fa quando si comincia una nuova attività, ma talvolta può


tornare utile richiamare una procedura da un disco per unirla ad altre già
presenti nella memoria di lavoro.

Nel grafico riportato sotto puoi vedere la coppia dei comandi da usare
per trasferire procedure dalla memoria di lavoro alla memoria esterna,
oppure da quest'ultima alla memoria di lavoro.

Conserva "...
PROCEDURE PROCEDURE
NELLA MEMORIA NELLA MEMORIA
DI LAVORO DI MASSA
Recupera "...

Come già detto, per vedere l’elenco degli archivi presenti su disco, puoi
digitare:

CATALOGO .

Dopo di che potrai passare a recuperare l’archivio che desideri avere. Se


questo, per esempio, è l’archivio: FORME, dovrai digitare:

RECUPERA “FORME

A questo punto vedrai accendersi la lucetta dell’unità a disco e quando


questa si spegnerà digita:

STITOLI

e vedrai il titolo di tutte le procedure recuperate richiamando nella memoria


di lavoro l'artchivio FORME

Una piccola raccomandazione. Se nella memoria di lavoro hai in prece-


denza già trasferito l'archivio FORME e hai apportato qualche modifica ad
alcune sue procedure, la versione di FORME contenuta nel disco e da te
richiamata sostituirà totalmente quella modificata.
6. Spazio di lavoro e archivi pag. 57

Se desideri mantenere tutte e due le versioni, prima di recuperare dal


disco la versione precedente, cambia il nome a quella contenuta nella
memoria di lavoro servendoti del comando: EDITA.

Nell'ambiente di edizione si può infatti cambiare il nome di una procedu-


ra, nello stesso modo in cui di cambiano i contenuti delle altre righe della
procedura stessa.

Come è stato già detto, per "spedire" poi tutte le procedure nell’archivio:
FORME digita: CONSERVA "FORME.

Cancellazione di procedure.
Alcune volte può essere utile ripulire la memoria di lavoro cancellandovi
tutte le procedure che vi sono presenti, specie quando si decide di cambiare
attività e di recuperare un altro archivio.

Per pulire la memoria di lavoro, batti:

CANCEPROC_IN.

Per cancellare una sola procedura nella memoria di lavoro batti:

CANCEPROC

seguito dal nome della procedura che desideri cancellare. Per esempio per
cancellare dalla memoria di lavoro la procedura TRIANGOLO contenuta
nell'archivio FORME digita:

CANCEPROC "TRIANGOLO

Però, prima di cancellare una procedura dalla memoria di lavoro, se non


la vuoi perdere del tutto, accertati che nel disco ve ne sia una copia.

Nella memoria di lavoro puoi anche cancellare di colpo alcune procedure


scrivendo la lista dei loro nomi entro parentesi quadrate. Per esempio:

CANCEPROC [CERCHIO, TRIANGOLO, RETTANGOLO].

Infine per cancellare da un disco un intero archivio il LOGO mette a tua


disposizione il comando:

CANCEARC
pag. 58 Manuale Logo

che deve essere seguito dal nome dell’archivio che desideri cancellare. Per
esempio, per cancellare l’archivio FORME, puoi scrivere:

CANCEARC "FORME

Tieni presente che: CANCEARC cancella archivi nel disco, ma non ha


alcun effetto sulle procedure contenute nella memoria di lavoro.

Infine, se sei in comunicazione con il dischetto esterno contenuto nel


drive A: , puoi passare a comunicare con il disco interno C: digitando:

ASDISCO "C:

oppure digita ASDISCO "A: , se da C: vuoi passare a comunicare con A: .

COMANDI PER SPAZIO DI LAVORO E ARCHIVI


Scrive il nome di tutte le procedure presenti nella memoria
STITOLI
di lavoro.

SPROC Scrive il testo della procedura indicata come argomento.


SPAZIO DI LAVORO

"....... Esempio: SPROC "QUADRATO.

Scrive sul video il contenuto di tutte le procedure presenti


SPROC_IN nello spazione di lavoro.

Cancella dallo spazio di lavoro la procedura il cui nome è


CANCEPROC indicato dopo le virgolette o tutte le procedure i cui nomi
"........ sono riportati nella lista racchiusa tra parente quadrate.

Cancella dallo spazio di lavoro un insieme di procedure. Se


CANCEPROC_IN non è seguito da alcun argomento vengono cancellate tutte
le procedure presenti nello spazio di lavoro.

Questo comando fornisce una lista di tutti gli archivi LOGO


CATALOGO che sono presenti nel disco selezionato.

Legge dal disco tutte le procedure dell'archivio specificato


RECUPERA "....
ARCHIVI

dal nome e le trascrive nello spazio di lavoro.

Legge tutte le procedure presenti nello spazio di lavoro e


CONSERVA ".... le trascrive nel disco selezionato in un unico archivio
avente lo stesso nome di quello indicato dopo le virgolette.

Cancella dal disco selezionato l'archivo indicato dal nome


CANCEARC "....
scritto dopo le virgolette.
DISCO

Cambia l'indirizzo della comunicazione da una memoria di


ASDISCO "....
massa ad un'altra. Esempio: da "A: a "C:, o viceversa.
7. Procedure e variabili pag. 59

PROCEDURE E VARIABILI

CHE COSA E’ UN ARGOMENTO VARIABILE.

Per quanto facilmente riutilizzabile, la procedura QUADRATO disegna


sempre lo stesso quadrato. Se desideri disegnare un quadrato più piccolo, o
più grande, devi modificare il contenuto della stessa procedura, oppure ne
devi scrivere direttamente un’altra.

Visto che le istruzioni primitive sono in grado di accettare argomenti ogni


volta diversi quali, per esempio: AVANTI 30 , AVANTI 40 , AVANTI 50
, ..... , non si potrebbe allora far accettare, pure alle procedure, argomenti
anch’essi ogni volta diversi?

In LOGO ciò è possibile. Per farlo, allorchè prepari una procedura,


basta che tu scriva, dopo la denominazione della procedura stessa, un nome,
che puoi scegliere a piacere, per denominare l’argomento numerico che
intendi modificare di volta in volta.

L’unico accorgimento che devi tenere ben presente è che il nome da te


scelto: deve essere preceduto dai due punti ( : ).

Ecco un esempio:

PER QUADRATO :LATO


RIPETI 4 [A :LATO D 90]
FINE
È stata scritta così una procedura che puoi usare per disegnare un
quadrato il cui lato sia di lunghezza qualsiasi.

Attento, però ! Ogni volta che desideri disegnare un quadrato utilizzando


questa nuova procedura, devi sempre specificare la lunghezza del lato che
desideri.

Per far ciò, nel momento che invochi questa procedura, basta che tu
indichi quale lunghezza scegli per il lato, scrivendone il valore numerico al
posto di :LATO.
pag. 60 Manuale Logo

ARGOMENTO VARIABILE E ARGOMENTO ATTUALE.

Così, per esempio, digitando prima:

QUADRATO 50 , poi:

QUADRATO 70 e infine:

QUADRATO 90 ,

con queste tre invocazioni richiamerai la procedura: QUADRATO :LATO,


definita in precedenza.

La tartaruga disegnerà allora tre diversi quadrati: il primo con il lato di


50 passi, il secondo di 70 passi ed il terzo di 90 passi.

In LOGO la scritta: :LATO si chiama:

ARGOMENTO VARIABILE , oppure:

ARGOMENTO FORMALE , o più semplicemente:

VARIABILE.

I valori di 50, 70, 90 , da te assegnati alla stessa procedura in ciascuna sua


invocazione, si chiamano:

ARGOMENTI (o VALORI) ATTUALI.

Il LOGO, quando deve eseguire QUADRATO 50 (oppure 70, o 90) va


a sostituire con questi valori il valore variabile indicato con l’argomento
formale :LATO e ciò avviene ovunque sia stato riportato la espressione
:LATO, all’interno della procedura in questione.

A questo punto, è importante mettere in evidenza la differenza esistente


tra il momento della definizione di una procedura ed il momento della sua
invocazione.

Se sei in fase di invocazione e scrivi QUADRATO :LATO, oppure, se sei


in fase di definizione e scrivi QUADRATO 50, queste due scritte sono senza
senso in ambedue i casi.

Ciò perché:
- nel primo caso stai tentando di invocare una procedura usando un argo-
mento variabile,
7. Procedure e variabili pag. 61

- mentre nel secondo caso provi a definire una procedura, tentando di


assegnarle un argomento attuale.

Entrambe le istruzioni sono scritte, pertanto, in forma non corretta


rispetto al contesto operativo in cui le hai digitate.

PROCEDURE A LIVELLO SEMPRE PIU’ GENERALE.

Considera, adesso, come con i seguenti tre modi di scrivere la procedura:


QUADRATO, puoi arrivare a rendere man mano più generale il procedi-
mento operativo (o algoritmo) necessario per disegnare un quadrato.

Osserva che passi dalla prima alla seconda procedura introducendo


l’uso di RIPETI, mentre passi dalla seconda alla terza ricorrendo anche
all’uso dell’argomento variabile :LATO.

PER QUADRATO
AVANTI 50 DESTRA 90 AVANTI 50 DESTRA 90
AVANTI 50 DESTRA 90 AVANTI 50 DESTRA 90
FINE

PER QUADRATO
RIPETI 4 [AVANTI 50 DESTRA 90]
FINE

PER QUADRATO :LATO


RIPETI 4 [A :LATO D 90]
FINE

Avere a disposizione algoritmi sempre più generali è importante, perchè


è come possedere strumenti di lavoro sempre più versatili e, come tali,
utilizzabili in situazioni diverse con un minimo di accorgimenti.

Tieni allora sempre ben presente che le procedure che dovrai progettare:
tanto più ti saranno utili quanto più le avrai progettate e realizzate nella
forma più generale possibile.
pag. 62 Manuale Logo

PROCEDURE CON PIU’ ARGOMENTI VARIABILI.

In tale prospettiva di lavoro, se riprendi in considerazione le diverse


procedure che hai già progettato per TRIANGOLO, QUADRATO, PEN-
TAGONO, ESAGONO, puoi, a questo punto, convenire che possono
essere 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 sua


successiva invocazione con:

POLIGONO 6 30

ti servirà per ottenere il disegno di un esagono di lato 30. Se digiti invece


l’invocazione:

POLIGONO 30 6

otterrai il disegno di un .... trentagono di lato 6. In tal modo, avrai la prova


che l’ordine dei valori numerici da assegnare agli argomenti variabili è assai
importante.

Se utilizzi la procedura POLIGONO come sottoprocedura, puoi facil-


mente produrre suggestivi disegni decorativi anche molto complessi. Ecco
un primo esempio:

PER POLIGONO :N :L
RIPETI :N [A :L D 360/:N]
FINE

PER MULTIPOLIGONO :N :L
RIPETI :N [D (360/:N) POLIGONO :L 40]
FINE
7. Procedure e variabili pag. 63

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. 64 Manuale Logo

ESEMPI DI PROCEDURE CON UNA O PIU’ VARIABILI.

Esempi di procedure semplici.

PER TRIANGOLO :L PER QUADRATO :L


RIPETI 3 [A :L D 120] RIPETI 4 [A :L D 90]
FINE FINE

PER ESAGONO :L PER DECAGONO :L


RIPETI 6 [A: L D 60] RIPETI 10 [A :L D 36]
FINE FINE

PER RETTANGOLO :L
RIPETI 2 [A :L D 90 A (:L * 2) D 90]
FINE

PER ROMBO :L
RIPETI 2[A :L D 60 A :L D 120]
FINE

Esempi di superprocedure:

PER FINESTRA :L
RIPETI 4 [QUADRATO :L S 90]
FINE

PER FIGURA :L
RIPETI 8 [QUADRATO :L D 45]
RIPETI 6 [ROMBO :L D 60]
FINE

PER STELLA :L
FINESTRA :L D 45
FINESTRA :L S 45
FINE
7. Procedure e variabili pag. 65

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. 66 Manuale Logo

PER CRISANTEMO :L
NT RIPETI 36 [QUADRILATERO :L D 10]
FINE

PER SOLE
NT RIPETI 72 [QUADRILATERO :L D 5]
FINE

Come puoi vedere, le procedure sono praticamente assai simili.Differiscono


solo per il valore dell’angolo che determina ciascun cambiamento di direzio-
ne. Eppure quanti disegni diversi!

Potresti riassumerle tutte quante nell’unica procedura che trovi riportata


sotto, conservando sempre presente, ovviamente, QUADRILATERO nella
memoria di lavoro.

Se invochi questa procedura, assegnando sempre lo stesso valore valore


ad :L , ma ogni volta un valore diverso a :VOLTE , otterrai lo stesso risultato
di ciascuna della procedure riportate sopra.

PER TANTIDISEGNI :L :VOLTE


RIPETI :VOLTE [QUADRILATERO :L D (360/:VOLTE)]
FINE

NOMI E VALORI DELLE VARIABILI.

Come sai già, nel LOGO puoi utilizzare una variabile in tutti quei casi in
cui è possibile fare uso di un numero.

Tieni presente che:

- nel LOGO i nomi delle variabili possono essere di lunghezza decisa a


piacere e possono contenere una combinazione di lettere, di numeri o di
caratteri speciali, quali sono, per esempio, i caratteri: ! “ % $ & .

- i caratteri che non puoi includere nei nomi delle variabili sono soltanto: i
simboli delle operazioni (ossia: + - * / ), le parentesi tonde o quadrate
(ossia: ( ) [ ] ) e il segno di apostrofo (ossia: ‘ ).
7. Procedure e variabili pag. 67

Tieni anche presente che:

- il nome di una variabile devi scriverlo facendolo precedere dalle virgolette


(ossia: “). Così, per esempio, “LUNGHEZZA è il nome di una variabile
per la quale tu hai scelto, appunto, proprio quella denominazione;

- il valore formale di una variabile devi invece scriverlo facendolo precedere


dai due punti. Così la scritta :LUNGHEZZA rappresenta il valore
formale della variabile alla quale tu hai deciso di attribuire il nome di:
“LUNGHEZZA.

TRE MODI PER DEFINIRE VARIABILI

Nel LOGO le variabili possono essere definite in tre modi:

- a livello di ARGOMENTO DELLE PROCEDURE; ed è questo il modo


che tu già conosci;

- a livello di variabile GLOBALE e questa definizione la puoi effettuare,


sia all’interno di una procedura, sia, in via preliminare, al suo esterno;

- a livello di variabile LOCALE e tale terzo tipo di variabile puoi definirla


solamente dentro una procedura.

Variabili globali

La parola primitiva del LOGO:

AS (abbreviazione di assegna)

serve per definire una variabile e le attribuisce una valore che la stessa
variabile conserva fino a che un successivo comando di AS , non glielo
modifica, attribuendole un valore diverso.

Le variabili create con AS si chiamano variabili globali.

L’istruzione AS puoi usarla:

- sia nel mondo dei comandi immediati, ossia all’esterno di una procedura,

- sia nel mondo dell’editore, ossia dentro una procedura.


pag. 68 Manuale Logo

Tieni presente che il valore attribuito a una variabile mediante l’istruzione


AS viene sempre conservato dal LOGO e viene usato in ogni procedura nella
quale compare la stessa variabile.

Per di più, tale valore verrà conservato allorchè effettui una copia di tale
procedura, ossia quando trasferisci la procedura stessa dalla memoria di
lavoro del computer alla memoria esterna su disco.

Ed è appunto per tali ragioni che tale tipo di variabile prende il nome di
variabile globale.

Variabili locali

Le variabili locali puoi, invece, definirle solamente nel mondo dell’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, il
valore della variabile viene cancellato e dimenticato.

Se la stessa procedura viene, però, invocata di nuovo e poi eseguita, il


LOGO riprende ancora il valore della variabile locale, per conservarlo fino
al termine della esecuzione della procedura stessa.

Il comando per localizzare il valore di una variabile solo dentro una


procedura puoi darlo con la parola riservata:

LOCALE

Tale parola deve essere accompagnata dal nome che intendi dare alla
variabile stessa. Per esempio:

LOCALE "LUNGHEZZA

Dopo tale definizione potrai attribuire un certo valore alla variabile in


tal modo chiamata usando l’istruzione AS.

Tieni presente che, quando usi AS dopo l’istruzione LOCALE, la varia-


bile viene considerata dal LOGO come variabile locale, e non come variabile
globale.

Le variabili locali sono importanti, perchè evitano di sovraccaricare la


memoria di lavoro affidandole il compito di dover registrare i valori di
numerose variabili globali.
7. Procedure e variabili pag. 69

Infatti, se usi variabili globali dove invece potresti usare variabili locali,
occupi spazio della memoria di lavoro in cui potrebbero, invece, trovar
posto altre procedure.

Devi inoltre tener presente che, in procedure diverse e sotto un stesso


nome, puoi avere più variabili locali, ma soltanto una variabile globale.

Ecco alcuni esempi nei quali la variabile viene definita:

- prima con AS, mediante comando diretto, e quindi non all’interno di una
procedura. In questo caso la variabile assume il valore di variabile globale
permanente;

- successivamente, AS viene dopo una definizione di variabile realizzata


con l’istruzione LOCALE, all’interno di una procedura. In questo caso,
la variabile assume il valore di variabile locale momentanea.

AS “PASSO 50
AVANTI :PASSO
(la tartaruga avanza di 50 passi)

AS “UN.QUARTO.DI.GIRO 90
DESTRA :UN.QUARTO.DI.GIRO
(la tartaruga ruota di 90 gradi e destra)

AS “LATO 100 AS “100 30


STAMPA :LATO STAMPA :100 + 100
(il LOGO scrive: 100) (il LOGO scrive: 130)

PER TABELLINE
LOCALE “NUM.A
LOCALE “NUM.B
AS “NUM.A ACASO 10
AS “NUM.B ACASO 10
; [IL SIGNIFICATO DI ACASO LO CONOSCERAI IN SEGUITO]
; [ORA STA ATTENTO A SCRIVERE LA RIGA SUCCESSIVA]
(STAMPA :NUM.A [PER] :NUM.B [=] :NUM.A * :NUM.B)
FINE
pag. 70 Manuale Logo

Questa procedura serve per scegliere a caso due numeri più piccoli di
dieci e per avere il loro prodotto. Ricorda che per scrivere la sua sesta e
settima riga come righe di spiegazione devi prima digitare la procedura
COMMENTO riportata nel capitolo 5 all'inizio di pagina 46.

Di regola l’istruzione STAMPA è in grado di trattare un solo argomento,


che può consistere in una singola parola, oppure in una singola lista.

In questo caso,però, STAMPA deve manipolare ben cinque argomenti,


che sono: due valori di variabili (:NUM.A e :NUM.B) più due liste di
"parole", ciascuna racchiusa tra parentesi quadrate (ossia: [PER] e [=], e
infine il valore del prodotto di :NUM.A moltiplicato per :NUM.B.

Per obbligare STAMPA ad accettare questa pluralità di argomenti,


evitando che il LOGO dia un messaggio di errore, occorre racchiudere tutta
l’intera riga della istruzione stessa dentro parentesi tonde.

Ma torniamo ai problemi dell’utilizzazione della istruzione AS.

Se con AS hai attribuito un certo valore a una determinata variabile e non


ricordi più tale valore, puoi vederlo digitando l’istruzione COSA seguita
dal nome della variabile di cui desideri ricordare il valore.

Per esempio, avendo dato alla variabile "LATO il valore di 100 mediante
l’struzione AS "LATO 100, se digiti COSA "LATO, il LOGO ti risponderà:
RISULTATO 100. Se a questo punto desideri cancellare tale valore nella
stessa variabile, ecco qual è il procedimento che devi seguire.

Digita AS "LATO " (ossia: dopo la seconde virgolette digita uno spazio
vuoto) e concludi con <INVIO>. Dopo di ciò digita ancora COSA "LATO
e vedrai che il LOGO ti risponde RISULTATO: , ossia ti dà, quale
risultato, uno spazio vuoto, ossia nulla.
8. Trattamento dei numeri pag. 71

TRATTAMENTO DEI NUMERI

NEI NUMERI, IL PUNTO SOSTITUISCE LA VIRGOLA.

Il LOGO usa senza alcuna difficoltà i numeri interi naturali, quali sono,
per esempio, i numeri: 4, 67, 7 63, e i numeri reali, ossia, i numeri con la
parte non intera (“decimale”) quali, per esempio: 4.37, 2.6. Per il LOGO,
7/2 (sette diviso due) è la stessa cosa di 3.5 (da leggere: tre punto cinque,
ossia tre unità e cinque decimi, ).

Poichè quasi sicuramente sei abituato a usare la virgola come segno di


separazione tra la parte intera e quella non intera del numero, forse ora
incontrerai qualche difficoltà a sostituirla con il punto.

Considera, però, che tutte le macchine da calcolo, dalla piccole 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 usato
nei numeri, come segno di separazione al posto della nota virgola.

Quindi, d’ora in avanti, quando all’interno di un numero trovi un punto,


devi interpretarlo come confine tra la sua parte intera e la sua parte non
intera (comunemente, ma impropriamente, chiamata "decimale") e non,
come tuttora erroneamente capita in alcuni testi di "matematica" (?), quale
segno di separazione tra i gruppi di tre cifre: unità, migliaia, milioni.

Tieni presente che, secondo le regole recentemente stabilite per la


scrittura dei grandi numeri, queste terne di cifre vanno separate, in forma
corretta, da un piccolo spazio vuoto in sostituzione del vecchio punto.

Il punto va usato, pertanto, soltanto quale segno di confine tra la parte


intera e la parte non intera (“decimale”). Abbiamo scritto il termine "deci-
male" tra virgolette in quanto, se tale termine viene riferito esclusivamente
ai numeri non interi, questa espressione ci sembra impropria: nega infatti la
possibilità di chiamare con lo stesso termine anche i numeri interi, scritti
ordinariamente in notazione appunto decimale, ossia in base dieci.
pag. 72 Manuale Logo

LE QUATTRO OPERAZIONI NEL LOGO

Nel LOGO le espressioni aritmetiche debbono essere scritte di


continuo, come fossero sopra una sola riga e, con esse, non si può andare a
capo, come talvolta capita quando vengono scritte su carta.

I simboli usati per le quattro operazioni sono: + - * / . Indicano,


rispettivamente, l’addizione, la sottrazione, la moltiplicazione e la divisio-
ne. Osserva che per la moltiplicazione dovrai usare l’asterisco (*) e non la
lettera minuscola x . Analogamente la barra trasversale ( / ) dovrai usarla
al posto dei due punti (:) , con i quali, nella scrittura corrente, viene indicata
la divisione.

Il LOGO ti dà immediatamente il risultato di una operazione aritmetica


anche quando sei nei comandi diretti e la scrivi, concludendola con
<INVIO>.

Se scrivi, per esempio:

26 + 34 <INVIO>

il LOGO ti risponde fulmineamente: 60

Quindi, potrai scrivere:

AVANTI 24 + 36

e la tartaruga si sposterà di 60 passi in avanti.

Per esempio, se scrivi:

STAMPA 76 * 42

il LOGO ti risponderà scrivendo semplicemente: 3192

Similmente, digitando:

DESTRA 360/5

la Tartaruga ruoterà di 72 gradi verso destra.


8. Trattamento dei numeri pag. 73

GERARCHIA DELLE OPERAZIONI.

Tieni presente che nel calcolare il risultato di una serie di operazioni


potresti incontrare alcune differenze con il modo di calcolare del LOGO.

Per prevedere il risultato di una serie di operazioni diverse scritte in linea,


occorre conoscere, infatti, quale regola segue il LOGO nel dare la 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 la


presenza delle parentesi, è obbligato a calcolare prima l’addizione: 7 + 5 e,
solo successivamente, esegue la divisione per 2 sulla somma 12.

Nel secondo caso, invece, mancando le parentesi, il LOGO dà la 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, passa
ad addizionarlo a 7.

In questo secondo caso il risultato finale sarà 9.5 (e non 12 come nel caso
precedente).

Le regole per risolvere le espressioni aritmetiche a cui obbedisce il LOGO


- analogamente a quanto fanno quasi tutte le macchine da calcolo grandi e
piccole - sono le seguenti:

1. - Prima di eseguire il calcolo il LOGO controlla le parentesi. Esegue per


prime le operazioni che sono contenute nelle parentesi più interne e,
per esse, segue le regole riportate al n. 2 e al n. 3.

2. - Il LOGO esegue poi le moltiplicazioni e le divisioni nell’ordine in cui le


incontra da sinistra verso destra. Calcola, infatti: 8 / 2 = 4 (e non
uguale a 0.25, come si otterrebbe se si effettuasse la divisione da
destra verso sinistra, ossia 2 diviso 8)

3.- Le addizioni e le sottrazioni vengono infine eseguite per ultime e, anche


queste operazioni, sono man mano risolte nell’ordine in cui stanno, da
sinistra verso destra.
pag. 74 Manuale Logo

Prova ora a calcolare, usando solamente carta e matita, quale risultato ti


darà il LOGO per le espressioni seguenti:

4 * 3 + 6 / 3 - 2 * (3 + 2) =

4 * (3 + 6) / (3 - 2) * 3 + 2 =

4 * (3 + 6) / ((3 - 2) * 3 + 2) =

Digita poi ciascuna espressione sul computer in ambiente LOGO e


controlla l’esattezza del risultato da te in precedenza calcolato solo con
carta e matita.

OPERATORI ARITMETICI (FUNZIONI NUMERICHE).

I segni delle quattro operazioni si chiamano anche FUNZIONI NUME-


RICHE e producono un risultato che, nel linguaggio informatico, prende il
nome di USCITA (in inglese: output).

Così, scrivendo:

24 / 3

il LOGO ti risponderà, come sai già: 8

e il numero 8 rappresenta l’uscita della funzione di divisione, espressa con


il segno: / e applicata alla coppia ordinata di numeri 24 e 3.

Oltre alle quattro funzioni numeriche fondamentali, il LOGO è anche di


utilizzare diversi altri operatori aritmetici che indichiamo di seguito.

ACASO <num>
ACASO è una funzione che, quale risultato, genera un numero estratto
a caso in una quantità di interi scelta a piacere. Stabilirai tale quantità
scrivendone l'entità subito dopo ACASO.

Così, per esempio, se scrivi: ACASO 10 , otterrai un numero scelto a


caso tra 0 e 9, mentre con ACASO 501, otterrai un numero scelto a caso
tra 0 e 500.
8. Trattamento dei numeri pag. 75

ARCTAN <num>
Il valore della funzione ARCTAN è l’arcotangente del suo argomento
espressa in gradi sessagesimali.

ARRO <num>
ARRO arrotonda un numero non intero ("decimale") al suo intero più
vicino. Così:
ARRO 6.4 , dà in uscita: 6
ARRO 2.7, dà in uscita: 3
ARRO 20 / 3 , dà in uscita: 7

ASCIFRE <num>
Determina il massimo numero di cifre significative del risultato di ogni
operazione aritmetica e quindi condiziona il livello di precisione ottenibile
nei calcoli.

L’argomento di ASCIFRE può variare da 1 a 100 per le sole operazioni


aritmetiche elementari. Se si utilizzano funzioni trascendenti deve essere
invece limitato a 32.

ASSO
Fornisce il valore assoluto del suo argomento.

Esempi: ASSO 58 - 20 = 38 ; ASSO 44 - 51 = 7

CIFRE
Indica il numero delle cifre significative utilizzato nei calcoli numerici.

Esempio: ASCIFRE 7 ; CIFRE 7

COS <num>

Fornisce come valore il coseno dell’argomento.


pag. 76 Manuale Logo

DIFFERENZA <num> <num>


Riporta la differenza del primo argomento numerico rispetto al secondo.

Esempio: DIFFERENZA 300 356 = -56

Attenzione! Quando usi il segno “-” come operatore di sottrazione


binaria devi inserire uno spazio prima del sottraendo. Se non osservi questa
regola, il Logo legge il secondo argomento numerico semplicemente come
numero negativo.

Esempi: 23 * 3 -4 = 69 -4 ; 23 * 3 - 4 = 65

DIVISIONE <num> <num>


DIVISIONE è l’operatore di divisione prefisso equivalente al segno di
divisione “/” comunemente usato in forma infissa.

Esempio: DIVISIONE 32 5 = 32 / 5 = 6.4

GRADI
Questa funzione converte in gradi il numero dei radianti forniti dall’argo-
mento.

Esempio: GRADI PI = 180

INT <num>
Il valore fornito da questa funzione è uguale alla parte intera del numero
fornito come argomento.

Esempio: INT 5,46 = 5

LOG10 <num>
Questa funzione restituisce il logaritmo in base dieci del suo argomento.

Esempio: LOG10 100 = 2


8. Trattamento dei numeri pag. 77

PI
Il valore di PI è pi greco con una precisione pari al numero delle cifre
significative stabilito con ASCIFRE (max. 32).

Esempio: ASCIFRE 10 PI = 3.141592654

POTENZA <num> <num>


Questa funzione riporta il primo argomento, considerato come base,
elevato alla potenza specificata del secondo argomento, considerato come
esponente.

Esempio: POTENZA 4 3 = 4 3 = 64

PRODOTTO <num> <num>


Il valore riportato da questa funzione è il prodotto dei suoi due argomenti
numerici. Con questa funzione si possono anche utilizzare più di due
argomenti, ma in questo caso l’istruzione va scritta tra parentesi tonde.

Esempi: PRODOTTO 12 4 = 48 ; (PRODOTTO 3 5 10) = 150

QUOZIENTE <num> <num>


Il valore restituito da questa funzione è la parte intera del quoziente dei
suoi argomenti.

Esempio: QUOZIENTE 12 5 = 2.

Usando i due argomenti con l’operatore DIVISIONE, si avrebbe invece:

DIVISIONE 12 5 = 12 / 5 = 2.4

RADIANTI <num>
Converte i gradi in radianti.

Esempio: RADIANTI 180 = 3.1415926


pag. 78 Manuale Logo

RADQ <num>
Il valore restituito da questa funzione è la radice quadrata del suo
argomento.

Esempio: RADQ 64 = 8

RESTO <num> <num>


Questa funzione genera, come risultato, il resto della divisione eseguita
tra i numeri fornitegli come argomenti.

Esempi: RESTO 34 5 = 4 ; RESTO 56 8 = 0

SEN
Il valore della funzione SEN è il seno trigonometrico del suo argomento.

SOMMA <num> <num>


Il valore di questa funzione è la somma dei suoi due argomenti. Con più
di due argomenti si debbono usare le parentesi tonde.

TAN <num>
Il valore della funzione TAN è la tangente del suo argomento espresso in
gradi sessagesimali.

Esempio: TAN 56 = 1.4825602

Stai attento! Quando usi i numeri non interi ("decimali") con le funzioni
QUOZIENTE e RESTO, il LOGO, prima di eseguire la divisione,
"arrotonda" (ossia, approssima) automaticamente i due numeri all’intero
più vicino.

Questo accade per tutte le primitive del LOGO che, per argomento,
richiedono numeri interi.
9. Cerchi e archi di raggio variabile pag. 79

CERCHI E ARCHI

DI RAGGIO VARIABILE

Il poligono che ottieni con la procedura:

RIPETI 60 [A 2 D 360/60]

appare del tutto simile ad un cerchio.

La lunghezza del contorno di questo "cerchio", ossia la sua "circonferen-


za" che d’ora in avanti chiameremo a titolo assolutamente convenzionale
CIRCONFERENZA, ti viene data dalla relazione generale:

(relazione 1): LATO * 60 = CIRCONFERENZA

In questa relazione, 60 è il numero dei lati, mentre LATO rappresenta la


lunghezza di ciascun lato.

Poichè, come sai, la lunghezza della circonferenza si calcola moltiplican-


do il doppio della lunghezza del RAGGIO per 3.1416, abbiamo questa
seconda relazione:

(relazione 2): CIRCONFERENZA = RAGGIO * 2 * 3.1416

Sostituendo il secondo membro della relazione 1 con il secondo membro


della relazione 2 avremo:

(relazione 3): LATO * 60 = RAGGIO * 2 * 3.1416

Se in quest'ultima relazione intendiamo calcolare il solo valore generale


del LATO avremo:

(relazione 3/1): LATO = RAGGIO * 2 * 3.1416 / 60

Quest’ultima uguaglianza ti dà la possibilità di realizzare una procedura


per disegnare una CIRCONFERENZA di dimensioni variabili. Ciò perché,
quando di volta in volta cambierai il valore numerico della variabile RAG-
GIO cambierà automaticamente anche il valore del LATO e quindi la
dimensione di tutta la CIRCONFERENZA.
pag. 80 Manuale Logo

Ecco la procedura che potrai digitare:


PER CERCHIO :RAGGIO
LOCALE "LATO
AS "LATO :RAGGIO * 2 * 3.1416 / 60
RIPETI 60 [A :LATO D 360 / 60]
FINE

Prova questa procedura invocandola alcune volte, ma dando, ogni volta,


un diverso valore a :RAGGIO.

Prova poi, per esempio, a realizzare la seguente superprocedura:


PER TUNNEL
NT CERCHIO 20
CERCHIO 40
CERCHIO 60
CERCHIO 80
CERCHIO 100 MT
FINE

Come sai già, l’iniziale comando NT, contenuto in quest'ultima procedu-


ra, nasconde la tartaruga allo scopo di farle disegnare più rapidamente
ciascun cerchio.

La procedura CERCHIO può essere facilmente modificata per disegnare


archi di raggio variabile. Ecco una procedura per disegnare un arco il cui
angolo al centro misura 90 gradi.

PER ARCO.90 :RAGGIO


LOCALE "LATO
AS "LATO :RAGGIO * 2 * 3.1416 / 60
RIPETI 60/4 [A :LATO D 360 / 60]
FINE

Con le procedure seguenti potrai disegnare "petali" di grandezza 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 pag. 81

PER FIORE :RAGGIO


RIPETI 5 [PETALO :RAGGIO D 360 / 5]
FINE

Se desideri disegnare cerchi di raggio variabile, che abbiano però la


posizione iniziale della tartaruga, ossia la sua TANA, dislocata al centro di
ogni cerchio, ecco la procedura da digitare:
PER CERCHIO.C :RAGGIO
LOCALE "LATO
AS "LATO :RAGGIO * 2 * 3.1416 / 60
SU S 90 A :RAGGIO D 90 GIU
RIPETI 60 [A :LATO D 360/60]
SU D 90 A :RAGGIO S 90 GIU
FINE

Puoi usare quest'ultima procedura per disegnare un bersaglio. Così:


PER BERSAGLIO
CERCHIO.C 20
CERCHIO.C 40
CERCHIO.C 60
CERCHIO.C 80
CERCHIO.C 100
FINE

Con le procedure seguenti potrai disegnare poligoni regolari inscritti e


circoscritti a cerchi di raggio variabile:
PER TRIANGOLO. CIRCOSCRITTO : RAGGIO
CERCHIO.C :RAGGIO
SU A :RAGGIO * 2 D 150 GIU
RIPETI 3 [A (2 * RADQ (4 * :RAGGIO * :RAGGIO) -(:RAGGIO
* :RAGGIO)) D 120]
SU TANA GIU
FINE
pag. 82 Manuale Logo

PER TRIANGOLO.INSCRITTO :RAGGIO


CERCHIO.C :RAGGIO
SU 5 90 A :RAGGIO D 150 GIU
RIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO) - (:RAGGIO *
:RAGGIO)) D 120]
SU TANA GIU
FINE

PER QUADRATO.CIRCOSCRITTO :RAGGIO


CERCHIO.C :RAGGIO
SU 5 90 A :RAGGIO D 90 A :RAGGIO GIU
RIPETI 4 [D 90 A (:RAGGIO * 2)]
SU TANA GIU
FINE

PER QUADRATO.INSCRITTO :RAGGIO


CERCHIO.C :RAGGIO
SU 5 90 A RAGGIO D 135 GIU
RIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) + (:RAGGIO *
:RAGGIO)) D 90]
SU TANA GIU
FINE

PER ESAGONO.INSCRITTO :RAGGIO


CERCHIO.C :RAGGIO
SU 5 90 A :RAGGIO D 120 GIU
RIPETI 6 [A RAGGIO D 60]
SU TANA GIU
FINE
Digita tutte le procedure di questo capitolo, provale una ad una e,
infine memorizzale, includendole tutte quante in un unico archivio che
potrestri denominare CERCHI.
10. Procedure ricorsive pag. 83

PROCEDURE RICORSIVE

INTRODUZIONE ALLA RICORSIVITA’

Procedure che non si fermano "mai".


Finora le tue procedure sono state molto docili e si sono fermate ogni
volta che tu stabilivi che lo facessero. Faremo adesso la conoscenza con un
tipo di procedure che non riescono a fermarsi.

Come sai già, in una procedura del LOGO puoi usare sia tutte le istruzioni
primitive di questo linguaggio, sia tutti i nomi delle procedure, da te in
precedenza definite e presenti nella memoria di lavoro.

A questo punto ti puoi domandare: è possibile usare, dentro una proce-


dura, il nome della procedura stessa ? Ossia, è possibile che una procedura
possa chiamare se stessa dentro di sè.

Sì, nel LOGO questa possibilità esiste e a questa strana e interessante


caratteristica di programmazione viene dato il nome di ricorsività.

Che cosa è la ricorsività.


Esploriamo un po’ la potenza della ricorsività con qualche semplice
esempio.Prova a immaginare che cosa succede dentro la procedura 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 procedura


CERCHIO ?

1. Vai avanti di un passo


Ruota di un grado a destra
Esegui CERCHIO
pag. 84 Manuale Logo

2. Vai avanti di un passo


Ruota di un grado a destra
Esegui CERCHIO

3. Vai avanti di un passo


Ruota di un grado a destra
Esegui CERCHIO

4. Vai avanti ......

Come vedi la procedura CERCHIO, chiamando ogni volta se stessa,


costringe la tartaruga ad andare avanti ininterrottamente.

Quanto accade dentro la procedura ricorsiva CERCHIO puoi capirlo


meglio ricordando questa nota filastrocca:

1. C’ERA UNA VOLTA UN RE


SEDUTO SUL SOFÀ
CHE DISSE ALLA SUA SERVA:
"RACCONTAMI UNA STORIA".
E LA SERVA INCOMINCIO’

2. C’ERA UNA VOLTA UN RE


SEDUTO SUL ......

Una procedura che chiama se stessa prima di esaurire le proprie istruzioni


in teoria non si dovrebbe fermare "mai".

Nella procedura CERCHIO, infatti, la tartaruga, conclusa la prima parte


della procedura, passa ad eseguire la sua ultima istruzione, la quale,
consistendo nel nome della procedura stessa, la obbliga a ricominciare tutta
la procedura da capo. E così via, "indefinitamente".

Come fermare una procedura ricorsiva.


Se desideri interrompere l’esecuzione di una procedura di questo tipo, ha
due possibilità:
- di interromperla temporaneamente e, in questo caso, devi premere il tasto
<PAUSA> collocato in alto a sinistra sulla tastiera. La procedura si
fermerà e potrai farle ancora riprendere l’esecuzione premendo un tasto
qualsiasi.
10. Procedure ricorsive pag. 85

- di interromperla definitivamente e, in questo caso, devi premere in


simultanea i tasti <CTRL> e <PAUSA>.

Una procedura, che prima di terminare usa se stessa come sottoprocedura,


in termine tecnico viene chiamata procedura ricorsiva finale. Tieni presente
che le procedure di questo tipo ti offrono un modo molto potente ed elegante
di scrivere procedure di esecuzione "infinita".

Esempi di procedure ricorsive.


Ecco un altro esempio di procedura ricorsiva che, come sai già, potrai
interrompere premendo contemporaneamente i tasti <CTRL> e <PAUSA>:
PER QUADR.RICORS :LATO
AVANTI :LATO
DESTRA 90
QUADR.RICORS :LATO
FINE

Che cosa abbiamo ordinato di eseguire a QUADR.RICORS ?

1. Disegna un lato della lunghezza che ti ho dato


Ruota di 90 gradi a destra
Esegui QUADR.RICORS

2. Disegna un lato della lunghezza che ti ho dato


Ruota di 90 gradi a destra
Esegui QUADR.RICORS

3. Disegna un ......

Ma che cosa accadrebbe se il lato, oppure il cambiamento di direzione,


fossero tali da non far ripassare la tartaruga sempre sullo stesso percorso?

Prova a cambiare l’ampiezza della rotazione rendendola più piccola, o più


grande, di 90 gradi. Così, per esempio:
PER QUADR.RICORS :LATO
AVANTI :LATO
DESTRA 87
QUADR.RICORS :LATO

FINE
pag. 86 Manuale Logo

Ancora un altro esempio. Prova a modificare la procedura POLIGONO,


già proposta in precedenza, nel modo che segue:
PER NUOVOPOLIGONO :LATO :ANG
AVANTI :LATO DESTRA :ANG
AVANTI :LATO DESTRA (:ANG * 2)
NUOVOPOLIGONO :LATO :ANG
FINE

Prova ad invocare questa procedura digitando:

NUOVOPOLIGONO 30 144

Interrompi l'esecuzione con <CTRL> + <PAUSA>, pulisci il video con


PS e digita la nuova invocazione:

NUOVOPOLIGONO 7 117

Vedrai che, in entrambi i casi, NUOVOPOLIGONO continua senza


interruzione a disegnare la propria figura, riprendendo sempre il disegno con
le grandezze iniziali di :LATO e di :ANG .

RICORSIVITA’ E VARIAZIONI DI ARGOMENTI

Come variare argomenti in procedura ricorsive.


Un’altra interessante possibilità che ti viene offerta dalla ricorsività è
quella di poter cambiare la lunghezza di un lato, ogni volta che viene
disegnato, oppure l’ampiezza di un angolo, ogni volta che si effettua un
cambiamento di direzione.

Tieni presente che, quando il LOGO ti richiede un numero, tu hai diversi


modo per proporglielo.

- all’inizio hai scritto procedure assegnando, ad esempio, il valore di un lato


in forma diretta (AVANTI 100).
- poi ha imparato ad usare una variabile (AVANTI :LATO).
- un terzo modo di dare un numero al LOGO a quello di fornirglielo mediante
qualche operazione aritmetica, che lui è in grado di calcolare assai
rapidamente (esempio: AVANTI :LATO + 3).
10. Procedure ricorsive pag. 87

Ecco un applicazione di questa terza nuova formulazione:


PER SPI.QUA :LATO
AVANTI :LATO DESTRA 90
SPI.QUA :LATO + 3
FINE

Allorchè SPI.QUA chiama SPI.QUA al proprio interno, la lunghezza del


lato aumenta di 3 passi e di conseguenza, anche se la rotazione rimane di 90
gradi, la Tartaruga non potrà mai ritornare sullo stesso percorso.

Vediamo che cosa accade quando fai eseguire questa procedura 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 un
quadrato e assume, invece, l’aspetto di spirale.

Esempi di procedure con variazione di argomento.


Ecco un primo esempio:
PER POLISPI :L :A
ASSCHERMO "CHIUSO
AVANTI :L DESTRA :A
POLISPI (:L + 1) :A
FINE
pag. 88 Manuale Logo

Invoca questa procedura prima con: POLISPI 1 95

Poi con: POLISPI 1 90

E infine con: POLISPI 1 117

In questo modo ti renderai conto del comportamento della tartaruga


durante l’esecuzione di ciascuna di queste procedure.

Potrai anche veder l’effetto prodotto dall’argomento :LATO, la cui


grandezza viene modificata attraverso la chiamata ricorsiva.

La chiamata incrementa di un passo il valore della lunghezza ad ogni ciclo


di esecuzione. Tutto ciò fa aumentare costantemente il "raggio della
spirale", allontanando sempre più la tartaruga dal punto di partenza.

Eseguite queste prove, richiama la procedura POLISPI con il comando


EDITA "POLISPI, correggila sostituendo il comando ASSCHERMO
"CHIUSO con il comando ASSCHERMO "CIRCOLARE, definisci la
nuova procedura e ripeti le prove con i valori dati in precedenza.

Vedrai , nel modo del tutto evidente, quale differenza esiste tra lo stato
di ASSCHERMO "CHIUSO e lo stato di ASSCHERMO CIRCOLARE.

POLISPI 1 88 POLISPI 1 90 POLISPI 1 92

POLISPI 1 118 POLISPI 1 120 POLISPI 1 122


11. Creazione e uso di funzioni pag. 89

CREAZIONE E USO DI FUNZIONI.

LE FUNZIONI

Che cosa è una funzione

Finora hai creato interessanti sistemi grafici usando quasi esclusivamente


le quattro istruzioni primitive : AVANTI, INDIETRO, DESTRA, SINI-
STRA, con l’istruzione RIPETI e adoperando qualche volta la ricorsività.

Tu sai, però, che il LOGO mette a tua disposizione diverse altre istruzioni
e con esse potresti quindi progettare e realizzare sistemi grafici ancora più
interessanti e più attraenti di quelli prodotti fino ad ora.

Per esempio, sai già che l’istruzione: ACASO <numero> ti mette in


condizione di scrivere un nunero che il LOGO sceglierà a caso tra quelli
compresi nell’intervallo tra 0 e numero -1. Di conseguenza, se ripeti
diverse volte questa istruzione, avrai ogni volta un numero diverso dai
precedenti, in quanto, come già detto, ogni numero viene scelto a caso.

Così con l’istruzione: AVANTI ACASO 50 potrai far spostare la tarta-


ruga in avanti di un numero di passi preso a caso, numero però che risulta
comunque compreso tra 0 e 49. Ecco una procedura ricorsiva in cui viene
utilizzata l’istruzione: ACASO.
PER RIF_POS
D 10 * ACASO 36
A 10 * ACASO 10
ST DOVE
ASPETTA 50
RIF_POS
FINE

L’effetto di questa procedura è quello di muovere sullo schermo la


tartaruga a caso, facendola fermare un po' in ciascuna tappa per comunicare
le coordinate della posizione raggiunta. Dopo alcune tappe la tartaruga si
fermerà e il LOGO ti invierà il messaggio di aiuto: HO FINITO I NODI. Per
riprendere l'esplorazione dello schermo dovrai allora digitare LIBERA e
invocare di nuovo la procedura RIF_POS.
pag. 90 Manuale Logo

In questo modo, ogni volta che eseguirai questa procedura ricorsiva,


potrai vedere un tracciato grafico del tutto diverso dai tracciati grafici
ottenuti con la stessa procedura in precedenza.

Si chiama funzione l'istruzione che, partendo da uno o più


valori prestabiliti, genera, come risultato, uno ed un sol valore.

ACASO 50 è quindi una istruzione-funzione. Infatti essa, partendo dal


valore di 50, genera un altro valore, che viene da lei scelto a piacere tra i
numeri che vanno da 0 a 49.

Come ricorderai, in LOGO esistono diverse altre funzioni che, per lo più,
sono di tipo aritmetico. Ricordiamone alcune a titolo di esempio:

La funzione: QUOZIENTE N1 N2 richiede due valori numerici, indicati


con i simboli N1 ed N2, e genera come risultato il quoziente intero della
divisione: N1 / N2. Così:

QUOZIENTE 7 3

ti darà, come risultato, il valore 2 , anzichè produrre il valore 2.33333... che


è il vero risultato della divisione 7 / 3 .

Il resto intero della divisione: N1 / N2 potrai ottenerlo usando la


funzione: RESTO N1 N2. Così:

RESTO 7 3

ti darà, quale risultato, 1 , ossia il resto intero della divisione 7 / 3 .

Funzioni create con l’istruzione RIPORTA.


Allo stesso modo con il quale sei in grado di definire procedure, tu puoi
altresì definire altre funzioni di cui avverti eventualmente la necessità.

La parola primitiva che puoi utilizzare per produrre, quale risultato,


quelle funzioni che intendi definire è l’istruzione:

RIPORTA

Ad essa va attribuito il significato seguente: esci da questa procedura e


dammi il risultato dell’operazione .....
11. Creazione e uso di funzioni pag. 91

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 la
definizione di un’altra funzione, lo stesso compito viene trasferito dalla
funzione: SOMMARE alla funzione: ADDIZIONARE.

PER SOMMARE :N1 :N2


RIPORTA :N1 + :N2
FINE

PER ADDIZIONARE :N1 :N2


RIPORTA SOMMARE :N1 :N2
FINE

Definite queste funzioni potrai scrivere indifferentemente:

5+7

SOMMA 5 7

SOMMARE 5 7

ADDIZIONARE 5 7

e il LOGO ti risponderà, in ogni caso:

12

Ecco un altro esempio:

PER ELEVARE.AL.QUADRATO :N
RIPORTA :N * :N
FINE

Questa procedura ti permette di calcolare il quadrato di un numero che


puoi scegliere a piacere.

Quando la invochi, il LOGO calcola per te il risultato della operazione:


:N * :N e te lo scrive.

Subito dopo la procedura si interrompe e il controllo del LOGO ritorna


alla tastiera del computer, ossia a te che ci stai lavorando.
pag. 92 Manuale Logo

Ancora un esempio:
PER DUE.DADI
RIPORTA (ACASO 11) + 2
FINE

Con questa procedura-funzione potrai generare numeri casuali compresi


nell’intervallo da 2 a 12 , ottenendo il risultato complessivo che potresti
ottenere con il lancio di una coppia di dadi.

PROCEDURE-FUNZIONI RICORSIVE.

Che cosa sono le procedure-funzioni ricorsive.


Come sai già, due degli strumenti operativi molto importanti del linguag-
gio LOGO sono rappresentati dalle procedure ricorsive e dalle procedure
funzioni e, quest’ultime, ti servono per portar fuori da una certa procedura
un certo risultato che desideri ottenere.

Come ricorderai, un esempio di procedura ricorsiva è la procedura


CERCHIO:
PER CERCHIO
AVANTI 1 DESTRA 1
CERCHIO
FINE

Un esempio di procedura funzione è invece la procedura PITAGORA


scritta appresso.

Con essa potrai ottenere la radice quadrata, calcolata con la funzione:


RADQ, della somma dei quadrati di due numeri, scelti da te a piacere. Per
esempio, se scegli i numeri 3 e 4 , i loro quadrati sono rispettivamente: 9
(ossia il risultato di: 3 x 3) e 16 (ossia il risultato di 4 x 4) . Se calcoli la
somma di questi due quadrati, hai: 9 + 16 = 25.

Ebbene, PITAGORA ti calcola immediatamente la radice quadrata di 25,


scrivendo 5 che è appunto la radice quadrata di 25 , ossia 5 è quel numero
che, moltiplicato per se stesso, dà 25 come prodotto.

Ecco la procedura PITAGORA:


11. Creazione e uso di funzioni pag. 93

PER PITAGORA :Nl :N2


RIPORTA RADQ ((:Nl * :N1) + (:N2 * :N2))
FlNE

Tenteremo fra poco di mettere insieme l’idea di ricorsività con l’idea di


procedura-funzione, ma, prima di farlo, occorre spiegare che cosa è un
ALGORITMO.

L’algoritmo euclideo del MCD

Un algoritmo si puo definirlo, in forma del tutto semplice, come: proce-


dimento operativo ben ordinato adatto per risolvere un problema.

In matematica, uno degli algoritmi più famosi è il procedimento descritto


appresso, con il quale si può calcolare, in modo del tutto facile, il massimo
comun divisore (MCD) di due numeri:

1. - Prendi due numeri a piacere. Siano N1 e N2.

2. - Se sono uguali, l’algoritmo è concluso. N1 è il loro MCD.

3. - Se N1 è più piccolo di N2, scambia il loro posto. Ossia metti


N1 al posto di N2, e N2 al posto di N1.

4. - Calcola ora la differenza di N1 - N2 e chiamala N1

5. - Ricomincia l’algoritmo da capo, usando il nuovo N1 e il


vecchio N2.

Questo algoritmo è conosciuto con il nome di algoritmo euclideo, perchè


venne ideato da Euclide, grande matematico dell’Antica Grecia.

Funzionamento dell'algoritmo euclideo.

Per capire qual è il meccanismo di funzionamento dell’algoritmo eucli-


deo, prova ad applicarlo su due numeri qualsiasi.

Per farlo segui l'esempio proposto nella pagina seguente dove l'algoritmo
in questione viene utilizzato per il calcolo del Massimo Comun Divisore dei
numeri 12 e 30.
pag. 94 Manuale Logo

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, potrai
convenire che il numero ottenuto quale risultato, alla conclusione di ciascu-
na prova, è, ogni volta, il massimo comun divisore dei due numeri di
partenza.

Questo algoritmo, come puoi facilmente vedere, non richiede l’uso di


moltiplicazioni e di divisioni e nel suo passo n. 5 contiene una istruzione
che somiglia molto ad una chiamata ricorsiva.

Essa, tra l’altro, risulta espressa nello stesso "stile" nel quale viene
espressa una procedura ricorsiva del LOGO.

Procedura LOGO per l’algoritmo euclideo.


Trovi di seguito la procedura LOGO adatta per eseguire l’algoritmo
euclideo finalizzato alla ricerca del massimo comun divisore di due numeri
scelti a piacere. Osserva che, nella procedura stessa, viene utilizzata:

- ripetutamente l’istruzione: RIPORTA, quindi tale procedura è una


procedura-funzione;

- la ricorsività, quindi è anche una procedura ricorsiva.


11. Creazione e uso di funzioni pag. 95

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:

che è, appunto, il numero più grande che divide sia il 12 , sia il 30 . Ossia
è il loro MCD.

ISTRUZIONI CONDIZIONALI (O, DI CONTROLLO)

L’istruzione: SE...
Nella procedura scritta prima per il calcolo del MCD hai usato per due
volte l’istruzione: SE...

Questa istruzione si chiama istruzione condizionale, o istruzione di


controllo. Essa è costituita da almeno due parti ben distinte: un condizione
preliminare seguita da un successivo comando. Ebbene il suo significato è il
seguente: viene eseguito il comando solo nel caso che la condizione
preliminare risulti VERA.

Questo tipo di istruzione è una delle più importanti, se non la più


importante, di qualsiasi linguaggio di programmazione per i computer.

Esamina con attenzione la procedura: EUCLIDE. La sua prima istruzione


SE ... entra in funzione solo se i due numeri scelti quali argomenti della
procedura risultano essere uguali.
pag. 96 Manuale Logo

In questo caso la procedura si ferma, perchè l’istruzione RIPORTA la


obbliga a farlo e, come risultato, viene dato il valore attuale di :N1.

Se la condizione del primo SE ... non è vera, ossia se :N1 è diverso da


:N2 , il LOGO passa alla seconda istruzione, che funziona in modo molto
simile alla prima.

Questa seconda istruzione SE ... entra in funzione solo alla condizione


che :N1 abbia, in quel momento un valore minore di :N2 In questo caso
l’invocazione originaria di EUCLIDE :N1 :N2 viene modificata e viene
considerata invece come fosse EUCLIDE :N2 :N1, ossia vengono scam-
biati di posto i valori dei numeri proposti in ingresso.

In pratica, questo significa che MCD di 8 e di 12, per esempio, viene


calcolato ricominciando da capo l’algoritmo, considerando però come
primo valore il 12 ,che viene assegnato ad :N1, e come secondo valore l’8,
che viene assegnato ad :N2.

Ciò che equivale chiaramente a concepire, in astratto, l’operazione di


MCD quale operazione commutativa. Ossia:

MCD (n, m) = MCD (m, n)

Se, infine, nessuna delle due prime condizioni risulta essere vera, viene
chiamata, in modo ricorsivo, l’intera procedura dall’inizio. I suoi argomenti
vengono, però, modificati. Il primo sarà costituito dalla differenza tra :N1
e :N2 , che diventa il nuovo valore di :N1, mentre il secondo argomento
conserva il precedente valore di :N2.

Questa iterazione di chiamate ricorsive terminerà quando i due valori di


:N1 e :N2 diventano uguali. In questo caso, ovviamente, il: MCD (n,m) =
n in quanto n = m .

Confronta ora la procedura in LOGO per il MCD, scritta all'inizio della


pagina precedente, con il programma in BASIC scritto nella pagina accanto,
sotto il relativo diagramma di flusso. Questo programma in BASIC consente
anch'esso di calcolare il MCD di due numeri scelti a piacere.

Nel confronto potrai notare come il LOGO sia assai più vicino alle
espressioni del tuo linguaggio quotidiano rispetto al linguaggio BASIC, il
quale è un linguaggio di programmazione tra i più usati, se non il più usato
in assoluto.
11. Creazione e uso di funzioni pag. 97

10 Input "Primo numero";A


20 Input "Secondo numero";B
30 IF A = B THEN 80
40 IF A > B THEN 60
50 C=A; A=B; B=C
60 A=A-B
70 GOTO 30
80 PRINT "MCD = "; A
90 END

Calcolo del minimo comune multiplo


Con la procedura EUCLIDE è anche facile calcolare il minimo comune
multiplo (mcm) dei due numeri considerati. Per questo nuovo calcolo vale,
infatti, una formula assai elegante, ma poco usata.

Essa permette di considerare il mcm di due numeri a partire dal loro MCD.

Ecco la formula:

mcm (n, m) = n * m / MCD (n, m)

A seguito di tale formula si può allora realizzare la procedura seguente:

PER MCM :N1 :N2


RIPORTA :N1 * :N2 / EUCLIDE :N1 :N2
FlNE
pag. 98 Manuale Logo

Altri esempi.
Mediante procedure ricorsive, con il LOGO possono essere formulate e
calcolate moltissime funzioni utili. Una di esse, per esempio, è la funzione
FATTORIALE. Questa funzione matematica viene definita come:

FATTORIALE (n) = 1 x 2 x 3 x .... x (n-1) x (n)

Ricordiamo che il fattoriale di 1 è 1, quello di 2 è 2 (ossia: 1 x 2), quello


di 3 è 6 (ossia: 1 x 2 x 3), quello di 4 è 24 (ossia: 1 x 2 x 3 x 4), ....

Come si vede il risultato di tale funzione diventa rapidamente assai


grande, anche se il numero considerato, ossia (n), aumenta di poco. E ciò lo
sanno bene coloro che giocano al Totocalcio.

Ecco la procedura LOGO con la quale potrai calcolare il fattoriale di un


numero qualsiasi:

PER FATTORIALE :N
SE :N = 1 [RIPORTA 1]
[RIPORTA (:N * FATTORIALE (:N - 1))]
FINE

L’istruzione SE .... ALTRIMENTI ....


Altra istruzione condizionale, che svolge lo stesso compito di: SE ...
è l’istruzione: SE ... ALTRIMENTI ....

Il suo significato è il seguente: se la relazione scritta subito dopo SE è


VERA, devi eseguire quanto viene prescritto dalla istruzione che viene
subito dopo. Se invece tale relazione è FALSA, devi eseguire ciò che viene
prescritto subito dopo ALTRIMENTI. Esempio:

PER CONTAPER :AUM :NUM


SE :NUM > 100 [STOP] ALTRIMENTI [SCRIVI FRASE :NUM
“ CONTAPER :AUM (:NUM + :AUM)]
FINE

Questa procedura serve per effettuare operazioni di conteggio per :AUM


, ossia per uno, per due, per tre, ..., partendo da un qualsiasi numero minore
di 100 (:NUM), per arrivare fino a 100.
11. Creazione e uso di funzioni pag. 99

Nella procedura compaiono due novità, che sono:

- la presenza della istruzione SCRIVI. Questa istruzione serve per scrivere


sequenze di elementi in riga, anzichè in colonna come avviene quando si
usa l’istruzione STAMPA.

- la presenza delle virgolette alle quali occorre far seguire uno spazio vuoto.

In questo modo i numeri che verranno scritti in riga da SCRIVI verranno


separati ciascuno da uno spazio vuoto. Ciò in quanto ogni FRASE, che per
il LOGO deve essere costituita da due elementi, sarà formata da un numero
e da uno spazio vuoto.

L’istruzione VERIFICA .... SEV.... SEF


Altra istruzione condizionale è:

VERIFICA ....SE_VERO .... SE_FALSO .... ,

per la quale va tenuto presente che SE_VERO si può abbreviare con SEV,
mentre SE_FALSO è abbreviabile con SEF.

Il suo significato è: verifica una determinata relazione (per esempio, se


A > B). Se la relazione risulta VERA, esegui l’istruzione scritta subito dopo
SE_VERO. Se l’istruzione risulta invece FALSA, esegui l’istruzione scritta
subito dopo SE_FALSO.

Ecco un esempio di applicazione di quest'altra istruzione condizionale:

PER FATTURA
ST [QUANTE BOTTIGLIE VUOLE?]
AS "QUANT LEGGINUMERO
VERIFICA :QUANTITA’ < 10
SEV [AS "PREZZO 3000]
SEF [AS "PREZZO 2700]
AS "IMPORTO :QUANT * :PREZZO
ST (FRASE [IN TUTTO MI DEVE] :IMPORTO [LIRE])
FINE
pag. 100 Manuale Logo

PER LEGGI NUMERO


QUI “NONNUMERO
AS “NUMERO LEGGIPAROLA
SE NON NUMERO? :NUMERO [VAI “NONNUMERO]
RIPORTA :NUMERO
FINE

Questa procedura, che devi digitare assieme alla procedura


LEGGINUMERO che l'accompagna, stampa una “fattura” per la vendita di
bottiglie di vino aventi costo differente. Costano 3 000 lire l’una, quando
vengono vendute meno di dieci alla volta. Mentre per quantità maggiori il
loro prezzo unitario è di lire 2 700.

Ecco un altro esempio:

PER SPIRALE :LATO :ANG


A :LATO D :ANG
VERIFICA :LATO > 100
SE_VERO [STOP]
SE_FALSO [SPIRALE (:LATO + 5) :ANG]
FINE

A pag. 77 hai già incontrato una procedura simile a questa. Era la


procedura ricorsiva POLISPI :L :A che aveva l'inconveniente di non
fermarsi; quindi doveva essere interrotta con i tasti <CTRL> <PAUSA>.
Riprendi quella procedura e modificala con le innovazioni introdotte nella
procedura SPIRALE con VERIFICA ... SE_VERO ... SE_FALSO ... .

PROCEDURE INTERATTIVE

Si dicono "interattive" quelle procedure con le quali si stabilisce una


forma di dialogo tra l'operatore e il computer. Nella esecuzione di queste
procedure il computer formula una o più domande all'operatore. Questo
deve dargli le relative risposte. Il computer le controlla e fornisce l'esito del
controllo effettuato. Di seguito sono riportate, quali esempi, due procedure
interattive abbastanza semplici che puoi collegare allo studio della geome-
tria e due piuttosto complesse da collegare con il mondo dei numeri.
11. Creazione e uso di funzioni pag. 101

Procedure PERIMETRO E AREA


Ecco due procedure per proporre, in opposizione distintiva, le nozioni di
perimetro e di area. Nella prima procedura dovrai scegliere una delle due
nozioni. Il computer, a seconda della tua indicazione, disegnerà il contorno
(ossia il perimetro) di un rettangolo oppure ti proporrà un rettangolo
colorato nel suo interno. Ciascuno dei due disegni viene accompagnato da
un commento esplicativo. Ovviamente il rettangolo potrai successivamente
sostituirlo con qualsiasi altro poligono o figura.

Per mandare in esecuzione questa procedura dovrai invocarla con


PERIAREA. Sul video apparirà la richiesta:

VUOI IL PERIMETRO O L'AREA? (P/A)

Se digiterai P apparirà il contorno di un rettangolo con il messaggio:


QUESTO È IL PERIMETRO, mentre se digiterai A apparirà un rettangolo
colorato con il messaggio: QUESTA È L'AREA.

La seconda procedura potrai attivarla digitando AREAPERI. Sullo


schermo comparirà a caso il contorno di un rettangolo e oppure un 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. 102 Manuale Logo

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

PER RISPOSTA
AS "R LC
SE NON ELE? :R [P A F] [RISPOSTA
SE :R = "F [FINIRE]
SE NON :R = "F [CONTROLLA AREAPERI]
FINE

PER CONTROLLA
SE AMB (:R = "P) (:E = 1) [PT ST [ESATTO, BRAVO!]]
SE AMB (:R = “A) (:E = 2) [PT ST [ESATTO, BRAVO!]]
SE AMB (:R = “A) (:E = 1) [PT ST [SBAGLIATO, QUESTO E’
IL PERIMETRO]]
SE AMB (:R = "P) (:E = 2) [PT ST [SBAGLIATO QUESTA E'
L'AREA]]
ASPETTA 100
FINE

PER AREA
RIPETI 2 [A 70 D 90 A 90 D 90]
D 5 SU A 10 GIU RIEMPI SU I 10 GIU S 5
FINE

PER FINIRE
PT ST [CIAO ... ALLA PROSSIMA!!] [STOP]
FINE

Procedura TABELLINE
La procedura interattiva TABELLINE ti può servire per approfondire lo
studio delle tabelle moltiplicative. Al suo interno interno è inclusa la
sottoprocedura ricorsiva di primo livello CONTROLLA. Dentro di questa
c'è la sottoprocedura di secondo livello LEGGINUMERO, dalla quale si
passa, mediante una scelta condizionale, alla sottoprocedura di terzo livello
denominata OK.
pag. 104 Manuale Logo

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

PER SCELTA
RIPETI 3 [ST [ ]]
ST [VUOI CONTINUARE? C / F] ST [ ]
ST [C = CONTINUARE; F = FINIRE]
AS “SCE LC
SE NON ELE? :SCE [C F] [SCELTA]
SE :SCE = “C [TABELLINE]
SE :SCE = “F [FINIRE]
FINE

Procedura INDOVINA
Un’altra procedura interattiva è INDOVINA. Ti propone un gioco per
indovinare, con il minor numero possibile di domande, un numero misterio-
so, compreso tra uno e cento e "pensato" dal computer.

Nella procedura INDOVINA è inserita la sottoprocedura di primo livello


GIOCO. La procedura GIOCO è ricorsiva e contiene due sottoprocedure
di secondo livello inserite nel seguente ordine: prima LEGGINUMERO e
dopo OK.

PER INDOVINA
PT ST [ ] AS “TENT 0
AS “NUM 1 + ACASO 100
ST [HO SCELTO UN NUMERO DA 1 A 100] ST [ ]
ST [CERCA DI INDOVINARLO E SCRIVILO SOTTO] ST [ ]
ST [IO TI AIUTERO’ CON QUALCHE INDICAZIONE] ST [ ]
GIOCO
FINE

PER FINIRE
PT ST [CIAO ... AL PROSSIMO INCONTRO!] [BREAK]
FINE
pag. 106 Manuale Logo

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

ISOMETRIE NEL PIANO CARTESIANO

E FUNZIONI TRIGONOMETRICHE

RICORDIAMO LA GEOMETRIA CARTESIANA

Come ricorderai la geometria cartesiana organizza lo schermo della


tartaruga come fosse un reticolato di quadratini attraversato in orizzontale
dall’asse delle X, chiamato anche asse delle ascisse, e in verticale dall’asse
delle Y, chiamato anche asse delle ordinate.

La TANA si trova nel punto di incrocio dei due assi e, in questo punto,
sia alla X, sia alla Y, viene attribuito il valore di 0.

I valori di X aumentano andando verso destra e diminuiscono andando


verso sinistra, diventando negativi subito a sinistra della TANA. Similmen-
te, i valori di Y aumentano salendo in alto e diminuiscono scendendo in
basso, diventando negativi subito sotto la Tana.

Ricordiamo le istruzioni del LOGO già illustrate nel capitolo 4 (pagg. da


35 a 39) che puoi utilizzare per muovere la Tartaruga in questa sorta di
"reticolato" che, in matematica, è noto sotto il nome di PIANO CARTESIANO

VAX <num> VAY <num> VAXY [<num> <num>]

XCOR YCOR

Per spostare la tartaruga ad una certa distanza puoi mettere insieme due
di queste istruzioni.

Per esempio, con:

VAX XCOR +50

puoi spostare la Tartaruga di 50 passi a destra senza farle cambiare la


direzione.
pag. 108 Manuale Logo

Così con:

VAXY [XCOR +30 YCOR -20]

puoi spostare la tartaruga di 30 passi a destra e di 20 passi in basso


senza farle cambiare direzione.

Ecco una procedura nella quale puoi utilizzare alcune di queste istruzioni
per disegnare sullo schermo gli assi del piano cartesiano:

PER ASSI.CARTES
PS NT
VAX 135 VAX (-135) TANA
VAY 125 VAY (-125) TANA
FINE

Di seguito trovi una serie di procedure per visualizzare le isometrie di un


triangolo nel piano. Nella esecuzione delle isometrie gli assi cartesiani
hanno il ruolo di assi per le simmetrie assiali e queste vengono collegate con
le rispettive traslazioni e rotazioni.

PROCEDURE PER LE ISOMETRIE DI UN TRIANGOLO

Traslazioni.

PER TRIANGOLO.1
SU VAXY [-100 -50]
GIU VAXY [-100 -20]
VAXY [-30 -50]
VAXY [-100 -50]
FINE

PER TRIANGOLO.2
SU VAXY [50 50]
GIU VAXY [50 80]
VAXY [120 50]
VAXY [50 50]
FINE
12. Isometrie piane e funzioni trigonometriche pag. 109

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. 110 Manuale Logo

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

RICORDIAMO LA GEOMETRIA POLARE

Come sai già, per conoscere qual è la direzione attuale della Tartaruga
c’è il comando DIR. Se batti DIR, il LOGO potrebbe risponderti

34.006

o qualunque altro numero di gradi che indica di quanto la tartaruga è girata


verso destra (ossia, nel verso in cui ruotano le lancette dell’orologio) a
partire dalla direzione verticale verso l’alto che va considerata quale DI-
REZIONE 0.

L’istruzione DIR può essere usata dentro una procedura come condizione
di blocco. Ecco, per esempio, come puoi utilizzarla dentro una procedura
ricorsiva che disegna un cerchio:

PER CERCHIO
AVANTI 1 DESTRA 1
SE DIR = 0 [STOP]
CERCHIO
FINE

Digita questa procedura, definiscila e poi provala. Dopo averla provata,


richiamala nel modo di edizione e cancella la sua terza riga. Se la provi di
nuovo, vedrai che in questo secondo caso la tartaruga continua a girare sul
contorno del cerchio senza mai fermarsi. Perchè?

Se vuoi assegnare alla tartaruga una certa direzione, serviti della istruzio-
ne ASDIR, il cui significato è: ASsegna DIRezione. ASDIR 45, per
esempio, fa assumere alla Tartaruga la direzione di 45 gradi a destra rispetto
alla direzione verso l’alto (0).

Per cambiare di un certo angolo l’attuale direzione della Tartaruga puoi


scrivere insieme le ultime due istruzioni. Per esempio, potresti digitare
ASDIR DIR + 30 e la Tartaruga, in questo caso cambierebbe direzione di
30 gradi a destra, girando quindi nello stesso modo in cui ruoterebbe se
ricevesse il comando DESTRA 30.

Ricorda infine che l’istruzione VERSO richiede due argomenti numerici


che vengono intepretati come le coordinate di un punto dello schermo.
Questa istruzione riporta la misura in gradi dell’angolo formato, in rotazio-
ne destrorsa, dalla direzione 0 (zero) e dalla direzione congiungente la
pag. 112 Manuale Logo

posizione della tartaruga con il punto indicato. Anche questa istruzione puoi
collegarla alle precedenti.

Così, per esempio, digitando ASDIR VERSO 50 (-50) la tartaruga


ruoterà in direzione di un punto che sta 50 passi a destra e 50 passi sotto
rispetto al punto della TANA.

FUNZIONI TRIGONOMETRICHE

Nel disegno che è in basso viene rappresentato il significato operativo


delle funzioni trigonometriche SEN e COS.

SEN

richiede come argomento una ampiezza angolare espressa in gradi. Ne


calcola il seno, ossia l’ordinata ricavata dalla situazione cartesiana sono
raffigurata. Per esempio: SEN 90 produce, come risposta: 1

COS

richiede anch’essa come argomento una ampiezza angolare espressa in


gradi. Ne calcola il coseno, ossia l’ascissa ricavata dalla situazione cartesiana
sotto raffigurata. Per esempio: COS 180 produce, come risposta: -1.

α
SEN α

COS α
13. Le liste e le parole. pag. 113

LE LISTE E LE PAROLE

LE LISTE

Una lista è una successione di oggetti Logo racchiusi tra parentesi


quadrate. Gli oggetti si chiamano elementi della lista e possono essere
numeri, parole (non precedute da apici) o altre liste (scritte in forma
esplicita tra parentesi quadre).

Per esempio:

[ABELE CAINO]

è una lista formata da due elementi che sono le parole “ABELE e “CAINO.
Quando le parole sono elementi di una lista non devono essere precedute
dalle virgolette.

[1 2 3 4]

è una lista formata da quattro elementi che sono i numeri 1, 2, 3 e 4.

[1 1 1 1]

è una lista formata da quattro elementi uguali tra di loro.

[1 2 [3 4]]

è una lista formata da tre elementi: i primi due sono i numeri 1 e 2; il terzo
elemento è la lista formata dai numeri 3 e 4.

[A]

è una lista formata da un solo elemento, la parola A.

[[A]]

è una lista formata da un solo elemento, che a sua volta è una lista formata
dal solo elemento, la parola A.

[]

è una lista vuota, ossia senza alcun elemento.

[A :B]

è una lista formata dalla parola A e dal valore della variabile B.


pag. 114 Manuale Logo

Operazioni sulle liste

Un elemento si può mettere al primo o all’ ultimo posto di una lista usando
i comandi:

INPRI
INULT

AS “NUMERI [2 1]

MOSTRA INPRI 3 :NUMERI [3 2 1]

AS “NUMERI [2 3 4]

MOSTRA INULT 5 :NUMERI [2 3 4 5]

Si può creare una nuova lista a partire da due liste, da due parole o da una
lista e una parola con la funzione

FRASE

MOSTRA FRASE [1 2 3] [4 5 6] [1 2 3 4 5 6]

AS “NOME “LUDOVICO

MOSTRA FRASE “CIAO :NOME [CIAO LUDOVICO]

MOSTRA FRASE “BUONA "SERA [BUONA SERA]

MOSTRA FRASE “LUPO [CAPRA CAVOLI]

[LUPO CAPRA CAVOLI]

Ma attenzione:

MOSTRA FRASE [1 2 3] [1 2 3] [1 2 3 1 2 3]

perchè in una lista, come abbiamo già visto nei primi esempi, ci possono
anche essere elementi uguali e il comando FRASE si limita a concatenare gli
elementi della prima lista a quelli della seconda.

L’ultimo esempio consente di mettere in evidenza la differenza tra il


concetto di lista e il concetto matematico di insieme: la lista, come dice il
nome, è un elenco di “segni” dotato di una certa struttura che non ha nulla
a che vedere con gli eventuali “significati” dei segni stessi.
13. Le liste e le parole. pag. 115
Diverso è il risultato che si ottiene usando la funzione

LISTA
la quale riporta, come FRASE, una lista formata dai suoi argomenti, ma se
qualcuno di questi è esso stesso una lista, come tale rimane nella lista
risultato.

MOSTRA LISTA [1 2 3] [4 5 6] [[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ì come


abbiamo fatto finora, al posto che le compete nelle operazioni che su di essa
si vogliono eseguire.

Può però anche essere assegnata come valore ad una variabile e, di


conseguenza, essere nominata usando il nome della variabile.

Per esempio si può dare il nome “FRATELLI alla lista [LUCA GIORGIO
MARCO STEFANIA] mediante l’istruzione: AS “FRATELLI [LUCA
GIORGIO MARCO STEFANIA].

Da questo momento in poi tutte le operazioni che si possono eseguire su


una lista possono essere eseguite sul contenuto della variabile :FRATELLI,
come negli esempi che seguono:

MOSTRA INPRI “PROSDOCIMO :FRATELLI

[PROSDOCIMO LUCA GIORGIO MARCO STEFANIA]

MOSTRA INULT “LUIGI :FRATELLl

[LUCA GIORGIO MARCO STEFANIA LUIGI]


pag. 116 Manuale Logo

Che cosa si può ottenere da una lista

Si può ottenere il primo o 1' ultimo elemento di una lista, con le funzioni

PRI
ULT
Da una certa lista se ne può ottenere un’altra ricavata dalla prima
eliminando il primo o 1' ultimo elemento, con i comandi

MENPRI
MENULT
Infine si può sapere il numero di oggetti che compongono una lista, con
la funzione:

CONTA.
STAMPA PRI [LUCA GIORGIO MARCO STEFANIA]

LUCA

MOSTRA ULT [LUCA GIORGIO MARCO STEFANIA]

STEFANIA

MOSTRA MENPRI [LUCA GIORGIO MARCO STEFANIA]

[GIORGIO MARCO STEFANIA]

STAMPA MENULT [LUCA GIORGIO MARCO STEFANIA]

LUCA GIORGIO STEFANIA

STAMPA CONTA [LUCA GIORGIO MARCO STEFANIA] 4

Ma fai attenzione:

STAMPA CONTA [PIPPO PLUTO [QUI QUO QUA]] 3

in quanto la primitiva CONTA considera la lista [QUI QUO QUA] come un


solo oggetto.

Per ottenere un certo elemento di una lista si può usate la funzione

ELE
che richiede come argomenti il numero dell’elemento voluto e 1’oggetto in
cui cercarlo (una lista, ma può essere anche una parola).
13. Le liste e le parole. pag. 117
STAMPA ELE 2 :FRATELLI GIORGIO

Per conoscere la posizione di un’elemento in un oggetto si può usare la


primitiva

POSELE

Come si può leggere una lista da tastiera

Il comando

LEGGILISTA (che si abbrevia con LL)

consente di leggere una lista direttamente dalla tastiera o dal dispositivo di


lettura in funzione.

La procedura che segue consente di “dichiarare” al Logo una collezione


di cognomi, ciascuno seguito da una lista di nomi di persone che 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 le
relazioni in essi implicitamente contenute.

PER MADRE :FAMIGLIA

RIPORTA PRI MENPRI :FAMIGLIA

FINE

STAMPA MADRE :ROSSI LUISA

STAMPA MADRE : NERI MARGHERITA

Liste di istruzioni

Abbiamo detto che le liste sono delle successioni ordinate di oggetti,


sappiamo però che anche le frasi che formano le istruzioni del Logo sono
delle sequenze ordinate di oggetti (primitive, procedure e argomenti).

Da questa identità discende un’altra proprietà delle liste: esse possono


essere eseguite.

La primitiva:

ESEGUI <LISTA>
esegue le istruzioni contenute nella lista.

LE PAROLE

Una parola in Logo è una successione arbitraria di lettere, numeri e


simboli speciali ottenibili dalla tastiera; essepossono contenere al loro
interno anche spazi bianchi.

Che cosa si può fare con le parole

Sulle parole si possono eseguire quasi tutte le azioni che si possono


eseguire sulle liste (naturalmente gli ordini non sono sempre uguali a quelli
che si usano per le liste).
13. Le liste e le parole. pag. 119
Si possono unire due parole con la funzione

PAROLA
che corrisponde alla funzione FRASE per le liste. Esempio:

STAMPA PAROLA “GIAN “CARLO GIANCARLO

Si può ottenere il primo carattere di una parola o 1’ultimo rispettivamente


con le funzioni PRI e ULT

Esempi:

STAMPA PRI “CARLOMAGNO C

STAMPA ULT “NEMICO O

Da una parola si possono ottenere parole senza la prima o l’ultima lettera


con le funzioni MENPRI e MENULT:

STAMPA MENPRI “CARLOMAGNO ARLOMAGNO

STAMPA MENULT “NEMICO NEMIC

Combinando le funzioni precedenti non è difficile ottenere alcune


semplici “regole grammaticali”

PER PLURALE :NOME


SE ULT NOME = “A [RIPORTA PAROLA MENULT :NOME “E]
SE ULT :NOME = “O [RIPORTA PAROLA MENULT :NOME “I]
RIPORTA FRASE [NON SO FARE IL PLURALE DI] :NOME
FINE

Naturalmente questa regola funziona in tutti i casi regolari: non funziona


invece per le eccezioni

STAMPA PLURALE “AMICO AMICI

STAMPA PLURALE “BANANA BANANE

STAMPA PLURALE “DONNA DONNE

Ma purtroppo:

STAMPA PLURALE “UOVO UOVI


STAMPA PLURALE “UOMO UOMI
STAMPA PLURALE “POETA POETE
pag. 120 Manuale Logo

Il che dimostra che la grammatica della lingua italiana non si può


ricostruire con poche procedure.

Sottolineiamo a questo punto in maniera esplicita che gli ordini INPRI


e INULT, che valgono per le liste, non funzionano con le parole.

Si può conoscere 1' ennesimo carattere di una parola con la funzione

ELE
STAMPA ELE 3 “LOGO G

Si può sapere la lunghezza di una parola con la funzione

CONTA
STAMPA CONTA “LUDOVICO 8

Si possono confrontare due parole per decidere se una è uguale all’altra


con il predicato

UGUALE?
STAMPA UGUALE? “LUDOVICO PAROLA “LUDOVI “CO

VERO.

Adulto e ragazzo affetti da "micromania": prima e dopo.

(tratto da "C. Pratt, Micromania: la resistibile ascesa dei computer, Feltrinelli, 1984
Appendice A: Glossario M-LOGO - LOGO IBM pag. 121

GLOSSARIO M-LOGO LOGO-IBM

COMANDI DELLA GRAFICA

ASCAMPO
ASCAMPO “APERTO
“CHIUSO FENCE
“CIRCOLARE WRAP
Il comando ASCAMPO, il cui argomento può essere soltanto una delle parole
“APERTO, “CHIUSO o “CIRCOLARE, permette di stabilire le caratteristiche dello
spazio in cui si muove la tartaruga.
Se I’argomento di ASCAMPO è “APERTO, allora il campo in cui può muoversi la
tartaruga non è limitato dai margini dello schermo ed essa potrà spostarsi anche al di
fuori di esso (anche se, ovviamente, non sarà visibile).
Se invece 1' argomento di ASCAMPO è la parola “CHIUSO, il campo della tartaruga
viene limitato allo schermo. In questo caso un comando che portasse la tartaruga ad
uscirne produrrebbe il messaggio “TARTA contro il MURO.
Infine, quando ASCAMPO viene seguito dalla parola “CIRCOLARE, lo spazio in cui
si muove la tartaruga viene trasformato in modo tale che se un comando porta la tartaruga
ad uscire dallo schermo, essa riapparirà dal lato opposto e di qui continuerà il suo
movimento.
Quando viene fatto partire il Logo, il campo è CIRCOLARE.
TANA ASCAMPO "APERTO AVANTI 1000
TANA ASCAMPO "CHIUSO AVANTI 1000
TARTA contro il MURO

ASCOL <num> SETPC


Il comando ASCOL assegna il colore, corrispondente a <num>, alla penna della
tartaruga; 1' argomento può essere 0, 1, 2, o 3.
Ricordiamo che, quando si disegna, mentre i colori disponibili sono 16, in ogni caso
sullo schermo ne possono essere contemporaneamente presenti soltanto 4.
Il colore 0, che si chiama colore di sfondo, può essere scelto tra tutti e sedici i colori
disponibili e viene controllato mediante il comando ASSFONDO, che accetta come
argomento un numero compreso tra 0 e 15.
Gli altri 3 colori possono essere scelti in due combinazioni diverse, che si chiamano
“tavolozze”: è possibile variare la “tavolozza” corrente con il comando ASTAVOLOZ2A,
che può avere come argomento 0 o 1.
A seconda dello sfondo e della tavolozza scelti, i numeri 0,..,3 corrisponderanno
dunque a colori diversi.
pag. 122 Manuale Logo

Si noti che il colore del triangolino raffigurante la tartaruga a volte non coincide con
quello della penna: il simbolo della tartaruga viene infatti scritto, punto per punto, in un
colore effettivo che è dato dalla composizione dal colore nominale della penna e del
colore corrente del punto stesso, secondo la tabella seguente, che si riferisce ai colori
mediante i numeri corrispondenti nella tavolozza.

0+l=1 1+1=0 1+2=3


0+2=2 2+2=0 2+3=1
0+3=3 3+3=0 3+1=2

ASTAVOLOZZA 1 ASCOL 3 ASCOL 5


a ASCOL non piace 5 come ingresso ASTAVOLOZZA 0

ASDIR <num> SETHEADING (SETH)


Il comando ASDIR determina la direzione di avanzamento della tartaruga. L’argo-
mento <num> indica la direzione prescelta in gradi. Come in un sistema di riferimento
di tipo bussola, 0 gradi corrispondono al Nord (l’alto dello schermo) e, aumentando i
gradi, si ruota la direzione in senso orario.
Diversamente dai comandi DESTRA e SINISTRA, che fanno eseguire alla tartaruga
una rotazione il cui risultato dipende dalla posizione precedente della tartaruga, il
comando ASDIR assegna alla tartaruga una direzione assoluta, ovvero indipendente
dalla direzione che la tartaruga aveva in precedenza.
ASDIR 90

ASPENNA <lista> SETPEN


Il comando ASPENNA assegna alla penna con cui disegna la tartaruga il modo, il
colore e la tavolozza indicati in <lista>.
Il primo dei tre elementi di <lista> specifica il modo (SU, GIU, CANCEPENNA o
INVERPENNA); il secondo elemento è un numero compreso tra 0 e 3 che indica il colore
da usare (vedi ASCOL); il terzo elemento può essere 0 o 1 e indica la “tavolozza” che
si vuole usare (vedi ASTAVOLOZZA).
ASPENNA [SU 2 0] ASPENNA [INVERPENNA 1 0]

ASSCHERMO
“COMANDI TEXTSCREEN (TS)
“MISTO MIXEDSCREEN (MS)
“TARTA FULLSCREEN (FS)
La primitiva ASSCHERM0 determina il modo in cui viene utilizzato lo schermo
grafico. Se Logo è partito utilizzando lo schermo monocromatico, prima di poter
utilizzare lo schermo a colori per eseguire disegni, è necessario dare un comando
ASSCHERMO “TARTA; questo serve infatti ad avvertire Logo dell’esistenza dello
schermo grafico.
Appendice A: Glossario M-LOGO - LOGO IBM pag. 123

Se si cerca di eseguire un comando grafico, appartenente al mondo TARTA, senza


aver dato il comando ASSCHERMO “TARTA, si otterrà il messaggio “a TARTA non
piace questo schermo”.
Se invece non si usa lo schermo monocromatico e Logo è partito dallo schermo
grafico, ASSCHERMO “TARTA riserverà lo schermo intero ai disegni, eliminando le
righe per i comandi. ASSCHERMO “COMANDI è il comando inverso: con esso tutto lo
schermo viene riservato ai comandi e al testo.
ASSCHERMO “MISTO, infine, divide lo schermo in una zona grafica e una zona
testo. Mediante il comando ASRIGHE <num> si possono definire le grandezze
rispettive delle due zone.

ASSCHIA <num> SETSCRUNCH


ASSCHIA determina il rapporto di schiacciamento delle immagini. Serve a compen-
sare gli errori di proporzione dello schermo grafico. Se, per esempio, un programma che
dovrebbe disegnare un cerchio produce un’ellisse sul vostro schermo, allora ASSCHIA
permette di correggere le proporzioni della figura.
L’argomento di ASSCHIA esprime il rapporto di schiacciamento desiderato tra la
distanza verticale fra una riga di punti e la distanza orizzontale fra una colonna di punti.
I valori validi di questo rapporto sono compresi fra 0.1 e 2.5.
I punti grafici possono essere immaginati come dei piccolissimi rettangoli. 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 campo
della tartaruga. Per esempio, con SCHIA uguale a l, i punti vanno da 100 a -99 mentre
con SCHIA uguale a 0.85, che è il valore di schiacciamento al momento della partenza
di Logo, il limite inferiore è -116 e quello superiore 117.
ASSCHIA 1.2

ASSFONDO <num> SETBG


Un comando ASSFONDO assegna allo sfondo dello schermo grafico il colore
corrispondente a <num>. Sono disponibili 16 colori diversi numerati da 0 a 15.
La seguente tabella illustra tutte i colori possibili per ASSFONDO:

0 Nero 1 Blu 2 Verde


3 Azzurro 4 Rosso 5 Viola
6 Marrone 7 Grigio Chiaro 8 Grigio
9 Celeste lO Verde Chiaro 11 Azzurro Chiaro
12 Rosa 13 Viola Chiaro 14 Giallo
15 Bianco
I colori contrassegnati con numeri maggiori di sette sono in realtà delle variazioni di
luminosità. La C presente nel loro nome sta ad indicare una tonalità più luminosa del
colore di base. I colori reali talvolta dipendono però moltissimo dalle caratteristiche del
video utilizzato e dalla regolazione della luminosità.
pag. 124 Manuale Logo

AVANTI (A) <num> FORWARD (FD)


AVANTI fa avanzare la tartaruga, nella direzione in cui si trova, del numero di passi
indicato dall’argomento. Dopo l’esecuzione di un comando AVANTI, la direzione della
tartaruga non viene modilicata. L’argomento di AVANTI deve essere compreso tra
-10000 e 10000 e, se è negativo, la tartaruga, anziché avanzare, indietreggia
PER QUADRATO :LATO
RIPETI 4 [AVANTI :LATO DESTRA 90]
FlNE

CAMPO
Riporta la forma dello spazio nel quale si muove la tartaruga: APERTO, CHIUSO
o CIRCOLARE.Per la descrizione dei tipi di spazio possibili per la tartaruga vedi
ASCAMPO.

CANCEPENNA PENERASE (PE)


Trasforma la penna della tartaruga in una gomma da cancellare. Se lo stato in cui si
trova la penna è CANCEPENNA la tartaruga, muovendosi, cancellerà dallo schermo
tutti i punti che trova sul suo percorso (cancellare un punto significa assegnargli il colore
dello sfondo). Per uscire dallo stato CANCEPENNA si deve assegnare un nuovo stato
alla penna con SU, GIU’ o INVERPENNA.

DESTRA (D) <num> RIGHT (RT)


Fa ruotare la tartaruga in senso orario del numero di gradi indicato dall’argomento.
La direzione della tartaruga che così si ottiene, dipende perciò dalla sua direzione
precedente, oltre che dal numero di gradi fornito come argomento a DESTRA.
PER TRIANGOLO.EQUILATERO :LATO
RIPETI 3 [AVANTI :LATO D 120]
FINE
Notare che si deve dare il comando DESTRA 120, al posto del più intuitivo DESTRA
60, perché l’angolo comandato è relativo alla direzione precedente della tartaruga ed
è quindi il supplementare dell’angolo interno della figura.

DIR HEADING
Il valore di DIR è la direzione assoluta che attualmente ha la tartaruga (vedi ASDIR).
La direzione assoluta della tartaruga è l’angolo formato dall’asse di marcia della
tartaruga e dalla verticale dello schermo. La direzione 0 corrisponde alla parte in alto
dello schermo, la direzione 180 al basso e la direzione 90 alla destra.
ASDIR 90 DESTRA 90 SINISTRA 45
STAMPA DIR 135
Appendice A: Glossario M-LOGO - LOGO IBM pag. 125

DOVE POS
DOVE è una funzione il cui valore è una lista contenente due coordinate (una ascissa
e una ordinata) del punto in cui si trova la tartaruga.
AS “POSIZIONE DOVE MOSTRA DOVE
[53 38] :POSIZIONE [53 38]

GIU PENDOWN (PD)


Il comando GIU fa abbassare la penna della tartaruga sul disegno, in modo che, in
seguito, la tartaruga, spostandosi, lascerà una traccia del suo passaggio.

INDIETRO (I) <num> BACK (BK)


Fa indietreggiare la tartaruga, nella direzione in cui si trova, del numero di passi
indicato dall’argomento.
L’argomento di INDIETRO deve essere un numero compreso tra -10000 e 10000.
Se l’argomento è negativo, la tartaruga, anziché indietreggiare, avanza.
INDIETRO 45 INDIETRO -45

INVERPENNA PENREVERSE (PX)


Trasforma il modo di funzionare della penna della tartaruga. Dopo un comando
INVERPENNA la tartaruga invertirà il colore dei punti su cui passa: se il punto ha il
colore dello sfondo otterrà il colore della penna, se invece il punto ha un colore diverso
da quello dello sfondo, viene cancellato.
Cambiando lo stato della penna, con uno dei comandi SU, CANCEPENNA o GIU,
1'ordine INVERPENNA viene annullato.

MOSTARTA (MT) SHOWTURTLE (ST)


Il comando MOSTARTA rende visibile la tartaruga. Al momento dell’ ingresso nel
Logo la tartaruga è in posizione visibile, ma non appare sullo schermo perchè questo è
interamente riservato al testo (Vedi ASSCHERMO).
Per utilizzare la tartaruga si deve indicare al Logo che esiste uno schermo grafico. Si
può fornire questa indicazione dando i comandi ASSCHERMO “TARTA, oppure
ASSCHERMO “MISTO.

NASTARTA (NT) HIDETURTLE (HT)


Rende la tartaruga invisibile. Anche se invisibile, la tartaruga accetta tutti i comandi
normalmente; è quindi possibile disegnare con la tartaruga anche senza farla mai
comparire sullo schermo.
pag. 126 Manuale Logo

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 terzo
indica la tavolozza selezionata
MOSTRA PENNA [SU 1 0]

PULISCI CLEAN
Cancella tutti i disegni dallo schermo senza modificare la posizione della tartaruga.
Si può usare PULISCI per realizzare delle animazioni o delle procedure in cui si vuol
rappresentare un oggetto in movimento.
Si può infatti disegnare 1'oggetto, spostare la tartaruga, cancellarlo e ridisegnarlo
senza che la tartaruga debba ogni volta essere riposizionata, come accadrebbe usando il
comando PULISCISCHERMO.
PULISCI può anche servire per pulire la zona grafica prima di caricare un disegno da
dischetto con RECUPERA_DIS.

PULISCISCHERMO (PS) CLEARSCREEN (CS)

Cancella tutti i disegni dallo schermo e riporta la tartaruga al centro dello schermo.
Questo comando equivale alla sequenza di comandi PULISCI TANA.

PULISCITESTO (PT) CLEARTEXT (CT)


Il comando PULISCITESTO cancella le scritte presenti nella parte di schermo
riservata ai comandi. Le scritte appartenenti al foglio o quelle che fanno parte dei disegni
restano invariate.

RIEMPI FILL
Colora la figura all’ interno della quale si trova la tartaruga con il colore della penna.
Se la figura non é chiusa, colora tutto lo sfondo.
Per usare RIEMPI, prima di dare il comando si deve portare la tartaruga all’interno
della figura . Nel far ciò è prudente dare il comando SU per evitare che la traccia lasciata
entrando sia interpretata come un lato della figura stessa.
Provare il comando con la seguente procedura:
PER OUADRATO.PIENO :A
NASTARTA
RIPETI 4 [A :A D 90]
SU D 45 A :A / 2
RIEMPI
FINE
Appendice A: Glossario M-LOGO - LOGO IBM pag. 127

SCHIA . SCRUNCH
Il valore di SCHIA è il rapporto di schiacciamento (vedi ASSCHIA ) della
immagine. SCHIA può servire per conoscere, all’interno di una procedura, di quanti
punti all’incirca è composto il campo della tartaruga. Infatti mentre la dimensione
orizzontale è sempre di 320 punti quella verticale varia leggermente al variare del fattore
di schiacciamento (é uguale a 200 per SCHIA = 1).

SCRIPUNTO <lista> DOT


Colora il punto, le cui coordinate sono i due numeri che compongono la lista, con il
colore di penna corrente.
SCRIPUNTO [45 78]

SFONDO BACKGRUOUND (BK)


Il valore di SFONDO è il codice del colore assegnato allo schermo che può variare da
0 a15. Per una più completa spiegazione del funzionamento del meccanismo del colore
vedi anche ASTAVOLOZZA, ASSFONDO e ASCOL. Per visualizzare la gamma dei
colori si può utilizzare la procedura seguente.
PER RUOTACOLORI
ASSFONDO 0
RIPETI 15 [ASPETTA 50 ASSFONDO SFONDO + 1]
FINE

SINISTRA (S) <num> LEFT (LT)


Fa ruotare la tartaruga su se stessa in senso antiorario del numero di gradi indicato
dall’argomento. Dopo 1'esecuzione di questo ordine la direzione assunta dalla tartaruga
dipenderà anche dalla direzione precedente.

SU PENUP (PU)
Fa sollevare la penna della tartaruga. Se la penna è in posizione alzata, durante i suoi
spostamenti la tartaruga non scrive sullo schermo. La procedura seguente serve per
visualizzare gli effetti di questo comando
PER LINEASPEZZATA :B
RIPETI 8 [ SU A :B / 16 GIU A :B /16]
FINE

VATANA (TANA) HOME


Porta la tartaruga al centro dello schermo nella direzione 0. Serve a condurla nella
posizione di coordinate 0,0 prima di iniziare un disegno.
pag. 128 Manuale Logo

VAX <num> SETX


Ordina alla tartaruga di spostarsi orizzontalmente fino al punto di ascissa pari al
numero fornito come argomento.

VAXY <lista> SETXY


Ordina alla tartaruga di andare alla posizione specificata dai due numeri che
compongono la lista. (le coordinate x e y del punto). Esempio VAXY [20 50]

VAY <num> SETY


Fa spostare la tartaruga verticalmente fino a raggiungere il punto di coordinata
verticale uguale al suo argomento.

VERSO <num> <num> TOWARDS


Il valore della funzione VERSO è la direzione assoluta (vedi ASDIR) che si deve
assegnare alla tartaruga perché essa si trovi pronta ad avanzare verso il punto specificato
dalle coordinate fornite come argomenti.

XCOR XCOR
La funzione XCOR indica l’ascissa della posizione della tartaruga.

YCOR YCOR
La funzione YCOR segnala l’ordinata della posizione della tartaruga.

NOTE
1. Le forme abbreviate delle primitive, se esistono, sono riportate tra parentesi.
2. Gli argomenti dei comandi sono riportati assai spesso in forma abbreviata tra i segni
< e > . I significati delle abbreviazioni sono : num = numero, par = parola,
ogg = oggetto, arch = archivio.
3. Le primitive scritte in corsivo, a destra di quelle in grassetto su ogni riga di
intestazione, sono le parole corrispondenti del Logo-IBM nella versione in inglese.
4. Il contrassegno # indica che in quella istruzione va inserito il numero di argomenti
specificato. Se si vuole usare un numero maggiore, o minore, di argomenti, l’intera
istruzione va scritta entro parentesi tonde
Appendice A: Glossario M-LOGO - LOGO IBM pag. 129

NUMERI E OPERAZIONI

ACASO <num> RANDOM


Funzione il cui valore è un numero scelto a caso tra i numeri interi non negativi
minori della parte intera dell’argomento. Esempio: RIPETI 4 [STAMPA A CASO 5678]

ARCTAN <num> ARCTAN


Il valore della funzione ARCTAN è l’arcotangente del suo argomento espressa in
gradi sessagesimali.

ARRO <num>
Questa funzione fornisce il numero intero ottenuto arrotondando il valore del suo
argomento. L’arrotondamento si effettua all’intero più vicino.
Esempi: ARRO 3.4999 = 3 ; ARRO 3.50001 = 4

ASCIFRE <num> SETPRECISION


Determina il massimo numero di cifre significative del risultato di ogni operazione
aritmetica e quindi condiziona il livello di precisione ottenibile nei calcoli.
L’argomento di ASCIFRE può variare da 1 a 100 per le sole operazioni aritmetiche
elementari. Se si utilizzano funzioni trascendenti deve essere invece limitato a 32.

ASSO <num>
Fornisce il valore assoluto del suo argomento. Esempi: ASSO 58 - 20 = 38 ; ASSO
44 - 51 = 7

CIFRE
Indica il numero delle cifre significative utilizzato nei calcoli numerici. Esempio
ASCIFRE 7 ; CIFRE 7

COS <num> COS


Fornisce come valore il coseno dell’argomento.
pag. 130 Manuale Logo

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 va
inserito uno spazio prima del sottraendo. Se non si osserva questa regola il Logo legge
il secondo argomento numerico semplicemente come numero negativo.
Esempi: 23 * 3 -4 = 69 -4 ; 23 * 3 - 4 = 65

DIVISIONE <num>
DIVISIONE è l’operatore di divisione prefisso equivalente al segno di divisione “/”
comunemente usato in forma infissa. Esempio: DIVISIONE 32 5 = 32 / 5 = 6.4

GRADI <num>
Questa funzione converte in gradi il numero dei radianti forniti dall’argomento.
Esempio: GRADI PI = 180

INT <num> INT


Il valore fornito da questa funzione è uguale alla parte intera del numero fornito come
argomento. Esempio: INT 5,46 = 5

LOG10 <num>
Questa funzione restituisce il logaritmo in base dieci del suo argomento.
Esempio: LOG10 100 = 2

PI
Il valore di PI è pi greco con una precisione pari al numero delle cifre significative
stabilito con ASCIFRE (max. 32).
Esempio: ASCIFRE 10 PI = 3.141592654

POTENZA <num> <num>


Questa funzione riporta il primo argomento, considerato come base, elevato alla
potenza specificata del secondo argomento, considerato come esponente.
Esempio: POTENZA 4 3 = 4 3 = 64
Appendice A: Glossario M-LOGO - LOGO IBM pag. 131

PRODOTTO <num> <num> PRODUCT


# Il valore riportato da questa funzione è il prodotto dei suoi due argomenti numerici.
Con questa funzione si possono anche utilizzare più di due argomenti, ma in questo caso
l’istruzione va scritta tra parentesi tonde.
Esempi: PRODOTTO 12 4 = 48 ; (PRODOTTO 3 5 10) = 150

QUOZIENTE <num> <num> QUOTIENT


Il valore restituito da questa funzione è la parte intera del quoziente dei suoi
argomenti. Es.: QUOZIENTE 12 5 = 2. Usando i due argomenti con l’operatore
DIVISIONE, si avrebbe invece: DIVISIONE 12 5 = 12 / 5 = 2.4

RADIANTI <num>
Converte i gradi in radianti. Per questa conversione si utilizzi la seguente procedura:
PER GRADI.IN.RADIANTI :A
RIPORTA :A / 180 * PI
FINE
Ecco l’esempio di una sua applicazione: GRADI.IN.RADIANTI 180 = 3.1415926

RADQ <num> SQRT


Il valore restituito da questa funzione è la radice quadrata del suo argomento.
Esempio: RADQ 64 = 8

RESTO <num> <num> REMAINDER


Questa funzione genera, come risultato, il resto della divisione eseguita tra i numeri
fornitegli come argomenti.
Esempi: RESTO 34 5 = 4 ; resto 56 8 = 0

RIACASO RERANDOM
Azzera la sequenza di numeri pseudo-casuali utilizzati da ACASO. RIACASO
permette, cioè, di utilizzare più volte la stessa sequenza di numeri pseudo-casuali.

SEN <num> SIN


Il valore della funzione SEN è il seno trigonometrico del suo argomento.
pag. 132 Manuale Logo

SOMMA <num> <num> SUM


# Il valore di questa funzione è la somma dei suoi due argomenti. Con più di due
argomenti si debbono usare le parentesi tonde.

TAN
Il valore della funzione TAN è la tangente del suo argomento espresso in gradi
sessagesimali.
Esempio: TAN 56 = 1.4825602

PAROLE E FRASI

CONTA <par> / <lista> COUNT


Questa funzione riporta il numero di oggetti che costituiscono il suo argomento.
L’argomento può essere una lista o una parola: se è una lista, il valore di CONTA è
uguale al numero di elementi della lista; quando invece CONTA è applicato ad una
parola, il suo valore è il numero di caratteri che costituiscono la parola stessa.
STAMPA CONTA [CANE SERPENTE] 2
STAMPA CONTA “ALFABETO 8

ELE <num> <par> / <lista> ITEM


La primitiva ELE è una funzione che restituisce in uscita quell’elemento del suo
secondo argomento il cui numero d’ordine è indicato dal primo argomento.
Il secondo argomento può essere una parola, oppure una lista. Se è una parola, ELE
frornirà un carattere. Se il secondo argomento di ELE è invece una lista, ELE restituirà
una parola o una lista.
Se il valore del primo argomento di ELE è maggiore del numero di elementi del
secondo argomento, si otterrà il messaggio d’errore: “ ..... non ha abbastanza elementi”.
Esempi:
STAMPA ELE 2 “CANE A
MOSTRA ELE 3 [CANE GATTO MUCCA GALLINA] MUCCA

FRASE <ogg> <ogg> SENTENCE


# Il valore fornito da questa primitiva è una lista costituita dagli argomenti di
FRASE: a differenza di LISTA però, se un argomento è esso stesso una lista, nella lista
che FRASE fornisce come valore appariranno gli elementi di tale lista e non la lista
stessa. FRASE fornisce cioè una lista formata dai suoi argomenti che non sono liste e
dagli elementi delle liste fornite come argomenti.
Per difetto FRASE richiede due argomenti; se questi sono in numero diverso, si
deve racchiudere tra parentesi tonde FRASE e tutti i suoi argomenti. Esempi:
Appendice A: Glossario M-LOGO - LOGO IBM pag. 133

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 è la
CONSOLE, l’esecuzione della primitiva non termina finché non viene premuto un tasto.
Il carattere corrispondente al tasto premuto non apparirà sullo schermo.
Provare questo comando con la seguente procedura che consente di disegnare con la
tartaruga premendo più volte i tasti F , R e L . La procedura va interrotta premendo i tasti
<CTRL PAUSA>.
PER DISEGNA
AS “CARATTERE LEGGICAR
SE :CARATTERE = “A [A 5]
SE :CARATTERE = “D [D 10]
SE :CARATTERE = “S [S 10]
DISEGNA
FINE

LEGGILISTA (LL) READLIST


LEGGILISTA è una funzione che fornisce come valore una lista letta dalla tastiera
o dal dispositivo di lettura attivo in quel momento.
Gli elementi della lista riportata sono le parole e le liste che Logo incontra nella
lettura fino al primo delimitatore di linea (<RETURN> nel caso della CONSOLE) che
non sia contenuto in una sottolista, o fino alla fine dell’ archivio.
pag. 134 Manuale Logo

AS “RISPOSTA LEGGILISTA
IO SONO LA RISPOSTA
Digitando STAMPA :RISPOSTA Logo risponde con: IO SONO LA RISPOSTA

LEGGIPAROLA (LP) READWORD (RW)


Questa primitiva è una funzione il cui valore è la prima parola di una linea letta dall’
archivio o dispositivo di lettura corrente; il resto della linea, se presente, viene scartato.
Le parentesi quadre, inoltre, vengono saltate.
Se la linea non contiene alcuna parola, LEGGIPAROLA riporta la parola vuota.
Per leggere interamente una linea, si possono usare LEGGILISTA e LEGGISTRINGA.
Quando Logo deve valutare LEGGIPAROLA e il dispositivo di lettura corrente è la
CONSOLE, l’esecuzione della primitiva non termina finché non viene premuto il tasto
<RETURN>.
AS “X LEGGIPAROLA
PAROLONE
Digitando :X Logo risponde con la scritta PAROLONE
STAMPA LEGGIPAROLA
Digitando: IO SONO UNA PAROLA Logo risponde con la scritta: IO

LISTA <ogg> <ogg> LIST


# Il valore della funzione LISTA è una lista formata dai suoi argomenti, che possono
essere parole o liste essi stessi.
Per difetto LISTA richiede due argomenti; se questi sono in numero diverso, si deve
racchiudere tra parentesi tonde LISTA e tutti i suoi argomenti. LISTA crea anche liste
di una sola parola. Se i suoi argomenti sono liste produce una lista di liste, contrariamen-
te a FRASE che produrrebhe una lista avente come elementi quelli delle liste fornite
come argomenti.
AS “ANIMALI LISTA “BUE [CANE SERPENTE TORO]
MOSTRA :ANIMALI [BUE [CANE SERPENTE TORO]]
AS “UMORI (LISTA “SERIO “BUFFONE “RIDICOLO)
MOSTRA :UMORI [SERIO BUFFONE RIDICOLO]

MENPRI <par> / <lista> BUTFIRST (BF)


Il valore della funzione MENPRI è il suo argomento privato del suo primo elemento.
Se il suo argomento è una parola, il valore sarà una parola, nel caso sia una lista, sarà
una lista.
MOSTRA MENPRI [CANE SERPENTE CASA]
[SERPENTE CASA]
MOSTRA MENPRI [[ALFA GAMMA] [A B C] [4 5 78]]
[[A B C] [4 5 78]]
MOSTRA MENPRI “MASTRO
ASTRO
Appendice A: Glossario M-LOGO - LOGO IBM pag. 135

MENULT <par> / <lista> BUTLAST (BL)


Il valore della funzione MENULT è il suo argomento privato del suo ultimo elemento.
MOSTRA MENULT [CANE SERPENTE CASA]
[CANE SERPENTE]
MOSTRA MENULT [[ALFA GAMMA] [A B C] [4 5 78]]
[[ALFA GAMMA [A B C]]
MOSTRA MENULT “MAI
MA

MOSTRA <ogg> SHOW


Scrive sullo schermo uno o più oggetti che possono essere parole o liste, andando a
capo dopo aver completato 1' ordine. Contrariamente a SCRIVI e STAMPA se 1’oggetto
è una lista, MOSTRA lo scrive fra parentesi quadre.
MOSTRA “CAVOLO CAVOLO
MOSTRA [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, si
deve racchiudere PAROLA con tutti i suoi argomenti tra parentesi tonde.
MOSTRA PAROLA “PESCE “CANE
PESCECANE
MOSTRA (PAROLA “TRI “ANGOLO “SCALENO)
TRIANGOLOSCALENO

PRI <par> / <lista> FIRST


Riporta il primo elemento del suo argomento. Se l’argomento è una lista riporta il suo
primo elemento, se è una parola il primo carattere.
MOSTRA PRI [CANE SERPENTE CASA] CANE
MOSTRA 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 uscita
corrente senza farlo seguire da un delimitatore di linea.
Per scrivere più di un oggetto si devono racchiudere primitiva e argomenti fra
parentesi tonde; in questo caso gli oggetti non saranno separati da uno spazio.
Se l' oggetto è una lista verrà scritto senza parentesi quadre.
SCRIVI “TAVOLO TAVOLO
SCRIVI [SEDIA TAVOLO CUCINA] SCRIVI ”AGAS
SEDIA TAVOLO CUCINAAGAS
pag. 136 Manuale Logo

STAMPA (ST) <ogg> PRINT (PR)


# STAMPA scrive uno o più oggetti, che possono essere parole o liste, sullo schermo
o sul dispositivo di uscita corrente.
Dopo aver scritto gli oggetti indicati, STAMPA scrive un delimitatore di linea. Sullo
schermo questo ha 1'effetto di portare il cursore all’ inizio della riga successiva.
Se gli oggetti da scrivere sono più di uno, primitiva e argomenti devono essere
racchiusi fra parentesi tonde. In questo caso saranno scritti sulla stessa riga ma separati
da uno spazio.
STAMPA “CAVOLO STAMPA “MELONE
CAVOLO
MELONE
STAMPA [SEDIA TAVOLO CUCINA]
SEDIA TAVOLO CUCINA
(STAMPA “MELONE “ANGURIA [GRANDE ABBUFFATA])
MELONE ANGURIA GRANDE ABBUFFATA

ULT <par> / <lista> LAST


Riporta 1' ultimo elemento del suo argomento. Se 1' argomento è una lista, riporta
1’ultimo elemento della lista. Se è una parola, stampa il suo ultimo carattere.
STAMPA ULT [CANE SERPENTE CASA]
CASA
STAMPA ULT [[ALFA GAMMA] [A B C] [4 5 78]]
4 5 78
STAMPA ULT “UOMO
O

PROCEDURE E VARIABILI

AS <par> <ogg> MAKE


Questa prirnitiva assegna il valore <ogg> alla variabile identificata da <par>. <ogg>
può rappresentare qualunque oggetto Logo, e può anche derivare dalla valutazione di una
espressione. La variabile assegnata con AS ha valore “globale”: viene memorizzata nella
memoria di lavoro e riguarda tutte le procedure in essa presenti. Esempi:
AS “ ALBERO “MELO
:ALBERO MELO
AS “CASE (7 * 4) + 6
COSA “CASE 34
AS “ANIMALI [BUE TORO MUCCA]
MOSTRA :ANIMALI [BUE TORO MUCCA]
Appendice A: Glossario M-LOGO - LOGO IBM pag. 137

CANCEFOGLIO
Cancella l’intero contenuto del foglio. Dopo questo comando il foglio non conterrà
più alcunchè e il contenuto precedente sarà perduto. Prima di utilizzare il foglio, per
editare una nuova procedura, è consigliabile ripulirlo dal precedente contenuto.
La dimensione del foglio può essere prescelta prima di entrare in Logo, con il
comando di sistema operativo SET FOGLlO=<num> che permette di scegliere il numero
di caratteri massimo e quindi permette di adattare la dimensione del foglio alle
esigenze.

CANCEPROC <par> / lista> ERASE (ER)


Cancella dallo spazio di lavoro la procedura i cui nome è <par>, oppure tutte le
procedure cui nomi sono contenuti in <lista>. Esempi:
CANCEPROC “CANE Cancella la procedura CANE
CANCEPROC [CANE TOPO] Cancella le procedure CANE e TOPO.

CANCEPROC_IN (<par> / <lista>) ERALL


Questa primitiva permette di cancellare dallo spazio di lavoro un insieme di proce-
dure. Se CANCEPROC_IN non è seguita da alcun argomento, verranno eliminate tutte
le procedure presenti nello spazio di lavoro, escluse quelle contenute nei pacchetti
nascosti.
E’ possibile però cancellare soltanto le procedure di un determinato pacchetto o
insieme di pacchetti. Nel primo caso CANCEPROC_IN sarà seguito dal nome del
pacchetto di cui si vogliono cancellare le procedure, nel secondo caso da una lista
contenente tutti i nomi dei pacchetti le cui procedure si vogliono eliminare dallo spazio
di lavoro.
La presenza di un argomento opzionale impone alcune precauzioni: non si devono
scrivere altre istruzioni sulla stessa riga dopo CANCEPROC_IN. Logo infatti le inter-
preterebbe come argomento di CANCEPROC_IN. Esempio:
STlTOLl
PER PROCEDURA1 PER PROCEDURA2
PER PROCEIDURA3 PER ALTREPROCEDURE
CANCEPROC_IN STITOLI
A questo punto sul video non appare alcuna scritta poichè le predette procedure sono state
tutte cancellate

CANCETUTTO_IN (<par> / <lista>)


Questa primitiva, oltre a cancellare tutte le procedure, cancella anche le variabili
globali memorizzate nello spazio di lavoro mediante il comando AS. Soltanto quest’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, sia
le variabili sono state tutte cancellate.
pag. 138 Manuale Logo

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 la
primitiva COSA può essere sostituita dai due punti “:” : Così anziché COSA “X possiamo
scrivere il più breve :X. In quest’ultimo caso si deve prestare attenzione a non mettere
spazi fra i due punti e la parola che segue.
Se però 1' argomento di COSA non è una parola, ma una funzione che riporta una
parola come risultato, non si possono usare i due punti. Logo cercherebbe infatti di
valutare il titolo della funzione come se si trattasse di una variabile, anziché eseguirla
per ottenerne il valore, che vogliamo sia attribuito come argomento a COSA. Esempi:
AS “CASA “GRATTACIELO COSA “CASA GRATTACIELO
AS “NUMERO “DATO AS “DATO 34521 COSA “NUMERO DATO
COSA COSA “NUMERO 34521 COSA “DATO 34521 COSA :NUMERO 34521

EDITA <par> / <lista> EDIT (ED)


Questa primitiva consente di entrare nel foglio, dove è possibile modificare e
correggere procedure definite in precedenza e presenti nello spazio di lavoro. Per far ciò
occorre digitare EDITA “nomeprocedura. Entrati così nel foglio di edizione occorre
premere il tasto <Enter> e si entra così nella zona in alto del foglio dove è riportata la
procedura da modificare. Dopo averla modificata, per uscire dal foglio occorre premere
il tasto “Escape> e subito dopo in simultanea i tasti <CTRL F4>. Si ritorna così
nell’ambiente di lavoro del Logo.

LOCALE <par> / <lista> LOCAL


Questa primitiva permette di definire una variabile come “locale” in riferimento ad
una singola procedura oppure ad un blocco di procedure, ossia viene attribuita esclusi-
vamente a quella procedura o a quel blocco.
Questa nozione sottintende il concetto di “ambiente” di una variabile. L’ambiente
di una variabile è l’insieme di procedure e istruzioni nelle quali è possibile riferirsi a tale
variabile, come oggetto identificato in modo univoco, avente un determinato valore che
si può utilizzare e modificare.
Quando una variabile viene definita al livello comandi del Logo mediante il comando
AS (assegnazione globale della variabile), essa è accessibile sia a livello comandi, sia a
quello di tutte le procedure; e il suo ambiente coincide perciò con lo spazio di lavoro.
Se invece, per esernpio la parola AZ viene definita come variabile “locale” nella
procedura PINCOPALLINO, ossia se PINCOPALLINO contiene una istruzione del tipo
LOCALE “AZ, allora la parola AZ ed il suo valore sono accessibili soltanto nella
procedura PINCOPALLINO, nelle procedure richiamate dalla procedura
PINCOPALLINO, nelle procedure richiamate da queste ultime, e così via.
Al di sopra di PINCOPALLINO, AZ è sconosciuta, e lo stesso nome “AZ si può usare
per identificare un altra variabile, che resta ben distinta dalla AZ di PINCOPALLINO.
Il valore di quest’ultima può essere usato e modificato soltanto da istruzioni che fanno
parte di una delle procedure appartenenti al suo ambiente.
Poter dichiarare una variabile come locale riferita a un certo blocco di procedure,
impedendo alle altre procedure di modificarne il valore, sopprime la fonte di molti
errori. Permette infatti di considerare le procedure come delle “scatole nere” che
eseguono delle operazioni sui loro argomenti senza influenzare in alcun modo il resto del
programma.
Appendice A: Glossario M-LOGO - LOGO IBM pag. 139

I parametri di una procedura sono sempre parole locali; il comando LOCALE si


utilizza quindi solo per le parole che non vengono passate come parametri o per quelle
create con i comandi AS e CHIAMA all’ intemo della procedura o dalle procedure da essa
richiamate.
L’argomento di LOCALE è una parola, oppure, se si vogliono dichiarare come locali
più parole, una lista di tali parole. Esempi:
LOCALE “ALBERO rende locale la parola ALBERO.
LOCALE [CASA BOSCO] rende locali le parole CASA e BOSCO.

MOSFOGLIO
Il comando rende visibile il foglio del Logo, cioè 1' ambiente dedicato alla manipo-
lazione dei testi delle procedure. Questo comando lavora in modo molto simile al
comando EDITA.

NASFOGLIO
Il comando NASFOGLIO nasconde il foglio senza alterare però in alcun modo il suo
contenuto.

PER <par> TO
Apre la scrittura del corpo di una procedura. Effettuata l’intera operazione la si deve
chiudere battendo la parola FINE.
Il primo argomento di PER diventerà il nome della procedura. Dopo il primo
argomento si possono scrivere altre parole precedute dal due punti, che diventeranno le
denominazioni delle variabili della procedura, come illustrato nell’esempio.
La primitiva PER ha una caratteristica particolare: essa vuole sempre una parola
letterale come argomento e accetta come tale anche una parola priva delle virgolette.
Sono corretti per esempio sia PER “CASA che PER CASA. Esempio:
PER CASA :LATO PER PARETE :LATO
PARETE RIPETI 4[A :LATO D 90]
SALIRE FINE
TETTO
FlNE

PER TETTO :LATO PER SALIRE :LATO


RIPETI 3[A :LATO D 120] A :LATO D 30
FINE FINE

SPROC <par> PO
Scrive il testo della procedura indicata come argomento. Esempio:
Dopo aver definito la procedura TETTO :LATO, digitando SPROC “TETTO il Logo
mostrerà sul video il testo della procedura stessa, ossia:
PER TETTO :LATO
RIPETI 3[A :LATO D 120]
FINE
pag. 140 Manuale Logo

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, dovranno
essere invocati sotto forma di lista.

ARCHIVI E PERIFERICHE

ASDISCO <par> SETDISK


Seleziona l’unità disco con la quale si vuole lavorare. Indica cioè al Logo l’unità disco
sulla quale cercare gli archivi che verranno nominati in seguito, oppure scrivere i nuovi.
Alla partenza di Logo 1’unità selezionata è quella che lo era a livello di sistema
operativo.
ASDISCO “A ARCHIVIO? “PROVA VERO
ASDlSCO “C ARCHIVlO? “PROVA FALSO
Logo conferma che l’archivio “PROVA è presente nell’unità a disco “A, ma non in “C.

CANCEARC <nome archivio> ERASEFILE


Cancella dal disco l’archivio indicato.Gli archivi cancellati non sono più recuperabili.
In altre parole gli effetti di CANCEARO sono irreversibili. Bisogna quindi fare
attenzione a non cancellare archivi ancora necessan.
CAT [GIACOMO MLOGO.EXE MIEIDATI]
CANCEARC “GIACOMO
CAT [MLOGO.EXE MIEIDATI]

CATALOGO (CAT) (<nome archivio>) DIR


Questa funzione fornisce una lista di tutti gli archivi presenti sul disco selezionato
(vedi ASDlSCO).
La sintassi usata nel comando CATALOGO è simile a quella del comando DIR del
DOS e svolge le stesse funzioni. Se CATALOGO non è seguito da alcun argomento, verrà
fornita una lista contenente tutti gli archivi presenti sul disco già scelto come unità per
archiviare, o estrarre archivi.
Appendice A: Glossario M-LOGO - LOGO IBM pag. 141

L’ argomento di CATALOGO permette di selezionare gli archivi che andranno a far


parte della lista. Se è presente un argomento, solo gli archivi il cui nome è uguale alla
parola fornita saranno inclusi nella lista.
E’ possibile ottenere un catalogo parziale degli archivi includendo nella parola
fornita come argomento i caratteri e ?. Un nome di archivio è considerato uguale alla
parola, se contiene un qualsiasi carattere al posto del punto interrogativo e qualsiasi
carattere o sequenza di caratteri al posto dell’ asterisco.
Inoltre 1' argomento di CATALOGO può anche contenere 1' indicazione dell’ unità
disco da usare: basterà infatti far cominciare la parola con la lettera che indica 1' unità
disco seguita dai due punti.
Ricordiamo che i due punti e 1' asterisco sono caratteri autodelimitanti, e devono
quindi essere scritti preceduti dal carattere”\”.
MOSTRA CATALOGO
[DATI.ML LOGOl.ML LOGOTEST CORREDO.ML ARCH.MIO]
MOSTRA CATALOGO “A\:\*.ML
[CORREDO.ML DATI.ML LOGOl.ML]

CONSERVA <nome archivio> (<nom>) SAVE


Scrive gli oggetti (procedure e parole) presenti in memoria sul dispositivo specificato
dal pnimo argomento.
Il secondo arromento, facoltativo, permette di scrivere solo il contenuto di uno o più
pacchetti. Se i pacchetti che si vogliono conservare sono più d’uno, i loro nomi vanno
forniti sotto forma di lista.
CONSERVA “MlEPROC Scrive il contenuto dello spazio di lavoro sul file MIEPROC
CONSERVA “STAMPANTE Scrive il contenuto dello spazio di lavoro sulla stampante.
CONSERVA “XX “TAVOLO Scrive il contenuto del pacch. TAVOLO sull’archivio XX.

CONSERVA_DIS <nome archivio> SAVEPIC


Salva l’immagine attualmente presente sullo schermo grafico nell’ archivio indicato
dall’ argomento. Le immagini conservate possono in un secondo tempo essere recuperate
con il comando RECUPERA_DlS.
E’ anche possibile usare CONSERVA_DIS per stampare il disegno con la stampante
grafica: se come archivio si indica la “STAMPANTE, questo comando copia il contenuto
dello schermo grafico sulla stampante.
CONSERVA_DIS “STAMPANTE funziona però solo se è stato eseguito il comando
GRAPHICS a livello di sistema operativo. Questo comando carica in memoria le routines
di pilotaggio della stampante grafica.Poiché GRAPHICS occupa uno spazio equivalente
a circa 160 nodi si è preferito renderne il caricamento facoltativo.

RECUPERA <nome archivio> (<par>) LOAD


Permette di recuperare valori e procedure scritti in un archivio. RECUPERA legge le
istruzioni contenute nell’ archivio e le esegue come se fossero state battute da tastiera.
Le procedure dovranno quindi essere scritte negli archivi nella forma PER ..... ......
FINE e le variabili come AS “NOME <oggetto>. Il comando CONSERVA esegue
automaticamente questa operazione sugli oggetti in memoria. Il secondo argomento,
facoltativo, permette di formare un pacchetto con gli oggetti letti.
pag. 142 Manuale Logo

Una forma particolare del comando RECUPERA “FOGLIO permette di leggere le


procedure scritte o corrette usando il foglio.
RECUPERA “MIEPROC Carica in memoria il contenuto dell’ archivio MIEPROC.

RECUPERA_DIS <nome archivio> LOADPIC


Recupera 1' immagine conservata nell’ archivio il cui nome viene fornito come
argomento e la disegna sullo schermo.
L’immagine recuperata si sovrappone ad eventuali immagini presenti sullo schermo,
se si vuole evitare questo si deve dare il comando PULISCI prima di RECUPERA_DIS.
I disegni devono esser stati salvati con il comando CONSERVA_DIS.

COMANDI DI CONTROLLO

AMB <valore logico> <valore logico>


La funzione logica AMB ha valore VERO se tutti i suoi argomenti sono veri. In
caso contrario, e cioè se almeno uno degli argomenti è falso, AMB ha valore FALSO.
Se gli argomenti di AMB sono più di due si dovrà racchiudere primitiva ed argomenti
fra parentesi tonde.
AMB si usa generalmente in congiunzione con le primitive VERIFICA o SE per
realizzare dei test multipli.

ASMODO <num>
La primitiva ASMODO permette di stabilIre lo stato del controllore del video. Il
controllore video è quella pane del calcolatore che stabilisce la modalità di presentazione
degli oggetti sul video. ASMODO permette, ad esempio, di ottenere delle righe di 80
caratteri sullo schermo colore o testi di più di quattro colori diversi.
Le modalità possibili sono sei e sono rappresentate dai numeri da 0 a 4, per quelle
corrispondenti allo schermo colore, e 7 per la modalità relativa allo schermo
monocromatico. L’ unica modalità grafica, cioè, in cui è possibile disegnare, è la
modalità 4.
Poiché le modalità da 0 a 4 sono applicabili solo allo schermo grafico, mentre la
modalità 7 si può applicare solo allo schermo monocromatico. Si deve prestare attenzio-
ne a non tentare di assegnare al controllore video una modalità relativa ad uno schermo
inesistente, ad esempio ASMODO 7, quando non si possiede uno schermo monocromatico.
Un errore di questo tipo rischia addirittura di far si che Logo “si perda” nella ricerca
di uno schermo inesistente rifiutando qualsiasi ulteriore comando e costringa a spegnere
la macchina per riacquistare il controllo.
Gli schermi grafici non a colori, come per esempio quello dell’ Olivetti M 24, sono
considerati analogi agli schermi a colori e non possono funzionare in modalità 7.
Alla partenza Logo è nella modalità 4, se a livello di sistema operativo si sta usando
lo schermo a colori. E’ in modo 7, se si sta invece usando lo schermo monocromatico.
Appendice A: Glossario M-LOGO - LOGO IBM pag. 143

Ecco le caratteristiche delle sei modalità:


MODO 0: Modalità testo, in bianco e nero, 40 colonne.
MODO 1: Modalità testo, a colori, 40 colonne.
MODO 2: Modalità testo, in bianco e nero, 80 colonne.
MODO 3: Modalità testo, a colori, 80 colonne.
MODO 4: Modalità grafica 320 x 200 punti e 4 colori.
MODO 7: Modalità testo in bianco e nero, 25 righe per 80 colonne su schermo monocromatico.

ASPETTA <numero>
Il comando ASPETTA arresta i esecuzione del programma per la durata indicata dal
suo argomento. La durata è espressa in cicli di sistema, ognuno dei quali dura circa 50
millesimi di secondo.
L’ esempio seguente produrrà una pausa di circa 10 secondi prima di far ricomparire
il “?” ed aspettare il comando successivo.
ASPETTA 200

BREAK
Interrompe 1' esecuzione del programma e riporta il Logo al livello comandi.
Equivale a premere la combinazione di tasti <CTRL> <PAUSA>.
La differenza fra il comando BREAK ed il comando STOP è molto importante: STOP
riporta il controllo dalla procedura in corso di esecuzione alla procedura che ha chiamato
(che generalmente non è il livello comandi), mentre BREAK riporta sempre al livello
comandi.

CIAO . DOS
Questa primitiva provoca 1' uscita dal Logo e il ritomo al livello comandi del
sistema operativo.
Lasciando il Logo il calcolatore cercherà 1' interprete dei comandi del sistema
operativo (archivio COMMAND.COM) che dovrà quindi essere sul dischetto che si trova
nell’ unità disco da cui era stato effettuato il “boostrap” del sistema operativo.

CONTINUA
Questa primitiva permette di riprendere l'esecuzione di un programma dopo un’inter-
ruzione provocata dal comando PAUSA. Se però, nel corso della pausa, si è verificato un
errore, il comando CONTINUA produrrà il messaggio: non posso fare CONTINUA.

INDICE
Questa primitiva fornisce una lista di tutte le parole che Logo conosce. Faranno parte
della lista tutte le parole, inclusi i nomi delle primitive, delle procedure e delle variabili.
La lista presenta le parole in ordine alfabetico.
pag. 144 Manuale Logo

LIBERA
Esegue una pulizia della memoria eliminando gli oggetti che non hanno più utilità
e recuperando i nodi ad essi assegnati.
Il Logo esegue automaticamente questa operazione ogni volta che esaurisce la
memoria, ma, poiché impiega un certo tempo per eseguirla, è utile poter decidere il
momento, durante 1' esecuzione di un programma, in cui eseguire l’operazione di pulizia
della memoria.
È utile inoltre dare un comando LIBERA prima di un comando NODI, per conoscere
qual è effettivamente lo spazio di memoria che ci rimane disponibile; altrimenti il
numero di nodi liberi può risultare minore di quello reale, per via del fatto che alcune
zone di memoria possono risultare occupate mentre in realtà non lo sono più.

LISTA? LISTP
Il valore del predicato di LISTA? è VERO se il valore del suo argomento è una lista,
altrimenti è falso
AS "ELENCO [RINA LUCA, PIPPO] LISTA? :ELENCO VERO
AS "ELENCO "CARLO LISTA? :ELENCO FALSO

NODI
La funzione NODI fornisce il numero di nodi ancora liberi. Il Logo misura la memoria
in nodi, ognuno dei quali corrisponde a cinque celle di memoria (Bytes).
Il numero totale di nodi disponibili dipende dalla quantità di memoria installata e dal
numero di nodi occupati da parole e procedure.
Prima di eseguire la primitiva NODI è consigliabile eseguire il comando LIBERA per
evitare che Slogo consideri come occupati anche i nodi che contengono informazioni non
più valide.
NODI 3457 LIBERA 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 ha
nessun effetto (vedi TRACCIA).
Appendice A: Glossario M-LOGO - LOGO IBM pag. 145

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 nessuno
degli argomenti è VERO il valore dell’espressione è FALSO. Se gli argomenti sono più
di due si devono usare le parentesi tonde.
A causa dell’ ordine di valutazione delle istruzioni del Logo, se i valori logici sono
forniti da funzioni, è consigliabile usare le parentesi tonde intorno a ciascuna di esse per
essere sicuri che il Logo ne calcoli il valore prima di eseguire 1' OPPURE.
Particolarmente critici da questo punto di vista sono gli operatori infissi = < > i cui
argomenti devono sempre essere fra parentesi se non sono letterali. Se non si osserva
questa precauzione, si rischia che il Logo esegua 1' operatore prima di calcolare i due
elementi da paragonare e poi usi il risultato, (VERO o FALSO) negli altri calcoli. Un
esempio chiarirà meglio questa indicazione.
STAMPA OPPURE SOMMA 23 45 = 68 "FALSO
A SOMMA non piace FALSO come argomento.
STAMPA OPPURE (SOMMA 23 45) = 68 "FALSO
VERO

QUI <parola>
Dà un nome ad una riga di istruzioni afflnchè il comando VAI possa identificarla.
L’ argomento deve essere una parola letterale non il risultato di una funzione; ad
esempio QUI “PINCOPALLINO è corretto mentre QUI RIPORTA PAROLA e QUI
PAROLA “ALFA “BETA non lo sono.
E’ bene dare alle etichette dei nomi comprensibili che servano anche a ricordare la
posizione della riga nella procedura.
PER LEGGINUMERO
QUI "NONNUMERO
AS "NUMERO LEGGIPAROLA
SE NON NUMERO? NUMERO [VAI “NONNUMERO]
RIPORTA :NUMERO
FINE

RIPETI <num> <lista> REPEAT


Esegue le istruzioni racchiuse tra parentesi quadre nella lista per un numero di volte pari al
primo argomento.
RIPETI 3 [STAMPA [SONOBRAVO]]
SONO BRAVO SONO BRAVO SONO BRAVO
pag. 146 Manuale Logo

RIPORTA <ogg> OUTPUT (OP)


Termina una procedura e trasmette un oggetto alla procedura chiamante, cioé la
procedura che contiene l’ordine di esecuzione della procedura corrente. Se non c’è una
procedura chiamante restituisce la gestione di Logo all’operatore.
RIPORTA é il comando che permette di definire delle nuove fùnzioni. Senza di esso
sarebbe impossibile trasferire valori da una procedura ad un altra se non tramite variabili
comuni ad entrambe le procedure.
La seguenti procedure riportano la posizione di un oggetto in un altro.
PER VALORE.ASSOLUTO :NUM
SE :NUM > 0 [RIPORTA -:N]
[RIPORTA :N]
FINE

SE <valore logico> <lista di istr.> (ALTRIMENTI <lista di istr.>) IF


Esegue la lista se <valore logico> è VERO, altrimenti passa all’ istruzione succes-
siva.
Se si utilizza il formato facoltativo, la lista che segue ALTRIMENTI sarà eseguita
solo se il controllo ha dato il risultato falso e quindi non è stata eseguita la prima delle
due liste.
AS “PROVA “VERO
SE PROVA [STAMPA “SI] ALTRIMENTI [STAMPA “NO]
SI
SE 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. Il
comando SE_FALSO è in tutto e per tutto simile al comando ALTRIMENTI.
Il cornando SE infatti agisce anche come VERIFICA per cui SE_FALSO utilizzerà il
risultato dell’ ultimo comando di controllo dato in ordine di tempo, senza distinguere in
alcun modo se si trattava di un SE o di un VERIFICA.
AS “Nl 33 AS “N29 VERIFICA :Nl < :N2
SEF [STAMPA [ERA FALSO]]
ERA FALSO

SE_VERO (SEV) <lista dl istruz> IFTRUE (IFT)


Se 1’ultimo controllo VERIFICA ha dato risultato vero, esegue la lista, altrimenti
passa all’ istruzione successiva.
Il comando SE_VERO accetta la clausola ALTRIMENTI, ma si può anche
utilizzare al suo posto il comando SE_FALSO.
AS “N1 33 AS “N2 941 VERlFICA :N1 < :N2
SEV [STAMPA [NON ERA FALSO]]
NON ERA FALSO
Appendice A: Glossario M-LOGO - LOGO IBM pag. 147

STOP STOP
Chiude 1'esecuzione della procedura corrente e trasferisce il controllo alla
procedura chiamante.
STOP ha lo stesso effetto di FINE, mentre FINE però serve a logo per segnare la fine
della procedura, e di conseguenza può comparire solo al termine della procedura, STOP
può essere usato quante volte si vuole per indicare che la procedura deve terminare al
verificarsi di una data condizione.
PER “SCRIVINUMERI.DA.A : A :B
SE A > :B [STOP]
STAMPA :A
SCRIVINUMERl.DA.A :A + 1 :B
FINE

TRACCIA
Serve per chiedere il tracciamento di procedure e primitive. TRACCIA, senza
argomento, traccia tutte le procedure e le primitive, con argomento solo quelle
specificate.
Tracciare una primitiva significa mostrare su schermo il suo nome e il valore
calcolato per gli argomenti subito prima della sua esecuzione.
Tracciare una procedura significa mostrare il suo nome e il valore calcolato per gli
argomenti all’ingresso, il suo nome e 1' eventuale valore riportato all’ uscita.
TRACCIA permette di seguire L'esecuzione di un programma per poter rintracciare
gli eventuali errori.

VAI <parola>
Ordina al programma di continuare 1'esecuzione dall’istruzione che segue QUI
<parola>. QUI <parola> deve trovarsi nella stessa procedura di VAI.
Si consiglia di limitare l’uso di questo comando perchè i programmi potrebbero
risultare piuttosto lenti.

VERIFICA <valore logico> TEST


Esegue un controllo il cui risultato influenzerà i comandi SE_VERO e SE_FALSO
eseguiti successivamente all’ intemo della procedura.
VERIFICA LEGGLISTA = [QUESTA E’ UNA RIGA]
QUESTA NON E’ UNA RIGA
SEF [ST “FALSO]
FALSO
pag. 148 Manuale Logo

ALTRE PRIMITIVE M-LOGO NON COMMENTATE

ACCHIAPPA DEF? PULSANTE?


ARCAPERTI DEFINISCI (DF) PUNTO
ARCHIVIO? DISCO RECUPERA_QUADRO
ASCII DOVELEGGI REGISTRA
ASCOLTESTO DOVESCRIVI RIGA
ASCOM ELE? RINOMINA
ASCURSORE ERRORE SCHERMO
ASECO ESEGUI SCI
ASMAIUSCOLE ESP SCOPRI
ASPROP (AP) FINELEGGI? SCRICAR
ASRIGHE FINESCRIVI? SCRIVI_A
ASSFONCAR FOGLIO? SCRIVI_SU
ASTASTO (AT) LANCIA SLISTEPROP
ASTAVOLOZZA LEGGISTRINGA STRINGA
ASTEMPO LEGGI_A STUTTO_IN
CANCEPROP LEGGI_DA SUCC
CANCEPROP_IN LISTARIF SUCHESCRIVI
CANCEVAR LISTAPROP SUONA
CANCEVAR_IN LN SVAR_IN
CARATTERE (CAR) LUNGARC TARTA?
CHIAMA MAIUSCOLE TASTIERA
CHIUDI MISURA TASTO
CHIUDITUTTO MODO TASTO?
COLORE NONREGISTRARE (NREG) TAVOLOZZA
COSTESTO PAC TEMPO
CONSERVA_QUADRO PACTUTTO TESTO
COPIADEF PARTE UGUALE?
COPRI PAUSA ULTLINEA
COSA? POSELE VUOTO?
CURSORE PREC ZITTO
DACHELEGGI PRIMITIVA?
DEC PROP
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 e
quelli tra parentesi sono facoltativi.
Il contrassegno # indica che nella istruzione va inserito il numero di argomenti specificato. Quando gli argomenti sono di più, o di
meno,l’intera istruzione deve essere scritta tra parentesi. Esempi: LISTA “A “B ; (LISTA “A) ; (LISTA “A “B “C)

Turtle Graphics
BACK (BK) n PEN
Moves turtle n steps back. Outputs pen state: list containing mode (PD, PU,
PE, PX), color, and palette.
BACKGROUND (BG)
Outputs number representing background color for PENCOLOR (PC)
graphics screen. Outputs number representing pen color.

CLEAN PENDOWN (PD)


Erases graphics screen without affecting turtle. Puts pen down.

CLEARSCREEN (CS) PENERASE (PE)


Erases screen, moves turtle to [0 0], sets heading to 0. Puts eraser down.

DOT pos PENREVERSE (PX)


Puts a dot of the current pen color at the coordinates Puts reversing pen down.
specified bypos.
PENUP (PU)
FENCE Raises pen.
Fences turtle within edges of screen.
POS
FILL Outputs position of turtle in coordinates.
Fills in a closed shape with the current pen color.
RIGHT (RT) n
FORWARD (FD) n Turns turtle n degrees right (clockwise).
Moves turtle n steps forward.
SAVEPIC filespec
HEADING Saves screen image in filespec.
Outputs turtle’s heading (its direction) in degrees.
SCRUNCH
HIDETURTLE (HT) Outputs current aspect ratio of screen.
Makes turtle invisible.
SETBG n
HOME Sets background in graphics to color number n.
Moves turtle to [0 0] and sets heading to 0.
SETHEADING (SETH) n
LEFT (LT) n Sets turtle’s heading (direction) to n degrees.
Turns turtle n degrees left (counterclockwise).
SETPAL n
LOADPIC filespec Sets the palette of colors to n.
Loads screen image infilespec directly onto screen.

PALETTE (PAL) SETPC n


Sets pen color to n
Outputs number for the palette of colors
pag. 150 Manuale Logo

. BUTFIRST (BF) ogg


SETPEN penlist Outputs all but first element of its input.
Sets pen to list of mode, color, and palette.
BUTLAST (BL) ogg
SETPOS pos Outputs all but last element of its input.
Moves turtle to coordinates specified by pos
CHAR n
.SETSCRUNCH n Outputs character whose ASCII code is n.
Sets aspect ratio of screen to n.
COUNT ogg
SETSHAPE n
Changes the turtle’s shape to a pattern specified by Outputs the number of elements in its input.
ASCII code n.
EMPTYP ogg
SETX x Outputs TRUE if ogg is empty list or empty word.
Moves turtle horizontally to position with x-
coordinate. EQUALP ogg1 ogg2
Outputs TRUE if its inputs are equal.
SETY y
Moves turtle vertically to position with y-coordinate. FIRST ogg
Outputs first element of its input.
SHAPE
Outputs the turtle’s current shape. FPUT ogg list
Outputs list formed by putting its first input at
SHOWNP beginning of list.
Outputs TRUE if turtle is visible.
ITEM n ogg
SHOWTURTLE (ST) Outputs nth element of its input.
Makes turtle visible.
LAST ogg
SNAP n Outputs last element of its input.
Copies image under turtle onto the turtle’s shape
and stores it in ASCII code n. LIST ogg1 ogg2
# Outputs list of its inputs, preserving their list
STAMP
structure.
Stamps copy of turtle’s shape onto the screen.
LISTP ogg
TOWARDS pos
Outputs heading turtle would have if facing the Outputs TRUE if ogg is a list.
coordinates specified by pos.
LPUT ogg list
WINDOW Outputs list formed by putting its first input at
Removes boundaries from turtle field. end~of list.

WRAP MEMBERP ogg1 ogg2


Makes turtle field wrap around edges of screen. Outputs TRUE if its first input is an element of its
second input.
XCOR
Outputs x-coordinate of turtle’s position. NUMBERP ogg
Outputs TRUE if ogg is a number.
YCOR
Outputs y-coordinate of turtle’s position. SENTENCE (SE) ogg1 ogg2
# Outputs list of its inputs.

Words and Lists WORD word1 word2


# Outputs word made up of its inputs.
ASCII char
Outputs ASCII code for the char (character) WORDP ogg
Outputs TRUE if ogg is a word.
Appendice A/2: Glossario M-LOGO - LOGO IBM pag. 151

Variables PRODUCT a b
#Outputs product of its inputs.
EDNS (package(list)) Stands for EDit NameS.
Starts Logo editor (containing variables in QUOTIENT a b
package(list)). Outputs a divided by b.

LOCAL name RANDOM n


# Makes name local. Outputs random non-negative integer less than n.

MAKE name ogg REMAINDER a b


Gives the value ogg to the variable name. Outputs remainder of a divided by b.

NAME ogg name RERANDOM


Makes ogg the value of name. Makes RANDOM act reproducibly.

NAME P name ROUND n


Outputs TRUE if name has a value. Outputs n rounded off to nearest integer.

THING name SETPRECISION n


Outputs the value of name. Sets current precision of numbers to n.

SIN a
Arithmetic Operations Outputs sine of a degrees.

ARCTAN y (x) SQRT n


Outputs arctangent of y or x/y in degrees. Outputs square root of n.

COS a SUM a b
Outputs cosine of a degrees. # Outputs sum of its inputs.

DIFFERENCE a b
Outputs b subtracted from a. Defining and Modifying Procedures

EFORM n a COPYDEF newname name


Outputs n in scientific notation using a digits. Copies definition of name onto newname.

EXP a DEFINE name list


Outputs e to the power of a. Makes list the definition of name.

FORM n a (b) DEFINEDP word


Outputs number n with a digits before the decimal Outputs TRUE if word is the name of a procedure.
point and b digits after it.
EDIT (ED)
INT n Starts Logo editor (containing named procedures).
Outputs integer portion of n.
PRIMITIVEP name
LN a Outputs TRUE if name is a primitive.
Outputs log of a to the base e.
TEXT name
PI Outputs definition of procedure name as a list.
Outputs mathematical constant pi greco.
TO name (inputs)
POWER n a Begins defining procedure name
Outputs n to the power of a.

PRECISION
Outputs the number of significant digits a number
is rounded to when used by Logo.
pag. 152 Manuale Logo

Flow of Control OR pred1 pred2


#Outputs TRUE if any of its inputs are TRUE.
CATCH name list
Runs list; returns when THROW name is run.
Communicating with the Outside World
CO (ogg)
Resumes a procedure after a pause. Outputs obj to ALLOPEN
PAUSE. Outputs a list of devices/files which are currently
open.
ERROR
Outputs list of information about most recent error. BUTTONP n
Outputs TRUE if button on paddle or joystick n is
GO word down.
Transfers control to LABELword.
CLOSE device/ filespec
IF pred list1 (list2) Closes a currently opened device/filespec.
Ifpred is TRUE, runs list1; otherwise, list2.
CLOSEALL
IFFALSE (IFF) list Closes all currently opened files and devices.
Runs list if most recent TEST was FALSE.
DIR ((drive:)/filespec) Displays names of files on
IFTRUE (IFT) list disk.
Runs list if most recent TEST was TRUE.
DISK
LABEL word Outputs the current disk drive.
Creates a labeled line for use by GO.
.DOS
OUTPUT (OP) ogg Releases control to the Disk Operating System.
Returns control to calling procedure with obi as
output. DRIBBLE device/filespec
Starts process of sending a copy of text on the
PAUSE screen to device/filespec.
Suspends running of the procedure.
EDITFILE infilespec (outflkspec)
REPEAT n list Starts Logo editor with the contents of infilespec.
Runs list n times. Saves infilespec under outflkspec.

RUN list ERASEFILE filespec


Runs list; outputs what list outputs. Erases file filespec from diskette.

STOP FILELEN filespec


Stops procedure and returns control to caller. Outputs the length in bytes of filespec.

TEST pred FILEP filespec


Determines whether pred is TRUE or FALSE. Outputs TRUE if filespecexists.

THROW name KEYP


Transfers control to corresponding CATCH. Outputs TRUE if a key has been typed but not yet
read.

Logical Operations NODRIBBLE


Turns off dribble process and closes the dribble file.
AND pred1 pred2
#Outputs TRUE if all of its inputs are TRUE. OPEN device/filespec
Opens devicefilespec.
NOT pred
Outputs TRUE if pred is FALSE.
Appendice A/2: Glossario M-LOGO - LOGO IBM pag. 153

PADDLE n SETWRITEPOS n
Outputs rotation of dial on paddle n or position of Sets the file position for writing into the current
stick on joystick n. filespec.

POFILE filespec SHOW ogg


Prints out the contents of filespec. Prints its input followed by carriage return and line
feed - with brackets for lists.
PRINT (PR) ogg
#Prints its input followed by carriage return and TONE freq dur
linefeed, but doesn’t print the outer brackets of Produces a sound of frequencyfreq for duration dur.
lists.
TYPE ogg
READCHAR (RC) #Prints its input, but not the outer brackets of lists.
Outputs character read by the current file or device
(default is keyboard). Waits, if necessary. WAIT n
Causes a pause of about n 18ths of a second.
READCHARS (RCS) n
Outputs n characters read by the current file or WRITEOFP
device (default is keyboard). Waits, if necessary. Outputs TRUE if the write pointer is at the end of
the filespec being written.
READEOFP
Outputs TRUE if the position of thefilespec being WRITEPOS
read is the end of the file. Outputs position of write pointer in file currently
being written to.
READER
Outputs the name of current device/filespec opened WRITER
for reading. Outputs name of current device/filespec open for
writing
READLIST (RL)
Outputs line read by current file or device (default
is keyboard). Waits, if necessary. Text and Screen
READPOS CAPS
Outputs reader position of current file being read. Outputs TRUE if Caps Lock key is disabled and
false if active.
READWORD (RW)
Outputs first word read by current file or device CLEARTEXT (CT)
(default is keyboard). Waits, if necessary. Clears text portion of screen.

SETCOM n bdrt parity databits stopbits CURSOR


Sets the serial communications line. Outputs position of cursor on screen.

SETDISK dnve: FULLSCREEN (FS)


Sets disk to drive:. Devotes entire screen to graphics. Same as F4 key.

SETREAD device/filespec MIXEDSCREEN (MS)


Sets the device/filespec from which the output of Allows both text and graphicson the screen. Same
RC, RC 5, RL, and RW will be read. as F2 key.

SETREADPOS n SCREEN
Sets the file position for reading the current filespec. Outputs 1 or 2, depending on whether you are
working with one or two screens.
SETWRITE device/filespec
Sets the destination of inputs to PRINT, TYPE, SETCAPS pred
SHOW, PO, and POFILE. TRUE disables Caps Lock key; FALSE enables it.

SETCURSORpos
Puts cursor at the screen position specified by pos.
pag. 154 Manuale Logo

SETSCREEN n PACKAGE package name (list)


Sets number of screens to 1 or 2. Puts named procedure(s) in package

SETTC colorlist PKGALL package


Sets text colors to colorlist (foreground, Puts in package everything not already packaged.
background).
PO name(list)
SETTEXT n Prints definitions of named procedure(s).
Sets text portion of graphics screen to n lines from
bottom. POALL (package( list))
Prints definitions of procedures (in package(list)).
SETWIDTH n (a)
Sets width of screen to n columns. Second input PONS (package(list))
moves text a columns to right or left. Prints names and values of variables (in
package(list)).
TEXTCOLOR (TC)
Outputs a list of the numbers for current text colors. POPS (package(list))
Prints definitions of procedures (in package(list)).
TEXTSCREEN (TS)
Devotes entire screen to text. Same as Fl key. POTS (package(list))
Prints title lines of procedures (in package(list)).
WIDTH
Outputs current width of screen. RECYCLE
Performs a garbage collection.

Workspace Management REPARSE


Reparses procedures.
BURY package
Buries procedures and variable names contained in SAVE device/filespec (package(list))
package. Writes whole workspace or package(list) onto
device/filespec.
CONTENTS
Outputs list of all names, procedure names, and UNBURY package
other words in workspace. Unburies procedures and names in package.

ERALL (package(list))
Erases everything (in (package(list). Property Lists

ERASE (ER) name(list) GPROP name prop


Erases named procedure(s). ERN name(list) Outputs value of prop property of name.
Erases named variable(s).
PLIST name
ERNS (package(list)) Outputs property list of name.
Erases variables (contained in package(list)).
PPROP name prop obj
ERPS (package(list)) Gives property prop with value obj to name.
Erases procedures (contained in package(list)).
PPS (package(list))
LOAD fllespec (package) Prints property list(s) of everything (in
Loads filefilespec into workspace (into package). package(list)).

NODES REMPROP name prop


Outputs number of free nodes. Removes property prop from property list of name.
Allegato B: Archivi e procedure pag. 155

ARCHIVI DI GRAFICA
PROCEDURE E SOTTOPROCEDURE SEMPLICI

C O M P.Q U A

PER QUADRATO PER PIZZ08


RIPETI 4 [A 30 D 90] RIPETI 8 [NOVE.QUADRATI D 45]
FINE FINE

Sottoprocedura fondamentale Come la precedente.

PER FILA.QUADRATI PER TORRE.QUADRATI


RIPETI 3 [QUADRATO D 90 A 30 S 90] S 90 FILA.QUADRATI
FINE FINE

Contiene una chiamata di primo livello della sottoprocedura Contiene una chiamata di secondo livello.
fondamentale.

PER FILASIN.QUADRATI PER TORRESIN.QUADRATI


S 90 RIPETI 3 [QUADRATO A 30] D 90
FINE FILASIN. QUADRATI
FINE
Come sopra.
Come sopra.

PER FINESTRA PER TRENTASEI.QUADR


RIPETI 4 [QUADRATO S 90] RIPETI 4 [NOVE.QUADRATI D 90]
FINE FINE

Come sopra. Contiene una chiamata di terzo livello

PER NOVE.QUADRATI PER AVVIA


NT SU S 90 A 155 D 90 I 125 GIU
RIPETI 4 [FILA.QUADRATI S 90] FINE
FINE
Altra procedura fondamentale.
Al secondo livello chiama la sottoprocedura "Fila.quadrati"
che, a sua volta, chiama la sottoprocedura "Quadrato"

PER QUA.QUA
AVVIA
PER PIZZO RIPETI 4 [QUADRATO SU A 255 D 90
RIPETI 12 [NOVE.QUADRATI D 30] GIU]
FINE FINE

Contiene una invocazione di terzo livello: chiama Contiene due chiamate al primo livello: una chiama la
"Nove.quadrati", che chiama "Fila.quadrati" che, a sua volta, procedura fondamentale "Avvia" e l'altra chiama la
chiama "Quadrato" procedura fondamentale "Quadrato".
pag. 156 Manuale Logo

C O M P. T R I

PER TRI PER DENT.TRI


RIPETI 3 [A 30 D 120] S 90
FINE RIPETI 3 [TORRE1.TRI S 120]
FINE
Sottoprocedura fondamentale

Con chiamata di terzo livello.

PER FILA.TRI
S 90 PER TORRE3.TRI
RIPETI 3 [TRI A 30] TORRE2.TRI
FINE A 15 D 90 A 30
FINE
Con chiamata di primo livello.

Come sopra.

PER FILADES.TRI
D 30 PER VETRATA.TRI
RIPETI 4 [TRI D 60 A 30 S 60] RIPETI 3 [FILA.TRI D 210]
FINE FINE
Come sopra
Con chiamata di secondo livello.
.

PER TORRE1.TRI PER DENT3.TRI


D 90 RIPETI 3 [DENT.TRI S 30]
FILA.TRI FINE
FINE
Con chiamata di quarto livello.
Con chiamata di secondo livello.

PER FILAVETRATA
PER TORRE2.TRI RIPETI 3 [VETRATA.TRI S 90 A 90 D
D 90 90]
FILA.TRI FINE
D60 A 30 D 120 D 90
FILA.TRI Con chiamata di terzo livello.
FINE

Con doppia chiamata di secondo livello.


PER SPOSTAMENTO
SU I 116 D 90 A 120 S 90 GIU NT
FINE
PER TORRE4.TRI
D 90 Procedura fondamentale.
RIPETI 3 [TRI D 60 A 30 S 60 I 15]
TRI PER GRAN.TRI
FINE SPOSTAMENTO
RIPETI 3 [FILAVETRATA D 120]
Con doppia chiamata di primo livello.
SU TANA GIU
FINE

Con duplice chiamata: una di primo livello e l'altra di


quarto livello.
Allegato B: Archivi e procedure pag. 157

PUPAZZO AULA

PER PUPAZZO PER AULA


CORPO SU I 70 GIU
GAMBE FILA.BANCHI
BRACCIA RIPETI 2 [RITORNO FILA.BANCHI]
TESTA AS “INIZIO [AUTO]
FINE FINE

PER CORPO PER BANCO


A 30 I 30 SEDIA
FINE SPOSTAMENTO
TAVOLO
FINE
PER GAMBE
GAMBASINISTRA
GAMBADESTRA PER FILA.BANCHI
FINE PAVIMENTO
RIPETI 5 [BANCO SPOSTAMENTO]
FINE
PER GAMBADESTRA
S 30 I 30 D 90
A 5 I 5 S 90 PER PAVIMENTO
A 30 D 30 D 90 A 150 I 300 S 90
FINE FINE

PER GAMBASINISTRA PER RITORNO


D 30 I 30 S 90 SU S 90 A 150 D 90 A 70 GIU
A 5 I 5 D 90 FINE
A 30 S 30
FINE
PER SEDIA
A 40 I 20 D 90 A 16 D 90 A 20
PER BRACCIA FINE
A 20 D 90
A 20 I 40
A 20 S 90 I 20 PER SPOSTAMENTO
FINE S 90 A 10 S 90
FINE

PER TESTA
A 30 S 90 A 5 PER TAVOLO
RIPETI 3 [D 90 A 10] A 30 D 90 A 25 D 90 A 30
D 90 A 5 TANA NT FINE
FINE
pag. 158 Manuale Logo

ESTATE BANDIERA

PER ESTATE PER BANDIERA


ASSFONDO 15 ASTA
ASCOL 2 DRAPPO
CAMPODIGRANO ROSSO
SU S 40 A 80 GIU VERDE
SOLE FINE
SU TANA GIU
FINE PER ASTA
ASSFONDO 15 ASCOL 1 A 80
FINE
PER CAMPODIGRANO
SU S 90 A 150 D 90 GIU PER DRAPPO
RIPETI 19 [SPIGA SEMINARE] D 90 A 60 D 90 A 40 D 90 A 60 I 20
S 90 A 310 D 90 A 40 I 40 S 90 I 20 D 90 A 40
TANA NT I 40 SU TANA GIU
FINE FINE

PER ROSSO
PER SPIGA SU VAXY [10 50] GIU ASCOL 2 RIEMPI
A 20 FINE
RIPETI 4 [SPIGHETTA A 5]
I 40 PER VERDE
FINE SU VAXY [50 50] GIU ASCOL 1 RIEMPI
SU TANA GIU
FINE
PER SPIGHETTA
D 45 A 8 I 8 S 90 A 8 I 8 D 45
FINE
AUTO
PER SEMINARE
D 90 SU A 16 GIU S 90
PER AUTO
FINE
SU VAX -70 GIU ASSFONDO 15 ASCOL 6
A 30 SCATOLA A 10 D 90 A 50
SU A 10 S 90 GIU RETTANGOLO
PER SOLE
SU S 90 A 10 GIU
RIPETI 10 [ARCO RAGGIO]
D 90 A 50 D 90 A 80 D 90 A 80
SU D 90 A 20 ASCOL 2 RIEMPI
SCATOLA A 10 D 90 A 35
FINE
CERCHIO A 60 CERCHIO A 35 TANA
SU A 10 ASCOL 3 RIEMPI VATANA GIU
FINE
PER ARCO
RIPETI 12 [A 1 D 3]
PER CERCHIO
FINE
RIPETI 72 [A 1.5 S 5]
FINE
PER RAGGIO
PER RETTANGOLO
SU S 90 A 5 GIU A 20
RIPETI 2 [A 40 D 90 A 60 D 90]
SU I 25 D 90 GIU
FINE
FINE
PER SCATOLA
RIPETI 4 [S 90 A 10]
FINE
Allegato B: Archivi e procedure pag. 159

PROCEDURE E SOTTOPROCEDURE CON VARIABILI

F I G U R E. 1 F I G U R E. 2

PER DECAGONO :L PER CINQUE :L


RIPETI 10 [A :L D 360 / 10] RIPETI 5 [QUADRILATERO :L D 360 / 5]
FINE FINE

PER CRISANTEMO :L
PER ESAGONO :L RIPETI 36 [QUADRILATERO :L D 360 / 36]
RIPETI 6 [A :L D 360 / 6] FINE
FINE
PER ELICA :L
RIPETI 2 [QUADRILATERO :L D 180]
PER FIGURA :L FINE
RIPETI 8 [QUADRATO :L D 45]
RIPETI 6 [ROMBO :L D 60]
FINE PER FARFALLA :L
RIPETI 3 [QUADRILATERO :L D 120]
FINE
PER FINESTRA :L
RIPETI 4 [QUADRATO :L S 90] PER FIORE :L
FINE RIPETI 18 [QUADRILATERO :L D 360 / 18]
FINE

PER QUADRATO :L PER FIORELLINO :L


RIPETI 4 [A :L D 90] RIPETI 9 [QUADRILATERO :L D 360 / 9]
FINE FINE

PER GIRANDOLA :L
PER QUINQUA :L RIPETI 4 [QUADRILATERO :L D 90]
RIPETI 4 [RIPETI 4 [A :L D 90] D 90 A :L] FINE
FINE
PER MARGHERITA :L
PER RETTANGOLO :L RIPETI 12 [QUADRILATERO :L D 360 / 12]
RIPETI 2 [A :L D 90 A (:L * 3) D 90] FINE
FINE
PER QUADRILATERO :L
RIPETI 2 [A :L D 30 A :L D 150]
PER ROMBO :L FINE
RIPETI 2 [A :L D 60 A :L D 120]
FINE PER SOLE :L
RIPETI 72 [QUADRILATERO :L D 360 / 72]
FINE
PER STELLA :L
FINESTRA :L D 45 PER SUPERGIRANDOLA :L
FINESTRA :L S 45 RIPETI 6 [QUADRILATERO :L D 360 / 6]
FINE FINE

PER TANTIDISEGNI :L :VOLTE


PER TRIANGOLO :L
RIPETI :VOLTE [QUADRILATERO :L D 360
RIPET I 3 [A :L D 120]
/ :VOLTE]
FINE
FINE
pag. 160 Manuale Logo

CERCHI F I G U R E. 3

PER CERCHIO :RAGGIO PER MULTIPOLIGONO :N :L


LOCALE “LATO RIPETI :N [D (360 / :N) POLIGONO :L 40]
AS “LATO 2 * :RAGGIO * 3.1416 / 60 FINE
RIPETI 60 [A :LATO D 360/60]
FINE
PER POLIGONO :N :L
PER CERCHIO.C :RAGGIO RIPETI :N [A :L D 360 / :N]
LOCALE “NL FINE
AS “NL 2 * :RAGGIO * 3.1416 / 60
SU S 90 A :RAGGIO D 90 GIU
RIPETI 60 [A :NL D 360/60] PER QUADRATO :L
SU D 90 A :RAGGIO S 90 GIU RIPETI 4 [A :L D 90]
FINE FINE

PER ESAGONO.INSCRITTO :RAGGIO


CERCHIO.C :RAGGIO PER RETTANGOLO :L1 :L2
SU S 90 A :RAGGIO D 120 GIU RIPETI 2 [A :Ll D 90 A :L2 D 90]
RIPETI 6 [A :RAGGIO D 60] FINE
SU TANA GIU
FINE
PER RUOTAPOLIGONO :N :L
PER QUADRATO.CIRCOSCRITTO :RAGGIO RIPETI (360 / :L) [D :L POLIGONO :N 50]
CERCHIO.C :RAGGIO FINE
SU S 90 A :RAGGIO D 90 A :RAGGIO
GIU
RIPETI 4 [D 90 A (:RAGGIO * 2)] PER TURBINA :L :N
SU TANA GIU RIPETI :N [A (2 * :L) QUADRATO :L I (2 *
FINE :L) D 360 / :N]
FINE
PER QUADRATO.INSCRITTO :RAGGIO
CERCHIO.C :RAGGIO
SU S 90 A :RAGGIO D 135 GIU PER VENTAGLIO :L1 :L2 :VOLTE
RIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) + SINISTRA :VOLTE * 5
(:RAGGIO * :RAGGIO)) D 90] RIPETI :VOLTE [RETTANGOLO :Ll :L2 D
SU TANA GIU 10]
FINE TANA
FINE
PER TRIANGOLO.CIRCOSCRITTO : RAGGIO
CERCHIO.C :RAGGIO
SU A :RAGGIO * 2 D 150 GIU
RIPETI 3 [A (2 * RADQ (4 * :RAGGIO *
:RAGGIO) - (:RAGGIO * :RAGGIO)) D 120]
SU TANA GIU
FINE

PER TRIANGOLO.INSCRITTO :RAGGIO


CERCHIO.C :RAGGIO
SU S 90 A :RAGGIO D 150 GIU
RIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO)
- (:RAGGIO * :RAGGIO)) D 120]
SU TANA GIU
FINE
Allegato B: Archivi e procedure pag. 161

PINOCCHI

PER PINOCCHIO :L PER SPOST2


ASSCHERMO “TARTA SU I 50 D 90 A 15 D 90 GIU
SU I 50 GIU NT FINE
GAMBE TRONCO SPOST1
BRACCIO SPOST2
COLLO TESTA VISO PER COLLO
NASO :L CAPPELLO SPOST3 RETTANGOLO 10 15
FINE FINE

PER GAMBE PER TESTA


GAMBA A 25 S 90 GAMBA A 10 S 90 A 10 D 90
FINE RETTANGOLO 35 35
FINE

PER GAMBA
S 180 RETTANGOLO 50 10 PER VISO
A 60 D 90 RETTANGOLO 20 10 A 10 S 90 I 15 A 15 D 90 A 15 S 90
D 90 A 60 D 90 SU I 10 GIU I 5 A 10 I 5 D 90 I 5
FINE A 10 I 5 S 90 SU A 10 GIU D 90 I 10
FINE

PER RETTANGOLO :L1 :L2


RIPETI 2 [A :L1 D 90 A :L2 D 90] PER NASO :L
FINE LOCALE “ALFA LOCALE “IPOTENUSA
AS “ALFA ARCTAN :L / 20
AS “IPOTENUSA RADQ (:L * :L + 20 * 20)
PER TRONCO S 90 A :L D (90 + :ALFA) A :IPOTENUSA
I 40 S 90 RETTANGOLO 80 45 D (180 - :ALFA) A 20 D 180
FINE FINE

PER SPOST1 PER CAPPELLO


A 70 D 90 SU A 30 D 90 A 20 D 90 I 5 S 60
FINE RIPETI 3 [A 45 D 120]
FINE

PER BRACCIO
GIU RETTANGOLO 40 10 PER SPOST3
A 40 RETTANGOLO 10 10 SU TANA GIU
FINE FINE

SORPRESE

PER RUOTACOLORI PER SORPRESA :PASSO :INCR


ASSFONDO 0 SE :PASSO > 80 [STOP]
RIPETI 15 [ASPETTA 50 ASSFONDO A :PASSO D 90
SFONDO + 1] SORPRESA (:PASSO + :INCR) :INCR
FINE I :PASSO S 90
FINE
pag. 162 Manuale Logo

VEDUTA

PER VEDUTA PER RETTANGOLO :LATO1 :LATO2


ASSCHERMO “TARTA ASSFONDO 14 RIPETI 2 [A :LATO1 D 90 A :LATO2 D 90]
ASCOL 9 TERRENO PS TERRENO FINE
ASCOL 7 CASA 30 SU S 90 A 90 D 90
GIU ASCOL 6 ALBERO 60 SU D 70 A 125 PER FINESTRA :MISURA
GIU ASCOL 2 SOLE SU TANA NT GIU RIPETI 4 [QUADRATO :MISURA / 2 D 90]
FINE FINE

PER TERRENO PER TETTO :MISURA


SU I 100 D 90 GIU TRIANGOLO :MISURA * 3
A 150 I 300 A 150 S 90 FINE
FINE
PER TRIANGOLO :MISURA
PER CASA :MISURA RIPETI 3 [A :MISURA D 120]
FACCIATA :MISURA A :MISURA * 3 D 30 FINE
TETTO :MISURA S 30 I :MISURA * 3
FINE PER ALBERO :MISURA
RETTANGOLO :MISURA :MISURA / 8
PER FACCIATA :MISURA A :MISURA S 90
MURA MISURA D 90 A :MISURA / 3 S 90 A :MISURA / 16 * 3 D 40
PORTONE :MISURA SU D 90 A :MISURA * 2 POLIGONO 8 :MISURA / 2
S 90 A :MISURA * 1.5 GIU FINESTRA FINE
:MISURA
SU I :MISURA * 1.5 S 90 PER POLIGONO :N.LATI :DIST
A :MISURA * 2 + :MISURA / 3 D 90 GIU RIPETI :N.LATI [A :DIST D 360 / :N.LATI]
FINE FINE

PER MURA :MISURA PER SOLE


QUADRATO :MISURA * 3 RIPETI 10 [ARCO RAGGIO]
FINE FINE

PER QUADRATO :LATO PER ARCO


RIPETI 4 [A :LATO D 90] RIPETI 12 [A 1 D 3]
FINE FINE

PER PORTONE :MISURA PER RAGGIO


RETTANGOLO :MISURA * 2 :MISURA SU S 90 A 5 GIU A 20 SU I 25 D 90 GIU
FINE FINE

TERRENO
MURA QUADRATO
FACCIATA PORTONE RETTANGOLO
FINESTRA QUADRATO
CASA
TETTO TRIANGOLO
VEDUTA

RETTANGOLO
ALBERO
POLIGONO
STRUTTURA DELLA
ARCO PROCEDURA "VEDUTA
SOLE
RAGGIO
Allegato B: Archivi e procedure pag. 163

PROCEDURE CON ISTRUZIONE CONDIZIONALE E RICORSIVITÀ.

QUADR_2

PER QUADR :LATO Sottoprocedura fondamentale con una variabi-


RIPETI 4 [A :LATO D 90] le denominata:lato
FINE
Procedura con una variabile, una istruzione
PER QQ1 :LATO
condizionale (se verifichi questa condizione,
SE :LATO < 5 [STOP]
fermati) e una chiamata ricorsiva (nella terza
RIPETI 4 [A :LATO QQl :LATO / 2 D 90]
riga la procedura chiama se stessa).
FINE

PER QQ2 :LATO Come sopra


SE :LATO < 5 [STOP]
RIPETI 4 [A :LATO D 90]
QQ2 :LATO / 2
FINE

PER TANTIQUADR :VOLTE Procedura complessa: contiene una variabile,


SE :VOLTE = 0 [ST0P] una istruzione condizionale, chiama la
QUADR 50 D 45 sottoprocedura "Quadr" e include anche una
TANTIQUADR :VOLTE - 1 chiamata ricorsiva (nella quarta riga).
FINE

PER QUADRATI.CRESCENTI :LATO Come sopra


SE :LATO = 130 [STOP]
QUADR :LATO
QUADRATI.CRESCENTI :LATO + 10
FINE

PER QUADRATI.CONCENTRICI :LATO Come sopra


SE :LATO = 150 [STOP]
QUADR :LATO
SU S 90 A 5 D 90 I 5 GIU
QUADRATI.CONCENTRICI :LATO + 10
FINE

PER TANTIQUADRATI :VOLTE :LATO Procedura complessa: contiene ben due


SE :VOLTE < 1 [STOP] variabili, una istruzione condizionale, chiama
QUADR :LATO la sottoprocedura "Quadr" e include anche una
D :VOLTE * 4 chiamata ricorsiva (nella quinta riga).
TANTIQUADRATI :VOLTE - 1 :LATO
FINE

PER QUADR.CRESC :LATO Procedura molto complessa. Chiama, al


VAXY [-65 -65] secondo livello, la procedura ricorsiva
QUADRATI.CONCENTRICI :LATO "Quadrati.concentrici" che, a sua volta, nel
FINE proprio interno, chiama la procedura fonda-
mentale "Quadr".
pag. 164 Manuale Logo

OROLOGIO ALBERI

PER CRONOMETRO PER ALBERO.NATALE :L


QUADRANTE SU I 100 GIU
LANCETTA TRONCO :L
FINE A :L
CHIOMA :L
SU TANA GIU NT
PER QUADRANTE FINE
LOCALE “ORA
AS “ORA 0 PER ALBERO1 :LUNGH :BIFORC
RIPETI 12 [ORE :ORA AS “ORA :ORA + 1] SE :BIFORC = 0 [STOP]
FINE D 45 A :LUNGH
ALBERO1 :LUNGH :BIFORC - 1
PER LANCETTA I :LUNGH S 90 A :LUNGH
GIU ASCOL 1 A 50 ALBERO2 :LUNGH :BIFORC - 1
ASPETTA 10 CANCEPENNA I :LUNGH D 45
I 50 DESTRA 360 / 225 FINE
LANCETTA
FINE PER ALBERO2 :LUNGH
SE :LUNGH < 5 [STOP]
PER ORE :0 D 45 A :LUNGH
SU D :0 *30 A 40 GIU A 3 0 ALBERO2 :LUNGH / 2
SU TANA GIU I :LUNGH S 90 A :LUNGH
FINE ALBERO2 :LUNGH / 2
I :LUNGH D 45
FINE
ARIANNA
PER CHIOMA :L
S 90 RAMIS :L D 120 RAMID :L S 90
PER ARIANNA FINE
PS PT
PREPARA PER RAMID :L
MUOVI A 2 * :L / 3 D 120
FINE A :L / 4 S 120
A :L D 120
PER MUOVI A :L / 2 S 120
AS “M LC A 2 * :L D 120 A :L
SE NON ELE? :M [A D S I F] [MUOVI] FINE
SE :M = “A [A 10]
SE :M = “D [D 10] PER RAMIS :L
SE :M = “S [S 10] A :L D 120
SE :M = “I [I 10] A 2 * :L S 120
SE :M = “F [STOP] A :L / 2 D 120
MUOVI A :L S 120
FINE A :L / 4 D 120
A 2 * :L / 3
PER PREPARA FINE
SU AS “P LC
SE NON ELE? :P [A 5 D I V] [PREPARA] PER TRONCO :L
SE :P = “A [A 10] RIPETI 2 [A :L D 90 A :L / 4 D 90]
SE :P = “D [D 10] FINE
SE :P = “S [Sw 10]
SE :P = “I [I 10]
SE :P = “V [GIU STOP]
PREPARA
FINE
Allegato B: Archivi e procedure pag. 165

ANGOLO CAMPOFIO

PER ANGOLO PER BOCCIOLO


PS PT PREPARA RIPETI 2 [PETALO D 120]
SEGMENTO FINE
RUOTARE
LATO PER CAMPOFIORITO
SEGMENTO RIPETI 10 [SU I 50 GIU NT STELO 50 +
FINE ACASO 50 PIANTARE SU A 50 GIU]
SU TANA GIU
PER LATO FINE
PT ST [VERSO QUALE LATO? D / S]
AS “LATO LC PER FIORE
SE NON ELE? :LATO [D S] [LATO] RIPETI 8 [PETALO D 90]
SE :LATO = “D [D :G] FINE
SE :LATO = “S [S :G]
FINE PER PETALO
RIPETI 45 [A 1 D 1]
PER PREPARA D 135
SU AS “P LC RIPETI 45 [A 1 D 1]
SE NON ELE? :P [A S D I V] FINE
[PREPARA]
SE :P = “A [A 10] PER PIANTARE
SE :P = “S [S 10] SU D 90 A 30 GIU S 90
SE :P = “D [D 10] FINE
SE :P = “I [I 10]
SE :P = “V [GIU STOP] PER STELO :ALTEZZA
PREPARA A :ALTEZZA
FINE SE :ALTEZZA > 80 [FIORE]
[BOCCIOLO] ASDIR 0
PER RUOTARE I :ALTEZZA
PT ST [DI QUANTI GRADI ?] FINE
AS “G LP
SE NON NUMERO? :G [RUOTARE]
FINE

PER SEGMENTO
GIU A 100 SU I 100 GIU
FINE

DIST.POS

PER DIST.TANA PER QUADRATO :NUM


RIPORTA RADQ SOMMA XCOR * XCOR RIPORTA :NUM * :NUM
YCOR * YCOR FINE
¼?’RIPORTA RADQ SOMMA XCOR * XCOR
YCOR * YCOR PER RIF_POS
FINE D 10 * ACASO 36
A 10 * ACASO 10
PER DISTANZA :POSl :P052 ST DOVE
RIPORTA RADQ SOMMA QUADRATO ASPETTA 100
(PRI :POS1) - (PRI :POS2) QUADRATO RIF_POS
(ULT :POS1) (ULT POS2) FINE
FINE
pag. 166 Manuale Logo

CASACRE.CRE DIREZ
PER CASA :L PER DIR.OB
PARETE :L VERSI.POSSIBILI
SPO5T :L AS “VERSO LC
TETTO :L SE NON ELE? :VERSO [1 2 3 4] [DIR.OB]
FINE LUNGHEZZA
SE :VERSO = “1 [AS “DIR ACASO 90
PER CASACRESCE :L ASDIR - :DIR A :PASSI]
CASA :L SE :VERSO = “2 [ASDIR ACASO 90 A
SE :L > 60 [STOP] :PASSI]
PARTAVAN :L SE :VERSO = “3 [AS “DIR ACASO 90
CASACRESCE (:L + 10) ASDIR :DIR + 180 A :PASSI]
FINE SE :VERSO = “4 [AS “DIR ACASO 90
ASDIR 180 - :DIR A :PASSI]
PER DIMMI FINE
ST [DIGITA SU I 70 S 90 A 140 D 90 GIU
CASACRESCE 30] PER DIR.OR
FINE PT ST [SCEGLI IL VERSO : ]
ST [1 = DA DESTRA A SINISTRA]
ST [2 = DA SINISTRA A DESTRA]
AS “VERSO LC
PER PARETE :L SE NON ELE? :VERSO [1 2] [DIR.OR]
RIPETI 4 [A :L D 90] SE :VERSO = “1 [ASDIR -90]
FINE SE :VERSO = “2 [ASDIR 90]
LUNGHEZZA
PER PARETECRESCE :L GIU A :PASSI
PARETE :L FINE
PARETECRESCE (:L + 10)
FINE PER DIR.VE
PT ST [SCEGLI IL VERSO : ]
PER PARTAVAN :L ST [1 = DAL BASSO IN ALTO]
SU D 90 A (:L + 10) S 90 GIU ST [2 = DALL’ALTO IN BASSO]
FINE AS “VERSO LC
SE NON ELE? :VERSO [1 2] [DIR.VE]
PER PARTAVANCRESCE :L SE :VERSO = “1 [ASDIR 0]
PARTAVAN :L SE :VERSO = “2 [ASDIR 180]
PARTAVANCRESCE (:L + 10) LUNGHEZZA
FINE GIU A :PASSI
FINE
PER SPOST :L
A :L D 30 PER DIREZ
FINE PT ST [SCEGLI LA DIREZIONE : ]
ST [1 = ORIZZONTALE]
PER SPOSTCRESCE :L ST [2 = VERTICALE]
SPOST :L ST [3 = OBLIQUA]
SPOSTCRESCE (:L + 10) AS “D LC
SE NON ELE? :D [1 2 3] [DIREZ]
PER TETTO :L SE :D = “1 [DIR.OR]
RIPETI 3 [A :L D 120] SE :D = “2 [DIR.VE]
S 30 I :L SE :D = “3 [DIR.OB]
FINE FINE

PER TETTOCRESCE :L
TETTO :L
TETTOCRESCE (:L + 10)
FINE
Allegato B: Archivi e procedure pag. 167

MURO SPIRALI

PER DISEGNA.IL.MURO PER POLIALTERNO :L :ANG


SE CAMPO = “CHIUSO A :L D :ANG
[DISEGNA.MURO] SE DIR = 0 [STOP]
FINE POLIALTERNO :ANG :L
FINE
PER DISEGNA.MURO
LOCALE “CONDIZIONE. PRECEDENTE PER POLIGONALE :LATO :ANG
AS “CONDIZIONE.PRECEDENTE (LISTA LOCALE “PARTENZA
DOVE PENNA DIR) AS “PARTENZA DIR
SU A :LATO D :ANG
VAXY [-159 116] SE DIR = :PARTENZA [STOP]
ASDIR 90 POLIGONALE :LATO :ANG
GIU FINE
RIPETI 2 [A 318 D 90 A 232 D 90]
SU PER SPIRALI :L :ANG
VAXY PRI :CONDIZIONE.PRECEDENTE A :L D :ANG
ASPENNA ULT MENULT SE :L > 100 [STOP]
:CONDIZIONE.PRECEDENTE SPIRALI (:L + 5) :ANG
ASDIR ULT :CONDIZIONE.PRECEDENTE FINE
FINE
PER SPIRASEG :L :ANG
A :L D :ANG
SE :L > 80 [STOP]
SPIRASEG (:L + 5) :ANG
RAGNATEL.A FINE

PER SPIRIDUZ :L :ANG :RID


PER RAGNATELA :LATO SE :L < 5 LSTOP]
TELA :LATO A :L D :ANG
RAGNO SPIRIDUZ (:L - :RID) :ANG :RID
FINE FINE

PER RAGNO PER SPIRVAR :L :ANG :INCR


MT ASCOL 3 D 30 RIPETI 4 [ZAMPAD I A :L D :ANG
20 S 90 I 30 D 15] SE :L > 100 [STOP]
S 120 RIPETI 4 [ZAMPAS I 20 D 90 I 30 S SPIRVAR (:L + :INCR) :ANG :INCR
15] D 90 ASCOL 2 FINE
FINE
PER VOLUTA :L :ANG
PER TELA :LATO A :L D :ANG
SE LATO > 100 [STOP] SE :ANG > 100 [STOP]
NT RIPETI 6 [TRIANGOLOB :LATO D 60] VOLUTA :L (:ANG + 10)
TELA LATO + 10 FINE
FINE
PER VOLUTAVAR :L :ANG :INCR
PER TRIANGOLOB :LATO A :L D :ANG
RIPETI 3 [A :LATO D 120] SE :ANG > 100 (STOP]
FINE VOLUTAVAR :L (:ANG + :INCR) :INCR
FINE
PER ZAMPAD
A 30 D 90 A 20
FINE

PER ZAMPAS
A 30 S 90 A 20
FINE
pag. 168 Manuale Logo

ARCHIVI DI MATEMATICA
CERCHI

PER CERCHIO :RAGGIO PER TRIANGOLO. CIRCOSCRITTO : RAGGIO


LOCALE "LATO CERCHIO.C :RAGGIO
AS "LATO :RAGGIO * 2 * 3.1416 / 60 SU A :RAGGIO * 2 D 150 GIU
RIPETI 60 [A :LATO D 360 / 60] RIPETI 3 [A (2 * RADQ (4 * :RAGGIO *
:RAGGIO) - (:RAGGIO * :RAGGIO)) D 120]
FINE
SU TANA GIU
PER TUNNEL FINE
NT CERCHIO 20
CERCHIO 40 PER TRIANGOLO.INSCRITTO :RAGGIO
CERCHIO 60 CERCHIO.C :RAGGIO
CERCHIO 80 SU 5 90 A :RAGGIO D 150 GIU
CERCHIO 100 MT RIPETI 3 [A (RADQ (4 * :RAGGIO * :RAGGIO)
- (:RAGGIO * :RAGGIO)) D 120]
FINE
SU TANA GIU
PER ARCO.90 :RAGGIO FINE
LOCALE "LATO
AS "LATO :RAGGIO * 2 * 3.1416 / 60 PER QUADRATO.CIRCOSCRITTO :RAGGIO
RIPETI 60/4 [A :LATO D 360 / 60] CERCHIO.C :RAGGIO
FINE SU 5 90 A :RAGGIO D 90 A :RAGGIO GIU
RIPETI 4 [D 90 A (:RAGGIO * 2)]
PER PETALO :RAGGIO SU TANA GIU
RIPETI 2 [ARCO.90 :RAGGIO D 90] FINE
FINE
PER QUADRATO.INSCRITTO :RAGGIO
PER FIORE :RAGGIO CERCHIO.C :RAGGIO
RIPETI 5 [PETALO :RAGGIO D 360 / 5] SU 5 90 A RAGGIO D 135 GIU
FINE RIPETI 4 [A (RADQ (:RAGGIO * :RAGGIO) +
(:RAGGIO * :RAGGIO)) D 90]
PER CERCHIO.C :RAGGIO SU TANA GIU
LOCALE "LATO FINE
AS "LATO :RAGGIO * 2 * 3.1416 / 60
SU S 90 A :RAGGIO D 90 GIU PER ESAGONO.INSCRITTO :RAGGIO
RIPETI 60 [A :LATO D 360/60] CERCHIO.C :RAGGIO
SU D 90 A :RAGGIO S 90 GIU SU 5 90 A :RAGGIO D 120 GIU
FINE RIPETI 6 [A RAGGIO D 60]
SU TANA GIU
PER BERSAGLIO FINE
CERCHIO.C 20
CERCHIO.C 40
CERCHIO.C 60
CERCHIO.C 80
CERCHIO.C 100
FINE
Allegato B: Archivi e procedure pag. 169

CALCOLI CONICHE
PER ADDIZIONI PER ABS :X
ASMODO 1 PT SE :X < O [RIPORTA - :X]
AS “A ACASO 20 [RIPORTA :X]
AS “B ACASO 20 FINE
(STAMPA [QUAL E’ LA SOMMA DI] :A “+
:B) PER ASSI
AS “RISULT LP NT ASSFONDO 1 ASCOL 2
VERIFICA :RISULT = SOMMA :A :B VAXY [155 0] TANA
SEV [STAMPA [RISPOSTA ESATTA]] VAXY [-155 O] TANA
SEF [STAMPA FRASE [RISPOSTA VAXY [0 125] TANA
SBAGLIATA. LA SOMMA E’] SOMMA :A VAXY [0 -125] TANA
:B] ASCOL 6
FINE FINE

PER TABELLINE PER GRAFICO.P :X :A


ASMODO 1 STAMPA [ ] STAMPA [ ] LOCALE “Y
AS “A ACASO 10 + 1 AS “Y ( :X * :X) / (4 * :A)
AS “B ACASO 10 + 1 SE OPPURE ( :Y > 124) ( :Y < -124)
(STAMPA [QUANTO FA] :A “PER :B) [STOP]
AS “RISULT LP VAXY FRASE :X :Y
VERIFICA :RISULT = PRODOTTO :A :B GIU
SEV [STAMPA [RISPOSTA ESATTA]] GRAFICO.P :X + 5 :A
SEF [STAMPA FRASE [RISPOSTA FINE
SBAGLIATA. RISPOSTA GIUSTA]
PRODOTTO :A :B] PER PARABOLA :A
TABELLINE ASSCHERMO “TARTA
FINE ASSI SU
GRAFICO.P (- RADQ (118 * 4 * ABS :A))
:A
ASPETTA 100
ASSCHERMO “MISTO
ST [PARABOLA DI EQUAZIONE : ]

FUN_TRIG

PER CERCHIO :RAGGIO PER COTANGENTE :ANG


AS ‘NL 2 * :RAGGIO * 3.1416 / 60 ST QUOZIENTE COS :ANG SEN :ANG
SU S 90 A :RAGGIO D 90 GIU FINE
RIPETI 60 [A :NL D 360/60]
SU D 90 A :RAGGIO S 90 GIU PER SECANTE :ANG
FINE ST QUOZIENTE 1 COS :ANG
FINE
PER COSECANTE :ANG
ST QUOZIENTE 1 SEN :ANG PER SENO :ANG
FINE CERCHIO 100 ASDIR 90
A 100 I 100 S :ANG A 100
PER COSENO :ANG RIPORTA YCOR ,/ 100
CERCHIO 100 ASDIR 90 FINE
A 100 I 100 S :ANG A 100
RIPORTA XCOR / 100 PER TANGENTE :ANG
FINE ST QUOZIENTE SEN :ANG COS :ANG
FINE
pag. 170 Manuale Logo

CONNETTI.VI

PER CONNETTIVO.E ST [NEGATA CON IL CONNETTIVO “NON


PT LOCALE “X LOCALE “Y LOCALE “Z “,]
AS “X ACASO 100 ST [RISULTA VERA QUANDO E’ FALSA.]
AS “Y ACASO 100 ST [MENTRE RISULTA FALSA QUANDO
AS “Z ACASO 100 E’ > VERA.]
STAMPA (FRASE :X “< :Y [\ E (= AND)] :Y FINE
“< :Z)
ST [ ] PER CONNETTIVO.O
SE AMB :X <:Y :Y < :Z [STAMPA “VERO] PT LOCALE “X LOCALE “Y LOCALE “Z
[STAMPA “FALSO] AS “X ACASO 100
ST [ ] ST [ ] AS “Y ACASO 100
ST [DUE RELAZIONI,] AS “Z ACASO 100
ST [UNITE CON LA CONGIUNZIONE “E STAMPA (FRASE :X “< :Y [\ O (= OR)] :Y
“,] “< :Z)
ST [DANNO “VERO “, SOLTANTO ST [ ]
QUANDO] VERIFICA OPPURE ( :X < :Y) ( :Y < :Z)
ST [TUTTE E DUE RISULTANO VERE] SEV [STAMPA “VERO]
FINE SEF [STAMPA “FALSO]
ST [ ] ST [ ]
PER CONNETTIVO . NON ST [DUE RELAZIONI,]
PT LOCALE “X LOCALE “Y ST [UNITE CON LA DISGIUNZIONE “O “
AS “X ACASO 100 INCLUSIVA.]
AS “Y ACASO 100 ST [DANNO “VERO “, QUANDO E’ VERA
ST (FRASE :X [NON < (= NON MINORE L’UNA.]
DI)] :Y) ST [OPPURE QUANDO E’ VERA
ST [ ] L’ALTRA.]
VERIFICA :X < :Y ST [OPPURE QUANDO SONO VERE
SEV [ST “FALSO] TUTTE E DUE.]
SEF [ST “VERO] ST [ ]
ST [ ] ST [DANNO INVECE “FALSO “
ST [UNA RELAZIONE.] SOLTANTO NEL CASO]
ST [(IN QUESTO CASO E’ LA ST [CHE TUTTE E DUE RISULTANO
RELAZIONE “MINORE DI “)] FALSE]
FINE

GRAF.RETTA

PER ASSI PER RETTA1


NT ASSFONDO 1 ASCOL 2 ASSCHERMO “TARTA
VAXY [155 0] TANA ASSI SU
VAXY [-155 0] TANA GRAFICO.RETTA1 0
VAXY [0 125] TANA ASPETTA 100
VAXY [0 -125] TANA ASSCHERMO “MISTO
ASCOL 6 STAMPA [RETTA DI EQUAZIONE : X
FINE = Y + 25]
STAMPA [E’ RAPPRESENTATA
PER GRAFICO.RETTA1 :X NELL’INTERVALLO : ]
SE :X = 180 [STOP] STAMPA [DA (- 100, -75) A (100,125)]
VAXY FRASE (:X - 100) ((:X + 25) - 100) FINE
GIU
GRAFICO.RETTA1 :X + 1
FINE
Allegato B: Archivi e procedure pag. 171

FUNZIONI MCD_MCM
PER CUBO :NUM PER MCD :A :B
RIPORTA :NUM * QUADRATO :NUM SE :A = :B [RIPORTA :A]
FINE SE :A < :B [RIPORTA MCD :B :A]
[RIPORTA MCD (:A - :B) :B]
PER ERONE :A :B :C FINE
AS “X :A + :B AS "Y :A + :C
AS “Z :B + :C
VERIFICA (OPPURE ( :X < :C) ( :Y < :B) ( PER MCD1 :A :B
:Z < A) VERIFICA :A > :B
SEV [RIPORTA FERMATI :A :B :C SEV [AS “A :A - :B]
[CAMBIA I DATI]] SEF [AS “B :B - A]
SEF [RIPORTA PROSEGUI :A :B :C] ST FRASE :A :B
FINE SE :A = :B [RIPORTA :A]
RIPORTA MCD1 :A :B
PER EUCLIDE :Nl :N2 FINE
SE :N1 = :N2 [RIPORTA :N1]
SE :N1<:N2 [RIPORTA EUCLIDE :N2 :N1]
[RIPORTA EUCLIDE (:N1 - :N2) :N2] PER MCD2 :LISTA
FINE SE 2 = CONTA :LISTA [RIPORTA MCD1
PRI :LISTA ULT :LISTA]
PER FATTORIALE :N AS “LISTA INPRI (MCD1 ELE 1 :LISTA
SE :N = 1 [RIPORTA 1] ELE 2 :LISTA) MENPRI MENPRI :LISTA
[RIPORTA :N * FATTORIALE (:N - 1)] RIPORTA MCD2 :LISTA
FINE FINE

PER FERMATI :A :B :C
STAMPA [DATI SBAGLIATI] PER MCDVELOX :A E
STAMPA [NON SI PUO’ DISEGNARE UN SE :A - (:B * INT :A / :B) = 0 [RIPORTA
TRIANGOLO] :B]
STAMPA (FRASE [CON LATI DI [RIPORTA MCDVELOX :B (:A - (:E * INT
LUNGHEZZA] :A :B :C) :A / :B))]
FINE FINE

PER IPOTENUSA :CAT1 :CAT2


RIPORTA RADQ ((QUADRATO CAT1) PER MCM :A :B
+ (QUADRATO :CAT2)) VERIFICA :A > :B
FINE SEV [AS “MAGGIORE :A AS
“INCREMENTO :A AS “MINORE :B]
PER OPPOSTO :NUM SEF [AS “MAGGIORE :B AS
RIPORTA - ( :NUM) “INCREMENTO :B AS “MINORE :A]
FINE QUI “0
ST FRASE :MAGGIORE :MINORE
PER PROSEGUI A :B :C VERIFICA (:MAGGIORE / :MINORE) =
AS “P ( :A + :B + :C) / 2 INT (:MAGGIORE / MINORE)
STAMPA [AREA DEL TRIANGOLO] SEV [ST FRASE [IL MCM E’]
STAMPA (FRASE [CON LATI DI] :A “, :B “, :MAGGIORE STOP]
:C “: SEF [AS “MAGGIORE (:MAGGIORE +
RIPORTA RADQ (:P * (:P - A) * (:P - :B) * :INCREMENTO)]
(:P - :C))) VAI “0
FINE FINE
PER QUADRATO :NUM
RIPORTA :NUM * :NUM
FINE PER MCM1 :A :B
[RIPORTA (:A * :B) / MCD :A :B]
FINE
pag. 172 Manuale Logo

HANOI
PER HANOI :N :A :B :C PER SPIEGAZIONI
ASMODO 2 PT VERIFICA :N = 1 ASMODO 2
SEV [SPOSTARE] SEF [RISOLUZIONE] STAMPA [ ]
FINE STAMPA [ATTIVARE LE PROCEDURE
CON L’INVOCAZIONE : ]
PER METTERE :L STAMPA [ ]
STAMPA (FRASE [METTERE IN] CAR 32 STAMPA [HANOI 3 (OPPURE : 4, 5. .....)
:L) “A “B “C]
FINE FINE

PER RISOLUZIONE PER SPOSTARE


RISOLVI (:N - 1) :A :C :B TOGLIERE :A
RISOLVI 1 :A :B :C METTERE :B
RISOLVI (:N - 1) :C :B :A FINE
FINE
PER TOGLIERE :L
PER RISOLVI :N :A :B :C SCRIVI (FRASE [TOGLIERE DA] CAR 32
VERIFICA :N = 1 :L CAR 32)
SEV [SPOSTARE] FINE
SEF [RISOLUZIONE]
FINE

INDOVINA

PER INDOVINA PER LEGGI NUMERO


PT ST [ ] AS “TENT 0 QUI “NONNUMERO
AS “NUM 1 + ACASO 100 AS “NUMERO LEGGIPAROLA
ST [HO SCELTO UN NUMERO DA 1 A 100] SE NON NUMERO? :NUMERO [VAI
ST [ ] “NONNUMERO]
ST [CERCA DI INDOVINARLO E SCRIVILO RIPORTA :NUMERO
SOTTO] ST [ ] FINE
ST [IO TI AIUTERO’ CON QUALCHE
INDICAZIONE] ST [ ] PER 0K
GIOCO ST [ ]
FINE ST [BRAVO! HAI INDOVINATO]
ST [ ]
PER FINIRE ST FRASE [ERRORI COMMESSI] :TENTAT
PT ST [CIAO ... AL PROSSIMO INCONTRO!] -1
[BREAK] [SCELTA]
FINE FINE

PER GIOCO PER SCELTA


AS “TENT :TENT + 1 RIPETI 3 [ST [ ] ]
AS “IND LEGGINUMERO ST [VUOI CONTINUARE? C / F] ST [ ]
SE :NUM = :IND [0K] ST [C = CONTINUARE; F = FINIRE]
SE :NUM > :IND [ST [IL MIO NUMERO E’ AS “SCE LC
MAGGIORE]]
SE NON ELE? :SCE [C F] [SCELTA]
SE :NUM < :IND [ST [IL MIO NUMERO E’
MINORE]] SE :SCE = “C [INDOVINA]
GIOCO SE :SCE = “F [FINIRE]
FINE FINE
Allegato B: Archivi e procedure pag. 173

ISOMETRI.E

PER ASSI.CARTES ASSCHERMO “MISTO NT


PS NT ST [SIMMETRIA RISPETTO ALL’ASSE
VAX 135 VAX -135 TANA DELLE Y]
A 125 I 250 TANA ASPETTA 100
ASSCHERMO “TARTA MT TRIANGOLO.4
FINE FINE

PER ROTAZIONE.A PER TRASLAZIONE


ASSI .CARTES ASSI .CARTES
TRIANGOLO.1 TRIANGOLO.1
ASSCHERMO “MISTO NT ASSCHERMO “MISTO NT
ST [SIMMETRIA RISPETTO ALL’ASSE ST [TRASLAZIONE DI PASSO P = (X +
DELLE X] 150) (Y + 100)]
ASPETTA 100 ASPETTA 100
TRIANGOLO.3 TRIANGOLO.2
ST [SEGUITA DA] FINE
ST [SIMMETRIA RISPETTO ALL’ASSE
DELLE Y] PER TRIANGOLO.1
ASPETTA 100 SU VAXY [-100 -50]
TRIANGOLO.5 GIU VAXY [-100 -20]
ST [EQUIVALE A ROTAZIONE] VAXY [-30 -50]
FINE VAXY [-100 -50]
FINE
PER ROTAZIONE.B
ASSI .CARTES PER TRIANGOLO.2
TRIANGOLO.1 SU VAXY [50 50]
ASSCHERMO “MISTO NT GIU VAXY [50 80]
ST [SIMMETRIA RISPETTO ALL’ASSE VAXY [120 50]
DELLE Y] VAXY [50 50]
ASPETTA 100 FINE
TRIANGOLO.4
ST [SEGUITA DA] PER TRIANGOLO.3
ST [SIMMETRIA RISPETTO ALL’ASSE SU VAXY [-100 50]
DELLE X] GIU VAXY [-100 20]
ASPETTA 100 VAXY [-30 50]
TRIANGOLO.5 VAXY [-100 50]
ST [EQUIVALE A ROTAZIONE] FINE
FINE
PER TRIANGOLO.4
SU VAXY [100 -50]
PER SIMMETRIA.X GIU VAXY [100 -20]
ASSI .CARTES VAXY [30 -50]
TRIANGOLO.1 VAXY [100 -50]
ASSCHERMO “MISTO NT FINE
ST [SIMMETRIA RISPETTO ALL’ASSE
DELLE X] PER TRIANGOLO.5
ASPETTA 100 SU VAXY [100 50]
TRIANGOLO.3 GIU VAXY [100 20]
FINE VAXY [30 50]
VAXY [100 50]
PER SIMMETRIA.Y FINE
ASSI .CARTES
TRIANGOLO.1
pag. 174 Manuale Logo

PERIAREA AREAPERI

PER PERIAREA PER AREAPERI


PS PT NT ASCOL 1 + ACASO 3 PS PT NT AS “E 1 + ACASO 2
ST [VUOI IL PERIMETRO O L’AREA? (P / A)] SE :E = 1 [RETT]
ST [ ] SE :E = 2 [AREA]
ST [PER FINIRE DIGITA F] ST [CHE COSA E’, PERIMETRO O AREA?]
SCELTA ST [ ]
FINE ST [P = PERIMETRO; A = AREA; F = FINE]
RISPOSTA
PER AREA FINE
RIPETI 2 [A 70 D 90 A 90 D 90]
D 5 SU A 10 GIU RIEMPi SU I 10 GIU S 5 PER RISPOSTA
FINE AS "R LC
SE NON ELE? :R [P A F] [RISPOSTA
PER RETT SE :R = "F [FINIRE]
RIPETI 2 [A 70 D 90 A 90 D 90] SE NON :R = "F [CONTROLLA AREAPERI]
FINE FINE

PER SCELTA PER CONTROLLA


AS "SCE LC SE AMB (:R = "P) (:E = 1) [PT ST [ESATTO,
SE NON ELE? :SCE [P A F] [SCELTA] BRAVO!]]
SE :SCE = "F [FINIRE] SE AMB (:R = “A) (:E = 2) [PT ST [ESATTO,
BRAVO!]]
SE :SCE = "P [RETT MESSAGGIO]
SE :SCE = "A [AREA MESSAGGIO] SE AMB (:R = “A) (:E = 1) [PT ST
[SBAGLIATO, QUESTO E’
FINE
IL PERIMETRO]]
PER MESSAGGIO SE AMB (:R = "P) (:E = 2) [PT ST
[SBAGLIATO QUESTA E' L'AREA]]
SE :SCE = “P [PT ST [QUESTO E’ IL
PERIMETRO]] ASPETTA 100
SE :SCE = “A [PT ST [QUESTA E’ L’AREA]] FINE
ASPETTA 50
PER AREA
PERIAREA
RIPETI 2 [A 70 D 90 A 90 D 90]
FINE
D 5 SU A 10 GIU RIEMPI SU I 10 GIU S 5
PER FINIRE FINE
PT ST [CIAO ... ALLA PROSSIMA!!] [STOP]
PER RETT
FINE
RIPETI 2 [A 70 D 90 A 90 D 90]
FINE

PER FINIRE
PT ST [CIAO ... ALLA PROSSIMA!!] [STOP]
FINE
Allegato B: Archivi e procedure pag. 175

TABELLIN.E

PER TABELLINE “NONNUMERO]


PT AS ‘1TENTAT 0 RIPORTA :NUMERO
AS “X 1 + ACASO 10 AS “Y 1 + ACASO 10 FINE
(ST [QUANTO FA’] :X [PER] :Y [?])
CONTROLLA PER 0K
FINE ST [ ] ST [BRAVO! HAI INDOVINATO] ST [ ]
ST FRASE [ERRORI COMMESSI] :TENT - 1
PER DOMANDA [SCELTA]
(ST [QUANTO FA’] :X [PER] :Y [?]) FINE
CONTROLLA
FINE PER FINIRE
PT ST [CIAO ... AL PROSSIMO INCONTRO!]
PER CONTROLLA [BREAK]
AS “TENTAT :TENTAT + 1 AS “RISP FINE
LEGGINUMERO
SE :RISP = :X * :Y [0K] ST [ ] ST [ ] PER SCELTA
ST [HAI SBAGLIATO. TORNO A RIPETI 3 [ST [ ]]
CHIEDERTI] ST [ ]
ST [VUOI CONTINUARE? C / F] ST [ ]
DOMANDA
ST [C = CONTINUARE; F = FINIRE]
FINE
AS “SCE LC
PER LEGGI NUMERO SE NON ELE? :SCE [C F] [SCELTA]
QUI “NONNUMERO SE :SCE = “C [TABELLINE]
AS “NUMERO LEGGIPAROLA SE :SCE = “F [FINIRE]
SE NON NUMERO? :NUMERO [VAI 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 )

Potrebbero piacerti anche