iterazione o ricorsione nel pensare per OGGETTI

Slides:



Advertisements
Presentazioni simili
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Advertisements

Unità G3 Algoritmi notevoli. Ordinamento Un insieme di dati {a0, a1, a2, …, an} si dice ordinato in ordine crescente se a0 a1 a2 a3 … an I dati sono generalmente.
Procedure e funzioni ricorsive
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Selezione (=scelta) con “if-else”
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
La Programmazione Ricorsiva
Ricerca sequenziale in un array di interi
1 Un esempio con iteratore: le liste ordinate di interi.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo.
ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.
Problema dell’Ordinamento. Problema dell’ordinamento Formulazione del problema –Si vuole ordinare una lista di elementi secondo una data proprietà P Esempio:
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Esercitazioni di Prog. II (esercizi su alberi ennari)
Maurizio Cozzetto, Francesco Sarasini
10. Programmazione Ricorsiva Ing. Simona Colucci
Algoritmi e Strutture Dati
Scoperta guidata di tipici algoritmi: selection sort, bubble sort ….
Approcci nella soluzione di un problema
Unità didattica 1: Introduzione al linguaggio Java
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Algoritmi e Strutture Dati
Esercizi.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Java World Cicli e Array.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso Java Cicli e Array.
Process synchronization
Scrivere programmi corretti
Ordinamento in tempo lineare
Fondamenti di Informatica
Ricorsione 16/01/2019 package.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
esercizi alberi binari
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
Corso di Informatica 2 a.a. 2003/04 Lezione 2
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Le basi della programmazione a oggetti - Esercizio
APPUNTI SUL LINGUAGGIO C
MergeSort Usa la tecnica del divide et impera:
concetti ed applicazioni
Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
UML Diagramma statico di una classe
Dalla programmazione tradizionale al paradigma OO
Scandire …...
Ricerca 01/08/2019 package.
La programmazione strutturata
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Ese 3 (del 3 Aprile 2003).
Corso di Fondamenti di Informatica
Transcript della presentazione:

iterazione o ricorsione nel pensare per OGGETTI Sviluppo di progetti metodologie di soluzione di un problema iterazione o ricorsione nel pensare per OGGETTI

Incrementare vs pensare a oggetti “Ho bisogno di andare da A a B in modo più veloce”

nello sviluppo di progetti Iterazioni nidificate nello sviluppo di progetti

Iterazione

VS

Ricorsione

Variabile accumulatore

http://slideplayer.it/slide/588342/

http://slideplayer.it/slide/608617/

La ricorsione giocando con la Torre di Hanoi Scomporre un problema, via via, in problemi più semplici ….. fino ad una mossa elementare spostare un disco 16

Somma ricorsiva Scrivere una funzione ricorsiva che calcoli la somma degli elementi di un array a[1..n] di n≥1 interi. Soluzione: Algoritmo ricorsivo (Caso Base) Se l’array è vuoto (n pari a 0) allora la somma dei suoi elementi è zero (Passo generico) Se l’array [a1,...,an] non è vuoto allora la somma dei suoi elementi è data da an più la somma degli elementi di [a1,...,an−1] public int somma (int a[], int n){ if (n<0) return 0; else return a[n] + somma(a, n-1); } Testare per a = {2, 4, 7, 5} con chiamata nomeOgg.somma (a, a.length-1)

Somma iterativa/ricorsiva Sommare elementi di un array In Java: indice da 0 ad n-1 con n == -1 si intende termine Sommare elementi di un array Metodo iterativo Metodo ricorsivo public int somma (int a[]){ int somma = 0; for(int i = 0; i<a.length; i++) somma = somma + a[i]; return somma; } public int somma (int a[], int n){ if (n<0) return 0; else return a[n] + somma(a, n-1); Chiamata var  nomeOgg.somma (a) var  nomeOgg.somma (a, a.length-1)

Somma: polimorfismo e ricorsione

Metodi iterativi e ricorsivi public static boolean palindromoIterativo (int a[]) { for (int i = 0; i < a.length/2; i++) if (a[i] != a[a.length-1-i]) return false; return true; } public static boolean palindromoRicorsivo (int a[], int inf, int sup) { if (inf >= sup) return true; if (a[inf] != a[sup]) return false; return palindromoRicorsivo(a,inf+1,sup-1); } public static void main(String[] args) { System.out.println(" Quanti elementi conterra' l'array? "); int v[] = new int[input.nextInt()]; leggiArray(v); // metodo static per leggere gli elementi dell’array if (palindromoIterativo(v)) System.out.println(" Verifica iterativa : l'array e' palindromo! "); else System.out.println(" Verifica iterativa : l'array NON e' palindromo... "); if (palindromoRicorsivo(v, 0, v.length-1)) System.out.println(" Verifica ricorsiva : l'array e' palindromo! "); else System.out.println(" Verifica ricorsiva : l'array NON e' palindromo... "); } } …. ricordando l’introduzione ai tipici algoritmi di ordinamento esercizi online

Algoritmi iterativi e ricorsivi Frattale dal latino fractus (rotto o frammentato)

Triangolo di Sierpiński commentare un’implementazione in Java

La curva di Koch: uno dei primi frattali prima iterazione o ricorsione seconda iterazione o ricorsione figura iniziale terza iterazione o ricorsione quarta iterazione o ricorsione

La curva di Koch La funzione riceve le coordinate che identificano la linea "iniziale" ed il numero delle ricorsioni da eseguire (i). All'inizio dell'esecuzione si verifica la condizione di terminazione, vale a dire, se la funzione deve richiamare se stessa. Se la condizione di terminazione non è stata raggiunta, si divide la linea nelle quattro sezioni necessarie. Si procede con chiamata della funzione in modo ricorsivo per ciascuna delle sezioni: ogni volta riducendo il numero delle ricorsioni. commentare un’implementazione in Java

fiocco di neve di Koch Per approfondire: “Frattale” wikipedia Partendo da un triangolo equilatero: ad ogni passo, su ogni lato , si costruiscono triangoli equilateri con lato 1/3 del precedente Per approfondire: “Frattale” wikipedia Interessanti video e dispense

Immagini di frattali nella home del sito dell’Istituto Tab 0 Tab 1 Tab 2 Tab 3 Tab 4 Tab 5 Tab 6 fondo_11 fondo_12 fondo_13 fondo_14 fondo_15 fondo_16 fondo_17

oppure pannelli inseriti in JTabbedPane Commentare listing (applicazioni Java): disegnando su bottoni oppure pannelli inseriti in JTabbedPane