I Problemi e la loro Soluzione… Il Concetto Intuitivo di Calcolatore • Problema: classe di domande omogenee alle quali è possibile dare risposta mediante una procedura uniforme • Istanza del problema: ogni specifica domanda della classe Fondamenti di Informatica A • Variabili di ingresso: termini variabili che caratterizzano la formulazione di un problema Ingegneria Gestionale • Variabili di uscita: termini variabili che caratterizzano le soluzioni attese di un problema Università degli Studi di Brescia • Dati: valori che possono assumere le variabili d’ingresso Docente: Prof. Alfonso Gerevini • Risultati: valori che possono assumere le variabili d’uscita • Soluzione di un’istanza di un problema: risposta alla specifica domanda che l’istanza rappresenta Docente: A.Gerevini Classe di domande omogenee Problema Quanto vale la radice quadrata Y di un numero naturale X ? Variabile di ingresso Quanto vale la radice quadrata intera Y di 49? Risultati = R (numeri reali) Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia • Procedimento di risoluzione di un problema – Analisi del problema e individuazione di un metodo di soluzione – Descrizione della soluzione – Interpretazione della soluzione – Attuazione della soluzione Istanza Dati = N (numeri naturali) 2 Risoluzione di un Problema Esempio Variabile di uscita Fondamenti di Informatica A – Università di Brescia Soluzione dell’istanza = 7 3 ATTENZIONE: soluzione del problema e soluzione dell’istanza non sono la stessa cosa! Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 4 Esempio: montaggio di un elettrodomestico Processo di risoluzione Soggetto 1 Problema b SOGGETTO 1 Individuazione soluzione Analisi Formulazione descrizione Soggetto 2 Conoscenza di come si risolve il problema Descrizione soluzione Interpretazione descrizione Attuazione soluzione Soluzione Fondamenti di Informatica A – Università di Brescia 5 Analisi del Problema Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 6 • Cos’è un modello? • Dato un certo problema, un modello del problema è una rappresentazione semplificata del problema stesso che evidenzia: – Comprensione del problema: eliminando ogni ambiguità nella sua formulazione, focalizzando gli obiettivi, evidenziando i dati impliciti ed espliciti del problema – Modellazione del problema: creando un modello – Ricerca della soluzione Fondamenti di Informatica A – Università di Brescia Es. l’acquirente dell’elettrodomestico Modellazione del Problema • L’analisi di un problema consiste in: Docente: A.Gerevini SOGGETTO 2 Effettiva capacità di risolvere il problema Descrizione interpretata boppure Docente: A.Gerevini Es. progettista di un elettrodomestico – Gli elementi del problema – Le loro proprietà e le relazioni fra di essi • Un modello è solo un ausilio alla risoluzione del problema, non è sufficiente da solo a risolvere il problema • E’ importante che la soluzione trovata sul modello possa essere interpretata correttamente in modo da essere trasferita sulla realtà 7 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 8 Un esempio di problema e di soluzione Relazione tra Realtà e Modello Mondo reale Un MODELLO è un’astrazione del problema. Rappresenta una semplificazione completa e autoconsistente della realtà, creata per comprendere il problema • Problema: come si fa una telefonata? • Soluzione: – – – – Solleva il ricevitore Componi il numero Attendi il segnale di libero Se arriva il segnale di libero allora attendi che venga qualcuno a rispondere altrimenti riaggancia – Se dopo un po’ non arriva nessuno a rispondere allora riaggancia altrimenti fai la tua conversazione Astrae dai dettagli irrilevanti del mondo MODELLO analisi f(x) = g'(y) ° h(z) Docente: A.Gerevini – 9 Fondamenti di Informatica A – Università di Brescia • La soluzione è quindi espressa come sequenza di operazioni la cui esecuzione porta alla soluzione del problema Î ALGORITMO RISOLUTIVO DATI Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 10 Procedura di Risoluzione di un Problema Soluzioni e Algoritmi… ALGORITMO (soluzione problema) Quali sono le istanze del problema? SOLUZIONE (istanza) 11 • Problemi elementari (o primitivi) sono quei problemi la cui soluzione corrisponde all’esecuzione di un’azione elementare • Azione elementare: azione che può essere direttamente eseguita da un esecutore • Esempio: “componi il numero” può essere considerata un’azione elementare, in quanto solitamente non occorre spiegare di più (tutto dipende però dal soggetto esecutore…) • Risolvere un problema = risolvere un’opportuna successione di problemi più semplici Î SCOMPOSIZIONE IN SOTTO-PROBLEMI Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 12 Esempio di Scomposizione di un Problema Problema: Richiesta di un Libro • Gestione di una biblioteca in cui: • – I libri sono disposti sugli scaffali – La posizione di ogni libro è data da: numero dello scaffale e posizione nello scaffale – Esiste un schedario in cui ogni scheda riporta le seguenti informazioni: • • • • • Docente: A.Gerevini – Decido quale libro richiedere – Prelevo il libro • Cognome e nome dell’autore Titolo del libro Data di pubblicazione Numero dello scaffale in cui si trova Posizione nello scaffale Fondamenti di Informatica A – Università di Brescia Come procedo? 13 Il secondo passo va dettagliato, ovvero va scomposto in sotto-problemi (procedura per raffinamenti successivi o top-down) Docente: A.Gerevini Il problema diventa… • • • • • • • Scompongo in sotto-sotto-problemi: – Prendo la prima scheda – Il titolo, l’autore e la data corrispondono a quelli del libro che sto cercando? Se sì allora ho individuato la scheda, altrimenti passo alla scheda successiva e ripeto il controllo – Se le schede sono esaurite, allora il libro non esiste Non è un problema elementare! Fondamenti di Informatica A – Università di Brescia 14 Cercare la scheda… Decido quale libro richiedere Cerco la scheda del libro nello schedario Mi segno numero dello scaffale e posizione nello scaffale Cerco lo scaffale Cerco il libro nella sua posizione all’interno dello scaffale Prelevo il libro Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 15 • Esistono metodi più efficienti per risolvere lo stesso problema… come fareste voi? Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 16 Un metodo più efficiente… Elaborazione di Informazione (se lo schedario è ordinato) • • • Esamino la scheda centrale dello schedario Se la scheda corrisponde al libro cercato allora termino la ricerca Altrimenti cerco (con lo stesso metodo) nella metà inferiore o superiore dello schedario, a seconda che il libro cercato preceda o segua il libro indicato sulla scheda • Una certa classe di problemi richiede l’elaborazione di informazione (attraverso uno o più algoritmi) • Problema di elaborazione dell’informazione: insieme di dati di partenza e risultato ricercato • Ogni soluzione di un problema è una procedura che genera un risultato sulla base dei dati di partenza NB: il passo 2 deve tener conto che se il libro potrebbe non esistere, diventa: Elaborazione “se la scheda corrisponde al libro cercato oppure se la parte di schedario da esaminare è vuota allora termino la ricerca” Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia dati 17 Soggetto Esecutore Docente: A.Gerevini Soluzione di un problema (programma - descrizione di un algoritmo -) • Deve inoltre essere in grado di eseguire le azioni presenti nella descrizione interpretata • Il calcolatore è un esecutore di soluzioni identificate e descritte da esseri umani (in genere un team di progettisti, programmatori e utenti) CALCOLATORE Risultati dell’esecuzione in corrispondenza dei dati iniziali Dati iniziali • Caratteristiche di un calcolatore: linguaggio che è in grado di interpretare e istruzioni che è in grado di eseguire (assegnati a variabili di input) • Quando/perchè usare un calcolatore come esecutore? Fondamenti di Informatica A – Università di Brescia 18 Fondamenti di Informatica A – Università di Brescia Il Calcolatore come Esecutore (una prima definizione) • Il soggetto esecutore (soggetto 2) deve essere in grado di interpretare la descrizione della soluzione Docente: A.Gerevini risultato 19 Docente: A.Gerevini (assegnati a variabili di output) Fondamenti di Informatica A – Università di Brescia 20 Risolvere le ambiguità… Caratteristiche di un Esecutore • Caratteristiche di un esecutore (in modo più formale) Il linguaggio che è in grado di interpretare Un linguaggio si fonda su un certo numero di simboli di un certo alfabeto A. Con i simboli si formano le parole; tra le parole si inseriscono connettivi a formare frasi • • Insieme delle azioni che è in grado di compiere Insieme delle regole che a ogni frase del linguaggio associano le relative azioni da compiere Docente: A.Gerevini 21 Fondamenti di Informatica A – Università di Brescia • Il linguaggio che l’esecutore è in grado di interpretare deve essere definito in termini formali: caratterizzazione sintattica dell’esecutore • L’insieme delle azioni che l’esecutore è in grado di compiere deve essere univocamente definito, e tali azioni devono essere deterministiche • L’insieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere univocamente definito: caratterizzazione semantica dell’esecutore Docente: A.Gerevini Sintassi e Semantica • Sintassi di un linguaggio: La struttura • Algoritmo: una sequenza di azioni (istruzioni) che, operando sui dati iniziali, consentono di ottenere i risultati che costituiscono la soluzione dell’istanza del problema Il significato • Tali azioni sono determinate tramite la scomposizione del problema in sottoproblemi insieme delle regole che specificano il significato di ciascuna istruzione, cioè l’azione che viene compiuta quando l’istruzione viene eseguita Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 22 Algoritmi e Programmi insieme delle regole che specificano la scrittura di istruzioni formalmente corrette (ben formate), indipendentemente dal loro significato • Semantica di un linguaggio: Fondamenti di Informatica A – Università di Brescia • La soluzione di un sottoproblema è detta passo (step) dell’algoritmo 23 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 24 Computazione Proprietà di un Algoritmo • Computazione: esecuzione di un algoritmo in corrispondenza di certi dati iniziali • Passo di computazione: ogni singolo passo elementare che l’esecutore compie durante l’esecuzione di un algoritmo • Sequenza computazione: sequenza di passi elementari che l’esecutore compie in corrispondenza di certi dati iniziali durante l’esecuzione di un algoritmo Algoritmo = concetto statico Docente: A.Gerevini • Finitezza: un algoritmo deve essere costituito da un numero finito di istruzioni • Univocità: ogni istruzione deve essere univocamente interpretabile ed eseguibile Computazione = concetto dinamico Fondamenti di Informatica A – Università di Brescia 25 • Effettività: deve esistere un esecutore in grado di eseguire ogni istruzione dell’algoritmo in un tempo finito • Determinismo: per qualunque dato di ingresso, a ogni passo della computazione, esiste al più un passo successivo. Ovvero: assegnato un dato di ingresso, esiste una e una sola sequenza di computazione possibile dell’algoritmo Docente: A.Gerevini Proprietà di un Algoritmo (cont.) • Funzione rappresentata: un algoritmo associa ai valori per le variabili di input valori per le variabili di uscita (i risultati). • Correttezza: l’algoritmo perviene alla soluzione del compito cui è preposto senza difettare di alcun passo fondamentale (calcola correttamente la funzione rappresentata) • Efficienza: l’algoritmo perviene alla soluzione del compito impiegando il numero minimo di risorse fisiche – Risorse fisiche: tempo, memoria, …. • Terminazione: l’esecuzione di un algoritmo deve terminare in un numero finito di passi Fondamenti di Informatica A – Università di Brescia 26 Programmi e Calcolatori • Un algoritmo deve essere comprensibile al suo esecutore • Programma: descrizione formale di un algoritmo attraverso un linguaggio di programmazione • Il calcolatore è un esecutore di programmi • Un programma è una sequenza di istruzioni scritte in un opportuno linguaggio comprensibile al calcolatore • Il compito di un esperto informatico consiste nel produrre algoritmi e codificarli in programmi Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 27 Il Calcolatore come Esecutore di Istruzioni “Linguaggio Macchina” • L’insieme di istruzioni più complesso può essere riscritto in un linguaggio elementare basato su un alfabeto binario (composto dei soli simboli 0 e 1) ed un insieme di poche distinte operazioni per la manipolazione del sequenze di 0 e 1 • Il calcolatore digitale è un dispositivo che è in grado di interpretare ed eseguire le istruzioni scritte in questo linguaggio elementare Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 29 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 30 Il Calcolatore come Esecutore (una definizione rivisitata) • In generale, oggi i programmatori usano linguaggi di programmazione di alto livello • Questi linguaggi: • Un calcolatore è un sistema che, ricevendo in ingresso la descrizione, in un opportuno linguaggio, di un algoritmo risolvente A[In,Out] (cioè un programma) per un certo problema P[In,Out] e un dato In, produce un risultato Out, ovvero la soluzione Out dell’istanza P[In,Out] – hanno costrutti più vicini al ragionamento umano – consentono al programmatore di descrivere i problemi a un livello di astrazione di poco inferiore a quello degli algoritmi – permettono di ragionare secondo una logica vicina al problema piuttosto che alle caratteristiche fisiche del calcolatore • I programmi scritti in questi linguaggi devono subire un processo di traduzione (compilazione) per essere comprensibili da parte del calcolatore: Un calcolatore “capisce” solo la sua lingua (il linguaggio macchina) Fondamenti di Informatica A – Università di Brescia • L’insieme di queste istruzioni costituisce il linguaggio macchina • I programmi eseguibili da un calcolatore sono sequenze finite di istruzioni in linguaggio macchina (che descrivono algoritmi) Linguaggi di Programmazione Docente: A.Gerevini • I circuiti elettronici di un calcolatore sono in grado di riconoscere ed eseguire un numero limitato di istruzioni • Un calcolatore è un esecutore universale di programmi 31 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 32 Esempio Programma per il calcolo della potenza n-esima di x: P[x, n, y] input output CALCOLATORE dati iniziali Risultati dell’esecuzione in corrispondenza dei dati iniziali x = 2, n = 5 Istanza del problema = P[2,5,y] Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia y = 32 33