Il 0% ha trovato utile questo documento (0 voti)
135 visualizzazioni45 pagine

INFORMATICA

Appunti di informatica

Caricato da

kristal.costa03
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
135 visualizzazioni45 pagine

INFORMATICA

Appunti di informatica

Caricato da

kristal.costa03
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 45

INFORMATICA

1) ALCUNI CONCETTI BASE

Il termine informatica viene coniato negli anni ’60 da Philippe Dreyfus (contrazione dei termini francesi “information” e
“automatique”).

-INFORMATICA= disciplina in grado di trattare o elaborare in modo automatico l’informazione. Modernamente, questo
viene fatto col calcolatore/elaboratore elettronico, il computer. [Negli anni 50’ il computer è l’individuo che fa i
calcoli/conti]

-INFORMAZIONE= significati diversi a seconda dei contesti. → ambito dell’informatica= codificata/rappresentata


mediante dati(= a rappresentazione di una o più proprietà di un oggetto nel mondo reale) → dati ad una elaborazione
(es. un’operazione aritmetica come la somma) generiamo nuovi dati.

-DATI= rappresentano l’informazione mediante (tipicamente) dei simboli [rappresentano 1/più proprietà di un oggetto
nel mondo reale

→ Uno degli alfabeti piu’ usati nell’informatica (a basso livello) e’ un alfabeto estremamente ridotto, che contiene
soltanto i simboli 0 e 1, un bit (contrazione di binary digit)= l’alfabeto binario.

- scelta di usare questo alfabeto: dalla semplicità con cui i suoi simboli possono essere rappresentati da dispositivi
bistabili: dispositivi fisici capaci di assumere e mantenere nel tempo (a meno di sollecitazioni esterne) due configurazioni
alternative: 0 e 1 [Presenza di fori nella scheda, Polarizzazione o presenza/assenza di carica elettrica in una sostanza,
Passaggio/non passaggio di corrente da un cavo conduttore, Passaggio/non passaggio di luce da un cavo ottico]

-elaborazione dell’informazione= attività condotta sull’informazione/dati che comprende → creazione - modifica -


confronto - memorizzazione (conservazione) - trasmissione {input= informazioni in ingresso & output= informazioni in
uscita}

-compito dell’elaborazione= problema, dipendentemente da tipo di calcolatore (manuale, automatico e automatico),


per elaborare l’informazione può’ essere necessario fornire al calcolatore un insieme di istruzioni che descrivano come
condurre l’elaborazione stessa (=ALGORITMO: elaborazione dell’informazione) → es. computer=io & calcolare
2a=algoritmo

-PROBLEMA= domanda che ha bisogno di risposte (es. risolvere ax^2+bx+c=0, per x): domande generali & se c’è una
domanda specifica=ISTANZA

→ obbiettivo= trovare la procedura per risolvere tutte le istanze ad un problema dato (non solo a uno specifico):
ALGORITMO con un po’ di dettagli extra

-ALGORITMO= una descrizione (in una lingua) di una sequenza finita di operazioni che, quando eseguite, portano alla
soluzione del problema che è corretto per tutte le sue istanze

{interessa la sequenza di operazioni in cui A consiste, non l’esecuzione}

-ORIGINE DEL NOME ALGORITMO= da Muḥammad ibn Mūsā al-Khwārizmī (780-850 A.C.): matematico diede un
importante contributo a ALGEBRA(= estensione dell’aritmetica, contiene X), con il libro “The Compendious Book on
Calculation by Completion and Balancing” {termine algebra= danneggiamento del termine al-jabr: operazione di
sommare/sottrarre la stessa quantità dal lato sx e da quello dx di un’equazione per cancellare il termine fuori)
-è anche noto per il libro “ On the Calculation with Hindu Numerals” → I connessione semantica al significato moderno
(sequenza di operazioni è documentato nel 13esimo secolo, con la parola ALGORISM, nella vecchia Francia)

-350 A.C. GRECI (Euclide) ALGORITMO= ha elaborato il M.C.D. di un numero naturale {algoritmo di Euclide/ Euclidean
algoritm}

-276-195 A.C. Erastotene ALGORITMO= ha trovato tutti i numeri primi (fino a uno aggiornato) [Crivello i
Erastotene/Sieve of Erastothenes}

-3 TIPI DI CALCOLATORE:

1. MANUALE= codificare i dati in forma precisa, ma affidano all’uomo l’elaborazione (noi, abaco…)

2. SEMI-AUTOMATICI= eseguire singole (spesso semplici) elaborazioni sui dati senza intervento umano; per
elaborazioni piu’ complesse, pero’, richiedono l’interazione continua da parte dell’uomo (vecchia calcolatrice
tascabile)

3. AUTOMATICI= memoria (interna o esterna) su cui sono rappresentati sia dati che le istruzioni (cioè’
l’algoritmo); non richiedono l’intervento umano (a patto che abbiano ricevuto un input corretto). (computer,
smartphones…)

-ALAN TURING

= matematico, logico, crittografo e filosofo britannico: il padre dell’informatica.

• famoso per aver ideato la Macchina di Turing (MdT)= un modello matematico del moderno calcolatore; è
costituita da: un alfabeto (un insieme finito di simboli - un nastro per lettura/scrittura - una testina posizionata
su una cella del nastro (puo’ leggere e scrivere) - un insieme di stati (tra cui quello iniziale e quello finale) - una
tabella delle azioni o funzione di transizione; (in base a come si appoggia al blocchetto capisce i numeri 0 e 1,
legge gli input e output escono, cambia scheda e cambia funzionamento)

-TESI/CONGETTURA DI CHURCH-TURING
se una funzione matematica e’ calcolabile → esiste allora almeno una macchina di Turing in grado di calcolarla:
è il modello di calcolo più potente che abbiamo, grazie a tali tesi:
1. proprietà degli algoritmi= possono essere studiate analizzando il comportamento sulle mdT &
2. confrontare un nuovo modello di calcolo e/o un nuovo tipo di computer con gli altri, verificando
formalmente se sai o meno potente come la mdT
-condannato per omosessualità & costretto a scegliere tra 2 anni di carcere/ castrazione chimica attraverso estrogeni
(sceglie quest’ultima)
-genio della crittografia
-macchina= spesso utilizzata come modello teorico per il calcolo (unità che fa il calcolo & sistema di input e output)

-ARCHITETTURA DI VON NEUMANN


= matematico ungherese (nazionalizzato americano, uno dei geni, seppur guerrafondaio, del secolo scorso) ideo= l’
architettura di Von Neumann
• schema “hardware”, cioè’ fisico (a differenza della MdT, che e’ un modello matematico e quindi astratto), di un
calcolatore universale (capace cioè’ di calcolare qualsiasi funzione calcolabile) → lo schema base del computer
moderno.
-prevede: memoria= un dispositivo di memorizzazione (un insieme di “celle”) contenente dati o istruzioni -
central processing unit (CPU)= dispositivo di elaborazione per la lettura ed esecuzione delle istruzioni;
l’insieme di istruzioni disponibili e’ detto Instruction Set Architecture (ISA) - interfaccia di input/output (I/O) -
bus= un canale di comunicazione tra le varie componenti
→ SOFTWARE= (da soft = morbido e ware = manufatto) e’ un insieme di istruzioni; possiamo immaginarlo come un
complesso insieme di algoritmi
→ HARDWARE= l’insieme delle componenti tangibili del computer: e’ la realizzazione dell’architettura di Von Neumann
in un calcolatore specifico (calcolatore moderno che implementa l’architettura di Von Neumann=PC)

-IL PC
1. HARWARE:
- CPU= esegue le istruzioni (avvalendosi della arithmetic-logic unit, o ALU)
- RAM (random-access memory)= e’ la memoria del PC (modernamente 4, 8, 12, 32 GB o gigabytes); e’
volatile (spegnendo il pc, il suo contenuto viene cancellato) ed e’ sia leggibile che scrivibile
- ROM (read-only memory)= e’ una piccola memoria solo leggibile ch contiene le istruzioni di bootstrap del
PC (un piccolo software che viene avviato prima del sistema operativo stesso)
- memorie di massa (o secondarie)= sono persistenti, hanno grossa capacita’ e costi bassi; sono molto piu’
lente della RAM; possono essere ferromagnetiche (i “vecchi” hard disks), ottiche (i “vecchi” CD e gli altrettanto
vecchi Blue Ray), o flash (le chiavette USB e le memory card)
- cache= una piccola memoria volatile piu’ veloce dalla RAM
- periferiche (di input/output)= tastiera, mouse, schermo, stampante, …
{Nel PC, i dati e le istruzioni vengono continuamente spostati dalle memorie piu’ lente (e grandi) a quelle piu’
veloci (ma piccole) fino ad arrivare alla CPU → questo viene fatto per ridurre i tempi di attesa di accesso al
memorie lente)}

• 2. SOFTWARE:
1)APPLICATIVO= paccheto Office, il browser, Call of Duty
2)DI BASE= permette all’utente di interagire con il calcolatore a basso livello: è il sistema operativo

- kernel= gestisce la CPU


-Gestore dei dispositivi I/O= gestisce le periferiche e le operazioni input/output su di esse
-File system= gestisce l’archiviazione e il reperimento dei dati sulle memorie di massa
-Gestore della rete= gestisce la comunicazione con altri calcolatori connessi in rete
-Interprete dei comandi= gestisce l’interazione con l’utente (testuale o mediante tastiera e mouse)
→ sistemi operativi pi`u comuni sono: • Unix (Bell Labs, 1960) • GNU/Linux (1992): sistema operativo gratuito e
open source basato sul kernel Linux sviluppato nel 1991 da Linus Torvalds esu un sistema di librerie e SW di
base sviluppato dalla Free Software Foundation nell’ambito dello GNU Project (progetto di costruzione di una
“copia” free di Unix) • Windows (Microsoft, 1985) • macOS (Apple, 2011; e’ basato su Linux/Unix) • iOS (Apple,
2007) • Android (Google, 2007) • Chrome OS (Google, 2011)
→ settembre 2022:
• Modo smarphones= Android ha il 72% di market share; iOS il 28%
• Mondo desktop/laptop= Windows ha il 74%; macOS il 14%; sistemi Linux-based il 5% (di cui ”desktop Linux”
il 2.84% e ChromeOS il 2%)
• Mondo tables:= iPadOS ha il 52% e Android il 48%.

2) ALGORITMI & LINGUAGGI

-ALGORITMI= nella vita quotidiana; metodo per risolvere un’equazione di secondo ordine, eseguendolo a mano/ a
computer

-RICETTA/ISTRUZIONI= sequenza dettagliata per eseguire azioni → ALGORITMO presuppone un esecutore (es. Wolfram
Alpha= se scrivi un’equazione la risolve)

-- presuppone un esecutore che presi dati in input → esegue le istruzioni dell’algoritmo per produrre l’output
[L’algoritmo deve essere formulato in un linguaggio comprensibile all’esecutore, indicando in modo completamente non
ambiguo che istruzioni, o operazioni elementari, vadano eseguite].

LINGUAGGI DI PROGRAMMAZIONE

- Nei computer, gli algoritmi (come tutti i SW) vengono codificati attraverso un linguaggio di programmazione
(=linguaggi estremamente strutturati con regole di produzione grammaticale precise).

-La formulazione di un algoritmo (che potrebbe essere descritto anche in italiano)in un linguaggio di programmazione
e=programma.

-LINGUAGGI NATURALI & FORMALI

• NATURALI= spesso ambigui & semantica dipende dal contesto

• FORMALI= libero dal contesto (non ha ambiguità) → linguaggio della logica (algebra) preciso per parlare a una
macchina

1. individuare un alfabeto (=insieme finito di simboli)

2. definizione di grammatica formale= descrive le regole di produzione di un limguaggio {algebra boleana=


linguaggio formale}

→ Data una frase e un grammatica (formale) di un certo linguaggio, è possibile utilizzare un algoritmo per determinare
se la frase appartenga a quel linguaggio o meno. Farlo consiste nel risolvere il famoso problema della acceptance,
recognition, o detection. (= il problema fondamentale dell’informatica teorica)

-GERARCHIA DI CHOMSKY

• i linguaggi di programmazione sono progettati cosi’ da essere completamente context-free

• la gerarchia di Noam Chomsky (1955)= classifica i linguaggi formali in 4 tipi:

1. TIPO 0=illimitato (macchina di Turing) → grammatiche illimitate, tutte le informazioni formali

2. TIPO 1=contestuale (autonoma lineare, MT) → grammatiche dipendenti dal contesto, linguaggi dipendenti
dal contesto

3. TIPO 2= non contestuale (autonoma a pila) → grammatiche libere dal contesto, linguaggi liberi dal contesto

4. TIPO 3= regolare (autonoma a stati finiti) → grammatiche regolari, linguaggi regolari

{italiano= tipo 0; linguaggi formali in cui si programma calcolatore (come Pyton)= tipo 2}

3)BREVE STORIA DEL COMPUTER

-ABACO=primo embrione di computer, un sistema di calcolo manuale basato su una rappresentazione numerica
posizionale

• si crede tradizionalmente sia stato inventato in Cina, in realtà nacque prima dei cinesi (200-100 A.C.)

• l’hanno utilizzato: romani, greci, persiani, sumeri (2700-2300 A.C.)= tavolette di argilla
→ 1632, William Oughtred= matematico inglese: REGOLO CALCOLATORE= diretto successore dell’abaco

→ 1642, Blaide Pascal= matematico, fisico, filosofo, teologo francese: PASCALINA= I calcolatrice meccanica (francese:
pascaline)

{logarirmi= inventati da Nepero per far di conto}

→ 1623 Wilhelm Schickard precede Pascal di 20 anni e costruisce: OROLOGIO CALCOLATORE= > fama della Pascalina a
causa della propaganda illuministica del 17esimo secolo

• MACCHINA DI SHICKARD= > efficiente della Pascalina nelle sottrazioni, ma non esegue automaticizzate i riporti
(no sopravissuti esemplari originali), sottraeva e sommava numeri fino a 6 cifre

→ Leibniz realizza: STEPPED RECKONER= (calcolatore a passi/Rechnenmachine) calcolatrice a manovella che realizza
tutte e quattro le operazioni matematiche

• problemi meccanici; difetto di progettazione nel meccanismo di trasmissione dei riporti (non permetteva alla
macchina di funzionare in modo affidabile)

→ 1837 Charles Baggage=matematico, filosofo, inventore, ingegnere meccanico progetta: ANALYCAL ENGINE=
macchina che opera in input & output su schede perforate (mai realizzata) conteneva molti ingredienti di un computer
moderno (unità aritmetico-logica, controllo di flusso mediante conditional branching, cicli, una memoria integrata): I
progetto computer general-porpuse

→ 1842 Luigi Federico= matematico italiano ascolta Babbage descrivere a un congresso la sua macchina, realizza: una
descrizione in francese, tradotta poi in inglese & ampliata da Ada King (contessa di Lovelace, figlia di Lord Byron)

• Lovelace= molti lavori teorici per la macchina di Babbage, tra cui PRIMO PROGRAMMA INFORMATICO DELLA
STORIA= un algoritmo per il calcolo dei numeri di Bernoulli

→ 1936 (ultimato nel 1938) Konrad Zuse= ingegnere tedesco intraprende la progettazione e costruzione di: Z1
(inizialmente in casa, con l’aiuto economico dei suoi genitori)= computer programmabile con memoria, istruzione (in
input) immesse attraverso un nastro di celluloide perforato, dove veniva scritto anche l’output

• usava una tecnologia elettromeccanica & un sistema di memorie meccaniche (da piastrine metalliche scorrevoli
sovrapposte a incastro)

- nelle versioni successive (Z2 & Z3) inizia a usare i relè (1938-39 solo per le unità di calcolo dello Z2) poi per
tutti i componenti dello Z3 (1939-41)

• Z1= primo computer moderno (progettato, realizzato e utilizzato), ha inoltre inventato il primo linguaggio di
programmazione della storia (per lo Z1): PLANKALKUL

→ 1920 ENIGMA= macchina a rotori elettromeccanica sviluppata in Germania negli anni 1920 per la
crittazione/decrittazione di messaggi segreti (i suoi settaggio/chiave venivano cambiati ogni giorno).

→ 1939 Alan Turing matematico, logico, crittografo, filosofo britannico progetta: BOMBE= dispositivo elettromeccanico
usato da crittografi britannici per scoprire alcuni settaggi di Enigma (decisiva per esito della guerra); in realtà merito da
BOMBA dal predecessore polacco Marian Rejewski, inventata per decrittare la prima versione di ENIGMA

→ 1943-45 codebreakers britannici sviluppano: COLOSSUS per decifrare la cifratrice tedesca Lorenz (>ore a Enigma):
decifrava circa 4000 messaggi tedeschi, giapponesi, italiani ogni gg

• =totalmente basato su valvole termoioniche (usate anche oggi negli amplificatori valvolari); [diversamente da
Bombe di Turing & Rejewski= dispositivi elettromeccanici]

→ 1945 John Mauchly & J. Presper Eckert: ENIAC= ((Electronic Numerical Integrator and Computer) è il primo computer
programmabile, elettronico e general-purpose (il primo a godere di queste funzionalita’ tutte insieme) a programma
cablato
• progettato per fare calcoli balistici nella World War II → risoluzione problemi: studio di fattibilita’ per armi
termonucleari (un mese di lavoro); da l Los Alamos National Laboratory dove il matematico ungherese
(nazionalizzato americano) John von Neumann (uno dei genii, seppur guerrafondaio, del secolo scorso) stava
calcolando come sganciare la bomba H (voleva colpire Tokio in origine) per massimizzarne i danni.

• Poteva calcolare una traiettoria in 30s (a un uomo sarebbero servite 20h)

• costava 7237h di lavoro; 486804,22 $(5 milioni); 18000 valvole termoioniche che scaldavano l’ambiente fino a
50°C, 180m^2, peso=30 tonnellate; prima accensione= blackout nel quartiere ovest di Filadelfia (consumava
200KW)

→ 1949 Mauchly & Eckert (stessi progettisti dell’ENIAC) progettano: EDAVC= (Electronic Discrete Variable Automatic
Calculator) a programma memorizzato, usava la memoria a linea di ritardo interna in cui i dati & il
programma/algoritmo era memorizzato

• uno dei primi computer basato su architettura di Von Neumann

• conteneva 6000 valvole, 12000 diodi, consumava 56KW di potenza elettrica

→ anni 50’ TRANSITOR= dispositivi a semiconduttore funzionalmente identici a valvole termoioniche ma sensibilmente
> piccoli

→ anni 60’ CIRCUITI INTEGRATI/MICROCHIP= grazie ai quali naque il microprocessore, he determino’ la


miniaturizzazione e la conseguente vertiginosa diffusione dei personal computer (ed oggi degli smartphones) fino ad
oggi (grazie non solo alla ridotta dimensione, ma anche ai costi di produzione di diversi ordini di grandezza minori).

→ 1979 SHARO ELSI MATE EL-8048 giapponese= calcolatrice che ancora affiancava alla calcolatrice elettronica che
conosciamo un abaco: pare che i giapponesi fossero cosi’ rapidi a usarlo che, per operazioni semplici, lo preferissero per
velocita’ alla calcolatrice elettronica!
-CIRCUITO INTEGRATO= ideato da Jack St. Clair Kilby (1958) Nobel per la fisica nel 2000) = circuito elettronico
miniaturizzato contenente una moltitudine di transistor che vengono tutti realizzati (costruiti) simultaneamente da un
processo chimico. → dimensioni di circa 5 mm x 5 mm.

(A volte viene impropriamente detto chip,=il supporto del circuito integrato, un piccolo pezzetto di materiale staccato
(chipped per l’appunto) da un supporto (detto wafer) di un materiale semiconduttore (tipicamente silicio), sul quale
vengono realizzate le porte)

ALGEBRA BOOLEANA

1) INTRODUZIONE

- nome da matematico, filosofo, logico inglese George Boole (1815-1864)


- 1854: pubblica “The laws of Though”= trattazione dell’algebra di Boole o booleana
• storicamente: algebra booleana= posto basi per sviluppo di: informatica (soprattutto per sua parte a basso
livello = vicina a funzionamento dei circuiti logici)
→ realizzati all’inizio attraverso sistemi meccanici (macchina di Pascal o Babbage); elettromeccanici attraverso
relè (Z1 di Zuse) & puramente elettrici attraverso prima valvole termoioniche (ENIAC, EDVAC), > piccoli transitor
di oggi (< dispendiosi di potenza)
• obbiettivo di Boole: poter calcolare algebricamente (=attraverso insieme di operazioni → manipolando
espressioni formali con incognite: algoritmo) valore di verità di proposizioni complesse: da valore di verità di
proposizioni semplici
→ versione equivalente (matematicamente) dell’algebra Boole= inventata 200 anni prima da Leibniz

ALGEBRA DEI CONCETTI DI LEIBNIZ


-1690: inventa= ALGEBRA DEI CONCETTI → versione matematicamente equivalente a algebra di Boole (concepita per gli
insiemi per lo +)
-principi della logica di Leibniz (& della filosofia Boole che condivideva sono2):
1. idee create unendo insieme idee semplici (-→ alfabeto del pensiero umano)
2. idee complesse: procedono da semplici → attraverso combinazioni uniformi & simmetriche (simii a moltiplicazioni
aritmetiche → algebra booleana= basa su una forma di aritmetica)

CALCOLO PROPOSIZIONALE
-idea di Boole (come di Leibniz)= sviluppare un sistema algebrico per determinare valore di verità di proposizioni
composte → proposizioni atomiche di cui conosciamo valore di verità= combinate con connettivi logici
PROPOSIZIONI ATOMICHE → VALORI DI VERITA → V=1 o F=0
CONNETTIVI= operazioni vero-funzionali → applicazione modifica falsità o verità delle proposizioni a cui vengono
applicate

- ogni operazione=funzione che prende in input 1/+ proposizioni & le combina in una nuova proposizione

- ogni operazione= rappresentata attraverso una tabella (/lookup table)= sempre possibile farlo per funzioni con n finito
di valori in input

- formula (proposizion)= composta= interpretata sempre come vera: TAUTOLOGIA (greco antico TAUTOS= stesso &
LOGOS=spiegazione)

es. oggi piove / oggi non piove

ASSIOMI DELL’ALGEBRA BOOLEANA

= tupla di 6 elementi:

• insieme A

• 2 soli elementi in A: 0=falso & 1=vero

• 2 operazioni binarie associate a A: ∧ (AND) e ∨ (OR)

• una operazione unaria: ¬ (complemento o NOT)

• il seguente insieme di assiomi, validi per ogni terna A, B, C ∈ A :

→ associatività: A ∨ (B ∨ C) = (A ∨ B) ∨ C A ∧ (B ∧ C) = (A ∧ B) ∧ C

→ commutatività: A ∨ B = B ∨ A A ∧ B = B ∧ A

→ assorbimento: A ∨ (A ∧ B) = A A ∧ (A ∨ B) = A

→ identità: A ∨ 0 = A A ∧ 1 = A

→ distributività: A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C) A ∧ (B ∨ C) = (A ∧ B) ∨ (A ∧ C )

→ complemento: A ∨ ¬A = 1 A ∧ ¬A = 0

2) OPERATORI: NOT, AND, OR

OPERATORI:

1) NOT

2) AND
3) OR

Nota: anche se basta che almeno una delle due espressioni sia
soddisfatta; per questo l’OR vale 1 se entrambi i suoi argomenti
valgono 1; in questo specifico caso le due espressioni non
possono essere soddisfatte simultaneamente (non c’`e nessun x
che sia al contempo ≤ −3 e ≥ 3).

PRIORITÀ TRA CONNETTIVI

1) NOT

2) AND

3) OR

→ usare < parentesi

es. ((¬A) ∧ B) ∨ (¬C) ≡ ¬A ∧ B ∨ ¬C.

→ (¬P) ∨ (O ∧ U)

tavola di verità:

soluzione= andiamo al cinema (oggi,


a vedere Avatar 2)

ESERCIZI: diap. 19- 20

LEGGI DI DE MORGAN

= leggi (/proprietà la cui correttezza è dimostrabile) → riscrivere formule complesse (AND, OR) in modo > semplice

→ introdotte da matematico & logico inglese Augustus De Morgan, nel 1847

- I LEGGE DI DE MORGAN: ¬(A ∧ B) = ¬A ∨ ¬B

tavola di verità → per dimostrarne la correttezza

(ultime 2 colonne sono identiche)

- II LEGGE DI DE MORGAN: ¬(A ∨ B) = ¬A ∧ ¬B

tavola di verità → per dimostrarne la correttezza

(ultime 2 colonne sono identiche)

→ permette di semplificare formule complesse &


¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
= 3 operatori (AND, OR, NOT= non sono indipendenti)

→ possiamo riscrivere AND attraverso solo OR & NOT: A ∧ B = ¬ ¬(A ∧ B) = ¬(¬A ∨ ¬B)

→ possiamo riscrivere OR attraverso solo AND & NOT: A ∨ B = ¬ ¬(A ∨ B) = ¬(¬A ∧ ¬B)

le due leggi di De Morgan= anche per sequenze di AND & OR di lunghezza arbitraria:
¬(A ∧ B ∧ . . . ∧ Z) = ¬A ∨ ¬B ∨ . . . ∨ ¬Z
¬(A ∨ B ∨ . . . ∨ Z) = ¬A ∧ ¬B ∧ . . . ∧ ¬Z (diap. 27)

XOR
-OR inclusivo & esckusivo
• VEL= o inclusivo (voglio mangiare o carne o pesce) → va bene mangiare entrambe le cose (carne, pesce, o
carne e pesce)
• AUT= o esclusivo (voglio mangiare o carne o pesce) → (carne, pesce, ma non insieme)

XOR = O ESCLUSIVO
- da operatore OR
→ per il concetti di aut (=o esclusivo) → nuovo operatore: XOR (da inglese eXclusive OR); da simbolo ∨

∨ differisce dall’∨ per A = B = 1, nel cui caso il suo valore `e 0

esercizi diap 31

XOR= operatore derivato → vale la relazione: A∨B ≡ (¬A ∧ B) ∨ (A ∧ ¬B))

verifica correttezza con tavola di verità:

- XOR= associativo → verifica:

1) (A∨B)∨C

2) A∨(B∨C)

-XOR= come operatore di odd parity di una


stringa binaria: operatore booleano il cui valore
è 1 pari se somma degli 1 nella stringa è
dispari (e.g., A∨(B∨C) = (A∨B)∨C)

OPERATORI IF, THEN, IFF

- IF-THEN: nuovo operatore derivato → implicazione logica: A ⇒ B


A implica B → A= condizione sufficiente per essere madre (ma si può essere madre anche senza partorire, grazie e.g.
all’adozione → partorire non è necessario)

- implicazione al contrario:

B= condizione necessaria per A (B= vero → affinché pure A lo sia; A= vera → B= anche vera → se B= vera, A= può
essere falsa)

[esempio: e necessario aver passato INFORMATICA per potersi laureare in ECONOMIA a UniBg ma aver passato
INFORMATICA non basta per potersi laureare (passare INFORMATICA non `e sufficiente) ]

- in sintesi: , A ⇒ B significa che “se A `e vera, B dev’essere vera”

→ sintesi dell’osservazione nella tavola di verità:

NOTA SU CONDIZIONI NECESSARIE:

nota: stare a casa= condizione necessaria affinché oggi piova → corretto

= necessario che noi siamo a casa → affinché oggi possa piovere; se non fossimo a casa= non potrebbe piovere affatto
(altrimenti saremmo fuori con pioggia: no possibile)

→ ci si può confondere sul poter uscire (scelta) ma la pioggia non ha discrezionalità

-approfondimento: in matematica, condizioni necessarie= tipicamente dimostrate per assurdo

es. se vogliamo negare che: A ⇒ B `e vera → negando antecedente: A = 0 → per forza avere che acnhe conseguente sia
falso: B = 0 → altrimenti A ⇒ B : sarebbe falsa (avremmo 0 ⇒ 1)

→ per dimostrare che A ⇒ B : sufficiente assumere B=1, imporre A=0 & dimostrare che si deduce B=0 → nasce una
contraddizione

IFF

- possiamo combinare 2 implicazioni opposte in un singolo operatore (derivato): se e solo se o IFF (da inglese if & onli
if) : A ⇔ B

A ⇔ B := (A ⇒ B) ∧ (B ⇒ A)

- tavola di verità dello XOR → IFF= XOR negato

A ⇔ B ≡ ¬(A∨B)

NAND & NOR

-NAND: ∼∧ → definito come negazione di AND

A ∼∧ B := ¬(A ∧ B)

-NAND= operatore molto potente → funzionalmente completo

solo con NAND possiamo esprimere: AND, OR, NOT (operatori


derivati: XOR, IF-THEN, IFF)

DIAP 43
-NAND= non è associativo

NOR: come negazione di OR


(simbolo: ∨ )

A ∼∨ B := ¬(A ∨ B)

= funzionalmente completo → possiamo


esprimere AND, OR, NOT

(e operatori derivati XOR, IF-THEN, IFF)

-NOR: non è associativo

verifica:

esercizi: diap 47

SINTESI DI FUNZIONI LOGICHE

-PORTA LOGICA (logic gate)= circuito elettrico digitale →


realizzare/implementare una funzione di variabili booleane

in simboli:

- imponendo l’ingresso di una porta logica → opportuni segnali elettrici (= 0 o 1) → porta può calcolare output
dell’operatore che implementa automaticamente (in tempi rapidissimi)

→ elettronicamente una porta logica= realizzata in vari modi → es. attraverso diodi, transitor, NMOS (tipo speciale di
transitor)
- dimensioni= ridottissime (nanometro= miliardesimo di metro, 10 -9)

es. di implementazioni elettroniche di una porta AND

CIRCUITI INTEGRATI= ideato da Jack St. Clair Kilby nel 1958, nobel per fisica nel 2000

• = circuito elettronico miniaturizzato, contiene moltitudine di transitor → realizzati simultaneamente da un


processo chimico

• dimensioni circa 5mm x 5mm

• a volte viene detto chip (anche se chip è supporto del circuito integrato= piccolo pezzetto di materiale staccato
[chipped] da un supporto [wafer] di un materiale semiconduttore [solitamente silicio] → su cui vengono
realizzate le porte)

• montato un
package
(contenitore)
di ceramica;
lunghezza= 5-
15mm x 20-50
mm

• contatti su cui
viaggia
segnali di input/output= spesso a lati

→ circuito integrato= può integrare fino a 28 miliardi di transitor in un solo chip

- tradurre una funzione booleana in un circuito logico: semplice se a disposizione porte logiche in numero & tipo
corretto = tanti quanti sono gli operatori presenti nella funzione

← esempio
- sintetizzare funzioni logiche: anche se non conosciamo forma algebrica direttamente da tavola di verità

→ funzione D (tabellarmente:)

- tradurre osservazione nella formula:


F(A, B) = (A ∧ ¬B) ∨ (¬A ∧ ¬B)

→ metodo : esprimere qualsiasifunzione booleana F nella forma normale disgiunta (DFN= desjunctive normal form)=
funzione algebrica di F contenente una disgiunzione (insieme di OR) di clausole → ogni clausola= serie di congiunzioni
(=AND) degli input della funzione & della loro negazione

RIASSUNTO DEL METODO DI COSTRUZIONE DELLA DFN DELLA TABELLA:

1. ogni combinazione c di valori di input, per cui F= vera → introduzione di una clausola (congiunzione AND)
contenente: input di F (funzione non negati) se c prende valore 1 & negato se c prende valore 0

2. unione tutte le clausole create, attraverso una disgiunzione (OR)

→ altre forme oltre a DNF: fomra normale congiuntiva (CFN= conjuctive normal form): congiunzione (AND) o
disgiunzioni (OR)

→ convertire una funzione da Dnf (fomra normale congiuntiva, CNF)

- per convertire una funzione da DNF a CNF: applicare proprietà distributiva

F(A, B) = (A ∧ ¬B) ∨ (¬A ∧ ¬B) = = ((A ∧ ¬B) ∨ ¬A) ∧ ((A ∧ B) ∨ ¬B) = = (A ∨ ¬A) ∧ (¬B ∨ ¬A) ∧ (A ∨ ¬B) ∧ (B ∨ ¬B)

ESERCIZI:

1. ) Si rappresenti la funzione booleana (espressa in DNF) F = (A ∧ B) ∨ (B ∧ ¬C) mediante circuito logico.

2. Si riscriva la funzione F = (A ∧ B) ∨ (B ∧ ¬C) in CNF e se ne disegni il circuito. Usiamo la propriet`a distributiva per
portare la funzione in CNF: (A ∧ B) ∨ (B ∧ ¬C) = ((A ∧ B) ∨ B) ∧ ((A ∧ B) ∨ ¬C) = = (A ∨ B) ∧ (B ∨ B) ∧ (A ∨ ¬C) ∧ (B ∨
¬C)

anche AND= associativo → raggruppare le


diverse clausole come vogliamo nel circuito

? PERCHE ALGEBRA BOOLEANA E A BASE DELL’INFORMATICA?

- costruire, manipolare espressioni in logica proposizionale; tramutare funzioni booleane in circuiti logici = realizzabili
attraverso componenti digitali (transitor)

→ storia dell’informatica: aspettiamo che operazioni artimetiche (NON logica proposizionale)= fondamento
dell’informatica

= connessione tra funzioni & circuiti logici → realizzare operazioni aritmetiche tra numeri (in formato binario)

RAPPRESENTAZIONE DELL’INFORMAZIONE

1) SISTEMI DI NUMERAZIONE

- nei sistemi posizionali → numeri= rappresentati da cifre, valore cambia a seconda della loro posizione (ogni posizione
ha un peso)

= rappresentazione di un numero n: cifre intere & m: cifre frazionarie

cn−1 . . . c2c1c0, c−1 . . . c−m

SISTEMA DECIMALE

→ 10 cifre (base o radice 10): ci ∈ {0, . . . , 9}

es. rappresentazione decimale del numero: 327, 23

- valore di 327,23 (*) è: [* = valore espresso in decimali, sistema numerico]

3 · 102 + 2 · 101 + 7 · 100 + 2 · 10−1 + 3 · 10−2 =

3 · 100 + 2 · 10 + 7 · 1 + 2 · 0, 1 + 3 · 0, 01 =

300 + 20 + 7 + 0.2 + 0.03


SISTEMA BINARIO

- 2 cifre (base o radice 2): ci ∈ {0, 1}

- cifra= bit (da inglese= binary digit= cifra binaria)

• binario (da latino binus= doppio) & derivato binarius= da 2 elementi

rappresentazione in binario del numero: 1101, 01 2 (pedice 2= numero è rappresentato in binario)

in decimale è:

1 · 2 3 + 1 · 2 2 + 0 · 2 1 + 1 · 2 0 + 0 · 2 −1 + 1 · 2 −2 =

1 · 8 + 1 · 4 + 0 · 2 + 1 · 1 + 0 · 1/2 + 1 · 1/4 =

1 · 8 + 1 · 4 + 0 · 2 + 1 · 1 + 0 · 0, 5 + 1 · 0, 25 = 13, 25

BASE 10 & BASE 2 DEC BIN

0 0

1 1

2 10

3 11

4 100

5 101

6 110

7 111

8 1.000

9 1.001

10 1.010

11 1.011

12 1.100
13 1.101

14 1.110

15 1.111

16 10.000

NUMERI RAPPRESENTABILI

→ considerare un numero binario intero, composto da n cifre

- elenco dei numeri che si possono fare al variare di n:

→ n cifre = possono rappresentare 2n numeri → elenco numero + grande che si può scrivere con n bit:

n bit= rappresentare numeri da 0 a 2n-1

ESERCIZI:
• 35 = 32 + 2 + 1 = 10 0000 + 10 + 1 = 10 0011
• 12 = 8 + 4 = 1000 + 100 = 1100
• 255 = 256 − 1 = 100 0000 − 1 = 1111 1111
• 260 = 256 + 4 = 100 0000 + 100 = 100 0100
• 51 · 4 = (32 + 16 + 2 + 1) · 4 = (10 0000 + 1 0000 + 10 + 1) · 100 = 11 0011 · 100 = 1100 1100
• 50/8 = (32+16+2)/8 = (10 0000+1 0000+10)/1000 = 11 0010/1000 = 110, 010
- moltiplicazione/ divisione di un numero binario per una potenza del 2= SHIFT → si comporta in modo identico a
moltiplicazione/divisione di un numero decimale per una potenza del 10= traslazione shift del numero verso sx/dx → in
tante posizioni (quanti il numero di zeri nella potenza)

SISTEMA ESADECIMALE (HEXADECIMAL)


- utilizza 16 cifre (base o radice=16)
ci ∈ {0, 1, 2, . . . 9, A, B, C, D, E, F}
= rappresentazione in esadecimale del numero 1A3D, 0F 16

- il valore di 1A3D, 0F in decimale è:


1 · 163 + A · 162 + 3 · 161 + D · 160 + 0 · 16-1 + F · 16-2 = 1 · 4096 + 10 · 256 + 3 · 16 + 13 · 1 + 0 · 1/16 + 15 · 1/256 =
1 · 4096 + 10 · 256 + 3 · 16 + 13 · 1 + 0 · 0, 0625 + 15 · 0, 00390625 =
4096 + 2560 + 48 + 13 + 0, 05859375 =
6717, 05859375

BASE 10,2, & 16

BASE 10 & BASE 2 DEC BIN HEX

0 0 0

1 1 1

2 10 3

3 11 3

4 100 4

5 101 5

6 110 6

7 111 7

8 1.000 8

9 1.001 9

10 1.010 A

11 1.011 B

12 1.100 C

13 1.101 D

14 1.110 E

15 1.111 F

16 10.000 10

→ 1 cifra esadecimale= contiene informazione di 4 bit

CONVERSIONI TRA BASI BINARIA & ESADECIMALE (& DECIMALE)

1.1102 = E16 = 1410

11112 = F16 = 1510


101002 = 0001 01002 = 1416 = 2010

111 1010 01012 = 0111 1010 0101 = 7A516 = 195710

1111 11112 = FF16 = 25510

111 11112 = 0111 11112 = 7F16 = 12710

B616 = 1011 01102 = 18210

ESAMI D’USO DEI NUMERI BINARI

unità di misura delle memorie:


• 1 B (Byte) = 8 bit
• 1 KB (KiloByte) = 1024 B = 210 Byte = ≃ 103 B
• 1 MB (MegaByte) = 1024 KB = 2 20 Byte = ≃ 103 KB
• 1 GB (GigaByte) = 1024 MB = 2 30
Byte = ≃ 103 MB
• 1 TB (TeraByte) = 1024 GB = 2 40
Byte = ≃ 103 GB
• 1 PB (PetaByte) = 1024 TB = 2 50
Byte = ≃ 103 TB
• 1 EB (ExaByte) = 1024 PB = 2 60
Byte = ≃ 103 PB

INDIRIZZI DI RETE IPv4

- rappresentazione canonica (in decimali): 4 numeri interi tra 0 & 255 separati da un punto:

104.18.3.244 (Indirizzo IPv4 di www.unibg.it)

→ ogni intero= lungo 1 byte (8 bit) → 32 bit

= in binario → 0110 1000 {104} . 0001 0010 {18} . 0000 0011 {3} . 1111 0100 {244}

- contando tutti gli indirizzi possibili tra 0.0.0.0 & 255.255.255.255 : numero max di indirizzi= 256 . 256 . 256 . 256= 4
294 967 296 ≃ 4 miliardi (4 giga)

RAPPRESENTAZIONE DEI COLORI


- tonalità dei 3 colori: R,G,B
• da 0 a 255 in decimale
• da 00 a FF in esadecimale
→ rosso 255,0,0 → FF 00 00
→ verde 0,255,0 → 00 FF 00
→ blu 0,0,255 → 00 00 FF
→ nero 0,0,9 → 00 00 00
→ bianco 255, 255, 255 → FF FF FF
→ giallo 255,255,0 → FF FF 00

RAPPRESENTAZIONE DEI CARATTERI: ASCII


= American Standard Code for Information Interchange = codifica
standard dei caratteri, introdotta da ASA (American Standards
Association) nel 1963 (I edizione)
→ nella versione originale: usava 7 bit & poteva rappresentare a
128 caratteri
nella sua estensione > recente utilizzata (=8 bit = 2 byte) & può rappresentare a 256 caratteri

basato su alfabeto inglese & in qualche forma europeo (ad es. accenti italiani o umlaut tedesco) → non permette di
rappresentare molti caratteri (ad es. greci, cinesi, cirillici, …)

ASCII Code - The extended ASCII table (ascii-code.com)

UNICODE= standard proposto nel 1987 & curatoo da Unicode Consortium → per ovviare a mancanze dell’ASCII

→ versione corrente= rappresentare 149,186 caratteri → coprendo 161 lingue (vive & morte) & include molti simboli,
emoji, caratteri di formattazione

→ usa un numero variabile di byte (a 8) & completamente compatibile con ASCII (caratteri unicode contenenti solo 2
byte coincidono con quelli ASCII) [✔️️❤️ ★ Unicode Character Table (unicode-table.com) ]

3. LOGICA BOOLEANA PER FAR DI CONTO

- somme di numeri binari (in colonna)

→ somma di 2 bit= 1 (=2 in decimale) = 10 in binario → produce un riporto (carry in inglese) di 1

per calcolare ogni bit n-esimo del risultato= 3 valori di ingresso: bit n-esimo di A, bit n-esimo di B & riporto di n-1
esimo (sempre 0 se n è quella > a dx, 0-esima)

SOMMA DI 2 NUMERI A SINGOLO BIT

→ calcolo della somma di 2 numeri binaari: A & B → contengono 1 bit ognuno


• A+B= 00 se A=B=0
• A+B=01 se A=1 & B=0
• A+B=01 se A=0 & B=1
• A+B= 10 se A=B=1
- S= sum → cifra < significativa (quella > a dx) del risultato
- C= carry → cifra > significativa (quella > a sx) del risultato
- semplice rappresentazione dei valori che S & C= assumono a variare di A & B ← attraverso la tavola di verità:

→ produce 2 valori al posto di uno → tavola di vrità scritta= due funzioni (=multifunzione) → funzione per il calcolo di
S & quella per il calcolo di C

dato che le 2 funzioni= indipendenti → sintetizzarle attraverso 2 circuiti logici indipendenti


(condividono input, ma solo questo)
dalla tabella si nota che:
- funzione C= coincide con AND di A & B
- funzione S= coincide con XOR di A & B

CIRCUITO SEMISOMMATORE (HALF ADDER)

- per il calcolo di C & S → per il caso in cui A & B= contengono 1 solo bit → calcolare C & S con un semplice AND &
un semplice XOR

→ disegnare il circuito per il calcolo di C & S (circuito= semi sommatore o half adder) → direttamente senza passare
per forme normali

ESTENSIONE A 2 O + CIFRE

- costruire un circuito per somma di 2 numeri binari con solo una cifra

→ ora: estendere il risultato per poter sommare numeri binari contenenti un numero arbitrario di bit

- consideriamo la cifra n-esima & introduciamo:

• An: cifra n-esima di A

• Bn: cifra n-esima di B

• Ci−1: riporto proveniente calcolo della cifra n − 1-esima

• Cn: riporto proveniente calcolo della cifra n-esima

• Sn: cifra n-esima della somma (del risultato)

CIRCUITO SOMMATORE (FULL ADDER)

tabella di verità:

→ sintetizzare in DFN come:

Cn = (An ∧ Bn ∧ ¬Cn) ∨ (An ∧ ¬Bn ∧ Cn−1) ∨ (¬An ∧ Bn ∧ Cn−1) ∨ (An ∧ Bn ∧ Cn−1)

Sn = (An ∧ ¬Bn ∧ ¬Cn−1) ∨ (¬An ∧ Bn ∧ Cn−1) ∨ (¬An ∧ ¬Bn ∧ Cn−1) ∨ (An ∧ Bn ∧ Cn−1)

- disegno:

- costruzione del full adder= > semplice → 2 half


adder in cascata (half adder si chiama così proprio per
questo)

→ dimostrare: es. simulando tutte le combinazioni: questo circuito (> compatto)= equivalente a precedente

4-BIT ADDER

- per sommare numeri contenenti una quantità di bit arbitraria → collegare diversi sommatori in cascata

- 1 sommatore di numeri a 4 bit= seguente struttura:

ALTRE OPERAZIONI

- con idee logiche (& sforzo scientifico)=costruire circuiti logici → implementano funzioni > avanzate tra cui:

• sottrazioni

• moltiplicazioni

• divisioni

• confronto tra numeri

• a operazioni complesse (es. rendering in tempo reale dell’ambiente tri-dimensionale di un videogioco → può
richiedere esecuzione di un numero enorme di operazioni di algebra matriciale ogni millesimo di secondo)

4. OPERAZIONI DI NUMERI IN VIRGOLA MOBILE ( & RELATIVI PROBLEMI)

FLOATING-POINT NUMBERS & THE IEEE 754

- in un PC regolare, i numeri in virgola mobile= sono decodificati come 64-bit di stringhe che seguono la IEE 754-2005
(binary64) standard come

(−1)S (1. b51b50 . . . b0) {F} x 2E-1023

con:

- 1-bit segnal bit (S)

- un 11-bit esponente parziale (E)

- un 52-bit frazione (E)

nota: per 1 implicito prima di F → mantissa ha precisione di 52+1 bits


→ esempi:

rappresentazione di 0,312510 in binario64

1. convertiamo a base 2: 0,3125 10 → 0,01012

(0.312510 = 0.2510 + 0.062510 = 1/410 + 1/1610 = 0.012 + 0.00012 = 0.01012)

→ poi normalizziamo : 0,01012 → 1,01 x 2-2

questa è la rappresentazione del 64-bit binario64

CANCELLAZIONI CATASTROFICHE

- il risultato di un operazione aritmetica tra 2 virgole mobili: operandi potrebbero eccedere 64 bits → in questo caso: IEE
745 satndard= descrive che tale risultato dovrebbe essere corretto con 0,5 unità nell’ultimo posto (ULPs) (i.e., con
all’interno l’errore di approssimazione del numero risultante)

esempio: x = 1 = 1 × 2 0
→ y = 0. 0 . . . 0 { 52 } 1 = 1 × 2 −53

→ otteniamo: x + y = 1.0 . . . 0 {53} 1 × 2 0

che ha una mantissa di 54>53 bits → viene arrotondato verso l’alto a 1,0...1 {53}x2 0 o sotto a 1,0...0 {53}x20

[nel secondo caso incorriamo a una cancellazione catastrofica che risulta in x+y=x]

NUMERI NON RAPPRESENTABILI

→ facile intuire che sia impossibile rappresentare un numero irrazionale (e.g. √ 2 ) = decimale ma non periodico ←
attraverso una sequenza finita di cifre

- rappresentazione dei numeri non interi= problematica per i soli numeri razionali (=rappresentabili come frazioni)

- calcolo 1/3 in base 10 con divisione in colonna:

→ 0,3--= 1/3 non rappresentabile come numero floating point in base 10

- calcolo 1/5 in base 2:

→ 0,---00101--- = 1/5 non è rappresentabile in floiting point in base 2

per calcolare quanto buona sia l’approssimazione 0,00101 con 5 cifre dopo la virgola → 0,00101= 101 2 · 2-5= 5· 2 -5

0,15625
BASI DI DATI: MODELLIZZAZIONE
CLASSICHI ARCHIVI: attività di raccolta, organizzazione & conservazione dei dati= uno dei principali compiti
dell’informatica

→ approccio convenzionale a gestione dei dati informatici= file (fascicoli) ← modalità con cui gestiti classici archivi

• sistema di archiviazione a file= archiviare & ricercare dati → solo semplici meccanismi di accesso &
condivisione

- problema principale= ogni informazione pertinente a > fascicoli: deve essere replicata → problemi di ridondanza &
incoerenza dell’archivio (es. archivio clienti, studenti, movimenti,…)

BASI DI DATI= DATA BASES

- = insieme di archivi integrati → costituire una base di lavoro per utenti diversi con applicazione diverse

• condivise (applicazioni & utenti diversi → accedere a dati comuni)

• persistenti= dati rimangono memorizzati anche quando programmi che li utilizzano sono finiti

• gestite da un data base management system (sistema di gestione di basi di dati):

-affidabile= conservare dati in caso di malfunzionamenti ← funzionalità di salvataggio & ripristino

-efficiente= in termini di tempo& occupazione di memoria

-sicuro= impedisce a utenti non autorizzati di visualizzare o aggiornare il database

GESTIONE NON INTEGRATA:

-venditori -→clienti /

-fatturazione → clienti

GESTIONE INTEGRATA:

-venditori & fatturazione → clienti

QUERY= quale stipendio medio dei dipendneti lavorano a progetti che


utilizzano prodotti di costo >500.000 euro da ditta ABC

TIPICHE OPERAZIONI SU UN DATABASE

- creazione/ inserimento di nuovi dati


- manipolazione di dati pre-esistente

- variazioni /alterazioni di dati preesistenti

- cancellazioni di dati

- interrogazione (query) del database

MODELLIZZAZIONE DEI DATI

=attività di costruzione di una rappresentazi0one astratta della realtà osservata o del problema → individuando elementi
caratterizzanti & legami tra essi

→ considerare 3 livelli:

1. concettuale= realtà dei dati & associazioni tra essi ← attraverso schema di alto livello (=sintesi tra visione informale
degli utenti & precisa dei progettisti di un’applicazione)

2. logico= descrive composizione & formato dei dati negli archivi elettronici ← derivato da livello concettuale attraverso
regole di trasformazione

3. fisico= rappresenta effettiva installazione di archivi elettronici → implementazione del livello logico su suporti per
memorizzazione dati

REALTA:
modello concettuale → modello logico → modello fisico (DATABASE)

modello concettuale: modello entity/relationship (E/R) o entità/associazione

- MODELLO E/R:

ENTITA

=entità : oggetto (concreto o astratto) → significato se considerato in modo isolato (es. persone, automobile, movimenti
contabili, studenti, facoltà)

→ rappresentate attraverso rettangolo con nome delle entità (in genere sostantivo)

- studente= rappresenta un’istanza dell’entità

ATTRIBUTI

- proprietà delle entità (e associazioni)= descritte attraverso attributi

• ogni combinazione sensata di valori attributi → una istanza di un’entità (o associazione)

-CARATTERISTICHE

• formato di un attributo= indica tipo di valori che può assumere (es. carattere, numerico, data/ora)

• dominio di un attributo= insieme dei valori che può assumere


• dimensione di un attributo= indica quantità max di caratteri o cifre inseribili

• attributo= può essere omesso (=opzionale)

• attributo con valore mancante= denotato con Null

CHIAVE o CHIAVE PRIMARIA

= insieme minimale di 1/+ attributi → consentono di distinguere univocamente un’istanza da altra: chiave primaria (O
primary key)

ASSOCIAZIONI

-in inglese relationship, = legame che stabilisce un’interazione tra entità

• indicata attraverso un verbo, ha un verso con una punta di una freccia (indica il senso di lettura)

• nel linguaggio UML = si indica solo 1 verso

→ associazione da Facoltà → a Studente (essere scelta)= implicita

• molteplicità di un’associazione= n delle possibili istanze delle entità che partecipano a associazione

- REGOLA DI LETTURA PER LE ASSOCIAZIONI

ogni fornitore può fornire uno/+ prodotti

ogni prodotto deve essere fornito da un solo fornitore

esempio 1

ogni studente deve essere iscritto a una sola facoltà

ogni facoltà può avere iscritti uno o + studenti


esempio 2

ogni materia deve essere insegnata da 1/+ docenti

ogni docente può insegnare una/+ materie

CLASSIFICAZIONE DELLE ASSOCIAZIONI (TRA 2 IDENTITA)

ASSOCIAZIONI= grado pari a n di entità collegate

• associazioni 1:1 (uno a uno) o biunivoca

• associazioni 1:N (uno a molti) o semplice

• associazioni n:n (molti a molti) o complessa

ASSOCIAZIONI & ATTRIBUTI

PREZZO D’ACQUISTO= no attributo → una persona potrebbe


acquistare > automobili

AUTOMOBILE= no attributo → ogni automobile= prezzo di


listino ma potrebbe avere un prezzo d’acquisto diverso

- assegnare attributi direttamente a associazione acquistare


(anche associazioni= possono & devono avere attributi)

acquisto= non ha chiave primaria & è un’entità debole → ha


senso solo se associata a automobile ← attraverso loro attributi

- persona & automobile= entità forti → autonomamente


identificabili

- 2 entità= possono essere collegate da + associazioni (Una


persona può ordinare un’automobile, rottamarla,…);

- una persona= può avere + ruoli (docente, genitore, coordinatore,…)

MODELLO LOGICO (modello relazionale)

MODELLO RELAZIONALE

-relazione come concetto matematico:


-dati n insieme (A1, A2, …, An) non necessariamente distinti → relazione R su questi insiemi: insieme delle n-uple

a1, a2, …, an con ai membro di Ai per ogni i da 1 a n

-insiemi Ai= domini della relazione

→ relazione è di grado n

- numero delle n-uple o tuple= cardinalità della relazione

RELAZIONE COME TABELLA

1. ogni riga= una tupla della relazione R

2. ordine delle righe= no importante

3. tutte le righe= diverse tra loro

4. ordine delle colonne= signifcativo & corrisponde a ordine dei domini A 1, A2,…,An → su cui la relazione R è definita

5. ogni colonna ← rappresentata con un titolo= nome del dominio corrispondente

tabella= entità

schema della tabella=acquisti (NumFattura, Fornitore, CodProd, Reparto, Quantità)

da modello concettuale → a modello logico

MODELLO MODELLO
CONCETTUALE RELAZIONALE

Entità relazione

istanza tupla

attributi colonne

Insieme dei valori dominio


di un attributo

REGOLE DI DERIVAZIONE PER LE ASSOCIAZIONI


-se 2 entità= in associazione uno a uno (biezione) → rappresentarle in un unica tabella (contiene attributi di entrambe)

• associazioni uno a molti (Tra entità di partenza & una di arrivo)= rappresentata nella tabella dell’entità di arrivo
con un attributo → contenente identificatore univoco dell’entità di partenza che nella tabella di arrivo= da
chiave esterna (foreign key)

• associazioni molti a molti= una nuova tabella (In aggiunta a tabelle derivate da entità): composta da
identificatori univoci delle 2 entità & da eventuali attributi dell’associazione

esempio 1 : spettatori & posti a teatro (associazione 1:1)

-occupazioni: codice, nome, cognome, fila, numero, note

se ci possono essere delle file riservate ma non utilizzate (con


codice, nome, cognome vuoti) → conviene trattare associazione
come uno a molti → introducendo 2 tabelle:

1. spettatori (codice, nome, cognome, fila, numero)

2. posti (fila, numero, note)

esempio 2: facoltà & studenti (associazione uno a molti)

ogni studente deve essere iscritto a una sola facoltà

ogni facoltà può avere iscritti uno o + studenti

- 2 tabelle con la chiave primaria della 2 usata come chiave esterna


della prima:

1. Facoltà (CodFac, Descrizione, Città)

2. Studenti (Matricola, Cognome, Nome, Indirizzo, CodFac)

esempio 3: studenti & corso (associazione molti a molti)

ogni studente può suerare uno/+ corsi

ogni corso può essere superato da uno/+ studenti

- alle 2 tabelle originali:

1. Studenti (Matricola, Cognome, Nome, Indirizzo)

2. Corsi (CodCorso, Descrizione, Anno)

aggiungiamo a una nuova tabella: Esami (Matricola, CodCorso, Data, Voto)


BASI DI DATI

-PROBLEMI DI RIPETIZIONE/RIDONDANZA

- attributo “cognome nome”= eterogeneo (dovrebbe essere suddiviso

in 2 attributi) & non sempre riportato in modo coerente

- dati= ripetuti intra-record tra “cognome-nome” & “secondo nome”

- dati ripetuti inter-record

- dati errati (non siamo nel 2006)

-stipendio dell’impiegato= dipende solo da nome & no da progetto

-budget del progetto=dipende solo da progetto & no da impiegato

-mansione di un impiegato in un progetto= unica & dipende solo da


progetto

-CognomeNome, Progetto= chiave

RINDONDANZA

STIPENDIO di ciascun impiegato: ripetuto in tutte le tuple & dipende solo da cognome

BUDGET del progetto= ripetuto in tutte le tuple & dipende solo da progetto

-ANOMALIA DI AGGIORNAMENTO

se stipendio varia → modificare il valore in tutte le tuple corrispondenti → conseguenze:

1. spreco di spazio di memoria

2. in caso di aggiornamento= spreco di tempo per aggiornare tuple

3. rischio di creare inconsistenze (ad es. aggiorniamo lo stipendio nella prima tupla ma non lo facciamo nella seconda)

-ANOMALIA DI CANCELLAZIONE

se impiegato= decide di interrompere partecipazione a tutti i progetti senza lasciare azienda → bisognerebbe cancellare
tuple chelo associano a progetto → perderemmo traccia del suo cognome & stipendio (supposizione che non ci
possano essere campi vuoti

→ vale anche per progetto: se viene sospeso → si perdono i dati degli impiegati

-ANOMALIA DI INSERIMENTO
non si può inserire un nuovo impiegato finché questi non venga assegnato a un progetto

→ vale lo stesso per i progetti: non si può inserire un progetto finché non gli viene assegnato un impiegato

RADICE DI TUTTI I MALI

= PROBLEMI ← da uso di un’unica relazione per rappresentare informazioni eterogenee

in particolare nella relazioni ci sono:

-impiegati con relativi stipendi

-progetti con relativi budgets

-partecipazioni di impiegati a progetti con relative mansioni

EDGAR F. CODD

informatico inglese, nel 1970 (mentre lavorava per IBM) propose (e estese) il modello relazionale in una serie di articoli,
tra cui:

→ Codd, E. F. (1970) “A Relational Model of Data for Large Shared Data Banks”. Comunicaztions of the ACM. 13 (6): 377-
387; doi: 10.1145/362384.362685.S2CID 207549016

→ Codd, E. F. “Further Normalization of the Data Base Relational Model”, republished in Randall J. Rustin (ed.), Data
Systems: Courant Computer Science Symposia Series 6.Prentice-Hall, 1972

FORME NORMALI

= proprietà → certificare qualità dello schema di una relazione

- relazione= non soddisfa nessuna forma normale → contiene informazioni rindondanti= possono diventare
problematiche quando eseguite operazioni di inserimento, modifica & cancellazione

-principio di fondo= ogni tabella: deve corrispondere a un singolo oggetto della realtà

NORMALIZZAZIONE

= procedimento che prende una tabella & (se necessario) la scompone in > tabelle → aderiscono a una/+ forme
normali

→ utile strumento di analisi in ambito di attività di progettazione di un DB

NORMALIZZAZIONE DELLE RELAZIONI:

relazione iniziale= scomposta in > relazioni che:

1. complessivamente forniscono stesse informazioni di partenza

2. mantengono dipendenze tra attributi → ciascuna tabella, ogni attributo= dipende direttamente da chiave
3. evitati problemi di rindondanza & incosistenza dei dati

4. no perdita complessiva delle informazioni

1) PRIMA FORMA NORMALE (1NF)

= requisito minimo del modello razionale & prevede:

1. tutte le righe della tabelle contengono lo stesso numero di colonne

2. attributi= rappresentano informazioni elementari (non decomponibili) → in particolare attributi= no essi stessi delle
relazioni/tabelle

3. tutti i valori che compaiono in una colonna= appartengono a stesso dominio (no dati eterogenei)

4. ogni riga è diversa da tutte le altre

5. ordine in cui righe compaiono nella tabella= è irrilevante

esempio di 1NF

DIPENDENTI

Dipendenti (matricola, cognome, nome, datanascita)

Stipendi (matricola, datapagamento, importo)

Figli (matricola, cognomefiglio, nomefiglio)

DIPENDENZE

2 tipi di dipendenze:

1. FUNZIONALE= (diretta) tra attributi → solo valore di un attributo A1= sufficiente a determinare valore di un attributo
A2 A1 → A2

2. TRANSITIVA= un attributo A2 ← dipende da A1 & un attributo A3 ← dipende transitivamente da A1 A1 → A2 & A2


→ A3 → A1 → A3

2) SECONDA FORMA NORMALE (2NF)

= elimina la dipendenza parziale degli attributi della chiave, formalmente una relazione è in 2NF se:

1. soddisfa le proprietà della1NF

2. non contiene attributi non primari (o non chiave) ← che dipendono soltanto da una parte della chiave

-ATTRIBUTI PRIMARI= attributi che assumono combinazione unica & distinta in ogni riga

→ chiamati anche: chiavi candidate o superchiavi minime → potrebbero essere usati come chiavi

-2NF: no impedisce che un attributo non primario ← dipenda da un altro attributo non primario (esiste infatti una terza
forma normale per evitarlo)

esempio di 2NF:

prodotti chiave della relazione = CodProd, CodMagaz: chiave composta


→ supposizione: Indirizzo Magazzino ← dipende da CodMagaz (molto ragionevolmente non da CodProd)

- rinormalizziamo la relazione ponendola in 2NF come segue:

• inventario (CodProd, CodMagaz, Quantità)

• Magazzino (CodMagaz, Indirizzo)

TERZA FORMA NORMALE: 3NF

= elimina la dipendenza transitiva degli attributi della chiave

- una relazione: in terza forma normale se:

• è in 2NF

• tutti attributi non-chiave ← dipendono direttamente da chiave (no esistono attributi non chiave che ←
dipendono da altri attributi non chiave)

→ 3NF= no elimina tutte le anomalie di cui un DB relazionale può soffrire → nel 1974 Codd propone un’ulteriore forma
normale: forma normale di Boyce-Codd

OATH (GIURAMENTO)

- nel libro: Kent, William “A simple Guide to Five Normal Forms in Relational Database Theory”; communications of the
ACM 26 (2), Feb. 1983, pp.120-125

Bill Kent= riassume la definizione di 3NF → rifacendosi a giuramento tradizionale (davanti a una corte di giustizia negli
USA) : “every non-key must provide a fact about the key, the whole key, and nothing but the key”

NOTA

- quella oggi chiamata “forma normale di Boyce-Codd” → rifacendoci a forma proposta da Boyce & Codd nel 1971
ACM SIGFIDET Workshop on Data Description, Access & Control, San Diego, Calif (November 11th-12th, 1971)

→ secondo alcuni è un curioso caso della cosidetta “legge dell’eponimia di Stigler” che afferma: “a una scoperta
scientifica non si da mai il nome dell’autore”

- già visto un es. della legge di Stigler → al-Khwarizmi, i numeri arabi (che furono in realtà stati inventati in India)

nota: la legge di Stigler fu proposta da Robert Merton

1. esempio:

• relazione R2(A1,A2,A3,A4) in 2NF con dipendenza A3 → A4

→ dato che R2 è in 2NF: A1, A2 → A3 & A1,A2 → A4

-R2= non è in 3FN poiché:

• A1, A2 → A3 (corretto)

• A3 → A4 (non corretto: A4 ← dipende da un attributo non-chiave)

-relazione= può essere normalizzata in 3FN nel seguente modo:

R31(A1,A2,A3), R32(A1,A2,A4)
2. esempio:

considerare una compagnia: tutti impiegati di un reparto= rispondono a stesso numero di telefono

Impiegati

NomeImp → NomeReparto & NomeImp → TelReparto

- nomereparto & telreparto= no attributi primari & ← da tutta la chiave; relazione è in 2NF

- telreparto ← dipende anche da attributo non primario NomeReparto

→ portare la relazione in 3NF nel seguente modo:

• impiegato (NomeImp, NomeReparto)

• reparto (NomeReparto, TelReparto)

BASI DI DATI: OPERAZIONI RELAZIONALI

ALGEBRA RELAZIONALE:

=linguaggio basato su concetti di tipo algebrico

- di tipo dichiarativo= specifica le proprietà del risultato che andiamo cercando (anziché algoritmo con cui produrlo,
anche se per capirlo > esempi procedurali)

-su operazioni relazionali= operatori agiscono su una/+ relazioni (=tabelle) → per ottenere una nuova relazione

→ operazioni= tipicamente combinati per effettuare interrogazioni > complesse (queries) → risultato= nuove tabelle

OPERATORI, GRADO & CARDINALITA DELLA RELAZIONE

- definiamo 3 operatori principali:

1. selezione (select)

2. proiezione (project)

3. congiunzione (join)

→ studiare le seguenti proprietà della relazione ← prodotta da questi operatori:

• grado= n delle colonne (etichette, campi, attributi) della tabella

• cardinalità= n delle righe (records, tuple) della tabella

OPERATORE DI SELEZIONE

=SELECT: genera una nuova relazione contenente solo tuple della relazione di partenza A → soddisfano una determinata
condizione o predicato (attraverso formula booleana, cui variabili= attributi)

- esempio di selezione

richiesta: fornire un elenco di studenti di Torino

condizioni: formula (predicato) atomica → indirizzo = Torino (Indirizzo= variabile)

• righello= per analizzare ogni riga singolarmente studente


OPERATORE DI PROIEZIONE

=PROJECT: genera una nuova relazione → estraendo da tabella iniziale A: 1/+ colonne (corrispondono a attributi
prefissati)

-relazione risultante:

1. grado </= (generalmente <; = se proiezione fatta su tutti i campi di A)

2. cardinalità </0 a quella di partenza: è = se i campi su cui proiettano sono una superchiave → cancellando le colonne
si ottengono righe distinte (generalmente la rimozione di colonne → righe uguali → ridotte a una riga sola)

PROIEZIONE

richiesto: fornire la matricola & cognome degli studenti

-grado da 4 → scende a 2

- cardinalità: stessa → non ci sono righe uguali


(proiettando su matricola, un attributo chiave)

esempio:

richiesta: fornire cognome & indirizzo degli studenti

1. rimozione dei campi matricola & nome

2. Considerazione della 1 riga (con Rossi Milano) → cancellazione tutte le altre righe con Rossi Milano (poiché sono
duplicate)

3. considerazione della 2 riga Bianchi Torino → cancellazione tutte le altre occorrenze di Bianchi Torino

4. ripetere per tutte le righe

proiezione di studente su cognome & indirizzo

SELEZIONE & PROIEZIONE

agiscono su una relazione ortogonalmente

selezione: seleziona alcune righe della relazione ← secondo la condizione P

-proiezione= proietta la relazione su un insieme di colonne L


OPERATORE DI CONGIUNZIONE (JOIN) NATURALE:

=NATURAL JOIN: combina 2 relazioni A & B → 1/+ attributi in comune → generando una nuova relazione (contiene
tutte le righe combinate, affiancate di A & B che negli attributi comuni hanno gli stessi valori)

-relazione risultante

1. grado uguale a somma dei gradi delle relazioni di A & B – numero di attributi in comune

2. cardinalità: variabile (cardinalità massima pari a prodotto delle cardinalità con ogni riga di B)

→ cardinalità minima= 0 se nessuna riga di A può essere combinata con una riga di B

esempio di join naturale

→ considerazione delle relazioni studente & corso, con associazione (molti a molti) Frequentare.

1 solo attributo in comune: matricola → chiave primaria in studente & chiave esterna in corso

- possibile fissare il righello su corso & far scorrere ul


righello su stidente

-tabella ottenuta= la stessa → cambierà ordine delle righe


(ma non è rilevante ordine delle righe)

→ join naturale= molto utile poiché permette di combinare


relazioni collegate ← attraverso una chiave esterna

THETA JOIN

= operatore di congiunzione → specificata una condizione (predicato) ← secondo cui le righe di 2 tabelle A & B:
devono essere combinate

esempio:

• automobili (CostoAuto, ModelloAuto)

• barche (CostoBarca, ModelloBarca)

→ volontà: tutte le coppie automobile-barca = la 1 è la + costosa (della seconda) → si può applicare il theta join con la
condizione: Automobili.CostoAuto > Barche.CostoBarca

EQUI JOIN

= caso speciale del theta join → condizione= di uguaglianza


esempio:
volontà: tutte le coppie automobile-barca: 1 costa quanto la 2

→ utile per fare il join tra relazioni con campi: semanticamente identici ma con nome diverso

esempio:

volontà: le coppie automobili-barca con stesso costo

esempio di theta join & equi join

SELF JOI

=congiunzione di una tabella con sé stessa (=operatore derivato)

esempio: elencare dipendenti con cognome del responsabile

esempio:

• applicando equi-join Capo= D.Codice → ottenimento della seguente tabella

-SX= tabella originaria

-DX= rinominata con D (per distinguerla dall’altra)


ALTRI OPERATORI DI CONGIUNZIONE (JOIN)

1. OPERATORI DI INNER JOIN: NATURAL – THETA – EQUI JOIN

2. OPERATORI DI OUTER JOIN:

• LEFT (OUTER) JOIN= tutte le righe della tabella A → affiancate a quelle della tabella B (se si combinano) → le
righe di A non combinate, compaiono nel risultato ma con campi di B NULL

• RIGHT (OUTER) JOIN= lo stesso di prima ma scambiando A & B

• FULL OUTER JOIN= contiene tutte le righe del left & right outer join

→ per tabelle con struttura omogenea: righe con stesso n di attributi, tipo & nello stesso ordine → introduciamo 3
ulteriori operatori:

1. UNIONE

2. INTERSEZIONE

3. DIFFERENZA

esempio:

1. UNIONE= elenco dei clienti dei 2 esercizi

2. INTERSEZIONE= elenco delle persone che si servono sia presso macelleria sia cartoleria (Fabbri Paolo)

3. DIFFERENZA= Clienti_Macelleria – Clienti_Cartoleria: clienti si servono presso macelleria ma non presso cartoleria
(Mauri Antonella & Zeni Umberto)

INTERROGAZIONI CON PIU OPERATORI

- Facoltà (CodFac, Descrizione, Città)

- Studenti (Matricola, Cognome, Nome, Indirizzo, CodFac)

→ volontà: Cognome, Nome, Descrizione della Facoltà per gli studenti residenti a Milano

interrogazione:

1. selezione di studenti con indirizzo “Milano”

2. congiunzione della tabella ottenuta su CodFac & di facoltà su CodFac

3. proiezione della tabella → su cognome, nome, descrizione

SQL

GESTIRE UNA BASE DI DATI

-strumento (software) che ci permette di:


1. creare un nuovo database

2. creare nuove tabelle con uno schema

3. creare associazioni tra tabelle

4. aggiungere/rimuovere/manipolare i dati

5. eseguire interrogazioni (queries)

-strumento= gestore di basi di dati/ data base management system (DBMS)

GESTORE DI DATI (DBMS)

= si occupa di organizzare dati nelle memorie di massa & recuperarli quando richiesto

→ certo grado di astrazione:

• no richiede di sapere dove & in che formato sono memorizzati fisicamente i dati

• no richiede di specificare singole operazioni da eseguire → per eseguire un’interrogazione

- interrogazione fatta: di alto livello → DBMS traduce in istruzioni di basso livello → verranno poi eseguite su dati stessi

DBMS= progettato → eseguire le operazioni necessarie a interrogazione in modo efficiente (es. operando su interi
gruppi di righe o su intera tabella, anziché su una riga per volta)

→ per dialogare con DBMS: utilizzo di un linguaggio per basi di dati

LIVELLO DI LINGUAGGIO PER DB

diversi livelli di linguaggio → operare su una base di dati:

1. DDL (data definition language)= linguaggio per descrizione di: dati, tabelle (viste) → per creare struttura fisica del
data base ← riferimento a schema logico

2. DML (data manipulation language)= linguaggio per trattamento (manipolazione) dei dati: inserimento, modifiche,
cancellazioni

3. DCL (data control language)= linguaggio per controllo di accessi & permessi (Non tutti possono avere accesso a tutti
i dati)

4. QUERY LANGUAGE= linguaggio per interrogazioni (strumento per rinnovare datu → su base di criteri di ricerca
richiesti da utente)

→ moderni DBMS (es. microsoft acess): linguaggio contiene tutti 4 livelli: DDL+DML+DCL+QUERY LANGUAGE

SQL (STRUCTURED QUERY LANGUAGE)

= linguaggio standard → per interrogazioni di basi di dati ← utilizzato da molti DBMS (oracle, SQLserver, Acess,…)

→ contiene comandi del: DDL, DML, QUERY LANGUAGE

-suo antenato= da E. Codd nell’articolo del 1970 in cui introdusse basi di dati relazionali

(Codd, E.F., 1970. A relational model of data for large shared data banks, communications of the ACM, 13(6), PP.377-
387)
BREVE STORIA

anni 70 a IBM ← sviluppato da Domand D Chamberlin & Raymond F. Boyce (lesse artciolo di Codd) con il nome
SEQUEL (structured english query language) → disegnato per manipolare il DBMS quasi-relazionale di IBM (system R,
sviluppato poco prima)

- square= specific queries in a relational environment → I tentativo di Chamberlin & Boyce di sviluppare linguaggio per
basi di dati relazionali (complicato, scarso successo)

- 1937: iniziano a lavorare a un seguito di SQUARE: SQL → acronimo ottenuto rimuovendo 2 lettere da SEQUEL
(Marchio registrato presso una compagnia britannica)

→ acronimo SQL= interpretazione di structured query language

- negli standard ANSI & ISO: chiamato Database Language SQL

SQL= linguaggio specializzato

• no general purpose (come ad es. Python o C++, per agire su tabelle & produrne di nuove)= sue operazioni si
possono comporre

• no procedurale= non spiega a calcolatore come ottenere il risultato (Python ad es. lo fa): indica che risultato
vuole ottenere → DBSM= si occuperà del come

→ nelle versioni base (SQL-86, SQL-92): SQL= non è Turing completo: no essere utilizzato per scrivere un
qualsiasi programma eseguibile da computer

- versioni > recenti di SQL & alcuni suoi dialetti= versioni customizzate con caratteristiche extra; contemplano:

• elaborazioni condizionali IF,THEN

• controllo di flusso WHILE

• gestione degli errori

(snaturando il carattere non procedurale)

→ versioni Turing-complete

esempio:

codice SQL: 2008, scaricabile a indirizzo https://wiki.postgresql.org/wiki/Mandelbrot_set


implementa un algoritmo → per disegnare il “tubero peloso” di Mandelbrot

https://www.youtube.com/watch?v=b005iHf8Z3g

-versioni SQL

SINTASSI BASE DI SQL

-interrogazioni= inizializzate da parola chiave SELECT

-struttura base di un’interrogazione:

1. SELECT= nomi delle colonne da elencare separati da virgola (tutti gli attributi=*)

2. FROM= nome o nomi delle tabelle

3. WHERE= condizione da controllare su valori delle righe (condizione può contenere sottocondizioni con AND, OR,
NOT)

→ usando SELECT DISTINCT: righe duplicate nella tabella risultante= ridotte a una

MODELLO DI DATABASE PER ESEMPI

-database con anagrafica & movimenti:


tabelle derivate:

• anagrafiche (Kcodice, Nome, Indirizzo)

• Movimenti (Knumero, Descrizione, Data, Importo, Codice)

OPERAZIONI RELAZIONALI IN SQL: SELEZIONE

SELEZIONE: esempio

-quesito: visualizzare elenco delle anagrafiche con indirizzo uguale a Milano

→ selezione di anagrafiche per indirizzo = Milano

FORMA GENERALE:

OPERAZIONI RELAZIONALI IN SQL: PROEIZIONE

esempi:
-quesito 1: elencare codici & nomi delle anagrafiche

proiezione di anagrafiche su codice & nome:


-quesito 2: elencare i movimenti con data & importo

proiezione di movimenti su data & importo

OPERAZIONI RELAZIONALI IN SQL: CONGIUNZIONE

QUESITO: elencare movimenti con dati anagrafici a essi relativi

-congiunzione di anagrafiche su Kcodice & di movimenti su Codice

USO DI > OPERATORI:


- definire condizioni non atomiche: in WHERE ← mediante operatori booleani

-quesito: elenco di movimenti con Nome & Importo → riferiti a anagrafiche aventi un indirizzo prefissato

1. selezione anagrafiche con indirizzo prefissato

2. congiunzione della tabella ottenuta su Kcodice & di movimenti su Codice

3. proiezione della tabella ottenuta → su Nome & Importo


SELECT… FROM… WHERE

-SELECT= colonne che saranno mostrate & in che ordine (= calcoli su colonne)

• proiezioni, ridenominazioni, calcoli

-FROM= tabella o tabelle usate da interrogazione

• prodotti cartesiani, join

-WHERE= condizione deve essere soddisfatta da righe delle tabelle

• selezioni, condizioni di join

VECCHIA CONGIUNZIONE SQL IN ACCESS

SQL standard:

SQL di Access:

Gestore di base dati: DBMS

• , non chiede dove e in che formato siano memorizzati i dati

• non ci chiede che che operazioni deve eseguire

Interrogazione ad alto livello e operazioni velocemente e su tutt la tabella direttamente(EFFICIENZA)

usa linguaggio una base di dati

Ci sono diversi linguaggi , quella a noi più nota è la query che ci permette di ottenere ciò che domandiamo.

Linguaggio a 4 livell= linguaggio grafico

SQL

è il linguaggio standard per interrogare le base di dati usato da molti DBMS.


Storia

E,Codd nel 1970 introduce il modello di base dati.

Ci permette di descrivere operazioni che vogliamo svolgere., il suo antenato è SQUEL, ma non era il top.

Dopo pochi anni usa SQL( lo accorciano perché quello di prima era un marchio registrato).

Cosa è:

è un linguaggio specializzato, pensato solo per far operazione con base dati. Prende in imput tabelle e le esegue,
creando una tabella in ouput.

Non è procedurale ma descrittivo, descrive ciò che vuole ottenere.

Non è Turing completo, ovvero non può essere usato per qualsiasi programma eseguibile dal computer.

I linguaggi storico naturali ma anche informatici si evolvono nel tempo, ma i secondi in modo controllato e a opera
dell’uomo

kodice: x correlare 2 tabelle

select; 1 determinato

generale: scelgo io quale

select: lista campi

Potrebbero piacerti anche