Unità di apprendimento 6 Dal problema al programma
Unità di apprendimento 6 Lezione 1 Conosciamo gli algoritmi e i linguaggi
In questa lezione impareremo: cos’è un problema come affrontarlo come descrivere l’algoritmo risolutivo utilizzando i diagrammi a blocchi
Il calcolatore, i problemi, i programmi e i linguaggi di programmazione Il PC è una macchina complessa in grado di eseguire milioni di istruzioni al secondo. L’insieme di queste istruzioni prende il nome di programma. Ogni singola istruzione deve essere scritta secondo rigorose regole (sintassi) affinché l’elaboratore possa comprenderla correttamente
Il calcolatore, i problemi, i programmi e i linguaggi di programmazione Il programma viene scritto in un linguaggio di programmazione costituito da un insieme di regole sintattiche. Queste regole forniscono al calcolatore le istruzioni necessarie per portare a termine un determinato compito. Il linguaggio di programmazione usato dal programmatore è noto anche come linguaggio ad alto livello.
Il calcolatore, i problemi, i programmi e i linguaggi di programmazione E’ molto lontano dal codice binario linguaggio a basso livello, cioè dal formato dei comandi che un PC è in grado di eseguire. Affinché l’elaboratore sia in grado di comprenderlo, è necessario che venga effettuata una traduzione da un linguaggio all’altro.
Il calcolatore, i problemi, i programmi e i linguaggi di programmazione Questa operazione viene eseguita da particolari programmi, detti compilatori o traduttori. Sono programmi che trasformano il codice sorgente, scritto dal programmatore, in codice macchina, eseguibile dal calcolatore.
I problemi e la loro soluzione Alla base della scrittura di un programma c’è l’esigenza di risolvere un problema. La definizione di problema è la seguente: “Situazione difficile che si deve affrontare e risolvere e che presenta soluzioni alternative”. Per essere risolto, un problema deve essere innanzitutto compreso. La comprensione passa attraverso una fase di analisi, detta “studio della situazione reale” o, appunto, “fase di analisi”.
I problemi e la loro soluzione Sia nei problemi molto semplici fino a problemi complessi è sempre la fase di analisi e di comprensione che ci consente di giungere alla soluzione. Soltanto quando il problema è stato analizzato e compreso e se ne è trovata la soluzione il programmatore può passare alla scrittura del programma vero e proprio.
I problemi e la loro soluzione La comprensione passa attraverso lo “studio della situazione reale”: la fase di analisi. Si parte quindi dal problema per arrivare al programma individuando la soluzione: questo è il principale compito del programmatore
I problemi e la loro soluzione Il programmatore: dapprima si pone una serie di domande necessarie proprio per avere gli elementi della conoscenza del problema; successivamente può iniziare il lavoro di progetto per l’“individuazione di un algoritmo” risolutivo.
I problemi e la loro soluzione Il primo passo è quello di capire che cosa si deve risolvere. Quindi occorre ricercare la soluzione individuando come risolvere il problema (individuazione della strategia risolutiva).
Analisi e comprensione del problema L’analisi consiste nell’affrontare in modo sistematico il problema, studiando i vari aspetti della sua formulazione. Occorre preliminarmente delimitare con precisione l’area di interesse, ricordando che più ampia è la portata del problema da risolvere, maggiori diventano le complessità da affrontare sul piano concettuale, progettistico e operativo.
Analisi e comprensione del problema Per una corretta comprensione del problema è necessario: evidenziare reali obiettivi del problema; le regole; i dati espliciti e impliciti; eliminare i dettagli inutili e ambigui.
Astrazione, modellizzazione e definizione della strategia Per agevolare le operazioni di comprensione del problema il programmatore utilizza due strumenti fondamentali: l’astrazione la creazione del modello
Astrazione, modellizzazione e definizione della strategia L’astrazione è il primo importante strumento di lavoro nella fase di progettazione di un programma. Con l’astrazione il problema viene semplificato, ne vengono individuate le caratteristiche principali e contemporaneamente viene “scollegato dalla sua natura fisica” mediante il processo di modellizzazione.
Astrazione, modellizzazione e definizione della strategia Il modello è una rappresentazione del problema sotto una forma diversa da quella fisica. A seconda del progettista o delle esigenze e dell’ambito in cui si opera, è possibile che uno stesso problema possa essere associato a: un modello grafico un modello tabellare un modello simbolico
Astrazione, modellizzazione e definizione della strategia I modelli rappresentano lo strumento attraverso il quale viene concretizzato il concetto di astrazione fornendo la base del processo di risoluzione del problema. Il processo di ricerca della soluzione applica su tale modello un insieme di conoscenze e la soggettiva capacità di utilizzarle per elaborare una strategia risolutiva.
Astrazione, modellizzazione e definizione della strategia La ricerca può essere svolta in direzioni diverse: esistono tecniche che, partendo dai dati iniziali, cercano di arrivare alla soluzione applicando delle regole o degli operatori (metodi diretti); tecniche che partendo dalle possibili soluzioni, applicando opportuni operatori, cercano di ottenere i dati di partenza (metodi inversi).
Astrazione, modellizzazione e definizione della strategia I metodi si basano su: l’utilizzo dell’esperienza passata: somiglianza con altri problemi noti; analogia con altri problemi risolti; la scomposizione dei problemi in sottoproblemi; la conoscenza dell’argomento; il procedimento per tentativi.
Astrazione, modellizzazione e definizione della strategia gli strumenti a disposizione del progettista sono molteplici; ogni strumento deve sempre essere integrato e confrontato con l’esperienza e le abilità creative proprie del progettista per riuscire a dare vita alla soluzione del problema.
Astrazione, modellizzazione e definizione della strategia Tra gli strumenti ricordiamo: le conoscenze di matematica e algebra; l’intuito; la logica e il ragionamento deduttivo/induttivo; la fantasia e l’ingegno.
I problemi e la loro soluzione Una volta individuata la strategia risolutiva si scrivono le singole istruzioni da compiere, una dopo l’altra. L’insieme delle operazioni che permettono di risolvere un problema prende il nome di algoritmo. Il termine algoritmo deriva dal nome del matematico arabo Al Khwarismi.
L’algoritmo Al Khwarismi è ritenuto l’ideatore del procedimento che consente di effettuare il calcolo della moltiplicazione tra due numeri mediante la disposizione a cifre incolonnate E’ il procedimento che usiamo ancora oggi.
L’algoritmo L’algoritmo è un insieme di azioni elementari che consentono di risolvere un problema trasformando i dati iniziali del problema stesso nel risultato, cioè nell’insieme dei dati finali che rappresentano la soluzione. L’algoritmo è quindi una sequenza ordinata di passi semplici che hanno lo scopo di portare a termine un compito complesso
L’algoritmo L’algoritmo deve avere le seguenti caratteristiche: deve essere generale, cioè risolvere un insieme di problemi; opera su dati in ingresso producendo un risultato in uscita; le istruzioni sono ordinate e in numero finito; le istruzioni sono chiare e interpretate in modo univoco da chi le esegue; il risultato viene prodotto in un tempo finito; ogni volta che viene eseguito con gli stessi dati produce gli stessi risultati.
L’algoritmo Durante la fase di progetto vengono usate due modalità per descrivere gli algoritmi: il diagramma a blocchi (o flow chart) il linguaggio di progetto (o pseudocodifica)
Dall’algoritmo al codice macchina L’algoritmo codificato in pseudocodifica è ancora molto lontano dal programma che viene eseguito dal calcolatore. Il microprocessore è in grado di utilizzare solo il codice binario (distinguere 0 da 1). Può eseguire solo un codice rappresentato con zero e uno, che si chiama codice macchina.
Dall’algoritmo al codice macchina È possibile scrivere un programma direttamente in codice macchina. Si utilizza un linguaggio specifica, il linguaggio assemblativo. Codificare programmi in questo linguaggio è molto complesso dato che mette a disposizione del programmatore poche istruzioni e di basso livello.
Dall’algoritmo al codice macchina Esempio di codice eseguibile scritto in linguaggio macchina con a fianco il segmento di codice scritto in linguaggio assemblativo (anche detto assembly).
Dall’algoritmo al codice macchina E’ percorribile un’altra strada per arrivare al codice macchina: scrivere l’algoritmo in un linguaggio di programmazione di alto livello; mediante uno specifico programma, il compilatore, tradurre automaticamente il “programma sorgente” scritto ad alto livello in linguaggio macchina.
Dall’algoritmo al codice macchina Si traduce l’algoritmo in linguaggio di programmazione ad alto livello. Questo è un linguaggio formale, rigoroso, composto da un insieme di regole lessicali e sintattiche molto ridotte e schematizzate in numero. Devono essere sufficienti per poter descrivere in modo non ambiguo le istruzioni che il calcolatore deve eseguire.
Dall’algoritmo al codice macchina Esistono molteplici linguaggi di programmazione, diversi tra loro per: metodologia e filosofia adottata (paradigma); complessità e numero di istruzioni; settore e ambito di applicazione.
Dall’algoritmo al codice macchina Tra tutti ricordiamo solamente: il linguaggio Pascal, elaborato nel 1968 dal professor Wirth del Politecnico di Zurigo, che è tutt’oggi il linguaggio più diffuso e utilizzato per affrontare lo studio della programmazione; il linguaggio C, messo a punto da Dennis Ritchie per implementare i primi sistemi operativi negli anni Settanta, che è il linguaggio di riferimento sia per i programmatori “più esperti”.
Dall’algoritmo al codice macchina Schema riassuntivo di comparazione tra linguaggi
ABBIAMO IMPARATO CHE...