Dal problema al programma Wilkinson D Fare clic per continuare Indice Sequenza Selezione Ciclo o iterazione mappa Sequenza Calcola la media di 3 numeri Pseudocodifica Flow-chart Debug Cerchio (area, circonferenza) Pseudocodifica Flow-chart Debug Rettangolo (area, perimetro) Pseudocodifica Flow-chart Debug Selezione Trova il massimo di 3 numeri Pseudocodifica Flow-chart Debug Definisci il triangolo Pseudocodifica Flow-chart Debug Il reciproco di un numero Pseudocodifica Flow-chart Debug Ciclo o iterazione 1 esercizio Pseudocodifica Flow-chart Debug Flow-chart Debug Flow-chart Debug 2 esercizio Pseudocodifica 3 esercizio Pseudocodifica 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 Private Sub Calcolamedia_Click() 'VARIABILI Dim n1, n2, n3, m As Single 'LEGGO n1 = Range("a2") n2 = Range("b2") n3 = Range("c2") 'CALCOLO m = (n1 + n2 + n3) / 3 'STAMPO Range("b4") = m End Sub Flow-chart: Calcola la media di 3 numeri inizio A, B, C M = (A, B, C) / 3 M fine Debug: Calcola la media di 3 numeri Algoritmo media Scrivi(“Inserisci 3 numeri interi”); Leggi(A, B, C); M = (A + B + C) / 3; Scrivi(“Media =“, M); Debug 1. Inserisci tre numeri interi 2. A 4, B 6, C 8; 3. 6 (4+6+8) / 3 4. Media = 6 Pseudocodifica: Cerchio (area, circonferenza) Algoritmo cerchio Variabili R A, C Costanti numerica, reale, input numerica, reale, output Pi greco = 3,14 numerica, reale inizio Scrivi (“Inserisci valore raggio); Leggi (R) ; A = R^2* 3,14; C = 2* R* 3,14; Scrivi (“Area =“, A); Scrivi (“Circonferenza =“, C); fine Private Sub Calcola_Click() 'VARIABILI Dim r, a, c As Single Const pi = 3.14 'LEGGO r = Range("a2") 'CALCOLO a = (r ^ 2) * pi c = (2 * r) * pi 'STAMPO Range("c2") = a Range("d2") = c End Sub Flow-chart: Cerchio (area, circonferenza) Inizio R; Pi Greco=3,14 A = Pi Greco*R^2 C = 2*Pi Greco*R A; C Fine Debug: Cerchio (area, circonferenza) Algoritmo cerchio Scrivi(“Inserisci valore raggio”); Leggi (R); A = R^2* 3,14; C = 2* R* 3,14; Scrivi (“Area =“, A); Scrivi (“Circonferenza =“, C); Debug 1. Inserisci valore raggio 2. R2 3. 12,56 3,14*(2^2) 4. 12,56 3,14*2*2 5. Area = 12,56 6. Circonferenza = 12,56 Pseudocodifica: Rettangolo (area, perimetro) Algoritmo rettangolo Variabili B, H numerica, reale, input inizio scrivi(“Inserire valori base e altezza”); leggi(B, H); A = B*H; P = 2*B+2*H; scrivi(“Area =“, A) scrivi(“Perimetro=“, P) fine Private Sub Calcola_Click() 'VARIABILI Dim b, h, p, a As Single 'LEGGO b = Range("a2") h = Range("b2") 'CALCOLO p = (2 * b) + (2 * h) a=b*h 'STAMPO Range("d2") = p Range("e2") = a End Sub Flow-chart: Rettangolo (area, perimetro) Inizio B, H A = B*H P = 2*B+2*H A, P fine Debug: Rettangolo (area, perimetro) Algoritmo rettangolo scrivi(“Inserire valori base e altezza”); leggi(B, H); A = B*H; P = 2*B+2*H; scrivi(“Area =“, A) scrivi(“Perimetro=“, P) Debug 1. Inserire valori base e altezza 2. B2 3. H6 4. 12 6*2 5. 18 2*2+6*2 6. Area = 12 7. Perimetro = 18 Pseudocodifica: Trova il massimo di 3 numeri Algoritmo max Variabili A,B,C M Inizio numerica, intera, input numerica, intera, output scrivi (“inserisci tre numeri interi”); leggi ( A,B,C); M = A; se (B > M) allora M = B; fine se se (C> M) allora M = C; fine se scrivi(“il massimo è =“ M); fine PrivateSubCommandButton1_Click() 'VARIABILI Dim n1, n2, n3, m As Single 'LEGGO n1 = Range("a2") n2 = Range("a3") n3 = Range("a4") 'CALCOLO m = n1 If n2 > m Then m = n2 End If If n3 > m Then m = n3 End If 'STAMPO Range("b2") = m Flow-chart: Trova il massimo di 3 numeri inizio A,B,C M=A no B>M si M=B C>M no si M=C M Debug: Trova il massimo di 3 numeri Debug 1 Algoritmo max. 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. Inserisci tre lati 2. A 3. 3<>3 AND 3<>5 AND 3<>5? FALSO 4. 3 = 3 OR 3 = 5 OR 3 = 5? Debug 3 5. Isoscele 1. inserisci tre lati 6. 3 = 3 AND 3 = 5 AND 3 = 5? FALSO 2. A 3, B 3, C 5 3, B 3, C 3 3. 3<>3 AND 3<>3 AND 3<>3? (F) 4. 3=3 OR 3=3 OR 3=3 ? 5. ISOSCELE Debug 2 6. 3=3 AND 3=3 AND 3=3 ? 1. Inserisci i tre lati 2. A 3. 3<>4 AND 3<>5 AND 4<>5? 4. Scaleno 5. 3 = 4 OR 4=5 OR 3 = 5? FALSO 6. 3 = 4 AND 4 = 5 AND 3 = 5? FALSO 3, B 4, C 5 7. EQUILATERO Pseudocodifica: Definisci il triangolo Algoritmo triangolo Variabili A,B,C numerica, intera, input S,I,E numerica, intera, output 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 Private Sub CommandButton1 'VARIBILI Dim l1, l2, l3 As Single 'LEGGO l1 = Range("a2") l2 = Range("a3") l3 = Range("a4") 'DEFINISCO If l1 <> l2 And l2 <> l3 And Range("b2") = "scaleno" End If If l1 = l2 Or l2 = l3 Or l1 = l3 Range("b2") = "isoscele" End If Flow-chart: Definisci il triangolo inizio A,B,C no A<>B AND A<>C AND B<>C si S A = B OR B = C OR A = C no si I A = B AND A = C AND B = C si E fine Debug: Definisci il triangolo Debug 1 1. Inserisci tre lati Algoritmo triangolo 2. A 3, B 3, C 5 scrivi (“inserisci i tre lati del triangolo”); 3. 3<>3 AND 3<>5 AND 3<>5? FALSO leggi (A,B,C); Se ( A<>B) AND (B<>C) AND ( A<>C) allora4. 3 = 3 OR 3 = 5 OR 3 = 5? 5. Isoscele scrivi (“scaleno”); 6. 3 = 3 AND 3 = 5 AND 3 = 5? FALSO fine se Se (A = B) OR (B = C) OR (A = C) allora Debug 2 scrivi (“isoscele”); 1. Inserisci i tre lati fine se 2. A 3, B 4, C 5 Se (A = B) AND (B = C) AND (A = C) allora 3. 3<>4 AND 3<>5 AND 4<>5? scrivi (“equilatero”); fine se 4. Scaleno 5. 3 = 4 OR 4=5 OR 3 = 5? FALSO 6. 3 = 4 AND 4 = 5 AND 3 = 5? FALSO Debug 3 1. inserisci tre lati 2. A 3, B 3, C 3 3. 3<>3 AND 3<>3 AND 3<>3? (F) 4. 3=3 OR 3=3 OR 3=3 ? 5. ISOSCELE 6. 3=3 AND 3=3 AND 3=3 ? 7. EQUILATERO Pseudocodifica: Il reciproco di un numero Algoritmo reciproco: Variabili A numerica, intera I/O Inizio Fine scrivi (“Inserisci un numero”); leggi (A); se (A<>0) allora scrivi (“il reciproco è =“ , 1/A); altrimenti scrivi (“errore”) fine se Private Sub Reciproco_Click() 'VARIABILI Dim n As Single 'LEGGO n = Range("a2") 'CALCOLO If n <> 0 Then Range("b2") = 1 / n End If If n = 0 Then Range("b2") = "errore" End If End Sub Flow-chart: Il reciproco di un numero Inizio A no A<>0 1/A Fine si Debug: Il reciproco di un numero Algoritmo reciproco scrivi (“Inserisci un numero”); leggi (A); se (A<>0) allora scrivi (“il reciproco è =“ , 1/A); altrimenti scrivi (“errore”) fine se Debug 1 1. Inserisci un numero 2. A 3. 4<>0? 4. Il reciproco è 1/4 4 Debug 2 1. Inserisci un numero 2. A 3. 0<>0 ? 4. Errore 0 Pseudocodifica: Totale spesa (per falso) Algoritmo spesa Variabili P T numerica, reale,I numerica, reale, O Inizio T=0 ripeti scrivi (“inserisci prezzo”) leggi (P) T=T+P finché (P=0) scrivi (“totale =“ T); fine Algoritmo spesa Variabili P T numerica, reale,I numerica, reale, O Inizio T=0 ripeti scrivi (“inserisci prezzo”) leggi (P) T=T+P finché (P=0) scrivi (“totale =“ T); fine Flow-chart: Totale spesa (per falso) Inizio T=0 P T=T+P P=0 T Fine Debug: Totale spesa ( per falso) Debug Algoritmo spesa T=0 ripeti scrivi (“inserisci prezzo”) leggi (P) T=T+P finché (P=0) scrivi (“totale =“ T); 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 12. T 0 22+0 (22) 13. 0=0 ? (V) 14. Totale = 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 Flow-chart: Mese (per falso) Inizio M no si M>0 AND M< 13 Corretto Errato M>0 AND M< 13 Fine Debug: Mese (per falso) Debug Algoritmo mese 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)) 1. Inserisci mese 2. M 3. 17>0 AND 17< 13 ? (F) 4. Errore 5. 17>0 AND 17<13 ? (F) 6. Inserisci mese 7. M 8. 0>0 AND 0<13 ? (F) 9. Errore 17 0 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) 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 Flow-chart: Mese (per vero) Inizio M=0 Vero M<1 OR M>12 M M>0 AND M<13 Errato Corretto Fine Debug: Mese (per vero) Algoritmo mese 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 5. 15>0 AND 15< 13 ? (F) 6. Errore 7. 15>0 AND 15< 13 ? (F) 8. Inserisci mese 9. M 15 9 10. 9>0 AND 9<13 ? (V) 11. Corretto 12. 9<1 OR 9>12 ? (F)