Capitolo 4 I linguaggi per la formalizzazione dell...

74
Introduzione ai sistemi informatici 4/ed Donatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2008 – The McGraw-Hill Companies srl Capitolo 4 Capitolo 4 I linguaggi per la formalizzazione I linguaggi per la formalizzazione dell dell informazione informazione

Transcript of Capitolo 4 I linguaggi per la formalizzazione dell...

Page 1: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Capitolo 4Capitolo 4

I linguaggi per la formalizzazione I linguaggi per la formalizzazione

delldell’’informazione informazione

Page 2: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

I linguaggi per la formalizzazione I linguaggi per la formalizzazione

dei processi di elaborazionedei processi di elaborazione

Page 3: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Alcuni concettiAlcuni concetti�� AlgoritmoAlgoritmo = = descrizione di come si risolve un problemadescrizione di come si risolve un problema

�� ProgrammaProgramma = = algoritmo scritto in modo che possa essere algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione)eseguito da un calcolatore (linguaggio di programmazione)

�� Linguaggio macchina Linguaggio macchina = = linguaggio effettivamente linguaggio effettivamente ““compresocompreso”” da un calcolatore, caratterizzato dada un calcolatore, caratterizzato da• istruzioni primitive semplici (e.g. max 2 operandi)

• attenzione all’efficienza (costi, complessità, velocità)

• difficile e noioso da utilizzare per un programmatore

�� Due aspetti rilevanti:Due aspetti rilevanti:•• produrre algoritmi produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema)

•• codificarli in programmicodificarli in programmi (cioè renderli comprensibili al calcolatore)

Page 4: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

LinguaggioLinguaggio di di ProgrammazioneProgrammazione

�� La La notazionenotazione con cui con cui èè possibilepossibile descriveredescrivere gligli

algoritmialgoritmi..

�� ProgrammaProgramma: : èè la la rappresentazionerappresentazione di un di un algoritmoalgoritmo

in un in un particolareparticolare linguaggiolinguaggio di di programmazioneprogrammazione..

�� OgniOgni linguaggiolinguaggio di di programmazioneprogrammazione disponedispone di un di un

insiemeinsieme di di ““parole parole chiavechiave”” (keywords)(keywords)

�� OgniOgni linguaggiolinguaggio èè caratterizzatocaratterizzato dada unauna sintassisintassi e e

dada unauna semanticasemantica

Page 5: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Sintassi e semanticaSintassi e semantica

�� Ogni linguaggio di programmazione Ogni linguaggio di programmazione èè

caratterizzato da due componenti, caratterizzato da due componenti,

complementari lcomplementari l’’una con luna con l’’altra:altra:

• la sua sintassisintassi, cioè l’insieme delle regole che specificano come comporre istruzioni ben formate;

• la sua semanticasemantica, che di ogni istruzione ben formata specifica il significato, e quindi la successione delle operazioni che vengono compiute allorché l’istruzione viene eseguita.

Page 6: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

ClassificazioneClassificazione

�� In base allIn base all’’astrazione:astrazione:

• Linguaggi di basso livello (vicini all’hardware):

• I generazione: linguaggi macchina (sequenze di bit)

• II generazione: linguaggi assemblativi (uso di codici mnemonici per le istruzioni)

• Linguaggi di alto livello (vicini all’utente):

• III generazione: linguaggi imperativi e procedurali di uso generale

• IV generazione: linguaggi per specifici ambiti applicativi

• V generazione: linguaggi di descrizione dei problemi orientati alla risoluzione automatica

Page 7: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Il Il linguaggiolinguaggio macchinamacchina

�� Il Il linguaggiolinguaggio macchinamacchina èè direttamentedirettamenteeseguibileeseguibile dalldall’’elaboratoreelaboratore, , senzasenza nessunanessunatraduzionetraduzione..• Istruzioni ed operandi relativi al programma in esecuzione sono caricati in memoria e quindi sonomemorizzati in forma binaria.

• Vincolo: conoscenza dei metodi dirappresentazione delle informazioni utilizzati.

�� Istruzione:Istruzione: carica nellcarica nell’’accumulatoreaccumulatore

1001000010010000 1100110011001100

Page 8: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Il Il linguaggiolinguaggio AssemblerAssembler�� Le Le istruzioniistruzioni corrispondonocorrispondono univocamenteunivocamente a a quellequelle

macchinamacchina, ma, ma vengonovengono espresseespresse tramitetramite nominomisimbolicisimbolici (parole (parole chiavechiave).).

�� Il Il programmaprogramma prima prima didi essereessere eseguitoeseguito devedeve essereesseretradottotradotto inin linguaggiolinguaggio macchinamacchina ((assemblatoreassemblatore).).

�� Vincolo: nVincolo: necessitecessitàà didi conoscereconoscere in in dettaglidettaglioo le le caratteristichecaratteristiche delladella macchinamacchina ((registriregistri, , dimensiondimensione deie dei datidati, set , set didi istruzioniistruzioni))

�� Anche sAnche sempliciemplici algoritmialgoritmi implicanoimplicano la la specificaspecifica didimoltemolte istruzioniistruzioni

Page 9: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

I I linguaggilinguaggi di alto livellodi alto livello�� SonoSono i i linguaggilinguaggi didi terzaterza generazionegenerazione. Le . Le istruzioniistruzioni

esprimonoesprimono unauna serieserie didi azioniazioni. Il . Il programmaprogramma prima prima

didi essereessere eseguitoeseguito devedeve essereessere tradottotradotto in in

linguaggiolinguaggio macchinamacchina ((traduttoretraduttore))

�� Il Il programmatoreprogrammatore pupuòò astrarreastrarre daidai dettaglidettagli legatilegati

allall’’architetturaarchitettura ed ed esprimereesprimere i i propripropri algoritmialgoritmi in in

modomodo simbolicosimbolico

�� SonoSono indipendentiindipendenti dalladalla macchinamacchina ((astrazioneastrazione))

Page 10: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Linguaggi di II/III generazioneLinguaggi di II/III generazione

Programma in linguaggioprocedurale

(Codice sorgente)

Programma in linguaggiomacchina

(Codice oggetto)

Tra

dutt

ore

Programma in linguaggioassemblatore

(Codice sorgente)

Programma in linguaggiomacchina

(Codice oggetto)

Ass

em

bla

tore

Page 11: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

SviluppoSviluppo didi un un ProgrammaProgramma

�� I I traduttoritraduttori sonosono programmiprogrammi particolari particolari cheche

provvedonoprovvedono aa convertireconvertire ilil codicecodice didi

programmiprogrammi scrittiscritti in un in un dato dato linguaggiolinguaggio didi

programmazioneprogrammazione ((sorgentisorgenti), ), nellanella

corrispondentecorrispondente rappresentazionerappresentazione in in

linguaggiolinguaggio macchinamacchina ((eseguibilieseguibili))

Page 12: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

CPU come interprete delCPU come interprete del

suo linguaggio macchinasuo linguaggio macchina

Unità Centrale di Elaborazione(CPU):

interprete ed esecutore del linguaggio macchina L

Unità Centrale di Elaborazione(CPU):

interprete ed esecutore del linguaggio macchina L

Memoria

Bus di sistema

Programma P in linguaggiomacchina L

Dati del programma P

Page 13: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Due tipi di traduttoriDue tipi di traduttori

�� CompilatoriCompilatori

• Accettano in ingresso l’intero programma eproducono in uscita la rappresentazione dell'interoprogramma in linguaggio macchina.

�� InterpretiInterpreti

• Traducono ed eseguono direttamente ciascunaistruzione del programma sorgente, istruzione per istruzione.

Page 14: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Com

pilato

reCom

pilato

re

Unità Centrale di Elaborazione

Unità Centrale di Elaborazione

Memoria

Bus di sistema

Programma P in un linguaggio ad alto livello L

Programma P’ in linguag-giomacchina della CPU

Programmacompilatore del linguaggio ad alto livello L

Dati del compilatore

Fase 1

Unità Centrale di Elaborazione

Unità Centrale di Elaborazione

Memoria

Bus di sistema

Dati del programmaP’

Programma P’ in linguaggio macchina

della CPU Fase 2

Page 15: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

InterpreteInterprete

Unità Centrale di Elaborazione

Unità Centrale di Elaborazione

Memoria

Bus di sistema

Programma P in un linguaggioad alto livello L

Dati del programma P

Programmainterprete del

linguaggio ad alto livello L

Dati dell’interprete

Page 16: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Due tipi di traduttori /2Due tipi di traduttori /2�� CompilatorCompilatorii

• Per ogni programma da tradurre, lo schema viene percorsouna volta sola prima dell’esecuzione.

�� InterpretInterpretii

• Lo schema viene attraversato tante volte quante sono le istruzioni che compongono il programma; ad ogniattivazione dell'interprete su una particolare istruzione, segue l’esecuzione dell’istruzione stessa.

�� LL’’esecuzioneesecuzione didi un un programmaprogramma compilatocompilato èè pipiùù

veloceveloce delldell’’esecuzioneesecuzione didi un un programmaprogramma

interpretinterpretatoato..

Page 17: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Interprete vs compilatoreInterprete vs compilatore�� Quale delle due soluzioni Quale delle due soluzioni èè la migliore?la migliore?

�� CompilazioneCompilazione• applicazioni più veloci • maggior lavoro nel processo di messa a punto e manutenzione• OK per i prodotti commerciali a larga diffusione.

�� InterpretazioneInterpretazione• consente tempi di sviluppo più contenuti, • produce programmi meno efficienti; • OK in fase di proto-tipazione dei programmi che, una volta ultimati,

venivano compilati prima del rilascio commerciale.

Page 18: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Paradigmi di programmazioneParadigmi di programmazione

�� EE’’ possibile affrontare il problema della possibile affrontare il problema della

descrizione dei programmi in modi differentidescrizione dei programmi in modi differenti

�� Soluzioni differenti costituiscono Soluzioni differenti costituiscono paradigmi paradigmi di programmazionedi programmazione differenti:differenti:

• Imperativo-procedurale

• A oggetti (OO)

• Funzionale

• Dichiarativo

�� In forma testuale o graficaIn forma testuale o grafica

Page 19: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Paradigma imperativo/proceduraleParadigma imperativo/procedurale

�� Idea generale: descrivere al calcolatore i Idea generale: descrivere al calcolatore i passi di risoluzione del problemapassi di risoluzione del problema

�� Codifica un algoritmo in un linguaggio Codifica un algoritmo in un linguaggio formale interpretabile dalla macchinaformale interpretabile dalla macchina• Passi elementari: indipendenti dal singolo calcolatore (astrazione)

• Il linguaggio deve definire istruzioni e strutture dati

• Passo di traduzione verso il linguaggio macchina

�� Molto diffusoMolto diffuso• Esempi: Fortran, Basic, Pascal, C…

Page 20: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Prodotto di due numeri naturaliProdotto di due numeri naturaliDati

aa, bb interi positivi

ww, zz interiRisoluzione

leggi aa e bb

zz ← 0

ww ← afinché ww > 0 ripeti

zz ← zz + bbww ← ww – 11

fine cicloscrivi zzfine

Inizio

Leggi a e b

Sì w > 0 ?

No

w ← a; z ← 0;

Scrivi z = a × b

Fine

z ← z + b w ← w – 1

Dichiarazione: a, b, w, z contengono numeri interi

Page 21: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Prodotto di due numeri naturaliProdotto di due numeri naturali

'prodotto, Basicdim a as integer, b as integerdim w as integer, z as integer

input a, bz = 0w = awhile w > 0

z = z + bw = w – 1

wendprint z

main() { /* prodotto C */unsigned int a, b;int w, z;

scanf("%d %d",&a,&b);z = 0;w = a;while (w > 0) {

z = z + b;w = w – 1;

}printf("%d", z);

}

Datia, b interi positiviw, z interi

Risoluzioneleggi a e bz ← 0w ← afinché w > 0 ripeti

z ← z + bw ← w – 1

fine cicloscrivi zfine

Programma in BASICProgramma in CAlgoritmo

Page 22: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Parti fondamentali di un programmaParti fondamentali di un programma

�� Identificazione Identificazione del programmadel programma

�� Dichiarazione Dichiarazione delle variabili utilizzate, di cui sono indicati delle variabili utilizzate, di cui sono indicati tipo e nometipo e nome

�� Specificazione della parte Specificazione della parte esecutiva esecutiva del programma, detta del programma, detta anche anche corpo del programmacorpo del programma

Page 23: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Le istruzioniLe istruzioni

�� Istruzioni di Istruzioni di ingresso/uscita (leggi, ingresso/uscita (leggi, printprint,,……))

�� Istruzioni Istruzioni aritmeticoaritmetico––logiche (+,*, and, or, logiche (+,*, and, or, notnot……))

�� Istruzioni Istruzioni di controllo (di controllo (ifif……thenthen……elseelse, , whilewhile……dodo……))

Page 24: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Selezione sempliceSelezione semplice

No

Sì condizio

ne

blocco istruzioni

condizione

Frammento BASIC

Frammento C

' Basic…

if condizione then' blocco istruzioni' eseguito solo se' condizione è true

…end if…

main() /* C */{ …

/* selezione semplice */if (condizione) {

/* blocco istruzionieseguito solo secondizione è true */

…}…

}

Page 25: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Selezione a due vieSelezione a due vie

Frammento BASICFrammento C

' Basic…' selezione a due vie if condizione then

… … ‘ blocco 1else

… … ‘ blocco 2end if…

main() /* C */{ …

/* selezione a due vie */if (condizione) {… … /* blocco 1 */

} else {… … /* blocco 2 */

}…

}

No Sì condizio

ne

blocco 1

condizione

blocco 2

Page 26: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Selezione a piSelezione a piùù vievieFrammento BASICFrammento C

' Basic… ' sel a più vieif cond_1 then… ' blocco_1

elseif cond_2 then… ' blocco_2

elseif … … then… ' blocco_...

elseif cond_n then… ' blocco_n

else… ' blocco_n+1

end if…

main() /* C */{ … /* sel a più vie */if (cond_1) {… /* blocco_1 */

} else if (cond_2) {… /* blocco_2 */

} else if (… …) {… /* blocco_... */

} else if (cond_n) {… /* blocco_n */

} else {… /* blocco_n+1*/

}…

}

cond_n

… …

No Sì

… …

blocco 1

cond_1

… …

blocco 2

cond_2

blocco … …

blocco

n

blocco

n+1

Page 27: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Ciclo a condizione inizialeCiclo a condizione iniziale

Frammento BASICFrammento BASICFrammento CFrammento C' Basic… … ' ciclo a condizione inizialewhile condizione… … ' blocco istruzioni' ripetuto finché condizione è true

wend… … ' eseguito quando condizione è false

main() /* C */{ … … /* ciclo a condizione iniziale */while (condizione) {… … /* blocco istruzioni *//* ripetuto finché condizione è true */

}… /* eseguito quando condizione è false */

}

No Sì condizio

ne

blocco istruzioni

condizione

Page 28: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Ciclo a condizione finaleCiclo a condizione finale

Frammento BASICFrammento BASICFrammento CFrammento C

' Basic… ' ciclo a condizione finaledo

… … ' blocco istruzioni' eseguito una volta e' ripetuto se cond è true

loop while cond… … ' eseguito se cond è false

main() /* C */{ … /* ciclo a condizione finale */

do {… … /* blocco istruzioni *//* eseguito una volta e

ripetuto se cond è true */} while (cond)… … /* eseguito se cond è false */

}

No

Sì cond

blocco istruzioni

Page 29: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

I datiI dati

�� Ogni variabile Ogni variabile èè caratterizzata dal suo caratterizzata dal suo tipotipo..

• Tipi predefiniti: numeri, caratteri, booleani, …

• Altri tipi: stringhe, date, …

�� Variabili strutturate:Variabili strutturate:

• Vettori (o array)

• Record

Page 30: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Variabili strutturateVariabili strutturate�� Consentono di riferirsi a piConsentono di riferirsi a piùù valori reciprocamente valori reciprocamente

correlati come se si trattasse di uncorrelati come se si trattasse di un’’unica variabile unica variabile aggregata:aggregata:

• Vettori (array)• Matrici (o array multidimensionali),• Record (con campi o attributi)

Page 31: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Uso degli Uso degli arrayarraysomma degli elementi di un vettoresomma degli elementi di un vettore

dim f(100) as integerdim w as integerdim z as integer…w = 1z = 0while w <= 100

z = z + f(w)w = w + 1

wendprint z…

main() { /* prodotto C */int f[100];int w, z;…w = 0;z = 0;while (w ≤ 99) {

z = z + f[w];w = w + 1;

}printf("%d", z);…

}

Datin = 100 interof[ ] vettore di interiw, z interi positivi

Risoluzione...w ← 1z ← 0finché (w ≤ n) ripeti

z ← z + f[w]w ← w + 1

fine cicloscrivi z...

Programma in BASICProgramma in BASICProgramma in CProgramma in CAlgoritmoAlgoritmo

Page 32: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Un esempio di matriceUn esempio di matriceEsempio:Esempio: il fatturato mensile di ogni prodotto di una aziendail fatturato mensile di ogni prodotto di una azienda

… … … … … … … … … … … …

… … … … … … … …

… … … …

… … … …

f[1,1] f[1,2] f[1,j] f[1,12]

f[2,1] f[2,2] f[2,j] f[2,12]

… … … … f[i,1] f[i,2] f[i,j] f[i,12]

… … … …

… … … … f[n,1] f[n,2] f[n,j] f[n,12]

Dati relativi al j-esimo mese

Dati relativi al

prodotto i-esimo

Page 33: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Uso dei recordUso dei recordEsempio:Esempio: definiamo il record PRODOTTO con 2 campi, nome e fatturatodefiniamo il record PRODOTTO con 2 campi, nome e fatturato

typetypetypetype prodotto ' Basicnome asasasas stringstringstringstring * DIMNOMEfatturato asasasas integerintegerintegerinteger

end end end end typetypetypetype' operazioni su prodottidimdimdimdim p asasasas prodotto… …p.fatturato = … …' assegna un valore al' fatturato del prodotto p

structstructstructstruct prodotto { /* C */charcharcharchar nome[DIMNOME];intintintint fatturato;

};mainmainmainmain()()()() /* operazioni su prodotti */{ structstructstructstruct prodotto p;

… …p.fatturato = … …;/* assegna un valore al

fatturato del prodotto p */}

Frammento BASICFrammento BASICFrammento CFrammento C

Page 34: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

ArrayArray o vettore di recordo vettore di record

type prodotto ' Basicnome as string * DIMNOMEfatturato as integer

end type' operazioni su prodottidim p(100) as prodotto… …p(5).fatturato = … …' assegna un valore al fatturato' del prodotto di indice 5

struct prodotto { /* C */char nome[DIMNOME];int fatturato;

};main() /* operazioni su prodotti */{ struct prodotto p[100] ;

… …p[5].fatturato = … … ;/* assegna un valore al fatturato

del prodotto di indice 5 */}

Frammento BASICFrammento BASICFrammento CFrammento C PRODOTTI Nome Fatturato 0 HT5231 129 000 1 HT5441 105 000 2 NS221 144 000 3 NS321 123 000 4 NS222 133 000 5 NS322 136 000 6 HT5321 139 000 7 HT5442 136 000 … … … … … … … 98 RX521 183 000 99 RX522 175 000

Page 35: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Uso dei sottoprogrammi (Uso dei sottoprogrammi (mainmain))

' Basic dim w as integerdim z as singledim fine as bool

fine = 0while not fineinput wif w > 0 thenz = media(w)print z

elsefine = -1

end ifwend

main() /* C */{ int w;float z;bool fine;

fine = 0;while (!fine) {scanf("%d",&w);if (w > –1) {z = media(w);printf("%d", z);

} else { fine = 1;

}}

}

Datiw intero (numero riga)z razionalefine booleano

Risoluzionefine ← falsefinché (non fine) ripetileggi wse (w > 0)z ← media(w)scrivi z

altrimentifine ← true

fine condizionefine ciclofine

Programma BASICProgramma CAlgoritmo

Page 36: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Uso dei sottoprogrammi (sub)Uso dei sottoprogrammi (sub)

Esempio:Esempio: calcolare il fatturato medio mensile di ogni prodottocalcolare il fatturato medio mensile di ogni prodotto

function media (w as integer)dim i as integerdim j as integerdim z as singledim p(100, 12) as integer

i = 1: j = 0while i <= 12

j = j + p(w, i)i = i + 1

wendz = j / 12media = zend function

float media(int w) {

int i,j;float z;intint p[100][12];

i = 0; j = 0;while (i < 12) {

j = j + p[w][i];i = i + 1;

}z = j / 12;return (z);

}

funzione media(w)Datii, j interiz razionale

p[ ] matrice di interiRisoluzionei ← 1 e j ← 0finché (i < 13) ripeti

j ← j + (p[w, i])i ← i + 1

fine cicloz = j / 12restituisci z

fine funzione

Programma in BASICProgramma in BASICProgramma in CProgramma in CAlgoritmoAlgoritmo

Page 37: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Senza sottoprogrammiSenza sottoprogrammi

mainmainmainmainmainmainmainmain() /* q = x2 + y2 */{ intintintintintintintint x,y,x2,y2,q,w,z;

scanf("%d %d",&x,&y);w = x;z = 0;whilewhilewhilewhilewhilewhilewhilewhile (w > 0) {

z = z + x;w = w – 1; }

x2 = z;w = y;z = 0;whilewhilewhilewhilewhilewhilewhilewhile (w > 0) {

z = z + y;w = w – 1; }

y2 = z;q = x2+y2;printf("%d", q);

}

Sì No

Inizio

Leggi x e y

w ←←←← x

z ←←←← 0

w > 0 ?

z ←←←← z+x

w ←←←← w-1

x2 ←←←← z

w ←←←← y

z ←←←← 0

z ←←←← z+y

w ←←←← w-1

w > 0 ? No

y2 ←←←← z

q ←←←← x2+y2

Scrivi

x2+y2=q

Fine

EsempioEsempio: z=x2+y2: z=x2+y2

Page 38: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Con sottoprogrammiCon sottoprogrammiEsempioEsempio:: z=xz=x22+y+y22

int quad (int a) {/* restituisce a2 /int w, z;w = a; z = 0;while (w > 0) {

z = z + a;w = w – 1; }

return (z); }

main() /* q = x2 + y2 */{ int x,y,x2,y2,q;

scanf("%d %d",&x,&y);x2 = quad(x);y2 = quad(y);q = x2+y2;printf("%d", q);}

Inizio

Leggi x e y

x2 ←←←← quad(x)

q ←←←← x2+y2

Scrivi

x2+y2=q

Fine

w ←←←← a

z ←←←← 0

w > 0 ?

z ←←←← z+a

w ←←←← w-1

No y2 ←←←← quad(y)

funzione quad(a)

return (z)

Page 39: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Sottoprogrammi ricorsiviSottoprogrammi ricorsivi�� Un sottoprogramma si dice ricorsivo se comprende se stesso nellaUn sottoprogramma si dice ricorsivo se comprende se stesso nella

propria definizionepropria definizione

�� Fattoriale (N!)Fattoriale (N!)• 0! = 1• 1! = 1• N! = N × (N–1)!• Per esempio, 4! = 4×3! = 4×(3×2!) = 4×(3×(2×1!)) = 4×3×2×1 = 24

�� Esercizio: cercare una soluzione non ricorsiva del problemi propEsercizio: cercare una soluzione non ricorsiva del problemi proposto.osto.

�� Esistono dei problemi la cui unica soluzione Esistono dei problemi la cui unica soluzione èè di tipo ricorsivo. Spesso di tipo ricorsivo. Spesso le strutture di dati che meglio si adattano alla soluzione di unle strutture di dati che meglio si adattano alla soluzione di un problema problema ben si prestano a essere gestite tramite procedure ricorsive, chben si prestano a essere gestite tramite procedure ricorsive, che e quindi, in questi casi, sono molto utili per migliorare lquindi, in questi casi, sono molto utili per migliorare l’’efficienza dei efficienza dei programmi.programmi.

Page 40: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Paradigma ad oggettiParadigma ad oggetti

�� Idea: imitare la realtIdea: imitare la realtàà

• Il programma si definisce come sequenze di interazioni tra oggetti dotati di un comportamento

• Gli oggetti reagiscono alle interazioni risolvendo la loro parte di problema

• E’ possibile usare oggetti senza conoscere la struttura ed il funzionamento interni

• Linguaggi Object Oriented e Object Based

�� Molto diffuso (adatto per progetti ampi)Molto diffuso (adatto per progetti ampi)

• Simula, Smalltalk, C++, Object Pascal, Java…

Page 41: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Classi e oggettiClassi e oggetti

�� Concetto di classeConcetto di classe• Una classe modella una entità del problema (ad esempio, la classe Studente e la classe Esame)

• Ha i propri metodi, funzioni che ne modificano lo stato interno e permettono di interagire con essa

• Ha le proprie proprietà, variabili interne che ne costituiscono lo stato modificate con i metodi

• Metodi e proprietà possono essere pubblici o privati (ovvero accessibili o meno dall’esterno)

�� Concetto di oggettoConcetto di oggetto• Una istanza singola di una classe è detta oggetto

Page 42: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

EsempioEsempio�� Classe AutomobileClasse Automobile

• Definisce l’idea astratta di automobile• Metodi: accendi(), spegni(), frena(T), accelera(T), sterza(angolo), apriportiera(quale)…

• Proprietà: ruote, livello carburante, velocità, velocità max, targa, numeroporte…

• Interfaccia: senza conoscerne i dettagli interni (ovvero come realizza le proprie funzionalità), è sufficiente chiamare i metodi visti per usarla

• Al suo interno potrebbe avere una proprietà privata di classe Motore (che fornisce i propri servizi a accelera(T)), oggetti di classe Portiera, oggetti di classe Freno…

�� Oggetto di classe automobileOggetto di classe automobile• Un oggetto di classe Automobile rappresenta una singola determinata automobile (con uno specifico valore per targa)

Page 43: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Caratteristiche della OOCaratteristiche della OO

�� EreditarietEreditarietàà• E’ possibile creare nuove classi (figlie) mediante ereditarietà, ovvero estendendo classi esistenti (padri) mediante aggiunta o sostituzione di metodi e proprietà creando una gerarchia di classi

�� PolimorfismoPolimorfismo• Ogni oggetto appartenente a una classe figlia appartiene anche a tutte le classi padre

�� OverloadingOverloading dei metodidei metodi• E’ possibile avere un comportamento diverso dei metodi se chiamati con parametri di tipi o numero diversi

Page 44: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

EsempioEsempio�� AutomobileAutomobile

• Gerarchia dei mezzi di trasporto: Automobile derivata da Motoveicolo per sfruttarne gli aspetti comuni; Motocicletta derivata da Motoveicolo; Motoveicolo derivato da Veicolo; FiatTipo, OpelAstraSW, RenaultKangoo, FerrariF40 derivate da Automobile per specializzarne i comportamenti standard

• Automobile può ereditare frena() e sterza() da Veicolo ed accendi(), spegni() da Motoveicolo ma non apriportiera() che le è proprio (Moto è derivata da Motoveicolo e quindi apriportiera non può essere un metodo di Motoveicolo)

• FiatTipo, OpelAstraSW, RenaultKangoo e FerrariF40 ereditano tutto da Automobile ma fissano propri valori per numeroporte e velocitàmax e modificano i comportamenti di accelera() e frena()

Page 45: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

�� Esempio di interfaccia utente di un programma a oggetti: tutti gEsempio di interfaccia utente di un programma a oggetti: tutti gli elementi che li elementi che sono inclusi nella finestra sono oggetti che vengono attivati dasono inclusi nella finestra sono oggetti che vengono attivati da eventi generati eventi generati dalldall’’utente operando con la tastiera o il mouse.utente operando con la tastiera o il mouse.

Esempio: interfaccia utenteEsempio: interfaccia utente

Page 46: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Esempio IU: oggetti e metodiEsempio IU: oggetti e metodi

Page 47: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

RiusoRiuso�� Distinzione tra lDistinzione tra l’’attivitattivitàà didi

• creazione di classiper esempio programmare per creare una nuova classe “pulsante” (magari con caratteristiche particolari, cioè con specifici metodi o proprietà),

• uso di classi esistenti, attraverso la generazione di loro istanze, cioè di oggetti,per esempio programmare per istanziare la classe “pulsante” e creare così dei pulsanti sulla finestra di un’applicazione.

�� Naturalmente queste attivitNaturalmente queste attivitàà devono essere realizzate in successione: devono essere realizzate in successione: prima si creano le classi, poi si usano per creare oggetti e perprima si creano le classi, poi si usano per creare oggetti e perciò ciò applicazioni.applicazioni.

�� Uno dei punti di forza della programmazione a oggetti deriva dalUno dei punti di forza della programmazione a oggetti deriva dalla la sostanziale autonomia di cui godono le classi, che possono venirsostanziale autonomia di cui godono le classi, che possono venire e create e quindi create e quindi ““impacchettateimpacchettate””, pronte per essere distribuite ai , pronte per essere distribuite ai programmatori che ne vorranno fare uso. In questo modo i programmatori che ne vorranno fare uso. In questo modo i programmatori applicativi possono operare in ambienti di sviluppprogrammatori applicativi possono operare in ambienti di sviluppo assai o assai ricchi di funzionalitricchi di funzionalitàà, grazie alla disponibilit, grazie alla disponibilitàà di classi che arricchiscono di classi che arricchiscono il linguaggio di programmazione impiegato.il linguaggio di programmazione impiegato.

Page 48: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Paradigma funzionaleParadigma funzionale

�� Idea generale: unificare dati e istruzioni, Idea generale: unificare dati e istruzioni, considerando un programma come una serie considerando un programma come una serie di funzioni innestatedi funzioni innestate

�� Esempi Esempi • Lisp: un unico costrutto,detto lista • print 12 + 23 diventa

(print (+ 12 23))

• LabView, Simulink: linguaggi grafici

1

J.s+beta

1

La.s+Ra

1s

1s

L* u

A* u

B* u

C* u

kv

kkt

Page 49: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Paradigma dichiarativoParadigma dichiarativo

�� Idea: descrivere le caratteristiche della Idea: descrivere le caratteristiche della

soluzione con soluzione con dichiarazionidichiarazioni che le che le

descrivono piuttosto che il procedimento per descrivono piuttosto che il procedimento per

ottenerla ottenerla

• Il programma viene eseguito da un risolutore di problemi che determina la strategia migliore

• Paradigma utilizzabile in campi specifici

�� Esempi: Esempi: PrologProlog, SQL, SQL

Page 50: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

I linguaggi per la descrizione e I linguaggi per la descrizione e

la manipolazione dei datila manipolazione dei dati

Page 51: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Descrizione e manipolazione datiDescrizione e manipolazione dati

�� I tradizionali linguaggi per la descrizione dei I tradizionali linguaggi per la descrizione dei processi di elaborazione trattano i dati in processi di elaborazione trattano i dati in maniera genericamaniera generica• Disponibilità di strutture dati complesse ma necessità di definirle da parte del programmatore caso per caso

• Strutture regolari

�� NecessitNecessitàà di linguaggi specifici per la di linguaggi specifici per la definizione e la manipolazione di datidefinizione e la manipolazione di dati

�� Esempi: SQL, ER, HTML, XML,Esempi: SQL, ER, HTML, XML,……

Page 52: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

SQLSQL

�� Linguaggio per la definizione e la Linguaggio per la definizione e la

manipolazione di dati secondo il manipolazione di dati secondo il modello modello relazionalerelazionale

• La parte di definizione dei dati ne descrive la struttura in termini di relazioni (o tabelle) e vincoli

• La parte di manipolazione è un linguaggio dichiarativo

Page 53: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

TabellaTabella� Rappresentazione sotto

forma di tabella dell’arraydi record definito e utilizzato nei frammenti di codice riportato precedentemente.

� Il numero riportato alla sinistra di ogni riga rappresenta l’indice dell’array (in questo caso a partire da 0 e quindi in accordo alla sintassi C) ed èutilizzato per accedere al contenuto del corrispondente record.

PRODOTTI Nome Fatturato 0 HT5231 129 000 1 HT5441 105 000 2 NS221 144 000 3 NS321 123 000 4 NS222 133 000 5 NS322 136 000 6 HT5321 139 000 7 HT5442 136 000 … … … … … … … 98 RX521 183 000 99 RX522 175 000

Page 54: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Il modello relazionaleIl modello relazionale�� Nelle situazioni in cui la quantitNelle situazioni in cui la quantitàà di dati da di dati da

elaborare e archiviare elaborare e archiviare èè molto grande lmolto grande l’’accesso accesso diretto diventa di fatto inapplicabile perchdiretto diventa di fatto inapplicabile perchééinefficiente. In queste condizioni si impiegano dei inefficiente. In queste condizioni si impiegano dei sistemi per la gestione di basi di dati sistemi per la gestione di basi di dati ((Database Database Management SystemManagement System, DBMS), DBMS)

�� Tra i modelli di organizzazione ed elaborazione dei Tra i modelli di organizzazione ed elaborazione dei dati quello che si dati quello che si èè diffuso di pidiffuso di piùù èè il il modello modello relazionalerelazionale

�� Un DataBase Relazionale Un DataBase Relazionale èè costituito da un insieme costituito da un insieme di tabelle e di vincoli su e tra di essedi tabelle e di vincoli su e tra di esse

�� Ogni tabella Ogni tabella èè caratterizzata da uno caratterizzata da uno schemaschema(l(l’’insieme dei suoi insieme dei suoi campicampi) fisso per ogni record ) fisso per ogni record ((tuplatupla))

Page 55: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Il modello relazionaleIl modello relazionaleSTUDENTI

Matr Cognome Nome Nato_il Nato_a

3571 Banfi Alessandro 19/02/1982 Milano

999 Bosio Umberto 27/01/1983 Aosta

2805 Castelnuovo Andrea 06/05/1982 Torino

3719 Colpi Marco 15/01/1983 Genova

773 Izzo Stefania 08/10/1982 Firenze

3672 Librandi Silvia 12/03/1983 Bologna

1539 Longoni Mauro 05/02/1983 Venezia

3500 Matta Vera 26/04/1982 Roma

1886 Merlo Andrea 05/05/1983 Trento

1427 Morelli Riccardo 14/04/1982 Trieste

2608 Ornaghi Gabriele 09/09/1982 Perugia

3711 Panico Andrea 29/05/1982 Pescara

1940 Poretti Stefania 20/02/1982 Ancona

1814 Quaglia Andrea 13/08/1982 Napoli

1662 Salmoiraghi Veronica 19/09/1982 Cagliari

2744 Sterlocchi Elena 29/06/1982 Palermo

3024 Tarantola Marcello 17/06/1982 Reggio Calabria

3527 Valentini Samuele 10/07/1982 Bari

3615 Venturi Anita 28/07/1982 Potenza

681 Zaccaretti Carolina 23/02/1983 Campobasso

ISCRITTI

Matr Codice

2805 IG06

3527 BA03

1940 IG10

773 IG11

1539 IG05

1940 IG03

3672 ICT3

681 ICT2

1886 IG05

1940 ICT1

3500 BA08

1886 IG01

3024 BA01

3719 IG10

3672 IG08

773 ICT2

3719 IG06

1814 ICT2

2744 BA09

2744 IG03

2805 IG09

CORSI

Codice Titolo Settore Tipo Crediti

BA01 Analisi Matematica I MAT/05 Base 7.5

BA02 Analisi Matematica II MAT/05 Base 7.5

BA03 Elettromagnetismo FIS/01 Base 5

BA04 Fond. Meccanica Teorica e Applicata ING-IND/13 Affine 5

ICT1 Fond. Informatica I (laboratorio) ING-INF/05 Affine 4

IG01 Elettrotecnica ING-IND/31 Affine 5

IG02 Fisica Tecnica ING-IND/10 Affine 5

ICT2 Fond. Informatica II ING-INF/05 Base 6

IG03 Fond. Automatica ING-INF/04 Caratt. 5

… … … … … … …

IG04 Economia Organizzazione Aziendale ING-IND/35 Caratt. 10

IG05 Gestione Produzione Industriale ING-IND/17 Caratt. 10

BA09 Ricerca Operativa MAT/09 Base 5

ICT3 Produzione Assistita Calcolatore ING-IND/16 Caratt. 5

IG09 Sistemi di Controllo di Gestione ING-IND/35 Caratt. 5

IG10 Logistica Industriale ING-IND/17 Caratt. 5

IG11 Gestione Aziendale ING-IND/35 Caratt. 5

IG12 Gestione della Qualità ING-IND/17 Caratt. 5

StudentiStudenti ((MatrMatr, Cognome, Nome, Nato_il, Nato_a);, Cognome, Nome, Nato_il, Nato_a);

CorsiCorsi (Codice, Titolo, Settore, Tipo, Crediti);(Codice, Titolo, Settore, Tipo, Crediti);

IscrittiIscritti ((MatrMatr, Codice)., Codice).

Page 56: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Vincoli principaliVincoli principali�� Vincolo di dominio:Vincolo di dominio:

• Impone ad ogni campo un tipo definito ed eventualmente un range di valori valido

�� Vincolo di chiave:Vincolo di chiave:• Si definisce chiave di una tabella un campo, o un insieme di campi, il cui contenuto sia garantito unico tra i vari record della tabella

�� Vincolo di chiave esterna:Vincolo di chiave esterna:• La chiave primaria viene impiegata anche per mettere in corrispondenza record appartenenti a tabelle diverse, vincolando i valori presenti in un certo campo ad assumere solo valori esistenti nella chiave di un’altra tabella

Page 57: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

SQL per la definizione dei dati (DDL)SQL per la definizione dei dati (DDL)�� SQL prevede specifici costrutti per la creazione e SQL prevede specifici costrutti per la creazione e

ll’’eliminazione di tabelle del DB.eliminazione di tabelle del DB.

�� EsempiEsempi• generare tabelle

CREATE TABLE StudentiCREATE TABLE Studenti CREATE TABLE CorsiCREATE TABLE Corsi CREATE TABLE IscrittiCREATE TABLE Iscritti(( [[MatrMatr]] integerinteger,, (( [Codice][Codice] text:4,text:4, (( [[MatrMatr]] integerinteger,,[Cognome][Cognome] text:50, text:50, [Titolo][Titolo] text:50,text:50, [Codice][Codice] text:4)text:4)[Nome][Nome] text:50, text:50, [Crediti][Crediti] single,single,[Nato il][Nato il] data, data, [Settore][Settore] text:10,text:10,[Nato a][Nato a] text:50)text:50) [Tipo][Tipo] text:10)text:10)

• rimuovere una tabella dal DB

DROP TABLE StudentiDROP TABLE Studenti

Page 58: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

SQL per la manipolazione (DML)SQL per la manipolazione (DML)�� LL’’elemento di base di questa parte del linguaggio elemento di base di questa parte del linguaggio èè il il

seguente (detto anche seguente (detto anche ““blocco SQLblocco SQL””):):

SELECTSELECT C1, C1, ……, , CnCnFROMFROM T1, T1, ……, Tm, TmWHEREWHERE PP

• parte dalle tabelle T1, T1, ……, , TmTm• come risultato della sua esecuzione genera una nuova tabella il cui schema è definito dai campi C1, C1, ……, , CnCn estratti dalle tabelle di partenza

• la tabella finale comprende i record che si generano combinando i record compresi nelle tabelle di partenzacombinando i record compresi nelle tabelle di partenza, con il vincolo che la condizione P sia soddisfatta.

• Si noti che vengono definite le caratteristiche della soluzione

Page 59: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Esempio di Esempio di queryquery SELECT in SQLSELECT in SQLSELECTSELECT MatrMatr, Cognome, Nome, Cognome, NomeFROMFROM StudentiStudentiWHEREWHERE Nato_a = 'Milano'Nato_a = 'Milano'

genera una nuova tabella il cui schema genera una nuova tabella il cui schema èè ((MatrMatr, Cognome, Nome), Cognome, Nome) e che e che comprende lcomprende l’’elenco degli studenti nati a Milano.elenco degli studenti nati a Milano.

SELECT SELECT Studenti.MatrStudenti.Matr, Cognome, Nome, Cognome, NomeFROM Studenti, Iscritti, CorsiFROM Studenti, Iscritti, CorsiWHERE WHERE Studenti.MatrStudenti.Matr = = Iscritti.MatrIscritti.MatrANDAND Iscritti.Codice = Corsi.CodiceIscritti.Codice = Corsi.CodiceAND Corsi.Titolo = AND Corsi.Titolo = ““Fondamenti di Informatica IIFondamenti di Informatica II””

ORDER BY CognomeORDER BY Cognome

genera una tabella con lgenera una tabella con l’’elenco, ordinato per cognome, degli studenti elenco, ordinato per cognome, degli studenti iscritti al corso di iscritti al corso di ““Fondamenti di Informatica IIFondamenti di Informatica II””, e per ognuno di essi , e per ognuno di essi include il numero di matricola, il cognome e il nome.include il numero di matricola, il cognome e il nome.

Page 60: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

SQlSQl per la modifica dei dati (DML)per la modifica dei dati (DML)�� I costrutti di manipolazione prevedono la possibilitI costrutti di manipolazione prevedono la possibilitàà di inserire, eliminare e di inserire, eliminare e

modificare il contenuto di record selezionati di una tabella.modificare il contenuto di record selezionati di una tabella.

�� EsempiEsempi• inserisce nella tabella Studenti due nuovi record

INSERT INTOINSERT INTO StudentiStudenti(4321, 'Rossi', 'Paolo', 12.12.1980, 'Milano')(4321, 'Rossi', 'Paolo', 12.12.1980, 'Milano')(4322, 'Bianchi', 'Luca', 21.08.1980, 'Roma')(4322, 'Bianchi', 'Luca', 21.08.1980, 'Roma')

• cancella dalla tabella Studenti tutti i record che soddisfano la condizione indicata

DELETE FROMDELETE FROM StudentiStudentiWHEREWHERE MatrMatr < 1000< 1000

• modifica come specificato il contenuto del campo Crediti della tabella Corsi per tutti i record che soddisfano la condizione specificata

UPDATEUPDATE CorsiCorsiSETSET Crediti = 6Crediti = 6WHEREWHERE Titolo = 'Elettromagnetismo'Titolo = 'Elettromagnetismo'

Page 61: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

ER (ER (EntityEntity--RelationshipRelationship))

�� Linguaggio (grafico) per la definizione di Linguaggio (grafico) per la definizione di

modelli dei datimodelli dei dati

• Formalismo utilizzato per descrivere la struttura dei dati di un problema e i relativi vincoli

• Usato per l’analisi e la progettazione di basi di dati

�� Linguaggio con primitive graficheLinguaggio con primitive grafiche

• La forma grafica facilita il processo di progettazione e di condivisione dell’informazione strutturata tramite i diagrammi ER

• Descrive il modello concettuale dei dati

Page 62: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Modello concettuale dei datiModello concettuale dei dati�� Modello dei datiModello dei dati èè la descrizione (mediante un linguaggio formale) della la descrizione (mediante un linguaggio formale) della

realtrealtàà che si vuole rappresentare.che si vuole rappresentare.

�� Tipicamente un modello ER dei dati Tipicamente un modello ER dei dati èè costituito da:costituito da:

•• entitentitàà, organizzate in insiemi di entitinsiemi di entitàà

•• attributiattributi, ognuno caratterizzato da un insieme di valoriinsieme di valori e valutabile su un insieme di entità, nel senso che a ogni entità dell’insieme è associato un valore dell’attributo

•• relazionirelazioni, particolari attributi caratterizzati da un insieme di valori che è in effetti un insieme di entità

Page 63: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Modello concettuale dei datiModello concettuale dei dati

0:M

0:N STUDENTE CORSO

Anno di corso {1,2,3,4}

Iscritto regolarmente {vero, falso}

Matricola Codice

Denominazione

Esami

sostenuti

Page 64: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

HTML (HTML (HyperTextHyperText Markup Markup LanguageLanguage))

�� Linguaggio per la descrizione di ipertestiLinguaggio per la descrizione di ipertesti

• Formalismo utilizzato per descrivere la struttura e i collegamenti di un ipertesto (dati non strutturati)

• Arricchisce i contenuti di un documento ipertestuale con tag che descrivono l’organizzazione dello stesso (paragrafi, titoli di vari livelli, liste, tabelle, evidenziazione di parti di testo,…)

�� Limitate capacitLimitate capacitàà di input (di input (formform) per ) per

ll’’interazione sul webinterazione sul web

Page 65: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

IpertestoIpertesto�� IpertestoIpertesto èè un documento la cui un documento la cui

struttura di consultazione non struttura di consultazione non èèlinearelineare• le parti di cui è logicamente costituito

sono organizzate non semplicemente in successione, ma secondo una struttura più complessa;

• ogni nodo può contenere degli anchorpoint, per relazioni (link o hyperlink) che rimandano ad altre parti (target) del documento.

�� Se lSe l’’ipertesto ipertesto èè consultato tramite consultato tramite un calcolatore, gli un calcolatore, gli anchoranchor pointpointpresenti nella parte visualizzata presenti nella parte visualizzata sono sono ““aree attivearee attive”” la cui selezione la cui selezione ((pointpoint--andand--clickclick) ha come risultato ) ha come risultato ll’’attivazione di un link e quindi la attivazione di un link e quindi la visualizzazione del contenuto della visualizzazione del contenuto della parte relazionata.parte relazionata.

�� Se lSe l’’ipertesto contiene anche ipertesto contiene anche riferimenti a contenuti audio/video riferimenti a contenuti audio/video èè detto ipertesto multimedialedetto ipertesto multimediale

Link

Target

Anchor point

Page 66: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

IpertestoIpertesto

Page 67: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

HTML: HTML: la struttura del documento la struttura del documento �� Un documento HTML Un documento HTML èè costituito da 2 parti fondamentali:costituito da 2 parti fondamentali:

• HEAD: contiene le informazioni relative, per esempio:• titolo della pagina visualizzato sulla barra di Explorer

• informazioni utili per i motori di ricerca (Google, Yahoo, ect…)

• BODY: contiene il documento vero e proprio (la pagina)

�� Struttura tipicaStruttura tipica<HTML><HTML><HEAD><HEAD>

…… descrizione delle caratteristiche del documento descrizione delle caratteristiche del documento ……</HEAD></HEAD><BODY><BODY>

…… documento documento ……</BODY></BODY>

</HTML></HTML>

Page 68: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

<HTML><HEAD>

<TITLE>

</TITLE>

</HEAD>

<BODY><H1></H1>

<DIV>

<P><A>

<P>

<DIV>

<H1></H1><BODY>

</HEAD>

</TITLE>

<TITLE><HEAD>

<HTML>

</DIV>

H1

BODYBODY

HTML

HTML: la struttura dei documentiHTML: la struttura dei documenti

</HTML></BODY>

</DIV>

</P>

</A>

</HTML>

<P>

</P><BR>

HTML

HEADHEAD

TITLE

</BODY>

TITLE

H1 DIVDIV

A

P </P>P

A

<A>

</A>

PP

<P>

</P><BR>

BRBR

Page 69: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Un esempio di Un esempio di formform<H3>Esempio di un <I>form</I> compilabile da parte dell'utente</H3><FORM METHOD="post" ACTION="scripts/formman.exe">Condizione di ricerca: <INPUT TYPE="text" NAME="con dizione"><BR>Riporta i risultati della ricerca in forma:<INPUT TYPE="radio" NAME="modo" VALUE="breve" CHECK ED>breve<INPUT TYPE="radio" NAME="modo" VALUE="estesa">este sa<BR><INPUT TYPE="submit" VALUE="Esegui la ricerca"></FORM>

Page 70: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

XML (XML (eXtensibleeXtensible markup markup languagelanguage))

�� Linguaggio per la definizione di linguaggi di Linguaggio per la definizione di linguaggi di descrizione dei datidescrizione dei dati• Metalinguaggio

• Permette la definizione di tag personalizzati

• Usato per formalizzare linguaggi di descrizione dei dati per problemi specifici

• Linguaggio simile a ma “più potente” di HTML

�� Definizione: DTD e XML SchemaDefinizione: DTD e XML Schema

�� Manipolazione: XSLT (trasformazione), Manipolazione: XSLT (trasformazione), XQueryXQuery (estrazione)(estrazione)……

Page 71: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Esempio XMLEsempio XML

<?xml version=“1.0” standalone=“yes” ?> <! -- Esempio di bibliografia --> <BIB> <LIBRO nome=“Info”> <AUTORE id=“dony”> D. Sciuto </AUTORE> <AUTORE id=“jack”> G. Buonanno </AUTORE> <AUTORE id=“luca”> L. Mari </AUTORE> <AUTORE id=“mau” role=“collab”> M. Iacono </AUTORE > <TITOLO> Introduzione ai sistemi informatici </TIT OLO> <EDITORE> McGraw-Hill Italia </EDITORE> <ANNO> 2008 </ANNO> </LIBRO> <LIBRO> <AUTORE idref=“luca”/> <TITOLO> Accesso a database via Web </TITOLO> <EDITORE> Apogeo </EDITORE> <ANNO> 2001 </ANNO> </LIBRO> </BIB>

Page 72: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Esempio DTD e Esempio DTD e XMLSchemaXMLSchema

<!DOCTYPE bib [ <!ELEMENT BIB (LIBRO+)>

<!ELEMENT LIBRO (AUTORE+, TITOLO, EDITORE?, ANNO?)> <!ATTLIST LIBRO isbn CDATA #IMPLIED nome CDATA #IMPLIED> <!ELEMENT AUTORE (#PCDATA)> <!ATTLIST AUTORE id ID #IMPLIED idref IDREF #IMPLIED> <!ELEMENT TITOLO (#PCDATA)> <!ELEMENT EDITORE (#PCDATA)> <!ELEMENT ANNO (#PCDATA)> ]>

<xsd:schema xmlns:xsd=“http://www.w3.org/1999/XMLSc hema”> <xsd:element name=“LIBRO” type=“BOOKTYPE”/> <xsd:complexType name=“BOOKTYPE” > <xsd:element name=“AUTORE” type=“xsd:string” minOccurs=“1” maxOccurs=“unbounded”/> <xsd:element name=“TITOLO” type=“xsd:string”/> <xsd:element name=“EDITORE” type=“xsd:string” minOccurs=“0” maxOccurs=“1”/> <xsd:element name=“ANNO” type=“xsd:decimal” minOccurs=“0” maxOccurs=“1”/> <xsd:attribute name=“isbn” type=“xsd:string”/> <xsd:attribute name=“nome” type=“xsd:string”/> </xsd:complexType> </xsd:schema>

(a) (b)

Page 73: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Esempio XSLTEsempio XSLT<?xml version="1.0" ?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output method="xml" indent="yes"/> <xsl:template match="/">

<AUTORI> <xsl:apply-templates/> </AUTORI></xsl:template><xsl:template match="/BIB/LIBRO"><xsl:for-each select= "AUTORE"><xsl:if test="@id">

<AUTORENOTO codename="{@id}"><xsl:value-of select="text()" /></AUTORENOTO>

</xsl:if></xsl:for-each></xsl:template></xsl:stylesheet>

Applicando il filtro all’esempio XML visto l’XML risultante è il seguente:

<?xml version="1.0" encoding="UTF-8"?><AUTORI>

<AUTORENOTO codename="dony"> D. Sciuto </AUTORENOTO><AUTORENOTO codename="jack"> G. Buonanno </AUTORENOTO>

<AUTORENOTO codename="luca"> L. Mari </AUTORENOTO><AUTORENOTO codename="mau"> M. Iacono </AUTORENOTO>

</AUTORI>

Page 74: Capitolo 4 I linguaggi per la formalizzazione dell ...logica.uniroma3.it/csginfo/architetture/old-0910/materiale/... · Introduzione ai sistemi informatici 4/ed Donatella Sciuto,

Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari

Copyright © 2008 – The McGraw-Hill Companies srl

Esempio Esempio XQueryXQuery

XQuery che genera unarisposta in HTML

<html><head/><body>{for $libro in doc("bibliografia.xml")

//LIBROorder by $libro/ANNO/text()return<span><h1>{ $libro/TITOLO/text() }</h1><i>{$libro/EDITORE/text()}</i>{$libro/ANNO/text()}

</span>}</body></html>

Risposta<html><head/><body><span><h1> Accesso a database via Web </h1><i> Apogeo </i> 2001

</span><span><h1> Introduzione ai sistemi informatici </h1><i> McGraw-Hill Italia </i> 2008

</span></body>

</html>