Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione agli Algoritmi e all'Informatica: Concetti Fondamentali e Applicazioni - Prof, Appunti di Informatica per la ricerca sociale

Informatica lezione n.2. Contenuti: Il concetto di algoritmo I diagrammi di flusso (Flow chart) Dall'algoritmo al programma Il computer BIT E BYTE Architettura del computer Come funziona il computer

Tipologia: Appunti

2020/2021

In vendita dal 03/05/2021

rocksana-sarker
rocksana-sarker 🇮🇹

5

(4)

4 documenti

1 / 10

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Il sogno era quello di realizzare una macchina automatica cioè una macchina in grado di realizzare le
attività da sola. Le prime macchine sono state delle semplici calcolatrici per arrivare a una prima
macchina cioè la macchina di Babbage, una macchina con la quale pose le basi della moderna
informatica (fa un grandissimo salto di qualità rispetto alle macchine precedenti). Dagli studi di
Babbage scaturirono poi gli articoli di Menabrea (primo articolo di informatica) e i primi algoritmi di
Ada Byron (prima programmatrice della storia).
Fare delle operazioni in maniera automatica significa: realizzare degli algoritmi senza che sia dovuto
l’intervento dell’uomo.
Il concetto di algoritmo
“Termine, derivato dall’appellativo al-Khuwārizmī del matematico Muḥammad ibn Mūsa del 9° sec.,
originario di quello che è l’attuale Uzbekistan, che designa qualunque schema o procedimento
sistematico di calcolo. Con un algoritmo si tende a esprimere in termini matematicamente precisi il
concetto di procedura generale, di metodo sistematico valido per la soluzione di una certa classe di
problemi” - Treccani
“un algoritmo è una sequenza finita di operazioni da svolgere per risolvere un dato problema”
La definizione non ci dice nulla riguardante le problematiche che si potrebbero riscontrare perciò
non può essere considerata una definizione ufficiale. Ancora oggi non esiste una «definizione di
algoritmo» che ne definisca pienamente il concetto in termini formali; ci si deve accontentare di
definizioni più o meno intuitive. Uno dei tentativi più riusciti è quello proposto da Turing con la sua
«macchina» (è formalmente definita) ed è proprio per questo motivo che la Macchina di Turing è
ancora oggi lo strumento più potente utilizzato per decidere se un dato procedimento sia o meno
calcolabile con una macchina automatica (se sia dunque un algoritmo).
Quello di «Algoritmo» è forse il più importante concetto dell’Informatica su cui l’informatica si basa.
Quando qualcuno ci sta insegnano una ricetta in realtà ci sta fornendo un algoritmo. Le macchine
che seguono l’intero procedimento hanno dei tempi/temperature/quantità ben precise e quindi nel
momento in cui inserisco gli ingredienti e applico l’algoritmo al termine di questa attività ottengo il
dolce sempre uguale.
Per fare appunto la pasta frolla abbiamo bisogno di:
- Ingredienti (materiali)
- Ricetta (procedimento)
- Pasta frolla (risultato)
Utilizzando un linguaggio più affine all’informatica, abbiamo bisogno:
- Di un input
- Di un algoritmo
- E noi, alla fine, dobbiamo produrre un output
Classici esempi di algoritmi in informatica sono:
- L’algoritmo di Euclide per il calcolo del Massimo Comun Divisore (MCD) di due numeri interi
- L’algoritmo per la ricerca delle soluzioni di una equazione di II grado
- L’algoritmo di compressione Jpeg di una immagine
- L'algoritmo di Dijkstra utilizzato per cercare i cammini minimi in un grafo (i.e. in un
navigatore)
- L’algoritmo PageRank di Google, che stabilisce quale sito far apparire prima nei risultati di
una ricerca
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica Introduzione agli Algoritmi e all'Informatica: Concetti Fondamentali e Applicazioni - Prof e più Appunti in PDF di Informatica per la ricerca sociale solo su Docsity!

Il sogno era quello di realizzare una macchina automatica cioè una macchina in grado di realizzare le attività da sola. Le prime macchine sono state delle semplici calcolatrici per arrivare a una prima macchina cioè la macchina di Babbage, una macchina con la quale pose le basi della moderna informatica (fa un grandissimo salto di qualità rispetto alle macchine precedenti). Dagli studi di Babbage scaturirono poi gli articoli di Menabrea (primo articolo di informatica) e i primi algoritmi di Ada Byron (prima programmatrice della storia). Fare delle operazioni in maniera automatica significa: realizzare degli algoritmi senza che sia dovuto l’intervento dell’uomo.

Il concetto di algoritmo

“Termine, derivato dall’appellativo al-Khuwārizmī del matematico Muḥammad ibn Mūsa del 9° sec., originario di quello che è l’attuale Uzbekistan, che designa qualunque schema o procedimento sistematico di calcolo. Con un algoritmo si tende a esprimere in termini matematicamente precisi il concetto di procedura generale, di metodo sistematico valido per la soluzione di una certa classe di problemi” - Treccani “un algoritmo è una sequenza finita di operazioni da svolgere per risolvere un dato problema” La definizione non ci dice nulla riguardante le problematiche che si potrebbero riscontrare perciò non può essere considerata una definizione ufficiale. Ancora oggi non esiste una «definizione di algoritmo» che ne definisca pienamente il concetto in termini formali; ci si deve accontentare di definizioni più o meno intuitive. Uno dei tentativi più riusciti è quello proposto da Turing con la sua «macchina» (è formalmente definita) ed è proprio per questo motivo che la Macchina di Turing è ancora oggi lo strumento più potente utilizzato per decidere se un dato procedimento sia o meno calcolabile con una macchina automatica (se sia dunque un algoritmo). Quello di «Algoritmo» è forse il più importante concetto dell’Informatica su cui l’informatica si basa. Quando qualcuno ci sta insegnano una ricetta in realtà ci sta fornendo un algoritmo. Le macchine che seguono l’intero procedimento hanno dei tempi/temperature/quantità ben precise e quindi nel momento in cui inserisco gli ingredienti e applico l’algoritmo al termine di questa attività ottengo il dolce sempre uguale. Per fare appunto la pasta frolla abbiamo bisogno di:

  • Ingredienti (materiali)
  • Ricetta (procedimento)
  • Pasta frolla (risultato) Utilizzando un linguaggio più affine all’informatica, abbiamo bisogno:
  • Di un input
  • Di un algoritmo
  • E noi, alla fine, dobbiamo produrre un output Classici esempi di algoritmi in informatica sono:
  • L’algoritmo di Euclide per il calcolo del Massimo Comun Divisore (MCD) di due numeri interi
  • L’algoritmo per la ricerca delle soluzioni di una equazione di II grado
  • L’algoritmo di compressione Jpeg di una immagine
  • L'algoritmo di Dijkstra utilizzato per cercare i cammini minimi in un grafo (i.e. in un navigatore)
  • L’algoritmo PageRank di Google, che stabilisce quale sito far apparire prima nei risultati di una ricerca

L'algoritmo non è un concetto strettamente informatico, anche questi sono esempi di algoritmi:

  • Le indicazioni stradali per raggiungere una data località
  • Le istruzioni per assemblare un mobile Ikea Alcuni algoritmi sono classificati in base alla loro funzione o alla tecnica di realizzazione, esempi:
  • Algoritmi di ordinamento : utilizzati per elencare gli elementi di un insieme secondo una data regola (es. dal più piccolo al più grande)
  • Algoritmi di ricerca : utilizzati per trovare un elemento avente determinate caratteristiche all'interno di un insieme di altri elementi (es. il più grande)
  • Algoritmi iterativi : sono delle tipologie di algoritmi, utilizzatissime in informatica, nei quali una sequenza di azioni che viene ripetuta, finché è necessaria la ripetizione stessa ovvero finché non viene soddisfatta una data condizione (es. dividi per due finché il risultato è zero)
  • Algoritmi ricorsivi: In informatica viene detto algoritmo un algoritmo si dice ricorsivo quando la sua esecuzione richiama l'esecuzione dello stesso algoritmo su un nuovo insieme di dati. È una tecnica molto elegante e tuttavia richiede una certa abilità per essere applicata in quanto l’esecuzione può facilmente andare fuori controllo (loop infinito) se non studiata correttamente (es. calcolo della successione di Fibonacci Fn=Fn- 1 +Fn- 2 con F 0 =0 e F 1 =1).

I diagrammi di flusso (Flow chart)

In informatica il diagramma di flusso (in inglese flow chart) è un linguaggio di modellazione grafico per rappresentare i diversi step di un processo o il flusso di controllo ed esecuzione di un algoritmo, come nel nostro caso del MCD; esso consente di descrivere in modo schematico attraverso dei simboli grafici:

  • le operazioni da compiere, rappresentate mediante sagome convenzionali (rettangoli, rombi, esagoni, parallelogrammi, rettangoli smussati...), ciascuna con un preciso significato logico e all'interno delle quali un'indicazione testuale descrive tipicamente l'attività da svolgere
  • la sequenza nella quale devono essere compiute, rappresentate con frecce di collegamento (flusso). Questi diagrammi vengono spesso chiamati col nome del flusso che rappresentano: come diagramma di flusso dei processi, diagramma di flusso funzionale, diagramma di flusso di una procedura, mappatura dei processi di una organizzazione etc. Un diagramma di flusso serve a descrivere un flusso di attività o una sequenza di operazioni. È molto utilizzato per documentare un lavoro, per pianificare un progetto, per comunicare un processo complesso e per sviluppare un algoritmo, per rappresentare il flusso di informazioni all’interno di un’organizzazione e così via. Per poterlo costruire correttamente è necessario aver chiaro l’obiettivo per cui lo si vuole utilizzare ed è necessario organizzare le attività da rappresentare secondo un ordine (cronologico, funzionale o altro) che si ricava sviluppando passo passo ciò che si sta analizzando, anche con la collaborazione di chi queste attività svolge abitualmente, nel caso per esempio di un processo lavorativo (è un lavoro che svolgono tipicamente gli analisti, l’analisi che è quella attività in cui un informatico analizza una certa attività con lo scopo di riprodurla attraverso il flusso di un algoritmo richiede una notevole sensibilità da parte delle persone che svolgono questo tipo di attività). Come detto, i diagrammi di flusso utilizzano figure geometriche (rettangoli, ovali, parallelogrammi, frecce etc.) per rappresentare la sequenza delle operazioni. (grafiche per la costruzione di un flow chart + esempio di costruzione di un flow chart)

sono dei programmi automatici che sono in grado di tradurla in programmazione di basso livello che il computer può comprendere.

  • Il programma viene verificato in una fase di « testing » in cui le funzionalità del programma vengono valutate (rispetto alle specifiche) ed il programma viene utilizzato da persone diverse per individuarne eventuali malfunzionamenti. Si prendono in mano i requisiti iniziali e si verifica passo per passo se il programma fa le cose che si erano previste. Viene svolta in prima battura dal programmatore, poi successivamente (soprattutto nei programmi di grandi dimensioni) si dà da utilizzare il programma a delle persone che sono totalmente fuori del campo della programmazione (provano il programma come se fossero degli utenti normali). Nei progetti di grandi dimensioni si usano le community, si rilasciano i programmi in una versione intermedia (versioni beta) che vengono rilasciate ma non sono state completamente rilasciate.
  • Infine, si ha l’attività di « manutenzione » per ulteriori correzioni, adattamenti a diverse piattaforme, evoluzioni etc. Le versioni definitive sono le chiamate versioni 1.0/1.1/1.2/2. (quando si passa da 1.0 a 1.1 ci sono stati solo dei lievi aggiustamenti, quando invece si passa da 1.3 a 2.0 vuol dire che ci sono state delle modificazioni più importanti). In linea teorica, una volta che viene scoperto un nuovo algoritmo che realizza un dato compito (per esempio l’algoritmo di Euclide per trovare il Massimo Comun Divisore di due numeri interi, l’algoritmo per comprimere la musica in mp3 o le immagini in jpg), questo viene dato per acquisito e non viene richiesto di comprenderne il funzionamento. In questo senso l’algoritmo rappresenta un «mattone fondamentale» che non viene ulteriormente messo in discussione. Soprattutto nell’informatica moderna, questo concetto è ampiamente utilizzato e un grandissimo numero di questi «mattoni» si trovano nel Web ad uso e consumo dei programmatori e degli appassionati di tutto il mondo. Oggi l’informatica si è affermata come la scienza degli algoritmi. L'ambito di questa scienza è molto ampio, attingendo e interagendo con diverse discipline come la matematica, l’ingegneria, la psicologia, la biologia, l’economia aziendale, le scienze ambientali, la linguistica etc... Questo implica che i ricercatori in diversi rami dell'informatica possano avere delle idee anche molto diverse di cosa sia l’informatica e di quale sia il suo scopo. Ad esempio, un ricercatore che lavora nel campo delle architetture di computer può avere in mente che la scienza dell’informatica sia legata per lo più all'avanzamento tecnologico; un ricercatore nel campo dei database può vedere informatica come la ricerca di modi sempre più efficienti per archiviare e rendere l’informazione accessibile e contribuire ad una società più consapevole e trasparente; un ricercatore nel campo delle applicazioni per l’ambiente può pensare di poter contribuire ad un mondo più pulito e uno nel campo dell'intelligenza artificiale può considerare l’informatica legata allo studio dell’intelligenza umana e dei comportamenti, immaginando società future dove le macchine avranno un ruolo preponderante. - tratto da “Computer science: an overview 11” L’informatica avuta questa evoluzione così veloce può comportare delle storture nell’interpretazione anche da parte degli stessi informatici che non riescono bene a capire qual è il loro luogo. Queste sono visioni parziali in cui si perde di vista il quadro generale e si perde di vista il ruolo vero dell’informatica che non è quello di cambiare il mondo quanto piuttosto quello di rispondere ad alcuni quesiti (in quanto scienza degli algoritmi).
  • Quali problemi possono essere risolti con un approccio di tipo algoritmico?
  • Come può essere reso più semplice scoprire e definire un algoritmo?
  • Come possono essere migliorate le tecniche di rappresentazione e di comunicazione degli algoritmi?
  • Come possono essere analizzate e comparate le caratteristiche di diversi algoritmi?
  • Come possiamo utilizzare gli algoritmi per manipolare l’informazione?
  • Come possiamo applicare degli algoritmi per produrre comportamenti intelligenti?
  • Che impatto può avere l’applicazione degli algoritmi sulla società? Rispondere a queste domande presuppone di operare con un elevato grado di astrazione il che significa ignorare i dettagli interni di un dato oggetto, per concentrarsi sulle sue proprietà esterne.

Il computer

«Macchina in grado di elaborare dati, automatica e programmabile» Si compone di due parti fondamentali:

  • Una componente fisica chiamato hardware
  • Una componente immateriale chiamata software Perché il computer è diventato uno strumento così importante e pervasivo della nostra società? Perché riesce a far migrare tutto quello che materiale in qualcosa di immateriale. Tutta l’informazione del pianeta può essere tradotta attraverso sequenze di impulsi elettrici (immagini, testi, voce, dati, film, musica, vengono codificati e archiviati in sequenze di 0 e 1). Tutta l’informazione che produciamo può essere tradotta in sequenze di impulsi elettrici. A differenza della mente umana che è in grado di affrontare e risolvere problemi nuovi utilizzando capacità cognitive, intuizione e ragionamento, il computer, che è una macchina, è invece un semplice « esecutore » di istruzioni impartite dall'esterno. Le istruzioni vengono impartite attraverso un algoritmo studiato per risolvere un problema a partire da dei dati di input affinché si produca un risultato in output, attraverso l’elaborazione dei dati stessi. Il computer, in quanto mero esecutore di algoritmi, deve essere opportunamente istruito e ciò avviene ad opera di un programmatore capace di comunicare e interagire con la macchina attraverso dei linguaggi di programmazione che possono essere ad alto (linguaggio abbastanza simile al nostro), medio o basso livello di astrazione. Il più basso livello di astrazione è il cosiddetto « linguaggio macchina » (il linguaggio propriamente detto è fatto di 1 e 0). A questo punto potremmo porci delle nuove domande:
  • Cosa sono i BIT e cosa è la codifica digitale?
  • Cos’è un programma e come lo si rappresenta?
  • Cosa è che fa lavorare il computer?
  • Che cosa ne governa il funzionamento?
  • Come possono i computer dialogare fra di loro?
  • Quali rischi corriamo quando utilizziamo un computer?

BIT E BYTE

I computer hanno bisogno di un proprio linguaggio per poter comunicare tra loro e con gli esseri umani. Così come gli uomini utilizzano dei simboli elementari nel proprio linguaggio (fonemi per linguaggio verbale; caratteri per linguaggio scritto), anche il computer utilizza delle proprie entità elementari che noi codifichiamo in 0 e 1 e BIT (Binary digIT) ; tutta l’informatica è costruita su questi due simboli.

Tutte le società avanzate hanno una velocità di connessione nettamente superiore rispetto ai paesi del sud. I paesi del golfo persico sono i più veloci (Qatar e Emirati Arabi) con il Sud Corea.

Architettura del computer

Ogni computer del mondo, indipendentemente dalle sue prestazioni o dal suo costo, può essere ricondotto ad un modello unitario: uno schema di «blocchi funzionali» che lo descrive in termini generici che viene chiamato Architettura di Von Newmann. Il modello di von Neumann è di notevole importanza in quanto descrive l'architettura hardware su cui è basata la maggior parte dei moderni computer programmabili. Fu sviluppato negli anni ‘40 dal matematico ungherese John von Neumann nell’ambito del progetto EDVAC.

  • Abbiamo una Central Processing Unit (l’oggetto principale del computer). La Central Processing Unit (CPU) ovvero Unità di Elaborazione Centrale in italiano, o meglio ancora, Microprocessore, risiede all’interno del computer. È il suo cuore e ha la funzione di «elaborare i dati ricevuti in ingresso, secondo gli ordini impartiti dal programma». Ma questo può essere fatto solo con l’ausilio di un’altra unità, ossia la «Memoria Centrale» nella quale risiedono sia i dati da elaborare, sia i programmi da eseguire.
  • Abbiamo una memoria centrale che è in stretto contatto con la cpu (senza la quale la cpu non potrebbe funzionare). Ha la funzione di contenere sia i dati da elaborare, sia il programma con le istruzioni da eseguire. Possiamo distinguere due tipi fondamentali di memoria: o La Memoria centrale RAM (Random Access Memory). Memoria «volatile» che ha la funzione di supportare le attività di elaborazione (alta velocità, bassa capacità perché è anche costosa), è volatile perché una volta che si spegne il computer tutti ti dati vengono persi. È una memoria di lavoro. o La Memoria di Massa (Hard Disk). Memoria «permanente» e serve a memorizzare i dati e i programmi che debbono poter essere utilizzati anche in più sessioni di utilizzazione del computer. È una memoria di archiviazione (bassa velocità, alta capacità)
  • Abbiamo i dispositivi I/O (input/output) che sono tutti i dispositivi esterni al computer. Da una parte abbiamo l’uomo, dall’altra abbiamo il computer. Questi due soggetti operano con linguaggi completamente diversi e ci vuole qualcosa che consenta di trasferire da una parte e l’altra e viceversa. La prima componente è quella di input, l’unità di ingresso al mondo dei Bit (è una sorta di mediatore che è in grado di acquisire le informazioni dall’uomo e inserirle nel computer attraverso anche dei software). Il computer a sua volta ci deve presentare dei risultati e lo fa con i dispositivi di output, l’unità di uscita dal mondo dei Bit (il monitor e le casse sono degli esempi). Alcuni dispositivi di input possono essere anche di output (come un monitor touch).

Come funziona il computer

La CPU (microprocessore) rappresenta il cuore del Computer e per questo è detta Unità di Elaborazione «Centrale». La CPU governa il Computer impartendo «ordini» a tutti gli altri organi e interpretando le istruzioni che noi stessi gli diamo: direttamente mediante comandi del SO (sistema operativo) o indirettamente con dei programmi. La cpu è composta da:

  • ALU - unità aritmetica logica. È sostanzialmente una calcolatrice che può fare sia operazioni di tipo aritmetico sia di tipo logico. Le operazioni logiche fondamentali sono tre:

o Somma logica (operazioni di OR) - dati in ingresso dei valori di A o B il risultato è quello che si vede nella tabella. Quando A e B sono entrambi a 0 il risultato vale 0, in tutti gli altri casi in cui almeno uno degli operandi due vale 1 il risultato è 1. o Prodotto logico (operazioni di AND) - solo quando A e B sono uguali a 1 il risultato è 1, in tutti gli altri casi il risultato vale 0. o Negazione – nega il valore dell’operatore di ingresso, se A è 1 vale 0, se A è 0 vale 1. Altri operatori booleani: o NAND (NOT AND) funziona come negazione del prodotto logico, dove il prodotto dell’AND dava 0 in questo caso dà 0. o NOR (NOT OR) funziona come negazione dell’OR o XOR (OR esclusivo) è una somma logica che mi dà risultato 1 solo quando uno dei due operando è 1 vale 1, se entrambi gli operandi vale 1 o 0 il risultato è 0. Queste informazioni sono poi tradotte in circuiti fisici.

  • Registri - sono delle piccole unità di memoria locale che servono a mantenere fisicamente vicini alla ALU le informazioni che in quel momento sono essenziali per eseguire la elaborazione richiesta (i.e. metto gli operandi nei registri prima di sommarli / quando devo realizzare un'operazione prendo le cose che mi servono alla memoria centrale e le sposto nei registri così che tutta l’operazione avviene nella cpu). Il valore di tutti i registri ad un dato istante, rappresentano lo «stato» della CPU in quell’istante. o program counter (PC): memorizza l’indirizzo della prossima istruzione (la prima cosa che faccio quando inizio un'istruzione è aggiornare il program counter); o instruction register (IR): contiene l’istruzione da eseguire; o memory address register (MAR): contiene l’indirizzo della locazione di memoria da leggere o scrivere; o memory data register (MDR o MD): serve a scambiare dati tra la CPU e la memoria; o program status word (PSW): è il registro dei flag che memorizza particolari condizioni in cui si trova la macchina; o control register (RC) è il registro per i segnali di controllo (ready, wait, write, read,…).
  • Control unit funge da vero e proprio «cervello» del nostro computer. Svolge la delicata operazione di «interpretare» l’istruzione ricevuta e di impartire i conseguenti «ordini» a tutti gli organi coinvolti: ALU, Registri, Unità di Uscita etc.. affinché l’istruzione sia di fatto eseguita. L'unità di controllo ad ogni clock riceve in Input: 1. Il codice operativo dell’istruzione da eseguire; 2. I segnali di flag che determinano lo stato della CPU; 3. I segnali di controllo (interrupts sono segnali che dice alla cpu di fermarsi per dare precedenza ai programmi che hanno la priorità, acknowledgments) E produce in Output: 1. Segnali di controllo verso l’ALU, di trasferimento dati, di controllo verso altri dispositivi. Come nelle lingue naturali, composte da fonemi, parole e frasi e così via, anche nel linguaggio dei computer, il linguaggio macchina , i simboli dell'alfabeto utilizzato (1 e 0) sono organizzati in «parole» e queste ultime possono essere utilizzate per comporre «frasi» secondo delle ben precise regole grammaticali. Le frasi del linguaggio macchina sono dette « istruzioni » Ogni istruzione ordina al processore di eseguire un'azione elementare che va a modificare lo stato interno del computer come la lettura di una locazione di memoria, l’esecuzione della somma dei valori contenuti in due registri, l’incremento di un contatore, il

o Principale compito della CPU è quello di eseguire le istruzioni di un programma presente in memoria centrale leggendo e scrivendo i dati, che pure risiedono in memoria centrale. Al vertice abbiamo i registri della cpu che sono locazioni di memoria molto veloci. Tra i registri della cpu e la ram abbiamo una memoria intermedia chiamate cache memories che hanno una capacità inferiore a quella della ram ma hanno una tecnologia che li rende più veloci della ram (servono per mantenere dati di probabile utilizzo, cioè i dati più utilizzati). Se non si trova il dato nella cache si può ritrovare nella ram. La cache è una memoria che non ha bisogno di un refresh interno per mantenere i dati mentre la ram normalmente utilizza una tecnologia che ha bisogno di un refresh perché i valori che sono memorizzati rischiano di decadere nel tempo. La Random Access Memory – chiamato così perché è accessibile a qualsiasi locazione della Ram, consente di accedere come unità minima al byte). La ram può essere suddivisa in: o RAM fisica sono i cip di memoria che utilizziamo e abbiamo montati nel nostro computer o Memoria virtuale è una memoria aggiuntiva che può essere realizzata anche con delle memorie esterne e ha lo scopo di garantire porti a termine le attività che sta realizzando. Le memorie che non sono ram sono estremamente più lente. Queste sono aree temporanee di memorizzazione (si spengono con il computer), sotto queste abbiamo aree permanenti di memorizzazione (mantengono i dati memorizzati anche dopo lo spegnimento del computer): o ROM stanno a metà tra la Ram e un altro tipo di dispositivo. Dal punto di vista tecnologico sono memorie totalmente elettroniche e sono costruite come le Ram come tipo di performance ma sono permanenti (permettono che le informazioni si mantengano anche dopo lo spegnimento del computer). È molto complicato. Ha lo scopo di contenere il firmware (programma che mi permette di accendere il computer).

  • Devices di input e output - la CPU esegue una ad una le istruzioni affidatele dal programma utilizzando i dati che le sono stati forniti in ingresso (tramite la Tastiera, il mouse, il microfono, il disco fisso etc..) e che ora risiedono in memoria centrale. L’esecuzione dell'istruzione comporta la generazione di risultati (che vanno al monitor, verso i dispositivi audio, le memorie esterne etc.). Per esempio, quando scriviamo una lettera con un programma di videoscrittura possiamo controllare a Monitor il risultato di ciò che abbiamo scritto e, una volta che abbiamo terminato, archiviare definitivamente il risultato (la lettera in questo caso) in una memoria di massa - in un File - e poi se vogliamo anche inviarlo a una Stampante. Tutte le operazioni elementari eseguite dalla CPU, che sottintendono quelle di più alto livello appena citate, non riusciamo a percepirle perché operiamo nei confronti del computer mediante una serie di comandi che rendono trasparente sia l’architettura del computer stesso, sia le modalità di esecuzione dei programmi. Quando facciamo queste operazioni in realtà stiamo operando attraverso una serie di comandi di alto livello che rendono trasparente sia l’architettura del computer sia le modalità di esecuzione.