Programmazione in Visual Basic.Net Parte1

“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
MODULO 3 – Programmazione in Visual Basic.Net
Parte1 - Introduzione alla programmazione in VisualBasic.Net
Definizione di linguaggio di programmazione
Esso è il linguaggio usato dal programmatore per comunicare con il computer. Il primo
linguaggio usato è stato quello binario, in seguito fu l’assembler (un misto di codice binario a
parole utente come: add (per fare la somma), molt (per fare le moltiplicazioni)), ecc. Negli anni
sono nati molti linguaggi di programmazione sempre più vicini al modo di pensare del
programmatore.
Esempi di linguaggi di programmazione inventati dal programmatore negli anni
- ForTran (Formula Translation) nato nel 1954 per scopi scientifici e per calcoli matematici
- COBOL (Common Business Oriented Language) nato nel 1960 per scopi commerciali
- PASCAL nato nel 1971 ad opera di N. Wirth progettato come linguaggio per l’insegnamento nelle
scuole della programmazione strutturata (ancora in uso in qualche ITIS)
- BASIC (Beginner’s All Purpose Symbolic Instruction Code) nato nel 1980 per avere un
linguaggio che fosse molto semplice da imparare anche per i principianti
- Visual Basic nato alle fine degli anni 90 e poi il Visual Basic . Net nato nel 2003. Entrambi
usano il lessico (parole chiavi) base del linguaggio Basic, ma con l’aggiunta di molte altre funzioni
e procedure di libreria.
Definizione di algoritmo.
Un algoritmo è una sequenza ordinata di azioni o istruzioni che permettono di risolvere tutti i
problemi di una certa classe (natura) nel modo più efficiente possibile (cioè col minor numero di
istruzioni). Le istruzioni dell’algoritmo, inoltre, devono soddisfare ai seguenti requisiti:
1. elementari, cioè non ulteriormente scomponibili
2. in numero finito, nel senso che l’algoritmo deve avere un punto di inizio e un punto di fine
3. non ambigue, cioè che non lascino dubbi di interpretazione alla CPU che dovrà eseguirle.
4. deterministiche, cioè devono garantire che i risultati ottenuti siano sempre gli stessi a
prescindere dalla CPU che le esegue. Ad esempio: l’istruzione “moltiplica 3 per 4” produce sempre
il medesimo risultato, anche se è eseguita su CPU diverse.
Problema1. Trovare l’algoritmo che calcola l’area del triangolo
1. inizio
2. dammi valore della base
3. dammi valore della altezza
4. calcola il prodotto: base per l’altezza
5. dividi il prodotto per due ed otterrai il valore dell’area del triangolo
6. stampa a video l’area calcolata
7. fine
Variabili e Costanti
In tutti i linguaggi di programmazione il programmatore ha necessità di memorizzare
temporaneamente alcuni valori del programma. Tali valori sono memorizzati nelle celle della RAM.
La variabile è una celletta della RAM in cui è possibile memorizzare temporaneamente i
valori che variano nel tempo.
N
nome
celletta
Inoltre, la variabile è individuata da:
1
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
- un nome scelto a piacere dal programmatore composto da lettere e numeri ma che non deve
mai iniziare con un numero come ad es: numero, a1, a2, somma, media, nome, ecc.
- un valore modificabile nel tempo, a seconda che si verifichino o meno condizioni, eventi, ecc. da
qui il nome variabile, che può essere: un numero intero positivo o negativo, un numero con la
virgola, un carattere, una parola, un valore booleano vero e falso, ecc.
- un tipo, cioè l’insieme dei valori che essa può assumere
I tipi di variabili che useremo in Visual Basic. Net
- tipo intero (in VB integer) è l’insieme dei numeri naturali negativi e positivi, come ad
esempio: -100.-5, 0, 5, 100 ecc.
- tipo decimale (in VB decimal) è l’insieme dei numeri positivi e negativi con e senza
virgola, come ad esempio: -123.5, -1, 0, 5, 1234,7
- tipo booelano (in VB boolean) è l’insieme dei valori true o false, come ad esempio:
maggiorenne, sposato, patentato, ecc.
- tipo stringa (in VB string) è l’insieme dei caratteri e delle parole, come ad esempio:
a,b,c,d,e,f,…..z, casa, cena, scuola, ecc.
Esempio1 - variabile intera
celletta
6
A
nome
In tal caso A è il nome scelto per la variabile, 6 è il suo valore in un certo istante e il suo tipo è
quello intero.
Esempio2 - variabile decimale
celletta
MEDIA
nome
6,5
In tal caso MEDIA è il nome scelto per la variabile, 6,5 è il suo valore e il suo tipo è quello
decimale
Esempio3 - variabile stringa
COLORE
celletta
nome
nero
In tal caso COLORE è il nome scelto per la variabile, nero è il suo valore e il suo tipo è quello
stringa
MAGGIORENNE
Esempio4 – variabile booleana
celletta
nome
vero
In tal caso MAGGIORENNE è il nome scelto per la variabile, vero è il suo valore e il suo tipo
è quello booleana
Dichiarazione in VisulBasic.Net delle variabili.
Essa consiste nell’anteporre la parola chiave “DIM” al nome della variabile e postporre la
parola chiave “AS” e il suo tipo corrispondente al nome della variabile, come mostra l’esempio
seguente:
' DICHIARAZIONI VARIABILI
Dim A As Integer
Dim Media As Decimal
2
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Dim Colore As String
Dim Maggiorenne As Boolean
La costante è una celletta della RAM in cui è possibile memorizzare temporaneamente i valori
che non variano nel tempo, cioè che sono costanti.
PIGRECO
celletta
nome
3,14
In tal caso PIGRECO è il nome scelto per la costante, invece 3,14 è il suo valore. Si dice che la
costante PIGRECO è di tipo “decimale”, poiché contiene un numero con la virgola
Dichiarazione in VisulBasic.Net delle costanti
Essa consiste nell’anteporre al nome della variabile la parola chiave CONST e postporre al nome
della costante il suo valore, come mostra l’esempio seguente:
' DICHIARAZIONI COSTANTI
CONST Pigreco=3.14
CONST Maggiorenne=”SI”
L’istruzione di assegnazione delle variabili
Essa permette di attribuire ad una variabile un valore
Esempi di assegnazioni con costanti e variabili:
- raggio = 3,14
- voto = 7
- targa = “dx112ed”
- sposato = true
- conta = conta +1
L’operazione di concatenazione tra variabili di tipo stringa
Date 2 variabili a e b di tipo string, l’operazione a+b si chiama di concatenazione. Ad esempio:
- se a=”il mio pc” e b =” è da formattare” Æ a+b =”il mio pc è da formattare”
- se a=”12” e b=”255” Æ a+b=”12255” e si legge la stringa “122555” o 122555 in formato testo
L’operazione di concatenazione tra una variabile di tipo stringa e una variabile di tipo intera
Essa si ottiene usando l’operatore & (è commerciale). Ad es. supponiamo di dover calcolare la
soluzione x, dell’equazione 2x-2=0. Allora la soluzione è x=1 ma vogliamo che appaia insieme al
valore 1, un messaggio esplicativo, del tipo: “la soluzione è =”, cioè vogliamo concatenare un
valore intero 1 con un valore string “la soluzione è” Æ l’operazione di concatenazione si realizza
cosi: “la soluzione è =” & x. Essa produce il messaggio: ”la soluzione è =1”. Essa sarà usata nella
funzione MsgBox( ).
La funzione MsgBox
Essa si usa per consentire l’output attraverso l’uso di finestre: di avviso, di errore, di
informazione, ecc. e l’output di valori numerici generati dal programma. . Essa ha tre parametri
separati dalla virgola: il 1) obbligatorio e il 2) e il 3) facoltativo. La sintassi della funzione MsgBox
è la seguente:
MsgBox(“messaggio utente nel prompt (zona grigia)”, numero, “testo nel title (barra blu)”)
3
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Essa ha come 1) e 3) parametro gli stessi della funzione InputBox. La differenza è solo il 2)
parametro che serve a specificare, con un numero il tipo di icona da utilizzare.
CODICE VBASIC
MsgBox("Δ<0 soluzioni non
reali", 16, "Avviso")
CODICE VBASIC
MsgBox("Δ<0 soluzioni non
reali", 64, "Avviso")
x= - 0,5
MsgBox(“ La soluzione
è x = " & x)
CODICE VB
x= - 0,5
MsgBox(x)
La funzione InputBox
Essa si usa per consentire l’input di un valore da tastiera che sarà confermato o meno
attraverso i pulsanti: ok o annulla
Esempi: inserendo entrambi i parametri 1) e 2) nella funzione InputBox()
(fig.a)
Codice VB
InputBox("QUALE'
IL
TUO
PIATTO
PREFERITO?", "ELENCO DEI PIATTI")
(fig. b)
Codice VB
InputBox("DAMMI UN NUMERO DA 1 A 7",
"SCELTA DI UN NUMERO CASUALE")
I valori inseriti nel rigo bianco: “SPAGHETTI ALLA PESCATORA” (fig.1) e “7” (fig.2) saranno
interpretati come testo, quindi la variabile che li conterrà dovrà essere di tipo string. Ad es.:
StringaNome=InputBox(“inserisci messaggio utente nel prompt”,”inserisci nome title”)
Se si vuole una variabile numero tipo intero si utilizzerà la funzione Val nel seguente modo:
numero=Val (InputBox(“inserisci messaggio utente nel prompt”,”inserisci nome title”))
La funzione Val
La stringa ‘12255’ è possibile convertirla in numero 12255 utilizzando la funzione del VBasic.Net
che si chiama Val. Essa dato un numero in formato testo, lo trasforma un numero in formato
numero. Ad es. data la stringa ’12255’ Æ Val (‘12255’) = 12255 ovvero un numero, cioè 12255.
La funzione Cstr (funzione inversa di Val)
Il numero 12255 è possibile convertirlo in stringa ‘12255’ utilizzando la funzione del VBasic.Net
che si chiama Cstr. Essa dato un numero in formato testo, lo trasforma un numero in formato
numero. Ad es. data il valore in formato numero 12255 Æ Cstr (12255) = ‘12255’ è la stringa
‘12255’.
4
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Cosa serve per realizzare un programma in VB.net?
Bisogna eseguire nell’ordine i seguenti passi:
1) Dato un problema, disegnare la tabella delle variabili e delle costanti
2) Individuare l’algoritmo risolutivo per passi (detto anche pseudo codifica)
3) Individuare il diagramma a blocchi (detto anche flowchart)
4) Creare il form Visualbasic. Net, inserendo i controlli e le loro proprietà
5) Codificare l’evento click dei pulsanti di calcolo (button) inseriti nel Form
L’interfaccia di Visual Basic.Net 2008
Che cosa è un form di Visual Basic.Net?
Il form è l’interfaccia grafica piccola e centrale sulla quale il programmatore inserisce degli
elementi grafici, detti controlli o strumenti, come ad es. i pulsanti (in VB button), le etichette
(in VB label), le caselle di testo (in VB textbox), ecc.
Che cosa è un controllo (o strumento) di VisualBasic.Net?
Un controllo (o strumento) è un elemento grafico che si trova in una finestra di VB detta
“casella degli strumenti”. Essa è la seguente:
A che serve il controllo (o strumento) etichetta (o label in VB)?
Essa si usa per descrivere ciò che avviene nel form. Per distinguere una etichetta da un altro
controllo si usa il nome sintetico: “lbl”. Esempi: lblTitolo, lblSomma, ecc
A che serve il controllo (o strumento) casella di testo (o textbox inVB)?
Esso si usa per inserire i valori di input e per far uscire a video i valori di output. Per
distinguere una casella di testo da un altro controllo si usa il nome sintetico: “txt”. Esempi sono:
txtNum1, txtNum2, ecc
5
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Esempio. Data la casella di testo txtNumero allora:
- la scrittura txtNumero.Name dice che .Name è la proprietà nome della casella di testo
- la scrittura txtNumero.Text dice che .Text è la proprietà testo della casella di testo
- la scrittura txtNumero.font dice che .font è la proprietà font della casella di testo
- la scrittura txtNumero.backcolor dice che .backcolor è la proprietà colore di sfondo
La casella di testo “vede” tutto quello che riceve, sia testo che numeri, come testo. Pertanto se
inseriamo un numero in una casella di testo e vogliamo effettuare dei calcoli su di esso bisogna
convertirlo da formato testo a formato numero.
A che serve la funzione VAL usata nelle caselle di testo?
Essa serve a convertire, come già suddetto, un numero da formato testo a formato numero.
Ad es. sia txtNumero una casella di testo e supponiamo che l’utente inserisca in essa il numero in
formato testo “5”, abbiamo quindi che:
- txtNumero.Text = “5” (si legge 5 in formato testo) mentre
- Val (txtNumero.Text) = 5 (si legge 5 in formato numerico).
A che serve il controllo (o strumento) pulsante (o button in VB)
Esso serve ad eseguire le seguenti operazioni: a) i calcoli principali del programma, b) uscire
dal programma, c) azzerare ai valori iniziali le variabili. Per distinguere il pulsante da un altro
controllo si usa il nome sintetico: “btn”. Esempi sono: btnCalcola, btnEsci, ecc
A che serve il controllo (o strumento) elenco a discesa (o combobox in VB)
Esso è un elenco a discesa di elementi. Esso si usa per inserire un valore di input, da un elenco
di valori predefiniti. Per distinguere una combobox da un altro controllo si usa il nome sintetico:
“cmb”. Esempi sono: cmbTemperatute, cmbQuantità, ecc
Che cosa sono le proprietà dei controlli (o strumenti)?
Sono delle caratteristiche che servono a caratterizzare in modo molto semplice e rapido
l’aspetto grafico dei controlli. Esse si trovano nella finestra proprietà sul lato destro
dell’interfaccia di VB.Net.
(fig. a)
(fig.b)
Definizione di oggetto
Un oggetto è un qualsiasi form, controllo o libreria del linguaggio. Più semplicemente gli
oggetti (form, controlli e libreria1) sono i i “mattoni” che servono per costruire una interfaccia
grafica di VB in analogia ai mattoni usati nell’edilizia per costruire una casa.
Definizione di proprietà degli oggetti
1
Un es.di oggetto di libreria è math, di cui più avanti si utilizzerà il metodo math.sqrt( )
6
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Una proprietà è una caratteristica di un oggetto come: il nome, il colore. la dimensione, la
posizione, il testo che appare in esso, ecc. Ogni oggetto possiede delle proprietà e ogni volta che
ci riferiamo alle proprietà di un oggetto scriviamo: nomeoggetto.proprietà, come ad es.
lbl1.text Å proprietà testo dell’oggetto label, di nome lbl1
Definizione di evento di un oggetto
L’evento è l’ azione provocata dall’utente sui form e controlli. Tale azione viene programmata
in VB dal programmatore e in tal caso si parla di programmazione ad eventi.
Un esempio classico di evento è il Click, cioè quando l’utente premerà su un pulsante farà
verificare l’evento click. Esempi di eventi sono: click (usato per: label, button, textbox, ecc);
SelectedIndexChange (usato per combo box, ecc), keydown, keypress, enter, apertura del form,
ecc. La figura mostra i possibili eventi che si possono programmare per l’evento button (Vedi
figura)
Visualizzare la finestra delle proprietà di un controllo, di un form ecc. in VB
Per visualizzare la finestra delle proprietà è sufficiente:
1) selezionarlo e premere il tasto F4
2) selezionarlo e poi scegliere la voce Finestra proprietà, dal menù Visualizza
Selezionata la proprietà, VB visualizza in basso alla finestra proprietà una breve spiegazione
del significato della proprietà selezionata
Le proprietà principali dei controlli: etichetta, casella di testo, pulsante, elenco a discesa sono:
- nome (o name in VB) che stabilisce il nome del controllo da usare nel codice visualbasic
- testo (o Text in VB) che stabilisce il contenuto testuale da visualizzare nel form
- font che stabilisce il tipo di carattere da utilizzare (times new roman, arial, ecc)
- colore di sfondo (o backcolor in VB) che stabilisce il colore del controllo
- items che individua gli elementi (in inglese items) da visualizzare nella combobox.
- selecteditem che individua l’elemento selezionato della combo box (si trova nella finestra delle
proprietà, gruppo DataBindings, come mostra la figura seguente:)
Inserire gli elementi nella Combobox, dal menù contestuale del mouse Æ Modifica elementi
7
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Definizione di metodo di un oggetto
Esso è un sottoprogramma predefinito del linguaggio VB già scritto e disponibile per il
programmatore associato ad un particolare oggetto. Per riferirsi ad esso scriviamo:
nomeoggetto.metodo( ).2
Esempi di metodi di oggetti:
- math.sqrt( ) si legge metodo sqrt( ) dell’oggetto della libreria matematica math. Esso
permette di calcolare la radice quadrata di un numero. Esempio math.sqrt(4) effettua la radice
quadrata di 4.
- cmb1.items.add( ) si legge metodo add( ) dell’oggetto combobox cmb1. Esso aggiunge un item
(cioè un elemento) alla combobox cmb1. Es.1 cmb1.items.add(“napoli”), aggiunge l’elemento
napoli alla combobox cmb1. Es.2 cmb3.items.add(txt1.text), aggiunge l’elemento che si trova
nella casella di testo txt1 all’elenco a discesa cmb3
- cmb2.items.remove( ) si legge metodo remove( ) dell’oggetto combobox cmb2. Esso rimuove
un item (cioè un elemento) dalla combobox cmb2. Esempio cmb1.items.remove(“caserta”)
rimuove l’elemento caserta alla combobox cmb2
Un programma VBasic.Net
Esso è una sequenza finita di istruzioni generate in parte in modo automatico dal linguaggio
ed un’altra parte in modo manuale dal programmatore. La parte del programmatore è
riservata soprattutto alla programmazione dei pulsanti di comando. Il codice di ogni pulsante
deve essere inserito tra i comandi, generate da VBasic, “Private Sub” ed “End Sub”
Esempio1 – Calcolo del form relativo all’algoritmo del calcolo dell’area del rettangolo.
Tabelle delle variabili di input e output
Nome
Descrizione
Tipo
b
Base del rettangolo
Numerico intera
h
Altezza del rettangolo Numerico intera
a
Area del rettangolo
Numerica intera
Input
X
X
Output
Lavoro
X
Algoritmo
1. Inizio
2. Dammi il valore della base b
3. Dammi il valore della altezza h
4. Calcola il prodotto A = b x h
5. Stampa a video la sua area A
6. Fine
2
Da non confondersi al modo con cui ci si riferisce ad una proprietà di un oggetto: nomoggetto.proprietà
8
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Il codice da inserire dietro al pulsante “Calcola” del Form precedente è il seguente:
Private Sub BtnCalcola_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnCalcola.Click
' DICHIARAZIONI VARIABILI
Dim base, altezza As Integer
Dim area As Decimal
' txtBase E’ LA CASELLA DI TESTO USATA NEL FORM PER CONTENERE IL VALORE
DI BASE SCELTO DALL’UTENTE. MA LA CASELLA DI TESTO TRASFORMA TUTTO
QUELLO CHE RICEVE IN TESTO . PER CONVERTIRE QUELLO CHE RICEVE DA TESTO
A NUMERO SI USA LA FUNZIONA VAL PER LA VARIABILE BASE e PER l’ ALTEZZA
base = Val(txtBase.Text)
altezza = Val(txtAltezza.Text)
' CALCOLO DELL’AREA DEL RETTANGOLO
area = base * altezza
End Sub
' ASSEGNAZIONE DELL’AREA CALCOLATA ALLA CASELLA DI TESTO txtArea
txtArea.Text = area
Problema4: Dati due numeri A e B, calcolarne la somma.
Per la realizzazione di questo programma in VB.net seguiamo i suddetti 5 passi:
1) la tabella delle variabili di input, di output e di lavoro è la seguente:
Tabelle delle variabili di input, output e di lavoro
Nome
Descrizione
Tipo
A
Primo numero
Numero intero
B
Secondo numero
Numero intero
Som
Somma dei 2 numeri
Numero intero
Input
X
X
Output
Lavoro
X
9
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
2) Individuazione dell’algoritmo per passi
3) individuazione del diagramma a blocchi
Algoritmo col diagramma a blocchi
Algoritmo per passi
1. inizio
2. dammi il valore del primo numero A
3. dammi il valore del secondo numero B
4. somma i due numeri A e B
5. assegna la somma del punto 4 a som
6. visualizza a video la somma Som
5. fine
Inizio
A, B
Som=A+B
Som
Fine
4) Creazione del form Visualbasic.Net, inserendo gli oggetti: label, textbox e botton, ecc. e
definendo le loro proprietà
5) Codifica del corpo dei pulsanti di calcolo (button) inseriti nel Form
Qui nel form c’è un solo pulsante che effettua un calcolo e si chiama “+”. Pertanto procederemo
a scrivere il codice visualbasic.net sono per tale pulsante. Esso è il seguente:
CODIFICA PULSANTE “+”
' DICHIARAZIONE DELLE VARIABILI
Dim A, B, Som As Integer
' INPUT DEL VALORE DI A E DEL VALORE DI B
A=Val(txtA.Text)
B=Val(txtB.Text)
' SOMMA A+B
Som=A+B
Å txtA è il nome della casella di testo creata per A,
mentre .Txt è la proprietà testo delle caselle txtA.Text
e txtB.Text
' STAMPA SOMMA
txtSom.Text=som
10
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Problema5: Dati un numero A, calcolare il suo quadrato QA e doppio DA e li stampi a video
1) Tabelle delle variabili di input e output
Nome
Descrizione
A
Primo numero
QA
Quadrato di A
DA
Doppio di A
2) Algoritmo per passi
1. inizio
2. dammi il valore del primo numero A
3. calcola il suo quadrato, AQ=A*A
4. calcola il suo doppio, DA=2*A
5. visualizza AQ e DA
6. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero intero
Input
X
Output
Lavoro
X
X
3) Algoritmo col diagramma a blocchi
5)
CODIFICA PULSANTE “Calcola”
' DICHIARAZIONE DELLE VARIABILI
DIM a, qa, da, As Integer
' INPUT DEL VALORE DI A
a = Val (txtA.Text)
' CALCOLO DEL QUADRATO DI A
qa = a*a
' CALCOLO DEL DOPPIO DI A
da = a+a
' STAMPA A VIDEO DI QA E DA
txtQa.Text = qa
txtDa.Text = da
Problema6: Date le basi maggiori e minori e l’altezza di un trapezio, calcolare l’area.
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
B1
Base maggiore
Numero intero
b2
base minore
Numero intero
H
Altezza
Numero intero
SOM
Somma (B1+b2)
Numero intero
P
Prodotto SOM*H
Numero intero
Area
Area del trapezio P/2
Numero decimale
Input
X
X
X
Output
Lavoro
X
X
X
Esercizio
Ricavare dal problema6 suddetto e dalla tabella delle variabili: l’algoritmo, il diagramma a
blocchi, il form e il codice vbasic del pulsante calcola
11
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
2-PARTE: Definizione di struttura di sequenza o sequenziale
In un algoritmo si parla di struttura di sequenza quando le istruzioni elementari
dell’algoritmo sono una di seguito all’altra come mostra la figura:
Problema8: Scrivere un algoritmo che dati tre voti interi A, B e C letti in input, calcoli la
media aritmetica e la stampi in output
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
A
1° voto
Numero intero
B
2° voto
Numero intero
C
3° voto
Numero intero
SOM
Somma dei tre voti
Numero intero
MED Media dei tre voti
Numero decimale
2) Algoritmo per passi
1. Inizio
2. Dammi il primo voto A
3. Dammi il secondo voto B
4. Dammi il terzo voto C
5. Somma i tre voti A, B e C
6. Calcola la media dei tre voti
7. Fine
Input
X
X
X
Output
Lavoro
X
X
3) Algoritmo col diagramma a blocchi
Inizio
A,B,C
SOM =A+B+C
Media =SOM / 3
Media
Fine
4) Creazione del form Visualbasic. Net
5) CODIFICA PULSANTE “Calcola”
' DICHIARAZIONE DELLE VARIABILI
12
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
C
Dim A, B, C, SOM As Integer
Dim media As Decimal
' INPUT DEI VALORI DI A, B e
A = Val (txtA.Text)
B = Val (txtB.Text)
C = Val (txtC.Text)
' CALCOLO DELLA MEDIA
SOM = A + B + C
media = SOM / 3
' STAMPA DELLA MEDIA A VIDEO
txtMedia.Text = media
Problema9: Scrivere un algoritmo che dati due numeri X e Y, effettui lo scambio dei valori e
stampi a video i nuovi valori assunti da esse, utilizzando una variabile di appoggio.
X
Y
Capiamo il problema: sia x=10 e y=20
1) modo: sposto prima il contenuto di y in x, allora faccio x=y, quindi x sarà = 20, ma anche y = 20
2) modo: sposto prima il contenuto di x in y, allora faccio y=x, quindi y sarà = 10, ma anche x = 10
Bene in entrambi i modi ho ottenuto due valori uguali di x e di y e non è quello che volevo. Cosa
devo fare? Prima di effettuare lo scambio, occorre conservare il valore di x o di y all’interno di
un’altra variabile, detta temporanea, TEMP.
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
X
Primo valore
Numero intero
Y
Secondo valore
Numero intero
TEMP Variabile temporanea di appoggio
Numero intero
2) Algoritmo per passi
Input
X
X
Output
X
X
Lavoro
X
3) Algoritmo col diagramma a blocchi
1. Inizio
2. Dammi i valori di X e Y
3. Assegna a TEMP il valore di X
4. Assegna ad X il valore di Y
5. Assegna ad Y il valore di TEMP
6. Stampa X e Y
8. Fine
13
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4) Creazione del form Visualbasic. Net
5) CODIFICA PULSANTE “Calcola”
' DICHIARAZIONE DELLE VARIABILI
Dim x, y, temp As Integer
' INPUT DEI VALORI DI X E Y
x = Val(txtX.Text)
y = Val(txtY.Text)
'SCAMBIO DEI VALORI DELLE X E Y
temp = x 'CONSERVO IN TEMP, X
x = y
y = temp
' STAMPA DEI NUOVI VALORI DI X E Y
txtX.Text = x
txtY.Text = y
Problema10: Scrivere un algoritmo che dati in input quattro valori interi A, B, C e D, ruoti il
loro valore di uno step indietro in senso antiorario e scriva in output il loro valore modificato.
prima
rotazione di uno step in senso
orario
dopo
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
A
Primo valore
Numero intero
B
Secondo valore
Numero intero
C
Terzo valore
Numero intero
D
Quarto Valore
Numero intero
TEMP Variabile temporanea di appoggio
Numero intero
2) Algoritmo per passi
Input
X
X
X
X
Output
X
X
X
X
Lavoro
X
3) Algoritmo col diagramma a blocchi
1. Inizio
2. Dammi i valori di A,B,C,D
3. Assegna a TEMP il valore di A
4. Assegna ad A il valore di D
5. Assegna ad D il valore di C
6. Assegna ad C il valore di B
7. Assegna ad B il valore di TEMP
8. Stampa i nuovi valori di A,B,C,D
9. Fine
14
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4) Creazione del form Visualbasic. Net
5) CODIFICA PULSANTE “Calcola”
' DICHIARAZIONE DELLE VARIABILI
Dim A, B, C, D, TEMP As Integer
' INPUT DEI VALORI DI A,B,C,D
A = Val (txtA.text)
B = Val (txtB.Text)
C = Val (txtC.Text)
D = Val (txtD.Text)
' SCAMBIO DEL VALORE TRA A,B,C,D
TEMP = A
A = D
D = C
C = B
B = TEMP
' OUTPUT DEI VALORI A,B,C,D MODIFICATI
txtA.Text = A
txtB.Text = B
txtC.Text = C
txtD.Text = D
Problema11: Trovare l’algoritmo che calcoli la tabellina di un numero da 1 a 1000 e stampi la
tabellina scelta a video
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
Input
NUM
Numero da 1 a 1000 di cui si Numero intero
X
vuole conoscere la tabellina
R1
1° risultato della tabellina
Numero intero
R2
2° risultato della tabellina
“”
R3
3° risultato della tabellina
“”
R4
4° risultato della tabellina
“”
R5
5° risultato della tabellina
“”
R6
6° risultato della tabellina
“”
R7
7° risultato della tabellina
“”
R8
8° risultato della tabellina
“”
R9
9° risultato della tabellina
“”
R10
10° risultato della tabellina
“”
2) Algoritmo per passi
1. Inizio
2. Dammi il numero, NUM
3. Assegna a R1 il valore NUM*1
4. Assegna a R2 il valore NUM*2
5. Assegna a R3 il valore NUM*3
6. Assegna a R4 il valore NUM*4
7. Assegna a R5 il valore NUM*5
8. Assegna a R6 il valore NUM*6
9. Assegna a R7 il valore NUM*7
10. Assegna a R8 il valore NUM*8
Output
Lavoro
X
X
X
X
X
X
X
X
X
X
11. Assegna a R9 il valore NUM*9
12. Assegna a R10 il valore NUM*10
13. Stampa a video in label R1,R2,R3,R4,R5
14. Stampa a video in label R6,R7,R8,R9,R10
15. fine
15
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Inizio
NUM
R1=NUM*1
R2=NUM*2
R3=NUM*3
R4=NUM*4
R5=NUM*5
R6=NUM*6
R7=NUM*7
R8=NUM*8
R9=NUM*9
R10=NUM*10
R1..R10
Fine
CODIFICA PULSANTE CALCOLA
Dim numero As Integer
num=Val(txtNumero.Text)
‘ Calcolo
R1 = num*1
R2 = num*2
R3 = num*3
R4 = num*4
R5 = num*5
R6 = num*6
R7 = num*7
R8 = num*8
R9 = num*9
R10 = num*10
‘ Stampa video
lbl1.Text=R1
lbl2.Text=R2
lbl3.Text=R3
lbl4.Text=R4
lbl5.Text=R5
lbl6.Text=R6
lbl7.Text=R7
lbl8.Text=R8
lbl9.Text=R9
lbl10.Text=R10
Problem12: Trovare l’algoritmo che calcoli una tabella di conversione da euro a 8 valute e
stampi le conversioni a video.
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
Euro
Valuta in Euro
Numero decimale
Lira
Valuta in Lire
“”
Franco
Valuta in Franco
“”
DollaroUsa Valuta in dollaro Americano
“”
DollaroAustr Valuta in dollaro Austrialano
“”
Scellino
Valuta in scellino Austriaco
“”
Yen
Valuta in yen Giapponese
“”
Corona
Valuta in corona Ceka
“”
Sterlina
Valuta in sterlina Inglese
“”
2) Algoritmo per passi
1. Inizio
2. leggi la valuta euro
3. assegna a Lira, euro* 1936.27
4. assegna a Franco, euro* 1.33973
5. assegna a DollaroUsa, euro* 1.35264
6. assegna a DollaroAustr, euro* 1.3782
7. assegna a Scellino, euro* 13.7603
Input
X
Output
Lavoro
X
X
X
X
X
X
X
X
8. assegna a Yen, euro* 112.66
9. assegna a Corona, euro* 24.6874
10. assegna a Sterlina, euro* 0.85044
11. stampa a video Lira, Franco, DollaUsa
12. stampa a video DollaroAustr, Scellino
13. stampa a video Yen, Corona, Sterlina
14. fine
16
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Inizio
Euro
Lira = Euro*1936.27
Franco = Euro* 1.33973
DollaroUsa = Euro*1.35264
DollaroAustr = Euro*1.3782
Scellino = Euro*13.7603
Yen = Euro*112.66
Corona = Euro*24.6874
Sterlina = Euro*0.85044
stampa
Fine
CODIFICA PULSANTE CONVERTI
Dim lira, franco, dollarousa, dollaroa, scellino, yen, corona, sterlina As
Decimal
'calcolo
euro= Val (txtEuro.Text)
Lira= euro * 1936.27
Franco = euro * 1.33973
DollaroUsa = euro * 1.352
DollaroAustr = euro * 1.3782
Scellino = euro * 13.7603
Yen = euro * 112.66
Corona = euro * 24.6874
Sterlina = euro * 0.85044
'stampa a video
Label1.Text = lira
Label2.Text = franco
Label3.Text = dollarousa
Label4.Text = dollaroa
Label5.Text = scellino
Label6.Text = yen
Label17.Text = corona
Label18.Text = sterlina
Problema13: Trovare un algoritmo che esegua una calcolatrice banale che effettui la somma
di 2 numeri e la stampi a video.
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
NUMERO1
Primo Numero
Numero intero
NUMERO2
Secondo Numero
Numero intero
SOMMA
Somma dei 2 numeri
Numero intero
Algoritmo per passi
Input
X
X
Output
Lavoro
X
Creazione del form Visualbasic. Net
1. Inizio
2. Dammi il primo numero NUMERO1
3. Dammi il secondo numero NUMERO2
4. Somma i due numeri
5. Stampa a video la somma
Suggerimenti grafici. I controlli grafici che il form VB deve avere sono:
a) una textbox, rinominata txtDisplay, per riprodurre il display della calcolatrice
b) 10 button per riprodurre i 10 pulsanti relativi alle 10 cifre (1,2,3,4,5,6,7,8,9 e 0)
c) 1 button per l’operatore di somma e 1 button per l’operatore di uguale.
17
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
In totale dobbiamo programmare 12 pulsanti. Data la complessità, dividiamo il problema in
sottoproblemi a), b) e c)
a) Tutte le cifre del 1 addendo da visualizzare sul display dovranno apparire una di seguito all’altra.
Ciò si ottiene programmando i 10 pulsanti. Più precisamente, scriveremo:
1) pulsante: txtDisplay.text= txtDisplay.text+”1” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 1)
2) pulsante: txtDisplay.text= txtDisplay.text+”2” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 2)
3) pulsante: txtDisplay.text= txtDisplay.text+”3” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 3)
4) pulsante: txtDisplay.text= txtDisplay.text+”4” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 4)
5) pulsante: txtDisplay.text= txtDisplay.text+”5” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 5)
6) pulsante: txtDisplay.text= txtDisplay.text+”6” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 6)
7) pulsante: txtDisplay.text= txtDisplay.text+”7” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 7)
8) pulsante: txtDisplay.text= txtDisplay.text+”8” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 8)
9) pulsante: txtDisplay.text= txtDisplay.text+”9” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 9)
0) pulsante: txtDisplay.text= txtDisplay.text+”0” (che si legge cosi: nel testo della casella di
testo txtDisplay metti quello che c’è già dentro + il numero 0)
Test del sottoproblema a). Se la programmazione dei 10 tasti è andata a buon fine, mandando in
esecuzione il form, il primo addendo apparirà (in formato testo) completamente sul display
b) Programmare il tasto +. Esso deve:
- convertire in formato numero il primo addendo apparso sul display (usando la funzione Val)
- conservarlo in memoria in una variabile temporanea NUMERO1, opportunamente dichiarata
- poi azzerare il display
c) Programmare il tasto =. A tal fine bisogna:
- Spostare la dichiarazione della variabile TEMP in testa al form, sotto la scritta “public class form”,
in modo che sia visibile in tutto il form e, quindi, anche in entrambi i pulsanti in cui è usata: + e =.
- Assegnare alla variabile temporanea NUMERO2, il secondo addendo visualizzato sul display in
formato numero e assegnare alla variabile temporanea SOMMA, la somma tra NUMERO1 e
NUMERO2. Infine mostrare sul display il valore di SOMMA
CODIFICA DEL PULSANTE 1
CODIFICA DEL PULSANTE 2
txtDisplay.Text=txtDisplay.Text+"1"
txtDisplay.Text=txtDisplay.Text+"2"
CODIFICA DEL PULSANTE 3
CODIFICA DEL PULSANTE 4
txtDisplay.Text=txtDisplay.Text+"3"
txtDisplay.Text=txtDisplay.Text+"4"
CODIFICA DEL PULSANTE 5
CODIFICA DEL PULSANTE 6
txtDisplay.Text=txtDisplay.Text+"5"
txtDisplay.Text=txtDisplay.Text+"6"
18
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
CODIFICA DEL PULSANTE 7
CODIFICA DEL PULSANTE 8
txtDisplay.Text=txtDisplay.Text+"7"
txtDisplay.Text=txtDisplay.Text+"8"
CODIFICA DEL PULSANTE 9
CODIFICA DEL PULSANTE 0
txtDisplay.Text=txtDisplay.Text+"9"
txtDisplay.Text=txtDisplay.Text+"0"
CODIFICA DEL PULSANTE SOMMA
CODIFICA DEL PULSANTE =
' Calcolo formato numerico del 1 addendo
NUMERO1 = Val(txtDisplay.Text)
' Azzeramento display
txtDisplay.Text = ""
Dim SOMMA, NUMERO2 As Integer
' Calcolo formato numerico del 2
addendo numero2
CODIFICA FORM1
Public Class Form1
' la variabile NUMERO1 deve essere
visibile sia nel bottone somma che in
quello uguale allora si dichiara qui
Dim NUMERO1 As Integer
NUMERO2 = Val(txtDisplay.Text)
' Somma dei due addendi
SOMMA = NUMERO2 + NUMERO1
' Stampa a video della loro somma
txtDisplay.Text = SOMMA
Problema14: Scrivere un algoritmo che dati tre voti interi A, B e C letti in input, calcoli la
media aritmetica e la stampi in output
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
Input
A
1° voto
Numero intero
X
B
2° voto
Numero intero
X
C
3° voto
Numero intero
X
SOM
Somma dei tre voti
Numero intero
MED Media dei tre voti
Numero decimale
2) Algoritmo per passi
1. Inizio
2. Dammi il primo voto A
3. Dammi il secondo voto B
4. Dammi il terzo voto C
5. Somma i tre voti A, B e C
6. Calcola la media dei tre voti
7. Fine
Output
Lavoro
X
X
3) Algoritmo col diagramma a blocchi
Inizio
A,B,C
SOM =A+B+C
Media =SOM / 3
Media
Fine
19
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4) Creazione del form Visualbasic. Net
5) CODIFICA PULSANTE “Calcola”
' DICHIARAZIONE DELLE VARIABILI
Dim A, B, C, SOM As Integer
Dim media As Decimal
' INPUT
A =
B =
C =
DEI
Val
Val
Val
VALORI DI A, B e C
(txtA.Text)
(txtB.Text)
(txtC.Text)
' CALCOLO DELLA MEDIA
SOM = A + B + C
media = SOM / 3
' OUTPUT DELLA MEDIA A VIDEO
txtMedia.Text = media
3-PARTE – Definizione di struttura di selezione
La struttura di selezione permette di impostare nell’algoritmo percorsi o “rami” diversi in
base a condizioni che possono essere o meno verificate.
Casi particolari della struttura di selezione
1) Si parla di struttura di selezione ad una via, quando il percorso ‘falso’ non è presente. Essa,
nel metodo del diagramma a blocchi, si rappresenta cosi:
Nel diagramma a blocchi
Esempio: N1 è positivo?
In Visual Basic.Net
' DICHIARAZIONE DELLE VARIABILI
Dim N1 As Integer
' INPUT
N1=Val(txtN1.text)
' CALCOLO
If N1 > 0 Then
‘ OUTPUT
MsgBox(N1)
End If
2) Si parla di struttura di selezione a 2 vie, quando vi sono entrambi i percorsi: vero e falso.
Essa, nel metodo del diagramma a blocchi, si rappresenta cosi:
Nel diagramma a blocchi Esempio: Max tra N1 e N2
In Visual Basic.Net
' DICHIARAZIONE DELLE VARIABILI
Dim N1, N2, Max As Integer
' INPUT
N1=Val(txtN1.text);
N2=Val(txtN2.text)
' CALCOLO
If N1 > N2 Then
Max = N1
Else
Max = N2
End If
‘ OUTPUT
MsgBox(Max)
20
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
3) Si parla di struttura di selezione a più vie, quando oltre ai percorsi ‘vero’ e ‘falso’ ce ne
sono altri. Essa, nel metodo del diagramma a blocchi, si rappresenta cosi: (vedi esempio)
Esempio: Letto un prezzo di un prodotto e la sua In Visual Basic.Net
quantità, in base alla quantità richiesta effettua uno
Dim prezzo, quantità, tasso As
tasso di sconto diverso.
Decimal
'INPUT
prezzo = Val(txtPrezzo.Text)
quantita = Val(txtQuantita.Text)
'SELEZIONE MULTIPLA IN VB.NET
Select Case quantita
Case 1
tasso = 10
Case 2
tasso = 20
Case 3
tasso = 30
Case Else
tasso = 40
'COMPRENDE I CASI quantita > 3
End Select
Problema15: Dati due numeri N1 e N2, determinare il minimo e il massimo e stamparli
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
MIN
Minimo tra i due numeri
MAX Massimo tra due numeri
2) Algoritmo per passi
1. inizio
2. dammi due valori diversi per N1 e per N2
3. confronta N1 con N2
4. se N1 > N2, allora MAX=N1 e MIN = N2
5. altrimenti MIN = N1 e MAX = N2
6. stampa MIN e MAX
7. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Input
X
X
Output
Lavoro
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo dei pulsanti di calcolo
Dim N1, N2, Max, Min As Integer
' input
N1 = Val(txtN1.Text)
N2 = Val(txtN2.Text)
' controllo selezione a 2 vie
If N1 > N2 Then
Max = N1
Min = N2
Else
Max = N2
Min = N1
End If
' output
lbl4.Text = Max
lbl5.Text = Min
21
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Problema16 : Dati due numeri N1 e N2, ordinarli in ordine crescente e stamparli a video
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
2) Algoritmo per passi
1. inizio
2. dammi due valori diversi per N1 e per N2
3. confronta N1 con N2
4. se N1 > N2, allora stampa N2 e poi N1
5. altrimenti stampa N1 e poi N2
6. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Input
X
X
Output
Lavoro
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo dei pulsanti di calcolo
Dim N1, N2 As Integer
' input
N1 = Val(txtN1.Text)
N2 = Val(txtN2.Text)
' controllo e stampa a video
If N1 < N2 Then
lbl3.text = N1
lbl4.text = N2
Else
lbl3.Text = N2
lbl4.Text = N1
End If
Problema17: Dati due numeri N1 e N2, calcolare quello positivo e quello negativo e stamparlo
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
POS
Numero Positivo
NEG
Numero Negativo
2) Algoritmo per passi
1. inizio
2. dammi due valori diversi per N1 e per N2
3. confronta N1 con N2
4. se N1 > 0, allora POS=N1 e stampa POS
5. altrimenti NEG=N1 e stampa NEG
5. se N2 >0, allora POS=N2 e stampa POS
5. altrimenti NEG=N2 e stampa NEG
6. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero Intero
Numero Intero
Input
X
X
Output
Lavoro
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo dei pulsanti di calcolo
Dim N1,
N1
N2
If
N2, POS, NEG As Integer
= Val(txtN1.text)
= Val(txtN2.text)
N1 > 0 Then
POS = N1
lbl4.Text = POS
Else
NEG = N1
lbl3.Text = NEG
End If
If N2 > 0 Then
POS = N1
lbl4.Text = POS
Else
NEG = N2
Lbl3.Text = NEG
End If
22
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Problema18: Dati due numeri N1 e N2, determinare quello pari e quello dispari e stamparli
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
PARI Numero Pari
DISP
Numero Dispari
Q1,Q2 Quozienti dei numeri N1 e N2
R1,R2 Resti delle divisioni per 2
Tipo
Numero intero
Numero intero
Numero Intero
Numero Intero
Numero Intero
Numero Intero
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
2. dammi due valori diversi per N1 e per N2
3. Calcola Q1=INT(N1/2) e R1=N1-2*Q1
4. Calcola Q2=INT(N2/2) e R2=N2-2*Q2
5. se R1=0 allora PARI=N1 e stampa PARI
6. altrimenti DISP=N1 e stampa DISP
7. se R2=0 allora PARI=N2 e stampa PARI
8. altrimenti DISP=N2 e stampa DISP
9. fine
4) Creazione del form Visualbasic. Net
Input
X
X
Output
Lavoro
X
X
X
X
Non disegnato per mancanza di tempo
5) Codifica del corpo dei pulsanti di calcolo
Dim N1, N2, PARI, DISP As Integer
Dim Q1, Q2, R1, R2 As Integer
N1 = Val(txtN1.text)
N2 = Val(txtN2.text)
Q1=INT(N1/2); Q2=INT(N2/2)
R1=N1-2*Q1; R2=N2-2*Q2
If R1 = 0 Then
PARI = N1; lbl4.Text = PARI
Else DISP = N1; lbl3.Text = DISP
End If
If R2 = 0 Then
PARI = N2; lbl4.Text = PARI
Else DISP = N2; lbl3.Text = DISP
End If
Problema19: Dati tre numeri N1,N2 e N3 determinare quello Max e stamparlo a video
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
N3
Terzo Numero
2) Algoritmo per passi
1. inizio
2. dammi i valori N1, N2, N3
3. Assegna a Max, il numero N1
4. Se N2 > Max allora a Max assegna N2
5. Se N3 > Max allora a Max assegna N3
6. stampa Max
7. fine
4) Creazione del form Visualbasic. Net
Tipo
Input Output Lavoro
Numero intero
X
Numero intero
X
Numero intero
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante calcola
Dim N1, N2, N3, Max As Integer
' input
N1 = Val(txtN1.text)
N2 = Val(txtN2.text)
N3 = Val(txtN3.text)
Max = N1
' calcolo
If N2 > Max Then Max = N2 End If
If N3 > Max Then Max = N3 End If
' output
lbl5.text = Max
23
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA20: Scrivere un algoritmo che dati 3 numeri N1, N2 e N3 positivi e negativi,
calcoli la somma dei numeri positivi e la stampi a video.
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
N3
Terzo Numero
SOM
Somma dei numeri positivi
2) Algoritmo per passi
1. inizio
2. dammi i valori N1, N2, N3
3. Se N1 > 0 allora a SOM=SOM+N1
4. Se N2 > 0 allora a SOM=SOM+N2
5. Se N3 > 0 allora a SOM=SOM+N3
6. stampa SOM
7. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Input
X
X
X
Output
Lavoro
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante calcola
Dim N1, N2, N3, Max As Integer
' input
N1 = Val(txtN1.text)
N2 = Val(txtN2.text)
N3 = Val(txtN3.text)
' calcolo
If N1 > 0
If N2 > 0
If N3 > 0
' output
lbl5.text
Then SOM=SOM+N1 End If
Then SOM=SOM+N2 End If
Then SOM=SOM+N3 End If
= SOM
La variabile conteggio
Una variabile conteggio è un contatore che viene inizializzato al valore zero3 e poi viene
incrementato di una unità ogni qual volta si verifica una certa condizione.
PROBLEMA21: Scrivere un algoritmo che dati 3 numeri N1, N2 e N3 positivi e negativi,
conti quanti sono positivi e li stampi a video. (Suggerimento: usare una variabile conteggio
contapos).
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
N3
Terzo Numero
CONTPOS Contatore di numeri positivi
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Input
X
X
X
Output
Lavoro
X
3
Per far capire il perché la variabile conteggio viene inizializzata a zero, dire che essa è simile al contatore del
contachilometri dell’automobile o al contasecondi del cronometro di un orologio: tutti partono da zero.
In seguito, però, ci saranno anche variabili a conteggio che saranno inizializzata ad un valore diverso come ad es. la
variabile indice ciclo (ad 1, a 2) ecc.
24
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
2) Algoritmo per passi
1. inizio
2. dammi i valori N1, N2, N3
3. Se N1 > 0 allora CONTPOS+=1
4. Se N2 > 0 allora CONTPOS+=1
5. Se N3 > 0 allora CONTPOS+=1
6. stampa CONTPOS
7. fine
4) Creazione del form Visualbasic. Net
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante calcola
Dim N1, N2, N3, Max As Integer
' input
N1 = Val(txtN1.text)
N2 = Val(txtN2.text)
N3 = Val(txtN3.text)
' calcolo
If N1 > 0 Then CONTPOS+=1 End If
If N2 > 0 Then CONTPOS+=1 End If
If N3 > 0 Then CONTPOS+=1 End If
' output
lbl5.text = CONTPOS
PROBLEMA22: Scrivere un algoritmo che dati 3 numeri N1, N2 e N3 pari e dispari, conti
quanti sono pari e li stampi a video. (Suggerimento: usare una variabile conteggio contapari)
1) Tabelle delle variabili di input e output
Nome
Descrizione
N1
Primo Numero
N2
Secondo Numero
N3
Terzo Numero
CONTPARI Contatore dei numeri pari
Q1, Q2
Quozienti Q1 e Q2
R1, R2
Resto R1 e R2
2) Algoritmo per passi
1. inizio
2. dammi i valori N1, N2, N3
3. Q1=N1/2, Q2=N2/2, Q3=N3/2
4. R1=N1-Q1*2, R2=N2-Q2*2, R3=N3-Q3*2,
5. Se R1 = 0 allora CONTPARI+=1
6. Se R2 = 0 allora CONTPARI+=1
7. Se R3 = 0 allora CONTPARI+=1
8. stampa CONTPARI
9. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
Input
X
X
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante calcola
Dim N1, N2, N3, Q1, Q2, Q3 As Integer
' input
N1=Val(txtN1.text), Q1=N1/2, R1=N1-Q1*2
N2=Val(txtN2.text), Q2=N2/2, R2=N2-Q2*2
N3=Val(txtN3.text), Q3=N3/2, R3=N3-Q3*2
' calcolo
If R1 = 0 Then CONTPARI+=1 End If
If R2 = 0 Then CONTPARI+=1 End If
If R3 = 0 Then CONTPARI+=1 End If
' output
lbl5.text = CONTPOS
25
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA23: Scrivere un algoritmo che dati 3 numeri a, b e c li ordini in modo
strettamente crescente. (Suggerimento: basta calcolare prima il minimo tra a e b ed tra a e c;
poi calcolare il minimo tra b e c; usare una variabile scambio)
1) Tabelle delle variabili di input e output
Nome
Descrizione
a
Primo Numero
b
Secondo Numero
c
Terzo Numero
T
Variabile Temporanea
Tipo
Numero intero
Numero intero
Numero intero
Input
X
X
X
Output
X
X
X
Lavoro
X
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
2. dammi i valori a, b, c
Non disegnato per mancanza di tempo
3. se a > b scambiali di posto in modo che il
minimo sia al 1) posto
5) Codifica del corpo del pulsante calcola
4. se a > c scambiali di posto in modo che il
Dim t, a, b, c As Integer
minimo sia al 1) posto
' input
5. se b > c scambiali di posto in modo che il a = Val(txtA.Text)
minimo sia al 2) posto
b = Val(txtB.Text)
c = Val(txtC.Text)
6. stampa a video i nuovi valori di a,b e c
7. fine
4) Creazione del form Visualbasic. Net
' calcolo del minimo tra a,b e c e lo
si mette al primo posto
If a > b Then t = a a = b b = t End If
If a > c Then t = a a = c c = t End If
' calcolo del minimo tra b e c e lo si
mette al secondo posto
If b > c Then t = b b = c c = t End If
' stampa dei numeir in ordine crescente
lbl5.Text=a lbl6.Text=b lbl7.Text=c
La funzione InputBox
Essa si usa per consentire l’input di un valore da tastiera che sarà confermato o meno
attraverso i pulsanti: ok o annulla. Tale funzione InputBox ha due parametri separati dalla
virgola: il 1) obbligatorio e il 2) facoltativo. La sintassi della funzione InputBox è la seguente:
InputBox(“testo messaggio utente nel prompt (zona grigia)”, “testo nel title (barra blu)”)
Poiché il 2) parametro è facoltativo, se non viene specificato, il testo che appare nel title è quello del
nome della form che si sta utilizzando.
Esempi: inserendo entrambi i parametri 1) e 2) nella funzione InputBox()
(fig.a)
(fig. b)
Codice VB
Codice VB
InputBox("QUALE'
IL
TUO
PIATTO
PREFERITO?", "ELENCO DEI PIATTI")
InputBox("DAMMI UN NUMERO DA 1 A 7",
"SCELTA DI UN NUMERO CASUALE")
26
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
I valori inseriti nel rigo bianco: “SPAGHETTI ALLA PESCATORA” (fig.1) e “7” (fig.2) saranno
interpretati come testo, quindi la variabile che li conterrà dovrà essere di tipo string. Ad es.:
StringaNome=InputBox(“inserisci messaggio utente nel prompt”,”inserisci nome title”)
Se si vuole una variabile numero tipo intero si utilizzerà la funzione Val nel seguente modo:
numero=Val (InputBox(“inserisci messaggio utente nel prompt”,”inserisci nome title”))
La funzione MsgBox
Essa si usa per consentire l’output attraverso l’uso di finestre: di avviso, di errore, di
informazione, ecc. e l’output di valori numerici generati dal programma. Essa ha tre parametri
separati dalla virgola: il 1) obbligatorio e il 2) e il 3) facoltativo. La sintassi della funzione MsgBox
è la seguente:
MsgBox(“messaggio utente nel prompt (zona grigia)”, numero, “testo nel title (barra blu)”)
Essa ha come 1) e 3) parametro gli stessi della funzione InputBox. La differenza è solo il 2)
parametro che serve a specificare, con un numero il tipo di icona da utilizzare.
Esempi d’uso.
CODICE VBASIC
MsgBox("Δ<0 soluzioni non
reali", 16, "Avviso")
CODICE VBASIC
MsgBox("Δ<0 soluzioni non
reali", 64, "Avviso")
CODICE VB
x= - 0,5
MsgBox(x)
x= - 0,5
MsgBox("La soluzione è x = "
& x)
PROBLEMA 24.
Sapendo che un numero a è un quadrato perfetto se la sua radice è un numero intero, cioè:
trovare l’algoritmo che consenta di sapere se il numero a inserito è un quadrato perfetto.
Suggerimento: la funzione radice quadrata da usare in VisualBasic.Net è math.sqrt( )
1) Tabelle delle variabili di input e output
Nome
Descrizione
a
Numero da verificare
b
Parte intera radice quadrata di a
qb
Quadrato di b
Tipo
Numero intero
Numero intero
Numero intero
Input
X
Output
X
Lavoro
X
X
27
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
2) Algoritmo per passi
1. inizio
2. dammi il valore del numero: a
3. ad b associa la parte intera della radice quadrata
di a
4. se b*b = a allora stampa il messaggio a video “a
è un quadrato perfetto”
5. altrimenti stampa il messaggio a video “a non è
un quadrato perfetto”
6. fine
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante calcola
Dim a, b, qb As Integer;
a = val(InputBox(txtA.Text))
b = int(math.sqrt(a))
qb=b*b
If qb = a Then
lbl1.text= "a è un quadrato perfetto"
else
lbl1.text= "a non è un quadr. perfetto"
End If
4) Creazione del form Visualbasic. Net
PROBLEMA25: Scrivere un algoritmo che dati i 2 coefficienti b e c, di una equazione di 1
grado bx + c = 0, calcoli: il valore della soluzione x, se l'equazione è determinata oppure
stampi a video il messaggio eq. impossibile o eq. indeterminata (Suggerimento l’ eq. bx + c = 0
con b e c ≠ 0 è determinata e ha un’unica soluzione x = - c / b; l’ equazione del tipo 0 = c, con c
diverso da 0 è impossibile; l’ equazione 0 = 0 è indeterminata (cioè ha infinite soluzioni)).
1) Tabelle delle variabili di input e output
Nome
Descrizione
b
Coefficiente della x
c
Coefficiente termine noto
x
Soluzione dell’equazione
Tipo
Numero intero
Numero intero
Numero decimale
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
2. dammi valori dei coefficienti: b, c
3. se b<> 0 allora stampa x= - c / b
4. se b=0 e c<>0 allora eq. indeterminata
5. se b=0 e c=0 allora eq. impossibile
6. fine
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic. Net
Input
X
X
Output
Lavoro
X
5) Codifica del corpo del pulsante calcola
Dim b, c As Integer
Dim x As Decimal
' bx+c=0
b = Val(TextBox1.Text)
c = Val(TextBox2.Text)
If (b<>0) Then x = -c / b lblX.Text=x
End If
If (b=0 And c<>0) Then MsgBox("b=0 e
c<>0 non esistono soluzioni",32,
"Attenzione")End If
If (b=0 And c=0) Then
'caso in cui b = 0 e c = 0
MsgBox(" 0=0 infinite soluzioni ", 32,
"Attenzione")End If
28
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA26: Scrivere un algoritmo che dati i 3 coefficienti a,b e c, tutti e 3 ≠ 0, di una
equazione di 2 grado calcoli, se il delta > 0 i valori delle soluzioni: x1 e x2 della equazione:
ax2+bx+c = 0. Se invece il delta < 0, stampi a video il messaggio “soluzioni non reali”
1) Tabelle delle variabili di input e output
Nome
Descrizione
a
Coefficiente della x2
b
Coefficiente della x
c
Termine noto
delta
Valore = b2-4*a*c
Prima radice
x1
x2
Seconda radice
2) Algoritmo per passi
1. inizio
2. dammi valori dei coefficienti: a, b, c
3. calcolo del delta=b*b - 4*a*c
4. se delta < 0 allora mostra a video il messaggio
che le soluzioni non sono reali, altrimenti
5. calcola x1 con la formula conosciuta
6. calcola x2 con la formula conosciuta
7. stampa a video i valori di x1 e di x2
8. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
Input
X
X
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante calcola
Dim a, b, c, delta As Integer
Dim x1, x2 As Double
' input
a = Val(txtA.Text)
b = Val(txtB.Text)
c = Val(txtC.Text)
'calcolo delta = (b * b) - (4 * a * c)
If delta < 0 Then
MsgBox("Δ<0 soluzioni non reali", 32,
"Attenzione")
Else
' Math.Sqrt() è la f. radice quadrata
x1 = (-b - Math.Sqrt(delta)) / (2 * a)
x2 = (-b + Math.Sqrt(delta)) / (2 * a)
' output
lbl6.text = x1 lbl8.text = x2
End If
Problema27: Scrivere un algoritmo che dati il prezzo e la quantità di un prodotto da acquistare,
calcoli sull’importo totale lordo: lo sconto del 10% se la quantità = 1; lo sconto del 20% se la
quantità = 2; lo sconto del 30% se la quantità = 3; e lo sconto del 40% in tutti gli altri casi e stampi
a video l’importo netto scontato da pagare.
Per la realizzazione di un programma in VB.net seguire i seguenti 5 passi:
1) Tabelle delle variabili di input, di output e di lavoro
Nome
Descrizione
Tipo
Input
prezzo Prezzo del prodotto
Numero decimale
X
quantità Quantità dello stesso prodotto
Numero intero
X
ilordo
Importo lordo
Numero decimale
inetto
Importo netto da pagare
Numero decimale
sconto Sconto da applicare all’importo lordo
Numero intero
tasso
Tasso di sconto in base alla quantità
Numero intero
Output
Lavoro
X
X
X
X
29
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. Inizio
2. Leggi il prezzo del prodotto
3. Leggi la quantità del prodotto
4. Calcola ilordo = prezzo*quantita
5. Se la quantità = 1 allora tasso = 10
6. Se la quantità = 2 allora tasso = 20
7. Se la quantità = 3 allora tasso = 30
8. Negli altri casi, altrimenti tasso = 40
9. Calcola sconto = ilordo*tasso /100
10. Calcola inetto = ilordo - sconto
11. Stampa a video l’importo netto
12. Fine
4) Creazione del form Visualbasic. Net
5) CODIFICA PULSANTE “Calcola”
Dim prezzo, ilordo As Decimal
Dim inetto, sconto As Decimal
Dim quantita, tasso As Byte
'INPUT
prezzo = Val(txtPrezzo.Text)
quantita = Val(txtQuantita.Text)
'CALCOLO IMPORTO LORDO DEL TOTALE DELLA SPESA
ilordo = prezzo * quantita
'SELEZIONE MULTIPLA IN VIASUAL BASIC.NET
Select Case quantita
Case 1
tasso = 10
Case 2
tasso = 20
Case 3
tasso = 30
'TALE CASO INGLOBA TUTTI GLI ALTRI POSSIBILI CASI, CIOE’CON QUANTITA’ > 3
Case Else
tasso = 40
End Select
'CALCOLO SCONTO SULL’IMPORTO TOTALE LORDO
sconto = ilordo * tasso / 100
inetto = ilordo - sconto
'OUTPUT IMPORTO NETTO
txtImporto.Text = inetto
30
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Problema28: Scrivere un algoritmo che dato il prezzo di un cellulare e data la quantità dei pezzi
venduti calcoli sull’ imponibile: lo sconto del 10% se la quantità dei pezzi venduti è fino a 3; lo
sconto del 20% se la quantità dei pezzi venduti è fino a 5; lo sconto4 del 30% se la quantità dei
pezzi venduti è fino a 10; lo sconto del 40% se la quantità dei pezzi venduti è > 10. Calcoli, inoltre,
il tasso di sconto, l’imponibile, l’importo netto scontato, l’iva del 20%, l’importo ivato. Stampare a
video: il tasso di sconto, lo sconto, l’imponibile, l’importo netto scontato, l’IVA del 20% e
l’importo ivato (o lordo o totale)
1) Tabelle delle variabili e costanti
Nome
Descrizione
costo Costo di un cellulare
pezzi N.ro di pezzi dello stesso cellulare
iva
Iva da aggiungere all’importo netto
ilordo Importo lordo
inetto Importo al netto dello sconto
ivato Importo totale ivato
sconto Sconto da applicare
tasso Tasso di sconto in base ai pezzi
2) Algoritmo per passi
1. Inizio
2. Leggi il costo di un cellulare
3. Leggi il n.ro di pezzi di quel cellulare
4. Calcola imponibile = costo*n.ro dei pezzi
5. Se i pezzi sono fino a 3 allora tasso = 10
6. Se i pezzi sono fino a 5 allora tasso = 20
7. Se i pezzi sono fino a 10 allora tasso = 30
8. Negli altri casi, altrimenti il tasso = 40
9. Calcola lo sconto = imponibile*tasso /100
10. Calcola inetto = imponibile – sconto
11. Calcola iva=inetto*20/100
12. Calcola ivato=inetto+iva
11. Stampa a video il tasso, lo sconto,
12. Stampare l’importo lordo, l’importo netto
13. Stampare l’ IVA, l’importo Ivato
12. Fine
4) Creazione del Form Visualbasic. Net
Tipo
Numero decimale
Numero intero
Numero decimale
Numero decimale
Numero decimale
Numero decimale
Numero decimale
Numero intero
Input
X
X
Output
Lavoro
X
X
X
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante Calcola
Dim pezzi, tasso As Byte
Dim costo, imponibile As Decimal
Dim inetto, ivato As Decimal
Dim iva, sconto As Decimal
'INPUT
costo = Val(txtCosto.Text)
pezzi = Val(txtPezzi.Text)
'SELEZIONE MULTIPLA IN VBASIC.NET
Select Case pezzi
Case 1 To 3
tasso = 10
Case 1 To 5
tasso = 20
Case 1 To 10
tasso = 30
Case Else
tasso = 40
End Select
imponibile = costo * pezzi
sconto = imponibile * tasso / 100
inetto = imponibile - sconto
iva = inetto * 20 / 100
ivato = inetto + iva
'OUTPUT
txtTasso.Text = tasso
txtSconto.Text = sconto
txtIlordo.Text = imponibile
txtInetto.Text = inetto
txtIva.Text = iva
txtIvato.Text = ivato
4
Attenzione: Nel problema23 si usa la frase “quantità uguale ad 3” e nel problema 24 si usa la frase “pezzi fino ad 3”.
Questa diversità determina una differenza nell’uso del costrutto Case nel codice di VisualBasic.Net
31
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Problema29: Scrivere un algoritmo che data una temperatura stampa a video il messaggio:
a) “ molto caldo ” se la temperatura è > 32;
c) “ mite ” se la temperatura è > 16;
e) “ freddo ” se la temperatura è > 0;
1) Tabelle delle variabili e costanti
Nome
Descrizione
temp Temperatura scelta
2) Algoritmo per passi
1. Inizio
2. leggi la temperatura temp
3. Se la temp > 32 allora “ molto caldo ”
4. Se la temp > 25 allora “ caldo ”
5. Se la temp > 16 allora “ mite ”
6. Se la temp > 10 allora “ fresco ”
7. Se la temp > 0 allora “ freddo ”
8. Altrimenti il messaggio “ molto freddo ”
9. Fine
4) Creazione del Form Visual Basic. Net
b) “caldo” se la temperatura è > 25;
d) “ fresco ” se la temperatura è > 10;
f) “ molto freddo ” se la temperatura è altrimenti.
Tipo
Numero decimale
Input
X
Output
Lavoro
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante Calcola
Dim temp As Integer
temp = Val(txtTemperatura.Text)
Select Case temp
Case Is > 25
lblMessaggio.Text = "Caldo"
Case Is > 16
lblMessaggio.Text = "Mite"
Case Is > 10
lblMessaggio.Text = "Fresco"
Case Is > 0
lblMessaggio.Text = "Freddo"
Case Else
lblMessaggio.Text = "Molto Freddo"
End Select
IL CONTROLLO COMBOBOX
Esso è un elenco a discesa di elementi. Esso si usa per selezionare un valore, da un elenco di
valori predefiniti, detti items. Per distinguere una combobox da un altro controllo si usa il nome
sintetico: “cmb”. Esempi sono: cmbTemperatute, cmbQuantità, ecc
I METODI5 ADD( ) E REMOVE ( ) DI COMBOBOX. Il metodo add() si usa per aggiungere un
elemento alla combobox e il metodo remove per eliminare un elemento dalla combobox
Esempio1. Sia cmb1 un combobox, allora la scritta cmb1.items.add(“napoli”) si legge metodo
add( ) dell’oggetto combobox cmb1. Esso aggiunge l’elemento napoli alla combobox cmb1.
Esempio2. La scritta cmb1.items.add(txt1.text), aggiunge l’elemento che si trova nella casella di
testo txt1 alla combobox cmb1
Esempio3. La scritta cmb1.items.remove(“caserta”) si legge metodo remove( ) dell’oggetto
combobox cmb1. Esso rimuove l’item (cioè l’elemento) caserta dalla combobox cmb1.
L’EVENTO6 SELECTED INDEX CHANCED DI COMBOBOX
La frase “selected index chanced” significa che è “l’indice selezionato è cambiato”. Poiché ogni
elemento dell’elenco ha un indice (cioè un numero) che ne individua la posizione allora quando
l’utente seleziona, nell’elenco, un elemento diverso da quello di default si dice che si è verificato
l’evento che “l’indice selezionato è cambiato”
5
Essi sono sottoprogrammi predefiniti del linguaggio VB già scritti e disponibili per il programmatore e sono associati
ad un particolare oggetto. Per riferirsi ad un metodo noi scriviamo: nomeoggetto.metodo( ).
6
L’evento è l’azione provocata dall’utente sui form e controlli. Tale azione viene programmata in VB dal
programmatore.
32
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
LA PROPRIETA’ “SELECTED-ITEM” DI COMBOBOX
Essa individua l’elemento selezionato della combobox.
ESERCIZI DI LABORATORIO SULL’USO DEL CONTROLLO COMBOBOX
ESERCIZIO 1: Inserire in una form una combobox, di nome cmb1, contenente un elenco di città
creato usando il percorso visuale e automatico seguente:
- selezionato il controllo combobox Æ dal menù contestuale del mouse Æ Modifica elementi
ESERCIZIO 2: Inserire in una form una combobox, di nome cmbColore, contenente un elenco di
colori a piacere. Inserire nella form, inoltre, una casella di testo, di nome txtColore ed un pulsante,
di nome btnInserisci che dovrà inserire nella combobox, tutti i nomi dei colori che l’utente scriverà
casella di testo, txtColore. (Suggerimento: Il form sarà come la figura seguente)
Private Sub btnInserisciColore_Click
Dim colore As String
colore = txtColore.Text
' aggiungi come elemento della cmb2.
il valore della variabile colore
cmbColore.Items.Add(colore)
txtColore.Text = ""
End Sub
ESERCIZIO 3: Inserire in una form, una combobox, di nome cmbNumeri, contenente un elenco di
numeri da 1 a 5. Inserire nella form, inoltre, una casella di testo, di nome txtNumero ed un pulsante,
di nome btnInserisci che dovrà inserire nella combobox, tutti i numeri da 1 a 5 che l’utente scriverà
casella di testo, txtNumero. Successivamente creare un pulsante btnElimina che dovrà eliminare
dalla combobox i numeri pari 2 e 4, in modo che i numeri rimanenti nell’elenco siano sono i
dispari: 1, 3, 5. (Suggerimento: Il form sarà come la figura seguente:)
btnInserisciNumero_Click
Dim num As Decimal
num = Val(txtNum.Text)
cmbNum.Items.Add(num)
' metodo add elemento
txtNum.Text = ""
btnEliminaNumero_Click
Dim num As Decimal
num = Val(txtNum.Text)
cmbNum.Items.Remove(num)
‘ metodo remove elemento
ESERCIZIO 4: Inserire in una form, una combox, di nome cmbSquadreCalcio, contenente un
elenco di squadre a piacere creato utilizzando il metodo usato nell’ESERCIZIO 1. Inserire poi nella
form una casella di testo, di nome txtElementoSelezionato, contenente l’elemento (item) selezionato
33
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
nella combobox. (Suggerimento: Il form sarà come la figura seguente e bisogna programmare per il
combobox l’evento SelectedIndexChanged e non l’evento click:)
Private Sub
cmbSquadreCalcio_SelectedIndexChanged()
' evento SelectedIndexChanged di cmb
Dim elemento As String
elemento=cmbSquadreCalcio.SelectedItem
' elemento selezionato dell'elenco
txtElementoSelezionato.Text = elemento
End Sub
ESERCIZIO5: A partire dalla form dell’esercizio 4, inserire un nuovo pulsante di nome,
btnCancellaItem, che cancella dalla combobox, cmbSquadreCalcio, l’elemento dell’elenco
selezionato dall’utente. (Suggerimento: se l’utente selezionasse la squadra INTER e si premesse sul
pulsante btnCancellaItem, dall’elenco dovrà sparire la parola INTER, come mostra la figura)
Private Sub btnCancella_Click
Dim elemento As String
' proprietà SelectedItem
elemento=cmbSquadreCalcio.SelectedItem
' metodo Remove()
cmbSquadreCalcio.Items.Remove(elemento)
End Sub
Problema30 Scrivere un algoritmo che creata una combobox contenente i numeri da 1 a 10, in
base all’elemento scelto dall’utente nella combobox e alla pressione del tasto “calcola” visualizzi in
10 label la tabellina del numero richiesto.
1) Tabelle delle variabili e costanti
Nome
Descrizione
num
numero della tabellina
2) Algoritmo per passi
1. Inizio
2. Scegli elemento dalla combobox
3. Assegna a num, l’elemento scelto
4. Fai le seguenti assegnazioni
R1=1 * num R2=2 * num
R4=4 * num R5=5 * num
R7=7 * num R8=8 * num
R10 = 10 * num
R3 = 3 * num
R6 = 6 * num
R9 = 9 * num
13. Stampa in label R1,R2,R3,R4,R5
15. Fine
4) Creazione del Form Visualbasic. Net
Tipo
Numero intero
Input
X
Output
Lavoro
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del pulsante Calcola
Dim num As Integer
Dim R1, R2, R3, R4, R5, R6, R7, R8,
R9, R10 As Integer
' input
num = cmbNumero.SelectedItem
'calcolo
R1=1 * num R2=2 * num R3 = 3 * num
R4=4 * num R5=5 * num R6 = 6 * num
R7=7 * num R8=8 * num R9 = 9 * num
R10 = 10 * num
' output
lbl1.Text=R1 lbl2.Text=R2 lbl3.Text=R3
lbl4.Text=R4 lbl5.Text=R5 lbl6.Text=R6
lbl7.Text=R7 lbl8.Text=R8 lbl9.Text=R9
lbl10.Text = R10
Problema 31. Scrivere un algoritmo che creata una combobox di 30 parole scritte in “italiano", in
base alla parola scelta la traduca in dialetto “napoletano”, visualizzando la parola tradotta in
controllo a vostra scelta: casella di testo o label. (Suggerimento: utilizzare la struttura di selezione
Select Case per gestire tutti e 30 i casi nella combobox)
34
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
1) Tabelle delle variabili e costanti
Nome
Descrizione
parola E’ il termine selezionato da tradurre
Tipo
stringa
2) Algoritmo per passi
Input
X
Output
Lavoro
3) Algoritmo col diagramma a blocchi
1. Inizio
2. assegna a parola, il termine selezionato
3. se parola= “ragazzo” allora scrivi “guaglione”
4. se parola= “fidanzata” allora scrivi “guagliona”
5. ecc
6. Fine
Non disegnato per mancanza di tempo
5) Codifica del Combobox cmbIta
Dim parola As String
parola = cmbIta.SelectedItem
Select Case parola
Case "ragazzo"
txtNap.Text = "guaglione"
Case "fidanzata"
txtNap.Text = "guagliona"
Case "padre"
txtNap.Text = "pat"
Case "madre"
txtNap.Text = "mam"
Case "sorella"
txtNap.Text = "sor"
. . . . . . . . . . . .
End Select
4) Creazione del Form Visualbasic. Net
Problema 32. Scrivere un algoritmo che permette di realizzare un semplice Browser per navigare
usando il controllo “web browser” della finestra degli strumenti e i suoi metodi:
webrowser.gohome( ), webrowser.goback( ), webrowser.goforward( ) e webrowser.navigate( ).
Assegnare ai pulsanti: >> (avanti), << (indietro) e home (pagina iniziale) del form uno dei primi 3
metodi suddetti e alla casella di testo, txtIndirizzo seguente, il metodo webrowser.navigate( )
1) Tabelle delle variabili e costanti
Nome
Descrizione
indirizzo E’ l’indirizzo del browser
Tipo
stringa
2) Algoritmo per passi
1. Inizio
2. assegna a indirizzo, l’indirizzo scritto nella textBox
3. se l’indirizzo è corretto o c’è linea carica la pagina web
4. Fine
4) Creazione del Form Visualbasic. Net
Input
X
Output
Lavoro
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo del bottone Vai
Private Sub btnVai_Click()
' dichiarazione variabile
Dim indirizzo As String
' input
indirizzo = txtIndirizzo.Text
' metodo webrowser.navigate( )
webrowser.Navigate(indirizzo)
End Sub
35
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Parte 4 - LE STRUTTURE ITERATIVE: FOR, WHILE E DO LOOP UNTIL
Essa, in generale, consente di ripetere l’esecuzione di una porzione di algoritmo più volte,
finché è verificata una certa condizione. Essa può essere di tre tipi:
- a iterazione prestabilita o ciclo a contatore
- a iterazione a controllo di testa o ciclo a condizione iniziale.
- a iterazione a controllori coda o ciclo a condizione finale.
La struttura a iterazione prestabilita (FOR - TO - NEXT)
Essa, nel metodo del diagramma a blocchi, si rappresenta cosi:
Essa utilizza:
1) un nuovo blocco, l’esagono, che al suo interno contiene: una variabile conteggio come ad es.
i, j, k
2) un valore finale, VF, scelto dal programmatore, che stabilisce a priori il numero massimo di
iterazioni, ad es. 10, 100
3) blocco istruzioni che rappresenta la porzione di algoritmo da iterare, cioè il corpo dell’algoritmo
4) un piccolo rombo che sottintende ad ogni iterazione l’incremento della variabile conteggio
ad es. i Å i + 1; j Å j + 1
La ripetizione del blocco istruzioni avviene finché la variabile conteggio assume un valore < =
al valore finale VF prestabilito, mentre si arresta quando la variabile conteggio assume un
valore > del valore finale VF prestabilito.
Quando si usa tale struttura a iterazione prestabilita?
Essa si usa quando nell’algoritmo ci sono una o più istruzioni che si ripetono un numero di
volte prestabilito.
PROBLEMA 33: Trovare l’algoritmo che letti 10 numeri interi N1,…N100, calcoli la loro
somma e la stampi a video. (Suggerimento: usare il controllo inputbox per leggere i 100
numeri)
Prima di applicare il metodo dei 5 passi, cerchiamo di capire meglio il problema:
Ricordiamo che l’algoritmo che risolveva il problema della somma di due numeri x e y, richiedeva
3 variabili: di cui 2 per i numeri N1 e N2 e una per la variabile som.
Qui, invece, il nostro problema è di fare la somma di 100 numeri, quindi dovremmo usare 101
variabili: di cui 100 per i numeri N1, …., N100 e una per la variabile somma SOM. Inoltre,
dovremmo leggere la prima variabile N1 e poi sommarla alla variabile somma SOM, leggere la
seconda variabile N2 e poi sommarla alla variabile somma SOM,……leggere la 100° variabile
N100 e poi sommarla alla variabile somma SOM. Tale soluzione fa prevedere un algoritmo
lunghissimo. Come possiamo ovviare a questo problema? 7
7
Nota.: per far rendere conto gli allievi che effettivamente tale soluzione è lunghissima conviene disegnare alla lavagna
a sx l’algoritmo senza ciclo (fermandosi alla lettura e alla somma parziale delle prime due variabili n1 e n2, scrivendo i
puntini, e poi scrivendo la lettura e la somma parziale della variabile n100) e a dx l’algoritmo con il ciclo
36
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Osservazione: In tale soluzione si ripetono 100 volte la coppia di istruzioni: lettura della variabile
Ni e somma del valore della variabile Ni al valore della variabile somma SOM.
Allora per quanto suddetto, possiamo usare una struttura a iterazione prestabilita per la
coppia di istruzioni suddette,
1) Tabelle delle variabili di input e output
Nome
Descrizione
N
Numero generico da sommare
SOM
Somma totale dei 10 numeri
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. inizializza som a 0
3. Per I che va da 1 a 100
4. leggi il numero N
5. assegna a som, la quantità som + N
6. vai al prossimo I e torna al passo 3
7. scrivi a video il valore di som
8. fine
Tipo
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
3) Algoritmo col diagramma a blocchi
4) Creazione del form Visualbasic. Net
5) Codifica del corpo dei pulsanti di calcolo
Private Sub btnSomma_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSomma.Click
Dim i, numero, som As Integer
Dim x As String
For i = 1 To 10
x = "inserisci " & i & ") numero"
' le 2 & servono per concatenare il 1° messaggio:"inserisci "
‘ al valore corrente di i, al 2° messaggio ") numero"
numero = Val(InputBox(x))
som = som + numero
Next
lblRisultato.Text = som
End Sub
6) L’esecuzione del programma fa apparire a video 10 finestre per l’input box del tipo:
37
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA 34: Trovare l’algoritmo che letti M numeri interi, calcoli la loro somma e la
stampi a video.
(Suggerimento: usare il controllo textbox per leggere la dimensione N dei numeri e tante
inputbox per leggere gli N numeri)
1) Tabelle delle variabili di input e output
Nome
Descrizione
M
Dimensione dei numeri
N
Numero generico da sommare
SOM Somma totale dei 10 numeri
I
E’ l’indice del ciclo
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. inizializza som a 0
3. leggi M
4. per I che va da 1 a M
5. leggi il numero N
6. assegna a som, la quantità som+N
7. vai al prossimo I e torna al passo 4
8. scrivi a video il valore di som
9. fine
4) Creazione del form Visualbasic. Net
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Stringa
Input
X
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
5) Codifica del corpo dei pulsanti di calcolo
Private Sub btnSomma_Click()
Dim i, n, m, som As Integer
Dim x As String
m = Val(txtMnumeri.Text)
For i = 1 To m
x = "inserisci " & i & ") numero"
' le 2 & servono per concatenare
‘ il 1° messaggio: "inserisci ",
‘ al valore corrente di i, al 2°
‘ messaggio ") numero"
n = Val(InputBox(x))
som = som + n
Next
lblRisultato.Text = som
End Sub
PROBLEMA35: Trovare l’algoritmo che permette di calcolare il maggiore tra 10 numeri
interi letti in input e di scriverlo in output8
Prima di applicare il metodo dei 5 passi, cerchiamo di capire meglio il problema:
Tale problema è semplicemente la generalizzazione dello stesso problema visto precedentemente al
caso di tre numeri interi, che richiedeva al massimo 2 confronti nel caso peggiore, se si utilizzava la
variabile maggiore inizializzata al primo numero letto.
8
Nota: successivamente questo algoritmo si può complicare ricercando oltre al maggiore anche il minore e
successivamente generalizzarlo alla ricerca del maggiore e minore in una sequenza di M numeri interi letti in input.
38
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
1) Tabelle delle variabili di input e output
Nome
Descrizione
N
E’ il numero letto
MAX
E’ il maggiore dei 10 numeri
I
E’ l’indice del ciclo
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. leggi il primo numero e assegnalo a max
3. per I che va da 2 a 10
4. leggi il I) numero
5. se il numero del passo 4 > max allora
a max, assegna il nuovo numero, fine se
6. vai al prossimo I e torna al passo 3
7. scrivi a video max
8. fine
Tipo
Numero intero
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
5) Codifica del corpo dei pulsanti di calcolo
Dim i, numero, max As Integer
Dim x As String
x="inserisci il 1) numero"
numero = Val(InputBox(x))
max = numero
For i = 2 To 10
x = "inserisci " & i & ") numero"
' le 2 & servono per concatenare
"inserisci " 'al valore corrente
di i, e al 2° msg ") numero"
numero = Val(InputBox(x))
If (numero > max) Then
max = numero
End If
Next
txtMax.Text = max
4) Creazione del form Visualbasic. Net
PROBLEMA 36 Trovare l’algoritmo che letti M numeri interi, calcoli il maggiore degli M
numeri e lo stampi a video.
1) Tabelle delle variabili di input e output
Nome
Descrizione
M
E’ la dimensione dei numeri.
N
E’ il numero letto
MAX
E’ il maggiore degli N numeri letti
I
E’ l’indice del ciclo
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. leggi la dimensione M
3. leggi il primo numero e assegnalo a MAX
Tipo
Numero intero
Numero intero
Numero intero
Numero intero
Stringa
Input
X
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
39
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4. per I che va da 2 a M
5. leggi il I) numero
6. se il numero del passo 4 > MAX allora
a MAX, assegna il nuovo numero, fine se
7. vai al prossimo I e torna al passo 4
8. scrivi a video MAX
9. fine
4) Creazione del form Visualbasic
5) Codifica del corpo dei pulsanti di calcolo
Non effettuata poiché è la stessa del problema 3
precedente dove al posto di 10 c’è M
PROBLEMA 37: Trovare l’algoritmo che letti i primi M numeri naturali, calcoli e stampi a
video il messaggio “è positivo” se il numero letto è positivo e il messaggio “è negativo” se il
numero letto è negativo. (Suggerimento: usare la funzione Inputbox( ) per leggere gli M
numeri e la funzione Msgbox( ) per stampare gli M messaggi a video)
1) Tabelle delle variabili di input e output
Nome
Descrizione
M
E’ la dimensione dei numeri.
N
E’ il numero letto
I
E’ l’indice del ciclo
X
E’ una stringa di caratteri
Tipo
Numero intero
Numero intero
Numero intero
Stringa
Input
X
X
Output
Lavoro
X
X
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
Non disegnato per mancanza di tempo
2. leggi la dimensione M
3. per I che va da 1 a M
4) Creazione del form Visualbasic
4. leggi il I) numero, N
5. se il numero N del passo 4 > 0 allora
stampa il messaggio “è positivo” altrimenti
stampa il messaggio “è negativo”, fine se
7. vai al prossimo I e torna al passo 3
8. fine
5) Codifica del corpo del pulsante btnCalcola_Click
Dim m, n, i As Integer
Dim x As String
m = Val(txtM.Text)
For i = 1 To m
x = "inserisci il " & i & ") numero"
n = Val(InputBox(x))
If (n > 0) Then MsgBox("numero è positivo")
Else MsgBox("numero è negativo")
End If
' incremento indice i del ciclo
Next
6) L’esecuzione del programma fa apparire a video N coppie di finestre del tipo seguente:
40
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA 37: Trovare l’algoritmo che letti M numeri naturali, calcoli e stampi a video il
messaggio “è pari” se il numero letto è pari e il messaggio “è dispari” se il numero letto è
dispari. (Suggerimento: usare la funzione Inputbox( ) per leggere gli M numeri e la funzione
Msgbox( ) per stampare gli M messaggi a video; la funzione mod per calcolare il resto)
1) Tabelle delle variabili di input e output
Nome
Descrizione
M
E’ la dimensione dei numeri.
N
E’ il numero letto
I
E’ l’indice del ciclo
X
E’ una stringa di caratteri
Tipo
Numero intero
Numero intero
Numero intero
Stringa
Input
X
X
Output
Lavoro
X
X
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
Non disegnato per mancanza di tempo
2. leggi la dimensione M
3. per I che va da 1 a M
4) Creazione del form Visualbasic
4. leggi il I) numero N
5. se il numero N MOD 2 = 0 allora stampa il
messaggio “è pari”, altrimenti stampa il
messaggio “è dispari”, fine se
7. vai al prossimo I del passo 3
8. fine
5) Codifica del corpo del pulsante btnCalcola_Click
Dim m, n, i As Integer
Dim x As String
m = Val(txtM.Text)
For i = 1 To m
x = "inserisci il " & i & ") numero"
n = Val(InputBox(x))
If (n Mod 2 = 0) Then MsgBox("numero è pari")
Else MsgBox("numero è dispari")
End If
Next
6) L’esecuzione del programma fa apparire a video N coppie di finestre del tipo seguente:
41
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA 38: Trovare l’algoritmo che letti N numeri naturali, calcoli la media tra il 1°
elemento, l’ultimo elemento e l’elemento centrale e la stampi a video.
1) Tabelle delle variabili di input e output
Nome
Descrizione
N
E’ la dimensione dei numeri
Num
E’ il numero letto
I
E’ l’indice del ciclo
Som
Somma dei 3 elementi
Media E’ la media dei 3 elementi
R
E’ il resto della divisione
Q
E’ il quoziente della divisione
Meta
Posizione dell’elemento centrale
2) Algoritmo per passi
1. inizio
2. leggi la dimensione N
3. Assegna a Q, N / 2
4. Assegna a R, N – 2 * Q
5. Se R = 0 allora Meta = N / 2
altrimenti Meta = N / 2 +1, fine se
6. Per I che va da 1 a N
7. Leggi Numero, Num
8. Se I=1 allora assegna a Som, Som+Num
9. Se I=Meta allora assegna a Som, Som+Num
10. Se I=N allora assegna a Som, Som+Num
11. Incrementa I, di 1 e torna al passo 6
12. Assegna a Media, Som / 3
13. Scrivi Media
14. fine
Tipo
Input
Numero intero
X
Numero intero
X
Numero intero
Numero Intero
Numero Decimale
Numero Intero
Numero Intero
Numero Intero
Output
Lavoro
X
X
X
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
(Test effettuato con i seguenti numeri: 1, 2,
3, 4, 5. In tal caso infatti la somma=1+3+5=9
e quindi la media è 9 / 3 = 3 )
5) Codifica del corpo del pulsante btnCalcolaMedia_Click
Dim N, NUM, Q, R As Integer
Dim Meta, SOM, I As Integer
Dim MEDIA As Decimal
N = Val(txtN.Text)
Q = N / 2, R = N - 2 * Q
If R = 0 Then
Meta = Q
Else
Meta = Q + 1
End If
For I = 1 To N
NUM=InputBox("Numero ?”)
If (I = 1) Then
SOM = SOM + NUM
End If
If (I = Meta) Then
SOM = SOM + NUM
End If
If (I = N) Then
SOM = SOM + NUM
End If
Next
MEDIA = SOM / 3
txtMedia.Text = MEDIA
42
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
PROBLEMA 39: Trovare l’algoritmo che letti N numeri naturali, calcoli la media tra gli
elementi di indici pari e la stampi a video.
1) Tabelle delle variabili di input e output
Nome
Descrizione
N
E’ la dimensione dei numeri
Num
E’ il numero letto
I
E’ l’indice del ciclo
Som
Somma degli elementi di indici I pari
Media E’ la media degli elementi di indici pari
Cont
Contatore di elementi di indici pari
2) Algoritmo per passi
1. Inizio
2. Leggi N
3. Assegna a Cont, N / 2
4. Per I che va da 1 a N
5. Leggi Numero, Num
6. Q = I / 2
7. R = I – 2 * Q
8. Se R=0 allora assegna a Som, Som+Num
9. Incrementa I, di 1 e torna al passo 4
10. Assegna a Media, Som / Cont
11. Scrivi Media
12. Fine
Tipo
Input
Numero intero
X
Numero intero
X
Numero intero
Numero Intero
Numero Decimale
Numero Intero
Output
Lavoro
X
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
(Test effettuato con i seguenti numeri: 1, 2,
3, 4, 5, 6, 7. In tal caso infatti la somma = 2
+ 4 + 6 = 12 e quindi la media è 12 / 3 = 4 )
5) Codifica del corpo del pulsante btnCalcolaMedia_Click
Dim N, NUM, Q, R, I As Integer
Dim Som, Cont As Integer
Dim MEDIA As Decimal
N = Val(txtN.Text)
SOM = 0
Cont = N/2
‘ su N numeri letti i pari sono N/2
For I = 1 To N
NUM = InputBox("NUMERO?")
Q = I / 2
R = I - (2 * Q)
If R = 0 Then
SOM = SOM + NUM
End If
Next
MEDIA = (SOM / ContNumIndPari)
txtMedia.Text = MEDIA
La struttura a iterazione a controllo di testa (WHLE - END WHILE)
Essa, nel metodo del diagramma a blocchi, si rappresenta cosi:
43
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Essa permette di iterare una porzione di algoritmo finché è vera una certa condizione stabilita
non a priori. Essa si dice a controllo di testa poiché la condizione è posta all’inizio ovvero
prima del blocco di istruzioni dell’algoritmo da iterare.
Quando si usa tale struttura a iterazione a controllo di testa?
Essa si usa quando non si sa a priori quante volte si deve iterare il corpo dell’ algoritmo e la
porzione di algoritmo da iterare potrebbe essere eseguita anche nessuna volta.
PROBLEMA 40: Trovare un algoritmo che letto un numero NUM, controlli che esso sia non
negativo cioè che è vera la condizione di ciclo NUM > = 0. Nel caso la condizione di ciclo è
vera proceda a leggere altri numeri interi. Nel caso la condizione di ciclo è falsa, esca dal
programma stampando il messaggio “Lettura terminata”. (Suggerimento: Il programma
termina quando l’utente legge un numero NUM < 0)
1) Tabelle delle variabili di input e output
Nome
Descrizione
NUM
E’ il numero da leggere.
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. leggi il primo numero, NUM
3. finché il numero letto NUM è > = 0 esegui
4. leggi un numero
5. vai al passo 3
6. stampa il messaggio “lettura terminata”
7. fine
Tipo
Numero intero
Stringa
Input
X
Output
Lavoro
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
5) Codifica del pulsante btnCalcola_Click
Test al computer
Private Sub btnLeggiNumeri_Click()
Dim num As Integer
Const x As String
x = "inserisci numero"
' lettura del primo numero
num = Val(InputBox(x))
'inizio ciclo while
While (num > = 0)
' lettura dei rimanenti numeri
num = Val(InputBox(x))
End While
'fine ciclo while se la
condizione è falsa
MsgBox("Lettura terminata")
End Sub
PROBLEMA 41: Trovare un algoritmo che letto un numero NUM, controlli che esso sia non
negativo, cioè che è vera la condizione di ciclo NUM > = 0. Nel caso la condizione di ciclo è
vera, se il numero è anche = 0 lo conti e poi continui a leggere altri numeri. Nel caso la
44
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
condizione di ciclo è falsa, esca dal programma stampando a video la quantità dei numeri 0
inseriti (Suggerimento: Il programma termina quando NUM < 0)
1) Tabelle delle variabili di input e output
Nome
Descrizione
NUM
E’ il numero da leggere.
CONT
E’ il contatore dei numeri = 0
X
E’ una stringa di caratteri
Tipo
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
Non disegnato per mancanza di tempo
2. assegna a CONT, 0
3. leggi il primo numero, NUM
4) Creazione del form Visualbasic
4. finché il numero NUM letto è > = 0 esegui
5. se NUM=0 allora incrementa CONT, fine se
6. leggi un altro numero, NUM
7. torna al passo 4
8. stampa il messaggio “lettura terminata”
9. fine
5) Codifica del pulsante btnCalcola_Click
Test al Computer
Private Sub btnContaZero_Click ( )
Dim num, cont As Integer
Dim x As String
' lettura del primo numero
cont = 0
x = “Hai inserito " & cont & "
numeri = 0")
num = Val(InputBox(“Num?”))
'inizio ciclo while
While (num > = 0)
If (num = 0) Then
cont = cont + 1
End If
' lettura dei rimanenti numeri
num = Val(InputBox(“Num?”))
End While
'fine ciclo while se la
condizione è falsa
MsgBox(X)
End Sub
PROBLEMA1 42: Trovare un algoritmo che letto un numero NUM, controlli che esso sia non
negativo, cioè che è vera la condizione di ciclo NUM > = 0. Nel caso la condizione di ciclo è
vera, se il numero è anche positivo lo sommi e lo conti e continui a leggere altri numeri. Nel
caso la condizione di ciclo è falsa, esca dal programma stampando a video la media dei numeri
positivi inseriti. (Suggerimenti: utilizzare una variabile contatore cont che conti i numeri non
negativi letti ed altre due variabili somma e media, il programma termina quando NUM < 0)
45
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
1) Tabelle delle variabili di input e output
Nome
Descrizione
NUM
E’ il numero da leggere.
CONT
E’ il contatore solo dei numeri > 0
SOM
E’ la somma solo dei numeri > 0
MEDIA E’ la media solo dei numeri > 0
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. assegna a CONT e a SOM, 0
3. leggi il primo numero, NUM
4. finché il numero letto è > = 0 esegui
5. se NUM è anche > 0 allora
assegna a SOM, SOM * NUM
e incrementa di 1, CONT, fine se
6. leggi un altro numero, NUM
7. torna al passo 4
8. assegna a MEDIA, SOM / CONT
9. stampa MEDIA
10. fine
Tipo
Numero intero
Numero intero
Numero intero
Decimal
Stringa
Input
X
Output
Lavoro
X
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
5) Codifica del pulsante btnCalcola_Click
Test al Computer
Test al Computer
Private Sub btnMedia_Click( )
Dim num, cont, som As Integer
Dim x As String
Dim media As Decimal
cont = 0
som = 0
x = "inserisci numero"
' lettura del primo numero
num = Val(InputBox(x))
'inizio ciclo while
While (num > = 0)
If (num > 0) then
som = som + num
cont = cont + 1
endif
' lettura dei rimanenti numeri
num = Val(InputBox(x))
End While
'fine ciclo while se la
condizione è falsa
media = som / cont
MsgBox("La media è " & media)
End Sub
PROBLEMA 43: Trovare un algoritmo che letta una parola PAR, controlli che sia diversa da
“ ”. Nel caso la condizione di ciclo è vera, calcoli la sua lunghezza e la sommi e poi continui a
leggere altre parole. Nel caso la condizione di ciclo è falsa, esca dal programma stampando a
46
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
video il messaggio la somma delle lunghezze delle parole inserite. (Suggerimenti: utilizzare la
funzione PAR.lenght per determinare la lunghezza di PAR, una variabile somma, il
programma termina quando la PAR inserita è nulla)
1) Tabelle delle variabili di input e output
Nome
Descrizione
PAR
Parola da leggere.
SOM
Somma delle lunghezze delle parole
L
Lunghezza di una parola
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2 leggi parola, PAR
3. finché la parola, PAR è non nulla esegui
4. assegna ad L, la lunghezza di PAR
5. assegna a SOM, SOM + L
6. leggi un’ altra parola, PAR
7. torna al passo 3
8. stampa SOM
9. fine
Test al Computer
Tipo
Stringa
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Private Sub btnSommaLungh_Click( )
Dim PAR, x As String
Dim som, l As Integer
x = "inserisci la parola"
PAR = InputBox(x)
While PAR <> ""
l = PAR.Length
som = som + l
PAR = InputBox(x)
End While
MsgBox("somma lunghezze è " & som)
End Sub
PROBLEMA 44:
Una parola si dice che è palindroma se è leggibile nello stesso modo da destra a sinistra e
viceversa come ad es. anna, osso, salas, ecc
Trovare un algoritmo che letta una parola PAR, controlli se essa sia palindroma. Per
controllare ciò utilizzare una variabile booleana, BIT inizializzata al valore TRUE. Se alla fine
del ciclo BIT sarà ancora = TRUE allora si stampi a video il messaggio: “la parola” & PAR &
“ è palindroma”, altrimenti se BIT = FALSE, allora si stampi il messaggio “la parola” & PAR
& “ non è palindroma”.
(Suggerimenti: utilizzare la funzione PAR.lenght, il programma termina non appena esso si
rende conto che 2 caratteri simmetrici della PAR analizzata sono diversi assegnando a BIT il
valore FALSE; la condizione del ciclo while deve essere doppia e deve usare l’operatore logico
di congiunzione AND. Tale condizione doppia sarà vera finchè entrambe sono vere).
47
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
1) Tabelle delle variabili di input e output
Nome
Descrizione
PAR
Parola da leggere.
I, J
Indici dei caratteri di PAR
L
Lunghezza di una parola
BIT
Variabile booleana, true e false
2) Algoritmo per passi
1. inizio
2 leggi parola, PAR; assegna ad I, il valore 0
3. finché la parola è non nulla esegui
4. assegna a L, la lunghezza di PAR e BIT, true
5. finchè I < L/2 and BIT = true esegui
6. assegna a J, L - I – 1
3) Diagramma a blocchi
Tipo
Stringa
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
X
7. se PAR(I) < > PAR (J) allora BIT = false
6. incrementa l’indice I, di 1 e vai al passo 5
9. se BIT = true allora stampa il messaggio:
“la parola è palindroma” altrimenti stampa il
messaggio: “la parola non è palindroma”
10. fine
Test al Computer
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
5) Codifica del pulsante btnCalcola_Click
Private Sub btnPalindroma_Click( )
Dim PAR As String
Dim l As Integer ' lungh = lunghezza della parola letta PAR
Dim i, j As Integer ' i e j sono gli indici dei caratteri di PAR
Dim bit As Boolean ' bit è una variabile booleana = true o false
PAR = InputBox("inserisci la parola")
l = PAR.Length
bit = True ‘bit è true finchè i caratteri confrontati sono =
i = 0 ' i=0 poichè il 1° carattere della parola PAR ha indice = 0
While (i < l/2 And bit = True) 'entrambe vere ?
j = l - i – 1
' j contiene la posizione del carattere di PAR simmetrico a i
If (PAR(i) <> PAR(j)) Then
‘bit è false quando i caratteri simmetrici sono diversi
bit = False
End If
i = i + 1
End While
If (bit = True) Then
MsgBox("la parola " & PAR & " è palindroma")
Else
MsgBox("la parola " & PAR & " non è palindroma")
End If
End Sub
48
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
OSSERVAZIONE: Del problema13 produrre su carta il seguente test al diagramma a blocchi
disegnato.
Test dell’algoritmo. Usare PAR = anna in modo da avere i seguenti valori
PAR
anna
Lungh
4
bit
true
i
0
1
2
j
3
2
PAR(i) PAR (j)
a
a
n
n
La struttura a iterazione a controllo di coda (DO - LOOP - UNTIL)
Essa, nel metodo del diagramma a blocchi, si rappresenta cosi:
Essa permette di iterare una porzione di algoritmo finché è falsa una certa condizione
stabilita non a priori. Essa si dice a controllo di coda poiché la condizione è posta alla fine
ovvero dopo il blocco di istruzioni dell’ algoritmo da iterare.
Quando si usa tale struttura a iterazione a controllo di coda?
Essa si usa quando non si sa a priori quante volte si deve iterare il corpo dell’ algoritmo e la
porzione di algoritmo da iterare potrebbe essere eseguita almeno una volta.
RIPETIAMO I PROBLEMI 7,8,9,10, 11 CON IL CICLO DO – LOOP – UNTIL PER FAR
NOTARE LE DIFFERENZE TRA ESSI.
PROBLEMA 45: Trovare un algoritmo che letto un numero NUM, controlli che esso sia non
negativo cioè che è falsa la condizione di ciclo NUM < 0. Nel caso la condizione di ciclo è falsa
proceda a leggere altri numeri interi. Nel caso la condizione di ciclo è vera esca dal
programma stampando il messaggio “Lettura terminata”. (Suggerimento: Il programma
termina quando l’utente legge un numero NUM < 0, nella label descrizione modificare la
proprietà autosize a false)
1) Tabelle delle variabili di input e output
Nome
Descrizione
NUM
E’ il numero da leggere.
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. Fai le seguenti istruzioni
3. leggi il numero, NUM
4. finché NUM < 0 è falsa torna al passo 2
5. stampa il messaggio “lettura terminata”
6. fine
Tipo
Numero intero
Stringa
Input
X
Output
Lavoro
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
49
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
TEST AL COMPUTER
Private Sub btnLeggiNumeri_Click()
'Dichiarazione delle variabili
Dim num As Integer
Dim x As String
x = "inserisci numero"
'inizio ciclo do loop until
Do
num=Val(InputBox(x))
Loop Until (num < 0)
'fine ciclo do loop until se la
condizione è vera
MsgBox("Lettura terminata")
End Sub
PROBLEMA 46: Trovare un algoritmo che letto un numero NUM, controlli che esso sia = 0 e
nel caso positivo lo conti. Successivamente controlli, usando la condizione di ciclo, che esso sia
non negativo cioè che è falsa la condizione NUM < 0. Nel caso la condizione di ciclo è falsa
proceda a leggere altri numeri interi ed a contarli se sono anche = 0. Nel caso la condizione di
ciclo è vera esca dal programma stampando a video la quantità dei numeri 0 inseriti
(Suggerimento: Il programma termina quando l’utente legge un numero NUM < 0)
1) Tabelle delle variabili di input e output
Nome
Descrizione
NUM
E’ il numero da leggere.
CONT
E’ il contatore dei numeri = 0
X
E’ una stringa di caratteri
Tipo
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
2) Algoritmo per passi
3) Algoritmo col diagramma a blocchi
1. inizio
Non disegnato per mancanza di tempo
2. assegna a CONT, 0
3. Fai le seguenti istruzioni:
4) Creazione del form Visualbasic
4. leggi il numero, NUM
5. se NUM = 0 allora incrementa CONT, fine se
6. la condizione NUM < 0 è falsa, vai al passo 4
7. stampa il messaggio “lettura terminata”
8. fine
Test al computer
5) Codifica del pulsante btnCalcola_Click
Private Sub btnContaZero_Click ( )
Dim num, cont As Integer
Dim x As String
' lettura del primo numero
x = "inserisci numero"
cont = 0
50
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
'inizio ciclo do loop until
Do
' lettura dei numeri
num = Val(InputBox(x))
If (num = 0) Then
cont = cont + 1
End If
loop until (num < 0)
'fine ciclo do loop until se la
condizione è vera
MsgBox("Hai inserito " & cont & "
numeri = 0")
End Sub
PROBLEMA 47: Trovare un algoritmo che letto un numero NUM, controlli che esso sia > 0 e
nel caso positivo lo sommi e lo conti. Successivamente controlli, usando la condizione di ciclo,
che esso sia non negativo cioè che è falsa la condizione NUM < 0. Nel caso la condizione di
ciclo è falsa proceda a leggere altri numeri, a sommarli e a contarli se sono anche > 0. Nel caso
la condizione di ciclo è vera esca dal programma stampando a video la media dei numeri
inseriti.
(Suggerimenti: utilizzare una variabile contatore cont che conti i numeri non negativi letti ed
altre due variabili somma e media, il programma termina quando l’utente legge un numero
NUM < 0)
1) Tabelle delle variabili di input e output
Nome
Descrizione
NUM
E’ il numero da leggere.
CONT
E’ il contatore solo dei numeri > 0
SOM
E’ la somma dei numeri > 0
MEDIA E’ la media dei numeri > 0
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. assegna a CONT e a SOM, 0
3. fai le seguenti istruzioni:
4. leggi il numero, NUM
5. se NUM > 0 allora
assegna a SOM, SOM * NUM
e incrementa di 1, CONT, fine se
6. finchè NUM < 0 è falso, vai al passo 4
7. assegna a MEDIA, SOM / CONT
8. stampa MEDIA
9. fine
Test al computer
Tipo
Numero intero
Numero intero
Numero intero
Decimal
Stringa
Input
X
Output
Lavoro
X
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
5) Codifica del pulsante btnCalcola_Click
Private Sub btnMedia_Click()
Dim num, cont, som As Integer
Dim x As String
Dim media As Decimal
' lettura del primo numero
51
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
x = "inserisci numero"
cont = 0
som = 0
'inizio ciclo do loop until
Do
num = Val(InputBox(x))
If (num > 0) Then
som = som + num
cont = cont + 1
End If
Loop Until (num < 0)
'fine ciclo do loop until se
la condizione è vera
media = som / cont
MsgBox("La media è" & media)
End Sub
PROBLEMA 47: Trovare un algoritmo che letta una parola PAR, controlli che la sua
lunghezza sia > 0 e nel caso positivo la sommi. Successivamente controlli, usando la condizione
di ciclo, che la parola non sia = “ “, cioè che è falsa la condizione PAR = “ ”. Nel caso la
condizione di ciclo è falsa proceda a leggere altre parole ed a sommarne le lunghezze. Nel caso
la condizione di ciclo è vera esca dal programma stampando a video il messaggio “somma
lunghezze è “ & som. (Suggerimenti: utilizzare la funzione PAR.lenght per determinare la
lunghezza di PAR, una variabile somma, il programma termina quando la PAR inserita è
nulla)
1) Tabelle delle variabili di input e output
Nome
Descrizione
PAR
Parola da leggere.
SOM
Somma delle lunghezze delle parole
L
Lunghezza di una parola
X
E’ una stringa di caratteri
2) Algoritmo per passi
1. inizio
2. fai le seguenti istruzioni:
3. leggi la parola PAR
4. assegna ad L, la lunghezza di PAR
5. se la lunghezza L > 0 allora
assegna a SOM, SOM + L, fine se
6. finchè PAR= “ ” è falso torna al passo 3
8. stampa SOM
9. fine
Test al Computer
Tipo
Stringa
Numero intero
Numero intero
Stringa
Input
X
Output
Lavoro
X
X
X
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
5) Codifica del pulsante btnCalcola_Click
Private Sub btnSommaLungh_Click( )
Dim PAR, x As String
Dim som, l As Integer
52
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
x = "inserisci la parola"
Do
PAR = InputBox(x)
l = PAR.Length
If (l > 0) Then
som = som + l
End if
Loop Until (PAR = "")
MsgBox("somma lunghezze è " &
som)
End Sub
PROBLEMA 48
Una parola si dice che è palindroma se è leggibile nello stesso modo da destra a sinistra e
viceversa come ad es. anna, ossesso, ecc.
Trovare un algoritmo che letta una parola PAR, controlli se essa sia palindroma. Per
controllare ciò utilizzare una variabile booleana, BIT inizializzata al valore TRUE. Se alla fine
del ciclo BIT sarà ancora = TRUE allora si stampi a video il messaggio: “la parola” & PAR &
“ è palindroma”, altrimenti se BIT = FALSE, allora si stampi il messaggio “la parola” & PAR
& “ non è palindroma”.
(Suggerimenti: utilizzare la funzione PAR.lenght; il programma termina non appena esso si
rende conto che 2 caratteri simmetrici della PAR analizzata sono diversi assegnando a BIT il
valore FALSE; la condizione del ciclo do loop until deve essere doppia e deve usare
l’operatore logico di congiunzione OR. Tale condizione doppia sarà falsa finchè entrambe
sono false )
1) Tabelle delle variabili di input e output
Nome
Descrizione
PAR
Parola da leggere.
I, J
Indici dei caratteri di PAR
L
Lunghezza di una parola
BIT
Variabile booleana, true e false
Tipo
Stringa
Numero intero
Numero intero
Stringa
2) Algoritmo per passi
1. inizio
2 leggi parola, PAR
3. assegna a L, lenght(PAR), BIT, true, I a 0
5. fai le seguenti istruzioni:
6. Assegna a J, L-I-1
7. se PAR(I) < > PAR(J) allora a BIT, False
8. incrementa I, di 1
6. finchè (I >L/2 OR BIT=False) è falsa vai al 5.
7. se BIT=True allora “parola palindroma”
altrimenti stampa “parola non palindroma”
10. fine
3) Diagramma a blocchi
Input
X
Output
Lavoro
X
X
X
Test al Computer
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
53
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
5) Codifica del pulsante btnCalcola_Click
Private Sub btnPalindroma_Click( )
Dim PAR, x As String
Dim l As Integer ' lungh = lunghezza della parola letta PAR
Dim i, j As Integer ' i e j sono gli indici dei caratteri di PAR
Dim bit As Boolean ' bit è una variabile booleana = true o false
x = "inserisci la parola"
i = 0 ' i=0 poichè il 1° carattere della parola PAR ha indice = 0
PAR = InputBox(x)
l = PAR.Length
bit = True 'bit è true finchè i caratteri confrontati sono =
Do
j = l - i - 1
' j contiene la posizione del carattere di PAR simmetrico a i
If (PAR(i) <> PAR(j)) Then
'bit è false quando i caratteri simmetrici sono diversi
bit = False
End If
i = i + 1
Loop Until (i > = l / 2 Or bit = False) 'entrambe false ?
If (bit = True) Then
MsgBox("la parola " & PAR & " è palindroma")
Else
MsgBox("la parola " & PAR & " non è palindroma")
End If
End Sub
OSSERVAZIONE: Del problema18 produrre su carta il seguente test al diagramma a blocchi
disegnato:
PAR = anna in modo da avere i seguenti valori
PAR
anna
Lungh
4
bit
true
i
0
1
2
j
3
2
PAR(i)
a
n
PAR (j)
a
n
Produrre altri test a vostra scelta su carta,
testando l’algoritmo con altre parole scelte
a caso.
ESERCIZI PER CASA CON IL CICLO WHILE O CON IL CICLO DO LOOP UNTIL
PROBLEMA 49: Per una serata da ballo al "Maccheroni"
di Latina, leggere una serie di amici da invitare, finchè
l'utente non inserisce la parola "FINE" e stampare quanti
hanno nel contatto come ultimo carattere la vocale "n"
(pulsante LeggiStampa)
(Ad es. se leggo i contatti: TogniN, AlbertoN, MarangoN,
De Carlini, Baldassarre, ecc. devo stampare: contN = 3)
PROBLEMA 50: Per una indagine Statistica, leggere una
serie di nomi di Supermercati, finchè l'utente non inserisce
la parola "STOP" e stampare quanti hanno il nome lungo
al massimo 5 caratteri (pulsante LeggiStampa) (Ad es. se
leggo i nomi: Todis, Sidis, Conad, Lidl, Eurospin ecc. devo
stampare: cont5 = 3)
54
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Parte 5 - Definizione di Array-1 dimensione
Un array é un insieme di variabili, che occupano celle consecutive in memoria. Un array ha le
seguenti caratteristiche: un nome, un tipo, che è lo stesso per tutte le variabili, una dimensione,
pari al numero di variabili utilizzate, un indice, che individua la posizione di ogni variabile
nell’array. Un array ad una dimensione si chiama anche vettore; un array a 2 dimensioni si chiama
anche matrice.
Esempio1
Un array è l’insieme consecutivo dei piani, poiché ha le seguenti caratteristiche: si chiama
palazzo (nome), tutti i piani ospitano persone (stesso tipo), i piani sono di un certo numero
(dimensione), ogni piano è individuato da un numero del piano (indice).
Esempio2
Un array è l’insieme consecutivo dei cassetti, poiché ha le seguenti caratteristiche: si chiama
cassettiera (nome), tutti i cassetti contengono ad es. magliette (stesso tipo), i cassetti sono di un
certo numero (dimensione), ogni cassetto è individuato da un numero del cassetto (indice).
Esempio3
Un array è l'insieme delle lettere della lingua italiana, poiché ha le seguenti caratteristiche: si
chiama Alfabeto (nome), tutti gli elementi sono lettere (stesso tipo), gli elementi sono di un certo
numero (dimensione = 21), ogni lettera è individuata da un numero che ne individua la posizione
(indice)
Dichiarazione degli Array in VisualBasic.Net
- DIM Alfabeto (20) as string è la dichiarazione dell’array, costituito dalle 21 lettere dell’alfabeto
- DIM MedieMaterie (9) as decimal è la dichiarazione dell’array, fatto dai 10 voti medi delle
materie
- DIM V(5) as integer è la dichiarazione del’array V, costituito ad es. dai primi 6 multipli del 2.
Indice di un array e singoli elementi di un array
L’indice degli elementi di un array parte da 0 e in genere si indica con le variabili I, J, ecc.
Ogni singolo elemento di un array, cioè ogni singola variabile ha per nome, il nome dell’array
seguito dall’indice, tra due parentesi tonde, che individua la posizione della variabile
nell’array.
Esempio
Sia DIM V(5) as integer, un array costituito dai primi 6 multipli del 2, vediamo come varia
l’indice nell’array V e come si chiamano le singole variabili.
ELEMENTI
VARIABILE
VETTORE V
Æ
2
Æ
V(0)
4
V(1)
6
V(2)
10
V(3)
12
V(4)
14
V(5)
55
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
INDICE
Æ
0
1
2
3
4
5
A che serve la struttura dati Array?
Essa serve a conservare in memoria dati necessari per successive elaborazioni. Ad esempio
volendo calcolare quali voti di studenti superano la media, non utilizzando l’array, bisognerebbe:
1) leggere i voti degli studenti una prima volta e calcolarne la media dei voti della classe;
2) leggere i voti degli studenti una seconda volta per calcolare quanti voti superano la media.
Invece, utilizzando l’array, i voti letti nel 1) punto si conservano nell’array in modo che sono
disponibili per risolvere il 2 punto, senza rileggerli.
Operazioni di base sugli Array
Le operazioni di base che è possibile effettuare sugli array sono:
- lettura del vettore, cioè memorizzazione di tutti gli elementi letti, in un vettore
- stampa del vettore, cioè stampa in una combobox o in una listbox, degli elementi del vettore
- ricerca della posizione di un elemento, scelto dall’utente, nel vettore partendo dal 1° elemento.
- cancellazione di un elemento, scelto dall’utente, nel vettore dopo averlo cercato e trovato.
- inserimento di un nuovo elemento, scelto dall’utente, nell’array sovradimensionato.
- ordinamento crescente o decrescente degli elementi di un vettore
Variabili Locali e globali
Le variabili locali sono quelle visibili solo all’interno di un pulsante. Quelle globali sono
visibili in tutti i pulsanti del form. D’ora in poi nella tabella delle variabili, inseriremo solo
quelle locali.
PROBLEMA 51: Trovare un algoritmo che permetta di leggere 10 numeri interi e di
memorizzarli in un vettore V. Successivamente stampare a video tutti gli elementi del vettore
V creato
1) Tabelle delle variabili Locali di input e output dei Pulsanti Lettura e Stampa
Nome
Descrizione
Tipo
Input Output
I
Indice del ciclo FOR caratteri
Intero
2.1) Algoritmo Pulsante Lettura
1. Inizio
2. Per I che va da 0 a 9
3. leggi V( I )
Lavoro
X
4.1) Codifica Variabili Globali
Dim V(9) As Integer
Const x As String = "V("
Const y As String = ") = "
56
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4. Incrementa I e vai al passo 2
5. Fine
2.2) Algoritmo Pulsante Stampa
1. Inizio
2. Per I che va da 0 a 9
3. Scrivi V( I ) (nella combobox)
4. Incrementa I e vai al passo 2
5. Fine
3) Creazione del form Visualbasic. Net
4.2) Codice pulsante BtnLettura_Click
Dim I As Integer
For I = 0 To 9
V(I)=Val(InputBox(x & I + 1 & y))
Next
4.3) Codice pulsante BtnStampa_Click
Dim I As Integer
For I = 0 To 9
cmbStampa.Items.Add(x & I & y & V(I))
Next
4.4) Codice pulsante BtnCancella_Click
Dim I As Integer
For I = 0 To 9
cmbStampa.Items.Remove(x & I & y & V(I))
Next
5) L’esecuzione del programma fa apparire a video finestre per l’inputbox usate per la
lettura, la combobox per l’output, il pulsante cancella che elimina gli elementi dalla
combobox.
PROBLEMA 52: Trovare un algoritmo che legga un vettore V di N numeri interi e l’ho
stampi a video in una combobox. Successivamente legga un elemento da ricercare nel vettore
e controlli se tale elemento è presente o meno nel vettore. Se l’elemento è presente, stampare a
video il messaggio “elemento trovato” e la sua posizione nel vettore, altrimenti stampare a
video il messaggio “elemento non trovato”. (Suggerimento: utilizzare il ciclo while o do loop
until, poiché il ciclo for non permette di gestire la condizione non prestabilita Trovato = False)
1) Tabelle delle variabili Locali di input e output del Pulsante Ricerca
Nome
Descrizione
Tipo
Input
I
Indice del ciclo
Intero
POS
Posizione dell’ elemento nel vettore
Intero
ELEM
Elemento da cercare nel vettore
Intero
X
TROVATO = True se l’elemento è stato trovato
Boolean
2) Algoritmo Pulsante Ricerca
1. Inizio
2. Assegna a Trovato, False
3. Assegna ad I, 0
Output
Lavoro
X
X
X
5.1) Codifica Variabili Globali
Dim V(49), N As Integer
Const x As String = "V("
Const y As String = ") = "
57
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4. Leggi elemento da cercare, Elem
5. Finchè I< N and Trovato = False, fai
6. Se V( I ) = Elem allora
Trovato = True, Pos = I, fine se
7. Incrementa I e vai al passo 5.
8. Se Trovato = True allora Stampa
“Elemento trovato” in POS, altrimenti
“Elemento non trovato”, fine se
9. Fine
3) Creazione del form Visualbasic. Net
5.2) Codice pulsante BtnLettura_Click
Dim I As Integer
N = Val(txtN.Text)
For I = 0 To N - 1
V(I) = Val(InputBox(x & I + 1 & y))
Next
5.3) Codice pulsante BtnRicerca_Click
Dim POS, ELEM, I As Integer
Dim TROVATO As Boolean
I = 0
TROVATO = False
ELEM = Val(txtElem.Text)
' ELEM = elemento da cercare nel vett
4) Diagramma a blocchi
Non svolto per mancanza di tempo
While I < N And TROVATO = False
If V(I) = ELEM Then
TROVATO = True
POS = I
End If
I = I + 1
End While
If (TROVATO = True) Then
txtPos.Text = POS
lblRicerca.Text = "Elemento
trovato"
Else
lblRicerca.Text = "ELEM NON
TROVATO"
End If
PROBLEMA 53: Trovare un algoritmo che legga un vettore V di N numeri interi e l’ho
stampi a video in una combobox. Successivamente legga un elemento da ricercare nel vettore
e controlli se tale elemento è presente o meno nel vettore. Se l’elemento è presente, cancellarlo
compattando di una posizione verso l’alto gli elementi dell’array e stampando a video la
nuova dimensione del vettore.
(Suggerimento: L’ordine dei pulsanti da cliccare è: lettura, stampa, cancella, elimina, stampa)
1) Tabelle delle variabili Locali di input e output Pulsante RicercaElimina
Nome
Descrizione
Tipo
Input
I
Indice del ciclo FOR
Intero
POS
Posizione dell’ elemento nel vettore
Intero
ELEM
Elemento da cercare nel vettore
Intero
X
TROVATO = True se l’elemento è stato trovato
Intero
J
Indice ciclo per il compattamento del vettore Boolean
2) Algoritmo Pulsante RicercaElimina
1. Inizio
2. Assegna a Trovato, False
3. Assegna ad I, 0
Output
Lavoro
X
X
X
X
5.1) Codifica Variabili Globali
Dim V(49), N As Integer
Const x As String = "V("
Const y As String = ") = "
58
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4. Leggi elemento da cercare, Elem
5. Finchè I< N and Trovato = False, fai
6. Se V( I ) = Elem allora
Trovato = True, Pos = I, fine se
7. Incrementa I e vai al passo 5.
8. Se Trovato = True allora
8.1 Per J che va da POS a N-2
8.2
assegna a V(J), V(J+1)
8.3 Incrementa J e vai al passo 8.1
8.4 Decrementa di 1, la dimensione N del vett.
9. Fine se
10. Fine
3) Creazione del form Visualbasic. Net
4) Diagramma a blocchi
Non svolto per mancanza di tempo
5.2) Codice pulsante BtnLettura_Click
Dim I As Integer
N = Val(txtN.Text)
For I = 0 To N - 1
V(I) = Val(InputBox(x & I + 1 & y))
Next
5.3) Codice RicercaElimina_Click
Dim POS, ELEM, I, J As Integer
Dim TROVATO As Boolean
I = 0
TROVATO = False
' elemento da ricercare ed elim
ELEM = Val(txtElem.Text)
While I < N And TROVATO = False
If V(I) = ELEM Then
TROVATO = True
POS = I
End If
I = I + 1
End While
If (TROVATO = True) Then
' ciclo per il compattamento vett
For J = POS To N - 2
V(J) = V(J + 1)
Next
N=N-1
' la dimensione N del vettore
diminuisce di 1, dopo il
compattamento del vettore
txtNewN.Text = N
End If
PROBLEMA 54: Trovare un algoritmo che legga un vettore V di N elementi < 50 che è la
dimensione massima del vettore e l’ho stampi a video in una combobox. Successivamente
legga un nuovo elemento da inserire in coda al vettore e stampi a video la nuova dimensione
del vettore.
(Suggerimento: L’ordine dei pulsanti da cliccare è: lettura, stampa, cancella, inserisci,
stampa)
1) Tabelle delle variabili Locali di input e output del Pulsante Inserisci
Nome
Descrizione
Tipo
Input
ELEM
Elemento da cercare nel vettore
Intero
X
2) Algoritmo Pulsante Inserisci
1. Inizio
2. Leggi elemento da inserire, Elem
3. Assegna a V(N), Elem
Output
Lavoro
4.1) Codifica Variabili Globali
Dim V(49), N As Integer
Const x As String = "V("
Const y As String = ") = "
59
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4. Incrementa di 1, la dimensione N del vettore
5. Mostra a video, la nuova dimensione N
6. Fine se
3) Creazione del form Visualbasic. Net
4.2) Codice pulsante BtnLettura_Click
Dim I As Integer
N = Val(txtN.Text)
For I = 0 To N - 1
V(I) = Val(InputBox(x & I + 1 & y))
Next
4.3) Codice Inserisci_Click
Dim ELEM As Integer
' elemento da ricercare ed elim
ELEM = Val(txtElem.Text)
V(N)= Elem
N = N + 1
txtNewN.Text = N
METODO DI ORDINAMENTO CRESCENTE DI UN VETTORE PER SELEZIONE
In sintesi, dati N elementi del vettore, bisogna trovare l’elemento minimo del vettore e
portarlo al 1° posto, poi trovare l’elemento minimo degli N-1 elementi rimanenti del vettore e
portarlo al 2° posto, poi trovare l’elemento minimo degli N-2 elementi del vettore e portarlo al
3° posto e cosi via.
Più in dettaglio, si deve confrontare il 1° elemento del vettore con il secondo. Se il 1° elemento
è > del 2° elemento si provvede a scambiarli di posto, altrimenti si passa a confrontare il 1°
elemento con il 3° elemento e cosi via fino a confrontare il 1° elemento con l’n-simo. A questo
punto il metodo descritto si applica sui rimanenti N-1 elementi del vettore. Per far ciò bisogna
utilizzare 2 cicli l’uno dentro all’altro: un 1° ciclo su una variabile indice I = 0 a N - 2 e un 2°
ciclo su una variabile indice J = I + 1 a N - 1 e una variabile Temp per effettuare lo scambio
quando un elemento > dell’elemento successivo.
PROBLEMA 55: Trovare un algoritmo che legga un vettore V di N numeri interi e l’ho
stampi a video in una listbox. Successivamente ordini gli elementi inseriti nel vettore in modo
crescente e stampi a video in un'altra listbox il vettore ordinato.
1) Tabelle delle variabili Locali di input e output Pulante Ordina
Nome
Descrizione
Tipo
I
Indice del ciclo più esterno
Intero
J
Indice del ciclo più interno
Intero
Temp
Variabile usata per lo scambio
Intero
2) Algoritmo Pulsante Ordina
1. Inizio
2. Leggi quantità di elementi N da inserire
3. Per I che va da 0 a N-2
4. Per J che va da I+1 a N-1
5. Se V(I) > V(J) allora scambiali, cioè:
temp=V(I), V(I)=V(J), V(J)=temp
6. Fine se
Input
Output
Lavoro
X
X
X
7. Incrementa J e torna al passa 4
8. Incrementa I e torna al passa 3
9. Fine
4) Diagramma a blocchi
Non svolto per mancanza di tempo
60
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
3) Creazione del form Visualbasic. Net
5.1) Codifica Variabili Globali
5.2) Codice pulsante BtnLettura_Click
Dim V(49), N As Integer
Const x As String = "V("
Const y As String = ") = "
Dim I As Integer
N = Val(txtN.Text)
For I = 0 To N - 1
V(I) = Val(InputBox(x & I + 1 & y))
Next
5.3) Codice Ordina_Click
5.4) Codice BtnCancella_Click
Dim I, J, temp As Integer
For I = 0 To N-2
For J = I + 1 To N-1
If (V(I) > V(J)) Then
temp = V(I)
V(I) = V(J)
V(J) = temp
End If
Next
Next
Dim I As Integer
For I = 0 To N - 1
VetNonOrd.Items.Remove(x & I & y & V(I))
Next
5.6) Codice Btn1-Stampa_Click
5.7) Codice Btn2-Stampa_Click
Dim I As Integer
For I = 0 To N - 1
VetNonOrd.Items.Add(x & I &
y & V(I))
Next
Dim I As Integer
For I = 0 To N - 1
VetOrdinato.Items.Add(x & I &
y & V(I))
Next
5.5) Codice BtnCancella_Click
For I = 0 To N - 1
VetOrdinato.Items.Remove(x & I & y &
V(I))
Next
PROBLEMA 56: Trovare un algoritmo che letto un vettore V di N numeri interi, stampi a
video in una listbox tutti gli elementi del vettore che hanno indice (cioè posizione) pari.
1) Tabelle delle variabili di input e output
Nome
Descrizione
Tipo
Input Output
I
Indice del ciclo
Intero
Q
Quoziente del rapporto di I con 2
Intero
R
Resto del rapporto di I con 2
Intero
2) Algoritmo Pulsante StampaPari
3) Creazione del form Visualbasic. Net
1. Inizio
2. Per I che va da 0 a N-1
3. Assegna a Q, I / 2
4. Assegna a R, I – 2*Q
5. Se R = 0 allora stampa nella lstBox, fine se
6. Incrementa I e torna al passo 2
7. Fine
Lavoro
X
X
X
61
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4.0) Codifica Variabili Globali
4.1) Codice pulsante BtnLettura_Click
Dim V(49), N As Integer
Const x As String = "V("
Const y As String = ") = "
Dim I As Integer
N = Val(txtN.Text)
For I = 0 To N - 1
V(I) = Val(InputBox(x & I + 1 & y))
Next
4.2) Codice StampaPari_Click
4.3) Codice Btn1-Stampa_Click
Dim I, Q, R As Integer
For I = 0 To N - 1
Q = I / 2;
R = I - Q * 2
If (R = 0) Then
VetPari.Items.Add(x & I &
y & V(I))
End If
Next
Dim I As Integer
For I = 0 To N - 1
VetLetto.Items.Add(x & I & y & V(I))
Next
4.5) Codice BtnCancella_Click
4.4) Codice BtnCancella_Click
For I = 0 To N - 1
VetPari.Items.Remove(x & I & y
& V(I))
Next
Dim I As Integer
For I = 0 To N - 1
VetLetto.Items.Remove(x & I & y &
V(I))
Next
PROBLEMA 57. Trovare un algoritmo che letto un vettore V di N numeri interi, stampi a video
la posizione del massimo e del minimo elemento del vettore.
1) Tabelle delle variabili Locali di input e output del Pulsante Calcola
Nome
Descrizione
Tipo
Input
I
Indice del ciclo
Intero
Max
E’ il massimo elemento del vettore
Intero
Min
E’ il minimo elemento del vettore
Intero
PMax
E’ la posizione del Max elemento del vettore
Intero
PMin
E’ la posizione del Min elemento del vettore
Intero
Output
Lavoro
X
X
X
X
X
2) Algoritmo Pulsante Calcola
1. Inizio
2. Assegna a Max e a Min, V(0)
3. Per I che va da 1 a N-1
4. Se V(I) > Max allora Max, V(I), PMax, I
5. Se V(I) < Min allora Min, V(I), PMin, I
6. Incrementa I e torna al passo 3
7. Stampa PMax e PMin
8. Fine
3) Creazione del form Visualbasic. Net
4.1) Codifica Variabili Globali
4.2) Codice BtnCalcola_Click
Dim V(49), N As Integer
Const x As String = "V("
Const y As String = ") = "
Dim I, MIN, MAX As Integer
Dim PMIN, PMAX As Integer
' inizializzo il minimo e il massimo
ad un valore iniziale
MIN = V(0)
MAX = V(0)
For I = 1 To N - 1
4.3) Codice pulsante BtnLettura_Click
Dim I As Integer
N = Val(txtN.Text)
62
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
For I = 0 To N - 1
V(I) = Val(InputBox(x & I + 1 &
y))
Next
4.4) Codice pulsante BtnStampa_Click
Dim I As Integer
For I = 0 To N - 1
lstVet.Items.Add(x & I & y &
V(I))
Next
If V(I) > MAX Then
MAX = V(I)
PMAX = I
End If
If V(I) < MIN Then
MIN = V(I)
PMIN = I
End If
Next
txtPMax.Text = PMAX
txtPMin.Text = PMIN
PROBLEMA 58. Trovare un algoritmo che letto un vettore V di N numeri interi, calcoli la loro
media e la stampi a video e successivamente conti e stampi quanti numeri superano la media
1) Tabelle delle variabili Locali di input e output del Pulsante Calcola
Nome
Descrizione
Tipo
Input
I
Indice del ciclo
Intero
Somma
Somma degli elementi del vettore
Intero
Media
E’ la media degli elementi del vettore
Intero
ContM
Conta quanti numeri superano la media
Intero
2) Algoritmo Pulsante Calcola
1. Inizio
2. Assegna a Somma, 0 e a ContM, 0
3. Per I che va da 0 a N-1
4. Assegna a Somma, Somma + V(I)
5. Incrementa I e torna al passo 2
6. Assegna a Media, Somma / N
7. Per I che va da 0 a N-1
8. Se V(I) > Media allora ContM, ContM+1
9. Stampa ContM
10. Fine
Output
Lavoro
X
X
X
X
3) Creazione del form Visualbasic. Net
4.1) Codice BtnCalcola_Click
Dim SOMMA, I, CONTM As Integer
Dim Media As Decimal
SOMMA = 0
CONTM = 0
For I = 0 To N - 1
SOMMA = SOMMA + V(I)
Next
Media = SOMMA / N
For I = 0 To N - 1
If V(I) > Media Then
CONTM = CONTM + 1
End If
Next
txtContM.Text = CONTM
txtMedia.Text = Media
Parte 6 - Definizione di Vettori Paralleli
Due vettori V1 e V2 si dicono paralleli quando il 1° elemento di V1 è associato al 1° elemento
di V2, il 2° elemento di V1 è associato al 2° elemento di V2, …, l’ultimo elemento di V1 è
associato all’ultimo elemento di V2.
63
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
Esempio: Sia V1 = VNomi, il vettore dei nomi degli attaccanti dei calciatori di serie A e sia V2
= VGol il vettore dei gol segnati da ciascun attaccante. Supponiamo che essi siano paralleli,
cioè tra essi vi sia l’associazione seguente:
In questo modo cercando ad es. un cognome nel 1° vettore è possibile trovare per associazione
subito il corrispondente numero di gol nel 2° vettore.
PROBLEMA 59. Utilizzare 2 vettori cosiddetti paralleli. Trovare un algoritmo che letti: un 1)
vettore VNomi di N nomi di attaccanti di serie A del campionato di calcio 2011 / 2012 e un 2)
vettore VGol di N interi contenente il numero di gol segnati da ciascun attaccante, stampi a video
il nome dell’attaccante che ha segnato più gol e il nome dell’attaccante che ha segnato meno gol.
1) Tabelle delle variabili Locali di input e output del Pulsante Calcola
Nome
Descrizione
Tipo
Input
I
Indice del ciclo
Intero
PGol
Max numero dei gol
Intero
MGol
Minimo numero dei gol
Intero
NomePGol Nome del giocatore che ha segnato più gol
Stringa
NomeMGol Nome del giocatore che ha segnato meno gol
Stringa
Output
Lavoro
X
X
X
X
X
2) Algoritmo Pulsante Calcola
1. Inizio
2. Assegna a PGol il valore iniziale 0 e a MGol il valore iniziale 100
3. Per I che va da 0 a N-1
4. se V(I) > PGol allora assegna PGol, VGol (I) e a NomePGol, VNome (I), fine se
5. se V(I) < MGol allora assegna MGol, VGol (I) e NomeMGol, VNome (I), fine se
6. Incrementa I e torna al passo 3
7. Stampa NomePGol e NomeMGol
8. Fine
3) Creazione del form Visualbasic. Net
4.1) Codifica Variabili Globali
4.2) Codice pulsante BtnLettura_Click
Dim VGol(49), N As Integer
Dim VNomi(49) As String
Const x As String = "V("
Const y As String = ") = "
Dim I As Integer
N = Val(txtN.Text)
For I = 0 To N - 1
' essendo vnomi un array di stringhe
la funzione inputbox non deve avere
64
“Programmazione in VisualBasic .Net: sequenza, selezione, cicli e array” - Liceo “Pizzi” – Classi 4TA e 4TC - Prof. M. Simone - A.S. 2013 / 2014
4.3) Codice StampaVNomi_Click
Dim I As Integer
For I = 0 To N - 1
lstVN.Items.Add(x & I & y &
VNomi(I)
Next
4.4) Codice BtnCancellaVNomi_Click
Dim I As Integer
For I = 0 To N - 1
lstVN.Items.Remove(x & I & y &
VNomi(I))
Next
4.6) Codice StampaVGol_Click
E’ simile alla codifica del punto 4.3
4.7) Codice BtnCancellaVGol_Click
E’ simile alla codifica del punto 4.4
la funzione val
VNomi(I) = InputBox(x & I + 1 & y)
Next
4.5) Codice BtnCalcola_Click
Dim PGol, MGol, I As Integer
Dim NomePGol, NomeMGol As String
' inizializzazione delle variabili
locali Pgol e MGol a dei valori
non plausibili
PGol = 0; MGol = 100
NomePGol = ""; NomeMGol = ""
For I = 0 To N - 1
If (VGol(I) > PGol) Then
PGol = VGol(I)
NomePGol = VNomi(I)
End If
If (VGol(I) < MGol) Then
MGol = VGol(I)
NomeMGol = VNomi(I)
End If
Next I
txtPGol.Text = NomePGol
txtMGol.Text = NomeMGol
65