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

RICORSIONE FATTORIALE (n!)

n! è il prodotto di tutti i numeri che precedono n, n compreso

es. 5! = 5 × 4 × 3 × 2 × 1

1! = 1

0! = 1

Function FattorialeR(u)

IF ((u == 0) || (u == 1)) {

return 1;

} else {

return u × FattorialeR(u - 1);

}

Un numero negativo la F non è definita

SUCCESSIONE DI FIBONACCI

0 1 1 2 3 5 8 13 21 34

Ogni numero è la somma dei due numeri precedenti

Calcolare l'n-esimo numero di Fibonacci

fib(0) = 0

fib(1) = 1

fib(u) = fib(u - 2) + fib(u - 1)

function fib(u) {

if ((u == 0) || (u == 1)) {

return u;

} else {

return fib(u - 2) + fib(u - 1);

}

}

Data una funzione ricorsiva è possibile definire una funzione iterativa, anche se ci sono alcuni casi in cui non è possibile.

RICORSIVA -> ITERATIVA

Questo vale per il fattoriale e il fibonacci

FUNZIONE ARITMETICA DI PEANO

ADDIZIONE E MOLTIPLICAZIONE

x + 0 = x

x + y = x + y - 1 + 1 = (x + (y - 1)) + 1

x . 0 = 0

x . y = x . (y - 1 + 1) = x (y - 1) + x

funct. addizione(x,y) {

if(y == 0) {

return x;

} else {

return addizione(x, y - 1) + 1;

}

}

SOTTRAZIONE

x - 0 = x

x - y = x - y - 1 + 1 = (x - 1) - (y - 1) se x ≥ y

DIVISIONE

x < 0 = false

0 ≤ y = true se y != 0

x ≥ 0 = x < y - 1 se x > 0 e y > 0

x = 0 se x < y

x - y = x/y + y = x - y + 1 se x ≥ y

operator = 0 se y = 0

GLI ALBERI

Array - strutture lineari

radice

nodo - hanno almeno un figlio

foglia - elemento dell'albero che non ha figli

ALBERO BINARIO per ogni elemento possono esistere due successivi

Albero con un unico elemento che è sia radice che foglia

Visita - Visitare un albero, scandurlo: parto dalla radice e guardo prima il nodo sinistro e poi il nodo destro.

  • R S D - anticipata
  • S R D - simmetrica bisogna sempre mantenere la sinistra
  • S D R - differita

Frontiera dell'albero

per sapere la sola successione delle foglie. Tutte le foglie a partire da sinistra verso destra negli ordini in cui compaiono

Un solo nodo ha altezza Zero

Sono tutte soluzioni ricorsive.

Alberi n-ari

ci può essere un numero qualsiasi di figli

caso generale

vi ho un valore e un array che contiene tutti i suoi figli

function AlberoNArio(v) {

this.valore = v;

this.figli = [];

this.aggiungi =

function(u) {

this.figli.push(u);

}

this.altezza =

function() {

var max = 0;

for (var i = 0; i < this.figli.length; i++) {

var af = this.figli[i].altezza();

if (af > max) {

max = af;

}

}

return max + 1;

}

if (this.figli.length == 0) {

return 0;

}

Se la pagina non ha un'interazione con l'utente si dice che è statica ovvero non vi è un file JS collegato

Evento click - Un solo nodo è interessato ad esso

On-click - Gestore dell'evento

alfa onclick=" " → codice JS

foo();

In un documento html non esiste nemmeno una riga di JS, ma al momento lo usiamo perché più semplice.

<script...>

usare solamente se è richiesto che l'html abbia tutto all'interno

</script>

09. Aprile 2013

DOM - Document Object Model

È un modello, una costruzione astratta che ci dice qualcosa di complessivo. Ha una coerenza interna e spiega molte cose.

È un modello a oggetti. Ci dice come è costruito l'albero.

Una pagina web è un documento, ovvero qualcosa che viene visualizzato sullo schermo col browser e comprende figure, immagini, elementi interattivi.

Interfaccia programmatica

W3C - consorzio internazionale di internet. Gestisce gli standard e li tiene aggiornati

Il DOM è assolutamente pubblico

document = oggetto predefinito (questo significa che non va definito)

La creazione del nodo avviene all'interno del documento

var u = document.createElement(); equivale al new dell'albero binario

var u = document.nodeTextElement();

Metodi per aggiungere questi nuovi nodi agli alberi esistenti:

  • appendChild
  • insertBefore

u1.appendChild(u); ultimo figlio equivalente a x.push(u);

u2.insertBefore(u); fratello precedente

(u2.insertAfter(u);) FORSE esiste

Per rimuovere:

  • u.removeChild(u1)
  • u.parentNode.removeChild(u) il nodo si cancella con sé tutti figli

Un artificio molto potente proprietà dei nodi è innerHTML.

Se ho un nodo e assegno alla proprietà una certa stringa come figlio di quel nodo viene applicata la stringa dell'albero che ho scritto

u.innerHTML = " "; stringa in formato HTML

[Diagrammi con frecce e figure]

var c;

function inizializza() {

  • var nodo = document.getElementById("imposta");
  • nodo.onclick = gestoreImposta;
  • nodo = document.getElementById("conver");
  • nodo.onclick = gestoreConverti;
  • c = new Convertitore();

}

function convertire() {

  • this.imposta;
  • this.converti;

}

function gestoreImposta() {

  • var nodo = document.getElementById("valuta");
  • var valuta = nodo.value;
  • nodo = document.getElementById("fattore");
  • var fattore = eval(nodo.value);
  • c.imposta(valuta, fattore);

}

Lavorare solo sull'albero senza creare oggetti.

dispensa

<html>

<head>

<script type="text/javascript" src="Ricettario.js">

</script>

</head>

<body>

le mie ricette

<br>

Funct caricaXML(nomeFile) {...}

window.onload=inizializza;

function inizializza() {

var nodo=caricaXML("Ricettario.xml");

var l=nodo.getElementsByTagName("ricetta");

var lista=document.getElementById("lista");

lista.innerHTML=crea(l);

}

function crea(l) {

var s="";

for (var i=0; i<l.length; i++) {

var ln=[i].getElementByTagName("nome");

var n=ln[0].firstChild.nodeValue;

var ld=[i].getElementByTagName("difficolta");

var d=ld[0].firstChild.nodeValue;

var lp=[i].getElementByTagName("preparazione");

var p=lp[0].firstChild.nodeValue;

Punti di interazione

  • pulsanti
  • link
  • parti speciali (es. clicco su un titolo e si apre l'articolo)

oggetto gestore eventi JS

calcolo

read-only

elemento interattivo

D I A L O G O

conversazione tra l'utente e il programmatore

L'uso degli id è importante perché dà un nome agli elementi interattivi.

Il calcolo del risultato "comprende" gli oggetti.

L'alert è invasivo.

I risultati possano essere visualizzati in zone di testo o di input. È buona norma dichiararle di sola lettura (readonly) e dare un colore di sfondo leggermente diverso.

questi id sono scritti nel documento HTML

document.getElementById(" ")

innerHTML

Dettagli
Publisher
A.A. 2012-2013
38 pagine
2 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Skye07 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.