Istituto Statale “E. TORRICELLI”
Liceo Scientifico - Tecnico Industriale
Informatica Problema
Algoritmo Programma
Dispensa per il corso di Informatica ABACUS 3
Informatica e Informazione
Informazione è qualunque “cosa” che:
possiede un significato per qualcuno
ha, ha avuto o potrà avere un valore oppure un’utilità
può assumere forme diverse (simboli, numeri, grafici, disegni, colori…)
può essere comunicata (scambiata) tra due soggetti in diverse modalità
(scritta, orale..)
può essere archiviata, catalogata e memorizzata
può essere elaborata e trasformata nella forma più utile a seconda della
necessità
Informatica significa…
informazione + automatica
la scienza che studia teoria, analisi, progetto, efficienza, realizzazione e
applicazione degli algoritmi che descrivono e trasformano l’informazione
a.s. 2006-2007
Problema - Algoritmo - Programma
2
Problema
Cosa è
questione da risolvere
necessità da affrontare
Come si risolve
attraverso una metodologia di lavoro
DEFINIRE il problema
a.s. 2006-2007
Quali dati sono coinvolti
Quali dati sono disponibili
Quale soluzione ci si aspetta
Come si possono trovare i dati utili
INDIVIDUARE il percorso risolutivo
ESEGUIRE le azioni
Problema - Algoritmo - Programma
3
Problema
Necessita
Fornisce
esecutore
soluzione
Utilizza
dati
organizzati mediante l’ideazione di un percorso risolutivo
adeguato che comprende le azioni da intraprendere e la loro
sequenza esatta
Algoritmo
a.s. 2006-2007
Problema - Algoritmo - Programma
4
Algoritmo
Definizione formale
sequenza di azioni, valida per un insieme di dati iniziali ben definito, che, compiuta da un esecutore, trasformi i
dati nel risultato finale, attraverso un numero finito di passi elementari e non ambigui. Un algoritmo deve
presentare un punto di INIZIO (dove comincia il procedimento risolutivo) e un punto di FINE (raggiunto il quale si
interrompe l’esecuzione delle azioni)
Caratteristiche
completo ed esaustivo
per tutti i casi che si possono verificare durante l’esecuzione, deve essere indicata la soluzione da seguire
riproducibile
ogni successiva esecuzione dello stesso algoritmo con i medesimi dati iniziali deve produrre sempre i medesimi
risultati finali
deve risolvere medesime categorie di problemi
deterministico
le azioni di cui è composto devono fornire la medesima, certa soluzione, indipendentemente dalla natura
dell’esecutore
Le azioni che formano l’algoritmo devono essere:
in numero finito
non ambigue
realizzabili
Esempi intuitivi di algoritmi
i passi necessari per l’utilizzo di un elettrodomestico
le regole da seguire per la divisione di 2 numeri
le indicazioni per la consultazione di un orario ferroviario
a.s. 2006-2007
Problema - Algoritmo - Programma
5
Algoritmo: gli elementi coinvolti
Nella definizione si individuano tre elementi fondamentali:
Dati
Iniziali (o in ingresso)
sono gli elementi che vengono elaborati dall’algoritmo
Finali (o in uscita)
sono i risultati prodotti dall’algoritmo
Sequenza di azioni (istruzioni, passi elementari)
un’azione è un’operazione elementare (istruzione) che compone un passo
della serie di operazioni che deve essere eseguita sui dati di ingresso per
ottenere il risultato, cioè i dati in uscita
Esecutore (o processore)
è il soggetto che compie le azioni, cioè legge le istruzioni che devono essere
eseguite sui dati in ingresso, le interpreta e le esegue in modo da elaborare
tali dati per trasformarli in risultati, cioè dati in uscita.
l’insieme delle istruzioni deve essere scelto a seconda dell’esecutore, in
termini di qualità, di tipologia e di livello di dettaglio
a.s. 2006-2007
Problema - Algoritmo - Programma
6
Azioni e Istruzioni
Per descrivere le azioni è necessario disporre di un
linguaggio o di una notazione formale
ISTRUZIONI
descrizioni delle azioni
azioni svolte da un esecutore automatico
Un algoritmo è dunque composto da un certo numero di
istruzioni, ad esso corrisponde un processo composto da
un certo numero di azioni
a.s. 2006-2007
Problema - Algoritmo - Programma
7
Caratteristiche delle Istruzioni
Ogni istruzione deve essere concretamente realizzabile dall’esecutore, a cui è
affidato l’algoritmo
Le istruzioni che compongono un algoritmo devono essere precise e non ambigue,
in modo che non lascino dubbi nell’interpretazione da parte dell’esecutore
Ogni istruzione deve avere una durata limitata nel tempo
Ogni istruzione deve produrre, se eseguita, un risultato osservabile
Ogni istruzione deve avere carattere deterministico: se eseguita, a partire dalle
stesse condizioni iniziali, deve cioè produrre sempre il medesimo effetto
Le istruzioni devono essere elementari, cioè non ulteriormente scomponibili
rispetto alle capacità dell’esecutore
a.s. 2006-2007
Problema - Algoritmo - Programma
8
Algoritmo ed esecutore
Per una descrizione generale dell’ambiente in cui si
opera con l’informatica, vanno definite due figure
fondamentali:
Il programmatore, ovvero colui che organizza e scrive
l’algoritmo
L’utente, ovvero la persona che attiva l’esecuzione
dell’algoritmo e che interagisce con l’esecutore per fornirgli i
dati iniziali del problema e per utilizzare i risultati finali
Se per esecutore si intende un elaboratore elettronico,
l’algoritmo dovrà essere scritto secondo un linguaggio
definito, in modo da essere comprensibile da parte del
calcolatore.
Programma
a.s. 2006-2007
Problema - Algoritmo - Programma
9
Linguaggio
È un sistema codificato di segni che
Consente
comunicazione (=scambio di informazioni)
Usa
regole di una grammatica generativotrasformazionale
a.s. 2006-2007
per generare e trasformare le frasi (che possono essere
attive, passive, affermative, negative o interrogative)
Problema - Algoritmo - Programma
10
Linguaggio di programmazione
permette di codificare gli algoritmi in modo
che risultino “comprensibili” a un calcolatore
è un vero e proprio linguaggio con un lessico,
una sintassi e una semantica specifica.
a.s. 2006-2007
Problema - Algoritmo - Programma
11
Linguaggi per la stesura di un algoritmo
Si distinguono
Metalinguaggio
si usano simboli grafici (diagrammi di flusso = flow chart)
Pseudocodifica in linguaggio naturale
si usano parole chiave
In entrambi i casi, come in tutti i linguaggi, occorre definire
l’alfabeto (i simboli ammessi dal linguaggio)
le parole (le combinazioni dei simboli)
sintassi (le regole che permettono di associare tra loro le parole in
modo coerente)
a.s. 2006-2007
Problema - Algoritmo - Programma
12
Diagrammi di flusso
Comprendono
elementi di forma diversa
segmenti orientati che uniscono tra loro i vari simboli
Indicano
il flusso delle operazioni
Consentono
una descrizione grafica dell’algoritmo
Forniscono
una visione immediata dell’intero procedimento e
dell’ordine di esecuzione delle varie istruzioni
a.s. 2006-2007
Problema - Algoritmo - Programma
13
Simboli per Diagrammi di flusso
START
indicano il punto di partenza e quello di terminazione dell’algoritmo
END
detto di elaborazione e contiene al suo interno l’istruzione da eseguire
(deve avere una sola freccia in uscita)
Detto di input/output, utilizzato per rappresentare operazioni di acquisizione
o di restituzione di dati
condizione
a.s. 2006-2007
detto di decisione e serve per:
- rappresentare un’operazione di confronto tra due dati (in
corrispondenza delle frecce in uscita si trovano indicazioni del tipo
si/no, VERO/FALSO, V/F, T/F)
- stabilire se una proposizione (condizione) è vera o falsa
(Viene così definito il valore di un’espressione di tipo logico, cioè di
una variabile a due valori, a uno dei quali corrisponde il significato
di condizione verificata -vero, e all’altro quella di condizione non
verificata -falso)
Problema - Algoritmo - Programma
14
Pseudocodifica
È un linguaggio sintetico composto da un vocabolario e da
una sintassi molto ristretti
È la descrizione di un algoritmo ottenuta
utilizzando termini e parole del linguaggio comune
applicando regole che permettono di organizzare un tipo di testo
formalmente rigoroso e strettamente orientato alla stesura degli
algoritmi
Richiede il rispetto delle regole per la redazione del testo
dell’algoritmo
Consente al programmatore di esprimere le proprie idee in
una forma naturale
permettendo di concentrarsi sulla logica della soluzione del
problema
senza essere distratti dai vincoli formali richiesti nel lavoro di
stesura del programma.
a.s. 2006-2007
Problema - Algoritmo - Programma
15
La programmazione strutturata
La teoria della programmazione strutturata consente di realizzare algoritmi
costituiti da parti che dipendono l’una dall’altra, secondo un ben definito modello
organizzativo.
I modelli organizzativi si chiamano strutture di controllo, perché servono a
controllare il percorso all’interno del procedimento risolutivo, per ottenere i
risultati desiderati.
Si ritiene valido il teorema di JACOPINI-BÖHM:
Qualsiasi algoritmo può essere scritto utilizzando soltanto tre strutture di
base:
•Sequenza
•Alternativa (o di Selezione)
•Ripetizione (o Iterativa)
a.s. 2006-2007
Problema - Algoritmo - Programma
16
Pseudocodifica: simboli e parole chiave
È consentito l’uso di alcune parole chiave, o simboli, che
specificano:
•le azioni che devono essere compiute da un esecutore
•come strutturare la logica della soluzione adottata
INIZIO, FINE ({ , })
parole (simboli) che aprono e chiudono algoritmo
operazioni per descrivere l’acquisizione (leggi) e la
restituzione (scrivi) dei dati
leggi (lista di variabili)
scrivi (variabili e costanti)
SE ALLORA ALTRIMENTI FINESE
ESEGUI RIPETI FINCHE’
ESEGUI MENTRE RIPETI
a.s. 2006-2007
Problema - Algoritmo - Programma
17
Flow Chart delle strutture di controllo
Istruzione 1
…
Le istruzioni organizzate in sequenza devono essere
eseguite una dopo l’altra secondo l’ordine con cui sono state
scritte
Istruzione N
Nelle istruzioni che vengono eseguite in alternativa, l’esecutore deve operare una scelta
tra un certo gruppo di istruzioni e un altro gruppo, a seconda di ciò che succede in quel
momento durante l’elaborazione, cioè a seconda della validità o meno di una condizione:
Istruzione di Selezione ad una via
SE (condizione vera)
T
allora
ESEGUI istruzione
FINESE
istruzione
a.s. 2006-2007
condizione
F
Istruzione di Selezione a due vie
T
SE (condizione vera)
allora
ESEGUI istruzione 1
istruzione1
ALTRIMENTI
ESEGUI istruzione 2
FINESE
Problema - Algoritmo - Programma
F
condizione
istruzione2
18
Istruzioni che devono essere eseguite in ripetizione, cioè, a seconda delle
circostanze.
Vengono detti anche cicli e, a seconda di quando avvenga il controllo della
condizione, si distinguono in:
Cicli con controllo in testa (ripetizioni precondizionali)
F
condizione
MENTRE (condizione vera)
ESEGUI istruzioni
RIPETI
T
istruzioni
istruzioni
Cicli con controllo in coda (ripetizioni postcondizionali)
ESEGUI istruzioni
Controlla condizione
RIPETI FINCHÉ’ (condizione vera)
T
condizione
F
a.s. 2006-2007
Problema - Algoritmo - Programma
19
Traduzioni nei linguaggi C e Java
Istruzione di Selezione ad una via
SE (condizione vera)
T
allora
ESEGUI istruzione
FINESE
istruzione
if (condizione vera){
ESEGUI istruzione
}
a.s. 2006-2007
condizione
F
Istruzione di Selezione a due vie
T
SE (condizione vera)
allora
ESEGUI istruzione 1
istruzione1
ALTRIMENTI
ESEGUI istruzione 2
FINESE
F
condizione
istruzione2
if (condizione vera){
ESEGUI istruzione 1
}else{
ESEGUI istruzione 2
}
Problema - Algoritmo - Programma
20
Traduzioni nei linguaggi C e Java
Cicli con controllo in testa (ripetizioni precondizionali)
F
condizione
T
MENTRE (condizione vera)
istruzioni
RIPETI
while (condizione vera)
{
istruzioni
}
istruzioni
Cicli con controllo in coda (ripetizioni postcondizionali)
ESEGUI
istruzioni
RIPETI FINCHÉ’ (condizione vera)
istruzioni
do{
istruzioni
}while (condizione vera);
T
condizione
F
a.s. 2006-2007
Problema - Algoritmo - Programma
21
Esempi di algoritmi: calcolo dell’e-esima potenza
INIZIO
Leggi base
Leggi esp
val=1
F
Esp <> 0
V
Scrivi val
val=val*base
esp=esp - 1
a.s. 2006-2007
Problema - Algoritmo - Programma
FINE
22
INIZIO
LEGGI base
LEGGI esp
val = 1
ESEGUI MENTRE esp <> 0
val = val * base
esp = esp - 1
RIPETI
SCRIVI val
FINE
a.s. 2006-2007
Problema - Algoritmo - Programma
23