Architettura dei calcolatori
Unità centrale – memoria principale (RAM), processore (CPU) - collegate tra loro per
trasferire le informazioni da una all’altra
Memoria principale RAM
( – random access memory) - è volatile e quando si spegne
il computer si svuota – contiene informazioni necessarie al processore per svolgere
le sue funzioni
Dati su cui operare
- Operazioni da eseguire
-
Processore CPU
( – central processing unit) - cervello del computer
Svolge calcoli aritmetici e logici
Coordina le attività degli altri componenti
Elabora i dati e le istruzioni per far funzionare il sistema operativo e le applicazioni
Contiene:
- Unità aritmetico-logica ALU
( – arithmetic logic unit) - operazioni
aritmetiche/logiche
Appoggio di altri elementi interni:
- Control unit CU
( ) - coordina il funzionamento degli altri elementi
- Instruction register IR
( ) - piccole aree di memoria molto efficienti –
recuperano dalla memoria l’istruzione corrente da eseguire e la trasferiscono
nella CPU
- Program counter PC
( ) - memorizza l’indirizzo di memoria della prossima
istruzione da eseguire
Periferiche – memoria secondaria, input e output – dispositivi che non fanno parte del
cuore del computer – alcuni interni alcuni esterni al computer – interagiscono con l’unità
centrale
Memoria secondaria - - è permanente e quando si spegne il
Es. Hard disk o usb
computer non si svuota – per conservare file, applicazioni o altro
Output uscita
(unità di ) - - per emettere determinati risultati
Es. Stampe o audio
Input ingresso
(unità di ) - - per
Es. Mouse, tastiere, microfoni o tavolette grafiche
dare all’utente la possibilità di immettere dati
Organizzazione della memoria – costituita da vettori (sequenza di informazioni di uguali
dimensioni e tipologia (predefiniti al momento della costruzione del dispositivo))
Macchina virtuale – macchina fisica le cui capacità sono aumentate da alcune componenti
software
Software – oggetti immateriali del computer – es. Applicazioni e programmi
Hardware – oggetti materiali del computer – es. Parte fisica/meccanica
Sistema operativo OS
( – operating system) - programma che viene caricato in fase di avvio
del sistema – coordina l’attività degli altri programmi finchè il sistema è in funzione
Hard w are d i Ard uino – piattaforma open source (il codice che lo governa è pubblico e
accessibile a tutti) basata su schede elettroniche – la più comune è basata su un
microcontrollore
Mic ro c o ntro llo re – circuito microscopico – primo open hardware – si interfaccia con
gli oggetti – ha molti ingressi e molte uscite per controllare e collegarsi agli oggetti
Mac c hina d i Vo n Ne umann – caratterizzata dalla presenza di una sola memoria che può
essere divisa tra parte dati (volatile) e parte programmi (permanente)
Linguaggi di programmazione - Uno stesso algoritmo può essere
tradotto in modi diversi a seconda del linguaggio di programmazione scelto - Es. C++, java
script, python
Livelli dei linguaggi di programmazione - ogni livello utilizza il linguaggio che il livello
inferiore gli mette a disposizione
Di alto livello (L5) – si possono interfacciare con le persone
- Di basso livello (L2) – si possono interfacciare con i calcolatori
-
I dati – elementi su cui lavorano i programmi – codificati come sequenze di bit (0 e 1)
Semplici
- Interi
▪ – numeri interi
• Char – numeri interi piccoli e caratteri (lettere, cifre, simboli
speciali) - racchiusi nella tabella di ASCII
Unsigned char
•
• Short
Unsigned short
•
• Int – numeri interi
Unsigned int
•
• Long
Unsigned long
•
• Bool – vero o falso
In virgola mobile – numeri con parte frazionaria
▪ • Float
• Double
• Long double
Strutturati
- Indirizzo
-
Differenziati da:
Valori che può assumere – un tipo di dato può assumere valori da un minimo a
- un massimo
Come vengono codificati e come sono rappresentati in memoria
- Quanto spazio la rappresentazione occupa in memoria
- Le operazioni che si possono fare su questi valori
-
Caratteri literal – valore di dati espresso direttamente, senza l’uso di variabili o espressioni
– racchiusi tra ‘’ – es. Dati char
Tabella di ASCII (american standard code for information interchange) – contiene codici
numerici per rappresentare 128 caratteri di tipo char – si possono rappresentare tutti
all’interno di un byte
Workflow della programmazione – sequenza di operazioni da fare
per arrivare al risultato
Fasi:
1. Problem solving - analizzare un problema
capire le sue caratteristiche
studiare come dovrebbe essere la sua soluzione (specifiche)
produrre la soluzione (algoritmo)
2. Verifica – fare una serie di prove per verificare che l’algoritmo sia corretto e che
risolva il mio problema – se non è corretto ricomincio dalla fase di problem solving
3. Coding - trasformare l’algoritmo in un’espressione che possa essere eseguita da
una macchina (programma)
4. Verifica – sottoporre un programma a vari test per vedere se funziona
correttamente – se c’è qualcosa di sbagliato o qualcosa che si può migliorare posso
tornare alla fase di problem solving o alla fase di coding a seconda di quale
problema si verifica
5. Realise (rilascio) - mettere in opera il mio programma e farlo funzionare – se si
presentano ancora errori o possibilità di miglioramento torno alle fasi precedenti
Specifiche – caratteristiche che deve avere la soluzione per risolvere un problema
Algoritmo – soluzione espressa in termini formali interpretabili da una persona umana –
deve essere preciso, univoco, specifico e non deve dare luogo a diverse interpretazioni –
non è ancora un programma
Flow chart (diagramma di flusso) - rappresentazione grafica dell’algoritmo
Programma – soluzione espressa in un linguaggio che può essere eseguito da un computer
(codice) – si possono usare solo espressioni e istruzioni che il calcolatore mette a
disposizione – diventa una capacità in più del computer
Programmare – risolvere problemi creando programmi – per programmare non si parte dalla
meccanica dell’oggetto con cui si risolve il problema ma dal problema stesso
Programmazione – insieme delle attività che portano allo sviluppo di applicazioni o
programmi eseguibili su un sistema di calcolo
Soluzioni procedurali – trovare una soluzione definendo i passi e le sequenze di istruzioni
Soluzioni non procedurali – trovare una soluzione senza specificare i dettagli di esecuzione
Principio della sequenzialità – i programmi sono sequenziali - viene eseguita una istruzione
alla volta in sequenza
Pensiero computazionale – processo mentale per agire sui problemi e sulle loro soluzioni
Fasi:
- Scomposizione – spezzare un problema in piccoli problemi più semplici
- Riconoscimento di pattern – un problema è formalmente riconoscibile come un
problema che ho già risolto – posso usare la soluzione del vecchio problema per
risolvere anche il nuovo
- Generalizzazione e astrazione – filtrare informazioni non necessarie e ottenere
rappresentazioni del problema più generali possibile – posso riconoscere dei pattern
e riutilizzarli
- Progettazione di algoritmi – una volta fatta questa analisi e trovato eventuali
pattern, posso scrivere la soluzione
Es . Alg o ritmo anno b is e s tile
Dato un anno verificare se è bisestile
- Divisibile per 4
- Non multiplo di 100
- Multiplo di 400
- Input – chiedi all’utente un numero (di 4 cifre) e leggi da tastiera quello che viene
scritto dall’utente
- Elaborazione – se anno non divisibile per 4 rispondi “falso”; altrimenti se anno
divisibile per 100 rispondi “falso”; altrimenti se anno divisibile per 400 rispondi
“vero”; altrimenti rispondi “falso”
- Output – scrivi “si/vero” se anno bisestile o “no/falso” se anno non bisestile
Linguaggio comprensibile al calcolatore
- Se – if
- Non – not
- Allora – then
- Altrimenti – else
- Vero – true
- Falso – false
If not divisibile (ANNO;4) then rispondi false; else if divisibile (ANNO;100) then rispondi
false; else if divisibile (ANNO;400) then rispondi true; else rispondi false
Elaborazione di un programma
1) Usiamo un editor di testo per scrivere un programma (es. – seguendo
Blocco note)
la sintassi del linguaggio di programmazione scelto
2) Il programma viene salvato in un file di testo il cui nome deve avere un’estensione
.cpp
opportuna (in C++ estensione )
3) Fase di parsing – il compilatore controlla che il codice sorgente non contenga errori
di sintassi
4) Fase di compilazione – il compilatore trasforma il codice sorgente in codice oggetto
5) Il linker combina il codice oggetto con librerie o altri codici pre-compilati, crea il file
eseguibile e lo memorizza sulla memoria secondaria
6) Il loader carica nella RAM il file eseguibile
Codice sorgente – pseudo-codice – codice scritto da un programmatore e interpretabile
dall’uomo
Codice oggetto – codice sorgente tradotto in linguaggio macchina (insieme di istruzioni
binarie che la CPU può eseguire direttamente)
Direttive – istruzioni che permettono di aggiungere al mio programma dei pezzi di codice
che non ne fanno parte – es. #include <...>
Librerie – raccolte di codice pre-scritto che si può collegare al
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 programmazione 1
-
Appunti epidemiologia per esame
-
Paniere domande esame Programmazione 2
-
Riassunto esame "Introduzione alla Bibbia"