Dal problema al programma
Santonastaso; Capuzzo
Indice
Sequenza
Selezione
Ciclo o iterazione
Mappa
Capuzzo;Santonastaso
Dal problema al programma
2
Sequenza
Calcola la media di 3 numeri
Pseudocodifica
Flow-chart
Debug
Cerchio (area, circonferenza)
Pseudocodifica
Flow-chart
Debug
Rettangolo (area, perimetro)
Pseudocodifica
Capuzzo;Santonastaso
Flow-chart
Dal problema al programma
Debug
3
Selezione
Trova il massimo di 3 numeri
Pseudocodifica
Flow-chart
Debug
Definisci un triangolo
Pseudocodifica
Flow-chart
Debug
Il reciproco di un numero
Pseudocodifica
Capuzzo;Santonastaso
Flow-chart
Dal problema al programma
Debug
4
Ciclo o iterazione
Mese (per vero)
Pseudocodifica
Flow-chart
Debug
Pseudocodifica
Flow-chart
Debug
Pseudocodifica
Flow-chart
Debug
Mese (per falso)
Spesa
Capuzzo;Santonastaso
Dal problema al programma
5
Pseudocodifica: Calcola la media di 3
numeri
'VARIABILI
Dim n1, n2, n3 As Single
Dim somma, media
'ACQIUSIZIONE DEI VALORI
NELLE CELLE
n1 = Range("b3")
Scrivi (“Inserisci tre numeri interi”);
n2 = Range("b4")
Leggi (A, B, C);
n3 = Range("b5")
M = (A + B + C) / 3;
Scrivi (“Media = “,M);
'CALCOLO LA SOMMA E LA
MEDIA
somma = (n1 + n2 + n3)
media = (n1 + n2 + n3) / 3
'STAMPO I VALORI NELLE
CELLE B6, B7
Range("b6") = somma
Range("b7") = media
Algoritmo Media
Variabili
A, B, C numerica, intera, input
M
numerica, reale, output
Inizio
Fine
fine
Capuzzo;Santonastaso
Dal problema al programma
6
Flow-chart: Calcola la media di 3
numeri
Inizio
A, B, C
M =(A+B+C)/3
M
fine
Capuzzo;Santonastaso
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.
2.
A←4, B←6, C←8
3. 6←(4+6+8) /3
4.
Capuzzo;Santonastaso
Inserisci tre numeri
interi
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
'VARIABILI
Dim raggio As Integer
Dim circonferenza, area As Integer
Const pigreco = 3.14
'AQUISIZIONE DEI VALORI DELLE
CELLE
raggio = Cells(1, 2)
'CONTROLLO DEI NUMERI (SELEZIONE)
circonferenza = 2 * pigreco * raggio
area = pigreco * raggio ^ 2
'VISUALIZZA LA CIRCONFERENZA E
L'AREA
Cells(2, 2) = circonferenza
Cells(3, 2) = area
fine
Capuzzo;Santonastaso
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”)
Capuzzo;Santonastaso
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
Variabili
Dim lato1, lato2, area As Single
B,H numerica reale, I
'AQUISIZIONE DEI VALORI DELLE
CELLE
A,P numerica reale,O
lato1 = Range("b1")
Inzio
lato2 = Range("b2")
scrivi (“inserisci base,altezza”);
'CALCOLA IL VALORE DELL'AREA
leggi ( B,H);
area = lato1 * lato2
A= B*H;
'CALCOLA IL VALORE DEL PERIMETRO
perimetro = lato1 * 2 + lato2 * 2
P=2*(B+H);
'STAMPA NELLA CELLA B3 IL
scrivi (“area=“,A);
RISULTATO: AREA
scrivi (“perimetro=“, P);
Range("b3") = area
fine
'STAMPA NELLA CELLA B4 IL
RISULTATO: PERIMETRO
Range("b4") = perimetro
Capuzzo;Santonastaso
fine
Dal problema al programma
11
Flowchart rettangolo (area, perimetro)
inizio
Inizio B,H
A=B*H
P=2*(B+H)
A,P
fine
Capuzzo;Santonastaso
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);
Capuzzo;Santonastaso
1.
2.
3.
4.
5.
6.
inserisci base
B←3 H←2
A←B*H
P←2*(B+H)
Area=6
Perimetro=10
Dal problema al programma
13
Pseudocodifica: trova il massimo
di 3 numeri
'VARIABILI
Dim i, maggiore, numero As Integer
Variabili
'MAGGIORE CONTA IL MAGGIORE
A, B, C numerica, intera, I
Max numerica, O
maggiore = Cells(2, 1)
'IL CONTATORE "i" CONTA QUANTE
Inizio
CELLE STO CONTANDO
scrivi(“inserisci tre numeri interi”);
For i = 2 To 4
leggi(“A,B,C”);
numero = Cells(i, 1)
max=A;
If numero > maggiore Then
se(B>max) allora
maggiore = numero
max=B;
End If
Fine se
Se (C>max) allora
Next
max=C;
Range("E1") = maggiore
Fine se
Scrivi(“il massimo è =“, max); fine
fine
Algoritmo Massimo
Capuzzo;Santonastaso
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
Capuzzo;Santonastaso
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);
Capuzzo;Santonastaso
Debug 2
Debug 1
Inserisci tre numeri interi Inserisci tre numeri interi
A  4 B  11 C  6
A3B5C9
Max = 4
Max = 3
6>4?
5>3?
Max  6
Max  5
11 > 6 ?
9>5?
Il massimo è =11
Max  9
Il massimo è = 9
Debug 3
Inserisci tre numeri interi
A  12 B  7 C  6
Max = 12
7 > 14 ?
Il massimo è =14
Dal problema al programma
Debug 4
Inserisci tre numeri interi
A4B4C4
Max = 4
4>4?
4>4?
Il massimo è = 4
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
Dato in input 3 lati di
un triangolo, dire in
output se il triangolo
è:
Scaleno
Isoscele
Equilatero
Capuzzo;Santonastaso
Variabili
A,B,C
Inizio
numerica,intera,I
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
Dal problema al programma
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
Capuzzo;Santonastaso
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
Capuzzo;Santonastaso
Debug 1
Debug 2
1.
Inserisci tre
1.
Inserisci tre lati
lati del triangolo
del triangolo
2.
\ A4B6
2.
A4B4C
C8
8
3.
4<> 6 AND 6
3.
4<> 4 AND 4 <>
<> 8 AND 4 <>
8 AND 4 <> 8 ?
8?V
F
4.
Scaleno
4.
4 = 4 OR 4 = 8
5.
4 = 6 OR 6 =
OR 4 = 8 ? V
8 OR 4 = 8 ? F
Isolscele
6.
4 = 6 AND 6
5.
4 = 4 AND 4 = 8
= 83
AND 4 = 8 ?
Debug
AND 4 = 8 ? F
F
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
19
Dal problema al programma
AND 4 = 4 ? F
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
Capuzzo;Santonastaso
'VARIABILI
Dim numero As Integer
Dim Opposto
'AQUISIZIONE DEI DATI DELLE CELLE
numero = Cells(1, 2)
'CONTROLLO DEI NUMERI (SELEZIONE)
If (numero > 0) Then
Cells(2, 2) = -1 * numero
Else
Cells(2, 2) = "errore"
End If
End
Dal problema al programma
20
Flowchart: il reciproco di un
numero
inizio
A
no
(A<>0)
errore
si
1/A
fine
Capuzzo;Santonastaso
Dal problema al programma
21
Debug: il reciproco di un
numero
Algoritmo reciproco
scrivi (“inserisci
un numero”);
leggi (A);
se ( A <> 0)
allora
scrivi
(“1/”A);
altrimenti
Debug 1
Inserisci un numero
A4
(4 <> 0) ? (V)
¼
Debug 2
Inserisci un numero
A0
(0 <>0) ? (F)
errore
scrivi(“errore”);
fine se
Capuzzo;Santonastaso
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
Variabili
M
numerica, intera, I
Inizio
ripeti;
scrivi(“inserisci il
mese”);
leggi (M);
se (M>0) AND (M<13)
allora
scrivi (“mese
corretto”);
altrimenti
scrivi
(“errore”);
fine se;
finché (M>0) AND (M<13);
fine
Capuzzo;Santonastaso
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
Capuzzo;Santonastaso
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
Capuzzo;Santonastaso
15.10>0 AND 10<13 ?
Dal problema al programma
(V)
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
Variabili
M
Inizio
numerica, intera, I
M = 0;
esegui mentre ((M<=1)
OR (M>=12));
scrivi (“inserisci
il mese”);
legge(M);
se (M>0) AND
(M<13) allora
scrivi
(“mese corretto”);
altrimenti
scrivi
(“errore”);
fine se;
ripeti
fine
Capuzzo;Santonastaso
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
Capuzzo;Santonastaso
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)
Capuzzo;Santonastaso
Dal problema al programma
28
MappaPseudocodifica Flow-chart Debug
Media
Sequenza
menu
Selezione
Ciclo
Capuzzo;Santonastaso
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
Pseudocodifica Flow-chart Debug
Es. 2
Pseudocodifica Flow-chart Debug
Es. 3
Pseudocodifica Flow-chart Debug
Dal problema al programma
29
Scarica

Dal problema al programma - excel