Unità di apprendimento
Lezione 1: Conoscere gli algoritmi e i linguaggi
In questa lezione impareremo:
- cos'è un problema
- come affrontarlo
- come descrivere l'algoritmo risolutivo utilizzando i diagrammi a blocchi
Mappa dei saperi essenziali
didattica inclusiva
situazione reale
fisica
matematica
economia
scienze
altre discipline
1
pongono un
si ricerca
problema
algoritmo
linguaggio
di codifica
mediante
soluzione
si definisce
analisi
grafico
testuale
si individua la
che porta alla
strategia
FLOW
CHART
LINGUAGGIO DI
PROGRAMMAZIONE
I problemi e la loro soluzione
- I| 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
DATI INIZIALI
PROGRAMMA
DATI FINALI
Il programma e il linguaggio 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
Linguaggio ad alto e basso livello
- 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.
La base della scrittura di un programma: il problema
- 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".
La fase di analisi e la 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
L'importanza dell'analisi e della comprensione
- 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.
Il ruolo del programmatore
- 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.
Ricerca della soluzione e strategia risolutiva
- 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).
il problema
l'idea
il programma
L'analisi sistematica 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.
Comprensione del problema: obiettivi, regole e dati
- 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.
Metodi per affrontare i problemi
- I metodi per affrontare i problemi 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.
Strumenti a disposizione del progettista
- 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.
Strumenti per la soluzione dei problemi
- Tra gli strumenti ricordiamo:
- le conoscenze di matematica e algebra;
- l'intuito;
- la logica e il ragionamento deduttivo/induttivo;
- la fantasia e l'ingegno.
Strategia risolutiva e algoritmo
- 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 problema
l'analisi
l'idea
(la strategia)
la soluzione
(l'algoritmo)
Il concetto di algoritmo
- Il termine algoritmo deriva dal nome del matematico arabo Al Khwarismi, vissuto nel IX secolo d.C.
- è una "deformazione" proprio del suo nome
- Qualcuno sostiene che tale deformazione sia imputabile a Fibonacci
L'algoritmo di Al Khwarismi
- 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.
1200
VIET
MUxaMMen
Joanb.XOPe3MLI
Definizione di 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
Caratteristiche dell'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.
Modalità di descrizione degli algoritmi
- Durante la fase di progetto vengono usate due modalità per descrivere gli algoritmi:
- il linguaggio di progetto/naturale (o pseudocodifica)
- il diagramma a blocchi (o flow chart)
Pseudocodifica di un algoritmo
- La descrizione di un algoritmo in linguaggio naturale prende il nome di pseudocodifica
ESEMPIO
Scriviamo la pseudocodifica dell'algoritmo che ci permette di
IV
re
essaggio col cellulare.
- Accendi il telefono
- Seleziona la app opportuna tra quelle presenti nel tuo telefono
- Se il numero del destinatario è presente nella tua agenda
- Seleziona il numero digitando il nome o facendo scorrere l'elenco
- Altrimenti digita il numero sulla tastiera numerica
- Compila il messaggio da inviare
- Clicca sull'icona <invio>
Generalità dell'algoritmo
- L'algoritmo deve essere il più possibile generale, cioè contemplare tutte le possibili situazioni e non un caso specifico
Prova adesso!
Scrivi la procedura per preparare e
cuocere una pizza margherita par-
tendo dai suoi componenti e indi-
cando dettagliatamente ogni sin-
gola operazione, una per riga.
- Definizione
dell'algoritmo
- Codifica in
pseudocodice
Dall'algoritmo al codice macchina
- L'algoritmo codificato in pseudocodifica è ancora molto lontano dal programma che viene eseguito dal calcolatore o dai dispositivi digitali in generale.
Microprocessore e codice binario
- Il microprocessore è in grado di utilizzare solo il
codice binario (distinguere 0 da 1).
- Può eseguire solo un codice composto da 0 e 1
che si chiama codice macchina.
ALGORITMO
RAPPRESENTAZIONE
linguaggio naturale
codice binario
ESECUTORE
CPU
Scrittura di programmi in 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.
Esempio di codice macchina e assemblativo
- Esempio di codice eseguibile scritto in linguaggio macchina con a
fianco il segmento di codice scritto in linguaggio assemblativo (anche
detto assembly).
Indirizzo
Opcode
Data
Significato
0000
1101
000000001001
IN X
0001
1101
000000001010
IN Y
0010
0000
000000001001
LOAD K
0011
0111
000000001010
COMPARE Y
0100
1001
000000000111
JUMPGT DONE
0101
1110
000000001001
OUT H
0110
1000
000000000000
JUMP LOOP
0111
1110
000000001010
OUT Y
1000
1111
000000000000
HALT
1001
0000
000000000000
CONST 0
Codice macchina
Linguaggio assemblativo
Traduzione dell'algoritmo in 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.
l'algoritmo
Linguaggio naturale
linguaggio di programmazione
{codice sorgente)
compilatore
interprete
linguaggio macchina
(codice binario)
Linguaggio di programmazione ad alto livello
- 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
Diversità dei linguaggi di programmazione
- Esistono molteplici linguaggi di programmazione, diversi tra
loro per:
- metodologia e filosofia adottata (paradigma);
- complessità e numero di istruzioni;
- settore e ambito di applicazione
Esempi di linguaggi di programmazione
- 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".