Elementi di Informatica e Programmazione



Documenti analoghi
I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Origini e caratteristiche dei calcolatori elettronici

Il concetto di calcolatore e di algoritmo

Lezione 8. La macchina universale

Problemi, algoritmi, calcolatore

Descrizione di un algoritmo

Algoritmi e Complessità

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Come ragiona il computer. Problemi e algoritmi

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Le Macchine di Turing

4 3 4 = 4 x x x 10 0 aaa

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Nozione di algoritmo. Gabriella Trucco

Appunti sulla Macchina di Turing. Macchina di Turing

Fasi di creazione di un programma

ALGEBRA DELLE PROPOSIZIONI

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Gli algoritmi: definizioni e proprietà

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

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

Corso di Informatica

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Sistema operativo: Gestione della memoria

Dispensa di Informatica I.1

L interesse nella macchina di Turing

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

LE FUNZIONI A DUE VARIABILI

LINGUAGGI DI PROGRAMMAZIONE

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Varianti Macchine di Turing

Automazione Industriale (scheduling+mms) scheduling+mms.

Architettura di un calcolatore

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Tipologie di macchine di Turing

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Capitolo 2. Operazione di limite

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Elementi di Informatica e Programmazione

Funzioni in C. Violetta Lonati

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Le macchine di Turing

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

La programmazione. Sviluppo del software

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6

Il principio di induzione e i numeri naturali.

risulta (x) = 1 se x < 0.

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Capitolo 7: Teoria generale della calcolabilitá

Corrispondenze e funzioni

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

Introduzione alla programmazione in C

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Cos è un Calcolatore?

Linguaggi di programmazione

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Programmazione dinamica

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

Alcune nozioni di base di Logica Matematica

Esercizio su MT. Svolgimento

IL SISTEMA INFORMATIVO

Consorzio Nettuno - Corso di Matematica 1 Schede di lavoro guidato per le esercitazioni

Architettura di un computer

Anno 3. Funzioni: dominio, codominio e campo di esistenza

Corso di Matematica per la Chimica

Informazione analogica e digitale

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Matematica generale CTF

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

INFORMATICA 1 L. Mezzalira

FACOLTÀ DI INGEGNERIA ESAME DI ANALISI MATEMATICA A A.A. 2008/ Ing. Biomedica, Elettrica, Elettronica, Informatica - L Z

( x) ( x) 0. Equazioni irrazionali

Transcript:

Elementi di Informatica e Programmazione Il concetto di Algoritmo e di Calcolatore Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Cos è l informatica? Un altra definizione: [ ] possiamo considerare l informatica come la scienza della rappresentazione e dell elaborazione dell informazione [Ceri et al. 99] L informatica è dunque una scienza: l elaborazione dell informazione avviene in modo sistematico e rigoroso Docente: Daniela Fogli L elaborazione può essere automatizzata Daniela Fogli Elementi di Informatica e Programmazione 2 Alcuni concetti chiave I problemi e la loro risoluzione Algoritmo: una sequenza di operazioni che riguardano l elaborazione di informazione e che sono comprensibili ed eseguibili da un esecutore Un esempio di esecutore: il calcolatore In realtà un calcolatore esegue un programma, ovvero la descrizione formale di un algoritmo Necessità di linguaggi per la descrizione formale di algoritmi: linguaggi di programmazione Gli algoritmi di fatto risolvono problemi vediamo cosa significa 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 (permettono di generare le istanze) Variabili di uscita: termini variabili che caratterizzano le soluzioni attese (delle istanze) 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 Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4

Esempio Esempio Classe di domande omogenee Problema Quanto vale la radice quadrata intera Y di un numero intero positivo X? Variabile di uscita Variabile di ingresso Classe di domande omogenee Problema Quanto vale la radice quadrata Y di un numero intero positivo X? Variabile di uscita Variabile di ingresso Istanza Istanza Dati = Interi positivi Risultati = Interi Quanto vale la radice quadrata intera Y del numero 49? Soluzione dell istanza = 7 Dati = Interi positivi Risultati = Reali Quanto vale la radice quadrata Y del numero 50? Soluzione dell istanza = 7,07 Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Un esempio di problema e di procedura di risoluzione Procedura di risoluzione Problema: Quanto vale la radice quadrata intera Y di un numero intero positivo X? Quale potrebbe essere una procedura di risoluzione? Partiamo dalle istanze X=5: 2*2=4, 3*3=9 Y=2 X=9: 2*2=4, 3*3=9 Y=3 X=1: 1*1=1, 2*2=4 Y=1 X=10: 2*2=4, 3*3=9, 4*4=16 Y=3 Idea! Parto da Y=1, controllo se Y 2 <X Se sì allora provo con Y+1 e continuo Altrimenti significa che Y 2 >=X: Se Y 2 = X allora Ok Altrimenti la soluzione deve essere Y-1 Una possibile procedura di risoluzione per il problema dato è dunque: 1. INIZIO: Assegna a Y il valore 0 2. Incrementa Y di 1 3. Se Y 2 < X allora torna all istruzione 2 4. Se Y 2 = X allora FINE 5. Se Y 2 > X allora decrementa Y di 1: FINE Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8

Procedure di risoluzione e algoritmi La procedura di risoluzione è quindi espressa come sequenza di istruzioni la cui esecuzione porta alla soluzione del problema ALGORITMO RISOLVENTE Computazione Computazione: esecuzione di un algoritmo in corrispondenza di certi dati Passo di computazione: ogni singolo passo elementare che un esecutore compie durante l esecuzione di un algoritmo Sequenza di computazione: sequenza di passi elementari che un esecutore compie in corrispondenza di certi dati iniziali durante l esecuzione di un algoritmo Algoritmo = concetto statico Computazione = concetto dinamico DATI ALGORITMO SOLUZIONE Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 10 Esempio di sequenza di computazione Più formalmente Supponendo che la variabile in ingresso X = 8 eseguiamo l algoritmo passo-passo 1 Y 0 2 Calcolo di Y+1 e risultato in Y Y =1 3 Controllo se Y 2 < X è vero 4 Calcolo di Y+1 e risultato in Y Y =2 5 Controllo se Y 2 < X è vero 6 Calcolo di Y+1 e risultato in Y Y =3 7 Controllo se Y 2 < X è falso 8 Controllo se Y 2 = X è falso 9 Controllo se Y 2 > X è vero (ovviamente!) 10 Calcolo di Y-1 e risultato in Y Y =2 11 Fine Problema P[X, Y] Istanza del problema (X 1, X 2,, X n ): variabili di ingresso, con domini D 1, D 2,, D n (insiemi di dati) (Y 1, Y 2,, Y m ): variabili di uscita, con domini R 1, R 2,, R m (insiemi di risultati) P[X, Y] con X D = D 1 x D 2 x x D n Daniela Fogli Elementi di Informatica e Programmazione 11 Daniela Fogli Elementi di Informatica e Programmazione 12

Algoritmo risolvente del problema Calcolatore come Esecutore Universale di Algoritmi Denotiamo con A[X, Y] l algoritmo risolvente di P[X, Y] A[X, Y] produce una soluzione per ogni possibile istanza di P[X, Y] Eseguendo l algoritmo risolvente A[X, Y] con il dato di ingresso X Є D si otterrà come risultato la soluzione Y Є R dell istanza P[X, Y] algoritmo A[X, Y] problema P[X, Y] Problema P[X, Y] Algoritmo A[X, Y] dato: X CALCOLATORE risultato: Y soluzione Sostituzione di X con X Esecuzione di A con il dato X P[X, Y] Istanza P[X, Y] Risultato Y: soluzione di P[X, Y] istanza Daniela Fogli Elementi di Informatica e Programmazione 13 Daniela Fogli Elementi di Informatica e Programmazione 14 Calcolatore come esecutore Algoritmi, programmi e calcolatori Un esecutore deve essere in grado di interpretare la descrizione della procedura di risoluzione (algoritmo risolvente) Deve inoltre essere in grado di eseguire le azioni presenti nella descrizione interpretata Il calcolatore è un esecutore di algoritmi ovvero di procedure di risoluzione - identificati e descritti da esseri umani (in genere un team di progettisti, programmatori e utenti) Un algoritmo deve essere comprensibile per il suo esecutore Per essere comprensibili da un calcolatore, gli algoritmi devono essere espressi in un linguaggio di programmazione Programma: descrizione formale di un algoritmo attraverso un linguaggio di programmazione Un programma è una sequenza di istruzioni scritte in un opportuno linguaggio comprensibile dal calcolatore Il calcolatore è dunque un esecutore di programmi Il compito di un esperto informatico consiste nel produrre algoritmi e codificarli in programmi Daniela Fogli Elementi di Informatica e Programmazione 15 Daniela Fogli Elementi di Informatica e Programmazione 16

Il calcolatore come esecutore di programmi Il calcolatore come esecutore (una definizione rivisitata) Dati iniziali Assegnati a variabili di ingresso Programma CALCOLATORE sequenza di istruzioni di un linguaggio di programmazione (descrive un algoritmo) Risultati dell esecuzione in corrispondenza dei dati iniziali Assegnati a variabili di uscita Un calcolatore è un sistema che, ricevendo in ingresso la descrizione, in un opportuno linguaggio, di un algoritmo risolvente A[X,Y] (cioè un programma) per un certo problema P[X,Y] e un dato X, produce un risultato Y, ovvero la soluzione Y dell istanza P[X,Y] Un calcolatore è un esecutore universale di programmi elabora puri simboli (per esso privi di significato ) non risolve problemi (il problema non è un suo ingresso) ma esegue programmi! Daniela Fogli Elementi di Informatica e Programmazione 17 Daniela Fogli Elementi di Informatica e Programmazione 18 Esempio Perché usare un calcolatore come esecutore dati iniziali a = 2, n = 5 Istanza del problema = P[2,5,b] CALCOLATORE Programma per il calcolo della potenza n-esima di a: P[a, n, b] Risultati dell esecuzione in corrispondenza dei dati iniziali b = 32 X Y Almeno 3 aspetti lo fanno preferire a un esecutore umano Velocità Es. si pensi al calcolo strutturale, alla simulazione di processi, al controllo della traiettoria di un veicolo spaziale ma anche a tutte quelle situazioni in cui occorre trattare una enorme quantità di dati es. gestione anagrafe fiscale Affidabilità basso tasso di errore Economicità ottimo compromesso costi/benefici Daniela Fogli Elementi di Informatica e Programmazione 19 Daniela Fogli Elementi di Informatica e Programmazione 20

L unicità del calcolatore nella storia della tecnologia Il fatto fondamentale: il calcolatore è un dispositivo programmabile Consente di svolgere compiti diversi senza alcuna modifica della sua struttura fisica Basta intervenire sul livello software (programmi) lasciando inalterato il livello hardware (struttura fisica) per modificarne il comportamento Proprietà di un algoritmo La definizione di algoritmo presuppone che esso possa essere espresso in termini linguistici ben definiti, interpretato ed eseguito da un soggetto esecutore (il calcolatore). Da ciò conseguono le seguenti proprietà: Finitezza: un algoritmo deve essere costituito da un numero finito di istruzioni Definitezza: le istruzioni di cui un algoritmo è costituito devono appartenere a un insieme finito e prefissato di tipi elementari Univocità: ogni istruzione deve essere univocamente interpretabile ed eseguibile Effettività: deve esistere un esecutore in grado di eseguire ogni istruzione dell algoritmo in un tempo finito Daniela Fogli Elementi di Informatica e Programmazione 21 Daniela Fogli Elementi di Informatica e Programmazione 22 Altre proprietà Sequenza di computazione finita 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 computazione possibile dell algoritmo Correttezza: l algoritmo perviene alla soluzione del compito cui è preposto 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 dato: X A[X, Y] algoritmo ESECUTORE risultato: Y passo 1 passo 2 passo 3 passo n In questo caso, la computazione produce un risultato Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24

Sequenza di computazione infinita Relazione algoritmo/problema A[X, Y] algoritmo dato: X ESECUTORE passo 1 passo 2 passo 3 NB: l algoritmo è comunque finito! Un algoritmo risolve 1 problema Viceversa, per ogni problema risolubile (ovvero, se esiste un algoritmo che lo risolve), esistono infiniti algoritmi che lo risolvono, infatti: un algoritmo è descritto da una sequenza di istruzioni è sufficiente pensare che possiamo sempre aggiungere sequenze di istruzioni che non hanno effetto sul risultato e possiamo farlo in infiniti modi (es. sommare e sottrarre 1 a/da una variabile, sommare e sottrarre 2, ecc. ecc.) In questo caso, il risultato rimane indefinito Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Due algoritmi che risolvono lo stesso problema Informatica Teorica 1. INIZIO: Assegna a Y il valore 0 2. Incrementa Y di 1 3. Se Y 2 < X allora torna all istruzione 2 4. Se Y 2 = X allora FINE 5. Se Y 2 > X allora decrementa Y di 1: FINE Algoritmo modificato ma equivalente Algoritmo di partenza 1.INIZIO: Assegna a Y il valore 0 2.Incrementa Y di 1 3.Se Y 2 < X allora torna all istruzione 2 4.Se Y 2 = X allora FINE 5.Incrementa Y di 1 6.Decrementa Y di 1 7.Se Y 2 > X allora decrementa Y di 1: FINE Utilizzando strumenti matematici, studia macchine astratte descritte formalmente, anziché macchine concrete Permette di ottenere risultati su cosa una macchina è in grado di calcolare e quindi quali problemi possono essere risolti a prescindere dalla tecnologia impiegata per realizzare i calcolatori La tecnologia cambia, i risultati generali no: - La macchina analitica di Charles Babbage (mai realizzata) è stata progettata nel 1830 - La macchina di Turing (di Alan Turing) è stata pubblicata nel 1936 - Il primo calcolatore elettronico solo nel 1943 Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28

Cenni sulla macchina di Turing La macchina di Turing Macchina astratta utilizzata nell informatica teorica per formalizzare i concetti di algoritmo, esecutore e computazione Macchine di estrema semplicità, ma ogni funzione effettivamente computabile, complessa quanto si vuole, può essere computata da una macchina di Turing purché non si pongano limiti di tempo e di memoria (Tesi di Church-Turing) Questa tesi non può essere provata Rappresenta una definizione del concetto intuitivo di funzione computabile, ovvero una funzione che può essere calcolata da un algoritmo finito è composta da: Nastro (potenzialmente infinito) suddiviso in caselle in cui possono essere scritti o letti simboli di un alfabeto (simboli: s 0, s 1,, s n ) Testina di lettura/scrittura Unità di spostamento per muovere la testina a destra o sinistra in ogni istante Organo di controllo che determina il comportamento. E caratterizzato ad ogni istante da uno stato interno (stati: q 1, q 2,, q m con m finito) Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 30 Macchina di Turing Esecuzione di un programma s 1 B Testina di lettura/scrittura nastro Il programma per una macchina di Turing consiste in un insieme di istruzioni, ciascuna formata da una quintupla <q i, s j, s k, D, q u > dove q i : stato presente s j : simbolo letto dal nastro s k : simbolo sostituito sul nastro D: direzione del movimento (R, L, N) q u : stato futuro q 1 Unità di spostamento testina Unità di controllo (contenente un elemento di stato) Ad ogni istante la macchina esegue la quintupla che può essere applicata per l attuale stato interno e per il simbolo in lettura L insieme delle quintuple che descrive una MT i può essere espresso tramite una tabella Daniela Fogli Elementi di Informatica e Programmazione 31 Daniela Fogli Elementi di Informatica e Programmazione 32

Esempio di Macchina di Turing Tabella delle transizioni di stato Stati Ingressi 0 1 b q 1 q 2 0q 1 R 0q 2 R 0q h N 0q 2 R 0q 1 R 1q h N Dato il simbolo di ingresso letto sul nastro (in questa macchina: 0, 1 o b) e lo stato corrente macchina (in questa: q 1 o q 2 ) la macchina scrive un nuovo simbolo sul nastro al posto di quello letto modifica lo stato della macchina sposta la testina di lettura/scrittura di un posto a destra (R/right) o a sinistra (L/left) o la lascia dov è (N/none) Questa macchina calcola una ben precisa funzione: è quella MT che è in grado di dire se la sequenza in ingresso contiene un numero pari o dispari di 1 Funzioni calcolate e Macchine di Turing Ogni macchina di Turing definisce una particolare funzione matematica che agisce sui dati in ingresso forniti dal nastro Una Macchina di Turing MT i calcola una e una sola funzione f i Non è vero il contrario: se una funzione f j può essere calcolata da una Macchina di Turing MT j allora esistono infinite altre Macchine di Turing che calcolano la medesima funzione Esistono problemi (funzioni) non computabili, ovvero per i quali non esistono algoritmi risolventi (macchine di Turing che le calcolano) un esempio: non esiste un algoritmo che, dato un qualunque algoritmo e un dato, può decidere se esso termina oppure no Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Macchina di Turing Universale E una macchina che può simulare il comportamento di una qualunque macchina di Turing una volta ricevuto in ingresso la descrizione della macchina da simulare (Se qualcuno è interessato all informatica teorica, può consultare i capitoli 15, 16, 17 del libro di testo) Daniela Fogli Elementi di Informatica e Programmazione 35