Fondamenti dell informatica
|
|
- Floriana Barone
- 7 anni fa
- Visualizzazioni
Transcript
1 Fondamenti dell informatica LISP Rosario Culmone 4/4/2008 UNICAM - p. 1/23
2 Il linguaggio di programmazione LISP Ispirato dalle funzioni ricorsive, dal lambda calcolo e dagli schemi di programmi di Mc Carthy Inventato da John Mc Carthy alla fine del 50 (lo stesso periodo del FORTRAN, COBOL) Il LISP è il progenitore dei linguaggi di programmazione funzionale LISP (LISt Processor) è stato disegnato originariamente per risolvere problemi di intelligenza artificiale E utilizzato per l elaborazione non numerica Ha vari dialetti: Common Lisp, FranzLisp, AutoLisp (Autocad), ecc Il LISP ha ispirato SCHEME ( 70) e SMALTALK ( 70) 4/4/2008 UNICAM - p. 2/23
3 Caratteristiche del LISP Il LISP è basato su un approccio ricorsivo e incrementale Basato sul meccanismo di Mc Carthy, infatti utilizza la composizione di funzioni, la ricorsione e il costrutto if-then-else. A differenza all interpretazione originaria del formalismo di Mc Carthy, il LISP non fu pensato inizialmente al calcolo numerico Prevalentemente utilizzato mediante interpreti. Ossia si procede in modo incrementale definendo successivamente funzioni che usano funzioni già definite. Essenzialmente avviene un colloquio uomo-macchina Tra utente e interprete vi è una interazione del tipo: utente definisce funzioni o richiede un calcolo, interprete accetta le definizioni o esegue il calcolo. 4/4/2008 UNICAM - p. 3/23
4 Grammatica del LISP La grammatica del LISP è molto semplice. Si basa sulla definizione delle cosiddette S-espressioni e sugli atomi S A (L) L LS ǫ A numeri etichette stringhe operatori Gli atomi, sostanzialmente una sequenza contigua di caratteri. In particolare gli operatori (che vedremo in seguito e possono essere associati agli operatori base degli schemi di programmi di Mc Carthy) vengono estesi con il meccanismo di composizionalità e ricorsione. 4/4/2008 UNICAM - p. 4/23
5 Esempi di S-espressioni (), NIL lista vuota e atomo nullo ALPHA atomo (A B D) lista piatta (A B (D E ) A ) lista 3 intero 3.14 floating point 4/4/2008 UNICAM - p. 5/23
6 Funzionale vs imperativo Nei linguaggi imperativi, FORTRAN, C, PASCAL, JAVA, l esecuzione consiste nella modifica dello stato (memoria). Il meccanismo principale per la modifica dello stato è l assegnamento. Esistono variabili ed esiste il riferimento al punto in cui siamo nell esecuzione del programma (programm counter). Nei linguaggi funzionali, l utente non ha la gestione della memoria, o almeno non lo fa direttamente. Il calcolo non consiste nella modificazione della memoria. Il calcolo consiste nella valutazione di funzioni che l utente definisce di volta in volta. Le funzioni possono raggiungere complessità elevate se la composizione ha livelli elevati di invocazione. Importantissimo è il meccanismo della ricorsione 4/4/2008 UNICAM - p. 6/23
7 Il LISP di Mc Carthy La prima realizzazione del LISP nel 1959 prevedeva solo sette primitive: (quote s) produce la lista s non interpretata (atom s) produce t se s è un atomo o () altrimenti (eq a 1 a 2 ) produce t se a 1 = a 2, () altrimenti (cons s 1 s 2 ) produce la lista s 2 con primo elemento s 1 (car s) produce il primo elemento di s (cdr s) produce la lista contenenti gli elementi di s escluso il primo (cond (p 1 s 1 )...(p n s n )) da sinistra, se la valutazione di p i vale t produce s i Qualsiasi lista non vuota ha il significato di vero mentre () ha il significato di falso. Successivamente sono stati introdotti: (lambda(a 1...a n )s) associa le etichette a 1...a n in s e valuta s (label a s) per associare l etichetta a ad una lista s Il valutatore eval viene applicato ad ogni lista a cominciare dal primo atomo a meno che non sia quotato 4/4/2008 UNICAM - p. 7/23
8 Il LISP Mc Carthy stesso scrisse un interprete LISP in LISP di appena 20 righe di codice che poi venne tradotto in assembler. Originariamente il LISP non gestiva i dati numerici. Vi era una costante NIL che indicava l atomo nullo. La prima versione fu realizzata su un IBM 704. Le parole car e cdr si leggono cader e cuder. La parola car deriva da "Contents of the Address part of Register number". La parola cons deriva da construct. Con il tempo e l applicazione a vari domini sono stati introdotti gli interi e reali e relativi operatori. E stata introdotta la possibilità di definire etichette con valore associato (variabili) mediante l operatore setq (che in qualche modo snatura il LISP). 4/4/2008 UNICAM - p. 8/23
9 QUOTE Il simbolo (apice) è sinonimo dell operatore QUOTE. L operatore QUOTE disabilita la valutazione delle liste. Ad esempio >> (+ 2 2) 4 Mentre >> QUOTE(+ 2 2) (+ 2 2) >> (CONS (+ 3) (+ 3 4)) (+ 3 7) 4/4/2008 UNICAM - p. 9/23
10 LAMBDA La lista che definisce il prototipo di una funzione è chiamata lambda-expression: (lambda (parametri) f unzione) e può essere utlizzata esplicitamente per definire temporaneamente una funzione: >>( (LAMBDA (x) (* 2 x)) 3) 6 Notare la completa somiglianza agli schemi di programmi di Mc Carthy (un termine seguito da un termine chiuso, manca il nome da associare alla funzione) E possibile associare un nome alla funzione con: >>(LABEL SOMMA ((LAMBDA(X)(* 2 X))) Successivamente valutare >>(EVAL SOMMA 4) 8 4/4/2008 UNICAM - p. 10/23
11 ATOM La primitiva atom valuta se una lista è vuota: >>(ATOM (A B C)) NIL >>(ATOM A) T 4/4/2008 UNICAM - p. 11/23
12 EQ Confronta due argomenti per verificare se sono uguali. Se sono atomi >>(EQ A A) T >>(EQ A B) NIL o liste >> (EQ A NIL) NIL >> (EQ (A B) (A B)) T >> (EQ (A B) (A C)) NIL 4/4/2008 UNICAM - p. 12/23
13 CONS Per costruire una lista >>(CONS A NIL) (A) >> (CONS (B C) (D)) ((B C) D) >> (CONS A (B C)) (A B C) >> (CONS NIL ()) NIL 4/4/2008 UNICAM - p. 13/23
14 CAR e CDR I più famosi >> (CAR (A B C)) A >> (CAR ((A B)(C D))) (A B) >> (CDR (A B C)) (B C) >> (CDR ((A B)(C D))) (C D) >> (CAR (CDR (A B C))) B >> (CDR (CAR ((1 2 3)(4 5 6)(7 8 9))) (2 3) 4/4/2008 UNICAM - p. 14/23
15 LABEL Associa un nome ad una lista >> (LABEL F1 (CAR (A B C))) >> (F1) A >> (LABEL F2 (A B C)) >> (F2) (A B C) LABEL è spesso utilizzata per dare un nome alle funzioni >> (LABEL F3 (LAMBDA(X) CDR(X))) >> (F3 (A (B C) (D E))) ((B C) (D E)) 4/4/2008 UNICAM - p. 15/23
16 COND Il costrutto condizionale è generalizzato su una serie di possibili condizioni espresse come coppie >>(LABEL REVERSE (LAMBDA (S) (COND ( (EQ(S ())) NIL ) ( T (CONS (REVERSE(CDR S)) (CAR S) ) ) ) Realizza la funzione REVERSE che inverte una lista. Le condizioni sono scandite in sequenza 4/4/2008 UNICAM - p. 16/23
17 Il LISP oggi Dal 1960 ad oggi il LISP ha avuto molte reinterpretazioni ma che sostanzialmente non hanno cambiato la filosofia di fondo. La più importante è l introduzione delle variabili con l operatore SETQ che ne ha in qualche senso snaturato l aspetto puramente funzionale (introduzione dello stato). Attualmente esiste una versione standard ANSI dal Inoltre esistono una miriade di dialetti che mescolano aspetti dei linguaggi imperativi, orientati agli oggetti a molto altro ancora. 4/4/2008 UNICAM - p. 17/23
18 ANSI LISP La versione più conosciuta è Common Lisp che ha le seguenti caratteristiche DEFUN per definire le funzioni SETF per assegnare un valore ad una variabile LET per delimitare lo scope di una variabile gestisce interi, reali, complessi, valori numerici con precisione arbitraria gestisce stringhe, vettori, tabelle e strutture definite dall utente ha una libreria di funzioni predefinite molto vasta (SORT per ordinare, ecc) accesso al file system, rete, periferiche video, audio, ecc La funzione per il calcolo del fattoriale si scrive: (DEFUN FATTORIALE (X) (IF (ZEROP X) 1 (* X (FATTORIALE (- X 1))))) Un semplice interprete didattico on-line è disponibile 4/4/2008 UNICAM - p. 18/23
19 Funzioni di ordine superiore Nel LISP è possibile passare come argomento ad una funzione un altra funzione. Ad esempio >> (DEFUN ADD3(X) (+ X 3)) >> (DEFUN MUL3(X) (* X 3)) >> (DEFUN G(F V) (* (F V) (F V))) La funzione G deve essere invocata con due parametri, il primo è una funzione di arità 1 che viene applicata sul secondo argomento. Quindi è possibile avere >> (G ADD3 2) 25 >> (G MUL3 2) 36 4/4/2008 UNICAM - p. 19/23
20 Curring In LISP è possibile avere funzioni come prodotto dell applicazione di funzioni. Ovvero se si ha f : N N N si può trasformare in f : N (N N) Ad esempio se si ha >> (DEFUN F(X Y) (+ (* X X) (* Y Y))) Si può trasformare in >> (DEFUN S(X) (LAMBDA (Y) (+ (* X X) (* Y Y))) >> ((S 3) 5) Ovvero la funzione S con un solo argomento fissa il primo addendo della seconda funzione espressa in forma anonima con LAMBDA anch essa con un solo argomento. Quando si invoca S 3 viene prodotta una funzione che accetta un solo parametro. Volendo si può scivere >> (DEFUN G(X) S 3)) >> (G 5) 4/4/2008 UNICAM - p. 20/23
21 Esempi [1] Definiamo una funzione che cerca una parola in una lista (DEFUN FIND (X Y) (COND ((EQ Y ()) NIL) ((EQ X (CAR Y)) X) ( T (FIND X (CDR Y))) ))) Se si applica la funzione FIND a (FIND APPLE (PEAR PEACH APPLE FIG BANANA)) Produce APPLE Se si applica la funzione FIND a (FIND DOG (PEAR PEACH APPLE FIG BANANA)) Produce NIL 4/4/2008 UNICAM - p. 21/23
22 Esempi [2] La funzione di fibonacci (DEFUN FIBONACCI (N) (COND ((EQ N 1) 1) ((EQ N 2) 2) (T (+ (FIBONACCI (- X 1)) (FIBONACCI (- X 2)) ) ) ) Elevazione a potenza x y (DEFUN EXP(X Y) (IF (ZEROP Y) 1 (* X EXP(X (- X 1)) ) ) 4/4/2008 UNICAM - p. 22/23
23 Macchine LISP Agli inizi degli anni 80 al MIT vengono sviluppate dalla Thinking Machines delle macchine con architettura non Von Neumann chiamate Connection Machine. Tali macchine composte da sino a processori sono programmate in LISP e utilizzate inizialmente nell ambito dell intelligenza artificiale. L architettura parallela permette la valutazione delle espressioni LISP in modalità parallela. Un altra categoria di linguaggi è stata ispirata dal LISP ma con un taglio decisamente orientato alla logica. I linguaggi logici PROLOG (PROgramming in LOGic, 70) e Mercury. Tali linguaggi si basano sul calcolo dei predicati della logica del primo ordine. 4/4/2008 UNICAM - p. 23/23
Informatica teorica Lez. n 12 Introduzione al Lisp. Introduzione al Lisp. Prof. Giorgio Ausiello Università di Roma La Sapienza
Introduzione al Lisp Argomenti della lezione Aspetti generali del Lisp S-espressioni Funzioni predefinite Definizione di funzioni e costrutti programmativi Lisp Ispirato da funzioni ricorsive e lambda
DettagliInformatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP
Informatica 3 LEZIONE 9: Introduzione ai linguaggi funzionali Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 Lezione 9 - Modulo 1 Introduzione ai linguaggi funzionali Linguaggi
DettagliFondamenti dell informatica
Fondamenti dell informatica Funzioni ricorsive e linguaggi funzionali Rosario Culmone rosario.culmone@unicam.it 16/4/2008 UNICAM - p. 1/21 Funzioni ricorsive Metodo di definizione di algoritmi introdotto
DettagliIntroduzione alla Programmazione Funzionale
Introduzione alla Programmazione Funzionale April 27, 2017 Paradigmi di Programmazione Programmi sviluppabili usando diversi paradigmi Imperativo: computazione come modifica di stato Funzionale: computazione
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 4 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 5 Marzo 2013 Scheme - L interprete
DettagliIL LINGUAGGIO LISP. Marco Broglia
IL LINGUAGGIO LISP Marco Broglia Lisp: carta d identità ci.1 Carta d Identità Nome: Lisp (List Processor) Nato il: autunno 1958 Genere: interprete Padre: John McCarthy Incubazione: IBM 704 Segni particolari:
DettagliLinguaggi di programmazione. Paradigmi di programmazione
Linguaggi di programmazione Paradigmi di programmazione Linguaggi: un po di storia Albori: Macchine a programma memorizzato, Programmi come dati Linguaggio Macchina Assemblatore FORTRAN (calcolo scientifico)
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione!paradigmi linguistici, costrutti!semantica!implementazione, strutture a tempo di esecuzione 1 Linguaggi di programmazione e astrazione! i linguaggi di programmazione ad alto
DettagliLinguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
DettagliCENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3
CENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3 MATTEO PRADELLA 1. Introduzione e concetti base La programmazione funzionale è uno stile di programmzione che enfatizza la valutazione di espressioni,
DettagliLinguaggi basati sul concetto di funzione e di applicazione di una funzione ad argomenti
Linguaggi Funzionali Parte 1: Un Esempio di Linguaggio Funzionale (ELF) Programmazione Funzionale Il tipo di dato Lista Il Nucleo applicativo del Lisp (ELF) Parte 2: Linguaggi funzionali Programmazione
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
DettagliProgrammazione 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
DettagliEVOLUZIONE 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
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Limiti del linguaggio assembler Esempio: gestione
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)
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
DettagliIl Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
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 DI ALTO LIVELLO
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 C Fortran Modula-2 Cobol Algol Basic
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, 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
DettagliIntroduzione alla Programmazione. Giselda De Vita
Introduzione alla Programmazione Giselda De Vita - 2015 1 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico:
DettagliEsercizio: punti e segmenti
Esercizio: punti e segmenti! Punti e segmenti nel piano, con data abstraction Esercizio: punti e segmenti! Punti e segmenti nel piano, con data abstraction! Lunghezza di un segmento l = (x 2 " x 1 ) 2
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
DettagliLa Programmazione. Cos è la programmazione? Concetti preliminari
La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione
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
DettagliScheme: liste e vettori
a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Scheme: liste e vettori Liste e coppie.......................................... 2451 Dichiarazione di
DettagliChe cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione
Che cos e l Informatica Scienza dell elaborazione dell informazione Informatica generale non si riduce all utilizzo di strumenti (e.g. linguaggi di programmazione e basi di dati); si occupa del trattamento
DettagliMetodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab
Metodi di Analisi dei Dati Sperimentali AA /2010 Pier Luca Maffettone Elementi di Matlab Sommario Introduzione Variabili Manipolazione di elementi Creazione di vettori/matrici Operazioni elementari Funzioni
DettagliELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)
1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano
DettagliSviluppo di programmi
Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili
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à
DettagliEsercizi di LISP. Marco Broglia. 09 novembre 2005
Esercizi di LISP Marco Broglia 09 novembre 2005 Compitino del 19 novembre 2004 Le funzioni misteriose Mistero A Descrivere il comportamento della seguente funzione e valutare l e- Esercizio [what A] spressione
Dettaglila traduzione dei programmi ed introduzione a Java
la traduzione dei programmi ed introduzione a Java programmi descrizioni di algoritmi effettuate tramite linguaggi di programmazione lo stesso algoritmo, fissato un linguaggio di programmazione, può essere
DettagliEsempio: il fattoriale di un numero fact(n) = n! n!: Z! N n! vale 1 se n " 0 n! vale n*(n-1)! se n > 0. Codifica:
! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se
DettagliPaolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09
Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe
DettagliAlgoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Dettagli(X (, Y, Y Z ) Z " Z Z
ARITMETICA E RICORSIONE Non esiste, in logica, alcun meccanismo per la valutazione di funzioni, operazione fondamentale in un linguaggio di programmazione I numeri interi possono essere rappresentati come
DettagliOperativamente, risolvere un problema con un approccio ricorsivo comporta
! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se
DettagliTABELLA OPERATORI ARITMETICI
ARITMETICA E RICORSIONE Non esiste, in logica, alcun meccanismo per la valutazione di funzioni, operazione fondamentale in un linguaggio di programmazione I numeri interi possono essere rappresentati come
Dettaglio Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori
Programma del corso o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori o Elementi di Programmazione Algoritmi e programmi o Algoritmo
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
DettagliFONDAMENTI DI INFORMATICA
Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica
DettagliI linguaggi di programmazione
I linguaggi di programmazione sono stati introdotti per facilitare ai programmatori il compito di scrittura dei programmi Sono linguaggi simbolici, in continua evoluzione Sono definiti da un insieme di
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
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 Algoritmi
Fondamenti di Algoritmi Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione roveri@elet.polimi.it Indice Algoritmi: Definizione Diagrammi di Flusso Esempi ed esercizi
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
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 alla programmazione nella shell di Unix 10 Maggio 2005
Introduzione alla programmazione nella shell di Unix 10 Maggio 2005 1 Page 1 Shell e programmazione La shell di UNIX definisce un vero e proprio linguaggio di programmazione, le cui caratteristiche principali
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 13 Chiara Braghin braghin@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 5 Maggio 2008 Programmazione Funzionale
DettagliLinguaggi di Programmazione
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 programmazione. In generale, ogni
DettagliDal linguaggio macchina al linguaggio C
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C Programma sorgente, compilatore, file oggetto, file eseguibile programma sorgente
DettagliCorso di Programmazione
II Accertamento del 15 Marzo 2002 / A Risolvi i seguenti esercizi, riporta le soluzioni in modo chiaro negli appositi riquadri e giustifica sinteticamente le risposte utilizzando i fogli protocollo. Cosa
DettagliPREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii
Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...
DettagliLinguaggi di Programmazione
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
DettagliConsiderazioni su Tipi di Dati
Considerazioni su Tipi di Dati April 19, 2017 Definire Tipi di Dato Molti linguaggi permettono di definire sinonimi per tipi di dato esistenti... Non introducono nuovi valori La definizione di un nuovo
Dettagli401 PREDICATI RICORSIVI PRIMITIVI
401 PREDICATI RICORSIVI PRIMITIVI Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini 1 Breve richiamo Un predicato su un insieme S è una funzione totale P su S tale che a S si ha: P(a) = VERO
DettagliIstruzioni e linguaggio macchina
Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare
DettagliCorso di Programmazione
II Accertamento del 24 Marzo 2003 / A Risolvi i seguenti esercizi, riporta le soluzioni in modo chiaro negli appositi riquadri e giustifica sinteticamente le risposte, utilizzando se necessario lo spazio
Dettagli5.4 Istruzione di input L istruzione di input ha la forma:
5.2 Istruzione di output L istruzione di output ha la forma: cout
DettagliTraduzione ed Interpretazione. Queste sconosciute
Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L M 0 Macchina astratta di L Macchina ospite Implementazione interpretativa di L Simulazione software di M L su M 0
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliEsempio: rappresentare gli insiemi
Esempio: rappresentare gli insiemi Problema: rappresentare gli insiemi Vedremo che la scelta della rappresentazione per implementarli non è così ovvia come era stato per i numeri razionali In realtà ci
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliBurocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio
Burocrazia: Università degli Studi di Ferrara Laurea triennale in Matematica Corso di Programmazione Primi passi con il linguaggio C Filippo Mantovani 1 Ottobre 009 Per ora nessun cambio di orario e/o
DettagliStruttura del calcolatore
Mondo esterno Dati di ingresso Calcolatore Dati di uscita Mondo esterno Il calcolatore elabora dei dati di ingresso per ottenere dati in uscita In linea di principio, ma non solo, il compito svolto da
DettagliIl linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
DettagliConcetti Introduttivi
Concetti Introduttivi Linguaggi di Programmazione http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Linguaggi di Programmazione Impartiscono
DettagliEspressioni e Comandi
Espressioni e Comandi March 24, 2017 Elementi di Base dei Programmi Ricordate? Macchina Astratta: Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Abbiamo parlato
DettagliSommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)
Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,
DettagliIl potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO
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
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
DettagliFONDAMENTI DI INFORMATICA
Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica
DettagliASTRAZIONE ASTRAZIONE
ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica
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
DettagliLINGUAGGI 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
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella
INFORMATICA A Titolo presentazione sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1
ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica
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
DettagliDal linguaggio macchina al linguaggio C
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Dal linguaggio macchina al linguaggio C 2000 Pier Luca Montessoro (si veda la nota di copyright
DettagliLINGUAGGI 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
DettagliBrevissima 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
DettagliScheme: struttura del programma e campo di azione
«a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Scheme: struttura del programma e campo di azione Definizione e campo di azione...........................
DettagliLINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI
LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI Giacomo Piscitelli pag. 1/10 Dall Algoritmo al Programma Metodo risolutivo problema algoritmo Linguaggio programma Individuazione di un metodo risolutivo
DettagliMATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari
A: CONOSCENZA E CAPACITA DI COMPRENSIONE Conoscere e saper comprendere i fondamenti della matematica discreta (insiemi, interi, relazioni e funzioni, calcolo combinatorio) Conoscere e saper comprendere
DettagliIntroduzione ai linguaggi di programmazione
Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Introduzione ai linguaggi di programmazione Giorgio
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Elementi di programmazione Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università
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
DettagliIntroduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
Dettagli