Elementi di programmazione
Cos'è l'informatica?
Informatica (Informazione Automatica): scienza che studia l'informazione e, più specificamente, l'elaborazione dei dati e il loro trattamento automatico mediante elaboratori elettronici.
L'informatica studia:
- Architettura degli elaboratori – Quali sono i componenti hardware di un computer?
- Linguaggi di programmazione – Il progetto, l'analisi e la realizzazione dei linguaggi usati per sviluppare programmi
- Algoritmi – Il progetto e l'analisi formale di sequenze di passi per la risoluzione dei problemi
- Teoria della calcolabilità – Ma un computer può veramente risolvere tutti i problemi esistenti?
- Sistemi operativi – Come è possibile utilizzare al meglio tutte le risorse hardware di un computer?
- Ingegneria del software – Esiste una metodologia pratica ed efficace per lo sviluppo dei programmi?
- Reti di calcolatori – È possibile far comunicare fra di loro dei computer in modo veloce, sicuro ed affidabile?
- Intelligenza artificiale – Un computer potrà mai simulare dei processi mentali umani?
- Multimedia – Come è possibile integrare in un solo documento dei testi, audio, filmati, grafica, animazioni...?
- Calcolo parallelo e distribuito – E se collegassimo centinaia di computer potrei risolvere problemi che sembrano insormontabili?
- Interazione uomo-macchina – È possibile comunicare con il calcolatore in modo più immediato ed efficiente?
- Basi di dati
- Grafica
L'informatica implica una scelta: “di che colore è la luce accesa del semaforo all'incrocio? La luce del semaforo è verde.”
Il concetto di informazione ha tre fondamentali caratteristiche:
- Elemento scelto VALORE: particolare (es: 4)
- Insieme degli elementi TIPO: possibili (es: numeri naturali)
- Significato dell'informazione ATTRIBUTO: (es: numero dei punti)
Concetto di elaborazione
x dati iniziali: insieme dei dati iniziali
y dati finali: insieme dei dati finali
f trasformazione: regola di trasformazione dei dati (da x a y)
- Definisce l’azione elaborativa che deve essere fatta sui dati per ottenere la trasformazione desiderata.
- Un’azione elaborativa può essere semplice (atomica) o complessa (da decomporre in azioni elaborative semplici).
- Semplicità o complessità di un’azione elaborativa dipende dall'esecutore.
- Costituisce un procedimento costituito da un insieme di azioni elaborative che vanno eseguite secondo un definito ordine.
Algoritmo
Algoritmo: sequenza finita di azioni elaborative (o di "passi di elaborazione") che risolve automaticamente un problema.
- Sequenza: le azioni elaborative vengono eseguite una alla volta secondo un ordine stabilito.
- Finita: con riferimento allo spazio (numero finito di azioni elaborative) e al tempo (ogni azione elaborativa si realizza in un tempo finito).
- Automaticamente:
- Esiste una macchina (esecutore) che può eseguirlo.
- La macchina, una volta avviata, è in grado di evolvere da sola realizzando l’elaborazione descritta dall’algoritmo.
- Il procedimento è deterministico: la sequenza è rigidamente fissata e niente è lasciato al caso.
Architettura hardware
Con il termine architettura si intende l’organizzazione dell’elaboratore in parti e l’interconnessione tra di esse. Esistono diverse categorie di calcolatori che differiscono per:
- Dimensioni
- Potenza di calcolo
- Numero di utilizzatori
- Tipologia di utilizzo
- Costo
Categorie di calcolatori
- Mainframe
- Supercomputer
- Server (o minicomputer)
- Workstation
- Personal Computer
- Notebook (portatili)
- Palmari
Modelli architetturali
Il modello base per la maggior parte dei calcolatori (con alcune significative eccezioni) è quello di Von Neumann:
- Unità di ingresso per l'acquisizione dei dati e dei programmi e per il loro trasferimento in memoria.
- Unità di memoria per la registrazione sia dei dati che delle istruzioni del programma.
- Unità di controllo interpreta le istruzioni prelevate dalla memoria e ne guida l'esecuzione inviando appositi segnali alle altre unità.
- Unità aritmetico-logica (ALU), dedicata all'esecuzione delle operazioni aritmetiche e logiche.
- Unità di uscita per il trasferimento all'esterno dei risultati presenti in memoria.
Le unità di ingresso e di uscita vengono anche dette periferiche.
Collegamento tra le unità
Le unità sono collegate tra loro tramite BUS. Un BUS è un insieme di linee in grado di trasmettere un segnale elettrico. Attraverso il BUS le unità si scambiano dati o istruzioni.
Il processore
L’insieme dell’Unità di controllo e dell'ALU è detto processore (CPU). Quando è costituita da elementi integrati in un unico microchip si chiama anche microprocessore.
La macchina di Von Neumann
In ogni istante il bus è dedicato a collegare due unità: master e slave.
- Il processore (master) seleziona la connessione da attivare e indica l’operazione da svolgere (bus mastering).
- Le altre unità (slave) agiscono solo quando vengono selezionate dall’unità di elaborazione.
- Il bus è assegnato ad uno specifico collegamento per il tempo necessario a svolgere l’operazione, pertanto minore è il tempo di collegamento maggiore è la velocità del bus.
Il bus è suddiviso in tre insiemi di linee:
- Bus dati: trasporta l’informazione.
- Bus indirizzi: contiene la posizione dell’informazione.
- Linee di controllo: trasportano informazioni relative alla modalità di trasferimento e alla temporizzazione (decidono il clock).
Memorizzazione dell'informazione
L’elaboratore opera su dati, cioè sulla rappresentazione mediante codifica del valore dell’informazione. Tale rappresentazione è memorizzata in registri. Un registro può memorizzare un numero finito di informazioni distinte. Nella macchina fisica tutte le informazioni sono codificate in BIT e la cella elementare di memoria è un elemento fisico bi-stabile detto flip-flop.
BIT: unità di misura dell’informazione, la quantità di informazione associata ad una informazione il cui tipo ha cardinalità 2. La scelta più elementare è quella fra elementi di un tipo a cardinalità 2 (al di sotto di 2 non c’è scelta). È possibile stabilire per un’informazione il cui tipo sia a cardinalità n a quanti bit equivale la quantità di informazione ad essa associata.
Registri
- Il calcolatore opera su informazioni rappresentate in registri.
- Il registro è individuato da un “nome”.
- È un organo fisico bi-stabile atto a memorizzare 2 stati distinti.
- Il valore di ogni cella di un registro è mantenuto da un circuito logico detto flip-flop.
Misura dell'informazione
Formulazione matematica: B = log2n
- B: quantità di informazione in BIT
- n: cardinalità del tipo
- B è pari alla parte intera di log2n, maggiorata di 1 se la parte decimale è diversa da 0.
- B è l’esponente da dare a 2 affinché la potenza risultante sia pari al minimo numero maggiore o uguale di n: Bn ≤ 2B
Multipli di bit
- 1 Kbit = 1024 bit: (210)
- 1 Mbit = 1,048,576 bit: (220)
- 1 Gbit = 1,073,741,824 bit: (230)
- Il bit ha solo multipli a partire dal byte
- 1 Byte = 8 bit: 23
- 1 Kbyte = 1024 byte: (210)
- 1 Mbyte = 1,048,576 byte: (220) oppure 1024 Kbyte
- 1 Gbyte = 1,073,741,824 byte: (230) oppure 1024 Mbyte
Memorie principali
In generale le funzionalità della memoria sono:
- Supporto alla CPU: deve fornire alla CPU dati e istruzioni il più rapidamente possibile.
- Archivio: deve consentire di archiviare dati e programmi garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo.
Diverse esigenze
- Velocità: per il supporto alla CPU
- Non volatilità ed elevate dimensioni: per l'archivio
Di conseguenza:
- In un computer attuale non c’è un unico dispositivo di memoria, ma piuttosto una gerarchia di memorie dalle caratteristiche diverse.
- Diverse tecnologie: elettronica (veloce ma costosa e volatile), magnetica e ottica (non volatile ed economica, ma molto lenta).
Caratteristiche delle memorie
Volatilità: le memorie possono essere volatili o permanenti.
- Una memoria volatile è una memoria che non è in grado di mantenere le informazioni, ad esempio, se non viene alimentata.
Velocità: indica quanto tempo impiega la memoria a fornire le informazioni richieste al processore. Si misura attraverso il tempo di accesso.
- Tempo di accesso: tempo necessario a compiere una singola operazione di lettura o scrittura, valori dell’ordine dei nanosecondi. (tempo di accesso piccolo = alta velocità)
Capacità: indica quante informazioni possono essere contenute nel dispositivo di memoria. Si misura usando multipli del byte. Tipicamente velocità e capacità sono requisiti in conflitto: a parità di altre condizioni, alta velocità significa bassa capacità e viceversa.
Costo per bit: rapporto tra il costo del dispositivo e la sua capacità. Le memorie piccole e veloci hanno un elevato costo per bit.
Modalità di accesso
- Diretta (o casuale): il tempo di accesso è indipendente dalla posizione
- Sequenziale: il tempo di accesso dipende dalla posizione
- Mista: combinazione dei due casi precedenti
Memoria centrale
- Comunica direttamente col processore attraverso il bus
- E’ realizzata con la tecnologia dei semiconduttori (come la CPU)
- E’ molto più veloce della memoria di massa
- Ha una capacità minore della memoria di massa
- Tipicamente è volatile, ovvero perde le informazioni contenute quando il computer è spento
Memoria di massa
- Dal punto di vista del processore, è costituita da un insieme di periferiche
- Non comunica col processore. Le informazioni transitano attraverso la memoria centrale
- E’ realizzata con tecnologie magnetiche e ottiche
- E’ molto meno veloce della memoria centrale
- Ha una capacità maggiore della memoria centrale
- Tipicamente è persistente, ovvero conserva le informazioni contenute quando il computer è spento
Memoria centrale
La memoria centrale si divide in:
- RAM (Random Access Memory): memoria volatile su cui il processore può leggere e scrivere informazioni. Tipicamente quando si parla di memoria centrale ci si riferisce alla RAM.
- ROM (Read Only Memory): piccola memoria persistente a sola lettura. Le informazioni sono memorizzate al momento della fabbricazione.
Le informazioni sono divise in blocchi detti parole (word). Attualmente: 1 word = 4 byte. Il processore specifica la parola che vuole leggere o scrivere usando un indirizzo. I bit costituenti una parola o frazione di una parola vengono acceduti in parallelo, cioè in genere i bit di una word vengono trasmessi sul bus dati nello stesso istante dedicando una linea a ciascuno di essi. Può anche succedere però che il numero di linee del bus dati sia inferiore alla lunghezza delle parole di memoria. All’interno della memoria centrale ci sono le istruzioni del programma che il computer sta eseguendo e i dati su cui il programma sta lavorando.
Ciascuna informazione presente in memoria è individuata attraverso un indirizzo, che è esso stesso una sequenza di bit. Il colloquio tra processore e la memoria si basa sull’uso di due registri che sono connessi al bus:
- AR (Address Register): contiene l’indirizzo di memoria del dato da leggere/scrivere in memoria. Quando l’unità di controllo invia un indirizzo al AR, esso lo trasferisce alla memoria denominato anche MA: memory address.
- DR (Data Register): contiene una copia di un dato “in transito” da/verso la memoria. Attraverso di esso il processore invia un’informazione alla memoria o riceve un’informazione dalla memoria, usando l’indirizzo specificato dal AR denominato anche MB: memory buffer.
Memoria centrale RAM
La memoria centrale di un computer è organizzata come un insieme numerato di registri di lunghezza m, accessibili dal processore (indette locazioni. Gli m bit di una locazione lettura/scrittura) mediante un’unica operazione (parallelismo della memoria). L’insieme di locazioni indirizzabili è detto spazio di indirizzamento. La memoria centrale ad accesso casuale (RAM) permette che il tempo di accesso non dipenda dalla posizione del dato (ovvero dall’indirizzo). Il registro indirizzi (AR) ha k bit e può indirizzare una specifica parola o cella (fino a 2k byte). Il Registro dati (DR) ha h bit (parallelismo della memoria).
Operazioni sulla memoria
- Lettura (read, load): la cella indirizzata viene copiata in DR
- Scrittura (write, store): DR viene copiato nella cella indirizzata
Esempio
Per indirizzare 2048 indirizzi servono 211 byte.
Operazione di lettura
L’unità di elaborazione deve:
- Caricare in AR l’indirizzo della word che vuole leggere e trasmetterlo alla memoria tramite il bus indirizzi.
- Richiedere una operazione di lettura (READ) inviando il comando tramite le linee di controllo del bus.
La memoria:
- Esegue l’operazione di lettura che sposta attraverso il bus dati il contenuto della word in DR.
- Attraverso le linee di controllo del bus segnala all’unità di elaborazione che l’operazione è terminata e il dato è disponibile in DR.
Operazione di scrittura
L’unità di elaborazione deve:
- Caricare in DR il dato da scrivere e trasmetterlo alla memoria tramite il bus dati.
- Caricare in AR l’indirizzo della word da scrivere e trasmetterlo alla memoria tramite il bus indirizzi.
- Richiedere una operazione di scrittura (WRITE) inviando il comando tramite le linee di controllo del bus.
La memoria:
- Esegue l’operazione di scrittura copiando il dato dal DR nella cella specificata dall’indirizzo contenuto in AR.
- Attraverso le linee di controllo del bus segnala all’unità di elaborazione che l’operazione è terminata.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Esame Pratico di Elementi di Programmazione
-
Prova esame Elementi di programmazione
-
Appunti esame orale Programmazione 2 - Java - Tortorella
-
Matlab - esame calcolo numerico con elementi di programmazione