Università degli Studi di Messina
Corso di laurea in ingegneria elettronica ed informatica
A.A. 2020/21
Fondamenti di Informatica (Modulo A)
Introduzione all'informatica
Indice
- Introduzione all'informatica
- Problemi e loro soluzioni
- Calcolatore elettronico
- Struttura di un computer
- Rappresentazione digitale dell'informazione
- Elettronica e logica digitale
- Codifica dei numeri naturali e aritmetica binaria
- Codifica dei numeri interi
- Codifica dei numeri reali
- Operatori logici e algebra di Boole
- Codifica dei caratteri
- Digitalizzazione di suoni e immagini
- Algoritmi e loro rappresentazione
- Introduzione
- Diagrammi di variabili strutturate flusso
- Linguaggi, grammatiche e traduttori
- Linguaggi formali
- Grammatiche formali
- Linguaggi di programmazione e processi di traduzione
- Paradigmi di programmazione
- Introduzione al linguaggio C
- Introduzione
- Dettagli del processo di implementazione
- GCC (GNU Compiler Collection)
- Variabili e I/O di base
- L'utilizzo di variabili nel linguaggio C
- Nozioni di base sull'Input/Output
- Espressioni ed operatori
- Espressioni
- Principali operatori e loro proprietà
- Strutture di controllo
- Introduzione
- Regole
- Array e stringhe
- Costanti
- Vettori (Array)
- Array (Vettori)
- Puntatori
- Introduzione
- Libreria per la manipolazione delle stringhe
- Gestione dinamica della memoria
- Tipi strutturati e tipi definiti dall'utente
- Introduzione
- Tipi di dato definiti dall'utente
- Gestione avanzata dei dati
- Le funzioni
- Introduzione
- I file
- Introduzione
- I file binari
Introduzione all'informatica
Definizione: L'informatica è una scienza, che tratta l'informazione in modo scientifico. Essa ordina, tratta e trasmette l'informazione, in maniera elettronica e in maniera automatica. La velocità, essendo elettronica, è la caratteristica principale di essa.
L'informatica: NON è la scienza e la tecnologia dei calcolatori elettronici e NON sono le molteplici applicazioni dei calcolatori elettronici. Essendo una scienza, e avendo quindi un approccio sistematico e rigoroso, consente l'elaborazione dell'informazione in modo automatico.
Di quali campi si occupa?
- Metodi per la rappresentazione dell'informazione
- Algoritmi semplici e complessi
- Studio della complessità degli algoritmi
- Linguaggi di programmazione
- Sistemi operativi
- Reti di calcolatori
- Internet e il Web
- Sistemi e applicazioni distribuite
- Cloud computing
- Internet of Things
- Intelligenza artificiale
- Blockchain
Problemi e loro soluzioni
Un problema è una questione da risolvere partendo da elementi noti mediante il ragionamento, e per la quale si propongono soluzioni.
- Individuare il risultato che si vuole ottenere, gli obiettivi da raggiungere.
- Evidenziare:
- Le regole da rispettare
- I vincoli interni ed esterni
- I dati espliciti ed impliciti
- Eliminare i dettagli inutili ed ambigui
Soluzione di un problema
Ci sono diverse fasi per risolvere un problema: una parte di queste sono assegnate a un soggetto 1 chiamato Descrittore, che ha la capacità di trovare la soluzione e di descriverla; l'altra parte è assegnata a un soggetto 2 chiamato Esecutore, che ha la capacità di eseguire la soluzione.
La descrizione della soluzione fornita dal descrittore deve avere delle caratteristiche ben precise:
- La condizione che le azioni elementari siano eseguite in successione, cioè secondo un ordine definito, è necessaria perché, in generale, ognuna di esse opera sui dati che riceve dalle azioni eseguite precedentemente.
- La descrizione della soluzione di un problema deve essere accettabile per l'esecutore, ovvero formala in modo che l'Esecutore la comprenda.
Può essere considerato come un Descrittore:
- Un'entità capace di scomporre il problema originario in sotto problemi, sotto-sotto problemi ecc... fino a giungere a problemi elementari (o primitivi), cioè problemi che possono essere risolti direttamente dall'esecutore.
Può essere considerato un Esecutore:
- Una qualunque entità che esegue azioni elementari.
- Esso deve però essere dotato anche di una memoria, in quanto è necessario tener traccia delle istruzioni, dei dati iniziali e di quelli intermedi.
Perciò il soggetto Descrittore richiede un'attività di scomposizione progressiva del problema, fino a giungere a una successione di istruzioni elementari (ciascuna associata al corrispondente problema elementare); il soggetto Esecutore richiede l'esecuzione di quelle istruzioni elementari attraverso le corrispondenti azioni elementari.
Le caratteristiche di questa azione elementare sono:
- Finitezza: l'azione deve concludersi in un tempo finito.
- Osservabilità: l'azione deve avere un effetto osservabile, cioè deve produrre qualcosa.
- Riproducibilità: a partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso risultato.
Le azioni elementari vengono interpretate in termini funzionali: come delle entità che trasformano i dati che ricevono in ingresso (input) in risultati (output), con ciò prescindendo dalle modalità con cui tale trasformazione viene effettuata, cioè assumendo un modello "a scatola nera" (black box). Black box, ovvero uno strumento di cui non conosciamo le sue componenti e come fa ciò che sa fare. Tra i dati di input e output sono presenti dei dati intermedi che l'esecutore deve memorizzare momentaneamente per poi utilizzarle per poi avere la soluzione in output.
Procedura effettiva e Soluzione effettiva
Si dice procedura effettiva per un esecutore una successione di azioni tale che:
- Tutte le azioni della successione sono elementari per l'esecutore, che è in grado di eseguire ciascuna di esse in un tempo finito e in modo deterministico, cioè ottenendo sempre gli stessi risultati a parità di input;
- È fissato l'ordine di esecuzione delle azioni;
- È esplicitamente specificato il modo in cui un'azione utilizza i risultati delle azioni che la precedono.
In generale, possono esistere diverse soluzioni effettive dello stesso problema per lo stesso esecutore. La soluzione si dice effettiva se l'esecutore è in grado di: interpretarla; compiere le azioni (in un tempo e memoria finiti!)
Algoritmo
Definizione formale: Le soluzioni effettive per esecutori descritte formalmente sono chiamate algoritmi.
Definizione informale: Un algoritmo è una successione ordinata di istruzioni (o passi) che definiscono le operazioni da eseguire su dei dati per risolvere una classe di problemi (tutti problemi che utilizzano la stessa procedura ma variano i dati di input del problema).
Proprietà degli algoritmi:
- Correttezza: L'algoritmo perviene alla soluzione del compito cui è preposto, senza difettare di alcun passo fondamentale.
- Efficienza: L'algoritmo perviene alla soluzione del problema usando la minima quantità di risorse fisiche.
Esecutori
Un esecutore è definito in base a tre elementi:
- L'insieme delle operazioni che è capace di compiere;
- L'insieme delle istruzioni che capisce (sintassi: somma di istruzioni che capisce e conosce);
- Quali operazioni associa ad ogni istruzione che riconosce (semantica: riconoscere l'istruzione ed associare l'operazione corrispondente).
Calcolatore elettronico
Il nostro esecutore di riferimento è il calcolatore elettronico, ed esso capisce le istruzioni che fanno parte del linguaggio macchina. I suoi compiti principali: elaborazione, memorizzazione e comunicazione (Input/output o I/O).
Modello black box
All'interno del calcolatore sono presenti tre entità nella quale una elabora, un'altra memorizza e una terza trasferisce o riceve i dati dall'esterno. Tutte e tre per comunicare sono legate da un controllore, che gestisce i dati nelle diverse parti.
Architettura di Von Neumann
L'architettura di von Neumann o Princeton è una tipologia di architettura per calcolatori elettronici programmabili a programma memorizzato. I dati e le istruzioni sono immagazzinati nello stesso spazio di memoria. Si contrappone all'architettura Harvard nella quale invece i dati e le istruzioni sono memorizzati in spazi di memoria distinti.
Central Processing Unit: Nel modello di von Neumann la Central Processing Unit (CPU) è composta (tra le altre cose) da due componenti fondamentali:
- Control Unit (CU): coordina e controlla il lavoro della CPU; gestisce il reperimento di istruzioni e dati dalla memoria e li fornisce alla ALU per l'elaborazione; copia i risultati dell'elaborazione in memoria centrale.
- Arithmetic/Logic Unit (ALU): elabora i dati provenienti dalla memoria centrale eseguendo le richieste della CU svolgendo: calcoli aritmetici (+, -, *, /, ...); operazioni logiche (AND, OR, NOT, ...); operazioni di confronto (, =, <>, ...).
Memoria Centrale è la principale memoria di supporto alla CPU che mantiene al proprio interno le istruzioni e i dati che la CU preleva per passarli alla ALU. Per ragioni di prestazioni, deve essere una memoria ad accesso casuale (Random Access Memory - RAM): caratterizzata dal permettere l'accesso diretto a qualunque indirizzo di memoria con lo stesso tempo di accesso. È solitamente basata su tecnologia elettronica a stato solido e quindi è: abbastanza veloce; volatile (le informazioni memorizzate sono perse se viene a mancare l'alimentazione elettrica); abbastanza costosa.
Ma attenzione che la memoria centrale non è l'unica ad accesso casuale e quindi tecnicamente non è l'unica RAM! Dati e istruzioni sono immagazzinati e gestiti dal calcolatore in formato binario ovvero sotto forma di insiemi di bit (cifra che può essere 0 o 1). Nelle memorie i bit sono raggruppati in celle:
- Tutte le celle sono formate dallo stesso numero di bit;
- Una cella composta da k bit è in grado di contenere una qualunque tra 2k combinazioni diverse di bit;
- Ogni cella è individuata da un indirizzo, che serve ad accedere all'informazione in una memoria con N celle gli indirizzi vanno da 0 a N – 1.
- La cella è l'unità indirizzabile più piccola.
Architettura System bus
CPU, Memoria centrale e dispositivi di I/O comunicano attraverso un Bus di sistema (System bus) composto da:
- Bus di controllo (Control bus): bus per lo scambio di segnali di servizio tra master e slave (bidirezionale).
- Bus degli indirizzi (Address bus): bus per la comunicazione degli indirizzi dal master alle slave (unidirezionale).
- Bus dei dati (Data bus): bus per lo scambio dei dati tra master e slave (bidirezionale).
Il bus è controllato dalla CPU (master) che:
- Seleziona il dispositivo da attivare (slave)
- Indica l'operazione da compiere: lettura (read); scrittura (write).
I dispositivi si attivano solo dopo essere stati selezionati dalla CPU. Le prestazioni dipendono dalla velocità di trasmissione del bus e dei dispositivi, misurate in GT/s (gigatransfer al secondo).
Registri della CPU
I registri della CPU sono delle locazioni di memoria interne alla CPU che vengono utilizzati per immagazzinare dati di input, dati intermedi e dati di output.
Flusso logico:
- La CU preleva i dati di input dalla memoria centrale e li mette in specifici registri.
- La ALU svolge le operazioni necessarie e mette i dati intermedi e di output in altri registri.
- La CU preleva i dati di output dai registri e li trasferisce in memoria.
I registri sono normalmente misurati in base al numero di bit che possono contenere (ad esempio, registri a 8 bit o registri a 32 bit). Un particolare registro denominato Program counter (PC) contiene l'indirizzo della cella di memoria dalla quale prelevare la prossima istruzione da eseguire.
Diversi tipi di memorie
La memoria centrale e i registri non sono le uniche tipologie di memoria presenti in un calcolatore elettronico. Il calcolatore ha infatti differenti necessità:
- Supporto alla CPU: una memoria di supporto alla CPU deve fornire dati e istruzioni il più rapidamente possibile.
- Archivio: una memoria di archiviazione deve consentire di archiviare dati e istruzioni garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo.
Diversi requisiti:
- Velocità per il supporto alla CPU.
- Non volatilità ed elevate dimensioni per l'archivio.
Il caching
Tradizionalmente, le CPU sono sempre state più veloci delle memorie, perché mentre nella prima è importante la velocità, nella seconda è aumentata la capienza e non la velocità di deposito delle informazioni. Inoltre, l'accesso alla memoria passa attraverso il bus, dove la frequenza di funzionamento del bus è molto più bassa di quella della CPU e il bus potrebbe essere spesso impegnato ad effettuare trasferimenti da dispositivi di I/O autonomi. È, perciò, difficile riordinare le istruzioni in modo da poter sfruttare i tempi di attesa della memoria.
Il calcolatore, quindi, utilizza un particolare meccanismo detto di caching per velocizzare l'accesso alle istruzioni e ai dati. Dove alcuni dati vengono salvati all'interno di una memoria più piccola e più veloce della memoria centrale, ciò permette alla CPU di velocizzare le operazioni. Sono memorie molto veloci che vengono ospitate direttamente nello stesso circuito integrato (chip) della CPU (detto solitamente microprocessore). Sono memorie comunque piccole e costose e prendono il nome di memorie cache.
Una gerarchia di memoria
Nei calcolatori moderni esiste una vera e propria gerarchia di memorie. Man mano che ci si sposta verso il basso nella gerarchia:
- Aumenta il tempo di accesso
- Aumenta la capacità di memorizzazione
- Diminuisce il costo per bit
Ogni livello si comporta da cache per il livello direttamente superiore.
Memoria di massa
La Memoria di Massa, detta anche memoria secondaria, è caratterizzata da grossa una capacità, è persistente, ovvero non perde i dati quando l'alimentazione viene staccata, i suoi tempi di accesso molto maggiori rispetto alla memoria centrale.
Principali tecnologie utilizzate:
- Magnetica/meccanica (hard disk)
- Ottica (CD, DVD, Blu ray)
- A stato solido o flash (solid state drive - SSD e USB flash drive).
Hard Disk: dischi magnetici
Le Hard Disk a dischi magnetici sono piatte di alluminio (o di altro materiale metallico) ricoperti di materiale ferromagnetico.
Fattore di forma (diametro):
- Sempre più piccolo (consente velocità di rotazione maggiori)
- 3.5 pollici per i sistemi desktop e fino a 1 pollice per i mobili
Testina di un disco (strumento di lettura/scrittura)
- È sospesa appena sopra la superficie magnetica
- Scrittura: il passaggio di corrente positiva o negativa attraverso la testina magnetizza la superficie
- Lettura: il passaggio sopra un'area magnetizzata induce una corrente positiva o negativa nella testina
Come funziona un Hard Disk a disco magnetico
- Traccia (track): sequenza circolare di bit scritta mentre il disco compie una rotazione completa
- Settore (sector) o record: parte di una traccia corrispondente a un settore circolare del disco
- Formattazione: operazione che predispone tracce e settori per la lettura/scrittura
Hard Disk a stato solido (SSD)
Dispositivo di archiviazione dati che utilizza unicamente l'elettronica a stato solido per la memorizzazione delle informazioni digitali. Tecnologia più costosa. Non richiedono parti meccaniche e magnetiche, quindi:
- Rumorosità assente
- Minori consumi durante le operazioni di lettura e scrittura
- Tempo di accesso ridotto rispetto ai dischi magnetici
- Maggiore resistenza agli urti
- Minore dissipazione di calore
- Minore peso e dimensioni
Memorie Flash esterne
Tecnologia elettronica simile a quella degli SSD.
- Bassi consumi
- Piccole dimensioni
- Capacità dai 256MB ai 32 GB
Il sistema operativo gestisce l'accesso come se fossero dischi.
Dischi ottici
Lettura ottica basata sulla riflessione (o sulla mancata riflessione) di un raggio laser. Densità di registrazione più alte dei dischi magnetici. Creati in origine per registrare i programmi televisivi e poi usati come dispositivi di memoria nei calcolatori.
Diversi tipi/caratteristiche:
- CD-ROM
- CD-R
- CD-RW
- DVD-RAM
Read only memory (ROM)
La memoria ROM (read only memory) nella quale è presente il primo software che viene fatto partire. Essa ha è contenuta nei calcolatori e serve al calcolatore per partire, con una procedura di Putstrat. È una memoria fissa, non volatile, a sola lettura e non modificabile, perché con una sua modifica potremmo causare poi il non accendimento del computer stesso. Essa effettua una diagnostica del calcolatore, ovvero che si accerta che tutto ciò che ci deve essere nel calcolatore è presente, che tutte le comunicazioni avvengono bene e poi fa partire il sistema operativo, che permette poi al computer di partire. Nonostante ciò, ora le ROM possono essere modificate, ma con procedure molto delicate.
Nella ROM troviamo quel tipo di software che non deve mai essere modificato, come il BIOS del PC, ovvero ci permette di configurare il computer, e il software di controllo.
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.
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.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Fondamenti cpp
-
Appunti Fondamenti di informatica
-
Fondamenti di informatica
-
Fondamenti di informatica