Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
|
|
- Gianpiero Pizzi
- 6 anni fa
- Visualizzazioni
Transcript
1 Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Introduzione ai concetti di sintassi e semantica Politecnico di Milano - Prof. Sara Comai 1 Politecnico di Milano - Prof. Sara Comai 2 Le componenti di un linguaggio di programmazione Un linguaggio di programmazione è una notazione formale caratterizzata da due componenti: Sintassi: insieme di regole formali che specificano la composizione di programmi Per determinare se un programma è valido Semantica: insieme di regole che specificano il significato di un programma sintatticamente valido Per determinare l effetto di un programma Notazioni formali Semantica operazionale: comportamento di un processore astratto che esegue il programma scritto nel linguaggio di programmazione Sintassi di un linguaggio Sintassi: regole che definiscono le sequenze valide di simboli Frasi come sequenze di parole Parole: definite su un alfabeto Regole lessicali: insieme di caratteri che costituiscono l alfabeto del linguaggio Esempi: Caratteri maiuscoli e minuscoli differiscono in C/C++ ma sono identici in Pascal L operatore diverso è:!= in C/C++ e <> in Pascal Politecnico di Milano - Prof. Sara Comai 3 Politecnico di Milano - Prof. Sara Comai 4
2 non terminale EBNF regole sintattiche EBNF=Extended Backus Naur Form Metalinguaggio con metasimboli ::= < > * + terminale Regole sintattiche: <programma> ::= <istruzione>* non terminale definito da regole lessicali <istruzione> ::= <assegnamento> <condizione> <ciclo> <assegnamento> ::= <identificatore> = <espr> ; <condizione> ::= if <espr> <istruzione> + if <espr> <istruzione> + else <istruzione> + <ciclo> ::= while <espr> <istruzione> + <espr> ::= <identificatore> <numero> ( <espr> ) <espr> <operatore> <espr> Politecnico di Milano - Prof. Sara Comai 5 Regole lessicali: EBNF regole lessicali <operatore> ::= + - * / = /= < > <= >= <identificatore> ::= <lettera> <ld>* <ld> ::= <lettera> <cifra> <numero> ::= <cifra>+ <lettera> ::= a b c... z <cifra> ::= Politecnico di Milano - Prof. Sara Comai 6 Diagrammi sintattici Diagrammi sintattici programma condizione if espressione istruzione istruzione else istruzione istruzione assegnamento condizione ciclo while espressione istruzione ciclo espressione espressione operatore espressione assegnamento identificatore = espressione identificatore numero Politecnico di Milano - Prof. Sara Comai 7 espressione Politecnico di Milano - Prof. Sara Comai 8
3 Sintassi astratta e concreta Sintassi concreta e usabilità Costrutti in linguaggi diversi possono avere la stessa struttura concettuale, ma avere regole lessicali diverse: while (x!=y) Stessa sintassi astratta Diversa sintassi concreta while x<>y do begin end Politecnico di Milano - Prof. Sara Comai 9 <> è più leggibile di!= Se il ciclo contiene una singola istruzione le possono essere omesse Facile commettere errori!! while (num!=0) cin >> num; while num <> 0 do end while (num!=0) cin >> num; Politecnico di Milano - Prof. Sara Comai 10 Informatica 3 Lezione 2- Modulo 2 Il concetto di binding Il concetto di binding I programmi sono costituiti da entità variabili, routine, istruzioni Le entità sono caratterizzate da attributi Variabile: nome, tipo, area di memoria Routine: nome, parametri, modalità di passaggio parametri Binding: associa un valore agli attributi Per ogni entità le informazioni sulle entità sono contenute in un descrittore Politecnico di Milano - Prof. Sara Comai 11 Politecnico di Milano - Prof. Sara Comai 12
4 Binding Concetto fondamentale nella definizione della semantica di un linguaggio Linguaggi diversi presentano Un numero di entità diverse Un numero di attributi diversi per ogni entità Tempi di binding diversi (es. a tempo di compilazione o esecuzione) Stabilità differenti di binding (fissi o modificabili) Binding statico: non può essere modificato Binding dinamico: modificabile durante l esecuzione Linguaggi e binding Binding definito dalla definizione del linguaggio: Esempio: interi insieme di operazioni eseguibili (Fortran, Ada, C, C++) Binding definito dall implementazione del linguaggio: Esempio: interi rappresentazione in memoria (Fortran, Ada, C, C++) Binding definito a tempo di compilazione: Esempio: in Pascal il binding degli interi avviene durante la compilazione Binding definito a tempo di esecuzione: Maggior parte dei linguaggi di programmazione Esempio alle variabili vengono associati dei valori durante l esecuzione Binding dinamico Politecnico di Milano - Prof. Sara Comai 13 Politecnico di Milano - Prof. Sara Comai 14 Informatica 3 Lezione 2- Modulo 3 Variabili Variabili I linguaggi di programmazione possono essere visti come un astrazione del comportamento dei computer convenzionali: Memoria centrale consiste di celle elementari identificate da un indirizzo Il contenuto di una cella rappresenta un valore (codificato) Il valore può essere modificato (nuova codifica) durante l esecuzione di un programma Variabile: astrazione del concetto di cella di memoria Nome di variabile: astrazione dell indirizzo della cella di memoria Istruzione di assegnamento: astrazione della modifica del valore di una cella Formalmente: variabile = <nome, scope, tipo, l-value, r-value> Politecnico di Milano - Prof. Sara Comai 15 Politecnico di Milano - Prof. Sara Comai 16
5 Nome e regole di visibilità variabile = <nome, scope, tipo, l-value, r-value> Nome: stringa di caratteri che denota la variabile Solitamente introdotto tramite una dichiarazione Visibilità (o scope): insieme di istruzioni a cui il nome è noto Dal punto in cui la variabile viene dichiarata fino ad un punto di chiusura successivo Un programma può manipolare le variabili tramite il loro nome all interno del loro scope Una variabile è visibile con il suo nome all interno del suo scope Nome e regole di visibilità Le regole di binding di una variabile all interno del suo scope dipendono dal linguaggio Binding statico dello scope Lo scope viene definito staticamente, tramite una dichiarazione implicita o esplicita, senza dover eseguire il programma Maggior parte di linguaggi di programmazione (C/C++) Binding dinamico dello scope Lo scope viene definito durante l esecuzione del programma APL, vecchi LISP, SNOBOL4 Politecnico di Milano - Prof. Sara Comai 17 Politecnico di Milano - Prof. Sara Comai 18 Esempio di binding dinamico dello scope /* blocco A */ int x; /* blocco B */ int x; /* blocco C */ x =...; Esempio: A C; B C Regole semplici da implementare Implementazione meno efficiente Programmi difficili da leggere Tipo variabile = <nome, scope, tipo, l-value, r-value> Tipo di una variabile: insieme di valori che possono essere associati alla variabile + operazioni per creare, accedere, modificare tali valori Politecnico di Milano - Prof. Sara Comai 19 Politecnico di Milano - Prof. Sara Comai 20
6 Tipi e binding Tipizzazione statica e dinamica Tipi predefiniti (esempio: int) Il nome del tipo viene associato tramite binding alla classe di valori e all insieme di operazioni definite dal linguaggio I valori e le operazioni vengono associate tramite binding alla rappresentazione della macchina durante l implementazione Dichiarazioni di tipo (esempio: typedef float reale;) Definisce il binding tra il nome del tipo e l implementazione Eredita tutte le operazioni del tipo specificato Tipi di dati astratti nome_nuovo_tipo = struttura dati degli oggetti del nuovo tipo; operazioni per manipolare gli oggetti del nuovo tipo; Associano il nuovo tipo alle operazioni definite Politecnico di Milano - Prof. Sara Comai 21 Tipizzazione statica (C/C++, Pascal, ecc.) Il binding delle variabili al loro tipo avviene a tempo di compilazione Il binding non può essere cambiato durante l esecuzione Permette la verifica del corretto uso delle variabili a tempo di compilazione Tipizzazione dinamica (LISP, APL, Smalltalk, ecc.) Il binding avviene a tempo di esecuzione Le variabili sono polimorfiche (il tipo dipende dal valore associato dinamicamente) Non è possibile verificare l uso corretto delle variabili staticamente Linguaggi non tipizzati (linguaggi di script, assemblatori) Le variabili non sono tipizzate Celle di memoria e registri contengono stringhe che possono essere interpretate come valori di qualsiasi tipo Politecnico di Milano - Prof. Sara Comai 22 l-value variabile = <nome, scope, tipo, l-value, r-value> l-value: area di memorizzazione associata ad una variabile durante l esecuzione Tempo di vita (lifetime o extent): durata di tale binding Allocazione della memoria: Allocazione di un area della memoria ad una variabile Il tempo di vita di una variabile va dalla sua allocazione alla sua disallocazione Allocazione statica: prima dell esecuzione e disallocazione al termine dell esecuzione (automaticamente) Allocazione dinamica: durante l esecuzione e disallocazione durante l esecuzione (automaticamente o su richiesta) r-value variabile = <nome, scope, tipo, l-value, r-value> r-value: Valore codificato memorizzato nella locazione associata alla variabile (l-value) Interpretato a seconda del tipo della variabile Istruzioni di un programma Accedono alle variabili attraverso l-value (left) Modificano r-value (right) x=y; // x indica una locazione, y un valore Binding tra una variabile ed il valore: Dinamico operazione di assegnamento: x=10; Statico costanti simboliche: const int MAX = 10; Politecnico di Milano - Prof. Sara Comai 23 Politecnico di Milano - Prof. Sara Comai 24
7 Inizializzazione di variabili Reference e variabili senza nome Qual è l r-value di una variabile dopo la sua creazione? In alcuni linguaggi il binding deve essere definito quando la variabile viene creata (ML) Altri lo supportano ma non lo richiedono (C/C++) int i=0; Se l inizializzazione non viene specificata la soluzione adottata dipende dall implementazione Ignorata: considera la stringa nell area di memoria come valore iniziale Definita dal sistema: es. int inizializzati a 0 Valore speciale non definito per inizializzare la variabile che non permette di usare la variabile finchè non viene assegnato un valore (verifica di correttezza del programma) Variabili che possono essere accedute tramite l r-value di altre variabili reference o puntatore alla variabile Possono non avere un nome (ma esiste percorso di accesso) Esempio: int x = 5; //r-value di x è 5 int *px; px = &x; //r-value di px è 5 *px = 0; //r-value di px è 0 int y = *px; //r-value di px è 0 Condivisione di oggetti Accessibili: direttamente (x) indirettamente (px) Dereferenziazione: accesso tramite il puntatore Politecnico di Milano - Prof. Sara Comai 25 Politecnico di Milano - Prof. Sara Comai 26 Informatica 3 Lezione 2- Modulo 4 Routine Convenzioni dei nomi Routine Routine: unità di decomposizione di un programma che implementa un operazione astratta Assembler: sottoprogramma C: funzione Pascal: procedure e funzioni Procedure: non restituiscono valori Funzioni: restituiscono valori Politecnico di Milano - Prof. Sara Comai 27 Politecnico di Milano - Prof. Sara Comai 28
8 Oggetti di una routine Routine = <nome, scope, tipo, l-value, r-value> Il nome della routine può essere introdotto tramite la dichiarazione della routine int sum(int n); //prototipo C Lo scope va dalla dichiarazione ad un punto di chiusura (C: fine del file che contiene la dichiarazione) L attivazione di una routine avviene tramite l invocazione o chiamata della routine Dev essere nello scope della routine Specifica il nome della routine ed i parametri Oggetti di una routine La routine definisce lo scope per le dichiarazioni in essa annidate Dichiarazioni locali (visibili solo dalla routine) Non locali (visibili da altre unità) Globali (visibili da tutte le unità del programma) Routine = <nome, scope, tipo, l-value, r-value> Il tipo della routine è definito dalla sua intestazione Signature: tipi dei parametri di input e tipo restituito int funzione(int, int, float) Una chiamata di una routine è corretta se è conforme al suo tipo Politecnico di Milano - Prof. Sara Comai 29 Politecnico di Milano - Prof. Sara Comai 30 l-value e r-value Routine = <nome, scope, tipo, l-value, r-value> l-value: area di memoria che contiene il corpo della routine r-value: corpo della routine correntemente associato tramite binding Normalmente è statico, definito a tempo di compilazione Alcuni linguaggi supportano un binding dinamico: Variabili di tipo routine a cui si può assegnare una routine Es. linguaggio C int sum(int); int (*ps)(int); ps= int i = (*ps)(5); Routine come first-class objects Dichiarazione e definizione Dichiarazione: intestazione della routine Definisce lo scope Definizione: intestazione e corpo della routine La distinzione serve per poter avere mutua ricorsione Esempio: int funza (int x); //dichiarazione float funzb (int y) //definizione z=funza (y); //chiamata di funzione (visibile!) Politecnico di Milano - Prof. Sara Comai 31 Politecnico di Milano - Prof. Sara Comai 32
9 Parametri della routine Per passaggio informazioni Oggetti di dati Routine (in alcuni linguaggi) Parametri Formali: parametri che appaiono nella definizione Attuali: parametri che appaiono nella chiamata alla routine Binding Secondo il metodo posizionale Routine: R(F1,F2,,Fn); Chiamata: R(A1,A2,,An); Tramite associazione del nome Routine: R(A:T1; B:T2; C:T3); Chiamata: R(C=>Z, A=>X, B=>Y); Politecnico di Milano - Prof. Sara Comai 33 Routine generiche Esempio: Routine per ordinare array di interi int i,j; swap(i,j); //caso 1 Routine per ordinare array di float float i,j; swap(i,j); //caso 2 Template con tipo generico in C++: template <class T> void swap(t& a, T& b) T temp = a; a = b; b = temp; Nel caso 1 viene istanziata una routine con interi, nel caso 2 una routine con float I parametri generici vengono associati tramite binding ai parametri attuali a tempo di compilazione Politecnico di Milano - Prof. Sara Comai 34 Overloading Aliasing int i,j,k; float a,b,c; i=j+k; a=b+c; Operatore + Somma tra interi Somma tra float a=b+c+b(); a=b()+c+b(i); b variabile b() funzione b() e b(int) funzioni distinte Aliasing: contrario di overloading Due nomi sono alias se denotano la stessa entità nello stesso punto del programma int x; int *y=&x; x e *y rappresentano la stessa variabile Overloading: la stessa entità viene utilizzata con significati diversi. Il binding per l entità viene stabilito a tempo di compilazione in base alle informazioni disponibili Esempio: per l operatore + il binding con la corrispondente operazioni viene stabilito in base al tipo dei parametri Politecnico di Milano - Prof. Sara Comai 35 int q1 (int a) return a*= a; void q2 (int &a) a *= a; int x=2; cout << q1(x); cout << x; // stampa 4 e 2 q2(x); cout << x; // stampa 4 i e a rappresentano la stessa variabile Politecnico di Milano - Prof. Sara Comai 36
Informatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
Dettagli3. Il Binding. 3.1 Le variabili
3. Il Binding I programmi sono composti di entità come variabili, routines e istruzioni. Ogni entità possiede certe proprietà chiamate attributi. Per esempio, una variabile ha un nome, un tipo, un area
DettagliInformatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione
Informatica 3 Informatica 3 LEZIONE 1: Introduzione Lezione 1- Modulo 1 Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Introduzione al corso Politecnico di Milano - Prof. Sara Comai
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliI Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliLINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
DettagliLinguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
DettagliInformatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione
Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3
DettagliDAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di
DettagliFondamenti di Informatica Il linguaggio C
Fondamenti di Informatica Il linguaggio C http://agile.diee.unica.it mario.locci@diee.unica.it March 19, 2008 1 Contents 1 Introduzione 3 1.1 Compilatore............................ 3 1.2 Il linguaggio
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliUn esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina
DettagliLINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
DettagliIntroduzione all OOP!
Introduzione all OOP! Introdurre l evoluzione dei linguaggi di programmazione e la loro classificazione Introdurre l OOP (astrazione, incapsulamento, ereditarietà) Dal C a Java un primo esempio 1 LINGUAGGI
DettagliIndice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX
Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliProgrammazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliNomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, 2016. Dipartimento di Informatica Università degli Studi di Bari
Nomi e Ambiente Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 20 apr, 2016 Sommario 1 Nomi Definizione Astrazione Elementare Progettazione
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni
DettagliTempo di vita e scope delle variabili
Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):
DettagliC++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI
Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2
DettagliEsercitazioni di Informatica 3
Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliFUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliIntroduzione a Matlab
INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi
DettagliUniversità degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
DettagliFasi di un Compilatore
Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore
DettagliLezione 6. Visibilità degli identificatori e tempo di vita degli oggetti
Lezione 6 Visibilità degli identificatori e tempo di vita degli oggetti Programmazione I Paolo Valente - 2009/2010 Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti
DettagliEsempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina
Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliIl Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati
Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili
Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Anno Accademico Francesco Tortorella Il concetto di visibilità Un programma C++ può assumere una struttura complessa grazie
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa
DettagliLinguaggi e Ambienti di Programmazione
Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliLe basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliFondamenti di Programmazione
Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) gianfranco.rossi@unipr.it Indice 1 Introduzione
DettagliStrutture dati nel supporto a run time
Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle
DettagliLinguaggio C: puntatori
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliOttenere una modifica del parametro attuale
Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)
DettagliIntroduzione al Linguaggio C
INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)
DettagliIl linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 2 (a) Sintassi e Semantica versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliIl linguaggio C. Caratteristiche generali
Il linguaggio C Caratteristiche generali Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliUniversità di Roma Tor Vergata L12-1
Università di Roma Tor Vergata L12-1 soluzione di un problema fl 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
DettagliInformatica A. Il linguaggio C. A.a. 2006/2007. Allievi Ingegneria Gestionale
Informatica A A.a. 2006/2007 Allievi Ingegneria Gestionale Il linguaggio C Tecnologia Software Il SW come Interfaccia Tra Utente e Macchina Fisica Programma dell utente (software applicativo) Gestione
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 13 Alberto Ceselli (thanks C. Braghin) alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 21 Aprile 2009
DettagliUnità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi
Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
DettagliArray k-dimensionali
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per
DettagliIntroduzione alle stringhe e algoritmi collegati
Introduzione alle stringhe e algoritmi collegati Algoritmicamente August 15, 2009 1 Introduzione 1.1 Introduzione ai caratteri In informatica o più generalmente in una terminologia scientifica, il carattere
DettagliSommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...
Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliAnalisi lessicale (scanner)
Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Analisi lessicale (scanner) Giacomo PISCITELLI Ruolo dell Analizzatore lessicale Compito di un analizzatore
DettagliIntroduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C
Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliJavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132
JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni
DettagliScope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano
Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di
DettagliFunzioni in C. Architetture multi-componente
Funzioni in C Architetture multi-componente In generale, una applicazione informatica complessa è organizzata come insieme di componenti software che cooperano per raggiungere un fine comune. Ogni componente
DettagliSommario. Note alla traduzione... xix
Sommario Prefazione... xv L utilizzo del linguaggio C per insegnare a sviluppare programmi...xv Puntatori e organizzazione del testo...xvi Concetti di ingegneria del software...xvi Aspetti pedagogici...xvii
Dettagli1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:
DettagliIntroduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliEsercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento
Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma
DettagliClassi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++
Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
DettagliVerso i puntatori: Cosa è una variabile?
Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per
DettagliAnalizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.
Analizzatore lessicale o scanner Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner,
Dettagliprint((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript
Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda
DettagliDefinizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
Dettagli7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp);
7 Procedure Nei linguaggi di programmazione è di fondamentale importanza riuscire a scrivere dei programmi che siano facili da leggere e da modificare. Lo scopo di funzioni e procedure è quello di permettere
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Dettagli1 Il Paradigma Imperativo
1 Il Paradigma Imperativo 1.1 Imp : un semplice linguaggio imperativo Abbiamo visto in Fun un meccanismo eager per la valutazione dei parametri di una funzione ed un meccanismo lazy. Una situazione analoga
Dettagli