Riassunto di Fondamenti di Informatica

Fondamenti di Informatica: Guida Completa per Studenti

Introduzione

L'informatica di base fornisce i concetti essenziali per comprendere come funzionano i computer, come si sviluppano programmi e come si gestiscono dati e risorse. Questo materiale è pensato per uno studente universitario e presenta concetti chiave, esempi pratici e applicazioni reali.

Definizione: L'informatica di base è lo studio dei principi fondamentali che governano la rappresentazione, l'elaborazione e la gestione delle informazioni mediante strumenti digitali.

1. Concetti fondamentali e terminologia

1.1 Dato vs Informazione

  • Dato: un elemento grezzo, ad esempio un numero o una stringa.
  • Informazione: significato derivato dall'elaborazione e contestualizzazione dei dati.

Definizione: Un dato è una rappresentazione grezza di fatti; un'informazione è il risultato dell'interpretazione dei dati.

Esempio pratico: i valori $23$, $24$, $22$ sono dati; la media $\frac{23+24+22}{3}=23$ è informazione sulla temperatura.

1.2 Algoritmi e strutture di controllo

  • Algoritmo: sequenza finita di istruzioni per risolvere un problema.
  • Strutture di controllo principali: sequenza, selezione (if/else), iterazione (for, while).

Definizione: Un algoritmo è una procedura ben definita che, a partire da input, produce un output in un numero finito di passi.

Esempio: calcolare il massimo tra tre numeri $a$, $b$, $c$:

  1. $m \leftarrow a$
  2. Se $b>m$ allora $m \leftarrow b$
  3. Se $c>m$ allora $m \leftarrow c$
  4. Restituisci $m$

1.3 Complessità computazionale (introduzione)

  • Tempo di esecuzione e complessità spaziale.
  • Notazione asintotica: $O(n)$, $O(\log n)$, $O(n^2)$ (concetto e confronto qualitativo).

Definizione: La complessità temporale misura come cresce il tempo di esecuzione di un algoritmo al crescere della dimensione dell'input.

Tabella comparativa:

ComplessitàDescrizioneEsempio tipico
$O(1)$Costanteaccesso a elemento di array
$O(\log n)$Logaritmicaricerca binaria
$O(n)$Linearescansione di array
$O(n \log n)$Quasilinearealgoritmi di ordinamento come mergesort
$O(n^2)$Quadraticaordinamento per selezione su matrici
💡 Věděli jste?Fun fact: Il modello di calcolo RAM (Random Access Machine) è spesso usato per ragionare sulla complessità come se ogni operazione elementare costasse 1.

2. Programmazione di base

2.1 Tipi di dati e variabili

  • Tipi primitivi comuni: interi, numeri reali, booleani, caratteri, stringhe.
  • Tipizzazione statica vs dinamica.

Definizione: Una variabile è una locazione di memoria con un nome che contiene un valore modificabile durante l'esecuzione di un programma.

Esempio: dichiarazione in pseudocodice: int conto = 0; oppure conto = 0 in linguaggi dinamici.

2.2 Controllo del flusso e funzioni

  • Funzioni/procedure: modularità, parametri, valore di ritorno.
  • Scope e lifetime delle variabili.

Definizione: Una funzione è un blocco di codice che riceve input, esegue operazioni e restituisce un output.

Esempio pratico: funzione per sommare due numeri $f(x,y)=x+y$ restituisce $x+y$.

2.3 Strutture dati fondamentali

  • Array, liste, stack, queue, dizionari/hashtable.

Tabella comparativa:

StrutturaAccessoInserimento/CancellazioneUso tipico
Array$O(1)$$O(n)$ per mezzosequence fissa
Lista collegata$O(n)$$O(1)$ in testainserimenti dinamici
Stack$O(1)$ top$O(1)$ push/popgestione chiamate
Queue$O(1)$ front$O(1)$ enqueue/dequeuecode di processi
Hashtable$O(1)$ medio$O(1)$ mediomappature chiave-valore
💡 Věděli jste?Fun fact: Molti linguaggi moderni implementano le stringhe come array immutabili di caratteri per motivi di sicurezza e ottimizzazione.

3. Software e sistemi

3.1 Tipologie di software

  • Software di sistema: gestisce risorse hardware e fornisce servizi di base.
  • Software applicativo: programmi che svolgono compiti specif
Zaregistruj se pro celé shrnutí
FlashcardTest di conoscenzeRiassuntoPodcastMappa mentale
Inizia gratis

Hai già un account? Accedi

Informatica di base

Klíčové pojmy: Differenza tra dato e informazione con esempio numerico, Definizione e struttura di un algoritmo e esempio per massimo tra tre numeri, Concetti base di complessità: $O(1)$, $O(\log n)$, $O(n)$, $O(n\log n)$, $O(n^2)$, Tipi di dati e variabili: statici vs dinamici, Principali strutture dati: array, lista, stack, queue, hashtable e loro complessità, Fasi di compilazione ed esecuzione del software, Modello relazionale e operazioni CRUD; concetto di transazione e ACID, Principi di sicurezza: confidenzialità, integrità, disponibilità e uso di HTTPS, Esempio matematico: formula della media $\frac{1}{n}\sum_{i=1}^{n} x_i$, Ricerca binaria: algoritmo e uso degli indici $l$, $r$, $m$, Buone pratiche: controllo di versione, testing, code review

## Introduzione L'informatica di base fornisce i concetti essenziali per comprendere come funzionano i computer, come si sviluppano programmi e come si gestiscono dati e risorse. Questo materiale è pensato per uno studente universitario e presenta concetti chiave, esempi pratici e applicazioni reali. > **Definizione:** L'**informatica di base** è lo studio dei principi fondamentali che governano la rappresentazione, l'elaborazione e la gestione delle informazioni mediante strumenti digitali. ## 1. Concetti fondamentali e terminologia ### 1.1 Dato vs Informazione - **Dato:** un elemento grezzo, ad esempio un numero o una stringa. - **Informazione:** significato derivato dall'elaborazione e contestualizzazione dei dati. > **Definizione:** Un **dato** è una rappresentazione grezza di fatti; un'**informazione** è il risultato dell'interpretazione dei dati. Esempio pratico: i valori $23$, $24$, $22$ sono dati; la media $\frac{23+24+22}{3}=23$ è informazione sulla temperatura. ### 1.2 Algoritmi e strutture di controllo - **Algoritmo:** sequenza finita di istruzioni per risolvere un problema. - Strutture di controllo principali: sequenza, selezione (if/else), iterazione (for, while). > **Definizione:** Un **algoritmo** è una procedura ben definita che, a partire da input, produce un output in un numero finito di passi. Esempio: calcolare il massimo tra tre numeri $a$, $b$, $c$: 1. $m \leftarrow a$ 2. Se $b>m$ allora $m \leftarrow b$ 3. Se $c>m$ allora $m \leftarrow c$ 4. Restituisci $m$ ### 1.3 Complessità computazionale (introduzione) - Tempo di esecuzione e complessità spaziale. - Notazione asintotica: $O(n)$, $O(\log n)$, $O(n^2)$ (concetto e confronto qualitativo). > **Definizione:** La **complessità temporale** misura come cresce il tempo di esecuzione di un algoritmo al crescere della dimensione dell'input. Tabella comparativa: | Complessità | Descrizione | Esempio tipico | |---|---:|---| | $O(1)$ | Costante | accesso a elemento di array | | $O(\log n)$ | Logaritmica | ricerca binaria | | $O(n)$ | Lineare | scansione di array | | $O(n \log n)$ | Quasilineare | algoritmi di ordinamento come mergesort | | $O(n^2)$ | Quadratica | ordinamento per selezione su matrici | Fun fact: Il modello di calcolo RAM (Random Access Machine) è spesso usato per ragionare sulla complessità come se ogni operazione elementare costasse 1. ## 2. Programmazione di base ### 2.1 Tipi di dati e variabili - Tipi primitivi comuni: interi, numeri reali, booleani, caratteri, stringhe. - Tipizzazione statica vs dinamica. > **Definizione:** Una **variabile** è una locazione di memoria con un nome che contiene un valore modificabile durante l'esecuzione di un programma. Esempio: dichiarazione in pseudocodice: `int conto = 0;` oppure `conto = 0` in linguaggi dinamici. ### 2.2 Controllo del flusso e funzioni - Funzioni/procedure: modularità, parametri, valore di ritorno. - Scope e lifetime delle variabili. > **Definizione:** Una **funzione** è un blocco di codice che riceve input, esegue operazioni e restituisce un output. Esempio pratico: funzione per sommare due numeri $f(x,y)=x+y$ restituisce $x+y$. ### 2.3 Strutture dati fondamentali - Array, liste, stack, queue, dizionari/hashtable. Tabella comparativa: | Struttura | Accesso | Inserimento/Cancellazione | Uso tipico | |---|---:|---:|---| | Array | $O(1)$ | $O(n)$ per mezzo | sequence fissa | | Lista collegata | $O(n)$ | $O(1)$ in testa | inserimenti dinamici | | Stack | $O(1)$ top | $O(1)$ push/pop | gestione chiamate | | Queue | $O(1)$ front | $O(1)$ enqueue/dequeue | code di processi | | Hashtable | $O(1)$ medio | $O(1)$ medio | mappature chiave-valore | Fun fact: Molti linguaggi moderni implementano le stringhe come array immutabili di caratteri per motivi di sicurezza e ottimizzazione. ## 3. Software e sistemi ### 3.1 Tipologie di software - **Software di sistema:** gestisce risorse hardware e fornisce servizi di base. - **Software applicativo:** programmi che svolgono compiti specif