2. Algoritmi e Programmi
|
|
|
- Daniele Salerno
- 9 anni fa
- Просмотров:
Транскрипт
1 12 2. Algoritmi e Programmi Dato un problema, per arrivare ad un programma che lo risolva dobbiamo: individuare di cosa dispongo: gli input; definire cosa voglio ottenere: gli output; trovare un metodo di risoluzione che compone di un algoritmo, di strutture dati su cui l algoritmo opera. Codificare algoritmo e strutture dati in un linguaggio comprenbile dalla macchina (in questo Corso useremo il linguaggio C) Un algoritmo è un ineme di regole (n ambigue) che ci permette di calcolare i risultati voluti a partire dai dati di ingresso. Gli algoritmi posso essere descritti in vari modi; tra questi: in un linguaggio pseudonaturale, con un diagramma di flusso, con un linguaggio di programmazione Diagrammi di Flusso I diagrammi di flusso so un linguaggio grafico per descrivere algoritmi. I valori utilizzati per il calcolo so contenuti in variabili. Posamo paragonare una variabile ad un contenitore che contiene un valore che può essere letto e può essere rimpiazzato con un altro valore. Il calcolo è fatto attraverso la esecuzione di istruzioni. L istruzione fondamentale è l assegnamento di un valore ad una variabile. Nel calcolo dei valori, utilizziamo espresoni che so formate con valori numerici (costanti), variabili, e operatori. Un diagramma di flusso rappresenta le istruzioni entro blocchi e la sequenza di esecuzione delle istruzioni mediante l utilizzo di frecce. Noi condereremo i seguenti tipi di blocco: v expr v expr test Input : l input fornito dall utente è assegnato alla variabile v Output : visualizza in output il valore della espresone expr Assegnazione: alla variabile v è assegnato il valore della espresone expr Decione : a questo blocco seguo più istruzioni. Se l espresone test ha valore vero, viene scelta l uscita, mentre se ha valore falso, viene scelta l uscita. Ombreggiatura : Un blocco ombreggiato nasconde un commento o u zoom.
2 13 Conderiamo alcuni esempi di diagrammi di flusso. Esempio 13 Vogliamo calcolare le radici di una equazione di secondo grado: a x 2 + b x + c = 0, essendo a, b e c tre numeri reali. Supponiamo iltre che a a 0, altrimenti l'equazione n è più di secondo grado, ma di primo. Sappiamo che: x 1,2 = b ± b2 4 a c 2 a Iltre, le due radici so coincidenti, se il delta = (b 2-4 a c) è uguale a zero, e so distinte se 0. In questo secondo caso, le radici so reali se > 0, oppure complesse coniugate, se < 0. Nella Figura 4 è riportato il diagramma di flusso che descrive il programma per il calcolo delle due radici. a, b, c so numeri reali a 0 Start a,b,c = b**2-4 a c = 0 Se > 0 le radici so reali Se < 0 le radici so complesse coniugate x1 = x2 = -b/(2 a) x1 = [-b + Sqrt( )]/(2 a) x2 = [-b - Sqrt( )]/(2 a) x1, x2 x1, x2 Stop Figura 4 Diagramma di flusso che descrive il calcolo delle due radici dell'equazione di secondo grado a x 2 + b x + c = 0.
3 14 Il programma in Figura 4 ha la caratteristica di essere lineare, e cioè di essere costituito da alcune sequenze alternative di istruzioni, in nessuna delle quali c'è un ritor ad un passo precedente. Esempio 14 Vogliamo calcolare la media di una serie di n numeri x 1, x 2,, x k,, x n mediante la formula: m = 1 n n L'algoritmo può sommare i numeri, leggendoli u alla volta e mantenendo una somma parziale, finché n ha sommato tutti gli n numeri. I risultati parziali so contenuti nella variabile m. Ad ogni iterazione (contata dall'intero k) incrementiamo m dell'ultimo valore x k letto. L algoritmo termina quando k raggiunge il valore n. L'algoritmo è descritto nella Figura 5. k=1 x k Start n m = 0 k = 1 Read x(k) m = m + x(k) k = n k = k+1 m = m/n Stop Print m Figura 5 Calcolo della media di n numeri, con n 1. Osserviamo che m viene posto inizialmente a zero affinchè le operazioni in ogni ciclo a le stesse. Si sarebbe potuto inizializzare il valore di m a x 1, ma, in
4 15 questo caso, il primo numero sarebbe stato trattato in modo diverso dagli altri, e così pure le operazioni nella prima esecuzione del ciclo sarebbero state diverse. Osserviamo iltre che, affinchè l'algoritmo a corretto, deve essere n 1. Notiamo iltre che l'algoritmo di Figura 5 n è lineare come quello di Figura 4: esso presenta una ripetizione di una serie di istruzioni, controllate dal raggiungimento di un valore specifico (n) di ripetizioni. Questo algoritmo ha una struttura iterativa. Esempio 15 Un caso più semplice del precedente è quello in cui voglio sommare i primi n numeri interi a partire da 1. In questo caso, il contatore k è anche il valore che vuole sommare e n c'è bisog di leggere dati esterni. L'algoritmo è riportato in Figura 6. n acc = 0 k = 0 acc = acc + k k = k + 1 k = n Print acc Figura 6 Calcolo della somma dei primi n numeri interi, a partire da 1. L'algoritmo dovrà sommare i numeri a partire da 1 finché n ha sommato tutti i primi n numeri (il primo da sommare è 1). I risultati parziali di questa somma so contenuti in una variabile, che chiameremo acc ("accumulatore") e nella variabile k registreremo i numeri succesvi da sommare. Ad ogni iterazione incrementiamo k di 1 e sommiamo il suo valore all accumulatore. L algoritmo termina quando k raggiunge il valore n. Esempio 16 Supponiamo di avere n numeri x 1, x 2,, x n, ordinati in modo crescente. Dato un altro numero y, vogliamo sapere se y è uguale a u degli x k oppure in quale intervallo definito dagli x k esso è incluso. Uamo un algoritmo parallelo, descritto nella Figura 7 per il caso n = 3. Conderiamo 2 n comparatori, a ognu dei quali è associati u dei numeri x k, disposti come in Figura 7.
5 16 Quando un test è terminato, il ramo che è vero attiva un display di luce verde se y è mire del valore associato al comparatore, rosso se è maggiore e giallo se è uguale. y y x1 y x2 y x3 y = x1 y = x2 y = x Figura 7 Determinazione della pozione di un numero y rispetto a una sequenza crescente di n numeri. Quando i comparatori han terminato di operare, ottengo dei pattern di attivazione che corrispondo ai diver intervalli. Se c'è un display giallo acceso (se ne può avere solo u, essendo i numeri tutti diver), sappiamo che y è uguale al valore mostrato dal display. Se i display so tutti verdi, sappiamo che y è mire di tutti gli x k, mentre display tutti ros indica che y è maggiore di tutti gli x k. Se han display verdi e ros, y è compreso tra il display rosso e quello verde che so adiacenti. La struttura del diagramma di flusso in Figura 7 è parallela. Esempio 17 Data una matrice A n,m = {a j,k 1 j n, 1 k m}, con n righe ed m colonne, vogliamo calcolare la somma di tutti gli elementi di A. Posamo farlo sommando prima tutti gli elementi della stessa riga e poi sommando i risultati ottenuti. Sia T la somma totale che vogliamo ottenere e a R j la somma degli elementi della riga j-ma. Abbiamo: R j = m a j,k T = n R j o anche T = n m a j,k k=1 j=1 j=1 k=1 L'algoritmo è descritto nella Figura 8.
6 17 A, n, m T = 0 j = 1 Calcola R(j) T = T + R(j) j = j + 1 j = n Print T Figura 8 Calcolo della somma T di tutti gli elementi di una matrice rettangolare A con n righe ed m colonne. La somma è fatta prima per righe e poi per colonne. Nel diagramma di flusso della Figura 8, il calcolo di R j deve essere specificato a parte, come descritto nella Figura 9. R(j) = 0 k = 1 R(j) = R(j) + a(j,k) Figura 9 -Espanone del blocco Calcola R j della Figura 8. k = k + 1 k = m Output R(j)
7 18 Il diagramma di flusso completo sarà quello della Figura 10. A,n,m T = 0 j = 1 R(j) = 0 k = 1 R(j) = R(j) + a(j,k) k = k + 1 k = m j = j + 1 j = n T = T + R(j) Print T Figura 10 Diagramma completo per il calcolo della somma degli elementi di una matrice. Il diagramma di flusso della Figura 10 ha una struttura annidata.
Formalismi per la descrizione di algoritmi
Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano
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
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
Algoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
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
Informatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
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
ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico
ALGORITMI Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico Dati input Elaboratore elettronico Risultati Per risolvere un problema è necessario fornire una descrizione chiara e
5. Codifica degli Algoritmi in C
40 5. Codifica degli Algoritmi in C La traduzione di algoritmi in linguaggi di programmazione rende posbile l esecuzione di programmi da parte del calcolatore. In questo corso codificheremo gli algoritmi
Fondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
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
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
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
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
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
Unità di apprendimento 7. Dal problema al programma
Unità di apprendimento 7 Dal problema al programma Unità di apprendimento 7 Lezione 5 Conosciamo l iterazione definita e indefinita In questa lezione impareremo: che cos è l istruzione di iterazione come
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
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
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
Diagrammi a blocchi 1
Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi. Analisi strutturata. Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi. Attraverso
Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.
Flow-chart Introduzione agli algoritmi e ai diagrammi a blocchi [email protected] 1 Sommario Fasi dello sviluppo di un programma Algoritmo Dati: Variabili e Costanti Le operazioni tipiche Diagramma
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)
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
INFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
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
6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
Diagrammi a blocchi 1
Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi." Analisi strutturata." Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi." Attraverso
Note sull algoritmo di Gauss
Note sull algoritmo di Gauss 29 settembre 2009 Generalità Un sistema lineare di m equazioni in n incognite x,..., x n è un espressione del tipo: a x + a 2 x 2 + + a n x n = b a 2 x + a 22 x 2 + + a 2n
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
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
Rappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
Scelte ed alternative
Scelte ed alternative Esercizi proposti Esercizi sul calcolo del massimo Esercizio Equazione di secondo grado Esercizio Re e Regina 2 Esercizi proposti Esercizio Calcolo del massimo Si scriva un programma
Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso
Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina [email protected] www.dmi.unict.it/~messina Algoritmo Dato un problema, un algoritmo
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
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
Lezione 5. La macchina universale
Lezione 5 Algoritmi Diagrammi di flusso La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale=
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
Algoritmi. Pagina 1 di 5
Algoritmi Il termine algoritmo proviene dalla matematica e deriva dal nome di in algebrista arabo del IX secolo di nome Al-Khuwarizmi e sta ad indicare un procedimento basato su un numero finito operazioni
Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014
Progetto Matlab N 2 Calcolo Numerico 6 CFU Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014 Procedimento 1. Scrivere una function che implementi il prodotto matrice-vettore AX con A matrice
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
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
Sistemi Web per il turismo - lezione 3 -
Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa
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
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative
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
A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica
O. BELLUZZ I - L. DA VINCI Prot.8480/6.3 del 05/07/2017 A.S. 2016-2017 Classe III H Informatica Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica
Unità di apprendimento 6. Dal problema al programma
Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 2 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando
Algoritmo del Simplesso
Algoritmo del Simplesso Renato Bruni [email protected] Univertà di Roma Sapienza Corso di Ricerca Operativa, Corso di Laurea Ingegneria dell Informazione Vertici e Punti Estremi di un Poliedro Un poliedro
Come scrivere bene codice? (1 di 1)
DIAGRMMI DI FLUSSO Come scrivere bene codice? (1 di 1) Prima di iniziare a scrivere un programma: Acquisire profonda comprensione del problema; Progettare un approccio per la risoluzione del problema.
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
1 Esercizi in pseudo-codice
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.
Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop
Diagrammi di flusso Un metodo per rappresentare graficamente gli algoritmi. Input/ Output sotto programma Start predicato Elaborazione Stop La programmazione strutturata Un algoritmo è strutturato in blocchi
