sistemi informativi di rete aa 2000-01 introduzione alla programmazione

50
Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Upload: salvatrice-rinaldi

Post on 03-May-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Sistemi Informativi di Rete

AA 2000-01

Introduzione alla programmazione

Page 2: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Informazioni Generali

• Prof. Letizia Tanca, Dip. Elettronica e Informazione, stanza 128, tel. 3531– ricevimento mercoledì h. 14:16

• Esercitazioni: ing. Matteo Valsasna, ing. Gianfranco Mattia

Page 3: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Materiale didattico consigliato

Testi ufficiali• Ron White, "Il computer, come è fatto e come funziona", Mondadori

Informatica.

• S.Ceri, D.Mandrioli, L.Sbattella, "Informatica: arte e mestiere", McGraw-Hill, Italia, 1999.

Letture consigliate• Manuali di Java (v. Valsasna)

• G.Buonanno, W.Fornaciari, L.Mari, D.Sciuto, Introduzione ai sistemi informatici, McGraw-Hill, 1997.

• P.Atzeni, S.Ceri, S.Paraboschi, R.Torlone, "Basi di dati", McGraw-Hill, II ed., 1999.

Page 4: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

L’informatica

E’ la scienza che si occupa della

rappresentazione dell’ informazione

e della sua gestione

Page 5: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

L’informatica• Scienza: approccio rigoroso e sistematico• Informazione: e’ parte di qualsiasi attivita’ umana• Rappresentazione: il problema di astrarre i

concetti importanti da quelli trascurabili per poter modellare la realta’ di interesse:ci serve studiare metodi di rappresentazione appropriati all’elaborazione da parte di una macchina digitale

• Gestione: uso e trasformazione dell’informazione in maniera funzionale agli obiettivi

Page 6: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Argomenti del corso• Programmazione:

– impariamo un linguaggio di programmazione: Java

– impariamo come si imposta una procedura:• l’astrazione

• i tipi di dati e le strutture dati

• le strutture di controllo e gli algoritmi

• l’ingegneria del software

• Sistemi di elaborazione: comprendiamo l’architettura HW e SW di un computer e di una rete.

• Sistemi informativi: impariamo a progettare sistemi informativi di rete.

Page 7: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Architettura di un ComputerHardware

• l’Unita’ Centrale (CPU),• la Memoria Centrale (RAM)• la Memoria di Massa• il Bus di Sistema• le Unita’ Periferiche• le Reti di Computer

Il linguaggio della macchina è l’aritmetica binaria

Page 8: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Architettura di un Computer:Software di sistema

• il sistema operativo• i sistemi di gestione di basi di dati• il software di rete• gli ambienti di programmazione: editors,

traduttori, collegatori, debuggers..• gli strumenti di produttivita’: word processors,

fogli elettronici, strumenti per la produzione di slide, strumenti per la produzione di ipertesti…..

Page 9: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Architettura di un Computer:Software applicativo

• gestionale (sistemi informativi aziendali, elaborazione paghe, fatturazione, automazione del terziario, ….office automation: workflow management)

• numerico (metereologia, applicaz. statistiche,..)

• telematico (terminali bancari, prenotazioni aeree, ….Internet….)

• automazione industriale (robotica, CAD, CIM…)

• controllo di processi (centrali elettriche, nucleari, controllo traffico aereo…)

• realta’ virtuale e interfacce utente …software multimediale

Page 10: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Strumenti di Produttivita’• Word processors, agende elettroniche,...• I fogli elettronici: Microsoft Excel • Le basi di dati: Microsoft Access

La rete Internet• Le reti di calcolatori, sistemi distribuiti• Il World Wide Web• La posta elettronica• Telnet, FTP

Page 11: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

I calcolatori elettronici• strumenti in grado di eseguire operazioni

non complesse

modello attuale (macchina di Von Neumann):– Capacità di scelta (possibilità di scegliere percorsi

diversi in base allo stato interno del sistema);

– Funzionalità programmata (capacità di modificare il proprio comportamento in base al programma);

– Dispositivi digitali (utilizzano valori binari).

– Di tipo sequenziale: può processare una sola istruzione per volta.

Page 12: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

La macchina di von Neumann

• l’Unita’ Centrale (CPU),

• la Memoria Centrale (RAM)

• la Memoria di Massa• il Bus di Sistema• le Unita’ Periferiche

CPU

MM

BUSRAM

UP1

UPn

Page 13: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Risoluzione automatica di problemi

• Ripetizione di un gran numero di operazioni relativamente semplici

• Capacita’ di trattare grandi quantita’ di dati senza errori

• Rapidita’ e precisione di esecuzione• Le attitudini umane si adattano tipicamente a

individuare metodi per ottenere le soluzioni

Page 14: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Dal problema alla soluzione automatica

• Specifiche: descrizione precisa e corretta dei requisiti (verificabilita’) ---> cosa?

• Progetto: procedimento con cui si individua la soluzione ---> come?

• Soluzione: algoritmo

Page 15: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Definizione di algoritmo

Dato un problema e un esecutore, un algoritmo e’:

• una successione finita di passi elementari

• eseguibili senza ambiguita’ dall’esecutore

• che risolve il problema dato

• nel nostro caso: algoritmi sequenziali

Page 16: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Prodotto di due interi positivi

• Leggi W

• Leggi Y

• Somma W a se stesso Y volte

• Scrivi risultato

Page 17: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Prodotto di due interi positivi1 Leggi W

2 Leggi Y

3 SP = 0

4 NS = Y

5 SP = SP + W

6 NS = NS - 1

7 NS = 0?

Se NO: torna a 5; se SI :

8 Z = SP

9 Scrivi Z

• Procedimento sequenziale

• Non ambiguo

• Formulazione generale

• Prevede tutti i casi

(che succede se Y < 0?)

Page 18: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

ALGORITMITre aspetti fondamentali:

– Gli oggetti su cui esso agisce (variabili o costanti), alcuni acquisiti dall’esterno (INPUT) e manipolati, altri interni, di supporto, altri forniti come risultati (OUTPUT);

– Le operazioni effettuate;

– Il flusso di controllo (successione delle operazioni da eseguire).

Flusso di esecuzione: descrive la sequenza di operazioni

effettuate in una particolare esecuzione.

Page 19: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

ALGORITMI

• Criteri di valutazione di un buon algoritmo:– Correttezza: capacità di pervenire alla soluzione

appropriata del problema prevedendo tutti i casi significativi che possono presentarsi;

– Efficienza: proprietà strettamente correlata al tempo di esecuzione e alla memoria occupata.

Page 20: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Strumenti per la descrizionedegli algoritmi

• Semi-formali (specifiche iniziali, ancora intelligibili solo all’essere umano)

• Formali (programmi da eseguire):

linguaggi di programmazione

Page 21: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Linguaggi semi-formali

• pseudo-codice:

IF A>0 THEN A=A+1 ELSE A=0

• diagrammi di flusso (flow chart, schemi a blocchi):

Page 22: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Prodotto di due interi positivi1 Leggi W

2 Leggi Y

3 SP = 0

4 NS = Y

5 SP = SP + W

6 NS = NS - 1

7 NS = 0?

Se NO: torna a 5; se SI:

8 Z = SP

9 Scrivi Z

Leggi (W)

Leggi (Y)

SP = 0

NS = Y

do

{ SP = SP + W

NS = NS - 1} while NS > 0

Z = SP

Scrivi (Z)

Page 23: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Gli oggetti

Sono variabili o costanti:• alcuni acquisiti dall’esterno (INPUT) e manipolati, altri

interni, detti ausiliari o di supporto, altri forniti come risultati (OUTPUT)

• gli oggetti possono avere una struttura molto complessa

• le variabili sono dei contenitori di informazioni.

• durante l’esecuzione del programma devono avere sempre un valore definito, significativo o meno. Per questo motivo le variabili devono essere inizializzate.

Page 24: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Gli oggetti

Gli oggetti possono avere una struttura molto complessa. Esempi:

• vettori (array): A[1],A[2],…A[N]

a una o piu’ dimensioni

• strutture:

data:giorno: 1..31,

mese: string,

anno: integer

Page 25: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Operazioni ed espressioni• Operatori aritmetici: +, -, *, / …:Agiscono su valori, detti

operandi, di tipo numerico rappresentati da variabili o costanti e producono un valore numerico.

• Operatori di confronto: < , > , = …:Agiscono anch’essi sugli operandi e producono risultati di tipo booleano (VERO o FALSO).

• Funzioni: cos(x), log(x), …:Restituiscono valori; esistono funzioni predefinite (BUILT IN).

• Procedure: leggi (x), scrivi (n):Effettuano delle operazioni su valori detti parametri.

• Espressioni:Sono una composizione di operatori, funzioni, variabili e valori costanti.

Page 26: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Operazione di assegnamentoOperazione di assegnamento: es. A:=B+C• Consente di assegnare un nuovo valore alla

variabile a sinistra dell’operatore di assegnamento (:= oppure =).

• Tale valore è determinato dalla valutazione dell’espressione a destra dell’operatore di assegnamento.

• Altro modo di assegnare valori: lettura dall’esterno

Page 27: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Flusso di controllo

Il flusso di controllo e’ la successione delle operazioni da eseguire. Si utilizzano:

• istruzioni di tipo condizionale• istruzioni che impongono un flusso di controllo

ciclico: condizioni di permanenza nel ciclo:» ciclo a condizione iniziale

» ciclo a condizione finale

Page 28: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Somma dei primi N naturali(uso di istruzione condizionale)

1. Leggi(N)

2. S=0

3. I=1

4. S=S+I

5. I=I+1

6. If I >N then go to 4

7. Scrivi(“La somma e’” S)

8. End

• Implementa un ciclo a condizione finale

• e’ corretto se N >= 1

Page 29: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Istruzione Condizionale

Selezione semplice: if ….then…

Esempio: caso precedente.

Si tratta di una scelta tra eseguire oppure non eseguire una sequenza di istruzioni.

Page 30: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Istruzione Condizionale

Selezione doppia: if ….then…else…

Esempio: caso precedente.

Si tratta di una scelta tra eseguire una sequenza di istruzioni oppure eseguirne un’altra sequenza .

Page 31: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Somma dei primi N naturali(uso esplicito di ciclo)

1. Leggi(N)

2. S=0

3. I=1

4. do { S=S+I

5. I=I+1}

6. while I <= N

7. Scrivi(“La somma e’” S)

8. End

• implementa un ciclo a condizione finale

• e’ corretto se N >= 1 • esce dal ciclo dopo

averlo eseguito almeno una volta

Page 32: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Elementi del flusso di controllo ciclico

• Variabile di controllo: inizializzata prima di entrare nel ciclo

• Condizione di permanenza nel ciclo:– a condizione iniziale– a condizione finale

• Modifica della variabile di controllo: avviene nel corpo del ciclo

Page 33: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Somma dei primi N naturali(uso esplicito di ciclo)

1. Leggi(N)

2. S=0

3. I=1

4. while I <= N do

5. { S=S+I

6. I=I+1}

7. Scrivi(“La somma e’” S)

8. End

• implementa un ciclo a condizione iniziale

• e’ corretto se N >= 0

• non entra nel ciclo se N=0

Page 34: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Linguaggi e programmi

Java e` un linguaggio di programmazione

Che cos’e` un l.p.?

linguaggio artificiale per programmare un computer

preciso e rigoroso

il computer e` meno tollerante agli “errori” di un “umano”

Che cos’e` un programma?

e` cio` che un computer esegue

realizza un’applicazione (es. Excel, Word, …)

Page 35: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Linguaggi di Programmazione

Consentono di scrivere gli algoritmi sotto forma di programmi eseguibili dal calcolatore. Suddivisi in:

• Linguaggi di alto livello (più vicini linguisticamente al linguaggio naturale);

• Linguaggi assemblatori (più vicini al codice macchina)

Page 36: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

• Java ha successo come “linguaggio per internet”:

consente di creare “applet”:

(semplici) programmi che vengono eseguiti quando un browser carica una pagina HTML

Le applicazioni hanno un utente previsto (“end user”), ma questo termine e` ambiguo se non si specifica il contesto

JAVA

Page 37: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

I Traduttori

• I compilatori sono programmi che traducono i programmi scritti in alto livello in Assembler.

• Gli interpreti interpretano direttamente le operazioni eseguendole.

• Esempi di linguaggi:• Interpretati LISP, PROLOG (usatI

nell’intelligenza artificiale;• Compilati C, C++, PASCAL, FORTRAN.

Page 38: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Costruzione ed esecuzione dei programmi (caso tradizionale)

editor compilatoretesto

sorgente

linguaggio macchina

(eseguibile)(codice oggetto)

bleah!errori

Page 39: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Il computer esegue programmi scritti nel proprio linguaggio (linguaggio macchina) inadatto alla comunicazione umana: usa una codifica binaria (“0” e “1”), che e` direttamente interpretabile da circuiti elettronici

Il computer esegue programmi che sono memorizzati nella propria RAM

Parole =+bytes =+bit

System.out.println(“xxx”)

Page 40: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Problema: ogni macchina (486, Pentium, …) ha il proprio linguaggio

- occorrono tanti compilatori quante sono le macchine

- non posso trasferire il codice oggetto

L’idea di Java

- definire un linguaggio macchina “universale” (Bytecode)

editor compilatoretesto

sorgente Bytecode

Page 41: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Assomiglia ai linguaggi macchina, ma non coincide con nessuno, quindi non e` eseguibile direttamente dall’hardware

Alternativa 1

Esiste uno speciale compilatore per il Bytecode

Alternativa 2 (quella piu` comune)

Esiste una speciale applicazione che fa da “interprete” del linguaggio Bytecode

hardware

interprete Bytecodee` una macchina “virtuale”

Il bytecode e` una “lingua franca”

Page 42: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Vantaggi e svantaggi dell’alternativa 2

• + portabilita` del codice tra macchine diverse (fondamentale nel caso di applet!)

• - efficienza !!

Page 43: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Errori

• attenzione: il compilatore puo` rilevare solo alcuni errori (tipicamente errori sintattici)

• durante l’esecuzione del programma possono sorgere altri errori (errori “runtime” ), per esempio divisione per una grandezza che vale zero

Page 44: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Struttura di un programma(linguaggio di alto livello)

• Parte dichiarativa: dichiarazione degli elementi del programma (dati e funzioni)

• Parte eseguibile: istruzioni:– input/output– assegnazione– controllo:

» condizionali

» cicli

Page 45: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Dichiarazione dei dati

• Interi : valori:{…-4,-3,-2,-1,0,1,2,3,4,…

(int) operazioni: {+, -, *, /}

• Booleani: valori: {vero, falso}

(bool) operazioni: {and, or, not, implica}

• Reali: valori: R (float) operazioni: {+, -, *, /, sqrt, ...}

Le costanti: es. const float Pi=3,14

Page 46: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Dichiarazione dei dati:tipi di dati

Il tipo e’ un concetto astratto che esprime:

• allocazione di spazio

• operazioni permesse:non posso fare “3 and 4”

non posso fare “vero * falso”

Page 47: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Oggetti e classiAbitualmente operiamo con oggetti che hanno certi attributi e su cui si possono compiere operazioni

il mio televisore è un oggetto

il video del mio computer è un oggetto

il mio amico Pippo è un oggetto

Gli oggetti sono elementi (esemplari, “istanze”) di una classe

Tutti gli oggetti di una stessa classe condividono le stesse proprietà

Page 48: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

L’astrazione

E’ un processo mentale che:

• evidenzia alcune proprieta’ rilevanti ai fini dell’applicazione

• esclude le proprieta’ irrilevanti ai fini dell’applicazione

Page 49: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Concetto: persona• Persona: nome, cognome, codice fiscale,

indirizzo, data di nascita, n. telefono, ...

• Persona come studente: nome, cognome, numero di matricola, corso di laurea, esami sostenuti, voti, anno di corso…

• Persona come paziente: nome, cognome, data di nascita, gruppo sanguigno, malattie avute, risultati esami medici,...

Page 50: Sistemi Informativi di Rete AA 2000-01 Introduzione alla programmazione

Classe Persona• Si introduce la classe delle persone, che avrà un certo insieme di

proprietà:– Persona: nome, cognome, codice fiscale, indirizzo, data di nascita, n.

telefono, …

• Si introducono le sottoclassi:– Studente: nome, cognome, numero di matricola, corso di laurea, esami

sostenuti, voti, anno di corso…

– Paziente: nome, cognome, data di nascita, gruppo sanguigno, malattie avute, risultati esami medici,…

• Si possono introdurre dei comportamenti (metodi)

per gli elementi di una certa sottoclasse:– Persona.trova i genitori