• Non ci sono risultati.

SOLUZIONE DI UN PROBLEMA COMPLESSO IN LOGO CON IL METODO TOP DOWN

N/A
N/A
Protected

Academic year: 2021

Condividi "SOLUZIONE DI UN PROBLEMA COMPLESSO IN LOGO CON IL METODO TOP DOWN"

Copied!
1
0
0

Testo completo

(1)

SOLUZIONE DI UN PROBLEMA COMPLESSO IN LOGO CON IL METODO TOP DOWN Prerequisiti: passaggio di parametri alle procedure; commando assegna; uso della variabile di sistema iterazioni all’interno di un ciclo ripeti.

Vogliamo trovare il codice più semplice per riprodurre una piastrella tipo le classiche finestrelle a vetri, come in figura:

Vogliamo inoltre avere la possibilità di cambiare i parametri significativi.

Cominciamo a scomporre il compito in sottoproblemi più semplici. Innanzitutto notiamo una simmetria che ci permette di scomporre la piastrella in quattro moduli, che possiamo chiamare bersaglio:

A sua volta bersaglio può essere costruito iterando la sequenza:

1. disegna un quadrato con un certo lato (variabile :Lato) 2. spostati di un certo numero (variabile :passo) di pixel a

destra e in alto

Costruiamo così le due procedure:

Per Quadrato :Lato ripeti 4 [ a :Lato d 90]

Fine

Per Sposta :Passo

su d 90 a :Passo s 90 a :Passo giu Fine

Ora la parte più difficile: dobbiamo costruire la procedura che costruisce il bersaglio.

Innanzitutto individuiamo i parametri che vogliamo poter variare:

1. il numero di quadrati (variabile :N). Nel disegno vale 4.

2. La distanza tra i quadrati (variabile :Passo). Nel disegno vale 8 pixel.

3. La dimensione dell’ultimo quadrato da disegnare, quello più interno (variabile :Piccolo). Nel disegno vale 100 pixel.

Poiché la procedura è piuttosto complessa, la costruiremo innanzitutto per il caso in figura, e solo successivamente la esprimeremo in funzione delle grandezze variabili.

Il nucleo della procedura è costituito da un ciclo ripeti, in cui per 4 volte disegnamo un quadrato e poi spostiamo la tartaruga di 8 pixel. Il lato del quadrato deve essere ogni volta 2*8 pixel più piccolo. Possiamo allora partire da un lato immaginario di 16 pixel più grande

8 px

100 px

(2)

del primo lato vero, e usare la variabile iterazioni all’interno del ripeti per ottenere questa sequenza:

iterazioni lato come ottenerlo

1 148 164 - 1*16

2 132 164 - 2*16

3 116 164 - 3*16

4 100 164 - 4*16

Come abbiamo ottenuto 164? E’ 100 + 4*16. Scriviamo così la procedura:

Per Bersaglio

assegna "Partenza 100 + 4 * 2 * 8

ripeti 4 [ quadrato :partenza - 2 * iterazioni * 8 sposta 8]

Fine

Sarà poi utile riportare la tartaruga all’origine: basta fare uno sposta di 4 passi all’indietro.

Per Bersaglio

assegna "Partenza 100 + 4 * 2 * 8

ripeti 4 [ quadrato :partenza - 2 * iterazioni * 8 sposta 8]

sposta -4*8 Fine

Funziona! Ora, con molta attenzione, dobbiamo sostituire ai numeri le rispettive variabili:

Per Bersaglio :N :Passo :Piccolo

assegna "partenza :Piccolo + 2 * :N * :Passo

ripeti :N [ Quadrato :Partenza - 2 * iterazioni * :Passo Sposta :Passo]

Sposta -:N*:Passo Fine

Proviamo bersaglio 4 8 100. Dovremmo riottenere la stessa figura di prima. Infine la nostra piastrella sarà data dalla procedura:

Per Piastrella :N :Spazio :Piccolo ripeti 4 [Bersaglio :N :Spazio :Piccolo d 90]

Fine

Proviamo Piastrella 3 5 50

Dovremmo ottenere questa figura:

(3)

Infine, ecco tutto il codice che costituisce la libreria per la piastrella:

Per Quadrato :Lato ripeti 4 [ a :Lato d 90]

Fine

Per Sposta :Passo

su d 90 a :Passo s 90 a :Passo giu Fine

Per Bersaglion :N :Passo :Piccolo assegna "Partenza 100 + 2 * 4 * 8

ripeti 4 [ Quadrato :Partenza - 2 * 4 * 8 Sposta 8]

Sposta -4*8 Fine

Per Bersaglio :N :Passo :Piccolo

assegna "Partenza :Piccolo + 2 * :N * :Passo

ripeti :N [ Quadrato :Partenza - 2 * iterazioni * :Passo Sposta :Passo]

Sposta -:N*:Passo Fine

Per Piastrella :N :Spazio :Piccolo ripeti 4 [Bersaglio :N :spazio :Piccolo d 90]

Fine

Se lo incolliamo in un file di testo con il nome piastrella.lgi, si può caricare in LOGO.

Buon lavoro!

Riferimenti

Documenti correlati

Usando le due squadre, traccio il lato assegnato

Come sono gli angoli adiacenti a ciascun lato obliquo di un

Di conseguenza il momento angolare del quadrato non si è conservato (prima dell’urto è nullo) e neppure lo ha fatto quello totale del sistema.. Questo significa che durante l’urto

Un quadrilatero non può avere angoli retti Un quadrilatero può avere lati paralleli Tutti i quadrilateri hanno lati paralleli. Scrivi la parola che corrisponde

Determinare quali sono i possibili numeri formati dalle due ultime cifre di N nel caso in cui N sia divisibile per 25... Procedere quindi come

• Il trapezio ISOSCELE quando i suoi lati obliqui sono tra loro congruenti, gli angoli adiacenti a ciascuna delle basi sono congruenti e quando le diagonali

Nelle prossime schede vedrà una scacchiera come questa.. Per ogni scacchiera, una quadrato

Dopo aver risposto alla prima domanda, stampate il disegno su carta o cartoncino, ritagliate i vari pezzi e ricostruite il puzzle quadrato di Aurelia usando i cinque pezzi