NB. In questo documento non ho preso in considerazione i ppt 1 e 9 perché sono più discorsivi.
Per quanto
riguarda il ppt 8 consiglio comunque di dare sempre un’occhiata alle slide perché qui ho riportato solo i
comandi più importanti. Inoltre non ho riportato i calcoli di conversione da binario a decimale e viceversa
perché è meglio attenersi alle spiegazioni del professore.
2 Architettura di un calcolatore
L’architettura di Von Neumann è un modello (teorico) semplificato dei calcolatori moderni. John Von
Neumann, matematico ungherese, progettò verso il 1945 il primo calcolatore con programmi memorizzabili.
La sua architettura è il riferimento per la quasi totalità dei calcolatori costruiti da allora fino a oggi. La
risoluzione dei problemi complessi avviene attraverso la risoluzione di tanti piccoli problemi più semplici (o
operazioni elementari). Il modello di Von Neumann consente non solo di elaborare e risolvere problemi
matematici ma anche di elaborare le informazioni. Permette di rappresentare, memorizzare ed elaborare
informazioni.
Consta di QUATTRO SOTTOSISTEMI
SOTTOSISTEMA DI INTERFACCIA – SOTTOSISTEMA DI MEMORIZZAZIONE – SOTTOSISTEMA DI
ELABORAZIONE
SOTTOSISTEMA DI CONNESSIONE/COMUNICAZIONE
Per trasferire informazioni dai sottosistemi superiori è necessario passare attraverso il sottosistema di
connessione/comunicazione che è come un’autostrada che collega i tre sottosistemi non direttamente
collegati tra di loro. Obbiettivo: realizzazione di un calcolatore universale (general purpose).
• Presenza di un dispositivo di memorizzazione in cui è possibile rappresentare sia dati che istruzioni;
• Utilizzo dell’aritmetica binaria invece di quella decimale;
• Separazione netta tra dispositivo di memorizzazione e dispositivo di elaborazione;
• Proceduralità: possibilità di eseguire differenti programmi memorizzati. Programma: sequenza di
istruzioni da eseguire per ottenere la soluzione a una data classe di problemi;
• Sequenzialità: istruzioni eseguite in modo strettamente sequenziale.
COMPONENTI DELL’ARCHITETTURA DI VON NEUMANN
• MEMORIA CENTRALE
• CPU (CENTRAL PROCESSING UNIT)
• BUS
• INTERFACCIA (INPUT/OUTPUT)
I quattro sottosistemi assumono terminologie specifiche. Il sottosistema di connessione/comunicazione si
identifica con il bus. Il sottosistema di memorizzazione si identifica con la memoria centrale. Il sottosistema
di interfaccia si identifica con l’interfaccia (I/O) e il sottosistema di elaborazione si identifica con la CPU. Tutto
ciò che non fa parte dell’architettura di Von Neumann prende il nome di periferica. Sono periferiche il mouse,
lo schermo, la tastiera e la memoria di massa (o memoria secondaria). Fanno parte della memoria secondaria
anche l’hard disk (anche se è interno al computer), le pendrive ecc. e sono memorie persistenti.
L’interfaccia (I/O) serve a collegare il computer al mondo esterno. Le interfacce di collegamento verso le
periferiche (ad esempio le porte USB) sono parte dell’architettura di Von Neumann, mentre le periferiche no.
Il Bus trasporta dati e informazioni. Tutti i trasferimenti avvengono attraverso il bus.
1
La Memoria centrale è la memoria più importante senza la quale il computer non può funzionare. È una
memoria volatile anche se una parte di essa è permanente perché contiene il programma di avvio del
computer.
La CPU calcola ed elabora.
IL COMPUTER È UN CALCOLATORE/ELABORATORE ELETTRONICO DIGITALE. Digitale perché utilizza un
codice binario i cui unici valori sono 0 e 1.
Von Neumann ha preferito non mettere in collegamento diretto i primi tre sottosistemi ma ha previsto
l’esistenza del Bus perché in questo modo il calcolatore grazie al principio di modularità è fornito di maggiore
flessibilità. Quindi per potenziarlo non è necessario sostituire tutte le sue componenti. Ad esempio la
memoria è espandibile indipendentemente dagli altri componenti dell’architettura di Von Neumann. Il Bus
quindi permette lo scambio di dati e informazioni tra le varie componenti funzionali del
calcolatore/elaboratore.
Le operazioni di succedono in modo SINCRONO, rispetto alla cadenza imposta da un orologio di sistema
(clock). Il clock scandisce i momenti in cui si può accedere al bus. Il Bus è come un’autostrada a tre corsie.
Ogni corsia ha una sua funzione particolare. Abbiamo il bus dati, che contiene le informazioni e i dati che
vengono prelevati dalla memoria centrale per essere elaborati; il bus indirizzi è la corsia che contiene
l’indirizzo delle celle e il bus controllo, su cui viaggiano le informazioni di controllo che stabiliscono quando
si può accedere al bus.
La MEMORIA CENTRALE contiene dati e programmi attualmente utilizzati o in esecuzione. I programmi che
non sono in esecuzione si trovano nella MEMORIA SECONDARIA (hard disk). Quando si mette in funzione un
programma questo viene copiato dalla memoria secondaria e, passando attraverso l’interfaccia (I/O),
attraversa il bus e arriva nella memoria centrale per entrare in esecuzione. La MEMORIA CENTRALE ha un
accesso diretto alle informazioni, ha una velocità elevata ed è una memoria volatile in quanto si resetta
quando il computer viene spento. La memoria deve essere vista come una grande libreria in cui al posto dei
libri ci sono le celle. Ogni cella può contenere soltanto il valore 0 o il valore 1. Ciascuna cella nella memoria è
individuata da un indirizzo (bus indirizzi).
La MEMORIA CENTRALE è anche detta RAM (RANDOM ACCESS MEMORY) o memoria ad accesso casuale
perché qualsiasi cella può essere letta/scritta in un tempo mediamente costante.
L’elaborazione nella macchina di Von Neumann è svolta dalla Central Processing Unit (CPU), o unità centrale
di elaborazione, detta anche processore. Nel computer l’elaborazione e i calcoli sostanzialmente coincidono.
Le istruzioni di un programma corrispondono a operazioni elementari come: operazioni aritmetiche,
operazioni relazionali (confronto tra dati), operazioni su caratteri e valori di verità, altre operazioni
numeriche. La CPU esegue le istruzioni dei programmi e ne regola il flusso; esegue i calcoli.
Le memorie sono dispositivi per lo stoccaggio delle informazioni. Abbiamo la memorizzazione di un valore
attraverso la scrittura e l’accesso al valore memorizzato attraverso la lettura.
Le memorie sono di tre tipi:
• Memoria Centrale che contiene dati e istruzioni attualmente elaborate dal processore
• Memoria Secondaria contiene dati e programmi che non sono oggetto di elaborazione immediata
• Registri
I registri si trovano nella CPU e contengono informazioni necessarie all’elaborazione della singola istruzione.
I registri aiutano la CPU a effettuare calcoli conservando i risultati intermedi senza dover usare
continuamente il bus per il trasporto dei dati durante l’esecuzione delle singole istruzioni.
CARATTERISTICHE DI UNA MEMORIA
2
I parametri fondamentali che caratterizzano una memoria sono:
• Modalità di accesso;
• Permanenza o volatilità dei dati;
• Capacità (quantità di dati che possono essere memorizzati);
• Velocità (indica la velocità necessaria per accedere ad una locazione di memoria, cella, durante
un’operazione di lettura o scrittura).
Modalità di Accesso alle Memorie
• Accesso sequenziale (prima di leggere una cella è necessario leggere tutte quelle che la precedono)
• Accesso diretto – memoria centrale – dato l’indirizzo di una cella, essa può essere acceduta in modo
immediato.
• Accesso misto è diverso dai due precedenti
Ad esempio il disco magnetico ha una modalità di accesso misto. È sequenziale perché la testina deve seguire
la sequenza delle tracce, poi bisogna aspettare il momento in cui il blocco si trova sotto la testina.
Gerarchie della Memoria
Registri della CPU (memorie volatili – velocità di accesso alta – capacità bassa)
Cache di primo, secondo e terzo livello (memoria volatile)
Memoria Centrale (memoria volatile con una parte persistente per consentire il funzionamento del
programma di avvio del computer – RAM)
Dischi interni (memorie fisse es. hard disk – memorie secondarie o di massa persistenti – velocità di accesso
bassa – Capacità alta) – esterne alla macchina di Von Neumann.
Dischi esterni (memorie rimovibili es. pendrive USB – memorie secondarie persistenti – velocità di accesso
bassa – Capacità alta) – esterne alla macchina di Von Neumann.
→ In genere, gli elaboratori hanno anche una o più zone di memoria sulle quali non è possibile scrivere: ROM
read only memory o memoria di sola lettura. La ROM è progettata dal costruttore ed è inscrivibile perché
protegge i programmi necessari per il funzionamento del computer. Il contenuto della ROM è persistente. La
ROM ha alcune caratteristiche dell’hardware e altre del software.
Il termine hardware indica la struttura fisica dei dispositivi (Livello Fisico), mentre il software è l’insieme delle
istruzioni che consentono all’hardware di svolgere i propri compiti (Livello Logico).
***
3 CPU e Linguaggio Macchina
L’UNITA’ DI ELABORAZIONE (CPU)
Central Processing Unit o processore esegue i programmi contenuti nella MEMORIA CENTRALE prelevando,
decodificando ed eseguendo una dopo l’altra le istruzioni che li costituiscono. Contiene gli elementi circuitali
che regolano il funzionamento dell’elaboratore:
• Orologio di sistema (clock) la frequenza del clock determina la velocità di elaborazione del computer
• Unità aritmetico-logica (ALU) serve a effettuare i calcoli
3
• Registri (R) piccole memorie volatili che conservano i risultati intermedi
• Unità di controllo (CU) coordina tutte le operazioni
Nei computer tutte le operazioni avvengono in modalità sincrona. La CPU è un dispositivo sincrono.
Attraverso le onde elettromagnetiche, ad esempio, una CPU che lavora 3 GHz riceve 3 miliardi di impulsi al
secondo.
La velocità e la potenza di un computer dipendono non solo dalla frequenza del clock, ma anche dalla
larghezza del bus.
La ALU esegue operazioni aritmetiche e logiche. Può fare solo addizioni e sottrazioni e non moltiplicazioni e
divisioni, quindi per fare 2x3 l’ALU fa 2+2+2. Può fare operazioni solo su un MASSIMO di due operandi alla
volta. Quando si devono fare operazioni come trovare l’opposto di un numero ad esempio 5 il cui opposto è
-5 usa un solo operando. L’ALU ha tre ingressi: ALU operation (codice operativo), operando a e operando b.
inoltre ha due uscite: Result che dà il risultato del calcolo e Status che ha sempre valore 0 quando non c’è
errore, mentre ha valore 1 in presenza di errore (o quando il risultato è fuori scala). Quindi l’ALU può dare un
solo risultato alla volta; in caso di un’operazione come 2+2+2, trova prima il risultato parziale di 4 che viene
memorizzato nei registri, dopodiché effettua l’operazione 4+2.
Domanda d’esame: su quanti operandi può operare l’ALU? Massimo DUE (a, b).
I Registri sono piccoli spazi di memoria all’interno della CPU in cui vengono memorizzati temporaneamente
dati e istruzioni durante l’elaborazione. Consentono un accesso molto veloce ai dati contenuti. Alcuni registri
hanno funzioni specifiche. Il registro Dati (DR) contiene i dati da elaborare. Il registro PC (Programm Counter)
individua tramite indirizzo la prossima istruzione da eseguire, ad esempio per la somma di 2+2+2, una volta
ottenuto 4 individua che la prossima istruzione da eseguire è 4+2. Tuttavia, non individua direttamente
l’istruzione ma l’indirizzo di quell’istruzione. Il registro IR (Instruction Register) contiene l’istruzione da
eseguire (2+2). I Registri di Stato o flag contengono eventuali anomalie verificatesi durante l’elaborazione
(conserva il valore dello Status).
I vari elementi della CPU possono sia ricevere che trasmettere dati, il flusso è bidirezionale.
La CU (Control Unit) dirige il flusso di dati e istruzioni all’interno del computer. Decodifica le istruzioni e
coordina l’attività dei vari componenti per questo è collegata sia all’ALU che ai Registri. Ogni componente del
calcolatore esegue solo le azioni che gli vengono richieste dall’unità di controllo. Il controllo consiste nel
coordinamento dell’esecuzione temporale delle operazioni.
ISTRUZIONI DI BASE ESEGUITE DALL’ALU
• Somma (da cui sottrazione)
• Scorrimento (shift) è un’operazione in cui si spostano i decimali es. 2,0 → 20,0
• Operazioni logiche (AND or NOT)
• Operazioni di confronto (es. 3>2?)
Attraverso le operazioni di somma e scorrimento riusciamo a fare operazioni di moltiplicazione e divisione.
Una parte della MEMORIA CENTRALE è dedicata ai dati, una agli indirizzi e un’altra alle istruzioni.
La prima parte delle istruzioni dice qual è il codice operativo (ALU operation), la seconda parte dice dove
prendere gli operandi. Ricordiamo che il codice operativo o ALU operation è una parte dell’istruzione che
specifica qual è l’operazione da svolgere (ad esempio somma), mentre gli operandi sono gli elementi su cui
operare (ad esempio gli addendi in caso di somma). Dati e istruzioni di un programma sono codificati in forma
binaria, cioè mediante sequenze finite di bit.
LINGUAGGIO MACCHINA
4
Il linguaggio macchina è l’insieme delle istruzioni eseguite direttamente dalla CPU. Ogni istruzione svolge un
compito specifico. Le istruzioni sono piuttosto rudimentali e codificate in binario. Infatti il numero degli
operandi è di un massimo di due, il numero delle operazioni previste è ridotto e ogni processore è in grado
di eseguire un numero limitato di istruzioni.
Per facilitare la programmazione è stato definito il linguaggio Assembly. Il programma scritto in Assembly
viene convertito automaticamente in linguaggio macchina (quindi in codice binario) per mezzo di un
traduttore che si chiama ASSEMBLER.
Eseguire un programma significa svolgere in sequenza una serie di azioni. Queste operazioni avvengono
attraverso un meccanismo che si chiama CICLO MACCHINA (ciclo appunto perché è una sequenza di
operazioni). Il ciclo della CPU prevede 1. L’estrazione dell’istruzione 2. L’interpretazione dell’istruzione 3.
L’esecuzione dell’istruzione. L’istruzione si prende dalla MEMORIA CENTRALE. La fase di estrazione è detta
FETCH, la fase di interpretazione è detta DECODE, la fase di esecuzione è detta EXECUTE.
La CPU esegue solo istruzioni codificate in linguaggio macchina, mediante il CICLO MACCHINA FETCH-
DECODE-EXECUTE.
1. **Fetch** (Prelievo):
- La CPU preleva l'istruzione dalla memoria e la memorizza nell'Instruction Register (IR).
2. **Decode** (Decodifica):
- L'unità di controllo (CU) della CPU decodifica l'istruzione per determinare quale operazione deve essere
eseguita e dà al registro PC l’impulso affinché venga incrementato con l’indirizzo dell’istruzione successiva.
3. **Execute** (Esecuzione):
- La CPU esegue l'istruzione utilizzando l'unità aritmetico-logica (ALU) e memorizza il risultato.
Da ricordare che il trasferimento di istruzioni e dati tra la MEMORIA CENTRALE e la CPU avviene attraverso
il BUS.
***
4 Linguaggi, Codifica e Rappresentazione dell’Informazione
Il computer è lo strumento che ci consente di gestire in maniera automatica le informazioni. La finalità è
quella di risolvere problemi basati su informazioni e dati. Quindi abbiamo bisogno di codificare e
memorizzare opportunamente dati e informazioni e di impartire le giuste istruzioni per risolvere
correttamente i problemi.
Anche il linguaggio del computer è costituito da un alfabeto, un vocabolario, una grammatica e una
semantica. La funzione dei linguaggi è quella di rappresentare le informazioni, memorizzarle (scrittura),
trasferirle (comunicazione) e elaborarle (deduzioni nella logica).
Il linguaggio con cui parliamo al computer deve essere molto formale e non deve dare adito ad ambiguità.
Per questo motivo parliamo di codifica, perché deve trattarsi di un linguaggio rigido che non può essere
soggetto a varie interpretazioni. Per questo non possono essere utilizzati i linguaggi naturali per comunicare
con i computer.
Nei computer ogni elemento (numeri, testo, audio, video, istruzioni ecc.) viene rappresentato (codificato)
esclusivamente con sequenze di bit. Un bit (contrazione di binary digit) può assumere uno dei due valori: 0
oppure 1.
5
Con 1 bit posso quindi rappresentare 2 stati. Ad esempio ON/OFF di un interruttore, dove ON può essere
rappresentato dal valore 1 e OFF dal valore 0. 2¹ = 2
Con 2 bit posso rappresentare 4 stati; 2² = 4
Con 3 bit posso rappresentare 8 stati; 2ᶟ = 8
Con 4 bit posso rappresentare 16 stati; 2⁴ = 16
Con 5 bit posso rappresentare 32 stati; 2⁵ = 32
Con 6 bit posso rappresentare 64 stati; 2⁶ = 64
Con 7 bit posso rappresentare 128 stati; 2⁷ = 128
Con 8 bit posso rappresentare 256 stati; 2⁸ = 256
Con 9 bit posso rappresentare 512 stati; 2⁹ = 512
Con 10 bit posso rappresentare 1024 stati; 2¹° = 1024
Quindi per rappresentare i giorni della settimana ho bisogno di 3 bit. Con la combinazione di 0 e 1 di tre bit
posso rappresentare 8 stati diversi. Ad esempio lunedì 000, martedì 001, mercoledì 010, giovedì 011, venerdì
100, sabato 101, domenica 110. Avanza 111.
È stato creato un codice standard per la codifica dei caratteri. Ad esempio la lettera a corrisponde sempre a
0100 0001. Questo codice si chiama ASCII (American Standard Code for Information Interchange). Il codice
ASCII assegna un numero univoco a caratteri, come numeri, lettere e simboli. Ogni carattere è associato a 8
bit come possiamo vedere nel caso della a. con le combinazioni di 8 bit possiamo codificare fino a 256
caratteri. 8 bit formano un byte. Quindi se abbiamo la scritta DOMANI PIOVE (sono 11 lettere più lo spazio –
anche lo spazio è codificato – quindi 12 caratteri) moltiplicando 8 bit x 12 abbiamo 96 bit (che corrispondono
a 12 byte).
NB VEDERE SULLE SLIDE I SISTEMI DI CONVERSIONE DA BINARIO A DECIMALE E VICEVERSA
5 Problemi, Soluzioni e Algoritmi
Per risolvere un problema prima di tutto è necessario creare un modello specifico di semplificazione che
rappresenta la realtà. Nel caso del computer il modello è sempre matematico. Il secondo passo è scegliere la
rappresentazione dei dati ovvero conoscere nel dettaglio i dati. Il terzo passo è individuare un procedimento
adeguato per la risoluzione del problema (algoritmo che nei computer diventa programma). Infine,
scomporre eventualmente il procedimento in sotto-procedimenti, scomporre il problema in tanti piccoli
problemi più semplici se è troppo complesso.
Per essere qualificata come algoritmo, una sequenza di istruzioni deve avere le seguenti caratteristiche:
• Ciascuna istruzione deve essere precisa e non ambigua
• Ciascuna istruzione dovrebbe essere tale da essere eseguita in un tempo finito
• Una o più istruzioni non dovrebbero essere ripetute all’infinito, assicurando quindi che l’algoritmo
alla fine termini
• Dopo aver eseguito le istruzioni, cioè dopo che l’algoritmo è terminato, i risultati desiderati devono
essere ottenuti
6
Anche una ricetta può essere considerata un algoritmo perché è una sequenza di istruzioni che portano alla
realizzazione di un piatto. La procedura deve essere ben definita e le istruzioni devono essere eseguite nel
giusto ordine. L’ordine delle istruzioni è essenziale per la corretta risoluzione del problema. L’algoritmo è
una sequenza di istruzioni che consentono di risolvere un problema.
Un algoritmo presuppone la presenza di qualcuno (o qualcosa) in grado di eseguirlo, chiamato esecutore. In
informatica l’esecutore è il calcolatore (computer). Per essere eseguito l’algoritmo deve essere formulato in
un linguaggio comprensibile dall’esecutore a patto che questo venga tradotto in un linguaggio comprensibile
per il computer.
L’algoritmo deve
• Prevedere soltanto istruzioni che richiedono all’esecutore di effettuare operazioni elementari
• Essere formulato in un linguaggio non ambiguo
• Specificare senza ambiguità l’ordine di esecuzione delle istruzioni, cui l’esecutore deve attenersi
scrupolosamente.
Se le istruzioni sono semplici, chiare, non ambigue, con ordine di esecuzione preciso, l’esecuzione può
avvenire anche in modo automatico.
L’algoritmo può essere deterministico o probabilistico. L’algoritmo è deterministico quando dato un
particolare input produce sempre lo stesso output. In questo caso, l’algoritmo segue un percorso unico, pre-
determinato. Se si eseguono più volte le stesse istruzioni con gli stessi dati di ingresso, si otterranno sempre
gli stessi risultati. Ad esempio, 10>7 deve dare sempre lo stesso risultato. L’algoritmo probabilistico si ha
quando il suo risultato dipende non solo dai dati di input, ma anche da valori casuali generati durante
l’esecuzione. Quindi con lo stesso algoritmo e gli stessi dati di input si possono avere risultati diversi. Ad
esempio il lancio dei dadi non produce sempre lo stesso risultato, ma è una questione di probabilità. Noi ci
occuperemo solo di algoritmi deterministici.
Due caratteristiche fondamentali dell’algoritmo devono essere l’efficacia e l’efficienza. L’efficacia equivale a
risolvere il problema tramite la combinazione di istruzioni di base. L’efficienza equivale a risolvere il problema
impiegando la minor quantità possibile di risorse fisiche.
Un algoritmo può essere espresso in varie forme: linguaggi umani, pseudo-codici (testuale), linguaggi grafici
(diagrammi di flusso), linguaggi di programmazione ecc.
Pseudocodici: le istruzioni di un algoritmo sono descritte mediante un normale linguaggio naturale (umano)
utilizzando però una struttura che assomiglia alle istruzioni eseguite da un calcolatore, infatti pseudo significa
imitazione. Poiché uno pseudocodice è tipicamente usato nella progettazione di un programma, esso è anche
chiamato Program Design Language (PDL). Quindi assomiglia ad un linguaggio di programmazione ma è un
codice perché è una traduzione rigida che non ammette ambiguità. Lo pseudocodice può essere scritto in
Camel Case (l’esecutore è umano). La modalità di scrittura Camel Case è una convenzione usata
principalmente in programmazione per scrivere parole composte o frasi senza spazi, dove ogni parola inizia
con una lettera maiuscola, eccetto la prima parola che rimane in minuscolo.
Es. INIZIO ALGORITMO preparareUnaTazzaDiTè – seguono le istruzioni – FINE ALGORITMO
preparareUnaTazzaDiTè
Gli algoritmi possono essere rappresentati graficamente con i DIAGRAMMI DI FLUSSO che si sviluppano
graficamente su due dimensioni, si basano su pochi simboli, è un linguaggio universale ed elimina le
ambiguità. Un diagramma di flusso è composto da blocchi elementari (poligoni di diversa forma) che sono di
quattro tipologie e archi orientati che collegano i vari blocchi e descrivono la sequenza di svolgimento delle
7
azioni. Le istruzioni sono scritte all’interno dei blocchi che sono connessi tra di loro attraverso delle frecce,
per indicare l’esatta sequenza in cui le istruzioni devono essere eseguite. Durante la costruzione di un
diagramma di flusso è buona norma procedere dall’alto verso il basso e da sinistra a destra.
I blocchi elementari sono
INIZIO
• Blocco di inizio e fine rappresentati con un ovale orizzontale
• Blocco di connessione. L’ordine nell’esecuzione delle istruzioni è fondamentale e nei diagrammi di
flusso è garantito dall’orientamento delle frecce che collegano i blocchi. I blocchi di connessione non
sono stati rappresentati negli algoritmi visti in classe dal professore, ma è bene considerarli
nell’elenco.
• Blocco di azione generica e azione Input/Output. I blocchi di azione generica sono rappresentati da
parallelepipedi
LEGGI UN VALORE A
I blocchi di input/output sono rappresentati da parallelogrammi
STAMPA A
• Blocco di decisione binaria (detta anche Condizionale o a due vie) sono rappresentati da rombi
a>b?
Un algoritmo (e di conseguenza una sua rappresentazione grafica) deve avere sempre un inizio e una
fine. Quindi useremo un ovale con dentro scritto INIZIO e uno con dentro scritto FINE, rispettivamente
all’origine e al termine dell’algoritmo rappresentato con diagramma di flusso.
Un esempio di azione generica rappresentata all’interno di un parallelepipedo può essere l’esecuzione di
una operazione matematica.
8
Per quanto riguarda i blocchi di Input/Output questi si hanno quando ad esempio abbiamo la lettura di
un dato (es. input da tastiera) o la stampa del risultato (es. output su schermo) e sono rappresentati dai
parallelogrammi.
Nei blocchi condizionali abbiamo appunto una condizione, dobbiamo effettuare una scelta e in questo
caso abbiamo la ramificazione a seconda che si decide di eseguire un’operazione oppure un’altra.
PESEUDOCODICE VS DIAGRAMMA DI FLUSSO
Il vantaggio dello pseudocodice è di essere immediato. Gli svantaggi sono: meno astratto, interpretazione
più complicata, ognuno ha il proprio modo di scrivere uno pseudocodice.
I vantaggi dei diagrammi di flusso: più intuitivi perché grafici, più astratti. Gli svantaggi sono: richiedono
l’apprendimento della funzione dei vari tipi di blocco, la loro creazione e modifica richiede tempo, non ci
sono standard che indicano la quantità di dettagli che dovrebbe essere inclusa in un diagramma di flusso.
LE STRUTTURE DI CONTROLLO (LOGICHE)
Un qualsiasi algoritmo (e come vedremo più avanti anche un qualsiasi programma) può essere espresso
usando solo le seguenti tre strutture logiche di base. Domanda d’esame quali sono le strutture logiche
di base di un diagramma di flusso?
• Sequenza logica
• Selezione logica (o alternativa). La selezione può essere semplice o a due vie.
• Iterazione logica (o ripetizione). L’iterazione si divide in iterazione a ciclo condizionale iniziale e in
iterazione a ciclo condizionale finale.
La struttura di controllo secondo la sequenza logica, spesso semplicemente chiamata **sequenza**, è il
modo più semplice e diretto di eseguire le istruzioni in un programma. In una sequenza logica, le istruzioni
vengono eseguite una dopo l'altra, nell'ordine in cui sono scritte, senza salti o deviazioni. È una struttura di
base ma fondamentale, perché ogni programma, per quanto complesso, include delle sequenze logiche.
Esempio di sequenza logica:
1. **Leggi un numero dall'utente**.
2. **Aggiungi 5 al numero**.
3. **Visualizza il risultato**.
In termini di diagramma di flusso, una sequenza logica può essere rappresentata come una serie di operazioni
collegate in un percorso lineare: Ogni operazione viene eseguita dopo quella precedente, in maniera
sequenziale. Questo è particolarmente utile per le operazioni semplici e dirette che non richiedono decisioni
o ripetizioni. La sequenza viene rappresentata con una serie di parallelepipedi collegati tra loro da frecce che
stabiliscono la sequenzialità delle istruzioni (vedi scansione).
La struttura di controllo secondo la selezione logica permette di eseguire diverse istruzioni in base a una
condizione. Ci sono due tipi principali di selezione logica: **semplice** e **a due vie**.
9
Nella selezione logica semplice, un'istruzione viene eseguita solo se una condizione è vera. Se la condizione
è falsa, l'istruzione viene saltata. Le azioni avvengono solo da un lato del flusso attraverso un blocco istruzioni
(vedi scansione).
Nella selezione logica a due vie, una delle due possibili istruzioni viene eseguita in base al risultato della
condizione. Se la condizione è vera, viene eseguito un blocco di istruzioni; se è falsa, viene eseguito un altro
blocco. Quindi le azioni vengono eseguite in entrambi i lati del flusso (vedi scansione).
La struttura di controllo secondo l'iterazione logica, comunemente nota come ciclo, permette di ripetere una
serie di istruzioni più volte finché una condizione specifica è soddisfatta. Questa struttura è utile quando è
necessario eseguire operazioni ripetitive senza riscrivere più volte lo stesso blocco di codice. Esistono vari tipi
di iterazione logica, i principali sono: ciclo a condizione iniziale e ciclo a condizione finale. Nel primo caso, la
condizione (quindi il rombo con la ramificazione) si trova all’inizio dell’algoritmo, le istruzioni si eseguono
dopo la condizione; nel secondo caso, la condizione si trova verso la fine dell’algoritmo, quindi le istruzioni si
eseguono prima della condizione (vedi scansione). Queste strutture permettono ai programmi di eseguire
operazioni ripetitive in modo efficiente ed elegante, senza duplicare il codice. Ogni tipo di ciclo ha il suo uso
specifico a seconda delle esigenze del programma.
6 Introduzione alla Programmazione
Il programma non è altro che un algoritmo scritto in modalità tale da essere comprensibile per il computer
che è l’esecutore. Il programma è una sequenza di istruzioni che consentono di risolvere un problema e
l’esecutore è il computer. Informatica deriva da informatique ovvero information automatique ed è la scienza
che studia come gestire in modo automatico le informazioni. L’obiettivo è quello di riuscire a risolvere un
problema che tratta dati e informazioni. Ma oggi questo concetto è stato soppiantato dall’acronimo ICT.
ICT sta per **Information and Communication Technology** (Tecnologia dell'Informazione e della
Comunicazione). È un termine ampio che include tutte le tecnologie utilizzate per la gestione e la trasmissione
delle informazioni. Questo include:
- **Hardware**: Computer, server, dispositivi mobili, ecc.
- **Software**: Sistemi operativi, applicazioni, programmi di gestione dei dati, ecc.
- **Reti**: Internet, reti locali (LAN), reti geografiche ecc.
- **Telecomunicazioni**: Telefonia, trasmissioni via cavo, satellite, ecc.
L'ICT copre un ampio spettro di tecnologie e applicazioni che permettono di creare, archiviare, scambiare e
utilizzare informazioni in modi diversi. È una componente essenziale delle moderne società e economie,
poiché supporta molteplici settori, tra cui l'educazione, la sanità, il commercio e la governance. L’ICT si è
sviluppata grazie alle tecnologie delle telecomunicazioni che hanno fatto sì che i computer potessero
comunicare tra di loro. Ad esempio oggi lo smartphone mette insieme le funzionalità di un telefono e di un
computer. Il programma è il cuore dell’ICT. I programmi rappresentano il software.
Il programma è la realizzazione/implementazione di un algoritmo espressa in un linguaggio di
programmazione specifico.
Problema → creazione di un modello semplificato (o modellazione del problema) → Algoritmo →
Programma
10
Ricordiamo che l’algoritmo può essere scritto in vari modi tra cui lo pseudocodice e il diagramma di flusso. Il
programma è un algoritmo applicato a un computer e per questo deve essere scritto in un linguaggio
comprensibile dal computer. Per programmare non si utilizza il codice binario, ma un linguaggio intermedio,
semplice, non ambiguo, formale, con regole ben definite comprensibile all’uomo. Questo linguaggio deve
essere poi tradotto affinché il computer possa capirlo.
Il programmatore si occupa di progettare un algoritmo efficace per la risoluzione di un problema dato e di
tradurre questo algoritmo in istruzioni eseguibili da un computer mediante un linguaggio di programmazione.
La programmazione consiste nella scrittura di un testo, detto programma (o codice) sorgente, che descrive
in termini di istruzioni note alla macchina la soluzione per un dato problema. Un programma è efficace
quando risolve un problema ed è efficiente quando lo fa impiegando il minor numero di risorse possibili. Non
esiste un’unica soluzione a un problema. La programmazione consiste nel trovare la strada migliore che
conduce alla soluzione del problema. Programmare è un’operazione creativa, non esistono soluzioni
universali.
I programmi sono eseguiti dai computer ma possono anche essere letti dalle persone (talvolta diverse da
quelle che hanno scritto il programma). È necessario migliorare il più possibile la leggibilità e la chiarezza dei
programmi. Ad esempio usando l’indentazione (rientro delle istruzioni, diverso allineamento nella scrittura
del programma) in modo opportuno e aggiungere commenti significativi.
Esempio di indentazione (le scritte non sono tutte allineate a sinistra)
// Definizione di una funzione per calcolare la somma dei primi n numeri
int calcolaSomma(int n) {
int somma = 0; // Inizializza la variabile somma a 0
for (int i = 1; i <= n; i++) { // Itera da 1 a n
somma += i; // Aggiungi i alla somma
L'indentazione rende il codice leggibile e facile da seguire, mostrando chiaramente la struttura del
programma e le relazioni tra i vari blocchi di codice.
Domanda d’esame: cosa sono i commenti in un programma? Sono istruzioni non eseguite dal computer. I
commenti nella programmazione sono note inserite nel codice che non vengono eseguite dal computer. Sono
utilizzati per spiegare, descrivere o annotare specifiche parti del codice per rendere il programma più
comprensibile agli esseri umani. I commenti possono essere utili per documentare il funzionamento del
codice, lasciare promemoria per se stessi o fornire istruzioni per altri programmatori che potrebbero lavorare
sullo stesso progetto in futuro. I commenti sono essenziali per una buona pratica di programmazione, poiché
migliorano la leggibilità del codice e facilitano la manutenzione e la collaborazione tra programmatori.
Normalmente i commenti vengono scritti dopo il simbolo %.
Un **consistent naming scheme** (schema di denominazione coerente) è un insieme di linee guida o
convenzioni utilizzate per assegnare nomi alle variabili, alle funzioni, ai file, alle classi e ad altri elementi in
un programma o sistema. L'obiettivo è mantenere un naming coerente e logico che renda il codice più
leggibile, comprensibile e manutenibile. Seguire uno schema di denominazione coerente aiuta a rendere il
codice più leggibile e manutenibile, facilitando la collaborazione tra diversi sviluppatori e la comprensione
del codice nel tempo. Ecco alcuni principi chiave di uno schema di denominazione coerente: CamelCase e
Underscore. Esempio: Inizio algoritmo trovaMax o trova_max.
11
Il linguaggio con cui scriviamo un algoritmo comprensibile dal computer si chiama linguaggio di
programmazione. I linguaggi di programmazione al mondo sono più di 1000. Fino al 2017 il linguaggio di
programmazione più usato era Java, oggi è Python. Ogni linguaggio di programmazione dispone di un insieme
di parole chiave (vocabolario ridotto – english-like), dette keyword. È caratterizzato da due componenti
complementari l’una con l’altra: sintassi, che è l’insieme delle regole che specificano come comporre
istruzioni ben formate; semantica, specifica il significato di ogni istruzione ben formata. Quindi anche qui
come in tutti i linguaggi abbiamo un alfabeto, un vocabolario, una sintassi e una semantica.
I linguaggi di programmazione possono dividersi in linguaggi di alto livello e di basso livello. I primi sono più
vicini all’uomo, mentre i secondi sono più vicini alla macchina. I linguaggi di alto livello si suddividono in
linguaggi di III, IV e V generazione, dove la V generazione è quella più vicina all’uomo. I linguaggi di
programmazione di basso livello si suddividono in linguaggi di I generazione e di II generazione. Il linguaggio
binario (detto anche linguaggio o codice macchina) è un linguaggio di prima generazione. Più vicino alla
macchina, perché è l’unico compreso dalla macchina senza bisogno di un traduttore, ma è difficilmente
comprensibile dall’uomo perché costituito da sequenze di zeri e uno difficilmente memorizzabili dall’essere
umano. Tipica istruzione in linguaggio macchina in cui l’ALU esegue i calcoli attraverso un OPCODE (codice
operativo) che indica al computer quale operazione effettuare (quale istruzione eseguire), tra quelle
appartenenti al proprio set di istruzioni. OPERAND indica l’indirizzo dei dati su cui sarà effettuata
l’operazione. Esempio: istruzione carica nel registo 10010000(opcode)11001100(operand). Il linguaggio
macchina (codice binario) viene eseguito in modo molto efficiente, tuttavia è difficile da utilizzare per la
programmazione da parte degli umani, soggetto ad errori, difficile da modificare.
I linguaggi di seconda generazione sono i linguaggi assemblativi (Assembly – vedi anche pagina 5 di questo
documento) hanno bisogno di un traduttore, Assembler, per essere compresi dalla macchina. Il linguaggio
assembly usa codici mnemonici per rappresentare le istruzioni. Può essere letto o scritto da programmatori
umani ma è ancora fortemente dipendente dalla macchina, perché è necessario conoscere le caratteristiche
della macchina (registri, dimensione dati, set di istruzioni ecc.) su cui deve essere eseguito il codice. Il
processo di conversione da linguaggio assembly a linguaggio binario attraverso l’assembler si chiama
assemblaggio. Tra i pro c’è il fatto che il linguaggio assembly è adatto per elaborazioni estremamente intense
(veloci) come ad esempio i videogiochi, tra i contro c’è il fatto che programmare in questo linguaggio è
comunque abbastanza complesso, anche semplici algoritmi richiedono molte istruzioni. I linguaggi di prima
e seconda generazione sono utilizzati dalla CPU che compie operazioni elementari, hanno un vocabolario
ridotto e circa 10/15 operazioni. Per operazioni più complesse bisogna utilizzare linguaggi di III generazione
che hanno un vocabolario più ampio e contemplano più operazioni.
Anche i linguaggi di programmazione di III generazione (alto livello) usano parole English-like ed hanno
bisogno di un traduttore che in questo caso si chiama Compiler. La traduzione può essere effettuata
direttamente dal linguaggio di III generazione a quello di I. I pro sono: portabili, indipendenti dalla macchina,
human friendly, facili da apprendere e da usare, meno soggetti a errori, facili da documentare e mantenere.
Contro: non sempre sono molto efficienti, sono meno flessibili quando bisogna interfacciarsi con la CPU,
memoria e registri. Quindi la caratteristica dei linguaggi di basso livello è la velocità, mentre quella dei
programmi di alto livello è che possono svolgere operazioni più complesse e sono più facilmente
comprensibili dagli umani.
TIPI DI SOFTWARE
• Software di sistema (es. Windows) ci consente di controllare il funzionamento del sistema
12
• Software Applicativo (es. Word) progettato per occuparsi di uno specifico problema o per svolgere
uno specifico compito.
7 Reti di calcolatori e Web
I sistemi tecnologici odierni si caratterizzano per la combinazione di hardware, software e comunicazione. Il
Web è una rete di calcolatori che comunicano tra di loro.
Una prima grande rivoluzione nelle comunicazioni si è avuta grazie all’invenzione del telefono, perché grazie
ad esso le comunicazioni non solo venivano fatte a voce e in maniera più immediata, ma anche perché non
era necessario del personale specializzato che decifrasse il codice di trasmissione come ad esempio avveniva
nel telegrafo. La rete telefonica, che nel corso del tempo è divenuta sempre più estesa, inizialmente era una
rete che permetteva la sola trasmissione della voce, ma con l’invenzione del modem
(modulazione/demodulazione), che utilizza un linguaggio fatto di onde elettromagnetiche, è stata possibile
anche la trasmissione dei dati.
Le Reti: cavo, DSL e fibra ottica
Il cavo utilizzato dalla rete telefonica è il doppino intrecciato. Doppino perché si tratta di due cavi intrecciati
di cui uno serve per ricevere e l’altro per trasmettere. Il modem utilizza la tecnologia DSL o ADSL. Nel caso
dell’ADSL l’accesso alla rete viene detto asimmetrico perché la velocità di trasmissione è diversa a seconda
che si ricevano dati o che si trasmettano. Normalmente nei computer domestici si riceve molto più di quanto
si trasmette, ad esempio visitando pagine web ecc. la DSL e l’ADSL non interferisce con la linea telefonica.
Poi abbiamo il cavo coassiale che utilizza le infrastrutture esistenti nella televisione via cavo ed è utilizzato
maggiormente negli Stati Uniti e infine la fibra ottica. La fibra ottica è la rete via cavo che consente di
trasportare nel modo più veloce le informazioni. La fibra ottica consente di far viaggiare la luce e dalla
riflessione (dalla presenza o assenza di luce) si riesce a trasmettere delle informazioni. Trasmette in codice
Morse. La luce viaggia velocissima, 100 volte di più del doppino telefonico. Domanda d’esame: qual è lo
strumento fisico con cui le informazioni viaggiano più veloce? La fibra ottica.
Le Reti: Wireless
Oltre alle reti via cavo esiste anche un sistema wireless che trasporta i dati mediante segnali radio. Anche se
gli ostacoli interferiscono con la portata di tale sistema, le onde possono attraversare alcuni materiali (ad
esempio i muri). In assenza di filo, è l’aria, l’etere, ad essere attraversata dall’onda elettromagnetica. Ogni
onda elettromagnetica ha una sua frequenza ed è per questo che quando vogliamo ascoltare una stazione
radio dobbiamo posizionarci su una particolare frequenza. Le onde elettromagnetiche vengono emesse da
antenne e giungono a ricevitori. Le radio sono ricevitori, infatti possono solo ricevere e non trasmettere.
La tecnologia wireless dei computer si chiama Wi-fi.
Tre sistemi wireless ampiamente usati sono
• Bluetooth – pensato per le trasmissioni a breve distanza
• RFID (Radio Frequency Identification) per esempio il Telepass per pagare ai caselli autostradali senza
fermarsi.
• GPS (Global Positioning System) importante sistema wireless a senso unico. I satelliti GPS inviano dati
precisi ai ricevitori secondo le loro posizioni; i ricevitori usano il tempo impiegato per ricevere il
messaggio da più satelliti per calcolare la posizione.
Le Reti: I telefoni Cellulari
13
Il sistema wireless più usato dalle persone è quello dei telefoni cellulari. Il cellulare è un’evoluzione della
radio. Funziona grazie alla trasmissione di onde elettromagnetiche e a differenza della radio può anche
trasmettere, non solo ricevere. Usa lo stesso sistema di antenne e ricevitori, anche se nei moderni
smartphone l’antenna è interna e non è visibile. Usiamo la parola cellulare, perché il territorio è suddiviso in
tante “celle” virtuali che sono determinate dalla presenza di trasmettitori. Ogni cella rappresenta il territorio
che viene servito dall’antenna. I telefoni comunicano con la stazione base più vicina e quando ci spostiamo
la comunicazione passa da una stazione base a una nuova. Come abbiamo detto le onde elettromagnetiche
possono attraversare anche i muri, ma non possono attraversare le montagne. Per questo motivo in
montagna abbiamo più difficoltà ad avere la linea. Solo dove esistono dei ricevitori possiamo usare il telefono
cellulare senza problemi.
Rete di Calcolatori
Una rete di calcolatori è costituita da due o più computer collegati tra di loro in modo da consentire un flusso
di informazioni tra di loro. La più grande rete esistente è internet: ogni computer connesso ad internet è in
grado di comunicare con tutti i computer collegati.
Abbiamo due tipologie di reti di calcolatori
• Reti locali (LAN – Local Area Network) nate con la modalità Ethernet che prevede il collegamento
attraverso cavi. Sono un insieme di dispositivi collegati insieme in un luogo fisico (edificio pubblico o
privato, ufficio, casa).
• Reti geografiche una rete dati ad alta velocità che collega molteplici reti locali, coprendo un’area
metropolitana come un paese o una città.
Nelle comunicazioni un concetto importantissimo è quello di indirizzo. Nella rete ethernet ogni indirizzo è
composto da 48 bit. Le informazioni in rete sono trasmesse attraverso pacchetti. Un pacchetto è una
sequenza di bit o byte (8 bit) che contiene informazioni in un formato precisamente definito. Un pacchetto
contiene indirizzo del mittente, indirizzo del destinatario, lunghezza dei dati, dati e controllo errori. Può
contenere fino a 1500 byte di dati.
Rete di Calcolatori – Reti Geografiche
Abbiamo già detto che la LAN è una rete locale, circoscritta a un edificio o anche solo un ufficio o una casa.
Poi abbiamo la rete MAN che significa Metropolitan Aera Network. La MAN è una rete più estesa della LAN
perché interessa un’area metropolitana, come potrebbe essere la città di Napoli e provincia e poi abbiamo
la rete WAN che significa Wide Area Network che copre aree molto più estese. Se vogliamo inviare una mail
a New York da Napoli utilizzeremo tutte le reti e viceversa. Quindi passeremo da una rete LAN a una MAN a
una WAN e poi viceversa dalla WAN passeremo alla MAN (nell’area metropolitana di New York) alla LAN dove
si trova il dispositivo che deve ricevere l’informazione. Questo concetto si riassume in local to global to global
to local.
Domanda d’esame: mettere in ordine le reti dalla più piccola alla più grande. LAN → MAN → WAN
La rete internet è una rete WAN ma con caratteristiche particolari. Infatti la rete internet non è gerarchica
come sono di solito le altre reti, nel senso che il percorso non è predefinito e non è sempre lo stesso.
Internet nasce soprattutto per motivi militari. La Difesa americana chiese all’università di Stanford di trovare
un modo attraverso il quale in caso di attacco militare le comunicazioni tra i centri decisionali e le milizie non
potessero essere interrotti. La prima versione di internet con scopi militari si chiamava Arpanet e nasce negli
14
anni ’70. La particolarità è che non c’è una sola strada per comunicare e in caso di difficoltà si passa
automaticamente a un altro percorso. Oggi si applica questo concetto anche all’uso civile. Il router
(istradamento) è un computer particolare che stabilisce di volta in volta qual è il percorso che i datI e le
informazioni dovranno seguire per mettere in comunicazione due o più computer.
È stato stimato che nel 2021 erano circa 5 miliardi gli utenti internet, 800 milioni in più rispetto al 2019.
I pilastri di internet sono:
• Nomi e indirizzi che consentono l’identificazione di reti e computer (sono l’equivalente di una rubrica
telefonica).
• Percorsi – è necessario trovare percorsi tra calcolatori che non sono collegati direttamente
• Accordi – bisogna essere d’accordo sul modo in cui le informazioni vengono formattate e si muovono.
Gli accordi si sviluppano attraverso dei protocolli di comunicazione che stabiliscono le modalità con
cui si decide di scambiarsi le informazioni.
Domanda d’esame: cos’è il protocollo TCP/IP (Trasmission Control Protocol/Internet Protocol)? È il
protocollo attraverso cui i computer comunicano nella rete internet. Il TCP/IP è un insieme di protocolli di
comunicazione che formano la base di Internet e delle reti private. Il TCP/IP definisce il modo in cui i dati
vengono formattati, trasmessi e ricevuti su una rete, garantendo che le informazioni possano viaggiare da un
dispositivo all'altro in modo sicuro e affidabile.
Ogni computer deve avere un indirizzo che lo identifichi in modo univoco tra tutti gli altri presenti su internet.
In un computer ogni indirizzo corrisponde a una sequenza di bit. È nata l’esigenza di passare a un
indirizzamento di 128 bit per via del numero sempre crescente di utenti. Quindi ogni indirizzo è costituito da
128 bit. C’è differenza tra l’indirizzo fisico del computer (IP) e l’indirizzo simbolico ([Link]).
Il **DNS** (Domain Name System) è un sistema che traduce i nomi di dominio leggibili dagli esseri umani
(come [Link]) in indirizzi IP numerici (come [Link]) che i computer utilizzano per identificarsi
e comunicare tra loro su Internet. Quando digiti un URL 1 nel tuo browser, il DNS converte quel nome di
dominio in un indirizzo IP per trovare il server corrispondente.
Il DNS è essenziale per il funzionamento di Internet, poiché permette agli utenti di accedere ai siti web e altri
servizi online utilizzando nomi di dominio leggibili, piuttosto che complessi indirizzi IP. È spesso descritto
come la "rubrica" di Internet, in quanto facilita la connessione tra nomi di dominio e indirizzi IP.
WORLD WIDE WEB
Il Web è stato inventato da Sir Tim Berners-Lee nel 1989 mentre lavorava al CERN (Organizzazione Europea
per la Ricerca Nucleare). Il suo obiettivo era facilitare la condivisione di informazioni tra ricercatori attraverso
una rete decentralizzata di documenti ipertestuali. Il primo sito web è stato pubblicato nel 1991.
1
Un **URL** (Uniform Resource Locator) è l'indirizzo che identifica univocamente una risorsa su
Internet. È comunemente conosciuto come l'indirizzo di un sito web. Un URL specifica la posizione
di una risorsa e il protocollo utilizzato per accedervi. Gli URL sono essenziali per navigare su Internet,
poiché permettono ai browser e ad altri client di localizzare e accedere alle risorse necessarie. Senza
URL, sarebbe molto difficile trovare e accedere a contenuti specifici sul Web.
15
Il **World Wide Web** (spesso abbreviato come **WWW** o semplicemente **il Web**) è un sistema di
documenti ipertestuali collegati e accessibili tramite Internet. Es. pagine web.
### Differenza tra Web e Internet:
- **Internet**: Una rete globale di reti che collega milioni di computer e altri dispositivi in tutto il mondo,
permettendo la trasmissione di dati.
- **World Wide Web**: Un servizio che utilizza Internet per consentire l'accesso e la condivisione di
documenti ipertestuali. Altri servizi utilizzabili grazie a internet sono la posta elettronica, le app come
whatsapp che consentono di trasferire file ecc.
Un **browser** è un software applicativo che permette agli utenti di accedere e visualizzare contenuti sul
World Wide Web. I browser trasformano il codice HTML delle pagine web in contenuti visibili e interattivi. I
browser sono strumenti essenziali per la navigazione e l'interazione con il web, rendendo accessibili
un'infinità di informazioni e servizi.
### Esempi di Browser: Google Chrome, Internet Explorer, Microsoft Edge ecc.
Un URL (Uniform Resource Locator), comunemente conosciuto come l'indirizzo di un sito web, le parti
fondamentali sono:
1. **Protocollo**: Indica il metodo utilizzato per accedere alla risorsa. Di solito è http o https. Questa parte
termina con ://. Esempio: `[Link]
2. **DNS del sito web**: Specifica il server web che ospita la risorsa. È l'indirizzo che digiti per visitare un sito
web. Esempio: `[Link]`.
3. **Percorso**: Indica la posizione specifica della risorsa all'interno del server. Se stai cercando una pagina
specifica, questa parte apparirà dopo il dominio. Esempio: /pagina.
4. La **risorsa** rappresenta il contenuto specifico cui si desidera accedere su un server web. La risorsa è
identificata dal **percorso** nell'URL e può essere una pagina web, un'immagine, un video, un file di
download, o qualsiasi altro contenuto disponibile su Internet. Es.
[Link] in questo caso la risorsa è il file [Link] situato
nella directory /articoli/ sul server [Link]. La risorsa è ciò che verrà recuperato e visualizzato dal
browser quando l'URL viene visitato. Html è l’estensione di una pagina web come .doc è l’estensione di un
documento word.
Reperire informazioni sul Web
Se non conosciamo l’URL possiamo utilizzare:
• Web Search Engine (motore di ricerca)
• Subject Trees (indice gerarchico di argomenti). L’albero può essere visitato partendo dagli argomenti
più generali che vengono via via specializzati in sottoargomenti scendendo la gerarchia.
Immaginiamo un albero di argomenti per la biologia:
• - **Biologia (Radice)**
• - **Zoologia (Ramo)**
• - **Mammiferi (Foglia)**
• - **Uccelli (Foglia)**
16
Un **motore di ricerca web** (web search engine) è uno strumento online che permette agli utenti di
cercare informazioni su Internet. Utilizza algoritmi complessi per trovare, indicizzare e restituire contenuti
rilevanti basati su parole chiave fornite dagli utenti. I motori di ricerca utilizzano programmi automatizzati
chiamati spider per visitare e leggere il contenuto di miliardi di pagine web. Full text indexing: tutte le parole
presenti nella pagina vengono considerate parole chiave; selective text indexing: solo le parole ritenute più
importanti vengono considerate parole chiave.
### Esempi di Motori di Ricerca: Google, Bing, Yahoo! Search.
I motori di ricercano mostrano le pagine più visitate o quelle sponsorizzate. Tuttavia, il motore di ricerca non
mostra tutte le pagine esistenti al mondo contenenti le parole chiave ricercate. Il Web è troppo esteso e
cambia continuamente. Inoltre, esiste un Dark Web. Il **Dark Web** è una parte di Internet che non è
accessibile tramite i normali browser come Google Chrome o Firefox. Per accedervi, è necessario utilizzare
software specifici, che permettono di navigare in modo anonimo e criptato. Gli utenti possono mantenere la
propria identità nascosta. Solo chi conosce l'indirizzo specifico di un sito e utilizza il software corretto può
accedere. Include una vasta gamma di informazioni, da forum di discussione a vendite di beni illegali. Attivisti,
giornalisti e dissidenti politici possono utilizzarlo per comunicare in sicurezza. Viene spesso utilizzato per
attività illegali come il traffico di droga, la vendita di armi e la condivisione di materiale pirata. È un luogo
dove è facile trovare attività criminali. Navigare nel Dark Web può esporre gli utenti a rischi di sicurezza e
malware.
Il portale è un sito che funge da punto di accesso e ha caratteristiche sia di motore di ricerca che di subject
trees. Posso arrivare a un risultato sia attraverso una ricerca sia attraverso un indice degli argomenti.
Linguaggi di markup: il linguaggio HTML
HTML (HyperText Markup Language) è un linguaggio base per produrre documenti per il World Wide Web:
pagine web che contengono testo, immagini, suoni, link ipertestuali a programmi e a altre pagine web.
Quando effettuiamo la ricerca di una pagina web il nostro computer è un client. Il computer da cui il client
copia la pagina web è il server (ad esempio [Link] il server è unisa). Per effettuare ricerche sul web
abbiamo bisogno necessariamente di un programma browser come Google Chrome nel quale immettiamo
l’URL (indirizzo della pagina web) che non è l’indirizzo fisico, ma quello logico. Sarà poi il DNS a convertire
automaticamente l’indirizzo logico nel corrispondente indirizzo IP (fisico). Se non conosciamo la URL grazie
al motore di ricerca con l’utilizzo di parole chiave possiamo riuscire a trovare la pagina web che stiamo
cercando. La URL è composta dal servizio ‘[Link] dal dominio che corrisponde al server dove trovo il mio file
‘[Link]/’ dal file che sto cercando che è collegato all’estensione ‘[Link]’. HTML è l’estensione
di una pagina web e si trova alla fine di una URL. Indica appunto che quella è una pagina web.
L'**ipertesto** (HYPER TEXT) è un tipo di documento che contiene collegamenti (chiamati anche "link" o
"hyperlink") che permettono di passare facilmente da una parte all'altra dello stesso documento o a un altro
documento correlato. Questi collegamenti possono essere applicati a testo, immagini o altri elementi
all'interno del documento. Una pagina web è appunto un documento ipertestuale.
### Caratteristiche Principali dell'Ipertesto:
1. **Collegamenti**: I collegamenti ipertestuali permettono di navigare rapidamente tra diverse parti di un
documento o tra documenti differenti.
17
2. **Non Lineare**: A differenza di un testo tradizionale, che si legge in modo sequenziale, l'ipertesto
consente una navigazione non lineare, permettendo agli utenti di seguire percorsi personalizzati basati sui
propri interessi. Il prof. ha detto in classe che è reticolare.
3. **Multimediale**: Può includere vari tipi di media come testo, immagini, video e audio, creando
un'esperienza di lettura più ricca e interattiva.
Il termine **markup** si riferisce a un insieme di simboli o codici (o tag) inseriti in un documento per definire
la struttura, il formato o lo stile del testo. Nel contesto delle pagine web, **markup** è utilizzato
principalmente in HTML (HyperText Markup Language) per creare e strutturare i contenuti delle pagine web.
È un linguaggio composto da tag che vengono utilizzati per annotare un documento. - **Funzione**: Serve
a organizzare, formattare e rendere il testo interattivo. In HTML, i tag di markup sono racchiusi tra parentesi
angolari < >. Ogni tag ha una funzione specifica. Ecco alcuni esempi:
- <html>: Indica l'inizio e la fine del documento HTML. Alla fine lo si indica aggiungendo uno / dopo il simbolo
< - </html>
- <head>: Contiene metadati e informazioni di configurazione. I metadata contengono informazioni su autore
del documento, editor usato, una descrizione del contenuto, le parole chiave descrittive del documento. Ciò
che è riportato nella head, la testa, non è visibile nella pagina web.
- <title>: è contenuto nella head, quindi non è visibile sulla pagina web, ma solo nella parte superiore della
finestra del browser. Definisce il titolo della pagina che appare nella scheda del browser. Se il titolo è "Il Mio
Sito Web", vedrai "Il Mio Sito Web" nella parte superiore della finestra del browser.
- <body>: Contiene il contenuto visibile della pagina. Testi, immagini, video, link e tutto ciò che appare nella
pagina. Tutto ciò che mettiamo nel body viene mostrato nelle pagine web quando visitiamo un sito. Quindi il
body è il documento vero e proprio.
- <h1>: Definisce un'intestazione di primo livello. Gli HEADERS vanno da H1 a H6 permettono di indicare quali
parti del testo vengono usate come titoli. Sono usati anche per controllare le dimensioni dei caratteri: H1
corrisponde a caratteri grandi, mentre H6 a caratteri piccoli.
Precisazioni di sintassi
Ogni marcatore o tag deve avere il suo corrispettivo di chiusura. Ad esempio se decidiamo di scrivere un testo
in grassetto il tag è la lettera b. Quindi scriveremo:
<b>il mio testo</b>
dove appunto </b> indica la fine del comando. Allo stesso modo se desidero scrivere il testo della mia pagina
web in grassetto e in corsivo devo procedere in questo modo:
<b><i>il mio testo</i></b>
Esistono tag singoli come <br> (andare a capo) e <hr> (inserire una riga) che non necessitano del tag di
chiusura.
### Esempio in HTML su questa struttura base può fare domanda d’esame:
<!DOCTYPE html> ha la funzione di indicare al browser il linguaggio in cui la pagina web è scritta.
<html>
18
<head>
<title>Il Mio Sito Web</title>
</head>
<body>
<h1>Benvenuti nel mio sito web!</h1>
<p>Questo è un esempio di paragrafo.</p>
</body>
</html>
Per caricare un’immagine bisogna che sia nella stessa cartella in cui si trova la pagina html che stiamo
scrivendo.
<BODY BACKGROUND=”[Link]”> questo è il comando per caricare un’immagine che sarà lo sfondo della
nostra pagina web.
<BODY BGCOLOR=”RED”> questo è il comando per impostare il colore di una pagina web
<!-- testo del commento --> questo comando serve per scrivere commenti e informazioni di varia natura (ad
esempio, per spiegare parti del codice) che non verranno visualizzate nella pagina web.
Tutti i comandi di testo hanno bisogno di una chiusura tranne il comando <LI> per scrivere delle liste
<UL> è il comando per le liste non numerate e ha bisogno di chiusura </UL>
<OL> è il comando per le liste numerate e ha bisogno di chiusure </OL>
Esempio:
<UL>
<LI> Primo elemento (LI non ha chiusura per evitare una ripetizione)
<LI> Secondo elemento (LI non ha chiusura per evitare una ripetizione)
</UL>
Link ipertestuali
Uno dei tag più importanti è il tag <A> perché è il tag che consente di inserire un link che rende ipertestuale
la pagina web, che è poi la prima funzione e più importante di una pagina web, perc questo si parla di Hyper
Text.
<A href=” URL servizio da attivare”>
Testo o immagine che funge da link
</A>
19
20