MODULO 2 – Algoritmi con le strutture di Selezione...
Transcript of MODULO 2 – Algoritmi con le strutture di Selezione...
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
1
MODULO 2 – Algoritmi con le strutture di Selezione e cicliche in VB.Net
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 Dim N1 As Integer
' INPUT
N1=Val(txtN1.text)
' CALCOLO
If N1 > 0 Then
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)
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
quantità, in base alla quantità richiesta effettua uno
tasso di sconto diverso.
In Visual Basic.Net
Dim prezzo, quantità, tasso As
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
2
Problema1: Dati due numeri N1 e N2, determinare il minimo e il massimo e stamparli
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
N1
N2
MIN
MAX
Primo Numero
Secondo Numero
Minimo tra i due numeri
Massimo tra due numeri
Numero intero
Numero intero
Numero intero
Numero intero
X
X
X
X
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
3) Algoritmo col diagramma a blocchi Non disegnato perchè è semplice
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
Problema2 : Dati due numeri N1 e N2, ordinarli in ordine crescente e stamparli a video
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
N1
N2
Primo Numero
Secondo Numero
Numero intero
Numero intero
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
3
Problema3: Dati due numeri N1 e N2, calcolare quello positivo e quello negativo e stamparlo
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
N1
N2
Primo Numero
Secondo Numero
Numero intero
Numero intero
X
X
POS
NEG
Numero Positivo
Numero Negativo
Numero Intero
Numero Intero
X
X
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
3) Algoritmo col diagramma a blocchi Non disegnato perchè è semplice
5) Codifica del corpo dei pulsanti di calcolo
Dim N1, N2, POS, NEG As Integer
N1 = Val(txtN1.text)
N2 = Val(txtN2.text)
If 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
Problema4: Dati due numeri N1 e N2, determinare quello pari e quello dispari e stamparli
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
N1
N2
Primo Numero
Secondo Numero
Numero intero
Numero intero
X
X
PARI
DISP
Numero Pari
Numero Dispari
Numero Intero
Numero Intero
X
X
Q1,Q2
R1,R2
Quozienti dei numeri N1 e N2
Resti delle divisioni per 2
Numero Intero
Numero Intero
X
X
2) Algoritmo per passi 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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
4
Problema5: Dati tre numeri N1,N2 e N3 determinare quello Max e stamparlo a video
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
N1
N2
N3
Primo Numero
Secondo Numero
Terzo Numero
Numero intero
Numero intero
Numero intero
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
PROBLEMA6: 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 Tipo Input Output Lavoro
N1
N2
N3
SOM
Primo Numero
Secondo Numero
Terzo Numero
Somma dei numeri positivi
Numero intero
Numero intero
Numero intero
Numero intero
X
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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 SOM=SOM+N1 End If
If N2 > 0 Then SOM=SOM+N2 End If
If N3 > 0 Then SOM=SOM+N3 End If
' output lbl5.text = SOM
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
5
La variabile conteggio
Una variabile conteggio è un contatore che viene inizializzato al valore zero1 e poi viene
incrementato di una unità ogni qual volta si verifica una certa condizione.
PROBLEMA7: 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 Tipo Input Output Lavoro
N1
N2
N3
CONTPOS
Primo Numero
Secondo Numero
Terzo Numero
Contatore di numeri positivi
Numero intero
Numero intero
Numero intero
Numero intero
X
X
X
X
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 perchè è semplice
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
PROBLEMA8: 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 Tipo Input Output Lavoro
N1
N2
N3
CONTPARI
Q1, Q2
R1, R2
Primo Numero
Secondo Numero
Terzo Numero
Contatore dei numeri pari
Quozienti Q1 e Q2
Resto R1 e R2
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
X
X
X
X
X
X
1 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.
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
6
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
PROBLEMA9: 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 Tipo Input Output Lavoro
a
b
c
T
Primo Numero
Secondo Numero
Terzo Numero
Variabile Temporanea
Numero intero
Numero intero
Numero intero
X
X
X
X
X
X
X
2) Algoritmo per passi 1. inizio
2. dammi i valori a, b, c
3. se a > b scambiali di posto in modo che il
minimo sia al 1) posto
4. se a > c scambiali di posto in modo che il
minimo sia al 1) posto
5. se b > c scambiali di posto in modo che il
minimo sia al 2) posto
6. stampa a video i nuovi valori di a,b e c
7. fine
4) Creazione del form Visualbasic. Net
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
5) Codifica del corpo del pulsante calcola
Dim t, a, b, c As Integer
' input
a = Val(txtA.Text)
b = Val(txtB.Text)
c = Val(txtC.Text)
' 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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
7
PROBLEMA 10.
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 Tipo Input Output Lavoro
a
b
qb
Numero da verificare
Parte intera radice quadrata di a
Quadrato di b
Numero intero
Numero intero
Numero intero
X
X
X
X
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 perchè è semplice
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
PROBLEMA11: 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 Tipo Input Output Lavoro
b
c
x
Coefficiente della x
Coefficiente termine noto
Soluzione dell’equazione
Numero intero
Numero intero
Numero decimale
X
X
X
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
8
2) Algoritmo per passi
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
4) Creazione del form Visualbasic. Net
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
PROBLEMA12: 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 Tipo Input Output Lavoro
a
b
c
delta
x1
x2
Coefficiente della x2
Coefficiente della x
Termine noto
Valore = b2-4*a*c
Prima radice
Seconda radice
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
Numero intero
X
X
X
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
9
Problema13: 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 Output Lavoro
prezzo
quantità
ilordo
inetto
sconto
tasso
Prezzo del prodotto
Quantità dello stesso prodotto
Importo lordo
Importo netto da pagare
Sconto da applicare all’importo lordo
Tasso di sconto in base alla quantità
Numero decimale
Numero intero
Numero decimale
Numero decimale
Numero intero
Numero intero
X
X
X
X
X
X
2) Algoritmo per passi
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
3) Algoritmo col diagramma a blocchi
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
10
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
Problema14: 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 sconto2 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 Tipo Input Output Lavoro
costo
pezzi
iva
ilordo
inetto
ivato
sconto
tasso
Costo di un cellulare
N.ro di pezzi dello stesso cellulare
Iva da aggiungere all’importo netto
Importo lordo
Importo al netto dello sconto
Importo totale ivato
Sconto da applicare
Tasso di sconto in base ai pezzi
Numero decimale
Numero intero
Numero decimale
Numero decimale
Numero decimale
Numero decimale
Numero decimale
Numero intero
X
X
X
X
X
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
2 Attenzione: Nel problema13 si usa la frase “quantità uguale ad 3” e nel problema 14 si usa la frase “pezzi fino ad 3”.
Questa diversità determina una differenza nell’uso del costrutto Case nel codice di VisualBasic.Net
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
11
4) Creazione del Form Visualbasic. Net
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
Problema15: Scrivere un algoritmo che data una temperatura stampa a video il messaggio:
a) “ molto caldo ” se la temperatura è > 32; b) “caldo” se la temperatura è > 25;
c) “ mite ” se la temperatura è > 16; d) “ fresco ” se la temperatura è > 10;
e) “ freddo ” se la temperatura è > 0; f) “ molto freddo ” se la temperatura è altrimenti.
1) Tabelle delle variabili e costanti
Nome Descrizione Tipo Input Output Lavoro
temp Temperatura scelta Numero decimale X
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
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
Problema16 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 Tipo Input Output Lavoro
num numero della tabellina Numero intero X
2) Algoritmo per passi 1. Inizio
2. Scegli elemento dalla combobox
3. Assegna a num, l’elemento scelto
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
5) Codifica del corpo del pulsante Calcola
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
12
4. Fai le seguenti assegnazioni 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
5. Stampa in label R1,R2,R3,R4,R5
6. Fine
4) Creazione del Form Visualbasic. Net
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 17. 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)
1) Tabelle delle variabili e costanti
Nome Descrizione Tipo Input Output Lavoro
parola E’ il termine selezionato da tradurre stringa X
2) Algoritmo per passi 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
4) Creazione del Form Visualbasic. Net
3) Algoritmo col diagramma a blocchi
Non disegnato perchè è semplice
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
Le strutture di ripetizione o iterative o ciclo
Esse, in generale, consentono di ripetere l’esecuzione di una porzione di algoritmo più volte, finché è verificata una certa condizione. Esse possono 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:
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
13
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.
PROBLEMA1: 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? 3
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 Tipo Input Output Lavoro
N
SOM
X
Numero generico da sommare
Somma totale dei 10 numeri
E’ una stringa di caratteri
Numero intero
Numero intero
Stringa
X
X
X
3 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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
14
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
4) Creazione del form Visualbasic. Net
3) Algoritmo col diagramma a blocchi
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:
PROBLEMA2: 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 Tipo Input Output Lavoro
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
15
M
N
SOM
I
X
Dimensione dei numeri
Numero generico da sommare
Somma totale dei 10 numeri
E’ l’indice del ciclo
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Numero intero
Stringa
X
X
X
X
X
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
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
PROBLEMA3: Trovare l’algoritmo che permette di calcolare il maggiore tra 10 numeri interi
letti in input e di scriverlo in output4
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.
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
N
MAX
I
X
E’ il numero letto
E’ il maggiore dei 10 numeri
E’ l’indice del ciclo
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Stringa
X
X
X
X
4 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.
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
16
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
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
3) Algoritmo col diagramma a blocchi
4) Creazione del form Visualbasic. Net
PROBLEMA4: 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 Tipo Input Output Lavoro
M
N
MAX
I
X
E’ la dimensione dei numeri.
E’ il numero letto
E’ il maggiore degli N numeri letti
E’ l’indice del ciclo
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Numero intero
Stringa
X
X
X
X
X
2) Algoritmo per passi 1. inizio
2. leggi la dimensione M
3. leggi il primo numero e assegnalo a MAX
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
17
PROBLEMA5: 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 Tipo Input Output Lavoro
M
N
I
X
E’ la dimensione dei numeri.
E’ il numero letto
E’ l’indice del ciclo
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Stringa
X
X
X
X
2) Algoritmo per passi 1. inizio
2. leggi la dimensione M
3. per I che va da 1 a M
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
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:
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
18
PROBLEMA6: 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 Tipo Input Output Lavoro
M
N
I
X
E’ la dimensione dei numeri.
E’ il numero letto
E’ l’indice del ciclo
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Stringa
X
X
X
X
2) Algoritmo per passi 1. inizio
2. leggi la dimensione M
3. per I che va da 1 a M
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
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:
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
19
PROBLEMA7: 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 Tipo Input Output Lavoro
N
Num
I
Som
Media
R
Q
Meta
E’ la dimensione dei numeri
E’ il numero letto
E’ l’indice del ciclo
Somma dei 3 elementi
E’ la media dei 3 elementi
E’ il resto della divisione
E’ il quoziente della divisione
Posizione dell’elemento centrale
Numero intero
Numero intero
Numero intero
Numero Intero
Numero Decimale
Numero Intero
Numero Intero
Numero Intero
X
X
X
X
X
X
X
X
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
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
PROBLEMA8: 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 Tipo Input Output Lavoro
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
20
N
Num
I
Som
Media
Cont
E’ la dimensione dei numeri
E’ il numero letto
E’ l’indice del ciclo
Somma degli elementi di indici I pari
E’ la media degli elementi di indici pari
Contatore di elementi di indici pari
Numero intero
Numero intero
Numero intero
Numero Intero
Numero Decimale
Numero Intero
X
X
X
X
X
X
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
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:
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.
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
21
PROBLEMA9: 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 Tipo Input Output Lavoro
NUM
X
E’ il numero da leggere.
E’ una stringa di caratteri
Numero intero
Stringa
X
X
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
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 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
Test al computer
PROBLEMA10: 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 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 Tipo Input Output Lavoro
NUM
CONT
E’ il numero da leggere.
E’ il contatore dei numeri = 0
Numero intero
Numero intero
X
X
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
22
X E’ una stringa di caratteri Stringa X
2) Algoritmo per passi 1. inizio
2. assegna a CONT, 0
3. leggi il primo numero, NUM
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
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
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
PROBLEMA11: 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)
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
NUM
CONT
SOM
MEDIA
X
E’ il numero da leggere.
E’ il contatore solo dei numeri > 0
E’ la somma solo dei numeri > 0
E’ la media solo dei numeri > 0
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Decimal
Stringa
X
X
X
X
X
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
23
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Test al Computer
5) Codifica del pulsante btnCalcola_Click
Private Sub btnMedia_Click( ) Dim num, cont, som As Integer Dim x As String
Dim media As Decimal
cont = 0
som = 0
Test al Computer
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
PROBLEMA12: 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
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)
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
24
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
PAR
SOM
L
X
Parola da leggere.
Somma delle lunghezze delle parole
Lunghezza di una parola
E’ una stringa di caratteri
Stringa
Numero intero
Numero intero
Stringa
X
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Test al Computer
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
PROBLEMA13:
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).
1) Tabelle delle variabili di input e output
Nome Descrizione Tipo Input Output Lavoro
PAR
I, J
L
BIT
Parola da leggere.
Indici dei caratteri di PAR
Lunghezza di una parola
Variabile booleana, true e false
Stringa
Numero intero
Numero intero
Stringa
X
X
X
X
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
25
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
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
3) Diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Test al
Computer
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
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 Lungh bit i j PAR(i) PAR (j)
anna 4 true 0 3 a a
1 2 n n
2
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
26
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.
PROBLEMA14: 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 Tipo Input Output Lavoro
NUM
X
E’ il numero da leggere.
E’ una stringa di caratteri
Numero intero
Stringa
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
27
num=Val(InputBox(x))
Loop Until (num < 0) 'fine ciclo do loop until se la
condizione è vera
MsgBox("Lettura terminata")
End Sub
PROBLEMA15: 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 Tipo Input Output Lavoro
NUM
CONT
X
E’ il numero da leggere.
E’ il contatore dei numeri = 0
E’ una stringa di caratteri
Numero intero
Numero intero
Stringa
X
X
X
2) Algoritmo per passi 1. inizio
2. assegna a CONT, 0
3. Fai le seguenti istruzioni:
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
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
'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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
28
PROBLEMA16: 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 Tipo Input Output Lavoro
NUM
CONT
SOM
MEDIA
X
E’ il numero da leggere.
E’ il contatore solo dei numeri > 0
E’ la somma dei numeri > 0
E’ la media dei numeri > 0
E’ una stringa di caratteri
Numero intero
Numero intero
Numero intero
Decimal
Stringa
X
X
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Test al computer
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 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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
29
PROBLEMA17: 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 Tipo Input Output Lavoro
PAR
SOM
L
X
Parola da leggere.
Somma delle lunghezze delle parole
Lunghezza di una parola
E’ una stringa di caratteri
Stringa
Numero intero
Numero intero
Stringa
X
X
X
X
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
3) Algoritmo col diagramma a blocchi
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Test al Computer 5) Codifica del pulsante btnCalcola_Click
Private Sub btnSommaLungh_Click( ) Dim PAR, x As String
Dim som, l As Integer
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
PROBLEMA18
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”.
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
30
(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 Tipo Input Output Lavoro
PAR
I, J
L
BIT
Parola da leggere.
Indici dei caratteri di PAR
Lunghezza di una parola
Variabile booleana, true e false
Stringa
Numero intero
Numero intero
Stringa
X
X
X
X
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
Non disegnato per mancanza di tempo
4) Creazione del form Visualbasic
Test al
Computer
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
“Ripasso di: Algoritmi con le strutture di Selezione e cicliche in VB.Net ” Prof. M. Simone - ITCG ”Padre S. Lener” – Classe 4Gx – Marcianise A.S. 2011 / 12
31
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 Lungh bit i j PAR(i) PAR (j) Produrre altri test a vostra scelta su carta,
testando l’algoritmo con altre parole scelte
a caso.
anna 4 true 0 3 a a
1 2 n n
2
ESERCIZI PER CASA CON IL CICLO WHILE O CON IL CICLO DO LOOP UNTIL
PROBLEMA19: 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)
PROBLEMA20: 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)