InformaticaProblema Algoritmo Programma Dispensa per il corso di Informatica ABACUS 3 Istituto...
-
Upload
bonaventura-d-angelo -
Category
Documents
-
view
219 -
download
0
Transcript of InformaticaProblema Algoritmo Programma Dispensa per il corso di Informatica ABACUS 3 Istituto...
Informatica ProblemaAlgoritmo Programma
Dispensa per il corso di Informatica ABACUS 3
Istituto Statale “E. TORRICELLI”
Liceo Scientifico - Tecnico Industriale
a.s. 2006-2007 Problema - Algoritmo - Programma 2
Informatica e InformazioneInformazione è 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 3
Problema
Cosa è questione da risolvere necessità da affrontare
Come si risolve attraverso una metodologia di lavoro
DEFINIRE il problema 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
a.s. 2006-2007 Problema - Algoritmo - Programma 4
Problema
Necessita esecutore
Fornisce 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 5
AlgoritmoDefinizione 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 finalideve risolvere medesime categorie di problemi
deterministicole 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 6
Algoritmo: gli elementi coinvoltiNella definizione si individuano tre elementi fondamentali:
DatiIniziali (o in ingresso)
sono gli elementi che vengono elaborati dall’algoritmoFinali (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 7
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 8
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 9
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 10
Linguaggio
È un sistema codificato di segni che Consente
comunicazione (=scambio di informazioni) Usa
regole di una grammatica generativo-trasformazionale per generare e trasformare le frasi (che possono essere
attive, passive, affermative, negative o interrogative)
a.s. 2006-2007 Problema - Algoritmo - Programma 11
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 12
Linguaggi per la stesura di un algoritmoSi 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 13
Diagrammi di flusso
Comprendonoelementi di forma diversa
segmenti orientati che uniscono tra loro i vari simboli
Indicanoil flusso delle operazioni
Consentonouna descrizione grafica dell’algoritmo
Fornisconouna visione immediata dell’intero procedimento e dell’ordine di esecuzione delle varie istruzioni
a.s. 2006-2007 Problema - Algoritmo - Programma 14
Simboli per Diagrammi di flussoSTART
Detto di input/output, utilizzato per rappresentare operazioni di acquisizione o di restituzione di dati
indicano il punto di partenza e quello di terminazione dell’algoritmo
detto di elaborazione e contiene al suo interno l’istruzione da eseguire (deve avere una sola freccia in uscita)
condizione
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)
END
a.s. 2006-2007 Problema - Algoritmo - Programma 15
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 16
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 17
È 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 ({ , })
leggi (lista di variabili)
scrivi (variabili e costanti)
SE ALLORA ALTRIMENTI FINESE
ESEGUI RIPETI FINCHE’
ESEGUI MENTRE RIPETI
Pseudocodifica: simboli e parole chiave
parole (simboli) che aprono e chiudono algoritmo
operazioni per descrivere l’acquisizione (leggi) e la restituzione (scrivi) dei dati
a.s. 2006-2007 Problema - Algoritmo - Programma 18
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:
Flow Chart delle strutture di controllo
Le istruzioni organizzate in sequenza devono essere eseguite una dopo l’altra secondo l’ordine con cui sono state scritte
Istruzione 1
Istruzione N
…
condizione
istruzione1 istruzione2
T FSE (condizione vera)
alloraESEGUI istruzione 1
ALTRIMENTI ESEGUI istruzione 2
FINESE
condizione
istruzione
T
F
SE (condizione vera)alloraESEGUI istruzione
FINESE
Istruzione di Selezione ad una via Istruzione di Selezione a due vie
a.s. 2006-2007 Problema - Algoritmo - Programma 19
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:
TESEGUI istruzioniControlla condizione
RIPETI FINCHÉ’ (condizione vera)
Cicli con controllo in testa (ripetizioni precondizionali)
Cicli con controllo in coda (ripetizioni postcondizionali)
condizione
istruzioni
T
F MENTRE (condizione vera) ESEGUI istruzioniRIPETI
condizione
istruzioni
F
a.s. 2006-2007 Problema - Algoritmo - Programma 20
Traduzioni nei linguaggi C e Java
if (condizione vera){ ESEGUI istruzione 1}else{
ESEGUI istruzione 2 }
condizione
istruzione1 istruzione2
T FSE (condizione vera)
alloraESEGUI istruzione 1
ALTRIMENTI ESEGUI istruzione 2
FINESE
condizione
istruzione
T
F
SE (condizione vera)alloraESEGUI istruzione
FINESE
Istruzione di Selezione ad una via Istruzione di Selezione a due vie
if (condizione vera){ ESEGUI istruzione}
a.s. 2006-2007 Problema - Algoritmo - Programma 21
Traduzioni nei linguaggi C e Java
Cicli con controllo in testa (ripetizioni precondizionali)
condizione
istruzioni
T
F MENTRE (condizione vera) istruzioniRIPETI
while (condizione vera) {
istruzioni }
ESEGUI istruzioniRIPETI FINCHÉ’ (condizione vera)
Cicli con controllo in coda (ripetizioni postcondizionali)
Tcondizione
istruzioni
F
do{istruzioni
}while (condizione vera);
a.s. 2006-2007 Problema - Algoritmo - Programma 22
Esempi di algoritmi: calcolo dell’e-esima potenza
INIZIO
Leggi base
Leggi esp
val=1
Esp <> 0F
val=val*base
esp=esp - 1
VScrivi val
FINE
a.s. 2006-2007 Problema - Algoritmo - Programma 23
INIZIO
LEGGI base
LEGGI esp
val = 1
ESEGUI MENTRE esp <> 0
val = val * base
esp = esp - 1
RIPETI
SCRIVI val
FINE