Il 0% ha trovato utile questo documento (0 voti)
9 visualizzazioni20 pagine

06 Algoritmo, Esecutore

Il documento tratta i fondamenti dell'informatica e degli algoritmi, definendo l'informatica come lo studio sistematico degli algoritmi per la rappresentazione e l'elaborazione dell'informazione. Viene spiegato il concetto di algoritmo come una sequenza finita di passi per risolvere problemi, evidenziando le proprietà essenziali come correttezza, efficienza e finitezza. Infine, si distingue tra algoritmo e programma, sottolineando che un programma è un algoritmo codificato in un linguaggio di programmazione per essere eseguito da un calcolatore.

Caricato da

francesca
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
9 visualizzazioni20 pagine

06 Algoritmo, Esecutore

Il documento tratta i fondamenti dell'informatica e degli algoritmi, definendo l'informatica come lo studio sistematico degli algoritmi per la rappresentazione e l'elaborazione dell'informazione. Viene spiegato il concetto di algoritmo come una sequenza finita di passi per risolvere problemi, evidenziando le proprietà essenziali come correttezza, efficienza e finitezza. Infine, si distingue tra algoritmo e programma, sottolineando che un programma è un algoritmo codificato in un linguaggio di programmazione per essere eseguito da un calcolatore.

Caricato da

francesca
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 20

10/03/2025

F O N DA M E N T I
D I I N F O R M AT I C A
E B A S I D I DAT I
I N G EG N E R I A
GESTIONALE
PROF. ROBERTO GENNA
A.A. 2024-2025

ALGORITMO
…E L’ I N F O R M AT I C A

1
10/03/2025

L’INFORMATICA

• Scienza della rappresentazione e dell’elaborazione e conservazione


dell’informazione

• L'informatica è lo studio sistematico degli algoritmi che descrivono e


trasformano l’informazione: la loro teoria, analisi, progetto, realizzazione
ed applicazione.
[ACM – Association for Computing Machinery]

ELABORAZIONE
DELL’INFORMAZIONE
• Per poter «operare» sull’informazione, come primo passo, occorre
definire una CODIFICA dell’informazione stessa.
E poi?

• Come elaborare l’informazione?


• Che cosa significa «elaborare» l’informazione?
• Come costruire un modello per elaborare l’informazione?

2
10/03/2025

ELABORAZIONE =
TRASFORMAZIONE
• Il concetto astratto di elaborazione è quello di “trasformazione
di dati”:
Y = F(X)
– X dati iniziali,
– Y dati finali,
– F è una qualche (regola o funzione di) trasformazione (nel senso
più generico possibile).

• Una elaborazione deve consentire di trovare (prima) una


forma di rappresentazione dei dati (codifica) e (poi) una
descrizione delle regole di trasformazione

ELABORAZIONE DEI DATI

• Come costruire un modello per elaborare l’informazione?


• Quali regole di trasformazione applicare?

3
10/03/2025

IL TERMINE ALGORITMO

• Il termine algoritmo significa


“procedimento di calcolo”, deriva
dal termine latino algorismus che
a sua volta deriva dal nome del
matematico persiano Abu Ja’far
Mohammed ibn-Musa al
Khowarismi, vissuto nel IX secolo
d.C.

COS’È UN ALGORITMO?
Intuitivamente:
• Un algoritmo è una sequenza finita di passi che
porta in tempo finito alla risoluzione di una classe
di problemi
– o, più in generale, alla realizzazione di un compito
• Risolvere un problema significa individuare un
(procedimento che permetta di arrivare al)
risultato atteso partendo dai dati iniziali
• Risolvere una classe di problemi significa
individuare il risultato qualsiasi siano i dati iniziali
(appartenenti al tipo…)

4
10/03/2025

FORMULAZIONE DI UN
PROBLEMA
• Processo di formulazione di un problema:
– Individuazione dei dati in ingresso
– Individuazione dei risultati desiderati

– Individuazione dell’algoritmo di risoluzione

RISOLVERE UN PROBLEMA
IN MODO GENERALE
• Talvolta si parla di problema intendendo «classe di problemi»; in
questo caso, per evitare confusione, il singolo caso (individuato dal
valore dei dati in ingresso) è detto istanza del problema

ESEMPIO:
• Problema P: dato un numero naturale n calcolare la somma dei primi
n numeri naturali
• Istanza di P: risolvere P per n = 12 (ovvero calcolare la somma dei
primi 12 numeri naturali)

Un problema può essere visto come l'insieme di tutte le sue possibili


istanze

10

5
10/03/2025

COS’È UN ALGORITMO?
RICORDA:
• Un algoritmo è una sequenza finita di passi che porta in tempo finito alla
risoluzione di una classe di problemi
– Sequenza = successione ordinata  è importante l’ordine in cui sono eseguiti i
passi
– Un passo: operazione elementare ben definita
– combinazioni di passi realizzano operazioni articolate, che consentono di
risolvere il problema
– finitezza: il problema deve essere risolto in un numero finito di passi; ovvero
non può richiedere infiniti passi.

11

COS’È UN ALGORITMO?

• Esempi di algoritmi nella vita quotidiana sono:


– le ricette di cucina,
– le istruzioni per montare un armadio,
– come stabilire se un numero è primo,
– la sequenza di fasi del programma di lavaggio della
lavabiancheria.

12

6
10/03/2025

ESEMPIO: SOMMA CON IL


PALLOTTOLIERE

13

ESEMPIO: SOMMA CON IL


PALLOTTOLIERE
• Si inizializzi il pallottoliere: si spostino sulla sinistra della prima riga un numero di
palline pari al primo addendo, si spostino sulla sinistra della seconda riga un numero
di palline pari al secondo addendo, si spostino tutte le palline della terza riga a destra
• Passo 1: si sposti una pallina dalla sinistra alla destra della prima riga e
contestualmente se ne sposti una dalla destra alla sinistra della terza riga
• Si ripeta il passo 1 finché non si è svuotata la parte sinistra della prima riga
• Passo 2: si sposti una pallina dalla sinistra alla destra della seconda riga e
contestualmente se ne sposti una dalla destra alla sinistra della terza riga
• Si ripeta l’operazione precedente finché non si è svuotata la parte sinistra della
seconda riga
• Lettura del risultato: il numero di palline che si viene a trovare alla sinistra della terza
riga al termine delle operazioni è il risultato

14

7
10/03/2025

ESEMPIO: L’IMPASTO
DELLA PIZZA (RICETTA)
• Dati iniziali:
– Ingredienti: farina, acqua, sale, lievito
• Procedimento:
Azioni
– “In una ciotola versare l'acqua, il sale, una piccola quantità di ordinate
farina (circa il 10%) ed infine il lievito.
– Cominciare a girare con un mestolo (con l'impastatrice utilizzare
la velocità più bassa) fino a quando il lievito si sarà sciolto,
– successivamente versare gradualmente la farina, e impastare
sempre con il mestolo in modo che questa venga assorbita
completamente dall'acqua.
– Continuare fino a quando la farina non è conclusa e
completamente assorbita.[...]”

15

ALGORITMO: DEFINIZIONE
– Un algoritmo è un procedimento effettivo di
calcolo esplicito, descrivibile mediante un
numero finito di regole non ambigue (cioè
interpretabili in modo univoco) che, partendo
da un insieme di dati iniziali (input), conduce
al risultato dopo un numero finito di
operazioni (cioè di applicazioni delle regole),
cioè produce un insieme di valori finali
(output).

16

8
10/03/2025

ALGORITMO: DEFINIZIONE
PAROLE CHIAVE
• Procedimento (o procedura): è un processo, un qualcosa
che avviene nel tempo..
• Effettivo: qualcosa che avviene realmente, che è stato
realizzato, si è avuto un suo soddisfacimento.
• Procedimento di calcolo: la serie di operazioni (istruzioni)
da eseguire per raggiungere il completamento (termine)
del calcolo.
• Operazione: Azione specificata dall’applicazione di
un’opportuna regola

17

PROPRIETÀ DI UN
ALGORITMO
• Correttezza
– perviene alla soluzione del problema dato, senza difettare di alcun passo
fondamentale
• Un algoritmo si dice corretto se, per ogni istanza di input, si ferma
con l’output corretto
• Efficienza
– perviene alla soluzione nel modo migliore possibile, usando la minima
quantità di risorse (compatibilmente con la sua correttezza)
– Esempi tipici di risorse: tempo (di esecuzione), spazio (di memoria), …
• Finitezza
– il numero totale di azioni da eseguire, per ogni insieme di dati di
ingresso, deve essere finito

18

9
10/03/2025

PROPRIETÀ DI UN
ALGORITMO
• Eseguibilità
– ogni azione deve essere eseguibile dall’esecutore in un tempo finito
• Non-ambiguità
– ogni azione deve essere univocamente interpretabile dall'esecutore
• Determinismo
– Un algoritmo eseguito più volte e da diversi esecutori, a parità di
premesse, deve giungere a medesimi risultati
• Generalità o Universalità
– Un algoritmo, compatibilmente con i vincoli espressi dal problema, si
occupa della risoluzione di famiglie di problemi

19

ESEMPIO
Trovare la radice quadrata del numero reale x.

• Il problema è algoritmicamente risolvibile o invece non-computabile?

• Se accettiamo come soluzione √2 come soluzione allora la soluzione è


banale: la risposta è la concatenazione del segno √ con l’input.

• Se invece vogliamo una espressione decimale (cioè espressa come


sequenza di cifre) allora il problema non è computabile (la radice di 2
non può essere mai computata esattamente!).
In altre parole, la richiesta che il numero di azioni sia finito è violata.

20

10
10/03/2025

ESEMPIO
Trovare la radice quadrata positiva, con precisione alla quarta cifra
decimale, del numero reale x.

• Si richiede una radice positiva!


• Non si accetta come soluzione √x!
• Limitare il risultato a 4 cifre decimali rende calcolabile il problema: si
ha un test da verificare ed esiste una condizione per cui il problema è
risolto (cioè una condizione per cui l’algoritmo termina)

21

UNA (POSSIBILE)
SOLUZIONE ERRATA!
Problema: Radice quadrata di X
1. INPUT: Scegli un numero Y
2. Calcola Y2
3. Se |X - Y2|< 5*10-4 allora OUTPUT: Y
4. altrimenti vai al passo 1

22

11
10/03/2025

UN’ALTRA (POSSIBILE)
SOLUZIONE
Problema: Radice quadrata di X
1. Y=1
2. Calcola Y2
3. Se |X - Y2|< 5*10-4 allora OUTPUT: Y
4. altrimenti sostituisci Y con (X/Y +Y)/2
5. vai al passo 2

23

ESEMPIO

• Problema: Calcolo delle radici reali di ax2+bx+c=0


• Algoritmo:
1) Acquisire i coefficienti a,b,c
2) Calcolare ∆ = b2−4ac
3) Se ∆<0 non esistono radici reali, eseguire l’istruzione 7)
4) Se ∆=0, x1=x2=−b/2a, poi eseguire l’istruzione 6)
5) x1=(−b+√∆)/2a; x2=(−b−√∆)/2a
6) Restituire i valori x1, x2
7) Fine

24

12
10/03/2025

L’ESECUTORE

25

L’ESECUTORE
• La nozione di algoritmo presuppone l’esistenza di un “ente”
capace di risolvere in modo automatico il problema
– detto ESECUTORE

– L’esecutore è un’entità che deve eseguire la sequenza di passi


che compongono l’algoritmo stesso.

– Si noti che l’esecutore deve essere in grado di eseguire tutti i


passi dell’algoritmo (o –meglio– ciascun passo dell’algoritmo)

– Questo implica a sua volta che un algoritmo presuppone


sempre la disponibilità di un opportuno esecutore.

26

13
10/03/2025

L’ESECUTORE
I requisiti fondamentali:
• l'algoritmo deve essere formulato in un linguaggio
perfettamente comprensibile all'esecutore
(perfettamente = in maniera non ambigua)
• le azioni presenti nell'algoritmo devono essere interpretate
inequivocabilmente dall'esecutore
(inequivocabilmente = unica interpretazione possibile)

ESECUTORE
una macchina astratta capace di eseguire le azioni specificate
dall’algoritmo

27

ESECUTORE E ALGORITMO
Introdotto il concetto di esecutore, possiamo riconsiderare il concetto
di algoritmo intuitivamente:
 Un algoritmo è una sequenza finita di passi (o azioni elementari
ben determinate), tutti interpretabili ed eseguibili da un esecutore,
passi che portano alla risoluzione automatica di un problema
(inteso come classe di problemi)
Nota: il fatto che i passi portano alla risoluzione implica che la
soluzione viene raggiunta in tempo finito

Metodo Risolutivo
(algoritmo)

ESECUTORE
DATI RISULTATO

28

14
10/03/2025

ALGORITMO E
PROGRAMMA
• Algoritmo
– descrizione della soluzione di un problema scritta in modo da poter essere
eseguita da un esecutore (eventualmente diverso dall’autore
dell’algoritmo)
– sequenza di passi (istruzioni) che operano su dati.
• Programma
– algoritmo scritto in modo da poter essere eseguito da un calcolatore
(esecutore automatico)
– Il programma è un algoritmo codificato in un linguaggio di
programmazione

• Per scrivere un programma è necessario rappresentare istruzioni


e dati in un formato tale che l’esecutore automatico sia capace di
memorizzare (istruzioni e dati) e manipolare (dati)

29

ALGORITMO E
PROGRAMMA
• Ogni elaboratore (esecutore automatico) è una macchina in grado di
eseguire azioni elementari su oggetti detti DATI.
– Azioni elementari: es. confrontare due numeri, eseguire semplici
operazioni aritmetiche, ecc.
• L’elaborazione delle azioni (passi) è richiesta all’elaboratore tramite
comandi elementari chiamati ISTRUZIONI espresse attraverso un
opportuno formalismo: il LINGUAGGIO di PROGRAMMAZIONE.

• Un programma è un testo scritto in accordo alla sintassi e alla


semantica di un linguaggio di programmazione.
• Un programma è la formulazione testuale, in un certo linguaggio di
programmazione, di un algoritmo che risolve un dato problema.

30

15
10/03/2025

ALGORITMO E PROGRAMMA:
PROBLEM SOLVING
Passi per la risoluzione di un problema:
 individuazione di un procedimento risolutivo
 scomposizione del procedimento in un insieme ordinato di azioni 
ALGORITMO
 rappresentazione dei dati e dell’algoritmo attraverso un formalismo
comprensibile dal calcolatore  LINGUAGGIO DI PROGRAMMAZIONE

problema algoritmo programma

metodo linguaggio
risolutivo di programmazione

31

ESEMPIO DI PROBLEMA

• Trovare il massimo fra tre numeri


• Dati (input): tre numeri
• Risultato (output): il valore massimo

32

16
10/03/2025

ESEMPIO DI ALGORITMO
• Trovare il massimo fra tre numeri:
• Dati: tre numeri A, B e C
Se A > B
se A > C il massimo è A
altrimenti il massimo è C
Se B > A
se B > C il massimo è B
altrimenti il massimo è C

SOLUZIONE ERRATA!

33

ESEMPIO DI ALGORITMO
• Trovare il massimo fra tre numeri diversi:
• Dati: tre numeri A, B e C
Se A > B
se A > C il massimo è A
altrimenti il massimo è C
Se B > A
se B > C il massimo è B
altrimenti il massimo è C

• Ci tocca tradurlo in Linguaggio di programmazione


(lo faremo nelle prossime lezioni !)

34

17
10/03/2025

OSSERVAZIONI
• L’algoritmo fa riferimento a dati (o
informazioni) di ingresso e a dati (o
informazioni) di uscita

• L’algoritmo calcola i dati di uscita a


partire dai dati di ingresso

35

OSSERVAZIONI
• Nel calcolo possono essere utilizzati altri
dati già presenti nella formulazione
dell’algoritmo (costanti) o già noti
all’esecutore
Si consideri ad esempio il problema (traccia o specifica):
Calcolare l’area di un cerchio, noto il raggio.

Dati di ingresso: RAGGIO, raggio del cerchio, numero reale


Dati di uscita: AREA, area del cerchio, numero reale

Algoritmo: AREA = 3.14 * RAGGIO2

36

18
10/03/2025

RICAPITOLANDO…

INPUT Elaboratore OUTPUT

Insieme di dati Insieme di dati


Ammissibili in ingresso Traduzione dei dati di ingresso desiderati
seguendo le direttive definite in un algoritmo
descritto mediante un linguaggio di
programmazione

Umano programma Elaboratore

37

LA PROGRAMMAZIONE
• Una volta tradotto un algoritmo in programma, bisogna eseguire quest'ultimo
per ottenere i risultati desiderati dall'elaborazione
• L’esecutore deve comprendere il linguaggio in cui è stato scritto il
programma.
• Oltre ai dati in ingresso, occorrono risorse di uso generale
– Nella ricetta della pizza, ad esempio occorre il tavolo per stendere la pasta.
– Nella somma col pallottoliere, occorrono i pioli (righe), i dischi (palline), …
(…e le risorse non sono infinite!)
• Quando un esecutore avvia l’esecuzione di un programma, si parla di
processo.
• La differenza tra programma e processo è cruciale: il programma descrive un
procedimento, il processo è l'attuazione di tale procedimento che richiede
un esecutore che effettua le azioni previste, usa le risorse necessarie, sfrutta
i dati di ingresso necessari.

38

19
10/03/2025

DIAGRAMMA RIASSUNTIVO
Linguaggio:
Sequenza statica metodo per descrivere
un algoritmo
Algoritmo:
sequenza di passi
per la realizzazione
di un compito Esecutore:
Sequenza dinamica entità che comprende
il linguaggio ed
esegue i passi

Specifica: Casi di test:


Dati di ingresso esempi concreti di
descrizione di un problema
dati di ingresso e e dati di uscita dati di ingresso e
dati di uscita corrispondenti uscite attese

39

20

Potrebbero piacerti anche