Laboratorio di Informatica
|
|
- Regina Danieli
- 7 anni fa
- Visualizzazioni
Transcript
1 Laboratorio di Informatica Dr. Marco Fondi Lezione # 6 Efficienza degli algoritmi. Il linguaggio di programmazione Perl Corso di Laurea in Scienze Biologiche, AA
2 Programma del corso 1. Introduzione al corso. Informatica ed algoritmi (cenni). Breve storia dell Informatica. Scopi e campi applicativi dell informatica (Biologia > la Bioinformatica). 2. Rappresentazione dell informazione. La codifica dell informazione nel calcolatore 3. Hardware. Architettura fisica di un computer 4. Software. Software di Base (sistemi operativi) Gli algoritmi. Principali Pseudocodice tipi di e Algoritmi. principali linguaggi Principai di algoritmi programmazione utilizzati in Principali Biologia tipi di (introduzione) Algoritmi Algoritmi Efficienza per degli l allineamento algoritmi. Il linguaggio di sequenze di programmazione biologiche Perl 7. Perl scripting. Algoritmi di importanza biologica 8. Algoritmi per la ricerca in banca-dati 8.. Il pacchetto Microsoft Office. Il foglio di lavoro Excel 9. Algoritmi per la costruzione di alberi filogenetici
3 Programma del corso 1. Introduzione al corso. Informatica ed algoritmi (cenni). Breve storia dell Informatica. Scopi e campi applicativi dell informatica (Biologia > la Bioinformatica). 2. Rappresentazione dell informazione. La codifica dell informazione nel calcolatore 3. Hardware. Architettura fisica di un computer 4. Software. Software di Base (sistemi operativi) Gli algoritmi. Principali Pseudocodice tipi di e Algoritmi. principali linguaggi Principai di algoritmi programmazione utilizzati in Principali Biologia tipi di (introduzione) Algoritmi Algoritmi Efficienza per degli l allineamento algoritmi. Il linguaggio di sequenze di programmazione biologiche Perl 7. Perl scripting. Algoritmi di importanza biologica 8. Algoritmi per la ricerca in banca-dati 8.. Il pacchetto Microsoft Office. Il foglio di lavoro Excel 9. Algoritmi per la costruzione di alberi filogenetici
4 Lezione # 6 1. efficienza degli algoritmi (analisi degli algoritmi) 2. ordini di grandezza degli algoritmi 3. Perl, da pseudocodice a programma
5 Trovare un algoritmo per risolvere un problema è una parte fondamentale dell informatica
6 Trovare un algoritmo per risolvere un problema è una parte fondamentale dell informatica Attributi degli algoritmi 1- correttezza La prima caratteristica fondamentale degli algoritmi è la correttezza. Il risultato di un algoritmo deve essere la soluzione corretta di unproblema L algoritmo deve fornire i risultati corretti per tutti i casi possibili se non conosciamo tutti i casi possibili (probabile, altrimenti non ci saremmo messi a scrivere un algoritmo), dobbiamo creare dei modelli (confronti) che funzionino da test per l algoritmo
7
8 2- Facilità di comprensione (chiarezza) Gli algoritmi degli informatici non hanno solo un interesse teorico, devono essere usati! a. manutenzione b. ripetibilità dell analisi, della ricerca
9 2- Facilità di comprensione (chiarezza) Gli algoritmi degli informatici non hanno solo un interesse teorico, devono essere usati! a. manutenzione b. ripetibilità dell analisi, della ricerca 3- Efficienza Uso attento delle risorse del computer I computer aumentano costantemente le loro capacità ma i problemi diventano sempre più complessi da risolvere. Un algoritmo scritto male (anche se corretto) impiegherà sempre più tempo del dovuto, anche su un super-computer!
10 4- Eleganza fornire una soluzione elegante dà soddisfazione! anche se (spesso) una soluzione elegante non è facile da capire
11 4- Eleganza fornire una soluzione elegante dà soddisfazione! anche se (spesso) una soluzione elegante non è facile da capire Efficienza in termini di spazio e tempo degli algoritmi L efficienza rispetto allo spazio si può misurare in base alla quantità di informazioni che l algoritmo deve registrare in memoria per realizzare il proprio compito (oltre ai dati che deve utilizzare). Se utilizza poche locazioni di memoria in più rispetto ai dati di ingresso allora possiamo dire che è un algoritmo efficiente
12 Efficienza in termini di spazio e tempo degli algoritmi L efficienza in termini di tempo è più difficile da valutare. Consideriamo l algoritmo di ricerca sequenziale di NOME all interno di un elenco telefonico: 1. su quale computer eseguiamo la ricerca? 2. di quale città è l elenco? 3. dove è posizionato il nome che vogliamo cercare all interno dell elenco? Il tempo di esecuzione tende a riflettere maggiormente la velocità della macchina o le variazioni dei dati di ingresso
13 Valutando il tempo di esecuzione di un algoritmo si ottengono indicazioni utili
14 Valutando il tempo di esecuzione di un algoritmo si ottengono indicazioni utili Ad esempio si può valutare l efficienza di due macchine diverse, eseguendo su di esse lo stesso algoritmo con gli stessi dati di ingresso BENCHMARKING
15 Misurare l efficienza di un algoritmo analisi degli algoritmi (es. ricerca sequenziale dentro elenco di nomi) 1. ottieni i valori per NOME, N1, N2... N imposta il valore i a 1 e il valore di TROVATO a no 3. Finchè (TROVATO = no) e (i<=n) ripeti da 4 a 7 4. se NOME= Ni 5. stampa il numero Ti 6. TROVATO=sì 7. altrimenti 8. somma 1 ad i 9. se (TROVATO = no) allora 10. stampa il numero non è stato trovato 11. STOP
16 Misurare l efficienza di un algoritmo analisi degli algoritmi (es. ricerca sequenziale dentro elenco di nomi) 1. ottieni i valori per NOME, N1, N2... N imposta il valore i a 1 e il valore di TROVATO a no 3. Finchè (TROVATO = no) e (i<=n) ripeti da 4 a 7 4. se NOME= Ni 5. stampa il numero Ti 6. TROVATO=sì 7. altrimenti 8. somma 1 ad i 9. se (TROVATO = no) allora 10. stampa il numero non è stato trovato 11. STOP
17 Misurare l efficienza di un algoritmo analisi degli algoritmi (es. ricerca sequenziale dentro elenco di nomi) 1. ottieni i valori per NOME, N1, N2... N imposta il valore i a 1 e il valore di TROVATO a no 3. Finchè (TROVATO = no) e (i<=n) ripeti da 4 a 7 4. se NOME= Ni 5. stampa il numero Ti 6. TROVATO=sì 7. altrimenti 8. somma 1 ad i 9. se (TROVATO = no) allora 10. stampa il numero non è stato trovato 11. STOP
18 Quanto lavoro per l algoritmo di ricerca sequenziale? caso migliore caso peggiore
19 Quanto lavoro per l algoritmo di ricerca sequenziale? caso migliore caso peggiore il nome da cercare è all inizio dell elenco
20 Quanto lavoro per l algoritmo di ricerca sequenziale? caso migliore il nome da cercare è all inizio dell elenco caso peggiore il nome da cercare è alla fine dell elenco
21 Quanto lavoro per l algoritmo di ricerca sequenziale? caso migliore il nome da cercare è all inizio dell elenco caso peggiore il nome da cercare è alla fine dell elenco In generale, se effettuiamo tanti confronti, in media il numero di ricerche da effettuare sarà n/2. I casi in cui il nome da cercare si localizza nella prima metà dell elenco (casi favorevoli) si bilancerà con quelli in cui il nome si trova nella seconda metà dell elenco
22 Esempio: ricerca di un numero di telefono all interno dell elenco di New York ( di numeri) su un computer capace di effettuare confronti al secondo
23 Esempio: ricerca di un numero di telefono all interno dell elenco di New York ( di numeri) su un computer capace di effettuare confronti al secondo confronti x 1 sec/confronto = 100 secondi
24 Esempio: ricerca di un numero di telefono all interno dell elenco di New York ( di numeri) su un computer capace di effettuare confronti al secondo confronti x 1 sec/confronto = 100 secondi minuto e 40 secondi + il tempo per scorrere nell elenco = circa 4 minuti! La ricerca sequenziale non è abbastanza efficiente (in termini di tempo), per valori di n molto grandi
25 E in termini di spazio? L algoritmo memorizza l elenco dei nomi e il NOME da cercare tra i dati di ingresso. La sola memoria di aggiuntiva richiesta è quella per registrare il valore indice i e l indicatore Trovato.
26 E in termini di spazio? L algoritmo memorizza l elenco dei nomi e il NOME da cercare tra i dati di ingresso. La sola memoria di aggiuntiva richiesta è quella per registrare il valore indice i e l indicatore Trovato. Efficiente in termini di spazio!
27 Ordine di grandezza degli algoritmi Il caso peggiore della ricerca sequenziale prevede n confronti. Se indichiamo il lavoro sussidiario con c, allora il lavoro totale richiesto è cn
28 Ordine di grandezza degli algoritmi Il caso peggiore della ricerca sequenziale prevede n confronti. Se indichiamo il lavoro sussidiario con c, allora il lavoro totale richiesto è cn lavoro, cn 4 c=2 c=1 tutti grafici lineari 3 c=1/2 2 1 n
29 Ordine di grandezza degli algoritmi Il caso peggiore della ricerca sequenziale prevede n confronti. Se indichiamo il lavoro sussidiario con c, allora il lavoro totale richiesto è cn lavoro, cn 4 c=2 c=1 tutti grafici lineari 3 c=1/2 2 1 ordine di n grandezza n
30 Ordinamento per selezione Ordinare un elenco di elementi (alfabetico, numerico) 5, 7, 2, 8, 3 parte non ordinata parte ordinata
31 Ordinamento per selezione Ordinare un elenco di elementi (alfabetico, numerico) 5, 7, 2, 8, 3 parte non ordinata parte ordinata Pseudocodice: 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
32 5, 7, 2, 8, 3 2 parte non ordinata parte ordinata 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
33 5, 7, 2, 8, 3 2 parte non ordinata parte ordinata * 5, 7, 2, 8, 3 4 parte non ordinata parte ordinata * 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
34 5, 7, 2, 8, 3 2 parte non ordinata parte ordinata * 5, 7, 2, 8, 3 4 parte non ordinata parte ordinata ** 5, 7, 2, 8, 3 5 parte non ordinata parte ordinata * ** 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
35 5, 7, 2, parte non ordinata parte ordinata 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
36 5, 7, 2, parte non ordinata parte ordinata * 5, 7, 2, parte non ordinata parte ordinata * 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
37 5, 7, 2, parte non ordinata parte ordinata * 5, 7, 2, parte non ordinata parte ordinata ** 5, 7, 2, parte non ordinata parte ordinata * ** 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
38 5, 3, 2 7, 8 6 parte non ordinata parte ordinata 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
39 5, 3, 2 7, 8 6 parte non ordinata parte ordinata... 2, 3, 5, 7, 8 parte non ordinata parte ordinata 1. Ottieni i valori dell elenco 2. Imposta il marcatore per la selezione non ordinata al termine dell elenco 3. Finchè la selezione non ordinata dell elenco non è vuota, ripeti i passi da 4 a 6 4. Seleziona il numero massimo nella selezione non ordinata dell elenco 5. Scambia questo numero con l ultimo nella selezione non ordinata dell elenco 6. Sposta a sinistra di una posizione il marcatore per la selezione non ordinata 7. STOP
40 Esiste un caso migliore ed un caso peggiore?
41 Esiste un caso migliore ed un caso peggiore? NO, questo algoritmo esegue la stessa quantità di lavoro, indipendentemente dalla disposizione iniziale degli elementi
42 Esiste un caso migliore ed un caso peggiore? NO, questo algoritmo esegue la stessa quantità di lavoro, indipendentemente dalla disposizione iniziale degli elementi Vengono effettuati n scambi, uno per ogni posizione nell elenco, per posizionare il valore corretto nella rispettiva posizione (n-1) + (n-2) + (n-3) (n-1) x n =(1/2)n 2 - (1/2)n 2
43 Esiste un caso migliore ed un caso peggiore? NO, questo algoritmo esegue la stessa quantità di lavoro, indipendentemente dalla disposizione iniziale degli elementi Vengono effettuati n scambi, uno per ogni posizione nell elenco, per posizionare il valore corretto nella rispettiva posizione (n-1) + (n-2) + (n-3) (n-1) x n =(1/2)n 2 - (1/2)n 2 se l elenco diventa più lungo di 10 volte, il lavoro aumenta di un fattore vicino a 10 2
44 Ordine di grandezza degli algoritmi il numero di confronti svolti dall algoritmo non cresce linearmente con le dimensioni del problema n, ma cresce con il quadrato della stessa. Un algoritmo che svolge un lavoro cn 2 per qualsiasi costante c, si dice di ordine di grandezza n 2
45 Ordine di grandezza degli algoritmi il numero di confronti svolti dall algoritmo non cresce linearmente con le dimensioni del problema n, ma cresce con il quadrato della stessa. Un algoritmo che svolge un lavoro cn 2 per qualsiasi costante c, si dice di ordine di grandezza n 2 lavoro, cn 4 c=2 c=1 c=1/ n
46 Ordine di grandezza degli algoritmi il numero di confronti svolti dall algoritmo non cresce linearmente con le dimensioni del problema n, ma cresce con il quadrato della stessa. Un algoritmo che svolge un lavoro cn 2 per qualsiasi costante c, si dice di ordine di grandezza n 2 lavoro, cn 4 c=2 c=1 c=1/ ordine di n grandezza n 2
47 confronto fra n ed n 2 lavoro 4 n 2 n n numero di unità di lavoro richieste n n 2 100n E+11
48 Per n sufficientemente grandi l algoritmo con ordine di grandezza n 2 lavora di più e richiede più tempo per l esecuzione, indipendentemente dai fattori costanti richiesti per il lavoro sussidiario
49 Per n sufficientemente grandi l algoritmo con ordine di grandezza n 2 lavora di più e richiede più tempo per l esecuzione, indipendentemente dai fattori costanti richiesti per il lavoro sussidiario lavoro 4 n 2 n n
50 Tuttavia, per n piccoli, la dimensione del lavoro sussidiario (c) potrebbe essere significativa
51 Tuttavia, per n piccoli, la dimensione del lavoro sussidiario (c) potrebbe essere significativa confrontiamo un algoritmo 0.25n 2 con un algoritmo 10n lavoro sussidiario
52 Tuttavia, per n piccoli, la dimensione del lavoro sussidiario (c) potrebbe essere significativa confrontiamo un algoritmo 0.25n 2 con un algoritmo 10n 0.25n 2 10n lavoro sussidiario lavoro n
53 ordine di grandezza n 2 ordine di grandezza n lavoro 4 n 2 n n
54 Algoritmo di ricerca binaria L algoritmo di ricerca sequenziale che cerca elementi all interno di un elenco di nomi ha ordine di grandezza n
55 Algoritmo di ricerca binaria L algoritmo di ricerca sequenziale che cerca elementi all interno di un elenco di nomi ha ordine di grandezza n L algoritmo di ricerca binaria è più efficiente ma funziona solo quando l elenco è ordinato Es. Se dobbiamo cercare il nome Rossi all interno di un elenco telefonico, sfruttiamo il fatto che i nomi sono ordinati alfabeticamente. Se apriamo l elenco alla lettera L sappiamo che il nome sarà più sotto, se apriamo l elenco alla lettera V sappiamo che il nome sarà più in alto nell elenco
56 L algoritmo di ricerca binaria procede allo stesso modo. Se NOME precede il nome che si trova a metà dell elenco allora la ricerca viene ristretta alla prima metà dell elenco e la procedura viene poi ripetuta su questo elenco più piccolo. L algoritmo si ferma quando il nome è stato trovato o quando non ci sono più elementi da confrontare.
57 In pseudocodice... variabili in rosso 1. ottieni i valori per NOME, N1, N2... N imposta il valore inizio a 1 e il valore di TROVATO a no 3. Imposta il valore di fine ad n 4. Finchè (TROVATO = no) e (inizio <=n) ripeti da 5 a Imposta il valore di m al valore centrale fra inizio e fine 6. Se NOME è uguale a Nm (valore centrale fra inizio e fine) esegui i passi 7 e 8 7. Stampa il numero della persona trovata, Tm 8. Imposta il valore TROVATO a sì 9. Altrimenti (se NOME precede Nm) allora imposta fine = m Altrimenti (se NOME segue Nm) allora imposta inizio = m Se (TROVATO = no ) allora stampa il messaggio Numero non trovato 12. STOP
58 Cerchiamo Claudio in questo elenco Anna Bruno Claudio Dino Giuseppe Nicola Sandra
59 Cerchiamo Claudio in questo elenco Anna Bruno Claudio Dino Giuseppe Nicola Sandra Anna Bruno Claudio Dino Giuseppe Nicola Sandra
60 Cerchiamo Claudio in questo elenco Anna Bruno Claudio Dino Giuseppe Nicola Sandra Anna Bruno Claudio Dino Giuseppe Nicola Sandra Claudio precede Dino e quindi scartiamo tutto ciò che sta dopo Dino
61 Cerchiamo Claudio in questo elenco Anna Bruno Claudio Dino Giuseppe Nicola Sandra Anna Bruno Claudio Dino Giuseppe Nicola Sandra Claudio precede Dino e quindi scartiamo tutto ciò che sta dopo Dino Anna Bruno Claudio 1 2 3
62 Cerchiamo Claudio in questo elenco Anna Bruno Claudio Dino Giuseppe Nicola Sandra Anna Bruno Claudio Dino Giuseppe Nicola Sandra Claudio precede Dino e quindi scartiamo tutto ciò che sta dopo Dino Claudio segue Bruno e quindi scartiamo tutto ciò che sta prima di Bruno Anna Bruno Claudio 1 2 3
63 Cerchiamo Claudio in questo elenco Anna Bruno Claudio Dino Giuseppe Nicola Sandra Anna Bruno Claudio Dino Giuseppe Nicola Sandra Claudio precede Dino e quindi scartiamo tutto ciò che sta dopo Dino Claudio segue Bruno e quindi scartiamo tutto ciò che sta prima di Bruno Anna Bruno Claudio TROVATO = sì Stampa il numero Tn
64 nome prima di nome 4 nome dopo nome
65 nome prima di nome 4 nome dopo nome nome prima nome 2 nome dopo nome 2 1 3
66 nome prima di nome 4 nome dopo nome nome prima nome 2 nome dopo nome 2 nome prima di nome 6 nome dopo nome
67 Analisi dell algoritmo di ricerca binaria caso migliore N=? caso peggiore N=?
68 Analisi dell algoritmo di ricerca binaria caso migliore N=? N=1 caso peggiore N=?
69 Analisi dell algoritmo di ricerca binaria caso migliore N=? N=1 caso peggiore N=? Il massimo numero di volte per cui un numero n può essere diviso a metà senza scendere sotto 1
70 Analisi dell algoritmo di ricerca binaria caso migliore N=? N=1 caso peggiore N=? Il massimo numero di volte per cui un numero n può essere diviso a metà senza scendere sotto 1 log2 n lavoro 4 l algoritmo di ricerca binaria ha ordine di grandezza logn log n n
71 ordine di grandezza n 2 ordine di grandezza n ordine di grandezza log n lavoro 4 n 2 n 3 log n 2 1 n
72 Esempio: ricerca di un numero di telefono all interno dell elenco di numeri) su un computer capace di effettuare 1000 confronti al secondo (caso peggiore)
73 Esempio: ricerca di un numero di telefono all interno dell elenco di numeri) su un computer capace di effettuare 1000 confronti al secondo (caso peggiore) ricerca sequenziale confronti x sec/confronto = 100 secondi 1000
74 Esempio: ricerca di un numero di telefono all interno dell elenco di numeri) su un computer capace di effettuare 1000 confronti al secondo (caso peggiore) ricerca sequenziale confronti x sec/confronto = 100 secondi 1000 ricerca binaria 17 1 confronti x sec/confronto = secondi = , log 2 17 =17
75 Esempio: ricerca di un numero di telefono all interno dell elenco di numeri (New York) su un computer capace di effettuare 1000 confronti al secondo (caso medio)
76 Esempio: ricerca di un numero di telefono all interno dell elenco di numeri (New York) su un computer capace di effettuare 1000 confronti al secondo (caso medio) ricerca sequenziale (in media) confronti x sec/confronto = secondi > 2 ore!
77 Esempio: ricerca di un numero di telefono all interno dell elenco di numeri (New York) su un computer capace di effettuare 1000 confronti al secondo (caso medio) ricerca sequenziale (in media) confronti x sec/confronto = secondi > 2 ore! ricerca binaria 25 1 confronti x sec/confronto = secondi =~
78 Ecco perchè è importante scegliere BENE l algoritmo da usare!
79 Ecco perchè è importante scegliere BENE l algoritmo da usare! L algoritmo binario lavora su un elenco ordinato.? Ordinare un elenco richiede molto tempo
80 Ecco perchè è importante scegliere BENE l algoritmo da usare! L algoritmo binario lavora su un elenco ordinato.? Ordinare un elenco richiede molto tempo E importante valutare anche quante volte (quanto è utile) verrà utilizzato un algoritmo (o un programma)!
81 Per alcuni problemi non esistono algoritmi del tipo di quelli visti in precedenza (limitati polinomialmente). Sono problemi definiti intrattabili e richiedono così tanto lavoro da essere virtualmente inutilizzabili.
82 Per alcuni problemi non esistono algoritmi del tipo di quelli visti in precedenza (limitati polinomialmente). Sono problemi definiti intrattabili e richiedono così tanto lavoro da essere virtualmente inutilizzabili. Questi problemi vengono spesso affrontati attraverso algoritmi di approssimazione (usati frequentemente in biologia!)
83 Riassumendo 1/2... Il software di sistema è un insieme di programmi che gestisce le risorse di un computer e che ne facilita l utilizzo unità di memoria ALU I/O unità di controllo bus segnale F/S R0 R1 interfaccia A software di sistema interfaccia B MAR circuiti decodifica memoria MDR controllore lettura/ scrittura R2... R15 ALU GT EQ LT linee di selezione Controllor e I/O dispositivo I/O PC +1 IR Circuito decodifica istruzioni segnali di controllo utente RAM registro codici condizionali hardware
84 Riassumendo 1/2... Il software di sistema è un insieme di programmi che gestisce le risorse di un computer e che ne facilita l utilizzo unità di memoria ALU I/O unità di controllo bus segnale F/S R0 R1 interfaccia A software di sistema interfaccia B MAR circuiti decodifica memoria MDR controllore lettura/ scrittura R2... R15 ALU GT EQ LT linee di selezione Controllor e I/O dispositivo I/O PC +1 IR Circuito decodifica istruzioni segnali di controllo utente RAM registro codici condizionali hardware macchina virtuale
85 Riassumendo 2/2... Problema Algoritmo Programma Soluzione
86 Riassumendo 2/2... Problema Algoritmo Programma Soluzione Pseudocodice
87 macchina virtuale unità di memoria ALU I/O unità di controllo bus segnale F/S R0 R1 software di sistema interfaccia B MAR circuiti decodifica memoria MDR controllore lettura/ scrittura R2... R15 ALU GT EQ LT linee di selezione Controllor e I/O dispositivo I/O PC +1 IR Circuito decodifica istruzioni segnali di controllo utente RAM registro codici condizionali hardware Problema Algoritmo Programma Soluzione Pseudocodice
88 macchina virtuale unità di memoria ALU I/O unità di controllo bus segnale F/S R0 R1 software di sistema interfaccia B MAR circuiti decodifica memoria MDR controllore lettura/ scrittura R2... R15 ALU GT EQ LT linee di selezione Controllor e I/O dispositivo I/O PC +1 IR Circuito decodifica istruzioni segnali di controllo utente RAM registro codici condizionali hardware Problema Algoritmo Programma Soluzione Pseudocodice
89 Linguaggio macchina Linguaggio assemblativo Linguaggio di programmazione pseudocodice Italiano, inglese Linguaggi a basso livello Linguaggio di alto Livello Linguaggi naturali
90 A causa di questa "vicinanza" all'hardware, non esiste un unico linguaggio assembly. Al contrario, ogni CPU o famiglia di CPU ha un suo proprio assembly, diverso dagli altri. Ad esempio, sono linguaggi assembly ben diversi quelli per i processori Intel x86, per i Motorola e per i Dec Alpha. Questo significa che conoscere un certo linguaggio assembly significa saper scrivere programmi solo su una determinata CPU o famiglia di CPU.
91 A causa di questa "vicinanza" all'hardware, non esiste un unico linguaggio assembly. Al contrario, ogni CPU o famiglia di CPU ha un suo proprio assembly, diverso dagli altri. Ad esempio, sono linguaggi assembly ben diversi quelli per i processori Intel x86, per i Motorola e per i Dec Alpha. Questo significa che conoscere un certo linguaggio assembly significa saper scrivere programmi solo su una determinata CPU o famiglia di CPU. Linguaggio macchina Linguaggio assemblativo Linguaggio di programmazione pseudocodice Italiano, inglese Linguaggi a basso livello Linguaggio di alto Livello Linguaggi naturali
92 programma sorgente programma oggetto Programma in linguaggio di alto livello compilatore * Programma in linguaggio macchina loader * Il suo lavoro può essere suddiviso in 4 fasi Fase 1: analisi lessicale Fase II: analisi sintattica Fase III: analisi semantica e generazione del codice Fase IV: ottimizzazione del codice Programma in linguaggio macchina caricato in memoria hardware OUTPUT
93 Linguaggi di programmazione
94 Cosa vuol dire PERL Practical Extraction and Reporting Language - Perl è il linguaggio - perl è il compilatore - Non PERL 46
95 Introduzione a PERL (Larry Wall, 1987) Nato per assistere l utente Unix per le comuni operazioni, troppo pesanti, troppo dipendenti dalla shell ma troppo complesse da codificare in C... Compattezza (sinteticità) e potenza Finalizzato principalmente per elaborare stringhe e file di testo (es. un genoma!) Correntemente molto usato per operazioni di amministrazione di sistema e per CGI/HTTP Linguaggio Interpretato Riferimenti classici: - Programming Perl, L.Wall. R.L.Schwartz - Learning Perl, R.L.Schwartz
96 Istruzioni di base Come si presenta uno script PERL (primo.pl) #!/user/bin/perl #esempio iniziale print scrivi una stringa terminata da return ; $nome=<stdin>; print ciao $nome\n ; Esplicitamente: prompt> perl primo.pl Simboli: {} rappresenta un blocco di istruzioni # commenti $ precede nomi variabili e elementi scalari di array precede nomi di array normali o di raggruppamenti di elementi di array % precede i nomi di array associativi & precede i nomi delle funzioni <STDIN>, <STDOUT> descrittori di standard input, output
97 Istruzioni di base Come si presenta uno script PERL (primo.pl) #!/user/bin/perl #esempio iniziale print scrivi una stringa terminata da return ; $nome=<stdin>; print ciao $nome\n ; Esplicitamente: prompt> perl primo.pl Simboli: {} rappresenta un blocco di istruzioni # commenti $ precede nomi variabili e elementi scalari di array precede nomi di array normali o di raggruppamenti di elementi di array % precede i nomi di array associativi & precede i nomi delle funzioni <STDIN>, <STDOUT> descrittori di standard input, output
98 Variabili scalari Un posto dove noi mettiamo dei dati (numeri, parole (stringhe) etc.) Il valore di una variabile nomevar e sempre identificato con $nomevar Case sensitive ($nomevar $NOMEVAR $NomeVar) Autoincremento, autodecremento: ++$nomevar oppure $nomevar++
99 Array Un posto dove noi mettiamo dei dati (numeri, parole (stringhe) etc.) Il valore di una variabile array e sempre identificato Case @nomi mario giorgio andrea pippo pluto luca ciao
100 @nomi mario giorgio andrea pippo pluto luca ciao ATTENZIONE!!! elementi array = 7 massimo indice = 6 52
101 @nomi mario giorgio andrea pippo pluto luca ciao ATTENZIONE!!! elementi array = 7 massimo indice = 6 52
102 Funzioni primitive degli algoritmi calcolo imposta il valore di una variabile ingresso/uscita ottieni il valore di variabile stampa il valore di variabile stampa il messaggio messaggio condizionali if/then/else iterazione ciclo while ciclo for Si tratta delle istruzioni che si presuppone che l agente di calcolo sappia interpretare e che quindi non dobbiamo spiegare. Sono i mattoni per costruire algoritmi anche molto complessi
103 Funzioni primitive degli algoritmi calcolo imposta il valore di una variabile Operatori ingresso/uscita ottieni il valore di variabile stampa il valore di variabile stampa il messaggio messaggio condizionali if/then/else iterazione ciclo while ciclo for Si tratta delle istruzioni che si presuppone che l agente di calcolo sappia interpretare e che quindi non dobbiamo spiegare. Sono i mattoni per costruire algoritmi anche molto complessi
104 Operatori Operatori aritmetici : + - * / ** % post/pre-decremento, incremento Operatori logici : AND (&&) Se il primo e falso, non valuta il secondo Es. $a>10&&print $a maggiore di 10 OR ( ) Se il primo è vero non valuta il secondo. Es. $a>10 print $a minore di 10 NOT (!) Inverte il risultato logico di confronto tra numeri: < <= > >= ==!= di confronto tra stringhe: lt le gt ge eq ne NB : il confronto tra stringhe e diverso dal confronto tra numeri
105 Funzioni primitive degli algoritmi calcolo imposta il valore di una variabile ingresso/uscita ottieni il valore di variabile stampa il valore di variabile stampa il messaggio messaggio print condizionali if/then/else iterazione ciclo while ciclo for Si tratta delle istruzioni che si presuppone che l agente di calcolo sappia interpretare e che quindi non dobbiamo spiegare. Sono i mattoni per costruire algoritmi anche molto complessi
106 Funzioni primitive degli algoritmi calcolo imposta il valore di una variabile ingresso/uscita ottieni il valore di variabile stampa il valore di variabile stampa il messaggio messaggio condizionali if/then/else Struttura condizionata iterazione ciclo while ciclo for Si tratta delle istruzioni che si presuppone che l agente di calcolo sappia interpretare e che quindi non dobbiamo spiegare. Sono i mattoni per costruire algoritmi anche molto complessi
107 Struttura condizionata Struttura if/else if (condizione) { } else { } primo blocco di istruzioni ; secondo blocco di istruzioni ;
108 Funzioni primitive degli algoritmi calcolo imposta il valore di una variabile ingresso/uscita ottieni il valore di variabile stampa il valore di variabile stampa il messaggio messaggio condizionali if/then/else iterazione ciclo while ciclo for cicli while, until e for Si tratta delle istruzioni che si presuppone che l agente di calcolo sappia interpretare e che quindi non dobbiamo spiegare. Sono i mattoni per costruire algoritmi anche molto complessi
109 Strutture while/until Sintassi while (espressione){ istruzioni ; } until (espressione){ istruzioni ; }
110 Il ciclo for for (condizione iniziale; condizione finale; incremento) { } istruzioni; esempio for ($i=0; $i<100; $i++) { print $i; }
111 1 imposta il valore di conteggio = 0 2 finchè (conteggio <= 100) ripeti passi da 3 a 4 3 conteggio = conteggio +1 4 print conteggio 5 print CONTEGGIO FINITO In Perl: #!/usr/bin/perl $conteggio=0; while ($conteggio<100){ $conteggio++; print "$conteggio\n"; }
112 1 imposta il valore di conteggio = 0 2 finchè (conteggio <= 100) ripeti passi da 3 a 4 3 conteggio = conteggio +1 4 print conteggio 5 print CONTEGGIO FINITO In Perl: #!/usr/bin/perl $conteggio=0; while ($conteggio<100){ $conteggio++; print "$conteggio\n"; } istruzione che dice al computer dove è il compilatore perl scrive anche un a capo
113 Ricerca di un nome all interno di un elenco di nomi (pseudocodice)
114 Ricerca di un nome all interno di un elenco di nomi (pseudocodice) 1. ottieni i valori per NOME, N1, N2... N imposta il valore i a 1 e il valore di TROVATO a no 3. Finchè (TROVATO = no) ripeti da 4 a 7 4. se NOME= Ni 5. stampa il nome Ni 6. TROVATO=sì 7. altrimenti 8. somma 1 ad i 9. STOP
115 @nomi mario giorgio andrea pippo pluto luca ciao
116 In Perl = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";}
117 In Perl = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; dichiarazione variabili if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";}
118 In Perl #!/usr/bin/perl dichiarazione = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; azzeramento contatore while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";}
119 In Perl #!/usr/bin/perl dichiarazione = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; azzeramento contatore ciclo while while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";}
120 In Perl #!/usr/bin/perl dichiarazione = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; azzeramento contatore ciclo while while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; condizionale if/then/else if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";}
121 In Perl #!/usr/bin/perl dichiarazione = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; azzeramento contatore ciclo while while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; condizionale if/then/else if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";} condizionale if/then/else
122 In Perl #!/usr/bin/perl dove sta perl? dichiarazione = ("mario","giorgio","andrea", "pippo", "pluto", "luca", "ciao"); $NOME="pippo"; $trovato="no"; $i=0; azzeramento contatore ciclo while while ($trovato eq "no"){ } if ($NOME eq $nomi[$i]){ print "\n\nil nome $NOME è stato trovato alla posizione $i\n\n\n"; $trovato="sì"} else {$i++}; condizionale if/then/else if ($trovato eq "no"){ print "\n --- spiacente, il nome non è stato trovato ---\n\n";} condizionale if/then/else
Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo
1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliIl linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
DettagliIndice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX
Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di
DettagliIl calcolatore. Architettura di un calcolatore (Hardware)
Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti
DettagliIl Processore. Informatica di Base -- R.Gaeta 27
Il Processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale
DettagliSviluppo 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
DettagliIl processore. Istituzionii di Informatica -- Rossano Gaeta
Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale
DettagliAppunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
DettagliInformatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
DettagliCos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
DettagliSviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:
Sviluppo di programmi Per scrivere un programma C corretto bisogna: E ora, finalmente Si comincia! DD Cap. pp.4974 Analizzare il problema (input, output, casi estremali) 2. Progettare una soluzione (algoritmo)
DettagliCosa è l Informatica?
Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore
DettagliPROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA
PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA 1. Competenze: le specifiche competenze di base disciplinari previste dalla
DettagliCorso 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
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
DettagliProgrammazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliLez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
DettagliProgrammazione modulare
Programmazione modulare 2016 2017 Indirizzo: 1 BIENNIO Informatica e Telecomunicazioni Disciplina: SCIENZE E TECNOLOGIE APPLICATE Classi: 2 C - 2 D - 2 F Ore settimanali: 3 ore Prerequisiti per l'accesso
DettagliPROBLEMI ALGORITMI E PROGRAMMAZIONE
PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL
DettagliDall algoritmo al programma
Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione
DettagliCome 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
DettagliConcetti Introduttivi. Il Computer
Concetti Introduttivi Il Computer Introduzione Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere Messaggio Tutto ciò che porta
DettagliLaurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1
Corso di INFORMATICA Laurea triennale - Comunicazione&DAMS Dr. Marco Manna 1 1 Dipartimento di Matematica Università della Calabria Corso di laurea intercalsse in COMUNICAZIONE&DAMS http://elleboro.unical.it/drupalab/informatica2009/
DettagliProgramma svolto di INFORMATICA. Classe 3 - indirizzo MERCURIO A.S. 2009/2010
ISTITUTO TECNICO COMMERCIALE N. DELL ANDRO - Santeramo in Colle (BA) Programma svolto di INFORMATICA Classe 3 - indirizzo MERCURIO A.S. 2009/2010 Proff. Rosalia Barbara Schiavarelli, Antonio Antonicelli
DettagliIntroduzione 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
DettagliTeoria dell Informazione
Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro
DettagliInformatica e Bioinformatica: Algoritmi
Informatica e Bioinformatica: Algoritmi 20 Marzo 2014 Programmi Applicativi Programmi Applicativi Sistema Operativo (lezione 3) Macchina Hardware (lezione 1 e 2) La macchina hardware permette l esecuzione
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliNell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:
Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi
DettagliIntroduzione al Linguaggio C Corso di Informatica Laurea in Fisica
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2009-10 Dai flow-chart ai linguaggi... Abbiamo imparato ad usare uno strumento formale i flowchart per
DettagliProgramma svolto di INFORMATICA. Classe 3M - indirizzo MERCURIO A.S. 2010/2011
ISTITUTO TECNICO COMMERCIALE N. DELL ANDRO - Santeramo in Colle (BA) Programma svolto di INFORMATICA Classe 3M - indirizzo MERCURIO A.S. 2010/2011 Proff. Rosalia Barbara Schiavarelli, Antonio Antonicelli
DettagliIl Processore: l unità di controllo
Il Processore: l unità di controllo La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock Ad ogni impulso di clock la UC esegue un ciclo di esecuzione di
DettagliArchitettura di Von Neumann
Architettura di Von Neumann L architettura è ancora quella classica sviluppata da Von Neumann nel 1947. L architettura di Von Neumann riflette le funzionalità richieste da un elaboratore: memorizzare i
DettagliInformatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è un insieme vuoto
DettagliComponenti di un processore
Componenti di un processore Unità di Controllo Bus Interno REGISTRI Program Counter (PC) Registro di Stato (SR) Registro Istruzioni (IR) Registri Generali Unità Aritmetico- Logica Registro Indirizzi Memoria
DettagliIntroduzione al funzionamento di un calcolatore elettronico
1 / 21 Introduzione al funzionamento di un calcolatore elettronico Natascia Piroso 23 settembre 2009 2 / 21 Sommario Che cos è un calcolatore? 1 Che cos è un calcolatore? Definizioni preliminari Il calcolatore
DettagliCorso di Linguaggi di Programmazione + Laboratorio
Corso di inguaggi di Programmazione + aboratorio Capitolo 1 - Introduzione Si ringrazia il Dott. Marco de Gemmis per la collaborazione nella predisposizione del materiale didattico Apprendimento di un
DettagliIntroduzione al Linguaggio C ed all IDE DEV-C++
Microsoft Windows e Dev-C++ Introduzione al Linguaggio C ed all IDE DEV-C++ 1 Le Esercitazioni in Laboratorio! MTA + MLAB1/2: Edificio Via Valotti, primo piano e piano interrato! Orario: Giovedì 14:30-17:30!
DettagliErrori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
DettagliCome funzionano i computer
Fluency Come funzionano i computer Capitolo 6 Cosa sanno fare Esecuzione deterministica istruzioni per elaborare dati Devono ricevere una serie di istruzioni da seguire Cosa non sanno fare Non hanno immaginazione
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlgoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.
E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare
DettagliFondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore
DettagliLinee di programmazione
Ministero dell Istruzione, dell Università e della Ricerca Ufficio Scolastico regionale per il Lazio Istituto Tecnico Industriale A. Pacinotti ISTITUTO TECNICO TECNOLOGICO - LICEO SCIENTIFICO DELLE SCIENZE
DettagliArray in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
Dettagli(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B
Compito: Domanda 1 Per l'algoritmo fornito di seguito, qual è il valore assunto dalla variabile contatore quando l'algoritmo termina: Passo 1 Poni il valore di contatore a 1 Passo 2 Ripeti i passi da 3
DettagliComponenti e connessioni. Capitolo 3
Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura
DettagliConcetti di base dell ICT
Informatica Linguaggio di programmazione Computer Bit Algoritmo Linguaggio macchina Informatica: Informazione automatica Gli anglosassoni usano il termine Computer Science = Scienza dei Calcolatori Computer:
DettagliArchitettura dei calcolatori
Cos'è un calcolatore? Architettura dei calcolatori Esecutore automatico di algoritmi Macchina universale Elementi di Informatica Docente: Giorgio Fumera Corso di Laurea in Edilizia Facoltà di Architettura
DettagliPIANO DI LAVORO. a.s. 2015 / 2016
PIANO DI LAVORO a.s. 2015 / 2016 Materia: INFORMATICA Classe: terza informatica- sez. A Data di presentazione: 15/10/2015 DOCENTI FIRMA Cerri Marta Bergamasco Alessandra Posta elettronica: itisleon@tin.it
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai
DettagliPrimo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Primo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini luca@chiodini.org - l.chiodini@campus.unimib.it 10 marzo 2016 Programma 1. Lettura di un problema tratto dalle
DettagliInformatica! Appunti dal laboratorio 1!
Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti
Dettagli3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi
0.1.1.1 Definire un algoritmo 1. Con il termine algoritmo si intende: a) il software utilizzato in un calcolatore b) l elenco finito di istruzioni necessario per risolvere un problema c) un elaboratore
DettagliAlgoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.
Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l
DettagliArchitettura dei computer
Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La
DettagliPROGRAMMA SVOLTO Materia: Informatica Docentte:: PERAZZOLO GIANTONIO
ISTITUTO D ISTRUZIONE SUPERIORE "G. VERONESE - G. MARCONI" SEDE CENTRALE G. VERONESE Via P. Togliatti, 833-30015 CHIOGGIA (VE) Tel. 041/5542997-5543371 - Fax 041/5548665 e-mail: veis00200g@pec.istruzione.it
DettagliIntroduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
DettagliProgrammazione strutturata
Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 3. (testo di riferimento: Bellini-Guidi) Ing. Michele Ruta 1di 29 Linguaggi di programmazione Un programma è un algoritmo
DettagliModularizzazione del software
Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica
DettagliLecture 2: Prime Istruzioni
[http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 2: Prime Istruzioni
DettagliRAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO
RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento
DettagliIl calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica
Il calcolatore È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica ogni livello di descrizione è caratterizzato da una struttura rappresentante l organizzazione
DettagliElementi di Informatica Corso di Laurea in Scienze Geologiche a.a. 2003/2004. Docente. Orario. Da Ottobre-Dicembre:
Elementi di Informatica Corso di Laurea in Scienze Geologiche a.a. 2003/2004 1 Docente Patrizia Boccacci Ufficio 332 III piano Dipartimento di Informatica e Sc. Inf. Tel. 010-3536732 E-mail: boccacci@disi.unige.it
DettagliPROGRAMMA PREVENTIVO. Criteri di programmazione didattica. La programmazione didattica verrà sviluppata tenendo conto dei seguenti punti:
SUPERIORE "G. VERONESE - G. MARCONI" SEDE CENTRALE G. VERONESE Via P. Togliatti, 833-30015 CHIOGGIA (VE) Tel. 041/5542997-5543371 - Fax 041/5548665 e-mail: veis00200g@pec.istruzione.it - Web: www.veronesemarconi.gov.it
DettagliPolitecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato
DettagliAlgoritmi e Programmi
Algoritmi e Programmi Algoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. Problema di elaborazione Insieme dati di partenza Risultato ricerca Algoritmi
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliSistemi 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
DettagliSTORIA E CARATTERISTICHE
IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori
DettagliSistemi di numerazione
SOMMARIO Sistemi di numerazione...2 Sistema decimale (o a base 10)...2 Sistema binario...2 Operazioni sui numeri binari...3 Espressioni logiche...4 Definizione...4 Prodotto Logico : AND...4 Somma Logica
Dettagli6 - 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
Dettagliin 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
DettagliI S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E
I S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E G u g l i e l m o M a r c o n i V e r o n a Dipartimento di Progetto didattico disciplinare per le classi terze della articolazione Anno
DettagliInformatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema
Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica informatica informazione mezzi mezzi fisici procedure Algoritmi, dati e programmi rappresentazione dell informazione
DettagliESERCIZI SVOLTI DI CALCOLO NUMERICO
STEFANO BERRONE SANDRA PIERACCINI ESERCIZI SVOLTI DI CALCOLO NUMERICO con introduzione a Matlab R CLUT Stefano Berrone Dipartimento di Matematica Politecnico di Torino Sandra Pieraccini Dipartimento di
DettagliProgrammazione web lato client con JavaScript. Marco Camurri 1
Programmazione web lato client con JavaScript Marco Camurri 1 JavaScript E' un LINGUAGGIO DI PROGRAMMAZIONE che consente di inserire codice in una pagina web Sintassi simile a Java (e al C), ma NON E'
DettagliArchitettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione
Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina
DettagliIntroduzione al Calcolo Scientifico
Introduzione al Calcolo Scientifico Francesca Mazzia Dipartimento di Matematica Università di Bari Francesca Mazzia (Univ. Bari) Introduzione al Calcolo Scientifico 1 / 14 Calcolo Scientifico Insieme degli
DettagliLaboratorio 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
DettagliInformatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 25/02/2016/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 25/02/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è una list c) v
DettagliVBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
DettagliStruttura hw del computer
Informatica per laurea triennale facoltà di medicina LEZIONE 3 Il processore, la memoria e l esecuzione dei programmi 1 Struttura hw del computer Il nucleo di un computer è costituito da 3 principali componenti:
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliUnità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso
Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
DettagliMATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA
MATLAB I/O Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA Funzione input valore = input( inserisci un valore ); Matlab stampa a video la stringa inserisci un valore ed aspetta di ricevere
DettagliAlgoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.
Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l
DettagliLa ricerca dicotomica
La ricerca dicotomica Se l array è ordinato, la ricerca di un elemento può essere realizzata in modo più efficiente rispetto alla ricerca sequenziale, utilizzando la ricerca dicotomica. Si usa il termine
DettagliHardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre
Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare
DettagliPROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE PRIMA
PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE PRIMA 1. Competenze: le specifiche competenze di base disciplinari previste dalla
DettagliFondamenti VBA. Che cos è VBA
Fondamenti VBA Che cos è VBA VBA, Visual Basic for Application è un linguaggio di programmazione, inserito nelle applicazioni Office di Microsoft (Ms Word, Ms Excel, Ms PowerPoint, Visio). VBA è una implementazione
DettagliAppunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso
Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Marco Liverani (liverani@mat.uniroma3.it)
DettagliLezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi
Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione
DettagliProf. Rossella Cancelliere
Laboratorio di Informatica e Statistica Chimica Industriale a.a 2004/05 Prof. Rossella Cancelliere Dip. Informatica Univ.Torino C.so Svizzera 185,Torino email:cancelli@di.unito.it tel: 011/670 67 77 Obiettivi
Dettagli1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:
DettagliPROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
Dettagli