Affrontiamo le variabili con esempio pratico. Qualche volta è necessario disegnare una figura in scala diversa. Per esempio se vogliamo disegnare un quadrato di lato pari a 100 passi, uno di lato pari a 200 ed un altro di lato pari a 50 dobbiamo scrivere tre diverse procedure, una per ciascun quadrato.
Capiamo immediatamente che sarebbe più semplice definire una sola procedura che riesca a disegnare tutti i tre quadrati e quadrati di qualsiasi lato. Per fare questo dobbiamo riuscire a dire alla procedura la lunghezza del lato del quadrato che vogliamo disegnare. Riusciamo a farlo grazie alle variabili, per esempio quadrato 200 disegna un quadrato di lato 200 passi, quadrato 100 disegna un quadrato di lato 100 e così via. Ma per fare ciò dobbiamo scrivere una procedura che sappia che vogliamo dirle quanto deve essere lungo il lato.
La nostra procedura per disegnare il quadrato di lato 100 era:
Dobbiamo semplicemente modificare questa procedura in due punti:
Otteniamo:
Quindi scrivendo quadrato1 100 quadrato1 50 quadrato1 30 quadrato1 20 quadrato1 10 disegneremo la
seguente figura:
Definiamo una procedura chiamata rec che si aspetta due argomenti che rappresentano del dimensioni dei lati del rettangolo. Quindi rec 200 100 dovrà disegnare un rettangolo di altezza 200 e lunghezza 100.
Alcuni disegni:
Se invochiamo la procedura rec con solo un numero invece di due l’interprete LOGO fermerà il disegno e scriverà un messaggio di errore indicando che la procedura aspetta un secondo argomento.
Abbiamo imparato come disegnare un quadrato ed un rettangolo con lati diversi. Ora torniamo all’esempio della
casa di pagina § per modificare il programma per disegnare case di qualsiasi dimensione.
L’obiettivo è di invocare la procedura casa con un argomento che possa disegnare case più piccole o più grandi (la
scala).
Vediamo come modificare le singole procedure per accettare il fattore di scala. Originariamente la procedura quadrato era:
Tutte le dimensioni devono essere moltiplicate per la scala. Quindi la procedura del quadrato diventa:
Quindi se invochiamo quadrato 2, il quadrato avrà i lati di lunghezza 150 × 2 = 300. Le proporzioni sono
rispettate. Infatti vediamo che dobbiamo solo modificare le procedure sostituendo le lunghezze secondo questa
regola:
Av 70 diventa Av 70*:scala
Av 45 diventa Av 45*:scala
Prova a generare i seguenti disegni a diverse scale.