Scarica Introduzione all'Informatica: Storia e Evoluzione dei Calcolatori e Processori e più Dispense in PDF di Elementi di Informatica solo su Docsity!
Informatica
(12BHDxx)
2
Settimana n. 1
Contenuti
- Introduzione all’informatica
- Cenni storici
- Concetto di programma
- Diagrammi di flusso
Definizione di Informatica
- L’informatica e` la scienza che rappresenta e manipola le
informazioni
3
Elaboratore Elettronico
input
(dati)
output
(risultati)
(elaborazione)
4
Problematiche
- Codifica dei dati in un formato comprensibile
all’elaboratore
- Codifica degli ordini in una sequenza di operazioni
che costituiscono l’elaborazione
- Decodifica dei risultati in un formato comprensibile
all’uomo
Hardware e Software
- Un elaboratore elettronico è formato da due componenti:
- Hardware : Componente “fisica”, consistente di parti elettroniche, meccaniche, magnetiche ed ottiche
- Software : Componente “non tangibile”, consistente di:
- Programmi: Le “istruzioni” per l’hardware
- Dati: Le informazioni su cui i programmi operano
Le Tecnologie come Fattore Abilitante dei
Cambiamenti Industriali e Sociali
18001800
20002000
19001900
7
La Pervasività
8
Un po’ di Storia: Abacus
9
B. Pascal (1642)
10
J.M. Jacquard (Punched Card Loom - 1801)
computazione meccanica
C. Babbage (Analyical Engine – 1833)
Elaboratori Special-Purpose
19
Elaboratori General-Purpose
- Classificati in base a complessità e capacità di calcolo
- Personal Computer (PC)
- Elaboratori per uso personale
- Workstation (WS)
- Elaboratori per uso professionale
- Grafica e capacità di calcolo elevate
- Minicalcolatori
- Mainframe di dimensioni/complessità/prestazioni ridotte
- Mainframe
- Calcolatori delle generazioni precedenti
- Molti utenti connessi tramite terminali
- Supercalcolatori
- Calcolatori con più unità di elaborazione per calcoli complessi
20
Personal (client) Workstation
Mainframe (host)
Server
Elaboratori General-Purpose (Cont.)
21
Server
- Un server è un elaboratore che fornisce dei “servizi” a
altri elaboratori (chiamati clients) attraverso una rete
(computer network)
22
Server Farm
- Con il termine server farm si fa riferimento all’insieme di
elaboratori server collocati in un apposito locale (centro di
calcolo) presso una media o grande azienda
Mainframe
- Mainframes (colloquialmente indicati anche come Big
Iron) sono elaboratori di grandi prestazioni usati
principalmente da grandi imprese per rilevanti
applicazioni software (mission critical application)
IBM z
mainframe
IBM BlueGene/Q
Livermore Labs
Potenza: 16 PFLOPS (PETA FLOPS)
16 000 000 000 000 moltiplicazioni secondo
Supercomputer (2012)
25
Elaboratori General-Purpose (Cont.)
Prezzo [KEuro]
Prestazioni
[Mop/s]
PC
WS
Mini
Mainframe
Supercalcolatori
(^10 9) tendenza
26
Le Ultime Parole Famose…
“Penso che nel mondo ci sia mercato per quattro o cinque computer”
Thomas Watson (Presidente IBM, 1943)
Computer venduti nel 2014: 320.000. Tablet venduti nel 2014: 290.000. Smartphone venduti nel 2014: 1.288.000. Autovetture vendute nel 2014: 71.150.
27
1980
1990
2000
Low cost computing
Low cost local storage
Multimedia over the network
2005
Web 2.
La Storia Recente
28
I Dati Digitali: Tutto Diventa “ bit ”
TestiTesti
DatiDati
VoceVoce
MusicaMusica
ImmaginiImmagini
FilmatiFilmati
01101100
La Grande Convergenza
- Satellitare
- DTT (digitale terrestre)
- Satellitare
- DTT (digitale terrestre)
Internet (VOIP)
37
Esempio di Soluzione di un Problema
- Problema: Calcolo del massimo
tra due valori A e B
- Soluzione: Il massimo è il più
grande tra A e B...
- Soluzione formale:
- inizialmente: max = 0
- se A > B allora max = A; stop
- altrimenti max = B; stop
Soluzione
formale
Problema
Soluzione
informale
38
Altro Esempio di Soluzione di un Problema
- Problema: Calcolo del massimo
comun divisore (MCD) fra due
valori A e B
- Soluzione: Usiamo la definizione di
MCD: è il numero naturale più
grande per il quale possono
entrambi essere divisi.
- Soluzione formale: ??? Soluzione
formale
Problema
Soluzione
informale
39
Formalizzazione della Soluzione
- La differenza tra una soluzione informale ed una formale
sta nel modo di rappresentare un algoritmo:
- Informale: Descrizione a parole
- Formale: Descrizione in termini di sequenza di operazioni elementari
- Esistono vari strumenti per rappresentare una soluzione
in modo formale
- Più usati:
- Pseudo-codice
- Diagrammi di flusso
40
Formalizzazione della Soluzione (Cont.)
- Pseudo-codice
- Vantaggi
- Svantaggi
- Descrizione dell’algoritmo poco astratta
- Interpretazione più complicata
- Diagrammi di flusso
- Vantaggi
- Più intuitivi perchè utilizzano un formalismo grafico
- Descrizione dell’algoritmo più astratta
- Svantaggi
- Richiedono l’apprendimento della funzione dei vari tipi di blocco
Diagrammi di Flusso (Flow-Chart)
- Sono strumenti grafici che rappresentano l’evoluzione
logica della risoluzione del problema
- Sono composti da:
- Blocchi elementari per descrivere azioni e decisioni (esclusivamente di tipo binario)
- Archi orientati per collegare i vari blocchi e per descrivere la sequenza di svolgimento delle azioni
Diagrammi di Flusso (Cont.)
- I blocchi elementari sono:
- Blocco diinizio (Start)
- Blocco difine (Stop)
- Blocco diazione generica
- Blocco diazione di I/O
- Blocco didecisione
- Blocco diconnessione
- (Simbolo dirichiamo di un blocco)
43
Start
Stop
Diagrammi di Flusso: Blocchi di Inizio/Fine
44
azione generica
Diagrammi di Flusso: Blocchi di Azione
azione di I/O
45
condizione
V F
Diagrammi di Flusso: Blocco di Decisione
46
Diagrammi di Flusso: Blocco di Connessione
Costruzione di Diagrammi di Flusso
- Per mezzo dei diagrammi di flusso si possono
rappresentare flussi logici complicati a piacere
- E’ però preferibile scrivere diagrammi di flussostrutturati,
che seguano cioè le regole della programmazione
strutturata
- Così facendo si ottiene:
- Maggiore formalizzazione dei problemi
- Riusabilità del codice
- Maggiore leggibilità
Diagrammi di Flusso Strutturati
- Definizione formale:
- Diagrammi di flusso strutturati: Composti dastrutture elementari indipendenti tra loro
- Struttura elementare = Composizione particolare di blocchi elementari
- Sempre riducibili ad un diagramma di flusso elementare costituito da un'unica azione
- Rispetto a diagrammi di flusso non strutturati questo implica l’assenza disalti incondizionati all'interno del flusso
logico del diagramma
condizione
V
F
Repeat-Until
struttura
55
Verifica di Strutturazione
- Per verificare se un diagramma di flusso è strutturato si
devono compiere i seguenti passi:
- Etichettare ogni blocco (esempio: 1,2,3,4,…)
- Sostituire ad ogni struttura elementare individuata una struttura “generica”, avente per etichetta l’unione delle etichette
- Se si è fatta almeno una sostituzione, ripetere il passo precedente
- Se alla fine si ottiene un diagramma lineare, allora il diagramma originale è strutturato
56
Start
V
F
3 Stop
Diagramma di Flusso Strutturato: Esempio
57
Diagramma di Flusso Strutturato: Esempio (Cont.)
Start
V
F
Stop
58
Diagramma di Flusso Strutturato: Esempio (Cont.)
Start
Stop
Diagramma di Flusso Strutturato: Esempio (Cont.)
Start
Stop
Start
Stop
V
F
Diagramma di Flusso non Strutturato: Esempio
61 62
Settimana n. 2
Contenuti
- Linguaggi di programmazione
- Architettura di un elaboratore
- Uso del compilatore
63
Stadi di Sviluppo di un Programma
Soluzione
formale
Programma
Problema
Soluzione
informale
64
Dalla Soluzione al Programma
- La scrittura del programma vero e proprio è praticamente
immediata a partire dalla soluzione formale
- I linguaggi di programmazione forniscono infatti costrutti
di diversa complessità a seconda del tipo di linguaggio
Quali Linguaggi?
- Diversi livelli (di astrazione)
- Linguaggi ad alto livello
- Elementi del linguaggio hanno complessità equivalente ai blocchi dei diagrammi di flusso strutturati (condizionali, cicli,…) - Esempio: C, C++, Basic, Pascal, Fortran, Java, etc. - Indipendenti dall’hardware
- Linguaggi “assembler”
- Elementi del linguaggio sono istruzioni microarchitetturali
- Dipendenti dall’hardware
- Esempio: Assembler del microprocessore Intel Core
Quali Linguaggi? (Cont.)
- Esempi:
- Linguaggi ad alto livello … if (x > 3) then x = x+1; …
- Linguaggi assembler … LOAD Reg1, Mem[1000] ADD Reg1, 10 …
Specifico per una specifica architettura (microprocessore)
73
Astrazione dei Dati
3
‘a’
Memoria
Indirizzi
-11.
X; intero; valore=
c; carattere; valore=‘a’
t; reale; valore=-11.
74
Istruzioni
- Indicano le operazioni che il linguaggio permette di
eseguire (traducendole) a livello macchina:
- Pseudo-istruzioni
- Istruzioni elementari
- Operazioni direttamente corrispondenti adoperazioni hardware
- Esempio: Interazione con i dispositivi di I/O, modifica/accesso a dati
- Istruzioni di controllo del flusso
- Permettono di eseguire delle combinazioni di operazioni complesse
75
Esempio di Programma
PROGRAM prova ; // programma di prova CONSTANTS pi = 3. coeff = 0. VARIABLES x : INTEGER y : REAL c : CHARACTER BEGIN PROGRAM x = 2 ; IF ( y > 2 ) THEN y = x * pi ; PRINT x , y ; END PROGRAM
Identificatori
Pseudo-istruzione PAROLE CHIAVE
Istruzione
di controllo
del flusso
Specifica di tipo
Specifica di celle di memoria
Parte
“operativa”
Istruzioni
elementari
76
Linguaggio di Programmazione
- Imparare un linguaggio significa conoscere:
- Le parole chiave
- I tipi predefiniti
- Le istruzioni e la loro sintassi
- In questo corso:
- Estensione dei concetti a linguaggi analoghi è immediata
Lo Sviluppo di un Programma
1. Scrittura di un programma
- File “sorgente”
- Scritto utilizzando un linguaggio di programmazione
2. Traduzione di un programma in un
formato comprensibile al calcolatore
- Articolato in più fasi
- Gestito automaticamente da un programma chiamato traduttore
- In questo corso ci occuperemo del
primo punto
- Ma è importante sapere cosa succede nella fase successiva!
Scrittura del programma
Scrittura del programma
Traduzione del programma
Traduzione del programma
Scrittura del Programma
- Un sorgente C è un normale file di testo
- Si utilizza un editor di testi
- Blocco Note
- Editor specializzati per programmatori (ambienti integrati)
79
Editor per Programmatori
- Colorazione ed evidenziazione della sintassi
- Indentazione automatica
- Attivazione automatica della compilazione
- Identificazione delle parentesi corrispondenti
- Molti disponibili, sia gratuiti che commerciali
80
Compilatore C
- Traduce i programmi sorgenti scritti in linguaggio C in
programmi eseguibili
- È a sua volta un programma eseguibile, a disposizione del
programmatore
- Controlla l’assenza di errori di sintassi del linguaggio
- Non serve all’utente finale del programma
- Ne esistono diversi, sia gratuiti che commerciali
81
Ambienti Integrati
- Applicazioni software integrate che contengono al loro
interno
- Un editor di testi per programmatori
- Un compilatore C
- Un ambiente di verifica dei programmi (debugger)
- IDE: Integrated
Development
Environment
82
Traduzione di un Programma
File sorgente
File oggetto
File eseguibile
CompilatoreCompilatore
LinkerLinker LibrerieLibrerie Librerie
Questo file può essere direttamente caricato in memoria ed eseguito
Architettura degli elaboratori Memoria
Unità elaborazione
Unità uscita
Unità ingresso
Memoria centrale (RAM)
Memoria di massa (dischi)
I Blocchi Fondamentali dell’Elaboratore
Massima Memoria Esterna
- La memoria esterna (es. dischi) non dipende dall’Abus
perché viene vista come un periferico (di input e/o di
output)
- La massima quantità di memoria esterna dipende dal bus
di I/O (quello su cui sono collegati i periferici)
91
Unità di Input/Output
- Trasformano informazioni dal mondo umano a quello del
computer e viceversa:
- umano = diversi tipi di segnali fisici, analogici, asincroni
- computer = segnali solo elettronici, digitali, sincroni
92
Controllo
Interfaccia (controller)
Interfaccia (controller)
Dati
I Bus Esterni (I/O)
Piastra madrePiastra madre
Universali
USB
Firewire (IEEE
Orientati alle
memorie di massa
SCSI
EIDE
Unità di controllo
Unità di controllo
Registri (Memoria locale)
Unità aritmetica (ALU)
CPU
94
Registri
- Elementi di memoria locale usati per conservare
temporaneamente dei dati (es. risultati parziali).
- Pochi (8...128)
- Dimensione di una word (8...64 bit)
Unità Operativa
- Svolge tutte le elaborazioni richieste (aritmetiche, logiche,
grafiche, ...).
ALU (Arithmetic-Logic Unit)
- Svolge tutti i calcoli (aritmetici e logici)
- Solitamente composta da circuiti combinatori
97
Principio di Funzionamento di un Elaboratore
- Il processore esegueprogrammi
- Programma = Insieme di istruzioni
- Istruzioni = Direttive comprensibili dal processore corrispondenti a delle azioni: - Operazioni aritmetiche - Interazione con dispositivi di I/O - Interazione con memoria - Operazioni di controllo
- Dati = Informazioni su cui il programma opera
Principio di Funzionamento (Cont.)
- Principio dello “stored computer program”
- Dati e programmi risiedono nella memoria di massa
- Per efficienza, per essere eseguiti DEVONO sempre essere caricati nella memoria centrale prima di essere eseguiti
- Giustificazione:
- Compromesso velocità/quantità
- Poca memoria “veloce”, molta memoria “lenta”
Principio di Funzionamento (Cont.)
Disco Memoria Centrale
Microprocessore
- Caricamento programma
- Lettura dati
- Scrittura risultati
Preleva una istruzione dalla memoria centrale
Interpreta l’istruzione
Esegue l’istruzione
Ciclo di Esecuzione delle Istruzioni
Il Clock
- Ogni elaboratore contiene un elemento di
temporizzazione (detto clock ) che genera un riferimento
temporale comune per tutti gli elementi costituenti il
sistema di elaborazione.
Linguaggio dei Calcolatori
- Qual è il linguaggio dei calcolatori?
- Un calcolatore è un dispositivo:
- Elettronico:
- Funzionamento basato su segnali elettrici
- Digitale:
- Segnali elettrici “particolari” che hanno solamente due valori (segnalibinari)
- E’ possibile rappresentare lo “stato” di un calcolatore
tramite un insieme di simboli che hanno solo due valori
Bit e Byte
- Per convenzione, i due valori del segnale sono identificati
con 0 e 1
- Bit = Singolo valore 0/1 = Binary digIT (cifra binaria)
- Un gruppo di 8 bit viene denominato Byte
- Un gruppio di 2 Byte viene denominato Word
- Multipli del Byte
- Kilo K 210 ~ un migliaio
- Mega M 220 ~ un milione
- Giga G 230 ~ un miliardo
- Tera T 240 ~ mille miliardi
Terminologia
1 0 1 1 0 1 1 0
LSB
Least Significant Bit
MSB
Most Significant Bit
111
Perché Binario?
- Esistono diversi vantaggi pratici derivanti dall’utilizzo di un
dispositivi binario:
- Semplicità e facilità di costruzione
- Precisione e robustezza dei segnali
- Precisione nella duplicazione
- E’ inoltre possibile rappresentare qualunque tipo di
informazione senza limitazioni
- Informazione binaria usata come codifica
Rappresentazione dell’Informazione
- Qualunque informazione trattata da un elaboratore deve
essere rappresentata tramite segnali binari:
- Dati numerici
- Dati non numerici
- Per motivi di efficienza, qualunque tipo di dato viene
trasformato in dato numerico
Settimana n. 3
Contenuti
- Il linguaggio C
- Variabili
- Costanti
- Visibilità delle variabili
- Rappresentazione dei dati numerici e non numerici
115
Genesi del Linguaggio C
- Sviluppato tra il 1969 ed il 1973 presso gli AT&T Bell Laboratories ( Ken Thompson, B. Kernighan, Dennis
Ritchie)
- Per uso interno
- Legato allo sviluppo del sistema
operativo Unix
- Nel 1978 viene pubblicato “The C
Programming Language”, prima specifica ufficiale del linguaggio
Ken Thompson
Brian Kernighan
Dennis Ritchie
116
Caratteristiche Generali del Linguaggio C
- Il C è un linguaggio:
- Imperativo ad alto livello
- ... ma anche poco astratto
- Strutturato
- Tipizzato
- Elementare
- Case sensitive
- Maiuscolo diverso da minuscolo negli identificatori!
- Portabile
- Standard ANSI
117
Storia
- Sviluppo
- 1969-
- Ken Thompson e Dennis Ritchie
- AT&T Bell Labs
- Versioni del C e Standard
- K&R (1978)
- C89 (ANSI X3.159:1989)
- C90 (ISO/IEC 9899:1990)
- C99 (ANSI/ISO/IEC 9899:1999, INCITS/ISO/IEC 9899:1999)
- Non tutti i compilatori sono standard!
- GCC:Quasi C99, con alcune mancanze ed estensioni
- Borland & Microsoft:Abbastanza C89/C
118
Diffusione Attuale
- I linguaggi attualmente più diffusi al mondo sono:
- C
- C++, un’evoluzione del C
- Java, la cui sintassi è tratta da C++
- C#, estremamente simile a Java e C++
- Il linguaggio C è uno dei linguaggi più diffusi
- La sintassi del linguaggio C è ripresa da tutti gli altri
linguaggi principali
Un Esempio
#include <stdio.h>
int main(void)
printf("hello, world\n");
return 0;
Identificatori
- Si riferiscono ad una delle seguenti entità:
- Costanti
- Variabili
- Tipi
- Sottoprogrammi
- File
- Etichette
- Regole:
- Iniziano con carattere alfabetico o “_”
- Contengono caratteri alfanumerici o “_”