Il LOGO la programmazione un gioco nessuna pretesa

  • Slides: 25
Download presentation
Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw

Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw

Caratteristiche generali • Linguaggio interpretato • Scritto su linee. Ogni linea è una chiamata

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

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]

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

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

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,

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

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

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

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 –

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.

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

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

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

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

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

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

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 [

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

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

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 • •

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

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.

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

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