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 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 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 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 logN operazioni • complessità tipiche degli algoritmi, in ordine crescente: – logN, N, NlogN, N2, 2N Click Descrizione to edit Master di un algoritmo title style • un algoritmo è descritto in 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 editEsecuzione 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 Metodo Risolutivo (algoritmo) DATI Esecutore RISULTATI ESECUTORE una macchina astratta capace di eseguire le azioni specificate dallo algoritmo. Click to edit Esempio Master title style • scrivere un algoritmo per decidere se l'assicurazione della macchina è scaduta – – – – – – – 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 to editVariabili 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 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 editVariabili Master title style • A = Valore oppure A ← Valore significa che "Valore" viene memorizzato nella zona di memoria RAM etichettata con l'etichetta "A": Valore A Click to editVariabili Master title style • B = A oppure B ← A significa che "Valore", precedentemente memorizzato nella zona di memoria etichettata con "A" viene copiato nella zona di memoria etichettata con "B": Valore A B 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 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 vE operation condition no start stop 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 to l’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 l’importo in lire • calcola il corrispettivo in Euro • dai in output il risultato 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 di una condizione I Then Else O Click Massimo to edit tra Master due numeri 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 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 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 Leggi N F=N N>1? no yes N=N-1 Stampa F F=F*N STOP Click to REPEAT-UNTIL edit Master title style I O Click to edit ESEMPIO Master title style • CALCOLO DEL FATTORIALE • N!=N*(N-1)*(N-2)*…*2 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 ClickScambio to edit Master title style Click to editEsercizi Master title style • • • • • dati 2 numeri in input trovare e stampare in output il max dati 3 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.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 editEsercizi 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 Algoritmo to edit Master e programma 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 problema algoritmo metodo risolutivo programma linguaggio di programmazione un programma è la formulazione testuale, in un certo linguaggio di programmazione, di un algoritmo che risolve un dato problema.