1CONTENUTIDefinizione di algoritmo
Caratteristiche di un algoritmo
Costruzione  di un algoritmo
Operazioni di assegnazione, input e output
Rappresentazione di un algoritmo: pseudocodifica e diagrammi a blocchi
Strutture degli algoritmi: sequenza, selezione, iterazione2PREMESSANel linguaggio comune spesso ci capita di dover descrivere dei procedimenti. Un esempio tipico sono le ricette di cucina	Per esempio, nella ricetta di una torta vengono elencate una serie di azioni da eseguire per ottenere il dolce 	alcune sono azioni elementari perché si possono eseguire senza ulteriori indicazioni (es. mettere lo zucchero)	 altre sono invece azioni complesse perché potrebbero aver bisogno di essere ulteriormente descritte scomponendole in ulteriori azioni elementari L’elenco delle azioni che si ricava fornisce un algoritmo che descrive un’azione complessa per mezzo di azioni elementariOgni volta che per risolvere un problema lo si scompone in una successione finita di problemi elementari si utilizza un algoritmo
3ALGORITMOSerie di prescrizioni o istruzioni che specifica l’insieme delle azioni da compiere per poter risolvere un problema.In particolare: L'algoritmo non è solamente l'insieme delle regole o dei comportamenti da applicare, ma anche l'esatta sequenza con cui vanno applicati per risolvere il problema a cui ci si riferisce.L’algoritmo deve essere collocato in un contesto (per costruire un algoritmo è necessario sapere cosa sa fare l’esecutore)Un algoritmo è una descrizione completa, univoca e esaustiva di un insieme finito di operazioni elementari, interpretabili e riproducibili da un esecutore, per portare a termine un dato compito e per raggiungere un risultato definitoin un tempo ragionevole.
4ALGORITMO - ESEMPIODeve Telefonare a PaoloMARIAnumero telefonico di PaoloInformazioni necessarie:Il messaggio da comunicareRisultati:Esito della telefonataAlgoritmoleggere il numero telefonico comporre il numeroa seconda della situazione che si presenta : se Paolo non risponde andare al passo 6se Paolo rispondeconversare con Paolo Chiudere la comunicazione
5ALGORITMO - REQUISITIFinitezza (Spaziale – Temporale)Deve pervenire al risultato finale con l'esecuzione di un numerofinito di azioni da poter essere eseguite in un tempo finitoGeneralità	Deve fornire il risultato del problema per tutti i possibili valori forniti dall'esterno. In questo caso si dice che l'algoritmo è definito su un intero insieme di valori e per tutti  fornisce un risultato correttoNon ambiguità	Deve sempre essere chiaro qual è il passo successivo da effettuare Eseguibilità	Deve essere effettivamente eseguibili dall’esecutoreCompletezza
6ALGORITMO - COSTRUZIONEEsaminare una specifica realtà o problema (fase di analisi)Costruirne un’astrazioneRappresentarla (più o meno) formalmente Individuare i dati di input e output e le risorse disponibili Individuare una sequenza di azioni che, eseguite, risolvano il problema nel mondo dell’astrazione
7ALGORITMI E LINGUAGGIUn algoritmo può essere comunicato in più linguaggiQuando chi riceve le istruzioni è un elaboratore elettronico il linguaggio deve essere adeguato al suo contestoA questo scopo sono stati creati i linguaggi di programmazione di alto livello (es. Pascal)Nei linguaggi è possibile codificare l’insieme delle istruzioni di un algoritmo per renderle eseguibili dal calcolatore
8V  9V  EEspressione, cioè una formula che specifica sempre un valore.Ogni espressione è composta da operandi e operatoriEASSEGNAZIONEUn'Assegnazione è un'azione in cui ad una variabile del problema, di un certo tipo, viene assegnato un valore di tipo compatibile (in conseguenza di un calcolo o copiandolo direttamente da un'altra variabile o da una costante). Le variabili  implicate nel calcolo non cambieranno il loro valore, ad eccezione eventualmente di quella che dovrà ricevere il valore calcolato (il risultato del calcolo)Gli operandi possono essere costanti, espressioni o variabiliGli operatori possono essere di tre tipi: aritmetici, di relazione e logici
9INPUTUn'operazione di Input è un'azione  in cui una variabile del problema viene impostata con un valore fornito dall'esterno. Con un'operazione di Input si possono impostare, volendo, più variabili con altrettanti valori. Questa operazione serve per fornire, dall'esterno all'algoritmo, dei valori su cui lavorare.
10OUTPUTUn'operazione di Output è un'azione in cui il valore o i valori rappresentati, ad un certo momento, da una o più variabili del problema vengono evidenziati all'esterno Questa operazione serve per comunicare i risultati, parziali o definitivi, ottenuti attraverso l'algoritmo
11ESEMPIO- ISTRUZIONIIl passo 1 serve a ricevere i dati iniziali,inputIl passo 4 serve a comunicare il risultato, outputCALCOLARE LA MEDIA ARITMETICA DI DUE NUMERI QUALSIASIAlgoritmo:Leggere i due numeriSommare i due numeriDividere il risultato per 2Comunicare il risultatoPer acquisire i dati possiamo usare le istruzioni del tipo: leggi, acquisisci, accetta.Per comunicare i dati possiamo usare le istruzioni del tipo: scrivi, comunica, mostra.Ci possono essere delle variabili, che non sono nè di input nè di output, ma che sono necessarie all’elaborazione e che vengono dette Variabili di Lavoro.
12ALGORITMO RAPPRESENTAZIONEPrima di scrivere il programma, normalmente si formalizza l'Algoritmo che dovrà essere eseguito, utilizzando un modello. La formalizzazione dell'algoritmo renderà più agevole la scrittura del programma stesso.Possiamo utilizzare sostanzialmente due Modelli per la rappresentazione degli Algoritmi: la Pseudo-Codifica e i Diagrammi di Flusso (Flow-Chart )
13PSEUDOCODIFICALa pseudocodifica è la descrizione di un algoritmo ottenuta utilizzando termini e parole del linguaggio comune, ma applicando una serie di regole che permettono di organizzare un tipo di testo formalmente rigoroso e strettamente orientato alla stesura degli algoritmiLa pseudocodifica utilizza delle regole per strutturare il testo:Le parole chiave che aprono e chiudono il testo di un algoritmo sono INIZIO e FINE. Altre parole chiave sono  ALLORA, SE, ALTRIMENTI, DA, ESEGUI, FINCHÉ, MENTRE, PER, RIPETI, Ogni istruzione è indicata con una frase del linguaggio corrente e può contenere un’espressione di tipo aritmetico o logicoLe istruzioni LEGGI (lista di variabili) e SCRIVI (variabili e costanti) vengono utilizzate per descrivere le operazione di immissione ed emissione dei datiLa richiesta all’utente per acquisire i dati necessari all’elaborazione può essere indicata con CHIEDI(lista dei dati che servono)Le variabili, le costanti vengono indicate da parole in minuscolo dette identificatori
14PSEUDOCODIFICA - ESEMPIOhArea del rettangoloPSEUDOCODIFICAbA= b  hINIZIODati inputChiedi (base, altezza)Leggi (base, altezza)Area  base * altezzaScrivi AreaDati outputFINEBase e altezza del rettangoloArea del rettangolo
15DIAGRAMMI A BLOCCHI (FLOW – CHART)Il metodo dei diagrammi a blocchi permette un visione immediata dell’intero procedimento e dell’ordine di esecuzione delle varie istruzioniI diagrammi a blocchiprevedono l'utilizzo di simboli grafici in cui vengono racchiuse le azioni da compiere.I simboli di forma diversa hanno ciascuno un proprio significato; all’interno di ogni simbolo è presente un breve testo sintetico. Linee orientate con frecce, che uniscono fra loro i vari simboli, indicano il flusso delle operazioni.Con questo modello si ottiene una rappresentazione che ha, nell'aspetto grafico, lo scopo di   mettere in particolare evidenza le strutture di base utilizzate.
16DIAGRAMMI A BLOCCHI (FLOW – CHART)Inizio Condizione Fine commentoL'Assegnazione viene rappresentata utilizzando un rettangolo, le operazioni di Input/Output da un romboide (due lati orizzontali) e le proposizioni logiche vengono racchiuse in un rombo. I vari simboli grafici vengono uniti fra di loro, nella sequenza da applicare, utilizzando una linea continua; deve sempre essere indicata la FINE e l'INIZIO
17FLOW CHART - ESEMPIOInizio Area del rettangoloDIAGRAMMA A BLOCCHIhChiedi base, altezzabA= b  hLeggi base altezzaDati inputBase e altezza del rettangoloArea base * altezzaDati outputScrivi area Area del rettangoloFine
18ALGORITMI - STRUTTUREUn programma serve per indicare al computer l'algoritmo da eseguire.	Per risolvere la formalizzazione degli algoritmi e di conseguenza la scrittura dei programmi  (il software) vengono utilizzate tre tipi di strutture logiche che ci permettono di collegare le azioni elementari che compongono un algoritmo: la Sequenza, la Selezione, e l'Iterazione.
19SEQUENZAè una concatenazione di azioniuna o più azioni devono essere eseguite in successioneper attuarlanon ci sono termini particolari nella pseudocodifica
20SEQUENZA - ESEMPIOAlgoritmo per calcolare la somma di due numeriInput: i due valori che dovranno essere sommati, indichiamoli con  ADDENDO1 e ADDENDO2 Assegnazione: il risultato ottenuto dalla somma  fra i due valori lo assegneremo alla variabile  SOMMA. Output: il valore presente nella variabile SOMMA.    
21SELEZIONEè una scelta di azioni alternative che dipendono da una condizioneuna o più azioni devono essere eseguite, in alternativa ad altre, in base ad una condizione posta. come alternativa alle azioni da effettuare, se la condizione è soddisfatta, possono anche non essere indicate azioni (in questo caso si andrà in sequenza, come se la Scelta non fosse presente).   I termini della pseudocodifica sono se, allora, altrimenti
22SELEZIONE - ESEMPIOalgoritmo per trovare il valore più grande fra due valori forniti Input: i due valori da attribuire alla variabile A e alla variabile B Output: il contenuto di una delle due variabili   ottenuto attraverso una Scelta;  il valore di A se è maggiore di B oppure il valore di B se A non è maggiore di B

Algoritmi

  • 1.
  • 2.
  • 3.
    Costruzione diun algoritmo
  • 4.
  • 5.
    Rappresentazione di unalgoritmo: pseudocodifica e diagrammi a blocchi
  • 6.
    Strutture degli algoritmi:sequenza, selezione, iterazione2PREMESSANel linguaggio comune spesso ci capita di dover descrivere dei procedimenti. Un esempio tipico sono le ricette di cucina Per esempio, nella ricetta di una torta vengono elencate una serie di azioni da eseguire per ottenere il dolce alcune sono azioni elementari perché si possono eseguire senza ulteriori indicazioni (es. mettere lo zucchero) altre sono invece azioni complesse perché potrebbero aver bisogno di essere ulteriormente descritte scomponendole in ulteriori azioni elementari L’elenco delle azioni che si ricava fornisce un algoritmo che descrive un’azione complessa per mezzo di azioni elementariOgni volta che per risolvere un problema lo si scompone in una successione finita di problemi elementari si utilizza un algoritmo
  • 7.
    3ALGORITMOSerie di prescrizionio istruzioni che specifica l’insieme delle azioni da compiere per poter risolvere un problema.In particolare: L'algoritmo non è solamente l'insieme delle regole o dei comportamenti da applicare, ma anche l'esatta sequenza con cui vanno applicati per risolvere il problema a cui ci si riferisce.L’algoritmo deve essere collocato in un contesto (per costruire un algoritmo è necessario sapere cosa sa fare l’esecutore)Un algoritmo è una descrizione completa, univoca e esaustiva di un insieme finito di operazioni elementari, interpretabili e riproducibili da un esecutore, per portare a termine un dato compito e per raggiungere un risultato definitoin un tempo ragionevole.
  • 8.
    4ALGORITMO - ESEMPIODeveTelefonare a PaoloMARIAnumero telefonico di PaoloInformazioni necessarie:Il messaggio da comunicareRisultati:Esito della telefonataAlgoritmoleggere il numero telefonico comporre il numeroa seconda della situazione che si presenta : se Paolo non risponde andare al passo 6se Paolo rispondeconversare con Paolo Chiudere la comunicazione
  • 9.
    5ALGORITMO - REQUISITIFinitezza(Spaziale – Temporale)Deve pervenire al risultato finale con l'esecuzione di un numerofinito di azioni da poter essere eseguite in un tempo finitoGeneralità Deve fornire il risultato del problema per tutti i possibili valori forniti dall'esterno. In questo caso si dice che l'algoritmo è definito su un intero insieme di valori e per tutti  fornisce un risultato correttoNon ambiguità Deve sempre essere chiaro qual è il passo successivo da effettuare Eseguibilità Deve essere effettivamente eseguibili dall’esecutoreCompletezza
  • 10.
    6ALGORITMO - COSTRUZIONEEsaminareuna specifica realtà o problema (fase di analisi)Costruirne un’astrazioneRappresentarla (più o meno) formalmente Individuare i dati di input e output e le risorse disponibili Individuare una sequenza di azioni che, eseguite, risolvano il problema nel mondo dell’astrazione
  • 11.
    7ALGORITMI E LINGUAGGIUnalgoritmo può essere comunicato in più linguaggiQuando chi riceve le istruzioni è un elaboratore elettronico il linguaggio deve essere adeguato al suo contestoA questo scopo sono stati creati i linguaggi di programmazione di alto livello (es. Pascal)Nei linguaggi è possibile codificare l’insieme delle istruzioni di un algoritmo per renderle eseguibili dal calcolatore
  • 12.
    8V  9V EEspressione, cioè una formula che specifica sempre un valore.Ogni espressione è composta da operandi e operatoriEASSEGNAZIONEUn'Assegnazione è un'azione in cui ad una variabile del problema, di un certo tipo, viene assegnato un valore di tipo compatibile (in conseguenza di un calcolo o copiandolo direttamente da un'altra variabile o da una costante). Le variabili  implicate nel calcolo non cambieranno il loro valore, ad eccezione eventualmente di quella che dovrà ricevere il valore calcolato (il risultato del calcolo)Gli operandi possono essere costanti, espressioni o variabiliGli operatori possono essere di tre tipi: aritmetici, di relazione e logici
  • 13.
    9INPUTUn'operazione di Inputè un'azione  in cui una variabile del problema viene impostata con un valore fornito dall'esterno. Con un'operazione di Input si possono impostare, volendo, più variabili con altrettanti valori. Questa operazione serve per fornire, dall'esterno all'algoritmo, dei valori su cui lavorare.
  • 14.
    10OUTPUTUn'operazione di Outputè un'azione in cui il valore o i valori rappresentati, ad un certo momento, da una o più variabili del problema vengono evidenziati all'esterno Questa operazione serve per comunicare i risultati, parziali o definitivi, ottenuti attraverso l'algoritmo
  • 15.
    11ESEMPIO- ISTRUZIONIIl passo1 serve a ricevere i dati iniziali,inputIl passo 4 serve a comunicare il risultato, outputCALCOLARE LA MEDIA ARITMETICA DI DUE NUMERI QUALSIASIAlgoritmo:Leggere i due numeriSommare i due numeriDividere il risultato per 2Comunicare il risultatoPer acquisire i dati possiamo usare le istruzioni del tipo: leggi, acquisisci, accetta.Per comunicare i dati possiamo usare le istruzioni del tipo: scrivi, comunica, mostra.Ci possono essere delle variabili, che non sono nè di input nè di output, ma che sono necessarie all’elaborazione e che vengono dette Variabili di Lavoro.
  • 16.
    12ALGORITMO RAPPRESENTAZIONEPrima discrivere il programma, normalmente si formalizza l'Algoritmo che dovrà essere eseguito, utilizzando un modello. La formalizzazione dell'algoritmo renderà più agevole la scrittura del programma stesso.Possiamo utilizzare sostanzialmente due Modelli per la rappresentazione degli Algoritmi: la Pseudo-Codifica e i Diagrammi di Flusso (Flow-Chart )
  • 17.
    13PSEUDOCODIFICALa pseudocodifica èla descrizione di un algoritmo ottenuta utilizzando termini e parole del linguaggio comune, ma applicando una serie di regole che permettono di organizzare un tipo di testo formalmente rigoroso e strettamente orientato alla stesura degli algoritmiLa pseudocodifica utilizza delle regole per strutturare il testo:Le parole chiave che aprono e chiudono il testo di un algoritmo sono INIZIO e FINE. Altre parole chiave sono ALLORA, SE, ALTRIMENTI, DA, ESEGUI, FINCHÉ, MENTRE, PER, RIPETI, Ogni istruzione è indicata con una frase del linguaggio corrente e può contenere un’espressione di tipo aritmetico o logicoLe istruzioni LEGGI (lista di variabili) e SCRIVI (variabili e costanti) vengono utilizzate per descrivere le operazione di immissione ed emissione dei datiLa richiesta all’utente per acquisire i dati necessari all’elaborazione può essere indicata con CHIEDI(lista dei dati che servono)Le variabili, le costanti vengono indicate da parole in minuscolo dette identificatori
  • 18.
    14PSEUDOCODIFICA - ESEMPIOhAreadel rettangoloPSEUDOCODIFICAbA= b  hINIZIODati inputChiedi (base, altezza)Leggi (base, altezza)Area  base * altezzaScrivi AreaDati outputFINEBase e altezza del rettangoloArea del rettangolo
  • 19.
    15DIAGRAMMI A BLOCCHI(FLOW – CHART)Il metodo dei diagrammi a blocchi permette un visione immediata dell’intero procedimento e dell’ordine di esecuzione delle varie istruzioniI diagrammi a blocchiprevedono l'utilizzo di simboli grafici in cui vengono racchiuse le azioni da compiere.I simboli di forma diversa hanno ciascuno un proprio significato; all’interno di ogni simbolo è presente un breve testo sintetico. Linee orientate con frecce, che uniscono fra loro i vari simboli, indicano il flusso delle operazioni.Con questo modello si ottiene una rappresentazione che ha, nell'aspetto grafico, lo scopo di   mettere in particolare evidenza le strutture di base utilizzate.
  • 20.
    16DIAGRAMMI A BLOCCHI(FLOW – CHART)Inizio Condizione Fine commentoL'Assegnazione viene rappresentata utilizzando un rettangolo, le operazioni di Input/Output da un romboide (due lati orizzontali) e le proposizioni logiche vengono racchiuse in un rombo. I vari simboli grafici vengono uniti fra di loro, nella sequenza da applicare, utilizzando una linea continua; deve sempre essere indicata la FINE e l'INIZIO
  • 21.
    17FLOW CHART -ESEMPIOInizio Area del rettangoloDIAGRAMMA A BLOCCHIhChiedi base, altezzabA= b  hLeggi base altezzaDati inputBase e altezza del rettangoloArea base * altezzaDati outputScrivi area Area del rettangoloFine
  • 22.
    18ALGORITMI - STRUTTUREUnprogramma serve per indicare al computer l'algoritmo da eseguire. Per risolvere la formalizzazione degli algoritmi e di conseguenza la scrittura dei programmi  (il software) vengono utilizzate tre tipi di strutture logiche che ci permettono di collegare le azioni elementari che compongono un algoritmo: la Sequenza, la Selezione, e l'Iterazione.
  • 23.
    19SEQUENZAè una concatenazionedi azioniuna o più azioni devono essere eseguite in successioneper attuarlanon ci sono termini particolari nella pseudocodifica
  • 24.
    20SEQUENZA - ESEMPIOAlgoritmoper calcolare la somma di due numeriInput: i due valori che dovranno essere sommati, indichiamoli con ADDENDO1 e ADDENDO2 Assegnazione: il risultato ottenuto dalla somma  fra i due valori lo assegneremo alla variabile  SOMMA. Output: il valore presente nella variabile SOMMA.    
  • 25.
    21SELEZIONEè una sceltadi azioni alternative che dipendono da una condizioneuna o più azioni devono essere eseguite, in alternativa ad altre, in base ad una condizione posta. come alternativa alle azioni da effettuare, se la condizione è soddisfatta, possono anche non essere indicate azioni (in questo caso si andrà in sequenza, come se la Scelta non fosse presente).   I termini della pseudocodifica sono se, allora, altrimenti
  • 26.
    22SELEZIONE - ESEMPIOalgoritmoper trovare il valore più grande fra due valori forniti Input: i due valori da attribuire alla variabile A e alla variabile B Output: il contenuto di una delle due variabili   ottenuto attraverso una Scelta; il valore di A se è maggiore di B oppure il valore di B se A non è maggiore di B