Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la sequenza di queste azioni (per ricavare la media devo prima sommare gli n voti) una sequenza finita di azioni che conduce alla soluzione di un problema si definisce ALGORITMO 2 Per algoritmo si intende una successione finita di passi contenenti le istruzioni che specificano le operazioni da compiere per risolvere una classe di problemi. Definizione formale: una sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono la soluzione di un problema in un numero finito di passaggi 3 Esempi di algoritmi che applichiamo per la soluzione di problemi di vita quotidiana sono: le istruzioni per l’uso di un elettrodomestico la realizzazione di una ricetta di cucina ecc. Esempio di algoritmo: somma di 2 numeri (al computer) 1) 2) 3) 4) Inserisci da tastiera il primo numero e premi invio Inserisci il secondo numero e premi invio Calcola la somma dei 2 numeri inseriti da tastiera Mostra a video il risultato della somma ottenuta. 4 1) dati iniziali e finali: sono gli elementi che vengono elaborati dall’algoritmo (dati iniziali o di input) e i risultati prodotti dall’algoritmo (dati finali o di output). Es. nell’algoritmo dell’addizione, i dati iniziali sono gli addendi, il dato finale è la somma. 2) sequenza di azioni (istruzioni o passi elementari): un’azione è un’istruzione (operazione elementare) che deve essere eseguita sui dati in ingresso per ottenere i dati in uscita. 3) esecutore: è il soggetto che compie le azioni, cioè legge le istruzioni, le interpreta e le esegue. Le istruzioni quindi devono essere scritte in modo che l’esecutore possa comprenderle ed eseguirle correttamente. DATI DI INPUT ALGORITMO + ESECUTORE DATI DI OUTPUT 5 FINITO: un algoritmo deve essere composto da un numero finito di passi e deve presentare un punto di inizio e uno di fine, raggiunto il quale si interrompe l’esecuzione delle operazioni. DETERMINISTICO: l’algoritmo a fronte degli stessi dati di input deve produrre gli stessi risultati (es. l’istruzione “moltiplica 2x5” produce sempre il medesimo risultato). NON AMBIGUO: i passi che compongono l’algoritmo devono essere interpretati in modo chiaro dall’esecutore, senza lasciar dubbi (es. “se il numero è abbastanza grande allora dividilo per 3” istruzione ambigua!) 6 L'algoritmo può essere rappresentato in: ◦ PSEUDOCODIFICA: descrizione di un algoritmo utilizzando termini del linguaggio comune. Non si tratta di un vero e proprio linguaggio di programmazione (non è direttamente interpretabile dal computer), ma di un linguaggio sintetico che descrive la soluzione logica del problema. ◦ DIAGRAMMI A BLOCCHI: linguaggio formale di tipo grafico per rappresentare l’ordine di esecuzione delle istruzioni negli algoritmi. 7 Utilizzando la pseudocodifica, il programmatore esprime le proprie idee attraverso frasi elementari della lingua italiana (o inglese). Le regole generali della pseudocodifica sono: Le parole chiave che aprono e chiudono il testo di un algoritmo sono: INIZIO e FINE (BEGIN e END) Le istruzioni LEGGI e SCRIVI (READ e WRITE) vengono utilizzate per descrivere le operazioni input ed output dei dati. Ogni istruzione è indicata con una frase del linguaggio corrente e può essere un‘operazione oppure può indicare una decisione da prendere 8 Problema: Trovare il massimo di 3 numeri interi Analisi del problema: Dati di INPUT: 3 numeri inseriti da tastiera. Dati di OUTPUT: il valore massimo mostrato su monitor. Pseudocodifica: 1) 2) 3) 4) 5) 6) INIZIO LEGGI (n1, n2, n3); SE n1>n2 ALLORA max n1 ALTRIMENTI max n2; SE n3>max ALLORA max n3; SCRIVI (MAX); FINE 9 Un algoritmo può essere rappresentato anche attraverso un diagramma di flusso (o flow chart) : Un particolare simbolo grafico detto blocco elementare è associato a ciascun tipo di istruzione dell’algoritmo. I blocchi sono collegati fra loro tramite frecce che indicano il susseguirsi delle istruzioni. 10 INIZIO FINE questi simboli indicano il punto di partenza e di terminazione dell’algoritmo è il simbolo dell’elaborazione e contiene l’istruzione da eseguire è il simbolo per le operazioni di Input / Output F condizione V è il simbolo di decisione ed è usato per stabilire se una proposizione è vera (V) o falsa (F) 11 Un diagramma di flusso descrive un algoritmo se: ha un blocco iniziale e uno finale; è costituito da un numero finito di blocchi azione e/o blocchi lettura/scrittura e/o blocchi di controllo; Vediamo un esempio di diagramma di flusso per un semplice problema di geometria … 12 Pseudocodifica: Diagramma a blocchi: INIZIO 1) Inizio 2) Leggi rispettivamente il valore della base e quello dell’altezza 3) Calcola l’area del rettangolo : eseguendo il prodotto della base per l’altezza 4) Scrivi (a video) il valore dell’area 5) Fine Leggi(base, altezza) area=base*altezza Scrivi(area) FINE 13 Cosa calcola questo algoritmo? INIZIO raggio INIZIO raggio I area = raggio * raggio * π area F raggio = 0 area = raggio * raggio * π I V area = 0 O area O FINE FINE 14 PROBLEMA 1 ALGORITMO 2 PROGRAMMA 3 4 1. Analisi del problema e identificazione di una soluzione; 2. Stesura dell’algoritmo risolutivo; 3. Programmazione, cioè scrittura dell’algoritmo in un linguaggio adatto al computer; 4. Esecuzione del programma sul computer e verifica del suo funzionamento Attenzione: l’algoritmo è linguaggio di programmazione! indipendente dal 15 I computer usano il sistema binario costituito dai simboli (0,1) e di conseguenza non possono interpretare e comprendere il nostro linguaggio. Il linguaggio del computer, basato sui simboli binari (bit) si chiama LINGUAGGIO MACCHINA (codice macchina o linguaggio di basso livello) ed è costituito da una serie di istruzioni direttamente eseguibili per il computer. Per permettere la comunicazione tra “uomo” e “macchina” sono stati creati i LINGUAGGI DI PROGRAMMAZIONE (linguaggi ad alto livello o procedurali). 16 Linguaggio naturale (algoritmo) Linguaggio di programmazione CODICE SORGENTE COMPILATORE Linguaggio macchina I LINGUAGGI DI PROGRAMMAZIONE permettono di scrivere i programmi, cioè di “tradurre” un algoritmo in un linguaggio più comprensibile al computer, ma non direttamente eseguibile. Il programma scritto in linguaggio di programmazione si chiama codice sorgente e … per essere eseguito da una macchina deve essere compilato, cioè trasformato in LINGUAGGIO MACCHINA. Questa trasformazione viene fatta da un programma che si chiama COMPILATORE. 17 Algoritmo: diagramma di flusso start Problema : Dato un numero x, se questo è positivo sommare ad esso 1 altrimenti sottrarre ad esso 1. Infine stampare il risultato. Leggi x F X > 0? x= x+1 V x= x-1 Scrivi x end 18 Algoritmo: diagramma di flusso Codice Vb: Dim x As Integer x = InputBox("Inserisci il valore di x", "Inserimento dati", 0) If (x > 0) Then x=x-1 Else x=x+1 End If MsgBox ("Il risultato è " & x) 19