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 all'Architettura dei Computer: Memoria, Processore e Periferiche, Dispense di Elementi di Informatica

riassunto di tutte le conoscenze di base necessarie per svolgere l'esame di informatica, il testo tratta di: architettura elaboratori sistemi operativi database network programmi applicativi

Tipologia: Dispense

2021/2022

Caricato il 17/01/2022

ci0ppe
ci0ppe 🇮🇹

4.2

(10)

10 documenti

1 / 8

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA
Algoritmo: Una procedura per risolvere, in un numero finito di passi, un problema
Programma: Traduzione di un algoritmo in una serie di istruzioni eseguibili da un computer
Linguaggio di programmazione: Linguaggio che permette la formalizzazione di un algoritmo in un programma
Calcolatore (o elaboratore): macchina capace di effettuare trasformazioni sui dati (calcoli)
Il calcolatore programmabile è una macchina universale: cambiando il programma residente in memoria, è in grado di
risolvere
I calcolatori sono costruiti assemblando componenti elettronici elementari per memorizzare dati ed eseguire
programmi Informazioni inserite tramite sequenze di cifre 0, 1:
0: assenza di tensione elettrica
1: presenza di tensione elettrica
un bit (binary digit), che può avere valore 0 o 1, è la più piccola quantità di informazione che può essere riferita
un byte è una sequenza di 8 bit (256 valori) perché così ci si riesce ad avvicinare alla quantità di informazioni
necessarie per più o meno tutto, come i livelli di grigio per passare dal bianco al nero in un’immagine oppure i caratteri
di una lingua
la capacità dell’elaboratore di eseguire successioni di operazioni in
modo automatico è determinata dalla presenza di un dispositivo di
memoria contenente i dati le operazioni da eseguire su di essi (i
programmi)
Il programma viene interpretato da una unità di elaborazione centrale.
L’architettura di base del calcolatore è rimasta la stessa da anni, la sua
caratteristica fondamentale è che dati e programmi risiedono nella
memoria centrale. I suoi componenti sono:
BUS
L’architettura più consolidata per il calcolatore: prevede che la CPU, la memoria e le periferiche siano collegate
attraverso un unico canale di comunicazione, il bus
Il bus è fisicamente realizzato mediante un insieme di connettori elettrici
Una delle caratteristiche del Bus è il numero di bit che riesce a trasportare contemporaneamente (ampiezza)
In ogni transazione sul bus:
1. Un dispositivo prende il controllo del bus
2. Invia una richiesta ad un secondo dispositivo
3. Svolta la richiesta, il bus viene liberato per un’altra comunicazione
Il BUS può trasmettere solamente una comunicazione alla volta da un componente ad un altro, i componenti non
possono comunicare senza BUS e più di un componente non può dialogare contemporaneamente.
CPU
La CPU (Central Processing Unit) è in grado di eseguire dei programmi, cioè sequenze di istruzioni elementari
È costituita da:
ALU (unità aritmetico-logica)
È un circuito in grado di eseguire operazioni aritmetiche e logiche su 2 o più operandi, rappresentati su n bit (es.
32 o 64 bit); oltre al risultato dell’operazione può produrre informazioni ulteriori.
Il tipo di operazione selezionata, in un dato istante, dipende dallo stato della CU
Alcune delle operazioni possibili sono quelle: aritmetiche, logiche, di confronto
REGISTRI
I registri sono dispositivi di memorizzazione che consentono un accesso molto veloce ai dati che contengono;
hanno dimensioni prefissate (es. 32 o 64 bit). Nella maggior parte delle architetture, le operazioni della ALU si
possono effettuare solo fra dati presenti nei registri.
I registri generici hanno lo scopo di memorizzare gli operandi per le istruzioni della ALU ed il risultato.
Alcuni registri hanno funzioni specifiche:
Instruction Register (IR): contiene l’istruzione da eseguire
Program Counter (PC): contiene l’indirizzo della locazione di memoria dove è memorizzata la prossima
istruzione da eseguire
UNITÀ DI CONTROLLO
Preleva dalla memoria l’istruzione da eseguire (tale istruzione è determinata dal registro PC) e la salva nel
registro IR Decodifica l’istruzione e capisce cosa deve essere fatto: che tipo di circuito della ALU deve essere
attivato, dove reperire gli eventuali operandi, etc.
Attiva la ALU e gestisce il risultato
pf3
pf4
pf5
pf8

Anteprima parziale del testo

Scarica Introduzione all'Architettura dei Computer: Memoria, Processore e Periferiche e più Dispense in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA

Algoritmo: Una procedura per risolvere, in un numero finito di passi, un problema Programma: Traduzione di un algoritmo in una serie di istruzioni eseguibili da un computer Linguaggio di programmazione: Linguaggio che permette la formalizzazione di un algoritmo in un programma Calcolatore (o elaboratore): macchina capace di effettuare trasformazioni sui dati (calcoli) Il calcolatore programmabile è una macchina universale: cambiando il programma residente in memoria, è in grado di risolvere I calcolatori sono costruiti assemblando componenti elettronici elementari per memorizzare dati ed eseguire programmi Informazioni inserite tramite sequenze di cifre 0, 1: 0: assenza di tensione elettrica 1: presenza di tensione elettrica un bit (binary digit), che può avere valore 0 o 1, è la più piccola quantità di informazione che può essere riferita un byte è una sequenza di 8 bit (256 valori) perché così ci si riesce ad avvicinare alla quantità di informazioni necessarie per più o meno tutto, come i livelli di grigio per passare dal bianco al nero in un’immagine oppure i caratteri di una lingua la capacità dell’elaboratore di eseguire successioni di operazioni in modo automatico è determinata dalla presenza di un dispositivo di memoria contenente i dati le operazioni da eseguire su di essi (i programmi) Il programma viene interpretato da una unità di elaborazione centrale. L’architettura di base del calcolatore è rimasta la stessa da anni, la sua caratteristica fondamentale è che dati e programmi risiedono nella memoria centrale. I suoi componenti sono:

BUS

L’architettura più consolidata per il calcolatore: prevede che la CPU, la memoria e le periferiche siano collegate attraverso un unico canale di comunicazione, il bus Il bus è fisicamente realizzato mediante un insieme di connettori elettrici Una delle caratteristiche del Bus è il numero di bit che riesce a trasportare contemporaneamente (ampiezza) In ogni transazione sul bus:

  1. Un dispositivo prende il controllo del bus
  2. Invia una richiesta ad un secondo dispositivo
  3. Svolta la richiesta, il bus viene liberato per un’altra comunicazione Il BUS può trasmettere solamente una comunicazione alla volta da un componente ad un altro, i componenti non possono comunicare senza BUS e più di un componente non può dialogare contemporaneamente.

CPU

La CPU (Central Processing Unit) è in grado di eseguire dei programmi, cioè sequenze di istruzioni elementari È costituita da:  ALU (unità aritmetico-logica) È un circuito in grado di eseguire operazioni aritmetiche e logiche su 2 o più operandi, rappresentati su n bit (es. 32 o 64 bit); oltre al risultato dell’operazione può produrre informazioni ulteriori. Il tipo di operazione selezionata, in un dato istante, dipende dallo stato della CU Alcune delle operazioni possibili sono quelle: aritmetiche, logiche, di confronto  REGISTRI I registri sono dispositivi di memorizzazione che consentono un accesso molto veloce ai dati che contengono; hanno dimensioni prefissate (es. 32 o 64 bit). Nella maggior parte delle architetture, le operazioni della ALU si possono effettuare solo fra dati presenti nei registri. I registri generici hanno lo scopo di memorizzare gli operandi per le istruzioni della ALU ed il risultato. Alcuni registri hanno funzioni specifiche:  Instruction Register (IR): contiene l’istruzione da eseguire  Program Counter (PC): contiene l’indirizzo della locazione di memoria dove è memorizzata la prossima istruzione da eseguire  UNITÀ DI CONTROLLO Preleva dalla memoria l’istruzione da eseguire (tale istruzione è determinata dal registro PC) e la salva nel registro IR Decodifica l’istruzione e capisce cosa deve essere fatto: che tipo di circuito della ALU deve essere attivato, dove reperire gli eventuali operandi, etc. Attiva la ALU e gestisce il risultato

CLOCK

L’orologio di sistema (Clock) invia impulsi ad intervalli regolari predefiniti alle altre componenti del sistema e la CPU utilizza questi impulsi per sincronizzare le sue attività. La velocità del clock, ovvero il numero di impulsi al secondo inviati dal clock, si misura in Hz. Maggiore è la velocità di clock, maggiore e la velocità della CPU (attenzione! none l’unico fattore per determinare la velocità di tutto il calcolatore). Attualmente, il clock di una CPU di un PC `e sull’ordine dei gigahertz (GHz), miliardi di cicli al secondo CICLO FDE (Fetch, Decode, Execute) Il processore esegue le istruzioni di un programma una alla volta in sequenza: estrae le istruzioni dalla memoria, le interpreta e le esegue una dopo l’altra. Il processore esegue ogni istruzione mediante una sequenza ben definita di operazioni detta ciclo di accesso, decodifica, esecuzione: Fetch: Lettura del contenuto della cella di memoria il cui indirizzo è il valore del registro PC Copia di tale contenuto nel registro IR Incremento del valore di PC in modo che punti all’istruzione successiva Decode: Analizza il codice dell’istruzione: seleziona il corrispondente circuito della ALU, trova gli eventuali operandi dell’istruzione se l’istruzione è di salto, modifica il valore del registro PC Execute: Attiva i circuiti della ALU

Esercizio esempio di un ciclo FDE  Riportare nel maggior dettaglio possibile cosa succede quando viene eseguita la

seguente istruzione: “somma il contenuto dei registri R1 e R3 e memorizza il risultato nel registro R4”. Supponendo di avere nel registro PC l’indirizzo 26 (o 0x0001A in esadecimale) dell’istruzione descritta sopra e che la dimensione dell’istruzione sia 4 byte. Fase di reperimento dell’istruzione (fetch): Lettura del contenuto della cella di memoria numero 0x0001A e copia di tale contenuto nel registro IR Incremento del valore di PC: PC=0x0001A +4=0x0001E Fase di decodifica (Decode): Selezionare il circuito della somma della ALU e selezionare i registri R1 e R3 come input ed il registro R4 come output Fase di Esecuzione (Execute): Attivare il circuito somma della ALU

MEMORIA

Le memorie sono dispositivi per l’immagazzinamento delle informazioni, ogni memoria è costituita da celle a cui si accede tramite un indirizzo. Tipi di accesso:  Diretto: ogni record può essere acceduto senza dover leggere gli altri record partendo dalla posizione corrente (ci vuole del tempo per raggiungere un record passando sopra a quelli prima senza leggerli, non è immediato)  Sequenziale: leggere locazioni che non siano la successiva prevede di passare sopra tutti gli altri record, e necessita di un tempo proporzionale. Generalmente in un elaboratore vi sono tre tipi di memorie:  Registri: contengono informazioni necessarie alla elaborazione della singola istruzione  Memoria centrale: contiene dati e istruzioni attualmente elaborati dal processore  Memorie di massa: contengono dati e programmi che non sono oggetto di elaborazione immediata RAM La memoria centrale o memoria principale, detta anche RAM (Random Access Memory, ovvero memoria ad accesso casuale, perchè qualsiasi cella può essere letta/scritta in un tempo, mediamente, costante), è la memoria in linea con il processore, che contiene i dati e i programmi che sono attualmente utilizzati/in esecuzione Un programma, quando non è oggetto di elaborazione, è memorizzato su memoria di massa (dischi), quando deve essere eseguito, viene caricato tutto o in parte, in memoria centrale. La RAM può essere considerata come una sequenza di celle ciascuna cella ha la dimensione di un byte (8 bit), ciascuno di essi è individuato nella memoria da un indirizzo che lo distingue da tutti gli altri, costituito da un numero variabile da 0 a 2N-1, dove N è la dimensione in bit della parola (ovvero dei registri del processore). Le operazioni che si effettuano sulla memoria sono operazioni di lettura e scrittura : Entrambe presuppongono l’utilizzo di un indirizzo che identifica univocamente la cella interessata all’operazione L’operazione di scrittura è distruttiva, cioè cancella l’informazione precedentemente contenuta nella cella L’operazione di lettura preserva il contenuto della cella indirizzata, poiché all’esterno della memoria centrale viene trasferita copia dell’informazione Le caratteristiche fondamentali della memoria centrale sono:  accesso casuale (i.e. stesso tempo di accesso) ad ogni cella (indipendentemente dal suo indirizzo)  velocità elevata (circa 10-7^ o meno secondi per un accesso)  volatilità : quando il computer viene spento, i dati e i programmi presenti nella RAM vengono cancellati Un moderno personal computer ha in genere da 1 a 16 Gigabyte di memoria RAM (1GB = circa 1.000.000.000 byte)

La macchina hardware corrisponde alle componenti fisiche del calcolatore (quelle viste nella lezione precedente), mentre un sistema operativo è un programma che funge da interfaccia tra l’utente (e/o i programmi applicativi) e l’hardware del calcolatore. Il software può essere suddiviso in due grandi classi:  programmi applicativi , che risolvono i problemi degli utenti: editor di testi, browser, visualizzatore di immagini...  programmi di sistema , che controllano e coordinano l’utilizzo delle risorse hardware da parte dei programmi applicativi dell’utente. L’insieme dei programmi di sistema forma il sistema operativo (SO) Esistono vari tipi di sistemi operativi: Unix, DOS, Windows, Mac OS, Linux, Android. Elementi principali di un SO:  Shell (guscio), l’interfaccia tra SO e utente (quello che vedi quando accendi il computer): è il programma che permette agli utenti di comunicare con il sistema e di avviare programmi applicativi. La shell può essere grafica (Windows, Mac OS, Linux, Android) oppure testuale (DOS ma anche Linux)  Kernel (nucleo), l’insieme di programmi che realizzano le funzioni di base di un calcolatore: gestione della memoria principale, gestione di più programmi in esecuzione contemporaneamente, gestione della memoria di massa... GESTIONE DELLA MEMORIA SECONDARIA Poiché la memoria principale è volatile e troppo piccola per contenere tutti i dati e tutti i programmi in modo permanente, il computer è dotato di memoria secondaria (hard disk). Il SO garantisce una visione logica uniforme del processo di memorizzazione:  Nasconde le caratteristiche fisiche della memoria di massa.  Fornisce all’utente e a programmi applicativi un modello astratto secondo il quale i dati sono organizzati (cartelle): il File System  I componenti base del modello sono i file e le cartelle  un file è una sequenza di byte che contiene informazioni tipicamente “omogenee”, ad esempio un programma, un testo, un’immagine, una canzone. Per ogni file però vengono anche memorizzate ulteriori informazioni come: il nome, la data di creazione e l’ultima modifica, dimensione….  una cartella (directory) è un contenitore di file (e cartelle) FILE SYSTEM Il file è l’astrazione informatica di un archivio di dati, il concetto di file è indipendente dal mezzo sul quale viene memorizzato (che ha caratteristiche proprie e una propria organizzazione fisica). Un file system è composto da un insieme di file Il SO è responsabile delle seguenti attività riguardanti la gestione del file system:  Creazione e cancellazione di file  Creazione e cancellazione di directory  Manipolazione di file e directory  Codifica del file system sulla memoria secondaria Quasi tutti i SO utilizzano un’ organizzazione gerarchica del file system ad albero (o a grafo in alcuni casi).  Nella figura i nodi rettangolari rappresentano le cartelle mentre i nodi circolari i file  Un file è identificato dal percorso dalla radice dell’albero: il percorso del file “hi” è “/principale/A/hi”  Possono esistere file con lo stesso nome se sono in cartelle diverse (ad esempio i file “e”)  È possibile navigare all’interno del file system percorrendo gli archi in un qualsiasi verso. Ad esempio, se mi trovo nella cartella “A” e sto utilizzando una shell grafica, cliccando su “b” mi sposto nella cartella “b” Per riferirmi ad un file posso indicare: il percorso dalla radice dell’albero ( percorso assoluto ) il percorso a partire dalla mia posizione corrente ( percorso relativo ) Ad esempio, se mi trovo nella cartella “A” posso riferirmi a “d” semplicemente come “b/d” Nel SO Linux la radice, ed il carattere per separare le cartelle, sono indicati con / Il S O Windows utilizza una rappresentazione ad albero per ogni memoria di massa: La radice di ciascun albero è indicata con una lettera seguita da due punti e , ad esempio C:\oppure D:
Il carattere per separare le cartelle è \ il percorso assoluto del file “hi” `e “C:\principale\A\hi”

I primi SO erano tutti monotasking, cioè erano in grado di gestire l’esecuzione di solamente un programma per volta, mentre tutti i moderni SO sono multitasking, grazie all’utilizzo del gestore di processi GESTORE DI PROCESSI Con questo un SO consente il caricamento in memoria e l’esecuzione di più programmi che si alternano nell’uso della CPU. Per far ciò un programma dev’essere eseguito, sospeso e fatto ripartire più volte in poco tempo ed è quindi necessario memorizzare sia il programma che lo stato di esecuzione, cioè l’insieme delle informazioni che sono necessarie per far ripartire il programma dal punto esatto in cui è stato sospeso. In poche parole, il gestore dei processi “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione un’unità di elaborazione dedicata: se sto eseguendo 3 programmi contemporaneamente, il gestore ci fa credere di avere 3 CPU. Per farlo “divide” la memoria in parti e assegna a ciascun programma un pezzo di memoria, quando questi non ci stanno più li sposta sul disco ed è per questo che se si aprono troppi programmi contemporaneamente diventano lenti (vedi gestore della memoria). Il SO è responsabile, tra le altre cose, delle seguenti attività riguardanti la gestione dei processi:  creazione e terminazione dei processi  sospensione e riattivazione dei processi  comunicazione tra processi Esistono varie politiche per decidere quando e per quanto tempo assegnare la (le) CPU ad un processo: nei sistemi time-sharing ad ogni processo è assegnata la stessa quantità di tempo. Nel grafico i rettangoli neri indicano il tempo che la CPU ha dedicato ai 3 processi A, B, C. Lo spazio tra le linee tratteggiate indica il tempo impiegato per la sospensione del processo in esecuzione ed il ripristino del successivo. il gestore dei processi deve:  assicurare che ogni processo non debba aspettare eccessivamente per ottenere la CPU (altrimenti l’utente si spazientisce!); in altri termini il tempo tra la sospensione e il ripristino di un processo non deve essere troppo lungo (nella figura, B viene sospeso all’istante 5 e riavviato all’istante 18 ( unità di tempo di attesa).  massimizzare il tempo in cui la CPU esegue programmi e minimizzare il tempo speso a sospendere e ripristinare processi (la CPU deve eseguire programmi, non perdere tempo a fare altro!); in altri termini vogliamo mantenere piccolo la somma dei tempi tra le linee verticali tratteggiate (nell’esempio tale somma è 4 nei primi 25 istanti) GESTORE DELLA MEMORIA Il gestore della memoria si occupa di:  Tenere traccia di quali parti della memoria sono usate e da chi  Allocare e deallocare lo spazio di memoria quando necessario  Decidere quali processi caricare quando diventa disponibile spazio in memoria Il gestore della memoria “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione una memoria dedicata: MEMORIA VIRTUALE. Nei SO multi−tasking, più programmi possono essere caricati contemporaneamente in memoria, spesso però la memoria non è sufficiente per contenere completamente tutto il codice dei processi. Il gestore della memoria ci permette di barare realizzando una memoria “virtuale” molto più grande di quella fisica: Teniamo, per ogni programma, solo un sottoinsieme dei suoi dati e delle sue istruzioni. Il resto le parcheggiamo nella memoria di massa (tecnicamente nella cosiddetta area di swap) Quando la CPU richiede un’istruzione (o un dato) non in memoria, questa viene recuperata in fretta dalla memoria di massa, carica in memoria principale, e poi inviata alla CPU.

DATABASE

Le reti possono essere classificate in diversi modi:  estensione geografica

  • Local area network (LAN o rete locale): collega nodi dello stesso edificio
  • Metropolitan area (MAN o rete metropolitana): nodi a decine di chilometri
  • Wide area network (WAN, o rete geografica): nodi a distanza qualsiasi, anche planetaria  Proprietà
  • Pubblico dominio (open)
  • Proprietaria (closed)  Topologia (configurazione)
  • Bus (Ethernet)
  • Star (Wireless networks with central Access Point) Nelle reti vengono trasmessi pacchetti, relativamente piccoli e veloci da trasmettere, nelle reti a BUS è sempre possibile ascoltare il canale di comunicazione ed è presente un algoritmo di gestione delle collisioni fa parte dello standard della rete e viene implementato in modo identico in tutti i device connessi. Questo nella rete STAR è simile ma non è possibile ascoltare il canale mentre si trasmette, il nodo centrale trasmette un pacchetto di ACK (segnale di avvenuta ricezione) se ha ricevuto il pacchetto. PROTOCOLLI PER LA GESTIONE DELLE COLLISIONI Esistono due protocolli per la gestione delle collisioni, uno è il Carrier Sense Multiple Access with Collision Detection (CSMA/CD) , ovvero accesso multiplo tramite rilevamento della portante con rilevamento delle collisioni. Utilizzato in Ethernet e il bus è inattivo (silenzioso), cioè fornisce il diritto di introdurre un nuovo messaggio a tutti. Procedura principale:
  1. Il mio frame è pronto per essere trasmesso? Se sì, continua.
  2. Il canale è libero? Se no, attendi finché non lo diventa.
  3. Inizia a trasmettere e monitora il canale per collisioni durante la trasmissione.
  4. Sono avvenute collisioni? Se sì, vai alla procedura di Collisione Rilevata.
  5. Resetta il contatore di ritrasmissioni e termina la trasmissione. Procedura di Collisione rilevata:
  6. Trasmetti un segnale di collisione.
  7. Incrementa il contatore di ritrasmissioni.
  8. È stato raggiunto il massimo numero di ritrasmissioni? Se sì, abortisci la trasmissione.
  9. Attendi un tempo casuale basato sul numero di collisioni.
  10. Torna alla procedura principale al punto 1. L’altro protocollo è il Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA): Usato in WiFi, ha il problema del terminale nascosto. La procedura generale è la seguente e si divide principalmente in 3 fasi:
  11. Carrier Sense: prima di trasmettere, un nodo ascolta il canale di comunicazione (e.g. ascolta se ci sono segnali wireless) per capire se un altro nodo sta trasmettendo o no. (Terminale nascosto)
  12. Collision Avoidance: se un altro nodo è stato sentito, attendi per un periodo di tempo casuale e torna al punto 1.
  13. Transmission: se il canale di comunicazione è (o sembra) libero, manda il frame. INTERCONNESSIONE TRA RETI Repeater: estende una rete ripetendo il segnale Bridge: connette due reti compatibili Switch: connette più reti compatibili Router: connette due reti incompatibili in modo da ottenere una rete di reti, che costituisce una rete internet INTERNET ” rete delle reti”, cioè un insieme di reti di computer sparse in tutto il mondo e collegate tra loro, a cui possono accedere migliaia di utenti per scambiare tra loro informazioni di vario tipo. Formalmente è un insieme di reti in grado di comunicare utilizzando la suite di protocolli Internet

PROGRAMMI APPLICATIVI

La macchina hardware permette l’esecuzione di programmi applicativi, che interagiscono con le risorse della macchina hardware (CPU, memoria primaria e secondaria, dispositivi di I/O) tramite il sistema operativo. I programmi applicativi:  risolvono i problemi degli utenti: fogli di calcolo, editori di testi, browser, visualizzatore di immagini e/o video…  sono tipicamente realizzati/definiti tramite un linguaggio di programmazione ad alto livello (C++, Java, Python …)  implementano uno o più algoritmi ALGORITMO Insieme ordinato (e finito) di passi eseguibili e non ambigui (per risolvere un problema) che giunge (certamente) a terminazione insieme ordinato di passi  non necessariamente sequenza: possono essere disponibili più esecutori passi eseguibili  da un esecutore in grado di compiere azioni fattive (e finite) e non ambigui  l’esecutore deve essere in grado di associare univocamente un passo ad una (o più) azioni che giunge a terminazione  in modo da trovare una soluzione ad un problema di interesse, anche se la natura di alcuni problemi potrebbe non necessariamente richiedere la terminazione (funzionamento del SO o la videosorveglianza). per evitare incomprensioni di comunicazione di algoritmi fra umani/esecutori bisogna fissare una convenzione per rappresentarli, cioè un linguaggio (di programmazione). PSEUDOCODICE Una notazione (linguaggio) meno formale per la rappresentazione di algoritmi è costituito dallo pseudocodice, non costituisce un vero e proprio linguaggio formale ma è utile quando si vogliono esprimere le componenti astratte di un algoritmo. Aiuta nel processo di sviluppo di un algoritmo (senza preoccuparsi del linguaggio di programmazione che poi sarà utilizzato) Adotta primitive, comuni a molti linguaggi strutturati di programmazione, che si possono raggruppare nelle seguenti classi principali:  assegnamento : istruzione che assegna il risultato di un calcolo ad una variabile, che rappresenta un identificativo astratto di una locazione (o insieme di locazioni) in memoria  sequenza : struttura di controllo che permette di eseguire le istruzioni secondo l’ordine in cui sono state scritte  selezione : struttura di controllo che permette di scegliere l’esecuzione di un blocco di istruzioni tra due possibili in base a una condizione  iterazione : struttura di controllo che permette di ripetere l’esecuzione di un blocco di istruzioni in base al valore di una condizione  procedura : struttura che permette di riutilizzare una unità di programma (procedura)