Sommario
• Definizione di informatica
• Primi cenni sulla rappresentazione
dell’informazione
• Il concetto di “algoritmo”
• Il concetto di “linguaggio di programmazione”
• Cenni sull’architettura di un sistema
informatico
I nf or mat ica A+B
concet t i int r odut t ivi
Politecnico di Milano
Sede di Cremona
Gianpaolo Cugola
Dipartimento di Elettronica e Informazione
[email protected]
http://www.elet.polimi.it/~cugola
Informatica A+ B - Cugola
Perchè studiare informatica?
Informatica: una prima definizione
• Perché l’informatica è a livello mondiale uno
dei settori industriali maggiori e più in crescita
• Perché oltre ad essere una tecnologia primaria”
è una tecnologia “abilitante” di altre tecnologie
e di altri settori industriali...
• ... di quasi tutte le altre tecnologie e gli altri
settori industriali
• Per capire la società dell’informazione
• Informatica: scienza della rappresentazione e
dell’elaborazione rigorosa, quindi
potenzialmente automatica, dell’informazione
• N on solo scienza e tecnologia dei calcolatori,
quindi, ma anche e sopratutto il modo in cui
l’informazione viene strutturata ed elaborata
automaticamente
Informatica A+ B - Cugola
2
– differente da quanto accade in altre attività meno
formalizzate, come il giornalismo, che pure tratta
informazioni
3
Informatica A+ B - Cugola
4
Informatica: una definizione alternativa
Informatica: alcune considerazioni
• Informatica è lo studio sistematico degli algoritmi
che descrivono e trasformano l’informazione: la
loro teoria, analisi, progetto, efficienza,
realizzazione e applicazione
• L’informatica non è direttamente legata al
calcolatore
• Il calcolatore elettronico è solo uno strumento
di calcolo potente e capace di trattare elevati
quantitativi di informazione
• In quanto tale l’informatica è “sorella” della
matematica dalla quale mutua il rigore formale
– Definizione della Association for Computing
Machinery (ACM), la principale organizzazione che
riunisce ricercatori e professionisti informatici
Informatica A+ B - Cugola
5
Informatica A+ B - Cugola
Ripartiamo dalla definizione
Rappresentazione dei numeri
• Informatica: scienza della rappresentazione e
dell’elaborazione rigorosa, quindi
potenzialmente automatica, dell’informazione
• Il primo tipo di informazione che si presta ad
essere rappresentato è quella numerica
• Un numero può essere rappresentato mediante:
6
– aste, palline, fagioli, ...
– cifre graco romane
– cifre decimali
• Rappresentazione mediante aste:
– n aste per rappresentare il numero n
– Rappresentazione unaria
• Rappresentazione mediante cifre decimali:
– log 10(n)+1 cifre per rappresentare il numero n
• In generale, nel caso di rappresentazione mediante k
cifre:
– log k(n)+1 cifre per rappresentare il numero n
Informatica A+ B - Cugola
7
Informatica A+ B - Cugola
8
Rappresentazione di altri tipi di
informazioni
Dalla rappresentazione dell’
informazione alla sua elaborazione
• E’ sempre possibile (vedremo meglio come in
seguito) rappresentare ogni tipo di
informazione mediante numeri
• Rappresentare l’informazione non basta,
occorre elaborarla
– Sempre in maniera precisa e quindi
“meccanizzabile”
– Informazione testuale (caratteri)
– Informazione grafica: pixel ma anche grafica
vettoriale
– Informazione musicale
– Multimedia...
• Ricominciamo dai numeri: La somma di 45 più
25 può essere calcolata usando un pallottoliere e
un semplice algoritmo
Informatica A+ B - Cugola
9
Informatica A+ B - Cugola
10
Un esempio di algoritmo
Un esempio di algoritmo
• Regola generale per la rappresentazione dei numeri con
un pallottoliere
• Si sposti una pallina da sin. a des. sulla prima fila e
contemporaneamente si sposti una pallina da des. a sin.
sull’ultima fila
• Si ripeta il passo precedente fino all’esaurimento delle
palline sulla prima fila
• Si sposti una pallina da sin. a des. sulla seconda fila e
contemporaneamente si sposti una pallina da des. a sin.
sull’ultima fila
• Si ripeta il passo precedente fino all’esaurimento delle
palline sulla seconda fila
• Il numero di palline che si trova sulla sin. sulla terza fila
rappresenta il valore cercato
– Il numero indicato da ogni fila del pallottoliere è rappresentato
da altrettante palline poste sulla sinistra della fila. Le palline
non utilizzate sono poste a destra
• Ipotesi semplificatrici:
– Supponiamo che il primo
addendo sia rappresentato
dalla prima fila di palline,
il secondo dalla seconda fila
e il risultato debba essere
rappresentato dalla terza fila
– Supponiamo anche che il numero
di palline sia sempre sufficiente
Informatica A+ B - Cugola
11
Informatica A+ B - Cugola
12
Alcune considerazioni
Algoritmo: una definizione informale
• N el fare il calcolo della somma mediante
pallottoliere applichiamo una sequenza di passi
elementari ben definita, precisa, eventualmente
eseguibile anche da una macchina
• Informazioni ed elaborazioni complesse (la
somma) sono state scomposte in passi semplici
(elementari) aggregati mediante composizione
• Questa è l’essenza della progettazione
informatica!
Informatica A+ B - Cugola
13
Algoritmo:
Algoritmo:sequenza
sequenzadi
di passi,
passi, definiti
definiti
con
precisione
e
chiaramente
con precisione e chiaramente
comprensibili
comprensibili per
perl’esecutore,
l’esecutore, che
che
portano
portano alla
allarealizzazione
realizzazione di
di un
un
compito
compito
Informatica A+ B - Cugola
14
Caratteristiche degli algoritmi:
Comprensibilità
Esempi di algoritmi
• Le istruzioni di montaggio di un modellino
• Le istruzioni di istallazione di un software
• La procedura per il calcolo del massimo
comune divisore di un insieme di numeri interi
• Una ricetta di cucina
• Uso di un terminale Bancomat
• …
• In un algoritmo i singoli passi devono essere
chiaramente comprensibili per l’esecutore
• La comprensibilità dipende dall’esecutore
• Un controesempio:
Informatica A+ B - Cugola
Informatica A+ B - Cugola
15
– Le istruzioni di istallazione di un elettrodomestico in
una lingua sconosciuta all’utente
16
Caratteristiche degli algoritmi:
Precisione
Caratteristiche degli algoritmi:
Correttezza
• In un algoritmo i singoli passi devono essere
indicati con precisione…
• … e la sequenza non deve dare adito a
fraintendimenti
• Un controesempio:
• Un algoritmo è corretto se perviene alla
soluzione del compito cui è preposto senza
difettare di alcun passo fondamentale
• Un controesempio:
– Se nelle istruzioni di istallazione di un
elettrodomestico viene omessa la verifica della
tensione è possibile che un utente disattento
inserisca la spina senza verificare e causi un
cortocircuito
– In una ricetta: sale q.b.
Informatica A+ B - Cugola
17
Informatica A+ B - Cugola
Caratteristiche degli algoritmi:
Efficienza
Un esempio di algoritmo: uso di un
lettore di CD portatile
• Un algoritmo è efficiente se perviene alla
soluzione del problema nel minor tempo
possibile e/ o usando la minima quantità di
risorse fisiche
• Un controesempio:
•
•
Cosideriamo un lettore portatile di cd musicali con un
certo numero di pulsanti di controllo e un display.
Vogliamo suonare il brano numero 13
Soluzione iniziale:
1. Se siamo a casa ed è disponibile una presa elettrica inseriamo
l’alimentatore nella presa
2. Altrimenti controlliamo che il lettore contenga l’appropriato
numero di batterie e che queste siano cariche, in caso
contrario inseriamo o sostituiamo le batterie
3. Accendiamo il lettore
4. Inseriamo il cd nel lettore. Il display indica “No disk”
5. Premiamo il pulsante “start”. Il display indica “Disk ok”
6. Premiamo ripetutamente il pulsante “Forward” finchè il
display non indica il numero di brano scelto (13)
7. Indossiamo le cuffie
– N on è efficiente una ricetta la cui sequenza di
istruzioni, una volta realizzata, ci costringa a
scaldare di nuovo delle pietanze che avevamo
precedentemente cotto
– N on è efficiente una ricetta che porti ad uno spreco
di ingredienti
Informatica A+ B - Cugola
18
19
Informatica A+ B - Cugola
20
Alcune considerazioni
Un primo raffinamento
• Anche in questo caso abbiamo composto il problema in
una serie di passi elementari
• Se il CD non viene inserito correttamente la
scritta “Disk ok” non appare
• Riscriviamo il passo 5 come segue
–
–
–
–
Inserire il disco
Premere i pulsanti
Leggere il display
Indossare le cuffie
– Premiamo il pulsante “start”. Fintanto che il display
non indica “N o disk” si ripetono i seguenti passi
• L’ordine delle operazioni può dipendere dal risultato
delle operazioni stesse (se...allora...altrimenti,
esegui...finchè)
• La possibilità di decidere quale operazione effettuare in
funzione del risultato delle operazioni precedenti è una
caratteristica essenziale di ogni algoritmo non banale
Informatica A+ B - Cugola
21
• Inseriamo nuovamente il cd nel lettore
• Premiamo il pulsante “start”
Informatica A+ B - Cugola
Alcune considerazioni
Altri esempi e lezioni
• Se dopo qualche tentativo la scritta “N o disk”
permane chiunque di noi rinuncerebbe
giungendo alla conclusione che il lettore o il cd
non vadano
• Lezione
• Consideriamo la somma di due numeri con
pallottoliere (rappresentazione unaria dei
numeri) o con carta e penna (rappresentazione
decimale dei numeri)
• Gli algoritmi sono molto diversi
• Lezione
– Gli esseri umani sono ottimi esecutori di algoritmi
ma possono anche decidere di abbandonarli (per
esempio in condizioni eccezionali) usando il buon
senso. I calcolatori non posseggono buon senso e
intuizione. Tutte le situazioni anormali vanno
descritte se vogliamo che siano considerate
Informatica A+ B - Cugola
22
– Gli algoritmi dipendono dalla rappresentazione dei
dati scelta
23
Informatica A+ B - Cugola
24
Esercizio
Algoritmi e calcolatori
• Si scriva un algoritmo per cercare il numero di
telefono di una persona noto nome, cognome e
indirizzo usando l’elenco telefonico
• Suggerimenti:
• I calcolatori elettronici sono i più diffusi
esecutori automatici di algoritmi
• N el caso dei calcolatori elettronici gli algoritmi
sono descritti da programmi…
• …scritti in un opportuno linguaggio di
programmazione
• Compito dell’informatico è produrre algoritmi
(cioè capire la sequenza di passi che portano
alla soluzione di un problema) e codificarli nel
linguaggio di programmazione scelto creando
programmi (comprensibili al calcolatore)
– Usare una scomposizione per passi
– Considerare anche il caso in cui la persona non sia in
elenco
– Provare a descrivere diverse procedure di ricerca
Informatica A+ B - Cugola
25
Informatica A+ B - Cugola
Linguaggio di programmazione
La “Babele” dei linguaggi
• Un linguaggio artificiale per scrivere
programmi per i computer
• Un programma è ciò che il computer esegue
• Il linguaggio è preciso e rigoroso
• Problemi di comunicazione e compatibilità
• Opportunità di specializzazione
– Inizialmente si usava direttamente il linguaggio
della macchina, cioè l’insieme dei comandi
direttamente eseguibili dalla macchina
– N ella seconda metà degli anni Cinquanta, il
linguaggio si alza di livello usando programmi che
traducono i linguaggi di più alto livello nel
linguaggio della macchina
– Occorre rispettare nei dettagli la sintassi e la
semantica
• Il computer è meno tollerante agli “errori” di
un “umano”
Informatica A+ B - Cugola
26
27
Informatica A+ B - Cugola
28
Esempi
Il concetto di “livello” del linguaggio
• Linguaggio macchina
0100001111
1100111001
0110001111
• Linguaggio assembler
LOAD PAGA
ADD STRAORD
STORE TOT
• Linguaggio C
TOT= PAGA+ STRAORD;
Il programmatore
Il livello del linguaggio
La macchina hardware
Informatica A+ B - Cugola
29
30
Sistema informatico
Alcuni linguaggi
(di alto livello)
• Con il termine “sistema informatico” ci si
riferisce a sistemi molto diversi
• I primi e tradizionali linguaggi
– Fortran, Cobol
– Che vanno dal palmtop...
– ... ad una rete geografica con milioni di nodi
• Linguaggi che non “mimano” l’architettura
della macchina
• Studiare l’architettura di un siffatto sistema
significa individuarne i componenti e le loro
relazioni
• Il nostro studio procederà identificando i
diversi strati che identificano la macchina
“sistema informatico”
– LISP, Prolog
• Linguaggi speciali
– Per interrogazione di data base, …
• I linguaggi moderni
– C, C++, …Java, ….
Informatica A+ B - Cugola
Informatica A+ B - Cugola
31
Informatica A+ B - Cugola
32
Gli “strati” che compongono un
sistema informatico
Hardware e software
• Hardware (HW) - componenti fisici di sistema
Sistema traizionale
– è composto da una serie di elementi funzionali, presenti in ogni
elaboratore: Unità di elaborazione, memoria centrale, memoria
di massa, bus di sistema, unità periferiche
Sistema distribuito
• Software (SW) - programmi che vengono eseguiti dal
sistema
Software applicativo
Software applicativo
Software di base (S.O.)
hardware
S.O. di rete
S.O.
hardware
– Software di sistema (o di base): dedicato alla gestione
dell’elaboratore
– Software applicativo: opera al di sopra del SW di base, è
dedicato alla realizzazione di specifiche esigenze applicative
S.O.
hardware
rete
hardware
Informatica A+ B - Cugola
33
Informatica A+ B - Cugola
Hardware: elementi funzionali presenti
su ogni calcolatore
Hardware
•
•
•
•
•
• Unità di elaborazione, o CPU
Scheda madre
CPU / RAM
Hard Disk
Interfacce di I/ O
Unità esterne: CD,
DVD, monitor, ….
– Elabora dati, coordina trasferimento dei dati
– Esegue i programmi, cioè interpreta ed esegue le
loro istruzioni
• Memoria centrale (RAM)
– Memorizza dati e programmi
– Capacità limitata
• Volatile
• Accesso all’informazione molto rapido
Bus di sistema
Processore
(CPU)
Informatica A+ B - Cugola
34
Interfaccia
Memoria
centrale
delle
periferiche
35
Informatica A+ B - Cugola
36
Hardware: elementi funzionali presenti
su ogni calcolatore
Tipologie di calcolatori - 1
• Memoria secondaria o memoria di massa
• Esistono diversi tipi di calcolatori
– Memorizza grandi quantità di dati e programmi
– Persistente
– Accesso molto meno rapido della RAM
– Handheld computer
• Di dimensioni molto limitate
• Usualmente privi di memorie di massa
• Su PC: hard disk, floppy disk, CD-ROM, DVD
– Personal computer
• Bus di sistema
• Dotati di monitor e tastiera separati dall’unità
centrale
• Dotati di diversi dispositivi di memoria di massa
interni o esterni all’unità centrale
– Collega e consente scambio di dati
• Unità periferiche (I/ O) per comunicare con l’ambiente
esterno
– N otebook
– Terminali, con tastiera, mouse, video, stampanti ....
– Se ambiente esterno non è un utente umano (impianti
industriali, robot, strumenti di controllo)
• Versione portatile del personal computer
• Usualmente dotata di caratteristiche inferiori in
termini di potenza di calcolo e memorizzazione
• Sensori
• Attuatori
Informatica A+ B - Cugola
37
Tipologie di calcolatori - 2
38
Reti di calcolatori
• Con il termine “rete di calcolatori” intendiamo
riferirci a un sistema informativo costituito da
due o più calcolatori collegati attraverso un
sistema di comunicazione
• Una “applicazione distribuita” è una
applicazione composta da più elementi
cooperanti posti in esecuzione su macchine
diverse all’interno di una rete di calcolatori
– Workstation
• Versione “potente” dei personal computer
• Dotate di monitor di dimensioni superiori
• Per lo più orientate alle applicazioni grafiche
o di CAD
• Spesso condivise da più utenti (non
necessariamente in contemporanea)
– Mainframe
• Calcolatori di elevata potenza di calcolo e
memorizzazione
• Orientati all’elaborazione di dati per l’intera
azienda
• Condivisibili da più utenti in contemporanea
Informatica A+ B - Cugola
Informatica A+ B - Cugola
– Esempio, il web: il browser si collega ad un server
remoto per chiedere una pagina che poi visualizza
39
Informatica A+ B - Cugola
40
Reti locali
Reti geografiche
Host
router
Internet
provider
Informatica A+ B - Cugola
41
Software d’ambiente e applicativo
Informatica A+ B - Cugola
42
Software d’ambiente e applicativo
• Software d’ambiente (o di base)
Utilizzatore
– Dedicato alla gestione del computer
• Il sistema operativo
– Windows 2000, MacOS, Linux
SW
applicativo
SW
d’ambiente
Office
Web Browser
Compilatore
Editor
• L’ambiente di programmazione
• I sistemi di gestione delle basi di dati
• Il software di comunicazione
Giochi
Interprete
• Software applicativo
Sistema Operativo
– Fornisce le applicazioni per l’ “utente finale”
Hardware
Informatica A+ B - Cugola
43
Informatica A+ B - Cugola
44
Il sistema operativo
Tipologie di S.O.
•
•
• N egli anni diversi S.O. hanno visto la luce
•
Il Sistema Operativo (SO) svolge fondamentalmente due compiti:
Macchina virtuale
L’architettura dei calcolatori, intesa come insieme di istruzioni in
linguaggio macchina, organizzazione della memoria, gestione I/ O e
struttura del bus, è primitiva e di difficile utilizzo, anche per
programmatori esperti. In modo particolare per tutto quello che riguarda
la gestione dell’input / output. Il SO nasconde al programmatore tutte le
problematiche inerenti alla gestione dei dispositivi fisici presentando
all’utente l’equivalente di una macchina virtuale più facile da utilizzare.
Gestore delle risorse
Il SO gestisce il corretto funzionamento di tutti i componenti schedulando
l’accesso alle risorse tra i vari programmi che sono in competizione per
averne il controllo: sincronizza e controlla gli accessi alle risorse interne:
CPU, RAM, HD, FD ….. Controlla chi sta usando le risorse, gesti sce la
sicurezza e la priorità dei processi in coda, schedula le richieste in
conflitto.
Informatica A+ B - Cugola
45
Esempio di software d’ambiente:
il sistema operativo Windows
– I primi calcolatori non avevano un vero e proprio
S.O. ma solo un sottile strato di sw di base che
gestiva l’accesso all’hw
• Tipologie di S.O.
– Monoutente vs. multiutente
– Single tasking vs. multi tasking
• Principali S.O. oggi presenti sul mercato:
– DOS, Windows XXX, Unix (nei suoi cento dialetti,
Linux in primis), MacOS,...
Informatica A+ B - Cugola
46
L’ambiente di programmazione
• Editor: crea il testo
– Wordpad, Word, Emacs, …
• Compilatore: traduce nel codice oggetto,
rilevando eventuali errori di sintassi
• Interprete: esegue direttamente il codice
sorgente
• Linker: collega pezzi di programma compilati
separatamente
• Debugger: aiuta ad eliminare errori (“bug”)
Informatica A+ B - Cugola
47
Informatica A+ B - Cugola
48
Software applicativo:
word processor (Word)
Tipologie applicative
•
•
•
•
Applicazioni numeriche
Applicazioni gestionali
Applicazioni per l’automazione d’ufficio
Applicazioni telematiche
– Applicazioni di workgroup
• Applicazioni di automazione industriale
– CAD, CAM
• Applicazioni multimediali e di intrattenimento
Informatica A+ B - Cugola
49
Software applicativo:
foglio di calcolo (Excel)
Informatica A+ B - Cugola
Informatica A+ B - Cugola
50
Software applicativo:
web browser (Explorer
(Explorer))
51
Informatica A+ B - Cugola
52