Anteprima
Vedrai una selezione di 10 pagine su 42
Programmazione Web - Appunti Pag. 1 Programmazione Web - Appunti Pag. 2
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 6
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 11
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 16
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 21
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 26
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 31
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 36
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Programmazione Web - Appunti Pag. 41
1 su 42
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Programmazione Web

Ricorsione (capitolo 12)

È una tecnica di programmazione che permette di risolvere problemi.

funzione ricorsiva = nella sua definizione la funzione richiama sé stessa. All’interno dei manuali dirà la frase seguente: Scrive nelle grammatiche!! Non confonderla con la ricorsività, si fa all'interno dell'algoritmo.

Necessaria per PROGRAMMARE ALBERI!

FATTORIALE! n! => moltiplica i numeri tra loro fino a n (fattoriale di n) Cresce molto rapidamente!!

SOMMATIORIA ∑ni=0 x = Somma i numeri

n! = 1*2*3...

n!: esempio n=4 1! = 1 2! = 1*2 3! = 1*2*3 4! = 1*2*3*4

Come si calcola il fattoriale?

MANIERA ITERATIVA

function fattorialeI(n) { // n > = 0 var r = 1; // punto di partenza for (var i =1; i <= n; i++){ r = r * i; } return r; }

Se vale 0, la guardia viene saltata e restituisce sempre 1. Restituisce 1 anche per n=0.

n! = 6!*n => n! = (n-1)!*n

MANIERA RICORSIVA

function fattorialeR (n) { if (n == 0){ return 1;} else { return fattorialeR (n-1) * n;} }

-> Ragionamento induttivo C'è un punto di partenza.

  • CASO SEMPLICE: 0 (che vale 1)
  • CASO INDUTTIVO: calcola il valore precedente da o chiamata quando risolto!

Successione di Fibonacci

0 1 1 2 3 5 8 13 21

SOMMANDO DEI NUMERI PRECEDENTI

F(4) é il numero della successione di Fibonacci. La nostra funzione secondo la formula:

Una (con questa frequenza). In natura delle conchiglie cirche es. SEZIONE AUREA → F(n+1) - n = 1 F(n)

Fib(0) = 0 (adesso si usa 1) Fib(2) = 1 Fib(n) = Fib(n-2) + Fib(n-3)

LA FUNZIONE RICORSIVA

function fibonacci(n) { if (n==0) || (n==1) { return 1; } else { return fibonacci(n-2) + fibonacci(n-1); } }

Qualunque funzione ricorsiva può essere scritta in maniera iterativa!

MANIERA ITERATIVA

function fibonacci_I(n) { var n1 = 1; var n2 = 1; for (var i=1; i espressione

visualizza(1) -> Stampa

2 x 3 + 4 = 6 + 4 = 10

9

Rappresentare graficamente l'espressione mediante l'albero binario.

ESEMPIO:

2 + 4

2 + 4 x 4

VISITA SIMMETRICA

Altezzadx:

var ad; if (this.destro != null) { ad = this.destro.altezza(); } else { ad = 0; } if (ad > as) { return as + 1; } else { return ad + 1; }

Alberi di ricerca

È un albero binario. La cui visita simmetrica genera una sequenza ordinata di valori. Può essere con ripetizioni (paganyanga) o senza (No pagayanga)

Ricerca di un valore

  1. Si esclude metà dell'albero!

Costruttore AlberoDiRicerca -> 3 parametri

this.aggiungi = function(k) { if (k < this.valore) { if (this.sinistro == null) { this.sinistro = new AlberoDiRicerca(k); else { this.sinistro.aggiungi(k); } } if (k > this.valore) { if (this.destro == null) { this.destro = new AlberoDiRicerca(k); } else { this.destro.aggiungi(k); } } }

Un’altra visita grande

while (x.firstChild != null) {

   x = x.firstChild;

}

while (x.parentNode != null) {

   x = x.parentNode;

}

Non si usano molto spesso. La piu’ frequente e’ la causione ricorsiva.

Tecniche di ricerca

Molto piu’ potenti, con risultati molto piu’ efficaci.

2 METODI

che cercano più di questo voglio, ma l’indice non avrà errori.

1. getElementsByTagName

Dammi gli element utilizzando il nome di un marker

Se io giro sulla radice di un albero (n) ed invoco il metodo

n.getElementsByTagName ("div");

Ricerca in ordine anticipato dell’albero e cerca ("all") questi nodi. La memoria e’ uguale a (n).

Esiste un array con tutti i nodi. Sono nodi che spesso non hanno una relazione tra di loro. A passo io faccio un ciclo per guardarli uno dopo l’altro.

2. getElementById

Metodo che mi consente utilizzando come argomento una stringa di beccare esattamente un nodo su un albero.

n.getElementById ("v");

modo che fa in precedenza identificatato

e’ efficare perche’ non si confonde.

<div id=”alpha”>

Convertitore di valuta

Supponiamo avere 3 metodi:

  • this.imposta
  • this.converti

Si usa un FORM in HTML:

  • input type = “text”
  • input type = “button”
  • input type = “text” readonly = “readonly”

Quando si clicca sui metodi, essi devono essere invocati:

<input type = "button" id = "imposta"/> <input type = "button" id = "converti"/>

In HTML:

function main220() { var nodo = document.getElementById("imposta"); nodo.onclick = gestoreImposta; var nodo2 = document.getElementById("converti"); nodo2.onclick = gestoreConverti; c = new Convertitore(); } function gestoreImposta() { c.imposta ( ---- , ---- ); var nodo = document.getElementById ("valuta"); var valuta = nodo.value; nodo = document.getElementById("fattore"); var fattore = eval(nodo.value); c.imposta (valuta, fattore); } function gestoreConverti() { var nodo = document.getElementById("importo"); var importo = eval(nodo.value); var x = c.converti (importo); var nodo = document.getElementById ("risultato"); nodo.value = x; }

Creazione di oggetti tramite XML

Devo memorizzare i dati per poter lavorare sopra.

Seppiamo già prelevare i valori in input.

Prendo le informazioni dal file XML e creo degli oggetti.

Prendo anche le ricette.

Contenitore RICETTARIO

Contenuti RICETTA

function Ricettario () { this.anno; this.ricetta = []; }

function Ricetta (c, n, d, p) { this.categoria = c; this.nome = n; this.difficolta = d; this.preparazione = p; }

Dopo aver caricato il file XML mi troverò di fronte ad un albero DOM. Per costruire gli oggetti dovrò cercare nell'albero.

var ilRicettario; (variabile globale che deve esistere per tutta la durata del file) function iniziaTutto() { var radice = caricaXML("Ricettario.xml"); // costruisco l'albero a partire dal PARSER var titolo = document.getElementById("titolo"); // mi dicono dove vado visualizzare e usare quando ho finito di creare la mappa (pag143) var lista = document.getElementById("lista"); // mi dicono dove vado visualizzare e usare quando ho finito di creare la mappa (pag143) ilRicettario = new Ricettario(); // creo l'oggetto ricettario vuoto per inizzializzarlo ilRicettario.iniziaDa(radice); // gli faccio anche dove prendere e iniza titolo.innerHTML = ilRicettario.creaTitoloHTML(); // invocazione del metodo lista.innerHTML = ilRicettario.creaListaHTML(); // invocazione del metodo }

Dettagli
Publisher
A.A. 2013-2014
42 pagine
5 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Alyna94 di informazioni apprese con la frequenza delle lezioni di Progettazione e programmazione web e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Ambriola Vincenzo.