15
modulo 1 Concetti di base dell’ICT u d1 Fondamenti concettuali di informatica u d2 Concetti generali u d3 Hardware u d4 Il software u d5 Le reti informatiche u d6 L’ICT nella vita di ogni giorno u d7 Le altre forme di comunicazione in Internet u d8 Salute, sicurezza e ambiente u d9 La sicurezza dei dati u d10 Diritto d’autore e aspetti giuridici Prerequisiti Nessuna conoscenza particolare Obiettivi Comprendere i fondamenti teorici e concettuali dell’informatica Conoscere i principali componenti di un computer Comprendere i principi che stanno alla base del funzionamento delle reti Comprendere come Internet influenza la vita quotidiana e conoscerne le potenzialità Conoscere le basi tecniche e normative della sicurezza informatica

modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

modulo 1Concetti di base dell’ICT

ud1 Fondamenti concettuali di informatica

ud2 Concetti generali

ud3 Hardware

ud4 Il software

ud5 Le reti informatiche

ud6 L’ICT nella vita di ogni giorno

ud7 Le altre forme di comunicazione in Internet

ud8 Salute, sicurezza e ambiente

ud9 La sicurezza dei dati

ud10 Diritto d’autore e aspetti giuridici

Prerequisiti• Nessunaconoscenzaparticolare

Obiettivi• Comprendereifondamentiteoricieconcettualidell’informatica• Conoscereiprincipalicomponentidiuncomputer• Comprendereiprincipichestannoallabasedelfunzionamentodellereti• ComprenderecomeInternetinfluenzalavitaquotidianaeconoscernelepotenzialità• Conoscerelebasitecnicheenormativedellasicurezzainformatica

Page 2: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

10 Modulo 1 • Concettidibasedell’ICT

unità didattica 1Fondamenti concettualidi informatica

prerequisitiNessuna conoscenza particolare

obiettiviComprendere il concetto di algoritmoSaper rappresentare un algoritmoConoscere i sistemi numerici decimale e binarioConoscere nozioni di base relative ai linguaggi di programmazione

1. Dall’informazione al programmaL’informatica è una scienza interdisciplinare, perché riguarda e interessa moltissimi aspetti della vita di tutti i giorni ed è largamente impiegata in tutte le altre scienze. La parola deriva dall’unione dei termini «informa-zione» e «automatica» a significare che si occupa della creazione, gestione e trasmissione delle informazioni con l’ausilio di una macchina automatica, un elaboratore, detto anche calcolatore elettronico o computer.Come si può definire l’informazione? In senso generale la parola informazione si può applicare a moltissime cose: una comunicazione scritta o orale contiene informazione, così come un archivio, ma anche la scherma-ta di un videogioco che ci informa della situazione nella quale le nostre mosse ci hanno portati.

Cosa serve a definire l’informazione? Due cose:

1) uno o più dati;2) un processo di interpretazione o di elaborazione.

Torniamo all’esempio del video-gioco. Noi muoviamo il nostro eroe nel suo ambiente virtuale e lo facciamo agire usando il mouse, la tastiera oppure le leve e i pul-santi del joystick o del gamepad (figura 1): in questo momento stiamo inserendo dei dati nel si-stema, dati che sono trasmessi all’unità centrale di elaborazione, detta anche CPU (Central Proces-sing Unit, in inglese) o micropro-cessore. In questa sede il dato ricevuto è elaborato e trasformato in informazione, cioè in tutto

quello che appare sullo schermo: il nostro eroe che si muove, si gira, salta oppure raccoglie un oggetto (figura 2).Cosa permette di trasformare un determinato tasto premuto in Maryo che salta? Un insieme di istruzioni che il microprocessore elabora per restituirci il movimento.

Fig. 1 IcomandidatastieraperilgiocoSecretMaryoChroni-cles,rilasciatosottolicenzaGPL

Fig. 2 SecretMaryoinazione(dalgiocoSecretMaryoChroni-cles)

Page 3: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 11

L’informazione è, quindi, costituita da un insieme di dati elementari, di diversa natura e provenienza, associa-ti alle regole e alle istruzioni che permettono al microprocessore di elaborarli.Una sequenza logicamente ordinata di operazioni o di istruzioni costituisce un programma: l’esecuzione, da parte di un elaboratore, di questo insieme di istruzioni produce la soluzione a un problema dato e riconosciuto.

2. Algoritmi (syllabus 1.0.1.1; 1.0.1.2)

Abbiamo fin qui parlato di informatica, dati e informazioni, programmi... entriamo adesso nel dettaglio.Un programma è stato appena descritto come una sequenza logicamente ordinata di istruzioni, l’esecuzione delle quali, per mezzo di un elaboratore, fornisce la soluzione a un problema. Ampliamo un po’ questo concet-to: in informatica un programma è la descrizione di un algoritmo che permette la risoluzione, in un numero finito di passi, di una determinata classe di problemi.La parola «algoritmo» deriva dal nome di un famoso matematico arabo, Mohammed Bin Musa Al-Khawarizmi, vissuto a Baghdad a cavallo tra l’Ottavo e il Nono secolo, considerato il fondatore dell’algebra.Si definisce genericamente algoritmo una serie di azioni, applicate a un insieme ben definito di dati iniziali, che, messe in atto da un esecutore, detto anche processore, li trasformi in un risultato finale, attraversando un numero finito di passi elementari non ambigui. Questa definizione è applicabile anche a settori diversi dall’informatica: l’algoritmo, infatti, può descrivere la soluzione di ogni problema che possa essere risolto in un numero finito di passi elementari.

In altre parole, l’algoritmo è la sequenza di azioni che l’esecutore deve compiere per raggiungere il risultato richiesto: è come un problema di scacchi, nel quale bisogna dare scacco matto in un numero ben definito di mosse (figura 3).L’esecutore è l’entità che esegue le istruzioni dell’algoritmo che, da uno stato iniziale, portano allo stato finale, risolutivo del problema; non ne-cessariamente è una macchina, perché può anche essere umano. Vediamo un esempio di questo tipo.Problema: abbiamo una bottiglia di aranciata, un apribottiglie e un bic-chiere e dobbiamo versare la bibita. L’algoritmo prevede che prendiamo l’apribottiglie, prendiamo la bottiglia, la stappiamo con l’apribottiglie e versiamo l’aranciata nel bicchiere. Si parte da uno stato iniziale, nel qua-le abbiamo come dati bottiglia, apribottiglie e bicchiere, e, attraverso quattro passaggi elementari non ambigui (prendere l’apribottiglie, pren-dere la bottiglia, stappare la bottiglia con l’apribottiglie, versare il liquido nel bicchiere) raggiungiamo uno stato finale nel quale il problema inizia-le è stato risolto.

Nel caso l’esecutore sia una macchina, un computer appunto, la risoluzione dei problemi avviene nello stesso modo, ma con una sostanziale differenza: l’elaboratore esegue algoritmi che un uomo (il programmatore) ha tradotto in un codice sorgente utilizzando un linguaggio di programmazione.

Un algoritmo deve possedere alcune proprietà:

1) deve essere composto da un numero finito di passaggi;2) le istruzioni che lo compongono devono essere non ambigue, per garantire che, a parità di condizioni, si

possa ottenere sempre lo stesso risultato, indipendentemente dall’esecutore. In altre parole, l’algoritmo deve essere sempre riproducibile, a parità di condizioni;

3) le istruzioni devono essere realizzabili e note all’esecutore, che può seguirle usando le risorse a disposizione (se dovete portare la valigia della nonna al piano di sopra, non potete inserire il teletrasporto nell’algoritmo…).

La realizzabilità di un’istruzione dipende da tre fattori:

1) non deve essere eccessivamente complessa;2) l’insieme delle istruzioni che l’esecutore ha a disposizione deve essere limitato, altrimenti potrebbe essere

necessario un tempo infinito solo per scegliere l’operazione da eseguire;3) l’esecutore deve comprendere la singola istruzione e procedere per passi discreti, ossia distinti uno

dall’altro.

Fig. 3 Problemadiscacchi:ilbian-comuoveedàscaccomat-tointremosse

Page 4: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

12 Modulo 1 • Concettidibasedell’ICT

Non tutti i problemi sono risolvibili usando gli algoritmi; possiamo, infatti, classificarli in tre grandi categorie:

1) risolvibili;2) non risolvibili;3) non affrontabili.

I primi sono gli unici per i quali gli algoritmi ci possono fornire una soluzione che può essere efficace, se ri-solve il problema, ed efficiente, se la risoluzione avviene con l’uso della minor quantità possibile di risorse, tradotta, in pratica, nel minor numero di passaggi.

3. Comprendere come si rappresentano gli algoritmi con la tecnica dei diagrammi di flusso (syllabus 1.0.1.3)

Possiamo dare anche una rappresentazione grafica della risoluzione di un problema: gli algoritmi, infatti, si possono rappresentare come diagrammi di flusso, che ci permettono di descrivere il processo in tutte le sue parti. Ogni fase e ogni condizione del processo sono rappresentate da simboli grafici, detti «blocchi elemen-tari», collegati tra loro tramite frecce che indicano la sequenza temporale nella quale avvengono. I blocchi elementari sono di cinque tipi diversi e sono rappresentati in figura 4.

Proviamo a descrivere i due esempi di algoritmi fin qui fatti usando i diagrammi di flusso.

Primo esempio – La partita a scacchi:

• Dati iniziali: la posizione dei pezzi sulla scacchiera;• Risultato finale: il bianco dà scacco matto al nero;• Passaggi: 3 mosse.

Il diagramma di flusso è riportato in figura 5.

Secondo esempio – La bottiglia di aranciata:

• Dati iniziali: bottiglia di aranciata, apribottiglie, bicchiere;• Risultato finale: l’aranciata è stata versata nel bicchiere;• Passaggi: 4 azioni.

Il diagramma di flusso è riportato in figura 6.Praticamente possiamo disegnare diagrammi di flusso che descrivono algoritmi di tutti i tipi, anche applicati a comuni operazioni di vita quo-tidiana, come cambiare una lampadina, mettere in vaso una piantina, costruire un modellino.

Fig. 4 Itipidiblocchielementari

Fig. 5 Diagramma di flusso chedescrivelarisoluzionediunproblemascacchistico

Page 5: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 13

4. Sistemi di numerazione (syllabus 1.0.2.1)

I sistemi di numerazione servono a rappresentare i numeri grazie a un insieme finito di simboli elementari, detti cifre. Il numero è, quindi, un’informazione costituita da cifre diverse (dati elementari); cambiando l’or-dine dei simboli, o aggiungendone altri è possibile generare nuove informazioni.

Un sistema numerico è definito, quindi, da due elementi:

1) un insieme finito di simboli, le cifre, appunto (in inglese digit, che deriva dal latino digitus che significa sia dito sia cifra), che rappresentano numeri interi;

2) un insieme di regole che consentono di associare alla sequenza di cifre il valore del numero.

In base al tipo di regole che li definisce, i sistemi numerici possono essere di due tipi:

1) non posizionali, quando il valore intero associato a una cifra non dipende dalla sua posizione all’interno della sequenza che rappresenta il numero. Pensiamo al sistema numerico romano: è definito dai simboli I, V, X, L, C, M, che rappresentano sempre lo stesso valore, qualunque sia la posizione che occupano nel nu-mero. X, ad esempio, vale sempre 10 e se lo associo a C (100), sarà sottratto al valore di questo simbolo se posto alla sua sinistra (XC = 90), e aggiunto se alla sua destra (CX = 110);

2) posizionali, se a ogni simbolo è associato un valore diverso, dipendente dalla posizione che la cifra ha nel numero: così, ad esempio, 1 vale 10 nel numero 15, 100 nel numero 148 e 1.000 in 1.284.

Si parla di sistema numerico a base fissa quando il valore che assume una cifra, detto anche peso, è sempre pari a una potenza di un numero intero B, maggiore o uguale a 2, detto base del sistema numerico.

Per riassumere, un sistema numerico posizionale a base fissa è definito da:

1) un numero intero B, maggiore o uguale a 2, detto base;2) un insieme di simboli, detti cifre, costituito da tutte le quantità intere comprese tra 0 e B-1.

Fig. 6 Diagrammadiflussochedescrivecomesiversal’aranciatanelbicchiere

Page 6: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

14 Modulo 1 • Concettidibasedell’ICT

Difficile? No di certo, come al solito le definizioni sono più difficili della realtà; prendiamo ad esempio il siste-ma decimale: la base è B=10, mentre le cifre sono comprese tra 0 e 9 (cioè B-1) e rappresentano tutte le quantità intere comprese in questo intervallo.Nel sistema decimale i numeri, quindi, sono creati utilizzando un insieme di dieci cifre, comprese tra 0 e 9, che assumono pesi diversi a seconda della posizione che occupano. Questi pesi sono sempre esprimibili come po-tenze di 10.

Facciamo un esempio e prendiamo il numero 1.059, che possiamo considerare come il risultato di questa ad-dizione:

9 + 50 + 000 + 1000 = 1059

9 x 15 x 100 x 1001 x 1000

1059

9 x 100 +5 x 101 +0 x 102 +1 x 103 =

Nella colonna di sinistra abbiamo scomposto il numero nelle sue parti, in quella di centro abbiamo evidenzia-to il peso attribuito a ciascuna delle parti, in quella di destra abbiamo espresso il peso come potenza della base.Possiamo immaginare infiniti sistemi numerici, semplicemente cambiando la base, anche se, in realtà, quelli che hanno, o hanno avuto, qualche effettiva funzione pratica sono molto pochi: ad esempio Maya e Babilo-nesi usavano un sistema numerico sessagesimale, cioè con base 60, per essere agevolati nell’esecuzione di complessi calcoli astronomici. Gli antichi Galli usavano un sistema vigesimale (in base 20), mentre nel com-mercio (i fioristi, ad esempio, usano la dozzina e la grossa, che è una dozzina di dozzine) e nel computo del tempo usiamo un sistema duodecimale (in base 12).Gli elaboratori elettronici, però, per le loro intrinseche caratteristiche, non possono usare il sistema nume-rico decimale: sono realizzati, infatti, secondo le tecniche che appartengono all’elettronica digitale, nella quale è molto semplice costruire oggetti che assumono solo uno tra due stati stabili. Possiamo infatti con-siderare il microprocessore, i banchi di memoria e altri componenti del computer come delle specie di «lampadari» costituiti da milioni di lampadine, ognuna delle quali può essere accesa o spenta grazie alla chiusura o all’apertura di un interruttore. A ognuno di questi due stati possiamo assegnare un simbolo convenzionale. Perché gli elaboratori elettronici usano una logica digitale? Perché il passaggio tra uno stato e l’altro dell’ele-mento, detto anche commutazione, è molto veloce... è proprio come accendere o spegnere una lampadina. La tecnologia attuale permette di raggiungere velocità di commutazione dell’ordine delle centinaia, o addirittura delle migliaia, di milioni di commutazioni al secondo.Come noi usiamo il sistema decimale perché ci è particolarmente congeniale, poiché abbiamo dieci dita nelle mani e ci viene spontaneo contare su quelle, così gli elaboratori elettronici, che possono contare solo su due «dita», trovano comodo usare un sistema numerico binario, basato, cioè, su due sole cifre.Il sistema binario è il più semplice sistema posizionale a base fissa: la sua base è infatti il numero 2 e i simbo-li che adopera sono 0 e 1 (cioè l’insieme delle quantità intere compreso tra 0 e 2-1, in accordo con quanto scritto sopra a proposito dei sistemi numerici posizionali a base fissa). Nel sistema binario, quindi, tutti i nu-meri saranno espressi sulla base delle potenze di 2.

4.1. Conversione tra un sistema e l’altro (syllabus 1.0.2.1)

Poiché ci è abbastanza difficile comprendere immediatamente come è fatto un numero binario, pro-viamo a convertire un numero decimale: forse l’esecuzione di questo procedimento ci potrà chiarire le idee.Per convertire un numero intero decimale X in un numero binario dobbiamo eseguire una serie di divisioni ripetute: si divide il numero X per 2 e si ottiene un resto e un quoziente intero; a questo punto si divide il quoziente ottenuto nuovamente per 2, e si prosegue così fino a ottenere un quoziente pari a 1. Il numero bi-nario risultante è dato dall’ultimo quoziente (1) seguito dai resti ottenuti.

Page 7: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 15

Facciamo un esempio usando il numero 73:

Divisione Quoziente Resto73 : 236 : 218 : 29 : 24 : 22 : 2

36189421

100100

Consideriamo l’ultimo quoziente e i resti, e scriviamoli in sequenza a partire dall’ultimo: il numero decimale 73, quindi, corrisponderà al numero binario 1001001, che rappresenterà una sequenza di potenze di 2 (e, in effetti, 73 è uguale a 64, cioè 26, più 8, cioè 23, più 1, cioè 20. Le altre potenze di 2 mancano e, quindi, assu-mono il valore 0). Le cifre del sistema binario sono dette anche bit, contrazione per binary digit, in italiano cifra binaria.

Vediamo adesso il procedimento contrario, cioè il passaggio da numero binario a numero decimale. Prendiamo il numero binario 11001010 e scomponiamolo, da destra a sinistra, nelle potenze di 2:

Cifra binaria Potenza di 2 corrispondente Numero decimale01010011

0 x 20

1 x 21

0 x 22

1 x 23

0 x 24

0 x 25

1 x 26

1 x 27

020800

64128

Sommiamo tra loro i valori numerici significativi così ottenuti:

128 + 64 + 8 + 2= 202

Per convertire un numero binario in decimale, quindi, dobbiamo moltiplicare ogni cifra, a partire da destra, per la potenza di 2 che corrisponde alla sua posizione e quindi sommare i risultati così ottenuti.

5. Rappresentazione dei caratteri e nozione di bit e byte (syllabus 1.0.2.2)

L’elaboratore, usando i bit, è in grado di esprimere qualunque cosa: parole, suoni, immagini, istruzioni di pro-grammi e quant’altro. Abbiamo detto sopra che le cifre del sistema binario sono dette bit e che ognuna di esse definisce uno stato di un sistema bistabile, nel quale, cioè, i singoli elementi possono assumere solo uno tra due stati stabili.Come è possibile che un’entità che può assumere solo due valori possa essere adatta a rappresentare grandez-ze così diverse? Naturalmente non possiamo usare i singoli bit, ma li dobbiamo unire in «pacchetti»: se un bit, infatti, ci offre due sole possibilità (0 e 1), due bit ce ne offrono quattro (00, 01, 10 e 11), tre otto e così via. Un pacchetto di otto bit ci mette a disposizione ben 256 possibilità, cioè definisce 256 sequenze differenti di bit. Questo pacchetto di otto bit prende il nome di byte ed è, in pratica, l’unità minima di memorizzazione dell’elaboratore.A questo punto è come se avessimo a disposizione un alfabeto con 256 simboli: sulla base di questa conside-razione, nel 1961 un ingegnere dell’IBM, Bob Bemer, propose un sistema di codifica dei caratteri, assegnando a ognuno di essi una sequenza di bit, cioè un byte. Questa codifica, che prese il nome di ASCII (American Standard Code for Information Interchange, ovvero Codice Standard Americano per lo Scambio di Informazio-ni), è quella attualmente più utilizzata negli elaboratori. In essa, ad esempio, la lettera «A» corrisponde al byte 65 e, quindi, ogni volta che scriviamo una «A» con la tastiera, l’elaboratore, in realtà, processa la sequenza di bit 01000001. Nel codice ASCII troviamo tutte le lettere maiuscole e minuscole, tutte le cifre, tutte le lettere

Page 8: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

16 Modulo 1 • Concettidibasedell’ICT

accentate e i segni di punteggiatura, caratteri diversi, comandi (ad esempio il tasto di Invio corrisponde al codice ASCII 13, cioè alla sequenza di bit 00001101); alcune sequenze non sono state assegnate, e quindi ci sono dei byte che non rappresentano nulla. In figura 7 possiamo vedere la tabella ASCII.

Fig. 7 LatabellaASCII

6. Rappresentazione di immagini (syllabus 1.0.2.3)

Come abbiamo scritto poco sopra, l’elaboratore, con i bit e quindi con i byte, fa veramente di tutto: rappre-senta caratteri, ma anche suoni e immagini.

Un elaboratore può gestire le immagini in due modi: possiamo avere immagini rasterizzate e immagini vettoriali. Vediamo le differenze:• un’immagine rasterizzata (o bitmap), è descritta pixel per pixel

(dove il pixel è l’unità grafica elementare, una specie di celletta rettangolare ottenuta dall’incontro delle righe e delle colonne nelle quali è suddiviso il monitor). Il file che si ottiene, di solito, ha dimensioni considerevoli (che possono essere ridotte con l’uso di formati di compressione quali jpg). L’immagine può apparire poco nitida e con contorni «scalettati» (figu-ra 8), poiché il pixel non è puntiforme. Questo tipo di immagine ha la possibilità di gestire 16 milioni di colori, ed è particolarmen-te adatto alla riproduzione

di fotografie ricche di particolari, di tonalità e di sfumature; • in un’immagine vettoriale gli elementi grafici sono descritti da formu-

le matematiche, anziché da mappe di punti colorati: perciò immagini non particolarmente complesse hanno un peso in byte molto limitato. Essendo basata su equazioni matematiche e non sulla descrizione dello sfondo, inoltre, è scalabile, in altre parole è dimensionabile a piacere senza perdita di qualità (figura 9), al contrario di quanto av-viene nelle immagini bitmap, che si degradano in maniera consistente con il ridimensionamento dell’immagine. È particolarmente adatta alla realizzazione d’illustrazioni, di marchi e in tutti quei casi nei quali si devono creare e gestire immagini costituite soprattutto da colori soli-di, ossia non sfumati, e da linee o forme geometriche.

Fig. 8 Una linea disegnata con un pro-grammadigraficavettoriale(asi-nistra) e con un programma digrafica rasterizzata (a destra). Lalievescalettaturadell’immaginedisinistra appare solo su monitormentreinstampascompare

Fig. 9 Scalabilitàdiun’immaginevettoriale: la qualità noncambia al cambiare delledimensioni

Page 9: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 17

Le immagini bitmap possono essere generate da una videocamera o da una fotocamera digitale, ma anche da una fotografia o da una pagina di giornale. In questi casi, però, le immagini devono essere convertite in una forma che il computer possa comprendere: devono, in altre parole, essere sottoposte a un processo che si chiama digitalizzazione. In linea generale, questo processo converte un fenomeno naturale o fisico, determinandone il passaggio dal campo dei valori continui (o analogici) a quello dei valori discreti (o digitali), cioè distinti uno dall’altro e se-parati tra loro da intervalli sempre uguali.Per compiere questa operazione la grandezza da digitalizzare è rapportata a valori predeterminati e, quindi, non più a un’infinita gamma di possibilità: tale operazione comporta una perdita di informazione, che però è considerata accettabile perché comunque si guadagna in semplicità di rappresentazione. Altre volte tale per-dita, semplicemente, non è percepibile dai nostri sensi.Nel caso specifico, la digitalizzazione è il processo con il quale un’immagine, un suono, un documento, un fil-mato sono trasformati in un formato digitale, ossia in una sequenza di byte interpretabile dall’elaboratore. L’operazione deve essere compiuta con l’ausilio di particolari strumenti, quali schede di acquisizione, per i bra-ni audio e i filmati, e scanner, per i testi e le immagini. A supporto di questi strumenti intervengono poi softwa-re appositi che completano e perfezionano l’operazione. Un esempio di questo tipo è dato dai cosiddetti sof-tware OCR, sigla che sta per Optical Character Recognition (riconoscimento ottico dei caratteri), che conver-tono un’immagine contenente testo in un testo modificabile con un normale programma di word processing.Se sul nostro personal computer apriamo un’immagine con il Blocco note, piccolo programma di videoscrittu-ra che ha la caratteristica di convertire ogni byte in una lettera o in un simbolo, otteniamo una finestra piena di lettere e di simboli strani, apparentemente senza senso (figura 10). Che è successo? Nulla ... il Blocco note ha fatto il suo lavoro: ha, cioè, convertito ogni byte che ha trovato nell’immagine nel carattere Ascii corrispon-dente, e questo dimostra che anche la nostra immagine è fatta di byte. Se avessimo fatto la stessa cosa con qualunque altro file trovato sul nostro computer il risultato sarebbe stato sempre lo stesso. Tutto ciò che è ospitato dall’elaboratore, quindi, è composto da byte, ossia da sequenze di bit.Come mai, allora, un programma ci mostra una cosa e un altro tratta gli stessi byte in modo totalmente diver-so? Per lo stesso motivo per cui le lettere che usiamo noi sono le stesse con le quali scrivono i Francesi e gli Inglesi, ma le parole che ne escono sono diverse. Ogni programma interpreta i byte secondo quanto specifica-to nelle sue istruzioni: il Blocco note come caratteri, un programma di grafica come punti colorati e così via.

Fig. 10 LastessaimmagineapertainunprogrammadigraficaenelBlocconotediWindows

7. Il linguaggio macchina e i linguaggi simbolici (syllabus 1.0.3.1, 1.0.3.3)

In precedenza abbiamo scritto che un programmatore deve comunicare al computer le istruzioni che intende fargli svolgere. Per fare questo il programmatore non può, ovviamente, utilizzare il suo linguaggio naturale

Page 10: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

18 Modulo 1 • Concettidibasedell’ICT

(l’italiano, l’inglese, il francese) ma deve scrivere il codice sorgente nel linguaggio artificiale, il cd. linguaggio programmazione che la macchina è in grado di comprendere. Esistono diversi tipi di linguaggi di programma-zione e possiamo suddividerli in:

• linguaggi macchina;• linguaggi assemblativi;• linguaggi ad alto livello o procedurali.

Il linguaggio macchina è costituito da un insieme limitato di semplici operazioni elementari scritte in codice binario per essere comprese ed eseguite dal microprocessore. Tali operazioni sono dette istruzioni macchina. Il linguaggio macchina non è un set di istruzioni universale, ma varia da processore a processore, anche se le modalità con le quali la CPU esegue le operazioni sono sempre le stesse.Ogni istruzione macchina è costituita da due parti: un codice operativo, che identifica ogni istruzione macchi-na e consente al microprocessore di identificarla, e un campo operandi, che contiene direttamente il dato da elaborare, oppure consente al processore di recuperarlo, passandogli l’indirizzo della cella di memoria che lo contiene. Contrariamente al codice operativo, il campo operandi a volte può mancare.Nei primi computer l’unico modo per eseguire delle istruzioni era quello di tradurre l’algoritmo direttamente nel codice binario e, quindi, un programma appariva come una semplice sequenza di bit, assolutamente in-comprensibili a chiunque, tranne (forse) al programmatore che li aveva scritti.Per superare questo problema e rendere più agevole la comunicazione tra uomo e macchina furono sviluppati dei linguaggi detti assemblativi, nei quali i comandi assumono nomi mnemonici che ricordano la loro funzione (READ = leggi, WRITE = scrivi e simili). Le variabili sono contenute in celle di memoria e identificate da nomi simbolici.Un codice sorgente di un linguaggio assemblativo, quindi, è un insieme di comandi simbolici che agiscono su operatori.

Linguaggio macchina e linguaggi assemblativi sono considerati linguaggi orientati alla macchina e questo comporta alcuni svantaggi:1) scarsa portabilità: gli algoritmi generati per un computer non sono portabili su elaboratori che abbiano un

linguaggio macchina differente;2) scarsa o nulla leggibilità: l’algoritmo è leggibile, praticamente, solo da chi lo ha scritto;3) tempi di realizzazione lunghi a causa delle difficoltà insite nei linguaggi.

I linguaggi macchina e i linguaggi assemblativi sono detti linguaggi di basso livello e dipendono strettamen-te dalla tecnologia impiegata. Per superare questi problemi sono stati creati dei linguaggi di programmazione di alto livello o procedu-rali che offrono migliori possibilità di programmazione rispetto al linguaggio di basso livello. Il primo van-taggio è quello di poter realizzare programmi indipendenti dalla macchina che deve eseguirli, inoltre i linguaggi di alto livello hanno una struttura molto vicina al linguaggio e alla logica umana in quanto costituiti da gruppi di simboli e di parole chiave, termini mnemonici e, soprattutto, da un insieme di regole sintattiche molto rigide e definite. I linguaggi procedurali sono, infine, quelli in cui le istruzioni per il com-puter vengono espresse indicando la sequenza di operazioni che devono essere svolte passo per passo. Quasi tutti i linguaggi usati per la programmazione sono di tipo procedurale fra i più noti meritano di es-sere citati C, FORTRAN, perl, Python. In tutti questi linguaggi il programmatore si concentra sulla risoluzio-ne del problema e non sull’elaboratore sul quale il programma dovrà funzionare. Si parla, pertanto, di lin-guaggi orientati al problema.Come avviene anche per i linguaggi assemblativi, i linguaggi di alto livello hanno bisogno di essere «tradotti» per diventare comprensibili al processore. Avremo, così, la necessità di usare particolari tipi di software, i compilatori, che traducono il codice sorgente in un oggetto binario eseguibile. In alternativa ai compilatori si possono usare gli interpreti, che traducono un’istruzione alla volta del codice sorgente e la mandano diretta-mente in esecuzione: in questo caso, quindi, il risultato finale non sarà un codice eseguibile, come nel caso del compilatore, ma l’esecuzione di un’istruzione alla volta. Per capire meglio il concetto supponiamo di andare all’estero: se non conosciamo la lingua del posto abbiamo bisogno di un interprete che parli per noi, mentre se ci rechiamo in un paese del quale parliamo la lingua siamo gli interpreti di noi stessi e, quindi, non abbiamo bisogno di nessun intermediario.Per concludere, un linguaggio di programmazione è un linguaggio formale, cioè è costituito da un insieme di parole costruite usando un insieme finito di simboli, detti caratteri o lettere, dotato di una sintassi, cioè di un insieme di regole e di relazioni che le legano, ben definita.

Page 11: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 19

8. I connettivi logici (syllabus 1.0.3.2)Nei linguaggi di programmazione si fa uso dei connettivi, o operatori logici, AND, OR e NOT che sono utiliz-zati per «legare» in un determinato modo due condizioni presenti nel programma stesso. Questo «legame» crea una terza proposizione autonoma che può avere solo due valori: Vero o Falso. Il valore di questa affermazione dipende proprio dal connettivo logico usato.Un semplice esempio concreto può aiutare a comprendere qualcosa che è, in effetti, molto astratto.Immaginiamo, allora, un programma che riceva dall’esterno dei dati e, nel corso della sua esecuzione si inter-rompa per chiedere all’utente di inserire due numeri diversi. Immaginiamo, ancora, che il programma, ricevu-ti i due numeri, debba verificare in qualche modo la loro parità e, in base a questo confronto, restituisca un risultato, una terza espressione che può essere vera o falsa.I numeri inseriti sono le proposizioni di partenza, il tipo di verifica è la condizione, il risultato della verifica è un’altra proposizione che può essere, in base all’operatore che lega le due proposizioni, vera o falsa.Se i due numeri inseriti dall’utente sono collegati in AND allora il risultato del confronto sarà Vero solo se tutti e due i numeri sono pari, falsa negli altri due.Se il collegamento è, invece, in OR è sufficiente che uno solo uno dei due numeri sia pari perché il confron-to dia risultato Vero. Se il collegamento è in NOT è necessario che tutti e due i numeri siano dispari perché il risultato sia Vero (si noti che questa affermazione è valida se l’operatore NOT è associato all’operatore AND).

9. Descrizione di algoritmi mediante uno pseudo linguaggio: scrivere un semplice programma con l’uso di uno pseudo linguaggio (syllabus 1.0.3.4)

Abbiamo visto in precedenza che è possibile rappresentare gli algoritmi usando i diagrammi di flusso. Abbiamo dato, cioè, una descrizione grafica del nostro risolutore. Possiamo ottenere lo stesso risultato utilizzando un linguaggio informale, detto pseudo linguaggio, simile al linguaggio naturale con cui parliamo abitualmente.La descrizione delle operazioni da compiere, effettuata con uno pseudo linguaggio, costituisce uno pseudo codi-ce, che può essere ben utilizzato per descrivere le operazioni che ci condurranno alla risoluzione del problema.Possiamo quindi definire lo pseudo linguaggio come un linguaggio di programmazione fittizio, non compilabile o interpretabile, e quindi non utilizzabile in pratica, che ci consente di descrivere il nostro algoritmo e di riprodurne le strutture. Le parole chiave che lo compongono descrivono l’operazione codificata e, generalmente, sono in inglese.Proviamo a convertire in pseudo linguaggio un semplice algoritmo: quello che utilizzeremo per calcolare il perimetro e l’area del rettangolo.ALGORITMO1) inizio2) attribuire un valore alla base3) attribuire un valore all’altezza 4) perimetro = (2 x base) + (2 x altezza)5) area = base x altezza6) attribuire alla variabile perimetro il valore calcolato nel punto 4 7) attribuire alla variabile area il valore calcolato nel punto 58) fine.Lo stesso algoritmo espresso in pseudo linguaggio:ALGORITMO RettangoloBEGIN (passo 1) INPUT base (passo 2) INPUT altezza (passo 3) perimetro = (2 x base) + (2 x altezza) (passo 4) area = base x altezza (passo 5) OUTPUT perimetro (passo 6) OUTPUT area (passo 7)ENDTra questa rappresentazione dell’algoritmo e quella a diagramma di flusso non c’è, in pratica, nessuna diffe-renza, se non il mezzo che abbiamo scelto per descrivere l’algoritmo.

Page 12: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

20 Modulo 1 • Concettidibasedell’ICT

Verifiche ed eserciziunità didattica 1

domande vero/falso Per ciascuna delle seguenti affermazioni, indicare se è vera o falsa v f 1) Unasequenzadioperazionioistruzionilogicamenteordinatacostituisceunprogramma

2) Unprocessodielaborazionenonènecessarioperdefinirel’informazione

3) Ildiagrammaablocchipuòesseredefinitocomela«mappa»delprogramma

4) L’algoritmoèunaserieinfinitadiazionichenonpermettelarisoluzionediunproble- ma,masololasuaindividuazione

5) Unsistemanumericoènonposizionaleseaognisimboloèassociatounvalorediverso, dipendentedallaposizionechelacifrahanelnumero

6) Immaginebitmapeimmaginerasterizzatasonosinonimi

7) Un’immaginevettorialeècompostadaunamappadipunticolorati(pixel)

8) Illinguaggiomacchinaècostituitodadistinteistruzionimacchina

9) Il linguaggio macchina ha tra i suoi vantaggi la velocità e la semplicità del linguag- giostesso

10) Ilinguaggiproceduralihannounastrutturasimileallinguaggioumano

domande a risposta multipla Per ciascuna delle seguenti domande indicare la risposta scegliendo una fra quelle

proposte 1) Unasequenzalogicamenteordinatadioperazionioistruzionicostituisce:

a) Unprogramma b) Uninput c) Unoutput

2) Undiagrammadiflussoèdetto,ininglese:

a) Flowblock b) Flowerchart c) Flowchart

3) Quale,traleseguenti,nonèunacorrettadefinizionedialgoritmo?

a) Sequenzadiazioniambiguemesseinattodaunprocessore b) Sequenzadiazionichel’esecutoredevecompiereperraggiungereunrisultato c) Seriediazionivoltearaggiungereunrisultatoattraversounnumerofinitodipassi

4) Lasoluzionediunalgoritmoèefficacese:

a) Risolveilproblemainmenodi5minuti b) Risolveilproblema c) Risolveilproblemamediantel’usodellaminorquantitàpossibiledirisorse

Page 13: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 21

5) Lasoluzionediunalgoritmoèefficientese:

a) Risolveilproblemainmenodi5minuti b) Risolveilproblema c) Risolveilproblemamediantel’usodellaminorquantitàpossibiledirisorse

6) Unsistemanumericonelqualeilvaloreinteroassociatoaunacifranondipendedallasuaposizioneall’internodellasequenzacherappresentailnumeroèdetto:

a) Assoluto b) Posizionale c) Nonposizionale

7) Un’immaginebitmapèdefinitada:

a) Unaformula b) Unamappadipixel c) Unalineacontinua

8) Ilinguaggiproceduralisono:

a) Dibassolivello b) Orientatiallamacchina c) Indipendentidallamacchinachedeveeseguireiprogrammi

9) ANDOReNOTsono:

a) Operatorilogici b) Flussididati c) Linguaggidialtolivello

10) Illinguaggiodiprogrammazioneèsempre:

a) Informale b) Formale c) Dibassolivello

domande a risposta libera Per ciascuna delle seguenti domande, fornire una risposta sintetica 1) Fornisciunadefinizionedialgoritmo.

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

2) Qualisonoleproprietàdiunalgoritmo?

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

Page 14: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

22 Modulo 1 • Concettidibasedell’ICT

3) Definisciisisteminumericiposizionali.

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

4) Definisciisisteminumericinonposizionali.

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

5) Spiegacomesirappresentanoglialgoritmiconlatecnicadeidiagrammidiflusso.

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

6) Fornisciunadefinizionedeltermine«informazione».

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

7) Definisciilinguaggidialtolivello.

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

8) Qualisonoledifferenzetrailinguaggidialtoebassolivello?

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

9) Descrivil’usodeglioperatorilogici.

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

10) Descrivilatecnicadel«topdown».

......................................................................................................................................................................................................

......................................................................................................................................................................................................

......................................................................................................................................................................................................

Page 15: modulo 1 - Casa Editrice - Edizioni Simone · modulo 1 Concetti di base dell’ICT ud1 Fondamenti concettuali di informatica ud2 Concetti generali ud3 Hardware ud4 Il software ud5

UD1 • Fondamenticoncettualidiinformatica 23

Esercitazioni pratiche

1) risolviilseguenteproblemautilizzandoundiagrammadiflusso:devousciredicasa,masepiovenonvogliobagnarmi;

2) risolviilseguenteproblemautilizzandoundiagrammadiflusso:sedomanièbeltempoandròagioca-reatennis,mac’èbisognocheMarcopassiaprendermiconl’automobile;

3) risolviilseguenteproblemautilizzandoundiagrammadiflusso:hovogliadiunbicchiered’acquafred-da,mahobisognodighiaccioperchénonc’èacquainfrigorifero;

4) risolviilseguenteproblemautilizzandoundiagrammadiflusso:domanidevoassolutamentesvegliarmialle7.30,altrimentifaròtardiascuola;

5) risolviilseguenteproblemautilizzandoundiagrammadiflusso:devocalcolarel’areadeltriangoloconbase3ealtezza6.