INFORMATICA ALGORITMI e DIAGRAMMI DI FLUSSO http slideplayer
- Slides: 87
INFORMATICA ALGORITMI e DIAGRAMMI DI FLUSSO http: //slideplayer. it/slide/10300860/ http: //www. mat. uniroma 3. it/users/liverani/IN 1/I N 110_02_algoritmi. pdf
Simboli e loro significato
Vediamo come procedere per costruire un percorso che ci porta alla soluzione di un problema Passo 1 -Traduciamo il problema in algoritmo: caratteristiche di un algoritmo Passo 2 - Visualizziamo l’algoritmo in modo grafico: diagrammi di flusso Passo 3 - Traduciamo l’algoritmo in un linguaggio macchina: programma
UN PROBLEMA, IL MASSIMO COMUN DIVISORE e IL MINIMO COMUNE MULTIPLO DI DUE NUMERI GLI ALGORITMI
UN PROBLEMA: IL MASSIMO COMUN DIVISORE
MCD • Per determinare il MASSIMO COMUN DIVISORE tra due numeri a e b si possono usare vari metodi 1. Si scrivono i divisori dei due numeri e dopo aver determinato i divisori comuni, si determina il più grande tra essi 2. Si scompongono in fattori primi i due numeri e si fa il prodotto dei fattori comuni con il minimo esponente 3. Si può far uso di procedure ideate da Euclide
Procedura di Euclide per il calcolo del MCD • La procedura originale di Euclide, basata su sottrazioni successive • il calcolo del MCD di due interi positivi, nella sua versione più semplice, si basa sulla seguente proprietà:
Procedura di Euclide per il calcolo del MCD • Se due numeri, m, n, sono divisibili per un terzo numero, x, allora anche la loro differenza è divisibile per x.
Procedura di Euclide per il calcolo del MCD • Per dimostrarla, si può utilizzare la proprietà distributiva. Supponiamo m>n. m=kx n=hx m-n=kx-hx=x(k-h) Dunque si può dire che: • MCD(m, n) = MCD((m-n), n)
Procedura di Euclide per il calcolo del MCD • MCD(m, n) = MCD((m-n), n) • Come si vede, questa regola permette di passare, per mezzo di sottrazioni successive, a MCD di numeri sempre più piccoli, fino ad ottenere: • MCD(a, 0)=a
Una procedura più veloce, basata su divisioni successive • Euclide descrisse questo procedura nel suo libro degli Elementi. Invece di usare i numeri interi, però, utilizzò i segmenti di retta. Perciò il suo procedimento serve anche a determinare il massimo comune divisore di due segmenti.
Una procedura più veloce, basata su divisioni successive • In certi casi il procedimento può richiedere numerosissimi passaggi, risultando molto lento (provate con MCD (900, 15)). Conviene quindi renderlo più veloce e si può fare ricorrendo ad una serie di divisioni con resto anziché sottrazioni.
Una procedura più veloce, basata su divisioni successive • Il principio su cui ci si basa è il seguente (supponiamo m>n): • MCD(m, n) = MCD(r, n)dove r è il resto della divisione m/n • Come si vede, questa regola permette di passare rapidamente, per mezzo di divisioni con resto successive, a MCD di numeri sempre più piccoli, fino ad ottenere: • MCD(r, 0)=r
MCD: UN ALGORITMO ELEMENTARE • A scuola si impara un procedimento molto semplice per calcolare MCD tra due numeri a e b: MCD(a, b): PROBLEMA 1. Scomponi a ed b in fattori primo passo 2. Estrai i fattori comuni secondo passo SOLUZIONE 3. Moltiplica tra di loro DEL PROBLEMA i fattori comuni con minimo esponente, presi una sola volta. N. B. Questo metodo è conveniente usarlo solo per numeri piccoli (la scomposizione in fattori primi e’ molto costosa)
ALGORITMO DEFINIZIONE INFORMALE DI ALGORITMO Una sequenza FINITA di passi DISCRETI e NON AMBIGUI che porta alla soluzione di un problema è un processo detto ALGORITMO Questa definizione: • si puo’ applicare nella matematica (da cui ha origine) • ma anche nella cucina • è alla base di ciò che è legato all’informatica.
• E’ importante trasformare ogni questione da risolvere in una successione di passi elementari, eventualmente reiterati che portano alla soluzione del problema.
UN QUASI-ALGORITMO: LA RICETTA PER LA BAGNA CAUDA 1. Cuocere gli spicchi di aglio, coperti con il latte, fino a quando non diventino teneri. 2. Tritare l'aglio 3. Unirlo all'olio, alle acciughe tagliate molto finemente 4. Cuocere a fiamma moderata e mescolare fino a far ridurre il contenuto in un composto omogeneo. 5. Dopo circa venti minuti aggiungere qualche fiocco di burro 6. Servire in tavola con le verdure.
PERCHE’ QUASIALGORITMO? • Numero di passi e’ finito • Ma molti passi sono ambigui: – ‘teneri’? – ‘fiamma moderata’?
IL TERMINE ALGORITMO • Il nome ALGORITMO deriva dal nome del matematico persiano Muhammad ibn Mūsa 'l-Khwārizmī che attorno all’ 825 scrisse un trattato chiamato Kitāb al-djabr wa 'lmuqābala (Libro sulla ricomposizione e sulla riduzione) – AL-KHWARIZMI ALGORISMO ALGORITMO – (ALGEBRA deriva da AL-DJABR)
Proprietà fondamentali degli algoritmi Dalla precedente definizione di algoritmo si evincono alcune proprietà necessarie, senza le quali un algoritmo non può essere definito tale:
Proprietà fondamentali degli algoritmi • i passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili (atomicità); Così, ad esempio, "rompere le uova" può essere considerato legittimamente un passo elementare di un "algoritmo per la cucina" (ricetta),
Proprietà fondamentali degli algoritmi • i passi costituenti devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale (non ambiguità); "aggiungere sale quanto basta" non è un passo interpretabile in modo univoco dato che l'espressione "quanto basta" è ambigua, e non indica con precisione quali passaggi servano per determinare la quantità necessaria
Proprietà fondamentali degli algoritmi • l'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza) , "continuare a mescolare a fuoco vivo fino a quando il composto non assume colore bruno" è un'istruzione accettabile di tipo iterativo, che comporta un numero finito di operazioni (le rimestate) sebbene tale numero non sia conoscibile a priori, perché dipendente da ciò che è chiamato input (il grado di umidità della farina nel composto, il vigore della fiamma, ecc. ).
Proprietà fondamentali degli algoritmi • l'esecuzione deve avere termine dopo un tempo finito (terminazione); • l'esecuzione deve portare a un risultato univoco (effettività).
Proprietà fondamentali degli algoritmi • Un passo come "preparare un pentolino di crema pasticcera" non può considerarsi legittimo perché ulteriormente scomponibile in sotto-operazioni (accendere il fuoco, regolare la fiamma, mettere il pentolino sul fornello, ecc. ) e anche perché contenente ambiguità (non specifica quanto grande deve essere il pentolino, quanto deve essere riempito di crema e così via).
Proprietà fondamentali degli algoritmi • gli algoritmi possano essere modulari All'istruzione non elementare di preparazione della crema potrebbe essere associato a un opportuno rimando a un'altra sezione del ricettario, che fornisca un sotto-algoritmo apposito per questa specifica operazione. Questo suggerisce che, per comodità d'implementazione, , ovvero orientati a risolvere specifici sottoproblemi, e gerarchicamente organizzati.
Proprietà fondamentali degli algoritmi • Un algoritmo deve poter essere realizzabile ovvero ci deve essere compatibilità con le risorse materiali e temporali a disposizione una ricetta che preveda la cottura a microonde non può essere preparata da un esecutore sprovvisto dell'apposito elettrodomestico.
Proprietà fondamentali degli algoritmi • possono darsi più algoritmi validi per risolvere uno stesso problema, ma ognuno con un diverso grado di efficienza.
MCD: UN ALGORITMO ELEMENTARE • A scuola si impara un algoritmo molto semplice per calcolare MCD: la SCOMPOSIZIONE IN FATTORI PRIMI – 42 = 2 x 3 x 7 – 56 = 2 x 2 x 7 • Algoritmo MCD(M, N): 1. Scomponi M ed N in fattori primi 2. Estrai i componenti comuni • Questo metodo si’ puo’ solo applicare per numeri piccoli (la scomposizione in fattori primi e’ molto costosa)
MCD: L’ALGORITMO DI EUCLIDE I • MCD(M, N): 1. RIPETI finche’ M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M
ESEMPIO • MCD(42, 56): – M(42) N(56); • N (56) > M (42) • N 14 – M(42) N(14); • M (42) > N (14); • M 28 – M(28) N(14) • M(28) > N (14); • M 14 – OUTPUT: 14 MCD(M, N): l 1. 2. 3. 4. 5. RIPETI finche’ M N SE M > N, M M –N; ALTRIMENTI, N N – M; RITORNA al passo 1; OUTPUT M
ALCUNE CONSIDERAZIONI: PROBLEMI ED ALGORITMI • Ci sono sempre molti algoritmi per risolvere un problema • Parte dell’arte della programmazione e’ trovare gli algoritmi piu’ efficienti
ALGORITMI E FUNZIONI • In termini matematici, un algoritmo puo’ essere visto come una FUNZIONE che produce un certo OUTPUT dato un certo INPUT – Per esempio, MCD(42, 56) = 14 • Due algoritmi si dicono EQUIVALENTI se producono lo stesso output dato lo stesso input. – Fattori primi e Euclide sono EQUIVALENTI (ma non egualmente efficienti!!)
Lo studio sistematico dei processi algoritmici che descrivono e trasformano l'informazione sono alla base di una scienza chiamata INFORMATICA
INFORMATICA • L'informatica è la scienza che si occupa del trattamento dell'informazione mediante procedure automatizzabili. • Il trattamento automatico dell'informazione avviene mediante calcolatore (naturale o artificiale) • L'elaboratore, infatti, non fa altro che eseguire istruzioni preventivamente "impartitegli" da un essere umano: PROGRAMMA • ll computer, grazie alla velocità di calcolo, è diventato insostituibile nei campi più disparati della vita e della scienza.
PROGRAMMI • Un PROGRAMMA e’ “un ALGORITMO” posto in forma comprensibile al computer
PROGRAMMI e COMPUTER – Un programma e’ un ALGORITMO, per risolvere un certo PROBLEMA, scritto secondo le regole di un LINGUAGGIO DI PROGRAMMAZIONE – Un computer e’ una macchina per eseguire PROGRAMMI
ALGORITMI PIU’ COMUNI IN INFORMATICA • Algoritmi MATEMATICI – Per fare calcoli anche molto complessi (per esempio, integrali, la scoperta di numeri primi) • Algoritmi di ORDINAMENTO – 45 2 17 28 101 2 17 28 45 101 • Algoritmi di RICERCA • Algoritmi per il TRATTAMENTO DELLE STRINGHE • COMPILATORI • Algoritmi di COMPRESSIONE
RICORDIAMO DA DOVE SIAMO PARTITI Per procedere alla costruzione di un percorso che ci porta alla soluzione di un problema abbiamo che: Passo 1 - Bisogna tradurre il problema in algoritmo: caratteristiche di un algoritmo Vediamo ora i passi successivi Passo 2 - Visualizziamo l’algoritmo in modo grafico: diagrammi di flusso Passo 3 - Traduciamo l’algoritmo in un linguaggio macchina: programma
DA ALGORITMI A PROGRAMMI
RAPPRESENTAZIONE GRAFICA DI UN ALGORITMO • E’ utile una rappresentazione grafica per descrivere in modo piu’ preciso i passi di un algoritmo senza usare una sintassi specifica. Come possiamo immaginare tale rappresentazione? DISCUSSIONE
RAPPRESENTAZIONE GRAFICA DI UN ALGORITMO • Una utile rappresentazione grafica per descrivere in modo piu’ preciso i passi di un algoritmo, può essere pensata come una serie di BLOCCHI uniti da archi
MODELLO GRAFICO per rappresentare un algoritmo • Per rappresentare in modo efficace un algoritmo sono stati sviluppati dei modelli grafici detti : DIAGRAMMI DI FLUSSO
Criteri grafici per rappresentare un algoritmo i passi di un algoritmo Che criterio grafico individuiamo per simboleggiare: • • • i blocchi di inizio e fine programma (start, stop) i blocchi per assegnare valori numerici i blocchi di istruzioni elementari i blocchi in cui si esprimono delle condizioni i blocchi per i dati di input /output (leggi, scrivi…) Che simbolo usiamo per tornare ad una istruzione già eseguita ( vai al passo…)
Criteri grafici per rappresentare un algoritmo i passi di un algoritmo Vediamo cosa è stato stabilito in generale
BLOCCHI: INIZIO E FINE PROGRAMMA
BLOCCHI: ISTRUZIONI ELEMENTARI COUNT 0 COUNT + 1
BLOCCHI: INPUT / OUTPUT
RIPETIZIONI
CONDIZIONALI
Criteri grafici per rappresentare i passi di un algoritmo: I DIAGRAMMI DI FLUSSO RIASSUMIAMO
Esempi Da un ALGORITMO al DIAGRAMMA DI FLUSSO
ESEMPIO: AREA DEL RETTANGOLO • • Calcolo dell’area di un rettangolo AREA: 1. 2. 3. 4. Leggi da input l’altezza H Leggi da input la base B Calcola l’area A Produci in output il risultato
AREA DEL RETTANGOLO: DIAGRAMMA DI FLUSSO dati di input /output (leggi, scrivi, stampa…) Istruzione elementare
Ripetizione Condizione
SOTTOLINEAMO
LINGUAGGI DI PROGRAMMAZIONE • Un linguaggio di programmazione permette di esprimere certi tipi di istruzioni in modo che possano venire poi convertite in istruzioni macchina • Un linguaggio di programmazione e’ caratterizzato da – SINTASSI (come vengono scritte le istruzioni) – SEMANTICA (come devono venire interpretate)
CONSIDERAZIONI, II: INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE • MCD(M, N): 1. RIPETI finche’ M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M
INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE • Poter mettere istruzioni in SEQUENZA • Poter cambiare l’ordine di esecuzione sulla base di TEST • Poter RIPETERE istruzioni • Questi ingredienti vengono catturati tramite i DIAGRAMMI DI FLUSSO
DIAGRAMMI DI FLUSSO • Una rappresentazione grafica usata per descrivere in modo piu’ preciso i passi di un algoritmo senza usare una sintassi specifica • Un diagramma e’ composto da una serie di BLOCCHI uniti da archi
LE VARIABILI • Molti algoritmi richiedono un qualche modo per immagazzinare i risultati di certi calcoli. – Per esempio, nell’algoritmo per MCD, M e N • Quasi tutti i linguaggi di programmazione permettono di usare delle VARIABILI per questo scopo. Una variabile puo’ essere pensata come un nome per una zona di memoria.
• VARIABILI NELL’ALGORITMO DI EUCLIDE MCD(M, N): 1. RIPETI finche’ M N 2. M > N, M M –N; ALTRIMENTI, N N – M; SE 3. 4. RITORNA al passo 1; 5. OUTPUT M
ESEMPIO: SCAMBIO DI VALORI 1. Leggi il valore della prima variabile X 2. Leggi il valore della seconda variabile Y 3. Salva il valore di X in una variable Aux per ricordarlo 4. Assegna ad X il valore di Y 5. Assegna a Y il valore di Aux
DIAGRAMMA DI FLUSSO
CONDIZIONALI • Un’altro degli ingredienti fondamentali di un linguaggio di programmazione e’ la possibilita’ di scegliere di eseguire istruzioni diverse a seconda dei risultati di un TEST
CONDIZIONALI
ESEMPIO: PARI O DISPARI 1. 2. 3. 4. Leggi N Dividi N per 2 Se Resto = 0 scrivi: N e’ pari Altrimenti scrivi: N e’ dispari
PARI E DISPARI
RIPETIZIONI • L’ultimo componente fondamentale di un linguaggio di programmazione e’ la possibilita’ di ripetere le stesse azioni un gran numero di volte
RIPETIZIONI
ALGORITMO DI EUCLIDE START F T M N T F M > N? OUTPUT: M M M-N STOP N N-M
- Flusso fisico e flusso informativo
- Informaticainscoli
- Diagrammi e-r
- Diagrammi scuola primaria
- Diagramma di equilibrio
- Climogrammi esempi
- Vanni lughi
- Slideplayer
- Slideplayer
- Cellular differentiation ppt
- Infineon
- Slideplayer
- Slideplayer
- Cromossomos
- T4tutorials
- Acronimo
- Fluido ideale
- Flusso di un campo
- Controllo di flusso
- Flusso del campo elettrico zanichelli
- Diagramma di flusso esempi
- Diagramma di carroll
- Value stream map esempio
- Controllo di congestione
- Flusso del campo elettrico zanichelli
- Genette figure iii
- Teorema gauss
- Riparto dell'utile
- Flusso di materia
- Piletrombosi
- Flusso uscente
- Pallone flusso dipendente
- Magazzino a flusso lineare
- Flusso elettroendosmotico
- Definizione flusso fisica
- Vena sovraepatica
- Http //mbs.meb.gov.tr/ http //www.alantercihleri.com
- Http //siat.ung.ac.id atau http //pmb.ung.ac.id
- Algoritam matematika
- Vārdiskais algoritms
- Camil demetrescu
- Znanje org c++
- Ciklicni algoritmi zadaci i resenja
- Algoritmi informatika
- Kostka rubika 5x5 algorytmy
- Algoritmo dfs
- Machine learning algoritmi
- Compară fiecare număr cu succesorul său
- Introduzione agli algoritmi e strutture dati
- Algoritmi notevoli
- Teoria degli algoritmi
- Vertex cover esempio
- Simboli algoritmi
- Algoritmi rubikova kocka
- Rappresentazione algoritmo informatica
- Algoritmi zadaci
- Machine learning algoritmi
- Algoritmi elementari
- Strukture podataka i algoritmi
- 10 algoritmi
- Algoritmi notevoli
- Determinisanost
- Suurin yhteinen tekijä
- Algoritamske seme
- Algoritmi primjeri
- Algoritmi i programiranje elfak
- Linijska struktura
- Analisi degli algoritmi
- Algoritmi i programiranje
- Algoritmi genetici
- Ordonarea cifrelor unui numar c++
- Marija
- Dfs grafo
- Reprezentarea algoritmilor
- Webnstudy
- Algoritmi notevoli
- Linijski algoritmi
- Examen coproparazitologic prin centrifugare
- Malware, nella sicurezza informatica indica
- Seed traduzione informatica
- Unidades de medida informatica
- Crawling informatica
- Que generacion son los de 1970
- Informatica robotica
- Gestione informatica dei dati aziendali
- Fondamenti di informatica 2
- Unipg informatica
- Ricorsivo significato