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

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

Laboratorio di Programmazione

Capitolo 3 Elaborazione e Strutturazione dell Informazione. (Introduzione ai Sistemi Informatici Sciuto et alii)

Informatica. Come si risolve un problema?

Capitolo 3 L elaborazione e la strutturazione dell informazione

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

Parte Seconda: Fondamenti di informatica

Dal problema all algoritmo

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

Concetti Introduttivi. Il Computer

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

LABORATORIO DI INFORMATICA

Introduzione alla programmazione

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

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

Sviluppo di programmi

1 Esercizi in pseudocodice

Corso di Informatica di Base

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

Algoritmi e Linguaggi

Pag. 2. Somma binaria. Somma binaria. Somma binaria. Altre operazioni aritmetiche. La somma si può fare colonna per colonna

Elaboratore Elettronico

Rappresentazione con i diagrammi di flusso (Flow - chart)

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

Algoritmi e soluzione di problemi

Problemi, algoritmi, calcolatore

Algoritmi e Programmi

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

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio

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

Algoritmi e Programmi. Wednesday, September 29, 2010

Il concetto di informatica. Graziano Pravadelli (2012)

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

FONDAMENTI DI INFORMATICA

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Teoria dell Informazione

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

MODULO 07. La soluzione dei problemi mediante gli algoritmi

ALGORITMI: PROPRIETÀ FONDAMENTALI

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

CONCETTI FONDAMENTALI

LA METAFORA DELL UFFICIO

PROBLEMI E ALGORITMI VESPIA CATERINA LICEO CLASSICO AGLI ANGELI

Formalismi per la descrizione di algoritmi

Elementi di programmazione

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica. Compressione dati

Fondamenti di Informatica. Definizione di Algoritmo. Algoritmo Euclideo. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Il concetto di calcolatore e di algoritmo

Cosa è l Informatica?

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Cos è la programmazione?

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

Informatica, Algoritmi, Linguaggi

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

FONDAMENTI DI INFORMATICA

PROGRAMMAZIONE: Le strutture di controllo

Elementi di informatica

ELABORAZIONE DELL INFORMAZIONE. Problemi e Algoritmi. Esecutore. Azioni Elementari 13/05/2008. Processo di Soluzione di un Problema

Algoritmi. Pagina 1 di 5

Linguaggi, Traduttori e le Basi della Programmazione

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Fasi della programmazione. Gabriella Trucco

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

DESCRIZIONI RIGOROSE c7

PROGRAMMAZIONE STRUTTURATA

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso di Fondamenti di Informatica

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Istruzioni Condizionali

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.)

Corso di Informatica

LA METAFORA DELL UFFICIO

Algoritmi e Diagrammi di flusso

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. è uno strumento in grado di eseguire insiemi di azioni elementari.

Introduzione agli algoritmi

Diagrammi a blocchi 1

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

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

Unità di apprendimento 6. Dal problema al programma

LINGUAGGI DI ALTO LIVELLO

Analisi e programmazione 1

Diagrammi a blocchi 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Fondamenti di Informatica

Problemi, algoritmi, linguaggi

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

3. Programmi e algoritmi

Analisi e Programmazione

Problema: calcolare il massimo tra K numeri

Transcript:

Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione dell informazione Soluzione di un problema Problema ANALI Modello di soluzione STESURA DESCRIZIONE Deve fare tutto lo stesso soggetto? soggetto 1 Descrizione INTERPRE- TAZIONE Descrizione interpretata ESECUZIONE soggetto 2 Soluzione Soluzione di un problema Conoscenza di come si risolve un problema SOGGETTO 1 SOGGETTO 2 Effettiva capacità di risolverlo 18/10/2002 Introduzione ai sistemi informatici 3 18/10/2002 Introduzione ai sistemi informatici 4 Analisi Dalla specifica di un problema alla soluzione: la fase di analisi. Comprensione del problema Modellizzazione del problema Ricerca della soluzione Comprensione del Problema Eliminare ogni ambiguità nella specifica Focalizzare gli obiettivi Evidenziare Regole espliciti ed impliciti Eliminare Dettagli inutili ed ambigui 18/10/2002 Introduzione ai sistemi informatici 5 18/10/2002 Introduzione ai sistemi informatici 6 Corso Informatica A Allievi Gestionali prof. C. Silvano 1

Ricerca della soluzione La soluzione è espressa come una sequenza di operazioni la cui esecuzione porta alla soluzione del problema l algoritmo risolutivo del problema Algoritmo Soluzione Definizione di algoritmo Iniziali Algoritmo Finali (soluzione) Si definisce algoritmo una sequenza di azioni che trasformi i dati iniziali in un numero finito di passi, elementari e non ambigui, per giungere al risultato finale. Questa sequenza di azioni è valida per un insieme di dati iniziali ben definito e può essere eseguita da un opportuno esecutore. 18/10/2002 Introduzione ai sistemi informatici 7 18/10/2002 Introduzione ai sistemi informatici 8 Scomposizione in sottoproblemi Tutte le operazioni specificate dall algoritmo devono essere direttamente eseguibili dall esecutore (in questo caso si chiamano operazioni elementari) Algoritmo (definizione informale) Sequenza finita di istruzioni, comprensibili da un esecutore (può essere uno strumento automatico), che descrive come realizzare un compito (come risolvere un problema ). altrimenti è necessario scomporre il problema troppo complesso in sottoproblemi più semplici 18/10/2002 Introduzione ai sistemi informatici 9 18/10/2002 Introduzione ai sistemi informatici 10 Algoritmo I passi sono eseguiti in sequenza e l'ordine delle istruzioni è essenziale per la correttezza dell'algoritmo. Non basta organizzare i passi in sequenza, occorre valutare delle condizioni e in alcuni casi eseguire delle azioni ripetutamente. Le strutture di controllo: SEQUENZA Le istruzioni devono semplicemente essere eseguite nell ordine in cui sono presentate. : solleva il ricevitore componi il numero 18/10/2002 Introduzione ai sistemi informatici 11 18/10/2002 Introduzione ai sistemi informatici 12 Corso Informatica A Allievi Gestionali prof. C. Silvano 2

Le strutture di controllo: SELEZIONE Le istruzioni da eseguire sono determinate dalla valutazione di una data condizione : SE il numero è libero ALLORA attendi la risposta conduci la conversazione deponi il ricevitore ALTRIMENTI deponi il ricevitore 18/10/2002 Introduzione ai sistemi informatici 13 Le strutture di controllo: ITERAZIONE Le istruzioni devono essere eseguite ripetutamente fino a che non si verifica una determinata condizione : RIPETI componi una cifra FI al completamento del numero 18/10/2002 Introduzione ai sistemi informatici 14 Caratterizzazione dell esecutore Un esecutore è caratterizzato da: Il linguaggio che è in grado di interpretare L insieme della azioni che è in grado di compiere. L insieme delle regole che a ogni costrutto linguistico sintatticamente corretto associano le relative azioni da compiere. 18/10/2002 Introduzione ai sistemi informatici 15 Caratterizzazione dell esecutore Il linguaggio che l esecutore è in grado di interpretare deve essere definito in termini formali: caratterizzazione sintattica dell esecutore. L insieme della azioni che l esecutore è in grado di compiere deve essere univocamente definito. Tali azioni devono essere deterministiche: l esecuzione di una stessa azione deve produrre sempre lo stesso risultato. L insieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere univocamente definito: caratterizzazione semantica dell esecutore. 18/10/2002 Introduzione ai sistemi informatici 16 Esecutori e linguaggi Un esecutore (calcolatore) è definito in base a tre elementi: l insieme delle operazioni che è capace di compiere; l insieme delle istruzioni che capisce (sintassi); quali operazioni associa ad ogni istruzione che riconosce (semantica). Il calcolatore capisce le istruzioni che fanno parte del linguaggio macchina. Soluzione effettiva per l esecutore Se il problema è semplice per l esecutore L esecutore lo svolge direttamente Altrimenti Il descrittore deve scomporre il problema in sottoproblemi finché l algoritmo non è espresso esclusivamente tramite operazioni elementari 18/10/2002 Introduzione ai sistemi informatici 17 18/10/2002 Introduzione ai sistemi informatici 18 Corso Informatica A Allievi Gestionali prof. C. Silvano 3

Soluzione effettiva per l esecutore La soluzione di un problema si dice effettiva per l esecutore se l esecutore è in grado di: Interpretare la descrizione della soluzione ( e quindi associare a essa le azioni che deve compiere per eseguirla) Eseguire le azioni, completando l esecuzione in un tempo finito! Procedura di soluzione di un problema Se la soluzione di un problema è effettiva, l esecutore la attua. Altrimenti il problema viene scomposto in sottoproblemi, e per ognuno di questi si applica nuovamente una procedura. 18/10/2002 Introduzione ai sistemi informatici 19 18/10/2002 Introduzione ai sistemi informatici 20 Procedura effettiva Un insieme di problemi è una procedura effettiva quando: Tutti i problemi dell insieme sono elementari; E fissato l ordine di soluzione dei problemi; E esplicitamente specificato il modo in cui un problema utilizza i risultati dei problemi che lo precedono. Problema e azione elementari I concetti di problema elementare e azione elementare sono interscambiabili ed evidenziano rispettivamente l aspetto descrittivo e quello esecutivo delle procedure effettive. 18/10/2002 Introduzione ai sistemi informatici 21 18/10/2002 Introduzione ai sistemi informatici 22 Proprietà di un azione elementare Finitezza l azione deve concludersi in un tempo finito Osservabilità l azione deve avere un effetto osservabile, cioè deve produrre qualcosa Riproducibilità a partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso risultato finale Dal problema alla soluzione automatica Specifiche dei requisiti: descrizione precisa e corretta dei requisiti (verificabilità) ---> cosa? Progetto: procedimento con cui si individua la soluzione ---> come? Soluzione: algoritmo 18/10/2002 Introduzione ai sistemi informatici 23 18/10/2002 Introduzione ai sistemi informatici 24 Corso Informatica A Allievi Gestionali prof. C. Silvano 4

Problema ANALI Soluzione informale FORMALIZZAZIONE Processo di sviluppo di un programma Soluzione formale: ALGORITMO PROGRAMMAZIONE Programma Ling. ad alto livello COMPILAZIONE Programma Ling. macchina Proprietà degli algoritmi Correttezza L algoritmo perviene alla soluzione del compito cui è preposto. Efficienza L algoritmo perviene alla soluzione del problema usando la minima quantità di risorse fisiche: tempo di esecuzione, memoria, ESECUZIONE 18/10/2002 Introduzione ai sistemi informatici 25 18/10/2002 Introduzione ai sistemi informatici 26 Proprietà di un algoritmo Univocità Non deve esistere alcun grado di libertà da parte del processore nell esecuzione di ogni azione Effettività Le operazioni previste dall algoritmo devono poter essere eseguite in tempo finito Ingresso Un algoritmo è corretto se porta ad un risultato coerente per ogni possibile scelta dei dati in ingresso Uscita L algoritmo deve fornire uno o più dati in uscita Terminazione L esecuzione di un algoritmo deve terminare in un numero finito di passi 18/10/2002 Introduzione ai sistemi informatici 27 Concetti base Algoritmo descrizione di come si risolve un problema Programma algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione) Linguaggio macchina linguaggio effettivamente compreso da un calcolatore, caratterizzato da istruzioni primitive semplici descritte in codifica binaria. Compito dell informatico è produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) e codificarli in programmi (cioè renderli comprensibili al calcolatore) 18/10/2002 Introduzione ai sistemi informatici 28 Il problema e la soluzione Algoritmo = dati + istruzioni Prima di affrontare la soluzione occorre capire esattamente il problema Non serve saper risolvere il problema sbagliato In questo corso supporremo che il problema sia ben noto e chiaramente formulato e ci concentreremo sul formulare una soluzione Spesso in pratica è più difficile capire esattamente la natura del problema che non trovarne una soluzione! (Requirements engineering) Iniziali Composto da Algoritmo Istruzioni che operano sui dati Finali (soluzione) 18/10/2002 Introduzione ai sistemi informatici 29 18/10/2002 Introduzione ai sistemi informatici 30 Corso Informatica A Allievi Gestionali prof. C. Silvano 5

e istruzioni Tipi di dati Numeri naturali o interi o reali (1, -2, 0.34) Caratteri alfanumerici (A, B,..) logici o booleani (Vero, Falso) Array o vettore di n elementi ({1,2,3}) Istruzioni Operazioni di Input/Output (es. leggi, scrivi) Operazioni Aritmetico-logiche (es. max = A + B) Strutture di controllo (es. SE, RIPETI ) 18/10/2002 Introduzione ai sistemi informatici 31 Criteri di classificazione dei dati Visibilità da parte dell utente visibile (di ingresso o uscita) trasparente (dati temporanei di supporto) Variabilità nel tempo costanti variabili (acquisizione dall esterno o assegnazione) Struttura elementari (interi, alfanumerici, booleani, ) strutturati (array, matrici, ) 18/10/2002 Introduzione ai sistemi informatici 32 Rappresentazione degli algoritmi 1. Linguaggio naturale 2. Diagramma a blocchi 3. Pseudocodice 4. Linguaggio di programmazione Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani sintetico e intuitivo codificato in linguaggi informali o semi-formali (linguaggio naturale, diagrammi di flusso, ) Algoritmo formulato per essere eseguito automaticamente preciso ed eseguibile codificato in linguaggi comprensibili dagli esecutori automatici (linguaggio macchina o linguaggio di programmazione ad alto livello) 18/10/2002 Introduzione ai sistemi informatici 33 18/10/2002 Introduzione ai sistemi informatici 34 Codifica degli algoritmi Regole base: Procedimento sequenziale Procedimentonon ambiguo Formulazione generale Prevedere tuttiicasi Problema: Calcolare il prodotto di due numeri interi positivi 18/10/2002 Introduzione ai sistemi informatici 35 18/10/2002 Introduzione ai sistemi informatici 36 Corso Informatica A Allievi Gestionali prof. C. Silvano 6

Leggi w Leggi y Somma w a se stesso y volte Visualizza il risultato Leggi w Leggi y sp = 0 ns = y Esegui { sp = sp + w ns = ns - 1 }Finché(ns = 0) z = sp Visualizza z 18/10/2002 Introduzione ai sistemi informatici 37 18/10/2002 Introduzione ai sistemi informatici 38 Strumenti per la descrizione degli algoritmi Semi-formali (specifiche iniziali, ancora intelligibili solo all essere umano) Linguaggi semi-formali SE A>0 ALLORA A=A+1 ALTRIMENTI A=0 Diagrammi di flusso (flow chart, schemi a blocchi): Formali (programmi da eseguire): linguaggi di programmazione START END PROCESS I/O DECION 18/10/2002 Introduzione ai sistemi informatici 39 18/10/2002 Introduzione ai sistemi informatici 40 Calcolare e poi stampare la somma dei primi N numeri naturali Scrivi S END S 0 S S+I I I+1 I > N? L'esecutore deve leggere un intero N e restituire il fattoriale di questo numero, cioè il valore ottenuto da N x (N-1) x (N-2) x x 1. Scrivere l algoritmo immaginando che i dati di ingresso siano sempre corretti (cioè sempre maggiori di zero). Modificare l algoritmo in modo da considerare anche la possibilità che siano inseriti valori inferiori a 1. 18/10/2002 Introduzione ai sistemi informatici 41 18/10/2002 Introduzione ai sistemi informatici 42 Corso Informatica A Allievi Gestionali prof. C. Silvano 7

Diverse alternative (es. N = 7) 1 * 2 = 2 2 * 3 = 6 6 * 4 = 24 24 * 5 = 120 120 * 6 = 720 720 * 7 = 5040 7 * 6 = 42 42 * 5 = 210 210 * 4 = 840 840 * 3 = 2520 2520 * 2 = 5040 Le alternative sono diverse? P 1 P N P 1 P N I < N N > 2 I < N N > 2 I I + 1 P P * I N N - 1 P P * N I I + 1 P P * I N N - 1 P P * N 18/10/2002 Introduzione ai sistemi informatici 43 Cosa succede se il dato in ingresso non rispetta le specifiche (N > 0)? Per esempio, che risultato restituisce l esecutore per N = 0? e per N = -4? N = 0 P = 1 N = -4 P = 1 18/10/2002 Introduzione ai sistemi informatici 44 N = 0 P = 0 N = -4 P = -4 Come gestire le eccezioni P 1 I < N Scrivi Errore! N > 0 P 1 Problema 1: Determinare il maggiore di 2 numeri interi x e y Idea: un numero x è maggiore di un numero y se la loro differenza è positiva I I + 1 P P * I I < N I I + 1 P P * I Algoritmo per il caso normale. Come lo modifico per gestire anche i casi che non erano stati previsti? 18/10/2002 Introduzione ai sistemi informatici 45 18/10/2002 Introduzione ai sistemi informatici 46 Leggi un valore dall esterno e inseriscilo nella variabile x Leggi un secondo valore dall esterno e inseriscilo nella variabile y Calcola la differenza d fra x e y (d = x y) Se (d > 0) Stampa la frase il massimo è seguita dal valore contenuto in x Altrimenti Stampa la frase il massimo è seguita dal valore contenuto in y Problema 2: Determinare il maggiore di 3 numeri interi x, y e z Idea: Scomporre il problema in modo da utilizzare l algoritmo usato per la soluzione del Problema 1 18/10/2002 Introduzione ai sistemi informatici 47 18/10/2002 Introduzione ai sistemi informatici 48 Corso Informatica A Allievi Gestionali prof. C. Silvano 8

Se x è maggiore di y (Problema 1); la soluzione corrisponde al maggiore tra x e z (Problema 1) Altrimenti la soluzione corrisponde al maggiore tra y e z (Problema 1) Problema 3: Determinare il maggiore di n numeri interi x1, x2,, xn Idea: Generalizzazione del Problema 2 basato sull utilizzo dell algoritmo usato per la soluzione del Problema 1 18/10/2002 Introduzione ai sistemi informatici 49 18/10/2002 Introduzione ai sistemi informatici 50 Calcola il maggiore tra i primi due numeri (Problema 1); Finché (ci sono numeri da verificare) Trova il maggiore tra il nuovo numero e il numero maggiore trovato in precedenza Visualizza il numero maggiore trovato. 18/10/2002 Introduzione ai sistemi informatici 51 Corso Informatica A Allievi Gestionali prof. C. Silvano 9