presentazione di powerpoint - dimes unical · informatica applicata 2 programma del corso...
TRANSCRIPT
Informatica Applicata
Informatica ApplicataInformatica Applicata
Ing. Irina Trubitsyna
Concetti Introduttivi
Info
rmat
ica
App
licat
a
2
Programma del corsoProgramma del corso
Obiettivi:Il corso di Informatica Applicata illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli aspetti relativi alla rappresentazione dei dati e alla realizzazione di strutture dati elementari, alla definizione e all'utilizzo di funzioni e di librerie. Il corso intende porre l'enfasi più sulle tecniche di programmazione e tratterà alcuni algoritmi fondamentali. Al termine del modulo lo studente sarà in grado di sviluppare e verificare programmi C di media complessita'.
Il linguaggio CTipi di dato, operatori ed espressioniFlussi del controlloFunzioni e struttura dei programmiVettori, Puntatori, Aritmetica dei PuntatoriStruttureInput e Output
Info
rmat
ica
App
licat
a
3
Materiale DidatticoMateriale Didattico
Libri di testo:Brian W. Kernighan, Dennis M. Ritchie, “Il Linguaggio C”,seconda edizione, Pearson Education, 2004.
Lucidi ed altro materiale:
http://wwwinfo.deis.unical.it/~irina/http://wwwinfo.deis.unical.it/~irina/Oppure sul sito di iCampus:
http://icampus.deis.unical.it/
Info
rmat
ica
App
licat
a
4
Altre informazioniAltre informazioni
Docente: Irina Trubitsyna, DEIS, cubo 41C, V° piano
e-mail: [email protected] venerdì, dalle 15:00 alle 17:00
Tutor:Antonella Dimasie-mail: [email protected]
Info
rmat
ica
App
licat
a
5
OrarioOrario gruppo 1 : Arenare Giuseppe - Marchese Fannygruppo 2 : Martino Gabriele - Viola Leonardo
LUNEDI' MARTEDI' MERCOLEDI' GIOVEDI' VENERDI'
8.30 Lab gruppo1
9.30 Esercitazione Lab gruppo2
10.30 (Aula DS4)
11.30 Lezione
12.30 (Aula M1 )
14.30
15.30
16.30
17.30
18.30
Info
rmat
ica
App
licat
a
6
PrerequisitiPrerequisiti
Obiettivolo studio della programmazione dei calcolatori elettronici. In particolare, scrivere programmi in C per risolvere problemi di calcolo
Prerequisitiarchitettura del calcolatorerappresentazione delle informazioniD. Sciuto, G. Buonanno, L. Mari, “Introduzione ai sistemi informatici”, terza edizione, McGraw-Hill, 2005.
Info
rmat
ica
App
licat
a
7
Lezione 1Lezione 1--SommarioSommario
Architettura del CalcolatoreArchitettura di Von Neumann
Rappresentazione delle InformazioniRappresentazione dei numeriRappresentazione dei caratteri
Programmazione dei calcolatoriLinguaggi di programmazioneCiclo di vita di un programma
Info
rmat
ica
App
licat
a
8
Prerequisiti Prerequisiti -- IntroduzioneIntroduzione
In questo corso ci occuperemo di“software”, ovvero applicazioni
E’ necessario però avere un’idea dell’“hardware”, ovvero dei dispositivi fisici che compongono il calcolatore
Infattiil software specifica operazioni che vengono eseguiti dall’hardware
Info
rmat
ica
App
licat
a
9
Architettura del CalcolatoreArchitettura del Calcolatore
Hardware
Unità Centrale-Processore-Memoria di lavoro(memoria RAM)
Dispositivi di Uscita-Schermo-Audio-Stampanti
Dispositivi di Ingresso-Tastiera-Mouse
Memorie di Massa-Disco Rigido-Dischi Floppy-CD/DVD
Info
rmat
ica
App
licat
a
10
Macchina di Macchina di VonVon NeumannNeumann
unità centrale di elaborazione (CPU – Central Processing Unit)
esegue istruzioni per l’elaborazione dei datisvolge anche funzioni di controllo
memoria centralememorizza e fornisce l’accesso a dati e programmi in esecuzione
interfacce di ingresso e uscitacomponenti di collegamento con le periferiche del calcolatore
bussvolge funzioni di trasferimento di dati e di informazioni di controllotra le varie componenti funzionali
La macchina di Von Neumann è un modello semplificato dei calcolatori moderni ed è composta da 4 tipi di componenti funzionali:
Info
rmat
ica
App
licat
a
11
ProcessoreProcessore
CPU (“Central Processing Unit”)è il circuito integrato che effettua i calcoliresponsabile di tutte le operazionies: Pentium IV (a 1.8 GigaHertz)
In sostanzalegge e scrive dati dalla memoria RAMeffettua operazioni aritmeticheè in grado di pilotare le periferiche
Info
rmat
ica
App
licat
a
12
Memoria RAMMemoria RAM
“Random Access Memory”memoria di lavoro per la CPUcircuito elettronico capace di mantenere uno stato in presenza di alimentazionememorizza lo stato di segnali elettricivolatile: perde lo stato in assenza di tensione
Attenzionele elaborazioni del processore avvengono esclusivamente su dati nella RAM
Info
rmat
ica
App
licat
a
13
Architettura di Architettura di VonVon NeumannNeumann
Schema di funzionamentoil processore acquisisce dati dalle periferiche di ingresso o da una memoria di massali memorizza nella memoria RAMaccede alla RAM ed effettua operazioniscrive i risultati nella RAMinvia i risultati alle periferiche di uscitatrasferisce i dati permanentemente sulle memorie di massa
Esempio: elaborazione di un documentoil documento è salvato su discoviene “aperto” e caricato nella RAMvengono effettuate modificheil contenuto della RAM e quello del disco sono disallineatial termine delle modifiche è necessario “salvare” la nuova versione sul disco
Info
rmat
ica
App
licat
a
14
Memoria RAMMemoria RAM
Organizzazione della RAMcomposta di numerosi circuiti (celle)ciascuno capaci di memorizzare un bit di informazione
Bit (“Binary Digit”)unità di memorizzazione per il calcolatorepuò valere 1 oppure 0facilmente rappresentabile con un segnale elettrico
t
V
1 00.2V
3V
Info
rmat
ica
App
licat
a
15
Rappresentare Informazione con i BitRappresentare Informazione con i Bit
Con un bitdue numeri (0 e 1)
Con due bitquattro numeri (00, 01, 10, 11)
Con tre bitotto numeri (000, 001, 010, ..., 110, 111)
Per rappresentare 1.000.000 di numeriservono 20 bit
Info
rmat
ica
App
licat
a
16
UnitUnitàà di Misura della Memoriadi Misura della Memoria
Bit: 0/1
Byte: 8 bit unità convenzionale di riferim.
KiloByte: 210 byte (1024 byte)1024x8 bit = 8192 bit
MegaByte: 220 byte (1 milione di byte ca.)circa 8 milioni di bit
GigaByte: 230 byte (1 miliardo di byte ca.)circa 8 miliardi di bit
Info
rmat
ica
App
licat
a
17
Memoria RAMMemoria RAM
Struttura della RAMbit organizzati in registri
Registro16, 32 o 64 bitogni registro ha un suo indirizzo
Es: 64MByte di RAMca. 64 milioni di byteca.16 milioni di registri da 32 bit (224 registri)
bit 0 bit 1 bit 31
...
...
...
...
...
...
...
#0#1#2#3
#224-1
Info
rmat
ica
App
licat
a
18
Rappresentazione delle InformazioniRappresentazione delle Informazioni
Tutte le informazioni sono rappresentate attraverso sequenze di bit
Esempio:numero -57 su 16 bit1111111111000111carattere ‘A’ su 8 bit10000001
Codifica (o Codice)insieme di regole per rappresentare oggetti con altri oggettiin questo caso: lettere, numeri, immagini ecc. attraverso sequenze di bit
Interazione con il calcolatorel’utente ha l’impressione di lavorare con oggetti familiari (parole, cifre, ecc.)rappresentazione interna in forma di bit
Info
rmat
ica
App
licat
a
19
Rappresentazione dei NumeriRappresentazione dei Numeri
Rappresentazione dei num. naturalirappresentazione posizionale in base 2semplice (simile a quella dei numeri decimali): ogni bit è una cifra
Rappresentazione dei num. intericodifica in “complemento a 2”regole complesse
Rappresentazione dei num.reali:Fixed point (virgola fissa): un numero razionale è rappresentato come una coppia di numeri interi: la parte intera e la parte decimale
12,52 → <12; 52>Floating point (virgola mobile): un numero razionale e’ rappresentato come un intero moltiplicato per una opportuna potenza di10, cioè con una coppia <mantissa, esponente>
12,52 = 1252/100 = 1252 * 10-2 → <1252; -2>
Info
rmat
ica
App
licat
a
20
Alcune Interessanti ConsiderazioniAlcune Interessanti Considerazioni
I Considerazionenumeri di tipo diverso vengono rappresentati in modo completamente diverso
II Considerazionela rappresentazione in virgola mobile è esponenziale (i valori crescono rapidamente)
III Considerazionealcuni numeri reali non possono essere rappresentati in modo esatto
In particolare:la rappresentazione in virgola mobile consente di rappresentare solo un numero fissato di cifre decimalialcuni numeri (es: 1/3) devono essere approssimati “troncando”le cifre decimaliquesto introduce errori nella rappresentazione e quindi nei calcoli
Info
rmat
ica
App
licat
a
21
Rappresentazione dei CaratteriRappresentazione dei Caratteri
Codice ASCII a 7 bital carattere è associato un num. tra 0 e 127la rappr. del carattere coincide con quella del numeronota: vale anche per le cifre (0-9) ed i caratteri speciali (es: +)
‘A’ 65 1000001‘0’ 48 0011000
Info
rmat
ica
App
licat
a
22
Rappresentazione dei CaratteriRappresentazione dei Caratteri
Limiti del codice ASCII a 7 bitnumero di caratteri rappresentabili molto basso (non include lettere accentate)
Codice ASCII a 8 bit (“Extended ASCII”)al carattere è associato un num. tra 0 e 255maggior numero di caratteri rappresentabili
Al giorno d’oggicodice UNICODE (16 bit o superiore)
Info
rmat
ica
App
licat
a
24
Linguaggi di ProgrammazioneLinguaggi di Programmazione
Linguaggi per impartire istruzioni al processoreProgramma
sequenza di istruzioninormalmente pensato per risolvere un problema di calcoloal programma vengono forniti dei datiil programma calcola eseguendo le istruzioniil programma restituisce i risultati
Info
rmat
ica
App
licat
a
25
Evoluzione dei LinguaggiEvoluzione dei Linguaggi
Esistono numerosi linguaggidifferenti per funzionalità e tecnologia
Linguaggi Orientati
agli Oggetti
LinguaggiIbridi
Linguaggi di Programmazione Procedurale
metà anni ’50FORTRAN
metà anni ’60BASIC
1968Pascal
1974C
1990C++
1994Java
2000C#, VB.NET
1991VB
anni ‘60COBOL
Info
rmat
ica
App
licat
a
26
Linguaggi di ProgrammazioneLinguaggi di Programmazione
C
C++
“clean C”programmazioneprocedurale
Java,C#
programmazioneorientata aglioggetti
linguaggio di questocorso -
sostanzialmenteequivalente ma
più semplice del C
Info
rmat
ica
App
licat
a
27
Linguaggi di ProgrammazioneLinguaggi di Programmazione
Attenzionei linguaggi della stessa famiglia sono normalmente basati sugli stessi concetti
Differenzealcuni linguaggi forniscono funzionalità che altri non hanno“sintassi”“semantica”
Info
rmat
ica
App
licat
a
28
Sintassi e SemanticaSintassi e Semantica
Sintassi“grammatica” del linguaggioinsieme delle regole che stabiliscono quali frasi (programmi) sono corretti
Esempio: in Italiano: “maiuscola dopo il punto”in C++: “le istruzioni si concludono con ;”
Semantica“significato” del linguaggioinsieme delle regole che stabiliscono come il calcolatore esegue i programmi corretti
Esempio: in italiano: “andrò è un’azione nel futuro”in C++: coutcout << << ““CiaoCiao””; ;
Attenzionesintassi e semantica dei linguaggi di programmazione sono rigorose
Info
rmat
ica
App
licat
a
29
Sintassi e SemanticaSintassi e Semantica
Attenzione: ci sono due diverse nozioni di correttezzaCorrettezza Sintattica
assenza di errori sintatticiil programma è eseguibile
Correttezza Semantica (o Logica)implica la correttezza sintatticail prog. risolve correttamente il problema
Verifica della correttezza sintatticaviene verificata dal compilatoreconsente di eliminare gli errori sintattici
Verifica della correttezza semanticaesecuzione e “test” del programmaprove di funzionamento per controllare che il programma si comporti correttamenteprocesso più complesso e delicato
Info
rmat
ica
App
licat
a
30
Ciclo di Vita di un ProgrammaCiclo di Vita di un Programma
Per programmareè necessario conoscere almeno un linguaggio (sintassi e semantica)
Ma questo non bastail processo di sviluppo del software ècomplessoè necessario un metodo (ovvero una “metodologia”) per affrontare questa complessità
Info
rmat
ica
App
licat
a
31
Ciclo di Vita di un ProgrammaCiclo di Vita di un Programma
Il punto di partenzala descrizione del problema, normalmente fornita in linguaggio naturaleè opportuno analizzarla accuratamente
Il punto di arrivol’applicazione correttamente funzionante
Un passo intermedio fondamentaleconcepire una strategia per la soluzione del problema
Info
rmat
ica
App
licat
a
32
Ciclo di Vita di un ProgrammaCiclo di Vita di un Programma
Algoritmo: sequenza finita di passi, elementari e non ambigui, che risolve un problema in un tempo finito
PROBLEMA ALGORITMO PROGRAMMA
strategia risolutiva
linguaggio di programmazione
Efficienza: algoritmo deve risolvere il problema utilizzando al meglio le risorse a disposizione
Info
rmat
ica
App
licat
a
33
Ciclo di Vita di un ProgrammaCiclo di Vita di un Programma
Avendo concepito l’algoritmoè possibile procedere alla scrittura del codice
Codice sorgenteistruzioni del linguaggio di programmazione non è direttamente eseguibile dal processore
Linguaggio macchinalinguaggio di comandi eseguibili dal processore (molto semplici)
Info
rmat
ica
App
licat
a
34
Linguaggi ad alto livelloLinguaggi ad alto livello
Conviene impostare la soluzione di un problema a partire dalle “mosse elementari” del linguaggio macchina?
SI, per risolvere il problema con efficienzaNO, se la macchina di partenza ha mosse di livello troppo basso(difficile progettare un algoritmo)
Linguaggi di Programmazione ad Alto LivelloAlto livello di astrazione: le istruzioni corrispondono ad operazioni più complesseesempi: Pascal, Basic, C, C++, JavaE’ necessario tradurre il programma nel linguaggio macchina mediante opportuni programmi (interprete o compilatore)
Info
rmat
ica
App
licat
a
35
CompilatoreCompilatore
Processo di compilazioneverifica della correttezza sintatticatrasforma il codice sorgente in codice “oggetto”
Processo di collegamentocollega il codice oggetto a quello delle “librerie” esterne (es: op. matematiche)produce il codice eseguibile completo dell’applicazione
Info
rmat
ica
App
licat
a
36
Ciclo di Vita di un ProgrammaCiclo di Vita di un Programma
A questo puntol’applicazione è eseguibileè necessario verificarne la correttezza logica
Fase di testesecuzione ripetuta dell’applicazione su dati di testper verificarne il funzionamento
Info
rmat
ica
App
licat
a
37
Ciclo di Vita di Un ProgrammaCiclo di Vita di Un Programma
Analisi del Problema
Scelta dell’Algoritmo
Scrittura delProgramma
Compilazionee
Collegamento
Verifica Uso eManutenzione
errorisintattici
errorinellastrategia
codicesorgente
codiceeseguibile
ATTENZIONEqueste fasi non si
svolgono “in cascata”
errorilogici
Info
rmat
ica
App
licat
a
38
Compilazione e CollegamentoCompilazione e Collegamento
Compilazionecodicesorgentees:primo.cpp
Collegamento
codiceoggetto(ling. macchina)es: primo.obj
librerieesterneprecompilatees: iostream
Compilatore
Collegatore(“linker”)
codiceeseguibilees: primo.exe
Info
rmat
ica
App
licat
a
39
Termini della licenza
Questo lavoro si basa sul lavoro di G. Mecca “Programmazione Procedurale in Linguaggio C++”.
Questo lavoro viene concesso in uso secondo i termini dellalicenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitarehttp://creativecommons.org/licenses/by-sa/1.0/ oppure inviareuna lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA