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.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
INFORMATICA
(INFORMAZIONE + AUTOMATICA): SCIENZA DELLA RAPPRESENTAZIONE ED ELABORAZIONE DELL'INFORMAZIONE
INFORMAZIONE - CONCETTO PRINCIPALE DELL'INFORMATICA
L'ELABORAZIONE DELL'INFORMAZIONE DEVE ESSERE SVOLTA IN MANIERA SISTEMATICA E RIGOROSA, IN MODO DA POTER ESSERE AUTOMATIZZATA
SCIENZA DELL'ASTRAZIONE: ESAMINARE UNA REALTÀ ED ESTRARRE TUTTI I DATI INTERESSANTI PER LA RISOLUZIONE DI UN PROBLEMA, TROVARE LE TECNICHE PER RISOLVERE UN PROBLEMA IN MODO AUTOMATICO
EX ➔ COSTRUZIONE DI UN PALAZZO: ESTRARRE SOLO I DETTAGLI ESSENZIALI ALLA COSTRUZIONE DEL PALAZZO QUINDI SOSTITUIRE UNA SITUAZIONE COMPLESSA CON UN MODELLO COMPRENSIBILE SENZA DETTAGLI INESSENZIALI ESTRAENDO QUELLI ESSENZIALI
OBIETTIVO DELL'INFORMATICA = CREARE ASTRAZIONI DI PROBLEMI, RISOLVIBILI E RAPPRESENTABILI SU UN SISTEMA DI CALCOLO IN MODO AUTOMATICO
ES.
DATI
- LATO A
- LATO B
RICHIESTE
- SE IL TAGLIO È POSSIBILE
- DIMENSIONI DEL QUADRATO
- MCD tra A e B
- MCD ≠ 1 il taglio è possibile se MCD = 1 → taglio non possibile
Si ha bisogno di un procedimento sistematico, costituito da un insieme di operazioni, ogni operazione deve essere precisa ed eseguibile sui dati in input per ottenere i dati in output
Algoritmo ≠ Programma
Realizzazione in un certo linguaggio di programmazione di un particolare algoritmo (C++, Java, Python...)
Algoritmo:
- Leggi il valore di A e di B
- Calcola MCD di A e B e scrivilo in C
- Se C = 1 il taglio non è possibile, altrimenti comunica taglio possibile e la misura del lato C
- Termina
Algoritmo di Euclide
- Leggi i numeri A e B, con A ≥ B
- Dividi A per B e ottieni il resto R
- Se R = 0 termina: MCD è B
- Sostituisci A con B
- Sostituisci B con R
- Ritorna al punto 2
Calcolo Resto
- Leggi due numeri A, B
- Se A < B termina: il resto è A
- Sostituisci A con A - B
- Ritorna al punto 2
Tipi di memorie
- RAM (Random Access Memory): si possono effettuare operazioni sia di lettura che di scrittura
- DRAM (Dynamic RAM): economica, lenta, è necessario ricaricare i contenuti periodicamente (refresh)
- SRAM (Static RAM): costosa, veloce, mantiene il contenuto fino a quando viene alimentata
- ROM (Read Only Memory): dati e informazioni vengono memorizzate in fase di costruzione, rimangono memorizzate anche quando manca l'alimentazione
La memoria cache
Tra CPU e memoria principale viene posto un modulo di memoria intermedio (cache), ad accesso veloce, ma di capienza limitata. La distribuzione è realizzata in maniera da cercare di memorizzare i dati e le istruzioni richieste più frequentemente nella cache, in modo da accedervi velocemente.
Sistema Operativo
L'S.O. è un software che si interpone tra hardware e utente per mettere a disposizione una gestione delle risorse e permette di svolgere le operazioni necessarie.
Gli obiettivi dell'S.O. sono:
- Convenienza → rende l'utilizzo del computer più semplice
- Efficacia → permette di gestire le risorse in modo più efficiente
- Capacità di evoluzione → permette di introdurre nuove funzionalità o il miglioramento dell'hardware
All'avvio del computer la RAM conterrà valori casuali che non hanno alcun significato.
I registri della CPU conterranno valori casuali tranne il PC, che conterrà un valore prestabilito in fabbrica, che corrisponde ad un valore della ROM.
Servizi S.O.:
- Sviluppo di programmi
- Multitasking/esecuzione di programmi
- Accesso ai dispositivi di I/O e di memoria di massa
- Accesso controllato ai file/organizzazione logica dei dischi
- Accesso al sistema/criteri di protezione
A causa della loro complessità, i S.O. sono organizzati in livelli, dove ogni livello nasconde i meccanismi implementativi e offre un insieme di funzionalità ai livelli superiori.
Analisi
L'analisi è formata da 3 fasi:
- Analisi lessicale
- Analisi sintattica
- Analisi semantica
Analisi lessicale
Il flusso di caratteri che costituisce il programma sorgente è letto da sinistra verso destra e rappresentato in tokens.
Un token è una singola unità atomica del linguaggio (keyword, un identificatore o un simbolo).
Separatori
- Spazi
- Tabulazioni
- Terminatori
- Andare a capo
float identificatori
Keyword
Ogni token ha un significato diverso.
Se avessi scritto f1oat non sarebbe stata una keyword ma un identificatore.
Non si possono usare parole troppo lunghe per gli identificatori.
IL TIPO INT
CARATTERISTICHE
- DIMENSIONE: 4 BYTES
- V. MINIMO: -2147483648
- V. MASSIMO: 2147483647
OPERAZIONI AMMESSE:
+ - * / % > < >= <= == !=
IL TIPO FLOAT
CARATTERISTICHE
- DIMENSIONI: 4 BYTES
- V. MINIMO: 3.4E-38 (3.4 * 10-38)
- V. MASSIMO: 3.4E+38 (3.4 * 10+38)
OPERAZIONI AMMESSE:
+ - * / > < >= <= == !=
IL TIPO DOUBLE
CARATTERISTICHE
- DIMENSIONI: 8 BYTES
- V. MINIMO: 1.7E-308 (1.7 * 10-308)
- V. MASSIMO: 1.7E+308 (1.7 * 10+308)
IL TIPO CHAR
CARATTERISTICHE
- DIMENSIONI: 1 BYTE (DA 0 A 255 CARATTERI (CODICE ASCII))
- V. MASSIMO: 127
- V. MINIMO: -128
SONO PERMESSE LE OPERAZIONI ARITMETICHE TIPICHE DEGLI INTERI
I puntatori
Il C++ permette di accedere all'indirizzo di una variabile tramite l'operatore & (operatore di riferimento o di reference) prefisso all'identificatore della variabile
int x;int & ix = indirizzo variabile xPuò essere utilizzato solo sulle variabili left-value (l'indirizzo verrà riportato in esadecimale)
Puntatori
È possibile assegnare e memorizzare gli indirizzi grazie alle variabili puntatori che si inizializzano con la specificazione del tipo seguita dall'operatore * ed al nome della variabile
int *p;È possibile fare assegnazioni tra puntatori
int n=75;int *p,*q;p= &n;q = p;(Le variabili punteranno lo stesso indirizzo)
Con l'operatore * è possibile accedere direttamente alla variabile puntata
int x=3,y=5,*p; p= &x; *p = 10; cout << x; --> x = 10 p= &y; *p = 20; cout << "y: " << y; --> y = 20Sottoprogrammi
In ogni linguaggio di programmazione il tipo di dati specifica, oltre all'insieme di valori che gli appartengono, le operazioni definite, ma non tutte le operazioni sono implementate dal linguaggio, altre devono essere aggiunte dal programmatore.
Il problema è che il codice va replicato ogni volta che l'operazione viene richiesta; questo provoca una minore leggibilità del codice, maggiore probabilità di errori e minore manutenzione del codice.
Per ovviare a questo viene utilizzato un meccanismo che permette al programmatore di:
- Specificare le istruzioni da compiere
- Specificare i dati da utilizzare
- Specificare il nome dell'operazione
Questo meccanismo viene chiamato sottoprogramma.
Un sottoprogramma è un'unità di codice che non può essere eseguita automaticamente ma solo su richiesta; viene realizzato per svolgere un compito specifico, come leggere o stampare gli elementi di un array.
Un sottoprogramma può essere attivato più volte in uno stesso programma, utilizza variabili proprie, alcune utilizzate per scambiare dati con il programma che lo ha attivato.
Nel definire un sottoprogramma bisogna definire:
- Quale operazioni realizza
- Quale è il flusso di dati tra il programma ed il codice che lo ha attivato
- Quali sono i dati in ingresso al sottoprogramma
- Quali sono i dati in uscita dal sottoprogramma
L'esecuzione delle istruzioni di un sottoprogramma avviene tramite una istruzione di chiamata che interrompe le istruzioni del programma principale e che riprendono dopo una istruzione di ritorno.