Click to edit Algoritmo Master title style algoritmo

  • Slides: 41
Download presentation
Click to edit Algoritmo Master title style • algoritmo: un insieme ordinato di operazioni

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 • in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Click to edit Proprietà Master title style • un algoritmo deve essere: • non

Click to edit Proprietà Master title style • un algoritmo deve essere: • non ambiguo (i risultati non devono variare in funzione della macchina o persona che esegue l'algoritmo) • corretto (deve risolvere un dato problema) • realizzabile (deve essere eseguibile con le risorse a disposizione) • finito (deve essere composto da un numero finito di passi elementari; le operazioni sono eseguite un numero finito di volte) • efficiente (deve avere un costo accettabile, se non ottimo, in termini di risorse consumate: tempo di CPU richiesto per completare, quantità di memoria utilizzata, quantità di bit trasferiti)

Click to edit Efficienza Master title style • efficienza è il termine usato per

Click to edit Efficienza Master title style • efficienza è il termine usato per descrivere l’uso attento delle risorse da parte di un algoritmo • come si misurano il tempo e lo spazio consumati da un algoritmo, in modo da determinare se è efficiente? – efficienza rispetto allo spazio: si può giudicare in base alla quantità di informazioni che l’algoritmo deve registrare nella memoria del computer per svolgere il proprio compito, oltre ai dati iniziali sui quali opera – efficienza rispetto al tempo: è un’indicazione della quantità di “lavoro” richiesto dall’algoritmo stesso; è una misura dell’efficienza implicita del metodo, indipendente dalla velocità della macchina su cui è eseguito, dai valori dei dati di ingresso elaborati ma non dalla loro quantità

Click to edit Complessità Master title style • descrive l'efficienza dell'algoritmo – numero di

Click to edit Complessità Master title style • descrive l'efficienza dell'algoritmo – numero di operazioni svolte dall'algoritmo relativamente alla misura dell'informazione su cui opera l'algoritmo • esempio: per mettere in ordine una lista di N numeri interi un algoritmo può eseguire N*N operazioni oppure log. N operazioni • complessità tipiche degli algoritmi, in ordine crescente: – log. N, N, Nlog. N, N 2, 2 N

Click Descrizione to edit Master di un algoritmo title style • un algoritmo è

Click Descrizione to edit Master di un algoritmo title style • un algoritmo è descritto in un linguaggio • il linguaggio di descrizione di un algoritmo deve essere adeguato alle caratteristiche del suo esecutore • esecutore umano: – linguaggio naturale – linguaggio grafico (ad esempio i diagrammi di flusso) • esecutore automatico (computer): – linguaggio di programmazione

Click to edit Esecuzione Master title style • l'esecuzione delle azioni nell'ordine specificato dall'algoritmo

Click to edit Esecuzione Master title style • l'esecuzione delle azioni nell'ordine specificato dall'algoritmo consente di ottenere, a partire dai dati di ingresso, i risultati che risolvono il problema ESECUTORE una macchina astratta capace di eseguire le azioni specificate dallo algoritmo.

Esempio: Click tolaedit preparazione Master titledel style caffè • Esecutore: essere umano corredato di

Esempio: Click tolaedit preparazione Master titledel style caffè • Esecutore: essere umano corredato di caffettiera "moka", cucina a gas e macina-caffè; • Algoritmo: 1. svitare la caffettiera; 2. se si dispone di caffè macinato: • riempire il filtro con il caffè macinato e andare al punto 3 • altrimenti se si dispone di caffè in chicchi: macinarlo e tornare al punto 2 • altrimenti terminare (il caffè non si può fare. . ) 3. 4. 5. 6. 7. riempire la parte inferiore della caffettiera con acqua inserire il filtro nella macchina avvitare la caffettiera accendere il fuoco a gas collocare la moka sul fuoco 8. attendere l'uscita del caffè 9. spegnere il fuoco 10. terminare (il caffè è pronto)

Click Esempio: to edit assicurazione Master title auto style • scrivere un algoritmo per

Click Esempio: to edit assicurazione Master title auto style • scrivere un algoritmo per decidere se l'assicurazione della macchina è scaduta 1. 2. 3. 4. 5. 6. 7. anno corrente < anno scadenza polizza? non è scaduta, fine anno corrente > anno scadenza polizza? è scaduta, fine mese corrente < mese scadenza polizza? non è scaduta, fine mese corrente > mese scadenza polizza? è scaduta, fine giorno corrente < giorno scadenza polizza? non è scaduta, fine giorno corrente > giorno scadenza polizza? è scaduta, fine non è scaduta ma lo sarà tra 24 ore

Click. Il to concetto edit Master di variabile title style • per eseguire una

Click. Il to concetto edit Master di variabile title style • per eseguire una qualsiasi algoritmo, abbiamo bisogno di poter immagazzinare i risultati temporanei e finali dell'algoritmo • concettualmente, le variabili possono essere viste come delle scatole con: – un'etichetta che ci permette di identificarne il contenuto – dei pezzi di carta al loro interno su cui si possono annotare/modificare i valori di un calcolo che si sta facendo

Click to edit. Variabili Master title style • una variabile rappresenta una zona di

Click to edit. Variabili Master title style • una variabile rappresenta una zona di memoria RAM che può essere usata per memorizzare un valore • analogia con una scatola di scarpe etichettata in uno scaffale (che rappresenta la RAM): – – la scatola ha un'etichetta con un nome una posizione nello scaffale un valore (le scarpe che si trovano dentro la scatola) [un tipo (forma della scatola)]* (* vedremo più avanti cos'è e a che serve il tipo di una variabile)

Click to edit. Variabili Master title style • nella pratica: – ogni variabile ha

Click to edit. Variabili Master title style • nella pratica: – ogni variabile ha un nome mnemonico, che si usa nel programma per riferirsi alla variabile stessa. – ogni variabile contiene un valore che può essere letto e modificato a piacimento – durante l’esecuzione di un programma, il sistema operativo mantiene una associazione tra il nome di ogni variabile e l’indirizzo della cella di memoria in cui è memorizzato il suo valore • in definitiva una variabile è semplicemente un'astrazione della cella di memoria fisica

Click to edit. Variabili Master title style • A = Valore oppure A ←

Click to edit. Variabili Master title style • A = Valore oppure A ← Valore significa che il valore specificato a destra dell'uguale viene memorizzato nella zona di memoria RAM etichettata con l'etichetta "A": Valore A • attenzione: non si tratta di un'equivalenza matematica!!!

Click to edit. Variabili Master title style • B = A oppure B ←

Click to edit. Variabili Master title style • B = A oppure B ← A significa che un certo valore, precedentemente memorizzato nella zona di memoria etichettata con "A", viene copiato nella zona di memoria etichettata con "B": Valore A B

Click. Esempio: to edit Master incremento title style • A = A + 1

Click. Esempio: to edit Master incremento title style • A = A + 1 oppure A ← A + 1 (N. B. : matematicamente ciò non ha alcun senso!) • in informatica significa "prima calcoliamo A+1 e poi memorizziamo il risultato del calcolo in A" • stiamo quindi considerano il valore di A in due istanti diversi: prima per leggerne il valore e incrementarlo e dopo per memorizzare il suo nuovo valore Valore + 1 A A

Click Diagrammi to edit Master di flusso title style • un diagramma di flusso

Click Diagrammi to edit Master di flusso title style • un diagramma di flusso (flow chart) è la definizione grafica delle operazioni che costituiscono un algoritmo • è uno strumento efficace per la descrizione degli algoritmi • i diagrammi di flusso usano forme geometriche diverse per rappresentare: – trasferimento di informazioni (lettura dati, scrittura risultati, visualizzazione dati intermedi) – esecuzione di calcoli – assunzione di decisioni – esecuzione di iterazioni (ripetizione di sequenze di operazioni)

Click Diagrammi to edit Master di flusso title style – elaborazione – i blocchi

Click Diagrammi to edit Master di flusso title style – elaborazione – i blocchi rettangolari rappresentano istruzioni di assegnazione di valori o una modifica dello stato globale della computazione – input/output - i blocchi a forma di parallelogramma corrispondono a operazioni di input/output dei dati (lettura da tastiera, visualizzazione su video) – decisione – i blocchi a forma di rombo vengono yes utilizzati per rappresentare istruzioni di salto condizionato – inizio/fine – i blocchi ovali vengono utilizzati per rappresentare l’inizio e la fine dell’algoritmo v E operation condition no start stop

Calcolo Click to dell’area edit Master di untitle rettangolo style • • leggi da

Calcolo Click to dell’area edit Master di untitle rettangolo style • • leggi da input l’altezza (H) leggi da input la base (B) calcola l’area H*B dai in output il risultato

Calcola Click tol’area edit Master di un rettangolo title style START Leggi Altezza Leggi

Calcola Click tol’area edit Master di un rettangolo title style START Leggi Altezza Leggi Base Area = Base*Altezza Stampa Area STOP

Click Conversione to edit Master lire in title Euro style • leggi da input

Click Conversione to edit Master lire in title Euro style • leggi da input l'importo in lire (antica moneta usata in Italia fino al secolo XX) • calcola il corrispettivo in Euro • dai in output il risultato

Click Conversione to edit Master lire in title Euro style START Leggi Lire Euro

Click Conversione to edit Master lire in title Euro style START Leggi Lire Euro = Lire/1936, 27 Stampa Euro STOP

Click to edit IF-THEN-ELSE Master title style • selezione tra due istruzioni sulla base

Click to edit IF-THEN-ELSE Master title style • selezione tra due istruzioni sulla base di una condizione I Then Else O

Massimo due numeri Click to edit tra Master title style • leggi X •

Massimo due numeri Click to edit tra Master title style • leggi X • leggi Y • se X > Y – stampa X altrimenti – stampa Y

Click Massimo to edit tra Master due numeri title style

Click Massimo to edit tra Master due numeri title style

Click to edit Pari Master o disparititle style • leggi N • dividi N

Click to edit Pari Master o disparititle style • leggi N • dividi N per 2 • se resto = 0 – scrivi “N è pari” altrimenti – scrivi “N è dispari”

Click to edit Pari Master o disparititle style

Click to edit Pari Master o disparititle style

Click to edit WHILE-DO Master title style I O

Click to edit WHILE-DO Master title style I O

Click to edit ESEMPIO Master title style • CALCOLO DEL FATTORIALE • N!=N*(N-1)*(N-2)*…*2 START

Click to edit ESEMPIO Master title style • CALCOLO DEL FATTORIALE • N!=N*(N-1)*(N-2)*…*2 START Leggi N F=N N>1? no yes N=N-1 Stampa F F=F*N STOP

Click to edit DO-WHILE Master title style I O

Click to edit DO-WHILE Master title style I O

Click to edit ESEMPIO Master title style START • CALCOLO DEL FATTORIALE • N!=N*(N-1)*(N-2)*…*2

Click to edit ESEMPIO Master title style START • CALCOLO DEL FATTORIALE • N!=N*(N-1)*(N-2)*…*2 Leggi N F=N N=N-1 F=F*N yes no N>1? Stampa F STOP

Scambio Click todei editvalori Master di due titlevariabili style • • Leggi valore prima

Scambio Click todei editvalori Master di due titlevariabili style • • Leggi valore prima variabile X Leggi valore seconda variabile Y Conserva X in una variabile temporanea Aux Assegna il valore di Y ad X Assegna il valore di Aux a Y Scrivi X Scrivi Y

dei valori di due variabili Click. Scambio to edit Master title style

dei valori di due variabili Click. Scambio to edit Master title style

Click to edit. Esercizi Master title style • • • dati 2 numeri in

Click to edit. Esercizi Master title style • • • dati 2 numeri in input trovare e stampare in output il max dati 3 numeri in input stamparli in ordine crescente dati 2 numeri in input stampare in output la somma sul prezzo di un prodotto viene praticato lo sconto del 3% se costa meno di 1. 000 e del 5% se costa di più; dato in input il prezzo P, calcolare il prezzo da pagare secondo la regola sopra descritta • sul prezzo di un biglietto di un treno viene applicato un supplemento del 7% se il treno è di tipo "a", del 12% se è di tipo "b" e del 18% se è di tipo "c"; per gli altri treni non c'è supplemento; calcolare il prezzo totale del biglietto, a seconda del tipo di treno e comunicare il tipo di treno con il prezzo calcolato

Click to edit. Esercizi Master title style • dati in input i min, ore

Click to edit. Esercizi Master title style • dati in input i min, ore e sec stampare in output il totale dei secondi • data in input una data verificare se è giusta • dato in input 100 valori stampare in output la somma dei numeri positivi e la somma dei negativi • dato in input una parola stampare in output se è una palindrome o no • dato in input una parola stampare in output il numero delle vocali

Click to edit Programma Master title style • ogni computer è una macchina in

Click to edit Programma Master title style • ogni computer è una macchina in grado di eseguire azioni elementari su dati • l'esecuzione delle azioni elementari viene attivata tramite sequenze di istruzioni • le istruzioni sono espresse attraverso frasi di un opportuno linguaggio di programmazione • un programma non è altro che la formulazione testuale di un algoritmo in un linguaggio di programmazione

Algoritmo e programma Click to edit Master title style un programma è la formulazione,

Algoritmo e programma Click to edit Master title style un programma è la formulazione, in un certo linguaggio di programmazione, di un algoritmo che risolve un dato problema

Click Algoritmi to edit Master vs. programmi title style • calcolo del fattoriale: –

Click Algoritmi to edit Master vs. programmi title style • calcolo del fattoriale: – esiste un solo algoritmo per calcolare il fattoriale – esistono teoricamente infinite implementazioni (e quindi programmi) per il calcolo del fattoriale, una per ogni linguaggio di programmazione esistente • e quindi: – per ogni programma esiste un solo algoritmo – per ogni algoritmo esistono infiniti programmi

Linguaggi Click to edit di programmazione Master title style • I linguaggi di programmazione

Linguaggi Click to edit di programmazione Master title style • I linguaggi di programmazione ad alto livello permettono di scrivere programmi con una notazione adatta agli esseri umani, e in alcuni casi molto intuitiva. • Usando degli opportuni traduttori (compilatori ed interpreti) lo stesso programma può essere usato su macchine diverse • Fortran, Cobol, Pascal, Ada, C, C++, Java, Lisp, ML, Prolog, . . .

Click to Iledit compilatore Master title style • un programma scritto in un linguaggio

Click to Iledit compilatore Master title style • un programma scritto in un linguaggio ad alto livello è detto programma sorgente. • per essere eseguito su un computer, va tradotto nel linguaggio macchina del computer (il linguaggio del processore) • il compilatore è un programma che esegue la traduzione, producendo il programma oggetto, ossia una sequenza di istruzioni in linguaggio macchina • il compilatore segnala anche eventuali errori di sintassi nella scrittura del programma sorgente

Click to Iledit compilatore Master title style programma P scritto nel linguaggio L compilatore

Click to Iledit compilatore Master title style programma P scritto nel linguaggio L compilatore per P sul computer M programma P’ nel linguaggio macchina di M esecuzione di P’ su M

Click to edit L'interprete Master title style • in alternativa alla compilazione, un programma

Click to edit L'interprete Master title style • in alternativa alla compilazione, un programma sorgente può essere interpretato. • un interprete è un programma che non produce alcun programma oggetto, ma legge il ogni istruzione del programma sorgente e genera le istruzioni macchina corrispondenti, che vengono passate all’hardware per l'esecuzione.

Click Compilatori to edit Master Vs. Interpreti title style • programma compilato – vantaggi:

Click Compilatori to edit Master Vs. Interpreti title style • programma compilato – vantaggi: la traduzione avviene una sola volta, e poi il programma oggetto può essere eseguito quanto si vuole – svantaggi: la compilazione richiede un certo tempo di esecuzione • programma interpretato – vantaggi: il programma può essere eseguito subito senza dover attendere la fine della compilazione – svantaggi: la traduzione avviene mentre si esegue il programma conseguenze rallentamento dell'esecuzione • alcuni linguaggi permettono entrambe le scelte • attualmente, i computer sono così potenti che anche la compilazione di lunghi programmi non richiede molto tempo