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
101/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
201/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
301/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
401/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
501/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
601/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
701/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
801/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
901/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
1001/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
1101/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
1201/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
1301/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
1401/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
1501/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
1601/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
1701/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
1801/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
1901/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
20Puoi anche leggere