Università degli Studi di Cagliari Facoltà di Scienze Corso di Laurea in Matematica
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
01/03/17 Università degli Studi di Cagliari Facoltà di Scienze Corso di Laurea in Matematica Elementi di Informatica Dott. Paolo Garau A.A. 2016/2017 Paolo Garau 1 Presentazione del Corso Orario delle Lezioni Martedì: 11:00 – 13:00 (Aula Alpha) Mercoledì: 09:00 – 13:00 (Lab. T Palazzo delle Scienze) Paolo Garau 2 1
01/03/17 Presentazione del Corso Organizzazione Generale Il corso ha una durata complessiva di 64 ore e vale 8 CFU. Teoria Lezioni di carattere Teorico Pratica Lezioni pratiche volte alla programmazione C Paolo Garau 3 Presentazione del Corso Prove in itinere Durante il corso verranno effettuate delle prove di valutazione che influenzeranno il voto finale. Paolo Garau 4 2
01/03/17 Presentazione del Corso Prove di Esame Totali Le prove di esame totali saranno almeno 6, si svolgeranno durante tutto l’anno accademico e seguiranno il calendario ufficiale indicato nel sito del CdL di Matematica. Queste consistono in una prova di laboratorio (sviluppo di un progetto in C) e di un’interrogazione orale sulla parte teorica. Per maggiori dettagli e per le prenotazioni alle prove di esame vedere il sito di unica.it nella sezione “servizi agli studenti”. Paolo Garau 5 Presentazione del Corso Frequenza delle Lezioni La frequenza alle lezioni è un aspetto fondamentale per l’ottimo raggiungimento degli obiettivi del corso. Pertanto si consiglia di frequentare tutte le lezioni. Paolo Garau 6 3
01/03/17 Presentazione del Corso E per chi si impegna…. Paolo Garau 7 Presentazione del Corso Argomenti di teoria Elenco a titolo indicativo Ø Algoritmi e linguaggi di programmazione Ø Concetto di informazione e la sua codifica Ø La codifica dei numeri Ø Codifica di Immagini e Suoni Ø Codifica dei Video Ø L’hardware Ø Architetture, Memorie, supporti e periferiche Ø Il Sistema Operativo Ø Le reti di Calcolatori Ø Evoluzione dei sistemi e normativa sul trattamento dei dati personali. Paolo Garau 8 4
01/03/17 Presentazione del Corso Argomenti delle lezioni di laboratorio Elenco a titolo indicativo Ø Fondamenti dell’uso del PC Ø Virtualizzazione Ø Informazioni di base del Sistema operativo Linux Ø Utilizzo del Compilatore Ø Linguaggio C Ø Costrutti di programmazione Ø Array e puntatori Ø Liste dinamiche Ø Gestione dei file Paolo Garau 9 Testi di Riferimento Slides e Libri di testo Le Slides delle lezioni verranno pubblicate regolarmente attraverso il sito web del corso di Elementi di Informatica. Queste tratteranno tutti gli argomenti d'esame ma non possono essere sostitutive dei testi di riferimento. Luca Mari, Giacomo Buonanno, Donatella Sciuto Testi Consigliati Informatica e cultura dell'informazione McGrawn-Hill. N. Balossino Principi di Informatica Lattes. Paolo Garau 10 5
01/03/17 Forum del corso di Informatica Portale del Docente Troverete tutte le informazioni relative al corso nel seguente sito web: http://people.unica.it/paologarau Paolo Garau 11 Presentazione del Corso 5 consigli per un’ottima riuscita del corso 1) Seguire tutte le lezioni in particolare quelle in Laboratorio; 2) Studiare per fare bene tutte le prove in itinere; 3) Rivedere subito la lezione per individuare e chiarire eventuali punti oscuri; 4) Tenere sotto controllo il sito ed effettuare la registrazione studente; 5) Se si hanno dubbi durante la lezione chiedere senza esitazione. Paolo Garau 12 6
01/03/17 Presentazione Corso di Informatica Domande? Paolo Garau 13 Università degli Studi di Cagliari Facoltà di Scienze Corso di Laurea in Matematica Corso di Elementi di Informatica Lezione 1 1 marzo 2017 Dott. Paolo Garau A.A. 2016/2017 Paolo Garau 14 7
01/03/17 Che cos'è L'informatica Una prima definizione informale di Informatica L'informatica è una scienza interdisciplinare che riguarda tutti gli aspetti del trattamento dell'informazione mediante procedure automatizzabili. (Wikipedia) Analizziamo la definizione: Si tratta di una scienza interdisciplinare per molteplici ragioni. Da un lato perché utilizza delle conoscenze provenienti dalla ricerca di settori scientifici come ad esempio dalla matematica, dalla fisica o dalla logica. Dall'altra si applicano i risultati e la conoscenza ottenuta in contesti totalmente diversi tra loro. Paolo Garau 15 Che cos'è l'Informatica Per aspetti del trattamento dell'informazione si intendono le trasformazioni e le elaborazioni che possiamo fare sull'informazione. Data però la vastità delle tipologie di informazioni che interessano il mondo umano ci si deve limitare ai singoli settori in cui è possibile eseguire un trattamento mediante delle procedure automatizzate. NB: Non tutte le informazioni possono essere elaborate mediante processi automatizzati!!! Affinché queste procedure raggiungano il risultato sperato, e quindi si ottengano delle nuove informazioni, è necessario che si eseguano una serie di passi predefiniti e non ambigui. L'insieme di questi passi prende il nome di Algoritmo. Paolo Garau 16 8
01/03/17 Cos'è L'informatica sulla base gli Algoritmi Definizione formale di Informatica L'informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l'informazione: la loro teoria, analisi, progetto, efficienza ed applicazione. (Association for Computing Machinery) Paolo Garau 17 Che cos'è un Algoritmo Definiamo cos'è un Algoritmo Un algoritmo è una sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono di ottenere la soluzione di un problema in un numero finito di passi. Proprietà degli algoritmi: La sequenza delle istruzioni da eseguire deve essere finita (Finitezza) Le istruzioni devono poter essere eseguite materialmente (Eseguibilità) Le istruzioni devono essere non ambigue (Non ambiguità) L'algoritmo deve portare ad un risultato (Risultato) Un algoritmo che risolve il problema per cui è stato creato si dice corretto. Un algoritmo corretto può essere più o meno efficiente. Paolo Garau 18 9
01/03/17 Facciamo un esempio di Algoritmo Partiamo da un semplice problema. Pensare ad un algoritmo che prende in ingresso due numeri interi e ne rende il maggiore. Dobbiamo descrivere nel dettaglio ogni singolo passaggio rispettando le proprietà degli algoritmi. [Finitezza, Eseguibilità, Non ambiguità, Risultato] Una possibile soluzione: leggi il primo_valore leggi il primo_valore leggi il secondo_valore leggi il secondo_valore se il (primo_valore > secondo_valore) se il (primo_valore > secondo_valore) stampa (primo_valore) stampa (primo_valore) altrimenti altrimenti stampa (secondo_valore) stampa (secondo_valore) Paolo Garau 19 Facciamo un esempio di Algoritmo Ipotizziamo che il nostro interlocutore non conosca il significato del segno > e sappia fare solamente delle somme, sottrazioni e distinguere numeri positivi dai numeri negativi. In questo caso riscriviamo il nostro algoritmo come: leggi primo_valore leggi secondo_valore se il (primo_valore – secondo_valore) è positivo stampa (primo_valore) altrimenti stampa (secondo_valore) leggi il primo_valore leggi il secondo_valore se il (primo_valore – secondo_valore) è positivo stampa (primo_valore) altrimenti stampa (secondo_valore) Paolo Garau 20 10
01/03/17 Facciamo un esempio di Algoritmo Conclusioni Molto spesso non c'è un solo algoritmo per risolvere uno stesso problema, ma se ne possono creare di diversi e tutti corretti. A seconda delle condizioni in cui dovremo lavorare sceglieremo un algoritmo piuttosto che un altro. (Vedi esempio del > o della sottrazione) Per quanto riguarda l'efficienza invece i due esempi non sono rappresentativi in quanto impiegano entrambi lo stesso numero di passaggi per risolvere uno stesso problema. Paolo Garau 21 Facciamo un esempio di Algoritmo Esiste un sistema per rappresentare gli algoritmi? I diagrammi di flusso Si utilizzano i seguenti blocchi elementari: Blocchi di Inizio e Fine Vengono utilizzati per INIZIO indicare l’ingresso e l’uscita dal diagramma. FINE Paolo Garau 22 11
01/03/17 Facciamo un esempio di Algoritmo Blocco di Input/Output Nel caso di “Leggi” l’algoritmo legge i valori inseriti dall’utente e Leggi/Scrivi X li conserva in X, oppure nel caso di “Scrivi”, stampa il valore di X a schermo. Blocco di Elaborazione Si effettua l’elaborazione indicata (nell’esempio è la somma del X=X+1 valore di X + 1) e il risultato lo si memorizza in X. Paolo Garau 23 Facciamo un esempio di Algoritmo Blocco di Controllo Se la condizione è realizzata si procede nel senso “Vero” Vero X == 0 altrimenti “Falso”. In questo caso se x è uguale a 0 procedi verso “Vero” Falso altrimenti verso “Falso”. Attraverso le 4 tipologie di blocchi (Blocchi di Inizio/Fine, Blocchi di Input/Output, Blocchi di Elaborazione e i Blocchi di Controllo) è possibile rappresentare qualsiasi algoritmo. Paolo Garau 24 12
01/03/17 Dall'algoritmo al linguaggio di programmazione Esempio di Algoritmo INIZIO inizio leggi il primo_valore leggi il secondo_valore Leggi a se il (primo_valore – secondo_valore) è positivo stampa (primo_valore) altrimenti Leggi b stampa (secondo_valore) fine Falso (a – b) > 0 Vero Stampa b Stampa a FINE Paolo Garau 25 Dall'algoritmo al linguaggio di programmazione Esercizio INIZIO Creare un Leggi a algoritmo che dato un Falso Vero numero intero in a >0 a==0 ingresso, dica Vero Falso se il numero è a=a-2 pari o dispari. Stampa Stampa QUESTO “Il numero “Il numero ALGORITMO è dispari” è pari” E’ SEMPRE CORRETTO? FINE Paolo Garau 26 13
01/03/17 Presentazione del Corso Come possiamo comunicare l’algoritmo al nostro elaboratore? Paolo Garau 27 Dall'algoritmo al linguaggio di programmazione Una volta trovato l'algoritmo più adatto che risolve il nostro problema sappiamo quali sono i passi da eseguire per raggiungere l’obiettivo richiesto. Adesso ipotizziamo di voler comunicare il nostro algoritmo risolutivo al calcolatore in modo tale che sia lui a calcolarci la soluzione. Per fare questo utilizzeremo un linguaggio di programmazione. Il linguaggio di programmazione è un linguaggio formale utilizzato dall'uomo per scrivere programmi per calcolatori. Di fatto l'elaboratore è in grado di elaborare solo dei segnali elettrici ed in particolare dei valori binari, ovvero combinazioni di '0' e '1'. E' quindi necessario trasformare l'algoritmo in una forma comprensibile alla macchina. Paolo Garau 28 14
01/03/17 I linguaggi di programmazione L'elaboratore è in grado di interpretare solamente il linguaggio macchina ovvero quell'insieme dei comandi direttamente eseguibili dall'elaboratore. I linguaggi di programmazione invece sono più vicini al linguaggio umano scritto e permettono di esprimere l'algoritmo in forma non ambigua e comunque comprensibile per l'uomo. Una prima distinzione relativa ai linguaggi di programmazione è basata sulla vicinanza del linguaggio umano così da avere: Linguaggi di basso livello (più vicini al linguaggio macchina) Linguaggi di alto livello (più vicini al linguaggio umano) Paolo Garau 29 Linguaggi di Programmazione di basso livello I linguaggi di programmazione di basso livello sono poco diffusi ma vengono comunemente utilizzati dai costruttori di dispositivi elettronici (embedded devices). Il linguaggio macchina più conosciuto è quello Assembly mediante il quale è possibile controllare ed eseguire ogni singola istruzione di un microprocessore. Il suo utilizzo è possibile solo da parte di chi ha un'ottima conoscenza non solo del linguaggio ma anche dell'architettura dell'elaboratore. Inoltre un programma scritto in linguaggio macchina si può usare solo ed esclusivamente su quella tipologia di macchina e non su altre. Paolo Garau 30 15
01/03/17 Linguaggi di Programmazione di Alto livello I linguaggi di programmazione di alto livello sono invece quelli più diffusi e comunemente adottati per la realizzazione di software. Questi hanno la caratteristica di utilizzare un linguaggio molto simile a quello umano e per questo motivo la maggior parte della programmazione di software avviene utilizzando questi linguaggi. Un altro aspetto fondamentale è che questi linguaggi per essere usati non richiedono una conoscenza approfondita dell'architettura dell'elaboratore su cui verranno usati ma a seconda delle caratteristiche del linguaggio saranno più o meno portabili. Con il termine portabilità si intende la capacità di eseguire lo stesso software su elaboratori aventi caratteristiche differenti. (Vedi approfondimento: http://it.wikipedia.org/wiki/Porting) Paolo Garau 31 Alcuni linguaggi di Programmazione Alcuni dei linguaggi di Programmazione di Alto livello sono: Java C e C++ Python Visual Basic Pascal e altri... Paolo Garau 32 16
01/03/17 Come funzionano i linguaggi di alto livello Abbiamo detto che un linguaggio di alto livello utilizza una modalità di comunicazione più vicina a quella umana. Questo cosa significa in pratica? Proviamo a scrivere il nostro “algoritmo del maggiore” in Python. Algoritmo di partenza Codice Sorgente scritto in un Inizio linguaggio di programmazione Leggi il primo_valore chiamato in Python Leggi il secondo_valore #!/usr/bin/python # Filename: if.py Se il (primo_valore > secondo_valore) primo_valore = 3 stampa (primo_valore) secondo_valore = 4 altrimenti If primo_valore > secondo_valore: stampa (secondo_valore) print primo_valore Fine else: print secondo_valore Paolo Garau 33 Come funzionano i linguaggi di alto livello Sebbene il linguaggio di alto livello sia comprensibile sia all’uomo che alla macchina, questo non è direttamente eseguibile. Abbiamo un vincolo da tenere in considerazione, ovvero il calcolatore è in grado di eseguire solamente le istruzioni macchina. Partendo da questo vincolo dobbiamo considerare che è necessario tradurre il codice sorgente scritto nel linguaggio di alto livello (o linguaggio di programmazione) in un linguaggio di basso livello (o linguaggio macchina). I programmatori affidano il compito della traduzione dal codice sorgente al linguaggio macchina direttamente al calcolatore ed in particolare ai compilatori. Paolo Garau 34 17
01/03/17 Come funzionano i linguaggi di alto livello I compilatori sono dei programmi per PC che vengono utilizzati dai programmatori per: Ø Verificare la correttezza della sintassi del codice sorgente usato; Ø Trasformare il codice sorgente (ovvero l’algoritmo scritto nel linguaggio di programmazione) in linguaggio macchina. Una volta che il codice sorgente è stato trasformato in linguaggio macchina otteniamo il programma pronto per essere utilizzato. Il programma ottenuto non è altro che un file con estensione .exe che prende il nome di file eseguibile e può essere aperto senza l’ausilio di nessun’altra applicazione. Paolo Garau 35 Come funzionano i linguaggi di alto livello E’ quindi opportuno fare una prima distinzione dei file del PC in: Ø File eseguibili (estensione .exe) Ø File non eseguibili (altre estensioni) Osservazione sui nomi dei file Tutti i file conservati nelle memorie del PC sono costituiti da due parti nome_file . estensione Dove il nome_file ha lunghezza variabile e l’estensione solo 3 o 4 caratteri. Attraverso questo sistema tutti i file vengono associati ad un programma che sia in grado di leggerli, ad eccezione dei file eseguibili che non devono essere letti da programmi ma solamente eseguiti dal PC in modo autonomo. Paolo Garau 36 18
01/03/17 Come funzionano i linguaggi di alto livello Il processo di traduzione dal codice sorgente al linguaggio macchina può avvenire in due modalità. Possiamo avere linguaggi compilati oppure linguaggi interpretati. I linguaggi compilati richiedono la generazione del codice eseguibile al momento della programmazione/realizzazione. I linguaggi interpretati vengono scritti nel linguaggio di programmazione e non si genera un codice eseguibile al momento della scrittura del programma. Il codice sorgente viene interpretato e trasformato in eseguibile al momento dell’esecuzione del programma. Paolo Garau 37 Funzionamento dei linguaggi compilati Funzionamento dei linguaggi compilati. Algoritmo scritto nel Questo è linguaggio di Compilatore quello che programmazione accade con i programmi Livello di Programmazione scritti in C e C++ Livello Utente Finale Esecuzione del programma Input (Dati in Programma in Output (Dati Ingresso) linguaggio in Uscita) macchina Paolo Garau 38 19
01/03/17 Funzionamento dei linguaggi interpretati Funzionamento dei linguaggi interpretati Algoritmo scritto nel linguaggio di programmazione Questo è Livello di Programmazione quello che accade con i Livello Utente Finale programmi scritti in Java Esecuzione del programma Traduttore / Compilatore Programma in Input (Dati in linguaggio Output (Dati Ingresso) macchina in Uscita) Paolo Garau 39 Schema Funzionale di un Calcolatore Nelle precedenti slide si parlava di come è possibile, partendo da un problema, fare in modo che un calcolatore ci restituisca la soluzione. Quindi, se prima si parlava del come realizzare e comunicare algoritmi, adesso diamo una presentazione di chi deve eseguirli ovvero del calcolatore. Ogni calcolatore ha la seguente architettura: Black Box Unità di Elaborazione (CPU) Input (Dati in Memoria Output (Dati Ingresso) Centrale in Uscita) Paolo Garau 40 20
Puoi anche leggere