43
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione

Elementi di Programmazione · Non cambia le strutture di controllo (cicli, ecc) Cambia profondamente il modo di gestire l’input/output da e verso il mondo esterno ... Accesso diretto

  • 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

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

Le GUI (2)

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++)

Integrated Development Environment

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

L’abilitazione delle macro (2)

… 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

Visual Basic

Elementi del linguaggio

e primi programmi

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

Variabili(3)

Funzioni di Input e Output

InputBox(Prompt, Title, default_text, x-position, y-position)

Scelta= MsgBox (Prompt, Style Value, Title )

Print

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

L’interfaccia richiesta

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’