Sommario zCaratteristiche di un calcolatore elettronico yCapacità del calcolatore zCompiti del...
-
Upload
rosanna-martini -
Category
Documents
-
view
215 -
download
0
Transcript of Sommario zCaratteristiche di un calcolatore elettronico yCapacità del calcolatore zCompiti del...
Sommario
Caratteristiche di un calcolatore elettronico Capacità del calcolatore
Compiti del programmatore Competenze Abilità
Analisi e programmazione Linguaggi di programmazione Programmazione strutturata VBA ed Excel
Caratteristiche di un calcolatore - 1
E’ una macchina, costituita da circuiti elettronici digitali e da componenti elettromeccaniche, ottiche e magnetiche
E’ velocissimo, nel compiere le operazioni per le quali è stato progettato
E’ puntuale, nell’applicare le regole che conosce E’ duttile e si adatta bene ad eseguire nuove
tecniche, purché questo gli venga “spiegato” in modo dettagliato e non ambiguo
Ha una buona memoria, estremamente ampia ed organizzata in modo razionale
Caratteristiche di un calcolatore - 2
Non è intelligente, qualunque sia l’accezione di questo termine non è adatta a descriverne le caratteristiche
Non è in grado di compiere deduzioni, o ragionamenti di altro tipo in modo autonomo
Non è in grado di comprendere un problema Non è in grado di capire la soluzione di un
problema, né di capire se la soluzione raggiunta è quella giusta
Compiti del programmatore
Analizzare il problema, riducendolo in termini astratti, eliminando ogni componente non indispensabile e formulando un modello del problema stesso
Individuare una strategia risolutiva e ricondurla ad un algoritmo
Codificare l’algoritmo in modo tale da renderlo comprensibile al calcolatore
Analizzare il risultato dell’elaborazione evidenziando eventuali errori nella formulazione del problema, nella strategia risolutiva, nella codifica dell’algoritmo
Competenze ed abilità del programmatore
Deve essere in grado di capire i problemi e schematizzarli, distinguendone le diverse componenti (dati in input, parametri del problema, dati in output)
Deve essere in grado di risolvere problemi mediante un approccio algoritmico, individuando gli aspetti del problema che possono essere risolti reiternado più volte operazioni simili
Deve conoscere i metodi fondamentali di risoluzione dei problemi, gli approcci più comuni, le strade meno convenienti
Deve conoscere le caratteristiche del calcolatore Deve conoscere il linguaggio con il quale comunicare
Capacità del calcolatore
Sa memorizzare informazioni Sa distinguere tra informazioni di tipo numerico ed altri tipi
di informazione Sa eseguire alcune operazioni elementari: addizione,
sottrazione, prodotto e rapporto tra numeri, concatenazione di parole, ecc…
Sa eseguire il confronto fra informazioni dello stesso tipo (A < B, A=B, A>B, ecc…)
Sa leggere informazioni dall’esterno (input) e scrivere informazioni verso l’esterno (output)
Sa memorizzare sequenze di istruzioni elementari (programma) e le sa eseguire secondo un ordine stabilito nel programma stesso
Un esempio elementare
Problema: stampare i primi 10 multipli di x
Il problema è semplice e chiaro: un solo dato in input (un parametro che caratterizza l’istanza del problema) ed una costante rappresentata dal numero di multipli da stampare
La strategia risolutiva è la seguente: iniziando dal numero x letto in input, per 10 volte dovremo stampare il numero “in nostro possesso” e poi sommargli x.
Algoritmi
Un elenco di istruzioni è un algoritmo se sono soddisfatte le seguenti proprietà:
Finitezza: ogni istruzione deve essere eseguita in un tempo finito e un numero finito di volte;
Generalità: ogni algoritmo deve fornire la soluzione per i problemi appartenenti ad una determinata classe;
Non ambiguità: devono essere definiti in modo univoco tutti i passi; devono essere evitati paradossi, contraddizioni ed ambiguità.
Algoritmi e Programmi
Problema
Algoritmo
Programma
Risultati
AnalisiDiagramma a blocchi oppure Pseudo-codice
Programmazione
Linguaggio diprogrammazione
Descrizione degli Algoritmi
Uso di un linguaggio generalizzato costituito da strutture linguistiche prive di ambiguità e ridondanze;
Uso di proposizioni (espressioni) composte da due parti:
Descrizioni delle operazioni (istruzioni); Descrizione dei dati su cui eseguire le istruzioni.
Dati e Istruzioni
Istruzioni: Istruzioni operative (producono risultati se eseguite); Istruzioni di controllo (in funzione del verificarsi di condizioni
determinano l’esecuzione di alcune istruzioni piuttosto che di altre;
Istruzioni di inizio e fine; Istruzioni di I/O (trasmissione dati o messaggi fra l’ambiente
esterno e l’algoritmo).
Dati: Costanti (valore invariabile all’interno dell’algoritmo); Variabili scalari: <nome, valore> Variabili vettoriali: <nome, insieme di valori> Nota: il valore delle variabili è indeterminato all’inizio di
un algoritmo
Proposizioni e predicati
Come sono espresse le condizioni nelle istruzioni di controllo? Le istruzioni di controllo verificano se una condizione è vera o falsa. Il controllo viene espresso per mezzo di predicati.
Proposizione: Costrutto del quale si può dire se è vero o falso.
Predicato Una proposizione è un predicato se in essa appaiono delle variabili
e il valore di verità delle variabili determina il valore di verità della proposizione. I predicati si esprimono con operatori logici e relazionali. Predicati Semplici: predicati di un solo operatore (NOT) e una sola
variabile; Predicati Composti: predicati con operatori logici (AND, OR, NOT).
Tavole di Verità
Tavole di Verità: descrivono i valori di verità dei predicati in funzione dei
valori di verità delle singole parti. Esprimono le modalità con cui operano gli operatori
relazionali.
Esempi:A B A and B
0 0 0
0 1 0
1 0 0
1 1 1
A B A or B
0 0 0
0 1 1
1 0 1
1 1 1
A not A
0 1
1 0
Linguaggi di programmazione - 1
Un linguaggio di programmazione è costituito, come ogni altro tipo di linguaggio, da un alfabeto con cui viene costruito un insieme di parole chiave (il vocabolario) e da un insieme di regole sintattiche per l’uso corretto delle parole del linguaggio
I microprocessori presenti all’interno della macchina sono stati progettati per riconoscere ed eseguire un insieme piuttosto ristretto di istruzioni: il cosiddetto linguaggio macchina
Il linguaggio macchina è basato su una codifica estremamente compatta e poco intuitiva
Linguaggi di programmazione - 2
Codificare un programma utilizzando il linguaggio macchina è assai arduo e richiede una conoscenza approfondita del funzionamento di un particolare calcolatore (o meglio del micorprocessore)
Per ovviare a questo problema, che ha costituito per molti anni un grande limite alla diffusione della programmazione, sono stati sviluppati dei linguaggi di programmazione più evoluti, che si pongono a metà strada tra il nostro linguaggio naturale e il linguaggio macchina
Sono semplici e poveri (pcohe parole chiave, poche regole), ma privi di qualsiasi ambiguità
Linguaggi di programmazione - 4
La programmazione a basso livello è meno intuitiva, ma consente di sviluppare programmi particolarmente efficienti
Ad alto livello la programmazione è più “naturale” e rapida, ma è possibile che non consenta di produrre software efficiente
Programmazionea basso livello
Programmazionead alto livello
Efficienza del programma
Facilità e velocità di programmazione
Linguaggi procedurali
Il nostro studio e l’approccio che adotteremo è focalizzato sull’uso di un linguaggio procedurale
Questi linguaggi sono basati su sei istruzioni fondamentali: Assegna: assegna ad una variabile (ad una locazione di memoria)
il valore di un’espressione Leggi: legge in input dall’esterno un valore e lo memorizza in una
variabile Scrivi: scrive in output il valore di un’espressione o di una
variabile Se … allora … altrimenti…: modifica il flusso del programma
sulla base del valore di una espressione logica Vai al passo…: modifica il flusso del programma
incondizionatamente Fermati: termina l’esecuzione del programma
Programmazione strutturata - 1
I programmatori inesperti tendono ad aggrovigliare il programma introducendo numerosi salti privi di regole (spaghetti programming)
E’ stato dimostrato (teorema fondamentale della programmazione di Jacopini e Bohm) che ogni programma può essere codificato attenendosi esclusivamente a tre strutture fondamentali:Sequenziale Iterativa Condizionale
Programmazione strutturata - 2 Le tre strutture possono essere concatenate
una di seguito all’altra, oppure nidificate una dentro l’altra
Non possono in nessun caso essere “intrecciate” o “accavallate”
Corretto
Sbagliato
Microsoft Excel & VBA
Mediante VBA è possibile realizzare macro
Se è necessario effettuare ripetutamente un insieme di operazioni elementari (formattazione di celle, applicazione di funzioni, ecc…), è possibile realizzare una macro, che rappresenta in un unico oggetto l’insieme di operazioni da effettuare
Una macro può essere realizzata: Mediante autocomposizione Mediante VBA (più potente e versatile)
Ambiente di sviluppo
Excel, come del resto ogni applicazione Office, mette a disposizione un ambiente di sviluppo per VBA (attivabile con ALT+F11)
Dichiarazione di variabili
nomevariabile - deve essere espresso mediante le regole di denominazione standard delle variabili. E’ generalmente costituito da una sequenza di simboli alfanumerici
Indici (facoltativo) – utilizzato per dichiarare un array, eventualmente multidimensionale, di variabili
tipo (facoltativo) – associa un tipo alla variabile; può essere byte, boolean, integer, long, currency, single, double, date, string, variant oppure un tipo definito dall’utente
Dim nomevariabile[(indice)] [As tipo]
Tipo di dati byte
Tipo di dati utilizzato per contenere numeri interi positivo compresi nell’intervallo 0 – 255.
Le variabili di tipo byte vengono memorizzate come numeri singoli, senza segno, a 8 bit (1 byte)
Esempio di variabile byte
Sub Macro1()
Dim prima As Byte
prima=1
Range(“a1”).Select
ActiveCell.Value=prima
End Sub
Tipo di dati Boolean
Tipo di dati con solo due valori possibili True (-1) False (0)
Le variabili di tipo Boolean vengono memorizzate come numeri a 16 bit (2 byte)
Esempio di Boolean
Sub Macro1()
Dim prima As Boolean
prima=True
if prima Then
Range(“a1”).Select
ActiveCell.Value=“La variabile è vera”
End If
End Sub
Tipo di dati Integer
Tipo di dati contenente variabili memorizzate come numeri interi a 2 byte
I numeri rappresentabili appartengono all’intervallo (-32768, 32767)
Esempio di Integer
Sub Macro1()
Dim prima, seconda As Integer
prima=32
seconda=44
Range(“a1”).Select
ActiveCell.Value=prima*seconda
End Sub
Tipo di dati Long
Il tipo di dati Long è rappresentato mediante 4 byte
I numeri rappresentabili sono compresi tra – 2.147.483.648 e 2.147.483.647
Esempio di Long
Sub Macro1()
Dim lunga(3) As Long
lunga(0)=2^10
lunga(1)=2^11
lunga(2)=2^12
Range(“a10).Select
ActiveCell.Value=lunga(0)
Range(“b10).Select
ActiveCell.Value=lunga(1)
Range(“c10).Select
ActiveCell.Value=lunga(2)
End Sub
Tipo di dati Currency
Il tipo di dati Currency viene utilizzato per calcoli monetari o a virgola fissa
E’ possibile rappresentare numeri compresi nell’intervallo –922.337.203.685.477,5808 e 922.337.203.685.477,5807
Tipo di dati Single e Double
Tipi di dati utilizzato per rappresentare numeri reali
Il tipo di dati Single è rappresentato in precisione singola (32 bit), mentre il tipo di dati Double è in precisione dobbia (64 bit)
Il tipo di dati Double permette una rappresentazione più precisa dei numeri, a scapito però dell’occupazione di memoria
Esempio di Double
Sub Macro1()
Dim grande As Double
grande = 32,61^12
Range(“a1”).Select
ActiveCell.Value=grande
End Sub
Tipo di dati Date
Tipo di dati utilizzato per memorizzare date e orari come numeri reali
Le variabili di tipo Date vengono memorizzate come numeri a 64 bit
La quantità a sinistra del separatore decimale rappresenta una data, la parte a destra un orario
Esempio di Date
Sub Macro1()
Dim data1 As Date
Dim data2 As Date
data1=37956,4407283565
data2=“10/10/2002”
Range(“a1).Select
ActiveCell.Value=data1
Range(“a2).Select
ActiveCell.Value=data22
End Sub
Tipo di dati String
Tipo di dati che permette di rappresentare una sequenza di caratteri contigui. Nella sequenza di caratteri sono ammessi simboli di lettere, numeri, spazi e segni di punteggiatura
Il tipo di dati String può contenere stringhe di lunghezza compresa tra 0 e 63KB di caratteri
Esempio di String
Sub Macro1()
Dim stringa As String
stringa = “Il mio nome è Lorenzo”
Range(“a1”).Select
ActiveCell.Value=stringa
End Sub
Tipo di dati Variant
Il tipo di dati Variant permette di non definire il tipo di dato a priori
Se non si conosce il tipo di dato che dovrà essere assegnato ad una variabile, è possibile definire tale variabile di tipo Variant
Il tipo corretto verrà istanziato a tempo di esecuzione
Oggetto predefinito Range
Le macro devono poter operare su intervalli di celle
Si può far riferimento ad intervalli di celle tramite l’oggetto Range
Range (Cell1, [Cell2])
Altri oggetti predefiniti
VBA mette a disposizione del programmatore di macro Excel una considerevole quantità di oggetti predefiniti che consentono di far riferimento a tutte le componenti dell’applicazione
All’interno dell’ambiente di sviluppo è possibile visualizzare l’elenco di tutti gli oggetti predefiniti, con le relative proprietà e metodi associati, mediante il pulsante F2
Strutture di controllo in VBA
Istruzioni condizionali: If … Then … Else … End If
Iterazioni: For … To … Next Do Until … Loop While … Wend
If … Then … Else … End If
Consente l’esecuzione condizionale di un gruppo di istruzioni in base al valore di un’espressione
If condizione Then [istruzioni] [Else istruzioni]
oppure
If condizione Then
[istruzioni]
[ElseIf condizioneThen
[istruzioni]…
[Else [istruzioni]]
End If
Esempio di IfSub Macro1()
Dim data As Date
data = Now()
If data > 37980 Then
Range(" a10"). Select
ActiveCell. Value = "Natale è passato da giorni = "
Range(" a11"). Select
ActiveCell. Value = data - 37980
Else
Range(" a10"). Select
ActiveCell. Value = "A Natale mancano giorni = "
Range(" a11"). Select
ActiveCell. Value = 37980 - data
End If
Range(" A11"). Select
Selection. NumberFormat = "0.00"
End Sub
Istruzione For…Next
Ripete un gruppo di istruzioni per il numero di volte specificato
For contatore = inizio To fine [Step incremento]
[istruzioni]
[Exit For]
[istruzioni]
Next [contatore]
Esempio di For…Next
Sub Macro1()
Dim Parole, Caratteri, Stringa As String
For Parole = 10 To 1 Step -1
For Caratteri = 0 To 9
Stringa = Stringa & Caratteri
Next Caratteri
Stringa = Stringa & " "
Next Parole
Range(" a1"). Select
ActiveCell. Value = Stringa
End Sub
Istruzione Do…Loop (Repeat…Until)
Ripete un blocco di istruzioni fina a quando la valutazione di una condizione non dà come risultato TRUE
La valutazione della condizione avviene dopo che il blocco di istruzioni è stato eseguito una volta. Questo garantisce che il blocco di istruzioni venga eseguito ALMENO una volta
Do
[istruzioni]
[Exit Do]
[istruzioni]
Loop [{ While | Until} condizione]
Esempio di Repeat...Until
Sub prova()
Dim Check As Boolean, Counter As Integer
Check = True: Counter = 0
Do
Do While Counter < 20
Counter = Counter + 1
If Counter = 10 Then
Check = False
Exit Do
End If
Loop
Loop Until Check = False
End Sub
Istruzione While…Wend
Ripete un blocco di istruzioni fin quando la condizione è vera (come Do While … Loop)
While condizione
[istruzioni]
Wend
Esempio di While…Wend
Sub giorni()
oggi = Now()
Cells( 1, 1) = oggi
Cells( 1, 1). NumberFormat = "dd/ mm/ yy"
fine_ anno = 38352
data = oggi + 7
i = 1
While data < fine_ anno
i = i + 1
Cells( i, 1) = data
Cells( i, 1). NumberFormat = "dd/ mm/ yy"
data = data + 7
Wend
End Sub
Input dell’utente
Esistono dei costrutti che permettono di leggere l’input dell’utente attraverso delle finestre di dialogo che appaiono a tempo di esecuzione
I costrutti che consentono l’interazione sono
InputBox
MsgBox
InputBox
Visualizza una finestra di dialogo per l’input dell’utente.
Restituisce le informazioni immesse nella finestra di dialogo.
Tali informazioni devono essere associate ad una variabile
Esempio di InputBox
Sub Macro1()
Dim num As Integer
num=Application.InputBox(“Digita un numero”, , , , , ,1)
Range(“a1”).Select
ActiveCell.Value=“Il numero digitato è” & num
End Sub
MsgBox e pulsanti bistabili
MsgBox visualizza un messaggio in una finestra di dialogo ed attende che l’utente scelga un pulsante (generalmente OK, Annulla)
Dopo l’azione dell’utente, MsgBox restituisce un valore Integer che indica quale pulsante è stato scelto
Esempio di MsgBox
Sub Macro1()
Dim stringa As Object
Dim msg As String
msg = "Continuare?"
Response = MsgBox(msg, vbYesNo, "Dimostazione MsgBox")
If Response = vbYes Then
ActiveCell.Value = "Yes"
Else
ActiveCell.Value = "No"
End If
End Sub