Dal problema al programma Mancarella Francesca Zuelli Lorenzo Indice Sequenza Selezione Ciclo o iterazione Mancarella - Zuelli Dal problema al programma 2 Sequenza Calcola la media di 3 numeri Pseudocodifica Debung Codifica Cerchio (area,circonferenza) Pseudocodifica Flow-chart Flow-chart Debung Codifica Rettangolo (area,perimetro) Pseudocodifica Mancarella - Zuelli Flow-chart Debung Dal problema al programma Codifica 3 Selezione Trova il massimo di 3 numeri Pseudocodifica Debung Codifica Debung Codifica Debung Codifica Definisci il triangolo Pseudocodifica Flow-chart Flow-chart Reciproco di un numero Pseudocodifica Mancarella - Zuelli Flow-chart Dal problema al programma 4 Ciclo o iterazione Mese (per falso) Pseudocodifica Debung Codifica Flow-chart Debung Codifica Flow-chart Debung Codifica Mese (per vero) Pseudocodifica Flow-chart Spesa Pseudocodifica Mancarella - Zuelli 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 Mancarella - Zuelli Dal problema al programma 6 Flow-chart: Calcola la media di 3 numeri inizio A, B, C M = (A+B+C) / 3 M fine Mancarella - Zuelli Dal problema al programma 7 Debung: Calcola la media di 3 numeri Algoritmo media Debung Scrivi(“inserisci tre numeri interi”); Leggi(A, B, C); M = (A + B + C) / 3; Scrivi(“Media = “, M); Mancarella - Zuelli 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 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 Mancarella - Zuelli Dal problema al programma 9 Pseudocodifica: Calcolare circonferenza e area di un cerchio di cui conosciamo il raggio Algoritmo cerchio Variabili raggio Area,circonferenza numero, reale, I numero, reale,O Costante Pigreco = 3,14 numero,reale inizio Scrivi(“Inserisci raggio”); Leggi(raggio); Area = (raggio^2*Pigreco); Circonferenza = (2*Pigreco*raggio); Scrivi(“Area = “, Area); Scrivi(“Circonferenza = “, Circonferenza); fine Mancarella - Zuelli Dal problema al programma 10 Flow-chart: circonferenza e area inizio raggio Area = (Raggio^2*Pigreco) Circonferenza = (2*Raggio*Pigreco) Area Circonferenza fine Mancarella - Zuelli Dal problema al programma 11 Debug:circonferenza e area Debug Algoritmo cerchio 1. Inserisci raggio Scrivi(“Inserisci raggio”); Leggi(raggio); Area = (raggio^2*Pigreco); Circonferenza = (2*Pigreco*raggio); Scrivi(“Area = “, Area); Scrivi(“Circonferenza = “, Circonferenza); Mancarella - Zuelli 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 Dal problema al programma 12 Codifica: Calcolare circonferenza e area Private 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") = Area End Sub Mancarella - Zuelli Dal problema al programma 13 Pseudocodifica: Calcolare area e perimetro di un rettangolo Algoritmo rettangolo Variabili B,H A,2P numerica, reale, I numerica, reale,O inizio Scrivi(“Inserisci base,altezza”); Leggi(B,H); A = (B*H); 2P = (2B*2H); Scrivi(“ A = “ A); Scrivi (“ 2P = “ 2P); fine Mancarella - Zuelli Dal problema al programma 14 Flow-chart: area e perimetro di un rettangolo inizio B,H Area = (B*H) Perimetro = (2B*2H) Area Perimetro fine Mancarella - Zuelli Dal problema al programma 15 Debug: area e perimetro di un rettangolo Algoritmo rettangolo Debung Scrivi(“Inserisci base,altezza”); Leggi(B,H); A = (B*H); 2P = (2*B+2*H); Scrivi(“ A = “ A); Scrivi (“ 2P = “ 2P); 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 Mancarella - Zuelli Dal problema al programma 16 Codifica: area e perimetro di un rettangolo Private 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") = area End Sub Mancarella - Zuelli Dal problema al programma 17 Pseudocodifica: Trova il massimo di 3 numeri Algoritmo Massimo Variabili A,B,C Max numerica, intera, I 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 Mancarella - Zuelli Dal problema al programma 18 Flow-chart: trova il massimo tra 3 numeri interi inizio A, B, C Max = A No B>Max Si Max = B No C>Max Si Max = C Max fine Mancarella - Zuelli Dal problema al programma 19 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 Se(“Il Massimo è = “, Max); Mancarella - Zuelli Debug 1 Debug 2 1. Inserisci tre numeri interi 1. Inserisci tre numeri interi 2. A 4, B 6, C 8 2. A 4, B 16, C 8 3. 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 interi 1. Inserisci tre numeri interi 2. A 14, B 6, C 8 2. A 14, B 4, C 4 3. Max=14 3. Max=4 4. 6>14 ? 4. 4>4 ? 5. 8>14 ? 5. 4>4 ? 6. Il massimo è = 14 6. Il massimo è = 4 Dal problema al programma 20 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") = massimo End Sub Mancarella - Zuelli Dal problema al programma 21 Pseudocodifica: Definisci il triangolo Algoritmo Triangolo Variabili A, B, C numerica, intera, I Dato in input 3 lati di un triangolo, dire in output se il triangolo è: -Scaleno inizio Scrivi(“Inserisci i tre lati del triangolo”); -Isoscele Leggi(A,B,C); -Equilatero Se (A<>B) AND (B<>C) AND (C<>A) allora Scrivi(“Scaleno”); fine se Se (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 Mancarella - Zuelli Dal problema al programma 22 Flow-chart: Definisci il triangolo inizio A, B, C (A<>B) AND (B<>C) AND (A<>B) Scaleno (A=B) OR (B=C) OR (A=C) Isoscele (A=B) AND (B=C) AND (A=C) Equilatero fine Mancarella - Zuelli Dal problema al programma 23 Debug: Definisci il triangolo Algoritmo Triangolo Debug 1 Variabili A, B, C 1. Inserisci tre lati del triangolo 2. A 2, B 5, C 10 3. (2<>5) AND (5<>10) AND (2<>10) ? (V) numerica, intera, I inizio Scrivi(“Inserisci i tre lati del triangolo”); 4. Scaleno 5. (2=5) OR (5=10) OR (2=10) ? (F) Leggi(A,B,C); Se (A<>B) AND (B<>C) AND (C<>A) allora 6. (2=5) AND (5=10) AND (2=10) ? (F) Scrivi(“Scaleno”); Debug 2 fine se 1. Inserisci tre lati del triangolo Se (A<>B) OR (B<>C) OR (C<>A) allora 2. A 2, B 2, C 8 Scrivi(“Isoscele”) 3. (2<>2) AND (2<>8) AND (2<>8) ? (F) fine se 4. (2=2) OR (2=8) OR (2=2) ? (V) Se (A=B) AND (B=C) AND (A=C) allora 5. Isoscele Scrivi(“Equilatero”); Debug 3 6. (2=2) AND (2=8) OR (2=2) ? (F) fine se 1. A 5, B 5, C 5 fine 2. (5<>5) AND (5<>5) AND (5<>5) ? (F) Mancarella - Zuelli 3. (5=5) OR (5=5) OR (5=5) ? (V) 4. Isoscele 5. (5=5) AND (5=5) AND (5=5) ? (V) 6. Equilatero Dal problema al programma 24 Codifica: Definisci il triangolo Private 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 If End sub Mancarella - Zuelli Dal problema al programma 25 Pseudocodifica: Reciproco di un numero Algoritmo Reciproco Variabili A numerica, intera, I inizio Scrivi(“Inserisci un numero”); Leggi(A); Se (A<>0) allora Scrivi(“Il reciproco è: “,1/A) altrimenti Scrivi(“Errore”) fine Mancarella - Zuelli Dal problema al programma 26 Flow-chart: Reciproco di un numero inizio A (A<>0) 1/A Errore fine Mancarella - Zuelli Dal problema al programma 27 Debug: Reciproco di un numero Algoritmo Reciproco Debug 1 Variabili 1. Inserisci un numero A numerica, intera, I 2. A 2 inizio Scrivi(“Inserisci un numero”); Leggi(A); Se (A<>0) allora Scrivi(“Il reciproco è: “,1/A) altrimenti Scrivi(“Errore”) fine 3. (2<>0) ? (V) 4. Il reciproco è : ½ Debug 2 1. Inserisci un numeri 2. A 0 3. (0<>0) ? (F) 4. Errore Mancarella - Zuelli Dal problema al programma 28 Codifica: Reciproco di un numero Private 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 Mancarella - Zuelli Dal problema al programma 29 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(“Mese inserito corretto”) Altrimenti Scrivi(“Errore,reinserire)” fine se finché((M>12) OR (M<1)) fine Mancarella - Zuelli Dal problema al programma 30 Flow-chart : Mese (per falso) inizio M no (M>0) AND (M<13) ERRORE falso si OK (M>0) AND (M<13) vero fine Mancarella - Zuelli Dal problema al programma 31 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)) Mancarella - Zuelli Debug 1. Inserisci mese 2. M 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 15. 10>0 AND 10<13 ? (V) Dal problema al programma 32 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 If End Sub Mancarella - Zuelli Dal problema al programma 33 Pseudocodifica : Mese (per vero) Algoritmo mese Variabili M numerica,intera,I Inizio m=0 esegui 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 Mancarella - Zuelli Dal problema al programma 34 Flow-chart : Mese (per vero) inizio M=0 (M<=0)or (M>12) falso vero M falso (M>0) AND (M<13) ERRORE OK fine Mancarella - Zuelli Dal problema al programma 35 Debug: Mese (per vero) Algoritmo mese Variabili M Debug 1. M 0 numerica,intera,I Inizio m=0 esegui 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 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) Mancarella - Zuelli Dal problema al programma 36 Pseudocodifica: Spesa Algoritmo spesa Variabili P numerica, reale,I T numerica, reale, O Inizio T=0 ripeti scrivi (“inserisci prezzo”) leggi (P) T=T+P finché (P=0) scrivi (“totale =“ T); fine Mancarella - Zuelli Dal problema al programma 37 Flow-chart : Spesa inizio T=0 P T=T+P P=0 T fine Mancarella - Zuelli Dal problema al programma 38 Debug: Spesa Algoritmo spesa Variabili P numerica, reale,I T numerica, reale, O Inizio T=0 ripeti scrivi (“inserisci prezzo”) leggi (P) T=T+P finché (P=0) scrivi (“totale =“ T); fine Mancarella - Zuelli Debug 1. T 0 2. Inserisci prezzo 3. P 10 4. T 0+10 (10) 5. 10= 0 ? (F) 6. Inserisci prezzo 7. P 5 8. T 10+5 (15) 9. 15=0 ? (F) 10. Inserisci prezzo 11. P 0 12. T 22+0 (22) 13. 0=0 ? (V) 14. Totale = 22 Dal problema al programma 39 Codifica: spesa Private Sub spesa_Click() Dim prodotto, tot As Single Dim i As Integer tot = 0 For i = 1 To 5 prodotto = Cells(i, 2) Next Range("b7") = tot End Sub Mancarella - Zuelli tot = tot + prodotto Dal problema al programma 40 Mappa Sequenza menu Selezione Ciclo Mancarella - Zuelli 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 (falso) Pseudocodifica Flow-chart Debug Mese (vero) Pseudocodifica Flow-chart Debug Spesa Pseudocodifica Flow-chart Debug Dal problema al programma 41