Elementi di programmazione
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

Elementi di Programmazione PowerPoint PPT Presentation


  • 58 Views
  • Uploaded on
  • Presentation posted in: General

Elementi di Programmazione. Tipi di Dati Conversioni Istruzioni di controllo del flusso. Principali Tipi di VBA. Byte 0-255 Boolean True False Integer -32.768 ... 32.767 Long -2.147.483.648... 2.147.483.647 Single -3,403 10 38 ... -1.401 10 -324 1,401 10 -324 ... 3,403 10 38

Download Presentation

Elementi di Programmazione

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Elementi di programmazione

Elementi di Programmazione

Tipi di Dati

Conversioni

Istruzioni di controllo del flusso

Lezione 2-2


Principali tipi di vba

Principali Tipi di VBA

  • Byte0-255

  • BooleanTrue False

  • Integer-32.768 ... 32.767

  • Long-2.147.483.648... 2.147.483.647

  • Single-3,403 1038 ... -1.401 10-324

    1,401 10-324 ... 3,403 1038

  • Double-1,798 10308 ... -4,941 10-324

    4,941 10-324 ...1,798 10308

  • Currency-922.337.203.685.477,5808 ... 922.337.203.685.477,5807

  • Date01/01/100 ... 31/12/9999

  • String(sequenza ordinata di caratteri)

    • Possono essere:

      • Lunghezza variabile da0a231caratteri.

      • Lunghezza fissa da1a216caratteri.

Lezione 2-2


Tipo variant

Tipo Variant

  • quando non viene dichiarato il tipo si assume che sia Variant

    • Per dati numerici come Double

    • Per dati non numerici come String di lunghezza variabile

Lezione 2-2


Problemi con la lettura

Problemi con la lettura

  • La lettura dei dati dal foglio elettronico impone il tipo della cella

  • La lettura dei dati da InputBox restituisce un tipo String

  • Esistono delle funzioni specifiche per convertire un’espressione in uno dei tipi di VB

    • In caso di impossibilità è generato un errore

Lezione 2-2


Funzioni di conversione

Funzioni di conversione

CBool(espr)converte in Boolean

CByte(espr)converte in Byte

CDate(espr)converte in Date

CDbl(espr)converte in Double

CInt(espr)converte in Int

CLong(espr)converte in Long

CSing(espr)converte in Single

CStr(espr)converte in String

CVar(espr)converte in Variant

Lezione 2-2


Problemi con i tipi di dati

Problemi con i tipi di dati

Proviamo a leggere da inputBox un numero

  • Creiamo un bottone

  • Nel codice di gestione del click creiamo una inputBox e leggiamo un dato

  • Il dato lo convertiamo in una variabile “numero” di tipo integer

  • Scriviamo numero in una casella

Lezione 2-2


Problemi con i tipi di dati1

Problemi con i tipi di dati

Private Sub CommandButton1_Click()

Dim numero As Integer

Dim str_in As String

str_in = InputBox("Dato")

numero = CInt(str_in)

Range("E5") = numero

End Sub

Lezione 2-2


Controllo delle conversioni di tipo

Controllo delle conversioni di Tipo

  • Alcune funzioni che permettono di evitare errori di conversione

    IsNumeric(espr)

    True se espr è compatibile con un numero (decimale o intero)

    IsDate(espr)

    True se espr è compatibile con un formato data

Lezione 2-2


Istruzioni di controllo del flusso

Istruzioni di controllo del flusso

  • Nei linguaggi di programmazione imperativi (come VBA, C, Pascal) l’ordine di esecuzione è strettamente sequenziale.

  • Molto spesso questo modo di eseguire i programmi non è sufficiente per gestire tutte le necessità.

  • Esistono dei modi per variare questo ordine:

    • Istruzioni condizionali

    • Istruzioni cicliche

    • Richiamo di sottoprogrammi/funzioni

    • Esiste anche un quarto modo in disuso: istruzioni di salto

Lezione 2-2


Istruzioni di selezione

Istruzioni di selezione

  • Ogni linguaggio di programmazione possiede un’istruzione che permette di scegliere fra due strade in base ad una condizione

  • L’istruzione VBA è:

    If condizione Then

    istruzioni quando condizione è vera

    Else

    istruzioni quando condizione è falsa

    End If

Lezione 2-2


Istruzione di selezione

Istruzione di selezione

  • La seconda parte (ramo Else) è facoltativa, non è facoltativa l’istruzione End If.

  • Supponiamo di voler verificare se il valore della cella D3 è positivo scrivendo un opportuno messaggio nella cella F3:

    Private Sub CommandButton1_Click()

    If Range("D3") > 0 Then

    Range("F3") = "positivo"

    Else

    Range("F3") = "NON positivo"

    End If

    End Sub

Lezione 2-2


Istruzioni condizionali

Istruzioni condizionali

Nella forma più generale l’istruzione è:

If condizione Then

istruzioni

ElseIf condizione Then

istruzioni

Else

istruzioni

End If

Lezione 2-2


Istruzioni condizionali1

Istruzioni condizionali

  • I rami ElseIf ed Else sono facoltativi.

  • Ci possono essere più rami ElseIf ma un sol ramoElse

    • Ciascun ramo può valutare una condizione diversa

    • Per evitare l’uso di molti rami ElseIf in ceri casi è preferibile usare l’istruzione Select Case

  • Le istruzioni If possono essere nidificate

Lezione 2-2


Istruzione di selezione1

Istruzione di selezione

  • Il codice che segue viene mandato in esecuzione per stabilire il contenuto della cella D3:

    Private Sub commento()

    If Range("D3") > 0 Then

    Range("F3").Value = "POSITIVO"

    Else

    If Range("D3") < 0 Then

    Range("F3") = "NEGATIVO"

    Else

    Range("F3") = "Nullo"

    End If

    End If

    End Sub

Lezione 2-2


Istruzione di selezione2

Istruzione di selezione

Esempio complesso:

determiniamo di che tipo sono le soluzioni (radici) di un’equazione di secondo grado

a*(X^2) + b*X + c = 0

Lezione 2-2


Istruzione di selezione3

Istruzione di selezione

  • Il codice che segue presume che nelle celle A5, B5 e C5 ci siano i coefficienti di una equazione di secondo grado. Nella cella D5, in base al valore di delta, scrive il numero di radici dell’equazione (si usa un bottone per attivare l’elaborazione)

Lezione 2-2


Istruzione di selezione4

Istruzione di selezione

Private Sub Eq2Grado_Click()

Delta = Range("B5") ^ 2

Delta = Delta - 4 * Range("A5") * Range("C5")

If Delta > 0 Then

Range("D5") = "2 radici reali"

Else

If Delta = 0 Then

Range("D5") = "radici reali coincidenti"

Else

Range("D5") = "coniugate complesse"

End If

End If

End Sub

Lezione 2-2


Istruzioni condizionali2

Istruzioni condizionali

Select Case espressione

Case espressioneConfronto

Istruzioni

CaseElse

Istruzioni

End Select

Lezione 2-2


Istruzioni condizionali3

Istruzioni condizionali

  • Le parti Case e CaseElse sono facoltative

  • Ci possono essere più rami Case ma di Case Else ve ne può essere uno solo

  • L’istruzione valuta una sola voltaespressione e quindi valuta questo risultato con ogni espressioneConfronto fino a trovare la prima per la quale è vera

    • Al primo caso in cui Case è vero termina l’istruzione

      • Si comporta in modo differente dal C

    • Il ramo Case Else si utilizza per dare un risultato quando nessuna delle condizioni si è verificata

    • Può sostituire solo parzialmente If in quanto espressione è valutata solo una volta

Lezione 2-2


Istruzioni condizionali4

Istruzioni condizionali

  • espressioneConfronto può essere

    • Un solo valore

    • Più valori separati da virgola

    • Un intervallo di valori (inizioTofine)

    • Operatori di confronto:

      • ISoperatoreConfrontovalore

        • Operatori confronto: >, <, >=, <=, =, <>

Lezione 2-2


Istruzioni condizionali5

Select Case par

Case Is < 0

usoSelect = "negativo"

Case 0

usoSelect = "ZERO“

Case 1, 2, 3, 4, 5, 6, 7, 8, 9

usoSelect = " una cifra"

Case 10 To 99

usoSelect = "due cifre"

Case Else

usoSelect = "Più di due cifre"

End Select

If Not IsNumeric(par) Then

Messaggi = "non è un numero"

ElseIf par < 0 Then

Messaggi = "Negativo"

ElseIf par <= 9 Then

Messaggi = "Una Cifra"

ElseIf par < 100 Then

Messaggi = "Due cifre"

Else

Messaggi = "piu' di 2 cifre"

End If

Istruzioni condizionali

Lezione 2-2


Istruzioni condizionali6

Istruzioni condizionali

  • L’esempio con Select non rispecchia l’esempio analogo fatto con l’istruzione If

  • Il primo ramo If

    If Not IsNumeric(par) Then

    Messaggi = "non è un numero“

    • Non può essere reso con Select Case perché usa una espressione condizionale diversa da quella usata negli altri rami

      • Occorre usare un If con un Select Case in un ramo

Lezione 2-2


Istruzioni condizionali7

Istruzioni condizionali

If Not IsNumeric(par) Then

usoSelectEqv = "non è un numero"

Else

Select Case par

Case Is < 0

usoSelectEqv = "negativo"

Case 0

usoSelectEqv = "ZERO"

Case 1, 2, 3, 4, 5, 6, 7, 8, 9

usoSelectEqv = "cifra"

Case 10 To 99

usoSelectEqv = "due cifre"

Case Else

usoSelectEqv = "Più di due cifre"

End Select

End If

Lezione 2-2


Esempio

Esempio

  • Data una equazione di secondo grado stabile usando la regola dei segni di Cartesio il segno delle radici reali distinte

    • il cambiamento di segno fra due coefficienti consecutivi produce una radice positiva, la permanenza una radice negativa

      a*(X^2) + b*X + c = 0

Lezione 2-2


Esempio1

Esempio

  • + + + 2 permanenze -> 2 negative

  • - - -2 permanenze -> 2 negative

  • + - + 2 variazioni -> 2 positive

  • - + -2 variazioni -> 2 positive

  • - + + 1 var, 1 perm -> 1 pos, 1 neg

  • + + - 1 perm, 1 var -> 1 neg, 1 pos

Lezione 2-2


Elementi di programmazione

Option Explicit

Private Sub Radici_Click()

Dim a As Double, b As Double

Dim c As Double, delta As Double

Dim permanenza As Integer

a = Range("A5")

b = Range("B5")

c = Range("C5")

delta = b ^ 2 - 4 * a * c

If delta < 0 Then

Range("D5") = "coniugate complesse"

ElseIf delta = 0 Then

Range("D5") = "coincidenti"

Else

Range("D5") = "2 distinte"

'segno delle radici

permanenza = 0

If a * b > 0 Then

permanenza = permanenza + 1

End If

If b * c > 0 Then

permanenza = permanenza + 1

End If

If permanenza = 2 Then

Range("F5") = "2 radici negative"

ElseIf permanenza = 0 Then

Range("F5") = "2 radici positive"

Else

Range("F5") = "1 radice positiva ed 1 negativa"

End If

End If

End Sub

Lezione 2-2


  • Login