Upload
trannhu
View
214
Download
0
Embed Size (px)
Citation preview
Programma del corso
Introduzione agli algoritmi
Rappresentazione delle Informazioni
Architettura del calcolatore
Reti di Calcolatori
Elementi di Programmazione
Visual Basic
Linguaggio di programmazione per lo sviluppo di applicazioni da eseguire in un qualunque ambiente Microsoft Windows
Visual Basic è un’implementazione Microsoft dell’originario linguaggio Basic
Visual Basic
Linguaggio di programmazione
Ad alto livello
Interpretato (ambiente interattivo)
Visuale
Guidato dagli eventi
Origini “antiche”
1964: BASIC (Beginner’s All Purpose Symbolic Instruction Code)
(+) General Purpose (+) Semplicità (+) Third Generation (-) Poca potenza espressiva (-) Non ottimizzato per HW/SO (-) Non orientato agli oggetti
(+) Bill Gates ne costruisce un interprete
Pascal (1969)
C (1972)
C++ (1983)
Utilizzato prevalentemente per scopi didattici
Le Graphical User Interfaces (GUI)
70’s: Sistemi Unix / 1982: MS-DOS 1.0 : NO GUI
1984: Macintosh 1984: X Window System (MIT, ambito
Unix) 1985: Windows 1.0
Ambienti operativi basati su EVENTI
Programmazione Modale
Programmazione “Event Driven”
Ambienti operativi basati su GUI
Linea Comando Ambiente grafico
Da console a GUI
Non cambia le strutture di controllo (cicli, ecc) Cambia profondamente il modo di gestire
l’input/output da e verso il mondo esterno
Input: passaggio alla programmazione “EVENT DRIVEN” Viene meno il concetto di “istruzione di lettura” Scrittura di “Routine di risposta ad eventi” (no
readline(stringa)) Una complessa gestione dei messaggi è gestita dall’
ambiente Output: invocazione di opportune API Grafiche
Es: writeln(“Hello World”) MsgBox(“Hello World”)
Programmazione con GUI (2)
Programmazione diretta con API grafiche ed eventi relativamente complessa
(-) Difficoltà per i programmatori provenienti da MSDOS e Unix
(-) Necessità di una dettagliata comprensione dei meccanismi di generazione ed inoltro di eventi
(-) Di fatto solo il C/C++ si rivela inizialmente facilmente adattabile alla nuova situazione
Necessità di semplificazione
Visual Basic
(1991?- 94): Visual Basic
Linguaggio derivato dal BASIC
Fortemente integrato con Windows
Supporto (parziale) alla progr. ad oggetti
Introduce la programmazione visuale
Parte dell’interfaccia grafica del programma viene disegnata e non più codificata (IDE)
Il controllo sintattico (e quando possibile semantico) delle istruzioni viene eseguito all’istante
Introdotta anche con altri linguaggi (Visual C++)
Visual Basic (3)
(-) Il linguaggio eredita i limiti del BASIC (poca potenza espressiva, non ottimizzato per l’HW)
(+) Eredita la semplicità del BASIC
(+) L’ambiente di sviluppo per la programmazione visuale lo rende un prodotto di successo
(??) L’ambiente evita (impedisce?) al programmatore di conoscere i dettagli sulla gestione degli eventi
Perché proprio BASIC? … (Bill Gates?)
Altri Visual Basic
1995: Visual Basic for Application (VBA) Integrazione di Visual Basic in altre
applicazioni Word
Excel
Access, Power Point, etc
Concetto di programma “embedded” (MACRO)
Programmazione visuale diversa rispetto a VB Presenza di nuovi oggetti (fogli di lavoro)
IDE più limitato
Linguaggio di fatto identico a VB tradizionale
Processo di programmazione in Visual Basic (Event Driven)
Progetto dell’applicazione
Creazione dell’interfaccia grafica
Aggiunta del codice agli elementi visivi
Esecuzione
Processo di programmazione in Visual Basic
Un programma è costituita da Controlli (ciascuno rappresentato da un’icona) Istruzioni
L’interazione dell’utente con un qualunque controllo rappresenta un evento
Ad ogni controllo sono associati diversi eventi Il codice è suddiviso in blocchi (routine) Una routine contiene il codice eseguito quando
viene generato un evento su un controllo Click del mouse, pressione di un tasto, apertura di una
finestra, ecc.
Descrizione GUI
Differenza concettuale tra con VB e VBA
Compilazione Linking Loading
Loading Interpretazione
Visual Basic
Visual Basic for Application
Codice Sorgente
Binario eseguibile
Programma in esecuzione
Binario Eseguibile Office
Office (Excel) in esecuzione Istruzioni VB
File Office
VBA
Applicazioni VBA Un’ applicazione VBA viene interpretata da
Office
Un’ applicazione VBA viene spesso chiamata MACRO
Caratteristiche delle macro Esecuzione lenta (interpretazione di un codice
intermedio)
Accesso diretto agli oggetti del file di dati che contiene l’applicazione VBA
Capacità di eseguire codice maligno (essendo un’applicazione a tutti gli effetti) VIRUS informatici contenuti dentro file Word o Excel
VIRUS che vengono eseguiti quando si avvia l’applicazione ospitante
Il linguaggio
Elementi del linguaggio completamente identici a Visual Basic tradizionale
Oggetti e componenti grafici standard molto simili (un sottoinsieme di VB)
Oggetti nuovi per l’interazione con le applicazioni ospitanti Excel (fogli, celle, grafici)
In sostanza, chi sa programmare in VB standard programma anche in VBA Lo stesso non vale per VB .NET
VBA: l’ambiente di lavoro
L’ambiente di lavoro diventa Office Considereremo come applicazione ospitante di
riferimento Excel (2003) Visualizzazione della Toolbar
VBA: l’ambiente di lavoro (2)
Inserimento di un bottone
Strumenti di controllo
Strumenti di controllo
Nessun Form utilizzato
Il foglio stesso contiene gli oggetti
VBA: l’ IDE Visual Basic
Doppio click sul pulsante per aprire un IDE (Integrated Development Environment) molto simile a quello di VB
Non c’è la toolbar (si trova nel foglio)
VBA: Un semplice esempio «ciao»
All’ interno della routine di risposta all’evento click invochiamo l’API MsgBox Stesse API di Visual Basic
Il titolo della finestra mostrata è “Microsoft Excel” perché l’applicazione che il sistema operativo sta eseguendo non è l’applicazione VBA, ma quella ospitante
La modalità progettazione
Quando si fa doppio click su di un pulsante l’ambiente apre l’ IDE VB e passa alla modalità di progettazione Il click su qualunque elemento fa riaprire l’ IDE VB
Per tornare alla modalità d’esecuzione occorre selezionare “Esci da Modalità Progettazione” nella barra degli strumenti VB
L’abilitazione delle macro
Normalmente le macro sono disabilitate Prevenzione da virus (primi anni 2000)
Possibili diversi livelli di protezione
… in conclusione
In sintesi
Macro VBA eseguite in applicazione Office ospitante
Codice interpretato
Linguaggio identico a Visual Basic
Necessità di visualizzare barra strumenti VB
Il foglio di calcolo contiene gli oggetti grafici
Modalità progettazione ed esecuzione
Variabili
Dichiarazione di una variabile
Parole chiave “Dim” e “as”
Tipo di una variabile
Tipo semplice
Istanza di un oggetto
Variabili (2)
Esempi dichiarazione tipo sempliceDim variabile1 as Integer
Dim variabile2 as Long
Dim variabile3 as String
Esempi dichiarazione oggetto
Dim variabile1 As Cell
Dim variabile2 as Row
Funzioni di Input e Output
InputBox(Prompt, Title, default_text, x-position, y-position)
Scelta= MsgBox (Prompt, Style Value, Title )
Un primo esempio
Private Sub Command1_Click()Dim a As IntegerDim b As Integer
a = 100b = 200
MsgBox a + b
End Sub
“=“ operatore di assegnamento
Un secondo esempio
Private Sub Command1_Click()Dim a As IntegerDim b As Integer
a = InputBox("Inserisci a")b = InputBox("Inserisci b")
MsgBox a + b
End Sub
Analisi dei due esempi
Mostrano l’uso di variabili intere
Utilizzano due API di Windows per l’ I/O: MsgBox per l’output
InputBox per l’input
Approccio NON EVENT DRIVEN Concettualmente non differiscono da writeln e
readln (o istruzioni analoghe)
L’input blocca l’esecuzione
Unica differenza: finestra invece di caratteri
Analisi dei due esempi (2)
Abbandono dell’idea di richiedere un input in un determinato momento L’utente inserisci gli input in ordine sparso
Al verificarsi di un determinato evento viene eseguita l’elaborazione
Come accedere al contenuto inserito?
Dove sono memorizzati i valori?
I componenti e le proprietà
In generale, ogni componente grafico (bottone, textbox o altro) dispone di un certo numero di proprietà Modificabili dall’ IDE
Leggibili e scrivibili da codice
In generale, le routine di risposta ad eventi leggono il valore di certe proprietà e ne impostano altre
Il componente TextBox
Modificando la proprietà Name si modifica il nome dell’oggetto grafico
Tale nome è utilizzabile da codice
Inseriamo due TextBox: Text1 e Text2
Il componente TextBox (2)
Accesso da codice all’oggetto Il nome dell’oggetto è accessibile nel codice come
qualunque altra variabile
Accesso da codice alle proprietà OGGETTO.PROPRIETA’
Es. Text1.Text
Es. Text1.BackColor
Proprietà Text Contiene il contenuto “attuale” del campo di testo
Utilizzabile come variabile contenente il valore dell’input
Un esempio event driven
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
a = Text1.text
b = Text2.text
MsgBox a + b
End Sub
• Accesso alla proprietà text dell’oggetto textbox
I commenti
Private Sub Command1_Click()Dim a As IntegerDim b As Integer
a = Text1.textb = Text2.text
MsgBox a + b
End Sub
‘ Accesso alla proprietà text dell’oggetto textbox
Il carattere ‘ (apice) introduce un commento
Ancora sulle routine di risposta
Le routine di risposta ad un evento DEVONO essere veloci in esecuzione
Non è pensabile scrivere molte istruzioni che tengano impegnata la macchina a lungo Il sistema operativo è in grado (entro certi limiti) di
interrompere un esecuzione troppo lunga, oppure addirittura bloccata (PREEMPTION)
Tuttavia, questa interruzione ad opera del sistema operativo, pur impedendo alla macchina di bloccarsi, non permette una corretta ripresa dell’elaborazione degli eventi
Esistono meccanismi più sofisticati (thread, timer) per gestire casi di lunghe sequenze di istruzioni
Nei casi basilari (come quelli di questo corso) le routine di risposta agli eventi DEVONO ESSERE BREVI
Esercizio: area rettangolo (2)
Il codicePrivate Sub Command1_Click()
'dichiarazione variabiliDim base As IntegerDim altezza As IntegerDim area As Integer
'accesso alle proprietà dei campi di inputbase = textBase.Textaltezza = textAltezza.Text
'calcolo dell'areaarea = base * altezza
'scrittura a video dell'outputMsgBox "L'area vale " & Str(area)
End Sub
NON SONO ISTRUZIONI DI INPUT, MA DI LETTURA PROPRIETA’
NON SONO ISTRUZIONI DI INPUT, MA DI LETTURA PROPRIETA’