M - LOGO - Provveditorato Viterbo

Transcript

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