Comments
Description
Transcript
Dal Problema Al Programma
Modulo 8 – Dal Problema Al Programma Piano Nazionale Di Formazione Degli Insegnanti Sulle Tecnologie Dell’informazione E Della Comunicazione 1 Scopo Del Modulo (Estratto Dalla C.M. N.55 Del 21-52002) Conoscere alcuni concetti fondamentali dell’informatica: algoritmo, automa, linguaggio formale. Essere in grado di cogliere l’intreccio tra alcuni risultati della matematica e della logica dei primi decenni del secolo scorso ed i successivi sviluppi e applicazioni che questi hanno avuto in campo informatico. 2 Problemi e Algoritmi Col termine problema o situazione problematica s’indica una situazione che pone delle domande cui si devono dare risposte. Risolvere il problema vuol dire uscire da tale situazione. Sono esempi di situazioni problematiche: Individuare il cammino più breve per andare a scuola Scrivere in ordine alfabetico un elenco di nomi Calcolare l’area di un campo rettangolare Un problema è formato dai seguenti elementi: I dati, ossia ciò che è noto, l’istanza che si deve affrontare e che possiamo indicare col termine input. I risultati, ossia ciò che si deve determinare, gli elementi incogniti la cui determinazione fornisce l’output. Le condizioni, che sono in generale le limitazioni cui devono soggiacere i risultati. 3 Classi Di Problemi Problemi di decisione, in cui l’output è fornito dal valore vero o falso a seconda che l’input soddisfi o meno una determinata proprietà. Problemi di ricerca, in cui, nello spazio delle soluzioni possibili (spazio di ricerca), si vuole determinare quella soluzione che soddisfa le condizioni poste dal problema, che viene detta soluzione ammissibile. Problemi di ottimizzazione, in cui alle soluzioni ammissibili è associata una misura e si deve determinare la soluzione ammissibile la cui misura è massima o minima. 4 Strategie sulla Risoluzione dei Problemi Per compiere l’analisi di un problema il risolutore deve svolgere una attività creativa nella ricerca della risoluzione del problema: 1. interpretare l’enunciato del problema e definire gli obiettivi da realizzare; 2. individuare i dati del problema e costruire un modello opportuno (modello è una rappresentazione della realtà che ha impoverito la realtà stessa degli aspetti superflui alla soluzione del problema); 3. descrivere il procedimento risolutivo individuando le operazioni da compiere sui dati iniziali per ottenere i risultati finali; 4. eseguire nell’ordine le operazioni descritte nel processo risolutivo (il risolutore in questa fase è detto esecutore); 5. verificare se i risultati ottenuti rispondono alle finalità del problema reale (attendibilità). 5 Analisi Di Un Problema Problema Interpretazione Verifica dei Risultati Modello Esecuzione Procedimento Risolutivo 6 Esempio Di Problema o Situazione Problematica Individuare Il percorso più breve per andare a scuola B C Modello A S abitazione scuola D DETERMINATA LA LUNGHEZZA DI OGNI TRATTO DI STRADA TRA I DUE INCROCI ABCS; ABCDS; ADCS; ADS; DATI INIZIALI AB = 130 m BC=90 m CD=110 m AD=120 m DS=110 m CS=80 m Procedimento risolutivo: Calcolare la lunghezza di ciascun percorso ABCS= ABCDS= ADCS= ADS= Ordinare in ordine crescente i risultati ottenuti Dato Finale Il percorso più breve è………….. 7 Strategie Per La Risoluzione Dei Problemi La prima fase dell’analisi di un problema, ossia la definizione dell’obiettivo da raggiungere, può essere realizzata attraverso processi di analisi sempre più dettagliati. Si tratta di scomporre un problema complesso in sottoproblemi più semplici, utilizzando la tecnica del top-down: Il problema viene esaminato nelle direttrici generali; Scomposto in sottoproblemi; Di ciascun sottoproblema si determinano le operazioni specifiche; Esso viene scomposto in ulteriori sottosottoproblemi, fino a giungere alle operazioni elementari. 8 Tecnica Del Top-down Problema 1 Sottoproblema 1 Sottoproblema 2 Problema 2 Problema Sottoproblema 3 Sottoproblema 4 Problema 3 Sottoproblema 5 Sottoproblema 6 Problema K Sottoproblema 7 Sottoproblema 8 Sottoproblema n 9 Concetto di algoritmo DEFINIZIONE: Una dettagliata sequenza di azioni/operazioni che devono essere eseguite per risolvere una classe di problemi. Il nome deriva dal matematico Iraniano Al-Khawarizmi. Tecnicamente un algoritmo e’ costituito da un numero finito di passi al termine dei quali deve essere generato un risultato. 10 Funzionalità di un Algoritmo Gli algoritmi utilizzano dati di ingresso e sono in grado di produrre dei risultati, elaborando secondo uno schema prefissato i dati in ingresso. 11 Esempi di algoritmi: Preparazione di una torta Ingredienti torta Ricetta Torta 12 Esempi di algoritmi: Prelevamento col Bancomat Tessera bancomat Codice segreto Inserire la tessera Digitare il codice segreto Selezionare la funzione prelievo Selezionare l’importo da prelevare Prelevare il denaro Banconote 13 Gli Algoritmi L’ algoritmo deve essere: Finito, costituito cioè da un numero limitato di passi (le istruzioni sono in numero finito e vengono eseguite un numero finito di volte); Definito, ogni istruzione deve consentire un’interpretazione univoca; Eseguibile, cioè la sua esecuzione deve essere possibile con gli strumenti di cui si dispone; Deterministico, ad ogni passo deve essere definita una ed una sola operazione successiva. 14 Rappresentazioni Grafiche Di Un Algoritmo I Diagrammi a Blocchi. Tra le tecniche utilizzate per rappresentare in maniera chiara e sintetica la struttura degli algoritmi, quella del Diagramma a Blocchi ,anche detto flow-chart, ha il pregio di evidenziare visivamente l’avanzamento in sequenza e le varie strutture che compongono l’algoritmo. 15 ALGORITMO Somma di una sequenza di numeri inizio N S 0 A S S +A N N-1 N=0 N0 S fine Indicando con ai il generico elemento da sommare, la formula matematica generale è S = a1+ a2 +…+ an . Bisogna fornire in input all’elaboratore i singoli valori ai ed il numero n di tali valori. L’algoritmo utilizza una struttura iterativa, ossia un blocco d’istruzioni che viene ripetuto un numero finito di volte. Utilizzeremo una variabile N per l’input di n per contare quante volte si deve ripetere l’iterazione; il valore di N si decrementa di un’unità nell’ambito dell’iterazione e l’iterazione termina quando N raggiunge il valore zero. La variabile A è usata per gli input degli ai, S per le somme parziali e totale. 16 ALGORITMO Calcolo Della Media Aritmetica di una Sequenza di Valori Numerici La formula matematica è M = a1+ a2 +……+an n Si consente all’utente di introdurre un numero qualsiasi di dati, utilizzando un valore speciale (lo zero) per indicare la fine della sequenza di input; l’algoritmo conta quanti elementi vengono introdotti. 17 Il Linguaggio Di Progetto Un algoritmo può essere rappresentato anche mediante un linguaggio speciale che descrive le istruzioni e la logica di avanzamento dell’esecuzione con frasi (stringhe) anziché con un diagramma. Si parla in tal caso di pseudocodifica o notazione lineare strutturata. Tale linguaggio formale, detto linguaggio di progetto, non è un linguaggio di programmazione ma è molto sintetico ed è composto da un vocabolario e una sintassi molto ristretta . Esso utilizza parole riservate, spesso tratte dalla lingua inglese, mediante le quali vengono espressi i diversi tipi di istruzioni. 18 ALGORITMO Somma di una sequenza di numeri Pseudocodifica algoritmo 1 19 ALGORITMO Calcolo Della Media Aritmetica Di Una Sequenza Di Valori Numerici Pseudocodifica algoritmo 2: 20 Il Concetto di Sistema Si dice sistema un insieme di elementi che interagiscono tra loro in modo da formare una unità che al verificarsi di un dato evento (azione) proveniente dall’ambiente esterno (ecosistema), produce una risposta definita. Rappresentazione schematica di un sistema: Input Ecosistema Output Esempio: un ascensore che si trovi al piano terra, quando l’utente preme il pulsante 2 sale di due piani; se l’utente preme ancora il pulsante 2 una volta arrivato al secondo piano, l’ascensore non si muove. Il sistema ha prodotto uscite diverse in quanto si trovava in stati diversi. 21 Concetto di Modello Un modello è uno schema teorico elaborato in molte discipline per rappresentare gli elementi fondamentali di fenomeni o enti. modelli descrittivi o statici: riproducono con eventuali semplificazioni la realtà, senza presupporre l’uso che ne verrà fatto modelli predittivi: danno gli elementi di una certa realtà necessari per prevederne l’evoluzione, lasciando spazio ad eventuali scelte modelli prescrittivi: impongono un particolare percorso in previsione dell’obiettivo da raggiungere modelli simbolici o matematici: danno una rappresentazione astratta della realtà cui si riferiscono, mediante un insieme di equazioni e/o disequazioni che legano le grandezze coinvolte modelli analogici: danno una rappresentazione fedele della realtà, tipici sono i modelli in scala ridotta, che riproducono qualitativamente un sistema pur riducendone proporzionalmente la dimensione 22 Concetto di Automa Un automa è un sistema dinamico, invariante, discreto nell’avanzamento e nelle interazioni. dinamico: evolve nel tempo passando da uno stato all’altro in funzione dei segnali d’ingresso e dello stato precedente; invariante: a parità di condizioni iniziali il comportamento del sistema è sempre lo stesso; discreto: le variabili d’ingresso, di stato, d’uscita, possono assumere solo valori discreti. Esempio di automa a stati finiti: Ascensore Un ascensore di un palazzo a due piani accetta la richiesta del piano di destinazione (terra, 1, 2) e restituisce lo spostamento desiderato (su, giù, fermo). Si tratta di un automa in cui S={Pt, 1P, 2P}, Pt= p. terra, 1P= p. primo, 2P= p. secondo; I={T, 1, 2} ingressi possibili offerti dalla pulsantiera; U={Su, Giù, Fermo} spostamenti dell’ascensore. S= insieme finito di stati I= insieme finito dei possibili ingressi U=insieme finito di possibili uscite 23 Automi e Classi di Problemi Molte macchine che usiamo quotidianamente sono automi:la lavatrice, la lavastoviglie, l’impastatrice,i sistemi di controllo degli ascensori, i distributori automatici di bevande, i distributori automatici di benzina, i bancomat. I computer sono automi, particolari automi a programma, possono cioè svolgere il ruolo di un automa o di un altro in funzione del programma che si manda in esecuzione. 24 Automi e Classi di Problemi L’utilizzo di automi è uno strumento molto potente per individuare la soluzione di particolari classi di problemi. L’uomo che li utilizza interviene solo nel fornire i comandi in ingresso o nell’azionare pulsanti e senza interessarsi di cosa accade al loro interno, vede solo l’effettuazione della funzione in uscita. Un sistema automatico è un sistema in cui la componente umana è completamente eliminata nell’ambito dei processi, che sono ben determinati e prevedibili e ogni richiesta in ingresso può attivare uno solo dei processi eseguibili dal meccanismo interno. Un sistema umano, al contrario, quale ad esempio un sistema aziendale, presenta un carattere probabilistico poiché l’uomo può assolvere a funzioni anche impreviste, in numero indeterminato, utilizzando un ragionamento, ma anche creatività ed intuito. 25 I Linguaggi Il linguaggio consente la comunicazione, intesa come scambio di informazioni. La funzione fondamentale del linguaggio è quella di sostituire ad oggetti e/o concetti dei simboli. Ogni parola (significante) rappresenta un oggetto concreto, una persona, un ente astratto (significato). Linguaggi naturali, utilizzati nella comunicazione quotidiana tra gli esseri umani, privi di una definizione rigorosa ed in continua evoluzione, spesso presentano ambiguità ma hanno enorme potenza espressiva; Linguaggi formali, creati dall’uomo per scopi precisi, secondo regole convenzionali esplicite che non ammettono eccezioni e non consentono sinonimi e omonimie. 26 Caratteristiche dei linguaggi Il linguaggio è un sistema di segni, sistema in quanto i vari elementi di cui è formato funzionano insieme in sistema unitario. I segni sono le parole (stringhe) del linguaggio, che si usano per indicare l’associazione tra un dato percepibile ed un concetto. Ogni parola (significante) rappresenta un oggetto concreto, una persona, un ente astratto che la mente umana associa al messaggio (significato). 27 Elementi di un Linguaggio 1. 2. Alfabeto: insieme finito e non vuoto di simboli convenzionali espressi con segni tipografici detti caratteri Sintassi: insieme finito e non vuoto delle regole mediante le quali si formano le stringhe o le frasi di un linguaggio 28 Elementi di un Linguaggio 3. Semantica: insieme finito e non vuoto di significati da attribuire alle stringhe 4. Grammatica: insieme finito e non vuoto di tutte le regole che servono per generare un linguaggio 29 I Linguaggi nella Comunicazione Uomo-Macchina L’utilizzo di un linguaggio formale consente di passare da un algoritmo al corrispondente programma. Si dice programma una sequenza di istruzioni espresse in un linguaggio formale (linguaggio di programmazione) mediante le quali si può risolvere un problema. 30 Linguaggi e Automi Per ottenere la soluzione di un problema, una volta individuata la strategia risolutiva (algoritmo), si affida la messa in atto delle operazioni che essa prevede ad un esecutore (automa). Un automa è costruito per uno scopo determinato, ed è pertanto in grado di compiere il processo previsto per raggiungere l’obiettivo fissato, compiendo un numero finito di operazioni disposte, in risposta agli input che gli vengono forniti al momento dell’attivazione. Un elaboratore elettronico è un automa programmabile, è possibile cioè comunicare con esso usando linguaggi diversi, ciascuno finalizzato alla soluzione di una particolare classe di problemi. Nel calcolatore sono pertanto presenti simultaneamente una grande varietà di automi, ciascuno dei quali utilizza un opportuno linguaggio e quindi un particolare programma. 31 Lo schema seguente illustra i passaggi che conducono dalla formulazione del problema alla sua soluzione. Problema Risultati Elaborazione Algoritmo Programma sorgente Programma traduttore Programma oggetto 32 Rassegna dei Principali Software Il sistema operativo, che è il software di base ossia l’applicazione che controlla tutte le risorse del computer il word processor, per la realizzazione di testi scritti, che trasforma la macchina in un automa che ha sostituito le vecchie macchine da scrivere, con potenzialità assai più numerose e precise; il foglio di calcolo, per il calcolo di un’ampia gamma di funzioni, la realizzazione di tabelle per l’organizzazione e l’analisi di dati, la creazione di grafici descrittivi di fenomeni di varia natura (economici, statistici, fisici…); sistemi per la gestione di basi di dati, per la realizzazione di archivi di dati (insiemi organizzati di informazioni), la creazione di tabelle e la realizzazione di procedure per l’inserimento, la modifica e la consultazione dei dati archiviati secondo criteri prefissati; 33 Rassegna dei Principali Software programmi per la realizzazione di presentazioni multimediali, utile supporto per l’attività d’insegnamento, per l’esposizione di una relazione in ambito aziendale, per la presentazione di un evento; elaboratori digitali d’immagini e per la realizzazione di animazioni, con i quali è possibile ritoccare fotografie, realizzare fotomontaggi e immagini animate; programmi di grafica computerizzata, per ottenere semplici disegni od anche immagini di precisione da utilizzare in ambito professionale; editor di suoni, per la manipolazione e la realizzazione di file audio; editor di pagine web, ossia di file in formato HTML (HyperText Markup Language) pubblicabili sulla rete Internet, così da rendere i dati in essi contenuti consultabili direttamente con un programma di navigazione (browser). editor di suoni, per la manipolazione e la realizzazione di file audio; 34 Linguaggi di Programmazione Il passaggio dall’algoritmo risolutore di un problema al corrispondente programma avviene mediante la codifica dell’algoritmo attraverso un linguaggio di programmazione. I linguaggi di programmazione differiscono tra di loro per la simbologia adottata per descrivere le operazioni e per le regole sintattiche con cui si compongono le istruzioni. Tutti i linguaggi riproducono una stessa serie di operazioni e processi effettivamente eseguibili dell’elaboratore elettronico, ossia utilizzano una stessa tipologia di istruzioni. 35 Istruzioni dei Linguaggi Di Programmazione Istruzioni di dichiarazione, descrivono dati e variabili utilizzati dal programma, definendone tipo e struttura. Quanto più è evoluto il linguaggio, tanto più sono semplici le istruzioni per definire strutture complesse. Istruzioni di assegnazione, consentono di assegnare ad una variabile un valore dello stesso tipo della variabile. Istruzioni di controllo, sono istruzioni che richiedono salti di sequenza nell’esecuzione del programma. Rientrano in questa categoria le istruzioni di selezione e di iterazione e i salti incondizionati Istruzioni di input/output, richiedono l’ingresso di informazione da una periferica alla memoria centrale oppure l’uscita di una informazione dalla memoria centrale ad una periferica. 36 Gerarchie dei Linguaggi Di Programmazione L’ hardware del computer ha un suo linguaggio di programmazione detto linguaggio macchina ll linguaggio macchina manipola direttamente le sequenze di bit fornite dall' hardware, utilizzando le operazioni primitive dell' hardware stesso (operazioni aritmetiche). Programmare in linguaggio macchina è faticoso, costoso E comporta degli errori. Fin dagli anni 50 sono stati sviluppati linguaggi più evoluti, ciascuno dei quali progettato sopra un linguaggio più rudimentale. 37 Linguaggi di programmazione a basso livello Linguaggio macchina Le operazioni disponibili sono quelle direttamente fornite dall' hardware; ogni operazione è codificata da una sequenza di bit; ogni dato è indicato dall'indirizzo binario della parola di memoria in cui è memorizzato. Ogni indirizzo è espresso in modo assoluto (rispetto a tutta la memoria disponibile). Un programma è una sequenza di bit, che viene direttamente interpretata dall' hardware. Linguaggio assembler (o assemblativo) Le operazioni sono quelle direttamente fornite dall' hardware, ma sono indicate da nomi convenzionali (mnemonici); i dati sono indicati da nomi, che corrispondono a indirizzi. Gli indirizzi sono espressi in modo relativo rispetto all'inizio del programma, permettendo così modifiche più semplici. Il programma, per essere eseguito, viene tradotto in linguaggio macchina da un programma 38 traduttore detto assemblatore. Codice Binario Bit (Binary digit) unità elementare di informazione (0 circuito spento 1 circuito acceso). A= 00 B= 01 C= 10 O = 11 la parola babbo corrisponde alla stringa 01 00 01 01 11 Oggi il codice più utilizzato è il codice ASCII che usa sete o otto bit per rappresentare ogni singolo carattere. es. 01 00 00 01 A 01 00 00 11 C 01 00 00 00 @ 01 10 00 01 a 00 10 00 01 ! 00 11 11 11 ? Un gruppo di otto bit viene chiamato byte che è anche l’unità di misura della capacità di memoria. • Kilobyte (Kb 1024 byte ). • Megabyte (MB 1024 x 1024 = 1.048.576 byte). • Gigabyte (Gb 1024x1024x1024 = 1.073.741.824 byte). 39 Linguaggi di Programmazione ad Alto Livello Linguaggi procedurali Le operazioni disponibili sono ampie e non legate a quelle fornite dall' hardware. I dati sono indicati in modo totalmente indipendente dalla loro memorizzazione. Si tratta di linguaggi progettati affinchè la scrittura dei programmi sia semplice, elegante e, dunque, di facile comprensione e verifica. Per essere eseguito, un programma deve essere tradotto in linguaggio macchina da un programma traduttore detto compilatore , oppure deve essere interpretato (cioè eseguito da un altro programma, l'interprete). Linguaggi procedurali di rilievo sono (o sono stati) FORTRAN, COBOL, BASIC, Pascal, C. Tra i linguaggi procedurali alcuni sono detti orientati agli oggetti; tra questi ricordiamo C++ e Java. 40 Rassegna dei Principali Linguaggi FORTRAN (FORmula TRANslating system: sistema traduttore di formule) Ideato nei primi anni ’50 da John Backus, dipendente IBM, per consentire a tecnici e scienziati di risolvere problemi matematici in maniera automatica, senza ricorrere ai programmatori e con l’uso di una simbologia affine a quella matematica. Ha subito successive evoluzioni ed è utilizzato attualmente in ambito matematico. ALGOL (ALGOritmic Language: linguaggio algoritmico) Nato alla fine degli anni ’50, è stato sviluppato da Backus e Naur per applicazioni scientifiche. Importante caratteristica innovativa è la strutturazione del programma in blocchi, delimitati da un begin iniziale e da un end finale, che sarà ripresa dalla programmazione strutturata e dal linguaggio Pascal. 41 LISP (LISt Processor: elaboratore di liste) Linguaggio indirizzato alla manipolazione di espressioni simboliche e di dati strutturati ad albero, che risale alla fine degli anni ‘50. E’ applicato nella produzione di programmi traduttori, dato che le regole sintattiche di questi vengono rappresentate secondo una struttura ad albero. COBOL (COmmon Business Oriented Language: linguaggio orientato alle applicazioni commerciali) Ideato nel 1960 per sviluppare programmi per la soluzione di problemi aziendali nei campi dell’amministrazione e del commercio (fatturazione, contabilità, stipendi, organizzazione di dati, gestione di file,…), ha subito successive evoluzioni ed è tuttora utilizzato. 42 BASIC (Begginner’s All-purpose Symbolic Instruction Code: codice generale d’istruzioni simboliche per principianti) Nato all’inizio degli anni ’60, è un linguaggio algoritmico di carattere generale non indirizzato ad alcuna applicazione specifica e di facile apprendimento ed utilizzo. La sua semplicità e versatilità ne ha determinata la rapida ed ampia diffusione e la realizzazione di successivi aggiornamenti migliorativi. Da esso discendono i linguaggi visuali orientati agli oggetti (visual BASIC), con interfaccia grafica di facile utilizzo (pulsanti, finestre,…). 43 PL1 (Programming Language/1: linguaggio di programmazione/1) Ideato nel 1965 per implementare programmi appartenenti a diverse aree applicative, scientifiche e gestionali, riassume in sé le caratteristiche dei precedenti FORTRAN, ALGOL e COBOL. LOGO (dal greco: pensiero, discorso) Linguaggio adatto per l’apprendimento della logica della programmazione da parte dei bambini, fu ideato nel 1967. Il programmatore dispone di semplici comandi con i quali guida l’avanzamento di un cursore sullo schermo e riscontra gli effetti grafici del 44 programma prodotto. PASCAL (così denominato in onore del matematico francese Blaise Pascal). Ideato da Niklus Wirth nel 1970, con l’intento di realizzare un linguaggio che facilitasse l’insegnamento della scrittura di programmi, ha trovato e trova tuttora ampia applicazione in ambito didattico. Tale linguaggio consente un alto livello di strutturazione degli algoritmi e dei dati ed offre la possibilità di definire tipi di dati diversi da quelli standard. 45 C(linguaggio di programmazione C) La prima versione fu realizzata nel 1972 da Dennis Ritchie e si distingueva dai suoi predecessori per il fatto di implementare una vasta gamma di tipi di dato. E’ un linguaggio di alto livello che possiede un numero ristretto di parole chiave e di costrutti di controllo e un gran numero di operatori. Non possiede istruzioni di entrata/uscita né istruzioni per operazioni matematiche, ma questa sua apparente povertà di strumenti consente di realizzare qualsiasi programma in modo semplice. E’ stato definito “il linguaggio di più basso livello tra i linguaggi di alto livello”, perché è nato per lo sviluppo di sistemi operativi ossia software di basso livello, ma è un linguaggio potente come un linguaggio macchina e al tempo stesso di semplice utilizzo. Il sistema operativo UNIX è scritto con questo linguaggio. 46 C++ Nel 1983 Bjarne Stroustrup inventò C++, che, partendo dal linguaggio C del quale estende la sintassi, introduceva la programmazione Orientata agli Oggetti (Object Oriented), un modo innovativo di progettare un programma che rende il codice più semplice e riutilizzabile. JAVA Nato a metà degli anni ’90 ad opera della Sun Microsystem, è un linguaggio di programmazione Object Oriented utilizzabile su diverse piattaforme (Mac, PC, Unix e SGI) senza la necessità di modifiche o ricompilazioni. Si tratta di un linguaggio multipiattaforma, per il quale il compilatore non genera applicativi eseguibili dal computer, ma file che devono essere interpretati dalla JVM (Java Virtual Machine, un microprocessore virtuale) implementata sui vari sistemi. Ciò rende l’esecuzione di un’applicazione Java più lenta 47 dei programmi normali. PHP (Hypertext Pre-Processor) Linguaggio di scripting, si utilizza per scrivere programmi che vengono interpretati dal server su cui risiedono pagine web. Quando l’utente richiede una pagina web contenente uno script PHP, il server richiama un modulo PHP che interpreta ed esegue il codice, restituendo al server codice web semplice (HTML) che viene passato al browser dell’utente. Tale procedimento consente di costruire dinamicamente il contenuto della pagina web. 48 49