Scopo della lezione è l introduzione ai concetti di: problema, dato, algoritmo, linguaggio di programmazione, programma, diagramma di flusso.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Scopo della lezione è l introduzione ai concetti di: problema, dato, algoritmo, linguaggio di programmazione, programma, diagramma di flusso."

Transcript

1 (Algoritmi, dati e programmi. Scopo della lezione è l introduzione ai concetti di: problema, dato, algoritmo, linguaggio di programmazione, programma, diagramma di flusso. Cerchiamo prima di tutto di collocare l argomento nel mondo dell informatica. Da una parte, l informatica si occupa di informazione, argomento nel quale rientra la rappresentazione dell informazione; possiamo considerare questo ramo come il più teorico dell informatica. Dall altra parte, dal punto di vista più pratico, ci sono i mezzi utilizzati dall informatica: i mezzi fisici (quindi i calcolatori ed in particolare i circuiti che compongono i calcolatori già introdotti nella lezione sull HW) ed il software. Di seguito saranno approfonditi gli aspetti di sviluppo del software. Definiamo gli elementi principali di un problema di elaborazione dell informazione; vi saranno: - dei dati di partenza; - un risultato cercato. Una soluzione al problema è una procedura che elabora i dati di partenza in modo da ottenere il risultato cercato. Un banale esempio di problema di elaborazione dell informazione è il problema di determinare la somma di due addendi a e b. I dati di partenza sono i dati a e b, il risultato cercato è il numero c = a + b. Una possibile soluzione al problema è descritta dalla procedura per la somma di due numeri (scrivere i numeri incolonnati correttamente, sommare le unità con riporto, sommare le decine ). Quando si affronta un problema dobbiamo distinguere tra: - la conoscenza di come si risolve un problema (che implica l analisi del problema, l identificazione di una soluzione e la descrizione della soluzione stessa); - l effettiva capacità di risolvere un problema (cioè l interpretazione della soluzione e la sua attuazione). Torniamo al problema della somma per esemplificare i diversi passi. Problema di elaborazione dell informazione: Quanto fa 21+32? Conoscenza di come si risolve il problema: Analisi: è un problema di somma tra due numeri interi; Identificazione di una soluzione: esiste una procedura per la somma tra due numeri interi;

2 Descrizione della soluzione: i due numeri interi vanno incolonnati, si sommano le unità, il riporto viene sommato alla somma delle decine, il riporto viene sommato alla somma delle centinaia,... Effettiva capacità di risolvere il problema: Intepretazione della soluzione: un utente italiano legge la descrizione del problema e comprende le operazioni da eseguire; Attuazione della soluzione: = Dunque, la conoscenza di come si risolve un problema permette di sviluppare un programma. Ad esempio, possono essere sono necessarie competenze in ambito matematico per capire come si risolve un equazione differenziale. Il matematico può quindi fornire una procedura per la risoluzione di un equazione differenziale, quindi fornisce una rappresentazione della soluzione al problema (ad esempio specificando una serie di istruzioni - programma). Il programma viene poi interpretato da un utente (es. esecutore umano, calcolatore) che eseguirà le istruzioni specificate. Le competenze necessarie per i diversi passi sono dunque diverse: - servono competenze in ambito matematico per trovare la soluzione del problema; - servono competenze necessarie alla scrittura di un programma per specificare la soluzione in un linguaggio comprensibile (capacità di descrivere una serie di operazioni utilizzando un opportuno linguaggio); - servono le competenze duali (capacità di comprendere una serie di operazioni in un opportuno linguaggio) per interpretare la soluzione, e - Servono infine i mezzi per l attuazione della soluzione. La conoscenza di come si risolve un problema è ciò che ci permette di sviluppare un programma. La scoperta / invenzione di un algoritmo per la risoluzione di un problema richiede uno sforzo creativo. Al contrario, la risoluzione di un problema richiede solo la comprensione di uno specifico linguaggio e l attuazione di una serie di operazioni: è dunque un operazione puramente meccanica. In particolare, non è necessaria la comprensione del problema per la sua risoluzione! La macchina (o comunque l esecutore) può calcolare la soluzione al problema senza avere la più pallida idea del problema in sé. Per riassumere i diversi ambiti in cui ci si muove: il problema viene definito ed analizzato nell ambito scientifico proprio del problema. Una volta individuato l algoritmo adatto al problema, interviene il programmatore che crea un opportuna

3 codifica dell algoritmo. Infine, il calcolatore interpreta il codice scritto dal programmatore ed elabora dai dati per arrivare alla soluzione del problema. Le competenze per l analisi del problema e l identificazione della soluzione provengono dunque da diversi ambiti disciplinari e non ha senso analizzarle in questa sede. Il calcolatore è lo strumento che fornisce l effettiva capacità di risoluzione del problema. Quello che ci interessa è il ponte tra questi due mondi, ovvero la descrizione della soluzione, cioè la formalizzazione dell algoritmo che risolve il problema in un opportuno linguaggio di programmazione. Per la descrizione della soluzione si potrebbe utilizzare il linguaggio naturale (italiano, russo, giapponese, ). Il problema è che il linguaggio naturale è spesso ambiguo. Ad esempio, consideriamo una ricetta (abbiamo già accennato al fatto che una ricetta è in effetti un algoritmo); se nella ricetta compare la frase aggiungere un pizzico di sale Quanto sale dobbiamo aggiungere? E meglio dunque ricorrere, per la descrizione della soluzione, ad un linguaggio formale, il quale è privo di ambiguità. Sono esempi di linguaggio formale il formalismo matematico, la rappresentazione di un algoritmo in pseudo-codice, i diagrammi di flusso, i linguaggi di programmazione, il codice macchina, E importante notare che la descrizione della soluzione può essere fatta a diversi livelli di dettaglio. Ad esempio, nella ricetta per preparare le lasagne, potremmo trovare una sequenza di 4 istruzioni: 1) preparare il ragù, 2) preparare la besciamelle, 3) bollire le lasagne, 4) mettere a strati nella teglia e cuocere in forno. L istruzione 2) potrebbe però essere di difficile interpretazione per molti esecutori (come si prepara la besciamelle?). Dunque potremmo trovare delle istruzioni a livello di dettaglio minore all interno della ricetta, ad esempio, 2.1) setacciare 50g di farina e stemperarla con 10cc di latte, 2.2), 2.3) aggiungere 30cc di latte e 50g di burro a pezzetti, Queste istruzioni saranno di alto livello (vicino al modo di comprendere di chi ha scritto le istruzioni) o di basso livello (vicino al modo di comprendere dell esecutore). Per analogia avremo anche a che fare con linguaggi di alto livello (quelli in cui la sintassi è simile al modo di esprimersi naturalmente la singola istruzione di un linguaggio ad alto livello è significativa per l utente umano, ma richiede un grande numero di operazioni elementari per la macchina che non è dunque in grado di interpretare l istruzione in modo diretto) e di basso livello (quelli in cui la sintassi descrive in maniera dettagliata le operazioni fin nei più piccoli dettagli, es. svuotamento di un registro nella CPU difficilmente comprensibile per un operatore umano, esprime operazioni elementari per la macchina). Dopo questa breve introduzione, andiamo dunque ad elaborare il processo con il quale un problema viene affrontato e risolto utilizzando un approccio informatico. Prima di tutto è necessario dare una formalizzazione del concetto di algoritmo, dal

4 momento che l algoritmo costituisce il metodo attraverso il quale il problema viene risolto (sempre che il problema sia risolvibile mediante un algoritmo!). La definizione di algoritmo deve essere dato, come in ogni disciplina scientifica, in modo rigoroso (non è sufficiente la definizione del vocabolario!). Diamo dunque tale definizione. Definizione di algoritmo: un insieme ordinato di passi eseguibili e non ambigui che determinano un procedimento atto a risolvere un problema o una classe di problemi utilizzando dati iniziali e ottenendo dei risultati in un tempo finito. Esempi di algoritmo sono i procedimenti per le 4 operazioni che ci sono stati insegnati alle elementari, oppure la ricetta per fare le lasagne. E evidente che, a seconda dell esecutore (bambino delle elementari, cuoco) il linguaggio utilizzato è differente; in particolare, il linguaggio utilizzato deve essere tale da essere compreso dall esecutore! L algoritmo per eseguire un origami viene espresso non in linguaggio naturale, bensì attraverso una serie di disegni che possano essere compresi dall esecutore. E importante notare che un algoritmo esiste indipendentemente dal linguaggio in cui è espresso. L algoritmo è un concetto astratto, mentre la sua rappresentazione in un determinato linguaggio è concreta! L algoritmo è dunque indipendente dal linguaggio in cui è espresso. In particolare, nella definizione che abbiamo dato di algoritmo, non vi è alcun accenno al linguaggio di programmazione! Il linguaggio è necessario per rappresentare l algoritmo, in particolare per darne una rappresentazione che sia comprensibile da parte dell esecutore. Ogni linguaggio è costituito da: - un vocabolario (l insieme dei simboli utilizzati dal linguaggio); - una sintassi (un insieme di regole che specificano come comporre i vocaboli per ottenere costrutti ben formati); - una semantica (associa un significato ad ogni costrutto linguistico sintatticamente corretto). Una volta che un algoritmo è stato specificato utilizzando un opportuno linguaggio, questo può essere passato ad un esecutore. Un esecutore è un soggetto in grado di eseguire le operazioni specificate in un algoritmo. Quindi, in maniera duale rispetto al

5 linguaggio, anche un esecutore è caratterizzato da un linguaggio, dall insieme di azioni che è in grado di compiere, e dall insieme delle regole che permettono di associare un azione da compiere ad ogni costrutto semanticamente corretto del linguaggio. A seconda dell insieme delle azioni che un esecutore può eseguire, esecutori diversi possono utilizzare algoritmi diversi per risolvere lo stesso problema! Ad esempio, il calcolatore non utilizza l algoritmo per la divisione che utilizziamo noi! Oppure, per spostarsi avanti di un metro, noi mettiamo in movimento le gambe, mentre un robot metterebbe in rotazione le ruote Anche CPU diverse possono utilizzare operazioni elementari diverse per eseguire semplici istruzioni! Concentriamoci allora sulla scrittura interpretazione di un programma. Parliamo cioè di linguaggi di programmazione. Introduciamo prima di tutto il concetto di programma. I programmi sono sequenze finite di istruzioni, ognuna scritta in un fissato linguaggio (di programmazione). I programmi eseguibili da un computer devono essere scritti usando un linguaggio che il computer è in grado di comprendere. Un algoritmo può essere quindi specificato sottoforma di programma eseguibile da un calcolatore. Att.ne però! Programma e algoritmo sono concetti diversi! Un algoritmo è un concetto astratto. Un programma può essere la rappresentazione di un algoritmo in un determinato linguaggio. D altra parte, la sequenza di istruzioni all interno del programma potrebbe anche non terminare mai In tal caso il programma non sarebbe la rappresentazione di un algoritmo, che, per definizione, termina in un tempo finito!!! Come abbiamo già introdotto in precedenza, affinché l esecutore possa eseguire un programma è necessario che questo sia specificato in un linguaggio comprensibile all esecutore stesso. Nel caso in cui l esecutore sia un calcolatore, si parlerà di linguaggio di programmazione. Ogni linguaggio di programmazione sarà dunque dotato di un vocabolario, un insieme di regole sintattiche, una semantica. Rispetto ad un linguaggio naturale umano, un linguaggio di programmazione ha una sintassi molto semplificata. Esiste una disciplina, nota come teoria dei linguaggi formali, la quale si occupa tra l altro di classificare i linguaggi in base alla loro semplicità (dunque è in grado di quantificare in modo opportuno la complessità di un linguaggio). Distinguiamo tra linguaggi di basso livello e linguaggi di alto livello. I linguaggi di basso livello hanno una sintassi che permette di codificare istruzioni che corrispondono ad azioni molto elementari da parte del calcolatore. Ad esempio,

6 in un linguaggio di basso livello ci aspettiamo che siano codificate istruzioni del tipo riempi un registro della CPU con X, preleva dalla memoria il contenuto che si trova in Y, Dal momento che le istruzioni codificate sono di tipo elementare, è richiesto uno sforzo di codifica notevole da parte del programmatore (Es. per fare una somma, sarebbe necessaria una sequenza di istruzioni del tipo: preleva dalla memoria il contenuto della cella A e mettilo nel registro AA della CPU, preleva dalla memoria il contenuto della cella B e mettilo nel registro BB della CPU, Somma i registri AA e BB e metti il risultato nel registro CC della CPU, Copia in memoria il registro CC della CPU, in posizione C ). Le istruzioni sono immediatamente comprensibili da parte dell elaboratore, ma per codificare quelle che un utente umano ritiene delle operazioni semplici, è necessario un numero molto alto di istruzioni. Al contrario, i linguaggi di alto livello permettono di programmare usando un insieme di istruzioni più articolato. Ad esempio, per sommare due numeri è possibile utilizzare l istruzione c = a + b, che associa alla cella di memoria c il contenuto di a + il contenuto di b. Mentre nel linguaggio a basso livello erano necessarie 4 istruzioni, nel linguaggio ad alto livello ne basta una! Dunque, lo sforzo di programmazione da parte del programmatore è inferiore. Le istruzioni sono più vicine a quelle che un utente umano ritiene operazioni elementari. Per contro, ogni istruzione elementare di alto livello deve essere scissa in una sequenza di istruzioni elementari di basso livello per essere compresa dal calcolatore. Il processore è in grado di riconoscere (e quindi di eseguire) solo programmi scritti in un proprio linguaggio di basso livello (linguaggio macchina). Ogni modello di processore (es: Intel, Pentium, Motorola, PowerPC) ha un proprio linguaggio macchina diverso da quello degli altri processori. Dunque un programma scritto in linguaggio macchina per un processore Intel probabilmente non funzionerà per un processore Motorola! Ad esempio, supponiamo che un processore A sia dotato di N registri, mentre il processore B ne abbia M>N. Ogni istruzione che utilizza un registro da N+1 a M non ha senso per il processore A! Inoltre i due processori possono utilizzare linguaggi macchina con insiemi di istruzioni o sintassi diverse Dal momento che ogni processore è in grado di intendere solo il proprio linguaggio macchina, quando si programma utilizzando un linguaggio di alto livello è necessario tradurre il codice in linguaggio macchina per fare eseguire il codice al processore. Esistono dei programmi, chiamati interpreti e compilatori, che si occupano di tradurre il linguaggio ad alto livello nel linguaggio macchina comprensibile per il processore. Un compilatore traduce per intero un programma che è stato scritto in linguaggio ad alto livello. Una volta effettuata la traduzione il linguaggio macchina, il programma può essere copiato in memoria ed eseguito. E questo il modo di programmare tradizionale, ad esempio quello utilizzato quando si programma utilizzando C o C++.

7 L interprete, invece, traduce ed esegue immediatamente ogni singola istruzione di alto livello che viene digitata dall utente. Questo modo di lavorare è usato ad esempio da Matlab (utilissimo per fare ricerca). Programma (istruzione) in linguaggio macchina Intel Processore Intel Programma (istruzione) in linguaggio ad alto livello Interprete o compilatore Programma (istruzione) in linguaggio macchina Athlon Processore Athlon Programma (istruzione) in linguaggio macchina Motorola Processore Motorola Analizziamo allora le caratteristiche dei programmi a basso livello rispetto ai programmi ad alto livello. Per quanto riguarda la velocità di esecuzione, i linguaggi di basso livello sono più vantaggiosi rispetto a quelli di alto livello (il programmatore può scegliere come fare lavorare la CPU, dunque può ottimizzarne al meglio il comportamento al contrario, utilizzando un linguaggio di alto livello, il comportamento reale della CPU viene definito dalla traduzione che il compilatore / interprete effettua, che può non essere ottimale in termini di efficienza). Per quanto riguarda la portabilità, cioè la possibilità di eseguire il programma su macchine diverse, i linguaggi di alto livello offrono sicuri vantaggi rispetto ai programmi di basso livello. Infatti, basta compilare un programma di alto livello per lo specifico processore per poter utilizzare lo stesso codice su macchine diverse. Al contrario, come abbiamo già detto, un programma scritto in linguaggio macchina per un processore Athlon non è detto che funzioni su un processore Motorola! Giocano in questo caso un ruolo fondamentale i compilatori, che devono essere in grado di generare correttamente il codice di basso livello per diversi processori, a partire dallo stesso codice di alto livello. Infine, per quanto riguarda la complessità, abbiamo già accennato al fatto che per un utente umano è più facile scrivere (e capire) codice ad alto livello che a basso livello, in quanto le istruzioni di base utilizzate sono più vicine al modo di ragionare umano (al contrario, le istruzioni a basso livello sono comprensibili dal calcolatore). Dunque la complessità è maggiore per il codice a basso livello. Ciò può essere intuito anche pensando al fatto che, per eseguire la stessa operazione, è necessario specificare un numero di righe di codice molto più alto quando si utilizza un linguaggio di basso livello che uno di alto livello. Torniamo allora indietro nel nostro schema generale di elaborazione dell informazione, ed occupiamoci ora di come si arriva alla scrittura di un programma. Per arrivare a scrivere un programma, è conveniente muoversi seguendo i passi già individuati: 1) analisi del problema (richiede competenze specifiche al tipo di problema)

8 2) individuazione dell algoritmo di risoluzione a sua prima scrittura in un linguaggio adatto all uomo ma non troppo lontano dai linguaggi di programmazione 3) scrittura del programma nel linguaggio di programmazione scelto. In realtà questo modo di procedere può essere espanso come segue: analisi del problema e specificazione dei dati in ingresso e in uscita; identificazione e formalizzazione di una soluzione, definizione dell algoritmo risolutivo; programmazione in un linguaggio di programmazione ad alto livello ; traduzione in linguaggio macchina; verifica (testing). Il modo di procedere individuato, che si sposta dallo sviluppo di una soluzione di massima alla soluzione dei sottoproblemi, è noto come approccio top-down alla progettazione. Con tale approccio, dunque, si parte da una descrizione ad alto livello della soluzione, in cui si individuano sotto-problemi; si definiscono quindi le soluzioni dei sotto-problemi in termini di operazioni più elementari e così via, fino ad esprimere tutto in termini di problemi elementari. Per contro, esiste anche una modalità di programmazione bottom-up, nella quale vengono affrontati e risolti mediante piccoli programmi prima i sottoproblemi le soluzioni parziali dei sottoproblemi vengono poi assemblate in maniera opportuna per arrivare alla soluzione del problema generale. Un esempio di questo modo di procedere è lo sviluppo di librerie, cioè insiemi di funzioni elementari che vengono utilizzate da altri utenti per la risoluzione di problemi generali. Quale che sia il paradigma di programmazione scelto (meglio usare top-down perché più intuitivo), nello sviluppo di un programma vi sono due aspetti da gestire: 1) Gestione dei dati (dati in ingresso, risultati parziali delle operazioni, risultati) Dove e come memorizzare i dati? 2) Successione di operazioni da compiere. Per affrontare questi due problemi, introdurremo la nozione di contenitore di dati come astrazione dalla nozione di zona della memoria utilizzata da un computer per i dati. Introdurremo quindi i principali tipi di istruzioni. Descriveremo quindi gli algoritmi mediante diagrammi di flusso, strumento per descrivere una successione di operazioni adatto all uomo e orientato alla traduzione in un linguaggio di programmazione Descriviamo dunque i passi da seguire nella costruzione di un algoritmo, intesa come passo preliminare alla costruzione di un corrispondente programma.

9 Tale descrizione è adatta a quella che è nota come programmazione in piccolo, cioè la costruzione di programmi trattabili da un singolo programmatore. Per contro, la programmazione in grande richiede processi di sviluppo ingegnerizzati, che non tratteremo. Abbiamo detto che un problema è caratterizzato da dei dati in ingresso e da un risultato. Per ottenere il risultato, avremo inoltre bisogno di svolgere dei calcoli e di mettere da parte dei risultati parziali. Per fare ciò, ci viene incontro la nozione di contenitore dei dati, cioè un astrazione della nozione di area di memoria contenente dei dati. Tale contenitore di dati è detta variabile di un programma. In un programma avremmo tante variabili quanti sono i dati che ci interessa memorizzare! Ogni contenitore di dati (variabile) ha un tipo; a seconda del tipo di variabile, avremo un insieme di elementi rappresentabili ed un insieme di operazioni possibili su di essa. Ad esempio, vi saranno variabili di tipo intero (int); ciascuna di queste variabili occuperà 4 byte in memoria (32 bit) e permetterà di rappresentare un intervallo di numeri interi. Tra le operazioni possibili vi saranno +, -, *, /, >, <, ==, avendo presente che l insieme dei numeri rappresentabili è finito e tutti i numeri sono interi ( possibile overflow, in accuratezza nella divisione, ). Un altro tipo possibile è il tipo BYTE, che permette di rappresentare 256 numeri interi. Un ultimo tipo presentato qui è il tipo boolean, per la rappresentazioni di variabili booleane (cioè variabili che possono essere VERE o FALSE,). In questo caso, per esempio, l operazione di divisione non è definita! Per la variabili possiamo utilizzare la seguente rappresentazione grafica: pippo: intero 54 Nome del contenitore: pippo tipo : intero Contenuto = dato (appartenete al tipo di dati associato al nome, infatti 54 è un numero intero, e su di esso sono ammesse le usuali operazioni aritmetiche) I linguaggi di programmazione ad alto livello (ma anche Excel e Access) prevedono la tipizzazione dei dati. Vi è poi da fare la distinzione tra dati di tipo semplice (Es. una variabile di tipo intero, reale, testo o logico) ed i dati di tipo strutturato. I dati di tipo strutturato sono dati che contengono più di un valore, ad esempio matrici o vettori (es. [ ]). Un altro dato di tipo strutturato sono i record: strutture non uniformi, cioè contenenti più valori non necessariamente dello stesso tipo. Esempi: Variabile semplice di tipo intero:

10 a, contiene a = [1]; Variabile strutturata di tipo vettore di reali: v, contiene v = [ ] Variabile strutturata di tipo studente (un particolare record definito dall utente), un record: s, s contiene: s.nome = Pippo s.cognome = Franco s.matricola = s.mediaesami = 18.1 In quest ultimo esempio la variabile strutturata s (un record) è di tipo studente, un tipo composto da due variabili di tipo testo, una variabile di tipo intero, una variabile di tipo reale. Passiamo allora a vedere quali sono le istruzioni fondamentali per lavorare sui dati. Vi sono tre tipi fondamentali di istruzioni: 1) Ingresso / uscita; 2) Aritmetico / logiche; 3) Di controllo. 1) Ingresso / uscita Le istruzioni di ingresso / uscita permettono di acquisire dati e di presentare risultati. Ad esempio: read a - acquisisci un dato da tastiera e mettilo nel contenitore a print 'La media dei valori dati in ingresso è ', media - stampa il contenuto di media preceduto da un commento *** 2) Aritmetico / logiche Per quanto riguarda le istruzioni aritmetico / logiche, abbiamo: Le istruzioni di assegnamento, che modificano lo stato di memoria, cioè i valori dei contenitori dati (detti variabili). Sono della forma: CONTENITORE = ESPRESSIONE [(leggi: metti ESPRESSIONE in CONTENITORE)] Es.: a = b + 3 ESPRESSIONE può essere: una costante, una variabile, un espressione vera e propria, una funzione CONTENITORE è il nome di una variabile

11 l esecutore valuta l ESPRESSIONE e mette il valore così calcolato in CONTENITORE, sostituendone il valore precedente. *** Le espressioni aritmetiche esprimono calcoli numerici (somma, sottrazione, prodotto divisione, elevamento a potenza, radice, logaritmo, esponenziale, ecc.) Es.: b**2 4 * a * c Le espressioni sui caratteri modificano parole e testi: Es. concatenazione, moto&sega (risultato: motosega) Le espressioni logiche (o booleane) esprimono calcoli logici e possono quindi assumere solo i valori vero o falso. Operatori logici relazionali: confronto fra due valori, ad esempio x < y (x + 5) = y ecc. Operatori logici AND, OR, NOT, ecc. per comporre, ad es.: (x < y) AND (y < z) Un valore booleano (vero, falso) è rappresentabile con un bit. Convenzionalmente si assegna 1 a vero, 0 a falso. 3) Di controllo Le espressioni logiche assumono un particolare importante quando abbinate alle istruzioni di controllo, in quanto permettono di prendere delle decsioni. Infatti, le istruzioni di controllo permettono di modificare il flusso di esecuzione delle istruzioni all interno di un programma, altrimenti puramente sequenziale. Es. Selezione if, case,... Iterazione while, repeat for Si basano sull uso di espressioni booleane Es. se x > 0, calcola la radice quadrata di x, altrimenti calcola la radice cubica di x. ***

12 Una comoda rappresentazione di un programma, utile anche per la sua traduzione in un linguaggio di programmazione, è data dalla rappresentazione mediante diagrammi di flusso. Ogni diagramma di flusso contiene dei blocchi di elaborazione; ogni blocco di elaborazione contiene delle sequenze di azioni (dunque troveremo all ingresso di un blocco di elaborazione delle istruzioni aritmetico / logiche o delle operazioni di input/output). metti x+y in y metti x-1 in x Vi sono poi blocchi decisionali, che contengono un espressione booleana e dirigono il flusso del programma diversamente a seconda del risultato dell operazione booleana. vero x = 0 falso Un diagramma di flusso si ottiene connettendo la frecce uscenti dai blocchi di elaborazione e decisionali. Le tre principali strutture sono: sequenza una sequenza di operazioni che vengono eseguite una dopo l altra; selezione un espressione booleana che devia il flusso del programma; iterazione si ottiene componendo una sequenza con una selezione (non necessariamente in quest ordine) - permette di iterare una sequenza di istruzioni fino al verificarsi di una condizione. Raggruppando insieme dei blocchi otteniamo quella che è nota come decomposizione modulare: ovvero, è possibile raggruppare una serie di blocchi che eseguono una serie di operazioni complesse e raggrupparli in un unico blocco che permetta di ottenere una rappresentazione più semplice. Proviamo allora a tradurre uno schema a blocchi in codice.

13 Inizio Acquisisci a a<0? NO b = sqrt (a) Scrivi: la radice di a è <b> SI Function RadiceQuadrata; Real a,b; // Si alloca spazio in memoria per a, b Repeat Display( Dammi a ); read a; Until (a>=0) b=sqrt(a); Display( La radice di a è: <b> ) end Fine Laboratorio di Informatica AA 2006/ La traduzione di uno schema a blocchi (o da un altra rappresentazione di alto livello) in un linguaggio di programmazione è l attività di programmazione. Esistono diversi paradigmi di programmazione. Approfondiremo la programmazione dal punto di vista del paradigma procedurale, basato su moduli (funzioni) che permettono di elaborare dei dati fornendo dei risultati; le funzioni possono essere incapsulate l una dentro l altra. Un diverso paradigma procedurale (ma ve ne sono anche altri!) è quello ad oggetti, nel quale il programmatore crea una serie di oggetti, ciascuno dotato di uno stato e in grado di svolgere alcune funzioni caratteristiche Questo paradigma di programmazione è più vicino come interpretazione alla vita di tutti i giorni, ad esempio pensiamo all implementazione di un oggetto panettiere, questo oggetto potrà avere più stati (es. dietro al bancone, al forno, ) e potrà svolgere diverse funzioni (es. cuocere il pane, emettere uno scontrino, ). L interazione con altri oggetti (es. oggetto consumatore) fa poi avanzare il programma Approfondiamo dunque un paio di aspetti della programmazione procedurale. Il programmatore crea diversi moduli (funzioni). Ogni funzione può avere una serie di input (variabili di ingresso i dati da elaborare) e di output (variabili di uscita i risultati). Ad esempio, se pensiamo ad una funzione che esegue la divisione intera, potremo avere: [Quoziente, Resto] = DivisioneIntera (Dividendo, Divisore), dove (Dividendo, Divisore) sono gli input, [Quoziente, Resto] sono gli output, DivisioneIntera è il nome della funzione. Andiamo allora a vedere come una possibile implementazione della funzione DivisioneIntera, utilizzando la sintassi di Matlab: [Quoziente, Resto] = function DivisioneIntera (Dividendo, Divisore); Quoziente = div (Dividendo, Divisore);

14 Resto = mod (Dividendo, Divisore); return; La prima riga contiene la dichiarazione della funzione. Nella dichiarazione viene utilizzata la parola chiave function, che specifica che si sta effettuando una dichiarazione di funzione. La seconda e terza riga effettuano l elaborazione dei dati. Notiamo che queste righe contengono delle chiamate ad altre funzioni! Dunque: - per dichiarare una funzione, la sintassi è data da: o [Output1, Output2, OutputN] = function Funzione (Input1, Input2, input) - E necessario dichiarare una funzione per poterla utilizzare! - per utilizzare una funzione, la sintassi è data da: o [Output1, Output2, OutputN] = Funzione (Input1, Input2, input) Siamo dunque di fronte ad un esempio di incapsulamento delle funzioni! La funzione DivisioneIntera effettua delle chiamate alle funzioni div e mod! E comodo creare una librearia di funzioni, perché ciascuna funzione può essere utilizzata da altre funzioni quando necessario (programmazione modulare ogni funzione è un modulo da riutilizzare). Infine, la quarta e ultima riga termina l esecuzione della funzione mediante la parole chiave return (in Matlab, questa istruzione è in realtà opzionale se non viene utilizzata, la funzione termina automaticamente dal momento che non trova più codice da eseguire!).

Scopo della lezione è l introduzione ai concetti di: problema, dato, algoritmo, linguaggio di programmazione, programma, diagramma di flusso.

Scopo della lezione è l introduzione ai concetti di: problema, dato, algoritmo, linguaggio di programmazione, programma, diagramma di flusso. (Algoritmi, dati e programmi. Scopo della lezione è l introduzione ai concetti di: problema, dato, algoritmo, linguaggio di programmazione, programma, diagramma di flusso. Cerchiamo prima di tutto di collocare

Dettagli

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

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica informatica informazione mezzi mezzi fisici procedure Algoritmi, dati e programmi rappresentazione dell informazione

Dettagli

Algoritmi, dati e programmi

Algoritmi, dati e programmi Algoritmi, dati e programmi 1 Scopo della lezione Introduzione ai concetti di: problema dato algoritmo linguaggio di programmazione programma diagramma di flusso 2 1 Informatica informatica informazione

Dettagli

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

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati 1 2 Informatica Algoritmi, dati e programmi Informatica: Scienza che studia l informazione e la sua elaborazione. informazione rappresentazione dell informazione (dati) dati elaborazione dei dati tramite

Dettagli

Algoritmi, dati e programmi

Algoritmi, dati e programmi Algoritmi, dati e programmi 1 Scopo della lezione Introduzione ai concetti di: problema dato algoritmo linguaggio di programmazione programma diagramma di flusso 2 1 Informatica informatica informazione

Dettagli

Informatica. Elaborazione di informazione

Informatica. Elaborazione di informazione Lauree triennali della Facoltà di Medicina LEZIONE 6 Algoritmi, dati e programmi 1 Elaborazione di informazione Introduzione ai concetti di: algoritmo programma dato linguaggio di programmazione diagramma

Dettagli

Algoritmi, dati e programmi

Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica: Scienza che studia l informazione e la sua elaborazione. informazione rappresentazione dell informazione (dati) dati elaborazione dei dati tramite

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

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

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

Algoritmi, dati e programmi

Algoritmi, dati e programmi Algoritmi, dati e programmi Laboratorio di Informatica - Sez.A Lez. T5 (teoria) L.A. Ripamonti Scopo della lezione Introduzione ai concetti di: problema dato algoritmo linguaggio di programmazione programma

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

Unità di apprendimento 6. Dal problema al programma

Unità di apprendimento 6. Dal problema al programma Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 1 Conosciamo gli algoritmi e i linguaggi In questa lezione impareremo: cos è un problema come affrontarlo come descrivere

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

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

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

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

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

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

Dettagli

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso

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

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli

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

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

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

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

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

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

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

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

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

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione INFORmazione+autoMATICA Perché saperne di piu? Calcolatore: un supporto per la rappresentazione di informazione che può: I raccogliere impressionanti quantità di dati I eseguire velocemente e con precisione

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

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

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli

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

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

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

Algoritmo PARTE A: Algoritmi, linguaggi di programmazione e programmi

Algoritmo PARTE A: Algoritmi, linguaggi di programmazione e programmi Algoritmo PARTE A: Algoritmi, linguaggi di programmazione e programmi Un algoritmo è una descrizione non ambigua di un numero finito di operazioni. 2 3 Algoritmo Esempio: Algoritmo per accedere al proprio

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

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

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina Algoritmo Dato un problema, un algoritmo

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

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

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

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

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché

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

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

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

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

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

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

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

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

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione 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

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

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

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

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

Linguaggi algoritmici A. Ferrari

Linguaggi algoritmici A. Ferrari Linguaggi algoritmici A. Ferrari Caratteristiche di un linguaggio algoritmico Non ambiguità Capacità di esplicitare il flusso di esecuzione delle istruzioni Deve contenere istruzioni di tipo: operativo

Dettagli

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER 1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono

Dettagli

generalità concetti di base

generalità concetti di base generalità concetti di base cosa significa informatica? scienza dell informazione e l informazione giornalistica? scienza dei computer (dall inglese computer science) per i progettisti di computer? scienza

Dettagli

Elementi di programmazione

Elementi di programmazione Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università

Dettagli

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota Corso di Problemi ed algoritmi Ing Pasquale Rota Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso Problemi ed algoritmi - Ing. Pasquale Rota 2 Proprietà degli algoritmi

Dettagli

Introduzione all informatica

Introduzione all informatica Introduzione all informatica INFORMATICA Varie definizioni Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta Scienza della rappresentazione e dell

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

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

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

3. Programmi e algoritmi

3. Programmi e algoritmi 3. Programmi e algoritmi Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Contiene slides del corso «Fondamenti di Informatica» del Prof. Montessoro (Università degli Studi di Udine) Recall:

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Teoria dell Informazione

Teoria dell Informazione Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro

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

ITI M. FARADAY. Programmazione a. s

ITI M. FARADAY. Programmazione a. s ITI M. FARADAY Programmazione a. s. 2018-2019 Disciplina: INFORMATICA Indirizzo: INFORMATICA E TELECOMUNICAZIONI Classi: Terza A Terza B Ore settimanali previste: 6 (3 ora Teoria - 3 ore Laboratorio) Docenti:

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

Introduzione alla programmazione strutturata

Introduzione alla programmazione strutturata FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio

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

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2) Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,

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

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

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi Diagrammi di flusso - Flowcharts E un formalismo che consente di rappresentare graficamente gli algoritmi Un diagramma di flusso descrive le azioni da eseguire ed il loro ordine di esecuzione Ogni azione

Dettagli

Le fasi della programmazione

Le fasi della programmazione Ad un primo livello di astrazione l attività della programmazione può essere suddivisa in quattro (macro) fasi principali. 1. Definizione del problema (specifica): quale funzione si vuole calcolare e quali

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

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

Calcolo numerico e programmazione Programmazione

Calcolo numerico e programmazione Programmazione Calcolo numerico e programmazione Programmazione Tullio Facchinetti 11 maggio 2012 14:05 http://robot.unipv.it/toolleeo La programmazione la programmazione è l insieme delle

Dettagli

Elementi di programmazione

Elementi di programmazione Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Elementi di programmazione Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema

Dettagli

Algoritmi, dati e programmi

Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica: Scienza che studia l informazione e la sua elaborazione. informazione rappresentazione dell informazione (dati) dati elaborazione dei dati tramite

Dettagli

Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A

Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A. 2018-2019 Programmazione Lezione 3 Introduzione alla Programmazione Docente: Lorenzo Caruso - lorenzo.caruso@unife.it Nelle lezioni precedenti

Dettagli

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

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

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

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

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