Corso di Laurea in Informatica Gabriella Pasi e Carla Simone

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
Informatica Generale Marzia Buscemi
Software di base: Linguaggi di Programmazione
Classe III A A.s – 2010 Programma di Informatica
Evoluzione dei linguaggi di programmazione
Definizione e tipi di implementazione
Linguaggi di programmazione
Specifiche Algebriche
Algoritmi e Programmazione
Programmazione II Docente: Francesca Levi
Generalità Linguaggio e Macchina Astratta
1 Linguaggi di Programmazione Corso di Laurea in Informatica Introduzione ai linguaggi funzionali.
Elementi di Informatica
Metodi e tecniche di analisi dei dati con Laboratorio (4+4 crediti) Specialistica in Psicologia dei Processi Cognitivi (A31) I anno Prof.ssa Francesca.
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
1 Le competenze di base dell'asse matematico Utilizzare le tecniche e le procedure del calcolo aritmetico ed algebrico, rappresentandole anche sotto forma.
Informatica A (informatica grafica) Allievi di Ingegneria Civile, L-Z
FONDAMENTI DI INFORMATICA III A3A1-1 Realtà e Modello MODELLI E METODOLOGIE PER LA PROGETTAZIONE LOGICA DI SISTEMI INFORMATIVI PER LUFFICIO Argomento 3.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
LISP.
Fondamenti di Informatica
Introduzione alla programmazione l
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Struttura dei sistemi operativi (panoramica)
ANNUNCI Modulo B: RICEVIMENTO DOMANI: 17-19
LIP Laboratorio di Informatica: Programmazione Rosario Pugliese
Unità Didattica 2 I Linguaggi di Programmazione
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Fondamenti di Informatica
Modello E-R Generalizzazioni
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Elementi di Informatica
Elementi di Informatica Simone Scalabrin a.a. 2008/2009.
Dall’algoritmo al programma.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Architettura del calcolatore
Linguaggi per COMUNICARE
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
LAB-SCI/Dipartimento I.C. Centro storico Pestalozzi Primo Incontro 15 Gennaio 2014.
Dal problema all’ algoritmo
La ricorsione.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Linguaggi di Programmazione
Corso di Architetetture degli Elaboratori, A.A. 2004/ Architettura degli Elaboratori Elisa B.P. Tiezzi Orario ricevimento: Giovedì, ( Il materiale.
Algoritmi.
L’esecuzione dei programmi
Linguaggi Diversi tipi di linguaggi:
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Il software Claudia Raibulet
Esercizi.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
I linguaggi di programmazione -GALBIATI ALBERTO -ESPOSITO MATTIA.
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

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

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

Modalità di esame L’esame è costituito da tre parti: 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: primo compitino: mese di Novembre secondo compitino: mese di Gennaio Nel caso in cui uno dei due compitini risultasse insufficiente è consentito un recupero degli argomenti ad esso relativo SINO ALL’APPELLO DI APRILE compreso. Dopo tale appello sarà necessario rifare interamente la prova scritta.

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

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

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

La macchina di Von Neuman I/O Memory CPU fetch instr. execute store result

Paradigma imperativo (procedurale) 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 nell’ordine 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) Programma = Algoritmo + dati La struttura del programma consiste in: una parte di dichiarazione in cui si dichiarano tutte le variabili del programma e il loro tipo: una parte che descrive l’algoritmo 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

Definizione di paradigmi di programmazione alternativi 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 – PROGRAMMAZIONE FUNZIONALE – PROGRAMMAZIONE LOGICA – PROGRAMMAZIONE A OGGETTI

Paradigmi funzionale e logico: caratteristiche comuni Linguaggi ad ”altissimo livello”: utilizzabili anche da non-programmatori. 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). Basati su concetti matematici e non come astrazioni della macchina di Von Neumann. Non richiedono dichiarazioni di variabili. I linguaggi funzionale e logico adottano uno stile dichiarativo.

Paradigma funzionale 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 l’elemento del codominio ad esso associato (valutazione): incr(3) = 4.

Paradigma funzionale L’unica operazione utilizzata nel paradigma funzionale è l’applicazione di funzioni. Il ruolo dell’interprete 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). Il concetto di variabile utilizzato è quello di variabile matematica  valori non mutabili (nessun assegnamento). L’essenza della programmazione funzionale è combinare funzioni (utilizzo del concetto di RICORSIONE).

Paradigma funzionale Programma = Funzione La struttura del programma consiste nella definizione di una funzione. L’esecuzione 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)

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

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

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

Paradigma logico Programma = Conoscenza + controllo 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

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, …

Linguaggio Prolog 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). REGOLA

Confronto tra programmazione prescrittiva e programmazione dichiarativa Problema: ordinare una lista 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 un’altra permutazione di L etc.… STILE DICHIARATIVO: Il risultato dell’ordinamento di una lista vuota è la lista vuota. Il risultato dell’ordinamento di una lista L è L’ se la lista L’ è ordinata ed è la permutazione di L.