Fasi della programmazione. Gabriella Trucco

Documenti analoghi
INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione

Le fasi della programmazione

INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08

Concetti di base dell informatica Cosa è?

FONDAMENTI DI PROGRAMMAZIONE Corso di Laurea in MATEMATICA a.a. 2017/2018

Cosa intendiamo per programmazione

FONDAMENTI DI PROGRAMMAZIONE Corso di Laurea in MATEMATICA a.a. 2016/2017

L ELABORATORE ELETTRONICO!

Introduzione all informatica

Elaboratore Elettronico

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Fondamenti Teorici e Programmazione Modulo A: Elementi di Programmazione Corso di Laurea in Informatica Umanistica a.a. 2013/2014

Introduzione alla programmazione

Algoritmi. Pagina 1 di 5

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Cosa è l Informatica?

Informatica. Come si risolve un problema?

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Introduzione agli Algoritmi 4

Sistemi di Elaborazione delle Informazioni

Non a caso viene definito linguaggio macchina. di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Corso di Fondamenti di Informatica Linguaggi di Programmazione

preparazione pane frattau per 4 persone

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

CORSO DI INFORMATICA Maria Grazia Celentano

3. Programmi e algoritmi

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Corso di Fondamenti di Informatica Linguaggi di Programmazione

generalità concetti di base

ALGORITMI: PROPRIETÀ FONDAMENTALI

CdL in Medicina Veterinaria - STPA AA

Unità di apprendimento 6. Dal problema al programma

L informazione. Bateson, Ricevere informazioni vuol dire necessariamente ricevere notizie di differenza (Es.: Luce accesa/spenta, 1/0,...

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Algoritmo. Programmazione

INFORmazione+autoMATICA

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

MODULO 07. La soluzione dei problemi mediante gli algoritmi

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Rappresentazione con i diagrammi di flusso (Flow - chart)

Come scrivere bene codice? (1 di 1)

Algoritmi e Programmi

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Ciclo di vita di un sistema informativo

Algoritmi e programmi

Concetti di base dell ICT

Cosa intendiamo per programmazione

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Introduzione agli Algoritmi

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

L uomo come esecutore di algoritmi

Dal problema al programma: introduzione al problemsolving. Capitolo 1: Introduzione G. Cabodi, P. Camurati, P. Pasini, D. Patti, D.

Fondamenti di informatica 2 Claudio Biancalana. Esercitazione capitolo 19 Array

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Lezione 1. Problemi Algoritmi Programmi

Laboratorio di Calcolo di Aerodinamica: II Lezione

Elementi di programmazione

La programmazione strutturata

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

La codifica digitale

ISTITUTO TECNICO INDUSTRIALE STATALE "G. MARCONI" Via Milano n PONTEDERA (PI) DIPARTIMENTO: Informatica

Elementi di programmazione

Introduzione alla programmazione strutturata

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

1 Esercizi in pseudocodice

L INFORMATICA c1. Informatica è qualcosa che ha a che fare con l uso del computer

Sistemi di Elaborazione delle Informazioni

Il Software programmabili programma algoritmo

Fondamenti teorici e programmazione

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

Problem solving elementare su dati scalari

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma

LA METAFORA DELL UFFICIO

Programmazione (imperativa)

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Corso di Informatica di Base

ALGORITMI E SOLUZIONI DI PROBLEMI

Algoritmi e diagrammi di flusso

Transcript:

Fasi della programmazione Gabriella Trucco

Algoritmi Uso di algoritmi nella vita quotidiana Algoritmo: sequenza di passi che, se intrapresa da un esecutore, permette di ottenere i risultati attesi a partire dai dati forniti. Dalla specifica all automatizzazione

Quando l esecutore è il calcolatore Calcolatori: macchine in grado di eseguire velocemente e con precisione sequenze di operazioni elementari. Programma: descrizione di un algoritmo, espressa in un linguaggio di programmazione che il calcolatore è in grado di comprendere ed eseguire. Il calcolatore riceve in ingresso un programma e un insieme di dati iniziali e produce in uscita i risultati dell esecuzione del programma. A differenza di altre macchine automatiche (lavatrici, calcolatrici tascabili, ecc.) i calcolatori sono programmabili

Programmazione Procedimento che porta alla definizione dei programmi adatti a risolvere problemi I concetti che stanno alla base della programmazione si possono spiegare e comprendere senza far riferimento al calcolatore.

Fasi della programmazione Quattro (macro) fasi principali 1. Definizione del problema (specifica) 2. Individuazione di un procedimento risolutivo (algoritmo: analisi e modellazione) 3. Codifica dell algoritmo in un linguaggio di programmazione 4. Esecuzione e verifica

Specifica Prima fase: comprendere e definire (specificare) il problema che si vuole risolvere. La specifica del problema può essere fatta in maniera più o meno rigorosa, a seconda del formalismo descrittivo utilizzato. La specifica di un problema prevede la descrizione dello stato iniziale del problema (dati iniziali, input) e dello stato finale atteso (i risultati, output).

Esempi 1. Dati due numeri, trovare il maggiore. 2. Dato un elenco telefonico e un nome, trovare il numero di telefono corrispondente. 3. Data la struttura di una rete stradale e le informazioni sui flussi dei veicoli, determinare il percorso più veloce da A a B. 4. Scrivere tutti i numeri pari che non sono la somma di due numeri primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato in ingresso, se il programma C termina quando viene eseguito su quel dato.

Specifica Caratteristiche comuni ai problemi informazioni in ingresso informazioni in uscita stato iniziale stato finale

Formulazione dei problemi La descrizione non fornisce un metodo risolutivo (es. 3 ) La descrizione del problema è talvolta ambigua o imprecisa (es. 2, con Mario Rossi che compare più volte ) Per alcuni problemi non è noto un metodo risolutivo (es. 4 ) Esistono problemi per i quali è stato dimostrato che non può esistere un metodo risolutivo (es. 5 )

Specifica Descrizione del problema: dati in ingresso risultati desiderati (in uscita) relazioni tra dati in ingresso e dati in uscita condizioni al contorno Tipi di specifica informale (testo) formale (formalismo) Vincoli da rispettare (risorse)

Esempio di specifica informale Scrivere un programma che, data una lista di schede cliente, costituite dai campi ragione sociale, fatturato, [...], le ordina per fatturato. L'ordinamento deve essere eseguito senza occupare altra memoria che quella già occupata dalle schede più una, e deve impiegare meno di 1 secondo anche quando le schede sono 10.000.

Esempio di specifica formale S= X,Y, I,U X: ingressi Y: uscite I: precondizioni U: postcondizioni Per ogni dato x appartenente a X che soddisfi la formula I(x), il risultato y appartenente a Y deve soddisfare la formula U(x, y).

Algoritmi Determinare un procedimento risolutivo per un dato problema Il concetto di algoritmo ha origini molto lontane Più recentemente problema di caratterizzare problemi e classi di problemi per i quali è possibile individuare una soluzione algoritmica esistono problemi per i quali non è possibile individuare una soluzione algoritmica.

Proprietà di un algoritmo La descrizione di un procedimento risolutivo può considerarsi un algoritmo se rispetta alcuni requisiti essenziali, tra i quali: 1. Finitezza 2. Non-ambiguità 3. Eseguibilità Esempio di procedimento che non rispetta alcuni dei requisiti precedenti: le ricette di cucina: aggiungere sale q.b. - non rispetta 2.

Progettazione (o analisi) di un algoritmo Approccio top-down parte dai requisiti della specifica li decompone in sottorequisiti procede per decomposizione, in modo gerarchico termina quando i sottorequisiti sono compiti elementari Approccio bottom-up parte dai compiti elementari che si sanno già svolgere li combina per crearne di più complessi strumenti, librerie, subroutines, utilities mattoncini facili da realizzare e da verificare

Analisi top-down L'analisi top down parte dai i requisiti che devono essere soddisfatti per risolvere il problema. Questi vengono poi divisi in un piccolo numero di sottorequisiti; ciascun sottorequisito che non sia un compito elementare viene a sua volta diviso in sottorequisiti. Questa scomposizione termina quando tutti i sottorequisiti rappresentano compiti elementari. Progettazione di algoritmi chiari e ben strutturati. Chiarezza e strutturazione di un algoritmo mantenuti dal codice che lo realizza. Esigenza di una programmazione strutturata

Programmazione strutturata Idea: scomporre il codice in parti più semplici senza lasciare che i dettagli di ciascuna parte del codice interferiscano con lo sviluppo del programma nel suo complesso. Attività di processo e attività di gestione In generale, ciascuna attività di gestione comprende un costrutto di controllo, come una decisione, una selezione o un'iterazione. Integrazione di tutte le attività identificate in componenti funzionali o moduli.

Programmazione strutturata Quali attività integrare nello stesso modulo? dimensione Profondità fase temporale stessa base condizionale condivisione dei dati coesione funzionale

Programmazione strutturata Vincoli ai modi in cui l'esecuzione di attività di processo è controllata. Costrutti di controllo fondamentali: esecuzione seriale Iterazione selezione

Modellazione di un algoritmo Programma come sistema Modellazione concettuale Evidenziare eventuali vizi concettuali Fornire documentazione

Documentazione Ciò che, senza essere il programma stesso, è usato da un altro programmatore per capire il programma Documentazione interna: commenti nel corpo del programma, formattazione, Documentazione esterna: documenti di progetto separati dal programma Manuale utente Manuale di riferimento

Codifica Individuare una rappresentazione degli oggetti di interesse del problema e tradurre la descrizione dell algoritmo in un opportuno linguaggio noto all esecutore. Algoritmo codificato in un linguaggio di programmazione. Risultato: programma eseguibile per il calcolatore. Quanto più il linguaggio di descrizione dell algoritmo è vicino al linguaggio di programmazione scelto, tanto più semplice è la fase di traduzione e codifica

Codifica Scelta del linguaggio di programmazione Scrittura del codice Conforme al progetto

Codifica I linguaggi di programmazione forniscono strumenti linguistici per rappresentare gli algoritmi sotto forma di programmi che possano essere compresi da un calcolatore. In particolare dobbiamo rappresentare nel linguaggio di programmazione Algoritmo programma informazioni iniziali dati in ingresso informazioni utilizzate dall algoritmo dati ausiliari informazioni finali dati in uscita

Esecuzione La fase conclusiva Spesso questa fase porta alla luce errori che possono coinvolgere ciascuna delle fasi precedenti revisione di una o più Debugger: aiuta nella individuazione degli errori e nella messa a punto dei programmi.

Verifica e correzione Scoprire gli errori: collaudo empirico non garantisce la correttezza criterio della massima copertura verifica formale garantisce la correttezza molto onerosa Correzione (eliminazione degli errori) Spesso genera un riciclo dell'intero processo

Verifica del programma E' evidente che la verifica è "meglio" della validazione, poiché la verifica ha una valore assoluto (se la dimostrazione è corretta), mentre la validazione ha un valore solo statistico. Difficile ed oneroso verificare programmi di una certa complessità E' bene sottolineare, tuttavia, che la validazione è in grado soltanto di rivelare la presenza di un errore; non è mai in grado di garantirne l'assenza!

Collaudo empirico Quando si valida un programma, lo spirito del gioco non è dimostrare che il programma funziona, ma che non funziona esercitare tutto il codice provare alcuni casi tipici provare tutti i casi atipici provare tutti i casi limite Test di regressione: ogni modifica apportata durante la sua manutenzione richiede che le parti modificate vengano collaudate di nuovo. Approcci selettivi al test di regressione: approcci di minimizzazione approcci di copertura; approcci sicuri

Esempio Problema: calcolo del prodotto di due interi positivi Specifica Input: due valori interi positivi A e B Output: il valore di A B Algoritmo Se l esecutore che scegliamo è in grado di effettuare tutte le operazioni di base sui numeri, un semplice algoritmo è il seguente: 1. Passo 1. Acquisisci il primo valore, sia esso A 2. Passo 2. Acquisisci il secondo valore, sia esso B 3. Passo 3. Ottieni il risultato dell operazione A B

Esempio Codifica Un esecutore che rispetta le ipotesi precedenti è una persona dotata di una calcolatrice tascabile. La codifica dell algoritmo in questo caso può essere: Passo 1. Digita in sequenza le cifre decimali del primo valore Passo 2. Digita il tasto * Passo 3. Digita in sequenza le cifre decimali del secondo valore Passo 4. Digita il tasto =

Esempio Supponiamo ora che l esecutore scelto sia in grado di effettuare solo le operazioni elementari di somma, sottrazione, confronto tra numeri. E necessario individuare un nuovo procedimento risolutivo che tenga conto delle limitate capacità dell esecutore Algoritmo 2 Passo 1. Acquisisci il primo valore, sia esso A Passo 2. Acquisisci il secondo valore, sia esso B Passo 3. Associa 0 ad un terzo valore, sia esso C Passo 4. Finchè B>0 ripeti Passo 4.1. Somma a C il valore A Passo 4.2. Sottrai a B il valore 1 Passo 5. Il risultato è il valore C

Esempio Un esecutore che rispetta le ipotesi precedenti è un bimbo in grado di effettuare le operazioni richieste (somma, sottrazione e confronto) e di riportare i risultati di semplici calcoli su un quaderno. Codifica Passo 1. Scrivi il primo numero nel riquadro A Passo 2. Scrivi il secondo numero nel riquadro B Passo 3. Scrivi il valore 0 nel riquadro C Passo 4. Ripeti i seguenti passi finché il valore nel riquadro B è maggiore di 0: calcola la somma tra il valore in A e il valore in C scrivi il risultato ottenuto in C - calcola la differenza tra il valore in B ed il numero 1 - scrivi il risultato ottenuto in B Passo 5. Il risultato è quanto contenuto nel riquadro C.