Programmazione Docente: Eugenia Occhiuto

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

Informatica Generale Marzia Buscemi
Prof. Rebecca Montanari Anno accademico 2011/2012
Informatica Generale Susanna Pelagatti
Il Software.
Linguaggi algoritmici
Classe III A A.s – 2010 Programma di Informatica
Evoluzione dei linguaggi di programmazione
I linguaggi di programmazione
Linguaggi di Programmazione e compilatori
Linguaggi di programmazione
18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Programmazione e Laboratorio 2004/05 Informazioni Introduttive.
Introduzione allarchitettura dei calcolatori 2/ed Carl Hamacher, Zvonko Vranesic, Safwat Zaky Copyright © 2007 – The McGraw-Hill Companies srl Versione.
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Informazioni sul Corso
Docente: Eugenia Occhiuto web:
1 Metodologie di Programmazione. 2 Contenuto generale §tecniche per la programmazione orientata ad oggetti (in piccolo) §esemplificate utilizzando il.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Reti Logiche e Architettura dei Calcolatori Luciano Gualà home page
Informatica A (informatica grafica) Allievi di Ingegneria Civile, L-Z
Analisi Statistica del Reddito e delle Condizioni di Vita
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Fondamenti di Informatica
Linguaggi di Programmazione 1 docente: Maurizio Tucci Lezione 0.1 Concetti di Base.
LIP Laboratorio di Informatica: Programmazione Rosario Pugliese
Unità Didattica 2 I Linguaggi di Programmazione
Corso di Laurea in Ingegneria Gestionale
INTRODUZIONE Il termine Informatica deriva dalla fusione dei termini INFORmazione autoMATICA si intende indicare la scienza che ha il compito di raccogliere,
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
La macchina di von Neumann
La macchina di von Neumann
L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.
Architettura dell’elaboratore
Elementi di Informatica
Elementi di Informatica
Elementi di Informatica Simone Scalabrin a.a. 2008/2009.
ELETTRONICA DIGITALE (II Parte)
STRUTTURA GENERALE DI UN ELABORATORE
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
“Intelligenza Digitale”
Docente: Prof. Lorenzo Mezzalira Esercitatore: Ing. Stefano Giavardi
Linguaggi per COMUNICARE
Programma di Informatica Classi Prime
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Fondamenti di Programmazione
STRUTTURA DI UN COMPUTER
Tecnica della programmazione(primaparte) anno accademico 2010/11
la traduzione dei programmi
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Tecnologie dell’Informazione e della Comunicazione
Laboratorio Informatico
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
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
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Elementi di Informatica SciGeo a.a. 2002/2003. Docente Giorgio Delzanno Ufficio 104 – I piano Dipartimento di Informatica e Sc. Inf. Tel
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Informatica e Informatica di Base
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
Il computer RAM: Unità di misura MByte e GByte MHz Processore: Unità di misura Singolo o multiprocessore 32/64 bit velocità GHz Mouse tastiera video stampante.
Transcript della presentazione:

Programmazione Docente: Eugenia Occhiuto e-mail: occhiuto@di.unipi.it web: http://www.di.unipi.it/~occhiuto Ricevimento al Polo : Negli intervalli e dopo le lezioni Ricevimento a Pisa: Ven.16-18, Mar.11-13

Modalità d’esame Scritto e orale obbligatori. Le verifiche se superate con successo danno l’ammissione all’orale: la prima nel periodo 2-4/11, la seconda nel periodo 16-18/12 se si fallisce o si è assenti alla prima prova è comunque consigliato fare la seconda

Orario La suddivisione lezione/esercitazione è orientativa Martedì 11 – 13 Lezione Aula A4 Martedi 14 – 16 Esercitazione Aula A2 Mercoledì 11 – 13 Laboratorio Lab. 1 Mercoledì 14 – 16 Lezione Aula A3 Giovedì 14 – 16 Lezione Aula A3

Consigli Consultare spesso il sito del corsi su cui vengono mantenute le informazioni: http://www.di.unipi.it/~occhiuto/Programmazione.html seguire le lezioni e le esercitazioni anche quelle in laboratorio fare gli esercizi assegnati e discutere la soluzione nella lezione successiva studiare (2 ore per ogni ora di lezione) e possibilmente anticipare gli argomenti che verranno trattati nella lezione successiva.

Informazioni di riferimento Dispense scaricabili dal sito: Elementi di sintassi dei linguaggi di programmazione. Programmazione funzionale. Elementi di semantica operazionale Testi di programmazione funzionale con Caml : Cousinau . impertiva in C

Fondamenti di Programmazione 10/2/01 Programma del corso Introduzione e concetti generali Elementi di sintassi dei linguaggi di programmazione: grammatiche Programmazione funzionale in Caml: espressioni, tipi primitivi e complessi, funzioni, liste, polimorfismo, ricorsione, induzione Programmazione imperativa: nucleo del C, semantica operazionale. Interprete del nucleo del C in Caml prof. Marco Bellia - dip. Informatica Univ. di Pisa

Fondamenti di Programmazione 10/2/01 Informazione Per fornire informazione è necessario: comprendere la richiesta. Es. Tra quanto passa l’espresso per Torino? avere i dati necessari a disposizione. L’espresso per Torino passa alle 12. Sono le 11.30 essere in grado di elaborarli. Saper calcolare12.00 -11,30 = 0.30 comunicare la risposta. Tra 30 minuti prof. Marco Bellia - dip. Informatica Univ. di Pisa

Informazione automatica Fondamenti di Programmazione 10/2/01 Informazione automatica L’informazione automatica viene fornita da una macchina che: per comprendere la richiesta deve avere un modo per specificare la richiesta ad es. una sequenza di tasti da pigiare. avere i dati a disposizione scritti in un dispositivo di memorizzazione. essere in grado di elaborarli. Saper calcolare la funzione che in base alla richiesta e ai dati memorizzati calcola la risposta. comunicare la risposta. Avere un dispositivo su cui comunicare il risultato del calcolo. prof. Marco Bellia - dip. Informatica Univ. di Pisa

Un esempio: la calcolatrice Fondamenti di Programmazione 10/2/01 Un esempio: la calcolatrice La calcolatrice ha 10 tasti per specificare i dati (cifre). 4 tasti per specificare le operazioni (funzioni) da calcolare Una memoria su cui mantenere i dati parziali Un foglio o un display su cui stampare il risultato Analogamente posso definire altre macchine che calcolano altre funzioni su altri dati ma .. ogni macchina è limitata ad un numero finito di funzioni (la calcolatrice: le 4 operazioni aritmetiche) mentre per i dati ?... prof. Marco Bellia - dip. Informatica Univ. di Pisa

Informazione automatica Fondamenti di Programmazione 10/2/01 Informazione automatica Sorgono spontanee alcune domande: 1. Quali sono le funzioni che si possono calcolare? 2. Quante (diverse) sono le funzioni calcolabili? 3. Ma quali sono le funzioni che una macchina può calcolare? 4. Posso costruire una macchina per ogni funzione che posso calcolare? 5. È possibile definire una macchina che calcoli tutte le funzioni calcolabili? prof. Marco Bellia - dip. Informatica Univ. di Pisa

Fondamenti di Programmazione 10/2/01 Funzioni calcolabili Molto prima che venisse inventato il primo calcolatore, i matematici avevano definito il dominio delle funzioni calcolabili Ω. Le risposte: 1. Le funzioni calcolabili sono quelle per le quali esiste un modo effettivo per calcolarle (algoritmo). 2. (Le funzioni calcolabili sono) Infinite (numerabili). 3. Si! posso costruire una macchina per ogni funzione calcolabile. 4. Ma la vera cosa interessante è che posso costruire una macchina che calcoli tutte le (infinite) funzioni calcolabili: questa macchina è il moderno calcolatore. prof. Marco Bellia - dip. Informatica Univ. di Pisa

Algoritmo Sequenza anche infinita di azioni, che descrive un modo per calcolare la funzione (calcolabile). Le azioni sono ordinate Le azioni e la loro composizione sono espresse in un linguaggio (non necessariamente di programmazione)

Importanti proprietà Ω Fondamenti di Programmazione 10/2/01 Importanti proprietà Ω Ω contiene tutte le funzioni i cui valori possono essere calcolati in modo effettivo: non solo concepiti (Es. razionali vs. reali). Ogni funzione calcolabile ha una (?) descrizione finita D. Es. la funzione fattorale ha la seguente descrizione: D(fattoriale) sia fatt (0) = 1 fatt (n+1) = (n+1) * fatt (n) prof. Marco Bellia - dip. Informatica Univ. di Pisa

Funzione Universale UΩ Fondamenti di Programmazione 10/2/01 Funzione Universale UΩ Esiste una funzione universale UΩ che calcola tutte le funzioni calcolabili così definita: UΩ appartiene ad Ω cioè UΩ è calcolabile Il calcolatore è una realizzazione di UΩ .cioè calcola la funzione universale UΩ prendendo come dati la descrizione della funzione (D(f) e i dati (n) su cui calcolare f.  funzione f  Ω,  descrizione D(f)  valore n, UΩ (D(f), n) = f(n) prof. Marco Bellia - dip. Informatica Univ. di Pisa

Definizione di funzione Dati 2 insiemi A e B una funzione è un sottoinsieme del prodotto cartesiano AB (A è il dominio e B è codominio della funzione), tale che x A esiste uno e uno solo elemento yB tale che (x,y) f. Si scrive f:AB. Con f(a) si indica l’applicazione di f ad a che calcola l’elemento b  B

Come si descrivono le funzioni? (in Matematica) che funzione e`? Quale `e il dominio? e il codomino? Descrizione insiemistica o estensionale Descrizione intenzionale f x= 1 se x=0 x*f(x-1) se x>0

Come si descrivono le funzioni? Linguaggi per descrivere funzioni: Detti linguaggi di programmazione Sono formalismi, con sintassi e semantica formalmente definite. Esempi: Caml, Haskel, Prolog, C, JAVA, Pascal, linguaggi macchina Le descrizioni delle funzioni da calcolare sono frasi in un linguaggio di programmazione e sono detti programmi

La programmazione Una delle attività principali di un informatico (forse la principale) è quella di scrivere programmi che il calcolatore esegue. Lo scopo del corso di Programmmazione è duplice: insegnare a programmare, insegnare i concetti di base dei linguaggi di programmazione, che ne permettono l’implementazione. Durante il corso si utilizzeranno due linguaggi di programmazione:Caml, linguaggio funzionale e C, linguaggio imperativo.

Linguaggi di programmazione Fondamenti di Programmazione 10/2/01 Linguaggi di programmazione I linguaggi di programmazione sono tutti equivalenti,: ho DL1(f) (programma nel linguaggio L1) e DL2(f) (programma nel linguaggio L2 che calcola la stessa funzione). DL1(f) DL2(f) La traduzione è una funzione calcolabile e quindi descrivibile con un programma (cioè può essere fatta dal calcolatore). traduzione prof. Marco Bellia - dip. Informatica Univ. di Pisa

Il linguaggio macchina Il linguaggio direttamente eseguibile dal calcolatore (linguaggio macchina) è un linguaggio di programmazione poco comprensibile agli umani (programmatori) che devono scrivere il programma perché: le operazioni sono molto semplici, sono specificate in binario (sequenze di 0 e 1) quindi specificare un operazione complessa richiede la scrittura di un lungo programma, incomprensibile.

Traduzione del programma Tutti i linguaggi (così detti) ad alto livello devono essere tradotti in linguaggio macchina per poter essere eseguiti. Fortunatamante la traduzione (come abbiamo già detto) può essere fatta dalla macchina stessa. I programmi che effettuano la traduzione si chiamano compilatori.

Implementazione dei linguaggi Traduzione del programma in linguaggio macchina: compilazione. Esecuzione del programma da parte di un altro programma: interpretazione Vedremo un esempio di interprete.

Il calcolatore vista esterna Fondamenti di Programmazione 10/2/01 Il calcolatore vista esterna prof. Marco Bellia - dip. Informatica Univ. di Pisa

Schema di struttura o struttura logica Fondamenti di Programmazione 10/2/01 Schema di struttura o struttura logica prof. Marco Bellia - dip. Informatica Univ. di Pisa

Fondamenti di Programmazione 10/2/01 Struttura fisica prof. Marco Bellia - dip. Informatica Univ. di Pisa

Struttura del calcolatore CPU Memoria: RAM, memoria volatile fissa (molto veloce) Hard disk, memoria permanente fissa (non molto veloce) CD, Floppy disk, ecc memoria permanente rimovibile Dispositivi di Input/Output

Sistema operativo La gestione della memoria e dei dispositivi di I/O tutto deve essere specificato nella descrizione del programma da eseguire.(schede perforate) Ovviamente il programma sarebbe sempre complicatissimo ed ogni volta dovrei riscrivere parti molto simili (ad es. che mandano in stampa dei dati ecc) Esistono delle funzioni la cui descrizione (programma) è definita una volta per tutte nella macchina e che vengono invocate quando servono. (Sistema operativo)

Fondamenti di Programmazione 10/2/01 Interazione Sistemi Operativi Resettings File system gestione I/O Applicazioni: Explorer , Netscape Word (office) CinemaDvD Photoshop Linguaggi ocaml, cc, javac, java Nuove applicazioni prof. Marco Bellia - dip. Informatica Univ. di Pisa

Fondamenti di Programmazione 10/2/01 Relazione tra Hw e Sw Linguaggio Macchina Hw Start-up Sistema Operativo Linguaggi H.L. Applicazioni: Linguaggi rete kernel Linguaggio Sistema FaxManager X-Windows FileMaker Netscape Office ….. prof. Marco Bellia - dip. Informatica Univ. di Pisa

Cosa fa un calcolatore? In ogni momento il calcolatore esegue un programma, scritto in linguaggio macchina, in questo modo esegue: operazioni del S.O., applicazioni disponibili, compila programmi, esegue programmi compilati dall’utente

Fondamenti di Programmazione 10/2/01 Algoritmo Fondamentale ALU Registri PC IS MAR Interfaccia memoria Unita’ controllo MDR CACHE RAM MASS STORAGE 1 n I/O Preleva istruzione Dalla memoria Decodificala (cosa vuole?) Preleva gli operandi (R, M) Esegui l’istruzione Memorizza risultato (R, M) prof. Marco Bellia - dip. Informatica Univ. di Pisa

Programmazione Dal problema alla sua soluzione Fondamenti di Programmazione 10/2/01 Programmazione Dal problema alla sua soluzione Concettualizzazione: Cosa si vuole fare Rappresentazione dati coinvolti Come si astraggono i dati del problema Definizione procedimento di soluzione Come si opera: sequenza dei passi (algoritmo) Formulazione in un linguaggio di programmazione Descrizione della funzione calcolabile (programma) prof. Marco Bellia - dip. Informatica Univ. di Pisa