Corso di Fondamenti di Programmazione a.a.2009/2010 (A-D)

Slides:



Advertisements
Presentazioni simili
Il Software.
Advertisements

La struttura fisica e logica di un elaboratore
STRUTTURA DEL PERSONAL COMPUTER
Prof. Emanuele Marino Concetti teorici di base della tecnologia dellinformazione.
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
Informatica Generale Marzia Buscemi
Informatica Generale Susanna Pelagatti
DAL MICROPROCESSORE AI SISTEMI EMBEDDED Informatica per lAutomazione II (Informatica B o II) Anno accademico 2008/2009 Prof. Giuseppe Mastronardi Ing.
Introduzione allo studio dell’informatica
Studiare INFORMATICA all’Università Ca’ Foscari
I MATEMATICI E IL MONDO DEL LAVORO
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Corso di Programmazione 1 a.a.2007/2008 (A-D)
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Il Nuovo Ordinamento a L’Aquila
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)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Fondamenti di Informatica
Struttura dei sistemi operativi (panoramica)
Il Linguaggio Macchina
Com’è fatto un elaboratore?
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
2) Trattamento dell'informazione. Lab.Calc. I AA 2002/03 - cap.22 Esempio Supponiamo di volere calcolare X, per uno o più possibili valori di Y, in base.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Strutture di controllo in C -- Flow Chart --
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Architettura dell’elaboratore
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Il Calcolatore Elettronico
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
ELETTRONICA DIGITALE (II Parte)
STRUTTURA GENERALE DI UN ELABORATORE
L' ARCHITETTURA DI VON NEUMANN
Architettura del calcolatore
Unità centrale di processo
Programma di Informatica Classi Prime
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Architettura del calcolatore
ORGANIZZAZIONE DI UN SISTEMA DI ELABORAZIONE
3  Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione  elaborazione dati  memorizzazione dati 
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Corsi di Laurea in Biotecnologie
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Matematica Facoltà di Scienze Matematiche, Fisiche e Naturali
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Elementi di Informatica SciGeo a.a. 2002/2003. Docente Giorgio Delzanno Ufficio 104 – I piano Dipartimento di Informatica e Sc. Inf. Tel
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Informatica Lezione 4 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
Il modello di Von Neumann
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
HARDWARE (2). MEMORIE Due classi di memoria MEMORIA CENTRALE –media capacità - ottima velocità MEMORIA DI MASSA elevata capacità - bassa velocità.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Transcript della presentazione:

Corso di Fondamenti di Programmazione a.a.2009/2010 (A-D) Prof.ssa Chiara Petrioli Corso di Laurea in Informatica Università degli Studi “La Sapienza” Pagina del corso: http://twiki.di.uniroma1.it/ Pagina personale: http://reti.dsi.uniroma1.it/eng/petrioli/chiara-petrioli.html Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Benvenuti ! Una breve introduzione al corso di laurea ed agli obiettivi di questo corso… Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Come è strutturata l’Università “La Sapienza” … Rettore Consiglio di Amministrazione Senato Accademico ATENEO GOVERNATO DA COMPOSTO DI ATENEI FEDERATI NOSTRO ATENEO Ateneo delle Scienze e delle Tecnologie (AST) COMPRENDE: Facoltà di S.M.F.N. Facoltà di Ingegneria Aereospaziale Facoltà di Statistica Facoltà di Filosofia Facoltà di Psicologia 1 Rappresentanti di docenti tecnici/amministrativi e studenti -Presidente Prof. Martinelli -Consiglio Accademico -Giunta Tecnico-Amministrativa GOVERNATO DA Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Facoltà e Dipartimenti Offre i Docenti Per il Corso di Laurea Dipartimento di Informatica Dip. di Biologia Cellulare… Diaprtimento di Matematica RICERCA Dipartimento di Fisica Dipartimento di Chimica ……. Corsi di laurea in Informatica Corso di laurea In Biologia Corso di laurea In Matematica Matematiche Fisiche Facoltà di Scienze E Naturali DIDATTICA Corsi di laurea In Scienze Naturali e geologiche Corso di laurea In Fisica Corso di laurea In Chimica Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Dipartimento e Corso di Laurea in Informatica Direttore del Dipartimento di Informatica: Prof.ssa Rossella Petreschi –nuovo direttore tra pochi giorni (il Dipartimento è responsabile delle strutture –inclusi laboratori, biblioteca-, gestisce le risorse del dipartimento, pianifica le assunzioni di nuovi docenti e nuovo personale) Presidente del Consiglio di Area Didattica: Prof. Giancarlo Bongiovanni (il corso di laurea decide ad esempio il calendario didattico, gli appelli di esame, le sedute di laurea, pianifica i corsi, stabilisce le regole per i corsi di laurea,…) AVETE RAPPRESENTANTI IN DIPARTIMENTO E CAD Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Commissioni Dipartimento Consiglio di Area Didattica …. Commissione Scientifica Commissione Biblioteca Commissione Mezzi di Calcolo … Consiglio di Area Didattica Commissione pratiche studenti (Dott.ssa De Marsico, Dott. Ivano Salvo) …. Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

I docenti Cosa fa un docente universitario principalmente ricerca didattica frontale preparazione dei corsi + esami segue tesi + partecipa a commissioni di laurea segue studenti di dottorato attività internazionali attività di servizio commissioni, partecipazioni ad organi preposti a controllare il funzionamento delle attività dell’università Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Perché “La Sapienza” Elencata come seconda migliore università italiana nei ranking internazionali (che tengono conto della riuscita degli studenti, dell’eccellenza scientifica dei docenti) 150.000 studenti  gestione non facile ma titolo spendibile anche in ambito internazionale Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Perché la Facoltà di Scienze Metodo scientifico di analisi, capacità di problem solving vi aiuteranno nelle vostre esperienze lavorative Tra tutte le Facoltà di S.M.F.N. italiane la Facoltà della “Sapienza” risulta prima nei ranking internazionali. Secondo il Ranking delle migliori Università del mondo stilato annualmente dal ‘The Times’ è 39° nel mondo!!  Cercate di sfruttare la possibilità di interagire con ricercatori di punta a livello internazionale! Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Perché Informatica Non solo programmazione…. Alcuni ambiti in cui gli informatici hanno avuto un ruolo importante negli ultimi 5-10 anni: Industria del SW (programmatori, capi progetto, manager,…) Industria cinematografica ed entertainment (grafica, effetti speciali, video giochi,…) Reti di calcolatori (progettista di reti di calcolatori, amministratore di reti, programmatore di rete, progettista di nuove tecnologie nei lab di ricerca industriali, progettista di sistemi embedded, …) Sistemi (amministratore di sistema, progettista di nuovi S.O., esperto di sicurezza,…) Industria automobilistica (40% dei costi di una macchina oggi sono dovuti a elettronica/informatica) Ambiti biologici e medici (informatica medica, biologia computazionale) Information retrieval e data mining (es. google) ….. e tra l’altro… Secondo la valutazione CIVR il gruppo misto di Information e Communications Technologies (docenti di Informatica, Ingegneria Informatica, Telecomunicazioni) migliore a livello nazionale Più di un terzo dei docenti con esperienza (dottorato/postdoc) in istituzioni estere di eccellenza Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Il panorama per i prossimi anni Informatica sempre piu’ centrale nello sviluppo di molte tecnologie Sempre piu’ conoscenze interdisciplinari importanti  scegliete in modo oculato i crediti fuori settore ESEMPIO ICT: convergenza tra diversi settori in atto elettronica/HW informatica/SW telecomunicazioni e sicurezza informatica middleware/applicazioni/servizi ingegneria automatica Settori industriali: E-Health, Automotive, Transportation, Defense, Factory automation,… L’informatico non è un mero esecutore, ma un professionista che è in grado di capire i problemi, conosce bene tecniche matematiche, analitiche, informatiche; sa modellare problemi di un ampio insieme di discipline e propone soluzioni Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Organizzazione del Corso di Laurea Prevede un misto di corsi di Informatica teorica, di Matematica/Fisica, di Programmazione…. PERCHE’? Un esempio: esperto di reti che lavora in TIM Deve conoscere le reti radiomobili (architettura di Internet, programmazione di rete, lab. di programmazione di rete, reti avanzate, progettazione di sistemi wireless, progettazione di rete) Si occupa di progettare e gestire reti cellulari di prossima generazione: pianificazione di reti cellulari (valutazione delle prestazioni, basata su calcolo delle probabilità  a sua volta richiede competenze di analisi matematica), deve capire come avvenga la trasmissione sul mezzo radio (fisica), deve poter progettare soluzioni per la comunicazione di informazioni nella rete (protocolli di rete  serve una conoscenza delle reti e degli algoritmi distribuiti), deve poter implementare le soluzioni che ha sviluppato (programmazione) e verificare che funzionino correttamente (o saper seguire persone che lo facciano). … SERVE QUINDI UNA FIGURA CHE ABBIA TUTTE LE COMPETENZE PREVISTE DAL CORSO DI LAUREA (Un misto di conoscenze matematiche/fisiche e informatiche servono anche per gli altri profili lavorativi )..ulteriori esempi nel seguito… Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Organizzazione del Corso di Laurea Alcuni messaggi Partite con l’obiettivo di conseguire la laurea Specialistica Preparazione dopo 3 o 5 anni molto diversa (e le industrie che vi possono offrire i posti più interessanti lo riconoscono) Negli ultimi anni richiesti dall’industria anche dottori di ricerca con una specializzazione in ambiti applicativi Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Organizzazione del Corso di Laurea Lavorate su voi stessi e sulle vostre capacità Sfruttate tutte le occasioni per incrementare le vostre conoscenze su argomenti d’avanguardia (interazioni con i docenti, seminari, workshop organizzati), mettetevi in competizione con voi stessi (problem solving, gare di informatica, percorso di eccellenza), entrate in un contesto internazionale; Andate al di là di quanto sentite in classe (il corso è una guida –fondamentale e da seguire- allo studio, studiare sui libri di testo e sui libri di approfondimento è fondamentale per ottenere buoni voti e per una preparazione approfondita) Acquisite un buon metodo di studio, imparate l’inglese L’ingresso nel mondo del lavoro non differenzia moltissimo tra 3 e 3+2, ma a 3,5,10 anni dalla laurea una buona preparazione universitaria fa la differenza in termini di livello di interesse del lavoro, ruolo (manageriale o meno) e stipendio Se potete dedicatevi full time allo studio (le materie sono tante, non banali, avere la possibilità di acquisire un metodo di raggiungere una comprensione approfondita ed una elevata capacità di problem solving –cosa che richiede tempo e impegno- è cio che farà la differenza per il vostro successo futuro) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Alcune novità Molti gli incentivi per i ‘migliori’ Possibilità di non pagare parte delle tasse universitarie per i 100/100 Possibilità di aver restituito un anno di tasse per chi segue il percorso di eccellenza Borse di supporto alle attività universitarie Borse per “tesi di laurea” all’estero Valutazione della didattica 1/3 della quota del finanziamento all’università “per merito” dipende dalla didattica percentuale di studenti che superano i 2/3 dei crediti in pari al primo anno percentuale dei crediti superati dagli studenti se viene effettuata una valutazione dei corsi percentuale di laureati impiegati a tre anni Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Fondamenti di programmazione: Introduzione Consideriamo un problema semplice, ovvero la risoluzione di un sistema di equazioni lineari in x1 e x2 con a11, a12, a21, a22, b1 e b2 costanti a cui è stato assegnato un valore. Se il determinante a11a22-a21a12 != 0 le soluzioni sono date da Altrimenti il sistema è malcondizionato o inconsistente - Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Fondamenti di programmazione: Introduzione Consideriamo un problema semplice, ovvero la risoluzione di un sistema di equazioni lineari in x1 e x2 con a11, a12, a21, a22, b1 e b2 costanti a cui è stato assegnato un valore. Se il determinante a11a22-a21a12 != 0 le soluzioni sono date da Altrimenti il sistema è malcondizionato o inconsistente Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Risoluzione di un sistema di equazioni lineari (algoritmo) Un algoritmo è una sequenza di passi elementari che devono essere eseguiti, in un determinato ordine, per risolvere un problema. Nel nostro caso: Passo 1: Calcolare la quantità Passo 2: Se D=0 e il sistema è inconsistente. Se invece e allora Se a11=0 invece va posto (non ammette soluzioni) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Risoluzione di un sistema di equazioni lineari (algoritmo) Un algoritmo è una sequenza di passi elementari che devono essere eseguiti, in un determinato ordine, per risolvere un problema. Nel nostro caso: … Passo 3: Se D!=0 il sistema ammette un’unica soluzione. Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Risoluzione di un sistema di equazioni lineari (diagramma di flusso) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Risoluzione di un sistema di equazioni lineari (esecutore umano) Attività: -leggere un passo sul foglio della procedura -eseguire il passo, eventualmente facendo uso della calcolatrice e della carta di minuta Terminato il lavoro scrivere il risultato su un foglio di carta da consegnare al richiedente Risoluzione di un sistema di equazioni lineari (esecutore umano) Possibile automatizzare l’intera procedura. Per capire come vediamo quali sono le componenti di un calcolatore… Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Elaboratore Un elaboratore è un dispositivo capace di effettuare calcoli e di prendere decisioni logiche ad una velocità milioni/miliardi di volte più veloce di quella di un essere umano Gli elaboratori processano dati sotto il controllo di insiemi di istruzioni (i programmi) che specificano i passi elementari da effettuare sui dati per ottenere il risultato voluto. I programmi sono scritti in linguaggi di programmazione. 15.7 milioni di secondi in un anno! La vita di una persona circa 80 anni 1.2 miliardi di secondi. Considerando che per 1/3 del tempo dormiamo un calcolatore è in grado di calcorare in un secondo più di una persona in una vita In questo corso affronteremo, dato un problema, 1)come determinare la sequenza di passi elementari che devono essere eseguiti per risolvere il problema, 2)come codificare tale sequenza in C, 3)come verificare che la soluzione trovata e la sua codifica siano corrette. Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore Un computer consiste di un processore Controlla le operazioni del computer ed effettua il processing dei dati memoria Memorizza dati e programmi dispositivi di I/0 Consentono la comunicazione tra il calcolatore e l’utente (Input: mouse, tastiera,…; Output: schermo, stampante,…) bus di sistema Consentono la comunicazione tra le varie componenti HW dell’elaboratore Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore CPU Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore Un computer consiste di un processore Controlla le operazioni del computer ed effettua il processing dei dati memoria Memorizza dati e programmi dispositivi di I/0 Consentono la comunicazione tra il calcolatore e l’utente (Input: mouse, tastiera,…; Output: schermo, stampante,…) bus di sistema Consentono la comunicazione tra le varie componenti HW dell’elaboratore Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore MEMORIA CPU Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore Un computer consiste di un processore Controlla le operazioni del computer ed effettua il processing dei dati memoria Memorizza dati e programmi dispositivi di I/0 Consentono la comunicazione tra il calcolatore e l’utente (Input: mouse, tastiera,…; Output: schermo, stampante,…) bus di sistema Consentono la comunicazione tra le varie componenti HW dell’elaboratore Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore MEMORIA CPU Output Input Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore Un computer consiste di un processore Controlla le operazioni del computer ed effettua il processing dei dati memoria Memorizza dati e programmi dispositivi di I/0 Consentono la comunicazione tra il calcolatore e l’utente (Input: mouse, tastiera,…; Output: schermo, stampante,…) bus di sistema Consentono la comunicazione tra le varie componenti HW dell’elaboratore Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore MEMORIA BUS DI SISTEMA CPU Output Input Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore Registri: -Program counter (memorizza l’indirizzo della prossima istruzione del programma da eseguire) -Instruction Register (memorizza l’ultima istruzione caricata) -Registri per il trasferimento dati da/verso la memoria *MAR (memory address register): specifica l’indirizzo di memoria da/verso cui avverrà la prossima lettura/scrittura *MBR (memory buffer register): contiene i dati che devono essere scritti in memoria/che vengono letti dalla memoria Un processore include -ALU (Unità Aritmetico-Logica) Sottosistema che effettua le operazioni sui dati (aritmetiche – addizione, sottrazione,…- e logiche –AND, OR,…-). Ha linee di ingresso (input), di controllo (per specificare il tipo di operazione da effettuare) e linee dati di uscita. -Capacità di controllo -Registri (memoria di dimensioni limitate e rapido accesso) COMPONENTI DI UN ELABORATORE -Registri per lo scambio di informazioni con dispositivi di I/O *I/OAR specifica un determinato dispositivo di I/O *I/OBR usato per scambiare dati tra un modulo di I/O e il processore -Data register Utilizzati per effettuare più velocemente operazioni sui dati Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Processore Un processore include ALU (Unità Aritmetico-Logica) Sottosistema che effettua le operazioni sui dati (aritmetiche –addizione, sottrazione,…- e logiche –AND, OR,…-). Ha linee di ingresso (input), di controllo (per specificare il tipo di operazione da effettuare) e linee dati di uscita. Capacità di controllo Registri (memoria di dimensioni limitate e rapido accesso) Program counter (memorizza l’indirizzo della prossima istruzione del programma da eseguire) Instruction Register (memorizza l’ultima istruzione caricata) Registri per il trasferimento dati da/verso la memoria MAR (memory address register): specifica l’indirizzo di memoria da/verso cui avverrà la prossima lettura/scrittura MBR (memory buffer register): contiene i dati che devono essere scritti in memoria/che vengono letti dalla memoria Registri per lo scambio di informazioni con dispositivi di I/O I/OAR specifica un determinato dispositivo di I/O I/OBR usato per scambiare dati tra un modulo di I/O e il processore Data register Utilizzati per effettuare più velocemente operazioni sui dati Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Memoria Un modulo di memoria consiste in un insieme di locazioni di memoria. Le locazioni di memoria hanno associati indirizzi crescenti Tipicamente la memoria è volatile (il contenuto della memoria viene perso quando viene effettuato uno shut down del computer). La memoria principale o primaria (es. RAM) e’ volatile. Esiste memoria secondaria (es: disco rigido) che invece è non volatile. Esistono diversi tipi di memoria con diversi trade-off tra costo, capacità e tempo di accesso Tempo di accesso più veloce costo maggiore per bit Capacita- maggiore accesso più lento MA costo più basso Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Memoria Memory technology Typical access time $per GB(04) SRAM 0,5-5ns Un modulo di memoria consiste in un insieme di locazioni di memoria. Le locazioni di memoria hanno associati indirizzi crescenti Tipicamente la memoria è volatile (il contenuto della memoria viene perso quando viene effettuato uno shut down del computer). La memoria principale o primaria (es. RAM) e’ volatile. Esiste memoria secondaria (es: disco rigido) che invece è non volatile. Esistono diversi tipi di memoria con diversi trade-off tra costo, capacità e tempo di accesso Tempo di accesso più veloce costo maggiore per bit Capacita- maggiore accesso più lento MA costo più basso Memory technology Typical access time $per GB(04) SRAM 0,5-5ns $4000-$10000 DRAM 50-70ns $100-$200 Magnetic disk 5M-20Mns $0,5-$2 Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Gerarchia di memoria -Costo/bit minore -Capacità > -Tempo di accesso > -Frequenza di accesso da parte del processore minore Si cerca un dato prima in livelli alti della gerarchia (ad esempio in cache). Se il dato si trova nei livelli alti della gerarchia (cosa che avviene una frazione di volte denominata Hit Ratio) allora il tempo di accesso è rapido. Altrimenti si paga il tempo di accesso maggiore associato ai livelli bassi della gerarchia. Segreto: la Hit Ratio deve essere alta Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Gerarchia di memoria Un esempio Il segreto è nella Hit Ratio !! T1+T2 T2 T1 Hit Ratio 1 Tempo di accesso livello 1 Un esempio Supponiamo che ci siano due livelli di memoria. Il primo livello è in grado di memorizzare 1000 bytes ed ha un tempo di accesso di 0.1ms Il secondo livello è in grado di memorizzare 100.000 bytes ed ha un tempo di accesso di 1ms Il processore cerca prima il dato nel livello 1 di memoria. Se il dato è nel livello 2 si paga un ulteriore ritardo per trasferire dal livello 2 al livello 1. Supponiamo che il 95% delle volte il dato venga trovato al livello 1 (Hit Ratio =0.95). Il tempo medio di accesso è dato da: (0.95) (0.1ms) + (0.05)(0.1ms+ 1ms)= 0.15ms Segreto: principio di località di riferimento  Durante l’esecuzione di un programma le locazioni di memoria accedute dal processore (dati/istruzioni) tendono ad essere correlate È possibile proattivamente passare dati tra i vari livelli della gerarchia in modo che siano nei livelli alti della gerarchia i dati e le istruzioni che con alta probabilità verranno acceduti dal processore in questo momento  hit ratio elevata Vicino al tempo di accesso Della memoria più veloce ! Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Gerarchia di memoria -Costo/bit minore -Capacità > -Tempo di accesso > -Frequenza di accesso da parte del processore minore M1: Sarà possibile specificare che alcune variabili devono essere memorizzate nei registri. Tuttavia i compilatori di solito sono in grado anche più del programmatore di ottimizzare quali variabili dovrebbero essere memorizzate nei registri. Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Componenti di un elaboratore MEMORIA CPU Output Input Scriviamo un programma. Il nostro programma deve essere caricato in memoria principale per poter essere eseguito. Memoria deve poter essere allocata per le variabili usate dal programma (es. x1,x2, e/o variabili temporanee usate per fare conti) I valori di a11,a12,.. devono anche essere memorizzate in memoria e essere inserite da input  si comincerà quindi ad eseguire il programma Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Esecuzione di una istruzione Il processore legge l’istruzione dalla memoria (fetch) /* program counter dice dove trovare la prossima istruzione; Instruction Register conterra’ l’istruzione letta*/ Esegue quindi l’istruzione consideriamo il caso di un computer semplificato in cui ogni istruzione occupa una parola di memoria (16 bit) PC (program counter) ha memorizzato il valore 300 Processore contiene un unico registro dei dati chiamato accumulatore, di 16 bit (sia dati che istruzioni lunghi per ipotesi 16 bit) Formato delle istruzioni: 4 bit per tipo di istruzione (opcode), 12 bit restanti per altre info per poter eseguire l’istruzione Azioni che possono essere effettuate nell’eseguire una istruzione Processore-Memoria: dei dati possono essere trasferiti dal processore alla memoria o dalla memoria al processore Processore-IO: dei dati possono essere trasferiti da o verso una periferica Processing dei dati: il processore può dover eseguire operazioni aritmetiche o logiche sui dati Controllo: ad esempio il flusso di esecuzione puo’ essere modificato Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Un esempio… PC=300 Si fa il fetch dell’istruzione memorizzata nella locazione di memroia 300. Tale istruzione (1940 in esadecimale) viene caricata nell’IR. Per fare queste operazioni si usano il MAR e il MBR come registri intermedi Istruzione 1940 1 (primi 4 bit) indica che carichiamo un nuovo valore dalla memoria nell’accumulatore L’indirizzo di memoria da cui prendere il valore è 940 Passo 2 esegue tale istruzione Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Un esempio… PC=301 Si fa il fetch dell’istruzione memorizzata nella locazione di memoria 301. Tale istruzione (5941 in esadecimale) viene caricata nell’IR. Per fare queste operazioni si usano il MAR e il MBR come registri intermedi Istruzione 5941 5 (primi 4 bit) indica che il vecchio contenuto dell’AC e la locazione di memoria specificata devono essere sommate (ed il risultato memorizzato nell’AC) L’indirizzo di memoria da cui prendere il valore è 941 Passo 2 esegue tale istruzione Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Un esempio… PC=302 Si fa il fetch dell’istruzione memorizzata nella locazione di memoria 302. Tale istruzione (2941 in esadecimale) viene caricata nell’IR. Per fare queste operazioni si usano il MAR e il MBR come registri intermedi Istruzione 2941 2 (primi 4 bit) indica che il contenuto dell’AC deve essere copiato nella locazione di memoria specificata L’indirizzo di memoria in cui memorizzare il valore dell’AC è 941 Passo 2 esegue tale istruzione URRA’ Che cosa abbiamo fatto? Siano x e y due variabili memorizzate nelle locazioni 940 e 941. Abbiamo semplicemente eseguito y=x+y; Complicato!! Dobbiamo programmare conoscendo cosi’da vicino i dettagli della macchina? No. Si programma in questo modo in linguaggio macchina. Per fortuna il C è un linguaggio ad alto livello… Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Compilatore L’elaboratore è in grado di comprendere ed eseguire direttamente programmi scritti in linguaggio macchina Il linguaggio di programmazione che studieremo, il C, è un linguaggio di alto livello. Diversamente dal linguaggio macchina, difficile da usare, e che richiede una comprensione approfondita dell’HW, i linguaggi ad alto livello consentono di esprimere in modo del tutto naturale una serie di passi elementari che devono essere compiuti dal programma. (complessità crescente del SW richiede linguaggi di alto livello efficaci e buona programmazione) Occorre un traduttore che una volta scritto in un linguaggio ad alto livello un programma traduca questo programma in linguaggio macchina. Tale compito di traduzione è svolto dal compilatore del linguaggio (es. da gcc, compilatore C). Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Linguaggi di alto livello vs. linguaggio macchina (un esempio) Task: Sommare straordinari a paga base per ottenere lo stipendio lordo Linguaggio macchina (dipende dal tipo di computer ed è difficile da programmare) +1300042774 +1400593419 + 1200274027 Assembly language LOAD BASEPAY ADD OVERPAY STORE GROSSPAY Linguaggio ad alto livello grossPay = basePay + overTimePay; Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a. a

Componenti di un elaboratore MEMORIA CPU Output Input Scriviamo un programma. Il nostro programma deve essere caricato in memoria principale per poter essere eseguito. L’utente scrive il programma in un linguaggio ad alto livello. Prima dell’esecuzione del programma il programma viene compilato ottenendo un eseguibile in linguaggio macchina, che il calcolatore comprende… Si comincia quindi ad eseguire il programma… Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Fasi della compilazione Il programma viene scritto con un editor e salvato sul disco rigido primoprogramma.c Editor Disco Inserisce .h di librerie, sostituisce MACRO, sostituisce costanti simboliche Preprocessore Disco Traduce in inguaggio Macchina. Crea un codice oggetto e lo memorizza su disco Invocati automaticamente da gcc primoprogramma.c Compilatore Disco a.out Linker Disco Il linker inserisce nel codice oggetto il codice relativo a chiamate a libreria. Produce e memorizza su disco un eseguibile. Memoria … Disco Loader Carica il programma in memoria Memoria … CPU Il programma viene eseguito Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010 DEBUGGING

Componenti di un elaboratore MEMORIA CPU Output Input Al termine dell’esecuzione del programma tale programma stamperà se il sistema di equazioni lineari ha una soluzione, è inconsistente o ha infinite soluzioni. Se ha una soluzione il valore sarà memorizzato in x1 e x2 e questo valore verrà fornito in output all’utente (su schermo o stampato tramite stampante, o stampato su file,..) Le risorse di un calcolatore possono essere condivise da più utenti o da più programmi. Chi decide quale programma eseguire, quali risorse dedicare all’esecuzione del programma (ad esempio dove memorizzare le variabili del programma etc.?) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Sistema Operativo Abbiamo già visto come L’informatica richieda La conoscenza delle -architetture -programmazione -algoritmi -compilatori -sistemi operativi HW (processore, memoria, I/O device) Sistema Operativo (Linux, MACOS, Windows) Programmi applicativi (compilatori, editor di testo, Video games,…) utente Controlla e coordina l’uso dell’HW da parte dei vari programmi applicativi Vedrete il laboratorio come si lavora da utente su Linux, il gcc (compilatore C della GNU) e vi (editor di testo) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Dai mainframe all’ubiquitous computing Dimensioni e costo decrescente dell’HW hanno fatto si che si passasse dai mainframe ai personal computer prima (anni 80’) e che l’evoluzione consentisse di inserire capacità di calcolo (e comunicazione) all’interno di tutte gli oggetti che ci circondano (ubiquitous computing) Gli elaboratori non sono più stand–alone ma possono comunicare tramite reti che li interconnettono (rendendo possibile una computazione distribuita) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

…Struttura del corso di laurea (competenze già emerse come necessarie nella prima lezione di prog1…) Architettura di Internet Program. di rete (+ lab) Reti avanzate Sviluppo e ottimizzazione di sistemi wireless Progettazione di reti HW Sistema Operativo Programmi applicativi utente HW Sistema Operativo Programmi applicativi utente RETI HW Sistema Operativo Programmi applicativi utente HCI Compilatori, SO (1 e 2) Programmazione (1,2,lab) Specifica del problema Algoritmo Codifica Debugging/testing Architettura I, II Algoritmi (1,2…) Ingegneria del SW Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Programma di questo corso Imparare a programmare in linguaggio C Specifica del problema Identificazione dell’algoritmo per Risolvere il problema (diagramma di flusso) Codifica in C Debugging e Testing Verifica di correttezza del programma Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Informazioni generali (1) Docente: Prof.ssa Chiara Petrioli Lezioni in AULA 1 NEC di Chimica il lunedì (10.30-12.30) e giovedì (8.30-10.30) Ricevimento : lunedì o giovedì (da stabilire) per sapere di più sulla mia attività di ricerca mia pagina personale http://reti.dsi.uniroma1.it/eng/petrioli/chiara-petrioli.html Esercitatore: Dott. Paul Wollan e Toni Mancini (laboratorio AST mercoledì 8.30-11.30) Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Informazioni generali (2) Libri di testo Deitel & Deitel “C: How to Program”, Prentice Hall (meglio abituarsi a studiare sui testi originali) Materiale di consultazione A mano a mano disponibile sul sito. Prime lezioni: Lucidi, cap. 2 del Preparata di architetture (prime 5-6 pagine), Stallings di Sistemi Operativi, cap 1 sull’organizzazione di un calcolatore. Sito del corso: andate su twiki.di.uniroma1.it Laurea triennale, fondamenti di programmazione A-D Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010

Informazioni generali (3) Esame: Scritto (domande/ esercizi). Quest’anno non ci sarà interruzione per gli esoneri Quanti gli studenti che vorrebbero un esonero? Verbalizzazione dello scritto oppure scritto + orale (orale necessario per la lode o per verbalizzare voti superiori al 28) Homework bisettimanali, da fare possibilmente in laboratorio (6 punti dell’esame finale vengono da homework o prova di laboratorio). Chi non dovesse fare gli Homework dovra’ sostenere un esame di laboratorio. Un messaggio esplicito: seguite le lezioni in aula, studiate ed esercitatevi al calcolatore, sfruttate tutte le opportunita’ (esercitatori, laboratorio, ricevimento, prove intermedie) per apprendere, chiarirvi i dubbi e passare immediatamente l’esame. Non rimanete indietro! Prof. Chiara Petrioli, Corso di Fondamenti di Programmazione, a.a. 2009/2010