Lezione n. 1 - Laboratorio di Matematica classe II A
INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE “Turbo Pascal”
Situazioni
problematiche: risoluzione di problemi.
I problemi hanno origine dalla complessità della realtà che per l’osservatore attento spesso sono fonte di situazioni che possiamo definire problematiche e che creano curiosità e suscitano domande.
Uscire da una situazione problematica vuol dire compiere delle azioni che permettono di dare risposte alle domande poste, vuol dire “risolvere un problema”.
La strategia più valida per la risoluzione di un problema è quella di modellizzare la realtà: il modello è una rappresentazione della realtà che ha impoverito la realtà stessa spogliandola di tutti quegli attributi ritenuti superflui.
Il vantaggio che se ne trae nel passare dal reale ad un suo modello è che un modello può essere descritto con un linguaggio formale molto rigoroso come può essere quello della matematica: una formula, una espressione algebrica sono esempi di modelli.
Analisi
e risoluzione di un problema.
Colui che si propone di risolvere un problema, cioè il risolutore, deve svolgere una attività creativa nella ricerca della risoluzione del problema. Egli, avvalendosi del patrimonio di conoscenze precedentemente acquisite, deve seguire un cammino che si compone di più passi e che viene detto analisi del problema.
Il risolutore deve:
a) interpretare l’enunciato del problema e definire gli obiettivi che devono essere realizzati;
b) individuare le informazioni necessarie per risolvere il problema (dati iniziali) costruendo, se possibile, un opportuno modello della situazione problematica;
c) descrivere il procedimento risolutivo individuando le operazioni da compiere sui dati e collegarle logicamente per ottenere i risultati o dati finali;
d) eseguire nell’ordine le operazioni descritte nel processo risolutivo evidenziando i risultati o dati finali; in questa fase il risolutore assume il ruolo di esecutore;
e) verificare se i risultati ottenuti rispondono alle finalità del problema reale e, quindi, se i risultati sono o non sono attendibili.
A volte il risolutore e l’esecutore della risoluzione di un problema sono la stessa persona, ma a volte no.
Può presentarsi il caso che il risolutore affidi l’esecuzione del processo risolutivo ad un’altra persona oppure ad un esecutore automatico come, per esempio, ad un elaboratore elettronico. In questo caso, quando il risolutore descrive il procedimento risolutivo di un problema deve riferirsi all’esecutore.
Quindi la descrizione del procedimento risolutivo è condizionata dalle caratteristiche dell’esecutore.
Il risolutore deve:
a) sapere quale linguaggio comprende l’esecutore;
b) sapere quali sono le azioni operative e logiche che l’esecutore sa eseguire;
c) descrivere in modo ordinato, conciso e univoco le azioni che l’esecutore deve eseguire.
Il ruolo dell’esecutore invece si estrinseca nei seguenti passi:
1) ricevere i dati iniziali;
2) interpretare ed eseguire le azioni descritte nel processo risolutivo del problema;
3) fornire i risultati.
Gli
algoritmi.
La descrizione della risoluzione di un problema prende il nome di procedura.
Tutte le procedure, che operano su oggetti astratti, quali sono i dati dei problemi formalizzati, prendono il nome di algoritmi.
La procedura descritta per calcolare l’area di un triangolo è un algoritmo.
Un algoritmo è una successione finita di
istruzioni da eseguire una alla volta in un determinato ordine per risolvere
una classe di problemi.
Esempi “classici” di algoritmi sono le procedure di calcolo dell’aritmetica, quali l’addizione e la moltiplicazione in colonna.
Si costruisce un algoritmo ogni volta che, per risolvere un problema, lo si scompone in una successione finita di problemi elementari.
Per costruire un algoritmo è necessario dominare il problema, scomporlo in sottoproblemi elementari ed esprimere ciascuno di essi con una successione di istruzioni.
Per eseguire un algoritmo non è necessario conoscere la sua giustificazione teorica, bisogna solo “saperlo fare”, cioè saper eseguire le istruzioni. Quando si costruisce un algoritmo è quindi necessario sapere che cosa è in grado di fare l’esecutore, uomo o macchina che sia.
Un algoritmo è fattibile, cioè eseguibile, quando:
Ø si conclude con un numero finito di passi;
Ø indica l’ordine in cui ciascun passo deve essere eseguito;
Ø descrive le azioni da compiere in modo :
q non ambiguo, cioè non interpretabile in modi diversi
q completo, cioè privo di passi sottintesi
Ø è interpretabile dall’esecutore, cioè ogni passo è espresso con istruzioni che l’esecutore sa eseguire;
Ø indica tutti i dati necessari per la sua esecuzione;
Ø tiene conto delle risorse dell’esecutore in termini di
q tempo (l’algoritmo deve giungere a termine in tempi compatibili per gli scopi)
q spazio (memoria occupata dai dati,…)
q struttura fisica (capacità di gestione di tipi numerici estesi,….)
Ø
è corretto, cioè raggiunge effettivamente lo scopo per cui è
stato progettato, prevedendo e
trattando adeguatamente tutte le condizioni che si possono verificare.
Programmazione
strutturata.
Ogni algoritmo può essere espresso utilizzando solo tre strutture fondamentali che sono:
Scrivere
algoritmi, e quindi programmi, utilizzando solo le tre strutture
fondamentali vuol dire fare della programmazione strutturata.
In generale, un algoritmo non serve mai per risolvere un singolo problema ma per risolvere più problemi che differiscono solo per i dati iniziali.
L’insieme di
tutti i problemi che vengono risolti dallo stesso algoritmo costituisce una classe di
problemi.