Dal problema al
programma
Mancarella Francesca
Zuelli Lorenzo
Indice
Sequenza
 Selezione
 Ciclo o iterazione

Mancarella - Zuelli
Dal problema al programma
2
Sequenza

Calcola la media di 3 numeri
Pseudocodifica

Debung
Codifica
Cerchio (area,circonferenza)
Pseudocodifica

Flow-chart
Flow-chart
Debung
Codifica
Rettangolo (area,perimetro)
Pseudocodifica
Mancarella - Zuelli
Flow-chart
Debung
Dal problema al programma
Codifica
3
Selezione

Trova il massimo di 3 numeri
Pseudocodifica

Debung
Codifica
Debung
Codifica
Debung
Codifica
Definisci il triangolo
Pseudocodifica

Flow-chart
Flow-chart
Reciproco di un numero
Pseudocodifica
Mancarella - Zuelli
Flow-chart
Dal problema al programma
4
Ciclo o iterazione

Mese (per falso)
Pseudocodifica

Debung
Codifica
Flow-chart
Debung
Codifica
Flow-chart
Debung
Codifica
Mese (per vero)
Pseudocodifica

Flow-chart
Spesa
Pseudocodifica
Mancarella - Zuelli
Dal problema al programma
5
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
Mancarella - Zuelli
Dal problema al programma
6
Flow-chart: Calcola la media di 3 numeri
inizio
A, B, C
M = (A+B+C) / 3
M
fine
Mancarella - Zuelli
Dal problema al programma
7
Debung: Calcola la media di 3 numeri
Algoritmo media
Debung
Scrivi(“inserisci tre numeri interi”);
Leggi(A, B, C);
M = (A + B + C) / 3;
Scrivi(“Media = “, M);
Mancarella - Zuelli
1. Inserisci tre numeri interi
2. A  4, B  6, C  8
3. 6  (4 + 6 +8) / 3;
4. Media = 6
Dal problema al programma
8
Codifica: Calcola la media di tre numeri
Private Sub media_Click()
'VARIABILI
Dim primonumero, secondonumero, terzonumero As Integer
Dim Media As Integer
'ACQUISIZIONE DEI VALORI DELLE CELLE
primonumero = Range("b2")
secondonumero = Range("b3")
terzonumero = Range("b4")
'CALCOLO IL VALORE DELLA MEDIA
Media = (primonumero + secondonumero + terzonumero) / 3
'STAMPO IL VALORE DELLA MEDIA
Range("b5") = Media
End Sub
Mancarella - Zuelli
Dal problema al programma
9
Pseudocodifica: Calcolare circonferenza e area di
un cerchio di cui conosciamo il raggio
Algoritmo cerchio
Variabili
raggio
Area,circonferenza
numero, reale, I
numero, reale,O
Costante
Pigreco = 3,14
numero,reale
inizio
Scrivi(“Inserisci raggio”);
Leggi(raggio);
Area = (raggio^2*Pigreco);
Circonferenza = (2*Pigreco*raggio);
Scrivi(“Area = “, Area);
Scrivi(“Circonferenza = “, Circonferenza);
fine
Mancarella - Zuelli
Dal problema al programma
10
Flow-chart: circonferenza e area
inizio
raggio
Area = (Raggio^2*Pigreco)
Circonferenza = (2*Raggio*Pigreco)
Area
Circonferenza
fine
Mancarella - Zuelli
Dal problema al programma
11
Debug:circonferenza e area
Debug
Algoritmo cerchio
1. Inserisci raggio
Scrivi(“Inserisci raggio”);
Leggi(raggio);
Area = (raggio^2*Pigreco);
Circonferenza = (2*Pigreco*raggio);
Scrivi(“Area = “, Area);
Scrivi(“Circonferenza = “, Circonferenza);
Mancarella - Zuelli
2. raggio  10, Pigreco  3,14
3. 31,4  (10^2*3,14);
4. 62.8  (2*3,14*10);
5. Area = 31,4
6. Circonferenza = 62,8
Dal problema al programma
12
Codifica: Calcolare circonferenza e area
Private Sub Cerchio_Click()
' VARIABILI
Dim Raggio, Circonferenza, Area As Single
' COSTANTE
Const pigreco = 3.14
'ACQUISIZIONE DEI VALORI DELLE CELLE
Raggio = Range("b1")
' CALCOLO IL VALORE DELLA CIRCONFERENZA
Circonferenza = pigreco * Raggio * 2
' CALCOLO IL VALORE DELL'AREA
Area = pigreco * Raggio * Raggio
'STAMPO NELLA CELLA B2 IL RISULTATO:
CIRCONFERENZA
Range("b2") = Circonferenza
'STAMPO NELLA CELLA B3 IL RISULTATO: AREA
Range("b3") = Area
End Sub
Mancarella - Zuelli
Dal problema al programma
13
Pseudocodifica: Calcolare area e perimetro
di un rettangolo
Algoritmo rettangolo
Variabili
B,H
A,2P
numerica, reale, I
numerica, reale,O
inizio
Scrivi(“Inserisci base,altezza”);
Leggi(B,H);
A = (B*H);
2P = (2B*2H);
Scrivi(“ A = “ A);
Scrivi (“ 2P = “ 2P);
fine
Mancarella - Zuelli
Dal problema al programma
14
Flow-chart: area e perimetro di un
rettangolo
inizio
B,H
Area = (B*H)
Perimetro = (2B*2H)
Area
Perimetro
fine
Mancarella - Zuelli
Dal problema al programma
15
Debug: area e perimetro di un
rettangolo
Algoritmo rettangolo
Debung
Scrivi(“Inserisci base,altezza”);
Leggi(B,H);
A = (B*H);
2P = (2*B+2*H);
Scrivi(“ A = “ A);
Scrivi (“ 2P = “ 2P);
1. Inserisci base,altezza
2. B  10, H  5
3. 50  (10*5);
4. 30  (2*10+2*5);
5. Area = 50
6. Altezza = 30
Mancarella - Zuelli
Dal problema al programma
16
Codifica: area e perimetro di un
rettangolo
Private Sub areaeperimetro_Click()
'VARIABILI
Dim altezza, base As Integer
Dim area, perimetro As Integer
'ACQUISIZIONE DEI VALORI DELLE CELLE
altezza = Range("b2“)
base = Range("b3")
'CALCOLO IL VALORE DEL PERIMETRO
perimetro = (base * 2) + (altezza * 2)
'CALCOLO IL VALORE DELL'AREA
area = base * altezza
'STAMPO IL VALORE DEL PERIMETRO
Range("b6") = perimetro
'STAMPO IL VALORE DELL'AREA
Range("b5") = area
End Sub
Mancarella - Zuelli
Dal problema al programma
17
Pseudocodifica: Trova il massimo di 3
numeri
Algoritmo Massimo
Variabili
A,B,C
Max
numerica, intera, I
numerica, intera, O
inizio
Scrivi(“Inserisci tre numeri interi”);
Leggi(A,B,C);
Max=A;
Se (B>Max) allora
Max=B;
fine se
Se (C>Max) allora
Max=C;
fine se
Scrivi(“Il massimo è = “ , Max);
fine
Mancarella - Zuelli
Dal problema al programma
18
Flow-chart: trova il massimo tra 3
numeri interi
inizio
A, B, C
Max = A
No
B>Max
Si
Max = B
No
C>Max
Si
Max = C
Max
fine
Mancarella - Zuelli
Dal problema al programma
19
Debug: trova il massimo tra 3 numeri
interi
Algoritmo massimo
Scrivi(“Inserisci tre numeri interi”);
Leggi(A, B, C)
Max=A;
Se (B>Max) allora
Max=B
fine se
Se (C>Max) allora
Max=C;
fine se
Se(“Il Massimo è = “, Max);
Mancarella - Zuelli
Debug 1
Debug 2
1.
Inserisci tre numeri interi
1.
Inserisci tre numeri interi
2.
A  4, B  6, C  8
2.
A  4, B  16, C 8
3.
Max=4
3.
Max=4
4.
6>4 ?
4.
16>4 ?
5.
Max  6
5.
Max  16
6.
8>6 ?
6.
8>16 ?
7.
Max  8
7.
Il massimo è = 16
8.
Il massimo è = 8
Debug 3
Debug 4
1.
Inserisci tre numeri interi
1.
Inserisci tre numeri interi
2.
A  14, B  6, C  8
2.
A  14, B  4, C  4
3.
Max=14
3.
Max=4
4.
6>14 ?
4.
4>4 ?
5.
8>14 ?
5.
4>4 ?
6.
Il massimo è = 14
6.
Il massimo è = 4
Dal problema al programma
20
Codifica: trova il massimo di tre
numeri
Private Sub massimo_Click()
'VARIABILI
Dim primonumero, secondonumero, terzonumero
As Integer
Dim massimo As Integer
'ACQUISIZIONE DEL VALORE DELLE CELLE
primonumero = Range("b2")
secondonumero = Range("b3")
terzonumero = Range("b4")
'CONTROLLO DEI NUMERI (SELEZIONE)
massimo = primonumero
If (secondonumero > massimo) Then
massimo = secondonumero
End If
If (terzonumero > massimo) Then
massimo = terzonumero
End If
'STAMPO IL VALORE DEL MASSIMO
Range("b6") = massimo
End Sub
Mancarella - Zuelli
Dal problema al programma
21
Pseudocodifica: Definisci il triangolo
Algoritmo Triangolo
Variabili
A, B, C numerica, intera, I
Dato in input 3 lati di un triangolo, dire in
output se il triangolo è:
-Scaleno
inizio
Scrivi(“Inserisci i tre lati del triangolo”); -Isoscele
Leggi(A,B,C);
-Equilatero
Se (A<>B) AND (B<>C) AND (C<>A) allora
Scrivi(“Scaleno”);
fine se
Se (A<>B) OR (B<>C) OR (C<>A) allora
Scrivi(“Isoscele”)
fine se
Se (A=B) AND (B=C) AND (A=C) allora
Scrivi(“Equilatero”);
fine se
fine
Mancarella - Zuelli
Dal problema al programma
22
Flow-chart: Definisci il triangolo
inizio
A, B, C
(A<>B) AND (B<>C) AND (A<>B)
Scaleno
(A=B) OR (B=C) OR (A=C)
Isoscele
(A=B) AND (B=C) AND (A=C)
Equilatero
fine
Mancarella - Zuelli
Dal problema al programma
23
Debug: Definisci il triangolo
Algoritmo Triangolo
Debug 1
Variabili
A, B, C
1.
Inserisci tre lati del triangolo
2.
A  2, B  5, C  10
3.
(2<>5) AND (5<>10) AND (2<>10) ? (V)
numerica, intera, I
inizio
Scrivi(“Inserisci i tre lati del triangolo”); 4. Scaleno
5. (2=5) OR (5=10) OR (2=10) ? (F)
Leggi(A,B,C);
Se (A<>B) AND (B<>C) AND (C<>A) allora 6. (2=5) AND (5=10) AND (2=10) ? (F)
Scrivi(“Scaleno”);
Debug 2
fine se
1. Inserisci tre lati del triangolo
Se (A<>B) OR (B<>C) OR (C<>A) allora
2. A  2, B  2, C  8
Scrivi(“Isoscele”)
3. (2<>2) AND (2<>8) AND (2<>8) ? (F)
fine se
4. (2=2) OR (2=8) OR (2=2) ? (V)
Se (A=B) AND (B=C) AND (A=C) allora
5. Isoscele
Scrivi(“Equilatero”);
Debug 3
6. (2=2) AND (2=8) OR (2=2) ? (F)
fine se
1. A  5, B  5, C  5
fine
2. (5<>5) AND (5<>5) AND (5<>5) ? (F)
Mancarella - Zuelli
3.
(5=5) OR (5=5) OR (5=5) ? (V)
4.
Isoscele
5.
(5=5) AND (5=5) AND (5=5) ? (V)
6.
Equilatero
Dal problema al programma
24
Codifica: Definisci il triangolo
Private Sub Triangolo_Click()
' VARIABILI
Dim primolato, secondolato, terzolato As Integer
' ACQUISIZIONE DEI VALORI DELLE CELLE
primolato = Cells(1, 2)
secondolato = Cells(2, 2)
terzolato = Cells(3, 2)
' CONTROLLO DEI NUMERI (SELEZIONE)
If (primolato <> secondolato And secondolato <> terzolato And
terzolato <> primolato) Then
Range("c1") = "scaleno"
ElseIf (primolato = secondolato) And (secondolato = terzolato) And
(terzolato = primolato) Then
Range("c1") = "equilatero"
ElseIf (primolato <> secondolato) Or (secondolato <> terzolato) Or
(terzolato <> primolato) Then
Range("c1") = "iscoscele"
End If
End sub
Mancarella - Zuelli
Dal problema al programma
25
Pseudocodifica: Reciproco di un numero
Algoritmo Reciproco
Variabili
A
numerica, intera, I
inizio
Scrivi(“Inserisci un numero”);
Leggi(A);
Se (A<>0) allora
Scrivi(“Il reciproco è: “,1/A)
altrimenti
Scrivi(“Errore”)
fine
Mancarella - Zuelli
Dal problema al programma
26
Flow-chart: Reciproco di un numero
inizio
A
(A<>0)
1/A
Errore
fine
Mancarella - Zuelli
Dal problema al programma
27
Debug: Reciproco di un numero
Algoritmo Reciproco
Debug 1
Variabili
1. Inserisci un numero
A
numerica, intera, I
2. A  2
inizio
Scrivi(“Inserisci un numero”);
Leggi(A);
Se (A<>0) allora
Scrivi(“Il reciproco è: “,1/A)
altrimenti
Scrivi(“Errore”)
fine
3. (2<>0) ? (V)
4. Il reciproco è : ½
Debug 2
1. Inserisci un numeri
2. A  0
3. (0<>0) ? (F)
4. Errore
Mancarella - Zuelli
Dal problema al programma
28
Codifica: Reciproco di un numero
Private Sub reciproco_Click()
'VARIABILI
Dim numero, reciproco, errore As Integer
'ACQUISIZIONE DEL VALORE DELLE CELLE
numero = Range("b1")
'CONTROLLO DEI NUMERI (SELEZIONE)
If (numero <> 0) Then
Range("b3") = 1 / numero
Else
Range("b3") = "errore“
End If
End Sub
Mancarella - Zuelli
Dal problema al programma
29
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(“Mese inserito corretto”)
Altrimenti
Scrivi(“Errore,reinserire)”
fine se
finché((M>12) OR (M<1))
fine
Mancarella - Zuelli
Dal problema al programma
30
Flow-chart : Mese (per falso)
inizio
M
no
(M>0) AND (M<13)
ERRORE
falso
si
OK
(M>0) AND (M<13)
vero
fine
Mancarella - Zuelli
Dal problema al programma
31
Debug : Mese (per falso)
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))
Mancarella - Zuelli
Debug
1. Inserisci mese
2. M  17
3. 17>0 AND 17< 13 ? (F)
4. Errore
5. 17>0 AND 17<13 ? (F)
6. Inserisci mese
7. M  0
8. 0>0 AND 0<13 ? (F)
9. Errore
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)
Dal problema al programma
32
Codifica: Mese (per falso)
Private Sub mese_Click()
'VARIABILI
Dim mese, corretto, errore As Integer
'ACQUISIZIONE DEL VALORE DELLE
CELLE
mese = Range("b1")
'CONTROLLO DEI NUMERI
(SELEZIONE)
If (mese > 0) And (mese < 13) Then
Range("c1") = "corretto"
Else
Range("c1") = "errore"
End If
End Sub
Mancarella - Zuelli
Dal problema al programma
33
Pseudocodifica : Mese (per vero)
Algoritmo mese
Variabili
M
numerica,intera,I
Inizio
m=0
esegui mentre ((M>12) OR (M<1))
Scrivi(“Inserisci mese”);
Leggi(M);
Se(M>0) AND (M<13) allora
Scrivi(“Mese inserito corretto”)
Altrimenti
Scrivi(“Errore,reinserire)”
fine se
fine
Mancarella - Zuelli
Dal problema al programma
34
Flow-chart : Mese (per vero)
inizio
M=0
(M<=0)or (M>12)
falso
vero
M
falso
(M>0) AND (M<13)
ERRORE
OK
fine
Mancarella - Zuelli
Dal problema al programma
35
Debug: Mese (per vero)
Algoritmo mese
Variabili
M
Debug
1. M  0
numerica,intera,I
Inizio
m=0
esegui mentre ((M>12) OR (M<1))
Scrivi(“Inserisci mese”);
Leggi(M);
Se(M>0) AND (M<13) allora
Scrivi(“Mese inserito corretto”)
Altrimenti
Scrivi(“Errore,reinserire)”
fine se
fine
2. 0<1 OR 0>12 ? (V)
3. Inserisci mese
4. M  14
5. Errore, reinserire
6. 14<1 OR 14>12 ? (V)
7. Inserisci mese
8. M  6
9. Mese inserito corretto
10. 6<1 OR 6>12 ? (F)
Mancarella - Zuelli
Dal problema al programma
36
Pseudocodifica: Spesa
Algoritmo spesa
Variabili
P numerica, reale,I
T numerica, reale, O
Inizio
T=0
ripeti
scrivi (“inserisci prezzo”)
leggi (P)
T=T+P
finché (P=0)
scrivi (“totale =“ T);
fine
Mancarella - Zuelli
Dal problema al programma
37
Flow-chart : Spesa
inizio
T=0
P
T=T+P
P=0
T
fine
Mancarella - Zuelli
Dal problema al programma
38
Debug: Spesa
Algoritmo spesa
Variabili
P numerica, reale,I
T numerica, reale, O
Inizio
T=0
ripeti
scrivi (“inserisci prezzo”)
leggi (P)
T=T+P
finché (P=0)
scrivi (“totale =“ T);
fine
Mancarella - Zuelli
Debug
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  0
12. T 22+0 (22)
13. 0=0 ? (V)
14. Totale = 22
Dal problema al programma
39
Codifica: spesa
Private Sub spesa_Click()
Dim prodotto, tot As Single
Dim i As Integer
tot = 0
For i = 1 To 5
prodotto = Cells(i, 2)
Next
Range("b7") = tot
End Sub
Mancarella - Zuelli
tot = tot + prodotto
Dal problema al programma
40
Mappa
Sequenza
menu
Selezione
Ciclo
Mancarella - Zuelli
Media
Pseudocodifica
Flow-chart Debug
Cerchio
Pseudocodifica
Flow-chart Debug
Rettangolo
Pseudocodifica
Flow-chart Debug
Massimo
Pseudocodifica
Flow-chart Debug
Triangolo
Pseudocodifica
Flow-chart Debug
Reciproco
Pseudocodifica
Flow-chart Debug
Mese (falso)
Pseudocodifica
Flow-chart Debug
Mese (vero)
Pseudocodifica
Flow-chart Debug
Spesa
Pseudocodifica
Flow-chart Debug
Dal problema al programma
41
Scarica

Dal problema al programma - excel