Il LOGO la programmazione un gioco nessuna pretesa



![Introduzione concetti: procedura • • • TO BOX REPEAT 4 [FD 100 RT 90] Introduzione concetti: procedura • • • TO BOX REPEAT 4 [FD 100 RT 90]](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-4.jpg)

![Qualche cammino • • • repeat 4 [fd 50 rt 90] repeat 5 [fd Qualche cammino • • • repeat 4 [fd 50 rt 90] repeat 5 [fd](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-6.jpg)






![Strutture di controllo • ifelse test [ do if true list ] [do if Strutture di controllo • ifelse test [ do if true list ] [do if](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-13.jpg)
![Esempi • • • make "stati [italia francia spagna] label : stati Oppure label Esempi • • • make "stati [italia francia spagna] label : stati Oppure label](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-14.jpg)
![Esempi • • • make first [gatto cane] first [Meo Lilli] pr : gatto Esempi • • • make first [gatto cane] first [Meo Lilli] pr : gatto](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-15.jpg)
![Esempi • for [red 0 255] [for [green 0 255] [setpixel (list : red Esempi • for [red 0 255] [for [green 0 255] [setpixel (list : red](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-16.jpg)
![Strutture di controllo • OPERAZIONE [una lista di comandi] [vari dati] • show map Strutture di controllo • OPERAZIONE [una lista di comandi] [vari dati] • show map](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-17.jpg)


![Indici dei Colori • • • • 0 -> [ 0 0 0] 1 Indici dei Colori • • • • 0 -> [ 0 0 0] 1](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-20.jpg)
![Altro esempio to segna_percorso setpc 4 setpensize [ 20 20 ] rt 60 fd Altro esempio to segna_percorso setpc 4 setpensize [ 20 20 ] rt 60 fd](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-21.jpg)

![Funziona? • • to segui_traccia setpc 0 setpensize [ 1 1 ] repeat 10000 Funziona? • • to segui_traccia setpc 0 setpensize [ 1 1 ] repeat 10000](https://slidetodoc.com/presentation_image/312029a09dbc649b61343e0e665f3011/image-23.jpg)


- Slides: 25
Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw
Caratteristiche generali • Linguaggio interpretato • Scritto su linee. Ogni linea è una chiamata di funzione di tipo – Comando (con effetti ma senza valore) print, . . – Operazione (con valore come output) sum, list, . . – Un sottoinsieme di operazioni è costituito dai predicati che assumono il valore true false
Ciao. Mondo!! • label “ciaomondo!! • Scegliere la grandezza, il colore della penna e scrivere • repeat 36 [label "ciaomondo!! rt 10 setpencolor repcount]
Introduzione concetti: procedura • • • TO BOX REPEAT 4 [FD 100 RT 90] END E se vogliamo 2 quadrati? TO BOXES REPEAT 4 [FD 100 RT 90] RT 90 PU FD 120 PD LT 90 REPEAT 4 [FD 100 RT 90] END
Introduzione variabili • E se devono essere tanti? E di grandezza qualunque? • Studio delle figure poligonali e “geometria della tartaruga”. • Vediamo qualche cammino.
Qualche cammino • • • repeat 4 [fd 50 rt 90] repeat 5 [fd 50 rt 72] repeat 6 [fd 50 rt 60] repeat 5 [fd 50 rt 144] repeat 3 [fd 50 rt 120] Può la tartaruga decidere che il cammino si chiude?
Generalità • Le espressioni possono essere primitive o definite dall’utente. • Possono avere 0, 1, più parametri • Si usa la notazione infissa – Sum : x : y – ….
I dati • Possono essere – Parole – Liste – Vettori – I numeri sono casi particolari di parole. – Non c’è il sistema forte dei tipi: l’interprete lo decide dal contesto.
I dati • due simboli particolari – : per indicare “il contenuto di. . ” • Si tratta di un uso molto utile per ricordare allo studente il concetto di variabile. – Quotazione o “ • Si tratta di un simbolo che indica nessuna valutazione. • Il numero è un caso speciale di autovalutazione “ 2 2
Assegnamento • make “ x sum : y 3 – ha due parametri. L’effetto sta nel porre nel primo parametro la valutazione del secondo – Sum : y 3 – dove si indica di effettuare la somma tra il contenuto di y e il numero 3 • Il secondo parametro è passato per valore, il primo per indirizzo
Assegnamento • Indirizzamento indiretto – make "x 45 – make : x 3 – print : 45 • Scoping – Le variabili non devono essere dichiarate e sono globali. Possono essere dichiarate locali a una procedura e vale lo scoping dinamico. – I parametri delle procedure creano variabili locali
Liste • Rispetto ai vettori sono espandibili – first, last, butfirst, butlast, member, item. – sentence fput, lput • Coda con le operazioni queue, dequeue, • Stack con le operazioni push and pop • La ricorsione è il modo naturale di trattare con le liste.
Strutture di controllo • ifelse test [ do if true list ] [do if false list] • repeat number [instruction list] • • Altre istruzioni iterative ma si raccomanda l’uso ricorsivo
Esempi • • • make "stati [italia francia spagna] label : stati Oppure label thing “stati label first : stati pr first [italia francia spagna] pr last [italia francia spagna] pr butfirst [italia francia spagna] show butfirst [italia francia spagna] ct
Esempi • • • make first [gatto cane] first [Meo Lilli] pr : gatto ? ? make "Meo "gatto pr : meo ? ? make : meo "graffia pr : gatto ( o pr thing : meo) ? ?
Esempi • for [red 0 255] [for [green 0 255] [setpixel (list : red : green 0) fd 1] bk 256 rt 90 fd 1 lt 90]
Strutture di controllo • OPERAZIONE [una lista di comandi] [vari dati] • show map [? * ? ] [ 5 6 7 ] • [25 36 49]
Esempio to vai ; sceglie un punto sullo schermo pu setxy -250 + random 500 -150 + random 300 pd rt random 360 ; sceglie l'inclinazione end
Esempio to galassia : num ; traccia ‘: num’ stelle repeat : num [ vai star random 50 ] ; di ampiezza arbitraria end to star : size repeat 5 [fd : size rt 144 ] end
Indici dei Colori • • • • 0 -> [ 0 0 0] 1 -> [ 0 0 255] 2 -> [ 0 255 0] 3 -> [ 0 255] 4 -> [255 0 0] 5 -> [255 0 255] 6 -> [255 0] 7 -> [255 255] 8 -> [155 96 59] 9 -> [197 136 18] 10 -> [100 162 64] 11 -> [120 187] 12 -> [255 149 119] 13 -> [144 113 208] 14 -> [255 163 0] 15 -> [183 183]
Altro esempio to segna_percorso setpc 4 setpensize [ 20 20 ] rt 60 fd 60 rt 40 fd 120 rt 100 fd 150 rt 90 fd 120 rt 65 fd 80 end Una "strada" su un burrone! Costringiamo dentro la tartaruga
Metodologie interessanti • to cambia_direzione • bk 1 rt 30 • end • • to controlla pu fd 1 output pixel end • to cammina • bk 1 pd fd 1 • end
Funziona? • • to segui_traccia setpc 0 setpensize [ 1 1 ] repeat 10000 [ ifelse or ( 4 = controlla ) ( 0 = controlla ) [cammina] [ wait 5 cambia_direzione ] ] end
Lezione appresa • Scrivere bene i controlli • Anche la correzione non è soddisfacente. • Un po’ di fantasia non guasta!! • • windowcreate "uno "finestra "titolo 0 0 100 [] windowcreate "finestramia "titolo 25 25 50 25 [] staticcreate "finestramia "static 1 [Heading=0] 25 25 50 25 repeat 72 [rt 5 staticupdate "static 1 se [Heading=] heading wait 60] • windowdelete “finestra
Esempio to usofinestre local "wnx make "wnx 100 local "wny make "wny 90 local "marx make "marx 5 local "mary make "mary 20 local "sizx make "sizx 10 local "sizy make "sizy 10 windowcreate "main "earth [Saluto] 0 0 : wnx : wny [] buttoncreate "earth "bm "* : marx+: sizx*4 : mary+: sizy*1 : sizx : sizy [galassia 50] staticcreate "earth "bw [Hello World] 25 50 50 25 staticcreate "earth "bt bf time 25 5 50 25 end windowdelete "earth