17-lezione17rossano/DIDATTICA/MDAMS-0203/lezione18.pdf• Es.: [Ciao Mondo!] 12 Informatica di Base...
Transcript of 17-lezione17rossano/DIDATTICA/MDAMS-0203/lezione18.pdf• Es.: [Ciao Mondo!] 12 Informatica di Base...
1
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Passaggio di valori alle procedure
• Si distingue tra procedure di sistema e procedure definite dall’utente.
• Es. forward 70: il 70 è un valore passato all’argomento della procedura forward di sistema;
• Anche le procedure definite dall’utente possono avere argomenti (parametri).
2
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Passaggio di valori alle procedure
Definizione di una procedura con un argomento (parametro):
To nome_procedura :nome_argomento…end
3
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Passaggio di valori alle procedure
Esempio:
To quadrato :l_lato
Repeat 4 [ forward :l_lato rt 90 ]end
4
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Due quadrati concentrici III
La procedura main può essere riscritta così:
Quadrato 100
Posizionamento
Cambia_in_rosso
Quadrato 50
My_home
5
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Passaggio di più valori
Esempio:
to rettangolo :base :altezzarepeat 2 [ fd :base rt 90 fd :altezza rt 90 ]
end
rettangolo 100 50
100 50
6
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Passaggio di più valori
Esempio:
to rettangolo :base :altezzarepeat 2 [ fd :base rt 90 fd :altezza rt 90 ]
end
rettangolo 100 50
100 50
100
7
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Passaggio di più valori
Esempio:
to rettangolo :base :altezzarepeat 2 [ fd :base rt 90 fd :altezza rt 90 ]
end
rettangolo 100 50
100 50
100 50
8
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
SetPos
• Sintassi:SetPos (list :X :Y)
• Semantica:Posiziona la tartaruga nel punto di coordinate (X, Y).
• Utile per riferirsi a delle coordinate assolute• Bisogna sollevare la penna e ricordarsi di riposizionarla
9
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Procedure• Si può definire una procedura che usa altre procedure:
�� ����������
��
���
�������
�� ���
�������
���
• Operazioni di inizializzazione, e.g., cs home• Commenti al codice e nomi significativi!!!!!!!!!• sintassi ; commento
�� ����������
������������� ���
��
���
�������
�� ���
�������
���
10
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esercizi
• Riscrivere la procedura quadrato utilizzando soltanto la procedura rettangolo vista prima;
• Riscrivere la procedura casa con la possibilità di specificare le seguenti quantità:– Altezza e base della casa– Altezza e base della porta– Dimensione della finestra (un quadrato)– Altezza e base del tetto
11
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Valori Alfanumerici
• Finora abbiamo utilizzato solo valori numerici;• Se vogliamo usare valori alfanumerici (caratteri e
numeri), usiamo le stringhe;• In Logo le stringhe si delimitano con le parentesi
quadre;• Es.: [Ciao Mondo!]
12
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Scrittura testi sullo schermo
• Label stringa– Esempio: Label [Ciao mondo!]– Nota: La scritta segue la direzione attuale della tartaruga
• Label numero– Esempio: Label 5
13
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esempio
Rt 45
Label [Ciao Mondo!]
14
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Variabili
• Le variabili permettono di memorizzare valori;• Sono identificate da un nome;• Sono la struttura di dati più elementare;• Useremo valori dei seguenti tipi:
– Numeri;– Stringhe;
15
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Operazioni con le variabili
• Scrittura (assegnazione) – si assegna alla variabile un valore; – Sintassi: make “nome_variabile valore
• Lettura (accesso) – si utilizza il valore memorizzato dalla variabile;– :nome_variabile
• Vi ricorda qualcosa?
16
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Semplice esempio
to scrivi_numeromake “x 10label :x
end
17
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Semplice esempio (cont.)
rt 90scrivi_numero
18
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Assegnazione di un valore ad una variabile
• Due modi:– Make “nome_variabile valore– Make “nome_variabile espressione
• Un’espressione può essere composta da:– Una variabile;– Un’espressione aritmetica tra variabili e numeri;– Una funzione.
19
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esempi
; assegna ad X il valore 10x5, ovvero 50
Make “X 10*5 ; assegna ad Y il valore contenuto in X più 4, ; ovvero 54Make “Y :X + 4; assegna ad Y il valore già contenuto in Y; più 1, ovvero 55Make “Y :Y + 1
20
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Type e Print
• Sintassi:– Type Variabile (o Espressione)– Print Variabile (o Espressione)
• Semantica:– Il contenuto della variabile (o il risultato dell’espressione)
vengono mostrati in output sulla Commander Window
• Differenza:– Type non manda a capo– Print manda a capo
21
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Programma di Input/Output(input tramite parametri)
To somma :X :Y :Zmake “Risultato :X + :Y + :ZRt 90label :Risultato; usare print se si vuole visualizzare il risultato; sulla commander window.
end
22
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Input utente
È possibile usare una GUI (graphical user interface) per chiedere l’immissione di dati da parte dell’utente:
questionbox [UserInput][testo etichetta]
Vedere questa funzionalità dall’help di MSWLogo
23
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esercizio1
Quadrati concentrici:Scrivere un programma che faccia disegnare alla
tartaruga un numero di quadrati concentrici scelto dall’utente (che fornirà input alla procedura principale tramite parametri).
24
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esempio con 50 quadrati
Esempio:50 quadrati
25
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Istruzioni condizionali: if
• Due tipi di flusso d’esecuzione di un programma:– Sequenziale;– Ciclica (repeat);
• Esiste anche il flusso alternativo al verificarsi di una certa condizione: – istruzioni if… then… else
26
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
If
Sintassi: If condizione [ istruzioni ]
Semantica:Se la condizione è vera, allora esegui le istruzioni nella lista.
27
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esempio
To maggiorenne :anniType [Hai ]Type :anniPrint [ anni]If :anni >= 18 [ print [Sei maggiorenne]]
End
28
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Ifelse
Sintassi: Ifelse condizione [ istruzioni1 ] [ istruzioni2 ]
Semantica:Se la condizione è vera, allora esegui le istruzioni nella prima lista, altrimenti esegui le istruzioni nella seconda lista.
29
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esempio
…Ifelse :anni >= 18 [
print [Sei maggiorenne]][print [Sei minorenne]]
30
Informatica di Base Informatica di Base ---- R.GaetaR.Gaeta
Esercizio
• Dati due numeri (inseriti dall’utente), trovare il massimo tra i due e mostrarlo in output;
• Dati tre numeri (inseriti dall’utente), trovare il massimo.
• Dati un numero indefinito di numeri, restituire il massimo.