Il LOGO la programmazione un gioco nessuna pretesa
- 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
- Il gioco del pollo
- Finestra di johari gioco
- Rotazioni pallavolo
- Lo sparviero gioco
- Pittori neoclassici
- Regole del gioco acchiapparella
- Come creare un gioco
- Meme sul gioco d'azzardo
- Gioco acchiapparella
- Funzione educativa del gioco
- Persone ammesse nel recinto di gioco 2021
- Diritto al gioco e allo svago
- Gioco del patriarca matematica
- Giocopoiesi
- Gioco bambini
- Esercizi programmazione concorrente java
- Programmazione religione scuola infanzia 2019-2020
- Strumenti di programmazione del comune
- Programmazione distribuita
- Programmazione reticolare
- Programmazione ad eventi
- Osu! linguaggio di programmazione
- Linguaggi di alto livello
- Programmazione midi
- Modelli di programmazione lineare
- Ambienti di programmazione per il software di base