logo - di.unito.itrossano/DIDATTICA/MDAMS-0203/lezione17.pdf · Logo. • La tartaruga è...
Transcript of logo - di.unito.itrossano/DIDATTICA/MDAMS-0203/lezione17.pdf · Logo. • La tartaruga è...
1
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Logo
• Logo è un linguaggio di programmazione essenzialmente didattico;
• È orientato alla creazione di grafica vettoriale, ma può essere usato per fare qualsiasi tipo di programma;
• MSWLogo è una versione che funziona in ambiente Microsoft.
• URL sito:
http://www.softronix.com/logo.html (Setup Kit)
2
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Programmare una tartaruga
• MIT, anni ‘50: primi linguaggi per programmare piccoli robot (dalla forma di tartaruga);
• Seymour Papert, anni ‘60: introduce un linguaggio per fare programmare i robot dai bambini. Nasce il Logo.
• La tartaruga è rappresentata in MSWLogo da un triangolo:
3
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
L’interfaccia di MSWLogo
Tartarugain posizioneiniziale (home)
Area di lavoro
4
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
L’interfaccia di Logo
Linea comandi Logo
“Storia” comandi eseguiti
5
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
I primi comandi
• Forward n (fd); (n è un numero)• Back n (bk); (idem)• Left a (lt); (a è un angolo espresso in gradi)• Right a (rt); (idem)• Home; • ClearScreen (cs);
6
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Disegnare un quadrato
Suddivisione del problema in sottoproblemi:
1. Disegnare il primo lato di 100 pixel;
2. Disegnare il secondo lato di 100 pixel;
3. Disegnare il terzo lato di 100 pixel;
4. Disegnare il quarto lato di 100 pixel;
5. Tornare alla condizione di partenza.
7
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Un primo esempio: un quadrato
8
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Il programma per disegnare un quadrato
�� ���
�� ��
�� ���
�� ��
�� ���
�� ��
��
9
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esercizi
1. Costruire un quadrato partendo dal lato più a destra (suggerimento: la costruzione avverrebbe in senso antiorario);
2. Disegnare un rettangolo con la base lunga 100 pixel e l’altezza lunga 25 pixel;
3. Disegnare un triangolo equilatero (i.e., ha tutti i lati uguali ma anche tutti gli angoli uguali a 60 gradi);
4. Disegnare un triangolo isoscele;5. Disegnare un pentagono;
10
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
180° – 60° = 120°
120°
fd 100
rt 120fd 100
fd 100
rt 120
Osservazione
11
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Altri comandi importanti
• PenUp – (PU);• PenDown – (PD);• PenErase – (PE);• PenPaint – (PPT);• SetPenColor (list Red Green Blue);• Bye.
12
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici
Esercizio:
Disegnare i quadrati
riportati in figura
13
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici
Suddivisione del problema in sottoproblemi:
1. Disegnare il primo quadrato (lato di 100 pixel);
2. Posizionarsi per il secondo quadrato;
3. Cambiare colore (rosso);
4. Disegnare il secondo quadrato (lato di 50 pixel);
5. Tornare alla condizione di partenza.
14
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici
Primo quadrato:
fd 100rt 90fd 100rt 90fd 100home
15
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici
pufd 25rt 90
fd 25pd
setpencolor (list 255 0 0)cambiamo colore:
16
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Altri Colori
17
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici
Secondo quadrato:
fd 50lt 90fd 50lt 90fd 50lt 90fd 50lt 90
Ritorno a casa:
puhomepd
18
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Il programma per disegnare due quadratifd 100rt 90fd 100rt 90fd 100homepufd 25rt 90fd 25pdsetpencolor (list 255 0 0)fd 50lt 90fd 50lt 90fd 50lt 90
fd 50lt 90puhomepd
19
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Cicli iterativi: Repeat
Sintassi: Repeat n [ comando1 comando2 …]
Semantica:per un numero n di volte, vengono eseguiti i comandi tra parentesi quadre.
20
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esempi di cicli
• Disegnare un triangolo equilatero: repeat 3 [ fd 100 rt 120 ]
• Disegnare un pentagono: repeat 5 [ fd 100 rt 72 ]
• Disegnare un rettangolo 100x25:repeat 2 [ fd 100 rt 90 fd 25 rt 90 ]
21
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esercizi
• Disegnare un cerchio (sembra assurdo, ma…);
• Capire il seguente programma e cosa disegna prima ancora di eseguirlo:
repeat 2 [ fd 100 pu rt 90 fd 25 rt 90 pd ]rt 90 repeat 2 [ fd 25 pu lt 90 fd 100 lt 90 pd ]lt 90
22
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Funzioni e procedure
• Buona programmazione:– Semplificare la leggibilità del codice;– Ridurre la complessità;– Creare moduli per ogni sottoproblema;
• Per ogni modulo, scrivere:– Una procedura, oppure– Una funzione (se si vuole un risultato in output).
23
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Funzioni e procedure
• Un programma viene ad essere suddiviso in:– una procedura principale (main) richiamata appena si
esegue il programma– una serie di procedure secondarie (i moduli) richiamate
per essere eseguite dalla procedura principale o da altre procedure secondarie
24
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Procedura
• Per ogni procedura abbiamo:– Un nome (ad esempio: quadrato)– Un codice (ad esempio: repeat 4 [ fd 100 rt 90 ] )
• Una procedura viene chiamata utilizzando il suo nome.• Prima di poter chiamare una procedura, dobbiamo
definirla.
25
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definire una procedura: il nome
• To nome_procedura– Ad esempio: definiamo la funzione quadrato:
26
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definire una procedura: il codice
• Scrivere il codice nella finestra che appare:– Ad esempio: repeat 4 [ fd 100 rt 90 ]
• Quando il codice è finito, battere End e poi cliccare su OK.
27
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Modificare una procedura: l’editor
• Edit “nome_procedura– Ad esempio: Edit “quadrato
28
Chiamare una procedura
• Scrivere il nome– Esempio: quadrato
Definizione
Informazione diMSWLogo sulladefinizione
Invocato Editor della procedura
Chiamata
Risultato della chiamata
29
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici II
Suddivione del problema in sottoproblemi:
1. Disegnare il primo quadrato (lato di 100 pixel);
2. Posizionarsi per il secondo quadrato;
3. Cambiare colore (rosso);
4. Disegnare il secondo quadrato (lato di 50 pixel);
5. Tornare alla condizione di partenza.
30
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici II
Suddivisione in moduli (procedura principale):
1. Quadrato1
2. Posizionamento
3. Cambia_in_rosso
4. Quadrato2
5. My_home
31
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definizione: quadrato1
to quadrato1repeat 4 [ fd 100 rt 90 ]
end
32
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definizione: quadrato2
to quadrato2repeat 4 [ fd 50 rt 90 ]
end
33
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definizione: posizionamento
to posizionamentopufd 25rt 90fd 25lt 90pd
end
34
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definizione: cambia_in_rosso
to cambia_in_rossosetpencolor (list 255 0 0)
end
35
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definizione: my_home
to my_homepuhomepdsetpencolor (list 0 0 0)
end
36
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Definizione: procedura principale
to mainquadrato1posizionamentocambia_in_rossoquadrato2my_home
end
37
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esecuzione del programma
Battere main nella Commander Window di Logo.
38
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Ricapitolando: un passo avanti verso……
• Possibilità di generalizzare un programma: se volessi disegnare un quadrato di 125 e uno interno di 75 mi basta modificare le procedure quadrato1 e quadrato2
• Suddivisione in moduli (procedure) che risolvono in maniera indipendente i sottoproblemi
• In maniera indipendente, i.e., la modifica di una procedura non deve influire sulle altre
• A tal fine è bene fare riferimento alle coordinate assolute
39
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Salvare e Caricare un programma
• Save “nome_file.lgo– Esempio: save “due_quadrati.lgo
• Load “nome_file.lgo– Esempio: load “due_quadrati.lgo
• Oppure:– File > Save as– File > Load
40
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esercizio
Disegnare la casa riportata in figura.
Ricordare di: 1. Suddividere il problema
in sottoproblemi;2. Scrivere una procedura
per ogni modulo;3. Scrivere una procedura
principale;
41
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Osservazione
• È consigliabile scrivere delle procedure che contengano sempre la chiamata alla procedura my_home all’inizio ed alla fine.
• Esempio:
to quadrato my_homerepeat 4 [ fd 100 rt 90 ]my_home
end