41
Dal problema al programma Mancarella Francesca Zuelli Lorenzo

Dal problema al programma

Embed Size (px)

DESCRIPTION

Dal problema al programma. Mancarella Francesca Zuelli Lorenzo. Indice. Sequenza. Selezione. Ciclo o iterazione. Sequenza. Calcola la media di 3 numeri Pseudocodifica Flow-chart Debung Codifica. Cerchio (area,circonferenza) Pseudocodifica Flow-chart Debung Codifica. - PowerPoint PPT Presentation

Citation preview

Page 1: Dal problema al programma

Dal problema al programma

Mancarella FrancescaZuelli Lorenzo

Page 2: Dal problema al programma

Dal problema al programma 2Mancarella - Zuelli

Indice

Sequenza Selezione Ciclo o iterazione

Page 3: Dal problema al programma

Dal problema al programma 3Mancarella - Zuelli

Sequenza

Calcola la media di 3 numeri Pseudocodifica Flow-chart Debung Codifica Cerchio (area,circonferenza) Pseudocodifica Flow-chart Debung Codifica

Rettangolo (area,perimetro) Pseudocodifica Flow-chart Debung Codifica

Page 4: Dal problema al programma

Dal problema al programma 4Mancarella - Zuelli

Selezione

Trova il massimo di 3 numeri Pseudocodifica Flow-chart Debung Codifica

Definisci il triangolo Pseudocodifica Flow-chart Debung Codifica

Reciproco di un numeroPseudocodifica Flow-chart Debung Codifica

Page 5: Dal problema al programma

Dal problema al programma 5Mancarella - Zuelli

Ciclo o iterazione Mese (per falso)

Pseudocodifica Flow-chart Debung Codifica

Mese (per vero) PseudocodificaFlow-chart Debung Codifica

Spesa PseudocodificaFlow-chart Debung Codifica

Page 6: Dal problema al programma

Dal problema al programma 6Mancarella - Zuelli

Pseudocodifica: Calcola la media di 3 numeri

Algoritmo mediaVariabiliA, B, C numerica, intera, inputM numerica, reale, output

inizioScrivi(“inserisci tre numeri interi”);Leggi(A, B, C)M = (A + B + C) / 3;Scrivi(“Media = “,M)

fine

Page 7: Dal problema al programma

Dal problema al programma 7Mancarella - Zuelli

Flow-chart: Calcola la media di 3 numeri

inizio

A, B, C

M = (A+B+C) / 3

fine

M

Page 8: Dal problema al programma

Dal problema al programma 8Mancarella - Zuelli

Debung: Calcola la media di 3 numeriAlgoritmo media

Scrivi(“inserisci tre numeri interi”);

Leggi(A, B, C);M = (A + B + C) / 3;Scrivi(“Media = “, M);

Debung

1. Inserisci tre numeri interi

2. A 4, B 6, C 8

3. 6 (4 + 6 +8) / 3;

4. Media = 6

Page 9: Dal problema al programma

Dal problema al programma 9Mancarella - Zuelli

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

Page 10: Dal problema al programma

Dal problema al programma 10Mancarella - Zuelli

Pseudocodifica: Calcolare circonferenza e area di un cerchio di cui conosciamo il raggio

Algoritmo cerchioVariabiliraggio numero, reale, IArea,circonferenza numero, reale,O

CostantePigreco = 3,14 numero,reale

inizioScrivi(“Inserisci raggio”);Leggi(raggio);Area = (raggio^2*Pigreco);Circonferenza = (2*Pigreco*raggio);Scrivi(“Area = “, Area);Scrivi(“Circonferenza = “, Circonferenza);

fine

Page 11: Dal problema al programma

Dal problema al programma 11Mancarella - Zuelli

Flow-chart: circonferenza e areainizio

raggio

Area = (Raggio^2*Pigreco)

fine

Circonferenza = (2*Raggio*Pigreco)

Area

Circonferenza

Page 12: Dal problema al programma

Dal problema al programma 12Mancarella - Zuelli

Debug:circonferenza e areaAlgoritmo cerchio

Scrivi(“Inserisci raggio”);Leggi(raggio);Area = (raggio^2*Pigreco);Circonferenza = (2*Pigreco*raggio);Scrivi(“Area = “, Area);Scrivi(“Circonferenza = “, Circonferenza);

Debug

1. Inserisci raggio

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

Page 13: Dal problema al programma

Dal problema al programma 13Mancarella - Zuelli

Codifica: Calcolare circonferenza e areaPrivate 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") = AreaEnd Sub

Page 14: Dal problema al programma

Dal problema al programma 14Mancarella - Zuelli

Pseudocodifica: Calcolare area e perimetro di un rettangoloAlgoritmo rettangoloVariabiliB,H numerica, reale, IA,2P numerica, reale,O

inizioScrivi(“Inserisci base,altezza”);Leggi(B,H);A = (B*H);2P = (2B*2H);Scrivi(“ A = “ A);Scrivi (“ 2P = “ 2P);

fine

Page 15: Dal problema al programma

Dal problema al programma 15Mancarella - Zuelli

Flow-chart: area e perimetro di un rettangolo

inizio

B,H

Area = (B*H)

fine

Perimetro = (2B*2H)

Area

Perimetro

Page 16: Dal problema al programma

Dal problema al programma 16Mancarella - Zuelli

Debug: area e perimetro di un rettangoloAlgoritmo rettangolo

Scrivi(“Inserisci base,altezza”);Leggi(B,H);A = (B*H);2P = (2*B+2*H);Scrivi(“ A = “ A);Scrivi (“ 2P = “ 2P);

Debung

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

Page 17: Dal problema al programma

Dal problema al programma 17Mancarella - Zuelli

Codifica: area e perimetro di un rettangoloPrivate 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") = areaEnd Sub

Page 18: Dal problema al programma

Dal problema al programma 18Mancarella - Zuelli

Pseudocodifica: Trova il massimo di 3 numeri

Algoritmo MassimoVariabili A,B,C numerica, intera, IMax numerica, intera, O

inizioScrivi(“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

Page 19: Dal problema al programma

Dal problema al programma 19Mancarella - Zuelli

Flow-chart: trova il massimo tra 3 numeri interi inizio

A, B, C

Max = A

B>Max

Max = B

No

C>MaxMax = C

Max

fine

No

Si

Si

Page 20: Dal problema al programma

Dal problema al programma 20Mancarella - Zuelli

Debug: trova il massimo tra 3 numeri interi

Algoritmo massimoScrivi(“Inserisci tre numeri interi”); Leggi(A, B, C)Max=A;Se (B>Max) allora

Max=Bfine se Se (C>Max) allora

Max=C;fine se Se(“Il Massimo è = “, Max);

Debug 1

1. Inserisci tre numeri interi

2. A 4, B 6, C 8

3. Max=4

4. 6>4 ?

5. Max 6

6. 8>6 ?

7. Max 8

8. Il massimo è = 8

Debug 2

1. Inserisci tre numeri interi

2. A 4, B 16, C 8

3. Max=4

4. 16>4 ?

5. Max 16

6. 8>16 ?

7. Il massimo è = 16

Debug 3

1. Inserisci tre numeri interi

2. A 14, B 6, C 8

3. Max=14

4. 6>14 ?

5. 8>14 ?

6. Il massimo è = 14

Debug 4

1. Inserisci tre numeri interi

2. A 14, B 4, C 4

3. Max=4

4. 4>4 ?

5. 4>4 ?

6. Il massimo è = 4

Page 21: Dal problema al programma

Dal problema al programma 21Mancarella - Zuelli

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") = massimoEnd Sub

Page 22: Dal problema al programma

Dal problema al programma 22Mancarella - Zuelli

Pseudocodifica: Definisci il triangoloAlgoritmo TriangoloVariabiliA, B, C numerica, intera, I

inizioScrivi(“Inserisci i tre lati del triangolo”);Leggi(A,B,C);Se (A<>B) AND (B<>C) AND (C<>A) allora

Scrivi(“Scaleno”);fine seSe (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

Dato in input 3 lati di un triangolo, dire in output se il triangolo è:

-Scaleno

-Isoscele

-Equilatero

Page 23: Dal problema al programma

Dal problema al programma 23Mancarella - Zuelli

Flow-chart: Definisci il triangolo

Scaleno

Isoscele

Equilatero

inizio

A, B, C

(A<>B) AND (B<>C) AND (A<>B)

(A=B) OR (B=C) OR (A=C)

(A=B) AND (B=C) AND (A=C)

fine

Page 24: Dal problema al programma

Dal problema al programma 24Mancarella - Zuelli

Debug: Definisci il triangoloAlgoritmo TriangoloVariabiliA, B, C numerica, intera, I

inizioScrivi(“Inserisci i tre lati del triangolo”);Leggi(A,B,C);Se (A<>B) AND (B<>C) AND (C<>A) allora

Scrivi(“Scaleno”);fine seSe (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

Debug 1

1. Inserisci tre lati del triangolo

2. A 2, B 5, C 10

3. (2<>5) AND (5<>10) AND (2<>10) ? (V)

4. Scaleno

5. (2=5) OR (5=10) OR (2=10) ? (F)

6. (2=5) AND (5=10) AND (2=10) ? (F)

Debug 2

1. Inserisci tre lati del triangolo

2. A 2, B 2, C 8

3. (2<>2) AND (2<>8) AND (2<>8) ? (F)

4. (2=2) OR (2=8) OR (2=2) ? (V)

5. Isoscele

6. (2=2) AND (2=8) OR (2=2) ? (F)Debug 3

1. A 5, B 5, C 5

2. (5<>5) AND (5<>5) AND (5<>5) ? (F)

3. (5=5) OR (5=5) OR (5=5) ? (V)

4. Isoscele

5. (5=5) AND (5=5) AND (5=5) ? (V)

6. Equilatero

Page 25: Dal problema al programma

Dal problema al programma 25Mancarella - Zuelli

Codifica: Definisci il triangoloPrivate 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 IfEnd sub

Page 26: Dal problema al programma

Dal problema al programma 26Mancarella - Zuelli

Pseudocodifica: Reciproco di un numeroAlgoritmo ReciprocoVariabili A numerica, intera, I

inizioScrivi(“Inserisci un numero”);Leggi(A);Se (A<>0) allora

Scrivi(“Il reciproco è: “,1/A)altrimenti

Scrivi(“Errore”)

fine

Page 27: Dal problema al programma

Dal problema al programma 27Mancarella - Zuelli

Flow-chart: Reciproco di un numero

inizio

A

(A<>0)

Errore 1/A

fine

Page 28: Dal problema al programma

Dal problema al programma 28Mancarella - Zuelli

Debug: Reciproco di un numeroAlgoritmo ReciprocoVariabili A numerica, intera, I

inizioScrivi(“Inserisci un numero”);Leggi(A);Se (A<>0) allora Scrivi(“Il reciproco è: “,1/A)altrimenti Scrivi(“Errore”)

fine

Debug 1

1. Inserisci un numero

2. A 2

3. (2<>0) ? (V)

4. Il reciproco è : ½

Debug 2

1. Inserisci un numeri

2. A 0

3. (0<>0) ? (F)

4. Errore

Page 29: Dal problema al programma

Dal problema al programma 29Mancarella - Zuelli

Codifica: Reciproco di un numeroPrivate 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

Page 30: Dal problema al programma

Dal problema al programma 30Mancarella - Zuelli

Pseudocodifica: Mese (per falso)Algoritmo mese Variabili M numerica,intera,I

inizioripeti

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

Page 31: Dal problema al programma

Dal problema al programma 31Mancarella - Zuelli

Flow-chart : Mese (per falso)

OK

inizio

M

(M>0) AND (M<13)ERRORE

(M>0) AND (M<13)

fine

sino

vero

falso

Page 32: Dal problema al programma

Dal problema al programma 32Mancarella - Zuelli

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))

Debug1. Inserisci mese 2. M 173. 17>0 AND 17< 13 ? (F) 4. Errore5. 17>0 AND 17<13 ? (F)6. Inserisci mese7. M 08. 0>0 AND 0<13 ? (F)9. Errore10. 0>0 AND 0<13 ? (F)11. Inserisci mese 12. M 1013. 10>0 AND 10<13 ? (V)14. Corretto15. 10>0 AND 10<13 ? (V)

Page 33: Dal problema al programma

Dal problema al programma 33Mancarella - Zuelli

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 IfEnd Sub

Page 34: Dal problema al programma

Dal problema al programma 34Mancarella - Zuelli

Pseudocodifica : Mese (per vero)Algoritmo mese Variabili M numerica,intera,I

Iniziom=0esegui 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

Page 35: Dal problema al programma

Dal problema al programma 35Mancarella - Zuelli

Flow-chart : Mese (per vero)

OK

inizio

M

(M<=0)or (M>12)

ERRORE(M>0) AND (M<13)

fine

vero

M=0

falso

falso

Page 36: Dal problema al programma

Dal problema al programma 36Mancarella - Zuelli

Debug: Mese (per vero)Algoritmo mese Variabili M numerica,intera,I

Iniziom=0esegui mentre ((M>12) OR (M<1))

Scrivi(“Inserisci mese”);Leggi(M);Se(M>0) AND (M<13) allora

Scrivi(“Mese inserito corretto”)

AltrimentiScrivi(“Errore,reinserire)”

fine se fine

Debug

1. M 0

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)

Page 37: Dal problema al programma

Dal problema al programma 37Mancarella - Zuelli

Pseudocodifica: SpesaAlgoritmo spesaVariabiliP numerica, reale,I T numerica, reale, O Inizio

T=0ripeti

scrivi (“inserisci prezzo”)leggi (P)T=T+P

finché (P=0)scrivi (“totale =“ T);

fine

Page 38: Dal problema al programma

Dal problema al programma 38Mancarella - Zuelli

Flow-chart : Spesainizio

T=0

P

T=T+P

P=0

T

fine

Page 39: Dal problema al programma

Dal problema al programma 39Mancarella - Zuelli

Debug: SpesaAlgoritmo spesaVariabiliP numerica, reale,I T numerica, reale, O Inizio

T=0ripeti

scrivi (“inserisci prezzo”)leggi (P)T=T+P

finché (P=0)scrivi (“totale =“ T);

fine

Debug 1. T 02. Inserisci prezzo 3. P 104. T 0+10 (10)5. 10= 0 ? (F)6. Inserisci prezzo7. P 58. T 10+5 (15)9. 15=0 ? (F)10. Inserisci prezzo11. P 012. T 22+0 (22)13. 0=0 ? (V)14. Totale = 22

Page 40: Dal problema al programma

Dal problema al programma 40Mancarella - Zuelli

Codifica: spesaPrivate Sub spesa_Click() Dim prodotto, tot As Single Dim i As Integer tot = 0 For i = 1 To 5 prodotto = Cells(i, 2) tot = tot + prodotto Next Range("b7") = totEnd Sub

Page 41: Dal problema al programma

Dal problema al programma 41Mancarella - Zuelli

Mappa Debug

Debug

Debug

menu

Sequenza

Ciclo

Selezione

Media

Cerchio

Rettangolo

Massimo

Triangolo

Reciproco

Mese (falso)

Mese (vero)

Spesa

Pseudocodifica

Pseudocodifica

Pseudocodifica

Pseudocodifica

Pseudocodifica

Pseudocodifica

Pseudocodifica

Pseudocodifica

Pseudocodifica

Flow-chart

Flow-chart

Flow-chart

Flow-chart

Flow-chart

Flow-chart

Flow-chart

Flow-chart

Flow-chart

Debug

Debug

Debug

Debug

Debug

Debug