Dal problema al programma Mariani, Terragni Indice Sequenza Selezione Ciclo o iterazione Mappa Mariani, Terragni Dal problema al programma 2 Sequenza Calcola la media di 3 numeri Pseudocodifica Flow-chart Debug Codifica Cerchio (area, circonferenza) Pseudocodifica Flow-chart Debug Codifica Rettangolo (area, perimetro) Pseudocodifica Flow-chart Debug Codifica Mariani, Terragni Dal problema al programma 3 Selezione Trova il massimo di 3 numeri Pseudocodifica Flow-chart Debug Codifica Definisci un triangolo Pseudocodifica Flow-chart Debug Codifica Il reciproco di un numero Pseudocodifica Flow-chart Debug Codifica Mariani, Terragni Dal problema al programma 4 Ciclo o iterazione Mese (per falso) Pseudocodifica Flow-chart Debug Codifica Mese (per vero) Pseudocodifica Flow-chart Debug Spesa Pseudocodifica Flow-chart Debug Mariani, Terragni 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 Mariani, Terragni Dal problema al programma 6 Flow-chart: Calcola la media di 3 numeri Inizio A, B, C M =(A+B+C)/3 M fine Mariani, Terragni Dal problema al programma 7 Debug: calcola la media di 3 numeri Algoritmo media Scrivi(“inserisci tre 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. Mariani, Terragni Dal problema al programma Media =6 8 Pseudocodifica:cerchio( area, circonferenza) Algoritmo cerchio Variabili Raggio numero reale, I Pi greco numero reale, I Inizio A=R^2*pi greco C=2*pi greco*R Scrivi (“area=A”) Scrivi (“circonferenza=C”) fine Mariani, Terragni Dal problema al programma 9 Debug: cerchio ( area, circonferenza) A=R^2*pi greco C=2*pi greco*R Scrivi (“area=A”) Scrivi (“circonferenza=C”) Mariani, Terragni 1. inserisci il raggio 2. 3. 4. 5. 6. R←5 A←3,14*5^2 C← 2*3,14*5 A=78,5 C=31,4 Dal problema al programma 10 Pseudocodifica rettangolo (area, perimetro) Variabili B,H numerica reale, I A,P numerica reale,O Inzio scrivi (“inserisci base,altezza”); leggi ( B,H); A= B*H; P=2*(B+H); scrivi (“area=“,A); scrivi (“perimetro=“, P); fine Mariani, Terragni Dal problema al programma 11 Flowchart rettangolo (area, perimetro) inizio Inizio B,H A=B*H P=2*(B+H) A,P fine Mariani, Terragni Dal problema al programma 12 Debug: rettangolo (area, perimetro) scrivi (“inserisci base,altezza”); leggi ( B,H); A= B*H; P=2*(B+H); scrivi (“area=“,A); scrivi (“perimetro=“, P); Mariani, Terragni 1. 2. 3. 4. 5. 6. Dal problema al programma inserisci base B←3 H←2 A←B*H P←2*(B+H) Area=6 Perimetro=10 13 Pseudocodifica: trova il massimo di 3 numeri Algoritmo Massimo Variabili A, B, C numerica, intera, I Max numerica, 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 Mariani, Terragni Dal problema al programma 14 Flowchart: trova il massimo di 3 numeri inizio A,B,C Max=A B>Max Max=B C>Max Max=C Max Mariani, Terragni Dal problema al programma fine 15 Debug: trova il massimo di tre numeri 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); Mariani, Terragni Debug 1 Inserisci tre numeri interi A3B5C9 Max = 3 5>3? Max 5 9>5? Max 9 Il massimo è = 9 Debug 2 Inserisci tre numeri interi A 4 B 11 C 6 Max = 4 6>4? Max 6 11 > 6 ? Il massimo è =11 Debug 4 tre numeri interi Inserisci tre numeri Inserisci interi A4B4C4 A 12 B 7 C 6 Max = 4 Max = 12 4>4? 7 > 14 ? 4>4? Il massimo è =14 Il massimo è = 4 Debug 3 Dal problema al programma 16 Pseudocodifica: 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 Mariani, Terragni Dal problema al programma Dato in input 3 lati di un triangolo, dire in output se il triangolo è: Scaleno Isoscele Equilatero 17 Flow Chart: Definisci il triangolo Inizio A, B, C No No A <> B AND B <> C AND A <> C A=B OR B=C OR A=C Sì Scaleno Sì Isoscele No A=B AND B=C AND A=C Sì Equilatero Mariani, Terragni Dal problema al programma Fine 18 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 Mariani, Terragni Debug 1 Debug 2 1. Inserisci tre lati 1. Inserisci tre lati del del triangolo triangolo 2. \ A 4 B 6 C 2. A 4 B 4 C 8 8 3. 4<> 4 AND 4 <> 8 3. 4<> 6 AND 6 <> AND 4 <> 8 ? F 8 AND 4 <> 8 ? V 4. 4 = 4 OR 4 = 8 OR 4. Scaleno 4=8?V 5. 4 = 6 OR 6 = 8 Isolscele OR 4 = 8 ? F 5. 4 = 4 AND 4 = 8 6. 4 = 6 AND 6 = 8 AND 4 = 8 ? F AND 4 = 8 ? F Debug 3 1. Inserisci tre lati del triangolo 2. A4B4C4 3. 4<> 4 AND 4 <> 4 AND 4 <> 4 ? F 4. 4 = 4 OR 4 = 4 OR 4=4?V Isolscele 5. 4 = 4 AND 4 = 4 AND 4 =4?F Dal problema al programma 19 Pseudocodifica : il reciproco di un numero Variabili A numerica, intera, I Inizio scrivi (“inserisci un numero”); leggi (A); se ( A <> 0) allora scrivi (“1/”A); se no scrivi(“errore”); fine Mariani, Terragni Dal problema al programma 20 Flowchart: il reciproco di un numero inizio A no (A<>0) errore si 1/A fine Mariani, Terragni Dal problema al programma 21 Debug: il reciproco di un numero Algoritmo reciproco scrivi (“inserisci Debug 1 Inserisci un numero A4 (4 <> 0) ? (V) ¼ Debug 2 Inserisci un numero A0 (0 <>0) ? (F) errore un numero”); leggi (A); se ( A <> 0) allora scrivi (“1/”A); altrimenti scrivi(“errore”); fine se Mariani, Terragni Dal problema al programma 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 Mariani, Terragni Dal problema al programma 23 Flow-chart: Mese (per falso) Inizio M no si M>0 AND M< 13 Corretto Errato M>0 AND M< 13 Fine Mariani, Terragni Dal problema al programma 24 Debug: Mese (per falso) Debug 1. Inserisci mese 2. M 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)) 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 Mariani, Terragni 15. 10>0 AND 10<13 ? (V) Dal problema al programma 25 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 Mariani, Terragni Dal problema al programma 26 Flow-chart: Mese (per vero) Inizio M=0 Vero M<1 OR M>12 M M>0 AND M<13 Errato Mariani, Terragni Corretto Dal problema al programma Fine 27 Debug: Mese (per vero) 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 15 5. 15>0 AND 15< 13 ? (F) 6. Errore 7. 15>0 AND 15< 13 ? (F) 8. Inserisci mese 9. M 9 10. 9>0 AND 9<13 ? (V) 11. Corretto 12. 9<1 OR 9>12 ? (F) Mariani, Terragni Dal problema al programma 28 Mappa Sequenza menu Selezione Ciclo Mariani, Terragni 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 (per falso) Pseudocodifica Flow-chart Debug Mese( per vero) Pseudocodifica Flow-chart Debug Spesa Pseudocodifica Flow-chart Debug Dal problema al programma 29 Codifica media 'variabili Dim n1, n2, n3, media As Integer 'prelevo n1 = Range("b1") n2 = Range("b2") n3 = Range("b3") 'calcolo media = (n1 + n2 + n3) / 3 'stampo Range("b4") = media Mariani, Terragni Dal problema al programma 30 Codifica area e perimetro cerchio ' VARIABILI Dim raggio, circonferenza, area As Single Const pigreco = 3.14 'ACQUISIZIONE DEI VALORI DELLE CELLE raggio = Range("b1") 'CALCOLO IL VALORE DELLA CIRCONFERENZA circonferenza = 2 * raggio * pigreco 'CALCOLO IL VALORE DELL' AREA area = raggio ^ 2 * pigreco 'STAMPO DELLA CELLA B2 IL RISULTATO: CIRCOFERENZA Range("b2") = circonferenza 'STAMPO DELLA CELLA B2 IL RISULTATO: AREA Range("b3") = area Mariani, Terragni Dal problema al programma 31 Codifica rettangolo 'variabili Dim l1, l2, area, perimetro As Integer 'prelevo valori l1 = Range("b1") l2 = Range("b2") 'calcolo area = l1 * l2 perimetro = (l1 * 2) + (l2 * 2) 'stampo Range("b4") = area Range("b3") = perimetro Mariani, Terragni Dal problema al programma 32 Codifica massimo '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 = primonumero If (secondonumero > massimo) Then massimo = secondonumero End If If (terzonumero > massimo) Then massimo = terzonumero End If 'STAMPO IL RISULTATO NELLA CELLA a2: massimo Range("b5") = massimo Mariani, Terragni Dal problema al programma 33 Codifica triangolo 'variabili Dim lato1, lato2, lato3 As Single 'acquisisci valori dalle celle lato1 = Range("b1") lato2 = Range("b2") lato3 = Range("b3") 'definisci triangolo If (lato1 <> lato2) And (lato2 <> lato3) And (lato1 <> lato3) Then Range("a5") = "scaleno" End If If (lato1 = lato2) Or (lato2 = lato3) Or (lato1 = lato3) Then Range("a5") = "isoscele" End If If (lato1 = lato2) And (lato2 = lato3) Then Range("a5") = "equilatero" End If Mariani, Terragni Dal problema al programma 34 Codifica reciproco di un numero '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 Mariani, Terragni Dal problema al programma 35 Codifica mese 'variabili Dim mese As Integer 'acquisisco mese = Range("a1") 'controllo If (mese < 1 Or mese > 12) Then Range("b1") = "errore" Else: Range("b1") = "mese corretto" End If Mariani, Terragni Dal problema al programma 36 Codifica spesa Mariani, Terragni Dal problema al programma 37