Informatica B Allievi Elettrici AA Introduzione al corso
Informazioni Generali Prof. Letizia Tanca, dip. Elettronica e Informazione (DEI), stanza 128, tel. 3531, –Mercoledì 10: :15: lezione –ricevimento Mercoledì 14: :00 Esercitazioni: ing. William Fornaciari; –Giovedì h. 8: :15 lezione o esercitazioni –ricevimento Giovedì 10: :30 Laboratorio:ing.Laura Mandelli (responsabile) sig. Luca Caputo (tutor) –Lunedì h. 15: :15 - prima squadra –Martedì h. 15: :15 - seconda squadra Sito web del corso (in costruzione): accessibile da
Testi Ceri, Mandrioli, Sbattella: The art and Craft of Computing, Addison Wesley Ceri, Mandrioli, Sbattella: Informatica: arte e mestiere, Mc Graw Hill Manuali vari di C Bellettini et al. : Linguaggio C: esercizi e temi d’esame risolti, ed. Esculapio, prog. Leonardo
L’informatica E’ la scienza che si occupa della rappresentazione dell’ informazione e della sua gestione
L’informatica Scienza: approccio rigoroso e sistematico Informazione: e’ parte di qualsiasi attivita’ umana Rappresentazione: il problema di astrarre i concetti importanti da quelli trascurabili per poter modellare la realta’ di interesse: ci serve studiare metodi di rappresentazione appropriati all’elaborazione da parte di una macchina digitale Gestione: uso e trasformazione dell’informazione in maniera funzionale agli obiettivi
Il corso: punti di vista Programmazione –impariamo un linguaggio di programmazione –impariamo come si imposta un algoritmo Architettura di un Computer (i calcolatori elettronici): –hardware –software : applicativo e di sistema (le basi di dati, la rete Internet)
Programmazione impariamo un linguaggio di programmazione : –linguaggio C impariamo come si imposta una procedura: –l’astrazione –i tipi di dati e le strutture dati –le strutture di controllo e gli algoritmi
I calcolatori elettronici strumenti in grado di eseguire operazioni non complesse modello attuale: –Capacità di scelta (possibilità di scegliere percorsi diversi in base allo stato interno del sistema); –Funzionalità programmata (capacità di modificare il proprio comportamento in base al programma); –Dispositivi digitali (utilizzano valori binari).
I Modelli dei Calcolatori Macchina di Turing (1936): modello teorico legato alla logica matematica. modello di Von Neumann: ENIAC –calcolatore reale dotato di capacità di scelta, di funzionalità programmata e digitale –non binario bensì decimale –Computa esattamente le stesse funzioni della MdT !!!!
Macchina di Von Neumann Di tipo sequenziale: può processare una sola istruzione per volta. Oggi esistono altri modelli di computazione digitale (ad es. macchine parallele) Computano esattamente le stesse funzioni!! Altri tipi di computer (quantum computers, analogici…)
Architettura di un Computer Hardware l’Unita’ Centrale (CPU), la Memoria Centrale (RAM) la Memoria di Massa il Bus di Sistema le Unita’ Periferiche le Reti di Computer Il linguaggio della macchina : l’aritmetica binaria
La macchina di von Neumann l’Unita’ Centrale (CPU), la Memoria Centrale (RAM) la Memoria di Massa il Bus di Sistema le Unita’ Periferiche CPU MM BUS RAM UP1 UPn
Architettura di un Computer: Software di sistema il sistema operativo i sistemi di gestione di basi di dati il software di rete gli ambienti di programmazione: editors, traduttori, collegatori, debuggers.. gli strumenti di produttivita’: word processors, fogli elettronici, strumenti per la produzione di slide, strumenti per la produzione di ipertesti…..
Architettura di un Computer: Software applicativo gestionale (sistemi informativi aziendali, elaborazione paghe, fatturazione, automazione del terziario, ….office automation: workflow management) numerico (metereologia, applicaz. statistiche,..) telematico (terminali bancari, prenotazioni aeree, ….Internet….) automazione industriale (robotica, CAD, CIM…) controllo di processi (centrali elettriche, nucleari, controllo traffico aereo…) realta’ virtuale e interfacce utente …software multimediale
Strumenti di Produttivita’ Word processors, agende elettroniche,... I fogli elettronici: Microsoft Excel Le basi di dati: Microsoft Access La rete Internet Le reti di calcolatori, sistemi distribuiti Il World Wide Web La posta elettronica Telnet, FTP
Gli Algoritmi Gestione dell’ informazione: uso e trasformazione dell’informazione in modo appropriato agli obiettivi. Le informazioni sono usate e trasformate attraverso algoritmi. Il concetto di algoritmo costituisce un aspetto fondamentale dell’informatica. Algoritmo: specifica di una successione finita di passi eseguibili senza alcuna ambiguità (perché essa sia automatizzabile).
Strumenti per la descrizione degli algoritmi Semi-formali (specifiche iniziali, ancora intelligibili solo all’essere umano) Formali (programmi da eseguire): linguaggi di programmazione
Linguaggi di Programmazione Consentono di scrivere gli algoritmi sotto forma di programmi eseguibili dal calcolatore. Suddivisi in: Linguaggi di alto livello (più vicini linguisticamente al linguaggio naturale); Linguaggi assemblatori (più vicini al codice macchina)
Componenti di un linguaggio Vocabolario, o lessico: parole che costituiscono il linguaggio, controllate dal PARSER o analizzatore lessicale. Sintassi: regole per comporre i simboli del lessico. Il controllo della sintassi avviene tramite l’analizzatore sintattico. Semantica: significato delle espressioni. Il controllo della semantica è il più difficile. un errore semantico si puo' rilevare in genere solo a tempo di esecuzione. Sono categorie rigide nel caso di linguaggi formali di programmazione
I Traduttori I compilatori sono programmi che traducono i programmi scritti in alto livello in codice macchina. Gli interpreti interpretano direttamente le operazioni eseguendole. Esempi di linguaggi: Interpretati LISP, PROLOG (usati nell’intelligenza artificiale; Compilati C, C++, PASCAL, FORTRAN.
La catena di programmazione (nel caso di linguaggi compilati) Generazione di un programma eseguibile: partendo da un algoritmo descritto con un linguaggio simbolico di basso livello (Assembler) o di alto livello (C, Fortran,…), chiamato PROGRAMMA SORGENTE, produce un programma rappresentato in codice macchina, chiamato PROGRAMMA ESEGUIBILE
Le fasi sono quattro Editing (produzione del programma) Traduzione Linking (collegamento) Loading (caricamento)
Editing Il testo del programma sorgente, costituito da una sequenza di caratteri, viene composto e modificato usando uno specifico programma: l’EDITOR. Così otteniamo un File Programma Sorgente memorizzato in memoria di massa in un file di testo di nome: –XXX.ASM per i programmi in assembler –XXX.C per i programmi in C –XXX.CPP per i programmi in C++ –..etc
Traduzione linguaggio assembler --> codice macchina (assemblatore) linguaggio di alto livello --> codice macchina (compilatore). durante questa fase si riconoscono i simboli, le parole e i costrutti del linguaggio: eventuali messaggi diagnostici segnalano errori lessicali e sintattici si produce la forma binaria del codice macchina corrispondente: a partire dal File Programma Sorgente si produce un File Programma Oggetto, cioè in un file binario di nome XXX.OBJ.
Linking Il programma LINKER deve collegare fra loro il file oggetto e i sottoprogrammi richiesti (es. le funzioni di C) i sottoprogrammi sono estratti dalle Librerie oppure sono individuati tra quelli definiti dal programmatore (trovati anch’essi nel file oggetto) vengono sistemati i riferimenti ad indirizzi dei vari elementi collegati viene prodotto un File Programma Eseguibile, un file binario che contiene il codice macchina del programma eseguibile completo ed ha nome XXX.EXE messaggi di errore dovuti al ritrovamento di errori nel citare i nomi delle funzioni da collegare il programma sarà effettivamente eseguibile solo dopo che il contenuto del file sarà stato caricato nella memoria di lavoro (centrale) del calcolatore
Loading il LOADER individua una porzione libera della memoria di lavoro e vi copia il contenuto del file programma eseguibile XXX.EXE. eventuali messaggi rivolti all’utente possono essere segnalazioni di spazio di memoria insufficiente.
Esecuzione Per eseguire il programma occorre fornire in ingresso i dati richiesti e in uscita riceveremo i risultati (su video o file o stampante). Durante l’esecuzione possono verificarsi degli errori (run- time) quali: calcoli con risultati scorretti (ad esempio un Overflow); calcoli impossibili (divisioni per zero, logaritmo di un numero negativo, radice quadrata di un numero negativo,….); errori nella concezione dell’algoritmo (l’algoritmo non risolve il problema dato); Tutti gli esempi citati si riferiscono ai cosiddetti errori semantici.