Scarica Informatica appunti ed esercizi e più Formulari in PDF di Elementi di Informatica solo su Docsity!
Appunti di Informatica
1 settimana
- DATABASE RELAZIONALI E XML
esercizio nuvolos 2 settimana
- ASPETTI GENERALI DELL’INFORMATICA E OLAP 3 settimana
- INTRODUZIONE ALLA PROGRAMMAZIONE
esercizi SQLite nuvolos 4settimana
- DOMANDE DI AUTOVERIFICA + esercizi 5 settimana
- PROGRAMMAZIONE R FONDAMENTI 6 settimana
- QUIZ PROGRAMMAZIONE + esercitazione 7 settimana
- ESERCITAZIONI INTERMEDIE nuvolos 8 settimana
- FUNZIONI DI R 1 9 settimana
- FUNZIONI DI R 2 + esercizi nuvolos 10 settimana
- GRAFICI R E APPLICAZIONI 1 11 settimana
- APPLICAZIONI CON R 2 + nuvolos 12 settimana
- ELEMENTI DI EXCEL + excel
1 settimana
- DATABASE RELAZIONALI E XML
esercizio nuvolos DEFINIZIONI:
- Database (DB): insieme organizzato di informazioni, rappresentanti un fatto o un processo. Può essere fisico, ad es. uno schedario, o elettronico, cioè realizzato con strumenti software, noti come DataBase Management Systems ( DBMS ). DATABASE ELETTRONICI
- Inizialmente costituiti da semplici documenti di testo
- O n L ine T ransaction P rocessing (OLTP): informazioni aggiornate in tempo reale Ø DB gerarchici Ø DB reticolari Ø A oggetti Ø DB Relazionali (RDMS): eliminazione ridondanze, garanzia di integrità dei dati
- O n L ine A nalytical P rocessing (OLAP): utilizzati per sintesi statistiche, operanti su grosse mole di dati, aggiornamenti non disponibili in tempo reale.
- NoSQL: database senza una struttura rigida nell’organizzazione dei dati. RDBMS Sono disponibili vari software per gestire DB relazionali, noti come Relational Database Management Systems (RDBMS) : MS Access, MySql, Oracle, PosgreSQL, SQL Server, SQLite, ... Ognuno ha propri vantaggi e peculiarità. Tutti i DBMS utilizzano, sotto svariate forme, il linguaggio SQL (structured query language) per le operazioni di: Ø Creazione DB Ø Modifica DB Ø Estrazione dati (query) PERCHÈ UTILIZZARE DB
- Ottimizzazione dello spazio e velocità
- Facilità di interrogazioni complesse (queries)
- Consistenza, integrità e sicurezza dei dati
Scomposizione delle informazioni
Ø Dell’entità : il valore di una chiave primaria non può mai essere vuoto (NULL) Ø Referenziale : ogni valore appartenente ad una chiave esterna deve trovare controparte in un valore nella associata chiave primaria, oppure deve essere impostato su NULL
Normalizzazione
Scopo della normalizzazione del database è la suddivisione corretta delle informazioni fra le tabelle. I vantaggi principali sono
- Chiarezzainterpretativadellastruttura-dati
- Riduzione/eliminazione di ridondanze presenti nelle tabelle. Sono previste 5 livelli di forme normali , criteri soddisfatti i quali, i dati si possono ritenere sufficientemente allocati fra le tabelle senza ridondanze e ripetizioni. Solitamente ci si limita alle prime 3 forme normali. Una frammentazione eccessiva complica la fase di interrogazione.
Prima Forma Normale
- “In corrispondenza di ogni cella nella tabella deve essere presente
un singolo valore e mai un elenco di valori.”
Ø Non è ad esempio possibile disporre di un campo denominato “materia” in cui, per un determinato record, vengono inserite più materie.
Seconda Forma Normale
- “Ogni colonna non chiave dipende completamente dall'intera chiave primaria, non soltanto da una parte della chiave. Questa regola è applicabile in caso di chiave primaria costituita da più colonne.” Integrità dell’entità : In questa colonna (chiave primaria) non possono esservi celle vuote. Integrità referenziale : se viene cancellata una riga viene violata l’entità referenziale, poiché una chiave esterna perderebbe il riferimento alla chiave primaria.
Descrizione materia dipende da ID materia , ma non da Matricola. Non dipende pertanto dall'intera chiave primaria. È necessario rimuovere “ Descrizione Materia ” dalla tabella esami, poiché appartiene a una diversa tabella (Materie).
Terza Forma Normale
- “Le colonne non chiave devono essere reciprocamente indipendenti.”
- Supponiamo di avere una soglia di voto oltre la quale scatta la promozione: La colonna (non chiave) “Promozione” dipende da un'altra colonna non chiave, “Voto”. L'indipendenza delle colonne garantisce la possibilità di modificare qualsiasi colonna non chiave senza influire su altre colonne. Se si modifica un valore nel campo Voto, la promozione dovrà essere modificata di conseguenza violando così tale regola. In questo caso, la promozione deve essere spostata in un'altra tabella con chiave basata sul Voto. Matricola Materia Voto Promozione 215845 Matematica 21 Si 628457 Finanza 26 Si 628457 Economia 18 Si 215845 Finanza 14 No
Linguaggio SQL
E’ costituito dalle seguenti componenti:
- DDL (data definition language): comandi per la costruzione e strutturazione di tabelle e relazioni
- DML (data manipulation language): comandi per l’aggiunta/eliminazione/modifica dati presenti nelle tabelle
- DCL (data control language): comandi per la gestione dei permessi di accesso al dabase
- QL (query language): comandi per l’interrogazione del database
Relazioni
Matricola ID_Materia Descrizione Materia Voto 215845 2 Matematica 21 215845 1 Economia 28 628457 3 Finanza 26 628457 1 Economia 18 215845 3 Finanza 14
Relazione “Uno a Molti”
- Quando la chiave esterna non è unica, allora fra le tabelle si instaura una relazione “uno a molti” CREATE TABLE prof ( ID_prof INTEGER, cognome TEXT, nome TEXT, PRIMARY KEY (ID_prof) ) CREATE TABLE incarico ( ID_prof INTEGER, ID_materia INTEGER, PRIMARY KEY (ID_prof, ID_materia), FOREIGN KEY (ID_prof) REFERENCES prof(ID_prof) ) Un professore può assumere molti incarichi
Relazione “Molti a Molti”
Richiede l’interposizione di una “tabella-ponte” fra due tabelle. Questo per permettere che vi siano due campi “non unici” Ad esempio: uno studente può aver studiato molte materie e una materia può essere studiata da molti studenti comporta una relazione “molti a molti” (si veda la slide “DDL:esempio”) Fra la tabella “studenti” e “materie” si viene a configurare una relazione molti a molti grazie alla tabella “esami” che permette di costruire vari incroci. Uno studente può effettuare esami in varie materie (es. studente 215845 => materie {2, 1, 3}) ma la stessa materia può essere affrontata da molti studenti (es materia 3 => studenti {215845, 628457})
XML
Introduzione
- I DB relazionali (di tipo OLTP) sono deputati ad ospitare dati in modo organizzato e a rispondere a queries di estrazione di parte di essi
- Un tipico problema, preponderante in ambito informatico, è lo scambio di informazioni Per scambio di informazioni si intende in generale
- Condivisione fra applicativi differenti (ad es. fra un DBMS e un altro)
- Condivisione fra terminali differenti Ø Tramite l’ausilio di supporti fisici: CD-ROM,... Ø Tramite l’ausilio di comunicazioni di rete: email, web (http, ftp, ...) L’attenzione verrà posta sullo standard emergente per la condivisione di dati ed informazioni. Le altre tematiche sullo scambio di dati (reti, protocolli,...) verrà trattata separatamente.
Il Formato Ideale di Interscambio
Il formato leggibile con maggior facilità in ambiti differenti anche a distanza di molto tempo è il formato testo. Si è posto quindi il problema di come sfruttare al meglio un file di testo per
- o Contenere una base-dati
- o Servire il maggior numero di necessità Soluzione : il linguaggio di tipo markup.
Linguaggi Markup
- L’oggetto di lavoro è un documento di testo
- Lo scopo è dare un senso a porzioni del documento
- L’obiettivo è ottenuto identificando, con speciali elementi, i marcatori, alcune porzioni del testo
- Fatto ciò il documento di testo “marcato” può essere salvato oppure trasmesso Chi compone il files di testo “marcato”?
Linguaggi Markup “Descrittivi”
I linguaggi markup di tipo “descrittivo” si preoccupano solo di dare una struttura al documento di testo, delegando la modalità di rappresentazione visiva ad un software esterno (es un browser web). Il World Wide Web Consortium (W3C, fondato nel 1994 composto da oltre 400 membri quali Microsoft, Google, ...) ha emanato una serie di standard per la comunicazione fra server, PC e altri dispositivi. I principali protocolli:
- HTTP (HyperText Transfer Protocol)
- HTML (HyperText Markup Language – primo linguaggio per il web)
- XHTML (eXtensible HyperText Markup Language)
- CSS (Fogli di stile a cascata)
- PNG (formato grafico)
- CGI (Common Gateway Interface)
- SOAP(Simple Object Access Protocol)
- XML (eXtensible Markup Language)
HTML
- Hyper Text Markup Language
- Appartiene alla categoria dei linguaggi di tipo markup (descrittivi)
- E’ costituito da un insieme predefinito di tag atti a descrivere la rappresentazione grafica del contenuto di un documento di testo
- La rappresentazione è delegata successivamente ad un browser web Lo scopo di XML è descrivere il contenuto del documento, non preoccupandosi di indicare la rappresentazione grafica
XML
- XML è un markup (meta) language e si estrinseca in un documento di testo (solitamente con estensione .xml)
- Può essere inteso come “base di dati” di tipo gerarchico
- E’ basato su tag (marcatori) definiti dall’utente (in genere vengono definiti da comitati che rappresentano una categoria di utenti: revisori di bilancio, ...)
- I tag possono contenere attributi (anche questi definiti dall’utente)
- L’elenco dei tag e attributi nonché le regole che li riguardano sono specificate in un documento che può essere di due tipi
Document Type Definition XML Schema Sulla base del problema da affrontare l’utente sceglie quali tag e attributi creare
XML e Semantica
- XML, poiché non ha tag predefiniti, ma permette di crearne , è un metalinguaggio in quanto con esso vengono creati dei linguaggi di markup
- XML permette di attribuire una semantica (significato) al testo. Questo, a livello web, consentirà ad esempio ricerche più mirate da parte dei motori di ricerca
- XML è stato preceduto di parecchi anni da SGML, questo ha avuto meno successo per la difficoltà di utilizzo
- HTML , il linguaggio degli albori del web (anch’esso basato su TAG), è stato pensato per la rappresentazione visiva. I tag sono predefiniti.
- XHTML è basato su XML ed è un’evoluzione dell’HTML in modo che sia consentito all’utente di aggiungere propri tag, a condizione che in un altro documento (di tipo CSS) venga indicato come rappresentarli visivamente
- XML invece è volto essenzialmente al contenimento e trasporto dei dati , non si occupa della loro rappresentazione. I tag vengono definiti dall’utente.
Regole per i Tag
- L’XML è “case sensitive”
- La prima riga indica la versione di XML in uso e specifica la codifica ISO per la corretta interpretazione dei dati.
- I tag non possono iniziare con numeri o caratteri speciali e non possono contenere spazi
- Non sono consentiti errori di annidamento fra i tag
- E’ possibile definire tag vuoti
- I caratteri speciali (<,>,&,’,”,...) devono essere indicati opportunamente (< , > , & , ' , ")
- Commenti:
Documenti “ben formati”
- Deve essere presente un tag di tipo “root”
- I tag devono essere sempre chiusi
- I tag devono essere coerenti fra loro a livello di maiuscole/minuscole
- I tag devono essere annidati correttamente
- Gli i valori degli attributi devono essere racchiusi fra virgolette “ ” Il fatto che un documento sia “ben formato” non preclude che contenga errori sostanziali. Ad esempio un attributo “voto” potrebbe essere impostato su un valore illogico (ad es voto=“zcxyht”. E’ necessario un ulteriore strumento che indichi con maggior dettaglio la struttura che il documento XML deve rispettare: il Document Type Definition (DTD) oppure lo XML Schema.
2 settimana
- ASPETTI GENERALI DELL’INFORMATICA E OLAP INFORMATICA: scienza che ha come oggetto l’informazione per quanto riguarda la sua o Acquisizione o Elaborazione o Memorizzazione o Trasmissione o Presentazione mediante strumenti elettronici.
Definizioni
- BIT (b): cifra che può assumere solo gli stati 0 e 1 (il computer al livello più basilare utilizza e memorizza le informazioni condensate in due soli stati: acceso/spento)
- BYTE (B): sequenza composta da 8 bit (es. 10010010)
Hardware: scheda madre
La scheda madre è una piastra (circuito stampato) che presenta degli alloggi e connessioni per ospitare componenti hardware interne (CPU, memoria RAM, Hard Disk, etc) connesse tramite bus, e componenti esterne (tastiera, mouse, etc).
Hardware: componenti principali
- Il computer moderno è tuttora basato sul modello di Von Neumann, in particolare distinguiamo i seguenti componenti principali :
- SCHEDA MADRE : circuito stampato che gestisce la comunicazione fra i principali componenti del PC
- CPU : o “processore” è l’unità di elaborazione ed è integrata in un chip. La CPU presenta al proprio interno delle unità di memoria note come registri. I registri dei processori attuali possono essere a 32 bit o 64 bit.
- RAM : memoria temporanea “di lavoro” accessibile dalla CPU in lettura/scrittura è volatile (allo spegnimento del PC il contenuto viene perso)
- ROM : memoria accessibile in lettura che rimane inalterata dallo spegnimento del PC (non volatile)
OLAP
O n L ine A nalytical P rocessing: OLAP E’ un insieme di tecniche software che consentono di operare su grandi mole di dati.
- “On Line”: capacità interattive
- “Analytical Processing”: consente di evidenziare le relazioni multidimensionali presenti nei dati L’obiettivo finale di un’applicazione OLAP è fornire risultati a supporto delle decisioni. Gli utenti finali di un DB OLAP sono soggetti che prendono decisioni strategiche (o sono al loro servizio) in seno all’organizzazione a cui si riferisce il database.
- Fra il db relazione e l’utente viene interposto un altro tipo di strumento, noto come “OLAP” che non presenta gli svantaggi menzionati.
Cubo OLAP
- Cubo OLAP : i dati per un certo problema vengono salvati in c.d. “cubi OLAP” tenendo conto della struttura a livello di dimensione/livelli/membri/misure.
Soluzione: Versione 2
CREATE TABLE DIPENDENTI(
MATRICOLA INTEGER,
COGNOME TEXT,
NOME TEXT,
PRIMARY KEY(MATRICOLA)
CREATE TABLE CAPISQUADRA(
ID_CAPO INTEGER,
ID_SOTTOPOSTO INTEGER UNIQUE ,
PRIMARY KEY(ID_CAPO, ID_SOTTOPOSTO),
FOREIGN KEY(ID_CAPO) REFERENCES DIPENDENTI(MATRICOLA),
FOREIGN KEY(ID_SOTTOPOSTO) REFERENCES DIPENDENTI(MATRICOLA)
NOTA: rispetto alla versione 1 è stato introdotto il vincolo UNIQUE sul campo ID_SOTTOPOSTO. Perciò non si potranno mai verificare duplicati su questa colonna (quindi un dipendente comparendo una sola volta potrà avere al massimo un solo capo). Riferendoci all’esempio precedente, non sarà possibile che 123 compaia due volte in capisquadra.id_sottoposto (il rdbms impedisce la doppia immissione) Progettazione di database “Tabelle di dettaglio” Il seguente esercizio richiede un pizzico di ingegno e volutamente vi richiede di sapere “andare oltre” ciò che è stato presentato a lezione. I dipendenti di un'impresa hanno in comune i seguenti campi: matricola, cognome, nome. Tuttavia l'impresa ha due tipi di dipendenti: operai e impiegati
- Gli operai hanno i seguenti campi aggiuntivi: peso corporeo, altezza
- Gli impiegati hanno i seguenti capi aggiuntivi: diottrie Disegnate un database (con dati) in cui le informazioni comuni a operai e impiegati siano accorpate in un'unica tabella, aggiungendo le opportune tabelle di dettaglio per operai e impiegati Suggerimento: sono sufficienti tre tabelle (che tipo di relazione intercorre fra esse?)
Soluzione
CREATE TABLE DIPENDENTI(
MATRICOLA INTEGER,
COGNOME TEXT,
NOME TEXT,
PRIMARY KEY(MATRICOLA)
CREATE TABLE OPERAI(
MATRICOLA INTEGER,
PESO REAL,
ALTEZZA REAL,
PRIMARY KEY(MATRICOLA),
FOREIGN KEY(MATRICOLA) REFERENCES DIPENDENTI(MATRICOLA)
CREATE TABLE IMPIEGATI(
MATRICOLA INTEGER,
DIOTTRIE REAL,
PRIMARY KEY(MATRICOLA),
FOREIGN KEY(MATRICOLA) REFERENCES DIPENDENTI(MATRICOLA)
Le tabelle OPERAI e IMPIEGATI sono tabelle in cui la chiave primaria (MATRICOLA) è anche una chiave esterna (che si riferisce a DIPENDENTI.MATRICOLA).
Si viene quindi a instaurare una relazione di tipo UNO A UNO fra OPERAI e
DIPENDENTI e fra IMPIEGATI e DIPENDENTI. Questo tipo di struttura consente di «specializzare» le informazioni suddividendole in tabelle differenti. In questo caso per i dipendenti «operai» è possibile inserire dati quali peso e altezza, mentre è del tutto inutile farlo per gli impiegati (discorso opposto per quanto riguarda le diottrie). In alternativa a questo tipo di struttura si sarebbe potuto creare un’unica tabella DIPENDENTI con tutte le colonne di dettaglio (peso, altezza, diottrie) tuttavia sarebbe stata destinata ad accogliere per definizione molti dati mancanti a seconda che il dipendente fosse stato operaio o impiegato.
Implementazione
L’ implementazione costituisce il momento di passaggio dall’algoritmo alla codifica tramite uno specifico linguaggio di programmazione. Riassumendo, si hanno i seguenti passaggi fondamentali
- Problema
- Identificazione/realizzazione dell’ algoritmo di soluzione
- Formalizzazione tramite diagramma di flusso (opzionale) 4. Implementazione dell’algoritmo tramite uno specifico linguaggio di programmazione
Il Coding
Programmare significa
- scrivere un “codice sorgente” (uno o più files di testo) secondo le regole sintattiche del linguaggio di programmazione scelto
- Sottoporlo, sulla base del tipo di linguaggio a o Un compilatore o Un interprete o Uno pseudo-compilatore
Linguaggi Compilati
Il codice sorgente viene “compilato”, cioè tradotto immediatamente in codice binario, dopodichè può essere eseguito ogni volta senza bisogno di altri strumenti.
- Il codice binario è autosufficiente per l’esecuzione ogni volta che verrà richiamato.
Linguaggi Interpretati (di scripting)
Il codice sorgente viene tradotto (interpretato) ogni volta che deve essere eseguito, ad opera di un programma detto “interprete”
- L’utente che riceve il sorgente deve possedere anche l’interprete.
Linguaggi Pseudo-Compilati
Costituiscono un compromesso fra linguaggio compilato ed interpretato
- Il codice viene compilato in un “bytecode” intermedio fra l’utente e il codice binario
- Ogni volta che viene lanciato, il bytecode viene compilato al momento L’obiettivo è duplice Ø Portabilità fra piattaforme diverse dello stesso bytecode (deve essere disponibile una virtual machine per le varie piattaforme) Ø Velocità nel passaggio bytecode - codice macchina
- Uno pseudo-compilatore produce codice compilato intermedio “bytecode”: ad es. Java, linguaggi .NET
- Il bytecode viene eseguito da un applicativo (virtual machine) che si frappone quindi fra la macchina e il sorgente
- Tale applicativo compila “just in time” il bytecode ogni volta che viene lanciato il codice
- Molti linguaggi nella classe dei “compilati”, per sintassi e mancanza di capacità interattive compilano in un bytecode intermedio (es. Java)
- Altresì molti linguaggi, per loro natura appartenenti a linguaggi puramente interpretati, sono in grado di produrre bytecode intermedio (es. Python, R). Questo rende le operazioni che l’interprete deve eseguire più rapide ed efficienti.
Linguaggi di Scripting
La classe dei linguaggi di scripting comprende i linguaggi puramente interpretati e i linguaggi che consentono alta interazione e che eventualmente possono anche produrre bytecode. Mentre in passato presentavano molti limiti in termini di velocità e possibilità, gli attuali linguaggi di scripting sono rapidi e con capacità notevoli. Quindi vengono spesso preferiti ai linguaggi compilati in quando rapidamente è possibile portare a termine un progetto con minor risorse Molti di questi operano come “glue-languages” consentendo di integrare diversi linguaggi. Spesso delegano compiti intensivi a porzioni di codice compilato