Presentazione di PowerPoint - DIMES Unical · Informatica Applicata 2 Programma del corso...

39
Informatica Applicata Informatica Applicata Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi

Transcript of Presentazione di PowerPoint - DIMES Unical · Informatica Applicata 2 Programma del corso...

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

23

Tabella dei Codici ASCII Estesi

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