Giovedì 9 marzo 2023 - Computer e programmazione
Capitolo 1 - Hardware
Il termine hardware indica la componente fisica del computer. Esso non è un singolo dispositivo, ma un aggregato di dispositivi che lavorano insieme. Un computer è normalmente costituito da delle componenti principali, quali:
- CPU (Central Process Unit): è l’unità di elaborazione centrale; è la componente più importante del computer, senza di questa il software non verrebbe eseguito. Oggi sono composte da microprocessori, dispositivi infinitamente potenti. È progettata per svolgere le seguenti operazioni: leggere dati dalla memoria centrale, sommare/sottrarre/moltiplicare/dividere numeri, spostare un dato da una locazione ad un’altra, uguaglianze e disuguaglianze. Essa esegue operazioni semplici ma necessita delle istruzioni (set di istruzioni) per dirle cosa fare → programmi. Questi programmi sono scritti in linguaggio macchina (struttura binaria). Per eseguire le istruzioni di un programma, viene eseguito un ciclo chiamato: ciclo fetch-decode-execute e viene ripetuto per ciascuna operazione, è suddiviso in 3 passaggi: fetch (prelevare), decode (decodificare) e execute (eseguire).
- Memoria centrale: conosciuta anche come RAM (Random-Access Memory), è una memoria volatile, che entra in funzione quando viene aperto un programma, esso rimane nella memoria fino a quando non viene chiuso o fin quando il computer non viene spento, non conserva il suo contenuto.
- Memoria di massa: è quel tipo di memoria che può mantenere il suo contenuto per molto tempo, anche quando il pc non è alimentato. Può essere sia interna che esterna al dispositivo.
- Dispositivi di input: sono quei dispositivi che raccolgono i dati e li trasmettono al computer. Le periferiche di input più comuni sono la tastiera, il mouse, scanner, microfono, ecc...
- Dispositivi di output: sono quei dispositivi che prelevano dati dal computer. Tra le periferiche di output più comuni abbiamo i registratori CD e DVD, stampante, ecc...
Software
È la componente che permette al computer di funzionare. Qualsiasi operazione è sotto il controllo del software.
Software di sistema: sono i programmi che gestiscono le operazioni base di un computer. Comprende 3 tipi di programmi:
- Sistemi operativi: insieme di programmi che possiamo trovare in un pc. Controlla le componenti interne dell’hardware. Es: Linux, Windows, ecc...
- Programmi di utilità: sono software specializzati che migliorano l'operatività del computer.
- Strumenti di sviluppo software: sono programmi usati dal programmatore per testare e modificare il software.
Memorizzazione nei computer
La memoria dei computer è costituita da Byte ossia, porzioni di memoria sufficiente a memorizzare un carattere o un numero intero piccolissimo. Ogni Byte è a sua volta costituito da Bit (Binary Digit), nella maggior parte dei computer, sono componenti elettrici microscopici che possono portare una carica positiva, corrispondente all’ “on”, o una carica negativa, corrispondente all’ “off”. Quando viene memorizzato un dato in un Byte, il pc imposta uno schema di stati on/off per rappresentare quel singolo dato.
Un bit può essere utilizzato anche per rappresentare dei numeri. In base allo stato del bit, acceso (1) o spento (0), è possibile rappresentare uno o più valori in binario. Tutti i dati memorizzati nella macchina sono codificati in binario, che siano numeri o che siano intere frasi (caratteri). Quindi prima un dato viene convertito dal suo stato “originale” in binario e poi salvato nel sistema.
Per la codifica dei caratteri, nacque all'inizio degli anni ‘60 il codice ASCII, American Standard Code for Information (aschi). Essendo un codice alquanto limitato, nel tempo iniziò a essere creato un nuovo codice chiamato UNICODE, molto più esteso è compatibile con le altre lingue mondiali, ancora oggi utilizzato.
Anche le immagini come i video, devono essere salvate all’interno del computer. In particolare le immagini sappiamo essere costituite da Pixel (Picture Element), piccole celle che assumono un colore, questo viene convertito in binario in modo che possa essere memorizzato nel computer.
Per i brani musicali, invece, vi è la suddivisione in campioni. Più sono i campioni in cui viene suddiviso un brano, più questo sarà simile all’originale.
Dal linguaggio macchina al linguaggio Assembly
I computer possono eseguire i programmi scritti in linguaggio macchina, ma scrivere in tale linguaggio sarebbe assurdo. Nel tempo è stato creato un sostituto al linguaggio macchina, ossia, il linguaggio Assembly, che al posto di usare sequenze binarie, ne utilizza altre di carattere mnemonico. Per tradurre il linguaggio Assembly in linguaggio macchina è necessario un assembler (programma); una volta convertito la CPU potrà eseguire il programma.
Il linguaggio Assembly è considerato “a basso livello”, poiché estremamente vicino al linguaggio macchina. Negli anni ‘50 dello scorso secolo iniziarono a comparire anche i cosiddetti linguaggi “ad alto livello” che consentono di creare programmi potenti e complessi.
Ogni linguaggio ad alto livello, ha delle parole che il programmatore deve utilizzare e conoscere per effettuare delle operazioni. Queste vengono chiamate parole base o riservate. Oltre che a queste, sono presenti anche degli operatori che si occupano di svolgere determinate operazioni su dati (es. quelli matematici).
È importante rispettare la sintassi, che può essere differente di linguaggio in linguaggio, in quanto piccoli errori non farebbero eseguire il programma → errore di sintassi.
Algebra di Boole
Un calcolatore ha il compito di valutare le condizioni esterne al calcolatore stesso, ed effettuare decisioni in base ad un determinato contesto. Per fare questo viene utilizzata l’algebra di Boole (matematico del 1800 circa). Questa si basa su solo 2 simboli: V (vero → 1) e F (falso → 0). I vari tipi di variabili possono, dunque, assumere solo questi due valori.
I tre operatori fondamentali:
- NOT a è vera se a=F
- a1 AND a2 = V altrimenti sono entrambi falsi
- a1 OR a2 = V, se a1=V a2=F e viceversa
Tutto ciò viene descritto dalle seguenti tabelle di verità:
Funzioni logiche o booleane
Ricordiamo che nell’algebra di Boole le funzioni possono assumere solo due valori V o F, in base a quello attribuito alle sue variabili indipendenti. NOT ha la precedenza su tutti, AND ha la precedenza su OR, OR è l’ultimo.
Teoremi di De Morgan
Sono 2 proprietà importanti dell’Algebra di Boole, prendono il nome dal matematico Augustus De Morgan. Date due espressioni Booleane a e b abbiamo:
- NOT (a AND b) = (NOT a) OR (NOT b)
- NOT (a OR b) = (NOT a) AND (NOT b)
Capitolo 2 - Architettura dei calcolatori
Architettura Von Neumann
L’architettura generale dei calcolatori viene detta Von Neumann dall’omonimo matematico John Von Neumann, che definì una delle prime architetture intorno al 1945. Quelle utilizzate oggi si basano ancora su dei criteri di allora, ma sono chiaramente diverse.
I suoi principali componenti sono:
- CPU Centrale: è divisa in RAM (memoria di tipo volatile) ma anche in ROM (Read Only Memory), memoria non volatile che non perde i dati quando il pc viene spento.
- Tastiera e schermo: sono delle interfacce che permettono all’utente di interagire con la macchina. Lo schermo è pilotato dalla scheda video (controlla l’accensione dei pixel, in modo da poter rappresentare immagini, ecc. all’utente). Per i pc da ufficio, le schede video si contraddistinguono per la risoluzione, numero di pixel che possono mostrare e la quantità di colori che questi possono mostrare contemporaneamente.
- Dischi/Dispositivi di memoria di massa: memorizzano una grande quantità di dati; possono essere sia magnetici (floppy disk, Hard disk) e tendono a rovinarsi più facilmente, come a contatto con la polvere; sia ottici (DVD, BD, CD, ecc.). I dischi sono più lenti della memoria centrale e non possono accedere a un singolo Byte, ma a blocchi di Byte con dimensione fissa. Sono controllati e gestiti dal Controller dei dischi.
- Dispositivi esterni: sono dispositivi di memoria di massa che si basano su una tecnologia elettronica detta Memoria Flash. Il loro contenuto non viene perso allo spegnimento del computer. Sono meno problematici rispetto a un floppy disk, sono più capienti e di piccole dimensioni.
Tutti i componenti comunicano tra loro grazie al Bus di Sistema. Gli ordini vengono impartiti dalla CPU.
Il bus di sistema è costituito da tre elementi:
- Bus Dati: trasferisce i dati da/verso la CPU. È in grado di trasferire 32 bit alla volta.
- Bus Indirizzi: trasmette alla memoria centrale gli indirizzi dei Byte a cui accedere.
- Bus Controlli: trasmette gli ordini impartiti dalla CPU.
Architettura della CPU
La CPU internamente contiene 3 dispositivi:
- Registri: sono elementi di altissima memoria ed estremamente veloci. Memorizzano le informazioni sulle quali sta lavorando la CPU.
- ALU (Unità Aritmetico Logica): ha il compito di effettuare le operazioni aritmetico-logiche.
- CU (Central Unit): coordina l’intera CPU e interpreta le singole istruzioni.
Le varie componenti scambiano informazioni tra loro grazie al Bus Interno (serie di linee elettriche) che collegano la CPU con le altre componenti esterne. Per la sincronizzazione viene utilizzato un particolare circuito, detto: System Clock, il quale genera un segnale periodico ad altissima frequenza, utilizzato per il coordinamento dell’intera CPU. Ogni impulso emesso viene detto colpo di clock. La frequenza di clock è di circa 3GHz = 3 Miliardi di colpi di clock al secondo.
Registri
Ogni registro presente nella CPU ha un compito ben preciso, ci sono diversi tipi di registri:
- Registro A e B: memorizzano i dati risultanti da operazioni aritmetiche e di confronto. Bit = 32.
- Registro di Stato (SR): indica gli ultimi risultati dell’ultima operazione di confronto ed eventuali overflow. 1 Bit per ciascuna proprietà.
- Registro Contatore di Programma (PC): contiene l’indirizzo della prossima istruzione da eseguire.
- Registro Istruzione Corrente: contiene l’istruzione attualmente in esecuzione.
- Registro Indirizzi (AR) e Registro Dati (DR): interfaccia tra il Bus di Sistema e la CPU. AR rende visibile sul Bus Indirizzi, l’indirizzo del Byte di memoria al quale accedere; è collegato al Bus Interno. Mentre il DR viene usato per scambiare dati con la memoria e con altri dispositivi, ragion per cui è necessario un diretto collegamento con il Bus Interno (inoltre deve scambiare dati con gli altri componenti).
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.
-
Appunti di programmazione dell'allenamento
-
Programmazione Web - Appunti
-
Appunti di Programmazione
-
Appunti di Programmazione + Lab