Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


appunti informatica teoria, Appunti di Elementi di Informatica

appunti di informatica che riguardano la teoria delle slide

Tipologia: Appunti

2023/2024

Caricato il 10/07/2024

maria-letizia-bambini
maria-letizia-bambini 🇮🇹

1 documento

1 / 32

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
0_1 INTRODUZIONE
Definizione di informatica:
L’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano
l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione.
L’informatica studia la rappresentazione e l’elaborazione dell’informazione, come: dati
numerici, dati testuali, immagini, suoni e video
Definizione di algoritmo:
Una sequenza finita di passi effettuabili per risolvere una classe di problemi in un
tempo finito. Gli algoritmi sono composti da:
Passi Elementari: azioni atomiche non scomponibili in azioni più semplici
Processo (esecuzione): sequenza ordinata di passi
Dati in ingresso: istanza del problema.
Dati in uscita: soluzione del problema.
Proprietà degli algoritmi:
• Finezza: numero finito di passi elementari
• Non ambiguità: i risultati non variano in funzione di chi (macchina o persona)
esegue l'algoritmo
Realizzabilità: esegue con le risorse disponibili
Efficienza: preferibile uso minimo delle risorse
Algoritmo
Metodo per la risoluzione di un problema
Programma
Traduzione di un algoritmo in un linguaggio di programmazione interpretabile dal
calcolatore
Processo
Programma in esecuzione sul calcolatore
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Anteprima parziale del testo

Scarica appunti informatica teoria e più Appunti in PDF di Elementi di Informatica solo su Docsity!

0_1 INTRODUZIONE

Definizione di informatica: L’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione. L’informatica studia la rappresentazione e l’elaborazione dell’informazione, come: dati numerici, dati testuali, immagini, suoni e video Definizione di algoritmo: Una sequenza finita di passi effettuabili per risolvere una classe di problemi in un tempo finito. Gli algoritmi sono composti da:

  • Passi Elementari : azioni atomiche non scomponibili in azioni più semplici
    • Processo (esecuzione ): sequenza ordinata di passi
    • Dati in ingresso: istanza del problema.
    • Dati in uscita : soluzione del problema. Proprietà degli algoritmi: - Finezza : numero finito di passi elementari - Non ambiguità : i risultati non variano in funzione di chi (macchina o persona) esegue l'algoritmo
  • Realizzabilità : esegue con le risorse disponibili
  • Efficienza : preferibile uso minimo delle risorse Algoritmo Metodo per la risoluzione di un problema Programma Traduzione di un algoritmo in un linguaggio di programmazione interpretabile dal calcolatore Processo Programma in esecuzione sul calcolatore

Macchina di Turing Alan Turing (1912-1954) Matematico inglese, tra i fondatori dell’informatica Macchina di Turing

  • Modello matematico di una macchina capace di eseguire calcoli su numeri e simboli sulla base di un insieme di regole che definiscono il comportamento
  • Prima idea di calcolatore generale programmabile Tesi di Church-Turing Non esiste alcun formalismo capace di risolvere una classe di problemi più ampia della macchina di Turing Quindi… Se un problema non può essere risolto dalla macchina di Turing, allora non è risolvibile. La macchina di Turing può essere considerata un modello formale dei computer moderni. Anche tra i problemi risolvibili ci sono problemi più o meno difficili ovvero che richiedono molto tempo o molte risorse computazionali per essere risolti
  • Problemi risolvibili vs. non risolvibili (computabilità)
  • Problemi trattabili vs. non trattabili (complessità) Legge di Moore il numero di transistor presenti su un microchip raddoppia ogni 18 mesi 0_2 CALCOLATORI E ALGORITMI Modello di Von Neumann Il primo modello di calcolatore fu ideato e progettato da Von Neumann. Egli Progettò il calcolatore EDVAC, era un modello che si basava principalmente sulla macchina di Turing (implementazione della macchina). Il computer archiviava i propri dati all'interno dello "stored-program" Stored-program La memoria contiene sia i dati sia le istruzioni Il comportamento dipende dal programma
  • Ogni cella ha un indirizzo che indica la locazione all’interno della memoria RAM (Random Access Memory) può esser utilizzata sia per la lettura che la scrittura Viene detta anche "memoria centrale" , è una memoria "veloce ". Accedere ad ogni cella ha sempre lo stesso costo Essa viene utilizzata per memorizzare i programmi e dati. Se un computer ha più RAM riesce a tener aperto più programmi. Ha una memoria finita e mobilie , se essa viene utilizzata troppo diminuiscono le "prestazioni". Ogni cella ha lo stesso tempo di latenza. ROM (Read-Only Memory) spesso viene utilizzata per avviare i programmi Mentre la ROM è una Memoria persistente e solo in lettura. Nella ROM troviamo anche il disco rigido e corrisponde al contenuto fisso e immutabile. Viene utilizzata anche per memorizzare programmi di sistema. Per non usare la memoria della RAM ogni volta, è stata introdotta la memoria cache che è una via di mezzo tra le due. Quando la CPU va a leggere un dato sulla RAM, passa da una memoria intermedia chiamata proprio cache. Nella CACHE ci sono i dati utilizzati in un breve periodo Gerarchia della memoria Località di memoria Principio di località spaziale
  • Quando la CPU esegue una certa istruzione, è probabile che le successive istruzioni da seguire saranno in posizioni vicine in memoria Principio di località temporale
  • Durante l’esecuzione di un programma, si accede molto frequentemente alle stesse zone di memoria Architettura generale BUS DATI : Serve per i dati veri e propri (Dati da utilizzare come operandi) BUS COMANDI : servono per le istruzioni (Comandi dalla CPU verso i vari dispositivi) BUS INDIRIZZI : Da la posizione dei dati (Indirizzi di memoria (es. dove leggere/scrivere dati)) Algebra di Boole Formalismo che opera su variabili dette booleane
    • Le variabili booleane posso assumere soltanto due valori: vero e falso
    • Sulle variabili booleane si possono definire delle funzioni , dette funzioni booleane
  • Anche le funzioni booleane possono assumere soltanto i due valori vero e falso
    • Le funzioni o operatori booleani di base sono and (congiunzione), or (disgiunzione) e not (negazione)

Il processo di compilazione non è univoco : ad esempio, ci sono molti compilatori per il linguaggio C Ogni compilatore riesce a compiere diverse forme di ottimizzazione e quindi influenza le prestazioni. Linguaggi interpretati Con il linguaggio interpretato abbiamo un interprete che passa direttamente dal codice di alto livello al codice macchina (non si passa dal codice di basso livello) linguaggi compilati su bytecode Il codice di alto livello viene tradotto da un compilatore Just-In-Time (JIT) in un bytecode che è simile al codice macchina (poco più astratto)

  • Il bytecode viene eseguito sulla VM ( virtual machine ), di cui esistono versioni per i diversi sistemi operativi
  • Il vantaggio del bytecode è che può esser letto da qualsiasi computer che possiede una virtual machine. Mentre le istruzioni/file date dal linguaggio compilato può essere letto soltanto da quel singolo dispositivo, mentre in altri sarà illeggibile. In questo modo si aumenta la portabilità del codice Vantaggi dei linguaggi interpretati e bytecode
  • Sono indipendenti dalla piattaforma

Svantaggi dei linguaggi interpretati

  • Tipicamente meno efficienti di quelli compilati
  • I compilatori possono essere utili ai programmatori Compilatori Quando si scrive un programma, posso presentarsi diverse tipologie di errore:
  • Errori di sintassi = Si verificano quando si scrivono espressioni non legali, ovvero che non seguono le regole della grammatica del linguaggio. Questo tipo di errore è segnalato dal compilatore.
  • Errori di semantica statica = Si verificano quando frasi sintatticamente corrette sono errate in quanto prive di significato. In questo caso il compilatore può dare qualche aiuto. Un errore tipico è quando non si dichiarano alcune variabili, ecc.
  • Errori di semantica dinamica = Si verificano quando all’esecuzione del programma si verifica un malfunzionamento ( runtime errors ) In questo caso il compilatore non offre aiuto. Sono gli errori più difficili da identificare e più critici. L'esito è molteplice, per esempio il programma può non finire mai, può dar la risposta corretta, può darla corretta soltanto alcune volte oppure CRASHA il programma. Quindi faremo una azione di DEBUG, la quale sarebbe eliminare gli errori Programmare Un programmatore individua una sequenza di istruzioni per risolvere un dato problema, trasformandole in forma eseguibile da un calcolatore. Un calcolatore è capace solo di istruzioni elementari. L’insieme di istruzioni elementari tipicamente varia da calcolatore a calcolatore (ISA).
  1. Analisi del problema
  2. Descrizione (informale) della soluzione
  3. Codifica (formale) della soluzione
  4. Traduzione in codice eseguibile dalla macchina
  5. Esecuzione della soluzione Passi da seguire per programmare Algoritmi

Esecuzione condizionata(if,then,else) Iterazione(while) Pseudo-codice Linguaggio per descrivere algoritmi attraverso istruzioni simili a quelle di un linguaggio di programmazione

  • Non esiste uno standard universale
  • Esistono convenzioni tipicamente adottate E’ un linguaggio semplice e intuitivo, partendo dal quale si può facilmente scrivere in un linguaggio di programmazione sul calcolatore 0_3 RAPPRESENTAZIONE DEI DATI Sistemi di numerazione Esistono due tipologie di notazione per i numeri:
  • RELATIVA = Numeri romani. i simboli hanno un ruolo che dipende dalla loro posizione relativa
  • ASSOLUTA = Numeri arabi. i simboli hanno un ruolo che dipende dalla loro posizione assoluta

In base B l’alfabeto dei simboli è costituito da un numero B di cifre che vanno da 0 a B- In base 2 l’alfabeto dei simboli è costituito soltanto dai due simboli 0 e 1. ( Ogni elemento di una sequenza binaria è detto BIT, e sequenza di 8 bit= BYTE) In base 16 l’alfabeto dei simboli è costituito dai simboli 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Esistono regole di conversione per trasformare un numero da una base in un’altra potenze del byte Esempio (base B=2) Sistema esadecimale (base 16) Conversione