



























































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti del secondo modulo di Informatica e Sistemi Informativi, riguardanti sia la parte teorica che pratica della programmazione e di Excel, presi col professore Giorgio Alessandro Motta. Voto conseguito: 30L. A fine elenco è allegato un indice con tutti gli argomenti trattati.
Tipologia: Appunti
1 / 67
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




























































Tipologie di linguaggi di programmazione:
I primi linguaggi di programmazione:
I primi microcalcolatori permettevano l’inserimento di istruzioni e dati solo in forma numerica. Questo metodo di inserimento veniva chiamato linguaggio macchina e di basso livello. Col tempo, il linguaggio macchina diventò di forma alfanumerica grazie al Linguaggio Assembly , che veniva tradotto in istruzioni per il processore grazie ad un programma chiamato Assembler , che è ciò che permette la compilazione.
Def: La compilazione è la traduzione di un programma scritto in linguaggio simbolico (quindi definito di alto livello) nel linguaggio macchina compreso dalla CPU.
I linguaggi interpretati:
Nel 1957 venne creato il primo linguaggio di alto livello, il Fortran , orientato allo sviluppo di programmi scientifici e matematici. Nel 1964 venne creato il BASIC, adottato poi da Microsoft nel 1975, che ha come caratteristica quella di essere interpretato: il programma viene tradotto in linguaggio macchina ed eseguito una istruzione alla volta, da parte di un programma chiamato interprete (≠ compilatore, dove tutte le istruzioni devono essere convertite dal compilatore prima di essere eseguito).
I linguaggi con bytecode:
Una forma ibrida tra linguaggi compilati e interpretati sono i linguaggi dotati di macchina virtuale, come Java.
Def: La macchina virtuale è un modello di macchina che accetta/esegue istruzioni in un linguaggio a medio livello d’astrazione, detto bytecode.
La traduzione avviene in due passaggi: da codice sorgente a bytecode, e da bytecode a codice macchina. Di fatto, un software simula il funzionamento della macchina virtuale per eseguire le istruzioni del bytecode. Le prestazioni sono intermedie tra un linguaggio interpretato (più lento) ed un linguaggio compilato (più veloce).
Gli algoritmi:
Def: L’algoritmo è una sequenza finita di istruzioni/operazioni elementari non ambigue ed effettivamente computate da un agente di calcolo che, se eseguite, producono la soluzione/risultato di un certo problema in tempo finito.
Le caratteristiche principali degli algoritmi sono tre:
Raffigurazione degli algoritmi:
Lo standard internazionale ISO 5807 detta le regole ed i simboli usati per creare diagrammi relativi a processi, programmi e sistemi.
Def: I diagrammi di flusso (flowchart) mostrano la sequenza di operazioni o azioni che sono svolte da un algoritmo, un processo o un programma.
Def: I diagrammi di rete del progetto (Project Network Chart) mostrano la relazione tra le attività di un programma o di un progetto (es: PERT, diagramma di Gantt).
Def: I diagrammi di sistema (System Resources Chart) rappresentano l’allocazione delle risorse di sistema, come ad esempio la memoria e l’unità di elaborazione.
Per raffigurare gli algoritmi, si usano solitamente i diagrammi di flusso, visto che permettono di evidenziare passi e sottoprocessi.
Diagrammi di flusso:
Nei diagrammi di flusso, si assegna ad ogni elemento grafico una funzione specifica:
Esempio di diagramma di flusso: ▼
Il modello ER:
La progettazione concettuale è la prima fase del processo di sviluppo di una base di dati. In questa fase si rappresenta la realtà del dominio applicativo (ossia, la realtà che il database dovrà rappresentare, ad esempio gli ordini di un’azienda) in modo astratto, attraverso un modello dei dati indipendente dalla tecnologia sottostante.
Per rappresentare questa realtà, viene utilizzato il modello Entità-Relazione, introdotto da Peter Chen nel 1976, che permette di descrivere in modo formale e visivo gli elementi fondamentali di un sistema informativo.
Gli strumenti all’interno del diagramma ER:
Questo avviene attraverso tre strumenti:
Il modello Entità-Relazione è sia una rappresentazione grafica dei dati con un diagramma di schema, sia uno strumento di analisi e comunicazione, visto che permette di tradurre le informazioni ed i processi di un’organizzazione in forma logica e condivisibile. Infatti, usare il modello ER permette di:
Rappresentazione grafica del diagramma ER:
Indichiamo le entità con un rettangolo, le relazioni invece con un rombo, mentre gli attributi vengono indicati in maniera diversa in base al loro tipo:
Tipo di attributo: Descrizione: Forma nel diagramma ER:
Semplice (es: codice cliente)
Atomico, non scomponibile Ovale singolo
Composto (es: indirizzo) Composto da sottoattributi Ovale con rami
Multivalore (es: telefono) Può avere più valori Doppio ovale
Derivato (es: età) Calcolato da altri attributi Ovale tratteggiato
▪ Es: Ogni studente può iscriversi a più corsi, ed ogni corso può avere più studenti.
Cardinalità minima:
Nei diagrammi si può specificare anche la cardinalità minima, ossia quante volte almeno ciascuna occorrenza di A dev’essere associata a qualche occorrenza di B, e viceversa.
Nell’esempio:
Il modello relazionale:
Il modello relazionale, introdotto da Edgar F. Codd nel 1970 (antecedentemente al modello ER), ha l’obiettivo rappresentare la struttura logica dei dati. Si basa sul concetto matematico di relazione: prendendo gli insiemi 𝐷 1 , 𝐷 2 … 𝐷𝑛, chiamati domini , possiamo definire che:
Caratteristiche:
Nel modello relazionale:
Esempio: ▼
Le tabelle:
Ogni tabella ha il compito di descrivere un insieme di oggetti dello stesso tipo, e può rappresentare le occorrenze di un’entità o di una relazione del modello ER. Le componenti fondamentali sono:
Lo schema logico:
Def: Lo schema logico è la descrizione formale e completa della struttura del database relazionale. Definisce le tabelle, le colonne, le chiavi, i vincoli e i legami tra le diverse entità, indipendentemente da come i dati verranno fisicamente memorizzati.
È l’equivalente tecnico del modello concettuale: infatti, il modello ER rappresenta cosa memorizzare, mentre lo schema logico definisce come organizzarlo in tabelle.
Tipologie di dati:
All’interno del modello relazionale, esistono una serie di elementi:
Elemento: Descrizione: Esempio: Tabella Rappresenta un’entità Cliente Attributo Proprietà della tabella Nome, email Chiave primaria Identifica univocamente una tupla
id_cliente
Chiave esterna Collega tabelle diverse id_cliente → cliente Vincolo Regola sui valori ammessi NOT NULL, UNIQUE, CHECK
Vincolo: Scopo: Esempio:
(forza che NOME sia un valore esistente) UNIQUE (UQ) Evita duplicati email UNIQUE (in nessun’altra riga ci può essere un campo email uguale) CHECK (CK) Impone una condizione prezzo > 0 DEFAULT (DF) Impedisce un valore automatico
disponibile DEFAULT TRUE (se non è specificato il campo default, restituisci VERO) PRIMARY KEY (PK) Identifica univocamente una riga
id_cliente PK
FOREIGN KEY (FK) Permette di collegare una riga ad un’altra tabella
id_cliente → CLIENTE (ad esempio, se sono nella tabella SPEDIZIONI, l’id_cliente, se uguale in entrambe le tabelle, mi permette di ottenere i dati iscritti anche nella tabella CLIENTE, e non solo in quella che sto guardando adesso)
Le chiavi:
Le chiavi sono elementi fondamentali per garantire l’integrità e l’organizzazione dei dati nei database relazionali. Le chiavi permettono di identificare in modo univoco ogni record, stabiliscono collegamenti logici tra diverse entità e garantiscono la coerenza dei dati nel sistema.
Le chiavi possono essere di quattro tipi:
Esiste anche una distinzione tra chiave naturale (valori reali) e chiavi surrogate (valori, come l’ID cliente, creati apposta e senza significato).
Dal modello concettuale al modello logico:
Per convertire le idee concettuali in una struttura dati implementabile, dobbiamo passare dal modello concettuale (ER) al modello logico (relazionale).
Def: Una relazione descrive il collegamento logico tra due entità in un database.
Le relazioni possono essere, secondo la cardinalità, uno-a-uno, uno-a-molti e molti- a-molti.
Regole di trasformazione:
SQL:
Def: SQL (Structured Query Language) è il linguaggio standard per interrogare e gestire database relazionali.
Le caratteristiche di SQL sono:
Un sito per programmare in SQL è: https://www.w3schools.com/sql/trysql.asp?filename=trysql_editor.
L’attributo SELECT:
Ogni indicazione di SQL deve iniziare con l’operatore «SELECT», seguito dal nome di tutte le colonne che vogliamo che il programma legga.
Il «SELECT» va seguito dal «FROM», con il quale si indica il nome della tabella da cui prendere il dato.
Affiancare le colonne:
SQL permette inoltre di affiancare le colonne di tabelle diverse, in base ad una condizione che dev’essere messa tra parentesi: supponiamo di essere un negozio online, e di avere in una tabella l’ID del cliente e le informazioni su un suo ordine, ed in un’altra tabella l’ID del cliente e le informazioni sul cliente in sé. Sfruttando che entrambe le tabelle hanno l’ID del cliente, possiamo affiancare le colonne delle due tabelle in modo da ottenere più informazioni sul cliente.
Tutto parte utilizzando l’operatore FROM e specificando, tra parentesi, l’identificatore della tabella iniziale che dev’essere unita. Si deve specificare prima la tabella che dev’essere unita a quella selezionata, per poi specificare dopo l’operatore «ON» la condizione che dev’essere soddisfatta per unire le due tabelle.
Esempio: ▼ Codice: ▼
SELECT DISTINCT S.SupplierName, S.Address as IND FROM Suppliers S
Spiegazione: ▼
Ho chiesto a SQL di darmi le due colonne intitolate «SupplierName» ed «Address», ottenendo le righe distinte. Inoltre, gli ho chiesto di rinominare, solo nel risultato, la colonna Address su «IND». Infine, gli ho dato il riferimento da cui prendere i dati, specificando la tabella («Suppliers») e stabilendo un nome con cui chiamarla nel codice («S»).
Risultato: ▼
SupplierName IND Primo fornitore
Via del primo fornitore Secondo fornitore
Via del secondo fornitore Terzo fornitore Via del terzo fornitore
Se voglio chiedere che una condizione non sia soddisfatta, posso usare l’operatore «NOT» prima della condizione.
Per invece chiedere che siano soddisfatte condizioni più avanzate, uso l’operatore «LIKE», nel quale posso usare una sintassi particolare per creare query complesse:
Esempio: ▼
Codice: ▼ SELECT S.SupplierName, S.Country FROM Suppliers S WHERE NOT S.Country = 'UK'
Spiegazione: ▼
Prendiamo le due colonne «SupplierName» e «Country» dalla tabella Suppliers, e chiediamo a SQL di filtrare la tabella in modo da restituirci tutte le righe dove il valore impostato su COUNTRY non sia su UK.
Risultato: ▼
SupplierName Country
Primo fornitore
Stati Uniti
Secondo fornitore
Finlandia
Inoltre, se volessi ottenere un valore compreso tra due numeri, potrei usare l’operatore BETWEEN AND.
Infine, se volessi ottenere solo i primi 𝑥 risultati, dovrei usare l’operatore «LIMIT».
Accodare righe:
Con l’operatore «UNION» si possono unire due tabelle che hanno già la stessa struttura. L’UNION consiste quindi in un semplice modo per accodare delle righe, al contrario del JOIN, che invece viene usato per affiancare delle colonne.
Con l’UNION, possiamo inserire anche un valore predefinito nel caso non esista una delle colonne richieste.
Esempio: ▼ Codice: ▼ SELECT S.SupplierName, S.Country FROM Suppliers S WHERE S.Country LIKE '[IG]%'
Spiegazione: ▼
In questo caso, ho chiesto a SQL di darmi tutte le righe dove la nazione del fornitore iniziasse con la G o con la I.
Risultato: ▼
SupplierName Country Primo fornitore
Germania
Secondo fornitore
Italia
Esempio: ▼
Codice: ▼ SELECT P.ProductName, P.Price FROM Products P WHERE P.Price BETWEEN 5 AND 10
ordinati. È possibile anche specificare DESC per l’ordine discendente e ASC per l’ordine ascendente.
Il GROUP BY:
L’operatore GROUP BY permette di unire tutte le righe che hanno uno stesso tipo di valore, per poi eseguire un’operazione (SUM, AVG, COUNT, MAX, MIN) su quei valori.
La creazione di colonne derivate:
SQL permette di usare una serie di operatori per svolgere una serie di calcoli, tra cui:
Esempio: ▼ Codice: ▼ SELECT CustomerName, City, Country FROM Customers ORDER BY (CASE WHEN City IS NULL THEN Country ELSE City END)
Spiegazione: ▼
Chiediamo a SQL di ordinare i risultati della tabella: se il valore nella colonna «CITY» è vuoto, prendiamo il valore nella colonna «COUNTRY», altrimenti quello della colonna «CITY».
Risultato: ▼
Customer- Name
City Country
Primo cliente
Francia
Secondo cliente
Milano Italia
Terzo cliente
Ottawa Canada
In questi casi, dopo aver dichiarato il comando, dobbiamo inserire nelle parentesi il nome della colonna su cui vogliamo applicare l’operazione, ed infine (dopo le parentesi) dobbiamo nominare la nuova colonna con l’«AS nome».
Quali valori vanno messi nel GROUP BY:
Ogni colonna del SELECT che non fa parte di una funzione aggregata deve far parte del GROUP BY. Aggiungendo però più colonne al GROUP BY, chiediamo che siano soddisfatte più condizioni allo stesso tempo.
Esempio: ▼
Codice: ▼ SELECT P.ProductName, LEN(P.ProductName) AS Length FROM Products P GROUP BY P.ProductName
Spiegazione: ▼
Ho chiesto a SQL di prendere la tabella «Products», e l’ho nominata P per convenienza. Da qui, gli ho chiesto di avere la colonna «ProductName», e di crearne una nuova, chiamata «Length», con il numero di caratteri del valore «ProductName» di quella riga.
Risultato: ▼
ProductName Length
Primo prodotto
Secondo prodotto
Terzo prodotto 14