La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Click to edit Master title styleAlgoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito,

Presentazioni simili


Presentazione sul tema: "Click to edit Master title styleAlgoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito,"— Transcript della presentazione:

1 Click to edit Master title styleAlgoritmo 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

2 Click to edit Master title styleAlgoritmo l’informatica studia gli algoritmi: 1.le loro proprietà formali e matematiche 2.le loro implementazioni hardware 3.le loro implementazioni linguistiche 4.le loro applicazioni

3 Click to edit Master title styleEuristica l'opposto di algoritmo: euristica Wikipedia: un approccio alla soluzione dei problemi che non segue un chiaro percorso, ma si affida all'intuito e allo stato temporaneo delle circostanze, al fine di generare nuova conoscenza

4 Click to edit Master title styleProprietà 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)

5 Click to edit Master title styleATTRIBUTI DI UN ALGORITMO Correttezza Facilità di comprensione Eleganza Efficienza Talvolta eleganza e facilità di comprensione vanno in direzioni contrarie: più elegante è la soluzione, più difficile risulta da capire.

6 Click to edit Master title styleEfficienza 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à

7 Click to edit Master title styleComplessità 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, N 2, 2 N

8 Click to edit Master title styleDescrizione di un algoritmo 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

9 Click to edit Master title style Esecuzione 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.

10 Click to edit Master title styleEsempio 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

11 Click to edit Master title styleVariabili 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)

12 Click to edit Master title styleVariabili A = Valore oppure A ← Valore significa che "Valore" viene memorizzato nella zona di memoria RAM etichettata con l'etichetta "A": Valore A

13 Click to edit Master title styleVariabili 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

14 Click to edit Master title stylePSEUDOCODICE Utilizzare un insieme di istruzioni per MT per descrivere un algoritmo non è certamente agevole. Molti studiosi di informatica utilizzano una notazione denominata pseudocodice per progettare e rappresentare gli algoritmi. Si tratta di costrutti in simil-linguaggio naturale studiati per assomigliare alle istruzioni di un linguaggio di programmazione, ma che in realtà non si eseguono su un computer. Lo pseudocodice rappresenta un compromesso tra i due estremi del linguaggio naturale e di quello formale; è semplice, altamente leggibile e praticamente privo di regole grammaticali.

15 Click to edit Master title styleESEMPIO Esempio moltiplicazione per somme Problema: dati due numeri interi a e b maggiori o uguali a 0, determinarne il prodotto p. 1. p  0 2. se b=0 vai all’istruzione 6 3. p  p+a 4. b  b-1 5. vai all’istruzione 2 6. fine

16 Click to edit Master title styleTERMINAZIONE ATTENZIONE! Il fatto che il numero di istruzioni presenti nella descrizione di un algoritmo sia finito non implica necessariamente che l’algoritmo termini in un tempo finito! 1. r  0 2. r  r+1 3. vai all’istruzione 2 4. fine Manca la condizione di uscita dal ciclo!

17 Click to edit Master title styleDiagrammi di flusso 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)

18 Click to edit Master title styleDiagrammi di flusso –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 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 condition startstop operation yes no

19 Click to edit Master title styleCalcolo dell’area di un rettangolo leggi da input l’altezza (H) leggi da input la base (B) calcola l’area H*B dai in output il risultato

20 Click to edit Master title styleCalcola l’area di un rettangolo Area = Base*Altezza START Leggi Altezza Leggi Base Stampa Area STOP

21 Click to edit Master title styleConversione lire in euro leggi da input l’importo in lire calcola il corrispettivo in Euro dai in output il risultato

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

23 Click to edit Master title style Programmazione tutte le operazioni utilizzate per realizzare algoritmi rientrano in una delle seguenti tre categorie: –sequenziali un'operazione sequenziale esegue una singola attività ben definita. Terminata l’attività, l’algoritmo passa all’operazione successiva. Solitamente le operazioni sequenziali sono espresse come semplici frasi dichiarative. –condizionali si tratta delle istruzioni di un algoritmo che “pongono una domanda”. L’operazione successiva è selezionata sulla base della risposta fornita alla domanda. –iterative si tratta delle istruzioni “di ciclo” di un algoritmo. Indicano di non proseguire con l’istruzione successiva, ma di tornare indietro e ripetere l’esecuzione di un precedente blocco di istruzioni.

24 Click to edit Master title styleIF-THEN-ELSE selezione tra due istruzioni sulla base di una condizione I O ThenElse

25 Click to edit Master title styleMassimo tra due numeri leggi X leggi Y se X > Y –stampa X altrimenti –stampa Y

26 Click to edit Master title styleMassimo tra due numeri

27 Click to edit Master title stylePari o dispari leggi N dividi N per 2 se resto = 0 –scrivi “N è pari” altrimenti –scrivi “N è dispari”

28 Click to edit Master title stylePari o dispari

29 Click to edit Master title styleWHILE-DO I O

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

31 Click to edit Master title styleREPEAT-UNTIL I O

32 Click to edit Master title styleESEMPIO CALCOLO DEL FATTORIALE N!=N*(N-1)*(N-2)*…*2

33 Click to edit Master title styleScambio dei valori di due variabili 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

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

35 Click to edit Master title styleEsercizi 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

36 Click to edit Master title styleEsercizi 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

37 Click to edit Master title styleAlgoritmo e programma 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 formula- zione testuale di un algoritmo in un linguaggio di programmazione

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

39 Click to edit Master title style costrutti base di un linguaggio di programmazione: Visual Basic

40 Click to edit Master title styleEsempio Definizione delle variabili che verranno usate nel programma, e del loro tipo: Dim PIPPO, PLUTO As Integer Dim NOME As String Dim RISULTATO As Double

41 Click to edit Master title styleAssegnazioni Istruzioni elementari: assegnazione di un valore ad una variabile: PIPPO = 5 PLUTO = 7 RISULTATO = PIPPO/PLUTO TESTO = “Ciao”

42 Click to edit Master title styleCondizioni Azioni condizionali: If A*A+B*B = C*C Then Print “Triangolo rettangolo” Else Print “Triangolo non rettangolo” End If

43 Click to edit Master title styleRipetizioni Azioni ripetute: While (PIPPO < 100) PIPPO = PIPPO - 1 SOMMA = SOMMA + PLUTO Wend

44 Click to edit Master title styleInput/Output Ingresso/Uscita X = InputBox(“Dammi X”) ‘leggi X da input; Print X+3 ‘stampa il risultato di X+3 ‘su output

45 Click to edit Master title styleEsempio di programma Sub main() Dim base, altezza, area as Integer base = InputBox(“Inserisci la base:”) altezza = InputBox(“Inserisci l’altezza”) area = base*altezza Print area; End Sub

46 Click to edit Master title styleRisolvere un problema per risolvere un problema individuiamo una sequenza di istruzioni elementari che, partendo dai dati noti, arrivi a dare la soluzione

47 Click to edit Master title styleEsempio 1 ricerca di informazione –trovare il numero di telefono di una persona, individuare il numero più piccolo di una sequenza, stabile se una parola precede alfabeticamente un’altra

48 Click to edit Master title styleEsempio 2 elaborazione di informazioni –calcolare il costo totale di un certo numero di prodotti, trovare perimetro e area di una figura geometria, …

49 Click to edit Master title styleEsempio 3 decisione –decidere se per andare a scuola è più conveniente il motorino, l'autobus, andare a piedi, farsi accompagnare da un genitore

50 Click to edit Master title styleEsempio 4 ottimizzazione: –trovare tra tutte le soluzioni possibili del problema quella che rende minimo un certo fattore, per esempio scegliere il mezzo di trasporto più economico per andare a Parigi oppure quello con il quale si impiega meno tempo

51 Click to edit Master title styleRisolvere un problema Interpretare l’enunciato Individuare i dati noti e quelli da trovare Costruire un modello Descrivere il procedimento risolutivo Eseguire le operazioni stabilite nel processo risolutivo Verificare se i risultati ottenuti corrispondono alla soluzione del problema reale Problema Interpretazione Modello Algoritmo Esecuzione Verifica dei risultati

52 Click to edit Master title styleAlgoritmo Definizione: Un algoritmo è una sequenza finita di passi che risolve in un tempo finito una classe di problemi. CODIFICA Fase di scrittura di un algoritmo attraverso un insieme ordinato di frasi (“istruzioni”), scritte in un qualche linguaggio di programmazio- ne, che specificano le azioni da compiere.

53 Click to edit Master title style Elaborazione Algoritmo Dati in ingresso Dati in uscita

54 Click to edit Master title styleProgramma Testo scritto in accordo alla sintassi e alla se- mantica di un linguaggio di programmazione.

55 Click to edit Master title style Programma Testo scritto in accordo alla sintassi e alla se- mantica di un linguaggio di programmazione. Un programma può non essere un algoritmo! Basta che la sequenza di mosse non sia finita, cioè che il programma non termini.

56 Click to edit Master title style Programma ATTENZIONE: un programma può non essere un algoritmo e tuttavia essere molto utile! ESEMPI semafori sistemi operativi … tutte quelle attività che devono agire più che calcolare un risultato.

57 Click to edit Master title styleEsecuzione L'esecuzione delle azioni nell'ordine specificato dall'algoritmo consente di ottenere, a partire dai dati di ingresso, i risultati che risolvono il problema

58 Click to edit Master title styleEsempio di programma in linguaggio C main() { int A, B; printf("Immettere due numeri: "); scanf("%d %d", &A, &B); printf("Somma: %d\n", A+B); }

59 Click to edit Master title styleAlgoritmi: proprietà Eseguibilità: ogni azione dev’essere eseguibi-le dall’esecutore in un tempo finito

60 Click to edit Master title styleAlgoritmi: proprietà Eseguibilità: ogni azione dev’essere eseguibi-le dall’esecutore in un tempo finito Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore

61 Click to edit Master title style Algoritmi: proprietà Eseguibilità: ogni azione dev’essere eseguibi-le dall’esecutore in un tempo finito Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore Finitezza: il numero totale di azioni da esegui-re, per ogni insieme di dati di ingresso, deve essere finito

62 Click to edit Master title style Algoritmi: proprietà Quindi, l’algoritmo deve: essere applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizio-ne dell’algoritmo

63 Click to edit Master title style Algoritmi: proprietà Quindi, l’algoritmo deve: essere applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell’algoritmo essere costituito da operazioni appartenenti ad un determinato insieme di operazioni fondamentali

64 Click to edit Master title style Algoritmi: proprietà Quindi, l’algoritmo deve: essere applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell’algoritmo essere costituito da operazioni appartenenti ad un determinato insieme di operazioni fondamentali essere costituito da regole non ambigue, cioè interpretabili in modo univoco qualunque sia l’esecutore (persona o “macchina”) che le legge

65 Click to edit Master title styleAlgoritmi equivalenti Due algoritmi si dicono equivalenti quando: hanno lo stesso dominio di ingresso; hanno lo stesso dominio di uscita; in corrispondenza degli stessi valori del domi-nio di ingresso producono gli stessi valori nel dominio di uscita.

66 Click to edit Master title style Algoritmi equivalenti Due algoritmi equivalenti forniscono lo stesso risultato ma possono avere diversa efficienza e possono essere profondamente diversi !

67 Click to edit Master title style Algoritmi equivalenti ESEMPIO: calcolo del M.C.D. fra due interi M, N Algoritmo 1 –Calcola l'insieme A dei divisori di M –Calcola l'insieme B dei divisori di N –Calcola l'insieme C dei divisori comuni = A  B –Il risultato è il massimo dell’insieme C Algoritmo 2 (di Euclide)

68 Click to edit Master title style Algoritmi equivalenti ESEMPIO: calcolo del M.C.D. fra due interi M, N Algoritmo 2 (di Euclide) Finché M  N: –se M>N, sostituisci a M il valore M’ = M-N –altrimenti sostituisci a N il valore N’ = N-M –Il Massimo Comun Divisore è il valore finale ottenuto quando M e N diventano uguali

69 Click to edit Master title style Algoritmi equivalenti Gli algoritmi 1 e 2 sono equivalenti… …ma hanno efficienza ben diversa!!

70 Click to edit Master title styleCOSA SAPPIAMO ORA? Il concetto di elaboratore e di programmazione I concetti di programma e algoritmo Il concetto di linguaggio di programmazione Codifica e esecuzione Proprietà degli algoritmi Algoritmi equivalenti

71 Click to edit Master title styleI programmi Il computer esegue programmi Un programma eseguibile dal computer e’ una sequenza di istruzioni macchina comprensibili da quel computer. Usando sequenze diverse di istruzioni, e dati diversi, possiamo far fare al computer le cose piu’ disparate

72 Click to edit Master title styleI programmi Pero’ scrivere programmi in linguaggio macchina (in assembler) e’ scomodo, perche’ il linguaggio e’ molto distante da quello umano. Inoltre, un programma in assembler gira solo su un tipo di cpu, e sarebbe comodo poter usare lo stesso programma su cpu e con S.O. diversi senza doverlo riscrivere ogni volta (portabilita’)

73 Click to edit Master title styleLinguaggi di programmazione 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 puo’ essere usato su macchine diverse Fortran, Cobol, Pascal, Ada, C, C++, Java, Lisp, ML, Prolog,...

74 Click to edit Master title styleIl compilatore Un programma scritto in un linguaggio ad alto livello e’ detto programma sorgente. Per essere eseguito su un computer, va tradotto nel linguaggio macchina del computer. Il compilatore e’ un programma che esegue la traduzione, producendo il programma oggetto, ossia una sequenza di istruzioni macchina Il compilatore segnala anche eventuali errori di sintassi nella scrittura del programma sorgente

75 Click to edit Master title styleIl compilatore Programma P scritto nel linguaggio L Compilatore per P sul computer M Programma P’ nel linguag. macchina di M Esecuzione di P’ su M

76 Click to edit Master title styleL'interprete In alternativa alla compilazione, un programma sorgente puo’ essere interpretato. Un interprete e’ 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.

77 Click to edit Master title styleCompilatori Vs. Interpreti In un programma compilato, la traduzione avviene una sola volta, e poi il programma oggetto puo’ essere eseguito quanto si vuole In un programma interpretato, la traduzione avviene tutte le volte che si esegue il progr. Molti linguaggi permettono entrambe le scelte Attualmente, i computer sono cosi’ potenti che anche la compilazione di lunghi programmi non richiede molto tempo.

78 Click to edit Master title styleAlgoritmi Un algoritmo e’ una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione puo’ essere risolto in modi diversi, ai cui corrispondono diversi algoritmi Un programma non e’ altro che la descrizione di un algoritmo scritta nel linguaggio di programmazione scelto.

79 Click to edit Master title styleFlow charts (diagrammi di flusso) Notazione grafica usata per descrivere in modo intuitivo le azioni di cui e’ fatto un algoritmo. Viene usata per descrivere i passi salienti di un algoritmo, senza doversi preoccupare dei dettagli sintattici del programma corrispondente Una volta che l’algoritmo e’ stato descritto con un diagramma di flusso, deve però essere trasformato nel programma corrispondente. Ogni azione e’ rappresentata da un blocco

80 Click to edit Master title styleInizio e fine algoritmo START STOP

81 Click to edit Master title styleAzioni elementari PIPPO = PIPPO + 1 PLUTO = 0

82 Click to edit Master title styleCondizioni Diagramma 1 Diagramma 2 condizione F T

83 Click to edit Master title styleRipetizione Diagramma 1 condizione T F

84 Click to edit Master title styleInput/Output Input/output

85 Click to edit Master title styleIl concetto di variabile Per eseguire una qualsiasi computazione, abbiamo bisogno di poter immagazzinare i risultati temporanei e finali della computazione stessa. Ogni linguaggio ad alto livello mette a disposizione le variabili: “contenitori” in cui immagazzinare i dati della computazione Concettualmente, le variabili sono come pezzi di carta su cui si possono annotare/modificare i valori di un calcolo che si sta facendo

86 Click to edit Master title styleVariabili Per eseguire una qualsiasi computazione, abbiamo bisogno di poter immagazzinare i risultati temporanei e finali della computazione stessa. Ogni linguaggio ad alto livello mette a disposizione le variabili: “contenitori” in cui immagazzinare i dati della computazione Concettualmente, le variabili sono come pezzi di carta su cui si possono annotare/modificare i valori di un calcolo che si sta facendo

87 Click to edit Master title styleVariabili Ogni variabile ha un nome mnemonico, che si usa nel programma per riferirsi alla var. stessa. Una variabile contiene un valore che puo’ essere modificato a piacimento Durante l’esecuzione di un programma, il sistema operativo mantiene una associazione tra il nome di ogni var. e l’indirizzo della cella di memoria in cui e’ memorizzato il suo valore Quindi una variabile e’ semplicemente una astrazione della cella di memoria fisica.

88 Click to edit Master title styleVariabili Quando si scrive un programma e’ necessario dichiarare quali variabili vogliamo usare. Le variabili possono essere di tipo diverso, per indicare che le usiamo per memorizzare dati di tipo diverso: –Variabile LETTERA, tipo: carattere; –Variabile SOMMA, tipo: intero;

89 Click to edit Master title styleVariabili Le variabili sono lo strumento fondamentale per assicurare la flessibilita’ dei programmi. Lo stesso programma, eseguito con variabili di valore diverso da risultati diversi. Lo stesso programma si adatta cioe’ alle esigenze del momento, senza dover essere riscritto


Scaricare ppt "Click to edit Master title styleAlgoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito,"

Presentazioni simili


Annunci Google