PROGRAMMAZIONE IN LOGO

Slides:



Advertisements
Presentazioni simili
Sommario Nella lezione precedente abbiamo visto che un enunciato è vero se rappresenta uno stato di cose che sussiste nel mondo del discorso Ora affronteremo.
Advertisements

INFORMATICA Altre Istruzioni di I/O
Il Fiocco di neve di Koch
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
.. Il Fiocco di Neve In Matematica ...
Procedure e funzioni ricorsive
Istruzioni condizionali e blocco
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
L’ “anti-fiocco di neve di Koch”
la programmazione è un gioco! nessuna pretesa da ingegneria del sw
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Sistemi Multi-agente. Agente Entità reale o virtuale che vive in un ambiente, lo percepisce, agisce in esso e che ha un comportamento autonomo conseguente.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
per Windows Berkeley University George Mills Paolo Passaro
Alberi binari di ricerca
Caratteri e stringhe di caratteri
Iterazione enumerativa (for)
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Ricorsione e Debug.
MSW Logo Italiano per Windows
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Alla scoperta di una regolarità…
I File.
Marialuisa Paparo A.A 2013/2014 Io e iplozero.
Esecuzione dei programmi Prolog Liste ed operatori aritmetici
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 8 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Sono poligoni equilateri ed equiangoli
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Linguaggi e modelli computazionali LS Manni Tiziano
Pippo.
Complessità di un algoritmo
Modulo 6 Test di verifica
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
I FRATTALI Frattale di Mandebrot
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Lezione 3 Struttura lessicale del linguaggio
Circonferenza e cerchio
Microsoft Word Interfaccia grafica
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
La ricorsione.
Allievi Elettrici - AA Le funzioni ricorsive in C
StarLogo Le tartarughe in parallelo!!. CONTIAMO LE TARTA  to inizia  ca  crt 1  end   to genera  hatch [ ] fd 1  end.
Ottavio Serra Cosenza, giugno 2006 Curva ricorsiva di Von Kock.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

PROGRAMMAZIONE IN LOGO 3a e 4a Lezione Programmare in scala e la ricorsione

Disegnare in scale differenti Abbiamo imparato a disegnare dei poligoni di dimensioni diverse in funzione della richiesta dell’utente. Ora vi mostro un’altra possibilità dove l’oggetto si ridimensiona secondo una scala. Digitate il seguente codice: to poligono :scala :nolati repeat :nolati [fd 100*:scala rt 360/:nolati] ht end Cosa succede?

Esercizio Prova a generare i seguenti disegni a diverse scale, se riesci scrivi un’unica procedura!

La ricorsione Una procedura è ricorsiva se invoca se stessa! Primo esempio: to ballo rt 1 ballo end Cosa succede????? Quali possono essere le potenzialità della ricorsione?

La ricorsione (tratto da Wikipedia) Viene detto algoritmo ricorsivo un algoritmo espresso in termini di se stesso, ovvero in cui l'esecuzione dell'algoritmo su un insieme di dati comporta la semplificazione o suddivisione dell'insieme di dati e l'applicazione dello stesso algoritmo agli insiemi di dati semplificati. Questo tipo di algoritmo risulta particolarmente utile per eseguire dei compiti ripetitivi su di un set di input variabili. L'algoritmo richiama se stesso generando una sequenza di chiamate che ha termine al verificarsi di una condizione particolare che viene chiamata condizione di terminazione, che in genere si ha con particolari valori di input.

La ricorsione to ballo2 repeat 5 [fd 150 rt 360/5] ballo2 end Provate a scrivere un programma che richiama la ricorsione. to ballo2 repeat 5 [fd 150 rt 360/5] ballo2 end

La ricorsione Impariamo delle nuove primitive: penpaint penerase Ritorna alla modalità classica di disegno penerase La tartaruga cancella tutto quello che incontra. wait numero Mette in pausa il programma per numero/60 secondi. (wait 120, mette in pausa per 2 s)

La ricorsione Prima di scrivere questa procedura provate ad interpretare quello che accadrà durante l’esecuzione del programma. to secondi fd 200 wait 60 penerase bk 200 penpaint rt 6 secondi end

La Ricorsione Scrivete una ricorsione che simuli una lancetta dei minuti.

La ricorsione La primitiva print visualizza nell’area dello storico dei comandi (finestra in basso). Questa primitiva aspetta un argomento, una lista o una parola: print 3 print “ciao print [come stai?] Provate a scrivere questa procedura: to stampa :n print :n stampa :n+1 end cosa succede?

Terminare la ricorsione Gli esempi precedenti vengono eseguiti all’infinito consumando tutta la memoria disponibile (RAM). Normalmente è possibile terminare la ricorsione, come? Vediamo un esempio. to stampa1 :n if :n = 100 [stop] print :n stampa1 :n+1 end

Terminare la ricorsione Nella procedura precedente vi è una nuova primitiva : if condizione [primitiva]. Questa primitiva è molto importante, perché permette di cambiare gli eventi nella procedura. Facciamo un esempio, digitate nella linea di comando: if 2+1=3 [print [è vero]] # è vero if 2+2=5 [print [è vero]] # (nessuna risposta)

Ricorsione: Fiocco di Neve di Van Koch Utilizzando la ricorsione è molto semplice generare in Logo alcune semplici curve chiamate frattali in matematica. Questi sono i primi passi per creare la linea spezzata di Van Koch: Come primo passo si disegna un segmento di una data lunghezza. Il segmento viene diviso in tre parti uguali. Un triangolo equilatero viene disegnato sul segmento centrale. Infine il segmento centrale viene cancellato.

Provate a scrivere in Logo questa prima parte del programma. 3 4 2 1 Provate a scrivere in Logo questa prima parte del programma. Il risultato dovrebbe essere la seguente figura 2: Adesso provate a disegnare la figura 3.

Non tutte le vostre procedure permetteranno di trovare un algoritmo ricorsivo e quindi di continuare a spezzettare le linee sempre in tre parti uguali. Come aiuto vi comunico le seguenti direttive: Disegniamo il segmento di lunghezza L e corrispondente al passo n (Ln-1,L/3) Ruotiamo a sinistra di 60° Disegniamo Ln-1,L/3 Ruotiamo a destra di 120°

Provate a scrivere una procedura che simuli i passaggi descritti nella diapositiva no. 15. La soluzione la riceverete nel documento intitolato “Il fiocco di neve”

Ricorsione con le parole Impariamo tre nuove primitive: Emptyp: restituisce vero se la variabile stringa è vuota. print emptyp “ # true print emptyp “logo # false Last: restituisce una parola costituita dall’ultima lettera se arg1 è una parola o l’ultimo elemento se arg1 è un elenco. print last ciao # o print last [1 2 3 4] # 4 Butlast (bl): restituisce una parola privata dell’ultima lettera se arg1 è una parola o un elenco privato dell’ultimo elemento se arg1 è un elenco. print butlast ciao # cia print butlast [1 2 3 4] # 1 2 3

Ricorsione con le parole Provate a scrivere una procedura ricorsiva che legga al contrario. La procedura viene invocata con: inverti “mauro # oruam