ALGORITMI e DIAGRAMMI DI FLUSSO

Slides:



Advertisements
Presentazioni simili
Introduzione alla programmazione lll
Advertisements

INFORMATICA UMANISTICA B
INFORMATICA UMANISTICA B ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
ANNUNCI MODULO C, D, E LABORATORI SONO INIZIATI
Elementi di Informatica
Dall’algoritmo al programma.
PROGRAMMAZIONE: linguaggi
DIVERTIRSI CON SCRATCH
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Variabili. 2 Tipi di variabili Una variabile è qualche proprietà di un evento che è stata misurata. Le variabili sono attributi dei fenomeni e pertanto.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
I linguaggi di programmazione Gruppo iOS 47: Colombini Christian Flora Jonathan Rossi Francesco.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Basi di dati - Fondamenti
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Fondamenti di programmazione Prof.ssa Elisa Tiezzi
Algoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Parte 1 Fondamenti di Informatica Modulo Fondamenti di programmazione
Cosa nascondono i numeri naturali? N Loretta Ferrante.
LA PROGRAMMAZIONE: Algoritmi e programmi
La rappresentazione degli algoritmi
Tratto da: Anna Labella (a cura), E questo tutti chiamano Informatica, Manuali Scienze e Tecnologie – Formazione, La Sapienza Roma.
Sistemi e Applicazioni per l’Amministrazione Digitale
Lavoro di gruppo 3^E sia Peroni Jessica Mascheroni Beatrice
MASSIMO COMUNE DENOMINATORE (M.C.D)
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Dal problema al processo risolutivo
Richiami di concetti generali
(7x + 8x2 + 2) : (2x + 3) 8x2 + 7x + 2 2x + 3 8x2 + 7x + 2 2x + 3 4x
Algoritmi e soluzioni di problemi
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Unità di apprendimento 7
Forme per rappresentare l’algoritmo:
Process synchronization
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
I MONOMI.
Ripetiamo…! La divisibilità
Classe III A A.s – 2012 Programma di Informatica
IL CONCETTO DI ALGORITMO
Programmare.
I RADICALI Definizione di radicali Semplificazione di radicali
© 2007 SEI-Società Editrice Internazionale, Apogeo
Dall’analisi del problema alla definizione dell’algoritmo
Strutture di Controllo
{ } Multipli di un numero M4 ESEMPIO 0, 4, 8, 12, 16, 20, 24, …
Gli automi.
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Esempi di algoritmi.
A = InputBox("Immetti un numero")
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
DIVISIBILITA’ E DIVISORI
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sistemi Digitali.
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Unità D2 Dal problema all’algoritmo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Informatica CdL Scienze e Tecniche Psicologiche a.a
La programmazione strutturata
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

ALGORITMI e DIAGRAMMI DI FLUSSO INFORMATICA ALGORITMI e DIAGRAMMI DI FLUSSO http://slideplayer.it/slide/10300860/ http://www.mat.uniroma3.it/users/liverani/IN1/IN110_02_algoritmi.pdf

Simboli e loro significato

Vediamo come procedere per costruire un percorso che ci porta alla soluzione di un problema Passo1-Traduciamo il problema in algoritmo: caratteristiche di un algoritmo Passo2- Visualizziamo l’algoritmo in modo grafico: diagrammi di flusso Passo3- Traduciamo l’algoritmo in un linguaggio macchina: programma

UN PROBLEMA, IL MASSIMO COMUN DIVISORE e IL MINIMO COMUNE MULTIPLO DI DUE NUMERI GLI ALGORITMI

UN PROBLEMA: IL MASSIMO COMUN DIVISORE

MCD Per determinare il MASSIMO COMUN DIVISORE tra due numeri a e b si possono usare vari metodi Si scrivono i divisori dei due numeri e dopo aver determinato i divisori comuni, si determina il più grande tra essi Si scompongono in fattori primi i due numeri e si fa il prodotto dei fattori comuni con il minimo esponente Si può far uso di procedure ideate da Euclide

Procedura di Euclide per il calcolo del MCD La procedura originale di Euclide, basata su sottrazioni successive il calcolo del MCD di due interi positivi, nella sua versione più semplice, si basa sulla seguente proprietà:

Procedura di Euclide per il calcolo del MCD Se due numeri, m, n, sono divisibili per un terzo numero, x, allora anche la loro differenza è divisibile per x.

Procedura di Euclide per il calcolo del MCD Per dimostrarla, si può utilizzare la proprietà distributiva. Supponiamo m>n. m=kx n=hx m-n=kx-hx=x(k-h) Dunque si può dire che: MCD(m,n) = MCD((m-n),n)

Procedura di Euclide per il calcolo del MCD MCD(m,n) = MCD((m-n),n) Come si vede, questa regola permette di passare, per mezzo di sottrazioni successive, a MCD di numeri sempre più piccoli, fino ad ottenere: MCD(a,0)=a

Una procedura più veloce, basata su divisioni successive Euclide descrisse questo procedura nel suo libro degli Elementi. Invece di usare i numeri interi, però, utilizzò i segmenti di retta. Perciò il suo procedimento serve anche a determinare il massimo comune divisore di due segmenti.

Una procedura più veloce, basata su divisioni successive In certi casi il procedimento può richiedere numerosissimi passaggi, risultando molto lento (provate con MCD (900,15)). Conviene quindi renderlo più veloce e si può fare ricorrendo ad una serie di divisioni con resto anziché sottrazioni.

Una procedura più veloce, basata su divisioni successive Il principio su cui ci si basa è il seguente (supponiamo m>n): MCD(m,n) = MCD(r,n)dove r è il resto della divisione m/n Come si vede, questa regola permette di passare rapidamente, per mezzo di divisioni con resto successive, a MCD di numeri sempre più piccoli, fino ad ottenere: MCD(r,0)=r

MCD: UN ALGORITMO ELEMENTARE A scuola si impara un procedimento molto semplice per calcolare MCD tra due numeri a e b: MCD(a, b): PROBLEMA Scomponi a ed b in fattori primi primo passo Estrai i fattori comuni secondo passo Moltiplica tra di loro i fattori comuni con minimo esponente, presi una sola volta. N.B. Questo metodo è conveniente usarlo solo per numeri piccoli (la scomposizione in fattori primi e’ molto costosa) SOLUZIONE DEL PROBLEMA

DEFINIZIONE INFORMALE DI ALGORITMO Una sequenza FINITA di passi DISCRETI e NON AMBIGUI che porta alla soluzione di un problema è un processo detto ALGORITMO Questa definizione: si puo’ applicare nella matematica (da cui ha origine) ma anche nella cucina è alla base di ciò che è legato all’informatica.

E’ importante trasformare ogni questione da risolvere in una successione di passi elementari, eventualmente reiterati che portano alla soluzione del problema.

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.

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

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)

Proprietà fondamentali degli algoritmi Dalla precedente definizione di algoritmo si evincono alcune proprietà necessarie, senza le quali un algoritmo non può essere definito tale:

Proprietà fondamentali degli algoritmi i passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili (atomicità); Così, ad esempio, "rompere le uova" può essere considerato legittimamente un passo elementare di un "algoritmo per la cucina" (ricetta),

Proprietà fondamentali degli algoritmi i passi costituenti devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale (non ambiguità); "aggiungere sale quanto basta" non è un passo interpretabile in modo univoco dato che l'espressione "quanto basta" è ambigua, e non indica con precisione quali passaggi servano per determinare la quantità necessaria

Proprietà fondamentali degli algoritmi l'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza) , "continuare a mescolare a fuoco vivo fino a quando il composto non assume colore bruno" è un'istruzione accettabile di tipo iterativo, che comporta un numero finito di operazioni (le rimestate) sebbene tale numero non sia conoscibile a priori, perché dipendente da ciò che è chiamato input (il grado di umidità della farina nel composto, il vigore della fiamma, ecc.).

Proprietà fondamentali degli algoritmi l'esecuzione deve avere termine dopo un tempo finito (terminazione); l'esecuzione deve portare a un risultato univoco (effettività).

Proprietà fondamentali degli algoritmi Un passo come "preparare un pentolino di crema pasticcera" non può considerarsi legittimo perché ulteriormente scomponibile in sotto-operazioni (accendere il fuoco, regolare la fiamma, mettere il pentolino sul fornello, ecc.) e anche perché contenente ambiguità (non specifica quanto grande deve essere il pentolino, quanto deve essere riempito di crema e così via).

Proprietà fondamentali degli algoritmi gli algoritmi possano essere modulari All'istruzione non elementare di preparazione della crema potrebbe essere associato a un opportuno rimando a un'altra sezione del ricettario, che fornisca un sotto-algoritmo apposito per questa specifica operazione. Questo suggerisce che, per comodità d'implementazione, , ovvero orientati a risolvere specifici sotto-problemi, e gerarchicamente organizzati.

Proprietà fondamentali degli algoritmi Un algoritmo deve poter essere realizzabile ovvero ci deve essere compatibilità con le risorse materiali e temporali a disposizione una ricetta che preveda la cottura a microonde non può essere preparata da un esecutore sprovvisto dell'apposito elettrodomestico.

Proprietà fondamentali degli algoritmi possono darsi più algoritmi validi per risolvere uno stesso problema, ma ognuno con un diverso grado di efficienza.

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)

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

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

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

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

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

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

Lo studio sistematico dei processi algoritmici che descrivono e trasformano l'informazione sono alla base di una scienza chiamata INFORMATICA

INFORMATICA L'informatica è la scienza che si occupa del trattamento dell'informazione mediante procedure automatizzabili. Il trattamento automatico dell'informazione avviene mediante calcolatore (naturale o artificiale) L'elaboratore, infatti, non fa altro che eseguire istruzioni preventivamente "impartitegli" da un essere umano: PROGRAMMA ll computer, grazie alla velocità di calcolo, è diventato insostituibile nei campi più disparati della vita e della scienza.

PROGRAMMI Un PROGRAMMA e’ “un ALGORITMO” posto in forma comprensibile al computer

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

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

RICORDIAMO DA DOVE SIAMO PARTITI Per procedere alla costruzione di un percorso che ci porta alla soluzione di un problema abbiamo che: Passo1- Bisogna tradurre il problema in algoritmo: caratteristiche di un algoritmo Vediamo ora i passi successivi Passo2- Visualizziamo l’algoritmo in modo grafico: diagrammi di flusso Passo3- Traduciamo l’algoritmo in un linguaggio macchina: programma

DA ALGORITMI A PROGRAMMI

RAPPRESENTAZIONE GRAFICA DI UN ALGORITMO E’ utile una rappresentazione grafica per descrivere in modo piu’ preciso i passi di un algoritmo senza usare una sintassi specifica. Come possiamo immaginare tale rappresentazione? DISCUSSIONE

RAPPRESENTAZIONE GRAFICA DI UN ALGORITMO Una utile rappresentazione grafica per descrivere in modo piu’ preciso i passi di un algoritmo, può essere pensata come una serie di BLOCCHI uniti da archi

MODELLO GRAFICO per rappresentare un algoritmo Per rappresentare in modo efficace un algoritmo sono stati sviluppati dei modelli grafici detti : DIAGRAMMI DI FLUSSO

Criteri grafici per rappresentare un algoritmo i passi di un algoritmo Che criterio grafico individuiamo per simboleggiare: i blocchi di inizio e fine programma (start, stop) i blocchi per assegnare valori numerici i blocchi di istruzioni elementari i blocchi in cui si esprimono delle condizioni i blocchi per i dati di input /output (leggi, scrivi…) Che simbolo usiamo per tornare ad una istruzione già eseguita ( vai al passo…)

Criteri grafici per rappresentare un algoritmo i passi di un algoritmo Vediamo cosa è stato stabilito in generale

BLOCCHI: INIZIO E FINE PROGRAMMA

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

BLOCCHI: INPUT / OUTPUT

RIPETIZIONI

CONDIZIONALI

Criteri grafici per rappresentare i passi di un algoritmo: I DIAGRAMMI DI FLUSSO RIASSUMIAMO

Esempi Da un ALGORITMO al DIAGRAMMA DI FLUSSO

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

AREA DEL RETTANGOLO: DIAGRAMMA DI FLUSSO dati di input /output (leggi, scrivi, stampa…) Istruzione elementare

Ripetizione Condizione

SOTTOLINEAMO

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)

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

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

Un diagramma e’ composto da una serie di BLOCCHI uniti da archi 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

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.

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

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

DIAGRAMMA DI FLUSSO

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

CONDIZIONALI

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

PARI E DISPARI

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

RIPETIZIONI

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

REMINDER: LA MACCHINA DI TURING E 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

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

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

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

COMPILATORI

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

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

VISUAL BASIC: ASSEGNAZIONE AD UNA VARIABILE

VISUAL BASIC: INPUT / OUTPUT

VISUAL BASIC: COSTRUTTI CONDIZIONALI

VISUAL BASIC: ITERAZIONI

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

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

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

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

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>

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

QUALI SONO I LINGUAGGI DI PROGRAMMAZIONE PIU’ USATI?

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