Il Problemi e la loro Soluzione (esempio) Il Concetto Intuitivo di Calcolatore Variabile di uscita Classe di domande omogenee Elementi di Informatica e Programmazione Variabile di ingresso Problema Quanto vale la radice quadrata Y di un numero naturale X ? Istanza Ingegneria Gestionale Quanto vale la radice quadrata intera Y di 49? Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Dati = N (numeri naturali) Soluzione dell’istanza = 7 Risultati = R (numeri reali) Docente: A.Gerevini 2 Elementi di Informatica e Programmazione U. Brescia Esercizio I Problemi e la loro Soluzione… Problema • Problema: classe di domande omogenee alle quali è possibile dare risposta mediante una procedura uniforme • Istanza del problema: ogni specifica domanda della classe • Variabili di ingresso: termini variabili che caratterizzano la formulazione di un problema • Variabili di uscita: termini variabili che caratterizzano le soluzioni attese di un problema • Dati: valori che possono assumere le variabili d’ingresso • Risultati: valori che possono assumere le variabili d’uscita • Soluzione di un’istanza di un problema: risposta alla specifica domanda che l’istanza rappresenta Quanto vale la radice quadrata intera Z di un numero naturale W (con approssimazione per difetto) ? Istanza = ? Dati = ? Soluzione dell’istanza = ? Risultati = ? Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia Variabili ingresso e uscita = ? 3 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 4 Processo di Risoluzione Risoluzione di un Problema (come trovare soluzioni per le istanze) Soggetto 1 Problema b Procedimento di risoluzione di un problema Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia Individuazione soluzione Analisi 1. Analisi del problema e individuazione di una soluzione del problema (non è la soluzione delle istanze!) 2. Descrizione della soluzione 3. Interpretazione della soluzione 4. Attuazione della soluzione da parte di un esecutore Formulazione descrizione Soggetto 2 5 Docente: A.Gerevini Descrizione interpretata Attuazione soluzione Soluzione Fondamenti di Informatica A – Università di Brescia 6 Un altro esempio • Problema: come si fa una telefonata a X? • Soluzione: 1. 2. 3. 4. Solleva il ricevitore Componi il numero X Attendi il segnale di libero Se arriva il segnale di libero allora attendi che venga qualcuno a rispondere altrimenti riaggancia 5. Se dopo un po’ non arriva nessuno a rispondere allora riaggancia altrimenti fai la tua conversazione Fondamenti di Informatica A – Università di Brescia Interpretazione descrizione boppure Un esempio di problema e di soluzione (esecutore umano) Docente: A.Gerevini Descrizione soluzione 10 • Problema: qual è il numero più piccolo Y (variabile di uscita) tra tre numeri (variabili di ingresso) X1, X2, X3 ??? • Soluzione: ??? Assumere di poter svolgere solo operazioni aritmetiche e confronti (<, >, =) tra numeri Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 10 Un altro esempio Una possibile soluzione • Problema: qual è la radice quadrata intera Y di un numero naturale X (approssimata per difetto)? • Soluzione: ??? 1. 2. 3. 4. 5. 6. 7. Assumere di poter svolgere solo operazioni aritmetiche e confronti tra numeri Per semplicità assumere X minore di 20 e maggiore di uno. Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia Se 2*2 = X allora Y = 2 e STOP Se 2*2 > X allora Y = 1 e STOP Se 3*3 = 3 allora Y = 3 e STOP Se 3*3 > X allora Y = 2 e STOP Se 4*4 = X allora Y = 4 e STOP Se 4*4 > X allora Y = 3 e STOP Y = 4 e STOP 10 Una soluzione migliore… 1. Per ogni valore della variabile di lavoro I che va da 2 a X 2. Se I*I > X allora Y=I-1 e STOP 3. Se I*I = X allora Y=I e STOP Soluzioni e Algoritmi… • La soluzione è quindi espressa come sequenza di operazioni la cui esecuzione porta alla soluzione del problema Î ALGORITMO RISOLUTIVO ALGORITMO DATI Docente: A.Gerevini SOLUZIONE Fondamenti di Informatica A – Università di Brescia 11 Problema: Richiesta di un Libro • Il problema diventa… 1. Decido quale libro richiedere 2. Cerco la scheda del libro nello schedario 3. Mi segno numero dello scaffale e posizione nello scaffale 4. Cerco lo scaffale 5. Cerco il libro nella sua posizione all’interno dello scaffale 6. Prelevo il libro Come procedo? 1. Decido quale libro richiedere 2. Prelevo il libro • Il secondo passo va dettagliato, ovvero va scomposto in sotto-problemi (procedura per raffinamenti successivi o top-down) Non è un problema elementare! Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 14 Docente: A.Gerevini (se lo schedario è ordinato!) 1. 2. • Scompongo in sotto-sotto-problemi: 1. Prendo la prima scheda 2. 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 3. Se le schede sono esaurite, allora il libro non esiste 3. 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 NB: il passo 2 deve “accorgersi” anche se il libro non esiste, diventa: • Esistono metodi più efficienti per risolvere lo stesso problema… come fareste voi? Fondamenti di Informatica A – Università di Brescia 15 Un metodo più efficiente… Cercare la scheda… Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia “se la scheda corrisponde al libro cercato oppure se la parte di schedario da esaminare è vuota allora termino la ricerca” 16 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 17 Il Calcolatore come Esecutore (una prima definizione) Soggetto Esecutore • Il soggetto esecutore (soggetto 2) deve essere in grado di interpretare la descrizione della soluzione • 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) • Caratteristiche di un calcolatore: linguaggio che è in grado di interpretare e istruzioni che è in grado di eseguire • Quando/perchè usare un calcolatore come esecutore? Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia Soluzione di un problema (programma - descrizione di un algoritmo -) CALCOLATORE Dati iniziali Risultati dell’esecuzione in corrispondenza dei dati iniziali (assegnati a variabili di input) 19 Docente: A.Gerevini Caratteristiche di un Esecutore (assegnati a variabili di output) 20 Fondamenti di Informatica A – Università di Brescia Sintassi e Semantica La struttura • Sintassi di un linguaggio: 1. 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 2. L’insieme delle azioni che è in grado di compiere 3. L’insieme delle regole che a ogni frase del linguaggio associano le relative azioni da compiere Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia insieme delle regole che specificano la scrittura di istruzioni formalmente corrette (ben formate), indipendentemente dal loro significato • Semantica di un linguaggio: Il significato insieme delle regole che specificano il significato di ciascuna istruzione, cioè l’azione che viene compiuta quando l’istruzione viene eseguita 21 Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 23 Computazione: definizioni Algoritmi e Programmi • Computazione: esecuzione di un algoritmo in corrispondenza di certi dati iniziali • Passo di computazione: ogni singolo passo elementare che l’esecutore compie durante una computazione • Sequenza computazione: sequenza di passi elementari che l’esecutore compie in corrispondenza di certi dati iniziali durante l’esecuzione di un algoritmo • Algoritmo: una sequenza di azioni (istruzioni) che, operando sui dati iniziali, consentono di ottenere la soluzione dell’istanza del problema in esame Algoritmo = concetto statico • Ogni azione della sequenza è detta passo (step) dell’algoritmo Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 24 Proprietà di un Algoritmo Docente: A.Gerevini Computazione = concetto dinamico Fondamenti di Informatica A – Università di Brescia Proprietà di un Algoritmo (cont.) • Finitezza: un algoritmo deve essere costituito da un numero finito di istruzioni • Funzione rappresentata: un algoritmo associa ai valori per le variabili di input valori per le variabili di uscita. • Univocità: ogni istruzione deve essere univocamente interpretabile ed eseguibile • Correttezza: calcola correttamente la funzione rappresentata (associata al problema da risolvere) • Effettività: deve esistere un esecutore in grado di eseguire ogni istruzione dell’algoritmo in un tempo finito • Efficienza: l’algoritmo perviene alla soluzione del compito impiegando una certa quantità di risorse fisiche • Determinismo: per qualunque dato di ingresso, a ogni passo della computazione, esiste al più un passo successivo. Ovvero: – Risorse fisiche: tempo, memoria, …. • Terminazione: l’esecuzione di un algoritmo deve terminare in un numero finito di passi di computazione assegnato un dato di ingresso, esiste una e una sola sequenza di computazione possibile dell’algoritmo Docente: A.Gerevini Fondamenti di Informatica A – Università di Brescia 25 26 Algoritmi, Programmi e Calcolatore Il Calcolatore come Esecutore di Istruzioni • Programma: descrizione formale di un algoritmo attraverso un linguaggio di programmazione • 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 • Un programma è una sequenza di istruzioni scritte in un opportuno linguaggio comprensibile al calcolatore • Il calcolatore è un esecutore di programmi • 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 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