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

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

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

Page 1: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Il LOGO

la programmazione è un gioco!

nessuna pretesa da ingegneria del sw

Page 2: 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

Page 3: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

CiaoMondo!!

• label “ciaomondo!!

• Scegliere la grandezza, il colore della penna e scrivere

• repeat 36 [label "ciaomondo!! rt 10 setpencolor repcount]

Page 4: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 5: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Introduzione variabili

• E se devono essere tanti? E di grandezza qualunque?

• Studio delle figure poligonali e “geometria della tartaruga”.

• Vediamo qualche cammino.

Page 6: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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?

Page 7: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Generalità

• Le espressioni possono essere primitive o definite dall’utente.

• Possono avere 0, 1, più parametri

• Si usa la notazione infissa – Sum :x :y– ….

Page 8: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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.

Page 9: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 10: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 11: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 12: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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.

Page 13: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 14: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 15: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Esempi

• make first [gatto cane] first [Meo Lilli]• pr :gatto• ??• make "Meo "gatto• pr :meo• ??• make :meo "graffia• pr :gatto ( o pr thing :meo)• ??

Page 16: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Esempi

• for [red 0 255] [for [green 0 255] [setpixel (list :red :green 0) fd 1] bk 256 rt 90 fd 1 lt 90]

Page 17: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Strutture di controllo

• OPERAZIONE [una lista di comandi] [vari dati]

• show map [? * ? ] [ 5 6 7 ]

• [25 36 49]

Page 18: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Esempio

to vai ;sceglie un punto sullo schermo

pu setxy -250 + random 500 -150 + random 300 pd

rt random 360 ;sceglie l'inclinazione

end

Page 19: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Esempio

to galassia :num ;traccia ‘:num’ stelle

repeat :num [ vai star random 50 ] ;di ampiezza arbitraria

endto star :size repeat 5 [fd :size rt 144 ] end

Page 20: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Indici dei Colori• 0 -> [ 0 0 0]• 1 -> [ 0 0 255]• 2 -> [ 0 255 0]• 3 -> [ 0 255 255]• 4 -> [255 0 0]• 5 -> [255 0 255]• 6 -> [255 255 0]• 7 -> [255 255 255]• 8 -> [155 96 59]• 9 -> [197 136 18]• 10 -> [100 162 64]• 11 -> [120 187 187]• 12 -> [255 149 119]• 13 -> [144 113 208]• 14 -> [255 163 0]• 15 -> [183 183 183]

Page 21: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Altro esempio

to segna_percorsosetpc 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

Page 22: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

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

Page 23: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Funziona?

• to segui_traccia • setpc 0 • setpensize [ 1 1 ] • repeat 10000 [• ifelse or ( 4 = controlla ) ( 0 = controlla ) • [cammina] [ wait 5 cambia_direzione ] • ]• end

Page 24: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Lezione appresa

• Scrivere bene i controlli• Anche la correzione non è soddisfacente.• Un po’ di fantasia non guasta!!

• windowcreate "uno "finestra "titolo 0 0 100 100 []• windowcreate "finestra "finestramia "titolo 25 25 50 25 []• staticcreate "finestramia "static1 [Heading=0] 25 25 50 25• repeat 72 [rt 5 staticupdate "static1 se [Heading=] heading

wait 60]• windowdelete “finestra

Page 25: Il LOGO la programmazione è un gioco! nessuna pretesa da ingegneria del sw.

Esempioto usofinestrelocal "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 endwindowdelete "earth