Elementi di Programmazione

Slides:



Advertisements
Presentazioni simili
Lez. 12 (10/11) - PBElementi di Programmazione1 Lezione 12 Esercizi.
Advertisements

Introduzione al linguaggio C++
INFORMATICA Strutture condizionali
Introduzione al linguaggio C
Lez. 6 (10/11) - PBElementi di Programmazione1 Lezione 6 Parametri Facoltativi Matrici Matrici di parametri.
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Lez 4 (11/12)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
Lez 4 (10/11)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
EP 11/12 - PBLezione 21 Elementi di Programmazione Interazione con lutente Tipi di Dati, Variabili, Espressioni.
EP 10/11 - PBLezione 2-21 Elementi di Programmazione Tipi di Dati Conversioni Istruzioni di controllo del flusso.
EP 11/12 - PBLezione 31 Elementi di Programmazione Tipi di Dati e Conversioni Istruzioni di controllo del flusso.
Lez. 5 (10/11 - PB)Elementi di Programmazione1 Lezione 5 Procedure Funzioni Passaggio di parametri.
Lez. 5 (11/12- PB)Elementi di Programmazione1 Lezione 5 Procedure Funzioni Passaggio di parametri.
EP 12/13 - PBLezione 21 Elementi di Programmazione Interazione con lutente Tipi di Dati.
Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Elementi di Programmazione
Lez 4 (10/11)Elementi di Programmazione1 Istruzioni per il controllo del Recupero lez.4.
Algoritmi e Programmazione
EP 13/14Lezione 21 Elementi di Programmazione Interazione con lutente Tipi di Dati, Variabili, Espressioni.
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
Programmazione Procedurale in Linguaggio C++
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Algebra di Boole ed elementi di logica
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Introduzione alla programmazione ll
Introduzione alla programmazione lll
Somma = A + B start Stampa Somma Leggi A,B stop Sub SOMMA( ) Dim A, B as Integer A = InputBox("Immetti un numero") B = InputBox(Immetti un secondo numero)
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Dichiarazioni e tipi predefiniti nel linguaggio C
Il Linguaggio C.
Usare rappresentazioni di lunghezza fissa porta ad avere valori non rappresentabili: Overflow indica un errore nella rappresentazione del risultato in.
Java base I: Sintassi e tipi di dati
Programmazione in Java Claudia Raibulet
CODIFICA Da flow-chart a C++.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Programmare in Visual Basic
Lz. 3 (13/14)Elementi di Programmazione1 Istruzioni (strutture) di controllo 1.
Lez. 5 (13/14)Elementi di Programmazione1 Lezione 5 Procedure.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Rappresentazione in virgola mobile (floating-point) Permette di rappresentare numeri con ordini di grandezza molto differenti utilizzando per la rappresentazione.
Laboratorio Informatico
Rappresentazione dell'informazione 1 Se ho una rappresentazione in virgola fissa (es. su segno e 8 cifre con 3 cifre alla destra della virgola) rappresento.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – Ver. aggiornata al 20 Marzo.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Elementi di Programmazione Variabili, Espressioni, Operatori Tavole di verità Tipi di Dati e Conversioni Istruzioni di controllo del flusso EP 12/13 - PB Lezione 3

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

Variabili (2) Inserendo l’opzione Option Explicit all’inizio 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 EP 12/13 - PB Lezione 3

Const nomeVariabile As TipoDiDato = Valore 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 EP 12/13 - PB Lezione 3

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

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

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

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

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 l’operazioni sui singoli bit che rappresentano il numero EP 12/13 - PB Lezione 3

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) EP 12/13 - PB Lezione 3

Operatori booleani Bit a Bit Nell’uso come operatori bit a bit il valore binario degli operandi viene confrontato bit a bit per produrre un nuovo valore in base all’operatore applicato (0 è F , -1 è T): A = 5 00000101 B = 16 00010000 A And B 00000000 0 A OR B 00010101 21 A Xor B 00010101 21 A Imp B 11111010 -6 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 EP 12/13 - PB Lezione 3

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

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

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

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

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

Istruzioni di controllo del flusso EP 12/13 - PB Lezione 3

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

Istruzioni condizionali (1) 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 EP 12/13 - PB Lezione 3

Istruzioni condizionali (2) 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 EP 12/13 - PB Lezione 3

Istruzioni condizionali (3) Nella forma più generale l’istruzione è: If condizione Then istruzioni ElseIf condizione Then Else End If EP 12/13 - PB Lezione 3

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 l’uso di molti rami ElseIf in ceri casi è preferibile usare l’istruzione Select Case Le istruzioni If possono essere nidificate EP 12/13 - PB Lezione 3

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" Range("F3") = "Nullo" End If End Sub EP 12/13 - PB Lezione 3

Istruzioni condizionali (6) Esempio complesso: determiniamo di che tipo sono le soluzioni (radici) di un’equazione di secondo grado a*(X^2) + b*X + c = 0 EP 12/13 - PB Lezione 3

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 dell’equazione (si usa un bottone per attivare l’elaborazione) EP 12/13 - PB Lezione 3

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" Range("D5") = "coniugate complesse" End If End Sub EP 12/13 - PB Lezione 3

Istruzioni condizionali CASE (1) Select Case espressione Case espressioneConfronto Istruzioni CaseElse End Select EP 12/13 - PB Lezione 3

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 L’istruzione 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 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 EP 12/13 - PB Lezione 3

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: >, <, >=, <=, =, <> EP 12/13 - PB Lezione 3

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

Istruzioni condizionali Equivalenza espressiva (2) 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 EP 12/13 - PB Lezione 3

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

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

Esempio + + + 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 EP 12/13 - PB Lezione 3

EP 12/13 - PB Lezione 3 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 If permanenza = 2 Then Range("F5") = "2 radici negative" ElseIf permanenza = 0 Then Range("F5") = "2 radici positive" Range("F5") = "1 radice positiva ed 1 negativa" End Sub EP 12/13 - PB Lezione 3