MODULO 2 – Algoritmi con le strutture di Selezione...

31
“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

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)