Dal problema al programma
Rastelli Nicolò
Molteni Danilo
Indice




Sequenza
Selezione
Ciclo o iterazione
Mappa
Dal problema al programma
2
Sequenza

Calcola la media di 3 numeri
Pseudocodifica

Debug
Cerchio (area,circonferenza)
Pseudocodifica

Flow-chart
Flow-chart
Debug
Rettangolo (area,perimetro)
Pseudocodifica
Flow-chart
Dal problema al programma
Debug
3
Selezione

Trova il massimo di 3 numeri
Pseudocodifica

Debug
Definisci il triangolo
Pseudocodifica

Flow-chart
Flow-chart
Debug
Flow-chart
Debug
Reciproco
Pseudocodifica
Dal problema al programma
4
Ciclo o iterazione

Mese
Pseudocodifica

Debug
Flow-chart
Debug
Flow-chart
Debug
2 esercizio
Pseudocodifica

Flow-chart
3 esercizio
Pseudocodifica
Dal problema al programma
5
Pseudocodifica: Calcola la media di 3 numeri
Algoritmo media
Private Sub calcola_Click()
Variabili
'VARIABILI
A, B, C numerica, intera, input
Dim numero1, numero2, numero3 As Single
M
numerica, intera, input
Dim media As Single
Inizio
'ACQUISIZIONE DEI VALORI DELLE CELLE
Scrivi(“Inserisci tre numeri interi”); numero1 = Cells(1, 2)
numero2 = Cells(2, 2)
Leggi(A,B,C);
numero3 = Cells(3, 2)
M = (A+B+C) /3
'CALCOLA LA MEDIA
Scrivi(“Media =“, M);
media = (numero1 + numero2 + numero3) /
fine
3
'STAMPO IL RISULTATO NELLA CELLA b4:
MEDIA
Range("b4") = media
End Sub
Dal problema al programma
6
Flow-chart: Calcola la media di 3 numeri
inizio
A,B,C
M=(A+B+C)/3
M
fine
Dal problema al programma
7
Debug: Calcola la media di 3 numeri
Debug
Algoritmo media
Scrivi(“Inserisci 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
Dal problema al programma
8
Pseudocodifica: Cerchio (area, circonferenza)
Algoritmo media
Variabili
Raggio
input
Circonferenza
output
Area
output
Costante
Pigreco=3,14
numero reale,
numero reale,
numero reale,
numero reale
Inizio
Scrivi(“inserisci raggio”);
Leggi(raggio);
Area = Pigreco * Raggio^2;
Circonferenza = 2*pigreco*R;
Scrivi (“area”,C);
Scrivi (“circonferenza” , C);
Fine
Private Sub calcolaarea_Click()
'CONST
pigreco = 3.14
'VARIABILI
Dim raggio, circonferenza, area As Single
'AQUISIZIONE DEI VALORI DALLE CELLE
raggio = Range("b1")
'CALCOLO IL VALORE DELL'AREA
area = (raggio * raggio * pigreco)
'CALCOLO IL VALORE DELLA CIRCONFERENZ
circonferenza = (raggio * 2 * pigreco)
'STAMPO NELLA CELLA B3 IL RISULTATO:
AREA
Range("b3") = area
'STAMPO NELLA CELLA B3 IL RISULTATO:
CIRCONFERENZA
Range("b2") = circonferenza
End Sub
Flow-chart: Cerchio (area, circonferenza)
inizio
R
A=pigreco*r^2
C=2*pigreco*r
A,C
fine
Dal problema al programma
Debug: Cerchio (area, circonferenza)






1
2
3
4
5
6
Inserisci raggio
R 5
A 3,14*5^2
C 2*3,14*5
Area = 78,5
Circonferenza = 31,4
Dal problema al programma
Pseudocodifica: Rettangolo (area, perimetro)
Algoritmo rettangolo
B,H numerica, reale,input
A,P numerica, reale, output
Inizio
scrivi (“inserisci base
rettangolo”);
leggi (b,h)
A = (B*H);
P = 2*(B+H);
scrivi (“area =” A);
scrivi (“perimetro =” P);
Fine
Private Sub calcola_Click()
'VARIABILI
Dim base, altezza As Single
Dim area, perimetro As Single
'AQUISIZIONE DEI VALORI DELLE CELLE
base = Range("b2")
altezza = Range("b3")
'CALCOLO L'AREA
area = (base * altezza)
'STAMPO NELLA CELLA B5 IL RISULTATO:
AREA
Range("b5") = area
'CALCOLO IL PERIMETRO
perimetro = (base + altezza) * 2
'STAMPO NELLA CELLA B4 IL RISULTATO:
PERIMETRO
Range("b4") = perimetro
End Sub
Dal problema al programma
Flow-chart: Rettangolo (area, perimetro)
inizio
B,H
A= B*H
P= 2+(B*H)
A,P
fine
Dal problema al programma
Debug: Rettangolo (area, perimetro)






1
2
3
4
5
6
inserisci base,altezza
B5,H2
A5*2
P2*(5+2)
area=10
perimetro=14
Pseudocodifica: Trova il massimo di 3 numeri
Algoritmo Massimo
Variabili
A,B,C
numerica, intera, input
Max numerica, intera, output
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
Private Sub massimominimo_Click()
'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
massimo = primonumero
If (secondonumero > massimo) Then
massimo = secondonumero
End If
If (terzonumero > massimo) Then
massimo = terzonumero
End If
'STAMPO IL RISULTATO NELLA CELLA b5: massimo
Range("b5") = massimo
End Sub
Dal problema al programma
15
Flow-chart: trova il massimo tra 3
numeri
inizio
A,B,C
Max=A
B>Max
C>Max
Max=B
Max=C
Max
fine
Dal problema al programma
16
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
Scrivi (“Il massimo è =“, Max);
Debug 1
Inserisci tre numeri interi
A4B6C8
Max = 4
6>4?
Max  6
8>6?
Max  8
Il massimo è = 8
Debug 2
Inserisci tre numeri interi
A  4 B  16 C  8
Max = 4
16 > 4 ?
Max  16
8 > 16 ?
Il massimo è =16
Debug 3
Inserisci tre numeri interi
A  14 B  6 C  8
Max = 14
6 > 14 ?
8 > 14 ?
Il massimo è =14
Debug 4
Inserisci tre numeri
interi
A4B4C4
Max = 4
4>4?
4>4?
Il massimo è = 4
Dal problema al programma
17
Pseudocodifica: Definisci il triangolo
Algoritmo Triangolo
Variabili
Private Sub CommandButton1_Click()
A, B, C
numerica, intera, input
'variabili
Inizio
Scrivi (“Inserisci i tre lati del triangolo”);
Dim lato1, lato2, lato3 As Single
Leggi (A, B, C);
'acquisisci valori dalle celle
Se (A<>B) AND (B<>C) AND (A<>C) allora
lato1 = Range("b1")
Scrivi (“Scaleno”);
lato2 = Range("b2")
Fine se
lato3 = Range("b3")
Se (A=B)OR (B=C) OR (A=C)
'definisci triangolo
Scrivi (“Isoscele”);
If (lato1 <> lato2) And (lato2 <> lato3) And
Fine se
(lato1 <> lato3) Then
Se (A=B) AND (B=C) AND (A=C) allora
Range("a5") = "scaleno"
Scrivi (“Equilatero”);
End If
Fine se
If (lato1 = lato2) Or (lato2 = lato3) Or (lato1 =
Fine
Dato in input 3 lati di un
triangolo, dire in output se il
triangolo è:
Scaleno
Isoscele
Equilatero
lato3) Then
Range("a5") = "isoscele"
End If
If (lato1 = lato2) And (lato2 = lato3) Then
Range("a5") = "equilatero"
End If
End Sub
Dal problema al programma
18
Flow-chart: Definisci il triangolo
Inizio
A, B, C
No
No
No
A <> B
AND B <> C
AND A <> C
A=B
A=B
OR
B=C
OR B=C
OR A=C
A=C
OR
A=B
AND B=C
AND A=C
Dal problema al programma
Sì
Scaleno
Scaleno
Sì
Isoscele
Sì
Equilatero
Fine
19
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
Debug 1
Inserisci tre lati del triangolo
A4B6C8
4<> 6 AND 6 <> 8 AND 4 <> 8 ?
V
Scaleno
4 = 6 OR 6 = 8 OR 4 = 8 ? F
4 = 6 AND 6 = 8 AND 4
Debug 2
Inserisci tre lati del triangolo
A4B4C8
4<> 4 AND 4 <> 8 AND 4 <> 8 ?
F
4 = 4 OR 4 = 8 OR 4 = 8 ? V
Isolscele
4 = 4 AND 4 = 8 AND 4 = 8 ? F
Debug 3
Inserisci tre lati del triangolo
A4B4C4
4<> 4 AND 4 <> 4 AND 4 <> 4 ? F
4 = 4 OR 4 = 4 OR 4 = 4 ? V
Isolscele
4 = 4 AND 4 = 4 AND 4 = 4 ? F
Dal problema al programma
20
Pseudocodifica: Reciproco
Algoritmo reciproco
Variabili
A numerica, intera, I
Inizio
scrivi (“inserisci un numero”);
leggi (A);
se ( A <> 0) allora
scrivi (“1/”A);
se no
scrivi(“errore”);
fine
Private Sub CommandButton1_Click()
'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
End Sub
Dal problema al programma
21
Flow-chart: Reciproco
inizio
A
no
(A<>0)
errore
si
1/A
fine
Dal problema al programma
22
Debug: Reciproco
Algoritmo reciproco
scrivi (“inserisci unnumero”);
leggi (A);
se ( A <> 0) allora
scrivi (“1/”A);
altrimenti
scrivi(“errore”);
fine se
Dal problema al programma
Debug 1
Inserisci un numero
A4
(4 <> 0) ? (V)
¼
Debug 2
Inserisci un numero
A0
(0 <>0) ? (F)
errore
23
Pseudocodifica: Mese
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(“errore reinserici”)
Fine se
Finché (M>12)OR(M<1)
Fine
Finché (M>0)AND(M<13)
Fine
Private Sub CommandButton1_Click()
'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
End Sub
Flow-chart: Mese
Inizio
M
no
si
M>0 AND M< 13
Corretto
Errato
M>0 AND M< 13
Fine
Debug: Mese
RIPETI
Scrivi(“Inserisci mese”);
Leggi(M);
Se (M>0)AND(M<13) allora
scrivi(“mese inserito corretto”);
altrimenti
scrivi(“errore reinserici”)
Fine se
Finché (M>0)AND(M<13)
Inserisci mese
M14
14>0 AND 14<13 ? (F)
errore reinserici
14>0 AND 14<13 ? (F)
Inserisci mese
M1
1<0 AND 1<13 ? (V)
Mese inserito corretto
1>0 AND 1<13 ? (V)
Codifica: Spesa
Private Sub CommandButton1_Click()
'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
End Sub
Mappa
sequenza
Indice
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
pseudocodifica
Flow-chart
Debug
Es 2
pseudocodifica
Flow-chart
Debug
Es 3
pseudocodifica
Flow-chart
Debug
Dal problema al programma
28
Scarica

Rastelli-Molteni 1C2 - excel