350 likes | 573 Views
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)
E N D
Dal problema al programma Wilkinson D Fare clic per continuare
Indice • Sequenza • Selezione • Ciclo o iterazione • mappa
Sequenza • Calcola la media di 3 numeri PseudocodificaFlow-chartDebug • Cerchio (area, circonferenza) PseudocodificaFlow-chartDebug • Rettangolo (area, perimetro) PseudocodificaFlow-chartDebug
Selezione • Trova il massimo di 3 numeri PseudocodificaFlow-chartDebug • Definisci il triangolo PseudocodificaFlow-chartDebug • Il reciproco di un numero Pseudocodifica Flow-chart Debug
Ciclo o iterazione • 1 esercizio Pseudocodifica Flow-chart Debug • 2 esercizio Pseudocodifica Flow-chart Debug • 3 esercizio Pseudocodifica Flow-chart Debug
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 Debug • Inserisci tre numeri interi • A 4, B 6, C 8; • 6 (4+6+8) / 3 • Media = 6 Algoritmo media Scrivi(“Inserisci 3 numeri interi”); Leggi(A, B, C); M = (A + B + C) / 3; Scrivi(“Media =“, M);
Pseudocodifica: Cerchio (area, circonferenza) 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 Algoritmo cerchio Variabili R numerica, reale, input A, C numerica, reale, output Costanti 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
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 • Inserisci valore raggio • R 2 • 12,56 3,14*(2^2) • 12,56 3,14*2*2 • Area = 12,56 • Circonferenza = 12,56
Pseudocodifica: Rettangolo (area, perimetro) 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 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
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 • Inserire valori base e altezza • B 2 • H 6 • 12 6*2 • 18 2*2+6*2 • Area = 12 • Perimetro = 18
Pseudocodifica: Trova il massimo di 3 numeri 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 End Sub Algoritmo max Variabili A,B,C numerica, intera, input M numerica, intera, output Inizio 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
Flow-chart: Trova il massimo di 3 numeri inizio A,B,C M = A no si B > M M = B C > M no si M = C M
Debug: Trova il massimo di 3 numeri • Debug 1 • 1. Inserisci tre lati • 2. A 3, B 3, C 5 • 3. 3<>3 AND 3<>5 AND 3<>5? FALSO • 4. 3 = 3 OR 3 = 5 OR 3 = 5? • 5. Isoscele • 6. 3 = 3 AND 3 = 5 AND 3 = 5? FALSO 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 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 • Debug 2 • Inserisci i tre lati • A 3, B 4, C 5 • 3<>4 AND 3<>5 AND 4<>5? • Scaleno • 3 = 4 OR 4=5 OR 3 = 5? FALSO • 3 = 4 AND 4 = 5 AND 3 = 5? FALSO
Pseudocodifica: Definisci il triangolo Private Sub CommandButton1_Click() '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 l1 <> l3 Then Range("b2") = "scaleno" End If If l1 = l2 Or l2 = l3 Or l1 = l3 Then Range("b2") = "isoscele" End If If l1 = l2 And l2 = l3 And l1 = l3 Then Range("b2") = "equilatero" End If End Sub 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
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 • 2. A 3, B 3, C 5 • 3. 3<>3 AND 3<>5 AND 3<>5? FALSO • 4. 3 = 3 OR 3 = 5 OR 3 = 5? • 5. Isoscele • 6. 3 = 3 AND 3 = 5 AND 3 = 5? FALSO 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 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 • Debug 2 • Inserisci i tre lati • A 3, B 4, C 5 • 3<>4 AND 3<>5 AND 4<>5? • Scaleno • 3 = 4 OR 4=5 OR 3 = 5? FALSO • 3 = 4 AND 4 = 5 AND 3 = 5? FALSO
Pseudocodifica: Il reciproco di un numero 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 Algoritmo reciproco: Variabili A numerica, intera I/O Inizio scrivi (“Inserisci un numero”); leggi (A); se (A<>0) allora scrivi (“il reciproco è =“ , 1/A); altrimenti scrivi (“errore”) fine se Fine
Flow-chart: Il reciproco di un numero Inizio A no A<>0 si 1/A Fine
Debug: Il reciproco di un numero • Debug 1 • Inserisci un numero • A 4 • 4<>0? • Il reciproco è 1/4 • Debug 2 • Inserisci un numero • A 0 • 0<>0 ? • Errore Algoritmo reciproco scrivi (“Inserisci un numero”); leggi (A); se (A<>0) allora scrivi (“il reciproco è =“ , 1/A); altrimenti scrivi (“errore”) fine se
Pseudocodifica: Totale spesa (per falso) 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 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
Flow-chart: Totale spesa (per falso) Inizio T=0 P T=T+P P=0 T Fine
Debug: Totale spesa ( per falso) • 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 Algoritmo spesa T=0 ripeti scrivi (“inserisci prezzo”) leggi (P) T=T+P finché (P=0) scrivi (“totale =“ T);
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 Fine M no si M>0 AND M< 13 Corretto Errato M>0 AND M< 13
Debug: Mese (per falso) • Debug • Inserisci mese • M 17 • 17>0 AND 17< 13 ? (F) • Errore • 17>0 AND 17<13 ? (F) • Inserisci mese • M 0 • 0>0 AND 0<13 ? (F) • Errore • 0>0 AND 0<13 ? (F) • Inserisci mese • M 10 • 10>0 AND 10<13 ? (V) • Corretto • 10>0 AND 10<13 ? (V) 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))
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) • Debug • M 0 • 0 <1 OR 0>12 ? (V) • Inserisci mese • M 15 • 15>0 AND 15< 13 ? (F) • Errore • 15>0 AND 15< 13 ? (F) • Inserisci mese • M 9 • 9>0 AND 9<13 ? (V) • Corretto • 9<1 OR 9>12 ? (F) 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