La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

INFORMATICA UMANISTICA B

Copie: 1
INFORMATICA UMANISTICA B ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.

Presentazioni simili


Presentazione sul tema: "INFORMATICA UMANISTICA B"— Transcript della presentazione:

1 INFORMATICA UMANISTICA B
ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE

2 DI NUOVO LA MACCHINA DI TURING

3 MACCHINA DI TURING COME MODELLO DI PROGRAMMAZIONE
Partendo dalla macchina di Turing, abbiamo seguito un primo percorso attraverso l’Informatica moderna, focalizzato sull’aspetto ‘sistemistico’ dell’Informatica La macchina di Turing non e’ pero’ soltanto, o soprattutto, un architettura di computer, ma un punto di partenza per teorie della PROGRAMMAZIONE In questa lezione e la prossima seguiremo invece un secondo percorso focalizzato su questo aspetto

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 chiamato Kitā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): MCD(M,N): M(42)  N(56); RIPETI finche’ M  N
OUTPUT: 14 MCD(M,N): RIPETI finche’ M  N SE M > N, M  M –N; ALTRIMENTI, N  N – M; RITORNA al passo 1; OUTPUT M

13 MCD: L’ALGORITMO DI EUCLIDE, II
MCD(M,N): Dividi M per N; sia R il resto Se R = 0, termina; MCD = N Altrimenti, M = N, N = R, e ritorna da

14 UN ALGORITMO PIU’ FORMALE (CLASSIFICAZIONE DELLA TEMPERATURA)
INPUT: una temperatura in Celsius ALGORITMO: SE temperatura > 30 ALLORA caldo ALTRIMENTI freddo OUTPUT: CALDO o FREDDO

15 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

16 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!!)

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

18 DA ALGORITMI A PROGRAMMI

19 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)

20 MCD(M,N): RIPETI finche’ M  N SE M > N, M  M –N;
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

21 INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE
Poter mettere istruzioni in SEQUENZA Poter cambiare l’ordine di esecuzione sulla base di TEST Poter RIPETERE istruzioni Questi ingredienti vengono catturati tramite i DIAGRAMMI DI FLUSSO

22 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

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 BLOCCHI: INIZIO E FINE PROGRAMMA

26 BLOCCHI: ISTRUZIONI ELEMENTARI
COUNT  0 COUNT  COUNT + 1

27 BLOCCHI: INPUT / OUTPUT

28 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.

29 VARIABILI NELL’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

30 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

31 DIAGRAMMA DI FLUSSO

32 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

33 CONDIZIONALI

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

35 PARI E DISPARI

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

37 RIPETIZIONI

38 ALGORITMO DI EUCLIDE OUTPUT:M M > N? M  M - N N  N - M STOP START
F T

39 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

40 LINGUAGGI DI PROGRAMMAZIONE
Il calcolatore comprende istruzioni in LINGUAGGIO MACCHINA 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

41 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

42 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

43 COMPILATORI

44 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

45 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

46 VISUAL BASIC: ASSEGNAZIONE AD UNA VARIABILE

47 VISUAL BASIC: INPUT / OUTPUT

48 VISUAL BASIC: COSTRUTTI CONDIZIONALI

49 VISUAL BASIC: ITERAZIONI

50 DIFFERENZE TRA LINGUAGGI AD ALTO LIVELLO
PERL: If (A*A + B*B = C*C) { print “Triangolo rettangolo\n”; } else { print “Triangolo non rettangolo\n”; }

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

52 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; } }

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

54 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 The poem's author is jm. </xsl:if>

55 LINGUAGGI DI MARCATURA E LINGUAGGI DI PROGRAMMAZIONE
Attenzione a non confondere un linguaggio di MARCATURA come XML con un linguaggio di PROGRAMMAZIONE come XSL Un linguaggio di marcatura CLASSIFICA certe porzioni di testo Un linguaggio di programmazione specifica ISTRUZIONI

56 QUALI SONO I LINGUAGGI DI PROGRAMMAZIONE PIU’ USATI?

57 LETTURE Tomasi: 1.2, 1.3, 1.4 Da Wikipedia: le voci Algoritmo
Diagramma a blocchi Programma Linguaggio di Programmazione


Scaricare ppt "INFORMATICA UMANISTICA B"

Presentazioni simili


Annunci Google