










































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
Informatica per studi umanistici, 2025/2026
Tipologia: Slide
1 / 50
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!











































Informatica per studi umanistici Introduzione all’Informatica Che cos’è l’informatica? Con il termine Informatica si indica l’insieme dei processi e delle tecnologie che rendono possibile la creazione, la raccolta, l’elaborazione, l’immagazzinamento e la trasmissione dell’informazione con metodologie e strumenti automatizzati. Deriva dalla contrazione di due parole francesi: “information” e “automatique”. Le tecnologie informatiche hanno tre funzioni principali:
Hardware
o effettuare operazioni di ingresso (per es. leggi un dato dalla tastiera) o di uscita (per es. visualizza il risultato sul video). Scheda madre Una scheda madre è un tipo di scheda elettronica principale che raccoglie in sé tutta la circuiteria elettronica e i collegamenti di interfaccia tra i vari componenti interni principali di un computer come memoria e le altre schede elettroniche montate o alloggiate sopra, comprendendo anche i bus di espansione e le interfacce verso le periferiche esterne. È responsabile dunque della trasmissione e temporizzazione corretta di centinaia di segnali diversi tra processore e RAM, schede di espansione e periferiche esterne attraverso i vari bus di sistema. CPU E’ la parte "pensante" di ogni computer, costituita da un sottile cristallo di silicio. Su un processore (circa un cm^2 ) vengono impressi diodi, transistor e circuiti. Esegue le istruzioni ed elabora i dati dei programmi presenti nella memoria RAM e nei registri interni al processore I registri sono celle di memoria interne alla CPU su cui vengono memorizzate le informazioni necessarie per l’esecuzione delle istruzioni. Tutte le sue operazioni sono sincronizzate da un clock. Le varie componenti della CPU devono operare in modo coordinato anche dal punto di vista della temporizzazione degli eventi. Questo si ottiene grazie ad un orologio (clock) che fornisce una cadenza temporale a cui tutte le attività elementari sono sincronizzate. La frequenza del clock, cioè il numero delle attività elementari che vengono eseguite nell’unità di tempo (tale frequenza viene misurata in hertz, Hz), determina la velocità di elaborazione della CPU. Tutto viene ridotto ad una sequenza di bit! Al fine di poter essere processata dalla CPU qualsiasi informazione ricevuta manipolata o prodotta dalla CPU deve essere trasformata (più precisamente si dice “codificata”) in una sequenza di bit. Inoltre, anche le operazioni sono trasformate in una sequenza di bit per essere interpretate.
Memoria I computer usano quindi supporti di memorizzazione di più tipi: una memoria centrale (RAM): contiene i programmi durante la loro esecuzione ed i dati relativi una o più memorie di massa (dischi etc.): che mantengono tutti i dati ed i programmi in attesa di essere eseguiti in modo persistente, anche dopo lo spegnimento del calcolatore Tutte le informazioni vengono rappresentate mediante sequenze di 0 e di 1 (bit: Binary DigiT) I bit tra RAM e CPU fluiscono a gruppi di 8 (byte) che risulta essere la più piccola unità accessibile singolarmente. Altri tipi di memoria Memoria di sola lettura (Read-only memory - ROM): o Non può essere modificata. A differenza della RAM non è volatile. Contiene le informazioni di inizializzazione usate ogni volta che si accende l’elaboratore (bootstrap) Memoria cache o Livello di memoria intermedio tra i registri e la RAM. o Memorizza i dati usati più spesso senza doverli recuperare tutte le volte dalla RAM (che è più lenta) o Influisce moltissimo sulle prestazioni e sul costo della CPU (e quindi del computer) o E’ molto più costosa della RAM o Si basa sui principi di località “spaziale” o “temporale”: Località spaziale: “quando si accede all’indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A.” Località temporale: “quando si accede all’indirizzo A, è molto probabile che gli accessi richiedano di nuovo la cella A.”
Software e dati Che cos’è il software? Software indica il livello logico, cioè l’insieme delle istruzioni che consentono all’hardware di svolgere i propri compiti. In generale, il mondo del software si divide in due grandi categorie: sistemi operativi (infrastruttura che offre delle funzioni di base) e programmi applicativi (che offrono funzionalità specifiche). Pensiero computazionale Approccio per risolvere problemi , sviluppare sistemi e capire il comportamento umano che riprende i concetti fondamentali della computazione (= calcolo). Definisce i processi mentali che coinvolgiamo quando formuliamo un certo problema ed esprimiamo le relative soluzioni usando un linguaggio che un computer (sia esso umano o macchina) può comprendere e, conseguentemente, eseguire. Astrazione: processo di rimozione dei dettagli trascurabili di una situazione in modo da semplificarla, per così focalizzare l’attenzione sulle sue caratteristiche principali. Quando usiamo le astrazioni? Usiamo queste astrazioni in modo intenzionale o inconscio nella vita quotidiana. Cosa hanno in comune le situazioni qui sotto? Dati e Informazione
Pila Collezione ordinata di elementi di lunghezza non prefissata in cui: lo stesso elemento può occorrere una o più volte nella lista l’ordine degli elementi segue la politica LIFO (Last In First Out) Operazioni consentite: Inserisci elemento in testa Rimuovi elemento in testa Accedi ad elemento in testa Esempi Pile di vario tipo (e.g. libri, fogli, oggetti) Cesto dei panni sporchi Vettore/Array Collezione ordinata di elementi di lunghezza prefissata in cui: lo stesso elemento può occorrere una o più volte Operazioni consentite su un array: Accedi/ Sostituisci l’elemento i-esimo Esempi Coordinate latitudine e longitudine di un oggetto Insieme Collezione non-ordinata di elementi dove lo stesso elemento può occorrere una volta sola di lunghezza non prefissata****. Operazioni consentite Aggiunta o rimozione di un elemento Verifica appartenenza di un elemento all’insieme Esempi Colori primari Oggetti nella vostra borsa Dizionario Struttura dati che permette di memorizzare una collezione di elementi , in cui ogni elemento è identificato da un identificativo univoco. Operazioni consentite Recupero elemento con un certo ID Inserisci un elemento con un certo ID Rimuovi un elemento con un certo ID Verifica l’esistenza di un elemento con un certo ID Esempi Vocabolario Rubrica Albero Struttura dati in cui gli elementi sono organizzati gerarchicamente. Nodo : elemento che contiene informazioni
Arco : collega un nodo “padre” ad un nodo “figlio” Ogni nodo ha un solo padre e un albero non contiene cicli Nodi “speciali” Radice: Nodo senza padre Foglie: Nodi senza figli Operazioni consentite A seconda del tipo di albero sono consentite o meno le operazioni di cancellazione, aggiunta e verifica appartenenza Esempi Categorie Organigramma aziendale Grafo Struttura dati in cui gli elementi sono collegati da archi. Nodo: elemento che contiene informazioni Arco: collega due nodi chiamati sorgente e destinazione Operazioni consentite Inserimento di arco/nodo Querying Esempi Rete stradale (nodi incroci, archi strade) Rete internet (nodi router e server, archi collegamenti) Matrice Una matrice è un array bi-dimensionale in cui ogni elemento di un array è a sua volta un array. Può essere visualizzato come se fosse una tabella (righe per colonne). Per accedere ad un elemento bisogna fornire il numero di riga e il numero di colonna. Esempi Matrice parola/documento Tensore Una matrice è un array n-dimensionale Ad esempio un tensore in 3 dimensioni è un array i cui elementi sono degli array che contengono a loro volta array. Se un array viene visualizzato come un linea e una matrice come un quadrato, allora il tensore in 3 dimensioni può essere visualizzato come un cubo. Per accedere ad un elemento sono necessarie le coordinate e.g. in 3 dimensioni (i,j,k) Esempio: Trasformazioni in spazi vettoriali
Algoritmi Come manipoliamo le informazioni? Le strutture dati offrono dei modi per organizzare informazioni generiche utilizzando dei costrutti standard. In altre parole, servono per memorizzare informazioni in modo statico. Per manipolare le informazioni al fine di produrne di nuove dobbiamo eseguire delle sequenze di operazioni. Queste sequenze di operazioni le chiamiamo algoritmi e sono qualcosa di cui tutti abbiamo esperienza quotidiana.. Situazioni di tutti i giorni 1 Situazioni di tutti i giorni 2 Situazioni di tutti i giorni 3 Situazioni di tutti i giorni 4 “Mappa per le discussioni” di Federico Cerioni Pubblicata il 31/8/2016 sul suo profilo Facebook, e poi pubblicata nuovamente sul suo blog Postilla dell’autore al post Facebook originale: “La mappa è ancora più importante se si sta discutendo di questioni tecniche”
Cosa hanno in comune queste situazioni? Una definizione Un algoritmo è: Un’astrazione di una procedura passo passo che prende qualcosa come input e produce un certo output , scritta in un linguaggio specifico in modo che le istruzioni che definisce possano essere comunicate e comprese da un computer in modo da ottenere qualcosa come conseguenza dell’ elaborazione di qualche materiale di input. Un programmatore è una persona che crea algoritmi e li specifica in programmi usando uno specifico linguaggio comprensibile dal computer (elettronico). Che linguaggio usare per definire un algoritmo? Non esiste un linguaggio standard per descrivere un algoritmo in modo che possa essere immediatamente comprensibile da un qualunque computer. Di solito si usa uno pseudocodice , ovvero un linguaggio informale per descrivere i passi principali di un algoritmo ad un umano, anche se non è direttamente eseguibile da un computer elettronico – anche se i suoi costrutti sono strettamente connessi con quelli tipicamente definiti nei linguaggi di programmazione. Un esempio di pseudocodice: i diagrammi di flusso – li abbiamo informalmente introdotti prima quando abbiamo visto la “Mappa per le discussioni”. Oggetti grafici di un diagramma di flusso Oggetto grafico Nome Definizione Linea di flusso La freccia è usata per definire l’ordine in cui le operazioni sono eseguite. Il flusso indicato dalla freccia inizia in un terminale di partenza e finisce in un terminale di fine (vedi l’oggetto successivo). Terminale Viene usato per indicare l’inizio e la fine di un algoritmo. Contiene un testo (solitamente o “inizio” o “fine”, in italiano) in modo da disambiguare qual è il ruolo del particolare oggetto terminale nel contesto dell’algoritmo. Processo Viene usato per esprimere un’istruzione che è eseguita e che può cambiare lo stato corrente di qualche variabile usata nell’algoritmo. Il testo che contiene descrive l’istruzione da eseguire. Decisionale Permette di esprimere operazioni condizionali, dove una condizione è verificata e, a seconda del valore di alcune variabili usate nell’algoritmo, l’esecuzione continua in un particolare ramo del flusso invece che in un altro. Di solito, questa operazione crea due possibili rami: uno seguito se la condizione è vera, e un altro che viene seguito quando la condizione è falsa. Input / Output Permette di specificare un possibile input o output che viene usato o restituito dall’algoritmo solitamente all’inizio o alla fine della sua esecuzione.
Linguaggi e grammatiche formali Un linguaggio formale possiamo pensarlo come un insieme di frasi Una grammatica formale permette descrive come generare un linguaggio ed è definita da 4 elementi: un insieme di regole di produzione, simboli terminali simboli non-terminali simbolo iniziale Grammatica formale Un insieme di regole di produzione di forma premessa ::= espressione , dove la premessa e l’espressione possono contenere uno o più: simboli terminali (specificati tra virgolette), che identificano tutti i simboli elementari del linguaggio in considerazione (come nomi, verbi, etc.) simboli non terminali (specificati tra parentesi angolari), che identificano tutti i simboli di una grammatica formale che possono essere sostituiti da una combinazione di simboli terminali e non terminali Esempio: ::= "Io" ::= "scrivo" | "leggo" Il simbolo non terminale è il simbolo iniziale. Frasi che possiamo produrre da questa grammatica: Io scrivo Io leggo Cosa sono i linguaggi di programmazione Un linguaggio di programmazione è un linguaggio formale che obbliga l’uso di specifiche regole sintattiche sviluppate in modo tale da evitare possibili istruzioni ambigue. Solitamente l’ espressività del linguaggio è ridotta ma tutte le “frasi” componibili trasmettono un solo possibile significato. I linguaggi di programmazione sono solitamente basati su grammatiche libere dal contesto e possono distinguersi per un basso o elevato livello di astrazione dal linguaggio propriamente in uso da un elaboratore elettronico per eseguire le operazioni. Linguaggio macchina Un insieme di istruzioni che possono essere eseguite direttamente dalla CPU ( central processing unit , o processore) di un computer elettronico. Basato sul codice binario – una sequenza di 0 e 1 – rivisitato da Leibniz alla fine del diciassettesimo secolo.
Linguaggi di programmazione a basso livello Forniscono un livello di astrazione sopra il linguaggio macchina. Permettono di scrivere programmi in modo che siano un pochino più intellegibili dagli umani. Il più famoso linguaggio di questo tipo è l’Assembly – anche se introduce simboli più comprensibili, di solito una linea di codice in Assembly rappresenta una specifica istruzione in linguaggio macchina. Linguaggi di programmazione ad alto livello Caratterizzati da un forte livello di astrazione dal linguaggio macchina – esempio: Python. Possono usare parole proprie del linguaggio naturale per definire costrutti specifici, così da essere di più facile comprensione per un umano. Più astrazione da un linguaggio di programmazione a basso livello è fornita, più comprensibile è il linguaggio. Linguaggi visuali In modo da facilitare l’avvicinamento all’uso dei linguaggi di programmazione tradizionali, negli ultimi anni sono stati sviluppati diversi linguaggi di programmazione visuali che permettono lo sviluppo di piccoli programmi per risolvere problemi computazionali specifici. Alcuni sono proposti sotto forma di gioco, e permettono l’introduzione dei costrutti principali propri dei linguaggi di programmazione mediante l’utilizzo di oggetti grafici Un esempio Nel 2017, Google ha messo a disposizione un doodle in cui si deve istruire un coniglio in modo che riesca a mangiare tutte le carote posizionate su un determinato percorso. Le azioni che si possono far compiere al coniglio riguardano attività di movimento, ad esempio “vai avanti” o “gira a destra”, e devono essere disposte in una specifica sequenza. Problema computazionale: mangiare tutte le carote presenti sul percorso. L’esempio descritto con un diagramma di flusso
Web e Internet Una semplice domanda Cosa succede quando si clicca su un collegamento ipertestuale (o link) di una pagina Web? Per rispondere pienamente a questa domanda, è necessario avere delle conoscenze di base relative sia sul come l’informazione viene trasmessa digitalmente, sia sulle componenti che compongono Internet e il Web. Gli ipertesti Definizione: un corpo di materiale scritto interconnesso in modo così tanto complesso che non è conveniente presentare su carta. Una settantina di anni fa quest’idea era praticamente non convenzionale e non realizzabile. I meccanismi che venivano usati per trasmettere e/o revisionare i risultati di una ricerca erano molto vecchi e per niente adatti a facilitarne la divulgazione. Se non si fosse intervenuti per tempo, ci sarebbe stato il rischio di perdere importanti pietre miliari della ricerca all’interno di una massa sempre più corposa di materiale irrilevante. La tecnologia allora in fase di sperimentazione poteva già dare largo supporto alla creazione di piattaforme elettro-meccaniche che semplificassero notevolmente il salvataggio, la ricerca, e la consultazione di materiale rilevante. Come e dove salvare le informazioni Si provò ad usare i microfilm, che erano una tecnologia di frontiera in quel periodo. Era possibile salvare un’intera copia dell’Enciclopedia Britannica all’interno di un supporto grosso quanto una scatola di fiammiferi. Accedere alle informazioni Uno dei problemi principali alla consultazione di un qualsiasi materiale, era la sua organizzazione sequenziale e l’ artificialità del meccanismo di indicizzazione dei contenuti. Quando un’informazione viene raccolta in un dispositivo di memorizzazione, essa viene in qualche modo indicizzata alfabeticamente o numericamente, e può essere contenuta soltanto in un posto specifico , a meno che non venga in qualche modo duplicata. Per recuperare una certa informazione a partire dagli indici a disposizione, una persona deve seguire determinate regole in modo da identificare la posizione in cui tale informazione si trova. Meccanismo per associazioni Il meccanismo di indicizzazione non è il modo in cui la mente umana solitamente opera. Partendo da una specifica informazione, la mente si sposta istantaneamente alla successiva mediante un processo associativo : un’informazione ne richiama un’altra, conformemente a una complicata rete di pensieri veicolata dalle cellule del nostro cervello. Questa selezione poteva essere meccanizzata e conseguentemente esplicitata in una macchina. Esempio di rete di collegamenti ipertestuali
L’avvento del Web Tim Berners-Lee, un giovane scienziato del CERN di Ginevra, propone (1989) un progetto chiamato World Wide Web. Inizialmente respinto da parte dei suoi superiori con il famoso commento “vago, ma eccitante”. Venne accettato come progetto collaterale per testare le potenzialità di un nuovo computer (il NeXT) che era stato appena comprato dal CERN. Cos’era il Web nella testa del suo creatore Un ipertesto che potesse descrivere una varietà di risorse eterogenee (documenti, persone, concetti astratti, …) collegabili tra loro mediante l’uso di collegamenti ipertestuali etichettati , in modo da poter specificare la semantica del collegamento come parte esplicita del link. I collegamenti ipertestuali del Web dovevano essere percorribili in un’ unica direzione. Primo prototipo Un’ulteriore semplificazione: soltanto una tipologia di risorse (la pagina Web) e una sola tipologia di collegamento ipertestuale , ovvero il semplice riferimento (il documento A fa riferimento al documento B). Sviluppò una serie di tecnologie che permettessero agli utenti: la creazione di documenti ipertestuali di mettere a disposizione i suddetti documenti ipertestuali sul Web di identificarli mediante l’utilizzo di un opportuno identificativo di richiederli mediante l’utilizzo di uno specifico protocollo di comunicazione di visualizzarli su un computer Identificare le risorse sul Web Il computer non mostra tutto quello che conosce sui link ipertestuali presenti in quella pagina. Dentro quel frammento di testo sottolineato e solitamente colorato in blu (o in viola, nel caso sia stato già visitato) che può essere cliccato, c’è nascosto un oggetto invisibile che inizia per “http://” (o, a volte, “https://”) Quell’oggetto è un Uniform Resource Locator , o URL , rappresenta una sorta di nome (o più propriamente, un indirizzo ) della pagina web a cui il link punta e permette di accedere cliccandoci sopra, ad esempio: http://it.wikipedia.org/wiki/Barack_Obama Struttura di un URL La forma di un qualunque URL presente nel Web è conforme con la seguente struttura (ove gli elementi tra parentesi quadre sono opzionali): ://[:][/][?][#] Metafora: arrivare in una specifica posizione all’interno di una casa per prendere oggetto specifico schema: mezzo di trasporto usato per raggiungere la casa