La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

EP 12/13 - PBLezione 31 Elementi di Programmazione Variabili, Espressioni, Operatori Tavole di verità Tipi di Dati e Conversioni Istruzioni di controllo.

Presentazioni simili


Presentazione sul tema: "EP 12/13 - PBLezione 31 Elementi di Programmazione Variabili, Espressioni, Operatori Tavole di verità Tipi di Dati e Conversioni Istruzioni di controllo."— Transcript della presentazione:

1 EP 12/13 - PBLezione 31 Elementi di Programmazione Variabili, Espressioni, Operatori Tavole di verità Tipi di Dati e Conversioni Istruzioni di controllo del flusso

2 EP 12/13 - PBLezione 32 Variabili (1) Una variabile è una zona di memoria atta a contenere dei valori Ad ogni variabile è associato un Tipo (se non dichiarato è Variant ) Le variabili si dichiarano in questo modo: Dim nomeVariabile As TipoDiDato –le variabili possono non essere dichiarate prima di essere usate

3 EP 12/13 - PB3 Variabili (2) –Inserendo lopzione Option Explicit allinizio del modulo al di fuori di tutte le routine si obbliga il programmatore a dichiarare tutte le variabili Nel seguito dichiareremo esplicitamente tutte le variabili: –Dopo ogni nome di variabile va indicato il tipo (se manca è assunto il tipo Variant ), una dichiarazione simile: Dim v1, v2 As Integer Viene interpretata da VB come –v1 di tipo Variant (si è omesso il tipo) –v2 di tipo Integer Lezione 3

4 EP 12/13 - PB4 Costanti Sono variabili cui viene assegnato un valore che non può essere modificato Le costanti si dichiarano in questo modo: Const nomeVariabile As TipoDiDato = Valore In VBA esistono anche delle costanti predefinite Lezione 3

5 EP 12/13 - PB5 Espressione Lespressione è un insieme ordinato di variabili ed operatori Ogni espressione ha –Un valore dato dal risultato della valutazione dellespressione –Un tipo determinato dal tipo delle variabili e dagli operatori La forma generale è: Risultato = Operando1 Operatore Operando2 –Loperando (o termine) può essere a sua volta una espressione Lezione 3

6 EP 12/13 - PB6 Differenza tra ASSEGNAZIONE e CONFRONTO A = B If ( A = B ) then Lezione 3

7 EP 12/13 - PB7 Operatori Gli operatori sono dei simboli che rappresentano una operazione Ogni tipo di dato possiede un insieme di operatori che si possono applicare su di esso Gli operatori possono essere –Unari: si applicano solo ad un termine (-5) –Binari: si applicano su due termini (a + 6) –Ternari: si applicano su tre termini Lezione 3

8 EP 12/13 - PB8 Operatori (in ordine precedenza) ^ elevamento a potenza - negazione (operatore ad 1 operando) * / prodotto e divisione decimale \ divisione intera (operandi decimali arrotondati) Mod resto divisione (operandi decimali arrotondati) +- addizione e sottrazione & concatenazione di stringhe = <> > >= < <= Like Is IsNot TypeOf operatori confronto Not negazione logica e bit a bit And and logico e bit a bit Or XOr or logico e bit a bit, Xor logico e bit a bit Imp implica A parità di precedenza: valutazione da sinistra a destra Operatori Booleani Lezione 3

9 EP 12/13 - PB9 Operatori: note Esistono anche altri operatori che non sono stati indicati Gli operatori booleani –su espressioni di tipo booleano si comportano come operatori logici (vedi tavole verità) –se hanno come argomento espressioni numeriche eseguono loperazioni sui singoli bit che rappresentano il numero Lezione 3

10 EP 12/13 - PB10 Tavole verità X Y NOT X X AND Y X OR Y X XOR Y X Imp Y T T F T T F T T F F F T T F F T T F T T T F F T F F F T => T: True (Vero, valore numerico -1) F: False (Falso, valore numerico 0) X Imp Y = NOT X OR Y X XOR Y = (NOT X AND Y) OR (X AND NOT Y) Lezione 3

11 EP 12/13 - PB11 Operatori booleani Bit a Bit Nelluso come operatori bit a bit il valore binario degli operandi viene confrontato bit a bit per produrre un nuovo valore in base alloperatore applicato (0 è F, -1 è T): A = B = A And B A OR B A Xor B A Imp B Si ricorda che i numeri interi sono rappresentati in complemento a 2, nel caso in esame supponendo A e B di tipo Byte, il complemento a due è a 8 bit In caso di una espressione che contenga un termine di tipo numerico ed uno di tipo booleano prevale il tipo numerico ed il valore booleano è 0 per F e -1 per T Lezione 3

12 EP 12/13 - PB12 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 unespressione in uno dei tipi di VB –In caso di impossibilità è generato un errore Lezione 3

13 EP 12/13 - PB13 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 3

14 EP 12/13 - PBLezione 314 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

15 EP 12/13 - PBLezione 315 Problemi con i tipi di dati (sol) 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

16 EP 12/13 - PBLezione 316 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

17 EP 12/13 - PBLezione 317 Istruzioni di controllo del flusso

18 EP 12/13 - PBLezione 318 Istruzioni di controllo del flusso Nei linguaggi di programmazione imperativi (come VBA, C, Pascal) lordine 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

19 EP 12/13 - PBLezione 319 Istruzioni condizionali (1) Ogni linguaggio di programmazione possiede unistruzione che permette di scegliere fra due strade in base ad una condizione Listruzione VBA è: If condizione Then istruzioni quando condizione è vera Else istruzioni quando condizione è falsa End If

20 EP 12/13 - PBLezione 320 Istruzioni condizionali (2) La seconda parte (ramo Else ) è facoltativa, non è facoltativa listruzione 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

21 EP 12/13 - PBLezione 321 Istruzioni condizionali (3) Nella forma più generale listruzione è: If condizione Then istruzioni ElseIf condizione Then istruzioni Else istruzioni End If

22 EP 12/13 - PBLezione 322 Istruzioni condizionali (4) I rami ElseIf ed Else sono facoltativi. Ci possono essere più rami ElseIf ma un sol ramo Else –Ciascun ramo può valutare una condizione diversa –Per evitare luso di molti rami ElseIf in ceri casi è preferibile usare listruzione Select Case Le istruzioni If possono essere nidificate

23 EP 12/13 - PBLezione 323 Istruzioni condizionali (5) 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 Sub

24 EP 12/13 - PBLezione 324 Istruzioni condizionali (6) Esempio complesso: determiniamo di che tipo sono le soluzioni (radici) di unequazione di secondo grado a*(X^2) + b*X + c = 0

25 EP 12/13 - PBLezione 325 Istruzioni condizionali (7) 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 dellequazione (si usa un bottone per attivare lelaborazione)

26 EP 12/13 - PBLezione 326 Istruzioni condizionali (8) 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 Sub

27 EP 12/13 - PBLezione 327 Istruzioni condizionali CASE (1) Select Case espressione Case espressioneConfronto Istruzioni CaseElse Istruzioni End Select

28 EP 12/13 - PBLezione 328 Istruzioni condizionali CASE (2) Le parti Case e CaseElse sono facoltative Ci possono essere più rami Case ma di Case Else ve ne può essere uno solo Listruzione valuta una sola volta espressione 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 listruzione 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

29 EP 12/13 - PBLezione 329 Istruzioni condizionali CASE (3) –espressioneConfronto può essere Un solo valore Più valori separati da virgola Un intervallo di valori (inizio To fine) Operatori di confronto: –IS operatoreConfronto valore »Operatori confronto: >, =,

30 EP 12/13 - PBLezione 330 Istruzioni condizionali Equivalenza espressiva (1) 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

31 EP 12/13 - PBLezione 331 Istruzioni condizionali Equivalenza espressiva (2) Lesempio con Select non rispecchia lesempio analogo fatto con listruzione 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

32 EP 12/13 - PBLezione 332 Istruzioni condizionali Equivalenza espressiva (3) 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

33 EP 12/13 - PBLezione 333 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

34 EP 12/13 - PBLezione 334 Esempio permanenze -> 2 negative permanenze -> 2 negative variazioni -> 2 positive variazioni -> 2 positive var, 1 perm -> 1 pos, 1 neg perm, 1 var -> 1 neg, 1 pos

35 EP 12/13 - PBLezione 335 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 ^ * 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 Sub


Scaricare ppt "EP 12/13 - PBLezione 31 Elementi di Programmazione Variabili, Espressioni, Operatori Tavole di verità Tipi di Dati e Conversioni Istruzioni di controllo."

Presentazioni simili


Annunci Google