ALGORITMI Dal problema al programma Definizione di algoritmo

Slides:



Advertisements
Presentazioni simili
Dati, istruzione e pseudocodice
Advertisements

Scomposizione funzionale
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Analisi – Progettazione - Programmazione
Linguaggi algoritmici
PROGRAMMARE IN PASCAL (le basi)
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Algoritmi e Programmazione
Informatica Generale Susanna Pelagatti
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Fondamenti di Informatica
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Il computer ragiona? Problemi e algoritmi.
Iterazione enumerativa (for)
Informatica Problema Algoritmo Programma
Algoritmi Politecnico di Milano
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Definizione di Algoritmo
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
ALGORITMI E PROGRAMMAZIONE STRUTTURATA
Il Linguaggio Macchina
Unità Didattica 1 Algoritmi
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Gli algoritmi.
Elementi di Informatica
Elementi di Informatica
Biologia Computazionale - Algoritmi
ELEMENTI DI PROGRAMMAZIONE
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
PROGRAMMAZIONE: linguaggi
Le basi della programmazione
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
BIOINFO3 - Lezione 15 ISTRUZIONI
ECDL Patente europea del computer
Programmazione Strutturata
COME RAGIONA UN COMPUTER
Dal problema all’ algoritmo
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
1 Parte 2 Fondamenti di programmazione. 2 Definizione intuitiva di algoritmo Elenco finito di istruzioni che specificano una serie di operazioni, eseguendo.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
PRIMI ELEMENTI DI PROGRAMMAZIONE
Algoritmi.
Realizzazione software
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
Programmazione dei Calcolatori Elettronici
Dal problema al programma
Strutture di controllo
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6 Dal problema al programma.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

ALGORITMI Dal problema al programma Definizione di algoritmo I dati e le istruzioni La rappresentazione degli algoritmi La programmazione strutturata

Dal problema al programma Esempio: ordinamento dei nomi degli studenti nel registro di classe PROBLEMA REALE: dato un insieme di nomi e cognomi, organizzarli in ordine alfabetico. DATI: cognome e nome degli studenti. TECNICA DI ELABORAZIONE: l’insieme delle operazioni necessarie per ordinare un generico insieme di nomi in ordine alfabetico. USO DELL’ELABORATORE: dopo aver introdotto le operazioni e i dati, codificati in modo opportuno, il computer può eseguire automaticamente l’ordinamento dei nomi degli studenti.

Le fasi principali della programmazione Lettura del testo del problema Analisi dei dati di input e di output (tabella dei dati) Organizzazione dell’algoritmo risolutivo (tabella di traccia per testare l’algoritmo) Stesura del programma (codifica) Prove di esecuzione del programma (test)

Le fasi principali della programmazione Lettura del testo del problema Analisi dei dati di input e di output (tabella dei dati) Organizzazione dell’algoritmo risolutivo (tabella di traccia per testare l’algoritmo) Stesura del programma (codifica) Prove di esecuzione del programma (test)

Cos’è un algoritmo? Un algoritmo è una sequenza di passi che devono essere eseguiti secondo un ordine prefissato per arrivare al risultato partendo da dati noti. Un algoritmo deve fornire la soluzione di un problema indipendentemente dal linguaggio di programmazione che si utilizzerà per scrivere il programma finale. Il termine algoritmo si fa derivare dal nome del matematico arabo Al-Khuwarizmi, vissuto nel IX secolo, ed è quindi un concetto che è sempre stato utilizzato nella matematica come sinonimo di metodo per la risoluzione di un problema generale. Esempi di algoritmi che applichiamo per la soluzione di problemi di vita quotidiana sono: le istruzioni di uso di un elettrodomestico la sequenza di passi da seguire per compilare un modulo la realizzazione di una ricetta di cucina ecc.

Esempio di algoritmo Per descrivere in modo corretto un algoritmo è importante aver chiaro qual è l’obiettivo da raggiungere, ossia i risultati da ottenere. Esempio per ottenere un buon piatto di pasta bisogna aver chiare tutte le informazioni di partenza: il tipo di pasta (fa variare il tempo di cottura), il numero di persone che dovranno mangiare la pasta, per determinare la quantità di pasta e, di conseguenza, la quantità di acqua e di sale. La risoluzione del problema è data dai seguenti passi: far bollire la quantità di acqua stabilita aggiungere la quantità di sale stabilita mettere nell’acqua bollente la quantità di pasta stabilita far cuocere la pasta per i minuti stabiliti

Un algoritmo deve essere .... 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, mentre l’istruzione “tira una freccia contro il bersaglio” può avere risultati diversi anche se è rivolta al medesimo arciere munito del suo solito arco). NON AMBIGUO: i passi che compongono l’algoritmo devono essere interpretati in modo univoco dall’esecutore, senza lasciar dubbi (es. “se il numero è abbastanza grande allora dividilo per 3”  istruzione ambigua!) REALIZZABILE: è necessario che esista un esecutore in grado di eseguire ogni passo dell’algoritmo ed in un tempo finito (es. “calcola tutte le cifre decimali di π ” non avrà mai fine in quanto tali cifre sono infinite).

Elementi fondamentali di un algoritmo 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. ALGORITMO + ESECUTORE DATI DI INPUT DATI DI OUTPUT

I DATI Dati di INPUT: sono quelli che devono essere forniti dall’esterno per poter risolvere il problema. Dati di OUTPUT: sono quelli che vengono comunicati all’esterno come risultato della soluzione del problema. Dati INTERNI o di LAVORO: sono i dati utilizzati nella trasformazione compiuta dall’algoritmo ma trasparenti all’utente (non sono forniti in output). Dati NUMERICI: dati che contengono numeri e sui quali si possono effettuare operazioni aritmetiche. Possono essere ulteriormente suddivisi in: INTERI: dati numerici che non prevedono cifre decimali REALI: dati numerici che prevedono cifre decimali Dati ALFANUMERICI (o STRINGHE): sono i dati che contengono caratteri alfabetici (A,B,...), caratteri speciali ($,%,&,...) e cifre (0,1,2,...) sulle quali non sono possibili operazioni aritmetiche (ad esempio il codice fiscale).

DATI Costanti e Variabili COSTANTE: il valore del dato rimane immutato durante l’esecuzione dell’algoritmo VARIABILE: il valore del dato può cambiare durante l’esecuzione dell’algoritmo Ad esempio: dobbiamo calcolare l’area di un cerchio di cui si conosce il raggio. I dati su cui opera l’algoritmo sono: raggio, π, area e l’istruzione da eseguire è: area = raggio * raggio * π π è una costante, infatti il suo valore non deve cambiare area e raggio sono delle variabili: il loro valore cambia in funzione del particolare cerchio che si prende in considerazione. Il concetto di variabile è molto importante nella definizione degli algoritmi: una variabile è caratterizzata da un nome e dal tipo (numerico o stringa) del dato che andrà a contenere.

Le ISTRUZIONI LETTURA: assegna ad una variabile un valore immesso tramite la tastiera del computer. leggi (raggio) : se dalla testiera è stato digitato 5, la variabile raggio conterrà il valore 5 SCRITTURA: permette di visualizzare sul monitor del computer o sulla stampante un messaggio o il valore di una variabile. scrivi (“benvenuto”) : visualizza sul video il messaggio scritto tra apici scrivi (raggio) : visualizza sul video il contenuto della variabile raggio, ossia se raggio ha valore 5, sul video sarà visualizzato 5. ASSEGNAZIONE: assegna un valore ad una variabile. Per indicare questa operazione si usa il simbolo = o una freccia  raggio = 5 : alla variabile raggio è assegnato il valore 5 raggio = R : alla variabile raggio viene assegnato il valore di un’altra variabile di nome R raggio = (R + 5)*2 : alla variabile raggio viene assegnato il risultato di una espressione

La rappresentazione degli algoritmi: il flow-chart Per poter descrivere un algoritmo non è necessario conoscere un linguaggio di programmazione; la sequenza delle istruzioni può essere rappresentata con un linguaggio semiformale mediante i diagrammi a blocchi che consentono all’utente di seguire il flusso dell’esecuzione delle istruzioni, per questo motivo questi diagrammi sono chiamati diagrammi di flusso o flow-chart. I flow-chart sono formati da SIMBOLI di forma diversa, ciascuno con il proprio significato, all’interno di ogni simbolo è presente un breve testo. Le LINEE con FRECCE che uniscono i vari simboli indicano il flusso delle operazioni.

I simboli dei flow-chart INIZIO questi simboli indicano il punto di partenza e di terminazione dell’algoritmo FINE è il simbolo dell’elaborazione e contiene l’istruzione da eseguire è il simbolo per le operazioni di Input / Output condizione V F è il simbolo di decisione ed è usato per stabilire se una proposizione è vera (V) o falsa (F)

Un esempio INIZIO INIZIO FINE FINE area = raggio * raggio * π raggio I V F area = 0 INIZIO FINE area = raggio * raggio * π raggio I area O

ALGORITMO Programmazione strutturata Successione finita di istruzioni ciascuna delle quali rappresenta un’operazione da eseguire per risolvere un problema. Occorre definire un insieme di regole e di linee guida per organizzare il lavoro di creazione di un algoritmo Programmazione strutturata

La programmazione strutturata Un metodo per realizzare algoritmi: l’algoritmo viene visto come un insieme di blocchi di istruzioni ognuno fornito di un solo ingresso e di una sola uscita; ogni blocco è isolato dagli altri (non è possibile saltare dall’interno di un blocco all’interno di un altro).

Teorema di Böhm-Jacopini Qualsiasi algoritmo può essere scritto utilizzando esclusivamente le tre strutture di controllo fondamentali: SEQUENZA – SELEZIONE - ITERAZIONE N.B. sono nomi equivalenti: Selezione = Alternativa Iterazione = Ripetizione

Struttura di sequenza istruzione1 istruzione2 istruzione3

Struttura di selezione F V condizione istruzione1 istruzione2

Struttura di iterazione Si deve eseguire un blocco di istruzioni finché non si verifica una determinata condizione. Esempio: costruire un algoritmo che dati in input 5 numeri ne determini la somma

Esempio: pseudocodice Sequenza INIZIO Leggi (N1) Leggi (N2) Leggi (N3) Leggi (N4) Leggi (N5) Somma  N1+N2+N3+N4+N5 Scrivi (Somma) FINE Iterazione INIZIO Somma  0 Conta  0 ESEGUI Leggi (N) Somma  Somma+N Conta  Conta+1 RIPETI FINCHÉ Conta = 5 Scrivi (Somma) FINE

Esempio: flow-chart F V INIZIO Somma  0 Conta  0 leggi (N) Somma  Somma + N Conta  Conta + 1 F V Conta = 5 scrivi (Somma) FINE

Azioni comuni negli algoritmi (I) Contare: nell’esempio abbiamo usato una sola variabile per richiedere i numeri (N)  dobbiamo “contare” quanti numeri stiamo inserendo! variabile contatore di tipo numerico (cont) inizializzazione (cont = 0) incremento (cont = cont + 1)

Azioni comuni negli algoritmi (II) Totalizzare: nell’esempio abbiamo usato la variabile Somma che è stata aggiornata ogni volta che si leggeva un numero  alla fine dell’iterazione Somma contiene il valore della somma totale dei 5 numeri! variabile totalizzatore di tipo numerico (totale) inizializzazione (totale = 0) incremento (totale = totale + x)

Struttura di iterazione postcondizionale La condizione è un’espressione che rappresenta un valore Vero o Falso. Il ciclo viene ripetuto finché l’espressione non diventa vera. istruzioni F condizione V

Struttura di iterazione precondizionale La condizione è un’espressione che rappresenta un valore Vero o Falso. Il ciclo viene ripetuto finché l’espressione non diventa falsa. F condizione V istruzioni

Confronto tra le strutture di iterazione Iterazione Finché (Until) Iterazione Mentre (While) istruzioni F condizione V F condizione istruzioni V

Le iterazioni in Visual Basic.net L’istruzione Do...Loop... (pag. 155 del libro) Iterazione postcondizionale: Do istruzioni Loop Until condizione Loop While condizione Iterazione precondizionale: Do While condizione istruzioni Loop Do Until condizione

Codifica esempio “somma di 5 numeri” Dim N As Integer Dim Somma As Integer = 0, Conta As Byte = 0 Do N = InputBox (“inserisci un numero”) Somma = Somma+N Conta += 1 ‘equivale a scrivere Conta=Conta+1 Loop Until Conta = 5 MessageBox.Show (“La somma dei 5 numeri è: “ & Somma) in alternativa: Do While Conta < 5 N = InputBox (“inserisci un numero”) Somma = Somma+N Conta += 1 ‘equivale a scrivere Conta=Conta+1 Loop MessageBox.Show (“La somma dei 5 numeri è: “ & Somma)