TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE Riccardo Dondi Dipartimento di Scienze dei linguaggi, della comunicazione e degli studi culturali Università degli Studi di Bergamo
Informazione sul corso Modalità d esame: orale Come contattarmi Ufficio: piazza Vecchia 8, II piano, stanza 24 (laboratorio di Geografia) Orario di ricevimento: mercoledì 14.00-15.30 Libri di testo consigliati: lucidi Sawyer, Williams Tecnologie dell informazione e della comunicazione, McGraw-Hill Per approfondimenti: Sciutto, Buonanno, Fornaciari, Mari Introduzione ai sistemi informatici, McGraw-Hill Sito web del corso Indirizzo mail: riccardo.dondi@unibg.it
Tecnologia dei computer Un computer può essere utilizzato in modi differenti: Utilizzo di programmi specifici (foglio elettronico, programmi di videoscrittura, browser, etc ) Sviluppare nuovi programmi Un computer è un dispositivo programmabile: può eseguire programmi differenti senza che la sua struttura venga cambiata Accetta dati in ingresso, li elabora per produrre informazioni utili. La potenza di calcolo di un computer accelera la risoluzione dei problemi e migliora la produttività
Discipline all interno dell informatica L informatica è composta da diverse discipline: Algoritmi e struttura dati Programmazione Architettura dei calcolatori Reti di calcolatori Sistemi operativi Ingegneria del software Basi di dati Intelligenza artificiale Teoria dell informazione
Algoritmi e Strutture Dati Un algoritmo è definito come una sequenza finita di operazioni elementari per la risoluzione di un problema Dato un insieme di dati in ingresso (input) un algoritmo produce una soluzione al problema (output) Es. Somma di due numeri. Input: due numeri x e y Output: la somma di x e y L algoritmo riceve (legge) x e y, calcola x + y e restituisce x + y
Complessità di un algoritmo Esistono problemi semplici (somma di due numeri) e problemi complessi (problema del commesso viaggiatore) Problema del commesso viaggiatore: un commesso viaggiatore deve partire dalla propria città, visitare tutte le città dove ha dei clienti e deve tornare alla propria città percorrendo il viaggio di lunghezza minima. Un commesso viaggiatore può avere migliaia di clienti sparsi in migliaia di città
Algoritmo Gli algoritmi rappresentano soluzioni teoriche Perché un algoritmo sia utilizzabile deve essere implementato: deve essere scritto un programma che compie le operazioni descritte dall algoritmo
Programmazione Studio dei programmi: algoritmi espressi in un linguaggio comprensibile al calcolatore Il linguaggio formale impiegato per descrivere un programma è detto linguaggio di programmazione Nell algoritmo non sono considerati in dettaglio alcuni aspetti della risoluzione di un problema: codifica dei dati interazione con esseri umani Caratteristiche dell elaboratore che si sta utilizzando: costi lettura/scrittura dati, velocità di calcolo, limiti nella dimensioni di dati rappresentabili
Linguaggio di programmazione L elaboratore ha un proprio linguaggio (linguaggio macchina), difficilmente comprensibile e programmabile dagli esseri umani Linguaggi di programmazione di alto livello: consentono la descrizione dei problemi ad un livello astratto Meno astratto rispetto agli algoritmi: deve rispettare delle regole precise Più astratto rispetto al linguaggio macchina: più semplice per la descrizione
Linguaggio di programmazione Un programma in un linguaggio di alto livello è una successione di istruzioni che devono essere lette e trasformate in istruzioni del linguaggio macchina da un opportuno programma di traduzione Importanza dei linguaggi di alto livello: su macchine differenti cambiano i programmi di traduzioni ma le istruzioni di alto livello dovrebbero restare invariate Diversi linguaggi: Fortran, Cobol, Basic, Pascal, C, Perl, C++, Java
Linguaggio di programmazione Due caratteristiche fondamentali dei linguaggi di programmazione: Sintassi: l insieme delle regole che il linguaggio deve seguire. Un programma corretto devo rispettare tale sintassi. Semantica: significato di ogni istruzione. Un programma può anche essere corretto sintatticamente ma non fare quello per cui è stato creato. Es.: scrivo un programma sintatticamente corretto che invece di calcolare il prodotto tra due numeri calcola la somma tra due numeri
Compilatore e Interprete Due tipi di traduttori da linguaggio di alto livello a linguaggio macchina: compilatore e interprete Entrambi controllano la sintassi del programma Compilatore: traduttore che converte le istruzioni del programma ad alto livello in codice macchina. Il codice macchina può quindi essere eseguito (Cobol, Fortran, Pascal, C). Interprete: traduttore che converte ogni istruzione di alto livello in codice macchina e poi la esegue (Basic, Perl).