JavaScript. crash course. by Stefano Burigat



Documenti analoghi
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Node.js. REPL e oltre. by Stefano Burigat

Richiesta pagina PHP (es: index.php)

dall argomento argomento della malloc()

Concetto di Funzione e Procedura METODI in Java

Oggetti Lezione 3. aspetti generali e definizione di classi I

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Realizzazione di una classe con un associazione

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Inizializzazione, Assegnamento e Distruzione di Classi

Sottoprogrammi: astrazione procedurale

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmi di Ricerca. Esempi di programmi Java

3. La sintassi di Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Introduzione alla programmazione in C

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

L utility Unix awk [Aho-Weinberger-Kernighan]

Tipi di Dato Ricorsivi

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Corso Online Analista Programmatore Microsoft

Connessione ad internet

Programmazione in Java Parte I: Fondamenti

Esempi di esercizi d esame

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Matlab: Strutture di Controllo. Informatica B

Introduzione al MATLAB c Parte 2

Arduino: Programmazione

Introduzione all' OO in Python

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Sistemi Mobili e Wireless Android - Servizi

Organizzazione degli archivi

I file di dati. Unità didattica D1 1

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist

Supermarket Progetto di Programmazione Febbraio 2010

Java Virtual Machine

costruttori e distruttori

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Definizione di nuovi tipi

Parola chiave extends

Corso sul linguaggio SQL

NOZIONI BASE SHELL E SCRIPT LINUX

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

Vettori Algoritmi elementari di ordinamento

SQL/OLAP. Estensioni OLAP in SQL

Introduzione al Python

Corso di Fondamenti di Informatica

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Dati relazionali e XML

Modulo 4: Ereditarietà, interfacce e clonazione

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

I sistemi di numerazione

Synchronized (ancora)

Abstract Data Type (ADT)

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

ALGEBRA DELLE PROPOSIZIONI

Laboratorio di Informatica

Prova di Laboratorio di Programmazione

Scheduling della CPU Simulazione in linguaggio Java

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

Come trattare il risultato di un comando SQL (relazioni) che

Applicazioni web. Sommario. Parte 3 Javascript, DOM. Javascript. Oggetti DOM Esempi. Sintassi. Applicazioni web. Alberto Ferrari.

XML e PHP. Gestire XML con PHP. Appendice

Programmazione funzionale

Il tipo di dato astratto Pila

Transcript:

JavaScript crash course by Stefano Burigat

Introduzione ECMAScript (no DOM e BOM, no <script>) Sintassi simile a Java Variabili definite tramite var, loosely typed, operatore comma (,) per separare definizioni Sei tipi di dato: Undefined, Null, Boolean, Number, String, Object. Operatore typeofper determinare il tipo di una variabile Valore numerico NaNper indicare il fallimento di un'operazione che doveva tornare un numero. Funzione isnan()per determinare se un valore è NaN.

Conversione di tipo (cast) Funzione Boolean()per cast a Boolean Funzione Number()per cast a Number (meglio parseint()e parsefloat() per cast di stringhe) Funzione String()per cast a stringa (funziona anche tostring( )

Operatori Operatori unari ++, --, +, - Operatori logici!, &&, Operatori moltiplicativi *, /, % Operatori additivi +, - Operatori relazionali <, >, <=, >= Operatori d'uguaglianza ==,!=, ===,!==

Regole di type coercion Fare attenzione all'applicazione degli operatori a tipi di dato diversi (vengono fatti cast impliciti secondo regole predefinite) Esempio: operatori ==e!= Se un operando è booleano viene convertito in numero Se un operando è una stringa e un altro un numero, la stringa viene convertita in numero Se un operando è un oggetto e l'altro no, viene chiamato il metodo valueof() dell'oggetto Se entrambi gli operandi sono oggetti, viene verificato che siano lo stesso oggetto Se un operando è NaN, == ritorna false null e undefined sono uguali

Controllo del flusso if if (condition) statement1; else statement2; do while do { statement; } while (expression);

Controllo del flusso while while(expression) statement; for for (initialization; expression; post-loop-expression) statement;

Controllo del flusso for-in for (property in expression) statement; breake continuecome in Java switch switch (expression) { case value: statement; break; default: statement; }

Variabili e memoria Le variabili possono essere di tipo valore (tipi primitivi) o di tipo riferimento (oggetti). Alle variabili riferimento si possono aggiungere proprietà in ogni istante. Copiare variabili riferimento significa creare più riferimenti allo stesso oggetto. Tutti gli argomenti delle funzioni sono passati per valore. Le variabili definite all'interno di una funzione (tramite var) non sono visibli all'esterno. Le funzioni creano uno scope ma i blocchi no, al contrario di altri linguaggi.

Array Gli array sono liste ordinate di dati di qualsiasi tipo (anche misti). Possono essere creati tramite costruttore o in notazione letterale: // si possono passare la lunghezza o i singoli elementi come argomento var colors = new Array(); var colors = ["red", "blue", "green"]; L'accesso agli elementi viene fatto tramite bracket notation. E' disponibile la proprietà length(che può essere modificata).

Array Gli array supportano diversi metodi specifici per l'inserimento e la rimozione (push(), pop(), shift(), unshift( ), l'ordinamento (reverse(), sort( ), la manipolazione (concat(), slice(), splice( ), la ricerca (indexof(), lastindexof( ), l'iterazione (every(), filter(), foreach(),map(),some(),reduce(),reduceright( ).

Funzioni Sintassi di base (dichiarazione di funzione): function functionname(arg0, arg1,...,argn) {... } Ogni funzione può ritornare un valore anche senza specificarne il tipo Gli argomenti delle funzioni non sono necessari. Gli argomenti vengono passati tramite un oggetto argumentche si comporta come un array (si può quindi usare bracket notation ed esiste la proprietà length). Argomenti passati esplicitamente ed argomenti impliciti possono essere mescolati e sono sincronizzati. Non è supportato l'overloading.

Funzioni Ogni funzione è un'istanza del tipo Function (e quindi possiamo avere più nomi per la stessa funzione). Oltre alla sintassi precedente le funzioni si possono definire usando un'espressione: var sum = function(num1, num2){ return num1 + num2; }; Le dichiarazioni di funzione sono soggette a hoisting (vengono spostate in cima al codice) Ogni funzione ha una proprietà prototypeche rappresenta un oggetto che contiene le proprietà ed i metodi che dovrebbero essere disponibili ad ogni istanza di un tipo riferimento.

Oggetti Gli oggetti in ECMAScript sono insiemi di proprietà (coppie chiave/valore dove valore può essere un tipo primitivo o un tipo complesso incluse funzioni) Tutti gli oggetti derivano da Object. Anche gli array e le funzioni sono oggetti. Operatore newper creazione di istanze Ogni oggetto ha una proprietà constructorche rappresenta la funzione utilizzata per creare l'istanza (ad esempio, Object( )

Oggetti E' possibile creare oggetti derivando dal tipo di base Objecttramite invocazione del costruttore oppure in notazione letterale: var person = new Object(); person.name = "Nick"; person.age = 29; var person = { name : "Nick", age : 29 };

Creazione nuovi tipi di oggetto Il codice seguente illustra il pattern utilizzato più di frequente per definire un nuovo tipo di oggetto in ECMAScript. function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friends = ["Shelby", "Court"]; } Person.prototype = { constructor: Person, sayname: function(){ alert(this.name); } }; // continua nella slide successiva

Creazione nuovi tipi di oggetto // continua dalla slide precedente var person1 = new Person("Nicholas", 29, "Software Engineer"); var person2 = new Person("Greg", 27, "Doctor"); person1.friends.push("van"); alert(person1.friends); //"Shelby,Court,Van" alert(person2.friends); //"Shelby,Court" alert(person1.friends === person2.friends); //false alert(person1.sayname === person2.sayname); //true

Oggetti - Ereditarietà Il codice seguente illustra il pattern utilizzato più di frequente per definire l'ereditarietà in ECMAScript. function SuperType(name){ this.name = name; this.colors = [ red, blue, green ]; } SuperType.prototype.sayName = function(){ alert(this.name); }; function SubType(name, age){ //inherit properties SuperType.call(this, name); this.age = age; } // continua nella slide successiva

Oggetti - Ereditarietà // continua dalla slide precedente //inherit methods SubType.prototype = new SuperType(); SubType.prototype.sayAge = function(){ alert(this.age); }; var instance1 = new SubType( Nicholas, 29); instance1.colors.push( black ); alert(instance1.colors); // red,blue,green,black instance1.sayname(); // Nicholas ; instance1.sayage(); //29 var instance2 = new SubType( Greg, 27); alert(instance2.colors); // red,blue,green instance2.sayname(); // Greg ; instance2.sayage(); //27