Scarica Informatica slides. Dispense di informatica e più Dispense in PDF di Elementi di Informatica solo su Docsity!
Dipartimento di Scienze Umanistiche e Sociali
Diapositive dei corsi di
Elementi di informatica di base (L12)
Informatica (L39)
Informatica di base (L15)
docente: Bilò Davide
Teoria di base:
introduzione all'informatica
Cos'è l'informatica? (1 di 2)
Computer science is no more about computer
than astronomy is about telescopes.
E. W. Dijkstra
L'informatica non riguarda i computer più di quanto
l'astronomia riguardi i telescopi.
Non è corretto identificare l'informatica con i computer!!!
Cos'è l'informatica? (2 di 2)
INFOR mazione auto MATICA
scienza che si occupa del trattamento
automatico delle informazioni
insieme di processi e tecnologie (informatiche) che rendono
possibile la creazione, la raccolta, l'elaborazione,
l'immagazzinamento e la trasmissione dell'informazione con
metodi automatici
Qual è il ruolo del computer nell'informatica?
Un qualunque dispositivo per il calcolo automatico,
quindi anche (ma non solo) il computer, costituisce uno
strumento tecnologico che permette di elaborare
effettivamente le informazioni in maniera automatica.
Cos'è un computer?
Il computer è un elaboratore elettronico digitale
● elaboratore: macchina in grado di rappresentare ed
elaborare informazioni in base a una serie di
istruzioni formulate e memorizzate in modo
tale da poter essere eseguite automaticamente
● elettronico: utilizza componenti elettroniche per elaborare,
memorizzare e distribuire le informazioni
● digitale: le informazioni sono rappresentate mediante le due
cifre 0 e 1 (digit) della numerazione binaria
Cos'è un elaboratore elettronico digitale?
Insieme di dispositivi fisici (hardware) per:
● ricevere informazione dall'esterno (informazione di input)
● elaborare le informazioni
➢ tramite istruzioni di programmi (software)
● produrre informazione (informazione di output)
➢ da memorizzare
➢ da distribuire e comunicare le informazioni
Elaboratore
elaborazione
memorizzazione
informazioni di input informazioni di output
Cos'è l'hardware (di un elaboratore)?
hard + ware
solido + componente
insieme delle componenti fisiche
(meccaniche, elettriche, elettroniche, magnetiche e ottiche)
(che costituiscono l'elaboratore)
Cos'è l'informazione?
L'informazione è un “qualcosa” che si
possiede e che serve ad acquisire una conoscenza.
L'informazione è ciò che, per un osservatore o un recettore
posto in una situazione in cui si hanno almeno due occorrenze
possibili, supera un'incertezza e risolve un'alternativa, cioè
sostituisce il noto all'ignoto, il certo all'incerto.
L'informazione è sempre legata ad un mezzo che
la “sorregge” (supporto (dell'informazione)) ed
attraverso il quale può essere trasmessa.
Informazione e supporto
Supporto e informazione sono due cose distinte!!!
stessa informazione, supporti diversi
stesso supporto, informazione diversa
Supporto, informazione, dato e codice
● le informazioni sono rappresentate sui supporti con dei dati
● il codice associa a ciascun dato l'informazione corrispondente
● ciascun dato è rappresentato per mezzo diconfigurazioni globali
➢ (^) le configurazioni globali sono composte da configurazioni elementari ➢ (^) ogni configurazione elementare è un segno sul supporto ➢ (^) solo “alcuni” di tutti i possibili segni sono dei simboli
Un esempio
● supporto cartaceo e codice della lingua italiana
● le 21 lettere dell'alfabeto della lingua italiana sono simboli
● qualunque altro segno diverso dalle 21 lettere dell'alfabeto non è un simbolo
● alcune configurazioni globali sono
➢ estate
➢ athvslz
➢ n$©m~¤
Rappresentazione dell'informazione
nelle macchine
● segnale analogico
● segnale digitale
Segnale analogico e digitale
Un segnale è detto analogico
quando i valori utili che lo
rappresentano sono continui, e
quindi “infiniti”.
Un segnale digitale può assumere
soltanto valori appartenenti ad un
insieme finito di valori discreti.
Il termine digitale sta a indicare tutto
ciò che può essere rappresentato dai
numeri interi.
segnale digitale
segnale analogico
Segnale analogico vs segnale digitale
● segnale analogico
➢ teoricamente più preciso
● segnale digitale
➢ più robusto alle interferenze
➢ praticamente più preciso
Gli elaboratori elettronici digitali memorizzano i
dati in digitale, ossia per mezzo di numeri interi.
A ciascun numero intero (dato) è associata
un'informazione per mezzo di un codice.
Rappresentazione dei dati in un
elaboratore elettronico digitale (1 di 2)
L'unità minima del linguaggio digitale è il bit
Il termine bit deriva dall'espressione
inglese binary digit (cifra binaria)
Un bit può assumere solo due stati:
● 0 o 1
● spento o acceso
● testa o croce
Il codice EBCDIC
EBCDIC = Extended Binary Coded Decimal Interchange Code
Ciascun carattere della tabella è codificato con una stringa di 7 bit
Il codice UNICODE
ASCII e EBCDIC funzionano perfettamente per l'inglese
Problema : e per le lingue come il cinese, l'antico ebraico?
UNICODE
● quando è stato ideato, ciascun dei circa 60000 caratteri
veniva rappresentato con una stringa di 16 bit
● oggi ciascuno dei circa 96000 caratteri è rappresentato con
una stringa della lunghezza di al più 21 bit
● in grado di rappresentare le principali lingue scritte del
mondo
Quante configurazioni diverse posso
rappresentare con k bit? (1 di 3)
Un bit è come una lampadina digitale
con due configurazioni (acceso/spento)
● con 1 bit posso rappresentare 2 (2=2 1 ) configurazioni diverse
● con 2 bit posso rappresentare 4 (4=2 2 ) configurazioni diverse
● con k bit posso rappresentare 2 k^ configurazioni diverse
● ciascuno dei k bit può assumere due configurazioni diverse
indipendentemente dalla configurazione assunta da uno qualunque degli
altri k-1 bit, quindi, il numero totale di configurazioni possibili è 2
moltiplicato per se stesso k volte, ossia 2 k
Quante configurazioni diverse posso
rappresentare con k bit? (2 di 3)
● con 1 bit posso rappresentare 2 (2=2 1 ) configurazioni diverse
● con 2 bit posso rappresentare 4 (4=2 2 ) configurazioni diverse
● con k bit posso rappresentare 2 k^ configurazioni diverse
● a ciascuna delle possibili configurazioni diverse rappresentabili con k-
bit possiamo aggiungere il k-esimo bit che può assumere due
configurazioni diverse. Quindi, il numero di configurazioni diverse
rappresentabili con k bit è pari al doppio del numero di configurazioni
diverse rappresentabili con k-1 bit.
Quante configurazioni diverse posso
rappresentare con k bit? (3 di 3)
Numero di bit (k) Numero di configurazioni diverse rappresentabili 1 2 1 = 2 2 2 = 3 2 3 = 4 2 4 = 5 2 5 = 6 2 6 = 7 2 7 = 8 2 8 = 9 2 9 = 10 2 10 =
Qual è il numero minimo di bit sufficienti a rappresentare i 7 colori dell'arcobaleno?
Colori arcobaleno 1 bit 2 bit 3 bit rosso 0 00 000 arancio 1 01 001 giallo 10 010 verde 11 011 azzurro 100 indaco 101 violetto 110 (avanza) 111
Qual è il numero minimo di bit sufficienti
a rappresentare n configurazioni diverse?
Se con k bit posso rappresentare 2 k^ configurazioni diverse,
allora, per rappresentare n configurazioni diverse, devo
scegliere k tale che 2 k^ ≥ n. Quindi il più piccolo valore intero k
tale che 2 k^ ≥ n è la soluzione del problema.
Equivalentemente, il più piccolo valore intero k
tale che k ≥ log 2 n è la soluzione del problema.
Qual è il numero minimo di bit sufficienti a rappresentare 256 configurazioni diverse?
Numero di bit (k) Numero di configurazioni diverse rappresentabili 1 2 1 = 2 2 2 = 3 2 3 = 4 2 4 = 5 2 5 = 6 2 6 = 7 2 7 = 8 2 8 = 9 2 9 = 10 2 10 =
Soluzione: il più piccolo valore intero k tale che 2 k^ ≥ n, ossia 8.
Com'è fatto un computer?
(a livello di architettura hardware)
● componente per elaborare i dati
● componente per memorizzare i dati
● componente per inserire i dati
● componente per visualizzare/distribuire i dati (ottenuti quali
risultato del processo di elaborazione)
● canali di comunicazione che permettono la trasmissione di
dati tra una componente e l'altra
La macchina di Von Neumann
CPU (Central Processing Unit) Unità centrale di elaborazione Memoria
Memoria di massa Memoria centrale
Periferiche di input
Periferiche di output
bus
Periferiche di input/output
Interfaccia alle periferiche
Legenda
- Monitor
- Scheda madre (motherboard)
- CPU
- RAM
- Schede di espansione (expansion cards)
- Alimentatore (power supply)
- Disco ottico (optical disk drive)
- Disco rigido (hard disk drive)
- Tastiera (keyboard)
- Mouse
La scheda madre
Ma chi sincronizza la comunicazione tra le
componenti e le modalità operative di
ciascuna componente?
Ma chi sincronizza la comunicazione tra le
componenti e le modalità operative di
ciascuna componente?
I CLOCK (OROLOGI)
Il clock
Il clock è un orologio che scandisce il ritmo di lavoro di una o
più componenti suddividendo il tempo inquanti.
Il clock è un segnale elettrico digitale dall'andamento regolare
(un'onda quadra).
Un ciclo completo tra 0 e 1 viene detto quanto o ciclo di clock
1 ciclo di clock
Interfaccia alle periferiche:
l e porte di comunicazione
Periferiche di input/output
Le periferiche di input/output sono quei
dispositivi in grado di inviare dati al computer e
allo stesso modo di riceverne
Una periferica di input/output è il touchscreen
Un'altra periferica di input/output è la cuffia-microfono
La memoria di massa
Per memoria di massa (o secondaria o esterna) si
intende l'insieme dei componenti magnetici, ottici ed
elettronici che permettono di memorizzare dati e
programmi in modo persistente, per conservarli finché
l'utente non decide di eliminarli
Principali tipi di memorie di massa
● dispositivi magnetici
➢ nastri
➢ hard disk (o disco rigido): interni ed esterni
➢ dischi di rete
➢ floppy disk (capacità 1,44 MB)
● dispositivi ottici
➢ CD (Compact Disk)
➢ DVD (Digital Versatile Disk)
● dispositivi elettronici
➢ USB flash drive
➢ memory card
➢ hard disk SSD (Solid-State Drive)
La memoria centrale (o primaria o interna)
È la memoria utilizzata dall'elaboratore per gestire i programmi.
Costituita da una sequenza ordinata di celle ciascuna delle quali
può memorizzare una word (parola). Una word è una sequenza di
bit la cui lunghezza dipende dall'architettura del sistema.
Solitamente, uno word è pari a 8, 16, 32 oppure 64 bit.
Ciascuna cella di memoria ha un indirizzo predefinito e invariabile
e rappresenta l'unità minima di memoria cui la CPU riesce ad
accedere.
Tipi di memoria centrale
● RAM (Random Access Memory, memoria ad accesso diretto):
➢ (^) memoria di lettura/scrittura ➢ (^) volatile ➢ (^) ad accesso diretto ➢ (^) di lavoro e dinamica
● ROM (Read Only Memory, memoria di sola lettura):
➢ (^) memoria di sola lettura
➢ BIOS ROM (Basic Input/Output System)
➔ (^) autotest ➔ (^) riconoscimento e gestione delle periferiche di input/output ➔ (^) caricamento del sistema operativo
Composizione della CPU
La CPU è un circuito integrato (microprocessore)
in cui avvengono i processi di elaborazione
CPU = ALU + CU
● Registri
➢ dispositivi di grado di memorizzazione una word
● ALU (Arithmetic and Logic Unit, unità aritmetico-logica)
➢ unità di elaborazione che esegue materialmente le operazioni
➔ aritmetiche (somme, sottrazioni, moltiplicazioni e divisioni tra numeri
binari)
➔ logiche sui dati (confronto tra due numeri binari per capire se sono
uguale o quale dei due è il maggiore)
● CU (Control Unit, unità di controllo)
➢ responsabile del coordinamento della varie componenti della macchina e
dell'esecuzione delle istruzioni
La ALU e le operazioni elementari
Primo operando (^) Secondo operando
Risultato operazione
Esegui o un'operazione aritmetica
ALU o un'operazione logica
CU
Come funziona la CPU:
il ciclo fetch-decode-execute
● la CPU ha un clock interno che ne scandisce il ritmo di lavoro
● durante un ciclo di clock, la CPU esegue le seguenti operazioni
1.Fetch
➢ la CU preleva l'istruzione da eseguire dalla memoria interna
2.Decode
➢ la CU decodifica l'istruzione
3.Execute
➢ l'istruzione viene eseguita dalla ALU
Fetch Decode
Execute lettura del valore degli operandi
esecuzione dell'operazione aritmetico-logica
memorizzazione del risultato
Dati e programmi:
come i programmi impartiscono ordini al
computer utilizzando i soli numeri binari
Prima di iniziare, ricordate che...
Un elaboratore rappresenta i dati attraverso numeri interi scritti
utilizzando le cifre binarie
Un programma, per poter essere eseguito, deve risiedere nella RAM
Quindi, un programma altro non è che una sequenza (ordinata) di
numeri interi scritti in binario e memorizzati in celle della RAM
Ogni cella della RAM ha un indirizzo e memorizza una word
Il linguaggio macchina
codice istruzione
dato da utilizzare
(valore numerico o indirizzo di memoria)
word contenente una sequenza di bit
esempio di una word a 8 bit
codice istruzione dato da utilizzare
La macchina di Von Neumann
CPU (Central Processing Unit) Unità centrale di elaborazione Memoria
Memoria di massa Memoria centrale
Periferiche di input
Periferiche di output
bus
Periferiche di input/output
Interfaccia alle periferiche
Ricapitolando
Ogni cella di memoria contiene un dato che
rappresenta un valore numerico oppure un'istruzione
Se il dato contenuto nella cella di indirizzo x
rappresenta un'istruzione, allora il contatore di
programma (registro della CPU) viene aggiornato con il
valore x+1 (prossima istruzione da eseguire) e
l'istruzione viene eseguita dalla CPU
Istruzioni in linguaggio macchina
Le istruzioni in linguaggio macchina disponibili
in un elaboratore dipendono dalla CPU
Generalmente, tutti gli elaboratori forniscono
il seguente insieme di istruzioni
operazione descrizione load x memorizza il contenuto della cella della RAM con indirizzo x nel primo registro degli operandi store x memorizza il contenuto del registro risultato nella cella della RAM con indirizzo x add/subtract x aggiungi/sottrai il valore contenuto nel primo registro degli operandi al valore contenuto nella cella della RAM con indirizzo x dopo averlo copiato nel secondo registro degli operandi jump to x (if result </>/= 0)
memorizza il valore x nel contatore di programma (se il registro risultato contiene un valore minore/maggiore/uguale a 0) halt termina l'esecuzione del programma
Un esempio di programma scritto in
linguaggio macchina:
programma per il calcolo della formula |x-y|
Indirizzo cella RAM Interpretazione in termini di valori numerici/linguaggio macchina 1 load (valore contenuto nella cella di indirizzo) 10 2 subtract (valore contenuto nella cella di indirizzo) 11 3 jump to 6 if result > 0 4 load (valore contenuto nella cella di indirizzo) 11 5 subtract (valore contenuto nella cella di indirizzo) 10 6 store 12 7 halt 8 9 10 x 11 y 12 |x-y|
Un esempio di programma scritto in
linguaggio macchina:
programma per il calcolo della formula |x-y|
Indirizzo cella RAM Interpretazione in termini di valori numerici/linguaggio macchina 1 load (valore contenuto nella cella di indirizzo) 10 2 subtract (valore contenuto nella cella di indirizzo) 11 3 jump to 6 if result > 0 4 load (valore contenuto nella cella di indirizzo) 11 5 subtract (valore contenuto nella cella di indirizzo) 10 6 store 12 7 halt 8 9 10 5 11 3 12
Concetto di algoritmo
Un algoritmo è una sequenza di passi che
portano alla realizzazione di un compito
Caratteristiche di un algoritmo
● non ambiguità
➢ i passi devono essere univocamente interpretabili dall'esecutore
● eseguibilità
➢ l'esecutore deve essere in grado di eseguire ogni passo utilizzando le
risorse di cui dispone in un tempo finito
● finitezza
➢ l'esecuzione di un algoritmo deve terminare in un tempo finito
Un esempio di algoritmo:
programma per il calcolo della formula |x-y|
Indirizzo cella RAM Interpretazione in termini di valori numerici/linguaggio macchina 1 load (valore contenuto nella cella di indirizzo) 10 2 subtract (valore contenuto nella cella di indirizzo) 11 3 jump to 6 if result > 0 4 load (valore contenuto nella cella di indirizzo) 11 5 subtract (valore contenuto nella cella di indirizzo) 10 6 store 12 7 halt
Un programma che non è un algoritmo:
programma che esegue un'istruzione ad oltranza
Indirizzo cella RAM Interpretazione in termini di valori numerici/linguaggio macchina 1 jump to 1 2 3 4 5 6 7
Linguaggio di programmazione
è un linguaggio artificiale che permette di
scrivere programmi in una forma comprensibile
sia al programmatore, sia all'esecutore
Alcuni linguaggi di programmazione
● Assembler
● FORTRAN
● COBOL
● C
● Pascal
● Java
Come vengono eseguiti i programmi scritti
con i linguaggi di programmazione
Un elaboratore è in grado di eseguire istruzioni
formulate in linguaggio macchina
I programmi scritti con i linguaggi di programmazione
devono essere tradotti in linguaggio macchina
● interprete
➢ traduce un'istruzione (del programma) in linguaggio macchina quando
essa deve essere eseguita
● compilatore
➢ traduce l'intero programma in linguaggio macchina
Interazione dei dispositivi
con l'elaboratore:
memorie di massa,
porte di comunicazione,
periferiche di input
e
periferiche di output
Memorie di massa
floppy disk
hard disk