LISP. C. Montangero Dipartimento d'informatica - Università di Pisa 2014

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "LISP. C. Montangero Dipartimento d'informatica - Università di Pisa 2014"

Transcript

1 LISP C. Montangero Dipartimento d'informatica - Università di Pisa 2014

2 John McCarthy Creatore del LISP LISt Processor, 1965 Time sharing memorandum, 1959 Thor, 1967 AI, dal 1956 con C. Shannon Premio Turing 1971

3 Sommario Il contesto storico Gli obiettivi Il nucleo funzionale del linguaggio sintassi semantica: sistema di transizioni semantica: l'interprete meta-circolare Le definizioni ricorsive L'incidente del binding dinamico Le liste di proprietà e il gc Conclusioni: un assessment di parte

4 La trimurti dei tardi anni '50 FORTRAN COBOL LISP (formule/array) (record/file) (simboli) John Backus ('77) Grace Hopper John McCarthy ('71)

5 Algol60 McCarthy Bauer Backus ( 78) Naur ('05) Perlis ('66) Sintassi formale (BNF), scoping statico, sistema di tipi call by name

6 LISP: obiettivi applicativi Elaborazione simbolica list processing, ossia manipolazione di formule logiche (prova programmi, AI) di analisi (derivazione, integrazioni) programmi interpretazione/compilazione trasformazione verifica alberi di ricerca AI (non-determinismo)

7 Esempio Dimostrazione automatica: Riconoscere P(a) come P[x/a] verificare la corrispondenza tra x e a Costruire Q[x/a] sostituendo ogni "x" (libero) in Q con "a"

8 Esempio: giochi

9 LISP: obiettivi teorici Trattare i linguaggi come oggetti matematici "ragionar sui programmi" to use a prefix notation (emphasizing the operator rather than the operands of an expression); to use the concept of function as widely as possible; to provide higher order functions and hence a notation for functions (based on Church s (1941) λ-notation); es: ottimizzazione equivalenza per sostituzione trasparenza del riferimento (referencial transparency) x:=f();p(x,x) p(f(),f())? To avoid the need for explicit erasure of unused list structures

10 LISP: struttura dati S-expr : (PLUS A B) espressioni simboliche, perché le foglie sono simboli detti anche atomi perchè privi di struttura ma ci torniamo sopra cfr arrayin FORTRAN, recordin COBOL oggi coesistono naturalmente

11 LISP: struttura dati Alberi binari Proto sintassi astratta (PLUS A B) abbrevia (PLUS. (A. (B. NIL))) struttura a lato rappresenta A+B CAR CDR Cella cons = parola IBM 704 CAR = contents of the addresspart of register CDR = contents of the decrementpart of register

12 LISP: codice Nei progetti iniziali: sintassi concreta MLISP (Meta LISP) o LISP2, per scrivere i programmi Espressione aritmetica da manipolare :(PLUS A B) da calcolare : plus[a;b] S-expr usate come rappresentazione interna ritardata realizzazione del traduttore codifica in S-expr del linguaggio per definirne la semantica Incidente favorevole (insieme all'interpretazione): LISP1.5 è type-less (come il linguaggio macchina) favorisce l auto modifica dei programmi "Syntactic sugar causes cancer of the semicolon." Alan Perlis in realtà ci sono i numeri (interi) Controllo dinamico dei tipi (a tempo d'esecuzione)

13 LISP e concorrenti Linguaggi funzionali vs imperativi (con stato) LISP: ambiente di valutazione delle variabili a-list : Nomi Valori» semantica per riferimento, contrapposta a FORTRAN e COBOL valutazione di una variabile: env o mem» env : Nomi Locazioni» mem : Locazioni Valori semantica per valore degli altri terminologia antica» da History of Programming Languages

14 LISP e concorrenti Altri linguaggi "simbolici" SNOBOL manipolava direttamente stringhe di caratteri "pattern" per individuare i punti da sostituire, back-tracking IPL (sexi) pioneered the concept of list processing albeit in an assembly-language style» (A. Newell, C. Shaw, and H. Simon (Nobel '78))

15 Cose di casa nostra Anni '60: Roma ROMALISP C. Böhm et al: ri-fare per capire per usare: non c'era SourceForge!» non era ovvio portare un sistema di programmazione da una macchina a un'altra Anni '70: Pisa MagmaLISP CM, G. Pacini e F. Turini estensione per non-determinismo

16 Il linguaggio (puro) Primitive di manipolazione S-expr: CONS : S-expr ₓ S-expr S-expr CAR, CDR : S-expr S-expr ATOM : S-expr {T, NIL} EQ : Atom ₓ Atom {T, NIL} Forme: espressioni da valutare speciali: (QUOTE f) (COND (p 1 f 1 )... (p n f n ))

17 Il linguaggio puro (2) Forme generali: (f op f 1... f n ) : applica f op ai valori ottenuti da f 1... f n Definizioni (LAMBDA x f) Dichiarazione (LABEL fn f) : definisce f(x) sostituisce il combinatore Y: : nomina f come fn (ricorsione)

18 Il linguaggio (pragmaticamente impuro) Componente imperativa DEFINE, per le definizioni di funzione PROG, SETQ, per programmi sequenziali RPLACA, RPLACD, per effetti collaterali sulle liste» ridefinizione dei puntatori» incubo teorico

19 Evalquote e Apply (primitive)

20 Apply (2)

21 Eval

22 Un esempio, finalmente! First = car, rest = cdr Non serve label Ricorda qualcosa?

23 Un altro esempio Tests è la lista di coppie del cond Second = cadr

24 L'interprete metacircolare

25 Espressioni condizionali (COND) if p 1 then c 1 elseif... elseif p n then c n endif

26 Scelte in FORTRAN if x<ythen \\21 else \\22 end if \\24 Costrutto di controllo trasposto dal linguaggio di macchina: IF(X-Y)21,22,22 C X-Y< GOTO 24 C X-Y C JOIN 24...

27 Apply pairs aggiunge a env i legami parametri-argomenti

28 Eval

29 Esempio: Wang algorithm......

30 Wang algorithm (2)......

31 LISP e λ-calcolo λ-calcolo formalismo teorico per lo studio della calcolabità equivalente alla Macchina di Turing Universale (A. Church, 1936) paradigma: calcolo di funzioni: calcolo per riduzione (sostituzione testuale): nessuna struttura dati: e.g.: interi codificati (astutamente) come funzioni

32 LISP e λ-calcolo (2) LISP (puro) struttura dati: S-expr simula la sostituzione testuale a-list (association list) ambiente di valutazione: a-list : Nomi Valori Semantica Lips1.5: con interprete (meta-circolare) λ-calcolo: nessuna fino al 1975 (Dana Scott ( 76)) McCarthy: "non ho capito molto del lavoro di Church" "ho preso la notazione per le funzioni"

33 Vera scienza

34 Inserto: il combinatore paradossaley se N= (n=0->1,n*f(n-1)) λf. λn.n assomiglia al fattoriale ((λf. λn.n)?) 3 ((λf. λn.n) (λf. λn.n) ) 3 = (λn. (n=0->1,n*(λf. λn.n (n-1)) )) 3 = 3*(λf. λn.n (n-1)) ci metto (Y λf. λn.n), dove Y = (λg. (λg.g(g g)) (λg.g(g g))) :-(

35 Y F punto fisso di F Y F = (λg.(λg.g(g g)) (λg.g(g g))) F = (λg. F(g g)) (λg. F(g g)) = F( (λg. F(g g)) (λg. F(g g)) ) = F( Y F ) per cui, dato che N = (n=0->1,n*f(n-1)) ((λf. λn.n) (Yλf. λn.n)) 3 3=0->1,3*((Yλf. λn.n) 2) 3*( ((λf. λn.n) (Y λf. λn.n)) 2 ) diventa ma YF = F(YF) e così via...

36 Scherzi della memoria Acknowledgments The inadequacy of the LAMBDA-notation for naming recursive functions was noticed by N. Rochester, and he discovered an alternative to the solution involving label which has been used here.

37 Binding dinamico (def show (lambda () x )) (def try (lambda (x) (show) )) (show) (x)? (try t) (show) [x/t] [x/t](x) t In C ecc, il comportamento di show è univoco: il primo x è indefinito binding statico: le due "x" si riferiscono a due celle diverse In LISP, dipende dal contesto d'invocazione: binding dinamico λz.pz = 2 o 3?

38 Involontario Scoperto da J. Slagle Durante la tesi (integrazione simbolica) (def testr (lambda (x p f u) (cond ((p x) (f x)) ((atom x) (u)) (t (testr (cdr x) p f (lambda () (testr (car x) p f u)))) ) )) Tipico esempio di programmazione funzionale Problema noto come FUNARG(functional argument)

39 La madre di tutte le funzioni higher order (defun map (FUN X) (cond((null X) X) (t(cons (FUN (first X)) (map FUN (rest X> map restituisce la lista dei risultati dell applicazione di fun a ogni elemento di X Alla base del modello MapReduce di Google

40 Esempio (map '(lambda (x) (list x x)) '(CHITTY BANG)) restituisce X è zucchero sintattico per (QUOTE X) ((CHITTY CHITTY) (BANG BANG)) Se usiamo map per definire consall, tale che (consall'beat '(HARVARD YALE)) dia ((BEAT HARVARD) (BEAT YALE))

41 Esercizio (defun consall(x L) (map '(lambda(y)???) L)) (consall 'BEAT '(HARVARD YALE)) dia ((BEAT HARVARD) (BEAT YALE))

42 Cave! (defun consall(x YS) (map '(lambda(y) (list X y)) YS)) dà invece: ((HARVARD YALE) HARVARD) ((YALE) YALE)) perché X è legato a (HARVARD YALE) e non a BEAT: (defun map (FUN X) La X di map maschera quella di consall Cambiare nome è poco generale...

43 La soluzione: chiusure Due nuove forme speciali FUNCTION per marcare le funzioni CLOSURE per conservare l ambiente Si risolve anche il problema delle funzioni come valori proceduralizzazione della conoscenza

44 La soluzione: nuovi problemi? Ambiente: Interprete: lista Compilatore: stack Stack: Funarg : abbastanza bene Funzioni come valori: Havoc Cactus stack

45 La storia continua... J. Moses nel 67 osserva many LISP implementers don t care about the FUNARG problem, i.e. that interpreted and compiled programs can behave differently E più naturale implementare il binding statico in un compilatore che in un interprete... Scheme, un dialetto del LISP sviluppato negli anni settanta, oltre a usare lo statico, abbandona completamente lo stack, e alloca i frame nello heap

46 Le liste di proprietà Avevamo detto: "atomi, perchè senza struttura" In realtà sono "classi statiche"/"record" In LISP 1.5 predefinite, con i selettori PNAME: nome esterno (lista di caratteri) EXPR: definizione di funzione (lambda-expr) SUBR: definizione di funzione (primitiva) TRACE: indicatore di traccia dell'esecuzione APVAL: valore di top-level (S-expr)

47 Le liste di proprietà APVAL: NIL vale NIL, T vale T, F vale T cset[obj;value] permette di definirlo Eval si ridefinisce anche in termini di π : Atom ₓ Atom S-expr

48 Poi... putprop: Atom ₓ S-expr ₓ Atom S-expr apply[putprop;(a V P);...] ha valore V (= identità sul secondo argmento) effetto collaterale: definisce la proprietà P di A Record dinamici selettori definibili a run-time MLISP2 (1973) usa la "dot notation"

49 Garbage-collection Atomi p-list Pila di controllo a-list Lista libera

50 LISP: innovazioni P. Graham, What Made LISP Different, May Conditionals They were invented by McCarthy for LISP: since he was on the Algol committee got conditionals into Algol, whence they spread to most other languages. 2. A function type In LISP, functions are first class objects, they're a data type just like integers, strings, etc, and can be stored in variables, can be passed as arguments, and so on. 3. Recursion Recursion existed as a mathematical concept before LISP of course, but LISP was the first programming language to support it.

51 LISP: innovazioni (2) 4. A new concept of variables In LISP, all variables are effectively pointers. Values are what have types, not variables, and assigning or binding variables means copying pointers, not what they point to. 5. Garbage - collection 6. Programs composed of expressions LISP programs are trees of expressions, each of which returns a value. This is in contrast to Fortran and most succeeding languages, which distinguish between expressions and statements.

52 LISP: innovazioni (3) 7. A symbol type Symbols differ from strings in that you can test equality by comparing a pointer. 8. A notation for code Using trees of symbols 9. The whole language always available There is no real distinction between read -time, compile - time, and runtime. [...] reading at runtime enables programs to communicate using s-expr, an idea recently reinvented as XML.

53 Due culture... When LISP was first invented, all these ideas were far removed from ordinary programming practice, which was dictated largely by the hardware available in the late 1950s. Over time, the default language, embodied in a succession of popular languages, has gradually evolved toward LISP:

54 Compilatore Meglio: generatore di codice La sintassi astratta viene gratis! self-hosting: compila se stesso Conviene una macchina intermedia Lisp-machine Reale, da Symbolics Esercizio: trasformare l interprete in un compilatore

55 Due culture Conditionals 2. A function type 3. Recursion 4. A new concept of variables 5. Garbage collection are now widespread. 6. Programs composed of expressions -is starting to appear in the mainstream 7. A symbol type -Python has a form of this, though there doesn't seem to be any syntax for it. 8. A notation for code 9. The whole language always available - are so far still unique tolisp

56 LISP vs il resto del mondo Though useful to present-day programmers, it's strange to describelisp in terms of its variation from the random expedients other languages adopted. La vitalità del LISP si deve probabilmente alla flessibilità che gli deriva in definitiva dalla sua originaria accidentale type-freeness. Oggi l'interesse verso la manipolazione di programmi, e più in generale di modelli, (metaprogrammazione) riporta in auge quest concetti.

57 Conclusioni Graham dice ancora: That [la flessibilità] was not, probably, how McCarthy thought of it. LISP wasn't designed by to fix the mistakes in Fortran LISP came about more as the byproduct of an attempt to axiomatize computation. Un interesse teorico simile si ha oggi per sistemi di tipi higher order: permettere di manipolare funzioni di funzioni con garanzie tipo quelle fornite dai correnti linguaggi per il prim'ordine.

58 Bibliografia J. McCarthy et al. LISP 1.5 Manual (1963) J. McCarthy. History of LISP. Newell, A. and F.C. Shaw. "Programming the Logic Theory Machine." Feb Proceedings of the Western Joint Computer Conference, pp D.C. Smith, H.J. Enea. MLISP2 (1973)

59 Bibliografia D. S. Scott,"Data types as lattices". LNCS 499, P. Graham. ANSI Common LISP. Prentice-Hall, P. Graham. What Made LISP Different. May J. Moses. The Function of FUNCTION in LISP Or Why the FUNARG Problem Should be Called the Environment Problem. MIT Mem G. Steele. A History of Scheme. SchemeHistory-2006public.pdf

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Programmazione Funzionale

Programmazione Funzionale Programmazione Funzionale LP imperativi: apparenza simile modello di progettazione = macchina fisica Famiglia dei LP imperativi = progressivo miglioramento del FORTRAN Obiezione: pesante aderenza dei LP

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Capitolo 5: Algol 60, Pascal e C

Capitolo 5: Algol 60, Pascal e C Capitolo 5: Algol 60, Pascal e C Algol 60 (58-63) -Backus, McCarthy -fino al Pascal (70) è stato lo standard accademico punti positivi -BNF!! -block structure (begin-end), recursion, higher order functions,

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Brevissima introduzione al Lisp

Brevissima introduzione al Lisp Brevissima introduzione al Lisp Versione preliminare Giorgio Ausiello, Luigi Laura May 16, 2001 Queste pagine costituiscono un riferimento per gli studenti del corso di Informatica Teorica e non hanno

Dettagli

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Linguaggi per COMUNICARE Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Sintassi e semantica dei linguaggi Un informazione può : Essere

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Stored Procedures Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Progetto di Applicazioni Software Stored Procedure e User Defined

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 3 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 5 Marzo 2013 Storicamemente Introduzione al paradigma funzionale 1977: ACM Turing

Dettagli

Constant Propagation. A More Complex Semilattice A Nondistributive Framework

Constant Propagation. A More Complex Semilattice A Nondistributive Framework Constant Propagation A More Complex Semilattice A Nondistributive Framework 1 The Point Instead of doing constant folding by RD s, we can maintain information about what constant, if any, a variable has

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

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

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono

Dettagli

Question 1: introduction to computer programming

Question 1: introduction to computer programming Question 1: introduction to computer programming Question 1: introduction to computer programming What is a compiler? (4 points). Cos è un compilatore? (4 punti). c 2006 Marco Bernardo 1/14 Question 1:

Dettagli

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

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno UD 3.1b: Costrutti di un Algoritmo Dispense 1.2 I Costrutti di base 13 apr 2010

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 3 Alberto Ceselli (thanks C. Braghin) ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 09 Marzo 2009 Storicamemente

Dettagli

Programma di Paradigmi e possibili domande. Capitolo 1

Programma di Paradigmi e possibili domande. Capitolo 1 Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Algoritmi e Complessità

Algoritmi e Complessità Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it Lezione 2 Teoria

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

Programmazione ad Oggetti. Java Parte I

Programmazione ad Oggetti. Java Parte I Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo - la durata del mutuo in anni - l importo del mutuo

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica

Dettagli

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:

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: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Ricapitoliamo. Ricapitoliamo

Ricapitoliamo. Ricapitoliamo Ricapitoliamo Finora ci siamo concentrati sui processi computazionali e sul ruolo che giocano le procedure nella progettazione dei programmi In particolare, abbiamo visto: Come usare dati primitivi (numeri)

Dettagli

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

Interpretazione astratta

Interpretazione astratta Interpretazione astratta By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents Interpretazione astratta... 2 Idea generale... 2 Esempio di semantica... 2 Semantica concreta... 2 Semantica

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Breve Excursus su Evoluzione della Programmazione. Corso di Linguaggi e Metodologie di Programmazione

Breve Excursus su Evoluzione della Programmazione. Corso di Linguaggi e Metodologie di Programmazione Breve Excursus su Evoluzione della Programmazione Corso di Linguaggi e Metodologie di Programmazione Introduzione Le slide presenti in questo documento hanno il solo scopo di riassumere i momenti fondamentali

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Compatibilità del Portale Piaggio con Internet Explorer 10 e 11. Internet Explorer 10

Compatibilità del Portale Piaggio con Internet Explorer 10 e 11. Internet Explorer 10 Italiano: Explorer 10 pagina 1, Explorer 11 pagina 2 English: Explorer 10 page 3 and 4, Explorer 11 page 5. Compatibilità del Portale Piaggio con Internet Explorer 10 e 11 Internet Explorer 10 Con l introduzione

Dettagli

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Laurea in Ingegneria Informatica Facoltà di Ingegneria Università di Roma La Sapienza. Dispense del Corso di Intelligenza Artificiale

Laurea in Ingegneria Informatica Facoltà di Ingegneria Università di Roma La Sapienza. Dispense del Corso di Intelligenza Artificiale Laurea in Ingegneria Informatica Facoltà di Ingegneria Università di Roma La Sapienza Dispense del Corso di Intelligenza Artificiale Anno Accademico 2003/04 Linguaggi per l Intelligenza Artificiale Daniele

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Introduzione ai Web Services Alberto Polzonetti

Introduzione ai Web Services Alberto Polzonetti PROGRAMMAZIONE di RETE A.A. 2003-2004 Corso di laurea in INFORMATICA Introduzione ai Web Services alberto.polzonetti@unicam.it Introduzione al problema della comunicazione fra applicazioni 2 1 Il Problema

Dettagli

Il tipo di dato astratto Pila

Il tipo di dato astratto Pila Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:

Dettagli

Laboratorio Matematico Informatico 2

Laboratorio Matematico Informatico 2 Laboratorio Matematico Informatico 2 (Matematica specialistica) A.A. 2006/07 Pierluigi Amodio Dipartimento di Matematica Università di Bari Laboratorio Matematico Informatico 2 p. 1/1 Informazioni Orario

Dettagli

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero

Dettagli

API e socket per lo sviluppo di applicazioni Web Based

API e socket per lo sviluppo di applicazioni Web Based API e socket per lo sviluppo di applicazioni Web Based Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione

Dettagli

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Fondamenti di Informatica Modulo 1 Programma dell'a.a. 2003/2004 Luigi Romano Dipartimento di Informatica

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

Introduzione ai Metodi Formali

Introduzione ai Metodi Formali Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Introduzione a Matlab

Introduzione a Matlab Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie dell Informazione via Bramante 65, 26013 Crema (CR), Italy ruggero.donida@unimi.it Perché? MATLAB is a high-level technical computing

Dettagli

Il test di Turing. Seminario. Ester Dalvit. 22 marzo 2005. Il test di Turing p. 1/1

Il test di Turing. Seminario. Ester Dalvit. 22 marzo 2005. Il test di Turing p. 1/1 Il test di Turing Seminario Ester Dalvit 22 marzo 2005 Il test di Turing p. 1/1 Intelligenza artificiale Una macchina compie in modo efficiente e veloce attività come eseguire calcoli aritmetici Il test

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Fondamenti dei linguaggi di programmazione

Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di programmazione Aniello Murano Università degli Studi di Napoli Federico II 1 Riassunto delle lezioni precedenti Prima Lezione: Introduzione e motivazioni del corso; Sintassi

Dettagli

Alcune nozioni di base di Logica Matematica

Alcune nozioni di base di Logica Matematica Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12 SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.

Dettagli

L interesse nella macchina di Turing

L interesse nella macchina di Turing Aniello Murano Macchina di Turing universale e problema della fermata 6 Lezione n. Parole chiave: Universal Turing machine Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

Linguaggi di Programmazione LISP

Linguaggi di Programmazione LISP Linguaggi di Programmazione LISP Carlo Lepori Scuola di Ingegneria del Canton Ticino (STS) Introduzione In questa parte del corso Linguaggi di programmazione affronteremo alcune tematiche riguardanti la

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I

Dettagli

I PROBLEMI ALGEBRICI

I PROBLEMI ALGEBRICI I PROBLEMI ALGEBRICI La risoluzione di problemi è una delle attività fondamentali della matematica. Una grande quantità di problemi è risolubile mediante un modello algebrico costituito da equazioni e

Dettagli

Universita' degli Studi di Udine UNA PROPOSTA PER L'INTRODUZIONE DI CAPACITA' DI META-RAPPRESENTAZIONE IN UN LINGUAGGIO DI PROGRAMMAZIONE LOGICA

Universita' degli Studi di Udine UNA PROPOSTA PER L'INTRODUZIONE DI CAPACITA' DI META-RAPPRESENTAZIONE IN UN LINGUAGGIO DI PROGRAMMAZIONE LOGICA Universita' degli Studi di Udine FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI UNA PROPOSTA PER L'INTRODUZIONE DI CAPACITA' DI META-RAPPRESENTAZIONE IN UN LINGUAGGIO DI PROGRAMMAZIONE LOGICA Relatore:

Dettagli

E una notazione per descrivere gli algoritmi.

E una notazione per descrivere gli algoritmi. Linguaggio di Programmazione E una notazione per descrivere gli algoritmi. Programma:: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni linguaggio

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 tesi di laurea con ANTLR Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 Obiettivo Analisi statica di codice sorgente, realizzato in javascript,

Dettagli

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

CONCETTO DI LIMITE DI UNA FUNZIONE REALE CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e

Dettagli

Il software e la programmazione

Il software e la programmazione Il software e la programmazione Concetti base sul software Elementi di programmazione Cenni sul linguaggio Pascal Che cosa è il software Determina ciò che un computer può fare Include istruzioni memorizzate

Dettagli

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante: Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE hardware Firmware, software memorizzato su chip di silicio Sistema Operativo venduto con l, comprende vari programmi di gestione del sistema Applicativo,

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Analizzatore lessicale o scanner

Analizzatore lessicale o scanner Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,

Dettagli

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

Strumenti per la Progettazione

Strumenti per la Progettazione Strumenti per la Progettazione Diversi Ingegneri usano semplici Calcolatrici Il 40% usa fogli Spreadsheets tipo Excel Il 20%, per risolvere i loro calcoli, scrive programmi in linguaggi tipo C o Fortran

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Tipologie di macchine di Turing

Tipologie di macchine di Turing Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica

Dettagli