Informatica B Allievi Elettrici AA 2000-01 Introduzione al corso.
-
Upload
romolo-boi -
Category
Documents
-
view
218 -
download
3
Transcript of Informatica B Allievi Elettrici AA 2000-01 Introduzione al corso.
Informatica B
Allievi Elettrici
AA 2000-01
Introduzione al corso
Informazioni Generali• Prof. Letizia Tanca, dip. Elettronica e Informazione (DEI), stanza 128,
tel. 3531, email: [email protected]
– Mercoledì 10:15 - 12:15: lezione
– ricevimento Mercoledì 14:00 - 16:00
• Esercitazioni: ing. William Fornaciari; email: [email protected]
– Giovedì h. 8:15 - 10:15 lezione o esercitazioni
– ricevimento Giovedì 10:30 - 15:30
• Laboratorio:ing.Laura Mandelli (responsabile) sig. Luca Caputo (tutor)
– Lunedì h. 15:15 - 19:15 - prima squadra
– Martedì h. 15:15 - 19:15 - seconda squadra
• Sito web del corso (in costruzione): accessibile da www.elet.polimi.it/~tanca
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 ComputerHardware
• 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
BUSRAM
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 descrizionedegli 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.