Sei sulla pagina 1di 8

Programma IPF:

revisione dei concetti fondamentali di programmazione


linguaggio VBA
ambiente Matlab e suo linguaggio di programmazione
introduzione alla modellistica
REVISIONE DEI CONCETTI FONDAMENTALI DI PROGRAMMAZIONE
Algoritmo una sequenza ordinata e finita di passi che permettono di risolvere un problema in un
tempo finito.
Esempio: calcolare l'area di un rettangolo.
ingressi: i due lati L1(Base) e L2 (Altezza)
uscita: A l'area del rettangolo
procedura:
leggere L1
leggere L2
calcolare A= L1*L2
mettere in uscita A
Start
main
IN L1
IN L2
A=L1*L2
OUT A
End
main
Esempio: dato un numero X calcolarne il suo valore assoluto Y
ingresso: numero X
uscita: numero Y
procedura
Y=|X|
Se X<0 allora Y=-X altrimenti Y=X
Start
main
IN X
F

If X<0

Y=X

T
Y=-X

OUT Y
End
main
Esempio: calcolare il prodotto di due numeri naturali.

Ingresso: due numeri naturali X ed Y


uscita: numero naturale Z
Z=X*Y, o meglio la somma Y volte di X
Start
main
IN X
IN Y
Prodotto=0
While Y>0
T
Y=Y-1

Prodotto=Prodotto+X
Out Prodotto
End
main
Riepologo Algoritmo
Usa:
gli ingressi
le uscite
variabili di appoggio
un elenco di istruzioni diversi:
assegnamento (=)
selezione (if)
iterazione o cicliche (while)
chiamata di funzione/procedura
le istruzioni sono eseguite in sequenza le istruzioni di selezione e cicliche permettono di eseguire
blocchi di istruzioni in base ad una condizione

VBA: un primo esempio


Sub primoEsempio()
Range(A3) = ThisWorkBook.Name 'Inserisce nella cella A3 il nome della cartella di
lavoro
Range(A5).value=Worksheets(1).Name 'Inserisce nella cella A5 il nome del foglio di
lavoro in cui contenuta. Value indica la propriet dell'oggetto range(A5) che contiene il
valore della cella e pu essere anche omessa
Range(B2).Characters.Font.Name = Arial Black 'modifica il tipo di fonte della cella B2
end sub

Gerarchia degli oggetti:


workbook
worksheet
celle (range)
characters (carattere)
font (fonte)
name (nome della fonte)
Range(nomeCella) oppure Cells(riga, colonna)

Richiamare una funzione


Importante da ricordare:
I) la funzione restituisce un valore(risultato)
II) un'istruzione pu richiamare pi funzioni in sequenza (esempio: assieme = Trim(nome) &
& Trim(cognome))
generalmente il risultato dell'elaborazione viene memorizzato in una variabile o utilizzato in una
condizione.
if conteggioIscritti() < 30 then...
Il problema del ByRef
nel chiamare una funzione o subroutine che utilizza la parola chiave ByRef nella dichiarazione di
uno o pi parametri, si deve ricordare che se la funzione viene richiamata:
attraverso istruzione Call, allora ByRef sar operativo
solo con il suo nome, allora ByRef non operer
Esempio:
Function EliminaSpaziSuperflui(ByRef str As String)
Do While left(str,1) =
str=mid(str,2)
Loop
Do while Right (str,1) =
str=mid(str,1,len(str -1)
Loop
End function
Sub EliminaSpazi()
Dim testo as String
Testo = ABC
msgbox 1: { & testo & }
call EliminaSpazisuperflui(testo)

msgbox 2: { & testo & }


End sub
Creare una nuova funzione
prima riga:
parola chiave Function
nome
la parentesi tonda aperta
gli eventuali parametri separati da una virgola + as e tipo
parentesi tonda chiusa
la parola chiave as seguita dal tipo di valore da restituire
sulle righe successie:
corpo
la parola chiave End Function
Esempio:
Option Explicit
Function RacchiudiFraParentesiQuadre(txt As String) As String
racchiudifraparentesiquadre = [ & txt & ]
end function
Function Montante(capitale as currency, anni as integer, tasso as single) as currency
montante = capitale * (1+tasso/100) ^ anni
End function

ByRef
si dice che la variabile viene passata alla funzione o subroutine per riferimento e non per valore; la
funzione agisce direttamente sul parametro che riceve, modificandolo, in quanto esso viene indicato
nella dichiarazione di funzione come ByRef.
Function TuttoMaiuscolo (ByRef txt as string)
dim x as integer
for x=1 to Len(txt)
if Mid(txt, x, 1) >= a and Mid(txt, x, 1) <= z then
mid(txt, x, 1) = Chr$(asc(Mid(txt, x, 1)) Asc(a) + Asc(A))
end if
next x
end function
sub RichiamaTuttoMaiuscolo()
dim str as string
str = AbCdefg
MsgBox str
Call TuttoMaiuscolo(str)
MsgBox str
end sub

Risultato

AbCdefg

ABCDEFG

Matrici o Array
Function SommaParametriInMatrice(Mtx() as Integer) as Long
Dim T as long
dim x as Integer
for x = Lbound(Mtx) to Ubound(Mtx)

T=T+Mtx(x)
next x
SommaParametriInMatrice=T
End Function
Sub Sommatoria()
Dim ValA(3) as integer
Dim ValB(5) as integer
Dim TotaleA as long
Dim TotaleB as long
ValA(1) = 2
ValA(2) = 3
ValA(3) = 4
ValB(1)= 10
ValB(2)= 20
ValB(3)= 30
ValB(4)= 40
ValB(5)= 50
Totale = SommaParametriInMatrice(ValA)
Totale = SommaParametriInMatrice(ValB)
MsgBox TOTALI: A= & TotaleA & ; B= & TotaleB &
End Sub
Applicare le funzioni native di excel al foglio di lavoro mediante VBA
VBA consente di scrivere routine che interagiscono con il foglio di lavoro e di applicare le funzioni di Excel il cui
risultato venga utilizzato dal programma stesso. A questo scopo, VBA mette a disposizione l'oggeto Application, che
fornisce un altro oggeto di norme WorkSheetFunction, il quale permette di indicare la funzione di Excel desiderata
come metodo.
Sub UtitilizzaFunzioneDelFoglioDiLavoro()
Dim IntervalloCelle
Dim Totale as variant
Set IntervalloCelle = ActiveWorkBook.Worksheets(Foglio1).Range(A1:A5)
totale = Application.WorksheetFunction.Sum(IntervalloCelle)
Msg Totale
end sub
Restituire uno o pi valori
parametri dichiarati ByRef
Sub AcquisisceAutore()
Dim Cognome As string
Dim nome as string
call RestituisceAutore (nome, Cognome)
Msgbox Lisbro Scritto da & Nome & & Cognome &
end sub
Function RestituisceAutore(ByRef Nome as string, ByRef Cognome as string)
cognome = guccini
nome= Paolo
end function
utilizzo dell'istruzione Type
Type persona
cognome as string
nome as string
end type
Sub AcquisisceAutore()
Dim autore As persona
Autore= RestituisceAutore

Msgbox Lisbro Scritto da & Autore.Nome & & Autore.Cognome &


end sub
Function RestituisceAutore() as persona
restituisceAutore.cognome = guccini
RestituireAutore.nome= Paolo
end function
variabili pubbliche
Public Cognome as string
public nome as string
Sub AcquisisceAutore()
RestituisceAutore
Msgbox Libro Scritto da & Nome & & Cognome &
end sub
Function RestituisceAutore()
cognome = guccini
nome= Paolo
end function
utilizzo di pi funzioni
Sub AcquisisceAutore()
Dim Cognome As string
Dim nome as string
cognome =RestituisceAutoreCognome ()
nome= restituisceAutoreNome()
Msgbox Lisbro Scritto da & Nome & & Cognome &
end sub
Function RestituisceAutoreCognome () as string
RestituisceAutoreCognome = guccini
end function
Function RestituisceAutoreNome () as string
RestituisceAutoreNome = Paolo
end function

LE FUNZIONI NATIVE
FUNZIONI MATEMATICHE
Abs(n) restituisce il valore assoluto del numero o dell'espressione numerica.
Int(n) restituisce la parte intera del numero positivo senza arrotondamento oppure la parte intera
arrotondata per eccesso dei numeri negativi
Round(n,d) arrotonda il valore del parametro n a un numero di cifre decimali impostata
attraverso il parametro
Sgn(n) restituisce il segno matematico dell'espressione numerica che riceve come parametro
attribuito il valore 1. se il valore del parametro :
negativo Sgn() restituisce il valore -1
uguale a zero Sgn() restituisce 0
positivo Sgn() restituisce il valore +1
FUNZIONI DI CONVERSIONE
Chr(n) restituisce una stringa lunga un carattere, il cui valore dato dalla versione del codice
Ascii che la funzione riceve come parametro nel corrispondente carattere.
Val(s) provvede ad analizzare la stringa che riceve come parametro, per restituirne il valore
numerico altrimenti restituisce 0. la stringa viene analizzata da sinistra a destra fino a quando vi sno
caratteri validi, poi la funzione restituisce il valore numerico di quanto trovato.
Val(12345.6) restituisce 12345.6
Val(123A45.6) restituisce 123
Val(A123.6) restituisce 0

Cbool(Esp)
Cdate(Esp)
Cdbl(Esp)
FUNZIONI NATIVE PER DATE, ORARI E CALENDARIO
Date()
Data acquisita dall'orologio di
sistema

Date

Time()

Orario acquisito dall'orologio di Date


sistema

Now()

La data e orario acquisiti


dall'orologio di sistema

date

Year(d)

Anno relativo alla data d

Integer

Month(d)

Mese relativo alla data d

Integer

Day(d)

Giorno relativo alla data d

Integer

Weekday(d)

Giorno della settimana relativo integer


alla data d, espresso con
numero sequenzale che
definisce 1 come domenica, 2
come lunedi, cos via

Hour(t)

Orario dell'orario t

Minute(t)

Minuti dell'orario t

Second(t)

Secondi dell'orario t

FUNZIONI NATIVE PER LE STRINGE

FUNZIONI PER L'INTERAZIONE CON L'UTENTE


MsgBox chiamata a funzione.
MsgBox() vi possibilit di conoscere quale pulsante sia stato selezionato dall'utente attraverso
il valore che essa restituisce
OK
vbOK
1
Annulla

vbCancel

Termina

vbAbort

Riprova

vbRetry

Ignora

vbIgnore

Si

vbYes

No
vbNo
7
Esempio:
Sub EsempioMsgBoxConRestituzione()
dim Btn as integer
btn= MsgBox(Fai un clic su un pulsante, vbExclamation + vbYesNo)

Select Case Btn


Cas vbYes
msgbox E' stato fatto clic su Yes
Cas vbNo
msgbox E' stato fatto clic su No
end select
end sub
InputBox()
permette di aprire una finestra similmente a quanto avviene con la funzione MsgBox(), restituendo
la stringa che l'utente ha digitato all'interno della relativa casella.
CAPITOLO 8 ESECUZIONE CONDIZIONALE E CICLICA DELLE ISTRUZIONI