Sei sulla pagina 1di 66

Fondamenti di informatica

Fondamenti di informatica
Indice degli argomenti
• Cenni su storia e funzionamento del computer
• la comunicazione uomo – macchina
• Algoritmi e problem solving
• I diagrammi di flusso
• La programmazione strutturata
• I sottoprogrammi
• Principali strutture informative
• Algoritmi di ordinamento
• Programmazione elementare in C
Fondamenti di informatica
La parola informatica deriva dall’unione delle parole
INFORMazione ed automATICA, quindi è la scienza
che studia le informazioni, come salvarle e come
trattarle in maniera automatica.
Rappresentare le informazioni è tipico dell’essere
umano: il linguaggio scritto e verbale sono nati per
rappresentare delle informazioni e comunicarle ai
propri simili, per rappresentare tramite un alfabeto
formato da simboli (lettere e numeri) ciò che ci
circonda e poterlo comunicare.
Fin dall’antichità l’uomo ha provveduto a trasmettere
informazioni ai suoi simili con i mezzi a disposizione,
dai graffiti nelle grotte, all’incisione su tavolette, alla
scrittura su carta, e si è ingegnato per farsi sollevare
nel lavoro di ogni giorno da, leve di vario tipo, aratri,
ruote, trattori, gru, macchine di ogni tipo, sempre pià
potenti e complessi con lo sviluppo della tecnologia.
Fondamenti di informatica
L’uomo ha avuto lo stesso atteggiamento anche nei
confronti del lavoro intellettuale, tanto che già i
Babilonesi avevano introdotto l’uso dell’abbaco.

Ma l’obiettivo è stato quello di sollevare l’uomo


• nell’esecuzione intensiva di calcoli complessi
• nell’esecuzione di lavori ripetitivi
• nell’archiviazione di grosse quantità di dati
Fondamenti di informatica
Nel 1642 il matematico Blaise Pascal mediante ruote
dentate e manovelle costruì la Pascalina, una
macchina per eseguire calcoli che riusciva a risolvere
anche degli integrali, ma era soggetta a frequenti
rotture, ed i dati dell’integrale andavano inseriti con
una modalità piuttosto complicata.
Fondamenti di informatica
Il primo ad avvicinarsi alla soluzione del problema
dell’inserimento dei dati in una macchina fu
l’industriale tessile Jacquard, che riuscì a rendere i suoi
telai programmabili per costruire tipi di stoffa diversi
con lo stesso telaio. Inventò la codifica delle posizioni
delle viti del telaio in base a dei fori praticati su un
nastro di carta: ottenne così macchine dello stesso tipo
specializzabili in base al nastro dato in input.
Un po’ come i nostri pc,
che ci forniscono un
servizio in base al
programma che usiamo:
word, excel, power point,
.... rendono il nostro pc
specializzato.
Il telaio di Jacquard è
importante per la novità
del concetto introdotto.
Fondamenti di informatica
La prima macchina di calcolo numerica fu costruita nel
1833 da Babbage, costruita con un complicato sistema
di ruote dentate che però si rompeva spesso, poiché
gli ingranaggi delle ruote erano soggette a grande
usura data la velocità con cui dovevano girare.
Fondamenti di informatica
Il primo grande lavoro di rilevamento dati fu compiuto
negli Stati Uniti alla fine del 1800 per fare un
censimento delle persone.
Furono create delle schede perforate sulle quali
vennero memorizzati i dati delle persone.
Nella prima metà del 1900 con lo sviluppo
dell’elettricità e dell’elettronica, iniziarono fare i primi
esperimenti nella costruzione di calcolatori elettronici,
costruiti con valvole invece che ingranaggi.
Una grande spinta si ebbe durante
la seconda guerra mondiale: la
necessità di decifrare i codici
nemici, di calcolare bene il lancio
delle bombe portarono alla
costruzione dei primi calcolatori, e
grazie alla collaborazione di molti studiosi dell’epoca si
costruirono le prime macchine a scopo bellico.
Fondamenti di informatica
Con questa tecnologia il primo calcolatore che fu
costruito a scopi non bellici fu l’ENIAC, presentato nel
1946 a Philadelphia

Costruito con 18.000 valvole, era lungo 25 metri e alto


3 metri, pesava 30 tonnellate e poteva eseguire 5000
operazioni al secondo, altissimo il consumo di energia
Fondamenti di informatica
La tecnologia dagli anni 60 in poi si è evoluta
velocemente, dalle valvole si è passati velocemente
all’uso dei transistor e poi ai circuiti integrati,
consentendo la costruzione di macchine sempre più
potenti, più piccole e leggere per aiutare l’uomo
nell’elaborazione e nella conservazione delle
informazioni.
Fondamenti di informatica
La cosa più importante dell’Eniac è che il modello sul
quale è stato costruito, noto come macchina di Von
Neumann, matematico ungherese che ebbe parte
molto attiva nella realizzazione delle prime macchine
programmabili, è ancora alla base del funzionamento
dei moderni calcolatori
Fondamenti di informatica
Unità di controllo ha il compito supervisionare il
buon funzionamento della struttura, ed invia degli
ordini a tutti i componenti per far eseguire le
operazioni necessarie
Fondamenti di informatica
I vari componenti del sistema non lavorano in modo
autonomo, ma eseguono gli ordini ricevuti dall’unità di
controllo, che deve essere sempre al corrente della
loro situazione: l’unità operativa non riceverà una
richiesta di eseguire dei nuovi calcoli finché non avrà
comunicato all’unità di controllo di avere finito e di
essere disponibile.
Fondamenti di informatica
Quindi il funzionamento della macchina è regolato un
continuo flusso di informazioni interne (comunicazioni
di stato ed ordini) e di informazioni dall’esterno
all’interno del computer e viceversa per comunicare il
risultato dell’elaborazione.
Fondamenti di informatica
Con lo sviluppo della tecnologia anche la struttura
interna si è arricchita e perfezionata, ma lo schema di
base è rimasto lo stesso
CPU – controllo
ed esecuzione
delle operazioni
RAM – memoria
centrale
ROM – read
only memory
I/O – unità
ingresso-uscita
Bus – canali di
comunicazione
interna
Fondamenti di informatica
La CPU è il cuore del computer, e contiene gli elementi
fondamentali per l’elaborazione
Fondamenti di informatica
Nel momento in cui viene richiesta l’esecuzione di un
programma, la CPU invia l’ordine di prelevarlo dalla
memoria di massa, di solito dall’hard disk, lo carica
nella RAM (Random Access Memory), poi trasferisce al
suo interno ed elabora un’istruzione alla volta
controllando e coordinando il funzionamento di tutte le
unità coinvolte. La comunicazione tra CPU, RAM e
periferiche avviene tramite particolari canali detti bus,
che sono di 3 tipi:
• bus dati trasferisce dati dalle memorie alla CPU
e viceversa
• bus indirizzi contiene l’indirizzo di memoria o il
dispositivo di I/O con il quale scambiare i dati
• bus di controllo la CPU trasmette e riceve
informazioni sullo stato dei vari componenti
Fondamenti di informatica
La memoria (RAM) contiene i dati e le istruzioni in
attesa di essere prelevati dal microprocessore per
essere elaborati, dunque lavora in maniera
strettamente accoppiata con esso.
Dati ed istruzioni sono le informazioni che noi dal
mondo esterno dobbiamo passare al computer affinché
possa eseguire il servizio che ci serve.
Per esserci uno scambio di
informazioni si presuppone
che le parti comprendano lo
stesso linguaggio: uomo e
computer, utilizzano lo
stesso linguaggio?
Fondamenti di informatica
Il linguaggio dell’uomo usa almeno 40 caratteri tra
lettere e numeri.
La memoria del computer è stata costruita con
componenti elettronici le cui celle elementari, chiamate
bit, possono trovarsi in due soli stati, che vengono
fatti corrispondere ai valori 0 ed 1.
Fondamenti di informatica
L’alfabeto che il computer conosce pertanto ha solo
due simboli, 0 ed 1: si tratta di un alfabeto binario,
molto diverso da quello dell’uomo, ma è l’unico che
può comprendere e che possiamo usare per
comunicare.
Per comprenderlo anche noi, dobbiamo quindi
assegnare un significato alle composizioni di 1 e 0.
Fondamenti di informatica
Una possibilità è quella di assegnare un codice univoco
a tutti gli elementi del nostro alfabeto, come ad
esempio a numeri, lettere minuscole, maiuscole,
caratteri di punteggiatura (!,?....).

1 bit ⇒ 2 stati (0, 1) ⇒ 2 oggetti


2 bit ⇒ 4 stati (00, 01, 10, 11) ⇒ 4= 22 oggetti
3 bit ⇒ 8 stati (000, …, 111) ⇒ 8=23 oggetti

k bit ⇒ 2k stati ⇒ 2k oggetti


Fondamenti di informatica
k bit ⇒ 2k oggetti
Utilizzando codici della stessa lunghezza la relazione
che lega il numero N di oggetti con il numero di bit da
utilizzare è
N ≤ 2k ⇒k ≥ log2N
52 lettere (26 maiuscole e 26 minuscole)
10 cifre
30 segni d’interpunzione
30 caratteri di controllo (EOF, CR, LF, …)
120 oggetti complessivamente
27 = 128 (N=120 k ≥ log2120)
Per rappresentare 128 caratteri ho bisogno di un
codice di almeno 7 bit.
Con un codice di 8 bit rappresento al massimo 256
caratteri
Fondamenti di informatica
Si può vedere la memoria come una sequenza di bit
posti uno vicino all'altro, ognuno contenente 0 o 1: la
memoria utilizza un alfabeto binario.

Per rappresentare i caratteri che usiamo per scrivere


possiamo usare un codice di 8 bit che ci permetterà di
aggiungere anche altri caratteri.
Per convenzione raggruppiamo i bit a gruppi di 8,
andando a formare un byte, che diventa il più piccolo
elemento di memoria indirizzabile.
Fondamenti di informatica
Guarderemo sempre la memoria come insieme di bytes

E per leggerne il contenuto scorreremo uno alla volta


in sequenza i singoli bytes, raggiungendoli in base alla
loro posizione, che verrà chiamata indirizzo di
memoria.
Comprenderemo il contenuto di ogni singolo byte in
base al codice a 8 bit che per convenzione si è deciso
di utilizzare.
Fondamenti di informatica
La rappresentazione dei numeri
In un sistema numerico a base fissa n, la
rappresentazione dei numeri è del tipo

ove d ϵ {d0 , d1, ... , dn-1 } è una delle cifre utilizzate


dal sistema numerico considerato, n la base del
sistema numerico stesso, ed r il numero delle cifre del
numero da rappresentare.
Ad esempio per rappresentare 1236 in base 10
Cifre {0,1,2,3,4,5,6,7,8,9}
1236 = 1·103 + 2 ·102 + 3 ·101 + 6 ·100
= 1000 + 200 + 30 +6
Fondamenti di informatica
Per rappresentare un numero in base 2 si ragiona allo
stesso modo
Cifre {0,1,}
100112 = 1·24 + 0 ·23 + 0 ·22 + 1 ·21+ 1 ·20
= 1610 + 0·8 + 0·4 + 2 +1
= 1910
Per rappresentare un numero in esadecimale (base
16) si ragiona allo stesso modo
cifre: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }

101H = 1 · 162 + 0 · 161 + 1 · 160


= 256 + 0 + 1 = 25710
Fondamenti di informatica
La rappresentazione esadecimale è molto comoda per
rappresentare i numeri binari raggruppandoli per semi-
byte

Soprattutto per il contenuto dei registri di memoria si


usa scrivere il contenuto di memoria di un byte in
esadecimale, in modo da compattare la
rappresentazione:
10110110  A6
Pertanto in informatica si fa largo uso del sistema
esadecimale
Fondamenti di informatica
La rappresentazione del testo
Per rappresentare il testo è necessario utilizzare una
codifica che associ in maniera univoca ad ogni
carattere una sequenza 8 bit contenenti 0 ed 1.
La prima codifica utilizzata è la codifica ASCII
(American Standard Code for Information
Interchange) che usa 7 (ASCII standard) o 8 (ASCII
esteso) bit per rappresentare rispettivamente 128 e
256 caratteri diversi.
Ad ogni numero contenuto nel byte si associa un
carattere:
da 65 a 90 le lettere maiuscole A,B, ... , Z
da 97 a 122 le lettere minuscole a,b, ... . z
da 48 a 57 le cifre da 0 a 9
Fondamenti di informatica

A 65 I 73 Q 81 Y 89
B 66 J 74 R 82 Z 90
C 67 K 75 S 83
D 68 L 76 T 84
E 69 M 77 U 85
F 70 N 78 V 86
G 71 O 79 W 87
H 72 P 80 X 88
Fondamenti di informatica
Per ampliare il numero di caratteri disponibili anche a
tutte le lingue straniere è stata sviluppata una nuova
codifica chiamata Unicode che utilizza prima 16 ed ora
32 bit per la codifica, mantenendo però, per
compatibilità, nei primi 256 caratteri la corrispondenza
con la codifica ASCII.
In questo modo Unicode permette di codificare più di
un milione di caratteri che vengono via via assegnati
con le nuove versioni, con lo scopo di comprendere
tutti i caratteri di tutte le lingue del mondo.
Per semplificare poi, chi non ha particolari esigenze
può utilizzare la codifica UTF-8 (8 bit), chiamando
UTF-16 (a 16 bit) e UTF-32 (a 32 bit) le versioni più
complete.
Fondamenti di informatica
Nello stesso modo in cui codifichiamo i dati, possiamo
codificare anche le istruzioni, che l’elaboratore dovrà
eseguire.

Il processore è in grado di eseguire solo azioni


elementari scritte in binario da compiere utilizzando i
registri nei quali trasferisce sia le istruzioni che i dati
coinvolti nell’istruzione da eseguire
Fondamenti di informatica
Il computer è una macchina capace di eseguire milioni
di istruzioni in un secondo e di contenere quantità
enormi di dati e di elaborarli.
Generalmente cerchiamo di utilizzare il computer per
velocizzare il nostro lavoro, per trovare velocemente la
soluzione a un problema, che può essere di varia
natura: matematica, finanziaria, amministrativa,…
Per far risolvere un problema al computer dobbiamo
comunicargli, attraverso delle istruzioni, cosa
vogliamo che faccia, in modo semplice e completo.
Le istruzioni devono essere elementari ed eseguite in
sequenza logica
Fondamenti di informatica
L’analista studia il problema, individua la strategia
risolutiva, la formalizza in maniera comprensibile
all’uomo, e il programmatore scrive le istruzioni per
il computer.
Fondamenti di informatica
L’insieme delle operazioni che permettono di risolvere
un problema prende il nome di algoritmo, dal nome
del matematico arabo Al Khwarismi ritenuto l’ideatore
del procedimento del calcolo della moltiplicazione tra
due numeri.
L’algoritmo dunque è una sequenza ordinata di
istruzioni elementari (univocamente interpretabili) che
permette di risolvere in un numero finito di passi un
problema anche molto complesso.
In generale non esiste una sola soluzione ad un certo
problema ma le soluzioni potrebbero essere numerose.
Un bravo analista deve trovare la strada più efficiente
che porta alla soluzione del problema posto..
Fondamenti di informatica
In altre parole un algoritmo è una sequenza di
istruzioni che verifica le seguenti quattro proprietà
fondamentali:
- La sequenza di istruzioni è finita
- La sequenza di istruzioni deve portare al
risultato
- Le istruzioni devono essere eseguibili
- Le istruzioni non sono ambigue
Anche nell’utilizzare la calcolatrice per eseguire un
calcolo dobbiamo compiere delle azioni ben precise ed
eseguirle nella sequenza corretta.
Gli esseri umani sono buoni esecutori di algoritmi
poiché seguendo il loro buon senso possono
migliorarli, i calcolatori invece non possiedono né buon
senso né intuizione.
Fondamenti di informatica
Nello scrivere l’algoritmo, dobbiamo sempre ricordare
a chi è diretto quanto stiamo scrivendo.
Dobbiamo sempre ricordare che il computer è un
esecutore preciso e veloce ma è sempre necessario
specificare tutto quanto è necessario fare fino al
minimo dettaglio, e prevedere tutte le possibilità,
perché da solo non può prendere decisioni.
Se vogliamo istruire un robot a riempire un bicchiere
d’acqua e darlo a un cliente, non basta dire
1. Prendi il bicchiere
2. Prendi la bottiglia
3. Versa l’acqua fino a metà del bicchiere
4. Porgi il bicchiere
Se la bottiglia è vuota, quando finirà il robot di stare
nella posizione di versare l’acqua?
Fondamenti di informatica
La fase di analisi del problema è di fondamentale
importanza per la buona riuscita del programma.
L’analista studia il problema, individua l’algoritmo e
lo formalizza in modo da schematizzare le operazioni
da compiere.
Il programmatore, seguendo le istruzioni pensate
dell’analista, scrive queste operazioni in un
linguaggio di programmazione, raccoglie le
istruzioni in un programma che poi sarà eseguito dal
computer.
Fondamenti di informatica
La formalizazione dell’algoritmo è un momento molto
delicato, poiché chi lo scrive deve non solo avere ben
chiaro come risolvere il problema, ma deve anche
strutturarlo in modo chiaro e semplice, senza
ambiguità e con delle istruzioni eseguibili.
La programmazione strutturata è nata come
proposta per regolamentare e standardizzare le
metodologie di programmazione e di scrittura degli
algoritmi.
L’idea è che la soluzione deve essere ottenuta
componendo istruzioni elementari, mediante alcune
regole di composizione (strutture di controllo)
Fondamenti di informatica
Le regole della programmazione strutturata
impongono quindi delle severe restrizioni nella
costruzione dei diagrammi di flusso
• Ci si basa su 3 strutture di base con un solo
ingresso e una sola uscita
• Le tre strutture possono essere concatenate una
di seguito all’altra o nidificate una dentro l’altra
• Non possono però essere intrecciate o
accavallate
Le tre strutture di controllo sono:
 concatenazione o composizione SEQUENZA
 struttura condizionale SELEZIONE
 struttura di ripetizione o iterazione
ITERAZIONE
Fondamenti di informatica
Il teorema di Bohm-Jacopini (1966) ci garantisce
che l’uso di queste tre sole strutture non limita il
potere espressivo, infatti hanno dimostrato che le
strutture di sequenza, selezione ed iterazione sono
sufficienti per descrivere qualsiasi algoritmo.
Fondamenti di informatica
Sequenza
La concatenazione (sequenza) di più istruzioni può
esser considerata come un’unica istruzione

Fanno parte del blocco di sequenza tutte le istruzioni


che esprimono un’azione da compiere, di lettura, di
scrittura o di calcolo.
Fondamenti di informatica
Selezione (a una via)
Serve per permettere di prendere una decisione: il
verificarsi o meno di una condizione permette di
eseguire o meno un’istruzione

Se condizione vera
allora
esegui istruzione
Fondamenti di informatica
Selezione (a due vie)
Serve per permettere di prendere una decisione: il
verificarsi o meno di una condizione permette di
eseguire l’istruzione 1 oppure l’istruzione 2

Se condizione vera
allora
esegui istruzione 1
altrimenti
esegui istruzione 2
Fondamenti di informatica
Iterazione (con test all’inizio)
Un’istruzione (o un blocco di istruzioni) viene eseguita
più volte in base al verificarsi o meno di una domanda
che ci si pone prima di eseguire l’istruzione

Se la condizione è vera si esegue l’istruzione e poi si


ritorna al test e lo si ripete. Se non è vera si continua
nel flusso.
Fondamenti di informatica
• L’istruzione viene ripetuta per tutto il tempo
durante il quale la condizione è vera.
• Se la condizione non è vera nemmeno la prima
volta, allora l’istruzione non verrà mai eseguita:
in generale non si sa a priori quante volte
l’istruzione sarà ripetuta
• Prima o poi, l’istruzione deve fare qualcosa che
condiziona l’esito del test, altrimenti non si
uscirebbe mai dal ciclo.
• Per questo motivo, in generale dentro ad
un’iterazione non avremo una sola istruzione ma
un blocco di istruzioni.
Fondamenti di informatica
Iterazione (con test alla fine)
E’ una variante della precedente: un’istruzione (o un
blocco di istruzioni) viene eseguita più volte in base al
verificarsi o meno di una domanda che ci si pone dopo
aver eseguito l’istruzione

Si esegue l’istruzione e poi ci si pone la domanda: se la


condizione è vera, si ripete l’istruzione, se non lo è si
continua nel flusso.
Fondamenti di informatica
Iterazione (con test alla fine)
• Se la prima volta la condizione è falsa l’istruzione
viene eseguita almeno una volta
• Analogamente al caso precedente, l’istruzione
deve fare qualcosa che condiziona l’esito del test,
altrimenti non si uscirebbe mai dal ciclo.
• Come nel caso del test all’inizio, si esce dal ciclo
se il test è falso.
• è adatta a quei casi in cui, per valutare una
condizione è necessario aver già eseguito
l’istruzione: tipico esempio controllo di un dato
digitato in input
Fondamenti di informatica
Il calcolatore è in grado di eseguire solo istruzioni
scritte in linguaggio binario detto anche linguaggio
macchina.
Il linguaggio macchina è un linguaggio orientato alla
CPU e chi lo usa deve avere una buona conoscenza del
set di istruzioni che essa può eseguire, del modo di
indirizzamento della memoria, di come la CPU esegue
ogni istruzione e dell'architettura del sistema utilizzato.
Scrivere in linguaggio macchina dunque è molto
difficile e richiede una grande preparazione tecnica e
teorica.
Per allargare la cerchia delle persone in grado di
scrivere un programma, si è passati all’utilizzo di
linguaggi più orientati all’uomo che alla macchina, detti
linguaggi di alto livello.
Fondamenti di informatica
Si tratta di linguaggi completamente indipendenti dal
tipo di CPU su cui operano, molto più aderenti al modo
di esprimersi di un essere umano e che non richiedono
una conoscenza specifica dell'architettura del sistema
su cui viene utilizzato il programma.
Esistono molti linguaggi, ed ognuno di essi è orientato
alla soluzione di problemi di una diversa tipologia.
Ci sono linguaggi più orientati alla soluzione di
problemi di tipo scientifico, altri di tipo commerciale.
A seconda del tipo di problema da risolvere, il
programmatore sceglie il linguaggio, scrive il
programma e lo salva nella memoria del computer.
Questo programma viene chiamato programma
SORGENTE (SOURCE-PROGRAM) e non è
comprensibile alla macchina.
Fondamenti di informatica
Il calcolatore è in grado di eseguire solo istruzioni
scritte in linguaggio macchina.
E’ necessario pertanto tradurre quanto scritto nel
linguaggio di alto livello in linguaggio macchina (di
basso livello).
Sono stati pertanto scritti dei programmi che fanno da
traduttori.
Fondamenti di informatica
Ci sono due tipi di traduttori in linguaggio macchina:
compilatore che traduce l’intero programma e
genera un elenco di istruzioni in linguaggio
macchina chiamato programma oggetto.

L’ interprete traduce ed esegue un’istruzione di


alto livello alla volta.
Fondamenti di informatica
Fondamenti di informatica
Riassumendo:
Studio del problema

definizione dell’algoritmo che


fornisce la soluzione

Scrittura del programma in un


linguaggio di alto livello (programma
sorgente)
Traduzione in linguaggio macchina per
creare il programma oggetto tramite la
compilazione
Fondamenti di informatica
Per risolvere un problema bisogna prima di tutto
comprenderlo in tutti i suoi aspetti, e per fare questo
bisogna prima studiare la situazione reale, porsi
molte domande sul contesto del problema che stiamo
studiando.
Prima di scrivere un programma per una bilancia
elettronica, dobbiamo informarci sull’utilizzo che le
persone faranno della bilancia, dove e quando viene
utilizzata, in quale parte del lavoro la bilancia deve
sostituire l’uomo.
Una bilancia elettronica da usare in casa come pesa
persone, avrà caratteristiche diverse da quelle di una
bilancia elettronica di un fruttivendolo o di un
supermercato o di un grossista.
Fondamenti di informatica
Per risolvere il problema è necessario:
 Studiare il contesto del problema - es bilancia
pesa persone ha un utilizzo diverso da quello della
bilancia da negozio per alimenti
 Evidenziare i reali obiettivi del problema -
es. devo solo rilevare il peso, devo calcolare il
prezzo e stampare etichetta, devo calcolare il
prezzo ed aggiungerlo a un conto che alla fine
sarà evidenziato o stampato, quali problematiche
del lavoro manuale devo risolvere, …
 Evidenziare le regole - es. il costo va calcolato
alla pressione di un bottone o va ricalcolato ogni
volta che cambia il peso, prevedere di applicare
degli sconti, far digitare il prezzo al kg o prenderlo
come dato inserito a priori, permettere o meno di
cancellare un articolo dall’elenco degli acquisti, ...
Fondamenti di informatica
 Evidenziare i dati coinvolti - es il peso, il
prezzo della merce al kg, la somma totale
 Studiare l’organizzazione delle azioni da
compiere (rilevare il peso, il prezzo al kg, …)
 Eliminare i dettagli inutili ed ambigui ( es il
colore delle etichette)
Dopo esserci soffermati a pensare a tutti questi aspetti
si tratta di formalizzare l’algoritmo, cioè dobbiamo
scrivere nella sequenza corretta le varie azioni da
compiere.
Un buon modo molto diffuso per evidenziare un
algoritmo procedurale è quello dei diagrammi a
blocchi o flow chart che evidenzia il flusso delle
azioni da compiere tramite una rappresentazione grafica
di facile comprensione per tutti.
Fondamenti di informatica
Blocco terminale – è usato per
indicare l’inizio e la fine dell’algoritmo, e
devono essere unici
Blocco di comunicazione – al suo
interno vengono scritte le operazioni di
dialogo tra uomo e macchina
Blocco di elaborazione – contiene le
istruzioni vere e proprie delle operazioni
da compiere
Blocco di test o selezione – contiene
operazioni di confronto il cui risultato
può essere SI o NO, Vero o Falso
Fondamenti di informatica
Ad esempio l’algoritmo per calcolare area e perimetro di
un quadrato, può essere il seguente:
inizio

Richiedi e leggi lato

Perimetro=lato*4

area=lato*lato

Comunica risultati

fine
Fondamenti di informatica
Leggiamo e trasformiamo un numero negativo in un
numero positivo.
inizio

Richiedi e leggi num negativo

no
errore Num < 0
si
Moltiplica num per -1

Comunica il numero

fine
Fondamenti di informatica
Studiamo ora il problema di mettere 2 litri di acqua in
un secchio della capacità di 4 litri utilizzando oltre al
secchio stesso di 4 litri solamente un altro secchio della
capacità di 3 litri
Dobbiamo individuare la strategia che ci permette,
travasando l’acqua da un secchio all’altro, di rimanere
con 2 litri d’acqua nel secchio più grande.
Studiando il problema ci accorgiamo che la differenza di
capacità tra i due contenitori è 1 litro, e noi dobbiamo
ricavare proprio il doppio di questa differenza.
Chiamiamo secchio4 il secchio della capienza di 4 litri, e
secchio3 quello di 3 litri.
Fondamenti di informatica
Con alcuni passi elementari riusciamo a risolvere il
problema :

inizio
Riempi secchio 4
Riempi secchio 4
Versa acqua da secchio 4
travasa secchio 4 in secchio 3
in secchio 3
Comunica che in
Svuota secchio 3 secchio 4 ci sono 2 litri

travasa quel che resta


fine
in secchio 4 (1 l)
in secchio 3
Fondamenti di informatica
Esercizio:
Descrivi con un diagramma di flusso l’algoritmo che
legge due numeri, individua quale dei due è maggiore,
li visualizza ordinati, poi calcola la media e visualizza
anche la media.
Fondamenti di informatica
inizio

Richiedi e leggi num1 e num2

no num1<num2 si
visualizza num1
visualizza num2
visualizza num1 visualizza num2

media = (num1 + num2) / 2

visualizza media

fine
Fondamenti di informatica
Al giorno d’oggi l’informazione è una risorsa strategica della società, e
poterne disporre in tempi brevi e nel formato più adeguato è di
fondamentale importanza per qualsiasi organizzazione.
Un informazione è una codifica di un pensiero, di un concetto, scienza
abbinata ad una tecnologia che rappresenta e manipola le informazioni.

Si tratta dunque di rappresentare il mondo esterno all’interno degli


elaboratori: salvare disegno o della musica tramite 0 ed 1. Non basta però
rappresentarle, ma abbiamo bisogno anche di manipolarle, e l’informatica
si occupa di questo, ed oggi è una tecnologia che ha procurato dei
cambiamenti sociali notevoli, comprese le regole di comunicazione sociale.
La macchina a vapore ha cambiato la società rurale in industriale, l’arrivo
dell’elettricità e del motore elettrico ha cambiato le industrie permettendo
la loro costruzione anche lontano da naturali fonti di energia
Fondamenti di informatica
Fondamenti di informatica