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

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

Capitolo 3 L elaborazione e la strutturazione dell informazione

Laboratorio di Programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Introduzione alla programmazione

Informatica. Come si risolve un problema?

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

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

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

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

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

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

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

Corso di Informatica di Base

Problemi, algoritmi, calcolatore

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

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

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

Introduzione alla programmazione strutturata

Studio degli algoritmi

LA METAFORA DELL UFFICIO

Rappresentazione con i diagrammi di flusso (Flow - chart)

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Il concetto di calcolatore e di algoritmo

LABORATORIO DI INFORMATICA

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

Il linguaggio di programmazione Python

Algoritmi e Programmi

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema

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

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

LA METAFORA DELL UFFICIO

Introduzione agli Algoritmi

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

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

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Le basi del linguaggio Java

Programmazione C Massimo Callisto De Donato

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

PROGRAMMAZIONE STRUTTURATA

Informatica. Elaborazione di informazione

Indice. Prefazione. 3 Oggetti e Java 53

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Teoria dell Informazione

CORSO DI ELEMENTI DI INFORMATICA

IL TEOREMA DI BOEHM-JACOPINI

L ELABORATORE ELETTRONICO!

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

UD 3.2b: Programmazione in Pascal (1)

Linguaggi di alto livello, compilatori e interpreti

Sviluppo di programmi

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

Cosa è l Informatica?

Algoritmi e soluzione di problemi

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Elementi di programmazione

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

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

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

LA METAFORA DELL UFFICIO LAVAGNA DI PROGRAMMA SPORTELLO UTENTE LAVAGNA DI LAVORO

Linguaggi, Traduttori e le Basi della Programmazione

FONDAMENTI DI INFORMATICA

Esempio di Patto Formativo per la classe terza

Programmazione di INFORMATICA e Laboratorio

Elaboratore Elettronico

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

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

ALGORITMI: PROPRIETÀ FONDAMENTALI

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale

LAVAGNA DI PROGRAMMA SPORTELLO UTENTE LAVAGNA DI LAVORO

Algoritmi e Linguaggi

L ELABORATORE ELETTRONICO

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Cos è la programmazione?

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Parte Seconda: Fondamenti di informatica

Elementi di programmazione

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA

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

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Il Software programmabili programma algoritmo

Descrizione di un algoritmo

Algoritmi e basi del C Struttura di un programma

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

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

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Elementi di Informatica

PROBLEMI ALGORITMI E PROGRAMMAZIONE

linguaggio di programmazione e programma

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Transcript:

Processo di Soluzione di un Problema 2 interpretazione esecutore istruttore analisi descritta interpretata ELABORAZIONE DELL INFORMAZIONE descrizione attuazione Informatica per le Discipline Umanistiche 3 Soluzione di un Problema con un Calcolatore interpretazione calcolatore 4 Problemi e Algoritmi programmatore analisi programma algoritmo algoritmo esecuzione codifica in ling. di programmaz. Esecutore Azioni Elementari 5 6 istruzioni elementari che sa interpretare associate ad azioni elementari che sa compiere per risolvere problemi elementari (primitivi) input azione elementare interpretate in termini funzionali come entità che, prescindendo dalla loro struttura interna (black box), ricevo dati in ingresso (input) e produco risultati in uscita (output) output 1

Istruttore Procedura Effettiva 7 processo di di un = scomposizione progressiva del fi a trasformarlo in una successione di problemi elementari risolvibili con le istruzioni elementari dell esecutore 8 procedura effettiva per un esecutore = successione di azioni tale che: tutte le azioni so, per l esecutore, elementari eseguibili in un tempo finito eseguibili in modo deterministico (ottengo sempre, a parità di input, gli stessi risultati) è fissato l ordine di esecuzione delle azioni è esplicitamente specificato il modo in cui un azione utilizza i risultati delle azioni che la precedo 9 Soluzione Effettiva dati un P e un esecutore E, si definisce effettiva del P per l esecutore E una successione di istruzioni elementari tale che: E è in grado di interpretare le istruzioni nella successione e quindi di associare a ciascuna di esse l azione (o la successione di azioni) che deve compiere per eseguirla la successione di azioni risultante dall interpretazione delle istruzioni costituisca una procedura effettiva per E la successione di azioni risultante dall interpretazione delle istruzioni risolve P in generale, posso esistere diverse soluzioni effettive dello stesso per lo stesso esecutore 10 Esecutore Caratterizzato Formalmente condizioni necessarie per caratterizzare formalmente l esecutore caratterizzazione sintattica: il linguaggio che l esecutore è in grado di interpretare deve essere definito in modo completo e n ambiguo caratterizzazione pragmatica: l insieme delle azioni che l esecutore è in grado di compiere deve essere definito e tali azioni devo essere elementari per l esecutore caratterizzazione semantica: l insieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere definito in modo completo e n ambiguo Algoritmo (defne) Sviluppo di un Programma 11 12 analisi informale algoritmo = effettiva per esecutore caratterizzato formalmente linguaggio di programmazione = linguaggio impiegato quando l esecutore è un calcolatore programma = algoritmo formulato in un linguaggio di programmazione CASE ambiente di sviluppo esecutore linguaggio alto liv. formalizzazione programmazione traduzione esecutore linguaggio esecuzione macchina (HW) formale: algoritmo programma (alto livello) programma (macchina) 2

Sviluppo di un Programma Ciclo di Vita del Software 13 analisi: identificazione del e di una, condotta da un uma formalizzazione: defne formale dell algoritmo, condotta da un uma che eventualmente si avvale di strumenti CASE (Computer-Aided Software Engineering) programmazione: scrittura del programma in un linguaggio di programmazione di alto livello, condotta da un uma che si avvale di strumenti SW di sviluppo (IDE = Integrated Development Environment) traduzione: scrittura di un programma equivalente in linguaggio macchina, condotta da SW appositi (compilatori, interpreti) 14 analisi e specifica dei requisiti: studiare il tenendo conto delle condizioni di utilizzo prospettate per il programma da realizzare progettazione: individuazione delle caratteristiche tecniche del programma implementazione: scrittura del programma test: verifica della corrispondenza tra le funzioni del programma realizzato e quelle previste rilascio (deployment): installazione del programma presso gli utenti manutenzione: modifiche al programma per eliminare malfunzionamenti, aggiungere funzionalità, adeguarlo a mutate esigenze degli utenti Ingegneria del Software Algoritmi Parametrici 15 16 produco un risultato che dipende da un insieme di dati di partenza descrivo la n di un singolo, ma di una intera classe di problemi strutturalmente equivalenti esempi: l algoritmo per la moltiplicazione di due numeri specifica come effettuare il prodotto di tutte le possibili coppie di numeri l algoritmo per la ricerca di un libro nello schedario della biblioteca vale per tutti i possibili libri le istruzioni dell algoritmo fan riferimento a variabili il cui valore cambia a seconda della situazione elaborativa in cui l esecutore si trova Variabile Uso delle Variabili 17 assegnamento di un valore me x lettura del valore contenitore per dati caratterizzato da: un me (identifica univocamente la variabile) un valore viene attribuito/modificato mediante un assegnamento può essere determinato mediante un operazione di lettura 18 espressioni: l esecutore usa il valore contenuto nelle variabili per calcolare il risultato dell espressione esempio: op1 + op2 op3 istruzioni di assegnamento: richiedo di introdurre nel contenitore identificato dal me della variabile il valore specificato dall espressione a destra dell assegnamento esempio: r 35 (assegna 35 alla variabile il cui me è r) esempio: circ 2 r pi (il risultato dell espressione 2 r pi viene calcolato utilizzando i valori contenuti nelle variabili r e pi e il risultato viene poi assegnato alla variabile circ) la stessa variabile può comparire in entrambi i lati dell istruzione di assegnamento esempio: k k+1 (il valore contenuto in k viene utilizzato per trovare il valore dell espressione k + 1 che viene memorizzato come nuovo valore di k) 3

Diagrammi di Flusso (Flow Chart) Algoritmo: Esempio (ricetta) 19 20 setaccia 50 g di farina metti la farina in casseruola con 50 cc di latte freddo azione taglialo a pezzi burro pezzo unico? aggiungi burro e 300 cc di latte accendi il fuoco operazione di input/output selezione (a 2 vie) sottoprogramma metti la casseruola sul fuoco bolle? mescola aggiungi ce moscata aggiungi 150 cc latte vuoi piccante? piccante? aggiungi pepe cuoci 20 minuti 21 Algoritmo: Esempio (confronto tra 2 numeri) 22 Algoritmo: Esempio (media tra n numeri) scrivi maggiore il primo leggi x leggi y d x - y d > 0? scrivi uguali d = 0? scrivi maggiore il secondo somma 0 contatore 0 leggi num num 0 somma somma + num contatore contatore + 1 leggi num media 0 contatore = 0 media somma / contatore scrivi media Algoritmo: Somma i Primi N Naturali Algoritmo: Somma i Primi N Naturali 23 24 leggi n somma n leggi n n > 1? somma n * (n + 1) / 2 n n - 1 scrivi somma scrivi somma somma somma + n 4

Algoritmi: Proprietà 25 defni informali: correttezza: un algoritmo è corretto se risolve il per cui è stato progettato complessità: è proporzionale al numero di istruzioni che devo essere eseguite per calcolare la efficienza: è inversamente proporzionale al tempo impiegato per calcolare la 26 Programmi Linguaggi di Programmazione Linguaggio Pascal: Esempio 27 ogni linguaggio di programmazione è caratterizzato da due componenti complementari: sintassi: insieme delle regole che specifica come comporre istruzioni ben formate semantica: specifica il significato di ogni istruzione ben formata (la successione delle azioni che vengo compiute allorché l istruzione viene eseguita) 28 PROCEDURE Media; VAR {dichiarazione di variabili} somma, contatore, num : integer; media : real; BEGIN somma := 0; contatore := 0; {si inizializza le variabili} Read(num); WHILE num <> 0 DO {si continua a leggere finchè si legge 0} BEGIN somma := somma + num; contatore := contatore + 1; Read(num); END IF contatore = 0 {n si può dividere per 0} THEN media := 0; ELSE media := somma / contatore; Write(media); END 29 Componenti di un Programma identificazione del programma linguaggio Pascal: il termine PROGRAM ed istruzioni racchiuse tra i termini BEGIN e END linguaggio C: il termine main ed istruzioni racchiuse fra parentesi graffe { } dichiarazione delle variabili utilizzate indicando me e tipo parte esecutiva detta anche corpo del programma le istruzioni presenti in questa parte so eseguite in successione: una volta eseguita un istruzione si passa alla successiva e co via fi ad arrivare all ultima istruzione del programma esisto particolari istruzioni di controllo che consento di modificare il flusso di esecuzione all inter del programma (strutture di controllo condizionali e iterative) 30 Istruzioni istruzioni di input/output acquisizione dei dati (ingresso); presentazione dei risultati (uscita). istruzioni aritmetico logiche: consento la manipolazione dei dati, realizza l elaborazione vera e propria assegnamento: una variabile riceve un valore che è il risultato ottenuto dalla valutazione di un espressione che può contenere costanti e variabili nelle espressioni so comprese le operazioni aritmetiche di base, alcune funzioni matematiche più complesse (logaritmi, esponenziali, radici, ), le operazioni di tipo logico (cioè quelle che fan riferimento a dati booleani) istruzioni di controllo: modifica il flusso di esecuzione delle istruzioni all inter di un programma selezione (semplice, a due vie o a più vie) cicli (a condizione iniziale, finale, iterativi) 5

Dati Array 31 ogni variabile è caratterizzata dal suo tipo tipi predefiniti: numeri, caratteri, booleani, altri tipi: stringhe, date, variabili strutturate: vettori (o array): insieme di n variabili dello steso tipo indirizzabili mediante un indice (es. v[1], v[2] v[n]) matrici (array multidimensionali) : insieme di variabili dello steso tipo indirizzabili mediante due o più indici (es. v[1,1], v[1,2] v[10,5] v[n,m]) record: strutture articolate in cui una sola variabile comprende più componenti di diverso tipo detti campi (es. studente.me, studente.cogme, studente. indirizzo ) 32 v[1] v[2] v[3] v[4] v[5] v[6] v[7] vettore v[1,1] v[1,2] v[1,3] v[1,4] v[1,5] v[1,6] matrice bidimensionale Record 33 34 Programmazione Imperativo-Procedurale me cogme età sesso indirizzo CAP città Programmazione Imperativa Metodo Top-Down 35 36 algoritmi + strutture di dati = programmi programmazione imperativa: un programma è una successione di istruzioni interpretate dall esecutore come comandi da svolgere top-down p 1 p 2 p 3 p 1.1 p 1.2 p 1.3 p 2.1 p 2.2 p 3.1 p 3.2 p 3.3 p 3.4 per risolvere un, lo si scompone progressivamente in sottoproblemi più facilmente gestibili 6

Programmazione Procedurale Sottoprogrammi Ricorsivi 37 se u stesso sotto si presenta più volte, lo si risolve con u stesso pezzo di programma (sottoprogramma, procedura) vantaggi della modularità: riutilizzo del SW (estensione delle funzionalità del linguaggio di programmazione) migliore coordinamento in ambienti di sviluppo con molti programmatori semplificazione del controllo di correttezza 38 un oggetto è ricorsivo se è definito in termini di se stesso (nella propria defne fa riferimento a se stesso) funzione ricorsiva: n! (fattoriale) defne: 0! = 1 1! = 1 n! = n (n 1)! esempio: 4! = 4 3! = 4 (3 2!) = 4 (3 (2 1!)) = 4 3 2 1 = 24 funzione ricorsiva: fib[n] (successione di Fibonacci) defne: fib[1] = 1 fib[2] = 1 fib[n] = fib[n 1] + fib[n 2] esempio: fib[7] = fib[6] + fib[5] = (fib[5] + fib[4]) + (fib[4] + fib[3]) = = 13 Torre di Hai (leggenda) Torre di Hai: Procedura Ricorsiva 39 40 in un tempio: 3 pali e 64 dischi d oro, di dimensioni decrescenti, infilati sul primo palo i sacerdoti devo spostare i dischi sul terzo palo secondo le regole: può essere spostato solo un disco alla volta un disco può essere appoggiato solo su un disco di dimensioni maggiori quando i sacerdoti finiran il lavoro ci sarà la del mondo (in realtà, muovendo un disco al secondo so necessari quasi 600 miliardi di anni) PROCEDURE Hai(n: integer; from, dest, by: char); BEGIN IF (n=1) THEN writeln('move the plate from ', from, ' to ', dest) ELSE BEGIN Hai(n-1, from, by, dest); Hai(1, from, dest, by); Hai(n-1, by, dest, from); END; END; 41 FINE 7