La rappresentazione degli algoritmi

Slides:



Advertisements
Presentazioni simili
Linguaggi algoritmici
Advertisements

Introduzione alla programmazione ll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
ALGORITMI E PROGRAMMAZIONE STRUTTURATA
Strutture di controllo in C -- Flow Chart --
ELEMENTI DI PROGRAMMAZIONE
PROGRAMMAZIONE: linguaggi
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Diagrammi a blocchi.
Progettazione degli algoritmi
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
Unità di apprendimento 6 Dal problema al programma.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Dal problema all’ algoritmo
© 2007 SEI-Società Editrice Internazionale, Apogeo
Dal problema all’ algoritmo
LA PROGRAMMAZIONE: Algoritmi e programmi
DAL DIAGRAMMA AL CODICE
Introduzione al linguaggio C
Dal problema al processo risolutivo
7. Strutture di controllo Ing. Simona Colucci
Algoritmi e soluzioni di problemi
4 < 12 5 > −3 a < b a > b a ≤ b a ≥ b
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Unità di apprendimento 7
L'area delle figure piane
TIPI PRIMITIVI TIPI STRUTTURATI
Programmazione strutturata
Forme per rappresentare l’algoritmo:
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
I MONOMI.
IL CONCETTO DI ALGORITMO
Programmare.
I RADICALI Definizione di radicali Semplificazione di radicali
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
L’area delle figure piane
Strutture di Controllo
Secondo Programma in C.
Struttura di un programma
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Operazioni su Naturali
Struttura di un programma
Algebra Booleana.
A = InputBox("Immetti un numero")
© 2007 SEI-Società Editrice Internazionale, Apogeo
Le primitive di una funzione
Definizione di linguaggio di programmazione
Algoritmi e Strutture Dati
L’ELEVAMENTO A POTENZA
Il Diagramma di Flusso Docente: Maria Savina Rossi Alunne:
Unità 1 Programmi base.
Selezione e Proiezione
Unità D2 Dal problema all’algoritmo
Informatica CdL Scienze e Tecniche Psicologiche a.a
Informatica CdL Scienze e Tecniche Psicologiche a.a
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
La programmazione strutturata
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Le Equazioni di 1°grado Prof.ssa A.Comis.
Programmazione Procedurale
Transcript della presentazione:

La rappresentazione degli algoritmi

Algoritmo Un algoritmo è ………………………………. ………………………………………….

Scrivere un algoritmo Abbiamo detto che possiamo utilizzare il linguaggio naturale per descrivere un algoritmo Abbiamo anche detto che possiamo utilizzare un linguaggio di programmazione Vediamo come schematizzare un algoritmo con una rappresentazione che ci permetta di passare dal linguaggio naturale a quello formale

Rappresentazione di una algoritmo Un algoritmo può essere diviso in tre parti …………………….. Nome dell’algoritmo Sezione ……………….. Gli oggetti (dati) che vengono usati dall’algoritmo Sezione ………………… Compresa tra le parole inizio e fine: elenca le operazioni che l’esecutore deve compiere

Intestazione Il titolo dell’algoritmo … …………………….. Esempi Se l’algoritmo calcola la somma tra due numeri, un titolo giusto può essere SommaNumeri; Se l’algoritmo calcola l’area di un triangolo, un nome appropriato può essere AreaTriangolo.

Sezione dichiarativa ………………………………………………………………………………………….. Variabili………………………………

Esempio sezione dichiarativa Le formule matematiche utilizzano variabili A = b x h Quando ………………………… variabile. Quando ………………………………………………………………….. ….. costante. L’area A di un rettangolo si ottiene moltiplicando b x h. Il valore effettivo dell’area si ottiene sostituendo alle lettere b e h i valori della base e dell’altezza di un particolare rettangolo

Sezione esecutiva Indica all’esecutore il processo risolutivo…………………………………………………………………………... Istruzioni…………………………..

Esempi di algoritmi Esempi elementari una ricetta di cucina; le istruzioni di utilizzo di un elettrodomestico; le regole per eseguire la divisione tra due numeri. Notare che è sempre sottointesa la presenza di un esecutore

Caratteristiche basilari di un algoritmo ………………………………………………….. Finito ……………………………………………………….. Esaustivo ……………………………………………………………………………. Riproducibile

Caratteristiche basilari di un algoritmo ………………………………………………….. ……………………. ……………………………………………………….. …………………….. ……………………………………………………………………………. ………………………………….

Il linguaggio della pseudocodifica Descrizione Parola chiave Esempi Sezione dichiarativa Dichiarare i dati da utilizzare specificandone il nome e il tipo dichiara dichiara Lato come intero dichiara Pi come costante dichiara Raggio come reale Sezione esecutiva Delimitare l’algoritmo inizio fine Istruzione di acquisizione dati: parola chiave seguita dal nome della variabile da leggere. immetti (o leggi o acquisisci) leggi Nome leggi Lato immetti Raggio Istruzione per la comunicazione dei dati: parola chiave seguita dal nome della variabile da scrivere. scrivi (o comunica) scrivi Lato scrivi Raggio Assegnare un valore a una variabile assegna (o calcola) (spesso la parola chiave non viene scritta) assegna A=B+C (il valore calcolato B+C viene assegnato alla variabile A, assegnazione a sinistra)

Esempio di algoritmo Scrivere un algoritmo per il calcolo del perimetro e dell’area di un rettangolo Dati di input: la base, Base, e l’altezza del rettangolo, Altezza. Entrambi sono di tipo reale (numero con la virgola). Dati di output: il perimetro, Perimetro, e l’area, Area. Entrambi sono di tipo reale. Risoluzione: formula per il calcolo del perimetro: Perimetro = 2*(Base + Altezza) formula per il calcolo dell’area: Area = Base * Altezza Nell’algoritmo si deve prevedere: l’acquisizione del valore della base e dell’altezza Il calcolo del perimetro e dell’area La comunicazione dei valori calcolati del perimetro e dell’area. 

Esempio di algoritmo (continua) Algoritmo AreaRettangolo variabili dichiara Base, Altezza, Perimetro, Area come reali inizio leggi Base leggi Altezza assegna Perimetro = 2*(Base + Altezza) scrivi Perimetro assegna Area = Base * Altezza scrivi Area fine. riga di intestazione sezione dichiarativa sezione esecutiva

Riepilogo Questa modalità di scrittura prende il nome di linguaggio di pseudocodifica (o linguaggio di progetto), perché serve a descrivere ……………………………. La traduzione dell’algoritmo in un linguaggio comprensibile alla macchina si chiama ……………………………………………….

Convenzioni Notare nella scrittura dell’algoritmo l’indentazione, cioè il modo di scrivere alcune righe più a destra di altre in modo da evidenziarne l’appartenenza a una sezione o a un gruppo di istruzioni. Scegliamo di indicare le variabili e il nome dell’algoritmo con lettera iniziale maiuscola. Nel caso di nomi composti da più parole, le parole sono scritte una di seguito all’altra con iniziali maiuscole.

Operazioni frequenti Notare le seguenti istruzioni frequenti …………………… incremento di 1 della variabile A …………………… decremento di 1 della variabile A ………………………….. Il simbolo "=" non deve essere considerato come l’operatore di uguaglianza tra due espressioni, ma come assegnazione alla variabile indicata a sinistra dell’espressione calcolata a destra

Operatori Operatori aritmetici + per l’addizione − per la sottrazione * Per la moltiplicazione / per la divisione ^ per l’elevamento a potenza Operatori di relazione (per confrontare) = uguale < minore <= minore o uguale > maggiore >= maggiore o uguale <> diverso Operatori logici AND per il prodotto logico OR per la somma logica NOT per la negazione

Il diagramma di flusso Un algoritmo può essere descritto usando uno schema grafico chiamato diagramma di flusso (o flow-chart). La schematizzazione grafica è più efficace nella presentazione e rende più facile la lettura e la comprensione dell’algoritmo

Simboli standard Simboli ovali per ………………….e la ……………….. del diagramma. Il parallelogramma per indicare ……………….o la ………………dei dati in ……. .e ……. Il rettangolo per indicare un’operazione di ……….. o un …………... sì no Il rombo per indicare la ……….

Perimetro = 2*(Base + Altezza) Esempio Inizio Leggi Base Leggi Altezza Perimetro = 2*(Base + Altezza) Scrivi Perimetro Area = Base * Altezza Scrivi Area Fine

Le strutture di controllo All’interno di un algoritmo, le istruzioni sono organizzate secondo schemi nel seguente modo ……………………………………………………………. Sequenza Selezione Iterazione

Le strutture di controllo All’interno di un algoritmo, le istruzioni sono organizzate secondo schemi nel seguente modo ……………………………………………………. ……………………. …………………………………………. ………………… ………………………………………………………………… ……………………………………………

Teorema di Böhm-Jacopini ……………………………………………………………………………………………………………………………………………………………….. Queste tre strutture sono chiamate strutture di controllo.

La sequenza La sequenza indica l’ordine in cui devono essere eseguite le istruzioni. Nel linguaggio di pseudo codifica appare così inizio istruzione1 istruzione2 …… istruzionen fine

La selezione binaria La selezione binaria (o alternativa) consente ………………………… …………………………………………. se condizione allora istruzione1 altrimenti istruzione2 fine se condizione Falso Vero istruzione2 istruzione1

La selezione binaria (continua) Le istruzione nei due rami vero/falso possono essere più di una. se condizione allora istruzione a1 istruzione a2 …… istruzione an altrimenti istruzione b1 istruzione b2 istruzione bn fine se condizione Falso Vero istruzione b1 istruzione a1 istruzione bn istruzione an

Esempio di selezione Il seguente frammento di pseudocodice calcola il quadrato di un numero se è positivo, altrimenti ne calcola il doppio se A>0 allora assegna B = A^2 scrivi B altrimenti assegna C = 2*A scrivi C fine se

Assenza di alternativa Se dobbiamo calcolare qualcosa solo in una determinata condizione, l’istruzione è la seguente se condizione allora istruzione fine se condizione Vero istruzione1 Falso

La selezione multipla La struttura selezione multipla permette di selezionare tra più di due alternative in base al valore di una variabile di controllo della selettore seleziona il valore del selettore nel caso valore1 istruzione1 nel caso valore2 istruzione2 ::: nel caso valoren istruzionen fine se

La selezione multipla (continua) È possibile raggruppare più valori in un unico caso separandoli con una virgola oppure indicare un intervallo con valore iniziale e finale seleziona il valore del selettore nel caso valore1, valore2, valore3 istruzione ::: fine se oppure nel caso da valore1 a valore2

L’iterazione La terza struttura di controllo fondamentale per la costruzione di algoritmi è l’iterazione (o ripetizione o ciclo). Distinguiamo tre tipi di iterazione iterazione per falso iterazione per vero iterazione enumerativa (o con contatore)

Iterazione per falso L’iterazione per falso ……………………… ………………………………………..…. esegui istruzione1 Istruzione2 ::: istruzionen ripeti finché condizione istruzione1 Istruzione2 :::: istruzionen condizione Falso Vero Non si sa quante volte viene eseguito il ciclo. Le istruzioni sono eseguite almeno una volta.

Esempio iterazione per falso Controllare che il numero del mese inserito sia compreso tra 1 e 12 Dati in input: numero del mese M Dati in output: numero inserito dopo il controllo Risoluzione: dopo avere inserito il valore si controlla e si ripete la richiesta fino a quando M è maggiore di 0 e minore di 13 Algoritmo Mesi variabili dichiara M come intero inizio esegui leggi M ripeti finché M>0 and M<13 scrivi M fine Inizio riga di intestazione sezione dichiarativa leggi M sezione esecutiva Falso M>0 and M<13 Vero scrivi M Fine

Iterazione per vero L’iterazione per vero ……………………………. ………………………………………………… condizione Falso esegui mentre condizione istruzione1 Istruzione2 ::: istruzionen ripeti Vero Non si sa quante volte viene eseguito il ciclo. Le istruzioni potrebbero non essere eseguite nemmeno una volta.

Esempio iterazione per vero Sottrarre ripetutamente 5€ da un importo se è superiore o uguale. Dati in input: importo Dati in output: / Risoluzione: dopo avere inserito l’importo, se è superiore o uguale a 5, si sottrae 5 e si ripete mentre la condizione rimane vera Inizio Algoritmo Sottrai variabili dichiara Importo come reale dichiara Quota = 5 come costante inizio leggi Importo esegui mentre Importo >= Quota Importo = Importo − Quota ripeti fine riga di intestazione sezione dichiarativa leggi Importo Importo >= Quota Falso sezione esecutiva Vero Importo = Importo − Quota Fine

Iterazione enumerativa L’iterazione enumerativa rappresenta in forma compatta la ripetizione di un gruppo di istruzioni nel caso di un numero prefissato di volte per variabile = valore iniziale fino a valore finale istruzione1 Istruzione2 ::: istruzionen ripeti istruzione1 Istruzione2 :::: istruzionen Simboli grafico per rappresentare l’iterazione enumerativa Le istruzioni sono eseguite un numero preciso di volte conosciuto in anticipo

Esempio iterazione enumerativa Dati gli importi relativi agli incassi per ciascun mese dell’anno, calcolare l’incasso totale e la media mensile. Dati in input: incasso di ciascun mese dell’anno Dati in output: incasso totale dell’anno e incasso medio mensile Risoluzione: all’inizio viene azzerato il totale dell’anno; con una ripetizione si acquisiscono i valori degli incassi di ciascun mese e si sommano al totale. Alla fine della ripetizione si calcola l’incasso medio (totale/12). I risultati dell’alaborazione sono il totale dell’anno e l’importo medio.  38

Esempio (continua)  Algoritmo Incassi variabili dichiara incasso, totale, media come numeri reali inizio assegna totale = 0 per mese = 1 fino a 12 leggi incasso assegna totale = totale + incasso ripeti assegna media = totale / 12 scrivi totale scrivi media fine riga di intestazione sezione dichiarativa sezione esecutiva 

totale = totale + incasso Esempio (continua) Inizio totale = 0 per mese = 1 fino a 12 leggi incasso totale = totale + incasso media = totale /12 scrivi totale scrivi media Fine

Dall’algoritmo al programma Un linguaggio di programmazione ……………………………………….. Il risultato è un programma La persona in grado di scrivere un programma è detta ………………………….. Il programma si chiama anche ……………………, per questo motivo la traduzione dell’algoritmo in un programma si indica con il termine ………………………..

Fasi di traduzione: il compilatore Il testo di un programma è detto sorgente Testo del programma Sorgente Il programma sorgente viene tradotto in linguaggio macchina (tutte cifre 0 e 1) dal compilatore Analisi lessicale e sintattica Compilatore Programma compilato Il risultato della compilazione si chiama programma oggetto Oggetto Collegamento Linker La compilazione è segui-ta da una operazione di collegamento (linking) tra varie parti del codice oggetto. È effettuata dal linker Programma eseguibile Alla fine si ottiene il programma eseguibile

Tipi di errori Errori lessicali Uso di termini non ………………………………………. Costruzione di frasi ………………………………………. Errori sintattici Riguarda la ……………………………………….dell’algoritmo: il programma non produce i risultati attesi Errori logici Situazioni che si possono verificare ………………………………………. sulla base di particolari valori ………………………………………. (esempio: divisione per 0) Errori di runtime

L’interprete Per alcuni linguaggi di programmazione, invece del compilatore, si usa un programma traduttore detto interprete, ……………………………………………..……………. .