Elementi di Informatica e Programmazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Elementi di Informatica e Programmazione"

Transcript

1 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? L informatica è lo studio sistematico degli algoritmi che descrivo e trasforma l informazione: la loro teoria, analisi, progetto, efficienza, realizzazione applicazione [ACM Association for Computing Machinery] L informatica è dunque una scienza: l elaborazione dell informazione avviene in modo sistematico e rigoroso L elaborazione può essere automatizzata Docente: Daniela Fogli Daniela Fogli Elementi di Informatica e Programmazione 2 Alcuni concetti chiave I problemi e la loro risoluzione Algoritmo: una sequenza di operazioni che riguarda l elaborazione di informazione e che so 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 risolvo 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 caratterizza la formulazione di un problema (permetto di generare le istanze) Variabili di uscita: termini variabili che caratterizza le soluzioni attese (delle istanze) di un problema Dati: valori che posso assumere le variabili d ingresso Risultati: valori che posso 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

2 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 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

3 Procedure di risoluzione e algoritmi La procedura di risoluzione è quindi espressa come sequenza di istruzioni la cui esecuzione porta alla soluzione del problema ALGORITMO RISOLUTIVO 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

4 Algoritmo risolvente del problema Calcolatore come Esecutore Universale di Algoritmi Detiamo 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 iltre essere in grado di eseguire le azioni presenti nella descrizione interpretata Il calcolatore è un esecutore di algoritmi identificate e descritte 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 devo 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 opportu 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

5 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 opportu 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 ) n risolve problemi (il problema n è 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 Alme 3 aspetti lo fan preferire a un esecutore uma 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 erme quantità di dati es. gestione anagrafe fiscale Affidabilità basso tasso di errore Ecomicità ottimo compromesso costi/benefici Daniela Fogli Elementi di Informatica e Programmazione 19 Daniela Fogli Elementi di Informatica e Programmazione 20

6 L unicità del calcolatore nella storia della teclogia 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ò conseguo le seguenti proprietà: Finitezza: un algoritmo deve essere costituito da un numero finito di istruzioni Definitezza: le istruzioni di cui un algoritmo è costituito devo 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

7 Sequenza di computazione infinita Funzione calcolata da un algoritmo A[X, Y] algoritmo NB: l algoritmo è comunque finito! D A[X, Y] R dato: X ESECUTORE f A passo 1 passo 2 passo 3 In questo caso, il risultato rimane indefinito Un algoritmo A[X, Y] calcola una funzione da D (dominio delle variabili di ingresso) a R (dominio delle variabili di uscita): - f A : D R tale che f A (X) = Y con Y prodotto dalla computazione di A[X, Y] con il dato X La funzione è in generale parziale! Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Note Due algoritmi che risolvo lo stesso problema Funzione come concetto equivalente di problema Problema: come lo risolvo? Funzione: come la calcolo? Un algoritmo risolve 1 problema (calcola 1 funzione) Viceversa, per ogni problema risolubile (ovvero, se esiste un algoritmo che lo risolve), esisto infiniti algoritmi che lo risolvo, infatti: un algoritmo è descritto da una sequenza di istruzioni è sufficiente pensare che possiamo sempre aggiungere sequenze di istruzioni che n han effetto sul risultato e possiamo farlo in infiniti modi (es. sommare e sottrarre 1 a/da una variabile, sommare e sottrarre 2, ecc. ecc.) 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 Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28

8 Informatica Teorica Cenni sulla macchina di Turing 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 posso essere risolti a prescindere dalla teclogia impiegata per realizzare i calcolatori La teclogia cambia, i risultati generali : - La macchina analitica di Charles Babbage (mai realizzata) è stata progettata nel La macchina di Turing (di Alan Turing) è stata pubblicata nel Il primo calcolatore elettronico solo nel 1943 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é n si ponga limiti di tempo e di memoria (Tesi di Church-Turing) Questa tesi n può essere provata Rappresenta una definizione del concetto intuitivo di funzione computabile, ovvero una funzione che può essere calcolata da un algoritmo finito Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 30 La macchina di Turing Macchina di Turing è composta da: Nastro (potenzialmente infinito) suddiviso in caselle in cui posso 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 Orga di controllo che determina il comportamento. E caratterizzato ad ogni istante da u stato inter (stati: q 1, q 2,, q m con m finito) s 1 B Testina di lettura/scrittura Unità di spostamento testina nastro q 1 Unità di controllo (contenente un elemento di stato) Daniela Fogli Elementi di Informatica e Programmazione 31 Daniela Fogli Elementi di Informatica e Programmazione 32

9 Esecuzione di un programma Esempio di Macchina di Turing 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 Ad ogni istante la macchina esegue la quintupla che può essere applicata per l attuale stato inter e per il simbolo in lettura L insieme delle quintuple che descrive una MT i può essere espresso tramite una tabella 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/ne) 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 Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Funzioni calcolate e Macchine di Turing Macchina di Turing Universale 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 esisto infinite altre Macchine di Turing che calcola la medesima funzione Esisto problemi (funzioni) n computabili, ovvero per i quali n esisto algoritmi risolventi (macchine di Turing che le calcola) un esempio: n esiste un algoritmo che, dato un qualunque algoritmo e un dato, può decidere se esso termina oppure 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 qualcu è interessato all informatica teorica, può consultare i capitoli 15, 16, 17 del libro di testo) Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36

10 Elementi di Informatica e Programmazione Esercizi sugli Algoritmi Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Esercizio 1 Scrivere l algoritmo (in linguaggio naturale e con un diagramma di flusso) per il seguente problema: l esecutore deve leggere in ingresso una sequenza di numeri naturali (i.e. interi positivi strettamente maggiori di zero) e calcolarne (per poi visualizzarli) il massimo, il minimo e la media La sequenza si interrompe n appena viene introdotto un numero negativo o uguale a zero Per esempio, data la sequenza 5, 1, 2, 3, 6, -5, il risultato deve essere: Il massimo è 6, il minimo è 1, la media è 3.4 mentre, data la sequenza -2, il risultato deve essere La sequenza inserita è nulla Fare l esecuzione passo-passo dell algoritmo nei 2 casi sopra menzionati 2 Algoritmo per esercizio 1 Descrizione dell algoritmo in linguaggio naturale: n 0, media 0 Leggi un valore dall ester e inseriscilo nella variabile x Se x > 0 allora max x, min x Finché x > 0 ripeti Se x > max allora max x Se x < min allora min x media media + x n n + 1 Leggi un valore dall ester e inseriscilo nella variabile x Fine ciclo media media / n Visualizza Massimo, minimo, media = seguita dai valori in max, min, media altrimenti Visualizza La sequenza inserita è nulla Fine La sequenza inserita è nulla inizio media 0 n 0 x x > 0 media media / n max min media max x min x x > 0 Corpo del ciclo Schema a blocchi x > max x < min media media + x n n + 1 x Corpo del ciclo max x min x 3 fine 4

11 Esecuzione passo passo dell algoritmo: data la sequenza 5, 1, 2, 3, 6, -5 Esecuzione passo passo dell algoritmo: data la sequenza 5, 1, 2, 3, 6, media 0, n 0 2. Lettura di un numero e memorizzazione nella variabile x (x 5) 3. Controllo se x > 0 è vero 4. max 5, min 5 5. Controllo se x > 0 è vero 6. Controllo se x > max n è vero 7. Controllo se x < min n è vero 8. media = 5 9. n = Lettura di un numero e memorizzazione nella variabile x (x 1) 11. Controllo se x > 0 è vero 12. Controllo se x > max n è vero 13. Controllo se x < min è vero 14. min media = n = Lettura di un numero e memorizzazione nella variabile x (x=2) 18. Controllo se x > 0 è vero 19. Controllo se x > max n è vero 20. Controllo se x < min n è vero 21. media = n = Lettura di un numero e memorizzazione nella variabile x (x=3) 24. Controllo se x > 0 è vero 25. Controllo se x > max n è vero 26. Controllo se x < min n è vero 27. media = n = Esecuzione passo passo dell algoritmo: data la sequenza 5, 1, 2, 3, 6, -5 Esecuzione passo passo dell algoritmo: data la sequenza 2 (cioè sequenza nulla) 29 Lettura di un numero e memorizzazione nella variabile x (x = 6) 30 Controllo se x > 0 è vero 31 Controllo se x > max è vero 32 max 6 33 Controllo se x < min n è vero 34 media = n = 5 36 Lettura di un numero e memorizzazione nella variabile x (x = -5) 37 Controllo se x > 0 n è vero 38 media 17 / 5 = 3 39 Visualizza il Massimo è 6 40 Visualizza Il minimo è 1 41 Visualizza La media è Fine 1 Lettura di un numero e memorizzazione nella variabile x (x = -2) 2 Controllo se x > 0 n è vero 3 Visualizza La sequenza inserita è nulla 4 Fine 7 8

12 Esercizio 2 Algoritmo per esercizio 2 Sia y = r i= q 1 i Scrivere l algoritmo in linguaggio naturale e il diagramma di flusso per il calcolo di y assumendo di acquisire r e q dall ester (dati di input) Nota: controllare che r e q sia interi positivi tali che r > q Descrizione dell algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile r Leggi un valore dall ester e inseriscilo nella variabile q Se (r>0) AND (q > 0) AND (r > q) allora y 0, i q Finché i <= r ripeti y y + 1/ i i i + 1 Fine ciclo Visualizza Il risultato è, y altrimenti Visualizza Errore nell immissione dati Fine 9 10 inizio r q (r > 0) AND (q > 0) AND (r > q) y = r i= q 1 i Sia y = k i ( i= 1 j= 1 i + Esercizio 3 1 ) j 2 y 0 i q Errore nell immissione dei dati Scrivere l algoritmo in linguaggio naturale e il diagramma di flusso per il calcolo di y assumendo di acquisire k dall ester (dato di input) controllando che k sia intero positivo. In caso di errata immissione continuare a chiedere k. i <= r y y + (1/i) i i +1 y fine 11 12

13 Algoritmo per esercizio 3 inizio Descrizione dell algoritmo in linguaggio naturale: Inizio Ciclo Leggi un valore dall ester e inseriscilo nella variabile k Se k <= 0 allora Visualizza Errore nell immissione dati Torna a Inizio Ciclo Finché k <= 0 y 0, i 1 Finché i <= k ripeti s 0, j 1 Finché j <= i ripeti s s + 1/(i + j) j j + 1 Fine ciclo s s * s y y + s i i + 1 Fine ciclo Visualizza Il risultato è, y Fine 13 S S*S y y + S i i + 1 k k <= 0 y 0 i 1 i<=k S 0 j 1 j<=i Errore nell immissione dei dati S S + 1/(i+j) j j+1 y k = ( i i= 1 j= 1 i + y fine Ciclo a condizione finale 1 ) j 2 14

14 Elementi di Informatica e Programmazione Il Progetto degli Algoritmi Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Risoluzione di un problema Dato un problema da risolvere, n è facile né efficiente, scrivere un programma in linguaggio macchina che lo risolva Facciamo un passo indietro Fasi del procedimento di risoluzione di un problema: 1. Analisi del problema e individuazione di una procedura di risoluzione 2. Descrizione della procedura di risoluzione 3. Interpretazione della procedura di risoluzione 4. Attuazione della procedura di risoluzione Daniela Fogli Elementi di Informatica e Programmazione 2 Processo di risoluzione di un problema Esempio: montaggio di un elettrodomestico Problema Analisi Individuazione procedura Stesura descrizione procedura Descrizione procedura Soggetto 1 SOGGETTO 1 Coscenza di come si risolve il problema Es. progettista di un elettrodomestico SOGGETTO 2 attività ingresso/uscita oppure Soggetto 2 Interpretazione descrizione Descrizione interpretata Attuazione procedura Soluzione Effettiva capacità di risolvere il problema Es. l acquirente dell elettrodomestico Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4

15 Analisi del problema Modellazione del problema L analisi di un problema consiste in: 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 di una procedura di soluzione: scomponendo il problema e individuando una sequenza di passi per risolverlo Cos è un modello? Dato un certo problema, un modello del problema è una rappresentazione semplificata del problema stesso che evidenzia: Gli elementi del problema Le loro proprietà e le relazioni fra di essi Esempio: l archivio di una biblioteca - Titolo - Autori - stanza, scaffale - Mondo reale Modello Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Relazione tra realtà e modello Procedura di risoluzione di un problema Mondo reale analisi Astrae dai dettagli irrilevanti del mondo Un MODELLO è un astrazione del problema. Rappresenta una semplificazione completa e autoconsistente della realtà, creata per comprendere il problema MODELLO Risolvere un problema = risolvere un opportuna successione di problemi più semplici SCOMPOSIZIONE IN SOTTO-PROBLEMI I sotto-problemi potrebbero dover essere a loro volta scomposti in sotto-sotto-problemi, e co via La scomposizione deve giungere fi ai problemi elementari (o primitivi) Ad ogni problema elementare corrisponde una istruzione elementare, che rappresenta la maniera di descrivere il problema elementare in modo che l esecutore sia in grado di interpretarlo correttamente f(x) = g'(y) h(z) Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8

16 Un esempio (informale) di scomposizione di un problema Problema: richiesta di un libro Gestione di una biblioteca in cui: I libri so disposti sugli scaffali La posizione di ogni libro è data da: numero dello scaffale e posizione nello scaffale Esiste un schedario ordinato in cui ogni scheda riporta le seguenti informazioni: Cogme e me dell autore Titolo del libro Data di pubblicazione Numero dello scaffale in cui si trova Posizione nello scaffale 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) Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 10 Il problema diventa Cercare la scheda 1. Decido quale libro richiedere 2. Cerco la scheda del libro nello schedario 3. Mi seg numero dello scaffale e posizione nello scaffale 4. Cerco lo scaffale 5. Cerco il libro nella sua posizione all inter dello scaffale 6. Prelevo il libro Non è un problema elementare! Scompongo in sotto-sotto-problemi: 1. Prendo la prima scheda 2. Il titolo, l autore e la data corrispondo a quelli del libro che sto cercando? Se allora ho individuato la scheda, altrimenti passo alla scheda successiva e ripeto il controllo 3. Se le schede so esaurite, allora il libro n esiste Esisto metodi più efficienti per risolvere lo stesso problema come fareste voi? Daniela Fogli Elementi di Informatica e Programmazione 11 Daniela Fogli Elementi di Informatica e Programmazione 12

17 Un metodo più efficiente Più precisamente 1. Esami la scheda centrale dello schedario 2. Se la scheda corrisponde al libro cercato allora termi la ricerca 3. 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 In realtà il passo 2 deve accorgersi anche se il libro n esiste, diventa: se la scheda corrisponde al libro cercato oppure se la parte di schedario da esaminare è vuota allora termi la ricerca Dal problema a un programma comprensibile dal calcolatore Analisi del problema e identificazione procedura di risoluzione Specifica dell algoritmo risolutivo Programmazione in linguaggio di alto livello Traduzione del programma in linguaggio macchina Esecuzione del programma Daniela Fogli Elementi di Informatica e Programmazione 13 Daniela Fogli Elementi di Informatica e Programmazione 14 Dall analisi del problema all esecuzione Algoritmo problema analisi procedura di risoluzione (informale) specifica algoritmo (formale) Attività dell uomo svolte con l ausilio di strumenti CASE e e ambienti di sviluppo La procedura di risoluzione è specificata in maniera formale come sequenza di istruzioni ALGORITMO RISOLUTIVO programazione programma (alto livello) Attività automatica svolta da programmi traduttori Dati iniziali ALGORITMO Dati finali (soluzione) traduzione programma (ling. macchina) Esecutore del linguaggio macchina esecuzione Istruzioni che opera sui dati Daniela Fogli Elementi di Informatica e Programmazione 15 Daniela Fogli Elementi di Informatica e Programmazione 16

18 Algoritmo = Dati + Istruzioni Come posso classificare i dati? Dati: Numeri (naturali, interi, reali, ) Caratteri alfanumerici (a, b, c, ) Dati logici (vero, falso) Vettori di elementi, matrici, ([1,2,3], [[1,1],[1,2],]) Immagini, suoni, Istruzioni: Istruzioni di ingresso/uscita (es. leggi, visualizza,) Istruzioni aritmetico-logiche (es. c = a * b) Istruzioni di controllo (es. se allora, ripeti) In base alla visibilità da parte dell utente Visibile (di ingresso o uscita) Trasparente (dati temporanei di supporto) In base alla variabilità nel tempo Costanti Variabili (acquisizione dall ester o assegnazione) In base alla struttura Elementari (interi, alfanumerici, logici, ) Strutturati (vettori, matrici, ) Daniela Fogli Elementi di Informatica e Programmazione 17 Daniela Fogli Elementi di Informatica e Programmazione 18 Variabili, espressioni e assegnamenti Espressioni aritmetiche Variabile: contenitore di dati Ha un me (es. x) nel calcolatore i mi delle variabili identifica una ben precisa locazione di memoria Ad una variabile può essere assegnato un valore: es. x 10 nel calcolatore diventa il contenuto della locazione di memoria identificata dal me della variabile Le variabili posso comparire in espressioni aritmetiche (es. x- y) o logiche, e in predicati logici Le espressioni posso essere assegnate ad altre variabili: ad es. scriveremo d x-y per indicare che d conterrà il risultato dell espressione Si potrebbe anche usare x o y al posto di d, in questo modo si sovrascrive il precedente valore so formate da: Operandi: variabili e costanti (si ipotizza di considerare solo numeri interi) Operatori: addizione (+), sottrazione (-), moltiplicazione (*), divisione intera (/), modulo (mod) Semantica: quella usuale dell aritmetica Esempi (a mod 5) + b * 3 (b c)/2 + 3 * a Daniela Fogli Elementi di Informatica e Programmazione 19 Daniela Fogli Elementi di Informatica e Programmazione 20

19 Espressioni logiche Predicati logici so formate da: Operandi: espressioni aritmetiche Operatori: operatori relazionali di uguaglianza (=), miranza (<) e maggioranza (>) fra numeri Semantica: quella delle disequazioni fra numeri so formati da: Operandi: espressioni logiche e/o predicati Operatori: operatori logici di congiunzione (AND), disgiunzione (OR) e negazione (NOT) Semantica: quella dell Algebra di Boole Esempi a = b (b + d) < (10 * c) Han un valore logico (vero o falso) Esempi (a < b) AND (b < c) OR (c = d+2) Han un valore logico (vero o falso) Not( ( (a=10*b) AND (b = c) ) OR (c = 20) ) Daniela Fogli Elementi di Informatica e Programmazione 21 Daniela Fogli Elementi di Informatica e Programmazione 22 Rappresentazione degli algoritmi Linguaggio naturale/pseudo-codice Problema: determinare il maggiore di due numeri interi ricevuti in ingresso (si assuma di avere a disposizione solo le istruzioni aritmetiche e quella di confronto con lo zero) 1. Linguaggio naturale/pseudo-codice 2. Diagrammi di flusso 3. Linguaggi di programmazione Algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un secondo valore e inseriscilo nella variabile y Calcola x-y e assegna il risultato a d Se d è diverso a 0 allora Se d è maggiore di 0 allora Visualizza Il massimo è seguita dal valore contenuto in x altrimenti Visualizza Il massimo è seguita dal valore contenuto in y altrimenti Visualizza I due numeri so uguali! Fine Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24

20 I diagrammi di flusso La simbologia comunemente utilizzata Termini equivalenti: diagrammi a blocchi, schemi a blocchi, flowchart Formalismo grafico per descrivere algoritmi Elementi del linguaggio: simboli per indicare inizio e fine, operazioni di ingresso/uscita (I/O), elaborazioni, condizioni, sottoprogrammi inizio I/O fine cond elaborazione selezione a 2 vie sottoprogramma Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Blocchi Inizio e Fine Blocco di I/O Inizio Il blocco Inizio deta il punto da cui l esecuzione dell algoritmo deve iniziare x Contiene un istruzione di lettura di un valore dall ester (esempio lettura da tastiera) oppure un istruzione di scrittura verso l ester (esempio scrittura a video) Fine Il blocco Fine deta il punto in cui l esecuzione dell algoritmo termina x x x lettura di un valore e sua memorizzazione nella variabile x scrittura (invio) del valore di x all ester Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28

21 Blocco di Elaborazione Selezione a 2 vie (Blocco decisionale) Contiene un istruzione di assegnamento come ad esempio: Condizione (predicato) Rappresenta un istruzione di controllo Esempi di condizioni: x 0 x y x x+1 x y+z*w Nei linguaggi di programmazione più comuni il simbolo = oppure := viene usato al posto di x = 0 Posso anche indicarsi con V (vero) ed F (falso) x = y x < z x >= z*w Se la condizione risulta vera allora l esecuzione prosegue lungo l arco detato con altrimenti prosegue lungo l arco detato con Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 30 Blocco Sottoprogramma Collegamenti fra i blocchi Contiene un istruzione di chiamata di un sottoprogramma come ad esempio: I blocchi so collegati fra loro da archi orientati Media(x,y,z) Max(x,y) MCD(y,z) Nei linguaggi di programmazione più comuni si distingue fra chiamate di procedura e chiamate di funzione In ogni caso so sottoprogrammi richiamabili dal programma principale o da altri sottoprogrammi L arco identifica la sequenza delle operazioni da compiere La freccia identifica il flusso di esecuzione Daniela Fogli Elementi di Informatica e Programmazione 31 Daniela Fogli Elementi di Informatica e Programmazione 32

22 Esempio: Problema 1 Problema: determinare il maggiore di due numeri interi ricevuti in ingresso (si assuma di avere a disposizione solo le istruzioni aritmetiche e quella di confronto con lo zero) inizio x y Algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un secondo valore e inseriscilo nella variabile y Calcola x-y e assegna il risultato a d Se d è diverso a 0 allora Se d è maggiore di 0 allora Visualizza Il massimo è seguita dal valore contenuto in x altrimenti Visualizza Il massimo è seguita dal valore contenuto in y altrimenti Visualizza I due numeri so uguali! Fine Diagramma di flusso dell algoritmo che risolve il problema 1 numeri uguali d x - y d 0 Il max è, x fine d > 0 Il max è, y Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Esecuzione passo passo del programma Esempio: Problema 2 1 Lettura di un numero e memorizzazione nella variabile x (supponiamo che il numero acquisito sia 8, quindi in memoria si avrà x=8) Lettura di un numero e memorizzazione nella variabile y (supponiamo che il numero acquisito sia 6, quindi in memoria si avrà y=6) 2 Calcolo di x-y e risultato in d d = 2 3 Controllo se d 0 è vero 4 Controllo se d>0 è vero 5 Visualizzo Il massimo è 8 6 Fine Calcolo del Massimo Comune Divisore (MCD) di due interi x ed y Individuazione della procedura di risoluzione: Fai la scansione di tutti i numeri compresi fra 1 e il minimo tra x ed y. Per ognu stabilisci se è un divisore comune ad x ed y (come? b è divisore di a se a mod b = 0, ovvero se la divisione di a per b dà come resto 0). Ogni volta che un numero preso in considerazione risulta divisore sia di x che di y memorizzalo come attuale MCD in una variabile all inizio posta a 1. Alla fine della scansione la variabile conterrà il valore desiderato. Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36

23 Algoritmo per il Massimo Comune Divisore Descrizione dell algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un valore dall ester e inseriscilo nella variabile y Se x < y allora min x altrimenti min y mcd 1 contatore 1 Finché (contatore <= min) ripeti Se ((x mod contatore = 0) e (y mod contatore = 0)) allora mcd contatore contatore contatore + 1 fine ciclo Stampa MCD = seguito dal valore in mcd Fine e il ramo altrimenti? Diagramma di flusso dell algoritmo che risolve il problema 2 e se x e y so uguali? fine min x MCD =, mcd inizio x y x < y mcd 1 contatore 1 contatore<=min min y (x mod contatore = 0) AND (y mod contatore = 0) contatore contatore + 1 Ciclo a condizione iniziale mcd contatore Daniela Fogli Elementi di Informatica e Programmazione 37 Daniela Fogli Elementi di Informatica e Programmazione 38 Esecuzione passo passo dell algoritmo Esecuzione passo passo dell algoritmo (cont.) 1. Lettura di due numeri e memorizzazione nelle variabili x e y (supponiamo di acquisire 6 e 9, quindi in memoria si avrà x=6 e y=9) 2 Controllo se x < y è vero 3 min 6 4 mcd 1, contatore 1 5 controllo se (contatore <= min) è vero 6 controllo se ((x mod contatore = 0) e (y mod contatore = 0)), cioè se 6 è divisibile per 1 e 9 è divisibile per 1 è vero 7 mcd 1 8 contatore 2 9 controllo se (contatore <= min) è vero 10 controllo se ((x mod contatore = 0) e (y mod contatore = 0)), cioè se 6 è divisibile per 2 e 9 è divisibile per 2 n è vero 11 contatore 3 12 controllo se (contatore <= min) è vero 13 controllo se ((x mod contatore = 0) e (y mod contatore = 0)), cioè se 6 è divisibile per 3 e 9 è divisibile per 3 è vero 14 mcd 3 15 contatore 4 16 controllo se (contatore <= min) è vero 17 controllo se ((x mod contatore = 0) e (y mod contatore = 0)), cioè se 6 è divisibile per 4 e 9 è divisibile per 4 n è vero 18 contatore 5 19 controllo se (contatore <= min) è vero 20 controllo se ((x mod contatore = 0) e (y mod contatore = 0)), cioè se 6 è divisibile per 5 e 9 è divisibile per 5 n è vero Daniela Fogli Elementi di Informatica e Programmazione 39 Daniela Fogli Elementi di Informatica e Programmazione 40

24 21 contatore 6 Esecuzione passo passo dell algoritmo (cont.) 22 controllo se (contatore <= min) è vero 23 controllo se ((x mod contatore = 0) e (y mod contatore = 0)), cioè se 6 è divisibile per 6 e 9 è divisibile per 6 n è vero 24 contatore 7 25 controllo se (contatore <= min) n è vero 26 Stampa MCD = 3 (cioè stampo il valore nella variabile mcd) Esercizio: Rifare l esecuzione passo passo assumendo di acquisire x = 18 e y = 12 Daniela Fogli Elementi di Informatica e Programmazione 41 Esempio: Algoritmo di Euclide Algoritmo di Euclide per il calcolo del Massimo Comun Divisore (MCD) di due interi un altro algoritmo che risolve lo stesso problema Descrizione dell algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un valore dall ester e inseriscilo nella variabile y Se x < y allora scambia x con y Dividi x per y: sia q il quoziente ed r il resto (cioè q x div y; r x mod y)* Finché r 0 ripeti x y y r q x div y r x mod y Fine ciclo Visualizza MCD = seguita dal valore in y Fine * div = divisione intera, mod = resto della divisione Daniela Fogli Elementi di Informatica e Programmazione 42 inizio x y Esecuzione passo passo dell algoritmo di Euclide che risolve il problema 2 Diagramma di flusso che descrive l algoritmo di Euclide (che risolve il problema 2) a x x y y a x < y r 0 fine q x div y r x mod y MCD =, y ta: per realizzare lo scambio ho bisog di una variabile di appoggio (a) x y y r q x div y r x mod y 1 Lettura di due numeri e memorizzazione nelle variabili x e y (supponiamo di acquisire 6 e 9, quindi in memoria si avrà x=6 e y=9) 2 Controllo se x < y è vero 3 Faccio lo scambio: a 6, x 9, y 6 4 q x div y (q 1), r x mod y (r 3) 5 controllo se r 0 è vero 6 x y (x 6), y r (y 3) 7 q x div y (q 2), r x mod y (r 0) 8 controllo se r 0 n è vero 9 Stampa/visualizza MCD = 3 10 Fine Esercizio: Rifare l esecuzione passo passo assumendo di acquisire x = 18 e y = 12 Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44

25 Algoritmo di Euclide L algoritmo di Euclide in forma più semplice Si basa sulla constatazione che: Se x = y allora MCD(x,y) = x (oppure y) Se x y allora, supponendo x > y, MCD(x,y) = MCD(x-y,y) Infatti: 1. Se x > y e k è un divisore comune a x e a y, allora k è anche un divisore di x-y. Infatti x = k * d e y = k * r per qualche intero positivo d e r. Quindi: x-y = k*(d-r), essendo (d-r) ancora un intero positivo 2. Allo stesso modo è possibile dimostrare che se k è un divisore comune ad x-y e a y allora è un divisore anche di x 3. Quindi tutti i divisori comuni di x e y coincido con i divisori comuni di x-y e y, dunque anche i massimi comuni divisori fra le due coppie di numeri coincido Descrizione dell algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un valore dall ester e inseriscilo nella variabile y Finché x y ripeti Se x > y allora x x y altrimenti y = y x Fine ciclo Visualizza la frase MCD = seguita dal valore in y Fine Quindi: Se x > y allora MCD(x,y) = MCD(x-y,y) altrimenti MCD(y,x) = MCD(y-x,x) Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 inizio Esecuzione passo passo dell algoritmo Diagramma di flusso dell algoritmo di Euclide (versione semplificata) MCD =, y fine x x y x y x y x > y y y x 1. Lettura di due numeri e memorizzazione nelle variabili x e y (supponiamo di acquisire 6 e 9, quindi in memoria si avrà x=6 e y=9) 2. Controllo se x y è vero 3. Controllo se x > y n è vero 4. y 3 (infatti: y 9 6) 5. Controllo se x y è vero 6. Controllo se x > y è vero 7. x 3 (infatti: x 6 3) 8. Controllo se x y n è vero 9. Stampa/visualizza MCD = Fine Esercizio: Rifare l esecuzione passo passo assumendo di acquisire x = 24 e y = 9 Daniela Fogli Elementi di Informatica e Programmazione 47 Daniela Fogli Elementi di Informatica e Programmazione 48

26 Due proprietà degli algoritmi Correttezza: l algoritmo risolve il problema per cui è stato progettato (efficacia). Gli algoritmi visti per il problema 2 so tutti corretti rispetto al problema di calcolare il MCD Complessità: legata al numero di istruzioni eseguite, cioè di passi di computazione, necessari per risolvere il problema (efficienza). Il primo algoritmo visto per il calcolo del MCD è più complesso degli altri due (a parità di dati iniziali, 26 passi col primo e 10 passi con il secondo e il terzo) Esempio: Problema 3 Determinare il massimo fra n numeri positivi, finchè n si inserisce 0 Descrizione dell algoritmo in linguaggio naturale: max 0 (ta: la variabile max conterrà il risultato finale) Leggi un valore dall ester e inseriscilo nella variabile x Finché x 0 ripeti chiama il sottoprogramma Massimo(x, max) e inserisci il risultato nella variabile c Se c è uguale a Vero allora max x Leggi un valore dall ester e inseriscilo nella variabile x Fine ciclo Stampa Il massimo è seguita dal valore contenuto in max Fine NOTA: Massimo(x,max) è un sottoprogramma che descrive la soluzione del seguente sottoproblema: ricevendo in ingresso x e max, ritorna un valore Vero se x>=max e un valore Falso se x<max (leggermente diverso dal problema 1 esercizio: fare lo schema a blocchi) Daniela Fogli Elementi di Informatica e Programmazione 49 Daniela Fogli Elementi di Informatica e Programmazione 50 inizio max 0 x Esercizio: Fare l esecuzione passo passo assumendo di acquisire la sequenza 3,5,1,4,0 Calcolo della moltiplicazione Calcolo della moltiplicazione fra due numeri naturali x e y utilizzando solo operazioni di somma e sottrazione Diagramma di flusso dell algoritmo che risolve il problema 3 Il massimo è, max x 0 c Massimo (x,max) c= Vero x max x Descrizione dell algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un valore dall ester e inseriscilo nella variabile y z 0 Finché y > 0 ripeti z z + x y y 1 Fine ciclo Stampa/visualizza la frase Prodotto = seguita dal valore in z Fine fine Daniela Fogli Elementi di Informatica e Programmazione 51 Daniela Fogli Elementi di Informatica e Programmazione 52

27 inizio Esecuzione passo passo dell algoritmo Diagramma di flusso dell algoritmo della moltiplicazione Prodotto =, z fine x y z 0 y > 0 z z + x y y 1 1. Lettura di un numero e memorizzazione nella variabile x (supponiamo x=8) 2. Lettura di un numero e memorizzazione nella variabile y (supponiamo y=3) 3. Assegna 0 alla variabile z (che conterrà il risultato) 4. Controllo se y > 0 è vero 5. z = = 8 6. y = 3 1 = 2 7. Controllo se y > 0 è vero 8. z = = y = 2 1 = Controllo se y > 0 è vero 11. z = = y = 1 1 = Controllo se y > 0 n è vero 14. Stampa/visualizza Prodotto = Fine Daniela Fogli Elementi di Informatica e Programmazione 53 Daniela Fogli Elementi di Informatica e Programmazione 54 Calcolo di x y inizio Calcolo di x y (con x e y numeri naturali) utilizzando il sottoprogramma moltiplica(a,b) x y z 1 Descrizione dell algoritmo in linguaggio naturale: Leggi un valore dall ester e inseriscilo nella variabile x Leggi un valore dall ester e inseriscilo nella variabile y z 1 Finché y > 0 ripeti z moltiplica(z, x) y y 1 Fine ciclo Stampa/visualizza la frase x y = seguita dal valore in z Fine * il sottoprogramma moltiplica(a,b) riceve in ingresso due numeri naturali e ne restituisce il prodotto (può essere ad esempio definito attraverso l algoritmo precedente) Diagramma di flusso dell algoritmo per il calcolo di x y y > 0 z moltiplica(z,x) y y 1 x y =, z fine chiamata di un sottoprogramma Daniela Fogli Elementi di Informatica e Programmazione 55 Daniela Fogli Elementi di Informatica e Programmazione 56

28 Esecuzione passo passo dell algoritmo Esecuzione passo passo dell algoritmo (cont.) 1 Lettura di un numero e memorizzazione nella variabile x (supponiamo x=2) Lettura di un numero e memorizzazione nella variabile y (supponiamo y=4) 2 Assegna 1 alla variabile z (che conterrà il risultato) 3 Controllo se y > 0 è vero 4 z = moltiplica(1, 2) = 2 5 y = 4 1 = 3 6 Controllo se y > 0 è vero 7 z = moltiplica(2, 2) = 4 8 y = 3 1 = 2 9 Controllo se y > 0 è vero 10 z = moltiplica(4, 2) = 8 11 y = 2 1 = 1 12 Controllo se y > 0 è vero 13 z = moltiplica(8, 2) = y = 1 1 = 0 15 Controllo se y > 0 n è vero 16 Stampa/visualizza x y =, z 17 Fine Daniela Fogli Elementi di Informatica e Programmazione 57 Daniela Fogli Elementi di Informatica e Programmazione 58 Calcolo del fattoriale inizio Calcolo del fattoriale del numero N N! = N x (N-1) x (N-2) x x 1 Esempio: 5! = 5 x 4 x 3 x 2 x 1 = 120 N N<0 Descrizione dell algoritmo in linguaggio naturale: Inizio ciclo Leggi un valore dall ester e inseriscilo nella variabile N Se N < 0 allora Stampa/visualizza la frase Errore nell inserimento del valore di N Torna a Inizio Ciclo Finché N < 0 fattoriale 1 Finché N > 1 ripeti fattoriale fattoriale x N N N 1 Fine ciclo Stampa/visualizza la frase Fattoriale = seguita dal valore in fattoriale Fine Diagramma di flusso dell algoritmo del fattoriale Errore nell inserimento fine Fattoriale =, fattoriale fattoriale 1 N > 1 fattoriale fattoriale * N N N 1 Daniela Fogli Elementi di Informatica e Programmazione 59 Daniela Fogli Elementi di Informatica e Programmazione 60

29 Esecuzione passo passo dell algoritmo Esercizio 1 1 Lettura di un numero e memorizzazione nella variabile N (supponiamo N=4) 2 Controllo se N < 0 n è vero 3 Assegna 1 alla variabile fattoriale (che conterrà il risultato) 4 Controllo se N > 1 è vero 5 fattoriale = 1 * 4 = 4 6 N = 4 1 = 3 7 Controllo se N > 1 è vero 8 fattoriale = 4 * 3 = 12 9 N = 3 1 = 2 10 Controllo se N > 1 è vero 11 fattoriale = 12 * 2 = N = 2 1 = 1 13 Controllo se N > 1 n è vero (esce dal ciclo) 14 Stampa/visualizza Fattoriale = Fine Scrivere l algoritmo (in linguaggio naturale e con un diagramma di flusso) per il seguente problema: l esecutore deve leggere in ingresso una sequenza di numeri naturali (i.e. interi positivi strettamente maggiori di zero) e calcolarne (per poi visualizzarli) il massimo, il minimo e la media La sequenza si interrompe n appena viene introdotto un numero negativo o uguale a zero Per esempio, data la sequenza 5, 1, 2, 3, 6, -5, il risultato deve essere: Il massimo è 6, il minimo è 1, la media è 3.4 mentre, data la sequenza -2, il risultato deve essere La sequenza inserita è nulla Fare l esecuzione passo-passo dell algoritmo nei 2 casi sopra menzionati Daniela Fogli Elementi di Informatica e Programmazione 61 Daniela Fogli Elementi di Informatica e Programmazione 62 Esercizio 2 Esercizio 3 Sia y = r i= q 1 i Sia y = k i ( 1 i= 1 j= 1 i + ) j 2 Scrivere l algoritmo in linguaggio naturale e il diagramma di flusso per il calcolo di y assumendo di acquisire r e q dall ester (dati di input) Nota: controllare che r e q sia interi positivi tali che r > q Scrivere l algoritmo in linguaggio naturale e il diagramma di flusso per il calcolo di y assumendo di acquisire k dall ester (dato di input) controllando che k sia intero positivo. In caso di errata immissione continuare a chiedere k. Daniela Fogli Elementi di Informatica e Programmazione 63 Daniela Fogli Elementi di Informatica e Programmazione 64

30 Elementi di Informatica e Programmazione Dagli Algoritmi ai Programmi Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Perché gli algoritmi n basta Un algoritmo descritto con i linguaggi visti è spesso interpretabile in modo ambiguo Non è utilizzabile da un esecutore automatico Ad esempio, in quegli algoritmi n si parlava di: come so codificati i dati come avviene l interazione con operatori umani problemi legati alle caratteristiche fisiche: ad es. limiti nella dimensione dei numeri rappresentabili Università degli Studi di Brescia Docente: Daniela Fogli Daniela Fogli Elementi di Informatica e Programmazione 2 Dall analisi del problema all esecuzione di un programma Programma problema analisi proc. di risoluzione (informale) specifica algoritmo (formale) programazione programma (alto livello) traduzione programma (ling. macchina) Un programma è la descrizione formale di un algoritmo attraverso un linguaggio di programmazione Scrivere programmi è un compito complesso (alcuni programmi posso arrivare ad essere composti da alcuni milioni di righe di istruzioni) Il calcolatore esegue i programmi passo per passo: se i passi n so completi o n so nell ordine corretto, oppure se ci so dei conflitti tra i passi, il calcolatore n sarà in grado di portare a termine il suo compito Hw esecuzione Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4

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

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione Il Progetto degli Algoritmi Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Dal problema a un programma comprensibile dal calcolatore

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

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

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

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

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

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

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Esempio. Risoluzione di un Problema Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

Esempio: Problema 2 Il Progetto degli Algoritmi (Il linguaggio degli schemi a blocchi: seconda parte)

Esempio: Problema 2 Il Progetto degli Algoritmi (Il linguaggio degli schemi a blocchi: seconda parte) Esempio: Problema 2 Il Progetto degli Algoritmi (Il linguaggio degli schemi a blocchi: sea parte) ondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione 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

Dettagli

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Docente : Ing. Secondulfo Giovanni Anno Accademico 2010-2011 Lezione 3: La Formalizzazione degli Algoritmi Dati e Variabili

Dettagli

- Dispensa I ALGORITMI

- Dispensa I ALGORITMI Elementi di Informatica e Programmazione - Dispensa I ALGORITMI Alessandro Saetti (email: alessandro.saetti@unibs.it) Università degli Studi di Brescia 1 Introduzione al modulo didattico Elementi di Informatica

Dettagli

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

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie Università degli Studi di Verona Dipartimento di Biotecnologie Laurea in Biotecnologie Corso di Informatica2014/2015 Algoritmie Diagrammidiflusso Gennaio 2015 - Sergio Marin Vargas Problemi e soluzioni

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai

Dettagli

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi Istruzioni variabili e tipi Sottoprogrammi Strutture di controllo Ricorsione 1 2 Obiettivo Ciclo di sviluppo di programmi Risoluzione

Dettagli

Informatica. Come si risolve un problema?

Informatica. Come si risolve un problema? Informatica Elaborazione automatica dell informazione Esempio di elaborazione: rubrica, elenco telefonico. Ogni problema di elaborazione dell informazione è caratterizzato da: un insieme di dati di partenza

Dettagli

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

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

La formalizzazione dell informazione: Dati e Diagrammi di Flusso La formalizzazione dell informazione: Dati e Diagrammi di Flusso Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani chiaro, sintetico e intuitivo codificato in linguaggi

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Laurea in Ingegneria Civile e Ambientale Algoritmi e Algebra di Boole Stefano Cagnoni Il problema di fondo Descrizione

Dettagli

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni La formalizzazione

Dettagli

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

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione

Dettagli

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Elaboratore Un elaboratore o computer è una macchina digitale, elettronica,

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni Sistemi di Elaborazione delle Informazioni Algoritmi e Programmi 1 Risoluzione di un problema Il procedimento di soluzione di un problema dovrebbe essere caratterizzato da: analisi del problema e identificazione

Dettagli

Algoritmi. Andrea Passerini Informatica. Algoritmi

Algoritmi. Andrea Passerini Informatica. Algoritmi Andrea Passerini passerini@disi.unitn.it Informatica Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma

Dettagli

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

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.) Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica

Dettagli

L ELABORATORE ELETTRONICO!

L ELABORATORE ELETTRONICO! L ELABORATORE ELETTRONICO! Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

Parte Seconda: Fondamenti di informatica

Parte Seconda: Fondamenti di informatica Parte Seconda: Trattamento dell informazione Fondamenti di informatica Gestione dell informazione Calcolatore IN Elaborazione archiviazione comunicazione OUT acquisizione dati dati elaborati e soluzioni

Dettagli

Analisi e Programmazione

Analisi e Programmazione Algoritmi 1 Analisi e Programmazione I Calcolatori Elettronici si differenziano da altri tipi di macchine per il fatto che possono essere predisposti alla risoluzione di problemi di diversa natura. A tale

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 33 INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, bisogna conoscere

Dettagli

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

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

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

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi. Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l

Dettagli

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3 Dall algoritmo al calcolatore: concetti introduttivi Fondamenti di Programmazione Algoritmo Problema o compito Preparazione di una torta Programmazione del VCR MCD tra due numeri Algoritmo sequenza precisa

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

La Programmazione particolare insieme di azioni particolare tipologia di dati risolvere un problema

La Programmazione particolare insieme di azioni particolare tipologia di dati risolvere un problema La Programmazione È l'attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su una particolare tipologia di dati, allo scopo di risolvere un problema. 1 La Programmazione

Dettagli

Elaboratore Elettronico

Elaboratore Elettronico L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati)) per produrre rre altri oggetti

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su dati in ingresso (input) per produrre uno

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Esempi di Testi di esame Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del corso

Dettagli

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Dati e Istruzioni Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/28 Comunicazione dell algoritmo all

Dettagli

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

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento

Dettagli

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

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) INFORMATICA Cosa è l informatica Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) E una scienza E una tecnologia Cosa può essere automatizzato nell

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

Algoritmi e programmi

Algoritmi e programmi Algoritmi e programmi Informatica L informatica è la disciplina che si occupa dell elaborazione automatica dell informazione Esempio di elaborazione: rubrica ABC Abate Davide 09912345 DEF Conti Alberto

Dettagli

Concetti Introduttivi. Il Computer

Concetti Introduttivi. Il Computer Concetti Introduttivi Il Computer Introduzione Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere Messaggio Tutto ciò che porta

Dettagli

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

Capitolo 3 Elaborazione e Strutturazione dell Informazione. (Introduzione ai Sistemi Informatici Sciuto et alii) Capitolo 3 Elaborazione e Strutturazione dell Informazione (Introduzione ai Sistemi Informatici Sciuto et alii) Il calcolatore come strumento per gestire informazione acquisire dati IN elaborare archiviare

Dettagli

Sommario FONDAMENTI DI INFORMATICA. Definizione formale di algoritmo. Informatica e algoritmi. ALGORITMI E LINGUAGGIO PYTHON Introduzione

Sommario FONDAMENTI DI INFORMATICA. Definizione formale di algoritmo. Informatica e algoritmi. ALGORITMI E LINGUAGGIO PYTHON Introduzione Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica e Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://www.diee.unica.it/~marcialis/fi A.A. 2017/2018 Sommario Algoritmi, linguaggi

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

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

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma

Dettagli

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

LA METAFORA DELL UFFICIO LAVAGNA DI PROGRAMMA SPORTELLO UTENTE LAVAGNA DI LAVORO LA METAORA DELL UICIO LAAGNA DI LAORO Lavagna di lavoro Lavagna di programma Sportello utenti Capo Ufficio Impiegato Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome distinto,

Dettagli

Unità E1. Obiettivi. Non solo problemi matematici. Problema. Risoluzione di un problema. I dati

Unità E1. Obiettivi. Non solo problemi matematici. Problema. Risoluzione di un problema. I dati Obiettivi Unità E1 Dall analisi del problema alla definizione dell algoritmo Conoscere il concetto di algoritmo Conoscere le fasi di sviluppo di un algoritmo (analisi, progettazione, verifica) Conoscere

Dettagli

CAPITOLO 3 - ALGORITMI E CODIFICA

CAPITOLO 3 - ALGORITMI E CODIFICA FASI DI SVILUPPO DEL SOFTWARE Problema Idea (soluzione) Algoritmo (soluzione formale) Programma (traduzione dell algoritmo in una forma comprensibile da un elaboratore elettronico) Test (criteri di verifica)

Dettagli

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1 Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 23 27 novembre 2013

Dettagli

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. ! Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 24 26 maggio 2015!

Dettagli

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite

Dettagli

Inf matica C.I. Metodologia Scientifica & Linguistica Mario&Pavone& &

Inf matica C.I. Metodologia Scientifica & Linguistica Mario&Pavone& & Programmazione+1+ + Mario&Pavone& & Dipar/mento+di+Matema/ca+ed+Informa/ca+ Università+degli+Studi+di+Catania+ mpavone@dmi.unict.it+ hap://www.dmi.unict.it/mpavone/+ Definizioni Algoritmo: una sequenza

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

Analisi strutturata 1

Analisi strutturata 1 Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

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

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: http://it.wikipedia.org/wiki/al-khwarizmi Un

Dettagli

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori Programma del corso o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori o Elementi di Programmazione Algoritmi e programmi o Algoritmo

Dettagli

L uomo come esecutore di algoritmi

L uomo come esecutore di algoritmi L uomo come esecutore di algoritmi l L algoritmo è l insieme di azioni elementari che consentono di risolvere un problema trasformando i dati iniziali del problema stesso nel risultato. l Un algoritmo

Dettagli

ALGORITMI: PROPRIETÀ FONDAMENTALI

ALGORITMI: PROPRIETÀ FONDAMENTALI ALGORITMI: PROPRIETÀ FONDAMENTALI Non si può risolvere un problema senza prima fissare un insieme di azioni, i di mosse elementari possibili per l'esecutore. Bisogna conoscerne le caratteristiche, le mosse

Dettagli

= < < < < < Matematica 1

= < < < < < Matematica  1 NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato

Dettagli

MODULO 07. La soluzione dei problemi mediante gli algoritmi

MODULO 07. La soluzione dei problemi mediante gli algoritmi MODULO 07 La soluzione dei problemi mediante gli algoritmi MODULO 07 Unità didattica 02 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando

Dettagli

Risoluzione dei problemi

Risoluzione dei problemi Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica Risoluzione dei problemi Risoluzione di un problema Le azioni che gli esseri umani compiono ogni giorno

Dettagli

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi. Flow-chart Introduzione agli algoritmi e ai diagrammi a blocchi ugo.rinaldi@gmail.com 1 Sommario Fasi dello sviluppo di un programma Algoritmo Dati: Variabili e Costanti Le operazioni tipiche Diagramma

Dettagli

Algoritmi e (cenni sul) calcolatore

Algoritmi e (cenni sul) calcolatore Algoritmi e (cenni sul) calcolatore Fondamenti di Informatica Cos è l informatica? q È la scienza che si occupa della rappresentazione dell informazione e della sua elaborazione e gestione Si occupa dell

Dettagli

L informazione. Bateson, Ricevere informazioni vuol dire necessariamente ricevere notizie di differenza (Es.: Luce accesa/spenta, 1/0,...

L informazione. Bateson, Ricevere informazioni vuol dire necessariamente ricevere notizie di differenza (Es.: Luce accesa/spenta, 1/0,... L informazione Diverse proposte in letteratura Bateson, Ricevere informazioni vuol dire necessariamente ricevere notizie di differenza (Es.: Luce accesa/spenta, 1/0,...) Shannon, visione probabilistica.

Dettagli

CdL in Medicina Veterinaria - STPA AA

CdL in Medicina Veterinaria - STPA AA CdL in Medicina Veterinaria - STPA AA 2007-08 Programmi e algoritmi I Calcolatori: cos hanno di speciale? 1 Elaborazione dell Informazione Dati, informazione e istruzioni Un esempio: Dr Rossi 328275456

Dettagli

Il concetto di algoritmo. Il concetto di algoritmo. Costruire un algoritmo. Il concetto di algoritmo (più tecnico) Dati di ingresso (input)

Il concetto di algoritmo. Il concetto di algoritmo. Costruire un algoritmo. Il concetto di algoritmo (più tecnico) Dati di ingresso (input) Il concetto di algoritmo Il concetto di algoritmo Dati di ingresso (input) Risultati in Uscita (output) 9 10 Il concetto di algoritmo (più tecnico)! Il problema della radice quadrata intera Y di un numero

Dettagli

Algoritmi e Programmi

Algoritmi e Programmi Algoritmi e Programmi Algoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. Problema di elaborazione Insieme dati di partenza Risultato ricerca Algoritmi

Dettagli

INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema

INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema di Roberta Molinari Algoritmo Origine del termine Al-Khwarizmi: nato nel 780 circa a Baghdad. È un importante matematico Arabo.

Dettagli

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

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dal Problema all Algoritmo Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Cosa Impareremo Informazioni e codici Definizione e soluzione di un problema Individuazione dei dati Definizione

Dettagli

Caratteristiche di un calcolatore elettronico

Caratteristiche di un calcolatore elettronico Prof. Emanuele Papotto Caratteristiche di un calcolatore elettronico È una macchina, costituita da circuiti elettronici digitali e da componenti elettromeccaniche, ottiche e magnetiche. È velocissimo,

Dettagli

Informatica. Richiami. Diagrammi di flusso. Algoritmi, programmi e dati. Algoritmi e diagrammi di flusso. per le lauree triennali

Informatica. Richiami. Diagrammi di flusso. Algoritmi, programmi e dati. Algoritmi e diagrammi di flusso. per le lauree triennali Informatica per le lauree triennali ESERCITAZIOE 10 Algoritmi e diagrammi di flusso Richiami ESERCITAZIOE 10 ALGORITMI E DIAGRAMMI DI FLUSSO 1 ESERCITAZIOE 10 ALGORITMI E DIAGRAMMI DI FLUSSO Algoritmi,

Dettagli

L INFORMATICA c1. Informatica è qualcosa che ha a che fare con l uso del computer

L INFORMATICA c1. Informatica è qualcosa che ha a che fare con l uso del computer L INFORMATICA c1 Negli incontri precedenti ci siamo occupati di cercare la soluzione di alcuni problemi. Ora cerchiamo di definire cosa si intende per informatica. Informatica è qualcosa che ha a che fare

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Problemi, algoritmi e programmi 1 L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni elementari le azioni vengono eseguite

Dettagli

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

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Algoritmi. Informatica B. Daniele Loiacono

Algoritmi. Informatica B. Daniele Loiacono Algoritmi Informatica B Cos è l informatica? q È la scienza che si occupa della rappresentazione dell informazione e della sua elaborazione e gestione Si occupa dell informazione, che fa parte di ogni

Dettagli

1 Esercizi in pseudocodice

1 Esercizi in pseudocodice Questa dispensa propone esercizi sulla scrittura di algoritmi in un linguaggio semiformale, utile all acquisizione delle abilità essenziali per implementare algoritmi in qualsiasi linguaggio di programmazione.

Dettagli