SQL SQL. Domini elementari. Domini. Domini elementari, 2. Definizione di domini

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "SQL SQL. Domini elementari. Domini. Domini elementari, 2. Definizione di domini"

Transcript

1 Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versione dell ; vediamo gli aspetti essenziali non i dettagli storia : prima proposta SEQUEL (IBM Reserach, 1974); prima implementazione in /DS (IBM, 1981); dal 1983 ca., standard di fatto standard (1986, poi 1989, 1992 e infine 1999) recepito in parte; 2 Domini Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili) Domini elementari Carattere: singoli caratteri o stringhe, anche di lunghezza variabile character [ varying ] [ ( Lunghezza ) ] [ character set NomeFamigliaCaratteri ] [ collate NomeRegoleConfronto] Bit: singoli booleani o stringhe bit [ varying ] [ ( Lunghezza ) ] Numerici, esatti e approssimati: numeric [( Precisione [, Scala ) ] ] integer float [( Precisione )] double precision 3 4 Domini elementari, 2 Data, ora, intervalli: date time [( Precisione )] [ with time zone ] timestamp [( Precisione )] [ with time zone ] interval UnitàDiTempo [ to UnitàDiTempo ] Stringhe binarie: blob [( Lunghezza )] Valori booleani: True/False/Unknown boolean Definizione di domini Istruzione CREATE DOMAIN: definisce un dominio (semplice), utilizzabile in definizioni di relazioni Sintassi create domain NomeDominio as Tipo [ Default ] [ Vincoli ] Default (utilizzabili anche nella CREATE TABLE) default < Valore user null > Esempio create domain Voto as smallint default null check ( value >=18 and value <= 30 ) 5 6 1

2 Vincoli intrarelazionali not null (su singoli attributi) unique: permette di definire chiavi; sintassi: per singoli attributi: unique dopo il dominio chiavi formate da più attributi: unique ( Attributo {, Attributo } ) primary key: definizione della chiave primaria (una sola, implica not null); sintassi, come per unique check, vedremo più avanti Vincoli intrarelazionali, esempi Nome character(20) not null, Cognome character(20) not null, unique (Cognome,Nome) è diverso da: Nome character(20) not null unique, Cognome character(20) not null unique 7 8 Vincoli interrelazionali check, vedremo più avanti references e foreign key (chiave esterna) permettono di definire vincoli di integrità referenziale; sintassi: per singoli attributi: references dopo il dominio riferimenti su più attributi: foreign key( Attributo {, Attributo } ) references... è possibile associare politiche di reazione alla violazione dei vincoli (causate da modifiche sulla tabella esterna, cioè quella cui si fa riferimento) Richiamo: base di dati con vincoli di integrità referenziale infrazioni Codice Data Vigile Prov Numero /9/ MI 3K /12/ MI 6D /12/ RM 7C /1/ RM 7C /3/ MI 6D5563 vigili Matricola Cognome Nome 343 Rossi Luca 476 Neri Pino 548 Nicolosi Gino automobili Prov Numero Proprietario MI 3K9886 Nestore MI 6D5563 Nestore RM 7C5567 Menconi RM 1A6673 Mussone MI 5E7653 Marchi 9 10 Vincoli interrelazionali, esempio create table Infrazioni( Codice character(6) primary key, Data date not null, Vigile integer not null references Vigile(Matricola), Provincia character(2), Numero character(6), foreign key(provincia, Numero) references Automobili(Provincia, Numero) ) Infrazioni e una tabella interna, Vigile e Automobili sono esterne 11 Violazione dei vincoli per tutti i vincoli visti fino ad ora si assume che se violati a causa di un aggiornamento, il comando di aggiornamento venga rifiutato segnalando l errore all utente. per i vincoli di integrità referenziale, permette di scegliere altre reazioni da adottare quando viene rilevata una violazione la reazione è possibile solo per le operazioni sulla tabella esterna che si (possono) propagano secondo una certa politica verso la tabella interna le violazioni possibili sono causate da modifiche del valore dell attributo riferito e dalla cancellazione di righe (es. modifiche dell attributo Provincia e cancellazione di righe da Vigile) 12 2

3 Politiche di reazione Specificata immediatamente dopo il vincolo di integrità consente di associare politiche diverse ai diversi eventi (delete, update) secondo la seguente sintassi: on < delete update > < cascade set null set default no action > Reazioni per delete cascade: si propagano le cancellazioni set null: all attributo referente viene assegnato il valore nullo al posto del valore cancellato nella tabella set default: all attributo referente viene assegnato il valore di default al posto del valore cancellato nella tabella esterna no action: la cancellazione non viene consentita Reazioni per update cascade: il nuovo valore valore viene propagato nell altra tabella set null: all attributo referente viene assegnato il valore nullo al posto del valore modificato nella tabella set default: all attributo referente viene assegnato il valore di default al posto del valore modificato nella tabella esterna no action: l azione di modifica non viene consentita Modifiche degli schemi Fornisce primitive per la manipolazione di schemi che permettono di modificare gli schemi: alter domain alter table drop domain drop table Dizionario dei Dati Tutti i DBMS relazionali gestiscono le descrizioni delle tabelle presenti nella basi di dati mediante una struttura relazionale, cioè mediante tabelle. La base di dati contiene due tipi di tabelle: quelle contente i dati, e quelle contenente i metadati (dati che descrivono dati), dette il catalogo della base di dati oppure il dizionario dei dati Definizione degli indici è rilevante dal punto di vista delle prestazioni ma è a livello più basso (fisico e non logico) non ne parliamo qui in passato era importante perché in alcuni sistemi era l unico mezzo per definire chiavi I comandi di definizione e modifica dello schema manipolano il dizionario dei dati

4 SELECT, sintassi select AttrExpr [ [as] Alias ] {, AttrExpr [ [as] Alias ] } from Tabella [ [as] Alias ] {, Tabella [ [as] Alias ] } [ where Condizione ] le tre parti vengono di solito chiamate target list clausola from clausola where seleziona tra le righe che appartengono al prodotto cartesiano delle tabelle elencate nella clausola from quelle che soddisfano la condizione espressa nell argomento della clausola where persone Nome Eta Reddito Andrea Aldo Maria Anna Filippo Luigi Franco Olga Sergio Luisa maternita Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo paternita Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Selezione e proiezione Nome e reddito delle persone con meno di trenta anni π Nome, Reddito (σ Eta<30 (persone)) select nome, reddito from persone where eta < 30 SELECT, abbreviazioni data una relazione R su A e B from R equivale (intutivamente) a select X.A AS A, X.B AS B from R X where true Impiegato Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Bianchi Produzione Giuseppe Verdi Amministrazione Franco Neri Distribuzione Carlo Rossi Direzione Lorenzo Lanzi Direzione 7 73 Paola Borroni Amministrazione Marco Franco Produzione Selezione, senza proiezione where Cognome = 'Rossi (σ Cognome=Rossi (impiegato)) Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Rossi Direzione Dipartimento Nome Indirizzo Citta Amministrazione Via Tito Livio Milano Produzione P.zza Lavater Torino Distribuzione Via Segre Roma Direzione Via Tito Livio Milano Ricerca Via Morone Milano

5 Espressioni nella target list select Stipendio/12 as StipendioMensile where Cognome = 'Bianchi' StipendioMensile 3.00 Disgiunzione select Nome, Cognome where Dipart = 'Amministrazione' or Dipart = 'Produzione' Nome Cognome Mario Rossi Carlo Bianchi Giuseppe Verdi Paola Borroni Marco Franco Condizione complessa select Nome where Cognome = 'Rossi' and (Dipart = 'Amministrazione' or Dipart = 'Produzione') Nome Mario Condizione LIKE Gli impiegati che hanno un cognome che ha una 'o' in seconda posizione e finisce per 'i'. where Cognome like '_o%i' Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Rossi Direzione Paola Borroni Amministrazione Gestione dei valori nulli Gli impiegati che hanno o potrebbero avere uno stipendio minore di 50 milioni Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Rossi Direzione Paola Borroni Amministrazione 75 NULL where Stipendio < 50 or Stipendio is null SELECT e algebra relazionale select R1.A1, R2.A4 from R1, R2 where R1.A2 = R2.A3 prodotto cartesiano delle relazioni nella clausola from selezione con la condizione nella clausola where proiezione come nella target list π A1,A4 (σ A2=A3 (R1 R2)) Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Paola Borroni Amministrazione 75 NULL

6 SELECT e algebra relazionale, ancora possono essere necessarie ridenominazioni nel prodotto cartesiano nella target list select X.A1 AS B1, X.A2 AS B2, Y.A4 AS B3 from R1 X, R2 Y, R1 Z where X.A2 = Y.A3 AND Y.A4 = Z.A1 Selezione, proiezione e join I padri di persone che guadagnano più di venti milioni π Padre (paternita Figlio =Nome (σ Reddito>20 (persone))) select distinct padre from persone, paternita where figlio = nome and reddito > 20 ρ B1,B2,B3 A1,A2,A4 (π A1,A2,A4 (σ A2 = A3 A4 = C1 ( R1 R2 ρ C1,C2 A1,A2 (R1)))) Proiezione, senza selezione select Nome, Cognome select Cognome Proiezione: duplicati select distinct Cognome Nome Mario Carlo Giuseppe Franco Carlo Lorenzo Paola Marco Cognome Rossi Bianchi Verdi Neri Rossi Lanzi Borroni Franco Cognome Rossi Bianchi Verdi Neri Rossi Lanzi Borroni Franco Cognome Rossi Bianchi Verdi Neri Lanzi Borroni Franco Join naturale Padre e madre di ogni persona paternita maternita select paternita.figlio, padre, madre from maternita, paternita where paternita.figlio = maternita.figlio π Figlio,Padre,Madre (paternita Figlio = Nome (ρ Nome Figlio (maternita))) Join di una relazione con se stessa Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre π Nome, Reddito, RP (σ Reddito>RP (ρ NP,EP,RP Nome,Eta,Reddito (persone) NP=Padre (paternita Figlio =Nome persone))) select f.nome, f.reddito, p.reddito from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito

7 Ridenominazione del risultato Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre π Figlio, Reddito, RP (σ Reddito>RP (ρ NP,EP,RP Nome,Eta,Reddito (persone) NP=Padre (paternita Figlio =Nome persone))) SELECT, con join esplicito, sintassi select AttrExpr [ [as] Alias ] {,AttrExpr [ [as] Alias ] } from Tabella [ [ as ] Alias ] {[ TipoJoin ] join Tabella [ [ as ] Alias ] on CondDiJoin },... [ where AltraCondizione ] select figlio, f.reddito as reddito, p.reddito as redditopadre from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito Join esplicito Padre e madre di ogni persona paternita maternita π Figlio,Padre,Madre (paternita Figlio = Nome ρ Nome Figlio (maternita)) Ulteriore estensione: join naturale Padre e madre di ogni persona paternita maternita π Figlio,Padre,Madre (paternita Figlio = Nome ρ Nome Figlio (maternita)) select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio select madre, paternita.figlio, padre from maternita natural join paternita select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio maternita Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo Join paternita Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Outer join sinistro maternita Madre Figlio paternita Padre Figlio Luisa Maria Sergio Franco Luisa Luigi Luigi Olga Anna Olga Luigi Filippo Anna Filippo Franco Andrea Maria Andrea Franco Aldo Maria Aldo Madre Figlio Padre Anna Olga Luigi Anna Filippo Luigi Maria Andrea Franco Maria Aldo Franco Madre Figlio Padre Luisa Maria NULL Luisa Luigi NULL Anna Olga Luigi Anna Filippo Luigi Maria Andrea Franco Maria Aldo Franco

8 maternita Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo Outer join completo Madre Figlio Padre Luisa Maria NULL Luisa Luigi NULL Anna Olga Luigi Anna Filippo Luigi Maria Andrea Franco Maria Aldo Franco NULL Franco Sergio paternita Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Outer join Padre e, se nota, madre di ogni persona paternita maternita LEFT π Figlio,Padre,Madre (paternita ρ Nome Figlio (maternita)) Figlio = Nome LEFT select paternita.figlio, padre, madre from paternita left natural join maternita select paternita.figlio, padre, madre from paternita left join maternita on paternita.figlio = maternita.figlio Join esplicito select I.Nome, Cognome, Citta I join Dipartimento D on Dipart = D.Nome Nome Cognome Dipart Mario Rossi Milano Carlo Bianchi Torino Giuseppe Verdi Milano Franco Neri Roma Carlo Rossi Milano Lorenzo Lanzi Milano Paola Borroni Milano Marco Franco Torino Ordinamento del risultato order by AttrDiOrdinamento [ asc desc ] {, AttrDiOrdinamento [ asc desc ] } select Cognome, Nome, Stipendio where Dipart like 'Amm%' order by Stipendio desc, Cognome Cognome Nome Stipendio Rossi Mario 45 Borroni Paola 40 Verdi Giuseppe Necessità di operatori su tuple tutte le condizioni dell algebra vengono valutate su una tupla alla volta la condizione è sempre un predicato che viene valutato su ciascuna tupla indipedentemente da tutte le altre se volessi contare il numero di impiegati di un certo dipartimento a partire da una relazione Impiegato come si fa? occorre introdurre degli operatori che consentono di valutare proprietà che dipendono da insiemi di tuple questi operatori sono detti operatori aggregati Operatori aggregati select count(*) AS NumeroImpiegati where Dipart = 'Produzione' NumeroImpiegati 2 l operatore aggregato (count) viene applicato al risultato dell interrogazione: where Dipart = 'Produzione'

9 COUNT: sintassi count ( < * [ distinct all ] ListaAttributi > ) select count(stipendio) as NumeroStipendi NumeroStipendi 8 COUNT e valori nulli Impiegato Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Bianchi Produzione Giuseppe Verdi Amministrazione 20 NULL select count(*) as NumeroImpiegati select count(distinct Stipendio) as StipendiDiversi StipendiDiversi 6 49 NumeroImpiegati 3 select count(stipendio) as NumeroStipendi NumeroStipendi 2 50 Somma, media, massimo, minimo < sum max min avg > ( [ distinct all ] AttrEspr ) Totale degli stipendi del dipartimento amministrazione select sum(stipendio) as TotaleStipendi where Dipart = 'Amministrazione' TotaleStipendi 125 escludono opportunamente i valori nulli Join e operatore aggregato Il massimo stipendio tra quelli degli impiegati che lavorano in un dipartimento con sede a Milano select max(stipendio), Dipartimento D where Dipart = D.Nome and Citta = 'Milano' 80 Nota: non abbiamo usato la as e l attributo nel risultato non ha nome Operatori aggregati e target list un interrogazione scorretta: select Cognome, Nome, max(stipendio), Dipartimento where Dipart = NomeDip and Citta = 'Milano Interrogazioni con raggruppamento gli operatori aggregati vengono applicati ad un insieme di righe gli esempi visti operano su tutte le righe spesso esiste l esigenza di applicare operatori aggregati distintamente ad insiemi di tuple in l operatore group by ci consente di fare questo di chi sarebbe il cognome? La target list deve essere omogenea select max(stipendio), min(stipendio)

10 Operatori aggregati e raggruppamenti Per ogni dipartimento, la somma degli stipendi select Dipart, sum(stipendio) as SommaStipendi group by Dipart Dipart SommaStipendi Amministrazione 125 Produzione 82 Distribuzione 45 Direzione 153 Semantica di interrogazioni con operatori aggregati e raggruppamenti interrogazione senza group by e senza operatori aggregati: select Dipart, Stipendio Dipart Stipendio Amministrazione 45 Produzione 36 Amministrazione 40 Distribuzione 45 Direzione 80 Direzione 73 Amministrazione 40 Produzione Semantica, 2 poi si raggruppa e si applica l operatore aggregato a ciascun gruppo dopo group by Dipart Stipendio Amministrazione 45 Amministrazione 40 Amministrazione 40 Distribuzione 45 Direzione 80 Direzione 73 Produzione 36 Produzione 46 dopo sum()as Dipart SommaStipendi Amministrazione 125 Distribuzione 45 Direzione 153 Produzione 82 Condizioni sui gruppi I dipartimenti che spendono più di 100 milioni in stipendi select Dipart, sum(stipendio) as SommaStipendi from Impiegati group by Dipart having sum(stipendio) > 100 Dipart SommaStipendi Amministrazione 125 Direzione WHERE o HAVING? I dipartimenti per cui la media degli stipendi degli impiegati che lavorano nell'ufficio 20 è superiore a 25 milioni select Dipart where Ufficio = 20 group by Dipart having avg(stipendio) > 25 Sintassi, riassumiamo Select ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ]

11 Unione, intersezione e differenza La select da sola non permette di fare unioni; serve un costrutto esplicito: Select { < union intersect except > [ all ] Select } select Nome union select Cognome as Nome i duplicati vengono eliminati (a meno che si usi all); anche dalle proiezioni! select padre from paternita union select madre from maternita Notazione posizionale! quali nomi per gli attributi del risultato? nessuno quelli del primo operando Notazione posizionale, 2 Notazione posizionale, 3 select padre, figlio from paternita union select figlio, madre from maternita select padre, figlio from paternita union select madre, figlio from maternita Anche con le ridenominazioni non cambia niente: select padre as genitore, figlio from paternita union select figlio, madre as genitore from maternita Intersezione e differenza Interrogazioni nidificate select Nome intersect select Cognome as Nome select Nome except select Cognome as Nome le condizioni atomiche esprimibili nella clausola WHERE permettono anche il confronto fra un attributo (o più, vedremo poi) e il risultato di una sottointerrogazione quantificazioni esistenziali equivale a select I.Nome I, Impiegato J where I.Nome = J.Cognome vedremo che si può esprimere con select nidificate

12 Interrogazioni nidificate, sintassi ConfrontoConNidificazione :: = Scalare OpConfronto [ any all ] ( SelectAttributoSingolo) exists ( SelectStar ) senza any o all, il risultato della SelectAttributoSingolo deve essere un solo valore v.a θ any Select... (risp. all) è vero se v.a è in relazione θ con almeno uno (risp. con tutti) dei valori del risultato della Select = any puo essere abbreviato con in exists( SelectStar ) è vero se il risultato della sottoespressione non è vuoto. Interrogazioni nidificate Gli impiegati che lavorano in dipartimenti di Roma where Dipart = any (select Nome from Dipartimento where Citta = 'Roma') Interrogazioni nidificate, commenti Nome e reddito del padre di Mario select Nome, Reddito from Persone where Nome = (select Padre from Paternita where Figlio = 'Mario') select Nome, Reddito from Persone, Paternita where Nome = Padre and Figlio = 'Mario' La prima versione di prevedeva solo la forma nidificata (o strutturata), con una sola relazione in ogni clausola FROM. Il che è insoddisfacente: la dichiaratività è limitata non si possono includere nella target list attributi di relazioni nei blocchi interni La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili) La forma piana e quella nidificata possono essere combinate Le sottointerrogazioni non possono contenere operatori insiemistici ( l unione si fa solo al livello esterno ); la limitazione non è significativa Interrogazioni piatte o nidificate? Nome e reddito dei padri di persone che guadagnano più di 20 milioni" select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio =any (select Nome from Persone where Reddito > 20)) select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select I1.Nome I1, Impiegato I2 where I1.Nome = I2.Nome and I2.Dipart = 'Produzione' select Nome where Nome = any (select Nome where Dipart = 'Produzione')

13 Interrogazioni nidificate, commenti, 2 Le persone che hanno almeno un figlio from Persone where exists ( from Paternita where Padre = Nome) or exists ( from Maternita where Madre = Nome) regole di visibilità: non è possibile fare riferimenti a variabili definite in blocchi più interni se un nome di variabile è omesso, si assume riferimento alla variabile più vicina nota: in un blocco si può fare riferimento a variabili definite in blocchi più esterni; la semantica (prodotto cartesiano, selezione, proiezione) non funziona più, ne serve una più sofisticata: l interrogazione interna va ripetuta una volta per ciascun valore della variabile Necessità della forma nidificata Trovare i padri i cui figli guadagnano tutti più di venti milioni" select distinct Padre from Paternita Z where not exists ( from Paternita W, Persone where W.Padre = Z.Padre and W.Figlio = Nome and Reddito <= 20) Semantica delle espressioni correlate L interrogazione interna viene eseguita una volta per ciascuna ennupla dell interrogazione esterna anche con <>all scorretta: Visibilità where Dipart in (select Nome from Dipartimento D1 where Nome = 'Produzione') or Dipart in (select Nome from Dipartimento D2 where D2.Citta = D1.Citta) Disgiunzione e unione (ma non sempre) from Persone where Reddito > 30 union select F.* from Persone F, Paternita, Persone P where F.Nome = Figlio and Padre = P.Nome and P.Reddito > 30 from Persone F where Reddito > 30 or exists ( from Paternita, Persone P where F.Nome = Figlio and Padre = P.Nome and P.Reddito > 30)

14 select Nome except select Cognome as Nome Differenza e nidificazione select Nome I where not exists ( where Cognome = I.Nome) Massimo e nidificazione L impiegato con lo stipendio massimo where Stipendio = (select max(stipendio) ) Operazioni di aggiornamento operazioni di inserimento eliminazione modifica di una o più ennuple di una relazione sulla base di una condizione che può coinvolgere anche altre relazioni istruzioni insert delete update Inserimento di ennuple sintassi insert into NomeTabella [ ( ListaAttributi )] < values( ListaDiValori ) Select > insert into Dipartimento(NomeDip,Citta) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto where LuogoProd = 'Milano') Inserimento di ennuple, 2 l ordinamento degli attributi (se presente) e dei valori è significativo le due liste debbono avere lo stesso numero di elementi se la lista di attributi è omessa, si fa riferimento a tutti gli attributi della relazione, secondo l ordine con cui sono stati definiti se la lista di attributi non contiene tutti gli attributi della relazione, per gli altri viene inserito un valore nullo (che deve essere permesso) o un valore di default Eliminazione di ennuple delete from NomeTabella [ where Condizione ] delete from Dipartimento where NomeDip = 'Produzione' delete from Dipartimento where Nome not in (select Dipart )

15 Eliminazione di ennuple elimina le ennuple che soddisfano la condizione può causare (se i vincoli di integrità referenziale sono definiti con politiche di reazione cascade) eliminiazioni da altre relazioni ricordare: se la where viene omessa, si intende where true cancelliamo tutte le ennuple (ma manteniamo lo schema): delete from Dipartimento per cancellare anche lo schema drop Dipartimento Modifica di ennuple update NomeTabella set Attributo = < Espressione Select null default > {, Attributo = < Espressione Select null default > } [ where Condizione ] update Dipendente set Stipendio = 45 where Matricola = 'M2047' update Impiegato set Stipendio = Stipendio * 1.1 where Dipart = 'Amministrazione' Vincoli di integrità generici: check attenzione all approccio set-oriented e non tuple-oriented: update Impiegato set Stipendio = Stipendio * 1.1 where Stipendio <= 30 update Impiegato set Stipendio = Stipendio * 1.15 where Stipendio > 30 Specifica di vincoli di ennupla (e anche vincoli più complessi) check ( Condizione ) create table Impiegato ( Matricola character(6), Cognome character(20), Nome character(20), Sesso character not null check (sesso in ( M, F )) Stipendio integer, Superiore character(6), check (Stipendio <= (select Stipendio J where Superiore = J.Matricola) ) Vincoli di integrità generici: asserzioni Specifica vincoli a livello di schema create assertion NomeAsserzione check ( Condizione ) create assertion AlmenoUnImpiegato check (1 <= (select count(*) )) Viste create view NomeVista [ ( ListaAttributi ) ] as Select [ with [ local cascaded ] check option ] create view ImpiegatiAmmin (Matricola, Nome, Cognome, Stipendio) as select Matricola, Nome, Cognome, Stipendio where Dipart = 'Amministrazione' and Stipendio > 10 create view ImpiegatiAmminPoveri as from ImpiegatiAmmin where Stipendio < 50 with check option

16 La clausola with check option create view NomeVista [ ( ListaAttributi ) ] as Select [ with [ local cascaded ] check option ] check option specifica che posso essere ammessi aggiornamenti solo sulle righe della vista, e dopo gli aggiornamenti le righe devono continuare ad appartenere alla vista create view View1 (ViewCol1, ViewCol2) as select Column1, Column2 from Table1 where Column1 = 5; update View1 set ViewCol1 = 4 L'istruzione di update è valida, ma se inseriamo nella vista l'opzione with check option l'istruzione fallisce, poiché le righe aggiornate non apparterrebbero più alla vista 91 Viste su Viste E' possibile definire una vista basata su un'altra vista: create view View1 as from Table1 where Column1 <> 0; create view View2 as from View1 where Column2 <> 0; Tra la tabella Table1 e le viste View1 e View2 esistono le seguenti relazioni: Table1 è immediatamente sottostante a View1 View1 è immediatamente sottostante a View2 Table1 è indirettamente sottostante a View1 Tramite le opzioni local e cascaded della clausola with check option è possibile definire se il controllo sulla modifica delle righe contenute nella vista debba essere propagato alle viste sottostanti 92 Le opzioni local e cascaded cascaded (l'opzione di default) specifica che il controllo sul fatto che le righe che vengono aggiornate continuino ad appartenere alla vista deve essere propagato a tutte le viste sottostanti local specifica che tale controllo deve essere effettuato solo all ultimo livello della vista Esempi su local e cascaded (1) create view View1 as from Table1 where Column1 <> 0; create view View2 as from View1 where Column2 <> 0 with cascaded check option; create view View3 as from View2 where Column3 <> 0; create view View4 as from View3 where Column4 <> 0 with local check option; 93 create view View5 as from View4 where Column5 <> 0; 94 Esempi su local e cascaded (2) insert into View1 values (0, 0, 0, 0, 0) è legale, poiché su View1 non c'è la clausola with check option insert into View2 values (1, 0, 1, 1, 1) non è legale, poiché viola il controllo di View2 insert into View2 values (0, 1, 1, 1, 1) non è legale, poiché viola il controllo di View1 (abilitato dall'opzione cascaded di View2) insert into View3 values (0, 1, 1, 1, 1) non è legale, poiché viola il controllo di View1 (abilitato dall'opzione cascaded di View2) insert into View4 values (0, 0, 0, 1, 1) è legale, poiché il controllo su View4 è soddisfatto e i controlli sulle viste sottostanti sono disabilitati dall'opzione local insert into View5 values (0, 0, 0, 1, 0) è legale, poiché il controllo di View4 (l'unico abilitato) è soddisfatto 95 Un interrogazione non standard Trova il dipartimento che spende il massimo in stipendi La nidificazione nella having non è ammessa select Dipart group by Dipart having sum(stipendio) >= all (select sum(stipendio) group by Dipart) 96 16

17 Soluzione con le viste create view BudgetStipendi(Dip,TotaleStipendi) as select Dipart, sum(stipendio) group by Dipart select Dip from BudgetStipendi where TotaleStipendi =(select max(totalestipendi) from BudgetStipendi) Ancora sulle viste Trova il numero medio di uffici per ogni dipartimento Interrogazione scorretta select avg(count(distinct Ufficio)) group by Dipart Con una vista create view DipartUffici(NomeDip,NroUffici) as select Dipart, count(distinct Ufficio) group by Dipart select avg(nrouffici) from DipartUffici Controllo degli accessi Ogni componente dello schema (risorsa) può essere protetta (tabelle, attributi, viste, domini, ecc.) Il possessore della risorsa (colui che la crea) assegna dei previlegi agli altri utenti Un utente predefinito ( _system) rappresenta l amministratore della base di dati ed ha completo accesso alle risorse Ogni previlegio è caratterizzato da: la risorsa a cui si riferisce l utente che concede il previlegio l utente che riceve il previlegio l azione che viene permessa sulla risorsa se il previlegio può esser trasmesso o meno ad altri utenti Tipi di previlegi offre sei tipi di previlegi: insert: inserisce un nuovo oggetto nella risorsa update: modifica il contenuto di una risorsa delete: rimuove un oggetto dalla risorsa select: accede il contenuto della risorsa con una query references: costruisce un vincolo di integrità referenziale con la risorsa (può limitare la capacità di modificare la risorsa) usage: utilizza la risorsa nella definizione di uno schema (es., un dominio) grant e revoke Per concedere un previlegio ad un utente: grant < Privileges all privileges > on Resource to Users [ with grant option ] grant option specifica se ha il previlegio di propagare il previlegio ad altri utenti Es.: grant select on Department to Stefano Per revocare il previlegio: revoke Privileges on Resource from Users [ restrict cascade ] Opzioni di grant e revoke La revoca deve essere fatta dall utente che aveva concesso i previlegi restrict (di default) specifica che il comando non deve essere eseguito qualora la revoca dei previlegi all utente comporti qualche altra revoca (dovuta ad un precedente grant option) cascade invece forza l esecuzione del comando Attenzione alle reazioni a catena

18 immerso in linguaggio ospite "embedded " in applicazioni complesse, è spesso necessario immergere istruzioni in programmi tradizionali (Pascal, C, COBOL) i programmi con immerso sono analizzati da precompilatori che traducono le istruzioni le variabili del programma possono essere usate come parametri nelle istruzioni (precedute da ':') select che producano una sola ennupla e operazioni di aggiornamento possono essere immerse senza problemi (con opportuno meccanismo di trasmissione dei risultati) esiste di solito una variabile di sistema sqlcode che dopo l'esecuzione di un'operazione assume valore zero se essa ha avuto successo e valore diverso altrimenti Relazioni e record: cursori problema fondamentale: disadattamento di impedenza i linguaggi tradizionali gestiscono record uno alla volta produce insiemi di ennuple soluzione: cursore accede a tutte le ennuple di una interrogazione in modo globale le trasmette al programma una alla volta Operazioni sui cursori Definizione del cursore declare NomeCursore [ scroll ] cursor for Select [ for < read only update [ of Attributo {, Attributo } ] > ] Esecuzione dell'interrogazione open NomeCursore Utilizzo dei risultati (una ennupla alla volta) fetch NomeCursore into ListaVariabili Disabilitazione del cursore close cursor NomeCursore Accesso alla ennupla corrente (di un cursore su singola relazione a fini di aggiornamento/cancellazione) current of NomeCursore nella clausola where Frammento di programma con immerso write('nome della citta''?'); readln(citta); EXEC DECLARE P CURSOR FOR SELECT NOME, REDDITO FROM PERSONE WHERE CITTA = :citta ; EXEC OPEN P ; EXEC FETCH P INTO :nome, :reddito ; while CODE = 0 do begin write('nome della persona:', nome, 'aumento?'); readln(aumento); EXEC UPDATE PERSONE SET REDDITO = REDDITO + :aumento WHERE CURRENT OF P EXEC FETCH P INTO :nome, :reddito end; EXEC CLOSE CURSOR P Altro esempio void VisualizzaStipendiDipart(char NomeDip[]) { char Nome[20], Cognome[20]; long int Stipendio; $ declare ImpDip cursor for select Nome, Cognome, Stipendio where Dipart = :NomeDip; $ open ImpDip; $ fetch ImpDip into :Nome, :Cognome, :Stipendio; printf("dipartimento %s\n",nomedip); while (sqlcode == 0) { printf("nome e cognome dell'impiegato: %s %s",nome,cognome); printf("attuale stipendio: %d\n",stipendio); $ fetch ImpDip into :Nome, :Cognome, :Stipendio; } $ close cursor ImpDip; } dinamico Quando le applicazioni non conoscono a compile-time i costrutti da eseguire, allora è necessario dinamico Problema principale: gestire il trasferimento di dati tra programma ed ambiente Per l esecuzione diretta (solo per comandi senza parametri): execute immediate Statement Per l esecuzione preceduta dall analisi dei construtti: prepare CommandName from Statement followed by: execute CommandName [ into TargetList ] [ using ParameterList ]

19 Transazioni Una transazione è un elenco di istruzioni che devono essere considerate come un gruppo indivisibile: o tutte le istruzioni vengono correttamente eseguite o i dati devono restare immutati. L'utilizzo delle transazioni impedisce che il database venga lasciato in uno stato inconsistente, a causa (ad esempio) di un crash di sistema dopo l'esecuzione della prima parte di un'operazione di giroconto bancario: update ContoCorrente set Importo = Importo 100 where cliente = 'Rossi' update ContoCorrente set Importo = Importo where cliente = 'Bianchi' Inizio e termine di una transazione Una transazione inizia implicitamente con l'esecuzione di una qualsiasi istruzione (a meno che una transazione non sia già in corso) o esplicitamente con l'istruzione start transaction. start transaction [LivelloIsolamento,] [ModalitàAccesso,][LivelloDiagnostica] Una transazione termina con commit (le modifiche vengono salvate) o rollback (le modifiche vengono annullate) commit [ and chain ] rollback [ and chain ] Consolidamento di una transazione Durante una transazione è possibile definire dei punti di consolidamento (savepoint); ciò dà la possibilità riportare il database allo stato immediatamente successivo al punto di consolidamento, annullando tutte le operazioni successive e mantenendo attiva la transazione savepoint NomeSavePoint rollback to savepoint NomeSavePoint (Stored) Procedure A partire da -2 è possibile definire le procedure (chiamate stored procedure) Le stored procedure sono parte dello schema procedure AssignCity(:Dep char(20), :City char(20)) update Department set City = :City where Name = :Dep -99 ha standardizzato la sintassi delle Stored Procedure; ad oggi però molti sistemi offrono delle estensioni che consentono di scrivere procedure complesse ma che non rispettano pienamente lo standard (ad esempio Oracle PL/) Creazione di Stored Procedure create procedure NomeProcedura [( ListaParametri )] [CaratteristicheProcedura] CorpoProcedura I parametri possono essere di input, di output o di input/output in out inout NomeParametro1 TipoDato1, Una delle caratteristiche che è possibile definire è il linguaggio in cui è scritta la procedura: non deve essere necessariamente, può essere C, Pascal, Java ecc. Le procedure non sono contenute in librerie esterne al DB, ma lo standard non specifica (ad esempio) come definire dove si trova la DLL Il corpo può essere una singola istruzione ; utilizzando estensioni non standard è possibile inserire nel corpo più istruzioni racchiuse all'interno di una transazione Function Le Function sono molto simili alle Stored Procedure, ma ritornano un valore create function NomeProcedura [( ListaParametri )] returns TipoDato [CaratteristicheProcedura] CorpoProcedura I parametri possono essere solo di input Il corpo deve contenere un'istruzione return

20 Un esempio di Funzione create function MaxDate () returns date contains sql return ( select max(date1) from table1 where int1>5); Esecuzione di Stored Procedure e Funzioni call NomeProcedura [( ListaParametri )] NomeFunzione [( ListaParametri )] I parametri possono essere valori scalari (per i parametri di input) o variabili call procedure1(5, :variable1) insert into table1 (column1) values function1(7) Persistent Stored Modules In -99 è stata aggiunta una funzionalità chiamata Persistent Stored Modules (PSM); si tratta di moduli che appartengono ad uno schema e possono contenere una o più Stored Procedure o Function La creazione di un modulo avviene tramite il comando create module: create module NomeModulo [ names are NomeFamigliaCaratteri ] [ schema NomeSchema ] [ ListaDichiarazioneProcedureEFunzioni;] end module Un modulo può essere successivamente modificato o cancellato con le istruzioni alter module e drop module 117 Dichiarazione ed esecuzione di un PSM create module Employees_Module procedure DeleteEmployees() modifies data delete from Employees; procedure UpdateEmployees() modifies data update Employees set col = NULL; procedure InsertEmployees(in code smallint) modifies data insert into Employees values (code); end module call Employees_Module.InsertEmployees(5) 118 Comandi composti Lo standard -99 prevede che il corpo di una Stored Procedure (o di una Function) contenga un unico comando All'interno dei moduli tale limitazione può essere superata, utilizzando un comando composto, cioè una lista di istruzioni delimitate dai comandi begin e end Inoltre all'interno di un comando composto è possibile utilizzare delle funzionalità tipiche dei linguaggi di programmazione procedurali: Dichiarazione di variabili Comandi condizionali Controllo di flusso Gestione delle eccezioni Sintassi dei comandi composti [ etichetta : ] begin [ atomic ] [ ListaVariabili ListaCondizioni ; ] [ DichiarazioneCursore ; ] [ ListaDichiarazioniHandler ; ] [ Corpo ] end [etichetta] La clausola atomic specifica che l'elenco dei comandi contentuti nel corpo deve essere eseguito in maniera atomica; in questo caso il corpo non può contenere commit o rollback

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL Basi di dati 1 Il linguaggio SQL Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL Basi di dati 2 Introduzione SQL (Structured Query Language)

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Basi di Dati. S Q L Lezione 5

Basi di Dati. S Q L Lezione 5 Basi di Dati S Q L Lezione 5 Antonio Virdis a.virdis@iet.unipi.it Sommario Gestione eventi Gestione dei privilegi Query Complesse 2 Esercizio 9 (lezione 4) Indicare nome e cognome, spesa e reddito annuali

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Esercitazione su SQL

Esercitazione su SQL Esercizio 1. Esercitazione su SQL Si consideri la base di dati relazionale composta dalle seguenti relazioni: impiegato Matricola Cognome Stipendio Dipartimento 101 Sili 60 NO 102 Rossi 40 NO 103 Neri

Dettagli

Dal modello concettuale al modello logico

Dal modello concettuale al modello logico Dal modello concettuale al modello logico Traduzione dal modello Entita - Associazione al modello Relazionale Ciclo di sviluppo di una base di dati (da parte dell utente) Analisi dello scenario Modello

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

Il linguaggio SQL: transazioni

Il linguaggio SQL: transazioni Il linguaggio SQL: transazioni Sistemi Informativi T Versione elettronica: 4.8.SQL.transazioni.pdf Cos è una transazione? Una transazione è un unità logica di elaborazione che corrisponde a una serie di

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

Trovare l aeroporto italiano con il maggior numero di piste

Trovare l aeroporto italiano con il maggior numero di piste AEROPORTO (Città, Nazione, NumPiste) VOLO (IdVolo, GiornoSett, CittàPart, OraPart, CittàArr, OraArr, TipoAereo) AEREO (TipoAereo, NumPasseggeri, QtaMerci) Datalog - Aeroporti da cui non partono aerei per

Dettagli

Database, SQL & MySQL. Dott. Paolo PAVAN Maggio 2002

Database, SQL & MySQL. Dott. Paolo PAVAN Maggio 2002 Database, SQL & MySQL Dott. Paolo PAVAN Maggio 2002 1 Struttura RDBMS MYSQL - RDBMS DATABASE TABELLE 2 Introduzione ai DATABASE Database Indica in genere un insieme di dati rivolti alla rappresentazione

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Fondamenti di Teoria delle Basi di Dati

Fondamenti di Teoria delle Basi di Dati Fondamenti di Teoria delle Basi di Dati Riccardo Torlone Parte 6: Potenza espressiva del calcolo Calcolo su domini, discussione Pregi: dichiaratività Difetti: "verbosità": tante variabili! espressioni

Dettagli

CA RC/Update for DB2 for z/os

CA RC/Update for DB2 for z/os SCHEDA PRODOTTO CA RC/Update for DB2 for z/os CA RC/Update for DB2 for z/os CA RC/Update for DB2 for z/os (CA RC/Update) è uno strumento di gestione di dati e oggetti DB2 che consente agli amministratori

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

PHP: form, cookies, sessioni e. Pasqualetti Veronica

PHP: form, cookies, sessioni e. Pasqualetti Veronica PHP: form, cookies, sessioni e mysql Pasqualetti Veronica Form HTML: sintassi dei form 2 Un form HTML è una finestra contenente vari elementi di controllo che consentono al visitatore di inserire informazioni.

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960.

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960. File di dati Definizione File di dati Insieme di record omogenei memorizzati in memoria di massa Bianchi Verdi Neri Verdi Anna Roma 1980 Luca Milano 1960 Andrea Torino 1976 Paola Bari 1954 Record Operazioni

Dettagli

Un client su arduino invia i dati acquisiti ad un database

Un client su arduino invia i dati acquisiti ad un database Un client su arduino invia i dati acquisiti ad un database PROBLEMA Si vogliono inviare, periodicamente, i dati acquisiti da alcuni sensori ad un database presente su di un server. Arduino con shield Ethernet

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

STRUTTURE (O COSTRUTTI) DI CONTROLLO

STRUTTURE (O COSTRUTTI) DI CONTROLLO Le strutture di controllo Le strutture di controllo STRUTTURE (O COSTRUTTI) DI CONTROLLO determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice . Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice Ordinamento di osservazioni: PROC SORT PROC SORT DATA=fa il sort è numerico

Dettagli

1) Le Espressioni regolari

1) Le Espressioni regolari ESPRESSIONI REGOLARI e FILTRI SED, GREP e AWK 1) Le Espressioni regolari Un'espressione regolare è un modello che descrive un insieme di stringhe. Le espressioni regolari sono costruite, in maniera analoga

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

RefWorks Guida all utente Versione 4.0

RefWorks Guida all utente Versione 4.0 Accesso a RefWorks per utenti registrati RefWorks Guida all utente Versione 4.0 Dalla pagina web www.refworks.com/refworks Inserire il proprio username (indirizzo e-mail) e password NB: Agli utenti remoti

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

Piattaforma Applicativa Gestionale. Import dati. Release 7.0

Piattaforma Applicativa Gestionale. Import dati. Release 7.0 Piattaforma Applicativa Gestionale Import dati Release 7.0 COPYRIGHT 2000-2012 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati. Questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon)

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon) Sed & Awk Sed e Awk sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon) awk: linguaggio per l'elaborazione di modelli orientato ai campi (1977, Bell

Dettagli

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it Zabbix 4 Dummies Dimitri Bellini, Zabbix Trainer Quadrata.it Relatore Nome: Biografia: Dimitri Bellini Decennale esperienza su sistemi operativi UX based, Storage Area Network, Array Management e tutto

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

SQL. Dipartimento del Tesoro

SQL. Dipartimento del Tesoro Dipartimento del Tesoro SQL 1 Database...4 1.1 COS È UN DATABASE...4 1.2 DAGLI ARCHIVI AI DBMS...5 1.3 VANTAGGI OFFERTI DAI DBMS...6 1.4 INDIPENDENZA DEI DATI DALL APPLICAZIONE...7 1.5 RISERVATEZZA NELL

Dettagli

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Istruzioni per il controllo di ciclo - ciclo a condizione generica Istruzioni per il controllo di ciclo - ciclo a condizione generica Permette di ripetere l esecuzione di un blocco di istruzioni finchè non viene verificata una condizione logica. Sintassi istruzione_1...

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Progettazione di un DB....in breve

Progettazione di un DB....in breve Progettazione di un DB...in breve Cosa significa progettare un DB Definirne struttura,caratteristiche e contenuto. Per farlo è opportuno seguire delle metodologie che permettono di ottenere prodotti di

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

La ricorsione. Politecnico di Milano Sede di Cremona

La ricorsione. Politecnico di Milano Sede di Cremona La ricorsione Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Definizioni ricorsive Sono comuni

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED

I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED SED è un programma in grado di eseguire delle trasformazioni elementari in un flusso di dati di ingresso,

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

FUNZIONI AVANZATE DI EXCEL

FUNZIONI AVANZATE DI EXCEL FUNZIONI AVANZATE DI EXCEL Inserire una funzione dalla barra dei menu Clicca sulla scheda "Formule" e clicca su "Fx" (Inserisci Funzione). Dalla finestra di dialogo "Inserisci Funzione" clicca sulla categoria

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Sistemi Operativi Sincronizzazione tra Processi

Sistemi Operativi Sincronizzazione tra Processi Sistemi Operativi Processi Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Accordo d Uso (settembre 2014)

Accordo d Uso (settembre 2014) Accordo d Uso (settembre 2014) Il seguente Accordo d uso, di seguito Accordo, disciplina l utilizzo del Servizio on line 4GUEST, di seguito Servizio, che prevede, la creazione di Viaggi, Itinerari, Percorsi,

Dettagli

SQL PER SISTEMI RELAZIONALI AD OGGETTI

SQL PER SISTEMI RELAZIONALI AD OGGETTI c 88-08-07003-4 1 Approfondimenti Capitolo 2 SQL PER SISTEMI RELAZIONALI AD OGGETTI I sistemi relazionali ad oggetti sono sistemi basati sul modello dei dati relazionale esteso con le caratteristiche tipiche

Dettagli

INTERNET e RETI di CALCOLATORI A.A. 2014/2015 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

INTERNET e RETI di CALCOLATORI A.A. 2014/2015 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam. Laurea in INFORMATICA INTERNET e RETI di CALCOLATORI A.A. 2014/2015 Capitolo 4 Dynamic Host Configuration Protocol fausto.marcantoni@unicam.it Prima di iniziare... Gli indirizzi IP privati possono essere

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Scilab: I Polinomi - Input/Output - I file Script

Scilab: I Polinomi - Input/Output - I file Script Scilab: I Polinomi - Input/Output - I file Script Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Polinomi: Definizione... Un polinomio è un oggetto nativo in Scilab Si crea,

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi I semestre 03/04 Inidirizzi IP e Nomi di Dominio Domain Name System Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Grandi dimensioni e dimensioni variabili

Grandi dimensioni e dimensioni variabili Grandi dimensioni e dimensioni variabili aprile 2012 1 Questo capitolo studia alcuni ulteriori aspetti importanti e caratteristici della gestione delle dimensioni in particolare, delle grandi dimensioni

Dettagli