La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone disco.unimib.it

Presentazioni simili


Presentazione sul tema: "Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone disco.unimib.it"— Transcript della presentazione:

1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone disco.unimib.it

2 Programma del corso Introduzione alla Logica Matematica (base formale dei linguaggi logici) – Introduzione alla Logica Matematica (base formale dei linguaggi logici) PARTE A: Introduzione alle grammatiche (base formale dei linguaggi) PARTE B: Linguaggi funzionali Il concetto di ricorsione – Il concetto di ricorsione Introduzione al linguaggio Lisp – Introduzione al linguaggio Lisp PARTE D: Linguaggi logici Introduzione al linguaggio Prolog – Introduzione al linguaggio Prolog PARTE C: La programmazione concorrente Modellazione di sistemi concorrenti – Modellazione di sistemi concorrenti La notazione algebrica FSP e la notazione grafica delle Reti di Petri – La notazione algebrica FSP e la notazione grafica delle Reti di Petri Introduzione ai paradigmi di programmazione

3 Modalità di esame prova scritta realizzazione di progetti discussione orale dello scritto e dei progetti La prova scritta potrà essere effettuata mediante DUE compitini, che potranno essere sostenuti durante il corso: Nel caso in cui uno dei due compitini risultasse insufficiente è consentito un recupero degli argomenti ad esso relativo SINO ALLAPPELLO DI APRILE compreso. Dopo tale appello sarà necessario rifare interamente la prova scritta. Lesame è costituito da tre parti: primo compitino: mese di Novembre secondo compitino: mese di Gennaio

4 Modalità di esame Il testo dei progetti sarà pubblicato sul sito web del corso (). Il testo dei progetti sarà pubblicato sul sito web del corso ( ). per gli studenti con cognome che inizia con lettera M-Z per gli studenti con cognome che inizia con lettera A-L La consegna dei progetti dovrà avvenire mediante invio di file al seguente indirizzo (quello relativo al proprio docente!) ENTRO UNA SETTIMANA PRIMA dello scritto dellappello prescelto. La prima prova scritta e il giorno 27 Gennaio. Se si vuole sostenere lorale in questo appello i progetti devono quindi essere consegnati ENTRO IL GIORNO 20.

5 I linguaggi di programmazione possono essere SEQUENZIALI o CONCORRENTI. Linguaggi di programmazione: una possibile classificazione LINGUAGGI IMPERATIVI – LINGUAGGI IMPERATIVI LINGUAGGI FUNZIONALI – LINGUAGGI FUNZIONALI – LINGUAGGI LOGICI LINGUAGGI A OGGETTI – LINGUAGGI A OGGETTI distinti paradigmi di programmazione Questa classificazione corrisponde a distinti paradigmi di programmazione.

6 Le caratteristiche essenziali e la struttura dei linguaggi imperativi sono strettamente legate allarchitettura di Von Neumann. Larchitettura di Von Neumann è costituita da due componenti fondamentali: componente passiva – memoria (componente passiva) componente attiva – processore (componente attiva) concetto di variabile La principale attività del processore e eseguire calcoli e assegnare valori a celle di memoria concetto di variabile come astrazione di cella di memoria. Paradigma imperativo (procedurale) ASSEMBLER, FORTRAN, Pascal, C I linguaggi ASSEMBLER, FORTRAN, Pascal, C (ad esempio) sono basati su distinti livelli di astrazione di questa architettura.

7 La macchina di Von Neuman I/O MemoryCPU fetch instr. execute store result

8 stile prescrittivo I linguaggi imperativi adottano uno stile prescrittivo. – un programma scritto in un linguaggio imperativo prescrive le operazioni che il processore deve compiere (ad es. assegnamento). – Esecuzione delle istruzioni nellordine in cui appaiono nel programma (eccezione: strutture di controllo) Realizzati sia attraverso interpretazione (BASIC,...) sia mediante compilazione (C, Pascal, FORTRAN,...) Nati per più per manipolazione numerica che simbolica Paradigma imperativo (procedurale)

9 Programma = Algoritmo + dati La struttura del programma consiste in: dichiarazione una parte di dichiarazione in cui si dichiarano tutte le variabili del programma e il loro tipo: istruzioni una parte che descrive lalgoritmo risolutivo utilizzato, mediante istruzioni del linguaggio. Le istruzioni si dividono in: istruzioni di lettura e scrittura istruzioni di assegnamento (astrazione di cella di memoria) istruzioni di controllo Paradigma imperativo (procedurale)

10 Motivazioni – Necessità di gestire applicazioni a più alto livello di astrazione – Tentativo di sviluppare programmi più concisi, più semplici da scrivere, più vicini alla logica del problema, la cui correttezza sia più semplice da verificare Definizione di paradigmi di programmazione alternativi – PROGRAMMAZIONE FUNZIONALE – PROGRAMMAZIONE LOGICA – PROGRAMMAZIONE A OGGETTI

11 Linguaggi ad altissimo livello: utilizzabili anche da non- programmatori. simbolica Generati per manipolazione simbolica non numerica. Concetti di programma e di struttura dati non nettamente separati (un programma è specificato per mezzo di una struttura dati). concetti matematici Basati su concetti matematici e non come astrazioni della macchina di Von Neumann. Non richiedono dichiarazioni di variabili. Paradigmi funzionale e logico: caratteristiche comuni stile dichiarativo I linguaggi funzionale e logico adottano uno stile dichiarativo.

12 Concetto primitivofunzione Concetto primitivo: funzione – Una funzione è una regola di associazione tra due insiemi, che associa a ogni elemento del primo insieme (dominio) un elemento del secondo insieme (codominio). – La definizione di una funzione ne specifica il dominio, il codominio e la regola di associazione. Ad esempio: incr: N N incr(x) = x + 1. – Dopo averne dato definizione, una funzione può essere applicata a un elemento del dominio (argomento) per restituire lelemento del codominio ad esso associato (valutazione): incr(3) = 4. Paradigma funzionale

13 Lunica operazione Lunica operazione utilizzata nel paradigma funzionale è lapplicazione di funzioni. produrre un valore soltanto dal valore dei suoi argomenti, e non da variabili Il ruolo dellinterprete di un linguaggio funzionale è valutare il programma e produrre un valore: nel paradigma funzionale puro il valore di una funzione è determinato soltanto dal valore dei suoi argomenti, e non da variabili (assenza di effetti collaterali). combinare funzioni RICORSIONE Lessenza della programmazione funzionale è combinare funzioni (utilizzo del concetto di RICORSIONE). Il concetto di variabile utilizzato è quello di variabile matematica valori non mutabili (nessun assegnamento).

14 Paradigma funzionale Programma = Funzione La struttura del programma consiste nella definizione di una funzione. Lesecuzione del programma consiste nella valutazione di tale funzione. La struttura dati fondamentale è la lista Un programma è definito come una lista (programma coincide con struttura dati)

15 Linguaggio LISP (LISt Processing) Proposto nel 1958 da John McCarthy. Originariamente era funzionale puro. Esistono molti ambienti di programmazione Lisp: InterLisp MacLisp CommonLisp

16 Linguaggio LISP (LISt Processing) (member A (B C D)) Il programma è una struttura dati Non cè dichiarazione di tipo Non cè assegnamento (defun member (item list) (cond ((null list) nil) ((equal item (car list)) T) (T (member item (cdr list))))) Esempio di programma Lisp

17 Paradigma logico Base Base: logica formale Obiettivo Obiettivo: formalizzare il ragionamento Programmare significa: – descrivere il problema con formule del linguaggio – interrogare il sistema, che effettua deduzioni sulla base della conoscenza rappresentata Concetto primitivodeduzione logica Concetto primitivo: deduzione logica

18 Stile dichiarativo Stile dichiarativo: la conoscenza del problema è espressa indipendentemente dal suo utilizzo (COSA non COME); Alta modularità e flessibilità Definire un linguaggio logico significa definire come il programmatore può esprimere la conoscenza e quale tipo di controllo può utilizzare: Problematiche di RAPPRESENTAZIONE della conoscenza – Problematiche di RAPPRESENTAZIONE della conoscenza Paradigma logico Programma = Conoscenza + controllo

19 Linguaggio Prolog Un programma Prolog è costituito da: – Asserzioni incondizionate (fatti): A – Asserzioni condizionate (o regole): A IF B,C,D,… A: è la conclusione (conseguente) B,C,D: sono le premesse (o antecedenti) Una interrogazione ha la forma: ? A, B, C, …

20 ESEMPIO ESEMPIO: due individui sono colleghi se lavorano per la stessa ditta collega(X,Y):- lavora(X,Z), lavora(Y,Z), diverso(X,Y). FATTI lavora(emp1,ibm). lavora(emp2,ibm). lavora(emp3,txt). lavora(emp4,olivetti). lavora(emp5,txt). :- collega(X,Y). Linguaggio Prolog REGOLA

21 STILE PRESCRITTIVO: Controlla prima se la lista è vuota; se sì dai come risultato la lista vuota. Altrimenti calcola una permutazione L di L e controlla se è ordinata; se sì termina dando come risultato L, altrimenti calcola unaltra permutazione di L etc.… STILE DICHIARATIVO: Il risultato dellordinamento di una lista vuota è la lista vuota. Il risultato dellordinamento di una lista L è L se la lista L è ordinata ed è la permutazione di L. Confronto tra programmazione prescrittiva e programmazione dichiarativa Problema: ordinare una lista


Scaricare ppt "Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone disco.unimib.it"

Presentazioni simili


Annunci Google