1 / 53

ANNUNCI

ANNUNCI. MODULO C E LABORATORI INIZIATI MODULO B: SOLO PIU’ LEZIONI IL LUNEDI’ 26 MARZO: 10-12, 14-16, MA NON 18-20 (B2 e B3 UNIFICATI). RICEVIMENTO (MASSIMO POESIO). Ricevimento: Lunedi’ 16-18, via Sighele 7. INFORMATICA UMANISTICA B.

bryant
Download Presentation

ANNUNCI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ANNUNCI • MODULO C E LABORATORI INIZIATI • MODULO B: SOLO PIU’ LEZIONI IL LUNEDI’ • 26 MARZO: 10-12, 14-16, MA NON 18-20 (B2 e B3 UNIFICATI)

  2. RICEVIMENTO (MASSIMO POESIO) • Ricevimento: Lunedi’ 16-18, via Sighele 7

  3. INFORMATICA UMANISTICA B 7: ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE

  4. PROGRAMMI • Un computer e’ una macchina per eseguire PROGRAMMI • Un programma e’ un ALGORITMO per risolvere un certo PROBLEMA scritto secondo le regole di un LINGUAGGIO DI PROGRAMMAZIONE

  5. ALGORITMO • Un PROGRAMMA e’ un ALGORITMO posto in forma comprensibile al computer • Definizione informale di ALGORITMO: una sequenza FINITA di passi DISCRETI e NON AMBIGUI che porta alla soluzione di un problema • Questa definizione si puo’ applicare al di fuori dell’Informatica: nella matematica (da cui ha origine) ma anche nella cucina

  6. UN QUASI-ALGORITMO: LA RICETTA PER LA BAGNA CAUDA • Cuocere gli spicchi di aglio, coperti con il latte, fino a quando non diventino teneri. • Tritare l'aglio • Unirlo all'olio, alle acciughe tagliate molto finemente • Cuocere a fiamma moderata e mescolare fino a far ridurre il contenuto in un composto omogeneo. • Dopo circa venti minuti aggiungere qualche fiocco di burro • Servire in tavola con le verdure.

  7. PERCHE’ QUASI-ALGORITMO? • Numero di passi e’ finito • Ma molti passi sono ambigui: • ‘teneri’? • `fiamma moderata’?

  8. IL TERMINE ALGORITMO • Il nome ALGORITMO deriva dal nome del matematico persiano Muhammad ibn Mūsa 'l-Khwārizmī che attorno all’825 scrisse un trattato chiamatoKitāb al-djabr wa 'l-muqābala (Libro sulla ricomposizione e sulla riduzione) • AL-KHWARIZMI  ALGORISMO  ALGORITMO • (ALGEBRA deriva da AL-DJABR)

  9. UN PROBLEMA, DUE ALGORITMI: IL MASSIMO COMUN DIVISORE

  10. MCD: UN ALGORITMO ELEMENTARE • A scuola si impara un algoritmo molto semplice per calcolare MCD: la SCOMPOSIZIONE IN FATTORI PRIMI • 42 = 2 x 3 x 7 • 56 = 2 x 2 x 2 x 7 • Algoritmo MCD(M, N): • Scomponi M ed N in fattori primi • Estrai i componenti comuni • Questo metodo si’ puo’ solo applicare per numeri piccoli (la scomposizione in fattori primi e’ molto costosa)

  11. MCD: L’ALGORITMO DI EUCLIDE • MCD(M,N): • RIPETI finche’ M  N • SE M > N, M  M –N; • ALTRIMENTI, N  N – M; • RITORNA al passo 1; • OUTPUT M

  12. ESEMPIO • MCD(42,56): • M(42)  N(56); • N (56) > M (42) • N  14 • M(42)  N(14); • M (42) > N (14); • M  28 • M(28)  N(14) • M(28) > N (14); • M  14 • OUTPUT: 14

  13. ALCUNE CONSIDERAZIONI:PROBLEMI ED ALGORITMI • Ci sono sempre molti algoritmi per risolvere un problema • Parte dell’arte della programmazione e’ trovare gli algoritmi piu’ efficienti

  14. ALGORITMI E FUNZIONI • In termini matematici, un algoritmo puo’ essere visto come una FUNZIONE che produce un certo OUTPUT dato un certo INPUT • Per esempio, MCD(42,56) = 14 • Due algoritmi si dicono EQUIVALENTI se producono lo stesso output dato lo stesso input. • Fattori primi e Euclide sono EQUIVALENTI (ma non egualmente efficienti!!)

  15. ALGORITMI PIU’ COMUNI IN INFORMATICA • Algoritmi MATEMATICI • Per fare calcoli anche molto complessi (per esempio, integrali, la scoperta di numeri primi) • Algoritmi di ORDINAMENTO • 45 2 17 28 101  2 17 28 45 101 • Algoritmi di RICERCA • Algoritmi per il TRATTAMENTO DELLE STRINGHE • COMPILATORI • Algoritmi di COMPRESSIONE

  16. DA ALGORITMI A PROGRAMMI

  17. LINGUAGGI DI PROGRAMMAZIONE • Un linguaggio di programmazione permette di esprimere certi tipi di istruzioni in modo che possano venire poi convertite in istruzioni macchina • Un linguaggio di programmazione e’ caratterizzato da • SINTASSI (come vengono scritte le istruzioni) • SEMANTICA (come devono venire interpretate)

  18. CONSIDERAZIONI, II: INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE • MCD(M,N): • RIPETI finche’ M  N • SE M > N, M  M –N; • ALTRIMENTI, N  N – M; • RITORNA al passo 1; • OUTPUT M

  19. DIAGRAMMI DI FLUSSO • Una rappresentazione grafica usata per descrivere in modo piu’ preciso i passi di un algoritmo senza usare una sintassi specifica • Un diagramma e’ composto da una serie di BLOCCHI uniti da archi

  20. BLOCCHI: INIZIO E FINE PROGRAMMA

  21. COUNT  0 COUNT  COUNT + 1 BLOCCHI: ISTRUZIONI ELEMENTARI

  22. BLOCCHI: INPUT / OUTPUT

  23. ESEMPIO: AREA DEL RETTANGOLO • Calcolo dell’area di un rettangolo • AREA: • Leggi da input l’altezza H • Leggi da input la base B • Calcola l’area A • Produci in output il risultato

  24. AREA DEL RETTANGOLO: DIAGRAMMA DI FLUSSO

  25. LE VARIABILI • Molti algoritmi richiedono un qualche modo per immagazzinare i risultati di certi calcoli. • Per esempio, nell’algoritmo per MCD, M e N • Quasi tutti i linguaggi di programmazione permettono di usare delle VARIABILI per questo scopo. Una variabile puo’ essere pensata come un nome per una zona di memoria.

  26. ESEMPIO: SCAMBIO DI VALORI • Leggi il valore della prima variabile X • Leggi il valore della seconda variabile Y • Salva il valore di X in una variable Aux per ricordarlo • Assegna ad X il valore di Y • Assegna a Y il valore di Aux

  27. DIAGRAMMA DI FLUSSO

  28. CONDIZIONALI • Un’altro degli ingredienti fondamentali di un linguaggio di programmazione e’ la possibilita’ di scegliere di eseguire istruzioni diverse a seconda dei risultati di un TEST

  29. CONDIZIONALI

  30. ESEMPIO: PARI O DISPARI • Leggi N • Dividi N per 2 • Se Resto = 0 scrivi: N e’ pari • Altrimenti scrivi: N e’ dispari

  31. PARI E DISPARI

  32. RIPETIZIONI • L’ultimo componente fondamentale di un linguaggio di programmazione e’ la possibilita’ di ripetere le stesse azioni un gran numero di volte

  33. RIPETIZIONI

  34. START M = N? M > N? OUTPUT:M M  M - N N  N - M STOP ALGORITMO DI EUCLIDE T F T F

  35. REMINDER: LA MACCHINA DI TURING E L’IPOTESI DI CHURCH • Quando avevamo introdotto la macchina di Turing, si era menzionata l’ipotesi di Church: • La macchina di Turing’ e’ una macchina UNIVERSALE • Nel senso che ogni programma eseguibile puo’ essere scritto sotto forma di istruzioni per la macchina di Turing • Questa ipotesi si basa sul fatto che la macchina di Turing puo’ esprimere tutti i costrutti fondamentali appena discussi

  36. STRUTTURE DATI

  37. LINGUAGGI DI PROGRAMMAZIONE • Il calcolatore comprende istruzioni in LINGUAGGIO MACCHINA • 0011 001 010 • Una prima astrazione dal linguaggio macchina sono i cosiddetti ASSEMBLER che esprimono le istruzioni macchina in formato simbolico • ADD R1 R2 • Una seconda astrazione sono i linguaggi di programmazione AD ALTO LIVELLO che astraggono dalle istruzioni macchina • X  X + Y

  38. ALGORITMO DI EUCLIDE IN UN TIPICO LINGUAGGIO AD ALTO LIVELLO function MCD(M,N) while M ≠ N if M > N then M  M - N else N  N - M return M

  39. COMPILATORE • E’ un programma che trasforma un programma espresso in linguaggio ad alto livello (PROGRAMMA SORGENTE) in linguaggio macchina (PROGRAMMA OGGETTO) • In Windows: crea file .exe • Linguaggi tipicamente compilati: C, C++, Fortran, Pascal

  40. COMPILATORI

  41. INTERPRETI • Un interprete e’ un programma che interpreta le istruzioni di un programma ad alto livello DIRETTAMENTE, senza tradurle in linguaggio macchina • Tipici linguaggi interpretati: Java, Lisp, Perl, Python

  42. UN ESEMPIO DI LINGUAGGIO DI PROGRAMMAZIONE • VISUAL BASIC e’ il linguaggio di programmazione usato per sviluppare applicazioni in ambienti Microsoft Windows • E’ un linguaggio • Di alto livello • Interpretato • Visuale

  43. VISUAL BASIC:ASSEGNAZIONE AD UNA VARIABILE

  44. VISUAL BASIC: INPUT / OUTPUT

  45. VISUAL BASIC:COSTRUTTI CONDIZIONALI

  46. VISUAL BASIC:ITERAZIONI

  47. DIFFERENZE TRA LINGUAGGI AD ALTO LIVELLO GREP in PERL:while (<STDIN>) { if (/Poesio/) { print $_;} }

  48. DIFFERENZE TRA LINGUAGGI AD ALTO LIVELLO ….import java.util.regex.*;public class Grep { …. // Pattern used to parse lines private static Pattern linePattern = Pattern.compile(".*\r?\n"); // The input pattern that we're looking for private static Pattern pattern; // Compile the pattern from the command line private static void compile(String pat) { try { pattern = Pattern.compile(pat); } catch (PatternSyntaxException x) { System.err.println(x.getMessage()); System.exit(1); } } // Use the linePattern to break the given CharBuffer into lines, applying // the input pattern to each line to see if we have a match private static void grep(File f, CharBuffer cb) { Matcher lm = linePattern.matcher(cb); // Line matcher Matcher pm = null; // Pattern matcher int lines = 0; while (lm.find()) { lines++; CharSequence cs = lm.group(); // The current line if (pm == null) pm = pattern.matcher(cs); else pm.reset(cs); if (pm.find()) System.out.print(f + ":" + lines + ":" + cs); if (lm.end() == cb.limit()) break; } }

  49. XSL • XSL (eXtensible Stylesheet Language): un linguaggio che permette di specificare come visualizzare un documento formattato in XML • Uso tipico: convertire XML in HTML

  50. COSTRUTTI CONDIZIONALI IN XSL <poem author="jm" year="1667"> <verse>Seest thou yon dreary Plain, forlorn and wild,</verse> <verse>The seat of desolation, void of light,</verse> <verse>Save what the glimmering of these livid flames</verse> <verse>Casts pale and dreadful?</verse> </poem> <xsl:template match="poem"> <xsl:if test="@author='jm'"> 1. The poem's author is jm. </xsl:if>

More Related