Dal problema al programma
Wilkinson D
Fare clic per continuare
Indice




Sequenza
Selezione
Ciclo o iterazione
mappa
Sequenza
 Calcola la media di 3 numeri
Pseudocodifica
Flow-chart
Debug
 Cerchio (area, circonferenza)
Pseudocodifica
Flow-chart
Debug
 Rettangolo (area, perimetro)
Pseudocodifica
Flow-chart
Debug
Selezione
 Trova il massimo di 3 numeri
Pseudocodifica
Flow-chart
Debug
 Definisci il triangolo
Pseudocodifica
Flow-chart
Debug
 Il reciproco di un numero
Pseudocodifica
Flow-chart
Debug
Ciclo o iterazione
 1 esercizio
Pseudocodifica
Flow-chart
Debug
Flow-chart
Debug
Flow-chart
Debug
 2 esercizio
Pseudocodifica
 3 esercizio
Pseudocodifica
Pseudocodifica: Calcola la media di 3 numeri
Algoritmo media
Variabili
A, B, C numerica, intera, input
M
numerica, reale, output
inizio
Scrivi(“Inserisci tre numeri interi”);
Leggi(A, B, C);
M = (A + B + C) / 3;
Scrivi(“Media =“, M);
fine
Private Sub Calcolamedia_Click()
'VARIABILI
Dim n1, n2, n3, m As Single
'LEGGO
n1 = Range("a2")
n2 = Range("b2")
n3 = Range("c2")
'CALCOLO
m = (n1 + n2 + n3) / 3
'STAMPO
Range("b4") = m
End Sub
Flow-chart: Calcola la media di 3 numeri
inizio
A, B, C
M = (A, B, C) / 3
M
fine
Debug: Calcola la media di 3 numeri
Algoritmo media
Scrivi(“Inserisci 3 numeri interi”);
Leggi(A, B, C);
M = (A + B + C) / 3;
Scrivi(“Media =“, M);
Debug
1.
Inserisci tre numeri interi
2.
A  4, B  6, C  8;
3.
6  (4+6+8) / 3
4.
Media = 6
Pseudocodifica: Cerchio (area, circonferenza)
Algoritmo cerchio
Variabili
R
A, C
Costanti
numerica, reale, input
numerica, reale, output
Pi greco = 3,14 numerica, reale
inizio
Scrivi (“Inserisci valore raggio);
Leggi (R) ;
A = R^2* 3,14;
C = 2* R* 3,14;
Scrivi (“Area =“, A);
Scrivi (“Circonferenza =“, C);
fine
Private Sub Calcola_Click()
'VARIABILI
Dim r, a, c As Single
Const pi = 3.14
'LEGGO
r = Range("a2")
'CALCOLO
a = (r ^ 2) * pi
c = (2 * r) * pi
'STAMPO
Range("c2") = a
Range("d2") = c
End Sub
Flow-chart: Cerchio (area, circonferenza)
Inizio
R; Pi Greco=3,14
A = Pi Greco*R^2
C = 2*Pi Greco*R
A; C
Fine
Debug: Cerchio (area, circonferenza)
Algoritmo cerchio
Scrivi(“Inserisci valore raggio”);
Leggi (R);
A = R^2* 3,14;
C = 2* R* 3,14;
Scrivi (“Area =“, A);
Scrivi (“Circonferenza =“, C);
Debug
1.
Inserisci valore raggio
2.
R2
3.
12,56  3,14*(2^2)
4.
12,56  3,14*2*2
5.
Area = 12,56
6.
Circonferenza = 12,56
Pseudocodifica: Rettangolo (area, perimetro)
Algoritmo rettangolo
Variabili
B, H numerica, reale, input
inizio
scrivi(“Inserire valori base e altezza”);
leggi(B, H);
A = B*H;
P = 2*B+2*H;
scrivi(“Area =“, A)
scrivi(“Perimetro=“, P)
fine
Private Sub Calcola_Click()
'VARIABILI
Dim b, h, p, a As Single
'LEGGO
b = Range("a2")
h = Range("b2")
'CALCOLO
p = (2 * b) + (2 * h)
a=b*h
'STAMPO
Range("d2") = p
Range("e2") = a
End Sub
Flow-chart: Rettangolo (area, perimetro)
Inizio
B, H
A = B*H
P = 2*B+2*H
A, P
fine
Debug: Rettangolo (area, perimetro)
Algoritmo rettangolo
scrivi(“Inserire valori base e altezza”);
leggi(B, H);
A = B*H;
P = 2*B+2*H;
scrivi(“Area =“, A)
scrivi(“Perimetro=“, P)
Debug
1.
Inserire valori base e altezza
2.
B2
3.
H6
4.
12  6*2
5.
18  2*2+6*2
6.
Area = 12
7.
Perimetro = 18
Pseudocodifica: Trova il massimo di 3 numeri
Algoritmo max
Variabili
A,B,C
M
Inizio
numerica, intera, input
numerica, intera, output
scrivi (“inserisci tre numeri interi”);
leggi ( A,B,C);
M = A;
se (B > M) allora
M = B;
fine se
se (C> M) allora
M = C;
fine se
scrivi(“il massimo è =“ M);
fine
PrivateSubCommandButton1_Click()
'VARIABILI
Dim n1, n2, n3, m As Single
'LEGGO
n1 = Range("a2")
n2 = Range("a3")
n3 = Range("a4")
'CALCOLO
m = n1
If n2 > m Then
m = n2
End If
If n3 > m Then
m = n3
End If
'STAMPO
Range("b2") = m
Flow-chart: Trova il massimo di 3 numeri
inizio
A,B,C
M=A
no
B>M
si
M=B
C>M
no
si
M=C
M
Debug: Trova il massimo di 3 numeri
Debug 1
Algoritmo max.
scrivi (“inserisci i tre lati del triangolo”);
leggi (A,B,C);
Se ( A<>B) AND (B<>C) AND ( A<>C)
allora
scrivi (“scaleno”);
fine se
Se (A = B) OR (B = C) OR (A = C) allora
scrivi (“isoscele”);
fine se
Se (A = B) AND (B = C) AND (A = C)
allora
scrivi (“equilatero”);
fine se
1.
Inserisci tre lati
2.
A
3.
3<>3 AND 3<>5 AND 3<>5? FALSO
4.
3 = 3 OR 3 = 5 OR 3 = 5?
Debug 3
5.
Isoscele
1. inserisci tre lati
6.
3 = 3 AND 3 = 5 AND 3 = 5? FALSO
2. A
3, B
3, C
5
3, B
3, C
3
3. 3<>3 AND 3<>3 AND 3<>3? (F)
4. 3=3 OR 3=3 OR 3=3 ?
5. ISOSCELE
Debug 2
6. 3=3 AND 3=3 AND 3=3 ?
1.
Inserisci i tre lati
2.
A
3.
3<>4 AND 3<>5 AND 4<>5?
4.
Scaleno
5.
3 = 4 OR 4=5 OR 3 = 5? FALSO
6.
3 = 4 AND 4 = 5 AND 3 = 5? FALSO
3, B
4, C
5
7. EQUILATERO
Pseudocodifica: Definisci il triangolo
Algoritmo triangolo
Variabili
A,B,C
numerica, intera, input
S,I,E
numerica, intera, output
Inizio
scrivi (“inserisci i tre lati del triangolo”);
leggi (A,B,C);
Se ( A<>B) AND (B<>C) AND ( A<>C) allora
scrivi (“scaleno”);
fine se
Se (A = B) OR (B = C) OR (A = C) allora
scrivi (“isoscele”);
fine se
Se (A = B) AND (B = C) AND (A = C) allora
scrivi (“equilatero”);
fine se
Fine
Private Sub CommandButton1
'VARIBILI
Dim l1, l2, l3 As Single
'LEGGO
l1 = Range("a2")
l2 = Range("a3")
l3 = Range("a4")
'DEFINISCO
If l1 <> l2 And l2 <> l3 And
Range("b2") = "scaleno"
End If
If l1 = l2 Or l2 = l3 Or l1 = l3
Range("b2") = "isoscele"
End If
Flow-chart: Definisci il triangolo
inizio
A,B,C
no
A<>B AND A<>C AND B<>C
si
S
A = B OR B = C OR A = C
no
si
I
A = B AND A = C AND B = C
si
E
fine
Debug: Definisci il triangolo
Debug 1
1.
Inserisci tre lati
Algoritmo triangolo
2. A 3, B
3, C 5
scrivi (“inserisci i tre lati del triangolo”);
3. 3<>3 AND 3<>5 AND 3<>5? FALSO
leggi (A,B,C);
Se ( A<>B) AND (B<>C) AND ( A<>C) allora4. 3 = 3 OR 3 = 5 OR 3 = 5?
5. Isoscele
scrivi (“scaleno”);
6. 3 = 3 AND 3 = 5 AND 3 = 5? FALSO
fine se
Se (A = B) OR (B = C) OR (A = C) allora
Debug 2
scrivi (“isoscele”);
1. Inserisci i tre lati
fine se
2. A 3, B 4, C 5
Se (A = B) AND (B = C) AND (A = C) allora 3. 3<>4 AND 3<>5 AND 4<>5?
scrivi (“equilatero”);
fine se
4.
Scaleno
5.
3 = 4 OR 4=5 OR 3 = 5? FALSO
6.
3 = 4 AND 4 = 5 AND 3 = 5? FALSO
Debug 3
1. inserisci tre lati
2. A
3, B
3, C
3
3. 3<>3 AND 3<>3 AND 3<>3? (F)
4. 3=3 OR 3=3 OR 3=3 ?
5. ISOSCELE
6. 3=3 AND 3=3 AND 3=3 ?
7. EQUILATERO
Pseudocodifica: Il reciproco di un numero
Algoritmo reciproco:
Variabili
A
numerica, intera I/O
Inizio
Fine
scrivi (“Inserisci un numero”);
leggi (A);
se (A<>0) allora
scrivi (“il reciproco è =“ , 1/A);
altrimenti
scrivi (“errore”)
fine se
Private Sub Reciproco_Click()
'VARIABILI
Dim n As Single
'LEGGO
n = Range("a2")
'CALCOLO
If n <> 0 Then
Range("b2") = 1 / n
End If
If n = 0 Then
Range("b2") = "errore"
End If
End Sub
Flow-chart: Il reciproco di un numero
Inizio
A
no
A<>0
1/A
Fine
si
Debug: Il reciproco di un numero
Algoritmo reciproco
scrivi (“Inserisci un numero”);
leggi (A);
se (A<>0) allora
scrivi (“il reciproco è =“ , 1/A);
altrimenti
scrivi (“errore”)
fine se
Debug 1
1.
Inserisci un numero
2.
A
3.
4<>0?
4.
Il reciproco è 1/4
4
Debug 2
1.
Inserisci un numero
2.
A
3.
0<>0 ?
4.
Errore
0
Pseudocodifica: Totale spesa (per falso)
Algoritmo spesa
Variabili
P
T
numerica, reale,I
numerica, reale, O
Inizio
T=0
ripeti
scrivi (“inserisci prezzo”)
leggi (P)
T=T+P
finché (P=0)
scrivi (“totale =“ T);
fine
Algoritmo spesa
Variabili
P
T
numerica, reale,I
numerica, reale, O
Inizio
T=0
ripeti
scrivi (“inserisci prezzo”)
leggi (P)
T=T+P
finché (P=0)
scrivi (“totale =“ T);
fine
Flow-chart: Totale spesa (per falso)
Inizio
T=0
P
T=T+P
P=0
T
Fine
Debug: Totale spesa ( per falso)
Debug
Algoritmo spesa
T=0
ripeti
scrivi (“inserisci prezzo”)
leggi (P)
T=T+P
finché (P=0)
scrivi (“totale =“ T);
1.
T
0
2.
Inserisci prezzo
3.
P
10
4.
T
0+10 (10)
5.
10= 0 ? (F)
6.
Inserisci prezzo
7.
P
5
8.
T
10+5 (15)
9.
15=0 ? (F)
10. Inserisci prezzo
11. P
12. T
0
22+0 (22)
13. 0=0 ? (V)
14. Totale = 22
Pseudocodifica: Mese (per falso)
Algoritmo mese
Variabili
M
numerica,intera, I
Inizio
Ripeti
scrivi (“Inserisci mese”)
leggi (M)
se (M > 0 ) AND (M < 13) allora
scrivi (“corretto”)
altrimenti
scrivi (“Errore”)
Fine se
Finché ((M>0) AND (M<13))
Fine
Flow-chart: Mese (per falso)
Inizio
M
no
si
M>0 AND M< 13
Corretto
Errato
M>0 AND M< 13
Fine
Debug: Mese (per falso)
Debug
Algoritmo mese
Ripeti
scrivi (“Inserisci mese”)
leggi (M)
se (M > 0 ) AND (M < 13) allora
scrivi (“corretto”)
altrimenti
scrivi (“Errore”)
Fine se
Finché ((M>0) AND (M<13))
1.
Inserisci mese
2.
M
3.
17>0 AND 17< 13 ? (F)
4.
Errore
5.
17>0 AND 17<13 ? (F)
6.
Inserisci mese
7.
M
8.
0>0 AND 0<13 ? (F)
9.
Errore
17
0
10. 0>0 AND 0<13 ? (F)
11. Inserisci mese
12. M
10
13. 10>0 AND 10<13 ? (V)
14. Corretto
15. 10>0 AND 10<13 ? (V)
Pseudocodifica: Mese (per vero)
Algoritmo mese
Variabili
M
numerica, intera, I
Inizio
M=0
Esegui mentre (M<1) OR (M>12)
scrivi (“inserisci mese”)
leggi (M)
se (M>0) AND (M< 13) allora
scrivi (“corretto”)
altrimenti
scrivi (“errore”)
fine se
Ripeti
fine
Flow-chart: Mese (per vero)
Inizio
M=0
Vero
M<1 OR M>12
M
M>0 AND M<13
Errato
Corretto
Fine
Debug: Mese (per vero)
Algoritmo mese
M=0
Esegui mentre (M<1) OR (M>12)
scrivi (“inserisci mese”)
leggi (M)
se (M>0) AND (M< 13) allora
scrivi (“corretto”)
altrimenti
scrivi (“errore”)
fine se
Ripeti
Debug
1.
M
0
2.
0 <1 OR 0>12 ? (V)
3.
Inserisci mese
4.
M
5.
15>0 AND 15< 13 ? (F)
6.
Errore
7.
15>0 AND 15< 13 ? (F)
8.
Inserisci mese
9.
M
15
9
10. 9>0 AND 9<13 ? (V)
11. Corretto
12. 9<1 OR 9>12 ? (F)
Scarica

Wilkinson - excel