sistemi informativi di rete aa 2000-01 introduzione alla programmazione
TRANSCRIPT
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
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.
L’informatica
E’ la scienza che si occupa della
rappresentazione dell’ informazione
e della sua gestione
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
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.
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
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…..
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
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
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.
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
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
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
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
Prodotto di due interi positivi
• Leggi W
• Leggi Y
• Somma W a se stesso Y volte
• Scrivi risultato
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?)
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.
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.
Strumenti per la descrizionedegli algoritmi
• Semi-formali (specifiche iniziali, ancora intelligibili solo all’essere umano)
• Formali (programmi da eseguire):
linguaggi di programmazione
Linguaggi semi-formali
• pseudo-codice:
IF A>0 THEN A=A+1 ELSE A=0
• diagrammi di flusso (flow chart, schemi a blocchi):
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)
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.
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
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.
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
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
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
Istruzione Condizionale
Selezione semplice: if ….then…
Esempio: caso precedente.
Si tratta di una scelta tra eseguire oppure non eseguire una sequenza di istruzioni.
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 .
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
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
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
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, …)
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)
• 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
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.
Costruzione ed esecuzione dei programmi (caso tradizionale)
editor compilatoretesto
sorgente
linguaggio macchina
(eseguibile)(codice oggetto)
bleah!errori
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”)
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
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”
Vantaggi e svantaggi dell’alternativa 2
• + portabilita` del codice tra macchine diverse (fondamentale nel caso di applet!)
• - efficienza !!
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
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
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
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”
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à
L’astrazione
E’ un processo mentale che:
• evidenzia alcune proprieta’ rilevanti ai fini dell’applicazione
• esclude le proprieta’ irrilevanti ai fini dell’applicazione
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,...
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