Informatica Problema Algoritmo Programma

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