Dal problema al programma
Galeandro B. – Londoni C.
Londoni camilla-Galeandro
Beatrice
1
Indice
•Sequenza
•selezione
•Ciclo o iterazione
• mappa
Londoni camilla-Galeandro
Beatrice
2
Sequenza
•Calcola la media di tre numeri
Pseudocodifica
Flow-chart
Debug
codifica
•Cerchio (area,circonferenza)
Pseudocodifica
Flow-chart
Debug
codifica
•Rettangolo (area,perimetro)
Pseudocodifica
Flow-chart
Londoni camilla-Galeandro
Beatrice
Debug
codifica
3
Selezione
• Trova il massimo di tre numeri
Pseudocodifica
Flow-chart
Debug
codifica
• Definisci il triangolo
Pseudocodifica
Flow-chart
Debug
codifica
Flow-chart
Debug
codifica
• Reciproco
Pseudocodifica
Londoni camilla-Galeandro
Beatrice
4
Ciclo o iterazione
• mese per vero
Pseudocodifica
Flow-chart
Debug
• mese per falso
Pseudocodifica
codifica
Flow-chart
Debug
Flow-chart
Debug
• spesa
Pseudocodifica
Londoni camilla-Galeandro
Beatrice
codifica
5
Pseudocodifica: calcola la media di tre 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
Londoni camilla-Galeandro
Beatrice
6
Flow-chart: calcola la media di tre numeri
inizio
A,B,C
M = (A+B+C)/3
M
fine
Londoni camilla-Galeandro
Beatrice
7
Debug: Calcola la media di tre numeri
Algoritmo media
Debug
scrivi (“inserisci tre numeri interi”);
leggi (A,B,C);
M = (A+B+C)/3;
scrivi (“media =“,M);
1. Inserisci tre numeri interi
2. A4, B6, C8
3. 6(4+6+8)/3
4. Media = 6
Londoni camilla-Galeandro
Beatrice
8
peseudocodifica: cerchio (area,circonferenza)
Algoritmo cerchio
Variabili
Raggio
numero reale,input
A,C
numero reale,output
Costante
Pigreco = 3,14
numero reale
inizio
Scrivi (“inserisci raggio”);
leggi (“raggio”);
A = pigreco*raggio^2;
C = 2*pigreco*raggio;
scrivi (“area =“,A);
scrivi (“circonferenza =“,C);
fine
Londoni camilla-Galeandro
Beatrice
9
Flow-chart: cerchio (area,circonferenza)
inizio
raggio
pigreco*raggio^2
2*pigreco*raggio
A
C
fine
Londoni camilla-Galeandro
Beatrice
10
Debug:cerchio (area,circonferenza)
Algoritmo area,circonferenza
Scrivi (“inserisci raggio”);
leggi (“raggio”);
A = pigreco*raggio^2;
C = 2*pigreco*raggio;
scrivi (“area =“,A);
scrivi (“circonferenza =“,C);
Debug
1. Inserisci raggio
2. Raggio5
3. 78,5pigreco*raggio^2
4. 31,42*pigreco*raggio
5. Area = 78,5
6. Circonferenza = 31,4
Londoni camilla-Galeandro
Beatrice
11
pseudocodifica: rettangolo(area,perimetro)
Algoritmo rettangolo
Variabili
B,H
numerica,reale,I
A,P
numerica,reale,O
Inizio
scrivi(“inserisci la base e l’altezza”);
leggi(B,H);
A=B*H;
P=2*(B+H);
scrivi(“area=“,A);
scrivi(“perimetro=“,P);
fine
Londoni camilla-Galeandro
Beatrice
12
Flow-chart:rettangolo(area,perimetro)
inizio
B,H
B*H
2*(B+H)
A
P
fine
Londoni camilla-Galeandro
Beatrice
13
Debug:rettangolo(area,perimetro)
Algoritmo rettangolo
Debug
scrivi(“inserisci la base e l’altezza”);
leggi(B,H);
A=B*H;
P=2*(B+H);
scrivi(“area=“,A);
scrivi(“perimetro=“,P);
1. Inserisci la base e l’altezza
2. B 2,H 4
3. 8 B*H
4. 12 2*(B+H)
5. Area=8
6. Perimetro=12
Londoni camilla-Galeandro
Beatrice
14
Pseudocodifica:trova il massimo di tre numeri
Algoritmo massimo
Variabili
A,B,C
numerica,intera,I
Max
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
Londoni camilla-Galeandro
Beatrice
15
Flow-chart:trova il massimo di tre numeri
inizio
A,B,C
Max=A
NO
B>Max
SI
Max=B
NO
C>Max
SI
Max=C
Max
Londoni camilla-Galeandro
fineBeatrice
16
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);
Debug 1
1.
Inserisci tre numeri
2.
A 4,B 6,C 8
3.
Debug 2
1.
Inserisci tre numeri
2.
A4, B 16, C 8
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
1.
Inserisci tre numeri
2.
A  4, B  4, C  4
2.
A 14,B 6,C 8
3.
Max = 4
3.
Max = 14
4.
4>4 ?
4.
6>14 ?
5.
4>4 ?
5.
8>14 ?
6.
Il massimo è = 4
Londoni
camilla-Galeandro
6. Il massimo
è = 14
Beatrice
17
Pseudocodifica:definisci il triangolo
Algoritmo triangolo
Variabili
A,B,C
numerica,intera,I
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
Londoni camilla-Galeandro
Beatrice
18
Flow-chart: definisci triangolo
inizio
A,B,C
no
(A<>B) AND (B<>C) AND (A<>C)
si
scaleno
no
no
(A = B) OR (B = C) OR (A = C)
si
isoscele
( A = B) AND (B = C) AND (A = C)
si
equilatero
fine
Londoni camilla-Galeandro
Beatrice
19
Debug: definisci triangolo
Debug 1
Algoritmo triangolo
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.
2.
3.
4.
5.
6.
Debug 3
Inserisci i tre lati del triangolo
A 2, B 2, C 2
(2<>2) AND (2<>2) AND (2<>2) ? (F)
(2 =2) OR (2 = 2) OR (2 = 2) ? (V)
(2 = 2) AND (2 = 2) AND (2 = 2) ? (V)
equilatero
1.
Inserisci i tre lati del triangolo
2.
A 2, B  3, C  6
3.
(2<>3) AND (3<>6) AND (2<>6) ? (V)
4.
Scaleno
5.
(2 = 3) OR (3 = 6) OR (2 = 6) ? (F)
6.
(2 = 3) AND (3 = 6) AND (2 = 6) ? (F)
Debug 2
1.
Inserisci tre lati del triangolo
2.
A 2,B  2, C 6
3.
(2<>3) AND (3<>6) AND (2<>6) ? (F)
4.
(2 = 3) OR (3 = 6) OR (2 = 6) ? (v)
5.
Isoscele
6.
(2 = 3) AND (3 = 6) AND (2 = 6) ? (F)
Londoni camilla-Galeandro
Beatrice
20
Pseudocodifica: reciproco
Algoritmo reciproco
Variabili
A
numerica, intera, I
Inizio
scrivi (“inserisci un numero”);
leggi (A);
se ( A <> 0) allora
scrivi (“1/”A);
altrimenti
scrivi(“errore”);
fine se
fine
Londoni camilla-Galeandro
Beatrice
21
Flow-chart: reciproco
inizio
A
no
(A<>0)
errore
si
1/A
fine
Londoni camilla-Galeandro
Beatrice
22
Debug: reciproco
Algoritmo reciproco
Debug 1
scrivi (“inserisci un numero”);
leggi (A);
se ( A <> 0) allora
scrivi (“1/”A);
altrimenti
scrivi(“errore”);
fine se
1. Inserisci un numero
2. A  4
3. (4 <> 0) ? (V)
4. ¼
Debug 2
1. Inserisci un numero
2. A  0
3. (0 <>0) ? (F)
4. errore
Londoni camilla-Galeandro
Beatrice
23
Pseudocodifica: mese per vero
Algoritmo mese
Variabili
M
numerica, intera, I
Inizio
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
Londoni camilla-Galeandro
Beatrice
24
FLOW-CHART: MESE per vero
inizio
M=0
F
(M<1) OR (M>12)
V
M
(M>0) AND (M<13)
V
F
Mese corretto
errore
fine
Londoni camilla-Galeandro
Beatrice
25
Debug: mese per vero
Algoritmo mese per vero
M = 0;
Debug per vero
1. M 0
2. 0<1 OR 0>12 ? (V)
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
Londoni camilla-Galeandro
Beatrice
3. Inserisci mese
4. M14
5. Errore
6. 14<1 OR 14>12 ? (V)
7. Inserisci mese
8. M 6
9. Mese corretto
10. 6<1 OR 6 >12 ? (F)
26
Pseudocodifica: mese per falso
Algoritmo mese per falso
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
Londoni camilla-Galeandro
Beatrice
27
Flow-chart: mese per falso
Inizio
M
F
V
M>0 AND M< 13
Corretto
Errato
F
M>0 AND M< 13
V
Fine
Londoni camilla-Galeandro
Beatrice
28
Debug: mese per falso
Algoritmo mese per falso
Debug per falso
1. Inserisci mese
2. M 14
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);
3. 14>0 AND 14<13 ? (F)
4. Errore
5. 14>0 AND 14<13 ? (F)
6. Inserisci mese
7. M 1
8. 1>0 AND 1<13 ? (V)
9. Mese corretto
10. 1>0 AND 1<13 ? (V)
Londoni camilla-Galeandro
Beatrice
29
Pseudocodifica: spesa
Algoritmo spesa
Variabili
P
numerica, reale,I
Tot
numerica, reale,O
Inizio
ripeti;
scrivi (“ inserisci il prezzo”);
leggi (P);
se (
Londoni camilla-Galeandro
Beatrice
30
Flow-chart: spesa
inizio
Londoni camilla-Galeandro
Beatrice
31
Debug: spesa
Debug
Londoni camilla-Galeandro
Beatrice
32
Codifica: calcola la media di tre numeri
'VARIABILI
Dim primo, secondo, terzo, media As Integer
'Acquisizione dei valori dalle celle
primo = Range("a1")
secondo = Range("a2")
terzo = Range("a3")
'Calcolo della media
media = (primo + secondo + terzo) / 3
Range("c1") = media
Londoni camilla-Galeandro
Beatrice
33
Codifica: cerchio (area,circonferenza)
'VARIABILI
Dim raggio, area, circonferenza As Single
Const pigreco = 3.14
'AQUISIZIONE DEI VALORI DELLE CELLE
raggio = Range("B1")
'CALCOLO IL VALORE DELLA CIRCONFERENZA E DELL'AREA
circonferenza = (2 * 3.14 * raggio)
area = (3.14 * raggio ^ 2)
'STAMPO NELLA CELLA B2 IL RISULTATO: CIRCONFERENZA
Range("b2") = circonferenza
'STAMPO NELLA CELLA B3 IL RISULTATO : AREA
Range("b3") = area
Londoni camilla-Galeandro
Beatrice
34
Codifica: rettangolo (area , perimetro)
'VARIABILI
Dim base, altezza, perimetro, area As Integer
'ACQUISIZIONE DEI VALORI
base = Range("a1")
altezza = Range("a2")
'CALCOLO AREA E PERIMETRO
area = (base * altezza)
perimetro = 2 * (altezza + base)
Range("c1") = area
Range("c2") = perimetro
Londoni camilla-Galeandro
Beatrice
35
Codifica: massimo
'VARIABILI
Dim primo, secondo As Integer
Dim maggiore As Integer
'ACQUISIZIONE DEI VALORI DALLE CELLE
primo = Cells (1, 2)
secondo = Cells (2, 2)
'CONTROLLO DEI NUMERI (SELEZIONE)
If primo > secondo Then
maggiore = primo
Else
maggiore = secondo
End If
' VISUALIZZA I NUMERI ORDINATI
Cells(2, 4) = maggiore
Londoni camilla-Galeandro
Beatrice
36
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"
Londoni camilla-Galeandro
End If
Beatrice
37
Codifica: reciproco
'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
Londoni camilla-Galeandro
Beatrice
38
Codifica: mese
'variabili
Dim mese As Single
'acquisisci valori dalle celle
mese = Range("b1")
'calcola mese giusto
If (mese < 1) Or (mese > 12) Then
Range("a3") = "errore"
Else: Range("a3") = "mese corretto"
End If
Londoni camilla-Galeandro
Beatrice
39
Codifica: spesa
'VARIABILI
Dim i, totale, spesa As Integer
'QUANTI CONTA I NUMERI >20
totale = 0
'IL CONTATORE "i" CONTA QUANTE CELLE STO LEGGENDO
For i = 2 To 6
spesa = Cells (i, 1)
totale = totale + spesa
Next
Range("b8") = totale
Londoni camilla-Galeandro
Beatrice
40
mappa
sequenza
menu
Selezione
ciclo
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 vero
pseudocodifica
Flow-chart
debug
Mese falso
pseudocodifica
Flow-chart
debug
Spesa
pseudocodifica
Flow-chart
debug
Londoni camilla-Galeandro
Beatrice
41
Scarica

Debug - excel