DAL PROBLEMA AL PROGRAMMA Scopo del modulo Conoscere alcuni concetti fondamentali d ll’ f dell’informatica:algoritmo, l automa, llinguaggio formale Essere in grado di cogliere l’intreccio tra alcuni risultati della matematica e della logica dei primi decenni del secolo scorso ed i successivi sviluppi e applicazioni che questi hanno avuto in campo informatico Indice 8.1 Problemi e algoritmi 8.1.1 introduzione intuitiva del concetto di problema 8.1.2 cenni sulle strategie per la risoluzione dei problemi 8.1.3 8 3 soluzione di un problema p 8.1.4 gli algoritmi 8.1.4a Diagrammi a blocchi 8.1.4b Linguaggio g gg di progetto p g 8.2 Automi esecutori 8.2. Automi esecutori 8.2.1 Caratteristiche di un automa 8.2.1b Concetto di modello 8.2.1c Concetto di automa 8.2.2 Automi e classi di problemi p Esercitazioni 8.3 Linguaggi 8.3.1 Sintassi e semantica dei linguaggi 8.3.1a Linguaggi nella comunicazione uomo-macchina 8.2.2 Linguaggi e automi 8.3.3 Linguaggi di programmazione 8.1.1 Introduzione intuitiva al concetto di problema Il problema è una situazione che pone delle domande alle quali si devono dare delle risposte. risposte Risolvere il problema vuol dire uscire dalla situazione 8.1 Problemi e algoritmi Un problema consta dei seguenti elementi •Dati: ossia ciò che è noto e che indichiamo col termine input •Risultati: gli elementi incogniti che si devono determinare e che indicheremo con output •Condizioni: le limitazioni soggiacere i risultati cui devono 8 .1 Problemi e algoritmi Tipi di problemi Problemi di decisione Problemi di ricerca Problemi di ottimizzazione 8.1.2 Strategie per la risoluzione dei problemi Problema Interpretazione Modello Verifica dei risultati Esecuzione Procedimento risolutivo (algoritmo) 8.1.2b Concetto di modello Modello E’ uno schema teorico elaborato per rappresentare elementi fondamentali di fenomeni o enti Modelli descrittivi (riproducono in modo semplice la realtà , senza presupporre l’uso che ne verrà fatto) Modelli predittivi (danno gli elementi di una situazione per prevederne l’evoluzione) Modelli prescrittivi (impongono un particolare comportamento in previsione dell’obiet tivo da raggiungere) Modelli simbolici o matematici (danno una rappresentazione astratta mediante un insieme di equazioni che legano le grandezze) Modelli analogici ( danno d una rappresentazione t i fedele f d l della d ll realtà ltà in i scala l ridotta id tt ) 8.1.2 Strategie per la dei problemi risoluzione Interpretazione TOP DOWN GRAFICO Suddivide il problema in tanti piccoli sottoproblemi Utilizza uno schema ggrafico a segmenti g 8.1.2 Strategie per la risoluzione dei problemi Algoritmo Insieme delle istruzioni che definiscono una sequenza di operazioni mediante le quali si risolve il problema Deve essere : finito (numero limitato di passi ); definito (ogni g istruzione deve consentire un’interpretazione p univoca); eseguibile b l ( la sua esecuzione deve essere eseguibile con gli strumenti a disposizione); deterministico ( ad ogni passo deve essere definita una operazione successiva ). 8.1.2 Strategie per risoluzione dei problemi Rappresentazioni grafiche e formalizzate di un algoritmo La descrizione delle fasi esecutive del problema può avvenire mediante la formalizzazione dei passi elementari da effettuare che può essere realizzata con: Diagramma g a bblocchi occ o flow-chart e/o Pseudocodifica d difi 8.1.4a Diagrammi a blocchi Diagramma a blocchi o flow-chart Ha il pregio H i di evidenziare id i visivamente ii l’ l’avanzamento i in sequenza e le varie strutture che compongono l’algoritmo, presenta istruzioni di input, calcolo e/o di elaborazione, condizioni e output. INPUT ISTRUZIONI CONDIZIONI OUTPUT 8.1.4a Esempio di diagramma a blocchi inizio Somma di una sequenza di numeri N S= A S= S+A N N1 N=N-1 NO N= SI S FINE 8.1.4b Linguaggio di progetto Linguaggio di progetto o pseudocodifica E un linguaggio formale, ( linguaggio di progetto) con regole prive di ambiguità ed eccezioni che esprimono p i vari tipi p di istruzioni. Viene definito p pseudocodifica o notazione lineare strutturata. Generalmente utilizzato dai programmatori di elaboratori. begin ESEMPIO IN PASCAL Input N S repeat input A S S+A N N-1 1 until N= output S end 8.2 Automi esecutori La risoluzione di un problema è un processo di manipolazione di informazioni per generare nuove informazioni . Per risolvere un problema ci sono due tipi di attività : “intelligenti”di elaborazione “routinarie” di esecuzione 8.2.1 Caratteristiche di un automa Automi Sono macchina che compiono attività complesse in cui sono riconoscibili elementi propri delle attività atti ità s periori del superiori comportamento umano. Possono essere programmate per svolgere diverse mansioni e per modificare le proprie azioni in relazione ai mutamenti ambientali. ambientali (Es: lavatrici, lavatrici sistemi di controlli ascensori, ascensori bancomat…computer) Un automa è un sistema : Dinamico Passa da uno stato all’altro secondo gli input che riceve Invariante Se le condizioni iniziali sono le stesse il comportamento del sistema è invariato Discreto Le variabili, d’ingresso, di stato e d’uscita possono assumere solo valori discreti 8.2.1 Il concetto di automa Grafi e tabelle di transizione Servono a rappresentare il comportamento logico-funzionale di un automa Es. tabella e grafo di un automa a stati finiti di un ascensore S\i T 1 2 pt Pt/ fermo 1p/ su 2p/ su 1p Pt/ giù 1p/ fermo 2p/ su 2p Pt/ giù 1p/ giù 2p/ fermo 1/ su 1/fermo T / fermo T/giù g PT 2/ fermo 2/su 1P 1/ ggiù 2P 2/su 8.2.2 Automi e classi di problemi Un sistema automatico o automa è un sistema nel quale la componente umana è completamente eliminata nell’ambito dei processi, che sono ben determinati e prevedibili: Lavatrice, lavastoviglie, programma) computer Un sistema umano, al contrario, presenta un carattere probabilistico, poiché l’uomo può assolvere a funzioni impreviste , utilizzando il ragionamento, la creatività e l’intuito. (automa a Problemi e algoritmi ESERCITAZIONI A N Un bambino ha costruito una torre di tre blocchi colorati così disposti dall dall’alto alto in basso: ROSSO-GIALLO-VERDE. IL bambino vuole capovolgerla in modo da avere VERDE-GIALLO-ROSSO.Può spostare solo un blocchetto alla volta. Individuare il numero minimo di stati p per i quali q si arriva alla configurazione g desiderata. Cercare una chiave in un mazzo di 100 chiavi con il minor numero di prove (diagramma di flusso) 8.3 Linguaggi Il linguaggio è un sistema codificato di segni che consente la comunicazione, i t intesa come scambio bi di informazioni 8.3.1 Sintassi e semantica linguaggi dei Un’informazione può : Essere acquisita direttamente tramite rilevamento di un evento reale attraverso percezione sensoriale. Essere trasmessa (messaggio) intenzionalmente da un emittente ad un ricevente pper mezzo di un canale La comunicazione Il messaggio presuppone l’utilizzo di un codice (sistema di regole) e di un linguaggio che devono essere conosciuti sia dal emittente che dal destinatario, altrimenti la comunicazione non ha effetto ? ? ? ? emittente destinatario 8.3.1 Sintassi e semantica dei linguaggi La funzione del linguaggio è quella di sostituire ad oggetti o concettii dei d i segni/simboli i/ i b li per trasmettere un messaggio. i Il segno è l’associazione di qualcosa di materiale e sensibile (immagine suono…) (immagine, suono ) che chiamiamo significante con qualcosa di puramente concettuale che chiamiamo significato Il codice ci consente l’interpretazione dei segni Segno gatto = significante Il gruppo dei suoni o di lettere g/a/t/t/o + significato 8.3.1 Sintassi e semantica dei linguaggi ELEMENTI DI UN LINGUAGGIO Alfabeto insieme finito e non vuoto di simboli convenzionali espressi con segni tipografici detti caratteri Ortografia insieme finito e non vuoto di regole per la scrittura dei suoni Sintassi insieme finito e non vuoto delle regole mediante le quali si formano le stringhe o le frasi di un linguaggio Semantica insieme finito e non vuoto di significati da attribuire alle stringhe Morfologia insieme finito e non vuoto di tuttele regole che servono per generare le forme di un linguaggio 8.3.1.a Linguaggi nella comunicazione uomo - macchina L’uomo per comunicare all’ automa le strategie risolutive di un problema ha bisogno di un linguaggio formale che gli consenta di passare dall’ algoritmo al programma , cioè ad una sequenza di istruzioni mediante le quali si può risolvere il problema. bl 8.3.2 Linguaggi e automi Linguaggi non evoluti Linguaggio macchina, linguaggio assemblati o (Assembler). assemblativo (Assembler) Vicino alla logica della macchina Linguaggi evoluti Linguaggi non orientati alla macchina , ma alla soluzione dei problemi. Vicino alla logica dell’uomo 8.3.2 Linguaggi e automi I principali software Sistema operativo Office Automation •Word processor Software di base , controlla tutte le risorse del computer, necessita di un linguaggio più vicino al linguaggio macchina (A (Assembler) bl ) •Foglio g di calcolo •Sistemi di gestione base dati •Programmi g per p la realizzazione di presentazioni multimediali •Programmi di grafica computerizzata •Editor di suoni •Editor di pagine web 8.3.3 Linguaggi di programmazione Problema Algoritmo Programma sorgente Risultati Dalla formulazione del problema alla sua soluzione Programma traduttore El b Elaborazione i Programma oggetto 8.3.3 Linguaggi di programmazione Programma sorgente Istruzioni di dichiarazione Descrivono dati e variabili utilizzati dal programma programma, definendone tipo e struttura L’algoritmo risolutivo viene trasformato in un pprogramma g attraverso un linguaggio di programmazione che ppuò contenere: Istruzioni di assegnazione Istruzioni di controllo Consentono di assegnare alla variabile un valore dello stesso tipo della variabile Sono istruzioni che richiedono salti di sequenza nell’esecuzione nell esecuzione del programma Istruzioni di input e output Richiedono l’ingresso o l’uscita di un’informazione da una periferica alla memoria centrale e viceversa 8.3.3 Linguaggi di programmazione Fortran Cobol Algol Basic PHP Principali linguaggi Logo PL1 Lisp Pascal C /C++ Java