capitolo 4 i linguaggi per la formalizzazione dell...
Post on 26-Feb-2018
219 Views
Preview:
TRANSCRIPT
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
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
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)
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
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.
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
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
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
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))
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
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))
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
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.
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
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
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..
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.
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
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…
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
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
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
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……))
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 */
…}…
}
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
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
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
…
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
…
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
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)
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
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
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
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
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
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
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
Sì
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
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
Sì
w ←←←← a
z ←←←← 0
w > 0 ?
z ←←←← z+a
w ←←←← w-1
No y2 ←←←← quad(y)
funzione quad(a)
return (z)
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.
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…
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
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)
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
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()
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
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
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.
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
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
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
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,……
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
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
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))
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).
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
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
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
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.
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'
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
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à
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
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
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
Introduzione ai sistemi informatici 4/edDonatella Sciuto, Giacomo Buonanno, Luca Mari
Copyright © 2008 – The McGraw-Hill Companies srl
IpertestoIpertesto
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>
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
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>
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)……
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>
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)
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>
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>
top related