Dal problema al
programma
Mariani, Terragni
Indice
 Sequenza
 Selezione
 Ciclo o iterazione
 Mappa
Mariani, Terragni
Dal problema al programma
2
Sequenza
 Calcola la media di 3 numeri
Pseudocodifica Flow-chart Debug Codifica
 Cerchio (area, circonferenza)
Pseudocodifica Flow-chart Debug Codifica
 Rettangolo (area, perimetro)
Pseudocodifica Flow-chart Debug Codifica
Mariani, Terragni
Dal problema al programma
3
Selezione
 Trova il massimo di 3 numeri
Pseudocodifica Flow-chart Debug Codifica
 Definisci un triangolo
Pseudocodifica Flow-chart Debug Codifica
 Il reciproco di un numero
Pseudocodifica Flow-chart Debug Codifica
Mariani, Terragni
Dal problema al programma
4
Ciclo o iterazione
 Mese (per falso)
Pseudocodifica Flow-chart Debug Codifica
 Mese (per vero)
Pseudocodifica Flow-chart Debug
 Spesa
Pseudocodifica Flow-chart Debug
Mariani, Terragni
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
Mariani, Terragni
Dal problema al programma
6
Flow-chart: Calcola la media di 3 numeri
Inizio
A, B, C
M =(A+B+C)/3
M
fine
Mariani, Terragni
Dal problema al programma
7
Debug: calcola la media di 3 numeri
Algoritmo media
Scrivi(“inserisci tre 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.
Mariani, Terragni
Dal problema al programma
Media =6
8
Pseudocodifica:cerchio( area, circonferenza)
Algoritmo cerchio
Variabili
Raggio numero reale, I
Pi greco numero reale, I
Inizio
A=R^2*pi greco
C=2*pi greco*R
Scrivi (“area=A”)
Scrivi (“circonferenza=C”)
fine
Mariani, Terragni
Dal problema al programma
9
Debug: cerchio ( area, circonferenza)
A=R^2*pi greco
C=2*pi greco*R
Scrivi (“area=A”)
Scrivi (“circonferenza=C”)
Mariani, Terragni
1.
inserisci il raggio
2.
3.
4.
5.
6.
R←5
A←3,14*5^2
C← 2*3,14*5
A=78,5
C=31,4
Dal problema al programma
10
Pseudocodifica rettangolo (area, perimetro)
Variabili
B,H numerica reale, I
A,P numerica reale,O
Inzio
scrivi (“inserisci base,altezza”);
leggi ( B,H);
A= B*H;
P=2*(B+H);
scrivi (“area=“,A);
scrivi (“perimetro=“, P);
fine
Mariani, Terragni
Dal problema al programma
11
Flowchart rettangolo (area, perimetro)
inizio
Inizio B,H
A=B*H
P=2*(B+H)
A,P
fine
Mariani, Terragni
Dal problema al programma
12
Debug: rettangolo (area, perimetro)
scrivi (“inserisci base,altezza”);
leggi ( B,H);
A= B*H;
P=2*(B+H);
scrivi (“area=“,A);
scrivi (“perimetro=“, P);
Mariani, Terragni
1.
2.
3.
4.
5.
6.
Dal problema al programma
inserisci base
B←3 H←2
A←B*H
P←2*(B+H)
Area=6
Perimetro=10
13
Pseudocodifica: trova il massimo di 3 numeri
Algoritmo Massimo
Variabili
A, B, C numerica, intera, I
Max numerica, 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
Mariani, Terragni
Dal problema al programma
14
Flowchart: trova il massimo di 3 numeri
inizio
A,B,C
Max=A
B>Max
Max=B
C>Max
Max=C
Max
Mariani, Terragni
Dal problema al programma
fine
15
Debug: trova il massimo di tre
numeri
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
Scrivi (“Il massimo è
=“, Max);
Mariani, Terragni
Debug 1
Inserisci tre numeri interi
A3B5C9
Max = 3
5>3?
Max  5
9>5?
Max  9
Il massimo è = 9
Debug 2
Inserisci tre numeri interi
A  4 B  11 C  6
Max = 4
6>4?
Max  6
11 > 6 ?
Il massimo è =11
Debug 4
tre numeri interi
Inserisci tre numeri Inserisci
interi
A4B4C4
A  12 B  7 C  6
Max = 4
Max = 12
4>4?
7 > 14 ?
4>4?
Il massimo è =14
Il massimo è = 4
Debug 3
Dal problema al programma
16
Pseudocodifica: definisci il triangolo
Algoritmo Triangolo
Variabili
A, B, C numerica, intera, input
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)
Scrivi (“Isoscele”);
Fine se
Se (A=B) AND (B=C) AND (A=C) allora
Scrivi (“Equilatero”);
Fine se
Fine
Mariani, Terragni
Dal problema al programma
Dato in input 3 lati di
un triangolo, dire in
output se il triangolo
è:
Scaleno
Isoscele
Equilatero
17
Flow Chart: Definisci il triangolo
Inizio
A, B, C
No
No
A <> B
AND B <> C
AND A <> C
A=B
OR B=C
OR A=C
Sì
Scaleno
Sì
Isoscele
No
A=B
AND B=C
AND A=C
Sì
Equilatero
Mariani, Terragni
Dal problema al programma
Fine
18
Debug: Definisci il triangolo
Algoritmo Triangolo
Variabili
A, B, C numerica, intera, input
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)
Scrivi (“Isoscele”);
Fine se
Se (A=B) AND (B=C) AND
(A=C) allora
Scrivi (“Equilatero”);
Fine se
Fine
Mariani, Terragni
Debug 1
Debug 2
1.
Inserisci tre lati
1. Inserisci tre lati del
del triangolo
triangolo
2. \ A  4 B  6 C
2. A  4 B  4 C  8
8
3. 4<> 4 AND 4 <> 8
3.
4<> 6 AND 6 <>
AND 4 <> 8 ? F
8 AND 4 <> 8 ? V
4.
4 = 4 OR 4 = 8 OR
4.
Scaleno
4=8?V
5.
4 = 6 OR 6 = 8
Isolscele
OR 4 = 8 ? F
5. 4 = 4 AND 4 = 8
6.
4 = 6 AND 6 = 8
AND 4 = 8 ? F
AND 4 = 8 ? F
Debug 3
1.
Inserisci tre lati del
triangolo
2.
A4B4C4
3.
4<> 4 AND 4 <> 4
AND 4 <> 4 ? F
4.
4 = 4 OR 4 = 4 OR
4=4?V
Isolscele
5. 4 = 4 AND 4 = 4 AND 4
=4?F
Dal problema al programma
19
Pseudocodifica : il reciproco di un
numero
Variabili
A numerica, intera, I
Inizio
scrivi (“inserisci un numero”);
leggi (A);
se ( A <> 0) allora
scrivi (“1/”A);
se no
scrivi(“errore”);
fine
Mariani, Terragni
Dal problema al programma
20
Flowchart: il reciproco di un
numero
inizio
A
no
(A<>0)
errore
si
1/A
fine
Mariani, Terragni
Dal problema al programma
21
Debug: il reciproco di un numero
 Algoritmo reciproco

scrivi (“inserisci






Debug 1
Inserisci un numero
A4
(4 <> 0) ? (V)
¼
Debug 2
Inserisci un numero
A0
(0 <>0) ? (F)
errore
un numero”);
leggi (A);
se ( A <> 0) allora
scrivi
(“1/”A);
altrimenti
scrivi(“errore”);
fine se
Mariani, Terragni
Dal problema al programma
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
Mariani, Terragni
Dal problema al programma
23
Flow-chart: Mese (per falso)
Inizio
M
no
si
M>0 AND M< 13
Corretto
Errato
M>0 AND M< 13
Fine
Mariani, Terragni
Dal problema al programma
24
Debug: Mese (per falso)
Debug
1. Inserisci mese
2. M
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))
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
Mariani, Terragni
15. 10>0 AND 10<13 ? (V)
Dal problema al programma
25
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
Mariani, Terragni
Dal problema al programma
26
Flow-chart: Mese (per vero)
Inizio
M=0
Vero
M<1 OR M>12
M
M>0 AND M<13
Errato
Mariani, Terragni
Corretto
Dal problema al programma
Fine
27
Debug: Mese (per vero)
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
15
5. 15>0 AND 15< 13 ? (F)
6. Errore
7. 15>0 AND 15< 13 ? (F)
8. Inserisci mese
9. M
9
10. 9>0 AND 9<13 ? (V)
11. Corretto
12. 9<1 OR 9>12 ? (F)
Mariani, Terragni
Dal problema al programma
28
Mappa
Sequenza
menu
Selezione
Ciclo
Mariani, Terragni
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 (per falso)
Pseudocodifica Flow-chart Debug
Mese( per vero)
Pseudocodifica Flow-chart Debug
Spesa
Pseudocodifica Flow-chart Debug
Dal problema al programma
29
Codifica media










'variabili
Dim n1, n2, n3, media As Integer
'prelevo
n1 = Range("b1")
n2 = Range("b2")
n3 = Range("b3")
'calcolo
media = (n1 + n2 + n3) / 3
'stampo
Range("b4") = media

Mariani, Terragni
Dal problema al programma
30
Codifica area e perimetro cerchio













' VARIABILI
Dim raggio, circonferenza, area As Single
Const pigreco = 3.14
'ACQUISIZIONE DEI VALORI DELLE CELLE
raggio = Range("b1")
'CALCOLO IL VALORE DELLA CIRCONFERENZA
circonferenza = 2 * raggio * pigreco
'CALCOLO IL VALORE DELL' AREA
area = raggio ^ 2 * pigreco
'STAMPO DELLA CELLA B2 IL RISULTATO: CIRCOFERENZA
Range("b2") = circonferenza
'STAMPO DELLA CELLA B2 IL RISULTATO: AREA
Range("b3") = area
Mariani, Terragni
Dal problema al programma
31
Codifica rettangolo











'variabili
Dim l1, l2, area, perimetro As Integer
'prelevo valori
l1 = Range("b1")
l2 = Range("b2")
'calcolo
area = l1 * l2
perimetro = (l1 * 2) + (l2 * 2)
'stampo
Range("b4") = area
Range("b3") = perimetro
Mariani, Terragni
Dal problema al programma
32
Codifica massimo

















'VARIABILI
Dim primonumero, secondonumero, terzonumero As Integer
Dim massimo As Integer
'ACQUISIZIONE DEI VALORI DELLE CELLE
primonumero = Cells(1, 2)
secondonumero = Cells(2, 2)
terzonumero = Cells(3, 2)
'CONTROLLO DEI NUMERI
massimo = primonumero
If (secondonumero > massimo) Then
massimo = secondonumero
End If
If (terzonumero > massimo) Then
massimo = terzonumero
End If
'STAMPO IL RISULTATO NELLA CELLA a2: massimo
Range("b5") = massimo
Mariani, Terragni
Dal problema al programma
33
Codifica triangolo










'variabili
Dim lato1, lato2, lato3 As Single
'acquisisci valori dalle celle
lato1 = Range("b1")
lato2 = Range("b2")
lato3 = Range("b3")
'definisci triangolo
If (lato1 <> lato2) And (lato2 <> lato3) And (lato1 <> lato3) Then
Range("a5") = "scaleno"
End If






If (lato1 = lato2) Or (lato2 = lato3) Or (lato1 = lato3) Then
Range("a5") = "isoscele"
End If
If (lato1 = lato2) And (lato2 = lato3) Then
Range("a5") = "equilatero"
End If
Mariani, Terragni
Dal problema al programma
34
Codifica reciproco di un numero







'variabili
Dim numero As Single
'acquisisci valori dalle celle
numero = Range("b1")
'calcola il valore del reciproco
If (numero <> 0) Then
Range("a3") = 1/ numero


Else: Range("a3") = "errore"
End If
Mariani, Terragni
Dal problema al programma
35
Codifica mese









'variabili
Dim mese As Integer
'acquisisco
mese = Range("a1")
'controllo
If (mese < 1 Or mese > 12) Then
Range("b1") = "errore"
Else: Range("b1") = "mese corretto"
End If
Mariani, Terragni
Dal problema al programma
36
Codifica spesa
Mariani, Terragni
Dal problema al programma
37
Scarica

Dal problema al programma - excel